master 3fc50a70ba68 cached
14216 files
174.0 MB
27.1M tokens
161456 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (108,806K chars total). Download the full file to get everything.
Repository: fabric8io/configmapcontroller
Branch: master
Commit: 3fc50a70ba68
Files: 14216
Total size: 174.0 MB

Directory structure:
gitextract_0_obgefm/

├── .dockerignore
├── .gitignore
├── .travis.yml
├── Dockerfile
├── Jenkinsfile
├── LICENSE
├── Makefile
├── README.md
├── client/
│   └── client.go
├── configmapcontroller.go
├── controller/
│   └── controller.go
├── examples/
│   └── deployment.yml
├── glide.yaml
├── tools/
│   └── create-intellij-idea-golib.sh
├── util/
│   └── types.go
├── vendor/
│   ├── cloud.google.com/
│   │   └── go/
│   │       ├── .travis.yml
│   │       ├── AUTHORS
│   │       ├── CONTRIBUTING.md
│   │       ├── CONTRIBUTORS
│   │       ├── LICENSE
│   │       ├── README.md
│   │       ├── appveyor.yml
│   │       ├── authexample_test.go
│   │       ├── bigquery/
│   │       │   ├── bigquery.go
│   │       │   ├── copy_op.go
│   │       │   ├── copy_test.go
│   │       │   ├── create_table_test.go
│   │       │   ├── dataset.go
│   │       │   ├── dataset_test.go
│   │       │   ├── doc.go
│   │       │   ├── error.go
│   │       │   ├── error_test.go
│   │       │   ├── extract_op.go
│   │       │   ├── extract_test.go
│   │       │   ├── gcs.go
│   │       │   ├── integration_test.go
│   │       │   ├── iterator.go
│   │       │   ├── iterator_test.go
│   │       │   ├── job.go
│   │       │   ├── legacy.go
│   │       │   ├── load_op.go
│   │       │   ├── load_test.go
│   │       │   ├── query.go
│   │       │   ├── query_op.go
│   │       │   ├── query_test.go
│   │       │   ├── read_op.go
│   │       │   ├── read_test.go
│   │       │   ├── schema.go
│   │       │   ├── schema_test.go
│   │       │   ├── service.go
│   │       │   ├── table.go
│   │       │   ├── uploader.go
│   │       │   ├── uploader_test.go
│   │       │   ├── utils_test.go
│   │       │   ├── value.go
│   │       │   └── value_test.go
│   │       ├── bigtable/
│   │       │   ├── admin.go
│   │       │   ├── admin_test.go
│   │       │   ├── bigtable.go
│   │       │   ├── bigtable_test.go
│   │       │   ├── bttest/
│   │       │   │   ├── example_test.go
│   │       │   │   ├── inmem.go
│   │       │   │   └── inmem_test.go
│   │       │   ├── cmd/
│   │       │   │   ├── cbt/
│   │       │   │   │   ├── cbt.go
│   │       │   │   │   ├── cbt_test.go
│   │       │   │   │   └── cbtdoc.go
│   │       │   │   ├── emulator/
│   │       │   │   │   └── cbtemulator.go
│   │       │   │   ├── loadtest/
│   │       │   │   │   └── loadtest.go
│   │       │   │   └── scantest/
│   │       │   │       └── scantest.go
│   │       │   ├── doc.go
│   │       │   ├── filter.go
│   │       │   ├── gc.go
│   │       │   ├── internal/
│   │       │   │   ├── cbtrc/
│   │       │   │   │   └── cbtrc.go
│   │       │   │   ├── gax/
│   │       │   │   │   ├── call_option.go
│   │       │   │   │   ├── invoke.go
│   │       │   │   │   └── invoke_test.go
│   │       │   │   ├── option/
│   │       │   │   │   └── option.go
│   │       │   │   └── stat/
│   │       │   │       └── stats.go
│   │       │   ├── reader.go
│   │       │   ├── reader_test.go
│   │       │   ├── retry_test.go
│   │       │   └── testdata/
│   │       │       └── read-rows-acceptance-test.json
│   │       ├── cloud.go
│   │       ├── compute/
│   │       │   └── metadata/
│   │       │       ├── metadata.go
│   │       │       └── metadata_test.go
│   │       ├── container/
│   │       │   └── container.go
│   │       ├── datastore/
│   │       │   ├── datastore.go
│   │       │   ├── datastore_test.go
│   │       │   ├── doc.go
│   │       │   ├── errors.go
│   │       │   ├── example_test.go
│   │       │   ├── integration_test.go
│   │       │   ├── key.go
│   │       │   ├── key_test.go
│   │       │   ├── load.go
│   │       │   ├── load_test.go
│   │       │   ├── prop.go
│   │       │   ├── query.go
│   │       │   ├── query_test.go
│   │       │   ├── save.go
│   │       │   ├── save_test.go
│   │       │   ├── testdata/
│   │       │   │   └── index.yaml
│   │       │   ├── time.go
│   │       │   ├── time_test.go
│   │       │   └── transaction.go
│   │       ├── errorreporting/
│   │       │   └── apiv1beta1/
│   │       │       ├── doc.go
│   │       │       ├── error_group_client.go
│   │       │       ├── error_group_client_example_test.go
│   │       │       ├── error_stats_client.go
│   │       │       ├── error_stats_client_example_test.go
│   │       │       ├── errorreporting.go
│   │       │       ├── report_errors_client.go
│   │       │       └── report_errors_client_example_test.go
│   │       ├── errors/
│   │       │   ├── errors.go
│   │       │   ├── errors_test.go
│   │       │   └── stack_test.go
│   │       ├── examples/
│   │       │   ├── bigquery/
│   │       │   │   ├── concat_table/
│   │       │   │   │   └── main.go
│   │       │   │   ├── load/
│   │       │   │   │   └── main.go
│   │       │   │   ├── query/
│   │       │   │   │   └── main.go
│   │       │   │   └── read/
│   │       │   │       └── main.go
│   │       │   ├── bigtable/
│   │       │   │   ├── helloworld/
│   │       │   │   │   ├── README.md
│   │       │   │   │   └── main.go
│   │       │   │   ├── search/
│   │       │   │   │   └── search.go
│   │       │   │   └── usercounter/
│   │       │   │       ├── README.md
│   │       │   │       ├── app.yaml
│   │       │   │       └── main.go
│   │       │   └── storage/
│   │       │       ├── appengine/
│   │       │       │   ├── app.go
│   │       │       │   └── app.yaml
│   │       │       └── appenginevm/
│   │       │           ├── app.go
│   │       │           └── app.yaml
│   │       ├── internal/
│   │       │   ├── bundler/
│   │       │   │   ├── bundler.go
│   │       │   │   └── bundler_test.go
│   │       │   ├── cloud.go
│   │       │   └── testutil/
│   │       │       ├── context.go
│   │       │       ├── iterators.go
│   │       │       ├── server.go
│   │       │       └── server_test.go
│   │       ├── key.json.enc
│   │       ├── language/
│   │       │   └── apiv1beta1/
│   │       │       ├── doc.go
│   │       │       ├── language.go
│   │       │       ├── language_client.go
│   │       │       └── language_client_example_test.go
│   │       ├── license_test.go
│   │       ├── logging/
│   │       │   ├── apiv2/
│   │       │   │   ├── README.md
│   │       │   │   ├── config_client.go
│   │       │   │   ├── config_client_example_test.go
│   │       │   │   ├── doc.go
│   │       │   │   ├── logging.go
│   │       │   │   ├── logging_client.go
│   │       │   │   ├── logging_client_example_test.go
│   │       │   │   ├── metrics_client.go
│   │       │   │   └── metrics_client_example_test.go
│   │       │   ├── logging.go
│   │       │   └── logging_test.go
│   │       ├── monitoring/
│   │       │   └── apiv3/
│   │       │       ├── agent_translation_client.go
│   │       │       ├── agent_translation_client_example_test.go
│   │       │       ├── doc.go
│   │       │       ├── group_client.go
│   │       │       ├── group_client_example_test.go
│   │       │       ├── metric_client.go
│   │       │       ├── metric_client_example_test.go
│   │       │       └── monitoring.go
│   │       ├── preview/
│   │       │   └── logging/
│   │       │       ├── example_entry_iterator_test.go
│   │       │       ├── example_metric_iterator_test.go
│   │       │       ├── example_paging_test.go
│   │       │       ├── example_resource_iterator_test.go
│   │       │       ├── example_sink_iterator_test.go
│   │       │       ├── examples_test.go
│   │       │       ├── internal/
│   │       │       │   └── testing/
│   │       │       │       ├── fake.go
│   │       │       │       └── fake_test.go
│   │       │       ├── logging.go
│   │       │       ├── logging_test.go
│   │       │       ├── metrics.go
│   │       │       ├── metrics_test.go
│   │       │       ├── resources.go
│   │       │       ├── resources_test.go
│   │       │       ├── sinks.go
│   │       │       ├── sinks_test.go
│   │       │       └── unique_test.go
│   │       ├── pubsub/
│   │       │   ├── acker.go
│   │       │   ├── acker_test.go
│   │       │   ├── apiv1/
│   │       │   │   ├── README.md
│   │       │   │   ├── doc.go
│   │       │   │   ├── publisher_client.go
│   │       │   │   ├── publisher_client_example_test.go
│   │       │   │   ├── pubsub.go
│   │       │   │   ├── subscriber_client.go
│   │       │   │   └── subscriber_client_example_test.go
│   │       │   ├── doc.go
│   │       │   ├── endtoend_test.go
│   │       │   ├── example_subscription_iterator_test.go
│   │       │   ├── example_test.go
│   │       │   ├── example_topic_iterator_test.go
│   │       │   ├── integration_test.go
│   │       │   ├── iterator.go
│   │       │   ├── iterator_test.go
│   │       │   ├── keepalive.go
│   │       │   ├── keepalive_test.go
│   │       │   ├── message.go
│   │       │   ├── pubsub.go
│   │       │   ├── puller.go
│   │       │   ├── puller_test.go
│   │       │   ├── service.go
│   │       │   ├── subscription.go
│   │       │   ├── subscription_test.go
│   │       │   ├── topic.go
│   │       │   ├── topic_test.go
│   │       │   └── utils_test.go
│   │       ├── speech/
│   │       │   └── apiv1beta1/
│   │       │       ├── doc.go
│   │       │       ├── speech.go
│   │       │       ├── speech_client.go
│   │       │       └── speech_client_example_test.go
│   │       ├── storage/
│   │       │   ├── acl.go
│   │       │   ├── bucket.go
│   │       │   ├── example_test.go
│   │       │   ├── integration_test.go
│   │       │   ├── reader.go
│   │       │   ├── storage.go
│   │       │   ├── storage_test.go
│   │       │   ├── testdata/
│   │       │   │   ├── dummy_pem
│   │       │   │   └── dummy_rsa
│   │       │   ├── writer.go
│   │       │   └── writer_test.go
│   │       ├── trace/
│   │       │   ├── sampling.go
│   │       │   ├── trace.go
│   │       │   └── trace_test.go
│   │       └── vision/
│   │           ├── annotations.go
│   │           ├── apiv1/
│   │           │   ├── doc.go
│   │           │   ├── image_annotator_client.go
│   │           │   ├── image_annotator_client_example_test.go
│   │           │   └── vision.go
│   │           ├── doc.go
│   │           ├── examples_test.go
│   │           ├── face.go
│   │           ├── geometry.go
│   │           ├── image.go
│   │           ├── latlng.go
│   │           ├── testdata/
│   │           │   └── README.md
│   │           ├── vision.go
│   │           └── vision_test.go
│   ├── github.com/
│   │   ├── beorn7/
│   │   │   └── perks/
│   │   │       ├── .gitignore
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── histogram/
│   │   │       │   ├── bench_test.go
│   │   │       │   ├── histogram.go
│   │   │       │   └── histogram_test.go
│   │   │       ├── quantile/
│   │   │       │   ├── bench_test.go
│   │   │       │   ├── example_test.go
│   │   │       │   ├── exampledata.txt
│   │   │       │   ├── stream.go
│   │   │       │   └── stream_test.go
│   │   │       └── topk/
│   │   │           ├── topk.go
│   │   │           └── topk_test.go
│   │   ├── blang/
│   │   │   └── semver/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── examples/
│   │   │       │   └── main.go
│   │   │       ├── json.go
│   │   │       ├── json_test.go
│   │   │       ├── range.go
│   │   │       ├── range_test.go
│   │   │       ├── semver.go
│   │   │       ├── semver_test.go
│   │   │       ├── sort.go
│   │   │       ├── sort_test.go
│   │   │       ├── sql.go
│   │   │       └── sql_test.go
│   │   ├── cloudfoundry-incubator/
│   │   │   └── candiedyaml/
│   │   │       ├── .gitignore
│   │   │       ├── .travis.yml
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── api.go
│   │   │       ├── candiedyaml_suite_test.go
│   │   │       ├── decode.go
│   │   │       ├── decode_test.go
│   │   │       ├── emitter.go
│   │   │       ├── encode.go
│   │   │       ├── encode_test.go
│   │   │       ├── fixtures/
│   │   │       │   └── specification/
│   │   │       │       ├── example2_1.yaml
│   │   │       │       ├── example2_10.yaml
│   │   │       │       ├── example2_11.yaml
│   │   │       │       ├── example2_12.yaml
│   │   │       │       ├── example2_13.yaml
│   │   │       │       ├── example2_14.yaml
│   │   │       │       ├── example2_15.yaml
│   │   │       │       ├── example2_15_dumped.yaml
│   │   │       │       ├── example2_16.yaml
│   │   │       │       ├── example2_17.yaml
│   │   │       │       ├── example2_17_control.yaml
│   │   │       │       ├── example2_17_hexesc.yaml
│   │   │       │       ├── example2_17_quoted.yaml
│   │   │       │       ├── example2_17_single.yaml
│   │   │       │       ├── example2_17_tie_fighter.yaml
│   │   │       │       ├── example2_17_unicode.yaml
│   │   │       │       ├── example2_18.yaml
│   │   │       │       ├── example2_19.yaml
│   │   │       │       ├── example2_2.yaml
│   │   │       │       ├── example2_20.yaml
│   │   │       │       ├── example2_21.yaml
│   │   │       │       ├── example2_22.yaml
│   │   │       │       ├── example2_23.yaml
│   │   │       │       ├── example2_23_application.yaml
│   │   │       │       ├── example2_23_non_date.yaml
│   │   │       │       ├── example2_23_picture.yaml
│   │   │       │       ├── example2_24.yaml
│   │   │       │       ├── example2_24_dumped.yaml
│   │   │       │       ├── example2_25.yaml
│   │   │       │       ├── example2_26.yaml
│   │   │       │       ├── example2_27.yaml
│   │   │       │       ├── example2_27_dumped.yaml
│   │   │       │       ├── example2_28.yaml
│   │   │       │       ├── example2_3.yaml
│   │   │       │       ├── example2_4.yaml
│   │   │       │       ├── example2_5.yaml
│   │   │       │       ├── example2_6.yaml
│   │   │       │       ├── example2_7.yaml
│   │   │       │       ├── example2_8.yaml
│   │   │       │       ├── example2_9.yaml
│   │   │       │       ├── example_empty.yaml
│   │   │       │       └── types/
│   │   │       │           ├── map.yaml
│   │   │       │           ├── map_mixed_tags.yaml
│   │   │       │           ├── merge.yaml
│   │   │       │           ├── omap.yaml
│   │   │       │           ├── pairs.yaml
│   │   │       │           ├── seq.yaml
│   │   │       │           ├── set.yaml
│   │   │       │           ├── v.yaml
│   │   │       │           └── value.yaml
│   │   │       ├── libyaml-LICENSE
│   │   │       ├── parser.go
│   │   │       ├── parser_test.go
│   │   │       ├── reader.go
│   │   │       ├── reader_test.go
│   │   │       ├── resolver.go
│   │   │       ├── resolver_test.go
│   │   │       ├── run_parser.go
│   │   │       ├── scanner.go
│   │   │       ├── scanner_test.go
│   │   │       ├── tags.go
│   │   │       ├── writer.go
│   │   │       ├── yaml_definesh.go
│   │   │       ├── yaml_privateh.go
│   │   │       └── yamlh.go
│   │   ├── coreos/
│   │   │   ├── go-oidc/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── .travis.yml
│   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   ├── DCO
│   │   │   │   ├── LICENSE
│   │   │   │   ├── MAINTAINERS
│   │   │   │   ├── NOTICE
│   │   │   │   ├── README.md
│   │   │   │   ├── example/
│   │   │   │   │   ├── app/
│   │   │   │   │   │   └── main.go
│   │   │   │   │   └── cli/
│   │   │   │   │       └── main.go
│   │   │   │   ├── http/
│   │   │   │   │   ├── client.go
│   │   │   │   │   ├── http.go
│   │   │   │   │   ├── http_test.go
│   │   │   │   │   ├── url.go
│   │   │   │   │   └── url_test.go
│   │   │   │   ├── jose/
│   │   │   │   │   ├── claims.go
│   │   │   │   │   ├── claims_test.go
│   │   │   │   │   ├── jose.go
│   │   │   │   │   ├── jwk.go
│   │   │   │   │   ├── jwk_test.go
│   │   │   │   │   ├── jws.go
│   │   │   │   │   ├── jws_test.go
│   │   │   │   │   ├── jwt.go
│   │   │   │   │   ├── jwt_test.go
│   │   │   │   │   ├── sig.go
│   │   │   │   │   └── sig_rsa.go
│   │   │   │   ├── key/
│   │   │   │   │   ├── key.go
│   │   │   │   │   ├── key_test.go
│   │   │   │   │   ├── manager.go
│   │   │   │   │   ├── manager_test.go
│   │   │   │   │   ├── repo.go
│   │   │   │   │   ├── rotate.go
│   │   │   │   │   ├── rotate_test.go
│   │   │   │   │   ├── sync.go
│   │   │   │   │   └── sync_test.go
│   │   │   │   ├── oauth2/
│   │   │   │   │   ├── error.go
│   │   │   │   │   ├── oauth2.go
│   │   │   │   │   └── oauth2_test.go
│   │   │   │   ├── oidc/
│   │   │   │   │   ├── client.go
│   │   │   │   │   ├── client_race_test.go
│   │   │   │   │   ├── client_test.go
│   │   │   │   │   ├── identity.go
│   │   │   │   │   ├── identity_test.go
│   │   │   │   │   ├── interface.go
│   │   │   │   │   ├── key.go
│   │   │   │   │   ├── provider.go
│   │   │   │   │   ├── provider_test.go
│   │   │   │   │   ├── transport.go
│   │   │   │   │   ├── transport_test.go
│   │   │   │   │   ├── util.go
│   │   │   │   │   ├── util_test.go
│   │   │   │   │   ├── verification.go
│   │   │   │   │   └── verification_test.go
│   │   │   │   └── test
│   │   │   └── pkg/
│   │   │       ├── .gitignore
│   │   │       ├── .travis.yml
│   │   │       ├── CONTRIBUTING.md
│   │   │       ├── DCO
│   │   │       ├── LICENSE
│   │   │       ├── MAINTAINERS
│   │   │       ├── NOTICE
│   │   │       ├── README.md
│   │   │       ├── capnslog/
│   │   │       │   ├── README.md
│   │   │       │   ├── example/
│   │   │       │   │   └── hello_dolly.go
│   │   │       │   ├── formatters.go
│   │   │       │   ├── glog_formatter.go
│   │   │       │   ├── init.go
│   │   │       │   ├── init_windows.go
│   │   │       │   ├── journald_formatter.go
│   │   │       │   ├── log_hijack.go
│   │   │       │   ├── logmap.go
│   │   │       │   ├── pkg_logger.go
│   │   │       │   └── syslog_formatter.go
│   │   │       ├── cryptoutil/
│   │   │       │   ├── aes.go
│   │   │       │   └── aes_test.go
│   │   │       ├── dlopen/
│   │   │       │   ├── dlopen.go
│   │   │       │   ├── dlopen_example.go
│   │   │       │   └── dlopen_test.go
│   │   │       ├── flagutil/
│   │   │       │   ├── env.go
│   │   │       │   ├── env_file.go
│   │   │       │   ├── env_test.go
│   │   │       │   ├── file_env_test.go
│   │   │       │   ├── types.go
│   │   │       │   └── types_test.go
│   │   │       ├── health/
│   │   │       │   ├── README.md
│   │   │       │   ├── health.go
│   │   │       │   └── health_test.go
│   │   │       ├── httputil/
│   │   │       │   ├── README.md
│   │   │       │   ├── cookie.go
│   │   │       │   ├── cookie_test.go
│   │   │       │   ├── json.go
│   │   │       │   └── json_test.go
│   │   │       ├── k8s-tlsutil/
│   │   │       │   └── k8s-tlsutil.go
│   │   │       ├── multierror/
│   │   │       │   ├── multierror.go
│   │   │       │   └── multierror_test.go
│   │   │       ├── netutil/
│   │   │       │   ├── proxy.go
│   │   │       │   ├── url.go
│   │   │       │   └── url_test.go
│   │   │       ├── progressutil/
│   │   │       │   ├── iocopy.go
│   │   │       │   ├── iocopy_test.go
│   │   │       │   ├── progressbar.go
│   │   │       │   └── progressbar_test.go
│   │   │       ├── test
│   │   │       ├── timeutil/
│   │   │       │   ├── backoff.go
│   │   │       │   └── backoff_test.go
│   │   │       └── yamlutil/
│   │   │           ├── yaml.go
│   │   │           └── yaml_test.go
│   │   ├── davecgh/
│   │   │   └── go-spew/
│   │   │       ├── .gitignore
│   │   │       ├── .travis.yml
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── cov_report.sh
│   │   │       ├── spew/
│   │   │       │   ├── bypass.go
│   │   │       │   ├── bypasssafe.go
│   │   │       │   ├── common.go
│   │   │       │   ├── common_test.go
│   │   │       │   ├── config.go
│   │   │       │   ├── doc.go
│   │   │       │   ├── dump.go
│   │   │       │   ├── dump_test.go
│   │   │       │   ├── dumpcgo_test.go
│   │   │       │   ├── dumpnocgo_test.go
│   │   │       │   ├── example_test.go
│   │   │       │   ├── format.go
│   │   │       │   ├── format_test.go
│   │   │       │   ├── internal_test.go
│   │   │       │   ├── internalunsafe_test.go
│   │   │       │   ├── spew.go
│   │   │       │   ├── spew_test.go
│   │   │       │   └── testdata/
│   │   │       │       └── dumpcgo.go
│   │   │       └── test_coverage.txt
│   │   ├── dgrijalva/
│   │   │   └── jwt-go/
│   │   │       ├── .gitignore
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── VERSION_HISTORY.md
│   │   │       ├── cmd/
│   │   │       │   └── jwt/
│   │   │       │       └── app.go
│   │   │       ├── doc.go
│   │   │       ├── errors.go
│   │   │       ├── example_test.go
│   │   │       ├── hmac.go
│   │   │       ├── hmac_test.go
│   │   │       ├── jwt.go
│   │   │       ├── jwt_test.go
│   │   │       ├── rsa.go
│   │   │       ├── rsa_test.go
│   │   │       ├── rsa_utils.go
│   │   │       ├── signing_method.go
│   │   │       └── test/
│   │   │           ├── hmacTestKey
│   │   │           ├── sample_key
│   │   │           └── sample_key.pub
│   │   ├── docker/
│   │   │   ├── distribution/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── .mailmap
│   │   │   │   ├── AUTHORS
│   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   ├── Dockerfile
│   │   │   │   ├── Godeps/
│   │   │   │   │   ├── Godeps.json
│   │   │   │   │   └── Readme
│   │   │   │   ├── LICENSE
│   │   │   │   ├── MAINTAINERS
│   │   │   │   ├── Makefile
│   │   │   │   ├── README.md
│   │   │   │   ├── ROADMAP.md
│   │   │   │   ├── blobs.go
│   │   │   │   ├── circle.yml
│   │   │   │   ├── cmd/
│   │   │   │   │   ├── digest/
│   │   │   │   │   │   └── main.go
│   │   │   │   │   ├── registry/
│   │   │   │   │   │   ├── config-cache.yml
│   │   │   │   │   │   ├── config-dev.yml
│   │   │   │   │   │   ├── config-example.yml
│   │   │   │   │   │   └── main.go
│   │   │   │   │   └── registry-api-descriptor-template/
│   │   │   │   │       └── main.go
│   │   │   │   ├── configuration/
│   │   │   │   │   ├── configuration.go
│   │   │   │   │   ├── configuration_test.go
│   │   │   │   │   └── parser.go
│   │   │   │   ├── context/
│   │   │   │   │   ├── context.go
│   │   │   │   │   ├── doc.go
│   │   │   │   │   ├── http.go
│   │   │   │   │   ├── http_test.go
│   │   │   │   │   ├── logger.go
│   │   │   │   │   ├── trace.go
│   │   │   │   │   ├── trace_test.go
│   │   │   │   │   ├── util.go
│   │   │   │   │   ├── version.go
│   │   │   │   │   └── version_test.go
│   │   │   │   ├── contrib/
│   │   │   │   │   ├── apache/
│   │   │   │   │   │   ├── README.MD
│   │   │   │   │   │   └── apache.conf
│   │   │   │   │   ├── compose/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── docker-compose.yml
│   │   │   │   │   │   └── nginx/
│   │   │   │   │   │       ├── Dockerfile
│   │   │   │   │   │       ├── docker-registry-v2.conf
│   │   │   │   │   │       ├── docker-registry.conf
│   │   │   │   │   │       ├── nginx.conf
│   │   │   │   │   │       └── registry.conf
│   │   │   │   │   ├── docker-integration/
│   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── docker-compose.yml
│   │   │   │   │   │   ├── golem.conf
│   │   │   │   │   │   ├── helpers.bash
│   │   │   │   │   │   ├── install_certs.sh
│   │   │   │   │   │   ├── malevolent-certs/
│   │   │   │   │   │   │   ├── localregistry.cert
│   │   │   │   │   │   │   └── localregistry.key
│   │   │   │   │   │   ├── malevolent.bats
│   │   │   │   │   │   ├── nginx/
│   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   ├── docker-registry-v2.conf
│   │   │   │   │   │   │   ├── nginx.conf
│   │   │   │   │   │   │   ├── registry-basic.conf
│   │   │   │   │   │   │   ├── registry-noauth.conf
│   │   │   │   │   │   │   ├── registry.conf
│   │   │   │   │   │   │   └── test.passwd
│   │   │   │   │   │   ├── run_multiversion.sh
│   │   │   │   │   │   ├── tls.bats
│   │   │   │   │   │   ├── token.bats
│   │   │   │   │   │   ├── tokenserver/
│   │   │   │   │   │   │   ├── .htpasswd
│   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   ├── certs/
│   │   │   │   │   │   │   │   ├── auth.localregistry.cert
│   │   │   │   │   │   │   │   ├── auth.localregistry.key
│   │   │   │   │   │   │   │   ├── localregistry.cert
│   │   │   │   │   │   │   │   ├── localregistry.key
│   │   │   │   │   │   │   │   ├── signing.cert
│   │   │   │   │   │   │   │   └── signing.key
│   │   │   │   │   │   │   └── registry-config.yml
│   │   │   │   │   │   └── tokenserver-oauth/
│   │   │   │   │   │       ├── .htpasswd
│   │   │   │   │   │       ├── Dockerfile
│   │   │   │   │   │       ├── certs/
│   │   │   │   │   │       │   ├── auth.localregistry.cert
│   │   │   │   │   │       │   ├── auth.localregistry.key
│   │   │   │   │   │       │   ├── localregistry.cert
│   │   │   │   │   │       │   ├── localregistry.key
│   │   │   │   │   │       │   ├── signing.cert
│   │   │   │   │   │       │   └── signing.key
│   │   │   │   │   │       └── registry-config.yml
│   │   │   │   │   └── token-server/
│   │   │   │   │       ├── main.go
│   │   │   │   │       └── token.go
│   │   │   │   ├── coverpkg.sh
│   │   │   │   ├── digest/
│   │   │   │   │   ├── digest.go
│   │   │   │   │   ├── digest_test.go
│   │   │   │   │   ├── digester.go
│   │   │   │   │   ├── digester_resumable_test.go
│   │   │   │   │   ├── doc.go
│   │   │   │   │   ├── set.go
│   │   │   │   │   ├── set_test.go
│   │   │   │   │   ├── verifiers.go
│   │   │   │   │   └── verifiers_test.go
│   │   │   │   ├── doc.go
│   │   │   │   ├── docs/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── apache.md
│   │   │   │   │   ├── architecture.md
│   │   │   │   │   ├── building.md
│   │   │   │   │   ├── compatibility.md
│   │   │   │   │   ├── configuration.md
│   │   │   │   │   ├── deploying.md
│   │   │   │   │   ├── garbage-collection.md
│   │   │   │   │   ├── glossary.md
│   │   │   │   │   ├── help.md
│   │   │   │   │   ├── images/
│   │   │   │   │   │   └── notifications.gliffy
│   │   │   │   │   ├── index.md
│   │   │   │   │   ├── insecure.md
│   │   │   │   │   ├── introduction.md
│   │   │   │   │   ├── migration.md
│   │   │   │   │   ├── mirror.md
│   │   │   │   │   ├── nginx.md
│   │   │   │   │   ├── notifications.md
│   │   │   │   │   ├── osx/
│   │   │   │   │   │   ├── com.docker.registry.plist
│   │   │   │   │   │   └── config.yml
│   │   │   │   │   ├── osx-setup-guide.md
│   │   │   │   │   ├── overview.md
│   │   │   │   │   ├── recipes.md
│   │   │   │   │   ├── spec/
│   │   │   │   │   │   ├── api.md
│   │   │   │   │   │   ├── api.md.tmpl
│   │   │   │   │   │   ├── auth/
│   │   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   │   ├── jwt.md
│   │   │   │   │   │   │   ├── oauth.md
│   │   │   │   │   │   │   ├── scope.md
│   │   │   │   │   │   │   └── token.md
│   │   │   │   │   │   ├── implementations.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── json.md
│   │   │   │   │   │   ├── manifest-v2-1.md
│   │   │   │   │   │   └── manifest-v2-2.md
│   │   │   │   │   ├── storage-drivers/
│   │   │   │   │   │   ├── azure.md
│   │   │   │   │   │   ├── filesystem.md
│   │   │   │   │   │   ├── gcs.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── inmemory.md
│   │   │   │   │   │   ├── oss.md
│   │   │   │   │   │   ├── s3.md
│   │   │   │   │   │   └── swift.md
│   │   │   │   │   └── storagedrivers.md
│   │   │   │   ├── errors.go
│   │   │   │   ├── health/
│   │   │   │   │   ├── api/
│   │   │   │   │   │   ├── api.go
│   │   │   │   │   │   └── api_test.go
│   │   │   │   │   ├── checks/
│   │   │   │   │   │   ├── checks.go
│   │   │   │   │   │   └── checks_test.go
│   │   │   │   │   ├── doc.go
│   │   │   │   │   ├── health.go
│   │   │   │   │   └── health_test.go
│   │   │   │   ├── manifest/
│   │   │   │   │   ├── doc.go
│   │   │   │   │   ├── manifestlist/
│   │   │   │   │   │   ├── manifestlist.go
│   │   │   │   │   │   └── manifestlist_test.go
│   │   │   │   │   ├── schema1/
│   │   │   │   │   │   ├── config_builder.go
│   │   │   │   │   │   ├── config_builder_test.go
│   │   │   │   │   │   ├── manifest.go
│   │   │   │   │   │   ├── manifest_test.go
│   │   │   │   │   │   ├── reference_builder.go
│   │   │   │   │   │   ├── reference_builder_test.go
│   │   │   │   │   │   ├── sign.go
│   │   │   │   │   │   └── verify.go
│   │   │   │   │   ├── schema2/
│   │   │   │   │   │   ├── builder.go
│   │   │   │   │   │   ├── builder_test.go
│   │   │   │   │   │   ├── manifest.go
│   │   │   │   │   │   └── manifest_test.go
│   │   │   │   │   └── versioned.go
│   │   │   │   ├── manifests.go
│   │   │   │   ├── notifications/
│   │   │   │   │   ├── bridge.go
│   │   │   │   │   ├── bridge_test.go
│   │   │   │   │   ├── endpoint.go
│   │   │   │   │   ├── event.go
│   │   │   │   │   ├── event_test.go
│   │   │   │   │   ├── http.go
│   │   │   │   │   ├── http_test.go
│   │   │   │   │   ├── listener.go
│   │   │   │   │   ├── listener_test.go
│   │   │   │   │   ├── metrics.go
│   │   │   │   │   ├── sinks.go
│   │   │   │   │   └── sinks_test.go
│   │   │   │   ├── project/
│   │   │   │   │   ├── dev-image/
│   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   └── hooks/
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── configure-hooks.sh
│   │   │   │   │       └── pre-commit
│   │   │   │   ├── reference/
│   │   │   │   │   ├── reference.go
│   │   │   │   │   ├── reference_test.go
│   │   │   │   │   ├── regexp.go
│   │   │   │   │   └── regexp_test.go
│   │   │   │   ├── registry/
│   │   │   │   │   ├── api/
│   │   │   │   │   │   ├── errcode/
│   │   │   │   │   │   │   ├── errors.go
│   │   │   │   │   │   │   ├── errors_test.go
│   │   │   │   │   │   │   ├── handler.go
│   │   │   │   │   │   │   └── register.go
│   │   │   │   │   │   └── v2/
│   │   │   │   │   │       ├── descriptors.go
│   │   │   │   │   │       ├── doc.go
│   │   │   │   │   │       ├── errors.go
│   │   │   │   │   │       ├── routes.go
│   │   │   │   │   │       ├── routes_test.go
│   │   │   │   │   │       ├── urls.go
│   │   │   │   │   │       └── urls_test.go
│   │   │   │   │   ├── auth/
│   │   │   │   │   │   ├── auth.go
│   │   │   │   │   │   ├── htpasswd/
│   │   │   │   │   │   │   ├── access.go
│   │   │   │   │   │   │   ├── access_test.go
│   │   │   │   │   │   │   ├── htpasswd.go
│   │   │   │   │   │   │   └── htpasswd_test.go
│   │   │   │   │   │   ├── silly/
│   │   │   │   │   │   │   ├── access.go
│   │   │   │   │   │   │   └── access_test.go
│   │   │   │   │   │   └── token/
│   │   │   │   │   │       ├── accesscontroller.go
│   │   │   │   │   │       ├── stringset.go
│   │   │   │   │   │       ├── token.go
│   │   │   │   │   │       ├── token_test.go
│   │   │   │   │   │       └── util.go
│   │   │   │   │   ├── client/
│   │   │   │   │   │   ├── auth/
│   │   │   │   │   │   │   ├── api_version.go
│   │   │   │   │   │   │   ├── authchallenge.go
│   │   │   │   │   │   │   ├── authchallenge_test.go
│   │   │   │   │   │   │   ├── session.go
│   │   │   │   │   │   │   └── session_test.go
│   │   │   │   │   │   ├── blob_writer.go
│   │   │   │   │   │   ├── blob_writer_test.go
│   │   │   │   │   │   ├── errors.go
│   │   │   │   │   │   ├── errors_test.go
│   │   │   │   │   │   ├── repository.go
│   │   │   │   │   │   ├── repository_test.go
│   │   │   │   │   │   └── transport/
│   │   │   │   │   │       ├── http_reader.go
│   │   │   │   │   │       └── transport.go
│   │   │   │   │   ├── doc.go
│   │   │   │   │   ├── handlers/
│   │   │   │   │   │   ├── api_test.go
│   │   │   │   │   │   ├── app.go
│   │   │   │   │   │   ├── app_test.go
│   │   │   │   │   │   ├── basicauth.go
│   │   │   │   │   │   ├── basicauth_prego14.go
│   │   │   │   │   │   ├── blob.go
│   │   │   │   │   │   ├── blobupload.go
│   │   │   │   │   │   ├── catalog.go
│   │   │   │   │   │   ├── context.go
│   │   │   │   │   │   ├── health_test.go
│   │   │   │   │   │   ├── helpers.go
│   │   │   │   │   │   ├── hmac.go
│   │   │   │   │   │   ├── hmac_test.go
│   │   │   │   │   │   ├── hooks.go
│   │   │   │   │   │   ├── images.go
│   │   │   │   │   │   ├── mail.go
│   │   │   │   │   │   └── tags.go
│   │   │   │   │   ├── listener/
│   │   │   │   │   │   └── listener.go
│   │   │   │   │   ├── middleware/
│   │   │   │   │   │   ├── registry/
│   │   │   │   │   │   │   └── middleware.go
│   │   │   │   │   │   └── repository/
│   │   │   │   │   │       └── middleware.go
│   │   │   │   │   ├── proxy/
│   │   │   │   │   │   ├── proxyauth.go
│   │   │   │   │   │   ├── proxyblobstore.go
│   │   │   │   │   │   ├── proxyblobstore_test.go
│   │   │   │   │   │   ├── proxymanifeststore.go
│   │   │   │   │   │   ├── proxymanifeststore_test.go
│   │   │   │   │   │   ├── proxymetrics.go
│   │   │   │   │   │   ├── proxyregistry.go
│   │   │   │   │   │   ├── proxytagservice.go
│   │   │   │   │   │   ├── proxytagservice_test.go
│   │   │   │   │   │   └── scheduler/
│   │   │   │   │   │       ├── scheduler.go
│   │   │   │   │   │       └── scheduler_test.go
│   │   │   │   │   ├── registry.go
│   │   │   │   │   ├── root.go
│   │   │   │   │   └── storage/
│   │   │   │   │       ├── blob_test.go
│   │   │   │   │       ├── blobcachemetrics.go
│   │   │   │   │       ├── blobserver.go
│   │   │   │   │       ├── blobstore.go
│   │   │   │   │       ├── blobwriter.go
│   │   │   │   │       ├── blobwriter_nonresumable.go
│   │   │   │   │       ├── blobwriter_resumable.go
│   │   │   │   │       ├── cache/
│   │   │   │   │       │   ├── cache.go
│   │   │   │   │       │   ├── cachecheck/
│   │   │   │   │       │   │   └── suite.go
│   │   │   │   │       │   ├── cachedblobdescriptorstore.go
│   │   │   │   │       │   ├── memory/
│   │   │   │   │       │   │   ├── memory.go
│   │   │   │   │       │   │   └── memory_test.go
│   │   │   │   │       │   └── redis/
│   │   │   │   │       │       ├── redis.go
│   │   │   │   │       │       └── redis_test.go
│   │   │   │   │       ├── catalog.go
│   │   │   │   │       ├── catalog_test.go
│   │   │   │   │       ├── doc.go
│   │   │   │   │       ├── driver/
│   │   │   │   │       │   ├── azure/
│   │   │   │   │       │   │   ├── azure.go
│   │   │   │   │       │   │   └── azure_test.go
│   │   │   │   │       │   ├── base/
│   │   │   │   │       │   │   ├── base.go
│   │   │   │   │       │   │   └── regulator.go
│   │   │   │   │       │   ├── factory/
│   │   │   │   │       │   │   └── factory.go
│   │   │   │   │       │   ├── fileinfo.go
│   │   │   │   │       │   ├── filesystem/
│   │   │   │   │       │   │   ├── driver.go
│   │   │   │   │       │   │   └── driver_test.go
│   │   │   │   │       │   ├── gcs/
│   │   │   │   │       │   │   ├── doc.go
│   │   │   │   │       │   │   ├── gcs.go
│   │   │   │   │       │   │   └── gcs_test.go
│   │   │   │   │       │   ├── inmemory/
│   │   │   │   │       │   │   ├── driver.go
│   │   │   │   │       │   │   ├── driver_test.go
│   │   │   │   │       │   │   └── mfs.go
│   │   │   │   │       │   ├── middleware/
│   │   │   │   │       │   │   ├── cloudfront/
│   │   │   │   │       │   │   │   └── middleware.go
│   │   │   │   │       │   │   ├── redirect/
│   │   │   │   │       │   │   │   ├── middleware.go
│   │   │   │   │       │   │   │   └── middleware_test.go
│   │   │   │   │       │   │   └── storagemiddleware.go
│   │   │   │   │       │   ├── oss/
│   │   │   │   │       │   │   ├── doc.go
│   │   │   │   │       │   │   ├── oss.go
│   │   │   │   │       │   │   └── oss_test.go
│   │   │   │   │       │   ├── s3-aws/
│   │   │   │   │       │   │   ├── s3.go
│   │   │   │   │       │   │   └── s3_test.go
│   │   │   │   │       │   ├── s3-goamz/
│   │   │   │   │       │   │   ├── s3.go
│   │   │   │   │       │   │   └── s3_test.go
│   │   │   │   │       │   ├── storagedriver.go
│   │   │   │   │       │   ├── swift/
│   │   │   │   │       │   │   ├── swift.go
│   │   │   │   │       │   │   └── swift_test.go
│   │   │   │   │       │   └── testsuites/
│   │   │   │   │       │       └── testsuites.go
│   │   │   │   │       ├── filereader.go
│   │   │   │   │       ├── filereader_test.go
│   │   │   │   │       ├── garbagecollect.go
│   │   │   │   │       ├── garbagecollect_test.go
│   │   │   │   │       ├── linkedblobstore.go
│   │   │   │   │       ├── manifestlisthandler.go
│   │   │   │   │       ├── manifeststore.go
│   │   │   │   │       ├── manifeststore_test.go
│   │   │   │   │       ├── paths.go
│   │   │   │   │       ├── paths_test.go
│   │   │   │   │       ├── purgeuploads.go
│   │   │   │   │       ├── purgeuploads_test.go
│   │   │   │   │       ├── registry.go
│   │   │   │   │       ├── schema2manifesthandler.go
│   │   │   │   │       ├── schema2manifesthandler_test.go
│   │   │   │   │       ├── signaturestore.go
│   │   │   │   │       ├── signedmanifesthandler.go
│   │   │   │   │       ├── tagstore.go
│   │   │   │   │       ├── tagstore_test.go
│   │   │   │   │       ├── util.go
│   │   │   │   │       ├── vacuum.go
│   │   │   │   │       ├── walk.go
│   │   │   │   │       └── walk_test.go
│   │   │   │   ├── registry.go
│   │   │   │   ├── tags.go
│   │   │   │   ├── testutil/
│   │   │   │   │   ├── handler.go
│   │   │   │   │   ├── manifests.go
│   │   │   │   │   └── tarfile.go
│   │   │   │   ├── uuid/
│   │   │   │   │   ├── uuid.go
│   │   │   │   │   └── uuid_test.go
│   │   │   │   └── version/
│   │   │   │       ├── print.go
│   │   │   │       ├── version.go
│   │   │   │       └── version.sh
│   │   │   ├── docker/
│   │   │   │   ├── .dockerignore
│   │   │   │   ├── .github/
│   │   │   │   │   ├── ISSUE_TEMPLATE.md
│   │   │   │   │   └── PULL_REQUEST_TEMPLATE.md
│   │   │   │   ├── .gitignore
│   │   │   │   ├── .mailmap
│   │   │   │   ├── AUTHORS
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   ├── Dockerfile
│   │   │   │   ├── Dockerfile.aarch64
│   │   │   │   ├── Dockerfile.armhf
│   │   │   │   ├── Dockerfile.ppc64le
│   │   │   │   ├── Dockerfile.s390x
│   │   │   │   ├── Dockerfile.simple
│   │   │   │   ├── Dockerfile.windows
│   │   │   │   ├── LICENSE
│   │   │   │   ├── MAINTAINERS
│   │   │   │   ├── Makefile
│   │   │   │   ├── NOTICE
│   │   │   │   ├── README.md
│   │   │   │   ├── ROADMAP.md
│   │   │   │   ├── VENDORING.md
│   │   │   │   ├── VERSION
│   │   │   │   ├── api/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── common.go
│   │   │   │   │   ├── common_test.go
│   │   │   │   │   ├── errors/
│   │   │   │   │   │   └── errors.go
│   │   │   │   │   ├── fixtures/
│   │   │   │   │   │   └── keyfile
│   │   │   │   │   ├── server/
│   │   │   │   │   │   ├── httputils/
│   │   │   │   │   │   │   ├── decoder.go
│   │   │   │   │   │   │   ├── errors.go
│   │   │   │   │   │   │   ├── form.go
│   │   │   │   │   │   │   ├── form_test.go
│   │   │   │   │   │   │   └── httputils.go
│   │   │   │   │   │   ├── middleware/
│   │   │   │   │   │   │   ├── cors.go
│   │   │   │   │   │   │   ├── debug.go
│   │   │   │   │   │   │   ├── middleware.go
│   │   │   │   │   │   │   ├── user_agent.go
│   │   │   │   │   │   │   ├── version.go
│   │   │   │   │   │   │   └── version_test.go
│   │   │   │   │   │   ├── middleware.go
│   │   │   │   │   │   ├── profiler.go
│   │   │   │   │   │   ├── router/
│   │   │   │   │   │   │   ├── checkpoint/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── checkpoint.go
│   │   │   │   │   │   │   │   ├── checkpoint_experimental.go
│   │   │   │   │   │   │   │   ├── checkpoint_regular.go
│   │   │   │   │   │   │   │   └── checkpoint_routes.go
│   │   │   │   │   │   │   ├── container/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── container.go
│   │   │   │   │   │   │   │   ├── container_routes.go
│   │   │   │   │   │   │   │   ├── copy.go
│   │   │   │   │   │   │   │   ├── exec.go
│   │   │   │   │   │   │   │   └── inspect.go
│   │   │   │   │   │   │   ├── image/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── image.go
│   │   │   │   │   │   │   │   └── image_routes.go
│   │   │   │   │   │   │   ├── local.go
│   │   │   │   │   │   │   ├── network/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── filter.go
│   │   │   │   │   │   │   │   ├── network.go
│   │   │   │   │   │   │   │   └── network_routes.go
│   │   │   │   │   │   │   ├── plugin/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── plugin.go
│   │   │   │   │   │   │   │   ├── plugin_experimental.go
│   │   │   │   │   │   │   │   ├── plugin_regular.go
│   │   │   │   │   │   │   │   └── plugin_routes.go
│   │   │   │   │   │   │   ├── router.go
│   │   │   │   │   │   │   ├── swarm/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── cluster.go
│   │   │   │   │   │   │   │   └── cluster_routes.go
│   │   │   │   │   │   │   ├── system/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── system.go
│   │   │   │   │   │   │   │   └── system_routes.go
│   │   │   │   │   │   │   └── volume/
│   │   │   │   │   │   │       ├── backend.go
│   │   │   │   │   │   │       ├── volume.go
│   │   │   │   │   │   │       └── volume_routes.go
│   │   │   │   │   │   ├── router_swapper.go
│   │   │   │   │   │   ├── server.go
│   │   │   │   │   │   └── server_test.go
│   │   │   │   │   └── types/
│   │   │   │   │       ├── auth.go
│   │   │   │   │       ├── backend/
│   │   │   │   │       │   └── backend.go
│   │   │   │   │       ├── blkiodev/
│   │   │   │   │       │   └── blkio.go
│   │   │   │   │       ├── client.go
│   │   │   │   │       ├── configs.go
│   │   │   │   │       ├── container/
│   │   │   │   │       │   ├── config.go
│   │   │   │   │       │   ├── host_config.go
│   │   │   │   │       │   ├── hostconfig_unix.go
│   │   │   │   │       │   └── hostconfig_windows.go
│   │   │   │   │       ├── errors.go
│   │   │   │   │       ├── events/
│   │   │   │   │       │   └── events.go
│   │   │   │   │       ├── filters/
│   │   │   │   │       │   ├── parse.go
│   │   │   │   │       │   └── parse_test.go
│   │   │   │   │       ├── mount/
│   │   │   │   │       │   └── mount.go
│   │   │   │   │       ├── network/
│   │   │   │   │       │   └── network.go
│   │   │   │   │       ├── plugin.go
│   │   │   │   │       ├── reference/
│   │   │   │   │       │   ├── image_reference.go
│   │   │   │   │       │   └── image_reference_test.go
│   │   │   │   │       ├── registry/
│   │   │   │   │       │   └── registry.go
│   │   │   │   │       ├── seccomp.go
│   │   │   │   │       ├── stats.go
│   │   │   │   │       ├── strslice/
│   │   │   │   │       │   ├── strslice.go
│   │   │   │   │       │   └── strslice_test.go
│   │   │   │   │       ├── swarm/
│   │   │   │   │       │   ├── common.go
│   │   │   │   │       │   ├── container.go
│   │   │   │   │       │   ├── network.go
│   │   │   │   │       │   ├── node.go
│   │   │   │   │       │   ├── service.go
│   │   │   │   │       │   ├── swarm.go
│   │   │   │   │       │   └── task.go
│   │   │   │   │       ├── time/
│   │   │   │   │       │   ├── duration_convert.go
│   │   │   │   │       │   ├── duration_convert_test.go
│   │   │   │   │       │   ├── timestamp.go
│   │   │   │   │       │   └── timestamp_test.go
│   │   │   │   │       ├── types.go
│   │   │   │   │       └── versions/
│   │   │   │   │           ├── README.md
│   │   │   │   │           ├── compare.go
│   │   │   │   │           ├── compare_test.go
│   │   │   │   │           ├── v1p19/
│   │   │   │   │           │   └── types.go
│   │   │   │   │           └── v1p20/
│   │   │   │   │               └── types.go
│   │   │   │   ├── builder/
│   │   │   │   │   ├── builder.go
│   │   │   │   │   ├── context.go
│   │   │   │   │   ├── context_test.go
│   │   │   │   │   ├── context_unix.go
│   │   │   │   │   ├── context_windows.go
│   │   │   │   │   ├── dockerfile/
│   │   │   │   │   │   ├── bflag.go
│   │   │   │   │   │   ├── bflag_test.go
│   │   │   │   │   │   ├── builder.go
│   │   │   │   │   │   ├── builder_unix.go
│   │   │   │   │   │   ├── builder_windows.go
│   │   │   │   │   │   ├── command/
│   │   │   │   │   │   │   └── command.go
│   │   │   │   │   │   ├── dispatchers.go
│   │   │   │   │   │   ├── dispatchers_test.go
│   │   │   │   │   │   ├── dispatchers_unix.go
│   │   │   │   │   │   ├── dispatchers_unix_test.go
│   │   │   │   │   │   ├── dispatchers_windows.go
│   │   │   │   │   │   ├── dispatchers_windows_test.go
│   │   │   │   │   │   ├── envVarTest
│   │   │   │   │   │   ├── evaluator.go
│   │   │   │   │   │   ├── evaluator_test.go
│   │   │   │   │   │   ├── evaluator_unix.go
│   │   │   │   │   │   ├── evaluator_windows.go
│   │   │   │   │   │   ├── internals.go
│   │   │   │   │   │   ├── internals_test.go
│   │   │   │   │   │   ├── internals_unix.go
│   │   │   │   │   │   ├── internals_windows.go
│   │   │   │   │   │   ├── internals_windows_test.go
│   │   │   │   │   │   ├── parser/
│   │   │   │   │   │   │   ├── dumper/
│   │   │   │   │   │   │   │   └── main.go
│   │   │   │   │   │   │   ├── json_test.go
│   │   │   │   │   │   │   ├── line_parsers.go
│   │   │   │   │   │   │   ├── parser.go
│   │   │   │   │   │   │   ├── parser_test.go
│   │   │   │   │   │   │   ├── testfile-line/
│   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   ├── testfiles/
│   │   │   │   │   │   │   │   ├── ADD-COPY-with-JSON/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── brimstone-consuldock/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── brimstone-docker-consul/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── continueIndent/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── cpuguy83-nagios/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── docker/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── env/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── escape/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── escape-after-comment/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── escape-nonewline/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── escapes/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── flags/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── health/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── influxdb/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── jeztah-invalid-json-json-inside-string/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── jeztah-invalid-json-json-inside-string-double/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── jeztah-invalid-json-single-quotes/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── jeztah-invalid-json-unterminated-bracket/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── jeztah-invalid-json-unterminated-string/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── json/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── kartar-entrypoint-oddities/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── lk4d4-the-edge-case-generator/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── mail/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── multiple-volumes/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── mumble/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── nginx/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── tf2/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── weechat/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   └── znc/
│   │   │   │   │   │   │   │       ├── Dockerfile
│   │   │   │   │   │   │   │       └── result
│   │   │   │   │   │   │   ├── testfiles-negative/
│   │   │   │   │   │   │   │   ├── env_no_value/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   └── shykes-nested-json/
│   │   │   │   │   │   │   │       └── Dockerfile
│   │   │   │   │   │   │   └── utils.go
│   │   │   │   │   │   ├── shell_parser.go
│   │   │   │   │   │   ├── shell_parser_test.go
│   │   │   │   │   │   ├── support.go
│   │   │   │   │   │   ├── support_test.go
│   │   │   │   │   │   ├── utils_test.go
│   │   │   │   │   │   └── wordsTest
│   │   │   │   │   ├── dockerignore/
│   │   │   │   │   │   ├── dockerignore.go
│   │   │   │   │   │   └── dockerignore_test.go
│   │   │   │   │   ├── dockerignore.go
│   │   │   │   │   ├── dockerignore_test.go
│   │   │   │   │   ├── git.go
│   │   │   │   │   ├── remote.go
│   │   │   │   │   ├── remote_test.go
│   │   │   │   │   ├── tarsum.go
│   │   │   │   │   ├── tarsum_test.go
│   │   │   │   │   └── utils_test.go
│   │   │   │   ├── cli/
│   │   │   │   │   ├── cobra.go
│   │   │   │   │   ├── command/
│   │   │   │   │   │   ├── bundlefile/
│   │   │   │   │   │   │   ├── bundlefile.go
│   │   │   │   │   │   │   └── bundlefile_test.go
│   │   │   │   │   │   ├── checkpoint/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── cmd_experimental.go
│   │   │   │   │   │   │   ├── create.go
│   │   │   │   │   │   │   ├── list.go
│   │   │   │   │   │   │   └── remove.go
│   │   │   │   │   │   ├── cli.go
│   │   │   │   │   │   ├── commands/
│   │   │   │   │   │   │   └── commands.go
│   │   │   │   │   │   ├── container/
│   │   │   │   │   │   │   ├── attach.go
│   │   │   │   │   │   │   ├── commit.go
│   │   │   │   │   │   │   ├── cp.go
│   │   │   │   │   │   │   ├── create.go
│   │   │   │   │   │   │   ├── diff.go
│   │   │   │   │   │   │   ├── exec.go
│   │   │   │   │   │   │   ├── exec_test.go
│   │   │   │   │   │   │   ├── export.go
│   │   │   │   │   │   │   ├── hijack.go
│   │   │   │   │   │   │   ├── kill.go
│   │   │   │   │   │   │   ├── logs.go
│   │   │   │   │   │   │   ├── pause.go
│   │   │   │   │   │   │   ├── port.go
│   │   │   │   │   │   │   ├── ps.go
│   │   │   │   │   │   │   ├── ps_test.go
│   │   │   │   │   │   │   ├── rename.go
│   │   │   │   │   │   │   ├── restart.go
│   │   │   │   │   │   │   ├── rm.go
│   │   │   │   │   │   │   ├── run.go
│   │   │   │   │   │   │   ├── start.go
│   │   │   │   │   │   │   ├── start_utils.go
│   │   │   │   │   │   │   ├── start_utils_experimental.go
│   │   │   │   │   │   │   ├── stats.go
│   │   │   │   │   │   │   ├── stats_helpers.go
│   │   │   │   │   │   │   ├── stats_unit_test.go
│   │   │   │   │   │   │   ├── stop.go
│   │   │   │   │   │   │   ├── top.go
│   │   │   │   │   │   │   ├── tty.go
│   │   │   │   │   │   │   ├── unpause.go
│   │   │   │   │   │   │   ├── update.go
│   │   │   │   │   │   │   ├── utils.go
│   │   │   │   │   │   │   └── wait.go
│   │   │   │   │   │   ├── formatter/
│   │   │   │   │   │   │   ├── container.go
│   │   │   │   │   │   │   ├── container_test.go
│   │   │   │   │   │   │   ├── custom.go
│   │   │   │   │   │   │   ├── custom_test.go
│   │   │   │   │   │   │   ├── formatter.go
│   │   │   │   │   │   │   ├── image.go
│   │   │   │   │   │   │   ├── image_test.go
│   │   │   │   │   │   │   ├── network.go
│   │   │   │   │   │   │   ├── network_test.go
│   │   │   │   │   │   │   ├── volume.go
│   │   │   │   │   │   │   └── volume_test.go
│   │   │   │   │   │   ├── idresolver/
│   │   │   │   │   │   │   └── idresolver.go
│   │   │   │   │   │   ├── image/
│   │   │   │   │   │   │   ├── build.go
│   │   │   │   │   │   │   ├── history.go
│   │   │   │   │   │   │   ├── images.go
│   │   │   │   │   │   │   ├── import.go
│   │   │   │   │   │   │   ├── load.go
│   │   │   │   │   │   │   ├── pull.go
│   │   │   │   │   │   │   ├── push.go
│   │   │   │   │   │   │   ├── remove.go
│   │   │   │   │   │   │   ├── save.go
│   │   │   │   │   │   │   ├── search.go
│   │   │   │   │   │   │   ├── tag.go
│   │   │   │   │   │   │   ├── trust.go
│   │   │   │   │   │   │   └── trust_test.go
│   │   │   │   │   │   ├── in.go
│   │   │   │   │   │   ├── inspect/
│   │   │   │   │   │   │   ├── inspector.go
│   │   │   │   │   │   │   └── inspector_test.go
│   │   │   │   │   │   ├── network/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── connect.go
│   │   │   │   │   │   │   ├── create.go
│   │   │   │   │   │   │   ├── disconnect.go
│   │   │   │   │   │   │   ├── inspect.go
│   │   │   │   │   │   │   ├── list.go
│   │   │   │   │   │   │   └── remove.go
│   │   │   │   │   │   ├── node/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── demote.go
│   │   │   │   │   │   │   ├── inspect.go
│   │   │   │   │   │   │   ├── list.go
│   │   │   │   │   │   │   ├── opts.go
│   │   │   │   │   │   │   ├── promote.go
│   │   │   │   │   │   │   ├── ps.go
│   │   │   │   │   │   │   ├── remove.go
│   │   │   │   │   │   │   └── update.go
│   │   │   │   │   │   ├── out.go
│   │   │   │   │   │   ├── plugin/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── cmd_experimental.go
│   │   │   │   │   │   │   ├── disable.go
│   │   │   │   │   │   │   ├── enable.go
│   │   │   │   │   │   │   ├── inspect.go
│   │   │   │   │   │   │   ├── install.go
│   │   │   │   │   │   │   ├── list.go
│   │   │   │   │   │   │   ├── push.go
│   │   │   │   │   │   │   ├── remove.go
│   │   │   │   │   │   │   └── set.go
│   │   │   │   │   │   ├── registry/
│   │   │   │   │   │   │   ├── login.go
│   │   │   │   │   │   │   └── logout.go
│   │   │   │   │   │   ├── registry.go
│   │   │   │   │   │   ├── service/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── create.go
│   │   │   │   │   │   │   ├── inspect.go
│   │   │   │   │   │   │   ├── inspect_test.go
│   │   │   │   │   │   │   ├── list.go
│   │   │   │   │   │   │   ├── opts.go
│   │   │   │   │   │   │   ├── opts_test.go
│   │   │   │   │   │   │   ├── ps.go
│   │   │   │   │   │   │   ├── remove.go
│   │   │   │   │   │   │   ├── scale.go
│   │   │   │   │   │   │   ├── update.go
│   │   │   │   │   │   │   └── update_test.go
│   │   │   │   │   │   ├── stack/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── cmd_stub.go
│   │   │   │   │   │   │   ├── common.go
│   │   │   │   │   │   │   ├── config.go
│   │   │   │   │   │   │   ├── deploy.go
│   │   │   │   │   │   │   ├── opts.go
│   │   │   │   │   │   │   ├── ps.go
│   │   │   │   │   │   │   ├── remove.go
│   │   │   │   │   │   │   └── services.go
│   │   │   │   │   │   ├── swarm/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── init.go
│   │   │   │   │   │   │   ├── join.go
│   │   │   │   │   │   │   ├── join_token.go
│   │   │   │   │   │   │   ├── leave.go
│   │   │   │   │   │   │   ├── opts.go
│   │   │   │   │   │   │   ├── opts_test.go
│   │   │   │   │   │   │   └── update.go
│   │   │   │   │   │   ├── system/
│   │   │   │   │   │   │   ├── events.go
│   │   │   │   │   │   │   ├── events_utils.go
│   │   │   │   │   │   │   ├── info.go
│   │   │   │   │   │   │   ├── inspect.go
│   │   │   │   │   │   │   └── version.go
│   │   │   │   │   │   ├── task/
│   │   │   │   │   │   │   └── print.go
│   │   │   │   │   │   ├── trust.go
│   │   │   │   │   │   ├── utils.go
│   │   │   │   │   │   └── volume/
│   │   │   │   │   │       ├── cmd.go
│   │   │   │   │   │       ├── create.go
│   │   │   │   │   │       ├── inspect.go
│   │   │   │   │   │       ├── list.go
│   │   │   │   │   │       └── remove.go
│   │   │   │   │   ├── error.go
│   │   │   │   │   ├── flags/
│   │   │   │   │   │   ├── client.go
│   │   │   │   │   │   └── common.go
│   │   │   │   │   └── required.go
│   │   │   │   ├── cliconfig/
│   │   │   │   │   ├── config.go
│   │   │   │   │   ├── config_test.go
│   │   │   │   │   ├── configfile/
│   │   │   │   │   │   ├── file.go
│   │   │   │   │   │   └── file_test.go
│   │   │   │   │   └── credentials/
│   │   │   │   │       ├── credentials.go
│   │   │   │   │       ├── default_store.go
│   │   │   │   │       ├── default_store_darwin.go
│   │   │   │   │       ├── default_store_linux.go
│   │   │   │   │       ├── default_store_unsupported.go
│   │   │   │   │       ├── default_store_windows.go
│   │   │   │   │       ├── file_store.go
│   │   │   │   │       ├── file_store_test.go
│   │   │   │   │       ├── native_store.go
│   │   │   │   │       └── native_store_test.go
│   │   │   │   ├── client/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── checkpoint_create.go
│   │   │   │   │   ├── checkpoint_create_test.go
│   │   │   │   │   ├── checkpoint_delete.go
│   │   │   │   │   ├── checkpoint_delete_test.go
│   │   │   │   │   ├── checkpoint_list.go
│   │   │   │   │   ├── checkpoint_list_test.go
│   │   │   │   │   ├── client.go
│   │   │   │   │   ├── client_mock_test.go
│   │   │   │   │   ├── client_test.go
│   │   │   │   │   ├── client_unix.go
│   │   │   │   │   ├── client_windows.go
│   │   │   │   │   ├── container_attach.go
│   │   │   │   │   ├── container_commit.go
│   │   │   │   │   ├── container_commit_test.go
│   │   │   │   │   ├── container_copy.go
│   │   │   │   │   ├── container_copy_test.go
│   │   │   │   │   ├── container_create.go
│   │   │   │   │   ├── container_create_test.go
│   │   │   │   │   ├── container_diff.go
│   │   │   │   │   ├── container_diff_test.go
│   │   │   │   │   ├── container_exec.go
│   │   │   │   │   ├── container_exec_test.go
│   │   │   │   │   ├── container_export.go
│   │   │   │   │   ├── container_export_test.go
│   │   │   │   │   ├── container_inspect.go
│   │   │   │   │   ├── container_inspect_test.go
│   │   │   │   │   ├── container_kill.go
│   │   │   │   │   ├── container_kill_test.go
│   │   │   │   │   ├── container_list.go
│   │   │   │   │   ├── container_list_test.go
│   │   │   │   │   ├── container_logs.go
│   │   │   │   │   ├── container_logs_test.go
│   │   │   │   │   ├── container_pause.go
│   │   │   │   │   ├── container_pause_test.go
│   │   │   │   │   ├── container_remove.go
│   │   │   │   │   ├── container_remove_test.go
│   │   │   │   │   ├── container_rename.go
│   │   │   │   │   ├── container_rename_test.go
│   │   │   │   │   ├── container_resize.go
│   │   │   │   │   ├── container_resize_test.go
│   │   │   │   │   ├── container_restart.go
│   │   │   │   │   ├── container_restart_test.go
│   │   │   │   │   ├── container_start.go
│   │   │   │   │   ├── container_start_test.go
│   │   │   │   │   ├── container_stats.go
│   │   │   │   │   ├── container_stats_test.go
│   │   │   │   │   ├── container_stop.go
│   │   │   │   │   ├── container_stop_test.go
│   │   │   │   │   ├── container_top.go
│   │   │   │   │   ├── container_top_test.go
│   │   │   │   │   ├── container_unpause.go
│   │   │   │   │   ├── container_unpause_test.go
│   │   │   │   │   ├── container_update.go
│   │   │   │   │   ├── container_update_test.go
│   │   │   │   │   ├── container_wait.go
│   │   │   │   │   ├── container_wait_test.go
│   │   │   │   │   ├── errors.go
│   │   │   │   │   ├── events.go
│   │   │   │   │   ├── events_test.go
│   │   │   │   │   ├── hijack.go
│   │   │   │   │   ├── image_build.go
│   │   │   │   │   ├── image_build_test.go
│   │   │   │   │   ├── image_create.go
│   │   │   │   │   ├── image_create_test.go
│   │   │   │   │   ├── image_history.go
│   │   │   │   │   ├── image_history_test.go
│   │   │   │   │   ├── image_import.go
│   │   │   │   │   ├── image_import_test.go
│   │   │   │   │   ├── image_inspect.go
│   │   │   │   │   ├── image_inspect_test.go
│   │   │   │   │   ├── image_list.go
│   │   │   │   │   ├── image_list_test.go
│   │   │   │   │   ├── image_load.go
│   │   │   │   │   ├── image_load_test.go
│   │   │   │   │   ├── image_pull.go
│   │   │   │   │   ├── image_pull_test.go
│   │   │   │   │   ├── image_push.go
│   │   │   │   │   ├── image_push_test.go
│   │   │   │   │   ├── image_remove.go
│   │   │   │   │   ├── image_remove_test.go
│   │   │   │   │   ├── image_save.go
│   │   │   │   │   ├── image_save_test.go
│   │   │   │   │   ├── image_search.go
│   │   │   │   │   ├── image_search_test.go
│   │   │   │   │   ├── image_tag.go
│   │   │   │   │   ├── image_tag_test.go
│   │   │   │   │   ├── info.go
│   │   │   │   │   ├── info_test.go
│   │   │   │   │   ├── interface.go
│   │   │   │   │   ├── interface_experimental.go
│   │   │   │   │   ├── interface_stable.go
│   │   │   │   │   ├── login.go
│   │   │   │   │   ├── network_connect.go
│   │   │   │   │   ├── network_connect_test.go
│   │   │   │   │   ├── network_create.go
│   │   │   │   │   ├── network_create_test.go
│   │   │   │   │   ├── network_disconnect.go
│   │   │   │   │   ├── network_disconnect_test.go
│   │   │   │   │   ├── network_inspect.go
│   │   │   │   │   ├── network_inspect_test.go
│   │   │   │   │   ├── network_list.go
│   │   │   │   │   ├── network_list_test.go
│   │   │   │   │   ├── network_remove.go
│   │   │   │   │   ├── network_remove_test.go
│   │   │   │   │   ├── node_inspect.go
│   │   │   │   │   ├── node_inspect_test.go
│   │   │   │   │   ├── node_list.go
│   │   │   │   │   ├── node_list_test.go
│   │   │   │   │   ├── node_remove.go
│   │   │   │   │   ├── node_remove_test.go
│   │   │   │   │   ├── node_update.go
│   │   │   │   │   ├── node_update_test.go
│   │   │   │   │   ├── plugin_disable.go
│   │   │   │   │   ├── plugin_disable_test.go
│   │   │   │   │   ├── plugin_enable.go
│   │   │   │   │   ├── plugin_enable_test.go
│   │   │   │   │   ├── plugin_inspect.go
│   │   │   │   │   ├── plugin_inspect_test.go
│   │   │   │   │   ├── plugin_install.go
│   │   │   │   │   ├── plugin_list.go
│   │   │   │   │   ├── plugin_list_test.go
│   │   │   │   │   ├── plugin_push.go
│   │   │   │   │   ├── plugin_push_test.go
│   │   │   │   │   ├── plugin_remove.go
│   │   │   │   │   ├── plugin_remove_test.go
│   │   │   │   │   ├── plugin_set.go
│   │   │   │   │   ├── plugin_set_test.go
│   │   │   │   │   ├── request.go
│   │   │   │   │   ├── request_test.go
│   │   │   │   │   ├── service_create.go
│   │   │   │   │   ├── service_create_test.go
│   │   │   │   │   ├── service_inspect.go
│   │   │   │   │   ├── service_inspect_test.go
│   │   │   │   │   ├── service_list.go
│   │   │   │   │   ├── service_list_test.go
│   │   │   │   │   ├── service_remove.go
│   │   │   │   │   ├── service_remove_test.go
│   │   │   │   │   ├── service_update.go
│   │   │   │   │   ├── service_update_test.go
│   │   │   │   │   ├── swarm_init.go
│   │   │   │   │   ├── swarm_init_test.go
│   │   │   │   │   ├── swarm_inspect.go
│   │   │   │   │   ├── swarm_inspect_test.go
│   │   │   │   │   ├── swarm_join.go
│   │   │   │   │   ├── swarm_join_test.go
│   │   │   │   │   ├── swarm_leave.go
│   │   │   │   │   ├── swarm_leave_test.go
│   │   │   │   │   ├── swarm_update.go
│   │   │   │   │   ├── swarm_update_test.go
│   │   │   │   │   ├── task_inspect.go
│   │   │   │   │   ├── task_inspect_test.go
│   │   │   │   │   ├── task_list.go
│   │   │   │   │   ├── task_list_test.go
│   │   │   │   │   ├── testdata/
│   │   │   │   │   │   ├── ca.pem
│   │   │   │   │   │   ├── cert.pem
│   │   │   │   │   │   └── key.pem
│   │   │   │   │   ├── transport/
│   │   │   │   │   │   ├── cancellable/
│   │   │   │   │   │   │   ├── LICENSE
│   │   │   │   │   │   │   ├── canceler.go
│   │   │   │   │   │   │   ├── canceler_go14.go
│   │   │   │   │   │   │   └── cancellable.go
│   │   │   │   │   │   ├── client.go
│   │   │   │   │   │   ├── tlsconfig_clone.go
│   │   │   │   │   │   ├── tlsconfig_clone_go16.go
│   │   │   │   │   │   ├── tlsconfig_clone_go17.go
│   │   │   │   │   │   └── transport.go
│   │   │   │   │   ├── version.go
│   │   │   │   │   ├── volume_create.go
│   │   │   │   │   ├── volume_create_test.go
│   │   │   │   │   ├── volume_inspect.go
│   │   │   │   │   ├── volume_inspect_test.go
│   │   │   │   │   ├── volume_list.go
│   │   │   │   │   ├── volume_list_test.go
│   │   │   │   │   ├── volume_remove.go
│   │   │   │   │   └── volume_remove_test.go
│   │   │   │   ├── cmd/
│   │   │   │   │   ├── docker/
│   │   │   │   │   │   ├── daemon_none.go
│   │   │   │   │   │   ├── daemon_none_test.go
│   │   │   │   │   │   ├── daemon_unit_test.go
│   │   │   │   │   │   ├── daemon_unix.go
│   │   │   │   │   │   ├── docker.go
│   │   │   │   │   │   ├── docker_test.go
│   │   │   │   │   │   └── docker_windows.go
│   │   │   │   │   └── dockerd/
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── daemon.go
│   │   │   │   │       ├── daemon_freebsd.go
│   │   │   │   │       ├── daemon_linux.go
│   │   │   │   │       ├── daemon_solaris.go
│   │   │   │   │       ├── daemon_test.go
│   │   │   │   │       ├── daemon_unix.go
│   │   │   │   │       ├── daemon_unix_test.go
│   │   │   │   │       ├── daemon_windows.go
│   │   │   │   │       ├── docker.go
│   │   │   │   │       ├── docker_windows.go
│   │   │   │   │       ├── hack/
│   │   │   │   │       │   ├── malformed_host_override.go
│   │   │   │   │       │   └── malformed_host_override_test.go
│   │   │   │   │       ├── routes.go
│   │   │   │   │       ├── routes_experimental.go
│   │   │   │   │       ├── service_unsupported.go
│   │   │   │   │       └── service_windows.go
│   │   │   │   ├── container/
│   │   │   │   │   ├── archive.go
│   │   │   │   │   ├── container.go
│   │   │   │   │   ├── container_solaris.go
│   │   │   │   │   ├── container_unit_test.go
│   │   │   │   │   ├── container_unix.go
│   │   │   │   │   ├── container_windows.go
│   │   │   │   │   ├── health.go
│   │   │   │   │   ├── history.go
│   │   │   │   │   ├── memory_store.go
│   │   │   │   │   ├── memory_store_test.go
│   │   │   │   │   ├── monitor.go
│   │   │   │   │   ├── mounts_unix.go
│   │   │   │   │   ├── mounts_windows.go
│   │   │   │   │   ├── state.go
│   │   │   │   │   ├── state_solaris.go
│   │   │   │   │   ├── state_test.go
│   │   │   │   │   ├── state_unix.go
│   │   │   │   │   ├── state_windows.go
│   │   │   │   │   └── store.go
│   │   │   │   ├── contrib/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── REVIEWERS
│   │   │   │   │   ├── apparmor/
│   │   │   │   │   │   ├── main.go
│   │   │   │   │   │   └── template.go
│   │   │   │   │   ├── builder/
│   │   │   │   │   │   ├── deb/
│   │   │   │   │   │   │   ├── amd64/
│   │   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   │   ├── build.sh
│   │   │   │   │   │   │   │   ├── debian-jessie/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   ├── debian-stretch/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   ├── debian-wheezy/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   ├── generate.sh
│   │   │   │   │   │   │   │   ├── ubuntu-precise/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   ├── ubuntu-trusty/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   ├── ubuntu-wily/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   └── ubuntu-xenial/
│   │   │   │   │   │   │   │       └── Dockerfile
│   │   │   │   │   │   │   ├── armhf/
│   │   │   │   │   │   │   │   ├── debian-jessie/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   ├── raspbian-jessie/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   └── ubuntu-trusty/
│   │   │   │   │   │   │   │       └── Dockerfile
│   │   │   │   │   │   │   └── ppc64le/
│   │   │   │   │   │   │       ├── build.sh
│   │   │   │   │   │   │       ├── generate.sh
│   │   │   │   │   │   │       └── ubuntu-xenial/
│   │   │   │   │   │   │           └── Dockerfile
│   │   │   │   │   │   └── rpm/
│   │   │   │   │   │       └── amd64/
│   │   │   │   │   │           ├── README.md
│   │   │   │   │   │           ├── build.sh
│   │   │   │   │   │           ├── centos-7/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           ├── fedora-22/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           ├── fedora-23/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           ├── fedora-24/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           ├── generate.sh
│   │   │   │   │   │           ├── opensuse-13.2/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           ├── oraclelinux-6/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           ├── oraclelinux-7/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           └── photon-1.0/
│   │   │   │   │   │               └── Dockerfile
│   │   │   │   │   ├── check-config.sh
│   │   │   │   │   ├── completion/
│   │   │   │   │   │   ├── REVIEWERS
│   │   │   │   │   │   ├── bash/
│   │   │   │   │   │   │   └── docker
│   │   │   │   │   │   ├── fish/
│   │   │   │   │   │   │   └── docker.fish
│   │   │   │   │   │   ├── powershell/
│   │   │   │   │   │   │   └── posh-docker.psm1
│   │   │   │   │   │   └── zsh/
│   │   │   │   │   │       ├── REVIEWERS
│   │   │   │   │   │       └── _docker
│   │   │   │   │   ├── desktop-integration/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── chromium/
│   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   └── gparted/
│   │   │   │   │   │       └── Dockerfile
│   │   │   │   │   ├── docker-device-tool/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── device_tool.go
│   │   │   │   │   │   └── device_tool_windows.go
│   │   │   │   │   ├── dockerize-disk.sh
│   │   │   │   │   ├── download-frozen-image-v1.sh
│   │   │   │   │   ├── download-frozen-image-v2.sh
│   │   │   │   │   ├── gitdm/
│   │   │   │   │   │   ├── aliases
│   │   │   │   │   │   ├── domain-map
│   │   │   │   │   │   ├── generate_aliases.sh
│   │   │   │   │   │   └── gitdm.config
│   │   │   │   │   ├── httpserver/
│   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   └── server.go
│   │   │   │   │   ├── init/
│   │   │   │   │   │   ├── openrc/
│   │   │   │   │   │   │   ├── docker.confd
│   │   │   │   │   │   │   └── docker.initd
│   │   │   │   │   │   ├── systemd/
│   │   │   │   │   │   │   ├── REVIEWERS
│   │   │   │   │   │   │   ├── docker.service
│   │   │   │   │   │   │   ├── docker.service.rpm
│   │   │   │   │   │   │   └── docker.socket
│   │   │   │   │   │   ├── sysvinit-debian/
│   │   │   │   │   │   │   ├── docker
│   │   │   │   │   │   │   └── docker.default
│   │   │   │   │   │   ├── sysvinit-redhat/
│   │   │   │   │   │   │   ├── docker
│   │   │   │   │   │   │   └── docker.sysconfig
│   │   │   │   │   │   └── upstart/
│   │   │   │   │   │       ├── REVIEWERS
│   │   │   │   │   │       └── docker.conf
│   │   │   │   │   ├── mkimage/
│   │   │   │   │   │   ├── .febootstrap-minimize
│   │   │   │   │   │   ├── busybox-static
│   │   │   │   │   │   ├── debootstrap
│   │   │   │   │   │   ├── mageia-urpmi
│   │   │   │   │   │   └── rinse
│   │   │   │   │   ├── mkimage-alpine.sh
│   │   │   │   │   ├── mkimage-arch-pacman.conf
│   │   │   │   │   ├── mkimage-arch.sh
│   │   │   │   │   ├── mkimage-archarm-pacman.conf
│   │   │   │   │   ├── mkimage-busybox.sh
│   │   │   │   │   ├── mkimage-crux.sh
│   │   │   │   │   ├── mkimage-debootstrap.sh
│   │   │   │   │   ├── mkimage-pld.sh
│   │   │   │   │   ├── mkimage-rinse.sh
│   │   │   │   │   ├── mkimage-yum.sh
│   │   │   │   │   ├── mkimage.sh
│   │   │   │   │   ├── nnp-test/
│   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   └── nnp-test.c
│   │   │   │   │   ├── nuke-graph-directory.sh
│   │   │   │   │   ├── project-stats.sh
│   │   │   │   │   ├── report-issue.sh
│   │   │   │   │   ├── reprepro/
│   │   │   │   │   │   └── suites.sh
│   │   │   │   │   ├── selinux/
│   │   │   │   │   │   └── docker-engine-selinux/
│   │   │   │   │   │       ├── LICENSE
│   │   │   │   │   │       ├── Makefile
│   │   │   │   │   │       ├── docker.fc
│   │   │   │   │   │       ├── docker.if
│   │   │   │   │   │       └── docker.te
│   │   │   │   │   ├── selinux-fedora-24/
│   │   │   │   │   │   └── docker-engine-selinux/
│   │   │   │   │   │       ├── LICENSE
│   │   │   │   │   │       ├── Makefile
│   │   │   │   │   │       ├── README.md
│   │   │   │   │   │       ├── docker.fc
│   │   │   │   │   │       ├── docker.if
│   │   │   │   │   │       └── docker.te
│   │   │   │   │   ├── selinux-oraclelinux-7/
│   │   │   │   │   │   └── docker-engine-selinux/
│   │   │   │   │   │       ├── LICENSE
│   │   │   │   │   │       ├── Makefile
│   │   │   │   │   │       ├── README.md
│   │   │   │   │   │       ├── docker.fc
│   │   │   │   │   │       ├── docker.if
│   │   │   │   │   │       └── docker.te
│   │   │   │   │   ├── syntax/
│   │   │   │   │   │   ├── kate/
│   │   │   │   │   │   │   └── Dockerfile.xml
│   │   │   │   │   │   ├── nano/
│   │   │   │   │   │   │   ├── Dockerfile.nanorc
│   │   │   │   │   │   │   └── README.md
│   │   │   │   │   │   ├── textmate/
│   │   │   │   │   │   │   ├── Docker.tmbundle/
│   │   │   │   │   │   │   │   ├── Preferences/
│   │   │   │   │   │   │   │   │   └── Dockerfile.tmPreferences
│   │   │   │   │   │   │   │   ├── Syntaxes/
│   │   │   │   │   │   │   │   │   └── Dockerfile.tmLanguage
│   │   │   │   │   │   │   │   └── info.plist
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   └── REVIEWERS
│   │   │   │   │   │   └── vim/
│   │   │   │   │   │       ├── LICENSE
│   │   │   │   │   │       ├── README.md
│   │   │   │   │   │       ├── doc/
│   │   │   │   │   │       │   └── dockerfile.txt
│   │   │   │   │   │       ├── ftdetect/
│   │   │   │   │   │       │   └── dockerfile.vim
│   │   │   │   │   │       └── syntax/
│   │   │   │   │   │           └── dockerfile.vim
│   │   │   │   │   ├── syscall-test/
│   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   ├── acct.c
│   │   │   │   │   │   ├── exit32.s
│   │   │   │   │   │   ├── ns.c
│   │   │   │   │   │   └── userns.c
│   │   │   │   │   ├── udev/
│   │   │   │   │   │   └── 80-docker.rules
│   │   │   │   │   └── vagrant-docker/
│   │   │   │   │       └── README.md
│   │   │   │   ├── daemon/
│   │   │   │   │   ├── apparmor_default.go
│   │   │   │   │   ├── apparmor_default_unsupported.go
│   │   │   │   │   ├── archive.go
│   │   │   │   │   ├── archive_unix.go
│   │   │   │   │   ├── archive_windows.go
│   │   │   │   │   ├── attach.go
│   │   │   │   │   ├── auth.go
│   │   │   │   │   ├── caps/
│   │   │   │   │   │   └── utils_unix.go
│   │   │   │   │   ├── changes.go
│   │   │   │   │   ├── checkpoint.go
│   │   │   │   │   ├── cluster/
│   │   │   │   │   │   ├── cluster.go
│   │   │   │   │   │   ├── convert/
│   │   │   │   │   │   │   ├── container.go
│   │   │   │   │   │   │   ├── network.go
│   │   │   │   │   │   │   ├── node.go
│   │   │   │   │   │   │   ├── service.go
│   │   │   │   │   │   │   ├── swarm.go
│   │   │   │   │   │   │   └── task.go
│   │   │   │   │   │   ├── executor/
│   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   └── container/
│   │   │   │   │   │   │       ├── adapter.go
│   │   │   │   │   │   │       ├── attachment.go
│   │   │   │   │   │   │       ├── container.go
│   │   │   │   │   │   │       ├── controller.go
│   │   │   │   │   │   │       ├── errors.go
│   │   │   │   │   │   │       ├── executor.go
│   │   │   │   │   │   │       ├── health_test.go
│   │   │   │   │   │   │       ├── validate.go
│   │   │   │   │   │   │       ├── validate_test.go
│   │   │   │   │   │   │       ├── validate_unix_test.go
│   │   │   │   │   │   │       └── validate_windows_test.go
│   │   │   │   │   │   ├── filters.go
│   │   │   │   │   │   ├── helpers.go
│   │   │   │   │   │   ├── listen_addr.go
│   │   │   │   │   │   ├── listen_addr_linux.go
│   │   │   │   │   │   ├── listen_addr_others.go
│   │   │   │   │   │   └── provider/
│   │   │   │   │   │       └── network.go
│   │   │   │   │   ├── commit.go
│   │   │   │   │   ├── config.go
│   │   │   │   │   ├── config_experimental.go
│   │   │   │   │   ├── config_solaris.go
│   │   │   │   │   ├── config_stub.go
│   │   │   │   │   ├── config_test.go
│   │   │   │   │   ├── config_unix.go
│   │   │   │   │   ├── config_windows.go
│   │   │   │   │   ├── container.go
│   │   │   │   │   ├── container_operations.go
│   │   │   │   │   ├── container_operations_solaris.go
│   │   │   │   │   ├── container_operations_unix.go
│   │   │   │   │   ├── container_operations_windows.go
│   │   │   │   │   ├── create.go
│   │   │   │   │   ├── create_unix.go
│   │   │   │   │   ├── create_windows.go
│   │   │   │   │   ├── daemon.go
│   │   │   │   │   ├── daemon_experimental.go
│   │   │   │   │   ├── daemon_linux.go
│   │   │   │   │   ├── daemon_linux_test.go
│   │   │   │   │   ├── daemon_solaris.go
│   │   │   │   │   ├── daemon_stub.go
│   │   │   │   │   ├── daemon_test.go
│   │   │   │   │   ├── daemon_unix.go
│   │   │   │   │   ├── daemon_unix_test.go
│   │   │   │   │   ├── daemon_unsupported.go
│   │   │   │   │   ├── daemon_windows.go
│   │   │   │   │   ├── debugtrap_unix.go
│   │   │   │   │   ├── debugtrap_unsupported.go
│   │   │   │   │   ├── debugtrap_windows.go
│   │   │   │   │   ├── delete.go
│   │   │   │   │   ├── delete_test.go
│   │   │   │   │   ├── discovery.go
│   │   │   │   │   ├── discovery_test.go
│   │   │   │   │   ├── errors.go
│   │   │   │   │   ├── events/
│   │   │   │   │   │   ├── events.go
│   │   │   │   │   │   ├── events_test.go
│   │   │   │   │   │   ├── filter.go
│   │   │   │   │   │   └── testutils/
│   │   │   │   │   │       └── testutils.go
│   │   │   │   │   ├── events.go
│   │   │   │   │   ├── events_test.go
│   │   │   │   │   ├── exec/
│   │   │   │   │   │   └── exec.go
│   │   │   │   │   ├── exec.go
│   │   │   │   │   ├── exec_linux.go
│   │   │   │   │   ├── exec_solaris.go
│   │   │   │   │   ├── exec_windows.go
│   │   │   │   │   ├── export.go
│   │   │   │   │   ├── graphdriver/
│   │   │   │   │   │   ├── aufs/
│   │   │   │   │   │   │   ├── aufs.go
│   │   │   │   │   │   │   ├── aufs_test.go
│   │   │   │   │   │   │   ├── dirs.go
│   │   │   │   │   │   │   ├── mount.go
│   │   │   │   │   │   │   ├── mount_linux.go
│   │   │   │   │   │   │   └── mount_unsupported.go
│   │   │   │   │   │   ├── btrfs/
│   │   │   │   │   │   │   ├── btrfs.go
│   │   │   │   │   │   │   ├── btrfs_test.go
│   │   │   │   │   │   │   ├── dummy_unsupported.go
│   │   │   │   │   │   │   ├── version.go
│   │   │   │   │   │   │   ├── version_none.go
│   │   │   │   │   │   │   └── version_test.go
│   │   │   │   │   │   ├── counter.go
│   │   │   │   │   │   ├── devmapper/
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── deviceset.go
│   │   │   │   │   │   │   ├── devmapper_doc.go
│   │   │   │   │   │   │   ├── devmapper_test.go
│   │   │   │   │   │   │   ├── driver.go
│   │   │   │   │   │   │   └── mount.go
│   │   │   │   │   │   ├── driver.go
│   │   │   │   │   │   ├── driver_freebsd.go
│   │   │   │   │   │   ├── driver_linux.go
│   │   │   │   │   │   ├── driver_solaris.go
│   │   │   │   │   │   ├── driver_unsupported.go
│   │   │   │   │   │   ├── driver_windows.go
│   │   │   │   │   │   ├── fsdiff.go
│   │   │   │   │   │   ├── graphtest/
│   │   │   │   │   │   │   ├── graphbench_unix.go
│   │   │   │   │   │   │   ├── graphtest_unix.go
│   │   │   │   │   │   │   ├── graphtest_windows.go
│   │   │   │   │   │   │   ├── testutil.go
│   │   │   │   │   │   │   └── testutil_unix.go
│   │   │   │   │   │   ├── overlay/
│   │   │   │   │   │   │   ├── copy.go
│   │   │   │   │   │   │   ├── overlay.go
│   │   │   │   │   │   │   ├── overlay_test.go
│   │   │   │   │   │   │   └── overlay_unsupported.go
│   │   │   │   │   │   ├── overlay2/
│   │   │   │   │   │   │   ├── mount.go
│   │   │   │   │   │   │   ├── overlay.go
│   │   │   │   │   │   │   ├── overlay_test.go
│   │   │   │   │   │   │   ├── overlay_unsupported.go
│   │   │   │   │   │   │   └── randomid.go
│   │   │   │   │   │   ├── plugin.go
│   │   │   │   │   │   ├── plugin_unsupported.go
│   │   │   │   │   │   ├── proxy.go
│   │   │   │   │   │   ├── register/
│   │   │   │   │   │   │   ├── register_aufs.go
│   │   │   │   │   │   │   ├── register_btrfs.go
│   │   │   │   │   │   │   ├── register_devicemapper.go
│   │   │   │   │   │   │   ├── register_overlay.go
│   │   │   │   │   │   │   ├── register_vfs.go
│   │   │   │   │   │   │   ├── register_windows.go
│   │   │   │   │   │   │   └── register_zfs.go
│   │   │   │   │   │   ├── vfs/
│   │   │   │   │   │   │   ├── driver.go
│   │   │   │   │   │   │   └── vfs_test.go
│   │   │   │   │   │   ├── windows/
│   │   │   │   │   │   │   ├── windows.go
│   │   │   │   │   │   │   └── windows_windows_test.go
│   │   │   │   │   │   └── zfs/
│   │   │   │   │   │       ├── MAINTAINERS
│   │   │   │   │   │       ├── zfs.go
│   │   │   │   │   │       ├── zfs_freebsd.go
│   │   │   │   │   │       ├── zfs_linux.go
│   │   │   │   │   │       ├── zfs_solaris.go
│   │   │   │   │   │       ├── zfs_test.go
│   │   │   │   │   │       └── zfs_unsupported.go
│   │   │   │   │   ├── health.go
│   │   │   │   │   ├── health_test.go
│   │   │   │   │   ├── image.go
│   │   │   │   │   ├── image_delete.go
│   │   │   │   │   ├── image_exporter.go
│   │   │   │   │   ├── image_history.go
│   │   │   │   │   ├── image_inspect.go
│   │   │   │   │   ├── image_pull.go
│   │   │   │   │   ├── image_push.go
│   │   │   │   │   ├── image_tag.go
│   │   │   │   │   ├── images.go
│   │   │   │   │   ├── import.go
│   │   │   │   │   ├── info.go
│   │   │   │   │   ├── inspect.go
│   │   │   │   │   ├── inspect_solaris.go
│   │   │   │   │   ├── inspect_unix.go
│   │   │   │   │   ├── inspect_windows.go
│   │   │   │   │   ├── keys.go
│   │   │   │   │   ├── keys_unsupported.go
│   │   │   │   │   ├── kill.go
│   │   │   │   │   ├── links/
│   │   │   │   │   │   ├── links.go
│   │   │   │   │   │   └── links_test.go
│   │   │   │   │   ├── links.go
│   │   │   │   │   ├── links_test.go
│   │   │   │   │   ├── list.go
│   │   │   │   │   ├── list_unix.go
│   │   │   │   │   ├── list_windows.go
│   │   │   │   │   ├── logdrivers_linux.go
│   │   │   │   │   ├── logdrivers_windows.go
│   │   │   │   │   ├── logger/
│   │   │   │   │   │   ├── awslogs/
│   │   │   │   │   │   │   ├── cloudwatchlogs.go
│   │   │   │   │   │   │   ├── cloudwatchlogs_test.go
│   │   │   │   │   │   │   └── cwlogsiface_mock_test.go
│   │   │   │   │   │   ├── context.go
│   │   │   │   │   │   ├── copier.go
│   │   │   │   │   │   ├── copier_test.go
│   │   │   │   │   │   ├── etwlogs/
│   │   │   │   │   │   │   └── etwlogs_windows.go
│   │   │   │   │   │   ├── factory.go
│   │   │   │   │   │   ├── fluentd/
│   │   │   │   │   │   │   └── fluentd.go
│   │   │   │   │   │   ├── gcplogs/
│   │   │   │   │   │   │   └── gcplogging.go
│   │   │   │   │   │   ├── gelf/
│   │   │   │   │   │   │   ├── gelf.go
│   │   │   │   │   │   │   └── gelf_unsupported.go
│   │   │   │   │   │   ├── journald/
│   │   │   │   │   │   │   ├── journald.go
│   │   │   │   │   │   │   ├── journald_test.go
│   │   │   │   │   │   │   ├── journald_unsupported.go
│   │   │   │   │   │   │   ├── read.go
│   │   │   │   │   │   │   ├── read_native.go
│   │   │   │   │   │   │   ├── read_native_compat.go
│   │   │   │   │   │   │   └── read_unsupported.go
│   │   │   │   │   │   ├── jsonfilelog/
│   │   │   │   │   │   │   ├── jsonfilelog.go
│   │   │   │   │   │   │   ├── jsonfilelog_test.go
│   │   │   │   │   │   │   └── read.go
│   │   │   │   │   │   ├── logger.go
│   │   │   │   │   │   ├── loggerutils/
│   │   │   │   │   │   │   ├── log_tag.go
│   │   │   │   │   │   │   ├── log_tag_test.go
│   │   │   │   │   │   │   └── rotatefilewriter.go
│   │   │   │   │   │   ├── splunk/
│   │   │   │   │   │   │   ├── splunk.go
│   │   │   │   │   │   │   ├── splunk_test.go
│   │   │   │   │   │   │   └── splunkhecmock_test.go
│   │   │   │   │   │   └── syslog/
│   │   │   │   │   │       ├── syslog.go
│   │   │   │   │   │       └── syslog_test.go
│   │   │   │   │   ├── logs.go
│   │   │   │   │   ├── logs_test.go
│   │   │   │   │   ├── monitor.go
│   │   │   │   │   ├── monitor_linux.go
│   │   │   │   │   ├── monitor_solaris.go
│   │   │   │   │   ├── monitor_windows.go
│   │   │   │   │   ├── mounts.go
│   │   │   │   │   ├── names.go
│   │   │   │   │   ├── network/
│   │   │   │   │   │   └── settings.go
│   │   │   │   │   ├── network.go
│   │   │   │   │   ├── oci_linux.go
│   │   │   │   │   ├── oci_solaris.go
│   │   │   │   │   ├── oci_windows.go
│   │   │   │   │   ├── pause.go
│   │   │   │   │   ├── rename.go
│   │   │   │   │   ├── resize.go
│   │   │   │   │   ├── restart.go
│   │   │   │   │   ├── search.go
│   │   │   │   │   ├── search_test.go
│   │   │   │   │   ├── seccomp_disabled.go
│   │   │   │   │   ├── seccomp_linux.go
│   │   │   │   │   ├── seccomp_unsupported.go
│   │   │   │   │   ├── selinux_linux.go
│   │   │   │   │   ├── selinux_unsupported.go
│   │   │   │   │   ├── start.go
│   │   │   │   │   ├── start_linux.go
│   │   │   │   │   ├── start_windows.go
│   │   │   │   │   ├── stats.go
│   │   │   │   │   ├── stats_collector.go
│   │   │   │   │   ├── stats_collector_solaris.go
│   │   │   │   │   ├── stats_collector_unix.go
│   │   │   │   │   ├── stats_collector_windows.go
│   │   │   │   │   ├── stats_unix.go
│   │   │   │   │   ├── stats_windows.go
│   │   │   │   │   ├── stop.go
│   │   │   │   │   ├── top_unix.go
│   │   │   │   │   ├── top_unix_test.go
│   │   │   │   │   ├── top_windows.go
│   │   │   │   │   ├── unpause.go
│   │   │   │   │   ├── update.go
│   │   │   │   │   ├── update_linux.go
│   │   │   │   │   ├── update_solaris.go
│   │   │   │   │   ├── update_windows.go
│   │   │   │   │   ├── volumes.go
│   │   │   │   │   ├── volumes_unit_test.go
│   │   │   │   │   ├── volumes_unix.go
│   │   │   │   │   ├── volumes_windows.go
│   │   │   │   │   └── wait.go
│   │   │   │   ├── distribution/
│   │   │   │   │   ├── errors.go
│   │   │   │   │   ├── fixtures/
│   │   │   │   │   │   └── validate_manifest/
│   │   │   │   │   │       ├── bad_manifest
│   │   │   │   │   │       ├── extra_data_manifest
│   │   │   │   │   │       └── good_manifest
│   │   │   │   │   ├── metadata/
│   │   │   │   │   │   ├── metadata.go
│   │   │   │   │   │   ├── v1_id_service.go
│   │   │   │   │   │   ├── v1_id_service_test.go
│   │   │   │   │   │   ├── v2_metadata_service.go
│   │   │   │   │   │   └── v2_metadata_service_test.go
│   │   │   │   │   ├── pull.go
│   │   │   │   │   ├── pull_v1.go
│   │   │   │   │   ├── pull_v2.go
│   │   │   │   │   ├── pull_v2_test.go
│   │   │   │   │   ├── pull_v2_unix.go
│   │   │   │   │   ├── pull_v2_windows.go
│   │   │   │   │   ├── push.go
│   │   │   │   │   ├── push_v1.go
│   │   │   │   │   ├── push_v2.go
│   │   │   │   │   ├── registry.go
│   │   │   │   │   ├── registry_unit_test.go
│   │   │   │   │   └── xfer/
│   │   │   │   │       ├── download.go
│   │   │   │   │       ├── download_test.go
│   │   │   │   │       ├── transfer.go
│   │   │   │   │       ├── transfer_test.go
│   │   │   │   │       ├── upload.go
│   │   │   │   │       └── upload_test.go
│   │   │   │   ├── dockerversion/
│   │   │   │   │   ├── useragent.go
│   │   │   │   │   └── version_lib.go
│   │   │   │   ├── docs/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── admin/
│   │   │   │   │   │   ├── ambassador_pattern_linking.md
│   │   │   │   │   │   ├── b2d_volume_resize.md
│   │   │   │   │   │   ├── chef.md
│   │   │   │   │   │   ├── dsc.md
│   │   │   │   │   │   ├── formatting.md
│   │   │   │   │   │   ├── host_integration.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── live-restore.md
│   │   │   │   │   │   ├── logging/
│   │   │   │   │   │   │   ├── awslogs.md
│   │   │   │   │   │   │   ├── etwlogs.md
│   │   │   │   │   │   │   ├── fluentd.md
│   │   │   │   │   │   │   ├── gcplogs.md
│   │   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   │   ├── journald.md
│   │   │   │   │   │   │   ├── log_tags.md
│   │   │   │   │   │   │   ├── overview.md
│   │   │   │   │   │   │   └── splunk.md
│   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   ├── puppet.md
│   │   │   │   │   │   ├── registry_mirror.md
│   │   │   │   │   │   ├── runmetrics.md
│   │   │   │   │   │   ├── systemd.md
│   │   │   │   │   │   └── using_supervisord.md
│   │   │   │   │   ├── breaking_changes.md
│   │   │   │   │   ├── deprecated.md
│   │   │   │   │   ├── examples/
│   │   │   │   │   │   ├── apt-cacher-ng.Dockerfile
│   │   │   │   │   │   ├── apt-cacher-ng.md
│   │   │   │   │   │   ├── couchbase.md
│   │   │   │   │   │   ├── couchdb_data_volumes.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── mongodb/
│   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   ├── mongodb.md
│   │   │   │   │   │   ├── postgresql_service.Dockerfile
│   │   │   │   │   │   ├── postgresql_service.md
│   │   │   │   │   │   ├── running_redis_service.md
│   │   │   │   │   │   ├── running_riak_service.Dockerfile
│   │   │   │   │   │   ├── running_riak_service.md
│   │   │   │   │   │   ├── running_ssh_service.Dockerfile
│   │   │   │   │   │   ├── running_ssh_service.md
│   │   │   │   │   │   └── supervisord.conf
│   │   │   │   │   ├── extend/
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── legacy_plugins.md
│   │   │   │   │   │   ├── manifest.md
│   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   ├── plugin_api.md
│   │   │   │   │   │   ├── plugins_authorization.md
│   │   │   │   │   │   ├── plugins_network.md
│   │   │   │   │   │   └── plugins_volume.md
│   │   │   │   │   ├── faq.md
│   │   │   │   │   ├── getstarted/
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── last_page.md
│   │   │   │   │   │   ├── linux_install_help.md
│   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   ├── step_five.md
│   │   │   │   │   │   ├── step_four.md
│   │   │   │   │   │   ├── step_one.md
│   │   │   │   │   │   ├── step_six.md
│   │   │   │   │   │   ├── step_three.md
│   │   │   │   │   │   └── step_two.md
│   │   │   │   │   ├── index.md
│   │   │   │   │   ├── installation/
│   │   │   │   │   │   ├── binaries.md
│   │   │   │   │   │   ├── cloud/
│   │   │   │   │   │   │   ├── cloud-ex-aws.md
│   │   │   │   │   │   │   ├── cloud-ex-machine-ocean.md
│   │   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   │   └── overview.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── linux/
│   │   │   │   │   │   │   ├── SUSE.md
│   │   │   │   │   │   │   ├── archlinux.md
│   │   │   │   │   │   │   ├── centos.md
│   │   │   │   │   │   │   ├── cruxlinux.md
│   │   │   │   │   │   │   ├── debian.md
│   │   │   │   │   │   │   ├── fedora.md
│   │   │   │   │   │   │   ├── gentoolinux.md
│   │   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   │   ├── oracle.md
│   │   │   │   │   │   │   ├── rhel.md
│   │   │   │   │   │   │   └── ubuntulinux.md
│   │   │   │   │   │   ├── mac.md
│   │   │   │   │   │   └── windows.md
│   │   │   │   │   ├── migration.md
│   │   │   │   │   ├── reference/
│   │   │   │   │   │   ├── api/
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── docker-io_api.md
│   │   │   │   │   │   │   ├── docker_io_accounts_api.md
│   │   │   │   │   │   │   ├── docker_remote_api.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.18.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.19.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.20.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.21.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.22.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.23.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.24.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.25.md
│   │   │   │   │   │   │   ├── hub_registry_spec.md
│   │   │   │   │   │   │   ├── images/
│   │   │   │   │   │   │   │   └── event_state.gliffy
│   │   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   │   └── remote_api_client_libraries.md
│   │   │   │   │   │   ├── builder.md
│   │   │   │   │   │   ├── commandline/
│   │   │   │   │   │   │   ├── attach.md
│   │   │   │   │   │   │   ├── build.md
│   │   │   │   │   │   │   ├── cli.md
│   │   │   │   │   │   │   ├── commit.md
│   │   │   │   │   │   │   ├── cp.md
│   │   │   │   │   │   │   ├── create.md
│   │   │   │   │   │   │   ├── deploy.md
│   │   │   │   │   │   │   ├── diff.md
│   │   │   │   │   │   │   ├── dockerd.md
│   │   │   │   │   │   │   ├── events.md
│   │   │   │   │   │   │   ├── exec.md
│   │   │   │   │   │   │   ├── export.md
│   │   │   │   │   │   │   ├── history.md
│   │   │   │   │   │   │   ├── images.md
│   │   │   │   │   │   │   ├── import.md
│   │   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   │   ├── info.md
│   │   │   │   │   │   │   ├── inspect.md
│   │   │   │   │   │   │   ├── kill.md
│   │   │   │   │   │   │   ├── load.md
│   │   │   │   │   │   │   ├── login.md
│   │   │   │   │   │   │   ├── logout.md
│   │   │   │   │   │   │   ├── logs.md
│   │   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   │   ├── network_connect.md
│   │   │   │   │   │   │   ├── network_create.md
│   │   │   │   │   │   │   ├── network_disconnect.md
│   │   │   │   │   │   │   ├── network_inspect.md
│   │   │   │   │   │   │   ├── network_ls.md
│   │   │   │   │   │   │   ├── network_rm.md
│   │   │   │   │   │   │   ├── node_demote.md
│   │   │   │   │   │   │   ├── node_inspect.md
│   │   │   │   │   │   │   ├── node_ls.md
│   │   │   │   │   │   │   ├── node_promote.md
│   │   │   │   │   │   │   ├── node_ps.md
│   │   │   │   │   │   │   ├── node_rm.md
│   │   │   │   │   │   │   ├── node_update.md
│   │   │   │   │   │   │   ├── pause.md
│   │   │   │   │   │   │   ├── plugin_disable.md
│   │   │   │   │   │   │   ├── plugin_enable.md
│   │   │   │   │   │   │   ├── plugin_inspect.md
│   │   │   │   │   │   │   ├── plugin_install.md
│   │   │   │   │   │   │   ├── plugin_ls.md
│   │   │   │   │   │   │   ├── plugin_rm.md
│   │   │   │   │   │   │   ├── port.md
│   │   │   │   │   │   │   ├── ps.md
│   │   │   │   │   │   │   ├── pull.md
│   │   │   │   │   │   │   ├── push.md
│   │   │   │   │   │   │   ├── rename.md
│   │   │   │   │   │   │   ├── restart.md
│   │   │   │   │   │   │   ├── rm.md
│   │   │   │   │   │   │   ├── rmi.md
│   │   │   │   │   │   │   ├── run.md
│   │   │   │   │   │   │   ├── save.md
│   │   │   │   │   │   │   ├── search.md
│   │   │   │   │   │   │   ├── service_create.md
│   │   │   │   │   │   │   ├── service_inspect.md
│   │   │   │   │   │   │   ├── service_ls.md
│   │   │   │   │   │   │   ├── service_ps.md
│   │   │   │   │   │   │   ├── service_rm.md
│   │   │   │   │   │   │   ├── service_scale.md
│   │   │   │   │   │   │   ├── service_update.md
│   │   │   │   │   │   │   ├── stack_config.md
│   │   │   │   │   │   │   ├── stack_deploy.md
│   │   │   │   │   │   │   ├── stack_rm.md
│   │   │   │   │   │   │   ├── stack_services.md
│   │   │   │   │   │   │   ├── stack_tasks.md
│   │   │   │   │   │   │   ├── start.md
│   │   │   │   │   │   │   ├── stats.md
│   │   │   │   │   │   │   ├── stop.md
│   │   │   │   │   │   │   ├── swarm_init.md
│   │   │   │   │   │   │   ├── swarm_join.md
│   │   │   │   │   │   │   ├── swarm_join_token.md
│   │   │   │   │   │   │   ├── swarm_leave.md
│   │   │   │   │   │   │   ├── swarm_update.md
│   │   │   │   │   │   │   ├── tag.md
│   │   │   │   │   │   │   ├── top.md
│   │   │   │   │   │   │   ├── unpause.md
│   │   │   │   │   │   │   ├── update.md
│   │   │   │   │   │   │   ├── version.md
│   │   │   │   │   │   │   ├── volume_create.md
│   │   │   │   │   │   │   ├── volume_inspect.md
│   │   │   │   │   │   │   ├── volume_ls.md
│   │   │   │   │   │   │   ├── volume_rm.md
│   │   │   │   │   │   │   └── wait.md
│   │   │   │   │   │   ├── glossary.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   └── run.md
│   │   │   │   │   ├── security/
│   │   │   │   │   │   ├── apparmor.md
│   │   │   │   │   │   ├── certificates.md
│   │   │   │   │   │   ├── https/
│   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   ├── Makefile
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── make_certs.sh
│   │   │   │   │   │   │   └── parsedocs.sh
│   │   │   │   │   │   ├── https.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── non-events.md
│   │   │   │   │   │   ├── seccomp.md
│   │   │   │   │   │   ├── security.md
│   │   │   │   │   │   └── trust/
│   │   │   │   │   │       ├── content_trust.md
│   │   │   │   │   │       ├── deploying_notary.md
│   │   │   │   │   │       ├── images/
│   │   │   │   │   │       │   ├── trust_.gliffy
│   │   │   │   │   │       │   ├── trust_components.gliffy
│   │   │   │   │   │       │   ├── trust_signing.gliffy
│   │   │   │   │   │       │   └── trust_view.gliffy
│   │   │   │   │   │       ├── index.md
│   │   │   │   │   │       ├── trust_automation.md
│   │   │   │   │   │       ├── trust_delegation.md
│   │   │   │   │   │       ├── trust_key_mng.md
│   │   │   │   │   │       └── trust_sandbox.md
│   │   │   │   │   ├── static_files/
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── swarm/
│   │   │   │   │   │   ├── admin_guide.md
│   │   │   │   │   │   ├── how-swarm-mode-works/
│   │   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   │   ├── nodes.md
│   │   │   │   │   │   │   ├── pki.md
│   │   │   │   │   │   │   └── services.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── ingress.md
│   │   │   │   │   │   ├── join-nodes.md
│   │   │   │   │   │   ├── key-concepts.md
│   │   │   │   │   │   ├── manage-nodes.md
│   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   ├── networking.md
│   │   │   │   │   │   ├── raft.md
│   │   │   │   │   │   ├── services.md
│   │   │   │   │   │   ├── swarm-mode.md
│   │   │   │   │   │   └── swarm-tutorial/
│   │   │   │   │   │       ├── add-nodes.md
│   │   │   │   │   │       ├── create-swarm.md
│   │   │   │   │   │       ├── delete-service.md
│   │   │   │   │   │       ├── deploy-service.md
│   │   │   │   │   │       ├── drain-node.md
│   │   │   │   │   │       ├── index.md
│   │   │   │   │   │       ├── inspect-service.md
│   │   │   │   │   │       ├── menu.md
│   │   │   │   │   │       ├── rolling-update.md
│   │   │   │   │   │       └── scale-service.md
│   │   │   │   │   ├── touch-up.sh
│   │   │   │   │   ├── tutorials/
│   │   │   │   │   │   ├── dockerimages.md
│   │   │   │   │   │   ├── dockerizing.md
│   │   │   │   │   │   ├── dockerrepos.md
│   │   │   │   │   │   ├── dockervolumes.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   ├── networkingcontainers.md
│   │   │   │   │   │   └── usingdocker.md
│   │   │   │   │   ├── understanding-docker.md
│   │   │   │   │   └── userguide/
│   │   │   │   │       ├── eng-image/
│   │   │   │   │       │   ├── baseimages.md
│   │   │   │   │       │   ├── dockerfile_best-practices.md
│   │   │   │   │       │   ├── image_management.md
│   │   │   │   │       │   └── index.md
│   │   │   │   │       ├── index.md
│   │   │   │   │       ├── intro.md
│   │   │   │   │       ├── labels-custom-metadata.md
│   │   │   │   │       ├── networking/
│   │   │   │   │       │   ├── configure-dns.md
│   │   │   │   │       │   ├── default_network/
│   │   │   │   │       │   │   ├── binding.md
│   │   │   │   │       │   │   ├── build-bridges.md
│   │   │   │   │       │   │   ├── configure-dns.md
│   │   │   │   │       │   │   ├── container-communication.md
│   │   │   │   │       │   │   ├── custom-docker0.md
│   │   │   │   │       │   │   ├── dockerlinks.md
│   │   │   │   │       │   │   ├── images/
│   │   │   │   │       │   │   │   ├── ipv6_basic_host_config.gliffy
│   │   │   │   │       │   │   │   ├── ipv6_ndp_proxying.gliffy
│   │   │   │   │       │   │   │   ├── ipv6_routed_network_example.gliffy
│   │   │   │   │       │   │   │   ├── ipv6_slash64_subnet_config.gliffy
│   │   │   │   │       │   │   │   └── ipv6_switched_network_example.gliffy
│   │   │   │   │       │   │   ├── index.md
│   │   │   │   │       │   │   └── ipv6.md
│   │   │   │   │       │   ├── get-started-overlay.md
│   │   │   │   │       │   ├── images/
│   │   │   │   │       │   │   ├── bridge_network.gliffy
│   │   │   │   │       │   │   ├── engine_on_net.gliffy
│   │   │   │   │       │   │   ├── key_value.gliffy
│   │   │   │   │       │   │   ├── network_access.gliffy
│   │   │   │   │       │   │   ├── overlay-network-final.gliffy
│   │   │   │   │       │   │   ├── overlay_network.gliffy
│   │   │   │   │       │   │   └── working.gliffy
│   │   │   │   │       │   ├── index.md
│   │   │   │   │       │   ├── menu.md
│   │   │   │   │       │   ├── overlay-security-model.md
│   │   │   │   │       │   └── work-with-networks.md
│   │   │   │   │       └── storagedriver/
│   │   │   │   │           ├── aufs-driver.md
│   │   │   │   │           ├── btrfs-driver.md
│   │   │   │   │           ├── device-mapper-driver.md
│   │   │   │   │           ├── imagesandcontainers.md
│   │   │   │   │           ├── index.md
│   │   │   │   │           ├── overlayfs-driver.md
│   │   │   │   │           ├── selectadriver.md
│   │   │   │   │           └── zfs-driver.md
│   │   │   │   ├── experimental/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── checkpoint-restore.md
│   │   │   │   │   ├── docker-stacks-and-bundles.md
│   │   │   │   │   ├── images/
│   │   │   │   │   │   ├── ipvlan-l3.gliffy
│   │   │   │   │   │   ├── ipvlan_l2_simple.gliffy
│   │   │   │   │   │   ├── macvlan-bridge-ipvlan-l2.gliffy
│   │   │   │   │   │   ├── macvlan_bridge_simple.gliffy
│   │   │   │   │   │   ├── multi_tenant_8021q_vlans.gliffy
│   │   │   │   │   │   └── vlans-deeper-look.gliffy
│   │   │   │   │   ├── plugins_graphdriver.md
│   │   │   │   │   └── vlan-networks.md
│   │   │   │   ├── hack/
│   │   │   │   │   ├── .vendor-helpers.sh
│   │   │   │   │   ├── Jenkins/
│   │   │   │   │   │   ├── W2L/
│   │   │   │   │   │   │   ├── postbuild.sh
│   │   │   │   │   │   │   └── setup.sh
│   │   │   │   │   │   └── readme.md
│   │   │   │   │   ├── dind
│   │   │   │   │   ├── generate-authors.sh
│   │   │   │   │   ├── install.sh
│   │   │   │   │   ├── make/
│   │   │   │   │   │   ├── .binary
│   │   │   │   │   │   ├── .binary-setup
│   │   │   │   │   │   ├── .build-deb/
│   │   │   │   │   │   │   ├── compat
│   │   │   │   │   │   │   ├── control
│   │   │   │   │   │   │   ├── docker-engine.bash-completion
│   │   │   │   │   │   │   ├── docker-engine.install
│   │   │   │   │   │   │   ├── docker-engine.manpages
│   │   │   │   │   │   │   ├── docker-engine.postinst
│   │   │   │   │   │   │   ├── docs
│   │   │   │   │   │   │   └── rules
│   │   │   │   │   │   ├── .build-rpm/
│   │   │   │   │   │   │   ├── docker-engine-selinux.spec
│   │   │   │   │   │   │   └── docker-engine.spec
│   │   │   │   │   │   ├── .detect-daemon-osarch
│   │   │   │   │   │   ├── .ensure-emptyfs
│   │   │   │   │   │   ├── .go-autogen
│   │   │   │   │   │   ├── .integration-daemon-setup
│   │   │   │   │   │   ├── .integration-daemon-start
│   │   │   │   │   │   ├── .integration-daemon-stop
│   │   │   │   │   │   ├── .integration-test-helpers
│   │   │   │   │   │   ├── .resources-windows/
│   │   │   │   │   │   │   ├── common.rc
│   │   │   │   │   │   │   ├── docker.exe.manifest
│   │   │   │   │   │   │   ├── docker.rc
│   │   │   │   │   │   │   ├── dockerd.rc
│   │   │   │   │   │   │   ├── event_messages.mc
│   │   │   │   │   │   │   └── resources.go
│   │   │   │   │   │   ├── .validate
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── binary
│   │   │   │   │   │   ├── binary-client
│   │   │   │   │   │   ├── binary-daemon
│   │   │   │   │   │   ├── build-deb
│   │   │   │   │   │   ├── build-integration-test-binary
│   │   │   │   │   │   ├── build-rpm
│   │   │   │   │   │   ├── clean-apt-repo
│   │   │   │   │   │   ├── clean-yum-repo
│   │   │   │   │   │   ├── cover
│   │   │   │   │   │   ├── cross
│   │   │   │   │   │   ├── dynbinary
│   │   │   │   │   │   ├── dynbinary-client
│   │   │   │   │   │   ├── dynbinary-daemon
│   │   │   │   │   │   ├── generate-index-listing
│   │   │   │   │   │   ├── install-binary
│   │   │   │   │   │   ├── install-binary-client
│   │   │   │   │   │   ├── install-binary-daemon
│   │   │   │   │   │   ├── install-script
│   │   │   │   │   │   ├── release-deb
│   │   │   │   │   │   ├── release-rpm
│   │   │   │   │   │   ├── run
│   │   │   │   │   │   ├── sign-repos
│   │   │   │   │   │   ├── test-deb-install
│   │   │   │   │   │   ├── test-docker-py
│   │   │   │   │   │   ├── test-install-script
│   │   │   │   │   │   ├── test-integration-cli
│   │   │   │   │   │   ├── test-integration-shell
│   │   │   │   │   │   ├── test-old-apt-repo
│   │   │   │   │   │   ├── test-unit
│   │   │   │   │   │   ├── tgz
│   │   │   │   │   │   ├── ubuntu
│   │   │   │   │   │   ├── update-apt-repo
│   │   │   │   │   │   ├── validate-dco
│   │   │   │   │   │   ├── validate-default-seccomp
│   │   │   │   │   │   ├── validate-gofmt
│   │   │   │   │   │   ├── validate-lint
│   │   │   │   │   │   ├── validate-pkg
│   │   │   │   │   │   ├── validate-test
│   │   │   │   │   │   ├── validate-toml
│   │   │   │   │   │   ├── validate-vendor
│   │   │   │   │   │   ├── validate-vet
│   │   │   │   │   │   └── win
│   │   │   │   │   ├── make.sh
│   │   │   │   │   ├── release.sh
│   │   │   │   │   └── vendor.sh
│   │   │   │   ├── image/
│   │   │   │   │   ├── fs.go
│   │   │   │   │   ├── fs_test.go
│   │   │   │   │   ├── image.go
│   │   │   │   │   ├── image_test.go
│   │   │   │   │   ├── rootfs.go
│   │   │   │   │   ├── spec/
│   │   │   │   │   │   ├── v1.1.md
│   │   │   │   │   │   ├── v1.2.md
│   │   │   │   │   │   └── v1.md
│   │   │   │   │   ├── store.go
│   │   │   │   │   ├── store_test.go
│   │   │   │   │   ├── tarexport/
│   │   │   │   │   │   ├── load.go
│   │   │   │   │   │   ├── save.go
│   │   │   │   │   │   └── tarexport.go
│   │   │   │   │   └── v1/
│   │   │   │   │       ├── imagev1.go
│   │   │   │   │       └── imagev1_test.go
│   │   │   │   ├── integration-cli/
│   │   │   │   │   ├── benchmark_test.go
│   │   │   │   │   ├── check_test.go
│   │   │   │   │   ├── daemon.go
│   │   │   │   │   ├── daemon_swarm.go
│   │   │   │   │   ├── daemon_swarm_hack.go
│   │   │   │   │   ├── daemon_unix.go
│   │   │   │   │   ├── daemon_windows.go
│   │   │   │   │   ├── docker_api_attach_test.go
│   │   │   │   │   ├── docker_api_auth_test.go
│   │   │   │   │   ├── docker_api_build_test.go
│   │   │   │   │   ├── docker_api_containers_test.go
│   │   │   │   │   ├── docker_api_create_test.go
│   │   │   │   │   ├── docker_api_events_test.go
│   │   │   │   │   ├── docker_api_exec_resize_test.go
│   │   │   │   │   ├── docker_api_exec_test.go
│   │   │   │   │   ├── docker_api_images_test.go
│   │   │   │   │   ├── docker_api_info_test.go
│   │   │   │   │   ├── docker_api_inspect_test.go
│   │   │   │   │   ├── docker_api_inspect_unix_test.go
│   │   │   │   │   ├── docker_api_logs_test.go
│   │   │   │   │   ├── docker_api_network_test.go
│   │   │   │   │   ├── docker_api_resize_test.go
│   │   │   │   │   ├── docker_api_service_update_test.go
│   │   │   │   │   ├── docker_api_stats_test.go
│   │   │   │   │   ├── docker_api_stats_unix_test.go
│   │   │   │   │   ├── docker_api_swarm_test.go
│   │   │   │   │   ├── docker_api_test.go
│   │   │   │   │   ├── docker_api_update_unix_test.go
│   │   │   │   │   ├── docker_api_version_test.go
│   │   │   │   │   ├── docker_api_volumes_test.go
│   │   │   │   │   ├── docker_cli_attach_test.go
│   │   │   │   │   ├── docker_cli_attach_unix_test.go
│   │   │   │   │   ├── docker_cli_authz_unix_test.go
│   │   │   │   │   ├── docker_cli_build_test.go
│   │   │   │   │   ├── docker_cli_build_unix_test.go
│   │   │   │   │   ├── docker_cli_by_digest_test.go
│   │   │   │   │   ├── docker_cli_commit_test.go
│   │   │   │   │   ├── docker_cli_config_test.go
│   │   │   │   │   ├── docker_cli_cp_from_container_test.go
│   │   │   │   │   ├── docker_cli_cp_test.go
│   │   │   │   │   ├── docker_cli_cp_to_container_test.go
│   │   │   │   │   ├── docker_cli_cp_to_container_unix_test.go
│   │   │   │   │   ├── docker_cli_cp_utils.go
│   │   │   │   │   ├── docker_cli_create_test.go
│   │   │   │   │   ├── docker_cli_daemon_experimental_test.go
│   │   │   │   │   ├── docker_cli_daemon_test.go
│   │   │   │   │   ├── docker_cli_diff_test.go
│   │   │   │   │   ├── docker_cli_events_test.go
│   │   │   │   │   ├── docker_cli_events_unix_test.go
│   │   │   │   │   ├── docker_cli_exec_test.go
│   │   │   │   │   ├── docker_cli_exec_unix_test.go
│   │   │   │   │   ├── docker_cli_experimental_test.go
│   │   │   │   │   ├── docker_cli_export_import_test.go
│   │   │   │   │   ├── docker_cli_external_graphdriver_unix_test.go
│   │   │   │   │   ├── docker_cli_external_volume_driver_unix_test.go
│   │   │   │   │   ├── docker_cli_health_test.go
│   │   │   │   │   ├── docker_cli_help_test.go
│   │   │   │   │   ├── docker_cli_history_test.go
│   │   │   │   │   ├── docker_cli_images_test.go
│   │   │   │   │   ├── docker_cli_import_test.go
│   │   │   │   │   ├── docker_cli_info_test.go
│   │   │   │   │   ├── docker_cli_info_unix_test.go
│   │   │   │   │   ├── docker_cli_inspect_test.go
│   │   │   │   │   ├── docker_cli_kill_test.go
│   │   │   │   │   ├── docker_cli_links_test.go
│   │   │   │   │   ├── docker_cli_links_unix_test.go
│   │   │   │   │   ├── docker_cli_login_test.go
│   │   │   │   │   ├── docker_cli_logout_test.go
│   │   │   │   │   ├── docker_cli_logs_bench_test.go
│   │   │   │   │   ├── docker_cli_logs_test.go
│   │   │   │   │   ├── docker_cli_nat_test.go
│   │   │   │   │   ├── docker_cli_netmode_test.go
│   │   │   │   │   ├── docker_cli_network_unix_test.go
│   │   │   │   │   ├── docker_cli_oom_killed_test.go
│   │   │   │   │   ├── docker_cli_pause_test.go
│   │   │   │   │   ├── docker_cli_plugins_test.go
│   │   │   │   │   ├── docker_cli_port_test.go
│   │   │   │   │   ├── docker_cli_proxy_test.go
│   │   │   │   │   ├── docker_cli_ps_test.go
│   │   │   │   │   ├── docker_cli_pull_local_test.go
│   │   │   │   │   ├── docker_cli_pull_test.go
│   │   │   │   │   ├── docker_cli_pull_trusted_test.go
│   │   │   │   │   ├── docker_cli_push_test.go
│   │   │   │   │   ├── docker_cli_registry_user_agent_test.go
│   │   │   │   │   ├── docker_cli_rename_test.go
│   │   │   │   │   ├── docker_cli_restart_test.go
│   │   │   │   │   ├── docker_cli_rm_test.go
│   │   │   │   │   ├── docker_cli_rmi_test.go
│   │   │   │   │   ├── docker_cli_run_test.go
│   │   │   │   │   ├── docker_cli_run_unix_test.go
│   │   │   │   │   ├── docker_cli_save_load_test.go
│   │   │   │   │   ├── docker_cli_save_load_unix_test.go
│   │   │   │   │   ├── docker_cli_search_test.go
│   │   │   │   │   ├── docker_cli_service_create_test.go
│   │   │   │   │   ├── docker_cli_service_health_test.go
│   │   │   │   │   ├── docker_cli_service_update_test.go
│   │   │   │   │   ├── docker_cli_sni_test.go
│   │   │   │   │   ├── docker_cli_stack_test.go
│   │   │   │   │   ├── docker_cli_start_test.go
│   │   │   │   │   ├── docker_cli_stats_test.go
│   │   │   │   │   ├── docker_cli_stop_test.go
│   │   │   │   │   ├── docker_cli_swarm_test.go
│   │   │   │   │   ├── docker_cli_tag_test.go
│   │   │   │   │   ├── docker_cli_top_test.go
│   │   │   │   │   ├── docker_cli_update_test.go
│   │   │   │   │   ├── docker_cli_update_unix_test.go
│   │   │   │   │   ├── docker_cli_userns_test.go
│   │   │   │   │   ├── docker_cli_v2_only_test.go
│   │   │   │   │   ├── docker_cli_version_test.go
│   │   │   │   │   ├── docker_cli_volume_test.go
│   │   │   │   │   ├── docker_cli_wait_test.go
│   │   │   │   │   ├── docker_deprecated_api_v124_test.go
│   │   │   │   │   ├── docker_deprecated_api_v124_unix_test.go
│   │   │   │   │   ├── docker_experimental_network_test.go
│   │   │   │   │   ├── docker_hub_pull_suite_test.go
│   │   │   │   │   ├── docker_test_vars.go
│   │   │   │   │   ├── docker_utils.go
│   │   │   │   │   ├── events_utils.go
│   │   │   │   │   ├── fixtures/
│   │   │   │   │   │   ├── auth/
│   │   │   │   │   │   │   └── docker-credential-shell-test
│   │   │   │   │   │   ├── https/
│   │   │   │   │   │   │   ├── ca.pem
│   │   │   │   │   │   │   ├── client-cert.pem
│   │   │   │   │   │   │   ├── client-key.pem
│   │   │   │   │   │   │   ├── client-rogue-cert.pem
│   │   │   │   │   │   │   ├── client-rogue-key.pem
│   │   │   │   │   │   │   ├── server-cert.pem
│   │   │   │   │   │   │   ├── server-key.pem
│   │   │   │   │   │   │   ├── server-rogue-cert.pem
│   │   │   │   │   │   │   └── server-rogue-key.pem
│   │   │   │   │   │   ├── load/
│   │   │   │   │   │   │   └── frozen.go
│   │   │   │   │   │   ├── notary/
│   │   │   │   │   │   │   ├── delgkey1.crt
│   │   │   │   │   │   │   ├── delgkey1.key
│   │   │   │   │   │   │   ├── delgkey2.crt
│   │   │   │   │   │   │   ├── delgkey2.key
│   │   │   │   │   │   │   ├── delgkey3.crt
│   │   │   │   │   │   │   ├── delgkey3.key
│   │   │   │   │   │   │   ├── delgkey4.crt
│   │   │   │   │   │   │   ├── delgkey4.key
│   │   │   │   │   │   │   ├── localhost.cert
│   │   │   │   │   │   │   └── localhost.key
│   │   │   │   │   │   └── registry/
│   │   │   │   │   │       └── cert.pem
│   │   │   │   │   ├── fixtures.go
│   │   │   │   │   ├── fixtures_linux_daemon.go
│   │   │   │   │   ├── npipe.go
│   │   │   │   │   ├── npipe_windows.go
│   │   │   │   │   ├── registry.go
│   │   │   │   │   ├── registry_mock.go
│   │   │   │   │   ├── requirements.go
│   │   │   │   │   ├── requirements_unix.go
│   │   │   │   │   ├── test_vars.go
│   │   │   │   │   ├── test_vars_exec.go
│   │   │   │   │   ├── test_vars_noexec.go
│   │   │   │   │   ├── test_vars_noseccomp.go
│   │   │   │   │   ├── test_vars_seccomp.go
│   │   │   │   │   ├── test_vars_unix.go
│   │   │   │   │   ├── test_vars_windows.go
│   │   │   │   │   ├── trust_server.go
│   │   │   │   │   └── utils.go
│   │   │   │   ├── layer/
│   │   │   │   │   ├── empty.go
│   │   │   │   │   ├── empty_test.go
│   │   │   │   │   ├── filestore.go
│   │   │   │   │   ├── filestore_test.go
│   │   │   │   │   ├── layer.go
│   │   │   │   │   ├── layer_store.go
│   │   │   │   │   ├── layer_store_windows.go
│   │   │   │   │   ├── layer_test.go
│   │   │   │   │   ├── layer_unix.go
│   │   │   │   │   ├── layer_unix_test.go
│   │   │   │   │   ├── layer_windows.go
│   │   │   │   │   ├── migration.go
│   │   │   │   │   ├── migration_test.go
│   │   │   │   │   ├── mount_test.go
│   │   │   │   │   ├── mounted_layer.go
│   │   │   │   │   ├── ro_layer.go
│   │   │   │   │   └── ro_layer_windows.go
│   │   │   │   ├── libcontainerd/
│   │   │   │   │   ├── client.go
│   │   │   │   │   ├── client_linux.go
│   │   │   │   │   ├── client_solaris.go
│   │   │   │   │   ├── client_windows.go
│   │   │   │   │   ├── container.go
│   │   │   │   │   ├── container_linux.go
│   │   │   │   │   ├── container_solaris.go
│   │   │   │   │   ├── container_windows.go
│   │   │   │   │   ├── pausemonitor_linux.go
│   │   │   │   │   ├── process.go
│   │   │   │   │   ├── process_linux.go
│   │   │   │   │   ├── process_solaris.go
│   │   │   │   │   ├── process_windows.go
│   │   │   │   │   ├── queue_linux.go
│   │   │   │   │   ├── remote.go
│   │   │   │   │   ├── remote_linux.go
│   │   │   │   │   ├── remote_solaris.go
│   │   │   │   │   ├── remote_windows.go
│   │   │   │   │   ├── types.go
│   │   │   │   │   ├── types_linux.go
│   │   │   │   │   ├── types_solaris.go
│   │   │   │   │   ├── types_windows.go
│   │   │   │   │   ├── utils_linux.go
│   │   │   │   │   ├── utils_windows.go
│   │   │   │   │   ├── utils_windows_test.go
│   │   │   │   │   └── windowsoci/
│   │   │   │   │       ├── oci_windows.go
│   │   │   │   │       └── unsupported.go
│   │   │   │   ├── man/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Dockerfile.5.md
│   │   │   │   │   ├── Dockerfile.aarch64
│   │   │   │   │   ├── Dockerfile.armhf
│   │   │   │   │   ├── Dockerfile.ppc64le
│   │   │   │   │   ├── Dockerfile.s390x
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── docker-attach.1.md
│   │   │   │   │   ├── docker-build.1.md
│   │   │   │   │   ├── docker-commit.1.md
│   │   │   │   │   ├── docker-config-json.5.md
│   │   │   │   │   ├── docker-cp.1.md
│   │   │   │   │   ├── docker-create.1.md
│   │   │   │   │   ├── docker-diff.1.md
│   │   │   │   │   ├── docker-events.1.md
│   │   │   │   │   ├── docker-exec.1.md
│   │   │   │   │   ├── docker-export.1.md
│   │   │   │   │   ├── docker-history.1.md
│   │   │   │   │   ├── docker-images.1.md
│   │   │   │   │   ├── docker-import.1.md
│   │   │   │   │   ├── docker-info.1.md
│   │   │   │   │   ├── docker-inspect.1.md
│   │   │   │   │   ├── docker-kill.1.md
│   │   │   │   │   ├── docker-load.1.md
│   │   │   │   │   ├── docker-login.1.md
│   │   │   │   │   ├── docker-logout.1.md
│   │   │   │   │   ├── docker-logs.1.md
│   │   │   │   │   ├── docker-network-connect.1.md
│   │   │   │   │   ├── docker-network-create.1.md
│   │   │   │   │   ├── docker-network-disconnect.1.md
│   │   │   │   │   ├── docker-network-inspect.1.md
│   │   │   │   │   ├── docker-network-ls.1.md
│   │   │   │   │   ├── docker-network-rm.1.md
│   │   │   │   │   ├── docker-pause.1.md
│   │   │   │   │   ├── docker-port.1.md
│   │   │   │   │   ├── docker-ps.1.md
│   │   │   │   │   ├── docker-pull.1.md
│   │   │   │   │   ├── docker-push.1.md
│   │   │   │   │   ├── docker-rename.1.md
│   │   │   │   │   ├── docker-restart.1.md
│   │   │   │   │   ├── docker-rm.1.md
│   │   │   │   │   ├── docker-rmi.1.md
│   │   │   │   │   ├── docker-run.1.md
│   │   │   │   │   ├── docker-save.1.md
│   │   │   │   │   ├── docker-search.1.md
│   │   │   │   │   ├── docker-start.1.md
│   │   │   │   │   ├── docker-stats.1.md
│   │   │   │   │   ├── docker-stop.1.md
│   │   │   │   │   ├── docker-tag.1.md
│   │   │   │   │   ├── docker-top.1.md
│   │   │   │   │   ├── docker-unpause.1.md
│   │   │   │   │   ├── docker-update.1.md
│   │   │   │   │   ├── docker-version.1.md
│   │   │   │   │   ├── docker-wait.1.md
│   │   │   │   │   ├── docker.1.md
│   │   │   │   │   ├── dockerd.8.md
│   │   │   │   │   ├── generate.go
│   │   │   │   │   ├── generate.sh
│   │   │   │   │   ├── glide.yaml
│   │   │   │   │   └── md2man-all.sh
│   │   │   │   ├── migrate/
│   │   │   │   │   └── v1/
│   │   │   │   │       ├── migratev1.go
│   │   │   │   │       └── migratev1_test.go
│   │   │   │   ├── oci/
│   │   │   │   │   ├── defaults_linux.go
│   │   │   │   │   ├── defaults_solaris.go
│   │   │   │   │   └── defaults_windows.go
│   │   │   │   ├── opts/
│   │   │   │   │   ├── hosts.go
│   │   │   │   │   ├── hosts_test.go
│   │   │   │   │   ├── hosts_unix.go
│   │   │   │   │   ├── hosts_windows.go
│   │   │   │   │   ├── ip.go
│   │   │   │   │   ├── ip_test.go
│   │   │   │   │   ├── opts.go
│   │   │   │   │   ├── opts_test.go
│   │   │   │   │   ├── opts_unix.go
│   │   │   │   │   └── opts_windows.go
│   │   │   │   ├── pkg/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── aaparser/
│   │   │   │   │   │   ├── aaparser.go
│   │   │   │   │   │   └── aaparser_test.go
│   │   │   │   │   ├── archive/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── archive.go
│   │   │   │   │   │   ├── archive_linux.go
│   │   │   │   │   │   ├── archive_other.go
│   │   │   │   │   │   ├── archive_test.go
│   │   │   │   │   │   ├── archive_unix.go
│   │   │   │   │   │   ├── archive_unix_test.go
│   │   │   │   │   │   ├── archive_windows.go
│   │   │   │   │   │   ├── archive_windows_test.go
│   │   │   │   │   │   ├── changes.go
│   │   │   │   │   │   ├── changes_linux.go
│   │   │   │   │   │   ├── changes_other.go
│   │   │   │   │   │   ├── changes_posix_test.go
│   │   │   │   │   │   ├── changes_test.go
│   │   │   │   │   │   ├── changes_unix.go
│   │   │   │   │   │   ├── changes_windows.go
│   │   │   │   │   │   ├── copy.go
│   │   │   │   │   │   ├── copy_unix.go
│   │   │   │   │   │   ├── copy_unix_test.go
│   │   │   │   │   │   ├── copy_windows.go
│   │   │   │   │   │   ├── diff.go
│   │   │   │   │   │   ├── diff_test.go
│   │   │   │   │   │   ├── example_changes.go
│   │   │   │   │   │   ├── time_linux.go
│   │   │   │   │   │   ├── time_unsupported.go
│   │   │   │   │   │   ├── utils_test.go
│   │   │   │   │   │   ├── whiteouts.go
│   │   │   │   │   │   ├── wrap.go
│   │   │   │   │   │   └── wrap_test.go
│   │   │   │   │   ├── authorization/
│   │   │   │   │   │   ├── api.go
│   │   │   │   │   │   ├── authz.go
│   │   │   │   │   │   ├── authz_unix_test.go
│   │   │   │   │   │   ├── middleware.go
│   │   │   │   │   │   ├── plugin.go
│   │   │   │   │   │   └── response.go
│   │   │   │   │   ├── broadcaster/
│   │   │   │   │   │   ├── unbuffered.go
│   │   │   │   │   │   └── unbuffered_test.go
│   │   │   │   │   ├── chrootarchive/
│   │   │   │   │   │   ├── archive.go
│   │   │   │   │   │   ├── archive_test.go
│   │   │   │   │   │   ├── archive_unix.go
│   │   │   │   │   │   ├── archive_windows.go
│   │   │   │   │   │   ├── chroot_linux.go
│   │   │   │   │   │   ├── chroot_unix.go
│   │   │   │   │   │   ├── diff.go
│   │   │   │   │   │   ├── diff_unix.go
│   │   │   │   │   │   ├── diff_windows.go
│   │   │   │   │   │   ├── init_unix.go
│   │   │   │   │   │   └── init_windows.go
│   │   │   │   │   ├── devicemapper/
│   │   │   │   │   │   ├── devmapper.go
│   │   │   │   │   │   ├── devmapper_log.go
│   │   │   │   │   │   ├── devmapper_wrapper.go
│   │   │   │   │   │   ├── devmapper_wrapper_deferred_remove.go
│   │   │   │   │   │   ├── devmapper_wrapper_no_deferred_remove.go
│   │   │   │   │   │   ├── ioctl.go
│   │   │   │   │   │   └── log.go
│   │   │   │   │   ├── directory/
│   │   │   │   │   │   ├── directory.go
│   │   │   │   │   │   ├── directory_test.go
│   │   │   │   │   │   ├── directory_unix.go
│   │   │   │   │   │   └── directory_windows.go
│   │   │   │   │   ├── discovery/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── backends.go
│   │   │   │   │   │   ├── discovery.go
│   │   │   │   │   │   ├── discovery_test.go
│   │   │   │   │   │   ├── entry.go
│   │   │   │   │   │   ├── file/
│   │   │   │   │   │   │   ├── file.go
│   │   │   │   │   │   │   └── file_test.go
│   │   │   │   │   │   ├── generator.go
│   │   │   │   │   │   ├── generator_test.go
│   │   │   │   │   │   ├── kv/
│   │   │   │   │   │   │   ├── kv.go
│   │   │   │   │   │   │   └── kv_test.go
│   │   │   │   │   │   ├── memory/
│   │   │   │   │   │   │   ├── memory.go
│   │   │   │   │   │   │   └── memory_test.go
│   │   │   │   │   │   └── nodes/
│   │   │   │   │   │       ├── nodes.go
│   │   │   │   │   │       └── nodes_test.go
│   │   │   │   │   ├── filenotify/
│   │   │   │   │   │   ├── filenotify.go
│   │   │   │   │   │   ├── fsnotify.go
│   │   │   │   │   │   ├── poller.go
│   │   │   │   │   │   └── poller_test.go
│   │   │   │   │   ├── fileutils/
│   │   │   │   │   │   ├── fileutils.go
│   │   │   │   │   │   ├── fileutils_darwin.go
│   │   │   │   │   │   ├── fileutils_solaris.go
│   │   │   │   │   │   ├── fileutils_test.go
│   │   │   │   │   │   ├── fileutils_unix.go
│   │   │   │   │   │   └── fileutils_windows.go
│   │   │   │   │   ├── gitutils/
│   │   │   │   │   │   ├── gitutils.go
│   │   │   │   │   │   └── gitutils_test.go
│   │   │   │   │   ├── graphdb/
│   │   │   │   │   │   ├── conn_sqlite3.go
│   │   │   │   │   │   ├── conn_sqlite3_unix.go
│   │   │   │   │   │   ├── conn_sqlite3_windows.go
│   │   │   │   │   │   ├── conn_unsupported.go
│   │   │   │   │   │   ├── graphdb.go
│   │   │   │   │   │   ├── graphdb_test.go
│   │   │   │   │   │   ├── sort.go
│   │   │   │   │   │   ├── sort_test.go
│   │   │   │   │   │   └── utils.go
│   │   │   │   │   ├── homedir/
│   │   │   │   │   │   ├── homedir.go
│   │   │   │   │   │   └── homedir_test.go
│   │   │   │   │   ├── httputils/
│   │   │   │   │   │   ├── httputils.go
│   │   │   │   │   │   ├── httputils_test.go
│   │   │   │   │   │   ├── mimetype.go
│   │   │   │   │   │   ├── mimetype_test.go
│   │   │   │   │   │   ├── resumablerequestreader.go
│   │   │   │   │   │   └── resumablerequestreader_test.go
│   │   │   │   │   ├── idtools/
│   │   │   │   │   │   ├── idtools.go
│   │   │   │   │   │   ├── idtools_unix.go
│   │   │   │   │   │   ├── idtools_unix_test.go
│   │   │   │   │   │   ├── idtools_windows.go
│   │   │   │   │   │   ├── usergroupadd_linux.go
│   │   │   │   │   │   └── usergroupadd_unsupported.go
│   │   │   │   │   ├── integration/
│   │   │   │   │   │   ├── checker/
│   │   │   │   │   │   │   └── checker.go
│   │   │   │   │   │   ├── cmd/
│   │   │   │   │   │   │   ├── command.go
│   │   │   │   │   │   │   └── command_test.go
│   │   │   │   │   │   ├── utils.go
│   │   │   │   │   │   └── utils_test.go
│   │   │   │   │   ├── ioutils/
│   │   │   │   │   │   ├── buffer.go
│   │   │   │   │   │   ├── buffer_test.go
│   │   │   │   │   │   ├── bytespipe.go
│   │   │   │   │   │   ├── bytespipe_test.go
│   │   │   │   │   │   ├── fmt.go
│   │   │   │   │   │   ├── fmt_test.go
│   │   │   │   │   │   ├── fswriters.go
│   │   │   │   │   │   ├── fswriters_test.go
│   │   │   │   │   │   ├── multireader.go
│   │   │   │   │   │   ├── multireader_test.go
│   │   │   │   │   │   ├── readers.go
│   │   │   │   │   │   ├── readers_test.go
│   │   │   │   │   │   ├── temp_unix.go
│   │   │   │   │   │   ├── temp_windows.go
│   │   │   │   │   │   ├── writeflusher.go
│   │   │   │   │   │   ├── writers.go
│   │   │   │   │   │   └── writers_test.go
│   │   │   │   │   ├── jsonlog/
│   │   │   │   │   │   ├── jsonlog.go
│   │   │   │   │   │   ├── jsonlog_marshalling.go
│   │   │   │   │   │   ├── jsonlog_marshalling_test.go
│   │   │   │   │   │   ├── jsonlogbytes.go
│   │   │   │   │   │   ├── jsonlogbytes_test.go
│   │   │   │   │   │   ├── time_marshalling.go
│   │   │   │   │   │   └── time_marshalling_test.go
│   │   │   │   │   ├── jsonmessage/
│   │   │   │   │   │   ├── jsonmessage.go
│   │   │   │   │   │   └── jsonmessage_test.go
│   │   │   │   │   ├── listeners/
│   │   │   │   │   │   ├── listeners_solaris.go
│   │   │   │   │   │   ├── listeners_unix.go
│   │   │   │   │   │   └── listeners_windows.go
│   │   │   │   │   ├── locker/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── locker.go
│   │   │   │   │   │   └── locker_test.go
│   │   │   │   │   ├── longpath/
│   │   │   │   │   │   ├── longpath.go
│   │   │   │   │   │   └── longpath_test.go
│   │   │   │   │   ├── loopback/
│   │   │   │   │   │   ├── attach_loopback.go
│   │   │   │   │   │   ├── ioctl.go
│   │   │   │   │   │   ├── loop_wrapper.go
│   │   │   │   │   │   └── loopback.go
│   │   │   │   │   ├── mount/
│   │   │   │   │   │   ├── flags.go
│   │   │   │   │   │   ├── flags_freebsd.go
│   │   │   │   │   │   ├── flags_linux.go
│   │   │   │   │   │   ├── flags_unsupported.go
│   │   │   │   │   │   ├── mount.go
│   │   │   │   │   │   ├── mount_unix_test.go
│   │   │   │   │   │   ├── mounter_freebsd.go
│   │   │   │   │   │   ├── mounter_linux.go
│   │   │   │   │   │   ├── mounter_solaris.go
│   │   │   │   │   │   ├── mounter_unsupported.go
│   │   │   │   │   │   ├── mountinfo.go
│   │   │   │   │   │   ├── mountinfo_freebsd.go
│   │   │   │   │   │   ├── mountinfo_linux.go
│   │   │   │   │   │   ├── mountinfo_linux_test.go
│   │   │   │   │   │   ├── mountinfo_solaris.go
│   │   │   │   │   │   ├── mountinfo_unsupported.go
│   │   │   │   │   │   ├── mountinfo_windows.go
│   │   │   │   │   │   ├── sharedsubtree_linux.go
│   │   │   │   │   │   └── sharedsubtree_linux_test.go
│   │   │   │   │   ├── namesgenerator/
│   │   │   │   │   │   ├── cmd/
│   │   │   │   │   │   │   └── names-generator/
│   │   │   │   │   │   │       └── main.go
│   │   │   │   │   │   ├── names-generator.go
│   │   │   │   │   │   └── names-generator_test.go
│   │   │   │   │   ├── parsers/
│   │   │   │   │   │   ├── kernel/
│   │   │   │   │   │   │   ├── kernel.go
│   │   │   │   │   │   │   ├── kernel_darwin.go
│   │   │   │   │   │   │   ├── kernel_unix.go
│   │   │   │   │   │   │   ├── kernel_unix_test.go
│   │   │   │   │   │   │   ├── kernel_windows.go
│   │   │   │   │   │   │   ├── uname_linux.go
│   │   │   │   │   │   │   ├── uname_solaris.go
│   │   │   │   │   │   │   └── uname_unsupported.go
│   │   │   │   │   │   ├── operatingsystem/
│   │   │   │   │   │   │   ├── operatingsystem_linux.go
│   │   │   │   │   │   │   ├── operatingsystem_solaris.go
│   │   │   │   │   │   │   ├── operatingsystem_unix.go
│   │   │   │   │   │   │   ├── operatingsystem_unix_test.go
│   │   │   │   │   │   │   └── operatingsystem_windows.go
│   │   │   │   │   │   ├── parsers.go
│   │   │   │   │   │   └── parsers_test.go
│   │   │   │   │   ├── pidfile/
│   │   │   │   │   │   ├── pidfile.go
│   │   │   │   │   │   ├── pidfile_darwin.go
│   │   │   │   │   │   ├── pidfile_test.go
│   │   │   │   │   │   ├── pidfile_unix.go
│   │   │   │   │   │   └── pidfile_windows.go
│   │   │   │   │   ├── platform/
│   │   │   │   │   │   ├── architecture_linux.go
│   │   │   │   │   │   ├── architecture_unix.go
│   │   │   │   │   │   ├── architecture_windows.go
│   │   │   │   │   │   ├── platform.go
│   │   │   │   │   │   ├── utsname_int8.go
│   │   │   │   │   │   └── utsname_uint8.go
│   │   │   │   │   ├── plugins/
│   │   │   │   │   │   ├── client.go
│   │   │   │   │   │   ├── client_test.go
│   │   │   │   │   │   ├── discovery.go
│   │   │   │   │   │   ├── discovery_test.go
│   │   │   │   │   │   ├── discovery_unix.go
│   │   │   │   │   │   ├── discovery_unix_test.go
│   │   │   │   │   │   ├── discovery_windows.go
│   │   │   │   │   │   ├── errors.go
│   │   │   │   │   │   ├── pluginrpc-gen/
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── fixtures/
│   │   │   │   │   │   │   │   ├── foo.go
│   │   │   │   │   │   │   │   └── otherfixture/
│   │   │   │   │   │   │   │       └── spaceship.go
│   │   │   │   │   │   │   ├── main.go
│   │   │   │   │   │   │   ├── parser.go
│   │   │   │   │   │   │   ├── parser_test.go
│   │   │   │   │   │   │   └── template.go
│   │   │   │   │   │   ├── plugins.go
│   │   │   │   │   │   └── transport/
│   │   │   │   │   │       ├── http.go
│   │   │   │   │   │       └── transport.go
│   │   │   │   │   ├── pools/
│   │   │   │   │   │   ├── pools.go
│   │   │   │   │   │   └── pools_test.go
│   │   │   │   │   ├── progress/
│   │   │   │   │   │   ├── progress.go
│   │   │   │   │   │   ├── progressreader.go
│   │   │   │   │   │   └── progressreader_test.go
│   │   │   │   │   ├── promise/
│   │   │   │   │   │   └── promise.go
│   │   │   │   │   ├── pubsub/
│   │   │   │   │   │   ├── publisher.go
│   │   │   │   │   │   └── publisher_test.go
│   │   │   │   │   ├── random/
│   │   │   │   │   │   ├── random.go
│   │   │   │   │   │   └── random_test.go
│   │   │   │   │   ├── reexec/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── command_linux.go
│   │   │   │   │   │   ├── command_unix.go
│   │   │   │   │   │   ├── command_unsupported.go
│   │   │   │   │   │   ├── command_windows.go
│   │   │   │   │   │   └── reexec.go
│   │   │   │   │   ├── registrar/
│   │   │   │   │   │   ├── registrar.go
│   │   │   │   │   │   └── registrar_test.go
│   │   │   │   │   ├── signal/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── signal.go
│   │   │   │   │   │   ├── signal_darwin.go
│   │   │   │   │   │   ├── signal_freebsd.go
│   │   │   │   │   │   ├── signal_linux.go
│   │   │   │   │   │   ├── signal_solaris.go
│   │   │   │   │   │   ├── signal_unix.go
│   │   │   │   │   │   ├── signal_unsupported.go
│   │   │   │   │   │   ├── signal_windows.go
│   │   │   │   │   │   └── trap.go
│   │   │   │   │   ├── stdcopy/
│   │   │   │   │   │   ├── stdcopy.go
│   │   │   │   │   │   └── stdcopy_test.go
│   │   │   │   │   ├── streamformatter/
│   │   │   │   │   │   ├── streamformatter.go
│   │   │   │   │   │   └── streamformatter_test.go
│   │   │   │   │   ├── stringid/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── stringid.go
│   │   │   │   │   │   └── stringid_test.go
│   │   │   │   │   ├── stringutils/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── stringutils.go
│   │   │   │   │   │   └── stringutils_test.go
│   │   │   │   │   ├── symlink/
│   │   │   │   │   │   ├── LICENSE.APACHE
│   │   │   │   │   │   ├── LICENSE.BSD
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── fs.go
│   │   │   │   │   │   ├── fs_unix.go
│   │   │   │   │   │   ├── fs_unix_test.go
│   │   │   │   │   │   └── fs_windows.go
│   │   │   │   │   ├── sysinfo/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── numcpu.go
│   │   │   │   │   │   ├── numcpu_linux.go
│   │   │   │   │   │   ├── numcpu_windows.go
│   │   │   │   │   │   ├── sysinfo.go
│   │   │   │   │   │   ├── sysinfo_linux.go
│   │   │   │   │   │   ├── sysinfo_linux_test.go
│   │   │   │   │   │   ├── sysinfo_solaris.go
│   │   │   │   │   │   ├── sysinfo_test.go
│   │   │   │   │   │   ├── sysinfo_unix.go
│   │   │   │   │   │   └── sysinfo_windows.go
│   │   │   │   │   ├── system/
│   │   │   │   │   │   ├── chtimes.go
│   │   │   │   │   │   ├── chtimes_test.go
│   │   │   │   │   │   ├── chtimes_unix.go
│   │   │   │   │   │   ├── chtimes_unix_test.go
│   │   │   │   │   │   ├── chtimes_windows.go
│   │   │   │   │   │   ├── chtimes_windows_test.go
│   │   │   │   │   │   ├── errors.go
│   │   │   │   │   │   ├── events_windows.go
│   │   │   │   │   │   ├── filesys.go
│   │   │   │   │   │   ├── filesys_windows.go
│   │   │   │   │   │   ├── lstat.go
│   │   │   │   │   │   ├── lstat_unix_test.go
│   │   │   │   │   │   ├── lstat_windows.go
│   │   │   │   │   │   ├── meminfo.go
│   │   │   │   │   │   ├── meminfo_linux.go
│   │   │   │   │   │   ├── meminfo_solaris.go
│   │   │   │   │   │   ├── meminfo_unix_test.go
│   │   │   │   │   │   ├── meminfo_unsupported.go
│   │   │   │   │   │   ├── meminfo_windows.go
│   │   │   │   │   │   ├── mknod.go
│   │   │   │   │   │   ├── mknod_windows.go
│   │   │   │   │   │   ├── path_unix.go
│   │   │   │   │   │   ├── path_windows.go
│   │   │   │   │   │   ├── path_windows_test.go
│   │   │   │   │   │   ├── stat.go
│   │   │   │   │   │   ├── stat_darwin.go
│   │   │   │   │   │   ├── stat_freebsd.go
│   │   │   │   │   │   ├── stat_linux.go
│   │   │   │   │   │   ├── stat_openbsd.go
│   │   │   │   │   │   ├── stat_solaris.go
│   │   │   │   │   │   ├── stat_unix_test.go
│   │   │   │   │   │   ├── stat_unsupported.go
│   │   │   │   │   │   ├── stat_windows.go
│   │   │   │   │   │   ├── syscall_unix.go
│   │   │   │   │   │   ├── syscall_windows.go
│   │   │   │   │   │   ├── syscall_windows_test.go
│   │   │   │   │   │   ├── umask.go
│   │   │   │   │   │   ├── umask_windows.go
│   │   │   │   │   │   ├── utimes_freebsd.go
│   │   │   │   │   │   ├── utimes_linux.go
│   │   │   │   │   │   ├── utimes_unix_test.go
│   │   │   │   │   │   ├── utimes_unsupported.go
│   │   │   │   │   │   ├── xattrs_linux.go
│   │   │   │   │   │   └── xattrs_unsupported.go
│   │   │   │   │   ├── tailfile/
│   │   │   │   │   │   ├── tailfile.go
│   │   │   │   │   │   └── tailfile_test.go
│   │   │   │   │   ├── tarsum/
│   │   │   │   │   │   ├── builder_context.go
│   │   │   │   │   │   ├── builder_context_test.go
│   │   │   │   │   │   ├── fileinfosums.go
│   │   │   │   │   │   ├── fileinfosums_test.go
│   │   │   │   │   │   ├── tarsum.go
│   │   │   │   │   │   ├── tarsum_spec.md
│   │   │   │   │   │   ├── tarsum_test.go
│   │   │   │   │   │   ├── testdata/
│   │   │   │   │   │   │   ├── 46af0962ab5afeb5ce6740d4d91652e69206fc991fd5328c1a94d364ad00e457/
│   │   │   │   │   │   │   │   └── json
│   │   │   │   │   │   │   ├── 511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158/
│   │   │   │   │   │   │   │   └── json
│   │   │   │   │   │   │   └── xattr/
│   │   │   │   │   │   │       └── json
│   │   │   │   │   │   ├── versioning.go
│   │   │   │   │   │   ├── versioning_test.go
│   │   │   │   │   │   └── writercloser.go
│   │   │   │   │   ├── term/
│   │   │   │   │   │   ├── ascii.go
│   │   │   │   │   │   ├── ascii_test.go
│   │   │   │   │   │   ├── tc_linux_cgo.go
│   │   │   │   │   │   ├── tc_other.go
│   │   │   │   │   │   ├── tc_solaris_cgo.go
│   │   │   │   │   │   ├── term.go
│   │   │   │   │   │   ├── term_solaris.go
│   │   │   │   │   │   ├── term_unix.go
│   │   │   │   │   │   ├── term_windows.go
│   │   │   │   │   │   ├── termios_darwin.go
│   │   │   │   │   │   ├── termios_freebsd.go
│   │   │   │   │   │   ├── termios_linux.go
│   │   │   │   │   │   ├── termios_openbsd.go
│   │   │   │   │   │   └── windows/
│   │   │   │   │   │       ├── ansi_reader.go
│   │   │   │   │   │       ├── ansi_writer.go
│   │   │   │   │   │       ├── console.go
│   │   │   │   │   │       ├── windows.go
│   │   │   │   │   │       └── windows_test.go
│   │   │   │   │   ├── testutil/
│   │   │   │   │   │   ├── assert/
│   │   │   │   │   │   │   └── assert.go
│   │   │   │   │   │   ├── pkg.go
│   │   │   │   │   │   └── tempfile/
│   │   │   │   │   │       └── tempfile.go
│   │   │   │   │   ├── tlsconfig/
│   │   │   │   │   │   └── config.go
│   │   │   │   │   ├── truncindex/
│   │   │   │   │   │   ├── truncindex.go
│   │   │   │   │   │   └── truncindex_test.go
│   │   │   │   │   ├── urlutil/
│   │   │   │   │   │   ├── urlutil.go
│   │   │   │   │   │   └── urlutil_test.go
│   │   │   │   │   └── useragent/
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── useragent.go
│   │   │   │   │       └── useragent_test.go
│   │   │   │   ├── plugin/
│   │   │   │   │   ├── backend.go
│   │   │   │   │   ├── distribution/
│   │   │   │   │   │   ├── pull.go
│   │   │   │   │   │   ├── push.go
│   │   │   │   │   │   └── types.go
│   │   │   │   │   ├── manager.go
│   │   │   │   │   ├── manager_linux.go
│   │   │   │   │   ├── manager_windows.go
│   │   │   │   │   ├── store/
│   │   │   │   │   │   ├── interface.go
│   │   │   │   │   │   ├── legacy.go
│   │   │   │   │   │   └── store.go
│   │   │   │   │   └── v2/
│   │   │   │   │       └── plugin.go
│   │   │   │   ├── profiles/
│   │   │   │   │   ├── apparmor/
│   │   │   │   │   │   ├── apparmor.go
│   │   │   │   │   │   └── template.go
│   │   │   │   │   └── seccomp/
│   │   │   │   │       ├── default.json
│   │   │   │   │       ├── fixtures/
│   │   │   │   │       │   └── example.json
│   │   │   │   │       ├── generate.go
│   │   │   │   │       ├── seccomp.go
│   │   │   │   │       ├── seccomp_default.go
│   │   │   │   │       ├── seccomp_test.go
│   │   │   │   │       └── seccomp_unsupported.go
│   │   │   │   ├── project/
│   │   │   │   │   ├── ARM.md
│   │   │   │   │   ├── BRANCHES-AND-TAGS.md
│   │   │   │   │   ├── GOVERNANCE.md
│   │   │   │   │   ├── IRC-ADMINISTRATION.md
│   │   │   │   │   ├── ISSUE-TRIAGE.md
│   │   │   │   │   ├── PACKAGE-REPO-MAINTENANCE.md
│   │   │   │   │   ├── PACKAGERS.md
│   │   │   │   │   ├── PATCH-RELEASES.md
│   │   │   │   │   ├── PRINCIPLES.md
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── RELEASE-CHECKLIST.md
│   │   │   │   │   ├── RELEASE-PROCESS.md
│   │   │   │   │   ├── REVIEWING.md
│   │   │   │   │   └── TOOLS.md
│   │   │   │   ├── reference/
│   │   │   │   │   ├── reference.go
│   │   │   │   │   ├── reference_test.go
│   │   │   │   │   ├── store.go
│   │   │   │   │   └── store_test.go
│   │   │   │   ├── registry/
│   │   │   │   │   ├── auth.go
│   │   │   │   │   ├── auth_test.go
│   │   │   │   │   ├── config.go
│   │   │   │   │   ├── config_test.go
│   │   │   │   │   ├── config_unix.go
│   │   │   │   │   ├── config_windows.go
│   │   │   │   │   ├── endpoint_test.go
│   │   │   │   │   ├── endpoint_v1.go
│   │   │   │   │   ├── reference.go
│   │   │   │   │   ├── registry.go
│   │   │   │   │   ├── registry_mock_test.go
│   │   │   │   │   ├── registry_test.go
│   │   │   │   │   ├── service.go
│   │   │   │   │   ├── service_v1.go
│   │   │   │   │   ├── service_v2.go
│   │   │   │   │   ├── session.go
│   │   │   │   │   └── types.go
│   │   │   │   ├── restartmanager/
│   │   │   │   │   ├── restartmanager.go
│   │   │   │   │   └── restartmanager_test.go
│   │   │   │   ├── runconfig/
│   │   │   │   │   ├── compare.go
│   │   │   │   │   ├── compare_test.go
│   │   │   │   │   ├── config.go
│   │   │   │   │   ├── config_test.go
│   │   │   │   │   ├── config_unix.go
│   │   │   │   │   ├── config_windows.go
│   │   │   │   │   ├── errors.go
│   │   │   │   │   ├── fixtures/
│   │   │   │   │   │   ├── unix/
│   │   │   │   │   │   │   ├── container_config_1_14.json
│   │   │   │   │   │   │   ├── container_config_1_17.json
│   │   │   │   │   │   │   ├── container_config_1_19.json
│   │   │   │   │   │   │   ├── container_hostconfig_1_14.json
│   │   │   │   │   │   │   └── container_hostconfig_1_19.json
│   │   │   │   │   │   └── windows/
│   │   │   │   │   │       └── container_config_1_19.json
│   │   │   │   │   ├── hostconfig.go
│   │   │   │   │   ├── hostconfig_solaris.go
│   │   │   │   │   ├── hostconfig_test.go
│   │   │   │   │   ├── hostconfig_unix.go
│   │   │   │   │   ├── hostconfig_windows.go
│   │   │   │   │   ├── opts/
│   │   │   │   │   │   ├── envfile.go
│   │   │   │   │   │   ├── envfile_test.go
│   │   │   │   │   │   ├── fixtures/
│   │   │   │   │   │   │   ├── valid.env
│   │   │   │   │   │   │   └── valid.label
│   │   │   │   │   │   ├── opts.go
│   │   │   │   │   │   ├── opts_test.go
│   │   │   │   │   │   ├── parse.go
│   │   │   │   │   │   ├── parse_test.go
│   │   │   │   │   │   ├── runtime.go
│   │   │   │   │   │   ├── throttledevice.go
│   │   │   │   │   │   ├── ulimit.go
│   │   │   │   │   │   ├── ulimit_test.go
│   │   │   │   │   │   └── weightdevice.go
│   │   │   │   │   └── streams.go
│   │   │   │   ├── utils/
│   │   │   │   │   ├── debug.go
│   │   │   │   │   ├── debug_test.go
│   │   │   │   │   ├── experimental.go
│   │   │   │   │   ├── names.go
│   │   │   │   │   ├── process_unix.go
│   │   │   │   │   ├── process_windows.go
│   │   │   │   │   ├── stubs.go
│   │   │   │   │   ├── templates/
│   │   │   │   │   │   ├── templates.go
│   │   │   │   │   │   └── templates_test.go
│   │   │   │   │   ├── utils.go
│   │   │   │   │   └── utils_test.go
│   │   │   │   └── volume/
│   │   │   │       ├── drivers/
│   │   │   │       │   ├── adapter.go
│   │   │   │       │   ├── extpoint.go
│   │   │   │       │   ├── extpoint_test.go
│   │   │   │       │   ├── proxy.go
│   │   │   │       │   └── proxy_test.go
│   │   │   │       ├── local/
│   │   │   │       │   ├── local.go
│   │   │   │       │   ├── local_test.go
│   │   │   │       │   ├── local_unix.go
│   │   │   │       │   └── local_windows.go
│   │   │   │       ├── store/
│   │   │   │       │   ├── errors.go
│   │   │   │       │   ├── store.go
│   │   │   │       │   ├── store_test.go
│   │   │   │       │   ├── store_unix.go
│   │   │   │       │   └── store_windows.go
│   │   │   │       ├── testutils/
│   │   │   │       │   └── testutils.go
│   │   │   │       ├── validate.go
│   │   │   │       ├── validate_test.go
│   │   │   │       ├── validate_test_unix.go
│   │   │   │       ├── validate_test_windows.go
│   │   │   │       ├── volume.go
│   │   │   │       ├── volume_copy.go
│   │   │   │       ├── volume_copy_unix.go
│   │   │   │       ├── volume_copy_windows.go
│   │   │   │       ├── volume_propagation_linux.go
│   │   │   │       ├── volume_propagation_linux_test.go
│   │   │   │       ├── volume_propagation_unsupported.go
│   │   │   │       ├── volume_test.go
│   │   │   │       ├── volume_unix.go
│   │   │   │       └── volume_windows.go
│   │   │   ├── engine-api/
│   │   │   │   ├── .travis.yml
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   ├── LICENSE
│   │   │   │   ├── MAINTAINERS
│   │   │   │   ├── Makefile
│   │   │   │   ├── README.md
│   │   │   │   ├── appveyor.yml
│   │   │   │   ├── client/
│   │   │   │   │   ├── checkpoint_create.go
│   │   │   │   │   ├── checkpoint_create_test.go
│   │   │   │   │   ├── checkpoint_delete.go
│   │   │   │   │   ├── checkpoint_delete_test.go
│   │   │   │   │   ├── checkpoint_list.go
│   │   │   │   │   ├── checkpoint_list_test.go
│   │   │   │   │   ├── client.go
│   │   │   │   │   ├── client_mock_test.go
│   │   │   │   │   ├── client_test.go
│   │   │   │   │   ├── client_unix.go
│   │   │   │   │   ├── client_windows.go
│   │   │   │   │   ├── container_attach.go
│   │   │   │   │   ├── container_commit.go
│   │   │   │   │   ├── container_commit_test.go
│   │   │   │   │   ├── container_copy.go
│   │   │   │   │   ├── container_copy_test.go
│   │   │   │   │   ├── container_create.go
│   │   │   │   │   ├── container_create_test.go
│   │   │   │   │   ├── container_diff.go
│   │   │   │   │   ├── container_diff_test.go
│   │   │   │   │   ├── container_exec.go
│   │   │   │   │   ├── container_exec_test.go
│   │   │   │   │   ├── container_export.go
│   │   │   │   │   ├── container_export_test.go
│   │   │   │   │   ├── container_inspect.go
│   │   │   │   │   ├── container_inspect_test.go
│   │   │   │   │   ├── container_kill.go
│   │   │   │   │   ├── container_kill_test.go
│   │   │   │   │   ├── container_list.go
│   │   │   │   │   ├── container_list_test.go
│   │   │   │   │   ├── container_logs.go
│   │   │   │   │   ├── container_logs_test.go
│   │   │   │   │   ├── container_pause.go
│   │   │   │   │   ├── container_pause_test.go
│   │   │   │   │   ├── container_remove.go
│   │   │   │   │   ├── container_remove_test.go
│   │   │   │   │   ├── container_rename.go
│   │   │   │   │   ├── container_rename_test.go
│   │   │   │   │   ├── container_resize.go
│   │   │   │   │   ├── container_resize_test.go
│   │   │   │   │   ├── container_restart.go
│   │   │   │   │   ├── container_restart_test.go
│   │   │   │   │   ├── container_start.go
│   │   │   │   │   ├── container_start_test.go
│   │   │   │   │   ├── container_stats.go
│   │   │   │   │   ├── container_stats_test.go
│   │   │   │   │   ├── container_stop.go
│   │   │   │   │   ├── container_stop_test.go
│   │   │   │   │   ├── container_top.go
│   │   │   │   │   ├── container_top_test.go
│   │   │   │   │   ├── container_unpause.go
│   │   │   │   │   ├── container_unpause_test.go
│   │   │   │   │   ├── container_update.go
│   │   │   │   │   ├── container_update_test.go
│   │   │   │   │   ├── container_wait.go
│   │   │   │   │   ├── container_wait_test.go
│   │   │   │   │   ├── errors.go
│   │   │   │   │   ├── events.go
│   │   │   │   │   ├── events_test.go
│   │   │   │   │   ├── hijack.go
│   │   │   │   │   ├── image_build.go
│   │   │   │   │   ├── image_build_test.go
│   │   │   │   │   ├── image_create.go
│   │   │   │   │   ├── image_create_test.go
│   │   │   │   │   ├── image_history.go
│   │   │   │   │   ├── image_history_test.go
│   │   │   │   │   ├── image_import.go
│   │   │   │   │   ├── image_import_test.go
│   │   │   │   │   ├── image_inspect.go
│   │   │   │   │   ├── image_inspect_test.go
│   │   │   │   │   ├── image_list.go
│   │   │   │   │   ├── image_list_test.go
│   │   │   │   │   ├── image_load.go
│   │   │   │   │   ├── image_load_test.go
│   │   │   │   │   ├── image_pull.go
│   │   │   │   │   ├── image_pull_test.go
│   │   │   │   │   ├── image_push.go
│   │   │   │   │   ├── image_push_test.go
│   │   │   │   │   ├── image_remove.go
│   │   │   │   │   ├── image_remove_test.go
│   │   │   │   │   ├── image_save.go
│   │   │   │   │   ├── image_save_test.go
│   │   │   │   │   ├── image_search.go
│   │   │   │   │   ├── image_search_test.go
│   │   │   │   │   ├── image_tag.go
│   │   │   │   │   ├── image_tag_test.go
│   │   │   │   │   ├── info.go
│   │   │   │   │   ├── info_test.go
│   │   │   │   │   ├── interface.go
│   │   │   │   │   ├── interface_experimental.go
│   │   │   │   │   ├── interface_stable.go
│   │   │   │   │   ├── login.go
│   │   │   │   │   ├── network_connect.go
│   │   │   │   │   ├── network_connect_test.go
│   │   │   │   │   ├── network_create.go
│   │   │   │   │   ├── network_create_test.go
│   │   │   │   │   ├── network_disconnect.go
│   │   │   │   │   ├── network_disconnect_test.go
│   │   │   │   │   ├── network_inspect.go
│   │   │   │   │   ├── network_inspect_test.go
│   │   │   │   │   ├── network_list.go
│   │   │   │   │   ├── network_list_test.go
│   │   │   │   │   ├── network_remove.go
│   │   │   │   │   ├── network_remove_test.go
│   │   │   │   │   ├── node_inspect.go
│   │   │   │   │   ├── node_inspect_test.go
│   │   │   │   │   ├── node_list.go
│   │   │   │   │   ├── node_list_test.go
│   │   │   │   │   ├── node_remove.go
│   │   │   │   │   ├── node_remove_test.go
│   │   │   │   │   ├── node_update.go
│   │   │   │   │   ├── node_update_test.go
│   │   │   │   │   ├── plugin_disable.go
│   │   │   │   │   ├── plugin_disable_test.go
│   │   │   │   │   ├── plugin_enable.go
│   │   │   │   │   ├── plugin_enable_test.go
│   │   │   │   │   ├── plugin_inspect.go
│   │   │   │   │   ├── plugin_inspect_test.go
│   │   │   │   │   ├── plugin_install.go
│   │   │   │   │   ├── plugin_list.go
│   │   │   │   │   ├── plugin_list_test.go
│   │   │   │   │   ├── plugin_push.go
│   │   │   │   │   ├── plugin_push_test.go
│   │   │   │   │   ├── plugin_remove.go
│   │   │   │   │   ├── plugin_remove_test.go
│   │   │   │   │   ├── plugin_set.go
│   │   │   │   │   ├── plugin_set_test.go
│   │   │   │   │   ├── request.go
│   │   │   │   │   ├── request_test.go
│   │   │   │   │   ├── service_create.go
│   │   │   │   │   ├── service_create_test.go
│   │   │   │   │   ├── service_inspect.go
│   │   │   │   │   ├── service_inspect_test.go
│   │   │   │   │   ├── service_list.go
│   │   │   │   │   ├── service_list_test.go
│   │   │   │   │   ├── service_remove.go
│   │   │   │   │   ├── service_remove_test.go
│   │   │   │   │   ├── service_update.go
│   │   │   │   │   ├── service_update_test.go
│   │   │   │   │   ├── swarm_init.go
│   │   │   │   │   ├── swarm_init_test.go
│   │   │   │   │   ├── swarm_inspect.go
│   │   │   │   │   ├── swarm_inspect_test.go
│   │   │   │   │   ├── swarm_join.go
│   │   │   │   │   ├── swarm_join_test.go
│   │   │   │   │   ├── swarm_leave.go
│   │   │   │   │   ├── swarm_leave_test.go
│   │   │   │   │   ├── swarm_update.go
│   │   │   │   │   ├── swarm_update_test.go
│   │   │   │   │   ├── task_inspect.go
│   │   │   │   │   ├── task_inspect_test.go
│   │   │   │   │   ├── task_list.go
│   │   │   │   │   ├── task_list_test.go
│   │   │   │   │   ├── testdata/
│   │   │   │   │   │   ├── ca.pem
│   │   │   │   │   │   ├── cert.pem
│   │   │   │   │   │   └── key.pem
│   │   │   │   │   ├── transport/
│   │   │   │   │   │   ├── cancellable/
│   │   │   │   │   │   │   ├── LICENSE
│   │   │   │   │   │   │   ├── canceler.go
│   │   │   │   │   │   │   ├── canceler_go14.go
│   │   │   │   │   │   │   └── cancellable.go
│   │   │   │   │   │   ├── client.go
│   │   │   │   │   │   ├── tlsconfig_clone.go
│   │   │   │   │   │   ├── tlsconfig_clone_go17.go
│   │   │   │   │   │   └── transport.go
│   │   │   │   │   ├── version.go
│   │   │   │   │   ├── volume_create.go
│   │   │   │   │   ├── volume_create_test.go
│   │   │   │   │   ├── volume_inspect.go
│   │   │   │   │   ├── volume_inspect_test.go
│   │   │   │   │   ├── volume_list.go
│   │   │   │   │   ├── volume_list_test.go
│   │   │   │   │   ├── volume_remove.go
│   │   │   │   │   └── volume_remove_test.go
│   │   │   │   ├── doc.go
│   │   │   │   └── types/
│   │   │   │       ├── auth.go
│   │   │   │       ├── blkiodev/
│   │   │   │       │   └── blkio.go
│   │   │   │       ├── client.go
│   │   │   │       ├── configs.go
│   │   │   │       ├── container/
│   │   │   │       │   ├── config.go
│   │   │   │       │   ├── host_config.go
│   │   │   │       │   ├── hostconfig_unix.go
│   │   │   │       │   └── hostconfig_windows.go
│   │   │   │       ├── errors.go
│   │   │   │       ├── events/
│   │   │   │       │   └── events.go
│   │   │   │       ├── filters/
│   │   │   │       │   ├── parse.go
│   │   │   │       │   └── parse_test.go
│   │   │   │       ├── mount/
│   │   │   │       │   └── mount.go
│   │   │   │       ├── network/
│   │   │   │       │   └── network.go
│   │   │   │       ├── plugin.go
│   │   │   │       ├── reference/
│   │   │   │       │   ├── image_reference.go
│   │   │   │       │   └── image_reference_test.go
│   │   │   │       ├── registry/
│   │   │   │       │   └── registry.go
│   │   │   │       ├── seccomp.go
│   │   │   │       ├── stats.go
│   │   │   │       ├── strslice/
│   │   │   │       │   ├── strslice.go
│   │   │   │       │   └── strslice_test.go
│   │   │   │       ├── swarm/
│   │   │   │       │   ├── common.go
│   │   │   │       │   ├── container.go
│   │   │   │       │   ├── network.go
│   │   │   │       │   ├── node.go
│   │   │   │       │   ├── service.go
│   │   │   │       │   ├── swarm.go
│   │   │   │       │   └── task.go
│   │   │   │       ├── time/
│   │   │   │       │   ├── duration_convert.go
│   │   │   │       │   ├── duration_convert_test.go
│   │   │   │       │   ├── timestamp.go
│   │   │   │       │   └── timestamp_test.go
│   │   │   │       ├── types.go
│   │   │   │       └── versions/
│   │   │   │           ├── README.md
│   │   │   │           ├── compare.go
│   │   │   │           ├── compare_test.go
│   │   │   │           ├── v1p19/
│   │   │   │           │   └── types.go
│   │   │   │           └── v1p20/
│   │   │   │               └── types.go
│   │   │   ├── go-connections/
│   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   ├── LICENSE
│   │   │   │   ├── MAINTAINERS
│   │   │   │   ├── README.md
│   │   │   │   ├── circle.yml
│   │   │   │   ├── doc.go
│   │   │   │   ├── nat/
│   │   │   │   │   ├── nat.go
│   │   │   │   │   ├── nat_test.go
│   │   │   │   │   ├── parse.go
│   │   │   │   │   ├── parse_test.go
│   │   │   │   │   ├── sort.go
│   │   │   │   │   └── sort_test.go
│   │   │   │   ├── proxy/
│   │   │   │   │   ├── network_proxy_test.go
│   │   │   │   │   ├── proxy.go
│   │   │   │   │   ├── stub_proxy.go
│   │   │   │   │   ├── tcp_proxy.go
│   │   │   │   │   └── udp_proxy.go
│   │   │   │   ├── sockets/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── inmem_socket.go
│   │   │   │   │   ├── inmem_socket_test.go
│   │   │   │   │   ├── proxy.go
│   │   │   │   │   ├── sockets.go
│   │   │   │   │   ├── sockets_unix.go
│   │   │   │   │   ├── sockets_windows.go
│   │   │   │   │   ├── tcp_socket.go
│   │   │   │   │   └── unix_socket.go
│   │   │   │   └── tlsconfig/
│   │   │   │       ├── config.go
│   │   │   │       ├── config_client_ciphers.go
│   │   │   │       ├── config_legacy_client_ciphers.go
│   │   │   │       └── config_test.go
│   │   │   ├── go-units/
│   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   ├── LICENSE
│   │   │   │   ├── MAINTAINERS
│   │   │   │   ├── README.md
│   │   │   │   ├── circle.yml
│   │   │   │   ├── duration.go
│   │   │   │   ├── duration_test.go
│   │   │   │   ├── size.go
│   │   │   │   ├── size_test.go
│   │   │   │   ├── ulimit.go
│   │   │   │   └── ulimit_test.go
│   │   │   └── libtrust/
│   │   │       ├── CONTRIBUTING.md
│   │   │       ├── LICENSE
│   │   │       ├── MAINTAINERS
│   │   │       ├── README.md
│   │   │       ├── certificates.go
│   │   │       ├── certificates_test.go
│   │   │       ├── doc.go
│   │   │       ├── ec_key.go
│   │   │       ├── ec_key_test.go
│   │   │       ├── filter.go
│   │   │       ├── filter_test.go
│   │   │       ├── hash.go
│   │   │       ├── jsonsign.go
│   │   │       ├── jsonsign_test.go
│   │   │       ├── key.go
│   │   │       ├── key_files.go
│   │   │       ├── key_files_test.go
│   │   │       ├── key_manager.go
│   │   │       ├── key_test.go
│   │   │       ├── rsa_key.go
│   │   │       ├── rsa_key_test.go
│   │   │       ├── testutil/
│   │   │       │   └── certificates.go
│   │   │       ├── tlsdemo/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.go
│   │   │       │   ├── gencert.go
│   │   │       │   ├── genkeys.go
│   │   │       │   └── server.go
│   │   │       ├── trustgraph/
│   │   │       │   ├── graph.go
│   │   │       │   ├── memory_graph.go
│   │   │       │   ├── memory_graph_test.go
│   │   │       │   ├── statement.go
│   │   │       │   └── statement_test.go
│   │   │       ├── util.go
│   │   │       └── util_test.go
│   │   ├── emicklei/
│   │   │   └── go-restful/
│   │   │       ├── .gitignore
│   │   │       ├── CHANGES.md
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── Srcfile
│   │   │       ├── bench_curly_test.go
│   │   │       ├── bench_test.go
│   │   │       ├── bench_test.sh
│   │   │       ├── compress.go
│   │   │       ├── compress_test.go
│   │   │       ├── compressor_cache.go
│   │   │       ├── compressor_pools.go
│   │   │       ├── compressors.go
│   │   │       ├── constants.go
│   │   │       ├── container.go
│   │   │       ├── container_test.go
│   │   │       ├── cors_filter.go
│   │   │       ├── cors_filter_test.go
│   │   │       ├── coverage.sh
│   │   │       ├── curly.go
│   │   │       ├── curly_route.go
│   │   │       ├── curly_test.go
│   │   │       ├── doc.go
│   │   │       ├── doc_examples_test.go
│   │   │       ├── entity_accessors.go
│   │   │       ├── entity_accessors_test.go
│   │   │       ├── examples/
│   │   │       │   ├── .goconvey
│   │   │       │   ├── google_app_engine/
│   │   │       │   │   ├── .goconvey
│   │   │       │   │   ├── app.yaml
│   │   │       │   │   ├── datastore/
│   │   │       │   │   │   ├── .goconvey
│   │   │       │   │   │   ├── app.yaml
│   │   │       │   │   │   └── main.go
│   │   │       │   │   ├── restful-appstats-integration.go
│   │   │       │   │   └── restful-user-service.go
│   │   │       │   ├── home.html
│   │   │       │   ├── msgpack/
│   │   │       │   │   ├── msgpack_entity.go
│   │   │       │   │   └── msgpack_entity_test.go
│   │   │       │   ├── restful-CORS-filter.go
│   │   │       │   ├── restful-NCSA-logging.go
│   │   │       │   ├── restful-basic-authentication.go
│   │   │       │   ├── restful-cpuprofiler-service.go
│   │   │       │   ├── restful-curly-router.go
│   │   │       │   ├── restful-curly-router_test.go
│   │   │       │   ├── restful-encoding-filter.go
│   │   │       │   ├── restful-filters.go
│   │   │       │   ├── restful-form-handling.go
│   │   │       │   ├── restful-hello-world.go
│   │   │       │   ├── restful-html-template.go
│   │   │       │   ├── restful-multi-containers.go
│   │   │       │   ├── restful-no-cache-filter.go
│   │   │       │   ├── restful-options-filter.go
│   │   │       │   ├── restful-path-tail.go
│   │   │       │   ├── restful-pre-post-filters.go
│   │   │       │   ├── restful-resource-functions.go
│   │   │       │   ├── restful-route_test.go
│   │   │       │   ├── restful-routefunction_test.go
│   │   │       │   ├── restful-serve-static.go
│   │   │       │   ├── restful-swagger.go
│   │   │       │   ├── restful-user-resource.go
│   │   │       │   └── restful-user-service.go
│   │   │       ├── filter.go
│   │   │       ├── filter_test.go
│   │   │       ├── install.sh
│   │   │       ├── jsr311.go
│   │   │       ├── jsr311_test.go
│   │   │       ├── log/
│   │   │       │   └── log.go
│   │   │       ├── logger.go
│   │   │       ├── mime.go
│   │   │       ├── mime_test.go
│   │   │       ├── options_filter.go
│   │   │       ├── options_filter_test.go
│   │   │       ├── parameter.go
│   │   │       ├── path_expression.go
│   │   │       ├── path_expression_test.go
│   │   │       ├── request.go
│   │   │       ├── request_test.go
│   │   │       ├── response.go
│   │   │       ├── response_test.go
│   │   │       ├── route.go
│   │   │       ├── route_builder.go
│   │   │       ├── route_builder_test.go
│   │   │       ├── route_test.go
│   │   │       ├── router.go
│   │   │       ├── service_error.go
│   │   │       ├── swagger/
│   │   │       │   ├── CHANGES.md
│   │   │       │   ├── README.md
│   │   │       │   ├── api_declaration_list.go
│   │   │       │   ├── config.go
│   │   │       │   ├── model_builder.go
│   │   │       │   ├── model_builder_test.go
│   │   │       │   ├── model_list.go
│   │   │       │   ├── model_list_test.go
│   │   │       │   ├── model_property_ext.go
│   │   │       │   ├── model_property_ext_test.go
│   │   │       │   ├── model_property_list.go
│   │   │       │   ├── model_property_list_test.go
│   │   │       │   ├── ordered_route_map.go
│   │   │       │   ├── ordered_route_map_test.go
│   │   │       │   ├── postbuild_model_test.go
│   │   │       │   ├── swagger.go
│   │   │       │   ├── swagger_builder.go
│   │   │       │   ├── swagger_test.go
│   │   │       │   ├── swagger_webservice.go
│   │   │       │   ├── test_package/
│   │   │       │   │   └── struct.go
│   │   │       │   └── utils_test.go
│   │   │       ├── tracer_test.go
│   │   │       ├── web_service.go
│   │   │       ├── web_service_container.go
│   │   │       └── web_service_test.go
│   │   ├── evanphx/
│   │   │   └── json-patch/
│   │   │       ├── .travis.yml
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── merge.go
│   │   │       ├── merge_test.go
│   │   │       ├── patch.go
│   │   │       └── patch_test.go
│   │   ├── fsouza/
│   │   │   └── go-dockerclient/
│   │   │       ├── .gitignore
│   │   │       ├── .travis.yml
│   │   │       ├── AUTHORS
│   │   │       ├── DOCKER-LICENSE
│   │   │       ├── LICENSE
│   │   │       ├── Makefile
│   │   │       ├── README.markdown
│   │   │       ├── auth.go
│   │   │       ├── auth_test.go
│   │   │       ├── build_test.go
│   │   │       ├── change.go
│   │   │       ├── change_test.go
│   │   │       ├── client.go
│   │   │       ├── client_test.go
│   │   │       ├── container.go
│   │   │       ├── container_test.go
│   │   │       ├── env.go
│   │   │       ├── env_test.go
│   │   │       ├── event.go
│   │   │       ├── event_test.go
│   │   │       ├── example_test.go
│   │   │       ├── exec.go
│   │   │       ├── exec_test.go
│   │   │       ├── image.go
│   │   │       ├── image_test.go
│   │   │       ├── integration_test.go
│   │   │       ├── misc.go
│   │   │       ├── misc_test.go
│   │   │       ├── network.go
│   │   │       ├── network_test.go
│   │   │       ├── node.go
│   │   │       ├── node_test.go
│   │   │       ├── service.go
│   │   │       ├── service_test.go
│   │   │       ├── signal.go
│   │   │       ├── swarm.go
│   │   │       ├── swarm_test.go
│   │   │       ├── tar.go
│   │   │       ├── task.go
│   │   │       ├── task_test.go
│   │   │       ├── testing/
│   │   │       │   ├── data/
│   │   │       │   │   ├── .dockerignore
│   │   │       │   │   ├── Dockerfile
│   │   │       │   │   ├── barfile
│   │   │       │   │   ├── ca.pem
│   │   │       │   │   ├── cert.pem
│   │   │       │   │   ├── foofile
│   │   │       │   │   ├── key.pem
│   │   │       │   │   ├── server.pem
│   │   │       │   │   └── serverkey.pem
│   │   │       │   ├── server.go
│   │   │       │   └── server_test.go
│   │   │       ├── tls.go
│   │   │       ├── travis-scripts/
│   │   │       │   ├── install-docker.bash
│   │   │       │   └── run-tests.bash
│   │   │       ├── volume.go
│   │   │       └── volume_test.go
│   │   ├── ghodss/
│   │   │   └── yaml/
│   │   │       ├── .gitignore
│   │   │       ├── .travis.yml
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── fields.go
│   │   │       ├── yaml.go
│   │   │       └── yaml_test.go
│   │   ├── gogo/
│   │   │   └── protobuf/
│   │   │       ├── .gitignore
│   │   │       ├── .mailmap
│   │   │       ├── .travis.yml
│   │   │       ├── AUTHORS
│   │   │       ├── CONTRIBUTORS
│   │   │       ├── GOLANG_CONTRIBUTORS
│   │   │       ├── LICENSE
│   │   │       ├── Makefile
│   │   │       ├── README
│   │   │       ├── Readme.md
│   │   │       ├── bench.md
│   │   │       ├── codec/
│   │   │       │   ├── codec.go
│   │   │       │   └── codec_test.go
│   │   │       ├── extensions.md
│   │   │       ├── gogoproto/
│   │   │       │   ├── Makefile
│   │   │       │   ├── doc.go
│   │   │       │   ├── gogo.pb.go
│   │   │       │   ├── gogo.pb.golden
│   │   │       │   ├── gogo.proto
│   │   │       │   └── helper.go
│   │   │       ├── gogoreplace/
│   │   │       │   └── main.go
│   │   │       ├── install-protobuf.sh
│   │   │       ├── io/
│   │   │       │   ├── full.go
│   │   │       │   ├── io.go
│   │   │       │   ├── io_test.go
│   │   │       │   ├── uint32.go
│   │   │       │   └── varint.go
│   │   │       ├── jsonpb/
│   │   │       │   ├── jsonpb.go
│   │   │       │   ├── jsonpb_test.go
│   │   │       │   └── jsonpb_test_proto/
│   │   │       │       ├── Makefile
│   │   │       │       ├── bytes.go
│   │   │       │       ├── more_test_objects.pb.go
│   │   │       │       ├── more_test_objects.proto
│   │   │       │       ├── test_objects.pb.go
│   │   │       │       └── test_objects.proto
│   │   │       ├── plugin/
│   │   │       │   ├── compare/
│   │   │       │   │   ├── compare.go
│   │   │       │   │   └── comparetest.go
│   │   │       │   ├── defaultcheck/
│   │   │       │   │   └── defaultcheck.go
│   │   │       │   ├── description/
│   │   │       │   │   ├── description.go
│   │   │       │   │   └── descriptiontest.go
│   │   │       │   ├── embedcheck/
│   │   │       │   │   └── embedcheck.go
│   │   │       │   ├── enumstringer/
│   │   │       │   │   └── enumstringer.go
│   │   │       │   ├── equal/
│   │   │       │   │   ├── equal.go
│   │   │       │   │   └── equaltest.go
│   │   │       │   ├── face/
│   │   │       │   │   ├── face.go
│   │   │       │   │   └── facetest.go
│   │   │       │   ├── gostring/
│   │   │       │   │   ├── gostring.go
│   │   │       │   │   └── gostringtest.go
│   │   │       │   ├── marshalto/
│   │   │       │   │   └── marshalto.go
│   │   │       │   ├── oneofcheck/
│   │   │       │   │   └── oneofcheck.go
│   │   │       │   ├── populate/
│   │   │       │   │   └── populate.go
│   │   │       │   ├── size/
│   │   │       │   │   ├── size.go
│   │   │       │   │   └── sizetest.go
│   │   │       │   ├── stringer/
│   │   │       │   │   ├── stringer.go
│   │   │       │   │   └── stringertest.go
│   │   │       │   ├── testgen/
│   │   │       │   │   └── testgen.go
│   │   │       │   ├── union/
│   │   │       │   │   ├── union.go
│   │   │       │   │   └── uniontest.go
│   │   │       │   └── unmarshal/
│   │   │       │       └── unmarshal.go
│   │   │       ├── proto/
│   │   │       │   ├── Makefile
│   │   │       │   ├── all_test.go
│   │   │       │   ├── any_test.go
│   │   │       │   ├── clone.go
│   │   │       │   ├── clone_test.go
│   │   │       │   ├── decode.go
│   │   │       │   ├── decode_gogo.go
│   │   │       │   ├── encode.go
│   │   │       │   ├── encode_gogo.go
│   │   │       │   ├── equal.go
│   │   │       │   ├── equal_test.go
│   │   │       │   ├── extensions.go
│   │   │       │   ├── extensions_gogo.go
│   │   │       │   ├── extensions_test.go
│   │   │       │   ├── lib.go
│   │   │       │   ├── lib_gogo.go
│   │   │       │   ├── message_set.go
│   │   │       │   ├── message_set_test.go
│   │   │       │   ├── pointer_reflect.go
│   │   │       │   ├── pointer_unsafe.go
│   │   │       │   ├── pointer_unsafe_gogo.go
│   │   │       │   ├── properties.go
│   │   │       │   ├── properties_gogo.go
│   │   │       │   ├── proto3_proto/
│   │   │       │   │   ├── proto3.pb.go
│   │   │       │   │   └── proto3.proto
│   │   │       │   ├── proto3_test.go
│   │   │       │   ├── size2_test.go
│   │   │       │   ├── size_test.go
│   │   │       │   ├── skip_gogo.go
│   │   │       │   ├── testdata/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── golden_test.go
│   │   │       │   │   ├── test.pb.go
│   │   │       │   │   ├── test.pb.go.golden
│   │   │       │   │   └── test.proto
│   │   │       │   ├── text.go
│   │   │       │   ├── text_gogo.go
│   │   │       │   ├── text_parser.go
│   │   │       │   ├── text_parser_test.go
│   │   │       │   └── text_test.go
│   │   │       ├── protobuf/
│   │   │       │   ├── Makefile
│   │   │       │   └── google/
│   │   │       │       └── protobuf/
│   │   │       │           ├── any.proto
│   │   │       │           ├── compiler/
│   │   │       │           │   └── plugin.proto
│   │   │       │           ├── descriptor.proto
│   │   │       │           ├── duration.proto
│   │   │       │           ├── empty.proto
│   │   │       │           ├── struct.proto
│   │   │       │           ├── timestamp.proto
│   │   │       │           └── wrappers.proto
│   │   │       ├── protoc-gen-combo/
│   │   │       │   └── combo.go
│   │   │       ├── protoc-gen-gofast/
│   │   │       │   └── main.go
│   │   │       ├── protoc-gen-gogo/
│   │   │       │   ├── Makefile
│   │   │       │   ├── descriptor/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── descriptor.pb.go
│   │   │       │   │   ├── descriptor_gostring.gen.go
│   │   │       │   │   └── helper.go
│   │   │       │   ├── doc.go
│   │   │       │   ├── generator/
│   │   │       │   │   ├── generator.go
│   │   │       │   │   ├── helper.go
│   │   │       │   │   └── name_test.go
│   │   │       │   ├── grpc/
│   │   │       │   │   └── grpc.go
│   │   │       │   ├── main.go
│   │   │       │   ├── plugin/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   └── plugin.pb.go
│   │   │       │   └── testdata/
│   │   │       │       ├── Makefile
│   │   │       │       ├── extension_base.proto
│   │   │       │       ├── extension_extra.proto
│   │   │       │       ├── extension_test.go
│   │   │       │       ├── extension_user.proto
│   │   │       │       ├── grpc.proto
│   │   │       │       ├── imp.pb.go.golden
│   │   │       │       ├── imp.proto
│   │   │       │       ├── imp2.proto
│   │   │       │       ├── imp3.proto
│   │   │       │       ├── main_test.go
│   │   │       │       ├── multi/
│   │   │       │       │   ├── .gitignore
│   │   │       │       │   ├── multi1.proto
│   │   │       │       │   ├── multi2.proto
│   │   │       │       │   └── multi3.proto
│   │   │       │       ├── my_test/
│   │   │       │       │   ├── test.pb.go
│   │   │       │       │   └── test.proto
│   │   │       │       └── proto3.proto
│   │   │       ├── protoc-gen-gogofast/
│   │   │       │   └── main.go
│   │   │       ├── protoc-gen-gogofaster/
│   │   │       │   └── main.go
│   │   │       ├── protoc-gen-gogoslick/
│   │   │       │   └── main.go
│   │   │       ├── protoc-gen-gogotypes/
│   │   │       │   └── main.go
│   │   │       ├── protoc-gen-gostring/
│   │   │       │   └── main.go
│   │   │       ├── protoc-min-version/
│   │   │       │   └── minversion.go
│   │   │       ├── sortkeys/
│   │   │       │   └── sortkeys.go
│   │   │       ├── test/
│   │   │       │   ├── .gitignore
│   │   │       │   ├── Makefile
│   │   │       │   ├── asymetric-issue125/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── asym.pb.go
│   │   │       │   │   ├── asym.proto
│   │   │       │   │   ├── asym_test.go
│   │   │       │   │   ├── asympb_test.go
│   │   │       │   │   └── pop.go
│   │   │       │   ├── bug_test.go
│   │   │       │   ├── casttype/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── casttype.proto
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── casttype.pb.go
│   │   │       │   │   │   │   ├── casttype.proto
│   │   │       │   │   │   │   └── casttypepb_test.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── casttype.pb.go
│   │   │       │   │   │   │   ├── casttype.proto
│   │   │       │   │   │   │   └── casttypepb_test.go
│   │   │       │   │   │   ├── neither/
│   │   │       │   │   │   │   ├── casttype.pb.go
│   │   │       │   │   │   │   ├── casttype.proto
│   │   │       │   │   │   │   └── casttypepb_test.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── casttype.pb.go
│   │   │       │   │   │   │   ├── casttype.proto
│   │   │       │   │   │   │   └── casttypepb_test.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── casttype.pb.go
│   │   │       │   │   │   │   ├── casttype.proto
│   │   │       │   │   │   │   └── casttypepb_test.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── casttype.pb.go
│   │   │       │   │   │   │   ├── casttype.proto
│   │   │       │   │   │   │   └── casttypepb_test.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── casttype.pb.go
│   │   │       │   │   │       ├── casttype.proto
│   │   │       │   │   │       └── casttypepb_test.go
│   │   │       │   │   └── mytypes.go
│   │   │       │   ├── castvalue/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── castvalue.pb.go
│   │   │       │   │   ├── castvalue.proto
│   │   │       │   │   ├── castvaluepb_test.go
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── castvalue.pb.go
│   │   │       │   │   │   │   ├── castvalue.proto
│   │   │       │   │   │   │   ├── castvaluepb_test.go
│   │   │       │   │   │   │   └── mytypes.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── castvalue.pb.go
│   │   │       │   │   │   │   ├── castvalue.proto
│   │   │       │   │   │   │   ├── castvaluepb_test.go
│   │   │       │   │   │   │   └── mytypes.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── castvalue.pb.go
│   │   │       │   │   │   │   ├── castvalue.proto
│   │   │       │   │   │   │   ├── castvaluepb_test.go
│   │   │       │   │   │   │   └── mytypes.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── castvalue.pb.go
│   │   │       │   │   │   │   ├── castvalue.proto
│   │   │       │   │   │   │   ├── castvaluepb_test.go
│   │   │       │   │   │   │   └── mytypes.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── castvalue.pb.go
│   │   │       │   │   │   │   ├── castvalue.proto
│   │   │       │   │   │   │   ├── castvaluepb_test.go
│   │   │       │   │   │   │   └── mytypes.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── castvalue.pb.go
│   │   │       │   │   │       ├── castvalue.proto
│   │   │       │   │   │       ├── castvaluepb_test.go
│   │   │       │   │   │       └── mytypes.go
│   │   │       │   │   └── mytypes.go
│   │   │       │   ├── combos/
│   │   │       │   │   ├── both/
│   │   │       │   │   │   ├── bug_test.go
│   │   │       │   │   │   ├── thetest.pb.go
│   │   │       │   │   │   ├── thetest.proto
│   │   │       │   │   │   ├── thetestpb_test.go
│   │   │       │   │   │   └── uuid.go
│   │   │       │   │   ├── marshaler/
│   │   │       │   │   │   ├── bug_test.go
│   │   │       │   │   │   ├── thetest.pb.go
│   │   │       │   │   │   ├── thetest.proto
│   │   │       │   │   │   ├── thetestpb_test.go
│   │   │       │   │   │   └── uuid.go
│   │   │       │   │   ├── unmarshaler/
│   │   │       │   │   │   ├── bug_test.go
│   │   │       │   │   │   ├── thetest.pb.go
│   │   │       │   │   │   ├── thetest.proto
│   │   │       │   │   │   ├── thetestpb_test.go
│   │   │       │   │   │   └── uuid.go
│   │   │       │   │   ├── unsafeboth/
│   │   │       │   │   │   ├── bug_test.go
│   │   │       │   │   │   ├── thetest.pb.go
│   │   │       │   │   │   ├── thetest.proto
│   │   │       │   │   │   ├── thetestpb_test.go
│   │   │       │   │   │   └── uuid.go
│   │   │       │   │   ├── unsafemarshaler/
│   │   │       │   │   │   ├── bug_test.go
│   │   │       │   │   │   ├── thetest.pb.go
│   │   │       │   │   │   ├── thetest.proto
│   │   │       │   │   │   ├── thetestpb_test.go
│   │   │       │   │   │   └── uuid.go
│   │   │       │   │   └── unsafeunmarshaler/
│   │   │       │   │       ├── bug_test.go
│   │   │       │   │       ├── thetest.pb.go
│   │   │       │   │       ├── thetest.proto
│   │   │       │   │       ├── thetestpb_test.go
│   │   │       │   │       └── uuid.go
│   │   │       │   ├── custom/
│   │   │       │   │   ├── custom.go
│   │   │       │   │   └── custom_test.go
│   │   │       │   ├── custom-dash-type/
│   │   │       │   │   └── customdash.go
│   │   │       │   ├── custombytesnonstruct/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── custombytesnonstruct_test.go
│   │   │       │   │   ├── customtype.go
│   │   │       │   │   ├── proto.pb.go
│   │   │       │   │   └── proto.proto
│   │   │       │   ├── dashfilename/
│   │   │       │   │   ├── dash-filename.proto
│   │   │       │   │   ├── df_test.go
│   │   │       │   │   └── doc.go
│   │   │       │   ├── defaultconflict/
│   │   │       │   │   ├── df.proto
│   │   │       │   │   ├── dg.proto
│   │   │       │   │   ├── doc.go
│   │   │       │   │   ├── nc.proto
│   │   │       │   │   ├── nc_test.go
│   │   │       │   │   ├── ne.proto
│   │   │       │   │   └── nx.proto
│   │   │       │   ├── embedconflict/
│   │   │       │   │   ├── .gitignore
│   │   │       │   │   ├── doc.go
│   │   │       │   │   ├── eb.proto
│   │   │       │   │   ├── ec.proto
│   │   │       │   │   ├── ec_test.go
│   │   │       │   │   ├── ee.proto
│   │   │       │   │   ├── em.proto
│   │   │       │   │   ├── en.proto
│   │   │       │   │   └── er.proto
│   │   │       │   ├── empty-issue70/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── empty.pb.go
│   │   │       │   │   ├── empty.proto
│   │   │       │   │   └── empty_test.go
│   │   │       │   ├── enumcustomname/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── enumcustomname.pb.go
│   │   │       │   │   └── enumcustomname.proto
│   │   │       │   ├── enumprefix/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── enumprefix.pb.go
│   │   │       │   │   └── enumprefix.proto
│   │   │       │   ├── enumstringer/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── enumstringer.pb.go
│   │   │       │   │   ├── enumstringer.proto
│   │   │       │   │   ├── enumstringerpb_test.go
│   │   │       │   │   └── string.go
│   │   │       │   ├── example/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── example.pb.go
│   │   │       │   │   ├── example.proto
│   │   │       │   │   ├── example_test.go
│   │   │       │   │   └── examplepb_test.go
│   │   │       │   ├── extension_test.go
│   │   │       │   ├── filedotname/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── file.dot.pb.go
│   │   │       │   │   ├── file.dot.proto
│   │   │       │   │   └── file.dotpb_test.go
│   │   │       │   ├── fuzztests/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── fuzz.pb.go
│   │   │       │   │   ├── fuzz.proto
│   │   │       │   │   └── fuzz_test.go
│   │   │       │   ├── group/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── group.pb.go
│   │   │       │   │   ├── group.proto
│   │   │       │   │   └── grouppb_test.go
│   │   │       │   ├── importdedup/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── importdedup_test.go
│   │   │       │   │   ├── proto.pb.go
│   │   │       │   │   ├── proto.proto
│   │   │       │   │   └── subpkg/
│   │   │       │   │       ├── customtype.go
│   │   │       │   │       ├── subproto.pb.go
│   │   │       │   │       └── subproto.proto
│   │   │       │   ├── indeximport-issue72/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── index/
│   │   │       │   │   │   ├── index.pb.go
│   │   │       │   │   │   ├── index.proto
│   │   │       │   │   │   └── indexpb_test.go
│   │   │       │   │   ├── indeximport.pb.go
│   │   │       │   │   ├── indeximport.proto
│   │   │       │   │   └── indeximportpb_test.go
│   │   │       │   ├── issue34/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── issue34_test.go
│   │   │       │   │   ├── proto.pb.go
│   │   │       │   │   └── proto.proto
│   │   │       │   ├── issue42order/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── issue42.pb.go
│   │   │       │   │   ├── issue42.proto
│   │   │       │   │   └── order_test.go
│   │   │       │   ├── issue8/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── proto.pb.go
│   │   │       │   │   ├── proto.proto
│   │   │       │   │   └── protopb_test.go
│   │   │       │   ├── mapsproto2/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── mapsproto2.pb.go
│   │   │       │   │   │   │   ├── mapsproto2.proto
│   │   │       │   │   │   │   ├── mapsproto2_test.go
│   │   │       │   │   │   │   └── mapsproto2pb_test.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── mapsproto2.pb.go
│   │   │       │   │   │   │   ├── mapsproto2.proto
│   │   │       │   │   │   │   ├── mapsproto2_test.go
│   │   │       │   │   │   │   └── mapsproto2pb_test.go
│   │   │       │   │   │   ├── neither/
│   │   │       │   │   │   │   ├── mapsproto2.pb.go
│   │   │       │   │   │   │   ├── mapsproto2.proto
│   │   │       │   │   │   │   ├── mapsproto2_test.go
│   │   │       │   │   │   │   └── mapsproto2pb_test.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── mapsproto2.pb.go
│   │   │       │   │   │   │   ├── mapsproto2.proto
│   │   │       │   │   │   │   ├── mapsproto2_test.go
│   │   │       │   │   │   │   └── mapsproto2pb_test.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── mapsproto2.pb.go
│   │   │       │   │   │   │   ├── mapsproto2.proto
│   │   │       │   │   │   │   ├── mapsproto2_test.go
│   │   │       │   │   │   │   └── mapsproto2pb_test.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── mapsproto2.pb.go
│   │   │       │   │   │   │   ├── mapsproto2.proto
│   │   │       │   │   │   │   ├── mapsproto2_test.go
│   │   │       │   │   │   │   └── mapsproto2pb_test.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── mapsproto2.pb.go
│   │   │       │   │   │       ├── mapsproto2.proto
│   │   │       │   │   │       ├── mapsproto2_test.go
│   │   │       │   │   │       └── mapsproto2pb_test.go
│   │   │       │   │   ├── doc.go
│   │   │       │   │   ├── header.proto
│   │   │       │   │   ├── mapsproto2.proto
│   │   │       │   │   └── mapsproto2_test.go.in
│   │   │       │   ├── mixbench/
│   │   │       │   │   ├── marshal.txt
│   │   │       │   │   ├── marshaler.txt
│   │   │       │   │   ├── mixbench.go
│   │   │       │   │   ├── unmarshal.txt
│   │   │       │   │   ├── unmarshaler.txt
│   │   │       │   │   ├── unsafe_marshaler.txt
│   │   │       │   │   └── unsafe_unmarshaler.txt
│   │   │       │   ├── moredefaults/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── md.pb.go
│   │   │       │   │   ├── md.proto
│   │   │       │   │   ├── md_test.go
│   │   │       │   │   └── mdpb_test.go
│   │   │       │   ├── nopackage/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── nopackage.pb.go
│   │   │       │   │   ├── nopackage.proto
│   │   │       │   │   └── nopackage_test.go
│   │   │       │   ├── oneof/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── neither/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── one.pb.go
│   │   │       │   │   │       ├── one.proto
│   │   │       │   │   │       └── onepb_test.go
│   │   │       │   │   ├── doc.go
│   │   │       │   │   └── one.proto
│   │   │       │   ├── oneof3/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── neither/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── one.pb.go
│   │   │       │   │   │       ├── one.proto
│   │   │       │   │   │       └── onepb_test.go
│   │   │       │   │   ├── doc.go
│   │   │       │   │   └── one.proto
│   │   │       │   ├── oneofembed/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── oneofembed.pb.go
│   │   │       │   │   ├── oneofembed.proto
│   │   │       │   │   └── oneofembedpb_test.go
│   │   │       │   ├── packed/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── doc.go
│   │   │       │   │   ├── packed.pb.go
│   │   │       │   │   ├── packed.proto
│   │   │       │   │   └── packed_test.go
│   │   │       │   ├── protosize/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── protosize.pb.go
│   │   │       │   │   ├── protosize.proto
│   │   │       │   │   ├── protosize_test.go
│   │   │       │   │   └── protosizepb_test.go
│   │   │       │   ├── required/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── requiredexample.pb.go
│   │   │       │   │   ├── requiredexample.proto
│   │   │       │   │   └── requiredexamplepb_test.go
│   │   │       │   ├── sizeunderscore/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── sizeunderscore.pb.go
│   │   │       │   │   ├── sizeunderscore.proto
│   │   │       │   │   └── sizeunderscorepb_test.go
│   │   │       │   ├── tags/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── doc.go
│   │   │       │   │   ├── tags.pb.go
│   │   │       │   │   ├── tags.proto
│   │   │       │   │   └── tags_test.go
│   │   │       │   ├── theproto3/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── proto3_test.go
│   │   │       │   │   │   │   ├── theproto3.pb.go
│   │   │       │   │   │   │   ├── theproto3.proto
│   │   │       │   │   │   │   └── theproto3pb_test.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── proto3_test.go
│   │   │       │   │   │   │   ├── theproto3.pb.go
│   │   │       │   │   │   │   ├── theproto3.proto
│   │   │       │   │   │   │   └── theproto3pb_test.go
│   │   │       │   │   │   ├── neither/
│   │   │       │   │   │   │   ├── proto3_test.go
│   │   │       │   │   │   │   ├── theproto3.pb.go
│   │   │       │   │   │   │   ├── theproto3.proto
│   │   │       │   │   │   │   └── theproto3pb_test.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── proto3_test.go
│   │   │       │   │   │   │   ├── theproto3.pb.go
│   │   │       │   │   │   │   ├── theproto3.proto
│   │   │       │   │   │   │   └── theproto3pb_test.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── proto3_test.go
│   │   │       │   │   │   │   ├── theproto3.pb.go
│   │   │       │   │   │   │   ├── theproto3.proto
│   │   │       │   │   │   │   └── theproto3pb_test.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── proto3_test.go
│   │   │       │   │   │   │   ├── theproto3.pb.go
│   │   │       │   │   │   │   ├── theproto3.proto
│   │   │       │   │   │   │   └── theproto3pb_test.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── proto3_test.go
│   │   │       │   │   │       ├── theproto3.pb.go
│   │   │       │   │   │       ├── theproto3.proto
│   │   │       │   │   │       └── theproto3pb_test.go
│   │   │       │   │   ├── doc.go
│   │   │       │   │   ├── footer.proto
│   │   │       │   │   ├── header.proto
│   │   │       │   │   ├── maps.proto
│   │   │       │   │   ├── proto3_test.go.in
│   │   │       │   │   └── theproto3.proto
│   │   │       │   ├── thetest.pb.go
│   │   │       │   ├── thetest.proto
│   │   │       │   ├── thetestpb_test.go
│   │   │       │   ├── types/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── types.pb.go
│   │   │       │   │   │   │   ├── types.proto
│   │   │       │   │   │   │   └── typespb_test.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── types.pb.go
│   │   │       │   │   │   │   ├── types.proto
│   │   │       │   │   │   │   └── typespb_test.go
│   │   │       │   │   │   ├── neither/
│   │   │       │   │   │   │   ├── types.pb.go
│   │   │       │   │   │   │   ├── types.proto
│   │   │       │   │   │   │   └── typespb_test.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── types.pb.go
│   │   │       │   │   │   │   ├── types.proto
│   │   │       │   │   │   │   └── typespb_test.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── types.pb.go
│   │   │       │   │   │   │   ├── types.proto
│   │   │       │   │   │   │   └── typespb_test.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── types.pb.go
│   │   │       │   │   │   │   ├── types.proto
│   │   │       │   │   │   │   └── typespb_test.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── types.pb.go
│   │   │       │   │   │       ├── types.proto
│   │   │       │   │   │       └── typespb_test.go
│   │   │       │   │   └── types.proto
│   │   │       │   ├── unmarshalmerge/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── unmarshalmerge.pb.go
│   │   │       │   │   ├── unmarshalmerge.proto
│   │   │       │   │   ├── unmarshalmerge_test.go
│   │   │       │   │   └── unmarshalmergepb_test.go
│   │   │       │   ├── unrecognized/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── oldnew_test.go
│   │   │       │   │   ├── unrecognized.pb.go
│   │   │       │   │   ├── unrecognized.proto
│   │   │       │   │   └── unrecognizedpb_test.go
│   │   │       │   ├── unrecognizedgroup/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── oldnew_test.go
│   │   │       │   │   ├── unrecognizedgroup.pb.go
│   │   │       │   │   ├── unrecognizedgroup.proto
│   │   │       │   │   └── unrecognizedgrouppb_test.go
│   │   │       │   ├── uuid.go
│   │   │       │   └── uuid_test.go
│   │   │       ├── types/
│   │   │       │   ├── Makefile
│   │   │       │   ├── any.go
│   │   │       │   ├── any.pb.go
│   │   │       │   ├── any_test.go
│   │   │       │   ├── doc.go
│   │   │       │   ├── duration.go
│   │   │       │   ├── duration.pb.go
│   │   │       │   ├── duration_gogo.go
│   │   │       │   ├── duration_test.go
│   │   │       │   ├── empty.pb.go
│   │   │       │   ├── struct.pb.go
│   │   │       │   ├── timestamp.go
│   │   │       │   ├── timestamp.pb.go
│   │   │       │   ├── timestamp_gogo.go
│   │   │       │   ├── timestamp_test.go
│   │   │       │   └── wrappers.pb.go
│   │   │       ├── vanity/
│   │   │       │   ├── command/
│   │   │       │   │   └── command.go
│   │   │       │   ├── enum.go
│   │   │       │   ├── field.go
│   │   │       │   ├── file.go
│   │   │       │   ├── foreach.go
│   │   │       │   ├── msg.go
│   │   │       │   └── test/
│   │   │       │       ├── Makefile
│   │   │       │       ├── doc.go
│   │   │       │       ├── fast/
│   │   │       │       │   ├── gogovanity.pb.go
│   │   │       │       │   ├── proto3.pb.go
│   │   │       │       │   └── vanity.pb.go
│   │   │       │       ├── faster/
│   │   │       │       │   ├── gogovanity.pb.go
│   │   │       │       │   ├── proto3.pb.go
│   │   │       │       │   └── vanity.pb.go
│   │   │       │       ├── gofast/
│   │   │       │       │   └── .gitignore
│   │   │       │       ├── gogovanity.proto
│   │   │       │       ├── proto3.proto
│   │   │       │       ├── slick/
│   │   │       │       │   ├── gogovanity.pb.go
│   │   │       │       │   ├── proto3.pb.go
│   │   │       │       │   └── vanity.pb.go
│   │   │       │       ├── vanity.proto
│   │   │       │       └── vanity_test.go
│   │   │       └── version/
│   │   │           └── version.go
│   │   ├── golang/
│   │   │   ├── glog/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README
│   │   │   │   ├── glog.go
│   │   │   │   ├── glog_file.go
│   │   │   │   └── glog_test.go
│   │   │   ├── groupcache/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── byteview.go
│   │   │   │   ├── byteview_test.go
│   │   │   │   ├── consistenthash/
│   │   │   │   │   ├── consistenthash.go
│   │   │   │   │   └── consistenthash_test.go
│   │   │   │   ├── groupcache.go
│   │   │   │   ├── groupcache_test.go
│   │   │   │   ├── groupcachepb/
│   │   │   │   │   ├── groupcache.pb.go
│   │   │   │   │   └── groupcache.proto
│   │   │   │   ├── http.go
│   │   │   │   ├── http_test.go
│   │   │   │   ├── lru/
│   │   │   │   │   ├── lru.go
│   │   │   │   │   └── lru_test.go
│   │   │   │   ├── peers.go
│   │   │   │   ├── singleflight/
│   │   │   │   │   ├── singleflight.go
│   │   │   │   │   └── singleflight_test.go
│   │   │   │   ├── sinks.go
│   │   │   │   └── testpb/
│   │   │   │       ├── test.pb.go
│   │   │   │       └── test.proto
│   │   │   └── protobuf/
│   │   │       ├── .gitignore
│   │   │       ├── AUTHORS
│   │   │       ├── CONTRIBUTORS
│   │   │       ├── LICENSE
│   │   │       ├── Make.protobuf
│   │   │       ├── Makefile
│   │   │       ├── README.md
│   │   │       ├── _conformance/
│   │   │       │   ├── Makefile
│   │   │       │   ├── conformance.go
│   │   │       │   └── conformance_proto/
│   │   │       │       ├── conformance.pb.go
│   │   │       │       └── conformance.proto
│   │   │       ├── jsonpb/
│   │   │       │   ├─

================================================
FILE CONTENTS
================================================

================================================
FILE: .dockerignore
================================================
vendor
golib


================================================
FILE: .gitignore
================================================
*.swp
bin/
_dist/
.idea
golib
release
out/
_gopath/
.DS_Store
build


================================================
FILE: .travis.yml
================================================
language: go
go:
- 1.7.1
install:
- echo "Don't run anything."
script:
- make test

================================================
FILE: Dockerfile
================================================
FROM scratch

ENTRYPOINT ["/configmapcontroller"]

COPY ./build/configmapcontroller-linux-amd64 /configmapcontroller


================================================
FILE: Jenkinsfile
================================================
#!/usr/bin/groovy
@Library('github.com/fabric8io/fabric8-pipeline-library@master')
def dummy
goNode{
  dockerNode{  
    def v = goRelease{
      githubOrganisation = 'fabric8io'
      dockerOrganisation = 'fabric8'
      project = 'configmapcontroller'
    }

    stage ('Update downstream dependencies') {

    updateDownstreamDependencies(v)
    }
  }
}

def updateDownstreamDependencies(v) {
  pushPomPropertyChangePR {
    propertyName = 'configmapcontroller.version'
    projects = [
            'fabric8io/fabric8-devops',
            'fabric8io/fabric8-platform',
            'funktionio/funktion-platform'
    ]
    version = v
  }
}


================================================
FILE: LICENSE
================================================
Copyright 2016 Red Hat, 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.


================================================
FILE: Makefile
================================================
# Copyright (C) 2016 Red Hat, 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.


SHELL := /bin/bash
NAME := configmapcontroller
GO := GO15VENDOREXPERIMENT=1 go
VERSION := $(shell cat version/VERSION)
ROOT_PACKAGE := $(shell $(GO) list .)
GO_VERSION := $(shell $(GO) version | sed -e 's/^[^0-9.]*\([0-9.]*\).*/\1/')
PACKAGE_DIRS := $(shell $(GO) list ./... | grep -v /vendor/)
FORMATTED := $(shell $(GO) fmt $(PACKAGE_DIRS))

REV        := $(shell git rev-parse --short HEAD 2> /dev/null  || echo 'unknown')
BRANCH     := $(shell git rev-parse --abbrev-ref HEAD 2> /dev/null  || echo 'unknown')
BUILD_DATE := $(shell date +%Y%m%d-%H:%M:%S)
BUILDFLAGS := -ldflags \
  " -X $(ROOT_PACKAGE)/version.Version=$(VERSION)\
		-X $(ROOT_PACKAGE)/version.Revision='$(REV)'\
		-X $(ROOT_PACKAGE)/version.Branch='$(BRANCH)'\
		-X $(ROOT_PACKAGE)/version.BuildDate='$(BUILD_DATE)'\
		-X $(ROOT_PACKAGE)/version.GoVersion='$(GO_VERSION)'"

build: *.go */*.go fmt
	CGO_ENABLED=0 $(GO) build $(BUILDFLAGS) -o build/$(NAME) $(NAME).go

test:
	CGO_ENABLED=0 $(GO) test github.com/fabric8io/$(NAME)

install: *.go */*.go
	GOBIN=${GOPATH}/bin $(GO) install $(BUILDFLAGS) $(NAME).go

fmt:
	@([[ ! -z "$(FORMATTED)" ]] && printf "Fixed unformatted files:\n$(FORMATTED)") || true

arm:
	CGO_ENABLED=0 GOOS=linux GOARCH=arm $(GO) build $(BUILDFLAGS) -o build/$(NAME)-arm $(NAME).go

win:
	CGO_ENABLED=0 GOOS=windows GOARCH=amd64 $(GO) build $(BUILDFLAGS) -o build/$(NAME).exe $(NAME).go

bootstrap:
	$(GO) get -u github.com/Masterminds/glide
	GO15VENDOREXPERIMENT=1 glide update --strip-vendor --strip-vcs --update-vendored

release: test
	rm -rf build release && mkdir build release
	for os in linux darwin ; do \
		CGO_ENABLED=0 GOOS=$$os GOARCH=amd64 $(GO) build $(BUILDFLAGS) -o build/$(NAME)-$$os-amd64 $(NAME).go ; \
	done
	CGO_ENABLED=0 GOOS=windows GOARCH=amd64 $(GO) build $(BUILDFLAGS) -o build/$(NAME)-windows-amd64.exe $(NAME).go
	zip --junk-paths release/$(NAME)-windows-amd64.zip build/$(NAME)-windows-amd64.exe README.md LICENSE
	CGO_ENABLED=0 GOOS=linux GOARCH=arm $(GO) build $(BUILDFLAGS) -o build/$(NAME)-linux-arm $(NAME).go
	cp build/$(NAME)-*-amd64* release
	cp build/$(NAME)-*-arm* release
	gh-release checksums sha256
	gh-release create fabric8io/$(NAME) $(VERSION) $(BRANCH) $(VERSION)

clean:
	rm -rf build release

.PHONY: release clean arm


================================================
FILE: README.md
================================================
# configmapcontroller

This controller watches for changes to `ConfigMap` objects and performs rolling upgrades on their associated deployments for apps which are not capable of watching the `ConfigMap` and updating dynamically.  

This is particularly useful if the `ConfigMap` is used to define environment variables - or your app cannot easily and reliably watch the `ConfigMap` and update itself on the fly. 

## How to use configmapcontroller

For a `Deployment` called `foo` have a `ConfigMap` called `foo`. Then add this annotation to your `Deployment`

```yaml
metadata:
  annotations:
    configmap.fabric8.io/update-on-change: "foo"
```

Then, providing `configmapcontroller` is running, whenever you edit the `ConfigMap` called `foo` the configmapcontroller will update the `Deployment` by adding the environment variable:

```
FABRICB_FOO_REVISION=${configMapRevision}
```

This then triggers a rolling upgrade of your deployment's pods to use the new configuration.


================================================
FILE: client/client.go
================================================
/**
 * Copyright (C) 2015 Red Hat, 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 client

import (
	oclient "github.com/openshift/origin/pkg/client"
	"github.com/pkg/errors"
	"k8s.io/kubernetes/pkg/client/restclient"
	client "k8s.io/kubernetes/pkg/client/unversioned"
	cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
)

func NewClient(f *cmdutil.Factory) (*client.Client, *restclient.Config, error) {
	var err error
	cfg, err := f.ClientConfig()
	if err != nil {
		return nil, nil, errors.Wrap(err, "Could not initialise client")
	}
	c, err := client.New(cfg)
	if err != nil {
		return nil, nil, errors.Wrap(err, "Could not initialise client")
	}

	return c, cfg, nil
}

func NewOpenShiftClient(cfg *restclient.Config) (*oclient.Client, *restclient.Config, error) {
	ocfg := *cfg
	ocfg.APIPath = ""
	c, err := oclient.New(&ocfg)
	if err != nil {
		return nil, nil, errors.Wrap(err, "Could not initialise an OpenShift client")
	}

	return c, cfg, nil
}


================================================
FILE: configmapcontroller.go
================================================
package main

import (
	"flag"
	"fmt"
	"net/http"
	"net/http/pprof"
	"os"
	"os/signal"
	"syscall"
	"time"

	"github.com/fabric8io/configmapcontroller/client"
	"github.com/fabric8io/configmapcontroller/controller"
	"github.com/fabric8io/configmapcontroller/util"
	"github.com/fabric8io/configmapcontroller/version"
	"github.com/golang/glog"
	oclient "github.com/openshift/origin/pkg/client"
	"github.com/spf13/pflag"
	"k8s.io/kubernetes/pkg/api"
	kubectlutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
)

const (
	healthPort = 10254
)

var (
	flags = pflag.NewFlagSet("", pflag.ExitOnError)

	resyncPeriod = flags.Duration("sync-period", 30*time.Second, "Relist and confirm services this often.")
	healthzPort  = flags.Int("healthz-port", healthPort, "port for healthz endpoint.")
	profiling    = flags.Bool("profiling", true, "Enable profiling via web interface host:port/debug/pprof/")
)

func main() {
	factory := kubectlutil.NewFactory(nil)
	factory.BindFlags(flags)
	factory.BindExternalFlags(flags)
	if err := flags.Parse(os.Args); err != nil {
		glog.Fatalf("failed to parse flags for pflag: %v", err)
	}
	if err := flag.CommandLine.Parse(nil); err != nil {
		glog.Fatalf("failed to parse flags for flag", err)
	}

	glog.Infof("Using build: %s", version.Version)

	kubeClient, err := factory.Client()
	if err != nil {
		glog.Fatalf("failed to create client: %s", err)
	}

	restClientConfig, err := factory.ClientConfig()
	if err != nil {
		glog.Fatalf("failed to create REST client config: %v", err)
	}

	var oc *oclient.Client
	typeOfMaster, err := util.TypeOfMaster(kubeClient)
	if err != nil {
		glog.Fatalf("failed to create REST client config: %v", err)
	}
	if typeOfMaster == util.OpenShift {
		oc, _, err = client.NewOpenShiftClient(restClientConfig)
		if err != nil {
			glog.Fatalf("failed to create REST client config: %v", err)
		}
	}

	watchNamespaces := api.NamespaceAll
	currentNamespace := os.Getenv("KUBERNETES_NAMESPACE")
	if currentNamespace != "" {
		watchNamespaces = currentNamespace
	}
	glog.Infof("Watching services in namespaces: `%s`", watchNamespaces)

	c, err := controller.NewController(kubeClient, oc, restClientConfig, factory.JSONEncoder(), *resyncPeriod, watchNamespaces)
	if err != nil {
		glog.Fatalf("failed to create controller: %v", err)
	}

	go registerHandlers()
	go handleSigterm(c)

	c.Run()
}

func registerHandlers() {
	mux := http.NewServeMux()

	if *profiling {
		mux.HandleFunc("/debug/pprof/", pprof.Index)
		mux.HandleFunc("/debug/pprof/profile", pprof.Profile)
		mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
	}

	server := &http.Server{
		Addr:    fmt.Sprintf(":%d", *healthzPort),
		Handler: mux,
	}
	glog.Fatal(server.ListenAndServe())
}

func handleSigterm(c *controller.Controller) {
	signalChan := make(chan os.Signal, 1)
	signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)
	sig := <-signalChan
	glog.Infof("Received %s, shutting down", sig)
	c.Stop()
}


================================================
FILE: controller/controller.go
================================================
package controller

import (
	"bytes"
	"strings"
	"time"

	"github.com/fabric8io/configmapcontroller/util"
	"github.com/golang/glog"
	"github.com/pkg/errors"

	"k8s.io/kubernetes/pkg/api"

	"k8s.io/kubernetes/pkg/client/cache"
	"k8s.io/kubernetes/pkg/client/record"
	"k8s.io/kubernetes/pkg/client/restclient"
	client "k8s.io/kubernetes/pkg/client/unversioned"
	"k8s.io/kubernetes/pkg/controller/framework"
	"k8s.io/kubernetes/pkg/runtime"
	"k8s.io/kubernetes/pkg/watch"

	"crypto/sha256"
	"encoding/base64"
	"sort"

	oclient "github.com/openshift/origin/pkg/client"
	deployapi "github.com/openshift/origin/pkg/deploy/api"
	deployapiv1 "github.com/openshift/origin/pkg/deploy/api/v1"
)

const (
	updateOnChangeAnnotation = "configmap.fabric8.io/update-on-change"
	separator                = ","
)

type Controller struct {
	client *client.Client

	cmController *framework.Controller
	cmLister     cache.StoreToServiceLister
	recorder     record.EventRecorder

	stopCh chan struct{}
}

func NewController(
	kubeClient *client.Client, ocClient *oclient.Client,
	restClientConfig *restclient.Config,
	encoder runtime.Encoder,
	resyncPeriod time.Duration, namespace string) (*Controller, error) {

	deployapi.AddToScheme(api.Scheme)
	deployapiv1.AddToScheme(api.Scheme)

	eventBroadcaster := record.NewBroadcaster()
	eventBroadcaster.StartLogging(glog.Infof)
	eventBroadcaster.StartRecordingToSink(kubeClient.Events(namespace))

	c := Controller{
		client: kubeClient,
		stopCh: make(chan struct{}),
		recorder: eventBroadcaster.NewRecorder(api.EventSource{
			Component: "configmap-controller",
		}),
	}

	c.cmLister.Store, c.cmController = framework.NewInformer(
		&cache.ListWatch{
			ListFunc:  configMapListFunc(c.client, namespace),
			WatchFunc: configMapWatchFunc(c.client, namespace),
		},
		&api.ConfigMap{},
		resyncPeriod,
		framework.ResourceEventHandlerFuncs{
			AddFunc: func(obj interface{}) {
				newCM := obj.(*api.ConfigMap)
				typeOfMaster, err := util.TypeOfMaster(kubeClient)
				if err != nil {
					glog.Fatalf("failed to create REST client config: %v", err)
				}
				switch typeOfMaster {
				case util.OpenShift:
					err := rollingUpgradeDeploymentsConfigs(newCM, ocClient)
					if err != nil {
						glog.Errorf("failed to update DeploymentConfig: %v", err)
					}
				case util.Kubernetes:
					err := rollingUpgradeDeployments(newCM, kubeClient)
					if err != nil {
						glog.Errorf("failed to update Deployment: %v", err)
					}
				}
			},
			UpdateFunc: func(oldObj interface{}, newObj interface{}) {
				oldM := oldObj.(*api.ConfigMap)
				newCM := newObj.(*api.ConfigMap)
				if oldM.ResourceVersion == newCM.ResourceVersion {
					return
				}

				typeOfMaster, err := util.TypeOfMaster(kubeClient)
				if err != nil {
					glog.Fatalf("failed to create REST client config: %v", err)
				}
				switch typeOfMaster {
				case util.OpenShift:
					err = rollingUpgradeDeploymentsConfigs(newCM, ocClient)
					if err != nil {
						glog.Errorf("failed to update DeploymentConfig: %v", err)
					}
				case util.Kubernetes:
					err = rollingUpgradeDeployments(newCM, kubeClient)
					if err != nil {
						glog.Errorf("failed to update Deployment: %v", err)
					}
				}
			},
		},
	)
	return &c, nil
}

// Run starts the controller.
func (c *Controller) Run() {
	glog.Info("starting configmapcontroller")

	go c.cmController.Run(c.stopCh)

	<-c.stopCh
}

func (c *Controller) Stop() {
	glog.Info("stopping configmapcontroller")

	close(c.stopCh)
}

func configMapListFunc(c *client.Client, ns string) func(api.ListOptions) (runtime.Object, error) {
	return func(opts api.ListOptions) (runtime.Object, error) {
		return c.ConfigMaps(ns).List(opts)
	}
}

func configMapWatchFunc(c *client.Client, ns string) func(options api.ListOptions) (watch.Interface, error) {
	return func(options api.ListOptions) (watch.Interface, error) {
		return c.ConfigMaps(ns).Watch(options)
	}
}

func rollingUpgradeDeployments(cm *api.ConfigMap, c *client.Client) error {
	ns := cm.Namespace
	configMapName := cm.Name
	configMapVersion := convertConfigMapToToken(cm)

	deployments, err := c.Deployments(ns).List(api.ListOptions{})
	if err != nil {
		return errors.Wrap(err, "failed to list deployments")
	}
	for _, d := range deployments.Items {
		containers := d.Spec.Template.Spec.Containers
		// match deployments with the correct annotation
		annotationValue := d.ObjectMeta.Annotations[updateOnChangeAnnotation]
		if annotationValue != "" {
			values := strings.Split(annotationValue, separator)
			matches := false
			for _, value := range values {
				if value == configMapName {
					matches = true
					break
				}
			}
			if matches {
				updateContainers(containers, annotationValue, configMapVersion)

				// update the deployment
				_, err := c.Deployments(ns).Update(&d)
				if err != nil {
					return errors.Wrap(err, "update deployment failed")
				}
				glog.Infof("Updated Deployment %s", d.Name)
			}
		}
	}
	return nil
}

func rollingUpgradeDeploymentsConfigs(cm *api.ConfigMap, oc *oclient.Client) error {
	ns := cm.Namespace
	configMapName := cm.Name
	configMapVersion := convertConfigMapToToken(cm)
	dcs, err := oc.DeploymentConfigs(ns).List(api.ListOptions{})
	if err != nil {
		return errors.Wrap(err, "failed to list deploymentsconfigs")
	}

	//glog.Infof("found %v DC items in namespace %s", len(dcs.Items), ns)
	for _, d := range dcs.Items {
		containers := d.Spec.Template.Spec.Containers
		// match deployment configs with the correct annotation
		annotationValue := d.ObjectMeta.Annotations[updateOnChangeAnnotation]
		if annotationValue != "" {
			values := strings.Split(annotationValue, separator)
			matches := false
			for _, value := range values {
				if value == configMapName {
					matches = true
					break
				}
			}
			if matches {
				if updateContainers(containers, annotationValue, configMapVersion) {
					// update the deployment
					_, err := oc.DeploymentConfigs(ns).Update(&d)
					if err != nil {
						return errors.Wrap(err, "update deployment failed")
					}
					glog.Infof("Updated DeploymentConfigs %s", d.Name)
				}
			}
		}
	}
	return nil
}

// convertConfigMapToToken converts the configmap into a unique token based on the data values
func convertConfigMapToToken(cm *api.ConfigMap) string {
	values := []string{}
	for k, v := range cm.Data {
		values = append(values, k+"="+v)
	}
	sort.Strings(values)
	text := strings.Join(values, ";")
	hasher := sha256.New()
	if _, err := hasher.Write([]byte(text)); err != nil {
		glog.Error(err)
	}
	sha := base64.URLEncoding.EncodeToString(hasher.Sum(nil))
	return sha
}

// updateContainers returns a boolean value indicating if any containers have been updated
func updateContainers(containers []api.Container, annotationValue, configMapVersion string) bool {
	// we can have multiple configmaps to update
	updated := false
	configmaps := strings.Split(annotationValue, separator)
	for _, cmNameToUpdate := range configmaps {
		configmapEnvar := "FABRIC8_" + convertToEnvVarName(cmNameToUpdate) + "_CONFIGMAP"

		for i := range containers {
			envs := containers[i].Env
			matched := false
			for j := range envs {
				if envs[j].Name == configmapEnvar {
					matched = true
					if envs[j].Value != configMapVersion {
						glog.Infof("Updating %s to %s", configmapEnvar, configMapVersion)
						envs[j].Value = configMapVersion
						updated = true
					}
				}
			}
			// if no existing env var exists lets create one
			if !matched {
				e := api.EnvVar{
					Name:  configmapEnvar,
					Value: configMapVersion,
				}
				containers[i].Env = append(containers[i].Env, e)
				updated = true
			}
		}
	}
	return updated
}

// convertToEnvVarName converts the given text into a usable env var
// removing any special chars with '_'
func convertToEnvVarName(text string) string {
	var buffer bytes.Buffer
	upper := strings.ToUpper(text)
	lastCharValid := false
	for i := 0; i < len(upper); i++ {
		ch := upper[i]
		if ch >= 'A' && ch <= 'Z' || ch >= '0' && ch <= '9' {
			buffer.WriteByte(ch)
			lastCharValid = true
			continue
		}
		if lastCharValid {
			buffer.WriteByte('_')
		}
		lastCharValid = false
	}
	return buffer.String()
}


================================================
FILE: examples/deployment.yml
================================================
---
apiVersion: "extensions/v1beta1"
kind: "Deployment"
metadata:
  labels:
    provider: "fabric8"
    project: "configmapcontroller"
  name: "configmapcontroller"
spec:
  replicas: 1
  selector:
    matchLabels:
      project: "configmapcontroller"
      provider: "fabric8"
  template:
    metadata:
      labels:
        provider: "fabric8"
        project: "configmapcontroller"
    spec:
      containers:
      - image: "fabric8/configmapcontroller:dev"
        name: "configmapcontroller"
        args:
          - --v=8


================================================
FILE: glide.yaml
================================================
package: github.com/fabric8io/configmapcontroller
import:
- package: github.com/openshift/origin
  version: v1.3.0
  subpackages:
  - pkg/client
- package: github.com/spf13/cobra
- package: github.com/spf13/pflag
- package: k8s.io/kubernetes
  version: 52492b4bff99ef3b8ca617d385a3ff0612f9402d
  repo: git://github.com/openshift/kubernetes.git
  vcs: git
  subpackages:
  - pkg/api
  - pkg/api/resource
  - pkg/api/unversioned
  - pkg/client/unversioned
  - pkg/fields
  - pkg/kubectl/cmd
  - pkg/kubectl/cmd/util
  - pkg/labels
  - pkg/runtime
  - pkg/util
- package: github.com/opencontainers/runc
  version: v0.0.7
  subpackages:
  - libcontainer
- package: github.com/imdario/mergo
  version: 6633656539c1639d9d78127b7d47c622b5d7b6dc
- package: github.com/Sirupsen/logrus
  version: aaf92c95712104318fc35409745f1533aa5ff327
- package: github.com/docker/distribution
  version: 559433598c7be9d30d6cfc5cad5b5dfdb686725c
  repo: git://github.com/openshift/docker-distribution.git
  vcs: git


================================================
FILE: tools/create-intellij-idea-golib.sh
================================================
#!/bin/bash

# Build up a GOPATH directory for IntelliJ IDEA
# which doesn't support GO15VENDOREXPERIMENT yet


pushd `dirname $0`/.. > /dev/null
base=`pwd`
popd > /dev/null
golib=${base}/golib

rm -rf ${golib}

# Link all from the vendor dirs pulled by glide:
vendor_src=${golib}/vendor/src
mkdir -p ${vendor_src}
for f in ${base}/vendor/*
do
  # echo "Symlinking vendor source dir: ${base}/${f}"
  ln -s "${f}" "${vendor_src}/"
done

# Link self into the golib dir
self_src=${golib}/self/src/github.com/fabric8io
mkdir -p ${self_src}
ln -s "${base}" "${self_src}/jenkinshift";

echo "Use the following dirs exclusively as go-libraries in  IntelliJ IDEA:"
echo "(Preferences -> Languages & Frameworks -> Go -> Go Libraries, Add to Project Libraries, uncheck 'use system defined GOPATH')"
echo
echo "${golib}/vendor"
echo "${golib}/self"


================================================
FILE: util/types.go
================================================
/**
 * Copyright (C) 2015 Red Hat, 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 util

import (
	"encoding/json"

	"github.com/pkg/errors"

	api "k8s.io/kubernetes/pkg/api/unversioned"
	client "k8s.io/kubernetes/pkg/client/unversioned"
)

type MasterType string

const (
	OpenShift  MasterType = "OpenShift"
	Kubernetes MasterType = "Kubernetes"
)

// TypeOfMaster returns the MasterType of the given client
func TypeOfMaster(c *client.Client) (MasterType, error) {
	res, err := c.Get().AbsPath("").DoRaw()
	if err != nil {
		return "", errors.Wrap(err, "could not discover the type of your installation")
	}

	var rp api.RootPaths
	err = json.Unmarshal(res, &rp)
	if err != nil {
		return "", errors.Wrap(err, "could not discover the type of your installation")
	}
	for _, p := range rp.Paths {
		if p == "/oapi" {
			return OpenShift, nil
		}
	}
	return Kubernetes, nil
}


================================================
FILE: vendor/cloud.google.com/go/.travis.yml
================================================
sudo: false
language: go
go:
- 1.6
- 1.7
install:
- go get -v cloud.google.com/go/...
script:
- openssl aes-256-cbc -K $encrypted_912ff8fa81ad_key -iv $encrypted_912ff8fa81ad_iv -in key.json.enc -out key.json -d
- GCLOUD_TESTS_GOLANG_PROJECT_ID="dulcet-port-762" GCLOUD_TESTS_GOLANG_KEY="$(pwd)/key.json"
  go test -race -v cloud.google.com/go/...


================================================
FILE: vendor/cloud.google.com/go/AUTHORS
================================================
# This is the official list of cloud authors for copyright purposes.
# This file is distinct from the CONTRIBUTORS files.
# See the latter for an explanation.

# Names should be added to this file as:
# Name or Organization <email address>
# The email address is not required for organizations.

Filippo Valsorda <hi@filippo.io>
Google Inc.
Ingo Oeser <nightlyone@googlemail.com>
Palm Stone Games, Inc.
Paweł Knap <pawelknap88@gmail.com>
Péter Szilágyi <peterke@gmail.com>
Tyler Treat <ttreat31@gmail.com>


================================================
FILE: vendor/cloud.google.com/go/CONTRIBUTING.md
================================================
# Contributing

1. Sign one of the contributor license agreements below.
1. `go get golang.org/x/review/git-codereview` to install the code reviewing tool.
1. Get the cloud package by running `go get -d cloud.google.com/go`.
    1. If you have already checked out the source, make sure that the remote git
       origin is https://code.googlesource.com/gocloud:

            git remote set-url origin https://code.googlesource.com/gocloud
1. Make sure your auth is configured correctly by visiting
   https://code.googlesource.com, clicking "Generate Password", and following
   the directions.
1. Make changes and create a change by running `git codereview change <name>`,
provide a commit message, and use `git codereview mail` to create a Gerrit CL.
1. Keep amending to the change and mail as your receive feedback.

## Integration Tests

In addition to the unit tests, you may run the integration test suite.

To run the integrations tests, creating and configuration of a project in the
Google Developers Console is required.

After creating a project, you must [create a service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount).
Ensure the project-level **Owner** [IAM role](console.cloud.google.com/iam-admin/iam/project)
(or **Editor** and **Logs Configuration Writer** roles) are added to the
service account.

Once you create a project, set the following environment variables to be able to
run the against the actual APIs.

- **GCLOUD_TESTS_GOLANG_PROJECT_ID**: Developers Console project's ID (e.g. bamboo-shift-455)
- **GCLOUD_TESTS_GOLANG_KEY**: The path to the JSON key file.

Install the [gcloud command-line tool][gcloudcli] to your machine and use it
to create the indexes used in the datastore integration tests with indexes
found in `datastore/testdata/index.yaml`:

From the project's root directory:

``` sh
# Set the default project in your env
$ gcloud config set project $GCLOUD_TESTS_GOLANG_PROJECT_ID

# Authenticate the gcloud tool with your account
$ gcloud auth login

# Create the indexes
$ gcloud preview datastore create-indexes datastore/testdata/index.yaml
```

The Sink integration tests in preview/logging require a Google Cloud storage
bucket with the same name as your test project, and with the Stackdriver Logging
service account as owner:
``` sh
$ gsutil mb gs://$GCLOUD_TESTS_GOLANG_PROJECT_ID
$ gsutil acl ch -g cloud-logs@google.com:O gs://$GCLOUD_TESTS_GOLANG_PROJECT_ID
```

Once you've set the environment variables, you can run the integration tests by
running:

``` sh
$ go test -v cloud.google.com/go/...
```

## Contributor License Agreements

Before we can accept your pull requests you'll need to sign a Contributor
License Agreement (CLA):

- **If you are an individual writing original source code** and **you own the
- intellectual property**, then you'll need to sign an [individual CLA][indvcla].
- **If you work for a company that wants to allow you to contribute your work**,
then you'll need to sign a [corporate CLA][corpcla].

You can sign these electronically (just scroll to the bottom). After that,
we'll be able to accept your pull requests.

## Contributor Code of Conduct

As contributors and maintainers of this project,
and in the interest of fostering an open and welcoming community,
we pledge to respect all people who contribute through reporting issues,
posting feature requests, updating documentation,
submitting pull requests or patches, and other activities.

We are committed to making participation in this project
a harassment-free experience for everyone,
regardless of level of experience, gender, gender identity and expression,
sexual orientation, disability, personal appearance,
body size, race, ethnicity, age, religion, or nationality.

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery
* Personal attacks
* Trolling or insulting/derogatory comments
* Public or private harassment
* Publishing other's private information,
such as physical or electronic
addresses, without explicit permission
* Other unethical or unprofessional conduct.

Project maintainers have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct.
By adopting this Code of Conduct,
project maintainers commit themselves to fairly and consistently
applying these principles to every aspect of managing this project.
Project maintainers who do not follow or enforce the Code of Conduct
may be permanently removed from the project team.

This code of conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community.

Instances of abusive, harassing, or otherwise unacceptable behavior
may be reported by opening an issue
or contacting one or more of the project maintainers.

This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)

[gcloudcli]: https://developers.google.com/cloud/sdk/gcloud/
[indvcla]: https://developers.google.com/open-source/cla/individual
[corpcla]: https://developers.google.com/open-source/cla/corporate


================================================
FILE: vendor/cloud.google.com/go/CONTRIBUTORS
================================================
# People who have agreed to one of the CLAs and can contribute patches.
# The AUTHORS file lists the copyright holders; this file
# lists people.  For example, Google employees are listed here
# but not in AUTHORS, because Google holds the copyright.
#
# https://developers.google.com/open-source/cla/individual
# https://developers.google.com/open-source/cla/corporate
#
# Names should be added to this file as:
#     Name <email address>

# Keep the list alphabetically sorted.

Andreas Litt <andreas.litt@gmail.com>
Andrew Gerrand <adg@golang.org>
Brad Fitzpatrick <bradfitz@golang.org>
Burcu Dogan <jbd@google.com>
Dave Day <djd@golang.org>
David Sansome <me@davidsansome.com>
David Symonds <dsymonds@golang.org>
Filippo Valsorda <hi@filippo.io>
Glenn Lewis <gmlewis@google.com>
Ingo Oeser <nightlyone@googlemail.com>
Johan Euphrosine <proppy@google.com>
Jonathan Amsterdam <jba@google.com>
Luna Duclos <luna.duclos@palmstonegames.com>
Michael McGreevy <mcgreevy@golang.org>
Omar Jarjur <ojarjur@google.com>
Paweł Knap <pawelknap88@gmail.com>
Péter Szilágyi <peterke@gmail.com>
Sarah Adams <shadams@google.com>
Toby Burress <kurin@google.com>
Tuo Shan <shantuo@google.com>
Tyler Treat <ttreat31@gmail.com>


================================================
FILE: vendor/cloud.google.com/go/LICENSE
================================================

                                 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 2014 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.


================================================
FILE: vendor/cloud.google.com/go/README.md
================================================
# Google Cloud for Go

[![Build Status](https://travis-ci.org/GoogleCloudPlatform/google-cloud-go.svg?branch=master)](https://travis-ci.org/GoogleCloudPlatform/google-cloud-go)
[![GoDoc](https://godoc.org/cloud.google.com/go?status.svg)](https://godoc.org/cloud.google.com/go)

``` go
import "cloud.google.com/go"
```

Go packages for Google Cloud Platform services.

**NOTE:** These packages are under development, and may occasionally make
backwards-incompatible changes.

**NOTE:** Github repo is a mirror of [https://code.googlesource.com/gocloud](https://code.googlesource.com/gocloud).

## News

_September 8, 2016_

* New clients for some of Google's Machine Learning APIs: Vision, Speech, and
Natural Language.

* Preview version of a new [Stackdriver Logging][cloud-logging] client in
[`cloud.google.com/go/preview/logging`](https://godoc.org/cloud.google.com/go/preview/logging).
This client uses gRPC as its transport layer, and supports log reading, sinks
and metrics. It will replace the current client at `cloud.google.com/go/logging` shortly.

## Supported APIs

Google API                     | Status       | Package
-------------------------------|--------------|-----------------------------------------------------------
[Datastore][cloud-datastore]   | beta         | [`cloud.google.com/go/datastore`][cloud-datastore-ref]
[Storage][cloud-storage]       | beta         | [`cloud.google.com/go/storage`][cloud-storage-ref]
[Pub/Sub][cloud-pubsub]        | experimental | [`cloud.google.com/go/pubsub`][cloud-pubsub-ref]
[Bigtable][cloud-bigtable]     | beta         | [`cloud.google.com/go/bigtable`][cloud-bigtable-ref]
[BigQuery][cloud-bigquery]     | experimental | [`cloud.google.com/go/bigquery`][cloud-bigquery-ref]
[Logging][cloud-logging]       | experimental | [`cloud.google.com/go/logging`][cloud-logging-ref]
[Vision][cloud-vision]         | experimental | [`cloud.google.com/go/vision`][cloud-vision-ref]
[Language][cloud-language]     | experimental | [`cloud.google.com/go/language/apiv1beta1`][cloud-language-ref]
[Speech][cloud-speech]         | experimental | [`cloud.google.com/go/speech/apiv1beta`][cloud-speech-ref]


> **Experimental status**: the API is still being actively developed. As a
> result, it might change in backward-incompatible ways and is not recommended
> for production use.
>
> **Beta status**: the API is largely complete, but still has outstanding
> features and bugs to be addressed. There may be minor backwards-incompatible
> changes where necessary.
>
> **Stable status**: the API is mature and ready for production use. We will
> continue addressing bugs and feature requests.

Documentation and examples are available at
https://godoc.org/cloud.google.com/go

Visit or join the
[google-api-go-announce group](https://groups.google.com/forum/#!forum/google-api-go-announce)
for updates on these packages.

## Go Versions Supported

We support the two most recent major versions of Go. If Google App Engine uses
an older version, we support that as well. You can see which versions are
currently supported by looking at the lines following `go:` in
[`.travis.yml`](.travis.yml).

## Authorization

By default, each API will use [Google Application Default Credentials][default-creds]
for authorization credentials used in calling the API endpoints. This will allow your
application to run in many environments without requiring explicit configuration.

Manually-configured authorization can be achieved using the
[`golang.org/x/oauth2`](https://godoc.org/golang.org/x/oauth2) package to
create an `oauth2.TokenSource`. This token source can be passed to the `NewClient`
function for the relevant API using a
[`option.WithTokenSource`](https://godoc.org/google.golang.org/api/option#WithTokenSource)
option.

## Google Cloud Datastore [![GoDoc](https://godoc.org/cloud.google.com/go/datastore?status.svg)](https://godoc.org/cloud.google.com/go/datastore)

[Google Cloud Datastore][cloud-datastore] ([docs][cloud-datastore-docs]) is a fully-
managed, schemaless database for storing non-relational data. Cloud Datastore
automatically scales with your users and supports ACID transactions, high availability
of reads and writes, strong consistency for reads and ancestor queries, and eventual
consistency for all other queries.

Follow the [activation instructions][cloud-datastore-activation] to use the Google
Cloud Datastore API with your project.

First create a `datastore.Client` to use throughout your application:

```go
client, err := datastore.NewClient(ctx, "my-project-id")
if err != nil {
	log.Fatalln(err)
}
```

Then use that client to interact with the API:

```go
type Post struct {
	Title       string
	Body        string `datastore:",noindex"`
	PublishedAt time.Time
}
keys := []*datastore.Key{
	datastore.NewKey(ctx, "Post", "post1", 0, nil),
	datastore.NewKey(ctx, "Post", "post2", 0, nil),
}
posts := []*Post{
	{Title: "Post 1", Body: "...", PublishedAt: time.Now()},
	{Title: "Post 2", Body: "...", PublishedAt: time.Now()},
}
if _, err := client.PutMulti(ctx, keys, posts); err != nil {
	log.Fatal(err)
}
```

## Google Cloud Storage [![GoDoc](https://godoc.org/cloud.google.com/go/storage?status.svg)](https://godoc.org/cloud.google.com/go/storage)

[Google Cloud Storage][cloud-storage] ([docs][cloud-storage-docs]) allows you to store
data on Google infrastructure with very high reliability, performance and availability,
and can be used to distribute large data objects to users via direct download.

https://godoc.org/cloud.google.com/go/storage

First create a `storage.Client` to use throughout your application:

```go
client, err := storage.NewClient(ctx)
if err != nil {
	log.Fatal(err)
}
```

```go
// Read the object1 from bucket.
rc, err := client.Bucket("bucket").Object("object1").NewReader(ctx)
if err != nil {
	log.Fatal(err)
}
defer rc.Close()
body, err := ioutil.ReadAll(rc)
if err != nil {
	log.Fatal(err)
}
```

## Google Cloud Pub/Sub [![GoDoc](https://godoc.org/cloud.google.com/go/pubsub?status.svg)](https://godoc.org/cloud.google.com/go/pubsub)

[Google Cloud Pub/Sub][cloud-pubsub] ([docs][cloud-pubsub-docs]) allows you to connect
your services with reliable, many-to-many, asynchronous messaging hosted on Google's
infrastructure. Cloud Pub/Sub automatically scales as you need it and provides a foundation
for building your own robust, global services.

First create a `pubsub.Client` to use throughout your application:

```go
client, err := pubsub.NewClient(ctx, "project-id")
if err != nil {
	log.Fatal(err)
}
```

```go
// Publish "hello world" on topic1.
topic := client.Topic("topic1")
msgIDs, err := topic.Publish(ctx, &pubsub.Message{
	Data: []byte("hello world"),
})
if err != nil {
	log.Fatal(err)
}

// Create an iterator to pull messages via subscription1.
it, err := client.Subscription("subscription1").Pull(ctx)
if err != nil {
	log.Println(err)
}
defer it.Stop()

// Consume N messages from the iterator.
for i := 0; i < N; i++ {
	msg, err := it.Next()
	if err == pubsub.Done {
		break
	}
	if err != nil {
		log.Fatalf("Failed to retrieve message: %v", err)
	}

	fmt.Printf("Message %d: %s\n", i, msg.Data)
	msg.Done(true) // Acknowledge that we've consumed the message.
}
```

## Contributing

Contributions are welcome. Please, see the
[CONTRIBUTING](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/CONTRIBUTING.md)
document for details. We're using Gerrit for our code reviews. Please don't open pull
requests against this repo, new pull requests will be automatically closed.

Please note that this project is released with a Contributor Code of Conduct.
By participating in this project you agree to abide by its terms.
See [Contributor Code of Conduct](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/CONTRIBUTING.md#contributor-code-of-conduct)
for more information.

[cloud-datastore]: https://cloud.google.com/datastore/
[cloud-datastore-ref]: https://godoc.org/cloud.google.com/go/datastore
[cloud-datastore-docs]: https://cloud.google.com/datastore/docs
[cloud-datastore-activation]: https://cloud.google.com/datastore/docs/activate

[cloud-pubsub]: https://cloud.google.com/pubsub/
[cloud-pubsub-ref]: https://godoc.org/cloud.google.com/go/pubsub
[cloud-pubsub-docs]: https://cloud.google.com/pubsub/docs

[cloud-storage]: https://cloud.google.com/storage/
[cloud-storage-ref]: https://godoc.org/cloud.google.com/go/storage
[cloud-storage-docs]: https://cloud.google.com/storage/docs/overview
[cloud-storage-create-bucket]: https://cloud.google.com/storage/docs/cloud-console#_creatingbuckets

[cloud-bigtable]: https://cloud.google.com/bigtable/
[cloud-bigtable-ref]: https://godoc.org/cloud.google.com/go/bigtable

[cloud-bigquery]: https://cloud.google.com/bigquery/
[cloud-bigquery-ref]: https://godoc.org/cloud.google.com/go/bigquery

[cloud-logging]: https://cloud.google.com/logging/
[cloud-logging-ref]: https://godoc.org/cloud.google.com/go/logging

[cloud-vision]: https://cloud.google.com/vision/
[cloud-vision-ref]: https://godoc.org/cloud.google.com/go/vision

[cloud-language]: https://cloud.google.com/natural-language
[cloud-language-ref]: https://godoc.org/cloud.google.com/go/language/apiv1beta1

[cloud-speech]: https://cloud.google.com/speech
[cloud-speech-ref]: https://godoc.org/cloud.google.com/go/speech/apiv1beta1

[default-creds]: https://developers.google.com/identity/protocols/application-default-credentials


================================================
FILE: vendor/cloud.google.com/go/appveyor.yml
================================================
# This file configures AppVeyor (http://www.appveyor.com),
# a Windows-based CI service similar to Travis.

# Identifier for this run
version: "{build}"

# Clone the repo into this path, which conforms to the standard
# Go workspace structure.
clone_folder: c:\gopath\src\cloud.google.com\go

environment:
  GOPATH: c:\gopath
  GCLOUD_TESTS_GOLANG_PROJECT_ID: dulcet-port-762
  GCLOUD_TESTS_GOLANG_KEY: c:\gopath\src\cloud.google.com\go\key.json
  KEYFILE_CONTENTS:
    secure: IvRbDAhM2PIQqzVkjzJ4FjizUvoQ+c3vG/qhJQG+HlZ/L5KEkqLu+x6WjLrExrNMyGku4znB2jmbTrUW3Ob4sGG+R5vvqeQ3YMHCVIkw5CxY+/bUDkW5RZWsVbuCnNa/vKsWmCP+/sZW6ICe29yKJ2ZOb6QaauI4s9R6j+cqBbU9pumMGYFRb0Rw3uUU7DKmVFCy+NjTENZIlDP9rmjANgAzigowJJEb2Tg9sLlQKmQeKiBSRN8lKc5Nq60a+fIzHGKvql4eIitDDDpOpyHv15/Xr1BzFw2yDoiR4X1lng0u7q0X9RgX4VIYa6gT16NXBEmQgbuX8gh7SfPMp9RhiZD9sVUaV+yogEabYpyPnmUURo0hXwkctKaBkQlEmKvjHwF5dvbg8+yqGhwtjAgFNimXG3INrwQsfQsZskkQWanutbJf9xy50GyWWFZZdi0uT4oXP/b5P7aklPXKXsvrJKBh7RjEaqBrhi86IJwOjBspvoR4l2WmcQyxb2xzQS1pjbBJFQfYJJ8+JgsstTL8PBO9d4ybJC0li1Om1qnWxkaewvPxxuoHJ9LpRKof19yRYWBmhTXb2tTASKG/zslvl4fgG4DmQBS93WC7dsiGOhAraGw2eCTgd0lYZOhk1FjWl9TS80aktXxzH/7nTvem5ohm+eDl6O0wnTL4KXjQVNSQ1PyLn4lGRJ5MNGzBTRFWIr2API2rca4Fysyfh/UdmazPGlNbY9JPGqb9+F04QzLfqm+Zz/cHy59E7lOSMBlUI4KD6d6ZNNKNRH+/g9i+fSiyiXKugTfda8KBnWGyPwprxuWGYaiQUGUYOwJY5R6x5c4mjImAB310V+Wo33UbWFJiwxEDsiCNqW1meVkBzt2er26vh4qbgCUIQ3iM3gFPfHgy+QxkmIhic7Q1HYacQElt8AAP41M7cCKWCuZidegP37MBB//mjjiNt047ZSQEvB4tqsX/OvfbByVef+cbtVw9T0yjHvmCdPW1XrhyrCCgclu6oYYdbmc5D7BBDRbjjMWGv6YvceAbfGf6ukdB5PuV+TGEN/FoQ1QTRA6Aqf+3fLMg4mS4oyTfw5xyYNbv3qoyLPrp+BnxI53WB9p0hfMg4n9FD6NntBxjDq+Q3Lk/bjC/Y4MaRWdzbMzF9a0lgGfcw9DURlK5p7uGJC9vg34feNoQprxVEZRQ01cHLeob6eGkYm4HxSRx8JY39Mh+9wzJo+k/aIvFleNC3e35NOrkXr6wb5e42n2DwBdPqdNolTLtLFRglAL1LTpp27UjvjieWJAKfoDTR5CKl01sZqt0wPdLLcvsMj6CiPFmccUIOYeZMe86kLBD61Qa5F1EwkgO3Om2qSjW96FzL4skRc+BmU5RrHlAFSldR1wpUgtkUMv9vH5Cy+UJdcvpZ8KbmhZ2PsjF7ddJ1ve9RAw3cP325AyIMwZ77Ef1mgTM0NJze6eSW1qKlEsgt1FADPyeUu1NQTA2H2dueMPGlArWTSUgyWR9AdfpqouT7eg0JWI5w+yUZZC+/rPglYbt84oLmYpwuli0z8FyEQRPIc3EtkfWIv/yYgDr2TZ0N2KvGfpi/MAUWgxI1gleC2uKgEOEtuJthd3XZjF2NoE7IBqjQOINybcJOjyeB5vRLDY1FLuxYzdg1y1etkV4XQig/vje

install:
  # Info for debugging.
  - echo %PATH%
  - go version
  - go env
  - go get -v -d -t ./...


# Provide a build script, or AppVeyor will call msbuild.
build_script:
  - go install -v ./...
  - echo %KEYFILE_CONTENTS% > %GCLOUD_TESTS_GOLANG_KEY%

test_script:
  - go test -v ./...


================================================
FILE: vendor/cloud.google.com/go/authexample_test.go
================================================
// Copyright 2016 Google Inc. 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 cloud_test

import (
	"cloud.google.com/go/datastore"
	"golang.org/x/net/context"
	"google.golang.org/api/option"
)

func Example_applicationDefaultCredentials() {
	ctx := context.Background()
	// Use Google Application Default Credentials to authorize and authenticate the client.
	// More information about Application Default Credentials and how to enable is at
	// https://developers.google.com/identity/protocols/application-default-credentials.
	//
	// This is the recommended way of authorizing and authenticating.
	//
	// Note: The example uses the datastore client, but the same steps apply to
	// the other client libraries underneath this package.
	client, err := datastore.NewClient(ctx, "project-id")
	if err != nil {
		// TODO: handle error.
	}
	// Use the client.
	_ = client
}

func Example_serviceAccountFile() {
	// Warning: The better way to use service accounts is to set GOOGLE_APPLICATION_CREDENTIALS
	// and use the Application Default Credentials.
	ctx := context.Background()
	// Use a JSON key file associated with a Google service account to
	// authenticate and authorize.
	// Go to https://console.developers.google.com/permissions/serviceaccounts to create
	// and download a service account key for your project.
	//
	// Note: The example uses the datastore client, but the same steps apply to
	// the other client libraries underneath this package.
	client, err := datastore.NewClient(ctx,
		"project-id",
		option.WithServiceAccountFile("/path/to/service-account-key.json"))
	if err != nil {
		// TODO: handle error.
	}
	// Use the client.
	_ = client
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/bigquery.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

// TODO(mcgreevy): support dry-run mode when creating jobs.

import (
	"fmt"

	"google.golang.org/api/option"
	"google.golang.org/api/transport"

	"golang.org/x/net/context"
	bq "google.golang.org/api/bigquery/v2"
)

const prodAddr = "https://www.googleapis.com/bigquery/v2/"

// A Source is a source of data for the Copy function.
type Source interface {
	implementsSource()
}

// A Destination is a destination of data for the Copy function.
type Destination interface {
	implementsDestination()
}

// An Option is an optional argument to Copy.
type Option interface {
	implementsOption()
}

// A ReadSource is a source of data for the Read function.
type ReadSource interface {
	implementsReadSource()
}

// A ReadOption is an optional argument to Read.
type ReadOption interface {
	customizeRead(conf *pagingConf)
}

const Scope = "https://www.googleapis.com/auth/bigquery"
const userAgent = "gcloud-golang-bigquery/20160429"

// Client may be used to perform BigQuery operations.
type Client struct {
	service   service
	projectID string
}

// NewClient constructs a new Client which can perform BigQuery operations.
// Operations performed via the client are billed to the specified GCP project.
func NewClient(ctx context.Context, projectID string, opts ...option.ClientOption) (*Client, error) {
	o := []option.ClientOption{
		option.WithEndpoint(prodAddr),
		option.WithScopes(Scope),
		option.WithUserAgent(userAgent),
	}
	o = append(o, opts...)
	httpClient, endpoint, err := transport.NewHTTPClient(ctx, o...)
	if err != nil {
		return nil, fmt.Errorf("dialing: %v", err)
	}

	s, err := newBigqueryService(httpClient, endpoint)
	if err != nil {
		return nil, fmt.Errorf("constructing bigquery client: %v", err)
	}

	c := &Client{
		service:   s,
		projectID: projectID,
	}
	return c, nil
}

// initJobProto creates and returns a bigquery Job proto.
// The proto is customized using any jobOptions in options.
// The list of Options is returned with the jobOptions removed.
func initJobProto(projectID string, options []Option) (*bq.Job, []Option) {
	job := &bq.Job{}

	var other []Option
	for _, opt := range options {
		if o, ok := opt.(jobOption); ok {
			o.customizeJob(job, projectID)
		} else {
			other = append(other, opt)
		}
	}
	return job, other
}

// Copy starts a BigQuery operation to copy data from a Source to a Destination.
func (c *Client) Copy(ctx context.Context, dst Destination, src Source, options ...Option) (*Job, error) {
	switch dst := dst.(type) {
	case *Table:
		switch src := src.(type) {
		case *GCSReference:
			return c.load(ctx, dst, src, options)
		case *Table:
			return c.cp(ctx, dst, Tables{src}, options)
		case Tables:
			return c.cp(ctx, dst, src, options)
		case *Query:
			return c.query(ctx, dst, src, options)
		}
	case *GCSReference:
		if src, ok := src.(*Table); ok {
			return c.extract(ctx, dst, src, options)
		}
	}
	return nil, fmt.Errorf("no Copy operation matches dst/src pair: dst: %T ; src: %T", dst, src)
}

// Query creates a query with string q. You may optionally set
// DefaultProjectID and DefaultDatasetID on the returned query before using it.
func (c *Client) Query(q string) *Query {
	return &Query{Q: q, client: c}
}

// Read submits a query for execution and returns the results via an Iterator.
//
// Read uses a temporary table to hold the results of the query job.
//
// For more control over how a query is performed, don't use this method but
// instead pass the Query as a Source to Client.Copy, and call Read on the
// resulting Job.
func (q *Query) Read(ctx context.Context, options ...ReadOption) (*Iterator, error) {
	dest := &Table{}
	job, err := q.client.Copy(ctx, dest, q, WriteTruncate)
	if err != nil {
		return nil, err
	}
	return job.Read(ctx, options...)
}

// executeQuery submits a query for execution and returns the results via an Iterator.
func (c *Client) executeQuery(ctx context.Context, q *Query, options ...ReadOption) (*Iterator, error) {
	dest := &Table{}
	job, err := c.Copy(ctx, dest, q, WriteTruncate)
	if err != nil {
		return nil, err
	}

	return c.Read(ctx, job, options...)
}

// Dataset creates a handle to a BigQuery dataset in the client's project.
func (c *Client) Dataset(id string) *Dataset {
	return c.DatasetInProject(c.projectID, id)
}

// DatasetInProject creates a handle to a BigQuery dataset in the specified project.
func (c *Client) DatasetInProject(projectID, datasetID string) *Dataset {
	return &Dataset{
		projectID: projectID,
		id:        datasetID,
		service:   c.service,
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/copy_op.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"fmt"

	"golang.org/x/net/context"
	bq "google.golang.org/api/bigquery/v2"
)

type copyOption interface {
	customizeCopy(conf *bq.JobConfigurationTableCopy)
}

func (c *Client) cp(ctx context.Context, dst *Table, src Tables, options []Option) (*Job, error) {
	job, options := initJobProto(c.projectID, options)
	payload := &bq.JobConfigurationTableCopy{}

	dst.customizeCopyDst(payload)
	src.customizeCopySrc(payload)

	for _, opt := range options {
		o, ok := opt.(copyOption)
		if !ok {
			return nil, fmt.Errorf("option (%#v) not applicable to dst/src pair: dst: %T ; src: %T", opt, dst, src)
		}
		o.customizeCopy(payload)
	}

	job.Configuration = &bq.JobConfiguration{
		Copy: payload,
	}
	return c.service.insertJob(ctx, job, c.projectID)
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/copy_test.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"reflect"
	"testing"

	"golang.org/x/net/context"
	bq "google.golang.org/api/bigquery/v2"
)

func defaultCopyJob() *bq.Job {
	return &bq.Job{
		Configuration: &bq.JobConfiguration{
			Copy: &bq.JobConfigurationTableCopy{
				DestinationTable: &bq.TableReference{
					ProjectId: "d-project-id",
					DatasetId: "d-dataset-id",
					TableId:   "d-table-id",
				},
				SourceTables: []*bq.TableReference{
					{
						ProjectId: "s-project-id",
						DatasetId: "s-dataset-id",
						TableId:   "s-table-id",
					},
				},
			},
		},
	}
}

func TestCopy(t *testing.T) {
	testCases := []struct {
		dst     *Table
		src     Tables
		options []Option
		want    *bq.Job
	}{
		{
			dst: &Table{
				ProjectID: "d-project-id",
				DatasetID: "d-dataset-id",
				TableID:   "d-table-id",
			},
			src: Tables{
				{
					ProjectID: "s-project-id",
					DatasetID: "s-dataset-id",
					TableID:   "s-table-id",
				},
			},
			want: defaultCopyJob(),
		},
		{
			dst: &Table{
				ProjectID: "d-project-id",
				DatasetID: "d-dataset-id",
				TableID:   "d-table-id",
			},
			src: Tables{
				{
					ProjectID: "s-project-id",
					DatasetID: "s-dataset-id",
					TableID:   "s-table-id",
				},
			},
			options: []Option{CreateNever, WriteTruncate},
			want: func() *bq.Job {
				j := defaultCopyJob()
				j.Configuration.Copy.CreateDisposition = "CREATE_NEVER"
				j.Configuration.Copy.WriteDisposition = "WRITE_TRUNCATE"
				return j
			}(),
		},
	}

	for _, tc := range testCases {
		s := &testService{}
		c := &Client{
			service: s,
		}
		if _, err := c.Copy(context.Background(), tc.dst, tc.src, tc.options...); err != nil {
			t.Errorf("err calling cp: %v", err)
			continue
		}
		if !reflect.DeepEqual(s.Job, tc.want) {
			t.Errorf("copying: got:\n%v\nwant:\n%v", s.Job, tc.want)
		}
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/create_table_test.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"reflect"
	"testing"
	"time"

	"golang.org/x/net/context"
	bq "google.golang.org/api/bigquery/v2"
)

type createTableRecorder struct {
	conf *createTableConf
	service
}

func (rec *createTableRecorder) createTable(ctx context.Context, conf *createTableConf) error {
	rec.conf = conf
	return nil
}

func TestCreateTableOptions(t *testing.T) {
	s := &createTableRecorder{}
	c := &Client{
		projectID: "p",
		service:   s,
	}
	ds := c.Dataset("d")
	table := ds.Table("t")
	exp := time.Now()
	q := "query"
	if err := table.Create(context.Background(), TableExpiration(exp), ViewQuery(q)); err != nil {
		t.Fatalf("err calling Table.Create: %v", err)
	}
	want := createTableConf{
		projectID:  "p",
		datasetID:  "d",
		tableID:    "t",
		expiration: exp,
		viewQuery:  q,
	}
	if !reflect.DeepEqual(*s.conf, want) {
		t.Errorf("createTableConf: got:\n%v\nwant:\n%v", *s.conf, want)
	}

	sc := Schema{fieldSchema("desc", "name", "STRING", false, true)}
	if err := table.Create(context.Background(), TableExpiration(exp), sc); err != nil {
		t.Fatalf("err calling Table.Create: %v", err)
	}
	want = createTableConf{
		projectID:  "p",
		datasetID:  "d",
		tableID:    "t",
		expiration: exp,
		// No need for an elaborate schema, that is tested in schema_test.go.
		schema: &bq.TableSchema{
			Fields: []*bq.TableFieldSchema{
				bqTableFieldSchema("desc", "name", "STRING", "REQUIRED"),
			},
		},
	}
	if !reflect.DeepEqual(*s.conf, want) {
		t.Errorf("createTableConf: got:\n%v\nwant:\n%v", *s.conf, want)
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/dataset.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"golang.org/x/net/context"
	"google.golang.org/api/iterator"
)

// Dataset is a reference to a BigQuery dataset.
type Dataset struct {
	projectID string
	id        string
	service   service
}

// Create creates a dataset in the BigQuery service. An error will be returned
// if the dataset already exists.
func (d *Dataset) Create(ctx context.Context) error {
	return d.service.insertDataset(ctx, d.id, d.projectID)
}

// Table creates a handle to a BigQuery table in the dataset.
// To determine if a table exists, call Table.Metadata.
// If the table does not already exist, use Table.Create to create it.
func (d *Dataset) Table(tableID string) *Table {
	return &Table{ProjectID: d.projectID, DatasetID: d.id, TableID: tableID, service: d.service}
}

// Tables returns an iterator over the tables in the Dataset.
func (d *Dataset) Tables(ctx context.Context) *TableIterator {
	it := &TableIterator{
		ctx:     ctx,
		dataset: d,
	}
	it.pageInfo, it.nextFunc = iterator.NewPageInfo(
		it.fetch,
		func() int { return len(it.tables) },
		func() interface{} { b := it.tables; it.tables = nil; return b })
	return it
}

// A TableIterator is an iterator over Tables.
type TableIterator struct {
	ctx      context.Context
	dataset  *Dataset
	tables   []*Table
	pageInfo *iterator.PageInfo
	nextFunc func() error
}

// Next returns the next result. Its second return value is Done if there are
// no more results. Once Next returns Done, all subsequent calls will return
// Done.
func (it *TableIterator) Next() (*Table, error) {
	if err := it.nextFunc(); err != nil {
		return nil, err
	}
	t := it.tables[0]
	it.tables = it.tables[1:]
	return t, nil
}

// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
func (it *TableIterator) PageInfo() *iterator.PageInfo { return it.pageInfo }

func (it *TableIterator) fetch(pageSize int, pageToken string) (string, error) {
	tables, tok, err := it.dataset.service.listTables(it.ctx, it.dataset.projectID, it.dataset.id, pageSize, pageToken)
	if err != nil {
		return "", err
	}
	it.tables = append(it.tables, tables...)
	return tok, nil
}

// Datasets returns an iterator over the datasets in the Client's project.
func (c *Client) Datasets(ctx context.Context) *DatasetIterator {
	return c.DatasetsInProject(ctx, c.projectID)
}

// DatasetsInProject returns an iterator over the datasets in the provided project.
func (c *Client) DatasetsInProject(ctx context.Context, projectID string) *DatasetIterator {
	it := &DatasetIterator{
		ctx:       ctx,
		service:   c.service,
		projectID: projectID,
	}
	it.pageInfo, it.nextFunc = iterator.NewPageInfo(
		it.fetch,
		func() int { return len(it.items) },
		func() interface{} { b := it.items; it.items = nil; return b })
	return it
}

// DatasetIterator iterates over the datasets in a project.
type DatasetIterator struct {
	// ListHidden causes hidden datasets to be listed when set to true.
	ListHidden bool

	// Filter restricts the datasets returned by label. The filter syntax is described in
	// https://cloud.google.com/bigquery/docs/labeling-datasets#filtering_datasets_using_labels
	Filter string

	ctx       context.Context
	projectID string
	service   service
	pageInfo  *iterator.PageInfo
	nextFunc  func() error
	items     []*Dataset
}

// PageInfo supports pagination. See the google.golang.org/api/iterator package for details.
func (it *DatasetIterator) PageInfo() *iterator.PageInfo { return it.pageInfo }

func (it *DatasetIterator) Next() (*Dataset, error) {
	if err := it.nextFunc(); err != nil {
		return nil, err
	}
	item := it.items[0]
	it.items = it.items[1:]
	return item, nil
}

func (it *DatasetIterator) fetch(pageSize int, pageToken string) (string, error) {
	datasets, nextPageToken, err := it.service.listDatasets(it.ctx, it.projectID,
		pageSize, pageToken, it.ListHidden, it.Filter)
	if err != nil {
		return "", err
	}
	it.items = append(it.items, datasets...)
	return nextPageToken, nil
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/dataset_test.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"errors"
	"reflect"
	"strconv"
	"testing"

	"golang.org/x/net/context"
	itest "google.golang.org/api/iterator/testing"
)

// readServiceStub services read requests by returning data from an in-memory list of values.
type listTablesServiceStub struct {
	expectedProject, expectedDataset string
	tables                           []*Table
	service
}

func (s *listTablesServiceStub) listTables(ctx context.Context, projectID, datasetID string, pageSize int, pageToken string) ([]*Table, string, error) {
	if projectID != s.expectedProject {
		return nil, "", errors.New("wrong project id")
	}
	if datasetID != s.expectedDataset {
		return nil, "", errors.New("wrong dataset id")
	}
	const maxPageSize = 2
	if pageSize <= 0 || pageSize > maxPageSize {
		pageSize = maxPageSize
	}
	start := 0
	if pageToken != "" {
		var err error
		start, err = strconv.Atoi(pageToken)
		if err != nil {
			return nil, "", err
		}
	}
	end := start + pageSize
	if end > len(s.tables) {
		end = len(s.tables)
	}
	nextPageToken := ""
	if end < len(s.tables) {
		nextPageToken = strconv.Itoa(end)
	}
	return s.tables[start:end], nextPageToken, nil
}

func TestListTables(t *testing.T) {
	t1 := &Table{ProjectID: "p1", DatasetID: "d1", TableID: "t1"}
	t2 := &Table{ProjectID: "p1", DatasetID: "d1", TableID: "t2"}
	t3 := &Table{ProjectID: "p1", DatasetID: "d1", TableID: "t3"}
	allTables := []*Table{t1, t2, t3}
	testCases := []struct {
		data, want []*Table
	}{
		{
			data: allTables,
			want: allTables,
		},
		{
			data: nil,
			want: nil,
		},
	}

	for _, tc := range testCases {
		c := &Client{
			service: &listTablesServiceStub{
				expectedProject: "x",
				expectedDataset: "y",
				tables:          tc.data,
			},
			projectID: "x",
		}
		got, err := c.Dataset("y").ListTables(context.Background())
		if err != nil {
			t.Errorf("err calling ListTables: %v", err)
			continue
		}

		if !reflect.DeepEqual(got, tc.want) {
			t.Errorf("reading: got:\n%v\nwant:\n%v", got, tc.want)
		}
	}
}

func TestListTablesError(t *testing.T) {
	c := &Client{
		service: &listTablesServiceStub{
			expectedProject: "x",
			expectedDataset: "y",
		},
		projectID: "x",
	}
	// Test that service read errors are propagated back to the caller.
	// Passing "not y" as the dataset id will cause the service to return an error.
	_, err := c.Dataset("not y").ListTables(context.Background())
	if err == nil {
		// Read should not return an error; only Err should.
		t.Errorf("ListTables expected: non-nil err, got: nil")
	}
}

func TestTables(t *testing.T) {
	t1 := &Table{ProjectID: "p1", DatasetID: "d1", TableID: "t1"}
	t2 := &Table{ProjectID: "p1", DatasetID: "d1", TableID: "t2"}
	t3 := &Table{ProjectID: "p1", DatasetID: "d1", TableID: "t3"}
	allTables := []*Table{t1, t2, t3}
	c := &Client{
		service: &listTablesServiceStub{
			expectedProject: "x",
			expectedDataset: "y",
			tables:          allTables,
		},
		projectID: "x",
	}
	msg, ok := itest.TestIterator(allTables,
		func() interface{} { return c.Dataset("y").Tables(context.Background()) },
		func(it interface{}) (interface{}, error) { return it.(*TableIterator).Next() })
	if !ok {
		t.Error(msg)
	}
}

type listDatasetsFake struct {
	service

	projectID string
	datasets  []*Dataset
	hidden    map[*Dataset]bool
}

func (df *listDatasetsFake) listDatasets(_ context.Context, projectID string, pageSize int, pageToken string, listHidden bool, filter string) ([]*Dataset, string, error) {
	const maxPageSize = 2
	if pageSize <= 0 || pageSize > maxPageSize {
		pageSize = maxPageSize
	}
	if filter != "" {
		return nil, "", errors.New("filter not supported")
	}
	if projectID != df.projectID {
		return nil, "", errors.New("bad project ID")
	}
	start := 0
	if pageToken != "" {
		var err error
		start, err = strconv.Atoi(pageToken)
		if err != nil {
			return nil, "", err
		}
	}
	var (
		i             int
		result        []*Dataset
		nextPageToken string
	)
	for i = start; len(result) < pageSize && i < len(df.datasets); i++ {
		if df.hidden[df.datasets[i]] && !listHidden {
			continue
		}
		result = append(result, df.datasets[i])
	}
	if i < len(df.datasets) {
		nextPageToken = strconv.Itoa(i)
	}
	return result, nextPageToken, nil
}

func TestDatasets(t *testing.T) {
	service := &listDatasetsFake{projectID: "p"}
	datasets := []*Dataset{
		{"p", "a", service},
		{"p", "b", service},
		{"p", "hidden", service},
		{"p", "c", service},
	}
	service.datasets = datasets
	service.hidden = map[*Dataset]bool{datasets[2]: true}
	c := &Client{
		projectID: "p",
		service:   service,
	}
	msg, ok := itest.TestIterator(datasets,
		func() interface{} { it := c.Datasets(context.Background()); it.ListHidden = true; return it },
		func(it interface{}) (interface{}, error) { return it.(*DatasetIterator).Next() })
	if !ok {
		t.Fatalf("ListHidden=true: %s", msg)
	}

	msg, ok = itest.TestIterator([]*Dataset{datasets[0], datasets[1], datasets[3]},
		func() interface{} { it := c.Datasets(context.Background()); it.ListHidden = false; return it },
		func(it interface{}) (interface{}, error) { return it.(*DatasetIterator).Next() })
	if !ok {
		t.Fatalf("ListHidden=false: %s", msg)
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/doc.go
================================================
// Copyright 2015 Google Inc. 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 bigquery provides a client for the BigQuery service.
//
// Note: This package is a work-in-progress.  Backwards-incompatible changes should be expected.
package bigquery // import "cloud.google.com/go/bigquery"


================================================
FILE: vendor/cloud.google.com/go/bigquery/error.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"fmt"

	bq "google.golang.org/api/bigquery/v2"
)

// An Error contains detailed information about a failed bigquery operation.
type Error struct {
	// Mirrors bq.ErrorProto, but drops DebugInfo
	Location, Message, Reason string
}

func (e Error) Error() string {
	return fmt.Sprintf("{Location: %q; Message: %q; Reason: %q}", e.Location, e.Message, e.Reason)
}

func errorFromErrorProto(ep *bq.ErrorProto) *Error {
	if ep == nil {
		return nil
	}
	return &Error{
		Location: ep.Location,
		Message:  ep.Message,
		Reason:   ep.Reason,
	}
}

// A MultiError contains multiple related errors.
type MultiError []error

func (m MultiError) Error() string {
	switch len(m) {
	case 0:
		return "(0 errors)"
	case 1:
		return m[0].Error()
	case 2:
		return m[0].Error() + " (and 1 other error)"
	}
	return fmt.Sprintf("%s (and %d other errors)", m[0].Error(), len(m)-1)
}

// RowInsertionError contains all errors that occurred when attempting to insert a row.
type RowInsertionError struct {
	InsertID string // The InsertID associated with the affected row.
	RowIndex int    // The 0-based index of the affected row in the batch of rows being inserted.
	Errors   MultiError
}

func (e *RowInsertionError) Error() string {
	errFmt := "insertion of row [insertID: %q; insertIndex: %v] failed with error: %s"
	return fmt.Sprintf(errFmt, e.InsertID, e.RowIndex, e.Errors.Error())
}

// PutMultiError contains an error for each row which was not successfully inserted
// into a BigQuery table.
type PutMultiError []RowInsertionError

func (pme PutMultiError) Error() string {
	plural := "s"
	if len(pme) == 1 {
		plural = ""
	}

	return fmt.Sprintf("%v row insertion%s failed", len(pme), plural)
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/error_test.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"errors"
	"reflect"
	"strings"
	"testing"

	bq "google.golang.org/api/bigquery/v2"
)

func rowInsertionError(msg string) RowInsertionError {
	return RowInsertionError{Errors: []error{errors.New(msg)}}
}

func TestPutMultiErrorString(t *testing.T) {
	testCases := []struct {
		errs PutMultiError
		want string
	}{
		{
			errs: PutMultiError{},
			want: "0 row insertions failed",
		},
		{
			errs: PutMultiError{rowInsertionError("a")},
			want: "1 row insertion failed",
		},
		{
			errs: PutMultiError{rowInsertionError("a"), rowInsertionError("b")},
			want: "2 row insertions failed",
		},
	}

	for _, tc := range testCases {
		if tc.errs.Error() != tc.want {
			t.Errorf("PutMultiError string: got:\n%v\nwant:\n%v", tc.errs.Error(), tc.want)
		}
	}
}

func TestMultiErrorString(t *testing.T) {
	testCases := []struct {
		errs MultiError
		want string
	}{
		{
			errs: MultiError{},
			want: "(0 errors)",
		},
		{
			errs: MultiError{errors.New("a")},
			want: "a",
		},
		{
			errs: MultiError{errors.New("a"), errors.New("b")},
			want: "a (and 1 other error)",
		},
		{
			errs: MultiError{errors.New("a"), errors.New("b"), errors.New("c")},
			want: "a (and 2 other errors)",
		},
	}

	for _, tc := range testCases {
		if tc.errs.Error() != tc.want {
			t.Errorf("PutMultiError string: got:\n%v\nwant:\n%v", tc.errs.Error(), tc.want)
		}
	}
}

func TestErrorFromErrorProto(t *testing.T) {
	for _, test := range []struct {
		in   *bq.ErrorProto
		want *Error
	}{
		{nil, nil},
		{
			in:   &bq.ErrorProto{Location: "L", Message: "M", Reason: "R"},
			want: &Error{Location: "L", Message: "M", Reason: "R"},
		},
	} {
		if got := errorFromErrorProto(test.in); !reflect.DeepEqual(got, test.want) {
			t.Errorf("%v: got %v, want %v", test.in, got, test.want)
		}
	}
}

func TestErrorString(t *testing.T) {
	e := &Error{Location: "<L>", Message: "<M>", Reason: "<R>"}
	got := e.Error()
	if !strings.Contains(got, "<L>") || !strings.Contains(got, "<M>") || !strings.Contains(got, "<R>") {
		t.Errorf(`got %q, expected to see "<L>", "<M>" and "<R>"`, got)
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/extract_op.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"fmt"

	"golang.org/x/net/context"
	bq "google.golang.org/api/bigquery/v2"
)

type extractOption interface {
	customizeExtract(conf *bq.JobConfigurationExtract)
}

// DisableHeader returns an Option that disables the printing of a header row in exported data.
func DisableHeader() Option { return disableHeader{} }

type disableHeader struct{}

func (opt disableHeader) implementsOption() {}

func (opt disableHeader) customizeExtract(conf *bq.JobConfigurationExtract) {
	f := false
	conf.PrintHeader = &f
}

func (c *Client) extract(ctx context.Context, dst *GCSReference, src *Table, options []Option) (*Job, error) {
	job, options := initJobProto(c.projectID, options)
	payload := &bq.JobConfigurationExtract{}

	dst.customizeExtractDst(payload)
	src.customizeExtractSrc(payload)

	for _, opt := range options {
		o, ok := opt.(extractOption)
		if !ok {
			return nil, fmt.Errorf("option (%#v) not applicable to dst/src pair: dst: %T ; src: %T", opt, dst, src)
		}
		o.customizeExtract(payload)
	}

	job.Configuration = &bq.JobConfiguration{
		Extract: payload,
	}
	return c.service.insertJob(ctx, job, c.projectID)
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/extract_test.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"reflect"
	"testing"

	"golang.org/x/net/context"

	bq "google.golang.org/api/bigquery/v2"
)

func defaultExtractJob() *bq.Job {
	return &bq.Job{
		Configuration: &bq.JobConfiguration{
			Extract: &bq.JobConfigurationExtract{
				SourceTable: &bq.TableReference{
					ProjectId: "project-id",
					DatasetId: "dataset-id",
					TableId:   "table-id",
				},
				DestinationUris: []string{"uri"},
			},
		},
	}
}

func TestExtract(t *testing.T) {
	testCases := []struct {
		dst     *GCSReference
		src     *Table
		options []Option
		want    *bq.Job
	}{
		{
			dst:  defaultGCS,
			src:  defaultTable(nil),
			want: defaultExtractJob(),
		},
		{
			dst: defaultGCS,
			src: defaultTable(nil),
			options: []Option{
				DisableHeader(),
			},
			want: func() *bq.Job {
				j := defaultExtractJob()
				f := false
				j.Configuration.Extract.PrintHeader = &f
				return j
			}(),
		},
		{
			dst: &GCSReference{
				uris:              []string{"uri"},
				Compression:       Gzip,
				DestinationFormat: JSON,
				FieldDelimiter:    "\t",
			},
			src: defaultTable(nil),
			want: func() *bq.Job {
				j := defaultExtractJob()
				j.Configuration.Extract.Compression = "GZIP"
				j.Configuration.Extract.DestinationFormat = "NEWLINE_DELIMITED_JSON"
				j.Configuration.Extract.FieldDelimiter = "\t"
				return j
			}(),
		},
	}

	for _, tc := range testCases {
		s := &testService{}
		c := &Client{
			service: s,
		}
		if _, err := c.Copy(context.Background(), tc.dst, tc.src, tc.options...); err != nil {
			t.Errorf("err calling extract: %v", err)
			continue
		}
		if !reflect.DeepEqual(s.Job, tc.want) {
			t.Errorf("extracting: got:\n%v\nwant:\n%v", s.Job, tc.want)
		}
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/gcs.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import bq "google.golang.org/api/bigquery/v2"

// GCSReference is a reference to one or more Google Cloud Storage objects, which together constitute
// an input or output to a BigQuery operation.
type GCSReference struct {
	uris []string

	// FieldDelimiter is the separator for fields in a CSV file, used when loading or exporting data.
	// The default is ",".
	FieldDelimiter string

	// The number of rows at the top of a CSV file that BigQuery will skip when loading the data.
	SkipLeadingRows int64

	// SourceFormat is the format of the GCS data to be loaded into BigQuery.
	// Allowed values are: CSV, JSON, DatastoreBackup.  The default is CSV.
	SourceFormat DataFormat
	// Only used when loading data.
	Encoding Encoding

	// Quote is the value used to quote data sections in a CSV file.
	// The default quotation character is the double quote ("), which is used if both Quote and ForceZeroQuote are unset.
	// To specify that no character should be interpreted as a quotation character, set ForceZeroQuote to true.
	// Only used when loading data.
	Quote          string
	ForceZeroQuote bool

	// DestinationFormat is the format to use when writing exported files.
	// Allowed values are: CSV, Avro, JSON.  The default is CSV.
	// CSV is not supported for tables with nested or repeated fields.
	DestinationFormat DataFormat
	// Only used when writing data.  Default is None.
	Compression Compression
}

func (gcs *GCSReference) implementsSource()      {}
func (gcs *GCSReference) implementsDestination() {}

// NewGCSReference constructs a reference to one or more Google Cloud Storage objects, which together constitute a data source or destination.
// In the simple case, a single URI in the form gs://bucket/object may refer to a single GCS object.
// Data may also be split into mutiple files, if multiple URIs or URIs containing wildcards are provided.
// Each URI may contain one '*' wildcard character, which (if present) must come after the bucket name.
// For more information about the treatment of wildcards and multiple URIs,
// see https://cloud.google.com/bigquery/exporting-data-from-bigquery#exportingmultiple
func (c *Client) NewGCSReference(uri ...string) *GCSReference {
	return &GCSReference{uris: uri}
}

type DataFormat string

const (
	CSV             DataFormat = "CSV"
	Avro            DataFormat = "AVRO"
	JSON            DataFormat = "NEWLINE_DELIMITED_JSON"
	DatastoreBackup DataFormat = "DATASTORE_BACKUP"
)

// Encoding specifies the character encoding of data to be loaded into BigQuery.
// See https://cloud.google.com/bigquery/docs/reference/v2/jobs#configuration.load.encoding
// for more details about how this is used.
type Encoding string

const (
	UTF_8      Encoding = "UTF-8"
	ISO_8859_1 Encoding = "ISO-8859-1"
)

// Compression is the type of compression to apply when writing data to Google Cloud Storage.
type Compression string

const (
	None Compression = "NONE"
	Gzip Compression = "GZIP"
)

func (gcs *GCSReference) customizeLoadSrc(conf *bq.JobConfigurationLoad) {
	conf.SourceUris = gcs.uris
	conf.SkipLeadingRows = gcs.SkipLeadingRows
	conf.SourceFormat = string(gcs.SourceFormat)
	conf.Encoding = string(gcs.Encoding)
	conf.FieldDelimiter = gcs.FieldDelimiter

	if gcs.ForceZeroQuote {
		quote := ""
		conf.Quote = &quote
	} else if gcs.Quote != "" {
		conf.Quote = &gcs.Quote
	}
}

func (gcs *GCSReference) customizeExtractDst(conf *bq.JobConfigurationExtract) {
	conf.DestinationUris = gcs.uris
	conf.Compression = string(gcs.Compression)
	conf.DestinationFormat = string(gcs.DestinationFormat)
	conf.FieldDelimiter = gcs.FieldDelimiter
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/integration_test.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"fmt"
	"net/http"
	"reflect"
	"testing"
	"time"

	"cloud.google.com/go/internal/testutil"
	"golang.org/x/net/context"
	"google.golang.org/api/googleapi"
	"google.golang.org/api/iterator"
	"google.golang.org/api/option"
)

func TestIntegration(t *testing.T) {
	if testing.Short() {
		t.Skip("Integration tests skipped in short mode")
	}

	ctx := context.Background()
	ts := testutil.TokenSource(ctx, Scope)
	if ts == nil {
		t.Skip("Integration tests skipped. See CONTRIBUTING.md for details")
	}

	projID := testutil.ProjID()
	c, err := NewClient(ctx, projID, option.WithTokenSource(ts))
	if err != nil {
		t.Fatal(err)
	}
	ds := c.Dataset("bigquery_integration_test")
	if err := ds.Create(ctx); err != nil && !hasStatusCode(err, http.StatusConflict) { // AlreadyExists is 409
		t.Fatal(err)
	}
	schema := Schema([]*FieldSchema{
		{Name: "name", Type: StringFieldType},
		{Name: "num", Type: IntegerFieldType},
	})
	table := ds.Table("t1")
	// Delete the table in case it already exists. (Ignore errors.)
	table.Delete(ctx)
	// Create the table.
	err = table.Create(ctx, schema, TableExpiration(time.Now().Add(5*time.Minute)))
	if err != nil {
		t.Fatal(err)
	}
	// Check table metadata.
	md, err := table.Metadata(ctx)
	if err != nil {
		t.Fatal(err)
	}
	// TODO(jba): check md more thorougly.
	if got, want := md.ID, fmt.Sprintf("%s:%s.%s", projID, ds.id, table.TableID); got != want {
		t.Errorf("metadata.ID: got %q, want %q", got, want)
	}
	if got, want := md.Type, RegularTable; got != want {
		t.Errorf("metadata.Type: got %v, want %v", got, want)
	}

	// List tables in the dataset.
	tables, err := ds.ListTables(ctx)
	if err != nil {
		t.Fatal(err)
	}
	if got, want := len(tables), 1; got != want {
		t.Fatalf("ListTables: got %d, want %d", got, want)
	}
	want := *table
	if got := tables[0]; !reflect.DeepEqual(got, &want) {
		t.Errorf("ListTables: got %v, want %v", got, &want)
	}

	// Iterate over tables in the dataset.
	it := ds.Tables(ctx)
	tables = nil
	for {
		tbl, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			t.Fatal(err)
		}
		tables = append(tables, tbl)
	}
	if got, want := tables, []*Table{table}; !reflect.DeepEqual(got, want) {
		t.Errorf("Tables: got %v, want %v", got, want)
	}

	// Populate the table.
	upl := table.NewUploader()
	var rows []*ValuesSaver
	for i, name := range []string{"a", "b", "c"} {
		rows = append(rows, &ValuesSaver{
			Schema:   schema,
			InsertID: name,
			Row:      []Value{name, i},
		})
	}
	if err := upl.Put(ctx, rows); err != nil {
		t.Fatal(err)
	}

	checkRead := func(src ReadSource) {
		it, err := c.Read(ctx, src)
		if err != nil {
			t.Fatal(err)
		}
		for i := 0; it.Next(ctx); i++ {
			var vals ValueList
			if err := it.Get(&vals); err != nil {
				t.Fatal(err)
			}
			if got, want := vals, rows[i].Row; !reflect.DeepEqual([]Value(got), want) {
				t.Errorf("got %v, want %v", got, want)
			}
		}
	}
	// Read the table.
	checkRead(table)

	// Query the table.
	q := &Query{
		Q:                "select name, num from t1",
		DefaultProjectID: projID,
		DefaultDatasetID: ds.id,
	}
	checkRead(q)

	// Query the long way.
	dest := &Table{}
	job1, err := c.Copy(ctx, dest, q, WriteTruncate)
	if err != nil {
		t.Fatal(err)
	}
	job2, err := c.JobFromID(ctx, job1.ID())
	if err != nil {
		t.Fatal(err)
	}
	// TODO(jba): poll status until job is done
	_, err = job2.Status(ctx)
	if err != nil {
		t.Fatal(err)
	}

	checkRead(job2)

	// TODO(jba): patch the table
}

func hasStatusCode(err error, code int) bool {
	if e, ok := err.(*googleapi.Error); ok && e.Code == code {
		return true
	}
	return false
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/iterator.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"errors"
	"fmt"

	"golang.org/x/net/context"
)

// A pageFetcher returns a page of rows, starting from the row specified by token.
type pageFetcher interface {
	fetch(ctx context.Context, s service, token string) (*readDataResult, error)
}

// Iterator provides access to the result of a BigQuery lookup.
// Next must be called before the first call to Get.
type Iterator struct {
	service service

	err error // contains any error encountered during calls to Next.

	// Once Next has been called at least once, schema has the result schema, rs contains the current
	// page of data, and nextToken contains the token for fetching the next
	// page (empty if there is no more data to be fetched).
	schema    Schema
	rs        [][]Value
	nextToken string

	// The remaining fields contain enough information to fetch the current
	// page of data, and determine which row of data from this page is the
	// current row.

	pf        pageFetcher
	pageToken string

	// The offset from the start of the current page to the current row.
	// For a new iterator, this is -1.
	offset int64
}

func newIterator(s service, pf pageFetcher) *Iterator {
	return &Iterator{
		service: s,
		pf:      pf,
		offset:  -1,
	}
}

// fetchPage loads the current page of data from the server.
// The contents of rs and nextToken are replaced with the loaded data.
// If there is an error while fetching, the error is stored in it.err and false is returned.
func (it *Iterator) fetchPage(ctx context.Context) bool {
	var res *readDataResult
	var err error
	for {
		res, err = it.pf.fetch(ctx, it.service, it.pageToken)
		if err != errIncompleteJob {
			break
		}
	}

	if err != nil {
		it.err = err
		return false
	}

	it.schema = res.schema
	it.rs = res.rows
	it.nextToken = res.pageToken
	return true
}

// getEnoughData loads new data into rs until offset no longer points beyond the end of rs.
func (it *Iterator) getEnoughData(ctx context.Context) bool {
	if len(it.rs) == 0 {
		// Either we have not yet fetched any pages, or we are iterating over an empty dataset.
		// In the former case, we should fetch a page of data, so that we can depend on the resultant nextToken.
		// In the latter case, it is harmless to fetch a page of data.
		if !it.fetchPage(ctx) {
			return false
		}
	}

	for it.offset >= int64(len(it.rs)) {
		// If offset is still outside the bounds of the loaded data,
		// but there are no more pages of data to fetch, then we have
		// failed to satisfy the offset.
		if it.nextToken == "" {
			return false
		}

		// offset cannot be satisfied with the currently loaded data,
		// so we fetch the next page.  We no longer need the existing
		// cached rows, so we remove them and update the offset to be
		// relative to the new page that we're about to fetch.
		// NOTE: we can't just set offset to 0, because after
		// marshalling/unmarshalling, it's possible for the offset to
		// point arbitrarily far beyond the end of rs.
		// This can happen if the server returns a different size
		// results page before and after marshalling.
		it.offset -= int64(len(it.rs))
		it.pageToken = it.nextToken
		if !it.fetchPage(ctx) {
			return false
		}
	}
	return true
}

// Next advances the Iterator to the next row, making that row available
// via the Get method.
// Next must be called before the first call to Get or Schema, and blocks until data is available.
// Next returns false when there are no more rows available, either because
// the end of the output was reached, or because there was an error (consult
// the Err method to determine which).
func (it *Iterator) Next(ctx context.Context) bool {
	if it.err != nil {
		return false
	}

	// Advance offset to where we want it to be for the next call to Get.
	it.offset++

	// offset may now point beyond the end of rs, so we fetch data
	// until offset is within its bounds again.  If there are no more
	// results available, offset will be left pointing beyond the bounds
	// of rs.
	// At the end of this method, rs will contain at least one element
	// unless the dataset we are iterating over is empty.
	return it.getEnoughData(ctx)
}

// Err returns the last error encountered by Next, or nil for no error.
func (it *Iterator) Err() error {
	return it.err
}

// verifyState checks that the iterator is pointing to a valid row.
func (it *Iterator) verifyState() error {
	if it.err != nil {
		return fmt.Errorf("called on iterator in error state: %v", it.err)
	}

	// If Next has been called, then offset should always index into a
	// valid row in rs, as long as there is still data available.
	if it.offset >= int64(len(it.rs)) || it.offset < 0 {
		return errors.New("called without preceding successful call to Next")
	}

	return nil
}

// Get loads the current row into dst, which must implement ValueLoader.
func (it *Iterator) Get(dst interface{}) error {
	if err := it.verifyState(); err != nil {
		return fmt.Errorf("Get %v", err)
	}

	if dst, ok := dst.(ValueLoader); ok {
		return dst.Load(it.rs[it.offset])
	}
	return errors.New("Get called with unsupported argument type")
}

// Schema returns the schema of the result rows.
func (it *Iterator) Schema() (Schema, error) {
	if err := it.verifyState(); err != nil {
		return nil, fmt.Errorf("Schema %v", err)
	}

	return it.schema, nil
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/iterator_test.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"errors"
	"fmt"
	"reflect"
	"testing"

	"golang.org/x/net/context"
)

type fetchResponse struct {
	result *readDataResult // The result to return.
	err    error           // The error to return.
}

// pageFetcherStub services fetch requests by returning data from an in-memory list of values.
type pageFetcherStub struct {
	fetchResponses map[string]fetchResponse

	err error
}

func (pf *pageFetcherStub) fetch(ctx context.Context, s service, token string) (*readDataResult, error) {
	call, ok := pf.fetchResponses[token]
	if !ok {
		pf.err = fmt.Errorf("Unexpected page token: %q", token)
	}
	return call.result, call.err
}

func TestIterator(t *testing.T) {
	fetchFailure := errors.New("fetch failure")

	testCases := []struct {
		desc            string
		alreadyConsumed int64 // amount to advance offset before commencing reading.
		fetchResponses  map[string]fetchResponse
		want            []ValueList
		wantErr         error
		wantSchema      Schema
	}{
		{
			desc: "Iteration over single empty page",
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "",
						rows:      [][]Value{},
						schema:    Schema{},
					},
				},
			},
			want:       []ValueList{},
			wantSchema: Schema{},
		},
		{
			desc: "Iteration over single page",
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "",
						rows:      [][]Value{{1, 2}, {11, 12}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
			},
			want: []ValueList{{1, 2}, {11, 12}},
			wantSchema: Schema{
				{Type: IntegerFieldType},
				{Type: IntegerFieldType},
			},
		},
		{
			desc: "Iteration over single page with different schema",
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "",
						rows:      [][]Value{{"1", 2}, {"11", 12}},
						schema: Schema{
							{Type: StringFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
			},
			want: []ValueList{{"1", 2}, {"11", 12}},
			wantSchema: Schema{
				{Type: StringFieldType},
				{Type: IntegerFieldType},
			},
		},
		{
			desc: "Iteration over two pages",
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "a",
						rows:      [][]Value{{1, 2}, {11, 12}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
				"a": {
					result: &readDataResult{
						pageToken: "",
						rows:      [][]Value{{101, 102}, {111, 112}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
			},
			want: []ValueList{{1, 2}, {11, 12}, {101, 102}, {111, 112}},
			wantSchema: Schema{
				{Type: IntegerFieldType},
				{Type: IntegerFieldType},
			},
		},
		{
			desc: "Server response includes empty page",
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "a",
						rows:      [][]Value{{1, 2}, {11, 12}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
				"a": {
					result: &readDataResult{
						pageToken: "b",
						rows:      [][]Value{},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
				"b": {
					result: &readDataResult{
						pageToken: "",
						rows:      [][]Value{{101, 102}, {111, 112}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
			},
			want: []ValueList{{1, 2}, {11, 12}, {101, 102}, {111, 112}},
			wantSchema: Schema{
				{Type: IntegerFieldType},
				{Type: IntegerFieldType},
			},
		},
		{
			desc: "Fetch error",
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "a",
						rows:      [][]Value{{1, 2}, {11, 12}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
				"a": {
					// We returns some data from this fetch, but also an error.
					// So the end result should include only data from the previous fetch.
					err: fetchFailure,
					result: &readDataResult{
						pageToken: "b",
						rows:      [][]Value{{101, 102}, {111, 112}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
			},
			want:    []ValueList{{1, 2}, {11, 12}},
			wantErr: fetchFailure,
			wantSchema: Schema{
				{Type: IntegerFieldType},
				{Type: IntegerFieldType},
			},
		},
		{
			desc:            "Skip over a single element",
			alreadyConsumed: 1,
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "a",
						rows:      [][]Value{{1, 2}, {11, 12}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
				"a": {
					result: &readDataResult{
						pageToken: "",
						rows:      [][]Value{{101, 102}, {111, 112}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
			},
			want: []ValueList{{11, 12}, {101, 102}, {111, 112}},
			wantSchema: Schema{
				{Type: IntegerFieldType},
				{Type: IntegerFieldType},
			},
		},
		{
			desc:            "Skip over an entire page",
			alreadyConsumed: 2,
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "a",
						rows:      [][]Value{{1, 2}, {11, 12}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
				"a": {
					result: &readDataResult{
						pageToken: "",
						rows:      [][]Value{{101, 102}, {111, 112}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
			},
			want: []ValueList{{101, 102}, {111, 112}},
			wantSchema: Schema{
				{Type: IntegerFieldType},
				{Type: IntegerFieldType},
			},
		},
		{
			desc:            "Skip beyond start of second page",
			alreadyConsumed: 3,
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "a",
						rows:      [][]Value{{1, 2}, {11, 12}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
				"a": {
					result: &readDataResult{
						pageToken: "",
						rows:      [][]Value{{101, 102}, {111, 112}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
			},
			want: []ValueList{{111, 112}},
			wantSchema: Schema{
				{Type: IntegerFieldType},
				{Type: IntegerFieldType},
			},
		},
		{
			desc:            "Skip beyond all data",
			alreadyConsumed: 4,
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "a",
						rows:      [][]Value{{1, 2}, {11, 12}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
				"a": {
					result: &readDataResult{
						pageToken: "",
						rows:      [][]Value{{101, 102}, {111, 112}},
						schema: Schema{
							{Type: IntegerFieldType},
							{Type: IntegerFieldType},
						},
					},
				},
			},
			// In this test case, Next will return false on its first call,
			// so we won't even attempt to call Get.
			want:       []ValueList{},
			wantSchema: Schema{},
		},
	}

	for _, tc := range testCases {
		pf := &pageFetcherStub{
			fetchResponses: tc.fetchResponses,
		}
		it := newIterator(nil, pf)
		it.offset += tc.alreadyConsumed

		values, schema, err := consumeIterator(it)
		if err != nil {
			t.Fatalf("%s: %v", tc.desc, err)
		}

		if (len(values) != 0 || len(tc.want) != 0) && !reflect.DeepEqual(values, tc.want) {
			t.Errorf("%s: values:\ngot: %v\nwant:%v", tc.desc, values, tc.want)
		}
		if it.Err() != tc.wantErr {
			t.Errorf("%s: iterator.Err:\ngot: %v\nwant: %v", tc.desc, it.Err(), tc.wantErr)
		}
		if (len(schema) != 0 || len(tc.wantSchema) != 0) && !reflect.DeepEqual(schema, tc.wantSchema) {
			t.Errorf("%s: iterator.Schema:\ngot: %v\nwant: %v", tc.desc, schema, tc.wantSchema)
		}
	}
}

// consumeIterator reads the schema and all values from an iterator and returns them.
func consumeIterator(it *Iterator) ([]ValueList, Schema, error) {
	var got []ValueList
	var schema Schema
	for it.Next(context.Background()) {
		var vals ValueList
		var err error
		if err = it.Get(&vals); err != nil {
			return nil, Schema{}, fmt.Errorf("err calling Get: %v", err)
		}
		got = append(got, vals)
		if schema, err = it.Schema(); err != nil {
			return nil, Schema{}, fmt.Errorf("err calling Schema: %v", err)
		}
	}

	return got, schema, nil
}

func TestGetBeforeNext(t *testing.T) {
	// TODO: once mashalling/unmarshalling of iterators is implemented, do a similar test for unmarshalled iterators.
	pf := &pageFetcherStub{
		fetchResponses: map[string]fetchResponse{
			"": {
				result: &readDataResult{
					pageToken: "",
					rows:      [][]Value{{1, 2}, {11, 12}},
				},
			},
		},
	}
	it := newIterator(nil, pf)
	var vals ValueList
	if err := it.Get(&vals); err == nil {
		t.Errorf("Expected error calling Get before Next")
	}
}

type delayedPageFetcher struct {
	pageFetcherStub
	delayCount int
}

func (pf *delayedPageFetcher) fetch(ctx context.Context, s service, token string) (*readDataResult, error) {
	if pf.delayCount > 0 {
		pf.delayCount--
		return nil, errIncompleteJob
	}
	return pf.pageFetcherStub.fetch(ctx, s, token)
}

func TestIterateIncompleteJob(t *testing.T) {
	want := []ValueList{{1, 2}, {11, 12}, {101, 102}, {111, 112}}
	pf := pageFetcherStub{
		fetchResponses: map[string]fetchResponse{
			"": {
				result: &readDataResult{
					pageToken: "a",
					rows:      [][]Value{{1, 2}, {11, 12}},
				},
			},
			"a": {
				result: &readDataResult{
					pageToken: "",
					rows:      [][]Value{{101, 102}, {111, 112}},
				},
			},
		},
	}
	dpf := &delayedPageFetcher{
		pageFetcherStub: pf,
		delayCount:      1,
	}
	it := newIterator(nil, dpf)

	values, _, err := consumeIterator(it)
	if err != nil {
		t.Fatal(err)
	}

	if (len(values) != 0 || len(want) != 0) && !reflect.DeepEqual(values, want) {
		t.Errorf("values: got:\n%v\nwant:\n%v", values, want)
	}
	if it.Err() != nil {
		t.Fatalf("iterator.Err: got:\n%v", it.Err())
	}
	if dpf.delayCount != 0 {
		t.Errorf("delayCount: got: %v, want: 0", dpf.delayCount)
	}
}

func TestGetDuringErrorState(t *testing.T) {
	pf := &pageFetcherStub{
		fetchResponses: map[string]fetchResponse{
			"": {err: errors.New("bang")},
		},
	}
	it := newIterator(nil, pf)
	var vals ValueList
	it.Next(context.Background())
	if it.Err() == nil {
		t.Errorf("Expected error after calling Next")
	}
	if err := it.Get(&vals); err == nil {
		t.Errorf("Expected error calling Get when iterator has a non-nil error.")
	}
}

func TestGetAfterFinished(t *testing.T) {
	testCases := []struct {
		alreadyConsumed int64 // amount to advance offset before commencing reading.
		fetchResponses  map[string]fetchResponse
		want            []ValueList
	}{
		{
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "",
						rows:      [][]Value{{1, 2}, {11, 12}},
					},
				},
			},
			want: []ValueList{{1, 2}, {11, 12}},
		},
		{
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "",
						rows:      [][]Value{},
					},
				},
			},
			want: []ValueList{},
		},
		{
			alreadyConsumed: 100,
			fetchResponses: map[string]fetchResponse{
				"": {
					result: &readDataResult{
						pageToken: "",
						rows:      [][]Value{{1, 2}, {11, 12}},
					},
				},
			},
			want: []ValueList{},
		},
	}

	for _, tc := range testCases {
		pf := &pageFetcherStub{
			fetchResponses: tc.fetchResponses,
		}
		it := newIterator(nil, pf)
		it.offset += tc.alreadyConsumed

		values, _, err := consumeIterator(it)
		if err != nil {
			t.Fatal(err)
		}

		if (len(values) != 0 || len(tc.want) != 0) && !reflect.DeepEqual(values, tc.want) {
			t.Errorf("values: got:\n%v\nwant:\n%v", values, tc.want)
		}
		if it.Err() != nil {
			t.Fatalf("iterator.Err: got:\n%v\nwant:\n:nil", it.Err())
		}
		// Try calling Get again.
		var vals ValueList
		if err := it.Get(&vals); err == nil {
			t.Errorf("Expected error calling Get when there are no more values")
		}
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/job.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"errors"

	"golang.org/x/net/context"
	bq "google.golang.org/api/bigquery/v2"
)

// A Job represents an operation which has been submitted to BigQuery for processing.
type Job struct {
	service   service
	projectID string
	jobID     string

	isQuery bool
}

// JobFromID creates a Job which refers to an existing BigQuery job. The job
// need not have been created by this package. For example, the job may have
// been created in the BigQuery console.
func (c *Client) JobFromID(ctx context.Context, id string) (*Job, error) {
	jobType, err := c.service.getJobType(ctx, c.projectID, id)
	if err != nil {
		return nil, err
	}

	return &Job{
		service:   c.service,
		projectID: c.projectID,
		jobID:     id,
		isQuery:   jobType == queryJobType,
	}, nil
}

func (j *Job) ID() string {
	return j.jobID
}

// State is one of a sequence of states that a Job progresses through as it is processed.
type State int

const (
	Pending State = iota
	Running
	Done
)

// JobStatus contains the current State of a job, and errors encountered while processing that job.
type JobStatus struct {
	State State

	err error

	// All errors encountered during the running of the job.
	// Not all Errors are fatal, so errors here do not necessarily mean that the job has completed or was unsuccessful.
	Errors []*Error
}

// jobOption is an Option which modifies a bq.Job proto.
// This is used for configuring values that apply to all operations, such as setting a jobReference.
type jobOption interface {
	customizeJob(job *bq.Job, projectID string)
}

type jobID string

// JobID returns an Option that sets the job ID of a BigQuery job.
// If this Option is not used, a job ID is generated automatically.
func JobID(ID string) Option {
	return jobID(ID)
}

func (opt jobID) implementsOption() {}

func (opt jobID) customizeJob(job *bq.Job, projectID string) {
	job.JobReference = &bq.JobReference{
		JobId:     string(opt),
		ProjectId: projectID,
	}
}

// Done reports whether the job has completed.
// After Done returns true, the Err method will return an error if the job completed unsuccesfully.
func (s *JobStatus) Done() bool {
	return s.State == Done
}

// Err returns the error that caused the job to complete unsuccesfully (if any).
func (s *JobStatus) Err() error {
	return s.err
}

// Status returns the current status of the job. It fails if the Status could not be determined.
func (j *Job) Status(ctx context.Context) (*JobStatus, error) {
	return j.service.jobStatus(ctx, j.projectID, j.jobID)
}

// Cancel requests that a job be cancelled. This method returns without waiting for
// cancellation to take effect. To check whether the job has terminated, use Job.Status.
// Cancelled jobs may still incur costs.
func (j *Job) Cancel(ctx context.Context) error {
	return j.service.jobCancel(ctx, j.projectID, j.jobID)
}

func (j *Job) implementsReadSource() {}

func (j *Job) customizeReadQuery(cursor *readQueryConf) error {
	// There are mulitple kinds of jobs, but only a query job is suitable for reading.
	if !j.isQuery {
		return errors.New("Cannot read from a non-query job")
	}

	cursor.projectID = j.projectID
	cursor.jobID = j.jobID
	return nil
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/legacy.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"fmt"

	"golang.org/x/net/context"
)

// OpenTable creates a handle to an existing BigQuery table. If the table does
// not already exist, subsequent uses of the *Table will fail.
//
// Deprecated: use Client.DatasetInProject.Table instead.
func (c *Client) OpenTable(projectID, datasetID, tableID string) *Table {
	return c.Table(projectID, datasetID, tableID)
}

// Table creates a handle to a BigQuery table.
//
// Use this method to reference a table in a project other than that of the
// Client.
//
// Deprecated: use Client.DatasetInProject.Table instead.
func (c *Client) Table(projectID, datasetID, tableID string) *Table {
	return &Table{ProjectID: projectID, DatasetID: datasetID, TableID: tableID, service: c.service}
}

// CreateTable creates a table in the BigQuery service and returns a handle to it.
//
// Deprecated: use Table.Create instead.
func (c *Client) CreateTable(ctx context.Context, projectID, datasetID, tableID string, options ...CreateTableOption) (*Table, error) {
	t := c.Table(projectID, datasetID, tableID)
	if err := t.Create(ctx, options...); err != nil {
		return nil, err
	}
	return t, nil
}

// Read fetches data from a ReadSource and returns the data via an Iterator.
//
// Deprecated: use Query.Read, Job.Read or Table.Read instead.
func (c *Client) Read(ctx context.Context, src ReadSource, options ...ReadOption) (*Iterator, error) {
	switch src := src.(type) {
	case *Job:
		return src.Read(ctx, options...)
	case *Query:
		// For compatibility, support Query values created by literal, rather
		// than Client.Query.
		if src.client == nil {
			src.client = c
		}
		return src.Read(ctx, options...)
	case *Table:
		return src.Read(ctx, options...)
	}
	return nil, fmt.Errorf("src (%T) does not support the Read operation", src)
}

// ListTables returns a list of all the tables contained in the Dataset.
//
// Deprecated: use Dataset.Tables instead.
func (d *Dataset) ListTables(ctx context.Context) ([]*Table, error) {
	var tables []*Table

	err := getPages("", func(pageToken string) (string, error) {
		ts, tok, err := d.service.listTables(ctx, d.projectID, d.id, -1, pageToken)
		if err == nil {
			tables = append(tables, ts...)
		}
		return tok, err
	})

	if err != nil {
		return nil, err
	}
	return tables, nil
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/load_op.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"fmt"

	"golang.org/x/net/context"
	bq "google.golang.org/api/bigquery/v2"
)

type loadOption interface {
	customizeLoad(conf *bq.JobConfigurationLoad)
}

// DestinationSchema returns an Option that specifies the schema to use when loading data into a new table.
// A DestinationSchema Option must be supplied when loading data from Google Cloud Storage into a non-existent table.
// Caveat: DestinationSchema is not required if the data being loaded is a datastore backup.
// schema must not be nil.
func DestinationSchema(schema Schema) Option { return destSchema{Schema: schema} }

type destSchema struct {
	Schema
}

func (opt destSchema) implementsOption() {}

func (opt destSchema) customizeLoad(conf *bq.JobConfigurationLoad) {
	conf.Schema = opt.asTableSchema()
}

// MaxBadRecords returns an Option that sets the maximum number of bad records that will be ignored.
// If this maximum is exceeded, the operation will be unsuccessful.
func MaxBadRecords(n int64) Option { return maxBadRecords(n) }

type maxBadRecords int64

func (opt maxBadRecords) implementsOption() {}

func (opt maxBadRecords) customizeLoad(conf *bq.JobConfigurationLoad) {
	conf.MaxBadRecords = int64(opt)
}

// AllowJaggedRows returns an Option that causes missing trailing optional columns to be tolerated in CSV data.  Missing values are treated as nulls.
func AllowJaggedRows() Option { return allowJaggedRows{} }

type allowJaggedRows struct{}

func (opt allowJaggedRows) implementsOption() {}

func (opt allowJaggedRows) customizeLoad(conf *bq.JobConfigurationLoad) {
	conf.AllowJaggedRows = true
}

// AllowQuotedNewlines returns an Option that allows quoted data sections containing newlines in CSV data.
func AllowQuotedNewlines() Option { return allowQuotedNewlines{} }

type allowQuotedNewlines struct{}

func (opt allowQuotedNewlines) implementsOption() {}

func (opt allowQuotedNewlines) customizeLoad(conf *bq.JobConfigurationLoad) {
	conf.AllowQuotedNewlines = true
}

// IgnoreUnknownValues returns an Option that causes values not matching the schema to be tolerated.
// Unknown values are ignored. For CSV this ignores extra values at the end of a line.
// For JSON this ignores named values that do not match any column name.
// If this Option is not used, records containing unknown values are treated as bad records.
// The MaxBadRecords Option can be used to customize how bad records are handled.
func IgnoreUnknownValues() Option { return ignoreUnknownValues{} }

type ignoreUnknownValues struct{}

func (opt ignoreUnknownValues) implementsOption() {}

func (opt ignoreUnknownValues) customizeLoad(conf *bq.JobConfigurationLoad) {
	conf.IgnoreUnknownValues = true
}

func (c *Client) load(ctx context.Context, dst *Table, src *GCSReference, options []Option) (*Job, error) {
	job, options := initJobProto(c.projectID, options)
	payload := &bq.JobConfigurationLoad{}

	dst.customizeLoadDst(payload)
	src.customizeLoadSrc(payload)

	for _, opt := range options {
		o, ok := opt.(loadOption)
		if !ok {
			return nil, fmt.Errorf("option (%#v) not applicable to dst/src pair: dst: %T ; src: %T", opt, dst, src)
		}
		o.customizeLoad(payload)
	}

	job.Configuration = &bq.JobConfiguration{
		Load: payload,
	}
	return c.service.insertJob(ctx, job, c.projectID)
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/load_test.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"reflect"
	"testing"

	"golang.org/x/net/context"

	bq "google.golang.org/api/bigquery/v2"
)

func defaultLoadJob() *bq.Job {
	return &bq.Job{
		Configuration: &bq.JobConfiguration{
			Load: &bq.JobConfigurationLoad{
				DestinationTable: &bq.TableReference{
					ProjectId: "project-id",
					DatasetId: "dataset-id",
					TableId:   "table-id",
				},
				SourceUris: []string{"uri"},
			},
		},
	}
}

func stringFieldSchema() *FieldSchema {
	return &FieldSchema{Name: "fieldname", Type: StringFieldType}
}

func nestedFieldSchema() *FieldSchema {
	return &FieldSchema{
		Name:   "nested",
		Type:   RecordFieldType,
		Schema: Schema{stringFieldSchema()},
	}
}

func bqStringFieldSchema() *bq.TableFieldSchema {
	return &bq.TableFieldSchema{
		Name: "fieldname",
		Type: "STRING",
	}
}

func bqNestedFieldSchema() *bq.TableFieldSchema {
	return &bq.TableFieldSchema{
		Name:   "nested",
		Type:   "RECORD",
		Fields: []*bq.TableFieldSchema{bqStringFieldSchema()},
	}
}

func TestLoad(t *testing.T) {
	testCases := []struct {
		dst     *Table
		src     *GCSReference
		options []Option
		want    *bq.Job
	}{
		{
			dst:  defaultTable(nil),
			src:  defaultGCS,
			want: defaultLoadJob(),
		},
		{
			dst: defaultTable(nil),
			src: defaultGCS,
			options: []Option{
				MaxBadRecords(1),
				AllowJaggedRows(),
				AllowQuotedNewlines(),
				IgnoreUnknownValues(),
			},
			want: func() *bq.Job {
				j := defaultLoadJob()
				j.Configuration.Load.MaxBadRecords = 1
				j.Configuration.Load.AllowJaggedRows = true
				j.Configuration.Load.AllowQuotedNewlines = true
				j.Configuration.Load.IgnoreUnknownValues = true
				return j
			}(),
		},
		{
			dst: &Table{
				ProjectID: "project-id",
				DatasetID: "dataset-id",
				TableID:   "table-id",
			},
			options: []Option{CreateNever, WriteTruncate},
			src:     defaultGCS,
			want: func() *bq.Job {
				j := defaultLoadJob()
				j.Configuration.Load.CreateDisposition = "CREATE_NEVER"
				j.Configuration.Load.WriteDisposition = "WRITE_TRUNCATE"
				return j
			}(),
		},
		{
			dst: &Table{
				ProjectID: "project-id",
				DatasetID: "dataset-id",
				TableID:   "table-id",
			},
			src: defaultGCS,
			options: []Option{
				DestinationSchema(Schema{
					stringFieldSchema(),
					nestedFieldSchema(),
				}),
			},
			want: func() *bq.Job {
				j := defaultLoadJob()
				j.Configuration.Load.Schema = &bq.TableSchema{
					Fields: []*bq.TableFieldSchema{
						bqStringFieldSchema(),
						bqNestedFieldSchema(),
					}}
				return j
			}(),
		},
		{
			dst: defaultTable(nil),
			src: &GCSReference{
				uris:            []string{"uri"},
				SkipLeadingRows: 1,
				SourceFormat:    JSON,
				Encoding:        UTF_8,
				FieldDelimiter:  "\t",
				Quote:           "-",
			},
			want: func() *bq.Job {
				j := defaultLoadJob()
				j.Configuration.Load.SkipLeadingRows = 1
				j.Configuration.Load.SourceFormat = "NEWLINE_DELIMITED_JSON"
				j.Configuration.Load.Encoding = "UTF-8"
				j.Configuration.Load.FieldDelimiter = "\t"
				hyphen := "-"
				j.Configuration.Load.Quote = &hyphen
				return j
			}(),
		},
		{
			dst: defaultTable(nil),
			src: &GCSReference{
				uris:  []string{"uri"},
				Quote: "",
			},
			want: func() *bq.Job {
				j := defaultLoadJob()
				j.Configuration.Load.Quote = nil
				return j
			}(),
		},
		{
			dst: defaultTable(nil),
			src: &GCSReference{
				uris:           []string{"uri"},
				Quote:          "",
				ForceZeroQuote: true,
			},
			want: func() *bq.Job {
				j := defaultLoadJob()
				empty := ""
				j.Configuration.Load.Quote = &empty
				return j
			}(),
		},
	}

	for _, tc := range testCases {
		s := &testService{}
		c := &Client{
			service: s,
		}
		if _, err := c.Copy(context.Background(), tc.dst, tc.src, tc.options...); err != nil {
			t.Errorf("err calling load: %v", err)
			continue
		}
		if !reflect.DeepEqual(s.Job, tc.want) {
			t.Errorf("loading: got:\n%v\nwant:\n%v", s.Job, tc.want)
		}
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/query.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import bq "google.golang.org/api/bigquery/v2"

// Query represents a query to be executed. Use Client.Query to create a query.
type Query struct {
	// The query to execute. See https://cloud.google.com/bigquery/query-reference for details.
	Q string

	// DefaultProjectID and DefaultDatasetID specify the dataset to use for unqualified table names in the query.
	// If DefaultProjectID is set, DefaultDatasetID must also be set.
	DefaultProjectID string
	DefaultDatasetID string

	client *Client
}

func (q *Query) implementsSource() {}

func (q *Query) implementsReadSource() {}

func (q *Query) customizeQuerySrc(conf *bq.JobConfigurationQuery) {
	conf.Query = q.Q
	if q.DefaultProjectID != "" || q.DefaultDatasetID != "" {
		conf.DefaultDataset = &bq.DatasetReference{
			DatasetId: q.DefaultDatasetID,
			ProjectId: q.DefaultProjectID,
		}
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/query_op.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"fmt"

	"golang.org/x/net/context"
	bq "google.golang.org/api/bigquery/v2"
)

type queryOption interface {
	customizeQuery(conf *bq.JobConfigurationQuery)
}

// DisableQueryCache returns an Option that prevents results being fetched from the query cache.
// If this Option is not used, results are fetched from the cache if they are available.
// The query cache is a best-effort cache that is flushed whenever tables in the query are modified.
// Cached results are only available when TableID is unspecified in the query's destination Table.
// For more information, see https://cloud.google.com/bigquery/querying-data#querycaching
func DisableQueryCache() Option { return disableQueryCache{} }

type disableQueryCache struct{}

func (opt disableQueryCache) implementsOption() {}

func (opt disableQueryCache) customizeQuery(conf *bq.JobConfigurationQuery) {
	f := false
	conf.UseQueryCache = &f
}

// DisableFlattenedResults returns an Option that prevents results being flattened.
// If this Option is not used, results from nested and repeated fields are flattened.
// DisableFlattenedResults implies AllowLargeResults
// For more information, see https://cloud.google.com/bigquery/docs/data#nested
func DisableFlattenedResults() Option { return disableFlattenedResults{} }

type disableFlattenedResults struct{}

func (opt disableFlattenedResults) implementsOption() {}

func (opt disableFlattenedResults) customizeQuery(conf *bq.JobConfigurationQuery) {
	f := false
	conf.FlattenResults = &f
	// DisableFlattenedResults implies AllowLargeResults
	allowLargeResults{}.customizeQuery(conf)
}

// AllowLargeResults returns an Option that allows the query to produce arbitrarily large result tables.
// The destination must be a table.
// When using this option, queries will take longer to execute, even if the result set is small.
// For additional limitations, see https://cloud.google.com/bigquery/querying-data#largequeryresults
func AllowLargeResults() Option { return allowLargeResults{} }

type allowLargeResults struct{}

func (opt allowLargeResults) implementsOption() {}

func (opt allowLargeResults) customizeQuery(conf *bq.JobConfigurationQuery) {
	conf.AllowLargeResults = true
}

// JobPriority returns an Option that causes a query to be scheduled with the specified priority.
// The default priority is InteractivePriority.
// For more information, see https://cloud.google.com/bigquery/querying-data#batchqueries
func JobPriority(priority string) Option { return jobPriority(priority) }

type jobPriority string

func (opt jobPriority) implementsOption() {}

func (opt jobPriority) customizeQuery(conf *bq.JobConfigurationQuery) {
	conf.Priority = string(opt)
}

const (
	BatchPriority       = "BATCH"
	InteractivePriority = "INTERACTIVE"
)

// MaxBillingTier returns an Option that sets the maximum billing tier for a Query.
// Queries that have resource usage beyond this tier will fail (without
// incurring a charge). If this Option is not used, the project default will be used.
func MaxBillingTier(tier int) Option { return maxBillingTier(tier) }

type maxBillingTier int

func (opt maxBillingTier) implementsOption() {}

func (opt maxBillingTier) customizeQuery(conf *bq.JobConfigurationQuery) {
	tier := int64(opt)
	conf.MaximumBillingTier = &tier
}

// MaxBytesBilled returns an Option that limits the number of bytes billed for
// this job.  Queries that would exceed this limit will fail (without incurring
// a charge).
// If this Option is not used, or bytes is < 1, the project default will be
// used.
func MaxBytesBilled(bytes int64) Option { return maxBytesBilled(bytes) }

type maxBytesBilled int64

func (opt maxBytesBilled) implementsOption() {}

func (opt maxBytesBilled) customizeQuery(conf *bq.JobConfigurationQuery) {
	if opt >= 1 {
		conf.MaximumBytesBilled = int64(opt)
	}
}

func (c *Client) query(ctx context.Context, dst *Table, src *Query, options []Option) (*Job, error) {
	job, options := initJobProto(c.projectID, options)
	payload := &bq.JobConfigurationQuery{}

	dst.customizeQueryDst(payload)
	src.customizeQuerySrc(payload)

	for _, opt := range options {
		o, ok := opt.(queryOption)
		if !ok {
			return nil, fmt.Errorf("option (%#v) not applicable to dst/src pair: dst: %T ; src: %T", opt, dst, src)
		}
		o.customizeQuery(payload)
	}

	job.Configuration = &bq.JobConfiguration{
		Query: payload,
	}
	j, err := c.service.insertJob(ctx, job, c.projectID)
	if err != nil {
		return nil, err
	}
	j.isQuery = true
	return j, nil
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/query_test.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"reflect"
	"testing"

	"golang.org/x/net/context"

	bq "google.golang.org/api/bigquery/v2"
)

func defaultQueryJob() *bq.Job {
	return &bq.Job{
		Configuration: &bq.JobConfiguration{
			Query: &bq.JobConfigurationQuery{
				DestinationTable: &bq.TableReference{
					ProjectId: "project-id",
					DatasetId: "dataset-id",
					TableId:   "table-id",
				},
				Query: "query string",
				DefaultDataset: &bq.DatasetReference{
					ProjectId: "def-project-id",
					DatasetId: "def-dataset-id",
				},
			},
		},
	}
}

func TestQuery(t *testing.T) {
	testCases := []struct {
		dst     *Table
		src     *Query
		options []Option
		want    *bq.Job
	}{
		{
			dst:  defaultTable(nil),
			src:  defaultQuery,
			want: defaultQueryJob(),
		},
		{
			dst: defaultTable(nil),
			src: &Query{
				Q: "query string",
			},
			want: func() *bq.Job {
				j := defaultQueryJob()
				j.Configuration.Query.DefaultDataset = nil
				return j
			}(),
		},
		{
			dst: &Table{},
			src: defaultQuery,
			want: func() *bq.Job {
				j := defaultQueryJob()
				j.Configuration.Query.DestinationTable = nil
				return j
			}(),
		},
		{
			dst: &Table{
				ProjectID: "project-id",
				DatasetID: "dataset-id",
				TableID:   "table-id",
			},
			src:     defaultQuery,
			options: []Option{CreateNever, WriteTruncate},
			want: func() *bq.Job {
				j := defaultQueryJob()
				j.Configuration.Query.WriteDisposition = "WRITE_TRUNCATE"
				j.Configuration.Query.CreateDisposition = "CREATE_NEVER"
				return j
			}(),
		},
		{
			dst:     defaultTable(nil),
			src:     defaultQuery,
			options: []Option{DisableQueryCache()},
			want: func() *bq.Job {
				j := defaultQueryJob()
				f := false
				j.Configuration.Query.UseQueryCache = &f
				return j
			}(),
		},
		{
			dst:     defaultTable(nil),
			src:     defaultQuery,
			options: []Option{AllowLargeResults()},
			want: func() *bq.Job {
				j := defaultQueryJob()
				j.Configuration.Query.AllowLargeResults = true
				return j
			}(),
		},
		{
			dst:     defaultTable(nil),
			src:     defaultQuery,
			options: []Option{DisableFlattenedResults()},
			want: func() *bq.Job {
				j := defaultQueryJob()
				f := false
				j.Configuration.Query.FlattenResults = &f
				j.Configuration.Query.AllowLargeResults = true
				return j
			}(),
		},
		{
			dst:     defaultTable(nil),
			src:     defaultQuery,
			options: []Option{JobPriority("low")},
			want: func() *bq.Job {
				j := defaultQueryJob()
				j.Configuration.Query.Priority = "low"
				return j
			}(),
		},
		{
			dst:     defaultTable(nil),
			src:     defaultQuery,
			options: []Option{MaxBillingTier(3), MaxBytesBilled(5)},
			want: func() *bq.Job {
				j := defaultQueryJob()
				tier := int64(3)
				j.Configuration.Query.MaximumBillingTier = &tier
				j.Configuration.Query.MaximumBytesBilled = 5
				return j
			}(),
		},
		{
			dst:     defaultTable(nil),
			src:     defaultQuery,
			options: []Option{MaxBytesBilled(-1)},
			want:    defaultQueryJob(),
		},
	}

	for _, tc := range testCases {
		s := &testService{}
		c := &Client{
			service: s,
		}
		if _, err := c.Copy(context.Background(), tc.dst, tc.src, tc.options...); err != nil {
			t.Errorf("err calling query: %v", err)
			continue
		}
		if !reflect.DeepEqual(s.Job, tc.want) {
			t.Errorf("querying: got:\n%v\nwant:\n%v", s.Job, tc.want)
		}
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/read_op.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import "golang.org/x/net/context"

// RecordsPerRequest returns a ReadOption that sets the number of records to fetch per request when streaming data from BigQuery.
func RecordsPerRequest(n int64) ReadOption { return recordsPerRequest(n) }

type recordsPerRequest int64

func (opt recordsPerRequest) customizeRead(conf *pagingConf) {
	conf.recordsPerRequest = int64(opt)
	conf.setRecordsPerRequest = true
}

// StartIndex returns a ReadOption that sets the zero-based index of the row to start reading from.
func StartIndex(i uint64) ReadOption { return startIndex(i) }

type startIndex uint64

func (opt startIndex) customizeRead(conf *pagingConf) {
	conf.startIndex = uint64(opt)
}

func (conf *readTableConf) fetch(ctx context.Context, s service, token string) (*readDataResult, error) {
	return s.readTabledata(ctx, conf, token)
}

// Read fetches the contents of the table.
func (t *Table) Read(_ context.Context, options ...ReadOption) (*Iterator, error) {
	conf := &readTableConf{}
	t.customizeReadSrc(conf)

	for _, o := range options {
		o.customizeRead(&conf.paging)
	}

	return newIterator(t.service, conf), nil
}

func (conf *readQueryConf) fetch(ctx context.Context, s service, token string) (*readDataResult, error) {
	return s.readQuery(ctx, conf, token)
}

// Read fetches the results of a query job.
func (j *Job) Read(_ context.Context, options ...ReadOption) (*Iterator, error) {
	conf := &readQueryConf{}
	if err := j.customizeReadQuery(conf); err != nil {
		return nil, err
	}

	for _, o := range options {
		o.customizeRead(&conf.paging)
	}

	return newIterator(j.service, conf), nil
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/read_test.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"errors"
	"reflect"
	"testing"

	"golang.org/x/net/context"
)

type readTabledataArgs struct {
	conf *readTableConf
	tok  string
}

type readQueryArgs struct {
	conf *readQueryConf
	tok  string
}

// readServiceStub services read requests by returning data from an in-memory list of values.
type readServiceStub struct {
	// values and pageTokens are used as sources of data to return in response to calls to readTabledata or readQuery.
	values     [][][]Value       // contains pages / rows / columns.
	pageTokens map[string]string // maps incoming page token to returned page token.

	// arguments are recorded for later inspection.
	readTabledataCalls []readTabledataArgs
	readQueryCalls     []readQueryArgs

	service
}

func (s *readServiceStub) readValues(tok string) *readDataResult {
	result := &readDataResult{
		pageToken: s.pageTokens[tok],
		rows:      s.values[0],
	}
	s.values = s.values[1:]

	return result
}
func (s *readServiceStub) readTabledata(ctx context.Context, conf *readTableConf, token string) (*readDataResult, error) {
	s.readTabledataCalls = append(s.readTabledataCalls, readTabledataArgs{conf, token})
	return s.readValues(token), nil
}

func (s *readServiceStub) readQuery(ctx context.Context, conf *readQueryConf, token string) (*readDataResult, error) {
	s.readQueryCalls = append(s.readQueryCalls, readQueryArgs{conf, token})
	return s.readValues(token), nil
}

func TestRead(t *testing.T) {
	// The data for the service stub to return is populated for each test case in the testCases for loop.
	service := &readServiceStub{}
	c := &Client{
		service: service,
	}

	queryJob := &Job{
		projectID: "project-id",
		jobID:     "job-id",
		service:   service,
		isQuery:   true,
	}

	for _, src := range []ReadSource{defaultTable(service), queryJob} {
		testCases := []struct {
			data       [][][]Value
			pageTokens map[string]string
			want       []ValueList
		}{
			{
				data:       [][][]Value{{{1, 2}, {11, 12}}, {{30, 40}, {31, 41}}},
				pageTokens: map[string]string{"": "a", "a": ""},
				want:       []ValueList{{1, 2}, {11, 12}, {30, 40}, {31, 41}},
			},
			{
				data:       [][][]Value{{{1, 2}, {11, 12}}, {{30, 40}, {31, 41}}},
				pageTokens: map[string]string{"": ""}, // no more pages after first one.
				want:       []ValueList{{1, 2}, {11, 12}},
			},
		}

		for _, tc := range testCases {
			service.values = tc.data
			service.pageTokens = tc.pageTokens
			if got, ok := doRead(t, c, src); ok {
				if !reflect.DeepEqual(got, tc.want) {
					t.Errorf("reading: got:\n%v\nwant:\n%v", got, tc.want)
				}
			}
		}
	}
}

// doRead calls Read with a ReadSource. Get is repeatedly called on the Iterator returned by Read and the results are returned.
func doRead(t *testing.T, c *Client, src ReadSource) ([]ValueList, bool) {
	it, err := c.Read(context.Background(), src)
	if err != nil {
		t.Errorf("err calling Read: %v", err)
		return nil, false
	}
	var got []ValueList
	for it.Next(context.Background()) {
		var vals ValueList
		if err := it.Get(&vals); err != nil {
			t.Errorf("err calling Get: %v", err)
			return nil, false
		} else {
			got = append(got, vals)
		}
	}

	return got, true
}

func TestNoMoreValues(t *testing.T) {
	c := &Client{
		service: &readServiceStub{
			values: [][][]Value{{{1, 2}, {11, 12}}},
		},
	}
	it, err := c.Read(context.Background(), defaultTable(c.service))
	if err != nil {
		t.Fatalf("err calling Read: %v", err)
	}
	var vals ValueList
	// We expect to retrieve two values and then fail on the next attempt.
	if !it.Next(context.Background()) {
		t.Fatalf("Next: got: false: want: true")
	}
	if !it.Next(context.Background()) {
		t.Fatalf("Next: got: false: want: true")
	}
	if err := it.Get(&vals); err != nil {
		t.Fatalf("Get: got: %v: want: nil", err)
	}
	if it.Next(context.Background()) {
		t.Fatalf("Next: got: true: want: false")
	}
	if err := it.Get(&vals); err == nil {
		t.Fatalf("Get: got: %v: want: non-nil", err)
	}
}

// delayedReadStub simulates reading results from a query that has not yet
// completed. Its readQuery method initially reports that the query job is not
// yet complete. Subsequently, it proxies the request through to another
// service stub.
type delayedReadStub struct {
	numDelays int

	readServiceStub
}

func (s *delayedReadStub) readQuery(ctx context.Context, conf *readQueryConf, token string) (*readDataResult, error) {
	if s.numDelays > 0 {
		s.numDelays--
		return nil, errIncompleteJob
	}
	return s.readServiceStub.readQuery(ctx, conf, token)
}

// TestIncompleteJob tests that an Iterator which reads from a query job will block until the job is complete.
func TestIncompleteJob(t *testing.T) {
	service := &delayedReadStub{
		numDelays: 2,
		readServiceStub: readServiceStub{
			values: [][][]Value{{{1, 2}}},
		},
	}
	c := &Client{service: service}
	queryJob := &Job{
		projectID: "project-id",
		jobID:     "job-id",
		service:   service,
		isQuery:   true,
	}
	it, err := c.Read(context.Background(), queryJob)
	if err != nil {
		t.Fatalf("err calling Read: %v", err)
	}
	var got ValueList
	want := ValueList{1, 2}
	if !it.Next(context.Background()) {
		t.Fatalf("Next: got: false: want: true")
	}
	if err := it.Get(&got); err != nil {
		t.Fatalf("Error calling Get: %v", err)
	}
	if service.numDelays != 0 {
		t.Errorf("remaining numDelays : got: %v want:0", service.numDelays)
	}
	if !reflect.DeepEqual(got, want) {
		t.Errorf("reading: got:\n%v\nwant:\n%v", got, want)
	}
}

type errorReadService struct {
	service
}

func (s *errorReadService) readTabledata(ctx context.Context, conf *readTableConf, token string) (*readDataResult, error) {
	return nil, errors.New("bang!")
}

func TestReadError(t *testing.T) {
	// test that service read errors are propagated back to the caller.
	c := &Client{service: &errorReadService{}}
	it, err := c.Read(context.Background(), defaultTable(c.service))
	if err != nil {
		// Read should not return an error; only Err should.
		t.Fatalf("err calling Read: %v", err)
	}
	if it.Next(context.Background()) {
		t.Fatalf("Next: got: true: want: false")
	}
	if err := it.Err(); err.Error() != "bang!" {
		t.Fatalf("Get: got: %v: want: bang!", err)
	}
}

func TestReadTabledataOptions(t *testing.T) {
	// test that read options are propagated.
	s := &readServiceStub{
		values: [][][]Value{{{1, 2}}},
	}
	c := &Client{service: s}
	it, err := c.Read(context.Background(), defaultTable(s), RecordsPerRequest(5))

	if err != nil {
		t.Fatalf("err calling Read: %v", err)
	}
	if !it.Next(context.Background()) {
		t.Fatalf("Next: got: false: want: true")
	}

	want := []readTabledataArgs{{
		conf: &readTableConf{
			projectID: "project-id",
			datasetID: "dataset-id",
			tableID:   "table-id",
			paging: pagingConf{
				recordsPerRequest:    5,
				setRecordsPerRequest: true,
			},
		},
		tok: "",
	}}

	if !reflect.DeepEqual(s.readTabledataCalls, want) {
		t.Errorf("reading: got:\n%v\nwant:\n%v", s.readTabledataCalls, want)
	}
}

func TestReadQueryOptions(t *testing.T) {
	// test that read options are propagated.
	s := &readServiceStub{
		values: [][][]Value{{{1, 2}}},
	}
	c := &Client{service: s}

	queryJob := &Job{
		projectID: "project-id",
		jobID:     "job-id",
		service:   s,
		isQuery:   true,
	}
	it, err := c.Read(context.Background(), queryJob, RecordsPerRequest(5))

	if err != nil {
		t.Fatalf("err calling Read: %v", err)
	}
	if !it.Next(context.Background()) {
		t.Fatalf("Next: got: false: want: true")
	}

	want := []readQueryArgs{{
		conf: &readQueryConf{
			projectID: "project-id",
			jobID:     "job-id",
			paging: pagingConf{
				recordsPerRequest:    5,
				setRecordsPerRequest: true,
			},
		},
		tok: "",
	}}

	if !reflect.DeepEqual(s.readQueryCalls, want) {
		t.Errorf("reading: got:\n%v\nwant:\n%v", s.readQueryCalls, want)
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/schema.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"errors"
	"reflect"

	bq "google.golang.org/api/bigquery/v2"
)

// Schema describes the fields in a table or query result.
type Schema []*FieldSchema

type FieldSchema struct {
	// The field name.
	// Must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_),
	// and must start with a letter or underscore.
	// The maximum length is 128 characters.
	Name string

	// A description of the field. The maximum length is 16,384 characters.
	Description string

	// Whether the field may contain multiple values.
	Repeated bool
	// Whether the field is required.  Ignored if Repeated is true.
	Required bool

	// The field data type.  If Type is Record, then this field contains a nested schema,
	// which is described by Schema.
	Type FieldType
	// Describes the nested schema if Type is set to Record.
	Schema Schema
}

func (fs *FieldSchema) asTableFieldSchema() *bq.TableFieldSchema {
	tfs := &bq.TableFieldSchema{
		Description: fs.Description,
		Name:        fs.Name,
		Type:        string(fs.Type),
	}

	if fs.Repeated {
		tfs.Mode = "REPEATED"
	} else if fs.Required {
		tfs.Mode = "REQUIRED"
	} // else leave as default, which is interpreted as NULLABLE.

	for _, f := range fs.Schema {
		tfs.Fields = append(tfs.Fields, f.asTableFieldSchema())
	}

	return tfs
}

func (s Schema) asTableSchema() *bq.TableSchema {
	var fields []*bq.TableFieldSchema
	for _, f := range s {
		fields = append(fields, f.asTableFieldSchema())
	}
	return &bq.TableSchema{Fields: fields}
}

// customizeCreateTable allows a Schema to be used directly as an option to CreateTable.
func (s Schema) customizeCreateTable(conf *createTableConf) {
	conf.schema = s.asTableSchema()
}

func convertTableFieldSchema(tfs *bq.TableFieldSchema) *FieldSchema {
	fs := &FieldSchema{
		Description: tfs.Description,
		Name:        tfs.Name,
		Repeated:    tfs.Mode == "REPEATED",
		Required:    tfs.Mode == "REQUIRED",
		Type:        FieldType(tfs.Type),
	}

	for _, f := range tfs.Fields {
		fs.Schema = append(fs.Schema, convertTableFieldSchema(f))
	}
	return fs
}

func convertTableSchema(ts *bq.TableSchema) Schema {
	var s Schema
	for _, f := range ts.Fields {
		s = append(s, convertTableFieldSchema(f))
	}
	return s
}

type FieldType string

const (
	StringFieldType    FieldType = "STRING"
	IntegerFieldType   FieldType = "INTEGER"
	FloatFieldType     FieldType = "FLOAT"
	BooleanFieldType   FieldType = "BOOLEAN"
	TimestampFieldType FieldType = "TIMESTAMP"
	RecordFieldType    FieldType = "RECORD"
)

var errNoStruct = errors.New("bigquery: can only infer schema from struct or pointer to struct")
var errUnsupportedFieldType = errors.New("bigquery: unsupported type of field in struct")

// InferSchema tries to derive a BigQuery schema from the supplied struct value.
// NOTE: All fields in the returned Schema are configured to be required,
// unless the corresponding field in the supplied struct is a slice or array.
// It is considered an error if the struct (including nested structs) contains
// any exported fields that are pointers or one of the following types:
// map, interface, complex64, complex128, func, chan.
// In these cases, an error will be returned.
// Future versions may handle these cases without error.
func InferSchema(st interface{}) (Schema, error) {
	return inferStruct(reflect.TypeOf(st))
}

func inferStruct(rt reflect.Type) (Schema, error) {
	switch rt.Kind() {
	case reflect.Struct:
		return inferFields(rt)
	default:
		return nil, errNoStruct
	}

}

// inferFieldSchema infers the FieldSchema for a Go type
func inferFieldSchema(rt reflect.Type) (*FieldSchema, error) {
	switch {
	case isByteSlice(rt):
		return &FieldSchema{Required: true, Type: StringFieldType}, nil
	case isTimeTime(rt):
		return &FieldSchema{Required: true, Type: TimestampFieldType}, nil
	case isRepeated(rt):
		et := rt.Elem()

		if isRepeated(et) && !isByteSlice(et) {
			// Multi dimensional slices/arrays are not supported by BigQuery
			return nil, errUnsupportedFieldType
		}

		f, err := inferFieldSchema(et)
		if err != nil {
			return nil, err
		}
		f.Repeated = true
		f.Required = false
		return f, nil
	case isStruct(rt):
		nested, err := inferFields(rt)
		if err != nil {
			return nil, err
		}
		return &FieldSchema{Required: true, Type: RecordFieldType, Schema: nested}, nil
	}

	switch rt.Kind() {
	case reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Int,
		reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uint, reflect.Uintptr:
		return &FieldSchema{Required: true, Type: IntegerFieldType}, nil
	case reflect.String:
		return &FieldSchema{Required: true, Type: StringFieldType}, nil
	case reflect.Bool:
		return &FieldSchema{Required: true, Type: BooleanFieldType}, nil
	case reflect.Float32, reflect.Float64:
		return &FieldSchema{Required: true, Type: FloatFieldType}, nil
	default:
		return nil, errUnsupportedFieldType
	}
}

// inferFields extracts all exported field types from struct type.
func inferFields(rt reflect.Type) (Schema, error) {
	var s Schema

	for i := 0; i < rt.NumField(); i++ {
		field := rt.Field(i)
		if field.PkgPath != "" {
			// field is unexported.
			continue
		}

		if field.Anonymous {
			// TODO(nightlyone) support embedded (see https://github.com/GoogleCloudPlatform/google-cloud-go/issues/238)
			return nil, errUnsupportedFieldType
		}

		f, err := inferFieldSchema(field.Type)
		if err != nil {
			return nil, err
		}
		f.Name = field.Name

		s = append(s, f)
	}

	return s, nil
}

func isByteSlice(rt reflect.Type) bool {
	return rt.Kind() == reflect.Slice && rt.Elem().Kind() == reflect.Uint8
}

func isTimeTime(rt reflect.Type) bool {
	return rt.PkgPath() == "time" && rt.Name() == "Time"
}

func isStruct(rt reflect.Type) bool {
	return rt.Kind() == reflect.Struct
}

func isRepeated(rt reflect.Type) bool {
	switch rt.Kind() {
	case reflect.Slice, reflect.Array:
		return true
	default:
		return false
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/schema_test.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"fmt"
	"reflect"
	"testing"
	"time"

	bq "google.golang.org/api/bigquery/v2"
)

func (fs *FieldSchema) GoString() string {
	if fs == nil {
		return "<nil>"
	}

	return fmt.Sprintf("{Name:%s Description:%s Repeated:%t Required:%t Type:%s Schema:%s}",
		fs.Name,
		fs.Description,
		fs.Repeated,
		fs.Required,
		fs.Type,
		fmt.Sprintf("%#v", fs.Schema),
	)
}

func bqTableFieldSchema(desc, name, typ, mode string) *bq.TableFieldSchema {
	return &bq.TableFieldSchema{
		Description: desc,
		Name:        name,
		Mode:        mode,
		Type:        typ,
	}
}

func fieldSchema(desc, name, typ string, repeated, required bool) *FieldSchema {
	return &FieldSchema{
		Description: desc,
		Name:        name,
		Repeated:    repeated,
		Required:    required,
		Type:        FieldType(typ),
	}
}

func TestSchemaConversion(t *testing.T) {
	testCases := []struct {
		schema   Schema
		bqSchema *bq.TableSchema
	}{
		{
			// required
			bqSchema: &bq.TableSchema{
				Fields: []*bq.TableFieldSchema{
					bqTableFieldSchema("desc", "name", "STRING", "REQUIRED"),
				},
			},
			schema: Schema{
				fieldSchema("desc", "name", "STRING", false, true),
			},
		},
		{
			// repeated
			bqSchema: &bq.TableSchema{
				Fields: []*bq.TableFieldSchema{
					bqTableFieldSchema("desc", "name", "STRING", "REPEATED"),
				},
			},
			schema: Schema{
				fieldSchema("desc", "name", "STRING", true, false),
			},
		},
		{
			// nullable, string
			bqSchema: &bq.TableSchema{
				Fields: []*bq.TableFieldSchema{
					bqTableFieldSchema("desc", "name", "STRING", ""),
				},
			},
			schema: Schema{
				fieldSchema("desc", "name", "STRING", false, false),
			},
		},
		{
			// integer
			bqSchema: &bq.TableSchema{
				Fields: []*bq.TableFieldSchema{
					bqTableFieldSchema("desc", "name", "INTEGER", ""),
				},
			},
			schema: Schema{
				fieldSchema("desc", "name", "INTEGER", false, false),
			},
		},
		{
			// float
			bqSchema: &bq.TableSchema{
				Fields: []*bq.TableFieldSchema{
					bqTableFieldSchema("desc", "name", "FLOAT", ""),
				},
			},
			schema: Schema{
				fieldSchema("desc", "name", "FLOAT", false, false),
			},
		},
		{
			// boolean
			bqSchema: &bq.TableSchema{
				Fields: []*bq.TableFieldSchema{
					bqTableFieldSchema("desc", "name", "BOOLEAN", ""),
				},
			},
			schema: Schema{
				fieldSchema("desc", "name", "BOOLEAN", false, false),
			},
		},
		{
			// timestamp
			bqSchema: &bq.TableSchema{
				Fields: []*bq.TableFieldSchema{
					bqTableFieldSchema("desc", "name", "TIMESTAMP", ""),
				},
			},
			schema: Schema{
				fieldSchema("desc", "name", "TIMESTAMP", false, false),
			},
		},
		{
			// nested
			bqSchema: &bq.TableSchema{
				Fields: []*bq.TableFieldSchema{
					{
						Description: "An outer schema wrapping a nested schema",
						Name:        "outer",
						Mode:        "REQUIRED",
						Type:        "RECORD",
						Fields: []*bq.TableFieldSchema{
							bqTableFieldSchema("inner field", "inner", "STRING", ""),
						},
					},
				},
			},
			schema: Schema{
				&FieldSchema{
					Description: "An outer schema wrapping a nested schema",
					Name:        "outer",
					Required:    true,
					Type:        "RECORD",
					Schema: []*FieldSchema{
						{
							Description: "inner field",
							Name:        "inner",
							Type:        "STRING",
						},
					},
				},
			},
		},
	}

	for _, tc := range testCases {
		bqSchema := tc.schema.asTableSchema()
		if !reflect.DeepEqual(bqSchema, tc.bqSchema) {
			t.Errorf("converting to TableSchema: got:\n%v\nwant:\n%v", bqSchema, tc.bqSchema)
		}
		schema := convertTableSchema(tc.bqSchema)
		if !reflect.DeepEqual(schema, tc.schema) {
			t.Errorf("converting to Schema: got:\n%v\nwant:\n%v", schema, tc.schema)
		}
	}
}

type allStrings struct {
	String    string
	ByteSlice []byte
}

type allSignedIntegers struct {
	Int64 int64
	Int32 int32
	Int16 int16
	Int8  int8
	Int   int
}

type allUnsignedIntegers struct {
	Uint64  uint64
	Uint32  uint32
	Uint16  uint16
	Uint8   uint8
	Uintptr uintptr
	Uint    uint
}

type allFloat struct {
	Float64 float64
	Float32 float32
	// NOTE: Complex32 and Complex64 are unsupported by BigQuery
}

type allBoolean struct {
	Bool bool
}

type allTime struct {
	Time time.Time
}

func TestSimpleInference(t *testing.T) {
	testCases := []struct {
		in   interface{}
		want Schema
	}{
		{
			in: allSignedIntegers{},
			want: Schema{
				fieldSchema("", "Int64", "INTEGER", false, true),
				fieldSchema("", "Int32", "INTEGER", false, true),
				fieldSchema("", "Int16", "INTEGER", false, true),
				fieldSchema("", "Int8", "INTEGER", false, true),
				fieldSchema("", "Int", "INTEGER", false, true),
			},
		},
		{
			in: allUnsignedIntegers{},
			want: Schema{
				fieldSchema("", "Uint64", "INTEGER", false, true),
				fieldSchema("", "Uint32", "INTEGER", false, true),
				fieldSchema("", "Uint16", "INTEGER", false, true),
				fieldSchema("", "Uint8", "INTEGER", false, true),
				fieldSchema("", "Uintptr", "INTEGER", false, true),
				fieldSchema("", "Uint", "INTEGER", false, true),
			},
		},
		{
			in: allFloat{},
			want: Schema{
				fieldSchema("", "Float64", "FLOAT", false, true),
				fieldSchema("", "Float32", "FLOAT", false, true),
			},
		},
		{
			in: allBoolean{},
			want: Schema{
				fieldSchema("", "Bool", "BOOLEAN", false, true),
			},
		},
		{
			in: allTime{},
			want: Schema{
				fieldSchema("", "Time", "TIMESTAMP", false, true),
			},
		},
		{
			in: allStrings{},
			want: Schema{
				fieldSchema("", "String", "STRING", false, true),
				fieldSchema("", "ByteSlice", "STRING", false, true),
			},
		},
	}
	for i, tc := range testCases {
		got, err := InferSchema(tc.in)
		if err != nil {
			t.Fatalf("%d: error inferring TableSchema: %v", i, err)
		}
		if !reflect.DeepEqual(got, tc.want) {
			t.Errorf("%d: inferring TableSchema: got:\n%#v\nwant:\n%#v", i, got, tc.want)
		}
	}
}

type containsNested struct {
	hidden    string
	NotNested int
	Nested    struct {
		Inside int
	}
}

type containsDoubleNested struct {
	NotNested int
	Nested    struct {
		InsideNested struct {
			Inside int
		}
	}
}

func TestNestedInference(t *testing.T) {
	testCases := []struct {
		in   interface{}
		want Schema
	}{
		{
			in: containsNested{},
			want: Schema{
				fieldSchema("", "NotNested", "INTEGER", false, true),
				&FieldSchema{
					Name:     "Nested",
					Required: true,
					Type:     "RECORD",
					Schema: []*FieldSchema{
						{
							Name:     "Inside",
							Type:     "INTEGER",
							Required: true,
						},
					},
				},
			},
		},
		{
			in: containsDoubleNested{},
			want: Schema{
				fieldSchema("", "NotNested", "INTEGER", false, true),
				&FieldSchema{
					Name:     "Nested",
					Required: true,
					Type:     "RECORD",
					Schema: []*FieldSchema{
						{
							Name:     "InsideNested",
							Required: true,
							Type:     "RECORD",
							Schema: []*FieldSchema{
								{
									Name:     "Inside",
									Type:     "INTEGER",
									Required: true,
								},
							},
						},
					},
				},
			},
		},
	}

	for i, tc := range testCases {
		got, err := InferSchema(tc.in)
		if err != nil {
			t.Fatalf("%d: error inferring TableSchema: %v", i, err)
		}
		if !reflect.DeepEqual(got, tc.want) {
			t.Errorf("%d: inferring TableSchema: got:\n%#v\nwant:\n%#v", i, got, tc.want)
		}
	}
}

type simpleRepeated struct {
	NotRepeated       []byte
	RepeatedByteSlice [][]byte
	Repeated          []int
}

type simpleNestedRepeated struct {
	NotRepeated int
	Repeated    []struct {
		Inside int
	}
}

func TestRepeatedInference(t *testing.T) {
	testCases := []struct {
		in   interface{}
		want Schema
	}{
		{
			in: simpleRepeated{},
			want: Schema{
				fieldSchema("", "NotRepeated", "STRING", false, true),
				fieldSchema("", "RepeatedByteSlice", "STRING", true, false),
				fieldSchema("", "Repeated", "INTEGER", true, false),
			},
		},
		{
			in: simpleNestedRepeated{},
			want: Schema{
				fieldSchema("", "NotRepeated", "INTEGER", false, true),
				&FieldSchema{
					Name:     "Repeated",
					Repeated: true,
					Type:     "RECORD",
					Schema: []*FieldSchema{
						{
							Name:     "Inside",
							Type:     "INTEGER",
							Required: true,
						},
					},
				},
			},
		},
	}

	for i, tc := range testCases {
		got, err := InferSchema(tc.in)
		if err != nil {
			t.Fatalf("%d: error inferring TableSchema: %v", i, err)
		}
		if !reflect.DeepEqual(got, tc.want) {
			t.Errorf("%d: inferring TableSchema: got:\n%#v\nwant:\n%#v", i, got, tc.want)
		}
	}
}

type Embedded struct {
	Embedded int
}

type nestedEmbedded struct {
	Embedded
}

func TestSchemaErrors(t *testing.T) {
	testCases := []struct {
		in  interface{}
		err error
	}{
		{
			in:  []byte{},
			err: errNoStruct,
		},
		{
			in:  new(int),
			err: errNoStruct,
		},
		{
			in:  new(allStrings),
			err: errNoStruct,
		},
		{
			in:  struct{ Complex complex64 }{},
			err: errUnsupportedFieldType,
		},
		{
			in:  struct{ Map map[string]int }{},
			err: errUnsupportedFieldType,
		},
		{
			in:  struct{ Chan chan bool }{},
			err: errUnsupportedFieldType,
		},
		{
			in:  struct{ Ptr *int }{},
			err: errUnsupportedFieldType,
		},
		{
			in:  struct{ Interface interface{} }{},
			err: errUnsupportedFieldType,
		},
		{
			in:  struct{ MultiDimensional [][]int }{},
			err: errUnsupportedFieldType,
		},
		{
			in:  struct{ MultiDimensional [][][]byte }{},
			err: errUnsupportedFieldType,
		},
		{
			in:  struct{ ChanSlice []chan bool }{},
			err: errUnsupportedFieldType,
		},
		{
			in:  struct{ NestedChan struct{ Chan []chan bool } }{},
			err: errUnsupportedFieldType,
		},
		{
			in:  nestedEmbedded{},
			err: errUnsupportedFieldType,
		},
	}
	for i, tc := range testCases {
		want := tc.err
		_, got := InferSchema(tc.in)
		if !reflect.DeepEqual(got, want) {
			t.Errorf("%d: inferring TableSchema: got:\n%#v\nwant:\n%#v", i, got, want)
		}
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/service.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"errors"
	"fmt"
	"net/http"
	"sync"
	"time"

	"golang.org/x/net/context"
	bq "google.golang.org/api/bigquery/v2"
)

// service provides an internal abstraction to isolate the generated
// BigQuery API; most of this package uses this interface instead.
// The single implementation, *bigqueryService, contains all the knowledge
// of the generated BigQuery API.
type service interface {
	// Jobs
	insertJob(ctx context.Context, job *bq.Job, projectId string) (*Job, error)
	getJobType(ctx context.Context, projectId, jobID string) (jobType, error)
	jobCancel(ctx context.Context, projectId, jobID string) error
	jobStatus(ctx context.Context, projectId, jobID string) (*JobStatus, error)

	// Tables
	createTable(ctx context.Context, conf *createTableConf) error
	getTableMetadata(ctx context.Context, projectID, datasetID, tableID string) (*TableMetadata, error)
	deleteTable(ctx context.Context, projectID, datasetID, tableID string) error
	listTables(ctx context.Context, projectID, datasetID string, pageSize int, pageToken string) ([]*Table, string, error)
	patchTable(ctx context.Context, projectID, datasetID, tableID string, conf *patchTableConf) (*TableMetadata, error)

	// Table data
	readTabledata(ctx context.Context, conf *readTableConf, pageToken string) (*readDataResult, error)
	insertRows(ctx context.Context, projectID, datasetID, tableID string, rows []*insertionRow, conf *insertRowsConf) error

	// Datasets
	insertDataset(ctx context.Context, datasetID, projectID string) error

	// Misc

	// readQuery reads data resulting from a query job. If the job is
	// incomplete, an errIncompleteJob is returned. readQuery may be called
	// repeatedly to poll for job completion.
	readQuery(ctx context.Context, conf *readQueryConf, pageToken string) (*readDataResult, error)
	listDatasets(ctx context.Context, projectID string, maxResults int, pageToken string, all bool, filter string) ([]*Dataset, string, error)
}

type bigqueryService struct {
	s *bq.Service
}

func newBigqueryService(client *http.Client, endpoint string) (*bigqueryService, error) {
	s, err := bq.New(client)
	if err != nil {
		return nil, fmt.Errorf("constructing bigquery client: %v", err)
	}
	s.BasePath = endpoint

	return &bigqueryService{s: s}, nil
}

// getPages calls the supplied getPage function repeatedly until there are no pages left to get.
// token is the token of the initial page to start from.  Use an empty string to start from the beginning.
func getPages(token string, getPage func(token string) (nextToken string, err error)) error {
	for {
		var err error
		token, err = getPage(token)
		if err != nil {
			return err
		}
		if token == "" {
			return nil
		}
	}
}

func (s *bigqueryService) insertJob(ctx context.Context, job *bq.Job, projectID string) (*Job, error) {
	res, err := s.s.Jobs.Insert(projectID, job).Context(ctx).Do()
	if err != nil {
		return nil, err
	}
	return &Job{service: s, projectID: projectID, jobID: res.JobReference.JobId}, nil
}

type pagingConf struct {
	recordsPerRequest    int64
	setRecordsPerRequest bool

	startIndex uint64
}

type readTableConf struct {
	projectID, datasetID, tableID string
	paging                        pagingConf
	schema                        Schema // lazily initialized when the first page of data is fetched.
}

type readDataResult struct {
	pageToken string
	rows      [][]Value
	totalRows uint64
	schema    Schema
}

type readQueryConf struct {
	projectID, jobID string
	paging           pagingConf
}

func (s *bigqueryService) readTabledata(ctx context.Context, conf *readTableConf, pageToken string) (*readDataResult, error) {
	// Prepare request to fetch one page of table data.
	req := s.s.Tabledata.List(conf.projectID, conf.datasetID, conf.tableID)

	if pageToken != "" {
		req.PageToken(pageToken)
	} else {
		req.StartIndex(conf.paging.startIndex)
	}

	if conf.paging.setRecordsPerRequest {
		req.MaxResults(conf.paging.recordsPerRequest)
	}

	// Fetch the table schema in the background, if necessary.
	var schemaErr error
	var schemaFetch sync.WaitGroup
	if conf.schema == nil {
		schemaFetch.Add(1)
		go func() {
			defer schemaFetch.Done()
			var t *bq.Table
			t, schemaErr = s.s.Tables.Get(conf.projectID, conf.datasetID, conf.tableID).
				Fields("schema").
				Context(ctx).
				Do()
			if schemaErr == nil && t.Schema != nil {
				conf.schema = convertTableSchema(t.Schema)
			}
		}()
	}

	res, err := req.Context(ctx).Do()
	if err != nil {
		return nil, err
	}

	schemaFetch.Wait()
	if schemaErr != nil {
		return nil, schemaErr
	}

	result := &readDataResult{
		pageToken: res.PageToken,
		totalRows: uint64(res.TotalRows),
		schema:    conf.schema,
	}
	result.rows, err = convertRows(res.Rows, conf.schema)
	if err != nil {
		return nil, err
	}
	return result, nil
}

var errIncompleteJob = errors.New("internal error: query results not available because job is not complete")

// getQueryResultsTimeout controls the maximum duration of a request to the
// BigQuery GetQueryResults endpoint.  Setting a long timeout here does not
// cause increased overall latency, as results are returned as soon as they are
// available.
const getQueryResultsTimeout = time.Minute

func (s *bigqueryService) readQuery(ctx context.Context, conf *readQueryConf, pageToken string) (*readDataResult, error) {
	req := s.s.Jobs.GetQueryResults(conf.projectID, conf.jobID).
		TimeoutMs(getQueryResultsTimeout.Nanoseconds() / 1e6)

	if pageToken != "" {
		req.PageToken(pageToken)
	} else {
		req.StartIndex(conf.paging.startIndex)
	}

	if conf.paging.setRecordsPerRequest {
		req.MaxResults(conf.paging.recordsPerRequest)
	}

	res, err := req.Context(ctx).Do()
	if err != nil {
		return nil, err
	}

	if !res.JobComplete {
		return nil, errIncompleteJob
	}
	schema := convertTableSchema(res.Schema)
	result := &readDataResult{
		pageToken: res.PageToken,
		totalRows: res.TotalRows,
		schema:    schema,
	}
	result.rows, err = convertRows(res.Rows, schema)
	if err != nil {
		return nil, err
	}
	return result, nil
}

type insertRowsConf struct {
	templateSuffix      string
	ignoreUnknownValues bool
	skipInvalidRows     bool
}

func (s *bigqueryService) insertRows(ctx context.Context, projectID, datasetID, tableID string, rows []*insertionRow, conf *insertRowsConf) error {
	req := &bq.TableDataInsertAllRequest{
		TemplateSuffix:      conf.templateSuffix,
		IgnoreUnknownValues: conf.ignoreUnknownValues,
		SkipInvalidRows:     conf.skipInvalidRows,
	}
	for _, row := range rows {
		m := make(map[string]bq.JsonValue)
		for k, v := range row.Row {
			m[k] = bq.JsonValue(v)
		}
		req.Rows = append(req.Rows, &bq.TableDataInsertAllRequestRows{
			InsertId: row.InsertID,
			Json:     m,
		})
	}
	res, err := s.s.Tabledata.InsertAll(projectID, datasetID, tableID, req).Context(ctx).Do()
	if err != nil {
		return err
	}
	if len(res.InsertErrors) == 0 {
		return nil
	}

	var errs PutMultiError
	for _, e := range res.InsertErrors {
		if int(e.Index) > len(rows) {
			return fmt.Errorf("internal error: unexpected row index: %v", e.Index)
		}
		rie := RowInsertionError{
			InsertID: rows[e.Index].InsertID,
			RowIndex: int(e.Index),
		}
		for _, errp := range e.Errors {
			rie.Errors = append(rie.Errors, errorFromErrorProto(errp))
		}
		errs = append(errs, rie)
	}
	return errs
}

type jobType int

const (
	copyJobType jobType = iota
	extractJobType
	loadJobType
	queryJobType
)

func (s *bigqueryService) getJobType(ctx context.Context, projectID, jobID string) (jobType, error) {
	res, err := s.s.Jobs.Get(projectID, jobID).
		Fields("configuration").
		Context(ctx).
		Do()

	if err != nil {
		return 0, err
	}

	switch {
	case res.Configuration.Copy != nil:
		return copyJobType, nil
	case res.Configuration.Extract != nil:
		return extractJobType, nil
	case res.Configuration.Load != nil:
		return loadJobType, nil
	case res.Configuration.Query != nil:
		return queryJobType, nil
	default:
		return 0, errors.New("unknown job type")
	}
}

func (s *bigqueryService) jobCancel(ctx context.Context, projectID, jobID string) error {
	// Jobs.Cancel returns a job entity, but the only relevant piece of
	// data it may contain (the status of the job) is unreliable.  From the
	// docs: "This call will return immediately, and the client will need
	// to poll for the job status to see if the cancel completed
	// successfully".  So it would be misleading to return a status.
	_, err := s.s.Jobs.Cancel(projectID, jobID).
		Fields(). // We don't need any of the response data.
		Context(ctx).
		Do()
	return err
}

func (s *bigqueryService) jobStatus(ctx context.Context, projectID, jobID string) (*JobStatus, error) {
	res, err := s.s.Jobs.Get(projectID, jobID).
		Fields("status"). // Only fetch what we need.
		Context(ctx).
		Do()
	if err != nil {
		return nil, err
	}
	return jobStatusFromProto(res.Status)
}

var stateMap = map[string]State{"PENDING": Pending, "RUNNING": Running, "DONE": Done}

func jobStatusFromProto(status *bq.JobStatus) (*JobStatus, error) {
	state, ok := stateMap[status.State]
	if !ok {
		return nil, fmt.Errorf("unexpected job state: %v", status.State)
	}

	newStatus := &JobStatus{
		State: state,
		err:   nil,
	}
	if err := errorFromErrorProto(status.ErrorResult); state == Done && err != nil {
		newStatus.err = err
	}

	for _, ep := range status.Errors {
		newStatus.Errors = append(newStatus.Errors, errorFromErrorProto(ep))
	}
	return newStatus, nil
}

// listTables returns a subset of tables that belong to a dataset, and a token for fetching the next subset.
func (s *bigqueryService) listTables(ctx context.Context, projectID, datasetID string, pageSize int, pageToken string) ([]*Table, string, error) {
	var tables []*Table
	req := s.s.Tables.List(projectID, datasetID).
		PageToken(pageToken).
		Context(ctx)
	if pageSize > 0 {
		req.MaxResults(int64(pageSize))
	}
	res, err := req.Do()
	if err != nil {
		return nil, "", err
	}
	for _, t := range res.Tables {
		tables = append(tables, s.convertListedTable(t))
	}
	return tables, res.NextPageToken, nil
}

type createTableConf struct {
	projectID, datasetID, tableID string
	expiration                    time.Time
	viewQuery                     string
	schema                        *bq.TableSchema
}

// createTable creates a table in the BigQuery service.
// expiration is an optional time after which the table will be deleted and its storage reclaimed.
// If viewQuery is non-empty, the created table will be of type VIEW.
// Note: expiration can only be set during table creation.
// Note: after table creation, a view can be modified only if its table was initially created with a view.
func (s *bigqueryService) createTable(ctx context.Context, conf *createTableConf) error {
	table := &bq.Table{
		TableReference: &bq.TableReference{
			ProjectId: conf.projectID,
			DatasetId: conf.datasetID,
			TableId:   conf.tableID,
		},
	}
	if !conf.expiration.IsZero() {
		table.ExpirationTime = conf.expiration.UnixNano() / 1000
	}
	// TODO(jba): make it impossible to provide both a view query and a schema.
	if conf.viewQuery != "" {
		table.View = &bq.ViewDefinition{
			Query: conf.viewQuery,
		}
	}
	if conf.schema != nil {
		table.Schema = conf.schema
	}

	_, err := s.s.Tables.Insert(conf.projectID, conf.datasetID, table).Context(ctx).Do()
	return err
}

func (s *bigqueryService) getTableMetadata(ctx context.Context, projectID, datasetID, tableID string) (*TableMetadata, error) {
	table, err := s.s.Tables.Get(projectID, datasetID, tableID).Context(ctx).Do()
	if err != nil {
		return nil, err
	}
	return bqTableToMetadata(table), nil
}

func (s *bigqueryService) deleteTable(ctx context.Context, projectID, datasetID, tableID string) error {
	return s.s.Tables.Delete(projectID, datasetID, tableID).Context(ctx).Do()
}

func bqTableToMetadata(t *bq.Table) *TableMetadata {
	md := &TableMetadata{
		Description: t.Description,
		Name:        t.FriendlyName,
		Type:        TableType(t.Type),
		ID:          t.Id,
		NumBytes:    t.NumBytes,
		NumRows:     t.NumRows,
	}
	if t.ExpirationTime != 0 {
		md.ExpirationTime = time.Unix(0, t.ExpirationTime*1e6)
	}
	if t.CreationTime != 0 {
		md.CreationTime = time.Unix(0, t.CreationTime*1e6)
	}
	if t.LastModifiedTime != 0 {
		md.LastModifiedTime = time.Unix(0, int64(t.LastModifiedTime*1e6))
	}
	if t.Schema != nil {
		md.Schema = convertTableSchema(t.Schema)
	}
	if t.View != nil {
		md.View = t.View.Query
	}

	return md
}

func (s *bigqueryService) convertListedTable(t *bq.TableListTables) *Table {
	return &Table{
		ProjectID: t.TableReference.ProjectId,
		DatasetID: t.TableReference.DatasetId,
		TableID:   t.TableReference.TableId,
		service:   s,
	}
}

// patchTableConf contains fields to be patched.
type patchTableConf struct {
	// These fields are omitted from the patch operation if nil.
	Description *string
	Name        *string
}

func (s *bigqueryService) patchTable(ctx context.Context, projectID, datasetID, tableID string, conf *patchTableConf) (*TableMetadata, error) {
	t := &bq.Table{}
	forceSend := func(field string) {
		t.ForceSendFields = append(t.ForceSendFields, field)
	}

	if conf.Description != nil {
		t.Description = *conf.Description
		forceSend("Description")
	}
	if conf.Name != nil {
		t.FriendlyName = *conf.Name
		forceSend("FriendlyName")
	}
	table, err := s.s.Tables.Patch(projectID, datasetID, tableID, t).
		Context(ctx).
		Do()
	if err != nil {
		return nil, err
	}
	return bqTableToMetadata(table), nil
}

func (s *bigqueryService) insertDataset(ctx context.Context, datasetID, projectID string) error {
	ds := &bq.Dataset{
		DatasetReference: &bq.DatasetReference{DatasetId: datasetID},
	}
	_, err := s.s.Datasets.Insert(projectID, ds).Context(ctx).Do()
	return err
}

func (s *bigqueryService) listDatasets(ctx context.Context, projectID string, maxResults int, pageToken string, all bool, filter string) ([]*Dataset, string, error) {
	req := s.s.Datasets.List(projectID).
		Context(ctx).
		PageToken(pageToken).
		All(all)
	if maxResults > 0 {
		req.MaxResults(int64(maxResults))
	}
	if filter != "" {
		req.Filter(filter)
	}
	res, err := req.Do()
	if err != nil {
		return nil, "", err
	}
	var datasets []*Dataset
	for _, d := range res.Datasets {
		datasets = append(datasets, s.convertListedDataset(d))
	}
	return datasets, res.NextPageToken, nil
}

func (s *bigqueryService) convertListedDataset(d *bq.DatasetListDatasets) *Dataset {
	return &Dataset{
		projectID: d.DatasetReference.ProjectId,
		id:        d.DatasetReference.DatasetId,
		service:   s,
	}
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/table.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"fmt"
	"time"

	"golang.org/x/net/context"

	bq "google.golang.org/api/bigquery/v2"
)

// A Table is a reference to a BigQuery table.
type Table struct {
	// ProjectID, DatasetID and TableID may be omitted if the Table is the destination for a query.
	// In this case the result will be stored in an ephemeral table.
	ProjectID string
	DatasetID string
	// TableID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_).
	// The maximum length is 1,024 characters.
	TableID string

	service service
}

// TableMetadata contains information about a BigQuery table.
type TableMetadata struct {
	Description string // The user-friendly description of this table.
	Name        string // The user-friendly name for this table.
	Schema      Schema
	View        string

	ID   string // An opaque ID uniquely identifying the table.
	Type TableType

	// The time when this table expires. If not set, the table will persist
	// indefinitely. Expired tables will be deleted and their storage reclaimed.
	ExpirationTime time.Time

	CreationTime     time.Time
	LastModifiedTime time.Time

	// The size of the table in bytes.
	// This does not include data that is being buffered during a streaming insert.
	NumBytes int64

	// The number of rows of data in this table.
	// This does not include data that is being buffered during a streaming insert.
	NumRows uint64
}

// Tables is a group of tables. The tables may belong to differing projects or datasets.
type Tables []*Table

// CreateDisposition specifies the circumstances under which destination table will be created.
// Default is CreateIfNeeded.
type TableCreateDisposition string

const (
	// The table will be created if it does not already exist.  Tables are created atomically on successful completion of a job.
	CreateIfNeeded TableCreateDisposition = "CREATE_IF_NEEDED"

	// The table must already exist and will not be automatically created.
	CreateNever TableCreateDisposition = "CREATE_NEVER"
)

func CreateDisposition(disp TableCreateDisposition) Option { return disp }

func (opt TableCreateDisposition) implementsOption() {}

func (opt TableCreateDisposition) customizeLoad(conf *bq.JobConfigurationLoad) {
	conf.CreateDisposition = string(opt)
}

func (opt TableCreateDisposition) customizeCopy(conf *bq.JobConfigurationTableCopy) {
	conf.CreateDisposition = string(opt)
}

func (opt TableCreateDisposition) customizeQuery(conf *bq.JobConfigurationQuery) {
	conf.CreateDisposition = string(opt)
}

// TableWriteDisposition specifies how existing data in a destination table is treated.
// Default is WriteAppend.
type TableWriteDisposition string

const (
	// Data will be appended to any existing data in the destination table.
	// Data is appended atomically on successful completion of a job.
	WriteAppend TableWriteDisposition = "WRITE_APPEND"

	// Existing data in the destination table will be overwritten.
	// Data is overwritten atomically on successful completion of a job.
	WriteTruncate TableWriteDisposition = "WRITE_TRUNCATE"

	// Writes will fail if the destination table already contains data.
	WriteEmpty TableWriteDisposition = "WRITE_EMPTY"
)

func WriteDisposition(disp TableWriteDisposition) Option { return disp }

func (opt TableWriteDisposition) implementsOption() {}

func (opt TableWriteDisposition) customizeLoad(conf *bq.JobConfigurationLoad) {
	conf.WriteDisposition = string(opt)
}

func (opt TableWriteDisposition) customizeCopy(conf *bq.JobConfigurationTableCopy) {
	conf.WriteDisposition = string(opt)
}

func (opt TableWriteDisposition) customizeQuery(conf *bq.JobConfigurationQuery) {
	conf.WriteDisposition = string(opt)
}

// TableType is the type of table.
type TableType string

const (
	RegularTable TableType = "TABLE"
	ViewTable    TableType = "VIEW"
)

func (t *Table) implementsSource()      {}
func (t *Table) implementsReadSource()  {}
func (t *Table) implementsDestination() {}
func (ts Tables) implementsSource()     {}

func (t *Table) tableRefProto() *bq.TableReference {
	return &bq.TableReference{
		ProjectId: t.ProjectID,
		DatasetId: t.DatasetID,
		TableId:   t.TableID,
	}
}

// FullyQualifiedName returns the ID of the table in projectID:datasetID.tableID format.
func (t *Table) FullyQualifiedName() string {
	return fmt.Sprintf("%s:%s.%s", t.ProjectID, t.DatasetID, t.TableID)
}

// implicitTable reports whether Table is an empty placeholder, which signifies that a new table should be created with an auto-generated Table ID.
func (t *Table) implicitTable() bool {
	return t.ProjectID == "" && t.DatasetID == "" && t.TableID == ""
}

func (t *Table) customizeLoadDst(conf *bq.JobConfigurationLoad) {
	conf.DestinationTable = t.tableRefProto()
}

func (t *Table) customizeExtractSrc(conf *bq.JobConfigurationExtract) {
	conf.SourceTable = t.tableRefProto()
}

func (t *Table) customizeCopyDst(conf *bq.JobConfigurationTableCopy) {
	conf.DestinationTable = t.tableRefProto()
}

func (ts Tables) customizeCopySrc(conf *bq.JobConfigurationTableCopy) {
	for _, t := range ts {
		conf.SourceTables = append(conf.SourceTables, t.tableRefProto())
	}
}

func (t *Table) customizeQueryDst(conf *bq.JobConfigurationQuery) {
	if !t.implicitTable() {
		conf.DestinationTable = t.tableRefProto()
	}
}

func (t *Table) customizeReadSrc(cursor *readTableConf) {
	cursor.projectID = t.ProjectID
	cursor.datasetID = t.DatasetID
	cursor.tableID = t.TableID
}

// Create creates a table in the BigQuery service.
func (t *Table) Create(ctx context.Context, options ...CreateTableOption) error {
	conf := &createTableConf{
		projectID: t.ProjectID,
		datasetID: t.DatasetID,
		tableID:   t.TableID,
	}
	for _, o := range options {
		o.customizeCreateTable(conf)
	}
	return t.service.createTable(ctx, conf)
}

// Metadata fetches the metadata for the table.
func (t *Table) Metadata(ctx context.Context) (*TableMetadata, error) {
	return t.service.getTableMetadata(ctx, t.ProjectID, t.DatasetID, t.TableID)
}

// Delete deletes the table.
func (t *Table) Delete(ctx context.Context) error {
	return t.service.deleteTable(ctx, t.ProjectID, t.DatasetID, t.TableID)
}

// A CreateTableOption is an optional argument to CreateTable.
type CreateTableOption interface {
	customizeCreateTable(*createTableConf)
}

type tableExpiration time.Time

// TableExpiration returns a CreateTableOption that will cause the created table to be deleted after the expiration time.
func TableExpiration(exp time.Time) CreateTableOption { return tableExpiration(exp) }

func (opt tableExpiration) customizeCreateTable(conf *createTableConf) {
	conf.expiration = time.Time(opt)
}

type viewQuery string

// ViewQuery returns a CreateTableOption that causes the created table to be a virtual table defined by the supplied query.
// For more information see: https://cloud.google.com/bigquery/querying-data#views
func ViewQuery(query string) CreateTableOption { return viewQuery(query) }

func (opt viewQuery) customizeCreateTable(conf *createTableConf) {
	conf.viewQuery = string(opt)
}

// TableMetadataPatch represents a set of changes to a table's metadata.
type TableMetadataPatch struct {
	s                             service
	projectID, datasetID, tableID string
	conf                          patchTableConf
}

// Patch returns a *TableMetadataPatch, which can be used to modify specific Table metadata fields.
// In order to apply the changes, the TableMetadataPatch's Apply method must be called.
func (t *Table) Patch() *TableMetadataPatch {
	return &TableMetadataPatch{
		s:         t.service,
		projectID: t.ProjectID,
		datasetID: t.DatasetID,
		tableID:   t.TableID,
	}
}

// Description sets the table description.
func (p *TableMetadataPatch) Description(desc string) {
	p.conf.Description = &desc
}

// Name sets the table name.
func (p *TableMetadataPatch) Name(name string) {
	p.conf.Name = &name
}

// TODO(mcgreevy): support patching the schema.

// Apply applies the patch operation.
func (p *TableMetadataPatch) Apply(ctx context.Context) (*TableMetadata, error) {
	return p.s.patchTable(ctx, p.projectID, p.datasetID, p.tableID, &p.conf)
}

// NewUploader returns an *Uploader that can be used to append rows to t.
func (t *Table) NewUploader(opts ...UploadOption) *Uploader {
	uploader := &Uploader{t: t}

	for _, o := range opts {
		o.customizeInsertRows(&uploader.conf)
	}

	return uploader
}


================================================
FILE: vendor/cloud.google.com/go/bigquery/uploader.go
================================================
// Copyright 2015 Google Inc. 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 bigquery

import (
	"fmt"
	"reflect"

	"golang.org/x/net/context"
)

// An UploadOption is an optional argument to NewUploader.
type UploadOption interface {
	customizeInsertRows(conf *insertRowsConf)
}

// An Uploader does streaming inserts into a BigQuery table.
// It is safe for concurrent use.
type Uploader struct {
	conf insertRowsConf
	t    *Table
}

// SkipInvalidRows returns an UploadOption that causes rows containing invalid data to be silently ignored.
// The default value is false, which causes the entire request to fail, if there is an attempt to insert an invalid row.
func SkipInvalidRows() UploadOption { return skipInvalidRows{} }

type skipInvalidRows struct{}

func (opt skipInvalidRows) customizeInsertRows(conf *insertRowsConf) {
	conf.skipInvalidRows = true
}

// UploadIgnoreUnknownValues returns an UploadOption that causes values not matching the schema to be ignored.
// If this option is not used, records containing such values are treated as invalid records.
func UploadIgnoreUnknownValues() UploadOption { return uploadIgnoreUnknownValues{} }

type uploadIgnoreUnknownValues struct{}

func (opt uploadIgnoreUnknownValues) customizeInsertRows(conf *insertRowsConf) {
Download .txt
Showing preview only (1,033K chars total). Download the full file or copy to clipboard to get everything.
gitextract_0_obgefm/

├── .dockerignore
├── .gitignore
├── .travis.yml
├── Dockerfile
├── Jenkinsfile
├── LICENSE
├── Makefile
├── README.md
├── client/
│   └── client.go
├── configmapcontroller.go
├── controller/
│   └── controller.go
├── examples/
│   └── deployment.yml
├── glide.yaml
├── tools/
│   └── create-intellij-idea-golib.sh
├── util/
│   └── types.go
├── vendor/
│   ├── cloud.google.com/
│   │   └── go/
│   │       ├── .travis.yml
│   │       ├── AUTHORS
│   │       ├── CONTRIBUTING.md
│   │       ├── CONTRIBUTORS
│   │       ├── LICENSE
│   │       ├── README.md
│   │       ├── appveyor.yml
│   │       ├── authexample_test.go
│   │       ├── bigquery/
│   │       │   ├── bigquery.go
│   │       │   ├── copy_op.go
│   │       │   ├── copy_test.go
│   │       │   ├── create_table_test.go
│   │       │   ├── dataset.go
│   │       │   ├── dataset_test.go
│   │       │   ├── doc.go
│   │       │   ├── error.go
│   │       │   ├── error_test.go
│   │       │   ├── extract_op.go
│   │       │   ├── extract_test.go
│   │       │   ├── gcs.go
│   │       │   ├── integration_test.go
│   │       │   ├── iterator.go
│   │       │   ├── iterator_test.go
│   │       │   ├── job.go
│   │       │   ├── legacy.go
│   │       │   ├── load_op.go
│   │       │   ├── load_test.go
│   │       │   ├── query.go
│   │       │   ├── query_op.go
│   │       │   ├── query_test.go
│   │       │   ├── read_op.go
│   │       │   ├── read_test.go
│   │       │   ├── schema.go
│   │       │   ├── schema_test.go
│   │       │   ├── service.go
│   │       │   ├── table.go
│   │       │   ├── uploader.go
│   │       │   ├── uploader_test.go
│   │       │   ├── utils_test.go
│   │       │   ├── value.go
│   │       │   └── value_test.go
│   │       ├── bigtable/
│   │       │   ├── admin.go
│   │       │   ├── admin_test.go
│   │       │   ├── bigtable.go
│   │       │   ├── bigtable_test.go
│   │       │   ├── bttest/
│   │       │   │   ├── example_test.go
│   │       │   │   ├── inmem.go
│   │       │   │   └── inmem_test.go
│   │       │   ├── cmd/
│   │       │   │   ├── cbt/
│   │       │   │   │   ├── cbt.go
│   │       │   │   │   ├── cbt_test.go
│   │       │   │   │   └── cbtdoc.go
│   │       │   │   ├── emulator/
│   │       │   │   │   └── cbtemulator.go
│   │       │   │   ├── loadtest/
│   │       │   │   │   └── loadtest.go
│   │       │   │   └── scantest/
│   │       │   │       └── scantest.go
│   │       │   ├── doc.go
│   │       │   ├── filter.go
│   │       │   ├── gc.go
│   │       │   ├── internal/
│   │       │   │   ├── cbtrc/
│   │       │   │   │   └── cbtrc.go
│   │       │   │   ├── gax/
│   │       │   │   │   ├── call_option.go
│   │       │   │   │   ├── invoke.go
│   │       │   │   │   └── invoke_test.go
│   │       │   │   ├── option/
│   │       │   │   │   └── option.go
│   │       │   │   └── stat/
│   │       │   │       └── stats.go
│   │       │   ├── reader.go
│   │       │   ├── reader_test.go
│   │       │   ├── retry_test.go
│   │       │   └── testdata/
│   │       │       └── read-rows-acceptance-test.json
│   │       ├── cloud.go
│   │       ├── compute/
│   │       │   └── metadata/
│   │       │       ├── metadata.go
│   │       │       └── metadata_test.go
│   │       ├── container/
│   │       │   └── container.go
│   │       ├── datastore/
│   │       │   ├── datastore.go
│   │       │   ├── datastore_test.go
│   │       │   ├── doc.go
│   │       │   ├── errors.go
│   │       │   ├── example_test.go
│   │       │   ├── integration_test.go
│   │       │   ├── key.go
│   │       │   ├── key_test.go
│   │       │   ├── load.go
│   │       │   ├── load_test.go
│   │       │   ├── prop.go
│   │       │   ├── query.go
│   │       │   ├── query_test.go
│   │       │   ├── save.go
│   │       │   ├── save_test.go
│   │       │   ├── testdata/
│   │       │   │   └── index.yaml
│   │       │   ├── time.go
│   │       │   ├── time_test.go
│   │       │   └── transaction.go
│   │       ├── errorreporting/
│   │       │   └── apiv1beta1/
│   │       │       ├── doc.go
│   │       │       ├── error_group_client.go
│   │       │       ├── error_group_client_example_test.go
│   │       │       ├── error_stats_client.go
│   │       │       ├── error_stats_client_example_test.go
│   │       │       ├── errorreporting.go
│   │       │       ├── report_errors_client.go
│   │       │       └── report_errors_client_example_test.go
│   │       ├── errors/
│   │       │   ├── errors.go
│   │       │   ├── errors_test.go
│   │       │   └── stack_test.go
│   │       ├── examples/
│   │       │   ├── bigquery/
│   │       │   │   ├── concat_table/
│   │       │   │   │   └── main.go
│   │       │   │   ├── load/
│   │       │   │   │   └── main.go
│   │       │   │   ├── query/
│   │       │   │   │   └── main.go
│   │       │   │   └── read/
│   │       │   │       └── main.go
│   │       │   ├── bigtable/
│   │       │   │   ├── helloworld/
│   │       │   │   │   ├── README.md
│   │       │   │   │   └── main.go
│   │       │   │   ├── search/
│   │       │   │   │   └── search.go
│   │       │   │   └── usercounter/
│   │       │   │       ├── README.md
│   │       │   │       ├── app.yaml
│   │       │   │       └── main.go
│   │       │   └── storage/
│   │       │       ├── appengine/
│   │       │       │   ├── app.go
│   │       │       │   └── app.yaml
│   │       │       └── appenginevm/
│   │       │           ├── app.go
│   │       │           └── app.yaml
│   │       ├── internal/
│   │       │   ├── bundler/
│   │       │   │   ├── bundler.go
│   │       │   │   └── bundler_test.go
│   │       │   ├── cloud.go
│   │       │   └── testutil/
│   │       │       ├── context.go
│   │       │       ├── iterators.go
│   │       │       ├── server.go
│   │       │       └── server_test.go
│   │       ├── key.json.enc
│   │       ├── language/
│   │       │   └── apiv1beta1/
│   │       │       ├── doc.go
│   │       │       ├── language.go
│   │       │       ├── language_client.go
│   │       │       └── language_client_example_test.go
│   │       ├── license_test.go
│   │       ├── logging/
│   │       │   ├── apiv2/
│   │       │   │   ├── README.md
│   │       │   │   ├── config_client.go
│   │       │   │   ├── config_client_example_test.go
│   │       │   │   ├── doc.go
│   │       │   │   ├── logging.go
│   │       │   │   ├── logging_client.go
│   │       │   │   ├── logging_client_example_test.go
│   │       │   │   ├── metrics_client.go
│   │       │   │   └── metrics_client_example_test.go
│   │       │   ├── logging.go
│   │       │   └── logging_test.go
│   │       ├── monitoring/
│   │       │   └── apiv3/
│   │       │       ├── agent_translation_client.go
│   │       │       ├── agent_translation_client_example_test.go
│   │       │       ├── doc.go
│   │       │       ├── group_client.go
│   │       │       ├── group_client_example_test.go
│   │       │       ├── metric_client.go
│   │       │       ├── metric_client_example_test.go
│   │       │       └── monitoring.go
│   │       ├── preview/
│   │       │   └── logging/
│   │       │       ├── example_entry_iterator_test.go
│   │       │       ├── example_metric_iterator_test.go
│   │       │       ├── example_paging_test.go
│   │       │       ├── example_resource_iterator_test.go
│   │       │       ├── example_sink_iterator_test.go
│   │       │       ├── examples_test.go
│   │       │       ├── internal/
│   │       │       │   └── testing/
│   │       │       │       ├── fake.go
│   │       │       │       └── fake_test.go
│   │       │       ├── logging.go
│   │       │       ├── logging_test.go
│   │       │       ├── metrics.go
│   │       │       ├── metrics_test.go
│   │       │       ├── resources.go
│   │       │       ├── resources_test.go
│   │       │       ├── sinks.go
│   │       │       ├── sinks_test.go
│   │       │       └── unique_test.go
│   │       ├── pubsub/
│   │       │   ├── acker.go
│   │       │   ├── acker_test.go
│   │       │   ├── apiv1/
│   │       │   │   ├── README.md
│   │       │   │   ├── doc.go
│   │       │   │   ├── publisher_client.go
│   │       │   │   ├── publisher_client_example_test.go
│   │       │   │   ├── pubsub.go
│   │       │   │   ├── subscriber_client.go
│   │       │   │   └── subscriber_client_example_test.go
│   │       │   ├── doc.go
│   │       │   ├── endtoend_test.go
│   │       │   ├── example_subscription_iterator_test.go
│   │       │   ├── example_test.go
│   │       │   ├── example_topic_iterator_test.go
│   │       │   ├── integration_test.go
│   │       │   ├── iterator.go
│   │       │   ├── iterator_test.go
│   │       │   ├── keepalive.go
│   │       │   ├── keepalive_test.go
│   │       │   ├── message.go
│   │       │   ├── pubsub.go
│   │       │   ├── puller.go
│   │       │   ├── puller_test.go
│   │       │   ├── service.go
│   │       │   ├── subscription.go
│   │       │   ├── subscription_test.go
│   │       │   ├── topic.go
│   │       │   ├── topic_test.go
│   │       │   └── utils_test.go
│   │       ├── speech/
│   │       │   └── apiv1beta1/
│   │       │       ├── doc.go
│   │       │       ├── speech.go
│   │       │       ├── speech_client.go
│   │       │       └── speech_client_example_test.go
│   │       ├── storage/
│   │       │   ├── acl.go
│   │       │   ├── bucket.go
│   │       │   ├── example_test.go
│   │       │   ├── integration_test.go
│   │       │   ├── reader.go
│   │       │   ├── storage.go
│   │       │   ├── storage_test.go
│   │       │   ├── testdata/
│   │       │   │   ├── dummy_pem
│   │       │   │   └── dummy_rsa
│   │       │   ├── writer.go
│   │       │   └── writer_test.go
│   │       ├── trace/
│   │       │   ├── sampling.go
│   │       │   ├── trace.go
│   │       │   └── trace_test.go
│   │       └── vision/
│   │           ├── annotations.go
│   │           ├── apiv1/
│   │           │   ├── doc.go
│   │           │   ├── image_annotator_client.go
│   │           │   ├── image_annotator_client_example_test.go
│   │           │   └── vision.go
│   │           ├── doc.go
│   │           ├── examples_test.go
│   │           ├── face.go
│   │           ├── geometry.go
│   │           ├── image.go
│   │           ├── latlng.go
│   │           ├── testdata/
│   │           │   └── README.md
│   │           ├── vision.go
│   │           └── vision_test.go
│   ├── github.com/
│   │   ├── beorn7/
│   │   │   └── perks/
│   │   │       ├── .gitignore
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── histogram/
│   │   │       │   ├── bench_test.go
│   │   │       │   ├── histogram.go
│   │   │       │   └── histogram_test.go
│   │   │       ├── quantile/
│   │   │       │   ├── bench_test.go
│   │   │       │   ├── example_test.go
│   │   │       │   ├── exampledata.txt
│   │   │       │   ├── stream.go
│   │   │       │   └── stream_test.go
│   │   │       └── topk/
│   │   │           ├── topk.go
│   │   │           └── topk_test.go
│   │   ├── blang/
│   │   │   └── semver/
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── examples/
│   │   │       │   └── main.go
│   │   │       ├── json.go
│   │   │       ├── json_test.go
│   │   │       ├── range.go
│   │   │       ├── range_test.go
│   │   │       ├── semver.go
│   │   │       ├── semver_test.go
│   │   │       ├── sort.go
│   │   │       ├── sort_test.go
│   │   │       ├── sql.go
│   │   │       └── sql_test.go
│   │   ├── cloudfoundry-incubator/
│   │   │   └── candiedyaml/
│   │   │       ├── .gitignore
│   │   │       ├── .travis.yml
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── api.go
│   │   │       ├── candiedyaml_suite_test.go
│   │   │       ├── decode.go
│   │   │       ├── decode_test.go
│   │   │       ├── emitter.go
│   │   │       ├── encode.go
│   │   │       ├── encode_test.go
│   │   │       ├── fixtures/
│   │   │       │   └── specification/
│   │   │       │       ├── example2_1.yaml
│   │   │       │       ├── example2_10.yaml
│   │   │       │       ├── example2_11.yaml
│   │   │       │       ├── example2_12.yaml
│   │   │       │       ├── example2_13.yaml
│   │   │       │       ├── example2_14.yaml
│   │   │       │       ├── example2_15.yaml
│   │   │       │       ├── example2_15_dumped.yaml
│   │   │       │       ├── example2_16.yaml
│   │   │       │       ├── example2_17.yaml
│   │   │       │       ├── example2_17_control.yaml
│   │   │       │       ├── example2_17_hexesc.yaml
│   │   │       │       ├── example2_17_quoted.yaml
│   │   │       │       ├── example2_17_single.yaml
│   │   │       │       ├── example2_17_tie_fighter.yaml
│   │   │       │       ├── example2_17_unicode.yaml
│   │   │       │       ├── example2_18.yaml
│   │   │       │       ├── example2_19.yaml
│   │   │       │       ├── example2_2.yaml
│   │   │       │       ├── example2_20.yaml
│   │   │       │       ├── example2_21.yaml
│   │   │       │       ├── example2_22.yaml
│   │   │       │       ├── example2_23.yaml
│   │   │       │       ├── example2_23_application.yaml
│   │   │       │       ├── example2_23_non_date.yaml
│   │   │       │       ├── example2_23_picture.yaml
│   │   │       │       ├── example2_24.yaml
│   │   │       │       ├── example2_24_dumped.yaml
│   │   │       │       ├── example2_25.yaml
│   │   │       │       ├── example2_26.yaml
│   │   │       │       ├── example2_27.yaml
│   │   │       │       ├── example2_27_dumped.yaml
│   │   │       │       ├── example2_28.yaml
│   │   │       │       ├── example2_3.yaml
│   │   │       │       ├── example2_4.yaml
│   │   │       │       ├── example2_5.yaml
│   │   │       │       ├── example2_6.yaml
│   │   │       │       ├── example2_7.yaml
│   │   │       │       ├── example2_8.yaml
│   │   │       │       ├── example2_9.yaml
│   │   │       │       ├── example_empty.yaml
│   │   │       │       └── types/
│   │   │       │           ├── map.yaml
│   │   │       │           ├── map_mixed_tags.yaml
│   │   │       │           ├── merge.yaml
│   │   │       │           ├── omap.yaml
│   │   │       │           ├── pairs.yaml
│   │   │       │           ├── seq.yaml
│   │   │       │           ├── set.yaml
│   │   │       │           ├── v.yaml
│   │   │       │           └── value.yaml
│   │   │       ├── libyaml-LICENSE
│   │   │       ├── parser.go
│   │   │       ├── parser_test.go
│   │   │       ├── reader.go
│   │   │       ├── reader_test.go
│   │   │       ├── resolver.go
│   │   │       ├── resolver_test.go
│   │   │       ├── run_parser.go
│   │   │       ├── scanner.go
│   │   │       ├── scanner_test.go
│   │   │       ├── tags.go
│   │   │       ├── writer.go
│   │   │       ├── yaml_definesh.go
│   │   │       ├── yaml_privateh.go
│   │   │       └── yamlh.go
│   │   ├── coreos/
│   │   │   ├── go-oidc/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── .travis.yml
│   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   ├── DCO
│   │   │   │   ├── LICENSE
│   │   │   │   ├── MAINTAINERS
│   │   │   │   ├── NOTICE
│   │   │   │   ├── README.md
│   │   │   │   ├── example/
│   │   │   │   │   ├── app/
│   │   │   │   │   │   └── main.go
│   │   │   │   │   └── cli/
│   │   │   │   │       └── main.go
│   │   │   │   ├── http/
│   │   │   │   │   ├── client.go
│   │   │   │   │   ├── http.go
│   │   │   │   │   ├── http_test.go
│   │   │   │   │   ├── url.go
│   │   │   │   │   └── url_test.go
│   │   │   │   ├── jose/
│   │   │   │   │   ├── claims.go
│   │   │   │   │   ├── claims_test.go
│   │   │   │   │   ├── jose.go
│   │   │   │   │   ├── jwk.go
│   │   │   │   │   ├── jwk_test.go
│   │   │   │   │   ├── jws.go
│   │   │   │   │   ├── jws_test.go
│   │   │   │   │   ├── jwt.go
│   │   │   │   │   ├── jwt_test.go
│   │   │   │   │   ├── sig.go
│   │   │   │   │   └── sig_rsa.go
│   │   │   │   ├── key/
│   │   │   │   │   ├── key.go
│   │   │   │   │   ├── key_test.go
│   │   │   │   │   ├── manager.go
│   │   │   │   │   ├── manager_test.go
│   │   │   │   │   ├── repo.go
│   │   │   │   │   ├── rotate.go
│   │   │   │   │   ├── rotate_test.go
│   │   │   │   │   ├── sync.go
│   │   │   │   │   └── sync_test.go
│   │   │   │   ├── oauth2/
│   │   │   │   │   ├── error.go
│   │   │   │   │   ├── oauth2.go
│   │   │   │   │   └── oauth2_test.go
│   │   │   │   ├── oidc/
│   │   │   │   │   ├── client.go
│   │   │   │   │   ├── client_race_test.go
│   │   │   │   │   ├── client_test.go
│   │   │   │   │   ├── identity.go
│   │   │   │   │   ├── identity_test.go
│   │   │   │   │   ├── interface.go
│   │   │   │   │   ├── key.go
│   │   │   │   │   ├── provider.go
│   │   │   │   │   ├── provider_test.go
│   │   │   │   │   ├── transport.go
│   │   │   │   │   ├── transport_test.go
│   │   │   │   │   ├── util.go
│   │   │   │   │   ├── util_test.go
│   │   │   │   │   ├── verification.go
│   │   │   │   │   └── verification_test.go
│   │   │   │   └── test
│   │   │   └── pkg/
│   │   │       ├── .gitignore
│   │   │       ├── .travis.yml
│   │   │       ├── CONTRIBUTING.md
│   │   │       ├── DCO
│   │   │       ├── LICENSE
│   │   │       ├── MAINTAINERS
│   │   │       ├── NOTICE
│   │   │       ├── README.md
│   │   │       ├── capnslog/
│   │   │       │   ├── README.md
│   │   │       │   ├── example/
│   │   │       │   │   └── hello_dolly.go
│   │   │       │   ├── formatters.go
│   │   │       │   ├── glog_formatter.go
│   │   │       │   ├── init.go
│   │   │       │   ├── init_windows.go
│   │   │       │   ├── journald_formatter.go
│   │   │       │   ├── log_hijack.go
│   │   │       │   ├── logmap.go
│   │   │       │   ├── pkg_logger.go
│   │   │       │   └── syslog_formatter.go
│   │   │       ├── cryptoutil/
│   │   │       │   ├── aes.go
│   │   │       │   └── aes_test.go
│   │   │       ├── dlopen/
│   │   │       │   ├── dlopen.go
│   │   │       │   ├── dlopen_example.go
│   │   │       │   └── dlopen_test.go
│   │   │       ├── flagutil/
│   │   │       │   ├── env.go
│   │   │       │   ├── env_file.go
│   │   │       │   ├── env_test.go
│   │   │       │   ├── file_env_test.go
│   │   │       │   ├── types.go
│   │   │       │   └── types_test.go
│   │   │       ├── health/
│   │   │       │   ├── README.md
│   │   │       │   ├── health.go
│   │   │       │   └── health_test.go
│   │   │       ├── httputil/
│   │   │       │   ├── README.md
│   │   │       │   ├── cookie.go
│   │   │       │   ├── cookie_test.go
│   │   │       │   ├── json.go
│   │   │       │   └── json_test.go
│   │   │       ├── k8s-tlsutil/
│   │   │       │   └── k8s-tlsutil.go
│   │   │       ├── multierror/
│   │   │       │   ├── multierror.go
│   │   │       │   └── multierror_test.go
│   │   │       ├── netutil/
│   │   │       │   ├── proxy.go
│   │   │       │   ├── url.go
│   │   │       │   └── url_test.go
│   │   │       ├── progressutil/
│   │   │       │   ├── iocopy.go
│   │   │       │   ├── iocopy_test.go
│   │   │       │   ├── progressbar.go
│   │   │       │   └── progressbar_test.go
│   │   │       ├── test
│   │   │       ├── timeutil/
│   │   │       │   ├── backoff.go
│   │   │       │   └── backoff_test.go
│   │   │       └── yamlutil/
│   │   │           ├── yaml.go
│   │   │           └── yaml_test.go
│   │   ├── davecgh/
│   │   │   └── go-spew/
│   │   │       ├── .gitignore
│   │   │       ├── .travis.yml
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── cov_report.sh
│   │   │       ├── spew/
│   │   │       │   ├── bypass.go
│   │   │       │   ├── bypasssafe.go
│   │   │       │   ├── common.go
│   │   │       │   ├── common_test.go
│   │   │       │   ├── config.go
│   │   │       │   ├── doc.go
│   │   │       │   ├── dump.go
│   │   │       │   ├── dump_test.go
│   │   │       │   ├── dumpcgo_test.go
│   │   │       │   ├── dumpnocgo_test.go
│   │   │       │   ├── example_test.go
│   │   │       │   ├── format.go
│   │   │       │   ├── format_test.go
│   │   │       │   ├── internal_test.go
│   │   │       │   ├── internalunsafe_test.go
│   │   │       │   ├── spew.go
│   │   │       │   ├── spew_test.go
│   │   │       │   └── testdata/
│   │   │       │       └── dumpcgo.go
│   │   │       └── test_coverage.txt
│   │   ├── dgrijalva/
│   │   │   └── jwt-go/
│   │   │       ├── .gitignore
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── VERSION_HISTORY.md
│   │   │       ├── cmd/
│   │   │       │   └── jwt/
│   │   │       │       └── app.go
│   │   │       ├── doc.go
│   │   │       ├── errors.go
│   │   │       ├── example_test.go
│   │   │       ├── hmac.go
│   │   │       ├── hmac_test.go
│   │   │       ├── jwt.go
│   │   │       ├── jwt_test.go
│   │   │       ├── rsa.go
│   │   │       ├── rsa_test.go
│   │   │       ├── rsa_utils.go
│   │   │       ├── signing_method.go
│   │   │       └── test/
│   │   │           ├── hmacTestKey
│   │   │           ├── sample_key
│   │   │           └── sample_key.pub
│   │   ├── docker/
│   │   │   ├── distribution/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── .mailmap
│   │   │   │   ├── AUTHORS
│   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   ├── Dockerfile
│   │   │   │   ├── Godeps/
│   │   │   │   │   ├── Godeps.json
│   │   │   │   │   └── Readme
│   │   │   │   ├── LICENSE
│   │   │   │   ├── MAINTAINERS
│   │   │   │   ├── Makefile
│   │   │   │   ├── README.md
│   │   │   │   ├── ROADMAP.md
│   │   │   │   ├── blobs.go
│   │   │   │   ├── circle.yml
│   │   │   │   ├── cmd/
│   │   │   │   │   ├── digest/
│   │   │   │   │   │   └── main.go
│   │   │   │   │   ├── registry/
│   │   │   │   │   │   ├── config-cache.yml
│   │   │   │   │   │   ├── config-dev.yml
│   │   │   │   │   │   ├── config-example.yml
│   │   │   │   │   │   └── main.go
│   │   │   │   │   └── registry-api-descriptor-template/
│   │   │   │   │       └── main.go
│   │   │   │   ├── configuration/
│   │   │   │   │   ├── configuration.go
│   │   │   │   │   ├── configuration_test.go
│   │   │   │   │   └── parser.go
│   │   │   │   ├── context/
│   │   │   │   │   ├── context.go
│   │   │   │   │   ├── doc.go
│   │   │   │   │   ├── http.go
│   │   │   │   │   ├── http_test.go
│   │   │   │   │   ├── logger.go
│   │   │   │   │   ├── trace.go
│   │   │   │   │   ├── trace_test.go
│   │   │   │   │   ├── util.go
│   │   │   │   │   ├── version.go
│   │   │   │   │   └── version_test.go
│   │   │   │   ├── contrib/
│   │   │   │   │   ├── apache/
│   │   │   │   │   │   ├── README.MD
│   │   │   │   │   │   └── apache.conf
│   │   │   │   │   ├── compose/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── docker-compose.yml
│   │   │   │   │   │   └── nginx/
│   │   │   │   │   │       ├── Dockerfile
│   │   │   │   │   │       ├── docker-registry-v2.conf
│   │   │   │   │   │       ├── docker-registry.conf
│   │   │   │   │   │       ├── nginx.conf
│   │   │   │   │   │       └── registry.conf
│   │   │   │   │   ├── docker-integration/
│   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── docker-compose.yml
│   │   │   │   │   │   ├── golem.conf
│   │   │   │   │   │   ├── helpers.bash
│   │   │   │   │   │   ├── install_certs.sh
│   │   │   │   │   │   ├── malevolent-certs/
│   │   │   │   │   │   │   ├── localregistry.cert
│   │   │   │   │   │   │   └── localregistry.key
│   │   │   │   │   │   ├── malevolent.bats
│   │   │   │   │   │   ├── nginx/
│   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   ├── docker-registry-v2.conf
│   │   │   │   │   │   │   ├── nginx.conf
│   │   │   │   │   │   │   ├── registry-basic.conf
│   │   │   │   │   │   │   ├── registry-noauth.conf
│   │   │   │   │   │   │   ├── registry.conf
│   │   │   │   │   │   │   └── test.passwd
│   │   │   │   │   │   ├── run_multiversion.sh
│   │   │   │   │   │   ├── tls.bats
│   │   │   │   │   │   ├── token.bats
│   │   │   │   │   │   ├── tokenserver/
│   │   │   │   │   │   │   ├── .htpasswd
│   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   ├── certs/
│   │   │   │   │   │   │   │   ├── auth.localregistry.cert
│   │   │   │   │   │   │   │   ├── auth.localregistry.key
│   │   │   │   │   │   │   │   ├── localregistry.cert
│   │   │   │   │   │   │   │   ├── localregistry.key
│   │   │   │   │   │   │   │   ├── signing.cert
│   │   │   │   │   │   │   │   └── signing.key
│   │   │   │   │   │   │   └── registry-config.yml
│   │   │   │   │   │   └── tokenserver-oauth/
│   │   │   │   │   │       ├── .htpasswd
│   │   │   │   │   │       ├── Dockerfile
│   │   │   │   │   │       ├── certs/
│   │   │   │   │   │       │   ├── auth.localregistry.cert
│   │   │   │   │   │       │   ├── auth.localregistry.key
│   │   │   │   │   │       │   ├── localregistry.cert
│   │   │   │   │   │       │   ├── localregistry.key
│   │   │   │   │   │       │   ├── signing.cert
│   │   │   │   │   │       │   └── signing.key
│   │   │   │   │   │       └── registry-config.yml
│   │   │   │   │   └── token-server/
│   │   │   │   │       ├── main.go
│   │   │   │   │       └── token.go
│   │   │   │   ├── coverpkg.sh
│   │   │   │   ├── digest/
│   │   │   │   │   ├── digest.go
│   │   │   │   │   ├── digest_test.go
│   │   │   │   │   ├── digester.go
│   │   │   │   │   ├── digester_resumable_test.go
│   │   │   │   │   ├── doc.go
│   │   │   │   │   ├── set.go
│   │   │   │   │   ├── set_test.go
│   │   │   │   │   ├── verifiers.go
│   │   │   │   │   └── verifiers_test.go
│   │   │   │   ├── doc.go
│   │   │   │   ├── docs/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── apache.md
│   │   │   │   │   ├── architecture.md
│   │   │   │   │   ├── building.md
│   │   │   │   │   ├── compatibility.md
│   │   │   │   │   ├── configuration.md
│   │   │   │   │   ├── deploying.md
│   │   │   │   │   ├── garbage-collection.md
│   │   │   │   │   ├── glossary.md
│   │   │   │   │   ├── help.md
│   │   │   │   │   ├── images/
│   │   │   │   │   │   └── notifications.gliffy
│   │   │   │   │   ├── index.md
│   │   │   │   │   ├── insecure.md
│   │   │   │   │   ├── introduction.md
│   │   │   │   │   ├── migration.md
│   │   │   │   │   ├── mirror.md
│   │   │   │   │   ├── nginx.md
│   │   │   │   │   ├── notifications.md
│   │   │   │   │   ├── osx/
│   │   │   │   │   │   ├── com.docker.registry.plist
│   │   │   │   │   │   └── config.yml
│   │   │   │   │   ├── osx-setup-guide.md
│   │   │   │   │   ├── overview.md
│   │   │   │   │   ├── recipes.md
│   │   │   │   │   ├── spec/
│   │   │   │   │   │   ├── api.md
│   │   │   │   │   │   ├── api.md.tmpl
│   │   │   │   │   │   ├── auth/
│   │   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   │   ├── jwt.md
│   │   │   │   │   │   │   ├── oauth.md
│   │   │   │   │   │   │   ├── scope.md
│   │   │   │   │   │   │   └── token.md
│   │   │   │   │   │   ├── implementations.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── json.md
│   │   │   │   │   │   ├── manifest-v2-1.md
│   │   │   │   │   │   └── manifest-v2-2.md
│   │   │   │   │   ├── storage-drivers/
│   │   │   │   │   │   ├── azure.md
│   │   │   │   │   │   ├── filesystem.md
│   │   │   │   │   │   ├── gcs.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── inmemory.md
│   │   │   │   │   │   ├── oss.md
│   │   │   │   │   │   ├── s3.md
│   │   │   │   │   │   └── swift.md
│   │   │   │   │   └── storagedrivers.md
│   │   │   │   ├── errors.go
│   │   │   │   ├── health/
│   │   │   │   │   ├── api/
│   │   │   │   │   │   ├── api.go
│   │   │   │   │   │   └── api_test.go
│   │   │   │   │   ├── checks/
│   │   │   │   │   │   ├── checks.go
│   │   │   │   │   │   └── checks_test.go
│   │   │   │   │   ├── doc.go
│   │   │   │   │   ├── health.go
│   │   │   │   │   └── health_test.go
│   │   │   │   ├── manifest/
│   │   │   │   │   ├── doc.go
│   │   │   │   │   ├── manifestlist/
│   │   │   │   │   │   ├── manifestlist.go
│   │   │   │   │   │   └── manifestlist_test.go
│   │   │   │   │   ├── schema1/
│   │   │   │   │   │   ├── config_builder.go
│   │   │   │   │   │   ├── config_builder_test.go
│   │   │   │   │   │   ├── manifest.go
│   │   │   │   │   │   ├── manifest_test.go
│   │   │   │   │   │   ├── reference_builder.go
│   │   │   │   │   │   ├── reference_builder_test.go
│   │   │   │   │   │   ├── sign.go
│   │   │   │   │   │   └── verify.go
│   │   │   │   │   ├── schema2/
│   │   │   │   │   │   ├── builder.go
│   │   │   │   │   │   ├── builder_test.go
│   │   │   │   │   │   ├── manifest.go
│   │   │   │   │   │   └── manifest_test.go
│   │   │   │   │   └── versioned.go
│   │   │   │   ├── manifests.go
│   │   │   │   ├── notifications/
│   │   │   │   │   ├── bridge.go
│   │   │   │   │   ├── bridge_test.go
│   │   │   │   │   ├── endpoint.go
│   │   │   │   │   ├── event.go
│   │   │   │   │   ├── event_test.go
│   │   │   │   │   ├── http.go
│   │   │   │   │   ├── http_test.go
│   │   │   │   │   ├── listener.go
│   │   │   │   │   ├── listener_test.go
│   │   │   │   │   ├── metrics.go
│   │   │   │   │   ├── sinks.go
│   │   │   │   │   └── sinks_test.go
│   │   │   │   ├── project/
│   │   │   │   │   ├── dev-image/
│   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   └── hooks/
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── configure-hooks.sh
│   │   │   │   │       └── pre-commit
│   │   │   │   ├── reference/
│   │   │   │   │   ├── reference.go
│   │   │   │   │   ├── reference_test.go
│   │   │   │   │   ├── regexp.go
│   │   │   │   │   └── regexp_test.go
│   │   │   │   ├── registry/
│   │   │   │   │   ├── api/
│   │   │   │   │   │   ├── errcode/
│   │   │   │   │   │   │   ├── errors.go
│   │   │   │   │   │   │   ├── errors_test.go
│   │   │   │   │   │   │   ├── handler.go
│   │   │   │   │   │   │   └── register.go
│   │   │   │   │   │   └── v2/
│   │   │   │   │   │       ├── descriptors.go
│   │   │   │   │   │       ├── doc.go
│   │   │   │   │   │       ├── errors.go
│   │   │   │   │   │       ├── routes.go
│   │   │   │   │   │       ├── routes_test.go
│   │   │   │   │   │       ├── urls.go
│   │   │   │   │   │       └── urls_test.go
│   │   │   │   │   ├── auth/
│   │   │   │   │   │   ├── auth.go
│   │   │   │   │   │   ├── htpasswd/
│   │   │   │   │   │   │   ├── access.go
│   │   │   │   │   │   │   ├── access_test.go
│   │   │   │   │   │   │   ├── htpasswd.go
│   │   │   │   │   │   │   └── htpasswd_test.go
│   │   │   │   │   │   ├── silly/
│   │   │   │   │   │   │   ├── access.go
│   │   │   │   │   │   │   └── access_test.go
│   │   │   │   │   │   └── token/
│   │   │   │   │   │       ├── accesscontroller.go
│   │   │   │   │   │       ├── stringset.go
│   │   │   │   │   │       ├── token.go
│   │   │   │   │   │       ├── token_test.go
│   │   │   │   │   │       └── util.go
│   │   │   │   │   ├── client/
│   │   │   │   │   │   ├── auth/
│   │   │   │   │   │   │   ├── api_version.go
│   │   │   │   │   │   │   ├── authchallenge.go
│   │   │   │   │   │   │   ├── authchallenge_test.go
│   │   │   │   │   │   │   ├── session.go
│   │   │   │   │   │   │   └── session_test.go
│   │   │   │   │   │   ├── blob_writer.go
│   │   │   │   │   │   ├── blob_writer_test.go
│   │   │   │   │   │   ├── errors.go
│   │   │   │   │   │   ├── errors_test.go
│   │   │   │   │   │   ├── repository.go
│   │   │   │   │   │   ├── repository_test.go
│   │   │   │   │   │   └── transport/
│   │   │   │   │   │       ├── http_reader.go
│   │   │   │   │   │       └── transport.go
│   │   │   │   │   ├── doc.go
│   │   │   │   │   ├── handlers/
│   │   │   │   │   │   ├── api_test.go
│   │   │   │   │   │   ├── app.go
│   │   │   │   │   │   ├── app_test.go
│   │   │   │   │   │   ├── basicauth.go
│   │   │   │   │   │   ├── basicauth_prego14.go
│   │   │   │   │   │   ├── blob.go
│   │   │   │   │   │   ├── blobupload.go
│   │   │   │   │   │   ├── catalog.go
│   │   │   │   │   │   ├── context.go
│   │   │   │   │   │   ├── health_test.go
│   │   │   │   │   │   ├── helpers.go
│   │   │   │   │   │   ├── hmac.go
│   │   │   │   │   │   ├── hmac_test.go
│   │   │   │   │   │   ├── hooks.go
│   │   │   │   │   │   ├── images.go
│   │   │   │   │   │   ├── mail.go
│   │   │   │   │   │   └── tags.go
│   │   │   │   │   ├── listener/
│   │   │   │   │   │   └── listener.go
│   │   │   │   │   ├── middleware/
│   │   │   │   │   │   ├── registry/
│   │   │   │   │   │   │   └── middleware.go
│   │   │   │   │   │   └── repository/
│   │   │   │   │   │       └── middleware.go
│   │   │   │   │   ├── proxy/
│   │   │   │   │   │   ├── proxyauth.go
│   │   │   │   │   │   ├── proxyblobstore.go
│   │   │   │   │   │   ├── proxyblobstore_test.go
│   │   │   │   │   │   ├── proxymanifeststore.go
│   │   │   │   │   │   ├── proxymanifeststore_test.go
│   │   │   │   │   │   ├── proxymetrics.go
│   │   │   │   │   │   ├── proxyregistry.go
│   │   │   │   │   │   ├── proxytagservice.go
│   │   │   │   │   │   ├── proxytagservice_test.go
│   │   │   │   │   │   └── scheduler/
│   │   │   │   │   │       ├── scheduler.go
│   │   │   │   │   │       └── scheduler_test.go
│   │   │   │   │   ├── registry.go
│   │   │   │   │   ├── root.go
│   │   │   │   │   └── storage/
│   │   │   │   │       ├── blob_test.go
│   │   │   │   │       ├── blobcachemetrics.go
│   │   │   │   │       ├── blobserver.go
│   │   │   │   │       ├── blobstore.go
│   │   │   │   │       ├── blobwriter.go
│   │   │   │   │       ├── blobwriter_nonresumable.go
│   │   │   │   │       ├── blobwriter_resumable.go
│   │   │   │   │       ├── cache/
│   │   │   │   │       │   ├── cache.go
│   │   │   │   │       │   ├── cachecheck/
│   │   │   │   │       │   │   └── suite.go
│   │   │   │   │       │   ├── cachedblobdescriptorstore.go
│   │   │   │   │       │   ├── memory/
│   │   │   │   │       │   │   ├── memory.go
│   │   │   │   │       │   │   └── memory_test.go
│   │   │   │   │       │   └── redis/
│   │   │   │   │       │       ├── redis.go
│   │   │   │   │       │       └── redis_test.go
│   │   │   │   │       ├── catalog.go
│   │   │   │   │       ├── catalog_test.go
│   │   │   │   │       ├── doc.go
│   │   │   │   │       ├── driver/
│   │   │   │   │       │   ├── azure/
│   │   │   │   │       │   │   ├── azure.go
│   │   │   │   │       │   │   └── azure_test.go
│   │   │   │   │       │   ├── base/
│   │   │   │   │       │   │   ├── base.go
│   │   │   │   │       │   │   └── regulator.go
│   │   │   │   │       │   ├── factory/
│   │   │   │   │       │   │   └── factory.go
│   │   │   │   │       │   ├── fileinfo.go
│   │   │   │   │       │   ├── filesystem/
│   │   │   │   │       │   │   ├── driver.go
│   │   │   │   │       │   │   └── driver_test.go
│   │   │   │   │       │   ├── gcs/
│   │   │   │   │       │   │   ├── doc.go
│   │   │   │   │       │   │   ├── gcs.go
│   │   │   │   │       │   │   └── gcs_test.go
│   │   │   │   │       │   ├── inmemory/
│   │   │   │   │       │   │   ├── driver.go
│   │   │   │   │       │   │   ├── driver_test.go
│   │   │   │   │       │   │   └── mfs.go
│   │   │   │   │       │   ├── middleware/
│   │   │   │   │       │   │   ├── cloudfront/
│   │   │   │   │       │   │   │   └── middleware.go
│   │   │   │   │       │   │   ├── redirect/
│   │   │   │   │       │   │   │   ├── middleware.go
│   │   │   │   │       │   │   │   └── middleware_test.go
│   │   │   │   │       │   │   └── storagemiddleware.go
│   │   │   │   │       │   ├── oss/
│   │   │   │   │       │   │   ├── doc.go
│   │   │   │   │       │   │   ├── oss.go
│   │   │   │   │       │   │   └── oss_test.go
│   │   │   │   │       │   ├── s3-aws/
│   │   │   │   │       │   │   ├── s3.go
│   │   │   │   │       │   │   └── s3_test.go
│   │   │   │   │       │   ├── s3-goamz/
│   │   │   │   │       │   │   ├── s3.go
│   │   │   │   │       │   │   └── s3_test.go
│   │   │   │   │       │   ├── storagedriver.go
│   │   │   │   │       │   ├── swift/
│   │   │   │   │       │   │   ├── swift.go
│   │   │   │   │       │   │   └── swift_test.go
│   │   │   │   │       │   └── testsuites/
│   │   │   │   │       │       └── testsuites.go
│   │   │   │   │       ├── filereader.go
│   │   │   │   │       ├── filereader_test.go
│   │   │   │   │       ├── garbagecollect.go
│   │   │   │   │       ├── garbagecollect_test.go
│   │   │   │   │       ├── linkedblobstore.go
│   │   │   │   │       ├── manifestlisthandler.go
│   │   │   │   │       ├── manifeststore.go
│   │   │   │   │       ├── manifeststore_test.go
│   │   │   │   │       ├── paths.go
│   │   │   │   │       ├── paths_test.go
│   │   │   │   │       ├── purgeuploads.go
│   │   │   │   │       ├── purgeuploads_test.go
│   │   │   │   │       ├── registry.go
│   │   │   │   │       ├── schema2manifesthandler.go
│   │   │   │   │       ├── schema2manifesthandler_test.go
│   │   │   │   │       ├── signaturestore.go
│   │   │   │   │       ├── signedmanifesthandler.go
│   │   │   │   │       ├── tagstore.go
│   │   │   │   │       ├── tagstore_test.go
│   │   │   │   │       ├── util.go
│   │   │   │   │       ├── vacuum.go
│   │   │   │   │       ├── walk.go
│   │   │   │   │       └── walk_test.go
│   │   │   │   ├── registry.go
│   │   │   │   ├── tags.go
│   │   │   │   ├── testutil/
│   │   │   │   │   ├── handler.go
│   │   │   │   │   ├── manifests.go
│   │   │   │   │   └── tarfile.go
│   │   │   │   ├── uuid/
│   │   │   │   │   ├── uuid.go
│   │   │   │   │   └── uuid_test.go
│   │   │   │   └── version/
│   │   │   │       ├── print.go
│   │   │   │       ├── version.go
│   │   │   │       └── version.sh
│   │   │   ├── docker/
│   │   │   │   ├── .dockerignore
│   │   │   │   ├── .github/
│   │   │   │   │   ├── ISSUE_TEMPLATE.md
│   │   │   │   │   └── PULL_REQUEST_TEMPLATE.md
│   │   │   │   ├── .gitignore
│   │   │   │   ├── .mailmap
│   │   │   │   ├── AUTHORS
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   ├── Dockerfile
│   │   │   │   ├── Dockerfile.aarch64
│   │   │   │   ├── Dockerfile.armhf
│   │   │   │   ├── Dockerfile.ppc64le
│   │   │   │   ├── Dockerfile.s390x
│   │   │   │   ├── Dockerfile.simple
│   │   │   │   ├── Dockerfile.windows
│   │   │   │   ├── LICENSE
│   │   │   │   ├── MAINTAINERS
│   │   │   │   ├── Makefile
│   │   │   │   ├── NOTICE
│   │   │   │   ├── README.md
│   │   │   │   ├── ROADMAP.md
│   │   │   │   ├── VENDORING.md
│   │   │   │   ├── VERSION
│   │   │   │   ├── api/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── common.go
│   │   │   │   │   ├── common_test.go
│   │   │   │   │   ├── errors/
│   │   │   │   │   │   └── errors.go
│   │   │   │   │   ├── fixtures/
│   │   │   │   │   │   └── keyfile
│   │   │   │   │   ├── server/
│   │   │   │   │   │   ├── httputils/
│   │   │   │   │   │   │   ├── decoder.go
│   │   │   │   │   │   │   ├── errors.go
│   │   │   │   │   │   │   ├── form.go
│   │   │   │   │   │   │   ├── form_test.go
│   │   │   │   │   │   │   └── httputils.go
│   │   │   │   │   │   ├── middleware/
│   │   │   │   │   │   │   ├── cors.go
│   │   │   │   │   │   │   ├── debug.go
│   │   │   │   │   │   │   ├── middleware.go
│   │   │   │   │   │   │   ├── user_agent.go
│   │   │   │   │   │   │   ├── version.go
│   │   │   │   │   │   │   └── version_test.go
│   │   │   │   │   │   ├── middleware.go
│   │   │   │   │   │   ├── profiler.go
│   │   │   │   │   │   ├── router/
│   │   │   │   │   │   │   ├── checkpoint/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── checkpoint.go
│   │   │   │   │   │   │   │   ├── checkpoint_experimental.go
│   │   │   │   │   │   │   │   ├── checkpoint_regular.go
│   │   │   │   │   │   │   │   └── checkpoint_routes.go
│   │   │   │   │   │   │   ├── container/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── container.go
│   │   │   │   │   │   │   │   ├── container_routes.go
│   │   │   │   │   │   │   │   ├── copy.go
│   │   │   │   │   │   │   │   ├── exec.go
│   │   │   │   │   │   │   │   └── inspect.go
│   │   │   │   │   │   │   ├── image/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── image.go
│   │   │   │   │   │   │   │   └── image_routes.go
│   │   │   │   │   │   │   ├── local.go
│   │   │   │   │   │   │   ├── network/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── filter.go
│   │   │   │   │   │   │   │   ├── network.go
│   │   │   │   │   │   │   │   └── network_routes.go
│   │   │   │   │   │   │   ├── plugin/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── plugin.go
│   │   │   │   │   │   │   │   ├── plugin_experimental.go
│   │   │   │   │   │   │   │   ├── plugin_regular.go
│   │   │   │   │   │   │   │   └── plugin_routes.go
│   │   │   │   │   │   │   ├── router.go
│   │   │   │   │   │   │   ├── swarm/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── cluster.go
│   │   │   │   │   │   │   │   └── cluster_routes.go
│   │   │   │   │   │   │   ├── system/
│   │   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   │   ├── system.go
│   │   │   │   │   │   │   │   └── system_routes.go
│   │   │   │   │   │   │   └── volume/
│   │   │   │   │   │   │       ├── backend.go
│   │   │   │   │   │   │       ├── volume.go
│   │   │   │   │   │   │       └── volume_routes.go
│   │   │   │   │   │   ├── router_swapper.go
│   │   │   │   │   │   ├── server.go
│   │   │   │   │   │   └── server_test.go
│   │   │   │   │   └── types/
│   │   │   │   │       ├── auth.go
│   │   │   │   │       ├── backend/
│   │   │   │   │       │   └── backend.go
│   │   │   │   │       ├── blkiodev/
│   │   │   │   │       │   └── blkio.go
│   │   │   │   │       ├── client.go
│   │   │   │   │       ├── configs.go
│   │   │   │   │       ├── container/
│   │   │   │   │       │   ├── config.go
│   │   │   │   │       │   ├── host_config.go
│   │   │   │   │       │   ├── hostconfig_unix.go
│   │   │   │   │       │   └── hostconfig_windows.go
│   │   │   │   │       ├── errors.go
│   │   │   │   │       ├── events/
│   │   │   │   │       │   └── events.go
│   │   │   │   │       ├── filters/
│   │   │   │   │       │   ├── parse.go
│   │   │   │   │       │   └── parse_test.go
│   │   │   │   │       ├── mount/
│   │   │   │   │       │   └── mount.go
│   │   │   │   │       ├── network/
│   │   │   │   │       │   └── network.go
│   │   │   │   │       ├── plugin.go
│   │   │   │   │       ├── reference/
│   │   │   │   │       │   ├── image_reference.go
│   │   │   │   │       │   └── image_reference_test.go
│   │   │   │   │       ├── registry/
│   │   │   │   │       │   └── registry.go
│   │   │   │   │       ├── seccomp.go
│   │   │   │   │       ├── stats.go
│   │   │   │   │       ├── strslice/
│   │   │   │   │       │   ├── strslice.go
│   │   │   │   │       │   └── strslice_test.go
│   │   │   │   │       ├── swarm/
│   │   │   │   │       │   ├── common.go
│   │   │   │   │       │   ├── container.go
│   │   │   │   │       │   ├── network.go
│   │   │   │   │       │   ├── node.go
│   │   │   │   │       │   ├── service.go
│   │   │   │   │       │   ├── swarm.go
│   │   │   │   │       │   └── task.go
│   │   │   │   │       ├── time/
│   │   │   │   │       │   ├── duration_convert.go
│   │   │   │   │       │   ├── duration_convert_test.go
│   │   │   │   │       │   ├── timestamp.go
│   │   │   │   │       │   └── timestamp_test.go
│   │   │   │   │       ├── types.go
│   │   │   │   │       └── versions/
│   │   │   │   │           ├── README.md
│   │   │   │   │           ├── compare.go
│   │   │   │   │           ├── compare_test.go
│   │   │   │   │           ├── v1p19/
│   │   │   │   │           │   └── types.go
│   │   │   │   │           └── v1p20/
│   │   │   │   │               └── types.go
│   │   │   │   ├── builder/
│   │   │   │   │   ├── builder.go
│   │   │   │   │   ├── context.go
│   │   │   │   │   ├── context_test.go
│   │   │   │   │   ├── context_unix.go
│   │   │   │   │   ├── context_windows.go
│   │   │   │   │   ├── dockerfile/
│   │   │   │   │   │   ├── bflag.go
│   │   │   │   │   │   ├── bflag_test.go
│   │   │   │   │   │   ├── builder.go
│   │   │   │   │   │   ├── builder_unix.go
│   │   │   │   │   │   ├── builder_windows.go
│   │   │   │   │   │   ├── command/
│   │   │   │   │   │   │   └── command.go
│   │   │   │   │   │   ├── dispatchers.go
│   │   │   │   │   │   ├── dispatchers_test.go
│   │   │   │   │   │   ├── dispatchers_unix.go
│   │   │   │   │   │   ├── dispatchers_unix_test.go
│   │   │   │   │   │   ├── dispatchers_windows.go
│   │   │   │   │   │   ├── dispatchers_windows_test.go
│   │   │   │   │   │   ├── envVarTest
│   │   │   │   │   │   ├── evaluator.go
│   │   │   │   │   │   ├── evaluator_test.go
│   │   │   │   │   │   ├── evaluator_unix.go
│   │   │   │   │   │   ├── evaluator_windows.go
│   │   │   │   │   │   ├── internals.go
│   │   │   │   │   │   ├── internals_test.go
│   │   │   │   │   │   ├── internals_unix.go
│   │   │   │   │   │   ├── internals_windows.go
│   │   │   │   │   │   ├── internals_windows_test.go
│   │   │   │   │   │   ├── parser/
│   │   │   │   │   │   │   ├── dumper/
│   │   │   │   │   │   │   │   └── main.go
│   │   │   │   │   │   │   ├── json_test.go
│   │   │   │   │   │   │   ├── line_parsers.go
│   │   │   │   │   │   │   ├── parser.go
│   │   │   │   │   │   │   ├── parser_test.go
│   │   │   │   │   │   │   ├── testfile-line/
│   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   ├── testfiles/
│   │   │   │   │   │   │   │   ├── ADD-COPY-with-JSON/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── brimstone-consuldock/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── brimstone-docker-consul/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── continueIndent/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── cpuguy83-nagios/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── docker/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── env/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── escape/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── escape-after-comment/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── escape-nonewline/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── escapes/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── flags/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── health/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── influxdb/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── jeztah-invalid-json-json-inside-string/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── jeztah-invalid-json-json-inside-string-double/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── jeztah-invalid-json-single-quotes/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── jeztah-invalid-json-unterminated-bracket/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── jeztah-invalid-json-unterminated-string/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── json/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── kartar-entrypoint-oddities/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── lk4d4-the-edge-case-generator/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── mail/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── multiple-volumes/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── mumble/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── nginx/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── tf2/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   ├── weechat/
│   │   │   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   │   │   └── result
│   │   │   │   │   │   │   │   └── znc/
│   │   │   │   │   │   │   │       ├── Dockerfile
│   │   │   │   │   │   │   │       └── result
│   │   │   │   │   │   │   ├── testfiles-negative/
│   │   │   │   │   │   │   │   ├── env_no_value/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   └── shykes-nested-json/
│   │   │   │   │   │   │   │       └── Dockerfile
│   │   │   │   │   │   │   └── utils.go
│   │   │   │   │   │   ├── shell_parser.go
│   │   │   │   │   │   ├── shell_parser_test.go
│   │   │   │   │   │   ├── support.go
│   │   │   │   │   │   ├── support_test.go
│   │   │   │   │   │   ├── utils_test.go
│   │   │   │   │   │   └── wordsTest
│   │   │   │   │   ├── dockerignore/
│   │   │   │   │   │   ├── dockerignore.go
│   │   │   │   │   │   └── dockerignore_test.go
│   │   │   │   │   ├── dockerignore.go
│   │   │   │   │   ├── dockerignore_test.go
│   │   │   │   │   ├── git.go
│   │   │   │   │   ├── remote.go
│   │   │   │   │   ├── remote_test.go
│   │   │   │   │   ├── tarsum.go
│   │   │   │   │   ├── tarsum_test.go
│   │   │   │   │   └── utils_test.go
│   │   │   │   ├── cli/
│   │   │   │   │   ├── cobra.go
│   │   │   │   │   ├── command/
│   │   │   │   │   │   ├── bundlefile/
│   │   │   │   │   │   │   ├── bundlefile.go
│   │   │   │   │   │   │   └── bundlefile_test.go
│   │   │   │   │   │   ├── checkpoint/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── cmd_experimental.go
│   │   │   │   │   │   │   ├── create.go
│   │   │   │   │   │   │   ├── list.go
│   │   │   │   │   │   │   └── remove.go
│   │   │   │   │   │   ├── cli.go
│   │   │   │   │   │   ├── commands/
│   │   │   │   │   │   │   └── commands.go
│   │   │   │   │   │   ├── container/
│   │   │   │   │   │   │   ├── attach.go
│   │   │   │   │   │   │   ├── commit.go
│   │   │   │   │   │   │   ├── cp.go
│   │   │   │   │   │   │   ├── create.go
│   │   │   │   │   │   │   ├── diff.go
│   │   │   │   │   │   │   ├── exec.go
│   │   │   │   │   │   │   ├── exec_test.go
│   │   │   │   │   │   │   ├── export.go
│   │   │   │   │   │   │   ├── hijack.go
│   │   │   │   │   │   │   ├── kill.go
│   │   │   │   │   │   │   ├── logs.go
│   │   │   │   │   │   │   ├── pause.go
│   │   │   │   │   │   │   ├── port.go
│   │   │   │   │   │   │   ├── ps.go
│   │   │   │   │   │   │   ├── ps_test.go
│   │   │   │   │   │   │   ├── rename.go
│   │   │   │   │   │   │   ├── restart.go
│   │   │   │   │   │   │   ├── rm.go
│   │   │   │   │   │   │   ├── run.go
│   │   │   │   │   │   │   ├── start.go
│   │   │   │   │   │   │   ├── start_utils.go
│   │   │   │   │   │   │   ├── start_utils_experimental.go
│   │   │   │   │   │   │   ├── stats.go
│   │   │   │   │   │   │   ├── stats_helpers.go
│   │   │   │   │   │   │   ├── stats_unit_test.go
│   │   │   │   │   │   │   ├── stop.go
│   │   │   │   │   │   │   ├── top.go
│   │   │   │   │   │   │   ├── tty.go
│   │   │   │   │   │   │   ├── unpause.go
│   │   │   │   │   │   │   ├── update.go
│   │   │   │   │   │   │   ├── utils.go
│   │   │   │   │   │   │   └── wait.go
│   │   │   │   │   │   ├── formatter/
│   │   │   │   │   │   │   ├── container.go
│   │   │   │   │   │   │   ├── container_test.go
│   │   │   │   │   │   │   ├── custom.go
│   │   │   │   │   │   │   ├── custom_test.go
│   │   │   │   │   │   │   ├── formatter.go
│   │   │   │   │   │   │   ├── image.go
│   │   │   │   │   │   │   ├── image_test.go
│   │   │   │   │   │   │   ├── network.go
│   │   │   │   │   │   │   ├── network_test.go
│   │   │   │   │   │   │   ├── volume.go
│   │   │   │   │   │   │   └── volume_test.go
│   │   │   │   │   │   ├── idresolver/
│   │   │   │   │   │   │   └── idresolver.go
│   │   │   │   │   │   ├── image/
│   │   │   │   │   │   │   ├── build.go
│   │   │   │   │   │   │   ├── history.go
│   │   │   │   │   │   │   ├── images.go
│   │   │   │   │   │   │   ├── import.go
│   │   │   │   │   │   │   ├── load.go
│   │   │   │   │   │   │   ├── pull.go
│   │   │   │   │   │   │   ├── push.go
│   │   │   │   │   │   │   ├── remove.go
│   │   │   │   │   │   │   ├── save.go
│   │   │   │   │   │   │   ├── search.go
│   │   │   │   │   │   │   ├── tag.go
│   │   │   │   │   │   │   ├── trust.go
│   │   │   │   │   │   │   └── trust_test.go
│   │   │   │   │   │   ├── in.go
│   │   │   │   │   │   ├── inspect/
│   │   │   │   │   │   │   ├── inspector.go
│   │   │   │   │   │   │   └── inspector_test.go
│   │   │   │   │   │   ├── network/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── connect.go
│   │   │   │   │   │   │   ├── create.go
│   │   │   │   │   │   │   ├── disconnect.go
│   │   │   │   │   │   │   ├── inspect.go
│   │   │   │   │   │   │   ├── list.go
│   │   │   │   │   │   │   └── remove.go
│   │   │   │   │   │   ├── node/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── demote.go
│   │   │   │   │   │   │   ├── inspect.go
│   │   │   │   │   │   │   ├── list.go
│   │   │   │   │   │   │   ├── opts.go
│   │   │   │   │   │   │   ├── promote.go
│   │   │   │   │   │   │   ├── ps.go
│   │   │   │   │   │   │   ├── remove.go
│   │   │   │   │   │   │   └── update.go
│   │   │   │   │   │   ├── out.go
│   │   │   │   │   │   ├── plugin/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── cmd_experimental.go
│   │   │   │   │   │   │   ├── disable.go
│   │   │   │   │   │   │   ├── enable.go
│   │   │   │   │   │   │   ├── inspect.go
│   │   │   │   │   │   │   ├── install.go
│   │   │   │   │   │   │   ├── list.go
│   │   │   │   │   │   │   ├── push.go
│   │   │   │   │   │   │   ├── remove.go
│   │   │   │   │   │   │   └── set.go
│   │   │   │   │   │   ├── registry/
│   │   │   │   │   │   │   ├── login.go
│   │   │   │   │   │   │   └── logout.go
│   │   │   │   │   │   ├── registry.go
│   │   │   │   │   │   ├── service/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── create.go
│   │   │   │   │   │   │   ├── inspect.go
│   │   │   │   │   │   │   ├── inspect_test.go
│   │   │   │   │   │   │   ├── list.go
│   │   │   │   │   │   │   ├── opts.go
│   │   │   │   │   │   │   ├── opts_test.go
│   │   │   │   │   │   │   ├── ps.go
│   │   │   │   │   │   │   ├── remove.go
│   │   │   │   │   │   │   ├── scale.go
│   │   │   │   │   │   │   ├── update.go
│   │   │   │   │   │   │   └── update_test.go
│   │   │   │   │   │   ├── stack/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── cmd_stub.go
│   │   │   │   │   │   │   ├── common.go
│   │   │   │   │   │   │   ├── config.go
│   │   │   │   │   │   │   ├── deploy.go
│   │   │   │   │   │   │   ├── opts.go
│   │   │   │   │   │   │   ├── ps.go
│   │   │   │   │   │   │   ├── remove.go
│   │   │   │   │   │   │   └── services.go
│   │   │   │   │   │   ├── swarm/
│   │   │   │   │   │   │   ├── cmd.go
│   │   │   │   │   │   │   ├── init.go
│   │   │   │   │   │   │   ├── join.go
│   │   │   │   │   │   │   ├── join_token.go
│   │   │   │   │   │   │   ├── leave.go
│   │   │   │   │   │   │   ├── opts.go
│   │   │   │   │   │   │   ├── opts_test.go
│   │   │   │   │   │   │   └── update.go
│   │   │   │   │   │   ├── system/
│   │   │   │   │   │   │   ├── events.go
│   │   │   │   │   │   │   ├── events_utils.go
│   │   │   │   │   │   │   ├── info.go
│   │   │   │   │   │   │   ├── inspect.go
│   │   │   │   │   │   │   └── version.go
│   │   │   │   │   │   ├── task/
│   │   │   │   │   │   │   └── print.go
│   │   │   │   │   │   ├── trust.go
│   │   │   │   │   │   ├── utils.go
│   │   │   │   │   │   └── volume/
│   │   │   │   │   │       ├── cmd.go
│   │   │   │   │   │       ├── create.go
│   │   │   │   │   │       ├── inspect.go
│   │   │   │   │   │       ├── list.go
│   │   │   │   │   │       └── remove.go
│   │   │   │   │   ├── error.go
│   │   │   │   │   ├── flags/
│   │   │   │   │   │   ├── client.go
│   │   │   │   │   │   └── common.go
│   │   │   │   │   └── required.go
│   │   │   │   ├── cliconfig/
│   │   │   │   │   ├── config.go
│   │   │   │   │   ├── config_test.go
│   │   │   │   │   ├── configfile/
│   │   │   │   │   │   ├── file.go
│   │   │   │   │   │   └── file_test.go
│   │   │   │   │   └── credentials/
│   │   │   │   │       ├── credentials.go
│   │   │   │   │       ├── default_store.go
│   │   │   │   │       ├── default_store_darwin.go
│   │   │   │   │       ├── default_store_linux.go
│   │   │   │   │       ├── default_store_unsupported.go
│   │   │   │   │       ├── default_store_windows.go
│   │   │   │   │       ├── file_store.go
│   │   │   │   │       ├── file_store_test.go
│   │   │   │   │       ├── native_store.go
│   │   │   │   │       └── native_store_test.go
│   │   │   │   ├── client/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── checkpoint_create.go
│   │   │   │   │   ├── checkpoint_create_test.go
│   │   │   │   │   ├── checkpoint_delete.go
│   │   │   │   │   ├── checkpoint_delete_test.go
│   │   │   │   │   ├── checkpoint_list.go
│   │   │   │   │   ├── checkpoint_list_test.go
│   │   │   │   │   ├── client.go
│   │   │   │   │   ├── client_mock_test.go
│   │   │   │   │   ├── client_test.go
│   │   │   │   │   ├── client_unix.go
│   │   │   │   │   ├── client_windows.go
│   │   │   │   │   ├── container_attach.go
│   │   │   │   │   ├── container_commit.go
│   │   │   │   │   ├── container_commit_test.go
│   │   │   │   │   ├── container_copy.go
│   │   │   │   │   ├── container_copy_test.go
│   │   │   │   │   ├── container_create.go
│   │   │   │   │   ├── container_create_test.go
│   │   │   │   │   ├── container_diff.go
│   │   │   │   │   ├── container_diff_test.go
│   │   │   │   │   ├── container_exec.go
│   │   │   │   │   ├── container_exec_test.go
│   │   │   │   │   ├── container_export.go
│   │   │   │   │   ├── container_export_test.go
│   │   │   │   │   ├── container_inspect.go
│   │   │   │   │   ├── container_inspect_test.go
│   │   │   │   │   ├── container_kill.go
│   │   │   │   │   ├── container_kill_test.go
│   │   │   │   │   ├── container_list.go
│   │   │   │   │   ├── container_list_test.go
│   │   │   │   │   ├── container_logs.go
│   │   │   │   │   ├── container_logs_test.go
│   │   │   │   │   ├── container_pause.go
│   │   │   │   │   ├── container_pause_test.go
│   │   │   │   │   ├── container_remove.go
│   │   │   │   │   ├── container_remove_test.go
│   │   │   │   │   ├── container_rename.go
│   │   │   │   │   ├── container_rename_test.go
│   │   │   │   │   ├── container_resize.go
│   │   │   │   │   ├── container_resize_test.go
│   │   │   │   │   ├── container_restart.go
│   │   │   │   │   ├── container_restart_test.go
│   │   │   │   │   ├── container_start.go
│   │   │   │   │   ├── container_start_test.go
│   │   │   │   │   ├── container_stats.go
│   │   │   │   │   ├── container_stats_test.go
│   │   │   │   │   ├── container_stop.go
│   │   │   │   │   ├── container_stop_test.go
│   │   │   │   │   ├── container_top.go
│   │   │   │   │   ├── container_top_test.go
│   │   │   │   │   ├── container_unpause.go
│   │   │   │   │   ├── container_unpause_test.go
│   │   │   │   │   ├── container_update.go
│   │   │   │   │   ├── container_update_test.go
│   │   │   │   │   ├── container_wait.go
│   │   │   │   │   ├── container_wait_test.go
│   │   │   │   │   ├── errors.go
│   │   │   │   │   ├── events.go
│   │   │   │   │   ├── events_test.go
│   │   │   │   │   ├── hijack.go
│   │   │   │   │   ├── image_build.go
│   │   │   │   │   ├── image_build_test.go
│   │   │   │   │   ├── image_create.go
│   │   │   │   │   ├── image_create_test.go
│   │   │   │   │   ├── image_history.go
│   │   │   │   │   ├── image_history_test.go
│   │   │   │   │   ├── image_import.go
│   │   │   │   │   ├── image_import_test.go
│   │   │   │   │   ├── image_inspect.go
│   │   │   │   │   ├── image_inspect_test.go
│   │   │   │   │   ├── image_list.go
│   │   │   │   │   ├── image_list_test.go
│   │   │   │   │   ├── image_load.go
│   │   │   │   │   ├── image_load_test.go
│   │   │   │   │   ├── image_pull.go
│   │   │   │   │   ├── image_pull_test.go
│   │   │   │   │   ├── image_push.go
│   │   │   │   │   ├── image_push_test.go
│   │   │   │   │   ├── image_remove.go
│   │   │   │   │   ├── image_remove_test.go
│   │   │   │   │   ├── image_save.go
│   │   │   │   │   ├── image_save_test.go
│   │   │   │   │   ├── image_search.go
│   │   │   │   │   ├── image_search_test.go
│   │   │   │   │   ├── image_tag.go
│   │   │   │   │   ├── image_tag_test.go
│   │   │   │   │   ├── info.go
│   │   │   │   │   ├── info_test.go
│   │   │   │   │   ├── interface.go
│   │   │   │   │   ├── interface_experimental.go
│   │   │   │   │   ├── interface_stable.go
│   │   │   │   │   ├── login.go
│   │   │   │   │   ├── network_connect.go
│   │   │   │   │   ├── network_connect_test.go
│   │   │   │   │   ├── network_create.go
│   │   │   │   │   ├── network_create_test.go
│   │   │   │   │   ├── network_disconnect.go
│   │   │   │   │   ├── network_disconnect_test.go
│   │   │   │   │   ├── network_inspect.go
│   │   │   │   │   ├── network_inspect_test.go
│   │   │   │   │   ├── network_list.go
│   │   │   │   │   ├── network_list_test.go
│   │   │   │   │   ├── network_remove.go
│   │   │   │   │   ├── network_remove_test.go
│   │   │   │   │   ├── node_inspect.go
│   │   │   │   │   ├── node_inspect_test.go
│   │   │   │   │   ├── node_list.go
│   │   │   │   │   ├── node_list_test.go
│   │   │   │   │   ├── node_remove.go
│   │   │   │   │   ├── node_remove_test.go
│   │   │   │   │   ├── node_update.go
│   │   │   │   │   ├── node_update_test.go
│   │   │   │   │   ├── plugin_disable.go
│   │   │   │   │   ├── plugin_disable_test.go
│   │   │   │   │   ├── plugin_enable.go
│   │   │   │   │   ├── plugin_enable_test.go
│   │   │   │   │   ├── plugin_inspect.go
│   │   │   │   │   ├── plugin_inspect_test.go
│   │   │   │   │   ├── plugin_install.go
│   │   │   │   │   ├── plugin_list.go
│   │   │   │   │   ├── plugin_list_test.go
│   │   │   │   │   ├── plugin_push.go
│   │   │   │   │   ├── plugin_push_test.go
│   │   │   │   │   ├── plugin_remove.go
│   │   │   │   │   ├── plugin_remove_test.go
│   │   │   │   │   ├── plugin_set.go
│   │   │   │   │   ├── plugin_set_test.go
│   │   │   │   │   ├── request.go
│   │   │   │   │   ├── request_test.go
│   │   │   │   │   ├── service_create.go
│   │   │   │   │   ├── service_create_test.go
│   │   │   │   │   ├── service_inspect.go
│   │   │   │   │   ├── service_inspect_test.go
│   │   │   │   │   ├── service_list.go
│   │   │   │   │   ├── service_list_test.go
│   │   │   │   │   ├── service_remove.go
│   │   │   │   │   ├── service_remove_test.go
│   │   │   │   │   ├── service_update.go
│   │   │   │   │   ├── service_update_test.go
│   │   │   │   │   ├── swarm_init.go
│   │   │   │   │   ├── swarm_init_test.go
│   │   │   │   │   ├── swarm_inspect.go
│   │   │   │   │   ├── swarm_inspect_test.go
│   │   │   │   │   ├── swarm_join.go
│   │   │   │   │   ├── swarm_join_test.go
│   │   │   │   │   ├── swarm_leave.go
│   │   │   │   │   ├── swarm_leave_test.go
│   │   │   │   │   ├── swarm_update.go
│   │   │   │   │   ├── swarm_update_test.go
│   │   │   │   │   ├── task_inspect.go
│   │   │   │   │   ├── task_inspect_test.go
│   │   │   │   │   ├── task_list.go
│   │   │   │   │   ├── task_list_test.go
│   │   │   │   │   ├── testdata/
│   │   │   │   │   │   ├── ca.pem
│   │   │   │   │   │   ├── cert.pem
│   │   │   │   │   │   └── key.pem
│   │   │   │   │   ├── transport/
│   │   │   │   │   │   ├── cancellable/
│   │   │   │   │   │   │   ├── LICENSE
│   │   │   │   │   │   │   ├── canceler.go
│   │   │   │   │   │   │   ├── canceler_go14.go
│   │   │   │   │   │   │   └── cancellable.go
│   │   │   │   │   │   ├── client.go
│   │   │   │   │   │   ├── tlsconfig_clone.go
│   │   │   │   │   │   ├── tlsconfig_clone_go16.go
│   │   │   │   │   │   ├── tlsconfig_clone_go17.go
│   │   │   │   │   │   └── transport.go
│   │   │   │   │   ├── version.go
│   │   │   │   │   ├── volume_create.go
│   │   │   │   │   ├── volume_create_test.go
│   │   │   │   │   ├── volume_inspect.go
│   │   │   │   │   ├── volume_inspect_test.go
│   │   │   │   │   ├── volume_list.go
│   │   │   │   │   ├── volume_list_test.go
│   │   │   │   │   ├── volume_remove.go
│   │   │   │   │   └── volume_remove_test.go
│   │   │   │   ├── cmd/
│   │   │   │   │   ├── docker/
│   │   │   │   │   │   ├── daemon_none.go
│   │   │   │   │   │   ├── daemon_none_test.go
│   │   │   │   │   │   ├── daemon_unit_test.go
│   │   │   │   │   │   ├── daemon_unix.go
│   │   │   │   │   │   ├── docker.go
│   │   │   │   │   │   ├── docker_test.go
│   │   │   │   │   │   └── docker_windows.go
│   │   │   │   │   └── dockerd/
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── daemon.go
│   │   │   │   │       ├── daemon_freebsd.go
│   │   │   │   │       ├── daemon_linux.go
│   │   │   │   │       ├── daemon_solaris.go
│   │   │   │   │       ├── daemon_test.go
│   │   │   │   │       ├── daemon_unix.go
│   │   │   │   │       ├── daemon_unix_test.go
│   │   │   │   │       ├── daemon_windows.go
│   │   │   │   │       ├── docker.go
│   │   │   │   │       ├── docker_windows.go
│   │   │   │   │       ├── hack/
│   │   │   │   │       │   ├── malformed_host_override.go
│   │   │   │   │       │   └── malformed_host_override_test.go
│   │   │   │   │       ├── routes.go
│   │   │   │   │       ├── routes_experimental.go
│   │   │   │   │       ├── service_unsupported.go
│   │   │   │   │       └── service_windows.go
│   │   │   │   ├── container/
│   │   │   │   │   ├── archive.go
│   │   │   │   │   ├── container.go
│   │   │   │   │   ├── container_solaris.go
│   │   │   │   │   ├── container_unit_test.go
│   │   │   │   │   ├── container_unix.go
│   │   │   │   │   ├── container_windows.go
│   │   │   │   │   ├── health.go
│   │   │   │   │   ├── history.go
│   │   │   │   │   ├── memory_store.go
│   │   │   │   │   ├── memory_store_test.go
│   │   │   │   │   ├── monitor.go
│   │   │   │   │   ├── mounts_unix.go
│   │   │   │   │   ├── mounts_windows.go
│   │   │   │   │   ├── state.go
│   │   │   │   │   ├── state_solaris.go
│   │   │   │   │   ├── state_test.go
│   │   │   │   │   ├── state_unix.go
│   │   │   │   │   ├── state_windows.go
│   │   │   │   │   └── store.go
│   │   │   │   ├── contrib/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── REVIEWERS
│   │   │   │   │   ├── apparmor/
│   │   │   │   │   │   ├── main.go
│   │   │   │   │   │   └── template.go
│   │   │   │   │   ├── builder/
│   │   │   │   │   │   ├── deb/
│   │   │   │   │   │   │   ├── amd64/
│   │   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   │   ├── build.sh
│   │   │   │   │   │   │   │   ├── debian-jessie/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   ├── debian-stretch/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   ├── debian-wheezy/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   ├── generate.sh
│   │   │   │   │   │   │   │   ├── ubuntu-precise/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   ├── ubuntu-trusty/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   ├── ubuntu-wily/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   └── ubuntu-xenial/
│   │   │   │   │   │   │   │       └── Dockerfile
│   │   │   │   │   │   │   ├── armhf/
│   │   │   │   │   │   │   │   ├── debian-jessie/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   ├── raspbian-jessie/
│   │   │   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   │   │   └── ubuntu-trusty/
│   │   │   │   │   │   │   │       └── Dockerfile
│   │   │   │   │   │   │   └── ppc64le/
│   │   │   │   │   │   │       ├── build.sh
│   │   │   │   │   │   │       ├── generate.sh
│   │   │   │   │   │   │       └── ubuntu-xenial/
│   │   │   │   │   │   │           └── Dockerfile
│   │   │   │   │   │   └── rpm/
│   │   │   │   │   │       └── amd64/
│   │   │   │   │   │           ├── README.md
│   │   │   │   │   │           ├── build.sh
│   │   │   │   │   │           ├── centos-7/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           ├── fedora-22/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           ├── fedora-23/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           ├── fedora-24/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           ├── generate.sh
│   │   │   │   │   │           ├── opensuse-13.2/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           ├── oraclelinux-6/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           ├── oraclelinux-7/
│   │   │   │   │   │           │   └── Dockerfile
│   │   │   │   │   │           └── photon-1.0/
│   │   │   │   │   │               └── Dockerfile
│   │   │   │   │   ├── check-config.sh
│   │   │   │   │   ├── completion/
│   │   │   │   │   │   ├── REVIEWERS
│   │   │   │   │   │   ├── bash/
│   │   │   │   │   │   │   └── docker
│   │   │   │   │   │   ├── fish/
│   │   │   │   │   │   │   └── docker.fish
│   │   │   │   │   │   ├── powershell/
│   │   │   │   │   │   │   └── posh-docker.psm1
│   │   │   │   │   │   └── zsh/
│   │   │   │   │   │       ├── REVIEWERS
│   │   │   │   │   │       └── _docker
│   │   │   │   │   ├── desktop-integration/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── chromium/
│   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   └── gparted/
│   │   │   │   │   │       └── Dockerfile
│   │   │   │   │   ├── docker-device-tool/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── device_tool.go
│   │   │   │   │   │   └── device_tool_windows.go
│   │   │   │   │   ├── dockerize-disk.sh
│   │   │   │   │   ├── download-frozen-image-v1.sh
│   │   │   │   │   ├── download-frozen-image-v2.sh
│   │   │   │   │   ├── gitdm/
│   │   │   │   │   │   ├── aliases
│   │   │   │   │   │   ├── domain-map
│   │   │   │   │   │   ├── generate_aliases.sh
│   │   │   │   │   │   └── gitdm.config
│   │   │   │   │   ├── httpserver/
│   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   └── server.go
│   │   │   │   │   ├── init/
│   │   │   │   │   │   ├── openrc/
│   │   │   │   │   │   │   ├── docker.confd
│   │   │   │   │   │   │   └── docker.initd
│   │   │   │   │   │   ├── systemd/
│   │   │   │   │   │   │   ├── REVIEWERS
│   │   │   │   │   │   │   ├── docker.service
│   │   │   │   │   │   │   ├── docker.service.rpm
│   │   │   │   │   │   │   └── docker.socket
│   │   │   │   │   │   ├── sysvinit-debian/
│   │   │   │   │   │   │   ├── docker
│   │   │   │   │   │   │   └── docker.default
│   │   │   │   │   │   ├── sysvinit-redhat/
│   │   │   │   │   │   │   ├── docker
│   │   │   │   │   │   │   └── docker.sysconfig
│   │   │   │   │   │   └── upstart/
│   │   │   │   │   │       ├── REVIEWERS
│   │   │   │   │   │       └── docker.conf
│   │   │   │   │   ├── mkimage/
│   │   │   │   │   │   ├── .febootstrap-minimize
│   │   │   │   │   │   ├── busybox-static
│   │   │   │   │   │   ├── debootstrap
│   │   │   │   │   │   ├── mageia-urpmi
│   │   │   │   │   │   └── rinse
│   │   │   │   │   ├── mkimage-alpine.sh
│   │   │   │   │   ├── mkimage-arch-pacman.conf
│   │   │   │   │   ├── mkimage-arch.sh
│   │   │   │   │   ├── mkimage-archarm-pacman.conf
│   │   │   │   │   ├── mkimage-busybox.sh
│   │   │   │   │   ├── mkimage-crux.sh
│   │   │   │   │   ├── mkimage-debootstrap.sh
│   │   │   │   │   ├── mkimage-pld.sh
│   │   │   │   │   ├── mkimage-rinse.sh
│   │   │   │   │   ├── mkimage-yum.sh
│   │   │   │   │   ├── mkimage.sh
│   │   │   │   │   ├── nnp-test/
│   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   └── nnp-test.c
│   │   │   │   │   ├── nuke-graph-directory.sh
│   │   │   │   │   ├── project-stats.sh
│   │   │   │   │   ├── report-issue.sh
│   │   │   │   │   ├── reprepro/
│   │   │   │   │   │   └── suites.sh
│   │   │   │   │   ├── selinux/
│   │   │   │   │   │   └── docker-engine-selinux/
│   │   │   │   │   │       ├── LICENSE
│   │   │   │   │   │       ├── Makefile
│   │   │   │   │   │       ├── docker.fc
│   │   │   │   │   │       ├── docker.if
│   │   │   │   │   │       └── docker.te
│   │   │   │   │   ├── selinux-fedora-24/
│   │   │   │   │   │   └── docker-engine-selinux/
│   │   │   │   │   │       ├── LICENSE
│   │   │   │   │   │       ├── Makefile
│   │   │   │   │   │       ├── README.md
│   │   │   │   │   │       ├── docker.fc
│   │   │   │   │   │       ├── docker.if
│   │   │   │   │   │       └── docker.te
│   │   │   │   │   ├── selinux-oraclelinux-7/
│   │   │   │   │   │   └── docker-engine-selinux/
│   │   │   │   │   │       ├── LICENSE
│   │   │   │   │   │       ├── Makefile
│   │   │   │   │   │       ├── README.md
│   │   │   │   │   │       ├── docker.fc
│   │   │   │   │   │       ├── docker.if
│   │   │   │   │   │       └── docker.te
│   │   │   │   │   ├── syntax/
│   │   │   │   │   │   ├── kate/
│   │   │   │   │   │   │   └── Dockerfile.xml
│   │   │   │   │   │   ├── nano/
│   │   │   │   │   │   │   ├── Dockerfile.nanorc
│   │   │   │   │   │   │   └── README.md
│   │   │   │   │   │   ├── textmate/
│   │   │   │   │   │   │   ├── Docker.tmbundle/
│   │   │   │   │   │   │   │   ├── Preferences/
│   │   │   │   │   │   │   │   │   └── Dockerfile.tmPreferences
│   │   │   │   │   │   │   │   ├── Syntaxes/
│   │   │   │   │   │   │   │   │   └── Dockerfile.tmLanguage
│   │   │   │   │   │   │   │   └── info.plist
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   └── REVIEWERS
│   │   │   │   │   │   └── vim/
│   │   │   │   │   │       ├── LICENSE
│   │   │   │   │   │       ├── README.md
│   │   │   │   │   │       ├── doc/
│   │   │   │   │   │       │   └── dockerfile.txt
│   │   │   │   │   │       ├── ftdetect/
│   │   │   │   │   │       │   └── dockerfile.vim
│   │   │   │   │   │       └── syntax/
│   │   │   │   │   │           └── dockerfile.vim
│   │   │   │   │   ├── syscall-test/
│   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   ├── acct.c
│   │   │   │   │   │   ├── exit32.s
│   │   │   │   │   │   ├── ns.c
│   │   │   │   │   │   └── userns.c
│   │   │   │   │   ├── udev/
│   │   │   │   │   │   └── 80-docker.rules
│   │   │   │   │   └── vagrant-docker/
│   │   │   │   │       └── README.md
│   │   │   │   ├── daemon/
│   │   │   │   │   ├── apparmor_default.go
│   │   │   │   │   ├── apparmor_default_unsupported.go
│   │   │   │   │   ├── archive.go
│   │   │   │   │   ├── archive_unix.go
│   │   │   │   │   ├── archive_windows.go
│   │   │   │   │   ├── attach.go
│   │   │   │   │   ├── auth.go
│   │   │   │   │   ├── caps/
│   │   │   │   │   │   └── utils_unix.go
│   │   │   │   │   ├── changes.go
│   │   │   │   │   ├── checkpoint.go
│   │   │   │   │   ├── cluster/
│   │   │   │   │   │   ├── cluster.go
│   │   │   │   │   │   ├── convert/
│   │   │   │   │   │   │   ├── container.go
│   │   │   │   │   │   │   ├── network.go
│   │   │   │   │   │   │   ├── node.go
│   │   │   │   │   │   │   ├── service.go
│   │   │   │   │   │   │   ├── swarm.go
│   │   │   │   │   │   │   └── task.go
│   │   │   │   │   │   ├── executor/
│   │   │   │   │   │   │   ├── backend.go
│   │   │   │   │   │   │   └── container/
│   │   │   │   │   │   │       ├── adapter.go
│   │   │   │   │   │   │       ├── attachment.go
│   │   │   │   │   │   │       ├── container.go
│   │   │   │   │   │   │       ├── controller.go
│   │   │   │   │   │   │       ├── errors.go
│   │   │   │   │   │   │       ├── executor.go
│   │   │   │   │   │   │       ├── health_test.go
│   │   │   │   │   │   │       ├── validate.go
│   │   │   │   │   │   │       ├── validate_test.go
│   │   │   │   │   │   │       ├── validate_unix_test.go
│   │   │   │   │   │   │       └── validate_windows_test.go
│   │   │   │   │   │   ├── filters.go
│   │   │   │   │   │   ├── helpers.go
│   │   │   │   │   │   ├── listen_addr.go
│   │   │   │   │   │   ├── listen_addr_linux.go
│   │   │   │   │   │   ├── listen_addr_others.go
│   │   │   │   │   │   └── provider/
│   │   │   │   │   │       └── network.go
│   │   │   │   │   ├── commit.go
│   │   │   │   │   ├── config.go
│   │   │   │   │   ├── config_experimental.go
│   │   │   │   │   ├── config_solaris.go
│   │   │   │   │   ├── config_stub.go
│   │   │   │   │   ├── config_test.go
│   │   │   │   │   ├── config_unix.go
│   │   │   │   │   ├── config_windows.go
│   │   │   │   │   ├── container.go
│   │   │   │   │   ├── container_operations.go
│   │   │   │   │   ├── container_operations_solaris.go
│   │   │   │   │   ├── container_operations_unix.go
│   │   │   │   │   ├── container_operations_windows.go
│   │   │   │   │   ├── create.go
│   │   │   │   │   ├── create_unix.go
│   │   │   │   │   ├── create_windows.go
│   │   │   │   │   ├── daemon.go
│   │   │   │   │   ├── daemon_experimental.go
│   │   │   │   │   ├── daemon_linux.go
│   │   │   │   │   ├── daemon_linux_test.go
│   │   │   │   │   ├── daemon_solaris.go
│   │   │   │   │   ├── daemon_stub.go
│   │   │   │   │   ├── daemon_test.go
│   │   │   │   │   ├── daemon_unix.go
│   │   │   │   │   ├── daemon_unix_test.go
│   │   │   │   │   ├── daemon_unsupported.go
│   │   │   │   │   ├── daemon_windows.go
│   │   │   │   │   ├── debugtrap_unix.go
│   │   │   │   │   ├── debugtrap_unsupported.go
│   │   │   │   │   ├── debugtrap_windows.go
│   │   │   │   │   ├── delete.go
│   │   │   │   │   ├── delete_test.go
│   │   │   │   │   ├── discovery.go
│   │   │   │   │   ├── discovery_test.go
│   │   │   │   │   ├── errors.go
│   │   │   │   │   ├── events/
│   │   │   │   │   │   ├── events.go
│   │   │   │   │   │   ├── events_test.go
│   │   │   │   │   │   ├── filter.go
│   │   │   │   │   │   └── testutils/
│   │   │   │   │   │       └── testutils.go
│   │   │   │   │   ├── events.go
│   │   │   │   │   ├── events_test.go
│   │   │   │   │   ├── exec/
│   │   │   │   │   │   └── exec.go
│   │   │   │   │   ├── exec.go
│   │   │   │   │   ├── exec_linux.go
│   │   │   │   │   ├── exec_solaris.go
│   │   │   │   │   ├── exec_windows.go
│   │   │   │   │   ├── export.go
│   │   │   │   │   ├── graphdriver/
│   │   │   │   │   │   ├── aufs/
│   │   │   │   │   │   │   ├── aufs.go
│   │   │   │   │   │   │   ├── aufs_test.go
│   │   │   │   │   │   │   ├── dirs.go
│   │   │   │   │   │   │   ├── mount.go
│   │   │   │   │   │   │   ├── mount_linux.go
│   │   │   │   │   │   │   └── mount_unsupported.go
│   │   │   │   │   │   ├── btrfs/
│   │   │   │   │   │   │   ├── btrfs.go
│   │   │   │   │   │   │   ├── btrfs_test.go
│   │   │   │   │   │   │   ├── dummy_unsupported.go
│   │   │   │   │   │   │   ├── version.go
│   │   │   │   │   │   │   ├── version_none.go
│   │   │   │   │   │   │   └── version_test.go
│   │   │   │   │   │   ├── counter.go
│   │   │   │   │   │   ├── devmapper/
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── deviceset.go
│   │   │   │   │   │   │   ├── devmapper_doc.go
│   │   │   │   │   │   │   ├── devmapper_test.go
│   │   │   │   │   │   │   ├── driver.go
│   │   │   │   │   │   │   └── mount.go
│   │   │   │   │   │   ├── driver.go
│   │   │   │   │   │   ├── driver_freebsd.go
│   │   │   │   │   │   ├── driver_linux.go
│   │   │   │   │   │   ├── driver_solaris.go
│   │   │   │   │   │   ├── driver_unsupported.go
│   │   │   │   │   │   ├── driver_windows.go
│   │   │   │   │   │   ├── fsdiff.go
│   │   │   │   │   │   ├── graphtest/
│   │   │   │   │   │   │   ├── graphbench_unix.go
│   │   │   │   │   │   │   ├── graphtest_unix.go
│   │   │   │   │   │   │   ├── graphtest_windows.go
│   │   │   │   │   │   │   ├── testutil.go
│   │   │   │   │   │   │   └── testutil_unix.go
│   │   │   │   │   │   ├── overlay/
│   │   │   │   │   │   │   ├── copy.go
│   │   │   │   │   │   │   ├── overlay.go
│   │   │   │   │   │   │   ├── overlay_test.go
│   │   │   │   │   │   │   └── overlay_unsupported.go
│   │   │   │   │   │   ├── overlay2/
│   │   │   │   │   │   │   ├── mount.go
│   │   │   │   │   │   │   ├── overlay.go
│   │   │   │   │   │   │   ├── overlay_test.go
│   │   │   │   │   │   │   ├── overlay_unsupported.go
│   │   │   │   │   │   │   └── randomid.go
│   │   │   │   │   │   ├── plugin.go
│   │   │   │   │   │   ├── plugin_unsupported.go
│   │   │   │   │   │   ├── proxy.go
│   │   │   │   │   │   ├── register/
│   │   │   │   │   │   │   ├── register_aufs.go
│   │   │   │   │   │   │   ├── register_btrfs.go
│   │   │   │   │   │   │   ├── register_devicemapper.go
│   │   │   │   │   │   │   ├── register_overlay.go
│   │   │   │   │   │   │   ├── register_vfs.go
│   │   │   │   │   │   │   ├── register_windows.go
│   │   │   │   │   │   │   └── register_zfs.go
│   │   │   │   │   │   ├── vfs/
│   │   │   │   │   │   │   ├── driver.go
│   │   │   │   │   │   │   └── vfs_test.go
│   │   │   │   │   │   ├── windows/
│   │   │   │   │   │   │   ├── windows.go
│   │   │   │   │   │   │   └── windows_windows_test.go
│   │   │   │   │   │   └── zfs/
│   │   │   │   │   │       ├── MAINTAINERS
│   │   │   │   │   │       ├── zfs.go
│   │   │   │   │   │       ├── zfs_freebsd.go
│   │   │   │   │   │       ├── zfs_linux.go
│   │   │   │   │   │       ├── zfs_solaris.go
│   │   │   │   │   │       ├── zfs_test.go
│   │   │   │   │   │       └── zfs_unsupported.go
│   │   │   │   │   ├── health.go
│   │   │   │   │   ├── health_test.go
│   │   │   │   │   ├── image.go
│   │   │   │   │   ├── image_delete.go
│   │   │   │   │   ├── image_exporter.go
│   │   │   │   │   ├── image_history.go
│   │   │   │   │   ├── image_inspect.go
│   │   │   │   │   ├── image_pull.go
│   │   │   │   │   ├── image_push.go
│   │   │   │   │   ├── image_tag.go
│   │   │   │   │   ├── images.go
│   │   │   │   │   ├── import.go
│   │   │   │   │   ├── info.go
│   │   │   │   │   ├── inspect.go
│   │   │   │   │   ├── inspect_solaris.go
│   │   │   │   │   ├── inspect_unix.go
│   │   │   │   │   ├── inspect_windows.go
│   │   │   │   │   ├── keys.go
│   │   │   │   │   ├── keys_unsupported.go
│   │   │   │   │   ├── kill.go
│   │   │   │   │   ├── links/
│   │   │   │   │   │   ├── links.go
│   │   │   │   │   │   └── links_test.go
│   │   │   │   │   ├── links.go
│   │   │   │   │   ├── links_test.go
│   │   │   │   │   ├── list.go
│   │   │   │   │   ├── list_unix.go
│   │   │   │   │   ├── list_windows.go
│   │   │   │   │   ├── logdrivers_linux.go
│   │   │   │   │   ├── logdrivers_windows.go
│   │   │   │   │   ├── logger/
│   │   │   │   │   │   ├── awslogs/
│   │   │   │   │   │   │   ├── cloudwatchlogs.go
│   │   │   │   │   │   │   ├── cloudwatchlogs_test.go
│   │   │   │   │   │   │   └── cwlogsiface_mock_test.go
│   │   │   │   │   │   ├── context.go
│   │   │   │   │   │   ├── copier.go
│   │   │   │   │   │   ├── copier_test.go
│   │   │   │   │   │   ├── etwlogs/
│   │   │   │   │   │   │   └── etwlogs_windows.go
│   │   │   │   │   │   ├── factory.go
│   │   │   │   │   │   ├── fluentd/
│   │   │   │   │   │   │   └── fluentd.go
│   │   │   │   │   │   ├── gcplogs/
│   │   │   │   │   │   │   └── gcplogging.go
│   │   │   │   │   │   ├── gelf/
│   │   │   │   │   │   │   ├── gelf.go
│   │   │   │   │   │   │   └── gelf_unsupported.go
│   │   │   │   │   │   ├── journald/
│   │   │   │   │   │   │   ├── journald.go
│   │   │   │   │   │   │   ├── journald_test.go
│   │   │   │   │   │   │   ├── journald_unsupported.go
│   │   │   │   │   │   │   ├── read.go
│   │   │   │   │   │   │   ├── read_native.go
│   │   │   │   │   │   │   ├── read_native_compat.go
│   │   │   │   │   │   │   └── read_unsupported.go
│   │   │   │   │   │   ├── jsonfilelog/
│   │   │   │   │   │   │   ├── jsonfilelog.go
│   │   │   │   │   │   │   ├── jsonfilelog_test.go
│   │   │   │   │   │   │   └── read.go
│   │   │   │   │   │   ├── logger.go
│   │   │   │   │   │   ├── loggerutils/
│   │   │   │   │   │   │   ├── log_tag.go
│   │   │   │   │   │   │   ├── log_tag_test.go
│   │   │   │   │   │   │   └── rotatefilewriter.go
│   │   │   │   │   │   ├── splunk/
│   │   │   │   │   │   │   ├── splunk.go
│   │   │   │   │   │   │   ├── splunk_test.go
│   │   │   │   │   │   │   └── splunkhecmock_test.go
│   │   │   │   │   │   └── syslog/
│   │   │   │   │   │       ├── syslog.go
│   │   │   │   │   │       └── syslog_test.go
│   │   │   │   │   ├── logs.go
│   │   │   │   │   ├── logs_test.go
│   │   │   │   │   ├── monitor.go
│   │   │   │   │   ├── monitor_linux.go
│   │   │   │   │   ├── monitor_solaris.go
│   │   │   │   │   ├── monitor_windows.go
│   │   │   │   │   ├── mounts.go
│   │   │   │   │   ├── names.go
│   │   │   │   │   ├── network/
│   │   │   │   │   │   └── settings.go
│   │   │   │   │   ├── network.go
│   │   │   │   │   ├── oci_linux.go
│   │   │   │   │   ├── oci_solaris.go
│   │   │   │   │   ├── oci_windows.go
│   │   │   │   │   ├── pause.go
│   │   │   │   │   ├── rename.go
│   │   │   │   │   ├── resize.go
│   │   │   │   │   ├── restart.go
│   │   │   │   │   ├── search.go
│   │   │   │   │   ├── search_test.go
│   │   │   │   │   ├── seccomp_disabled.go
│   │   │   │   │   ├── seccomp_linux.go
│   │   │   │   │   ├── seccomp_unsupported.go
│   │   │   │   │   ├── selinux_linux.go
│   │   │   │   │   ├── selinux_unsupported.go
│   │   │   │   │   ├── start.go
│   │   │   │   │   ├── start_linux.go
│   │   │   │   │   ├── start_windows.go
│   │   │   │   │   ├── stats.go
│   │   │   │   │   ├── stats_collector.go
│   │   │   │   │   ├── stats_collector_solaris.go
│   │   │   │   │   ├── stats_collector_unix.go
│   │   │   │   │   ├── stats_collector_windows.go
│   │   │   │   │   ├── stats_unix.go
│   │   │   │   │   ├── stats_windows.go
│   │   │   │   │   ├── stop.go
│   │   │   │   │   ├── top_unix.go
│   │   │   │   │   ├── top_unix_test.go
│   │   │   │   │   ├── top_windows.go
│   │   │   │   │   ├── unpause.go
│   │   │   │   │   ├── update.go
│   │   │   │   │   ├── update_linux.go
│   │   │   │   │   ├── update_solaris.go
│   │   │   │   │   ├── update_windows.go
│   │   │   │   │   ├── volumes.go
│   │   │   │   │   ├── volumes_unit_test.go
│   │   │   │   │   ├── volumes_unix.go
│   │   │   │   │   ├── volumes_windows.go
│   │   │   │   │   └── wait.go
│   │   │   │   ├── distribution/
│   │   │   │   │   ├── errors.go
│   │   │   │   │   ├── fixtures/
│   │   │   │   │   │   └── validate_manifest/
│   │   │   │   │   │       ├── bad_manifest
│   │   │   │   │   │       ├── extra_data_manifest
│   │   │   │   │   │       └── good_manifest
│   │   │   │   │   ├── metadata/
│   │   │   │   │   │   ├── metadata.go
│   │   │   │   │   │   ├── v1_id_service.go
│   │   │   │   │   │   ├── v1_id_service_test.go
│   │   │   │   │   │   ├── v2_metadata_service.go
│   │   │   │   │   │   └── v2_metadata_service_test.go
│   │   │   │   │   ├── pull.go
│   │   │   │   │   ├── pull_v1.go
│   │   │   │   │   ├── pull_v2.go
│   │   │   │   │   ├── pull_v2_test.go
│   │   │   │   │   ├── pull_v2_unix.go
│   │   │   │   │   ├── pull_v2_windows.go
│   │   │   │   │   ├── push.go
│   │   │   │   │   ├── push_v1.go
│   │   │   │   │   ├── push_v2.go
│   │   │   │   │   ├── registry.go
│   │   │   │   │   ├── registry_unit_test.go
│   │   │   │   │   └── xfer/
│   │   │   │   │       ├── download.go
│   │   │   │   │       ├── download_test.go
│   │   │   │   │       ├── transfer.go
│   │   │   │   │       ├── transfer_test.go
│   │   │   │   │       ├── upload.go
│   │   │   │   │       └── upload_test.go
│   │   │   │   ├── dockerversion/
│   │   │   │   │   ├── useragent.go
│   │   │   │   │   └── version_lib.go
│   │   │   │   ├── docs/
│   │   │   │   │   ├── .gitignore
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Makefile
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── admin/
│   │   │   │   │   │   ├── ambassador_pattern_linking.md
│   │   │   │   │   │   ├── b2d_volume_resize.md
│   │   │   │   │   │   ├── chef.md
│   │   │   │   │   │   ├── dsc.md
│   │   │   │   │   │   ├── formatting.md
│   │   │   │   │   │   ├── host_integration.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── live-restore.md
│   │   │   │   │   │   ├── logging/
│   │   │   │   │   │   │   ├── awslogs.md
│   │   │   │   │   │   │   ├── etwlogs.md
│   │   │   │   │   │   │   ├── fluentd.md
│   │   │   │   │   │   │   ├── gcplogs.md
│   │   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   │   ├── journald.md
│   │   │   │   │   │   │   ├── log_tags.md
│   │   │   │   │   │   │   ├── overview.md
│   │   │   │   │   │   │   └── splunk.md
│   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   ├── puppet.md
│   │   │   │   │   │   ├── registry_mirror.md
│   │   │   │   │   │   ├── runmetrics.md
│   │   │   │   │   │   ├── systemd.md
│   │   │   │   │   │   └── using_supervisord.md
│   │   │   │   │   ├── breaking_changes.md
│   │   │   │   │   ├── deprecated.md
│   │   │   │   │   ├── examples/
│   │   │   │   │   │   ├── apt-cacher-ng.Dockerfile
│   │   │   │   │   │   ├── apt-cacher-ng.md
│   │   │   │   │   │   ├── couchbase.md
│   │   │   │   │   │   ├── couchdb_data_volumes.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── mongodb/
│   │   │   │   │   │   │   └── Dockerfile
│   │   │   │   │   │   ├── mongodb.md
│   │   │   │   │   │   ├── postgresql_service.Dockerfile
│   │   │   │   │   │   ├── postgresql_service.md
│   │   │   │   │   │   ├── running_redis_service.md
│   │   │   │   │   │   ├── running_riak_service.Dockerfile
│   │   │   │   │   │   ├── running_riak_service.md
│   │   │   │   │   │   ├── running_ssh_service.Dockerfile
│   │   │   │   │   │   ├── running_ssh_service.md
│   │   │   │   │   │   └── supervisord.conf
│   │   │   │   │   ├── extend/
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── legacy_plugins.md
│   │   │   │   │   │   ├── manifest.md
│   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   ├── plugin_api.md
│   │   │   │   │   │   ├── plugins_authorization.md
│   │   │   │   │   │   ├── plugins_network.md
│   │   │   │   │   │   └── plugins_volume.md
│   │   │   │   │   ├── faq.md
│   │   │   │   │   ├── getstarted/
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── last_page.md
│   │   │   │   │   │   ├── linux_install_help.md
│   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   ├── step_five.md
│   │   │   │   │   │   ├── step_four.md
│   │   │   │   │   │   ├── step_one.md
│   │   │   │   │   │   ├── step_six.md
│   │   │   │   │   │   ├── step_three.md
│   │   │   │   │   │   └── step_two.md
│   │   │   │   │   ├── index.md
│   │   │   │   │   ├── installation/
│   │   │   │   │   │   ├── binaries.md
│   │   │   │   │   │   ├── cloud/
│   │   │   │   │   │   │   ├── cloud-ex-aws.md
│   │   │   │   │   │   │   ├── cloud-ex-machine-ocean.md
│   │   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   │   └── overview.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── linux/
│   │   │   │   │   │   │   ├── SUSE.md
│   │   │   │   │   │   │   ├── archlinux.md
│   │   │   │   │   │   │   ├── centos.md
│   │   │   │   │   │   │   ├── cruxlinux.md
│   │   │   │   │   │   │   ├── debian.md
│   │   │   │   │   │   │   ├── fedora.md
│   │   │   │   │   │   │   ├── gentoolinux.md
│   │   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   │   ├── oracle.md
│   │   │   │   │   │   │   ├── rhel.md
│   │   │   │   │   │   │   └── ubuntulinux.md
│   │   │   │   │   │   ├── mac.md
│   │   │   │   │   │   └── windows.md
│   │   │   │   │   ├── migration.md
│   │   │   │   │   ├── reference/
│   │   │   │   │   │   ├── api/
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── docker-io_api.md
│   │   │   │   │   │   │   ├── docker_io_accounts_api.md
│   │   │   │   │   │   │   ├── docker_remote_api.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.18.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.19.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.20.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.21.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.22.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.23.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.24.md
│   │   │   │   │   │   │   ├── docker_remote_api_v1.25.md
│   │   │   │   │   │   │   ├── hub_registry_spec.md
│   │   │   │   │   │   │   ├── images/
│   │   │   │   │   │   │   │   └── event_state.gliffy
│   │   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   │   └── remote_api_client_libraries.md
│   │   │   │   │   │   ├── builder.md
│   │   │   │   │   │   ├── commandline/
│   │   │   │   │   │   │   ├── attach.md
│   │   │   │   │   │   │   ├── build.md
│   │   │   │   │   │   │   ├── cli.md
│   │   │   │   │   │   │   ├── commit.md
│   │   │   │   │   │   │   ├── cp.md
│   │   │   │   │   │   │   ├── create.md
│   │   │   │   │   │   │   ├── deploy.md
│   │   │   │   │   │   │   ├── diff.md
│   │   │   │   │   │   │   ├── dockerd.md
│   │   │   │   │   │   │   ├── events.md
│   │   │   │   │   │   │   ├── exec.md
│   │   │   │   │   │   │   ├── export.md
│   │   │   │   │   │   │   ├── history.md
│   │   │   │   │   │   │   ├── images.md
│   │   │   │   │   │   │   ├── import.md
│   │   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   │   ├── info.md
│   │   │   │   │   │   │   ├── inspect.md
│   │   │   │   │   │   │   ├── kill.md
│   │   │   │   │   │   │   ├── load.md
│   │   │   │   │   │   │   ├── login.md
│   │   │   │   │   │   │   ├── logout.md
│   │   │   │   │   │   │   ├── logs.md
│   │   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   │   ├── network_connect.md
│   │   │   │   │   │   │   ├── network_create.md
│   │   │   │   │   │   │   ├── network_disconnect.md
│   │   │   │   │   │   │   ├── network_inspect.md
│   │   │   │   │   │   │   ├── network_ls.md
│   │   │   │   │   │   │   ├── network_rm.md
│   │   │   │   │   │   │   ├── node_demote.md
│   │   │   │   │   │   │   ├── node_inspect.md
│   │   │   │   │   │   │   ├── node_ls.md
│   │   │   │   │   │   │   ├── node_promote.md
│   │   │   │   │   │   │   ├── node_ps.md
│   │   │   │   │   │   │   ├── node_rm.md
│   │   │   │   │   │   │   ├── node_update.md
│   │   │   │   │   │   │   ├── pause.md
│   │   │   │   │   │   │   ├── plugin_disable.md
│   │   │   │   │   │   │   ├── plugin_enable.md
│   │   │   │   │   │   │   ├── plugin_inspect.md
│   │   │   │   │   │   │   ├── plugin_install.md
│   │   │   │   │   │   │   ├── plugin_ls.md
│   │   │   │   │   │   │   ├── plugin_rm.md
│   │   │   │   │   │   │   ├── port.md
│   │   │   │   │   │   │   ├── ps.md
│   │   │   │   │   │   │   ├── pull.md
│   │   │   │   │   │   │   ├── push.md
│   │   │   │   │   │   │   ├── rename.md
│   │   │   │   │   │   │   ├── restart.md
│   │   │   │   │   │   │   ├── rm.md
│   │   │   │   │   │   │   ├── rmi.md
│   │   │   │   │   │   │   ├── run.md
│   │   │   │   │   │   │   ├── save.md
│   │   │   │   │   │   │   ├── search.md
│   │   │   │   │   │   │   ├── service_create.md
│   │   │   │   │   │   │   ├── service_inspect.md
│   │   │   │   │   │   │   ├── service_ls.md
│   │   │   │   │   │   │   ├── service_ps.md
│   │   │   │   │   │   │   ├── service_rm.md
│   │   │   │   │   │   │   ├── service_scale.md
│   │   │   │   │   │   │   ├── service_update.md
│   │   │   │   │   │   │   ├── stack_config.md
│   │   │   │   │   │   │   ├── stack_deploy.md
│   │   │   │   │   │   │   ├── stack_rm.md
│   │   │   │   │   │   │   ├── stack_services.md
│   │   │   │   │   │   │   ├── stack_tasks.md
│   │   │   │   │   │   │   ├── start.md
│   │   │   │   │   │   │   ├── stats.md
│   │   │   │   │   │   │   ├── stop.md
│   │   │   │   │   │   │   ├── swarm_init.md
│   │   │   │   │   │   │   ├── swarm_join.md
│   │   │   │   │   │   │   ├── swarm_join_token.md
│   │   │   │   │   │   │   ├── swarm_leave.md
│   │   │   │   │   │   │   ├── swarm_update.md
│   │   │   │   │   │   │   ├── tag.md
│   │   │   │   │   │   │   ├── top.md
│   │   │   │   │   │   │   ├── unpause.md
│   │   │   │   │   │   │   ├── update.md
│   │   │   │   │   │   │   ├── version.md
│   │   │   │   │   │   │   ├── volume_create.md
│   │   │   │   │   │   │   ├── volume_inspect.md
│   │   │   │   │   │   │   ├── volume_ls.md
│   │   │   │   │   │   │   ├── volume_rm.md
│   │   │   │   │   │   │   └── wait.md
│   │   │   │   │   │   ├── glossary.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   └── run.md
│   │   │   │   │   ├── security/
│   │   │   │   │   │   ├── apparmor.md
│   │   │   │   │   │   ├── certificates.md
│   │   │   │   │   │   ├── https/
│   │   │   │   │   │   │   ├── Dockerfile
│   │   │   │   │   │   │   ├── Makefile
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── make_certs.sh
│   │   │   │   │   │   │   └── parsedocs.sh
│   │   │   │   │   │   ├── https.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── non-events.md
│   │   │   │   │   │   ├── seccomp.md
│   │   │   │   │   │   ├── security.md
│   │   │   │   │   │   └── trust/
│   │   │   │   │   │       ├── content_trust.md
│   │   │   │   │   │       ├── deploying_notary.md
│   │   │   │   │   │       ├── images/
│   │   │   │   │   │       │   ├── trust_.gliffy
│   │   │   │   │   │       │   ├── trust_components.gliffy
│   │   │   │   │   │       │   ├── trust_signing.gliffy
│   │   │   │   │   │       │   └── trust_view.gliffy
│   │   │   │   │   │       ├── index.md
│   │   │   │   │   │       ├── trust_automation.md
│   │   │   │   │   │       ├── trust_delegation.md
│   │   │   │   │   │       ├── trust_key_mng.md
│   │   │   │   │   │       └── trust_sandbox.md
│   │   │   │   │   ├── static_files/
│   │   │   │   │   │   └── README.md
│   │   │   │   │   ├── swarm/
│   │   │   │   │   │   ├── admin_guide.md
│   │   │   │   │   │   ├── how-swarm-mode-works/
│   │   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   │   ├── nodes.md
│   │   │   │   │   │   │   ├── pki.md
│   │   │   │   │   │   │   └── services.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── ingress.md
│   │   │   │   │   │   ├── join-nodes.md
│   │   │   │   │   │   ├── key-concepts.md
│   │   │   │   │   │   ├── manage-nodes.md
│   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   ├── networking.md
│   │   │   │   │   │   ├── raft.md
│   │   │   │   │   │   ├── services.md
│   │   │   │   │   │   ├── swarm-mode.md
│   │   │   │   │   │   └── swarm-tutorial/
│   │   │   │   │   │       ├── add-nodes.md
│   │   │   │   │   │       ├── create-swarm.md
│   │   │   │   │   │       ├── delete-service.md
│   │   │   │   │   │       ├── deploy-service.md
│   │   │   │   │   │       ├── drain-node.md
│   │   │   │   │   │       ├── index.md
│   │   │   │   │   │       ├── inspect-service.md
│   │   │   │   │   │       ├── menu.md
│   │   │   │   │   │       ├── rolling-update.md
│   │   │   │   │   │       └── scale-service.md
│   │   │   │   │   ├── touch-up.sh
│   │   │   │   │   ├── tutorials/
│   │   │   │   │   │   ├── dockerimages.md
│   │   │   │   │   │   ├── dockerizing.md
│   │   │   │   │   │   ├── dockerrepos.md
│   │   │   │   │   │   ├── dockervolumes.md
│   │   │   │   │   │   ├── index.md
│   │   │   │   │   │   ├── menu.md
│   │   │   │   │   │   ├── networkingcontainers.md
│   │   │   │   │   │   └── usingdocker.md
│   │   │   │   │   ├── understanding-docker.md
│   │   │   │   │   └── userguide/
│   │   │   │   │       ├── eng-image/
│   │   │   │   │       │   ├── baseimages.md
│   │   │   │   │       │   ├── dockerfile_best-practices.md
│   │   │   │   │       │   ├── image_management.md
│   │   │   │   │       │   └── index.md
│   │   │   │   │       ├── index.md
│   │   │   │   │       ├── intro.md
│   │   │   │   │       ├── labels-custom-metadata.md
│   │   │   │   │       ├── networking/
│   │   │   │   │       │   ├── configure-dns.md
│   │   │   │   │       │   ├── default_network/
│   │   │   │   │       │   │   ├── binding.md
│   │   │   │   │       │   │   ├── build-bridges.md
│   │   │   │   │       │   │   ├── configure-dns.md
│   │   │   │   │       │   │   ├── container-communication.md
│   │   │   │   │       │   │   ├── custom-docker0.md
│   │   │   │   │       │   │   ├── dockerlinks.md
│   │   │   │   │       │   │   ├── images/
│   │   │   │   │       │   │   │   ├── ipv6_basic_host_config.gliffy
│   │   │   │   │       │   │   │   ├── ipv6_ndp_proxying.gliffy
│   │   │   │   │       │   │   │   ├── ipv6_routed_network_example.gliffy
│   │   │   │   │       │   │   │   ├── ipv6_slash64_subnet_config.gliffy
│   │   │   │   │       │   │   │   └── ipv6_switched_network_example.gliffy
│   │   │   │   │       │   │   ├── index.md
│   │   │   │   │       │   │   └── ipv6.md
│   │   │   │   │       │   ├── get-started-overlay.md
│   │   │   │   │       │   ├── images/
│   │   │   │   │       │   │   ├── bridge_network.gliffy
│   │   │   │   │       │   │   ├── engine_on_net.gliffy
│   │   │   │   │       │   │   ├── key_value.gliffy
│   │   │   │   │       │   │   ├── network_access.gliffy
│   │   │   │   │       │   │   ├── overlay-network-final.gliffy
│   │   │   │   │       │   │   ├── overlay_network.gliffy
│   │   │   │   │       │   │   └── working.gliffy
│   │   │   │   │       │   ├── index.md
│   │   │   │   │       │   ├── menu.md
│   │   │   │   │       │   ├── overlay-security-model.md
│   │   │   │   │       │   └── work-with-networks.md
│   │   │   │   │       └── storagedriver/
│   │   │   │   │           ├── aufs-driver.md
│   │   │   │   │           ├── btrfs-driver.md
│   │   │   │   │           ├── device-mapper-driver.md
│   │   │   │   │           ├── imagesandcontainers.md
│   │   │   │   │           ├── index.md
│   │   │   │   │           ├── overlayfs-driver.md
│   │   │   │   │           ├── selectadriver.md
│   │   │   │   │           └── zfs-driver.md
│   │   │   │   ├── experimental/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── checkpoint-restore.md
│   │   │   │   │   ├── docker-stacks-and-bundles.md
│   │   │   │   │   ├── images/
│   │   │   │   │   │   ├── ipvlan-l3.gliffy
│   │   │   │   │   │   ├── ipvlan_l2_simple.gliffy
│   │   │   │   │   │   ├── macvlan-bridge-ipvlan-l2.gliffy
│   │   │   │   │   │   ├── macvlan_bridge_simple.gliffy
│   │   │   │   │   │   ├── multi_tenant_8021q_vlans.gliffy
│   │   │   │   │   │   └── vlans-deeper-look.gliffy
│   │   │   │   │   ├── plugins_graphdriver.md
│   │   │   │   │   └── vlan-networks.md
│   │   │   │   ├── hack/
│   │   │   │   │   ├── .vendor-helpers.sh
│   │   │   │   │   ├── Jenkins/
│   │   │   │   │   │   ├── W2L/
│   │   │   │   │   │   │   ├── postbuild.sh
│   │   │   │   │   │   │   └── setup.sh
│   │   │   │   │   │   └── readme.md
│   │   │   │   │   ├── dind
│   │   │   │   │   ├── generate-authors.sh
│   │   │   │   │   ├── install.sh
│   │   │   │   │   ├── make/
│   │   │   │   │   │   ├── .binary
│   │   │   │   │   │   ├── .binary-setup
│   │   │   │   │   │   ├── .build-deb/
│   │   │   │   │   │   │   ├── compat
│   │   │   │   │   │   │   ├── control
│   │   │   │   │   │   │   ├── docker-engine.bash-completion
│   │   │   │   │   │   │   ├── docker-engine.install
│   │   │   │   │   │   │   ├── docker-engine.manpages
│   │   │   │   │   │   │   ├── docker-engine.postinst
│   │   │   │   │   │   │   ├── docs
│   │   │   │   │   │   │   └── rules
│   │   │   │   │   │   ├── .build-rpm/
│   │   │   │   │   │   │   ├── docker-engine-selinux.spec
│   │   │   │   │   │   │   └── docker-engine.spec
│   │   │   │   │   │   ├── .detect-daemon-osarch
│   │   │   │   │   │   ├── .ensure-emptyfs
│   │   │   │   │   │   ├── .go-autogen
│   │   │   │   │   │   ├── .integration-daemon-setup
│   │   │   │   │   │   ├── .integration-daemon-start
│   │   │   │   │   │   ├── .integration-daemon-stop
│   │   │   │   │   │   ├── .integration-test-helpers
│   │   │   │   │   │   ├── .resources-windows/
│   │   │   │   │   │   │   ├── common.rc
│   │   │   │   │   │   │   ├── docker.exe.manifest
│   │   │   │   │   │   │   ├── docker.rc
│   │   │   │   │   │   │   ├── dockerd.rc
│   │   │   │   │   │   │   ├── event_messages.mc
│   │   │   │   │   │   │   └── resources.go
│   │   │   │   │   │   ├── .validate
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── binary
│   │   │   │   │   │   ├── binary-client
│   │   │   │   │   │   ├── binary-daemon
│   │   │   │   │   │   ├── build-deb
│   │   │   │   │   │   ├── build-integration-test-binary
│   │   │   │   │   │   ├── build-rpm
│   │   │   │   │   │   ├── clean-apt-repo
│   │   │   │   │   │   ├── clean-yum-repo
│   │   │   │   │   │   ├── cover
│   │   │   │   │   │   ├── cross
│   │   │   │   │   │   ├── dynbinary
│   │   │   │   │   │   ├── dynbinary-client
│   │   │   │   │   │   ├── dynbinary-daemon
│   │   │   │   │   │   ├── generate-index-listing
│   │   │   │   │   │   ├── install-binary
│   │   │   │   │   │   ├── install-binary-client
│   │   │   │   │   │   ├── install-binary-daemon
│   │   │   │   │   │   ├── install-script
│   │   │   │   │   │   ├── release-deb
│   │   │   │   │   │   ├── release-rpm
│   │   │   │   │   │   ├── run
│   │   │   │   │   │   ├── sign-repos
│   │   │   │   │   │   ├── test-deb-install
│   │   │   │   │   │   ├── test-docker-py
│   │   │   │   │   │   ├── test-install-script
│   │   │   │   │   │   ├── test-integration-cli
│   │   │   │   │   │   ├── test-integration-shell
│   │   │   │   │   │   ├── test-old-apt-repo
│   │   │   │   │   │   ├── test-unit
│   │   │   │   │   │   ├── tgz
│   │   │   │   │   │   ├── ubuntu
│   │   │   │   │   │   ├── update-apt-repo
│   │   │   │   │   │   ├── validate-dco
│   │   │   │   │   │   ├── validate-default-seccomp
│   │   │   │   │   │   ├── validate-gofmt
│   │   │   │   │   │   ├── validate-lint
│   │   │   │   │   │   ├── validate-pkg
│   │   │   │   │   │   ├── validate-test
│   │   │   │   │   │   ├── validate-toml
│   │   │   │   │   │   ├── validate-vendor
│   │   │   │   │   │   ├── validate-vet
│   │   │   │   │   │   └── win
│   │   │   │   │   ├── make.sh
│   │   │   │   │   ├── release.sh
│   │   │   │   │   └── vendor.sh
│   │   │   │   ├── image/
│   │   │   │   │   ├── fs.go
│   │   │   │   │   ├── fs_test.go
│   │   │   │   │   ├── image.go
│   │   │   │   │   ├── image_test.go
│   │   │   │   │   ├── rootfs.go
│   │   │   │   │   ├── spec/
│   │   │   │   │   │   ├── v1.1.md
│   │   │   │   │   │   ├── v1.2.md
│   │   │   │   │   │   └── v1.md
│   │   │   │   │   ├── store.go
│   │   │   │   │   ├── store_test.go
│   │   │   │   │   ├── tarexport/
│   │   │   │   │   │   ├── load.go
│   │   │   │   │   │   ├── save.go
│   │   │   │   │   │   └── tarexport.go
│   │   │   │   │   └── v1/
│   │   │   │   │       ├── imagev1.go
│   │   │   │   │       └── imagev1_test.go
│   │   │   │   ├── integration-cli/
│   │   │   │   │   ├── benchmark_test.go
│   │   │   │   │   ├── check_test.go
│   │   │   │   │   ├── daemon.go
│   │   │   │   │   ├── daemon_swarm.go
│   │   │   │   │   ├── daemon_swarm_hack.go
│   │   │   │   │   ├── daemon_unix.go
│   │   │   │   │   ├── daemon_windows.go
│   │   │   │   │   ├── docker_api_attach_test.go
│   │   │   │   │   ├── docker_api_auth_test.go
│   │   │   │   │   ├── docker_api_build_test.go
│   │   │   │   │   ├── docker_api_containers_test.go
│   │   │   │   │   ├── docker_api_create_test.go
│   │   │   │   │   ├── docker_api_events_test.go
│   │   │   │   │   ├── docker_api_exec_resize_test.go
│   │   │   │   │   ├── docker_api_exec_test.go
│   │   │   │   │   ├── docker_api_images_test.go
│   │   │   │   │   ├── docker_api_info_test.go
│   │   │   │   │   ├── docker_api_inspect_test.go
│   │   │   │   │   ├── docker_api_inspect_unix_test.go
│   │   │   │   │   ├── docker_api_logs_test.go
│   │   │   │   │   ├── docker_api_network_test.go
│   │   │   │   │   ├── docker_api_resize_test.go
│   │   │   │   │   ├── docker_api_service_update_test.go
│   │   │   │   │   ├── docker_api_stats_test.go
│   │   │   │   │   ├── docker_api_stats_unix_test.go
│   │   │   │   │   ├── docker_api_swarm_test.go
│   │   │   │   │   ├── docker_api_test.go
│   │   │   │   │   ├── docker_api_update_unix_test.go
│   │   │   │   │   ├── docker_api_version_test.go
│   │   │   │   │   ├── docker_api_volumes_test.go
│   │   │   │   │   ├── docker_cli_attach_test.go
│   │   │   │   │   ├── docker_cli_attach_unix_test.go
│   │   │   │   │   ├── docker_cli_authz_unix_test.go
│   │   │   │   │   ├── docker_cli_build_test.go
│   │   │   │   │   ├── docker_cli_build_unix_test.go
│   │   │   │   │   ├── docker_cli_by_digest_test.go
│   │   │   │   │   ├── docker_cli_commit_test.go
│   │   │   │   │   ├── docker_cli_config_test.go
│   │   │   │   │   ├── docker_cli_cp_from_container_test.go
│   │   │   │   │   ├── docker_cli_cp_test.go
│   │   │   │   │   ├── docker_cli_cp_to_container_test.go
│   │   │   │   │   ├── docker_cli_cp_to_container_unix_test.go
│   │   │   │   │   ├── docker_cli_cp_utils.go
│   │   │   │   │   ├── docker_cli_create_test.go
│   │   │   │   │   ├── docker_cli_daemon_experimental_test.go
│   │   │   │   │   ├── docker_cli_daemon_test.go
│   │   │   │   │   ├── docker_cli_diff_test.go
│   │   │   │   │   ├── docker_cli_events_test.go
│   │   │   │   │   ├── docker_cli_events_unix_test.go
│   │   │   │   │   ├── docker_cli_exec_test.go
│   │   │   │   │   ├── docker_cli_exec_unix_test.go
│   │   │   │   │   ├── docker_cli_experimental_test.go
│   │   │   │   │   ├── docker_cli_export_import_test.go
│   │   │   │   │   ├── docker_cli_external_graphdriver_unix_test.go
│   │   │   │   │   ├── docker_cli_external_volume_driver_unix_test.go
│   │   │   │   │   ├── docker_cli_health_test.go
│   │   │   │   │   ├── docker_cli_help_test.go
│   │   │   │   │   ├── docker_cli_history_test.go
│   │   │   │   │   ├── docker_cli_images_test.go
│   │   │   │   │   ├── docker_cli_import_test.go
│   │   │   │   │   ├── docker_cli_info_test.go
│   │   │   │   │   ├── docker_cli_info_unix_test.go
│   │   │   │   │   ├── docker_cli_inspect_test.go
│   │   │   │   │   ├── docker_cli_kill_test.go
│   │   │   │   │   ├── docker_cli_links_test.go
│   │   │   │   │   ├── docker_cli_links_unix_test.go
│   │   │   │   │   ├── docker_cli_login_test.go
│   │   │   │   │   ├── docker_cli_logout_test.go
│   │   │   │   │   ├── docker_cli_logs_bench_test.go
│   │   │   │   │   ├── docker_cli_logs_test.go
│   │   │   │   │   ├── docker_cli_nat_test.go
│   │   │   │   │   ├── docker_cli_netmode_test.go
│   │   │   │   │   ├── docker_cli_network_unix_test.go
│   │   │   │   │   ├── docker_cli_oom_killed_test.go
│   │   │   │   │   ├── docker_cli_pause_test.go
│   │   │   │   │   ├── docker_cli_plugins_test.go
│   │   │   │   │   ├── docker_cli_port_test.go
│   │   │   │   │   ├── docker_cli_proxy_test.go
│   │   │   │   │   ├── docker_cli_ps_test.go
│   │   │   │   │   ├── docker_cli_pull_local_test.go
│   │   │   │   │   ├── docker_cli_pull_test.go
│   │   │   │   │   ├── docker_cli_pull_trusted_test.go
│   │   │   │   │   ├── docker_cli_push_test.go
│   │   │   │   │   ├── docker_cli_registry_user_agent_test.go
│   │   │   │   │   ├── docker_cli_rename_test.go
│   │   │   │   │   ├── docker_cli_restart_test.go
│   │   │   │   │   ├── docker_cli_rm_test.go
│   │   │   │   │   ├── docker_cli_rmi_test.go
│   │   │   │   │   ├── docker_cli_run_test.go
│   │   │   │   │   ├── docker_cli_run_unix_test.go
│   │   │   │   │   ├── docker_cli_save_load_test.go
│   │   │   │   │   ├── docker_cli_save_load_unix_test.go
│   │   │   │   │   ├── docker_cli_search_test.go
│   │   │   │   │   ├── docker_cli_service_create_test.go
│   │   │   │   │   ├── docker_cli_service_health_test.go
│   │   │   │   │   ├── docker_cli_service_update_test.go
│   │   │   │   │   ├── docker_cli_sni_test.go
│   │   │   │   │   ├── docker_cli_stack_test.go
│   │   │   │   │   ├── docker_cli_start_test.go
│   │   │   │   │   ├── docker_cli_stats_test.go
│   │   │   │   │   ├── docker_cli_stop_test.go
│   │   │   │   │   ├── docker_cli_swarm_test.go
│   │   │   │   │   ├── docker_cli_tag_test.go
│   │   │   │   │   ├── docker_cli_top_test.go
│   │   │   │   │   ├── docker_cli_update_test.go
│   │   │   │   │   ├── docker_cli_update_unix_test.go
│   │   │   │   │   ├── docker_cli_userns_test.go
│   │   │   │   │   ├── docker_cli_v2_only_test.go
│   │   │   │   │   ├── docker_cli_version_test.go
│   │   │   │   │   ├── docker_cli_volume_test.go
│   │   │   │   │   ├── docker_cli_wait_test.go
│   │   │   │   │   ├── docker_deprecated_api_v124_test.go
│   │   │   │   │   ├── docker_deprecated_api_v124_unix_test.go
│   │   │   │   │   ├── docker_experimental_network_test.go
│   │   │   │   │   ├── docker_hub_pull_suite_test.go
│   │   │   │   │   ├── docker_test_vars.go
│   │   │   │   │   ├── docker_utils.go
│   │   │   │   │   ├── events_utils.go
│   │   │   │   │   ├── fixtures/
│   │   │   │   │   │   ├── auth/
│   │   │   │   │   │   │   └── docker-credential-shell-test
│   │   │   │   │   │   ├── https/
│   │   │   │   │   │   │   ├── ca.pem
│   │   │   │   │   │   │   ├── client-cert.pem
│   │   │   │   │   │   │   ├── client-key.pem
│   │   │   │   │   │   │   ├── client-rogue-cert.pem
│   │   │   │   │   │   │   ├── client-rogue-key.pem
│   │   │   │   │   │   │   ├── server-cert.pem
│   │   │   │   │   │   │   ├── server-key.pem
│   │   │   │   │   │   │   ├── server-rogue-cert.pem
│   │   │   │   │   │   │   └── server-rogue-key.pem
│   │   │   │   │   │   ├── load/
│   │   │   │   │   │   │   └── frozen.go
│   │   │   │   │   │   ├── notary/
│   │   │   │   │   │   │   ├── delgkey1.crt
│   │   │   │   │   │   │   ├── delgkey1.key
│   │   │   │   │   │   │   ├── delgkey2.crt
│   │   │   │   │   │   │   ├── delgkey2.key
│   │   │   │   │   │   │   ├── delgkey3.crt
│   │   │   │   │   │   │   ├── delgkey3.key
│   │   │   │   │   │   │   ├── delgkey4.crt
│   │   │   │   │   │   │   ├── delgkey4.key
│   │   │   │   │   │   │   ├── localhost.cert
│   │   │   │   │   │   │   └── localhost.key
│   │   │   │   │   │   └── registry/
│   │   │   │   │   │       └── cert.pem
│   │   │   │   │   ├── fixtures.go
│   │   │   │   │   ├── fixtures_linux_daemon.go
│   │   │   │   │   ├── npipe.go
│   │   │   │   │   ├── npipe_windows.go
│   │   │   │   │   ├── registry.go
│   │   │   │   │   ├── registry_mock.go
│   │   │   │   │   ├── requirements.go
│   │   │   │   │   ├── requirements_unix.go
│   │   │   │   │   ├── test_vars.go
│   │   │   │   │   ├── test_vars_exec.go
│   │   │   │   │   ├── test_vars_noexec.go
│   │   │   │   │   ├── test_vars_noseccomp.go
│   │   │   │   │   ├── test_vars_seccomp.go
│   │   │   │   │   ├── test_vars_unix.go
│   │   │   │   │   ├── test_vars_windows.go
│   │   │   │   │   ├── trust_server.go
│   │   │   │   │   └── utils.go
│   │   │   │   ├── layer/
│   │   │   │   │   ├── empty.go
│   │   │   │   │   ├── empty_test.go
│   │   │   │   │   ├── filestore.go
│   │   │   │   │   ├── filestore_test.go
│   │   │   │   │   ├── layer.go
│   │   │   │   │   ├── layer_store.go
│   │   │   │   │   ├── layer_store_windows.go
│   │   │   │   │   ├── layer_test.go
│   │   │   │   │   ├── layer_unix.go
│   │   │   │   │   ├── layer_unix_test.go
│   │   │   │   │   ├── layer_windows.go
│   │   │   │   │   ├── migration.go
│   │   │   │   │   ├── migration_test.go
│   │   │   │   │   ├── mount_test.go
│   │   │   │   │   ├── mounted_layer.go
│   │   │   │   │   ├── ro_layer.go
│   │   │   │   │   └── ro_layer_windows.go
│   │   │   │   ├── libcontainerd/
│   │   │   │   │   ├── client.go
│   │   │   │   │   ├── client_linux.go
│   │   │   │   │   ├── client_solaris.go
│   │   │   │   │   ├── client_windows.go
│   │   │   │   │   ├── container.go
│   │   │   │   │   ├── container_linux.go
│   │   │   │   │   ├── container_solaris.go
│   │   │   │   │   ├── container_windows.go
│   │   │   │   │   ├── pausemonitor_linux.go
│   │   │   │   │   ├── process.go
│   │   │   │   │   ├── process_linux.go
│   │   │   │   │   ├── process_solaris.go
│   │   │   │   │   ├── process_windows.go
│   │   │   │   │   ├── queue_linux.go
│   │   │   │   │   ├── remote.go
│   │   │   │   │   ├── remote_linux.go
│   │   │   │   │   ├── remote_solaris.go
│   │   │   │   │   ├── remote_windows.go
│   │   │   │   │   ├── types.go
│   │   │   │   │   ├── types_linux.go
│   │   │   │   │   ├── types_solaris.go
│   │   │   │   │   ├── types_windows.go
│   │   │   │   │   ├── utils_linux.go
│   │   │   │   │   ├── utils_windows.go
│   │   │   │   │   ├── utils_windows_test.go
│   │   │   │   │   └── windowsoci/
│   │   │   │   │       ├── oci_windows.go
│   │   │   │   │       └── unsupported.go
│   │   │   │   ├── man/
│   │   │   │   │   ├── Dockerfile
│   │   │   │   │   ├── Dockerfile.5.md
│   │   │   │   │   ├── Dockerfile.aarch64
│   │   │   │   │   ├── Dockerfile.armhf
│   │   │   │   │   ├── Dockerfile.ppc64le
│   │   │   │   │   ├── Dockerfile.s390x
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── docker-attach.1.md
│   │   │   │   │   ├── docker-build.1.md
│   │   │   │   │   ├── docker-commit.1.md
│   │   │   │   │   ├── docker-config-json.5.md
│   │   │   │   │   ├── docker-cp.1.md
│   │   │   │   │   ├── docker-create.1.md
│   │   │   │   │   ├── docker-diff.1.md
│   │   │   │   │   ├── docker-events.1.md
│   │   │   │   │   ├── docker-exec.1.md
│   │   │   │   │   ├── docker-export.1.md
│   │   │   │   │   ├── docker-history.1.md
│   │   │   │   │   ├── docker-images.1.md
│   │   │   │   │   ├── docker-import.1.md
│   │   │   │   │   ├── docker-info.1.md
│   │   │   │   │   ├── docker-inspect.1.md
│   │   │   │   │   ├── docker-kill.1.md
│   │   │   │   │   ├── docker-load.1.md
│   │   │   │   │   ├── docker-login.1.md
│   │   │   │   │   ├── docker-logout.1.md
│   │   │   │   │   ├── docker-logs.1.md
│   │   │   │   │   ├── docker-network-connect.1.md
│   │   │   │   │   ├── docker-network-create.1.md
│   │   │   │   │   ├── docker-network-disconnect.1.md
│   │   │   │   │   ├── docker-network-inspect.1.md
│   │   │   │   │   ├── docker-network-ls.1.md
│   │   │   │   │   ├── docker-network-rm.1.md
│   │   │   │   │   ├── docker-pause.1.md
│   │   │   │   │   ├── docker-port.1.md
│   │   │   │   │   ├── docker-ps.1.md
│   │   │   │   │   ├── docker-pull.1.md
│   │   │   │   │   ├── docker-push.1.md
│   │   │   │   │   ├── docker-rename.1.md
│   │   │   │   │   ├── docker-restart.1.md
│   │   │   │   │   ├── docker-rm.1.md
│   │   │   │   │   ├── docker-rmi.1.md
│   │   │   │   │   ├── docker-run.1.md
│   │   │   │   │   ├── docker-save.1.md
│   │   │   │   │   ├── docker-search.1.md
│   │   │   │   │   ├── docker-start.1.md
│   │   │   │   │   ├── docker-stats.1.md
│   │   │   │   │   ├── docker-stop.1.md
│   │   │   │   │   ├── docker-tag.1.md
│   │   │   │   │   ├── docker-top.1.md
│   │   │   │   │   ├── docker-unpause.1.md
│   │   │   │   │   ├── docker-update.1.md
│   │   │   │   │   ├── docker-version.1.md
│   │   │   │   │   ├── docker-wait.1.md
│   │   │   │   │   ├── docker.1.md
│   │   │   │   │   ├── dockerd.8.md
│   │   │   │   │   ├── generate.go
│   │   │   │   │   ├── generate.sh
│   │   │   │   │   ├── glide.yaml
│   │   │   │   │   └── md2man-all.sh
│   │   │   │   ├── migrate/
│   │   │   │   │   └── v1/
│   │   │   │   │       ├── migratev1.go
│   │   │   │   │       └── migratev1_test.go
│   │   │   │   ├── oci/
│   │   │   │   │   ├── defaults_linux.go
│   │   │   │   │   ├── defaults_solaris.go
│   │   │   │   │   └── defaults_windows.go
│   │   │   │   ├── opts/
│   │   │   │   │   ├── hosts.go
│   │   │   │   │   ├── hosts_test.go
│   │   │   │   │   ├── hosts_unix.go
│   │   │   │   │   ├── hosts_windows.go
│   │   │   │   │   ├── ip.go
│   │   │   │   │   ├── ip_test.go
│   │   │   │   │   ├── opts.go
│   │   │   │   │   ├── opts_test.go
│   │   │   │   │   ├── opts_unix.go
│   │   │   │   │   └── opts_windows.go
│   │   │   │   ├── pkg/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── aaparser/
│   │   │   │   │   │   ├── aaparser.go
│   │   │   │   │   │   └── aaparser_test.go
│   │   │   │   │   ├── archive/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── archive.go
│   │   │   │   │   │   ├── archive_linux.go
│   │   │   │   │   │   ├── archive_other.go
│   │   │   │   │   │   ├── archive_test.go
│   │   │   │   │   │   ├── archive_unix.go
│   │   │   │   │   │   ├── archive_unix_test.go
│   │   │   │   │   │   ├── archive_windows.go
│   │   │   │   │   │   ├── archive_windows_test.go
│   │   │   │   │   │   ├── changes.go
│   │   │   │   │   │   ├── changes_linux.go
│   │   │   │   │   │   ├── changes_other.go
│   │   │   │   │   │   ├── changes_posix_test.go
│   │   │   │   │   │   ├── changes_test.go
│   │   │   │   │   │   ├── changes_unix.go
│   │   │   │   │   │   ├── changes_windows.go
│   │   │   │   │   │   ├── copy.go
│   │   │   │   │   │   ├── copy_unix.go
│   │   │   │   │   │   ├── copy_unix_test.go
│   │   │   │   │   │   ├── copy_windows.go
│   │   │   │   │   │   ├── diff.go
│   │   │   │   │   │   ├── diff_test.go
│   │   │   │   │   │   ├── example_changes.go
│   │   │   │   │   │   ├── time_linux.go
│   │   │   │   │   │   ├── time_unsupported.go
│   │   │   │   │   │   ├── utils_test.go
│   │   │   │   │   │   ├── whiteouts.go
│   │   │   │   │   │   ├── wrap.go
│   │   │   │   │   │   └── wrap_test.go
│   │   │   │   │   ├── authorization/
│   │   │   │   │   │   ├── api.go
│   │   │   │   │   │   ├── authz.go
│   │   │   │   │   │   ├── authz_unix_test.go
│   │   │   │   │   │   ├── middleware.go
│   │   │   │   │   │   ├── plugin.go
│   │   │   │   │   │   └── response.go
│   │   │   │   │   ├── broadcaster/
│   │   │   │   │   │   ├── unbuffered.go
│   │   │   │   │   │   └── unbuffered_test.go
│   │   │   │   │   ├── chrootarchive/
│   │   │   │   │   │   ├── archive.go
│   │   │   │   │   │   ├── archive_test.go
│   │   │   │   │   │   ├── archive_unix.go
│   │   │   │   │   │   ├── archive_windows.go
│   │   │   │   │   │   ├── chroot_linux.go
│   │   │   │   │   │   ├── chroot_unix.go
│   │   │   │   │   │   ├── diff.go
│   │   │   │   │   │   ├── diff_unix.go
│   │   │   │   │   │   ├── diff_windows.go
│   │   │   │   │   │   ├── init_unix.go
│   │   │   │   │   │   └── init_windows.go
│   │   │   │   │   ├── devicemapper/
│   │   │   │   │   │   ├── devmapper.go
│   │   │   │   │   │   ├── devmapper_log.go
│   │   │   │   │   │   ├── devmapper_wrapper.go
│   │   │   │   │   │   ├── devmapper_wrapper_deferred_remove.go
│   │   │   │   │   │   ├── devmapper_wrapper_no_deferred_remove.go
│   │   │   │   │   │   ├── ioctl.go
│   │   │   │   │   │   └── log.go
│   │   │   │   │   ├── directory/
│   │   │   │   │   │   ├── directory.go
│   │   │   │   │   │   ├── directory_test.go
│   │   │   │   │   │   ├── directory_unix.go
│   │   │   │   │   │   └── directory_windows.go
│   │   │   │   │   ├── discovery/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── backends.go
│   │   │   │   │   │   ├── discovery.go
│   │   │   │   │   │   ├── discovery_test.go
│   │   │   │   │   │   ├── entry.go
│   │   │   │   │   │   ├── file/
│   │   │   │   │   │   │   ├── file.go
│   │   │   │   │   │   │   └── file_test.go
│   │   │   │   │   │   ├── generator.go
│   │   │   │   │   │   ├── generator_test.go
│   │   │   │   │   │   ├── kv/
│   │   │   │   │   │   │   ├── kv.go
│   │   │   │   │   │   │   └── kv_test.go
│   │   │   │   │   │   ├── memory/
│   │   │   │   │   │   │   ├── memory.go
│   │   │   │   │   │   │   └── memory_test.go
│   │   │   │   │   │   └── nodes/
│   │   │   │   │   │       ├── nodes.go
│   │   │   │   │   │       └── nodes_test.go
│   │   │   │   │   ├── filenotify/
│   │   │   │   │   │   ├── filenotify.go
│   │   │   │   │   │   ├── fsnotify.go
│   │   │   │   │   │   ├── poller.go
│   │   │   │   │   │   └── poller_test.go
│   │   │   │   │   ├── fileutils/
│   │   │   │   │   │   ├── fileutils.go
│   │   │   │   │   │   ├── fileutils_darwin.go
│   │   │   │   │   │   ├── fileutils_solaris.go
│   │   │   │   │   │   ├── fileutils_test.go
│   │   │   │   │   │   ├── fileutils_unix.go
│   │   │   │   │   │   └── fileutils_windows.go
│   │   │   │   │   ├── gitutils/
│   │   │   │   │   │   ├── gitutils.go
│   │   │   │   │   │   └── gitutils_test.go
│   │   │   │   │   ├── graphdb/
│   │   │   │   │   │   ├── conn_sqlite3.go
│   │   │   │   │   │   ├── conn_sqlite3_unix.go
│   │   │   │   │   │   ├── conn_sqlite3_windows.go
│   │   │   │   │   │   ├── conn_unsupported.go
│   │   │   │   │   │   ├── graphdb.go
│   │   │   │   │   │   ├── graphdb_test.go
│   │   │   │   │   │   ├── sort.go
│   │   │   │   │   │   ├── sort_test.go
│   │   │   │   │   │   └── utils.go
│   │   │   │   │   ├── homedir/
│   │   │   │   │   │   ├── homedir.go
│   │   │   │   │   │   └── homedir_test.go
│   │   │   │   │   ├── httputils/
│   │   │   │   │   │   ├── httputils.go
│   │   │   │   │   │   ├── httputils_test.go
│   │   │   │   │   │   ├── mimetype.go
│   │   │   │   │   │   ├── mimetype_test.go
│   │   │   │   │   │   ├── resumablerequestreader.go
│   │   │   │   │   │   └── resumablerequestreader_test.go
│   │   │   │   │   ├── idtools/
│   │   │   │   │   │   ├── idtools.go
│   │   │   │   │   │   ├── idtools_unix.go
│   │   │   │   │   │   ├── idtools_unix_test.go
│   │   │   │   │   │   ├── idtools_windows.go
│   │   │   │   │   │   ├── usergroupadd_linux.go
│   │   │   │   │   │   └── usergroupadd_unsupported.go
│   │   │   │   │   ├── integration/
│   │   │   │   │   │   ├── checker/
│   │   │   │   │   │   │   └── checker.go
│   │   │   │   │   │   ├── cmd/
│   │   │   │   │   │   │   ├── command.go
│   │   │   │   │   │   │   └── command_test.go
│   │   │   │   │   │   ├── utils.go
│   │   │   │   │   │   └── utils_test.go
│   │   │   │   │   ├── ioutils/
│   │   │   │   │   │   ├── buffer.go
│   │   │   │   │   │   ├── buffer_test.go
│   │   │   │   │   │   ├── bytespipe.go
│   │   │   │   │   │   ├── bytespipe_test.go
│   │   │   │   │   │   ├── fmt.go
│   │   │   │   │   │   ├── fmt_test.go
│   │   │   │   │   │   ├── fswriters.go
│   │   │   │   │   │   ├── fswriters_test.go
│   │   │   │   │   │   ├── multireader.go
│   │   │   │   │   │   ├── multireader_test.go
│   │   │   │   │   │   ├── readers.go
│   │   │   │   │   │   ├── readers_test.go
│   │   │   │   │   │   ├── temp_unix.go
│   │   │   │   │   │   ├── temp_windows.go
│   │   │   │   │   │   ├── writeflusher.go
│   │   │   │   │   │   ├── writers.go
│   │   │   │   │   │   └── writers_test.go
│   │   │   │   │   ├── jsonlog/
│   │   │   │   │   │   ├── jsonlog.go
│   │   │   │   │   │   ├── jsonlog_marshalling.go
│   │   │   │   │   │   ├── jsonlog_marshalling_test.go
│   │   │   │   │   │   ├── jsonlogbytes.go
│   │   │   │   │   │   ├── jsonlogbytes_test.go
│   │   │   │   │   │   ├── time_marshalling.go
│   │   │   │   │   │   └── time_marshalling_test.go
│   │   │   │   │   ├── jsonmessage/
│   │   │   │   │   │   ├── jsonmessage.go
│   │   │   │   │   │   └── jsonmessage_test.go
│   │   │   │   │   ├── listeners/
│   │   │   │   │   │   ├── listeners_solaris.go
│   │   │   │   │   │   ├── listeners_unix.go
│   │   │   │   │   │   └── listeners_windows.go
│   │   │   │   │   ├── locker/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── locker.go
│   │   │   │   │   │   └── locker_test.go
│   │   │   │   │   ├── longpath/
│   │   │   │   │   │   ├── longpath.go
│   │   │   │   │   │   └── longpath_test.go
│   │   │   │   │   ├── loopback/
│   │   │   │   │   │   ├── attach_loopback.go
│   │   │   │   │   │   ├── ioctl.go
│   │   │   │   │   │   ├── loop_wrapper.go
│   │   │   │   │   │   └── loopback.go
│   │   │   │   │   ├── mount/
│   │   │   │   │   │   ├── flags.go
│   │   │   │   │   │   ├── flags_freebsd.go
│   │   │   │   │   │   ├── flags_linux.go
│   │   │   │   │   │   ├── flags_unsupported.go
│   │   │   │   │   │   ├── mount.go
│   │   │   │   │   │   ├── mount_unix_test.go
│   │   │   │   │   │   ├── mounter_freebsd.go
│   │   │   │   │   │   ├── mounter_linux.go
│   │   │   │   │   │   ├── mounter_solaris.go
│   │   │   │   │   │   ├── mounter_unsupported.go
│   │   │   │   │   │   ├── mountinfo.go
│   │   │   │   │   │   ├── mountinfo_freebsd.go
│   │   │   │   │   │   ├── mountinfo_linux.go
│   │   │   │   │   │   ├── mountinfo_linux_test.go
│   │   │   │   │   │   ├── mountinfo_solaris.go
│   │   │   │   │   │   ├── mountinfo_unsupported.go
│   │   │   │   │   │   ├── mountinfo_windows.go
│   │   │   │   │   │   ├── sharedsubtree_linux.go
│   │   │   │   │   │   └── sharedsubtree_linux_test.go
│   │   │   │   │   ├── namesgenerator/
│   │   │   │   │   │   ├── cmd/
│   │   │   │   │   │   │   └── names-generator/
│   │   │   │   │   │   │       └── main.go
│   │   │   │   │   │   ├── names-generator.go
│   │   │   │   │   │   └── names-generator_test.go
│   │   │   │   │   ├── parsers/
│   │   │   │   │   │   ├── kernel/
│   │   │   │   │   │   │   ├── kernel.go
│   │   │   │   │   │   │   ├── kernel_darwin.go
│   │   │   │   │   │   │   ├── kernel_unix.go
│   │   │   │   │   │   │   ├── kernel_unix_test.go
│   │   │   │   │   │   │   ├── kernel_windows.go
│   │   │   │   │   │   │   ├── uname_linux.go
│   │   │   │   │   │   │   ├── uname_solaris.go
│   │   │   │   │   │   │   └── uname_unsupported.go
│   │   │   │   │   │   ├── operatingsystem/
│   │   │   │   │   │   │   ├── operatingsystem_linux.go
│   │   │   │   │   │   │   ├── operatingsystem_solaris.go
│   │   │   │   │   │   │   ├── operatingsystem_unix.go
│   │   │   │   │   │   │   ├── operatingsystem_unix_test.go
│   │   │   │   │   │   │   └── operatingsystem_windows.go
│   │   │   │   │   │   ├── parsers.go
│   │   │   │   │   │   └── parsers_test.go
│   │   │   │   │   ├── pidfile/
│   │   │   │   │   │   ├── pidfile.go
│   │   │   │   │   │   ├── pidfile_darwin.go
│   │   │   │   │   │   ├── pidfile_test.go
│   │   │   │   │   │   ├── pidfile_unix.go
│   │   │   │   │   │   └── pidfile_windows.go
│   │   │   │   │   ├── platform/
│   │   │   │   │   │   ├── architecture_linux.go
│   │   │   │   │   │   ├── architecture_unix.go
│   │   │   │   │   │   ├── architecture_windows.go
│   │   │   │   │   │   ├── platform.go
│   │   │   │   │   │   ├── utsname_int8.go
│   │   │   │   │   │   └── utsname_uint8.go
│   │   │   │   │   ├── plugins/
│   │   │   │   │   │   ├── client.go
│   │   │   │   │   │   ├── client_test.go
│   │   │   │   │   │   ├── discovery.go
│   │   │   │   │   │   ├── discovery_test.go
│   │   │   │   │   │   ├── discovery_unix.go
│   │   │   │   │   │   ├── discovery_unix_test.go
│   │   │   │   │   │   ├── discovery_windows.go
│   │   │   │   │   │   ├── errors.go
│   │   │   │   │   │   ├── pluginrpc-gen/
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── fixtures/
│   │   │   │   │   │   │   │   ├── foo.go
│   │   │   │   │   │   │   │   └── otherfixture/
│   │   │   │   │   │   │   │       └── spaceship.go
│   │   │   │   │   │   │   ├── main.go
│   │   │   │   │   │   │   ├── parser.go
│   │   │   │   │   │   │   ├── parser_test.go
│   │   │   │   │   │   │   └── template.go
│   │   │   │   │   │   ├── plugins.go
│   │   │   │   │   │   └── transport/
│   │   │   │   │   │       ├── http.go
│   │   │   │   │   │       └── transport.go
│   │   │   │   │   ├── pools/
│   │   │   │   │   │   ├── pools.go
│   │   │   │   │   │   └── pools_test.go
│   │   │   │   │   ├── progress/
│   │   │   │   │   │   ├── progress.go
│   │   │   │   │   │   ├── progressreader.go
│   │   │   │   │   │   └── progressreader_test.go
│   │   │   │   │   ├── promise/
│   │   │   │   │   │   └── promise.go
│   │   │   │   │   ├── pubsub/
│   │   │   │   │   │   ├── publisher.go
│   │   │   │   │   │   └── publisher_test.go
│   │   │   │   │   ├── random/
│   │   │   │   │   │   ├── random.go
│   │   │   │   │   │   └── random_test.go
│   │   │   │   │   ├── reexec/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── command_linux.go
│   │   │   │   │   │   ├── command_unix.go
│   │   │   │   │   │   ├── command_unsupported.go
│   │   │   │   │   │   ├── command_windows.go
│   │   │   │   │   │   └── reexec.go
│   │   │   │   │   ├── registrar/
│   │   │   │   │   │   ├── registrar.go
│   │   │   │   │   │   └── registrar_test.go
│   │   │   │   │   ├── signal/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── signal.go
│   │   │   │   │   │   ├── signal_darwin.go
│   │   │   │   │   │   ├── signal_freebsd.go
│   │   │   │   │   │   ├── signal_linux.go
│   │   │   │   │   │   ├── signal_solaris.go
│   │   │   │   │   │   ├── signal_unix.go
│   │   │   │   │   │   ├── signal_unsupported.go
│   │   │   │   │   │   ├── signal_windows.go
│   │   │   │   │   │   └── trap.go
│   │   │   │   │   ├── stdcopy/
│   │   │   │   │   │   ├── stdcopy.go
│   │   │   │   │   │   └── stdcopy_test.go
│   │   │   │   │   ├── streamformatter/
│   │   │   │   │   │   ├── streamformatter.go
│   │   │   │   │   │   └── streamformatter_test.go
│   │   │   │   │   ├── stringid/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── stringid.go
│   │   │   │   │   │   └── stringid_test.go
│   │   │   │   │   ├── stringutils/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── stringutils.go
│   │   │   │   │   │   └── stringutils_test.go
│   │   │   │   │   ├── symlink/
│   │   │   │   │   │   ├── LICENSE.APACHE
│   │   │   │   │   │   ├── LICENSE.BSD
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── fs.go
│   │   │   │   │   │   ├── fs_unix.go
│   │   │   │   │   │   ├── fs_unix_test.go
│   │   │   │   │   │   └── fs_windows.go
│   │   │   │   │   ├── sysinfo/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── numcpu.go
│   │   │   │   │   │   ├── numcpu_linux.go
│   │   │   │   │   │   ├── numcpu_windows.go
│   │   │   │   │   │   ├── sysinfo.go
│   │   │   │   │   │   ├── sysinfo_linux.go
│   │   │   │   │   │   ├── sysinfo_linux_test.go
│   │   │   │   │   │   ├── sysinfo_solaris.go
│   │   │   │   │   │   ├── sysinfo_test.go
│   │   │   │   │   │   ├── sysinfo_unix.go
│   │   │   │   │   │   └── sysinfo_windows.go
│   │   │   │   │   ├── system/
│   │   │   │   │   │   ├── chtimes.go
│   │   │   │   │   │   ├── chtimes_test.go
│   │   │   │   │   │   ├── chtimes_unix.go
│   │   │   │   │   │   ├── chtimes_unix_test.go
│   │   │   │   │   │   ├── chtimes_windows.go
│   │   │   │   │   │   ├── chtimes_windows_test.go
│   │   │   │   │   │   ├── errors.go
│   │   │   │   │   │   ├── events_windows.go
│   │   │   │   │   │   ├── filesys.go
│   │   │   │   │   │   ├── filesys_windows.go
│   │   │   │   │   │   ├── lstat.go
│   │   │   │   │   │   ├── lstat_unix_test.go
│   │   │   │   │   │   ├── lstat_windows.go
│   │   │   │   │   │   ├── meminfo.go
│   │   │   │   │   │   ├── meminfo_linux.go
│   │   │   │   │   │   ├── meminfo_solaris.go
│   │   │   │   │   │   ├── meminfo_unix_test.go
│   │   │   │   │   │   ├── meminfo_unsupported.go
│   │   │   │   │   │   ├── meminfo_windows.go
│   │   │   │   │   │   ├── mknod.go
│   │   │   │   │   │   ├── mknod_windows.go
│   │   │   │   │   │   ├── path_unix.go
│   │   │   │   │   │   ├── path_windows.go
│   │   │   │   │   │   ├── path_windows_test.go
│   │   │   │   │   │   ├── stat.go
│   │   │   │   │   │   ├── stat_darwin.go
│   │   │   │   │   │   ├── stat_freebsd.go
│   │   │   │   │   │   ├── stat_linux.go
│   │   │   │   │   │   ├── stat_openbsd.go
│   │   │   │   │   │   ├── stat_solaris.go
│   │   │   │   │   │   ├── stat_unix_test.go
│   │   │   │   │   │   ├── stat_unsupported.go
│   │   │   │   │   │   ├── stat_windows.go
│   │   │   │   │   │   ├── syscall_unix.go
│   │   │   │   │   │   ├── syscall_windows.go
│   │   │   │   │   │   ├── syscall_windows_test.go
│   │   │   │   │   │   ├── umask.go
│   │   │   │   │   │   ├── umask_windows.go
│   │   │   │   │   │   ├── utimes_freebsd.go
│   │   │   │   │   │   ├── utimes_linux.go
│   │   │   │   │   │   ├── utimes_unix_test.go
│   │   │   │   │   │   ├── utimes_unsupported.go
│   │   │   │   │   │   ├── xattrs_linux.go
│   │   │   │   │   │   └── xattrs_unsupported.go
│   │   │   │   │   ├── tailfile/
│   │   │   │   │   │   ├── tailfile.go
│   │   │   │   │   │   └── tailfile_test.go
│   │   │   │   │   ├── tarsum/
│   │   │   │   │   │   ├── builder_context.go
│   │   │   │   │   │   ├── builder_context_test.go
│   │   │   │   │   │   ├── fileinfosums.go
│   │   │   │   │   │   ├── fileinfosums_test.go
│   │   │   │   │   │   ├── tarsum.go
│   │   │   │   │   │   ├── tarsum_spec.md
│   │   │   │   │   │   ├── tarsum_test.go
│   │   │   │   │   │   ├── testdata/
│   │   │   │   │   │   │   ├── 46af0962ab5afeb5ce6740d4d91652e69206fc991fd5328c1a94d364ad00e457/
│   │   │   │   │   │   │   │   └── json
│   │   │   │   │   │   │   ├── 511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158/
│   │   │   │   │   │   │   │   └── json
│   │   │   │   │   │   │   └── xattr/
│   │   │   │   │   │   │       └── json
│   │   │   │   │   │   ├── versioning.go
│   │   │   │   │   │   ├── versioning_test.go
│   │   │   │   │   │   └── writercloser.go
│   │   │   │   │   ├── term/
│   │   │   │   │   │   ├── ascii.go
│   │   │   │   │   │   ├── ascii_test.go
│   │   │   │   │   │   ├── tc_linux_cgo.go
│   │   │   │   │   │   ├── tc_other.go
│   │   │   │   │   │   ├── tc_solaris_cgo.go
│   │   │   │   │   │   ├── term.go
│   │   │   │   │   │   ├── term_solaris.go
│   │   │   │   │   │   ├── term_unix.go
│   │   │   │   │   │   ├── term_windows.go
│   │   │   │   │   │   ├── termios_darwin.go
│   │   │   │   │   │   ├── termios_freebsd.go
│   │   │   │   │   │   ├── termios_linux.go
│   │   │   │   │   │   ├── termios_openbsd.go
│   │   │   │   │   │   └── windows/
│   │   │   │   │   │       ├── ansi_reader.go
│   │   │   │   │   │       ├── ansi_writer.go
│   │   │   │   │   │       ├── console.go
│   │   │   │   │   │       ├── windows.go
│   │   │   │   │   │       └── windows_test.go
│   │   │   │   │   ├── testutil/
│   │   │   │   │   │   ├── assert/
│   │   │   │   │   │   │   └── assert.go
│   │   │   │   │   │   ├── pkg.go
│   │   │   │   │   │   └── tempfile/
│   │   │   │   │   │       └── tempfile.go
│   │   │   │   │   ├── tlsconfig/
│   │   │   │   │   │   └── config.go
│   │   │   │   │   ├── truncindex/
│   │   │   │   │   │   ├── truncindex.go
│   │   │   │   │   │   └── truncindex_test.go
│   │   │   │   │   ├── urlutil/
│   │   │   │   │   │   ├── urlutil.go
│   │   │   │   │   │   └── urlutil_test.go
│   │   │   │   │   └── useragent/
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── useragent.go
│   │   │   │   │       └── useragent_test.go
│   │   │   │   ├── plugin/
│   │   │   │   │   ├── backend.go
│   │   │   │   │   ├── distribution/
│   │   │   │   │   │   ├── pull.go
│   │   │   │   │   │   ├── push.go
│   │   │   │   │   │   └── types.go
│   │   │   │   │   ├── manager.go
│   │   │   │   │   ├── manager_linux.go
│   │   │   │   │   ├── manager_windows.go
│   │   │   │   │   ├── store/
│   │   │   │   │   │   ├── interface.go
│   │   │   │   │   │   ├── legacy.go
│   │   │   │   │   │   └── store.go
│   │   │   │   │   └── v2/
│   │   │   │   │       └── plugin.go
│   │   │   │   ├── profiles/
│   │   │   │   │   ├── apparmor/
│   │   │   │   │   │   ├── apparmor.go
│   │   │   │   │   │   └── template.go
│   │   │   │   │   └── seccomp/
│   │   │   │   │       ├── default.json
│   │   │   │   │       ├── fixtures/
│   │   │   │   │       │   └── example.json
│   │   │   │   │       ├── generate.go
│   │   │   │   │       ├── seccomp.go
│   │   │   │   │       ├── seccomp_default.go
│   │   │   │   │       ├── seccomp_test.go
│   │   │   │   │       └── seccomp_unsupported.go
│   │   │   │   ├── project/
│   │   │   │   │   ├── ARM.md
│   │   │   │   │   ├── BRANCHES-AND-TAGS.md
│   │   │   │   │   ├── GOVERNANCE.md
│   │   │   │   │   ├── IRC-ADMINISTRATION.md
│   │   │   │   │   ├── ISSUE-TRIAGE.md
│   │   │   │   │   ├── PACKAGE-REPO-MAINTENANCE.md
│   │   │   │   │   ├── PACKAGERS.md
│   │   │   │   │   ├── PATCH-RELEASES.md
│   │   │   │   │   ├── PRINCIPLES.md
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── RELEASE-CHECKLIST.md
│   │   │   │   │   ├── RELEASE-PROCESS.md
│   │   │   │   │   ├── REVIEWING.md
│   │   │   │   │   └── TOOLS.md
│   │   │   │   ├── reference/
│   │   │   │   │   ├── reference.go
│   │   │   │   │   ├── reference_test.go
│   │   │   │   │   ├── store.go
│   │   │   │   │   └── store_test.go
│   │   │   │   ├── registry/
│   │   │   │   │   ├── auth.go
│   │   │   │   │   ├── auth_test.go
│   │   │   │   │   ├── config.go
│   │   │   │   │   ├── config_test.go
│   │   │   │   │   ├── config_unix.go
│   │   │   │   │   ├── config_windows.go
│   │   │   │   │   ├── endpoint_test.go
│   │   │   │   │   ├── endpoint_v1.go
│   │   │   │   │   ├── reference.go
│   │   │   │   │   ├── registry.go
│   │   │   │   │   ├── registry_mock_test.go
│   │   │   │   │   ├── registry_test.go
│   │   │   │   │   ├── service.go
│   │   │   │   │   ├── service_v1.go
│   │   │   │   │   ├── service_v2.go
│   │   │   │   │   ├── session.go
│   │   │   │   │   └── types.go
│   │   │   │   ├── restartmanager/
│   │   │   │   │   ├── restartmanager.go
│   │   │   │   │   └── restartmanager_test.go
│   │   │   │   ├── runconfig/
│   │   │   │   │   ├── compare.go
│   │   │   │   │   ├── compare_test.go
│   │   │   │   │   ├── config.go
│   │   │   │   │   ├── config_test.go
│   │   │   │   │   ├── config_unix.go
│   │   │   │   │   ├── config_windows.go
│   │   │   │   │   ├── errors.go
│   │   │   │   │   ├── fixtures/
│   │   │   │   │   │   ├── unix/
│   │   │   │   │   │   │   ├── container_config_1_14.json
│   │   │   │   │   │   │   ├── container_config_1_17.json
│   │   │   │   │   │   │   ├── container_config_1_19.json
│   │   │   │   │   │   │   ├── container_hostconfig_1_14.json
│   │   │   │   │   │   │   └── container_hostconfig_1_19.json
│   │   │   │   │   │   └── windows/
│   │   │   │   │   │       └── container_config_1_19.json
│   │   │   │   │   ├── hostconfig.go
│   │   │   │   │   ├── hostconfig_solaris.go
│   │   │   │   │   ├── hostconfig_test.go
│   │   │   │   │   ├── hostconfig_unix.go
│   │   │   │   │   ├── hostconfig_windows.go
│   │   │   │   │   ├── opts/
│   │   │   │   │   │   ├── envfile.go
│   │   │   │   │   │   ├── envfile_test.go
│   │   │   │   │   │   ├── fixtures/
│   │   │   │   │   │   │   ├── valid.env
│   │   │   │   │   │   │   └── valid.label
│   │   │   │   │   │   ├── opts.go
│   │   │   │   │   │   ├── opts_test.go
│   │   │   │   │   │   ├── parse.go
│   │   │   │   │   │   ├── parse_test.go
│   │   │   │   │   │   ├── runtime.go
│   │   │   │   │   │   ├── throttledevice.go
│   │   │   │   │   │   ├── ulimit.go
│   │   │   │   │   │   ├── ulimit_test.go
│   │   │   │   │   │   └── weightdevice.go
│   │   │   │   │   └── streams.go
│   │   │   │   ├── utils/
│   │   │   │   │   ├── debug.go
│   │   │   │   │   ├── debug_test.go
│   │   │   │   │   ├── experimental.go
│   │   │   │   │   ├── names.go
│   │   │   │   │   ├── process_unix.go
│   │   │   │   │   ├── process_windows.go
│   │   │   │   │   ├── stubs.go
│   │   │   │   │   ├── templates/
│   │   │   │   │   │   ├── templates.go
│   │   │   │   │   │   └── templates_test.go
│   │   │   │   │   ├── utils.go
│   │   │   │   │   └── utils_test.go
│   │   │   │   └── volume/
│   │   │   │       ├── drivers/
│   │   │   │       │   ├── adapter.go
│   │   │   │       │   ├── extpoint.go
│   │   │   │       │   ├── extpoint_test.go
│   │   │   │       │   ├── proxy.go
│   │   │   │       │   └── proxy_test.go
│   │   │   │       ├── local/
│   │   │   │       │   ├── local.go
│   │   │   │       │   ├── local_test.go
│   │   │   │       │   ├── local_unix.go
│   │   │   │       │   └── local_windows.go
│   │   │   │       ├── store/
│   │   │   │       │   ├── errors.go
│   │   │   │       │   ├── store.go
│   │   │   │       │   ├── store_test.go
│   │   │   │       │   ├── store_unix.go
│   │   │   │       │   └── store_windows.go
│   │   │   │       ├── testutils/
│   │   │   │       │   └── testutils.go
│   │   │   │       ├── validate.go
│   │   │   │       ├── validate_test.go
│   │   │   │       ├── validate_test_unix.go
│   │   │   │       ├── validate_test_windows.go
│   │   │   │       ├── volume.go
│   │   │   │       ├── volume_copy.go
│   │   │   │       ├── volume_copy_unix.go
│   │   │   │       ├── volume_copy_windows.go
│   │   │   │       ├── volume_propagation_linux.go
│   │   │   │       ├── volume_propagation_linux_test.go
│   │   │   │       ├── volume_propagation_unsupported.go
│   │   │   │       ├── volume_test.go
│   │   │   │       ├── volume_unix.go
│   │   │   │       └── volume_windows.go
│   │   │   ├── engine-api/
│   │   │   │   ├── .travis.yml
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   ├── LICENSE
│   │   │   │   ├── MAINTAINERS
│   │   │   │   ├── Makefile
│   │   │   │   ├── README.md
│   │   │   │   ├── appveyor.yml
│   │   │   │   ├── client/
│   │   │   │   │   ├── checkpoint_create.go
│   │   │   │   │   ├── checkpoint_create_test.go
│   │   │   │   │   ├── checkpoint_delete.go
│   │   │   │   │   ├── checkpoint_delete_test.go
│   │   │   │   │   ├── checkpoint_list.go
│   │   │   │   │   ├── checkpoint_list_test.go
│   │   │   │   │   ├── client.go
│   │   │   │   │   ├── client_mock_test.go
│   │   │   │   │   ├── client_test.go
│   │   │   │   │   ├── client_unix.go
│   │   │   │   │   ├── client_windows.go
│   │   │   │   │   ├── container_attach.go
│   │   │   │   │   ├── container_commit.go
│   │   │   │   │   ├── container_commit_test.go
│   │   │   │   │   ├── container_copy.go
│   │   │   │   │   ├── container_copy_test.go
│   │   │   │   │   ├── container_create.go
│   │   │   │   │   ├── container_create_test.go
│   │   │   │   │   ├── container_diff.go
│   │   │   │   │   ├── container_diff_test.go
│   │   │   │   │   ├── container_exec.go
│   │   │   │   │   ├── container_exec_test.go
│   │   │   │   │   ├── container_export.go
│   │   │   │   │   ├── container_export_test.go
│   │   │   │   │   ├── container_inspect.go
│   │   │   │   │   ├── container_inspect_test.go
│   │   │   │   │   ├── container_kill.go
│   │   │   │   │   ├── container_kill_test.go
│   │   │   │   │   ├── container_list.go
│   │   │   │   │   ├── container_list_test.go
│   │   │   │   │   ├── container_logs.go
│   │   │   │   │   ├── container_logs_test.go
│   │   │   │   │   ├── container_pause.go
│   │   │   │   │   ├── container_pause_test.go
│   │   │   │   │   ├── container_remove.go
│   │   │   │   │   ├── container_remove_test.go
│   │   │   │   │   ├── container_rename.go
│   │   │   │   │   ├── container_rename_test.go
│   │   │   │   │   ├── container_resize.go
│   │   │   │   │   ├── container_resize_test.go
│   │   │   │   │   ├── container_restart.go
│   │   │   │   │   ├── container_restart_test.go
│   │   │   │   │   ├── container_start.go
│   │   │   │   │   ├── container_start_test.go
│   │   │   │   │   ├── container_stats.go
│   │   │   │   │   ├── container_stats_test.go
│   │   │   │   │   ├── container_stop.go
│   │   │   │   │   ├── container_stop_test.go
│   │   │   │   │   ├── container_top.go
│   │   │   │   │   ├── container_top_test.go
│   │   │   │   │   ├── container_unpause.go
│   │   │   │   │   ├── container_unpause_test.go
│   │   │   │   │   ├── container_update.go
│   │   │   │   │   ├── container_update_test.go
│   │   │   │   │   ├── container_wait.go
│   │   │   │   │   ├── container_wait_test.go
│   │   │   │   │   ├── errors.go
│   │   │   │   │   ├── events.go
│   │   │   │   │   ├── events_test.go
│   │   │   │   │   ├── hijack.go
│   │   │   │   │   ├── image_build.go
│   │   │   │   │   ├── image_build_test.go
│   │   │   │   │   ├── image_create.go
│   │   │   │   │   ├── image_create_test.go
│   │   │   │   │   ├── image_history.go
│   │   │   │   │   ├── image_history_test.go
│   │   │   │   │   ├── image_import.go
│   │   │   │   │   ├── image_import_test.go
│   │   │   │   │   ├── image_inspect.go
│   │   │   │   │   ├── image_inspect_test.go
│   │   │   │   │   ├── image_list.go
│   │   │   │   │   ├── image_list_test.go
│   │   │   │   │   ├── image_load.go
│   │   │   │   │   ├── image_load_test.go
│   │   │   │   │   ├── image_pull.go
│   │   │   │   │   ├── image_pull_test.go
│   │   │   │   │   ├── image_push.go
│   │   │   │   │   ├── image_push_test.go
│   │   │   │   │   ├── image_remove.go
│   │   │   │   │   ├── image_remove_test.go
│   │   │   │   │   ├── image_save.go
│   │   │   │   │   ├── image_save_test.go
│   │   │   │   │   ├── image_search.go
│   │   │   │   │   ├── image_search_test.go
│   │   │   │   │   ├── image_tag.go
│   │   │   │   │   ├── image_tag_test.go
│   │   │   │   │   ├── info.go
│   │   │   │   │   ├── info_test.go
│   │   │   │   │   ├── interface.go
│   │   │   │   │   ├── interface_experimental.go
│   │   │   │   │   ├── interface_stable.go
│   │   │   │   │   ├── login.go
│   │   │   │   │   ├── network_connect.go
│   │   │   │   │   ├── network_connect_test.go
│   │   │   │   │   ├── network_create.go
│   │   │   │   │   ├── network_create_test.go
│   │   │   │   │   ├── network_disconnect.go
│   │   │   │   │   ├── network_disconnect_test.go
│   │   │   │   │   ├── network_inspect.go
│   │   │   │   │   ├── network_inspect_test.go
│   │   │   │   │   ├── network_list.go
│   │   │   │   │   ├── network_list_test.go
│   │   │   │   │   ├── network_remove.go
│   │   │   │   │   ├── network_remove_test.go
│   │   │   │   │   ├── node_inspect.go
│   │   │   │   │   ├── node_inspect_test.go
│   │   │   │   │   ├── node_list.go
│   │   │   │   │   ├── node_list_test.go
│   │   │   │   │   ├── node_remove.go
│   │   │   │   │   ├── node_remove_test.go
│   │   │   │   │   ├── node_update.go
│   │   │   │   │   ├── node_update_test.go
│   │   │   │   │   ├── plugin_disable.go
│   │   │   │   │   ├── plugin_disable_test.go
│   │   │   │   │   ├── plugin_enable.go
│   │   │   │   │   ├── plugin_enable_test.go
│   │   │   │   │   ├── plugin_inspect.go
│   │   │   │   │   ├── plugin_inspect_test.go
│   │   │   │   │   ├── plugin_install.go
│   │   │   │   │   ├── plugin_list.go
│   │   │   │   │   ├── plugin_list_test.go
│   │   │   │   │   ├── plugin_push.go
│   │   │   │   │   ├── plugin_push_test.go
│   │   │   │   │   ├── plugin_remove.go
│   │   │   │   │   ├── plugin_remove_test.go
│   │   │   │   │   ├── plugin_set.go
│   │   │   │   │   ├── plugin_set_test.go
│   │   │   │   │   ├── request.go
│   │   │   │   │   ├── request_test.go
│   │   │   │   │   ├── service_create.go
│   │   │   │   │   ├── service_create_test.go
│   │   │   │   │   ├── service_inspect.go
│   │   │   │   │   ├── service_inspect_test.go
│   │   │   │   │   ├── service_list.go
│   │   │   │   │   ├── service_list_test.go
│   │   │   │   │   ├── service_remove.go
│   │   │   │   │   ├── service_remove_test.go
│   │   │   │   │   ├── service_update.go
│   │   │   │   │   ├── service_update_test.go
│   │   │   │   │   ├── swarm_init.go
│   │   │   │   │   ├── swarm_init_test.go
│   │   │   │   │   ├── swarm_inspect.go
│   │   │   │   │   ├── swarm_inspect_test.go
│   │   │   │   │   ├── swarm_join.go
│   │   │   │   │   ├── swarm_join_test.go
│   │   │   │   │   ├── swarm_leave.go
│   │   │   │   │   ├── swarm_leave_test.go
│   │   │   │   │   ├── swarm_update.go
│   │   │   │   │   ├── swarm_update_test.go
│   │   │   │   │   ├── task_inspect.go
│   │   │   │   │   ├── task_inspect_test.go
│   │   │   │   │   ├── task_list.go
│   │   │   │   │   ├── task_list_test.go
│   │   │   │   │   ├── testdata/
│   │   │   │   │   │   ├── ca.pem
│   │   │   │   │   │   ├── cert.pem
│   │   │   │   │   │   └── key.pem
│   │   │   │   │   ├── transport/
│   │   │   │   │   │   ├── cancellable/
│   │   │   │   │   │   │   ├── LICENSE
│   │   │   │   │   │   │   ├── canceler.go
│   │   │   │   │   │   │   ├── canceler_go14.go
│   │   │   │   │   │   │   └── cancellable.go
│   │   │   │   │   │   ├── client.go
│   │   │   │   │   │   ├── tlsconfig_clone.go
│   │   │   │   │   │   ├── tlsconfig_clone_go17.go
│   │   │   │   │   │   └── transport.go
│   │   │   │   │   ├── version.go
│   │   │   │   │   ├── volume_create.go
│   │   │   │   │   ├── volume_create_test.go
│   │   │   │   │   ├── volume_inspect.go
│   │   │   │   │   ├── volume_inspect_test.go
│   │   │   │   │   ├── volume_list.go
│   │   │   │   │   ├── volume_list_test.go
│   │   │   │   │   ├── volume_remove.go
│   │   │   │   │   └── volume_remove_test.go
│   │   │   │   ├── doc.go
│   │   │   │   └── types/
│   │   │   │       ├── auth.go
│   │   │   │       ├── blkiodev/
│   │   │   │       │   └── blkio.go
│   │   │   │       ├── client.go
│   │   │   │       ├── configs.go
│   │   │   │       ├── container/
│   │   │   │       │   ├── config.go
│   │   │   │       │   ├── host_config.go
│   │   │   │       │   ├── hostconfig_unix.go
│   │   │   │       │   └── hostconfig_windows.go
│   │   │   │       ├── errors.go
│   │   │   │       ├── events/
│   │   │   │       │   └── events.go
│   │   │   │       ├── filters/
│   │   │   │       │   ├── parse.go
│   │   │   │       │   └── parse_test.go
│   │   │   │       ├── mount/
│   │   │   │       │   └── mount.go
│   │   │   │       ├── network/
│   │   │   │       │   └── network.go
│   │   │   │       ├── plugin.go
│   │   │   │       ├── reference/
│   │   │   │       │   ├── image_reference.go
│   │   │   │       │   └── image_reference_test.go
│   │   │   │       ├── registry/
│   │   │   │       │   └── registry.go
│   │   │   │       ├── seccomp.go
│   │   │   │       ├── stats.go
│   │   │   │       ├── strslice/
│   │   │   │       │   ├── strslice.go
│   │   │   │       │   └── strslice_test.go
│   │   │   │       ├── swarm/
│   │   │   │       │   ├── common.go
│   │   │   │       │   ├── container.go
│   │   │   │       │   ├── network.go
│   │   │   │       │   ├── node.go
│   │   │   │       │   ├── service.go
│   │   │   │       │   ├── swarm.go
│   │   │   │       │   └── task.go
│   │   │   │       ├── time/
│   │   │   │       │   ├── duration_convert.go
│   │   │   │       │   ├── duration_convert_test.go
│   │   │   │       │   ├── timestamp.go
│   │   │   │       │   └── timestamp_test.go
│   │   │   │       ├── types.go
│   │   │   │       └── versions/
│   │   │   │           ├── README.md
│   │   │   │           ├── compare.go
│   │   │   │           ├── compare_test.go
│   │   │   │           ├── v1p19/
│   │   │   │           │   └── types.go
│   │   │   │           └── v1p20/
│   │   │   │               └── types.go
│   │   │   ├── go-connections/
│   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   ├── LICENSE
│   │   │   │   ├── MAINTAINERS
│   │   │   │   ├── README.md
│   │   │   │   ├── circle.yml
│   │   │   │   ├── doc.go
│   │   │   │   ├── nat/
│   │   │   │   │   ├── nat.go
│   │   │   │   │   ├── nat_test.go
│   │   │   │   │   ├── parse.go
│   │   │   │   │   ├── parse_test.go
│   │   │   │   │   ├── sort.go
│   │   │   │   │   └── sort_test.go
│   │   │   │   ├── proxy/
│   │   │   │   │   ├── network_proxy_test.go
│   │   │   │   │   ├── proxy.go
│   │   │   │   │   ├── stub_proxy.go
│   │   │   │   │   ├── tcp_proxy.go
│   │   │   │   │   └── udp_proxy.go
│   │   │   │   ├── sockets/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── inmem_socket.go
│   │   │   │   │   ├── inmem_socket_test.go
│   │   │   │   │   ├── proxy.go
│   │   │   │   │   ├── sockets.go
│   │   │   │   │   ├── sockets_unix.go
│   │   │   │   │   ├── sockets_windows.go
│   │   │   │   │   ├── tcp_socket.go
│   │   │   │   │   └── unix_socket.go
│   │   │   │   └── tlsconfig/
│   │   │   │       ├── config.go
│   │   │   │       ├── config_client_ciphers.go
│   │   │   │       ├── config_legacy_client_ciphers.go
│   │   │   │       └── config_test.go
│   │   │   ├── go-units/
│   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   ├── LICENSE
│   │   │   │   ├── MAINTAINERS
│   │   │   │   ├── README.md
│   │   │   │   ├── circle.yml
│   │   │   │   ├── duration.go
│   │   │   │   ├── duration_test.go
│   │   │   │   ├── size.go
│   │   │   │   ├── size_test.go
│   │   │   │   ├── ulimit.go
│   │   │   │   └── ulimit_test.go
│   │   │   └── libtrust/
│   │   │       ├── CONTRIBUTING.md
│   │   │       ├── LICENSE
│   │   │       ├── MAINTAINERS
│   │   │       ├── README.md
│   │   │       ├── certificates.go
│   │   │       ├── certificates_test.go
│   │   │       ├── doc.go
│   │   │       ├── ec_key.go
│   │   │       ├── ec_key_test.go
│   │   │       ├── filter.go
│   │   │       ├── filter_test.go
│   │   │       ├── hash.go
│   │   │       ├── jsonsign.go
│   │   │       ├── jsonsign_test.go
│   │   │       ├── key.go
│   │   │       ├── key_files.go
│   │   │       ├── key_files_test.go
│   │   │       ├── key_manager.go
│   │   │       ├── key_test.go
│   │   │       ├── rsa_key.go
│   │   │       ├── rsa_key_test.go
│   │   │       ├── testutil/
│   │   │       │   └── certificates.go
│   │   │       ├── tlsdemo/
│   │   │       │   ├── README.md
│   │   │       │   ├── client.go
│   │   │       │   ├── gencert.go
│   │   │       │   ├── genkeys.go
│   │   │       │   └── server.go
│   │   │       ├── trustgraph/
│   │   │       │   ├── graph.go
│   │   │       │   ├── memory_graph.go
│   │   │       │   ├── memory_graph_test.go
│   │   │       │   ├── statement.go
│   │   │       │   └── statement_test.go
│   │   │       ├── util.go
│   │   │       └── util_test.go
│   │   ├── emicklei/
│   │   │   └── go-restful/
│   │   │       ├── .gitignore
│   │   │       ├── CHANGES.md
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── Srcfile
│   │   │       ├── bench_curly_test.go
│   │   │       ├── bench_test.go
│   │   │       ├── bench_test.sh
│   │   │       ├── compress.go
│   │   │       ├── compress_test.go
│   │   │       ├── compressor_cache.go
│   │   │       ├── compressor_pools.go
│   │   │       ├── compressors.go
│   │   │       ├── constants.go
│   │   │       ├── container.go
│   │   │       ├── container_test.go
│   │   │       ├── cors_filter.go
│   │   │       ├── cors_filter_test.go
│   │   │       ├── coverage.sh
│   │   │       ├── curly.go
│   │   │       ├── curly_route.go
│   │   │       ├── curly_test.go
│   │   │       ├── doc.go
│   │   │       ├── doc_examples_test.go
│   │   │       ├── entity_accessors.go
│   │   │       ├── entity_accessors_test.go
│   │   │       ├── examples/
│   │   │       │   ├── .goconvey
│   │   │       │   ├── google_app_engine/
│   │   │       │   │   ├── .goconvey
│   │   │       │   │   ├── app.yaml
│   │   │       │   │   ├── datastore/
│   │   │       │   │   │   ├── .goconvey
│   │   │       │   │   │   ├── app.yaml
│   │   │       │   │   │   └── main.go
│   │   │       │   │   ├── restful-appstats-integration.go
│   │   │       │   │   └── restful-user-service.go
│   │   │       │   ├── home.html
│   │   │       │   ├── msgpack/
│   │   │       │   │   ├── msgpack_entity.go
│   │   │       │   │   └── msgpack_entity_test.go
│   │   │       │   ├── restful-CORS-filter.go
│   │   │       │   ├── restful-NCSA-logging.go
│   │   │       │   ├── restful-basic-authentication.go
│   │   │       │   ├── restful-cpuprofiler-service.go
│   │   │       │   ├── restful-curly-router.go
│   │   │       │   ├── restful-curly-router_test.go
│   │   │       │   ├── restful-encoding-filter.go
│   │   │       │   ├── restful-filters.go
│   │   │       │   ├── restful-form-handling.go
│   │   │       │   ├── restful-hello-world.go
│   │   │       │   ├── restful-html-template.go
│   │   │       │   ├── restful-multi-containers.go
│   │   │       │   ├── restful-no-cache-filter.go
│   │   │       │   ├── restful-options-filter.go
│   │   │       │   ├── restful-path-tail.go
│   │   │       │   ├── restful-pre-post-filters.go
│   │   │       │   ├── restful-resource-functions.go
│   │   │       │   ├── restful-route_test.go
│   │   │       │   ├── restful-routefunction_test.go
│   │   │       │   ├── restful-serve-static.go
│   │   │       │   ├── restful-swagger.go
│   │   │       │   ├── restful-user-resource.go
│   │   │       │   └── restful-user-service.go
│   │   │       ├── filter.go
│   │   │       ├── filter_test.go
│   │   │       ├── install.sh
│   │   │       ├── jsr311.go
│   │   │       ├── jsr311_test.go
│   │   │       ├── log/
│   │   │       │   └── log.go
│   │   │       ├── logger.go
│   │   │       ├── mime.go
│   │   │       ├── mime_test.go
│   │   │       ├── options_filter.go
│   │   │       ├── options_filter_test.go
│   │   │       ├── parameter.go
│   │   │       ├── path_expression.go
│   │   │       ├── path_expression_test.go
│   │   │       ├── request.go
│   │   │       ├── request_test.go
│   │   │       ├── response.go
│   │   │       ├── response_test.go
│   │   │       ├── route.go
│   │   │       ├── route_builder.go
│   │   │       ├── route_builder_test.go
│   │   │       ├── route_test.go
│   │   │       ├── router.go
│   │   │       ├── service_error.go
│   │   │       ├── swagger/
│   │   │       │   ├── CHANGES.md
│   │   │       │   ├── README.md
│   │   │       │   ├── api_declaration_list.go
│   │   │       │   ├── config.go
│   │   │       │   ├── model_builder.go
│   │   │       │   ├── model_builder_test.go
│   │   │       │   ├── model_list.go
│   │   │       │   ├── model_list_test.go
│   │   │       │   ├── model_property_ext.go
│   │   │       │   ├── model_property_ext_test.go
│   │   │       │   ├── model_property_list.go
│   │   │       │   ├── model_property_list_test.go
│   │   │       │   ├── ordered_route_map.go
│   │   │       │   ├── ordered_route_map_test.go
│   │   │       │   ├── postbuild_model_test.go
│   │   │       │   ├── swagger.go
│   │   │       │   ├── swagger_builder.go
│   │   │       │   ├── swagger_test.go
│   │   │       │   ├── swagger_webservice.go
│   │   │       │   ├── test_package/
│   │   │       │   │   └── struct.go
│   │   │       │   └── utils_test.go
│   │   │       ├── tracer_test.go
│   │   │       ├── web_service.go
│   │   │       ├── web_service_container.go
│   │   │       └── web_service_test.go
│   │   ├── evanphx/
│   │   │   └── json-patch/
│   │   │       ├── .travis.yml
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── merge.go
│   │   │       ├── merge_test.go
│   │   │       ├── patch.go
│   │   │       └── patch_test.go
│   │   ├── fsouza/
│   │   │   └── go-dockerclient/
│   │   │       ├── .gitignore
│   │   │       ├── .travis.yml
│   │   │       ├── AUTHORS
│   │   │       ├── DOCKER-LICENSE
│   │   │       ├── LICENSE
│   │   │       ├── Makefile
│   │   │       ├── README.markdown
│   │   │       ├── auth.go
│   │   │       ├── auth_test.go
│   │   │       ├── build_test.go
│   │   │       ├── change.go
│   │   │       ├── change_test.go
│   │   │       ├── client.go
│   │   │       ├── client_test.go
│   │   │       ├── container.go
│   │   │       ├── container_test.go
│   │   │       ├── env.go
│   │   │       ├── env_test.go
│   │   │       ├── event.go
│   │   │       ├── event_test.go
│   │   │       ├── example_test.go
│   │   │       ├── exec.go
│   │   │       ├── exec_test.go
│   │   │       ├── image.go
│   │   │       ├── image_test.go
│   │   │       ├── integration_test.go
│   │   │       ├── misc.go
│   │   │       ├── misc_test.go
│   │   │       ├── network.go
│   │   │       ├── network_test.go
│   │   │       ├── node.go
│   │   │       ├── node_test.go
│   │   │       ├── service.go
│   │   │       ├── service_test.go
│   │   │       ├── signal.go
│   │   │       ├── swarm.go
│   │   │       ├── swarm_test.go
│   │   │       ├── tar.go
│   │   │       ├── task.go
│   │   │       ├── task_test.go
│   │   │       ├── testing/
│   │   │       │   ├── data/
│   │   │       │   │   ├── .dockerignore
│   │   │       │   │   ├── Dockerfile
│   │   │       │   │   ├── barfile
│   │   │       │   │   ├── ca.pem
│   │   │       │   │   ├── cert.pem
│   │   │       │   │   ├── foofile
│   │   │       │   │   ├── key.pem
│   │   │       │   │   ├── server.pem
│   │   │       │   │   └── serverkey.pem
│   │   │       │   ├── server.go
│   │   │       │   └── server_test.go
│   │   │       ├── tls.go
│   │   │       ├── travis-scripts/
│   │   │       │   ├── install-docker.bash
│   │   │       │   └── run-tests.bash
│   │   │       ├── volume.go
│   │   │       └── volume_test.go
│   │   ├── ghodss/
│   │   │   └── yaml/
│   │   │       ├── .gitignore
│   │   │       ├── .travis.yml
│   │   │       ├── LICENSE
│   │   │       ├── README.md
│   │   │       ├── fields.go
│   │   │       ├── yaml.go
│   │   │       └── yaml_test.go
│   │   ├── gogo/
│   │   │   └── protobuf/
│   │   │       ├── .gitignore
│   │   │       ├── .mailmap
│   │   │       ├── .travis.yml
│   │   │       ├── AUTHORS
│   │   │       ├── CONTRIBUTORS
│   │   │       ├── GOLANG_CONTRIBUTORS
│   │   │       ├── LICENSE
│   │   │       ├── Makefile
│   │   │       ├── README
│   │   │       ├── Readme.md
│   │   │       ├── bench.md
│   │   │       ├── codec/
│   │   │       │   ├── codec.go
│   │   │       │   └── codec_test.go
│   │   │       ├── extensions.md
│   │   │       ├── gogoproto/
│   │   │       │   ├── Makefile
│   │   │       │   ├── doc.go
│   │   │       │   ├── gogo.pb.go
│   │   │       │   ├── gogo.pb.golden
│   │   │       │   ├── gogo.proto
│   │   │       │   └── helper.go
│   │   │       ├── gogoreplace/
│   │   │       │   └── main.go
│   │   │       ├── install-protobuf.sh
│   │   │       ├── io/
│   │   │       │   ├── full.go
│   │   │       │   ├── io.go
│   │   │       │   ├── io_test.go
│   │   │       │   ├── uint32.go
│   │   │       │   └── varint.go
│   │   │       ├── jsonpb/
│   │   │       │   ├── jsonpb.go
│   │   │       │   ├── jsonpb_test.go
│   │   │       │   └── jsonpb_test_proto/
│   │   │       │       ├── Makefile
│   │   │       │       ├── bytes.go
│   │   │       │       ├── more_test_objects.pb.go
│   │   │       │       ├── more_test_objects.proto
│   │   │       │       ├── test_objects.pb.go
│   │   │       │       └── test_objects.proto
│   │   │       ├── plugin/
│   │   │       │   ├── compare/
│   │   │       │   │   ├── compare.go
│   │   │       │   │   └── comparetest.go
│   │   │       │   ├── defaultcheck/
│   │   │       │   │   └── defaultcheck.go
│   │   │       │   ├── description/
│   │   │       │   │   ├── description.go
│   │   │       │   │   └── descriptiontest.go
│   │   │       │   ├── embedcheck/
│   │   │       │   │   └── embedcheck.go
│   │   │       │   ├── enumstringer/
│   │   │       │   │   └── enumstringer.go
│   │   │       │   ├── equal/
│   │   │       │   │   ├── equal.go
│   │   │       │   │   └── equaltest.go
│   │   │       │   ├── face/
│   │   │       │   │   ├── face.go
│   │   │       │   │   └── facetest.go
│   │   │       │   ├── gostring/
│   │   │       │   │   ├── gostring.go
│   │   │       │   │   └── gostringtest.go
│   │   │       │   ├── marshalto/
│   │   │       │   │   └── marshalto.go
│   │   │       │   ├── oneofcheck/
│   │   │       │   │   └── oneofcheck.go
│   │   │       │   ├── populate/
│   │   │       │   │   └── populate.go
│   │   │       │   ├── size/
│   │   │       │   │   ├── size.go
│   │   │       │   │   └── sizetest.go
│   │   │       │   ├── stringer/
│   │   │       │   │   ├── stringer.go
│   │   │       │   │   └── stringertest.go
│   │   │       │   ├── testgen/
│   │   │       │   │   └── testgen.go
│   │   │       │   ├── union/
│   │   │       │   │   ├── union.go
│   │   │       │   │   └── uniontest.go
│   │   │       │   └── unmarshal/
│   │   │       │       └── unmarshal.go
│   │   │       ├── proto/
│   │   │       │   ├── Makefile
│   │   │       │   ├── all_test.go
│   │   │       │   ├── any_test.go
│   │   │       │   ├── clone.go
│   │   │       │   ├── clone_test.go
│   │   │       │   ├── decode.go
│   │   │       │   ├── decode_gogo.go
│   │   │       │   ├── encode.go
│   │   │       │   ├── encode_gogo.go
│   │   │       │   ├── equal.go
│   │   │       │   ├── equal_test.go
│   │   │       │   ├── extensions.go
│   │   │       │   ├── extensions_gogo.go
│   │   │       │   ├── extensions_test.go
│   │   │       │   ├── lib.go
│   │   │       │   ├── lib_gogo.go
│   │   │       │   ├── message_set.go
│   │   │       │   ├── message_set_test.go
│   │   │       │   ├── pointer_reflect.go
│   │   │       │   ├── pointer_unsafe.go
│   │   │       │   ├── pointer_unsafe_gogo.go
│   │   │       │   ├── properties.go
│   │   │       │   ├── properties_gogo.go
│   │   │       │   ├── proto3_proto/
│   │   │       │   │   ├── proto3.pb.go
│   │   │       │   │   └── proto3.proto
│   │   │       │   ├── proto3_test.go
│   │   │       │   ├── size2_test.go
│   │   │       │   ├── size_test.go
│   │   │       │   ├── skip_gogo.go
│   │   │       │   ├── testdata/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── golden_test.go
│   │   │       │   │   ├── test.pb.go
│   │   │       │   │   ├── test.pb.go.golden
│   │   │       │   │   └── test.proto
│   │   │       │   ├── text.go
│   │   │       │   ├── text_gogo.go
│   │   │       │   ├── text_parser.go
│   │   │       │   ├── text_parser_test.go
│   │   │       │   └── text_test.go
│   │   │       ├── protobuf/
│   │   │       │   ├── Makefile
│   │   │       │   └── google/
│   │   │       │       └── protobuf/
│   │   │       │           ├── any.proto
│   │   │       │           ├── compiler/
│   │   │       │           │   └── plugin.proto
│   │   │       │           ├── descriptor.proto
│   │   │       │           ├── duration.proto
│   │   │       │           ├── empty.proto
│   │   │       │           ├── struct.proto
│   │   │       │           ├── timestamp.proto
│   │   │       │           └── wrappers.proto
│   │   │       ├── protoc-gen-combo/
│   │   │       │   └── combo.go
│   │   │       ├── protoc-gen-gofast/
│   │   │       │   └── main.go
│   │   │       ├── protoc-gen-gogo/
│   │   │       │   ├── Makefile
│   │   │       │   ├── descriptor/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── descriptor.pb.go
│   │   │       │   │   ├── descriptor_gostring.gen.go
│   │   │       │   │   └── helper.go
│   │   │       │   ├── doc.go
│   │   │       │   ├── generator/
│   │   │       │   │   ├── generator.go
│   │   │       │   │   ├── helper.go
│   │   │       │   │   └── name_test.go
│   │   │       │   ├── grpc/
│   │   │       │   │   └── grpc.go
│   │   │       │   ├── main.go
│   │   │       │   ├── plugin/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   └── plugin.pb.go
│   │   │       │   └── testdata/
│   │   │       │       ├── Makefile
│   │   │       │       ├── extension_base.proto
│   │   │       │       ├── extension_extra.proto
│   │   │       │       ├── extension_test.go
│   │   │       │       ├── extension_user.proto
│   │   │       │       ├── grpc.proto
│   │   │       │       ├── imp.pb.go.golden
│   │   │       │       ├── imp.proto
│   │   │       │       ├── imp2.proto
│   │   │       │       ├── imp3.proto
│   │   │       │       ├── main_test.go
│   │   │       │       ├── multi/
│   │   │       │       │   ├── .gitignore
│   │   │       │       │   ├── multi1.proto
│   │   │       │       │   ├── multi2.proto
│   │   │       │       │   └── multi3.proto
│   │   │       │       ├── my_test/
│   │   │       │       │   ├── test.pb.go
│   │   │       │       │   └── test.proto
│   │   │       │       └── proto3.proto
│   │   │       ├── protoc-gen-gogofast/
│   │   │       │   └── main.go
│   │   │       ├── protoc-gen-gogofaster/
│   │   │       │   └── main.go
│   │   │       ├── protoc-gen-gogoslick/
│   │   │       │   └── main.go
│   │   │       ├── protoc-gen-gogotypes/
│   │   │       │   └── main.go
│   │   │       ├── protoc-gen-gostring/
│   │   │       │   └── main.go
│   │   │       ├── protoc-min-version/
│   │   │       │   └── minversion.go
│   │   │       ├── sortkeys/
│   │   │       │   └── sortkeys.go
│   │   │       ├── test/
│   │   │       │   ├── .gitignore
│   │   │       │   ├── Makefile
│   │   │       │   ├── asymetric-issue125/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── asym.pb.go
│   │   │       │   │   ├── asym.proto
│   │   │       │   │   ├── asym_test.go
│   │   │       │   │   ├── asympb_test.go
│   │   │       │   │   └── pop.go
│   │   │       │   ├── bug_test.go
│   │   │       │   ├── casttype/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── casttype.proto
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── casttype.pb.go
│   │   │       │   │   │   │   ├── casttype.proto
│   │   │       │   │   │   │   └── casttypepb_test.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── casttype.pb.go
│   │   │       │   │   │   │   ├── casttype.proto
│   │   │       │   │   │   │   └── casttypepb_test.go
│   │   │       │   │   │   ├── neither/
│   │   │       │   │   │   │   ├── casttype.pb.go
│   │   │       │   │   │   │   ├── casttype.proto
│   │   │       │   │   │   │   └── casttypepb_test.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── casttype.pb.go
│   │   │       │   │   │   │   ├── casttype.proto
│   │   │       │   │   │   │   └── casttypepb_test.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── casttype.pb.go
│   │   │       │   │   │   │   ├── casttype.proto
│   │   │       │   │   │   │   └── casttypepb_test.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── casttype.pb.go
│   │   │       │   │   │   │   ├── casttype.proto
│   │   │       │   │   │   │   └── casttypepb_test.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── casttype.pb.go
│   │   │       │   │   │       ├── casttype.proto
│   │   │       │   │   │       └── casttypepb_test.go
│   │   │       │   │   └── mytypes.go
│   │   │       │   ├── castvalue/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── castvalue.pb.go
│   │   │       │   │   ├── castvalue.proto
│   │   │       │   │   ├── castvaluepb_test.go
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── castvalue.pb.go
│   │   │       │   │   │   │   ├── castvalue.proto
│   │   │       │   │   │   │   ├── castvaluepb_test.go
│   │   │       │   │   │   │   └── mytypes.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── castvalue.pb.go
│   │   │       │   │   │   │   ├── castvalue.proto
│   │   │       │   │   │   │   ├── castvaluepb_test.go
│   │   │       │   │   │   │   └── mytypes.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── castvalue.pb.go
│   │   │       │   │   │   │   ├── castvalue.proto
│   │   │       │   │   │   │   ├── castvaluepb_test.go
│   │   │       │   │   │   │   └── mytypes.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── castvalue.pb.go
│   │   │       │   │   │   │   ├── castvalue.proto
│   │   │       │   │   │   │   ├── castvaluepb_test.go
│   │   │       │   │   │   │   └── mytypes.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── castvalue.pb.go
│   │   │       │   │   │   │   ├── castvalue.proto
│   │   │       │   │   │   │   ├── castvaluepb_test.go
│   │   │       │   │   │   │   └── mytypes.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── castvalue.pb.go
│   │   │       │   │   │       ├── castvalue.proto
│   │   │       │   │   │       ├── castvaluepb_test.go
│   │   │       │   │   │       └── mytypes.go
│   │   │       │   │   └── mytypes.go
│   │   │       │   ├── combos/
│   │   │       │   │   ├── both/
│   │   │       │   │   │   ├── bug_test.go
│   │   │       │   │   │   ├── thetest.pb.go
│   │   │       │   │   │   ├── thetest.proto
│   │   │       │   │   │   ├── thetestpb_test.go
│   │   │       │   │   │   └── uuid.go
│   │   │       │   │   ├── marshaler/
│   │   │       │   │   │   ├── bug_test.go
│   │   │       │   │   │   ├── thetest.pb.go
│   │   │       │   │   │   ├── thetest.proto
│   │   │       │   │   │   ├── thetestpb_test.go
│   │   │       │   │   │   └── uuid.go
│   │   │       │   │   ├── unmarshaler/
│   │   │       │   │   │   ├── bug_test.go
│   │   │       │   │   │   ├── thetest.pb.go
│   │   │       │   │   │   ├── thetest.proto
│   │   │       │   │   │   ├── thetestpb_test.go
│   │   │       │   │   │   └── uuid.go
│   │   │       │   │   ├── unsafeboth/
│   │   │       │   │   │   ├── bug_test.go
│   │   │       │   │   │   ├── thetest.pb.go
│   │   │       │   │   │   ├── thetest.proto
│   │   │       │   │   │   ├── thetestpb_test.go
│   │   │       │   │   │   └── uuid.go
│   │   │       │   │   ├── unsafemarshaler/
│   │   │       │   │   │   ├── bug_test.go
│   │   │       │   │   │   ├── thetest.pb.go
│   │   │       │   │   │   ├── thetest.proto
│   │   │       │   │   │   ├── thetestpb_test.go
│   │   │       │   │   │   └── uuid.go
│   │   │       │   │   └── unsafeunmarshaler/
│   │   │       │   │       ├── bug_test.go
│   │   │       │   │       ├── thetest.pb.go
│   │   │       │   │       ├── thetest.proto
│   │   │       │   │       ├── thetestpb_test.go
│   │   │       │   │       └── uuid.go
│   │   │       │   ├── custom/
│   │   │       │   │   ├── custom.go
│   │   │       │   │   └── custom_test.go
│   │   │       │   ├── custom-dash-type/
│   │   │       │   │   └── customdash.go
│   │   │       │   ├── custombytesnonstruct/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── custombytesnonstruct_test.go
│   │   │       │   │   ├── customtype.go
│   │   │       │   │   ├── proto.pb.go
│   │   │       │   │   └── proto.proto
│   │   │       │   ├── dashfilename/
│   │   │       │   │   ├── dash-filename.proto
│   │   │       │   │   ├── df_test.go
│   │   │       │   │   └── doc.go
│   │   │       │   ├── defaultconflict/
│   │   │       │   │   ├── df.proto
│   │   │       │   │   ├── dg.proto
│   │   │       │   │   ├── doc.go
│   │   │       │   │   ├── nc.proto
│   │   │       │   │   ├── nc_test.go
│   │   │       │   │   ├── ne.proto
│   │   │       │   │   └── nx.proto
│   │   │       │   ├── embedconflict/
│   │   │       │   │   ├── .gitignore
│   │   │       │   │   ├── doc.go
│   │   │       │   │   ├── eb.proto
│   │   │       │   │   ├── ec.proto
│   │   │       │   │   ├── ec_test.go
│   │   │       │   │   ├── ee.proto
│   │   │       │   │   ├── em.proto
│   │   │       │   │   ├── en.proto
│   │   │       │   │   └── er.proto
│   │   │       │   ├── empty-issue70/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── empty.pb.go
│   │   │       │   │   ├── empty.proto
│   │   │       │   │   └── empty_test.go
│   │   │       │   ├── enumcustomname/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── enumcustomname.pb.go
│   │   │       │   │   └── enumcustomname.proto
│   │   │       │   ├── enumprefix/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── enumprefix.pb.go
│   │   │       │   │   └── enumprefix.proto
│   │   │       │   ├── enumstringer/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── enumstringer.pb.go
│   │   │       │   │   ├── enumstringer.proto
│   │   │       │   │   ├── enumstringerpb_test.go
│   │   │       │   │   └── string.go
│   │   │       │   ├── example/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── example.pb.go
│   │   │       │   │   ├── example.proto
│   │   │       │   │   ├── example_test.go
│   │   │       │   │   └── examplepb_test.go
│   │   │       │   ├── extension_test.go
│   │   │       │   ├── filedotname/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── file.dot.pb.go
│   │   │       │   │   ├── file.dot.proto
│   │   │       │   │   └── file.dotpb_test.go
│   │   │       │   ├── fuzztests/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── fuzz.pb.go
│   │   │       │   │   ├── fuzz.proto
│   │   │       │   │   └── fuzz_test.go
│   │   │       │   ├── group/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── group.pb.go
│   │   │       │   │   ├── group.proto
│   │   │       │   │   └── grouppb_test.go
│   │   │       │   ├── importdedup/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── importdedup_test.go
│   │   │       │   │   ├── proto.pb.go
│   │   │       │   │   ├── proto.proto
│   │   │       │   │   └── subpkg/
│   │   │       │   │       ├── customtype.go
│   │   │       │   │       ├── subproto.pb.go
│   │   │       │   │       └── subproto.proto
│   │   │       │   ├── indeximport-issue72/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── index/
│   │   │       │   │   │   ├── index.pb.go
│   │   │       │   │   │   ├── index.proto
│   │   │       │   │   │   └── indexpb_test.go
│   │   │       │   │   ├── indeximport.pb.go
│   │   │       │   │   ├── indeximport.proto
│   │   │       │   │   └── indeximportpb_test.go
│   │   │       │   ├── issue34/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── issue34_test.go
│   │   │       │   │   ├── proto.pb.go
│   │   │       │   │   └── proto.proto
│   │   │       │   ├── issue42order/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── issue42.pb.go
│   │   │       │   │   ├── issue42.proto
│   │   │       │   │   └── order_test.go
│   │   │       │   ├── issue8/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── proto.pb.go
│   │   │       │   │   ├── proto.proto
│   │   │       │   │   └── protopb_test.go
│   │   │       │   ├── mapsproto2/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── mapsproto2.pb.go
│   │   │       │   │   │   │   ├── mapsproto2.proto
│   │   │       │   │   │   │   ├── mapsproto2_test.go
│   │   │       │   │   │   │   └── mapsproto2pb_test.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── mapsproto2.pb.go
│   │   │       │   │   │   │   ├── mapsproto2.proto
│   │   │       │   │   │   │   ├── mapsproto2_test.go
│   │   │       │   │   │   │   └── mapsproto2pb_test.go
│   │   │       │   │   │   ├── neither/
│   │   │       │   │   │   │   ├── mapsproto2.pb.go
│   │   │       │   │   │   │   ├── mapsproto2.proto
│   │   │       │   │   │   │   ├── mapsproto2_test.go
│   │   │       │   │   │   │   └── mapsproto2pb_test.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── mapsproto2.pb.go
│   │   │       │   │   │   │   ├── mapsproto2.proto
│   │   │       │   │   │   │   ├── mapsproto2_test.go
│   │   │       │   │   │   │   └── mapsproto2pb_test.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── mapsproto2.pb.go
│   │   │       │   │   │   │   ├── mapsproto2.proto
│   │   │       │   │   │   │   ├── mapsproto2_test.go
│   │   │       │   │   │   │   └── mapsproto2pb_test.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── mapsproto2.pb.go
│   │   │       │   │   │   │   ├── mapsproto2.proto
│   │   │       │   │   │   │   ├── mapsproto2_test.go
│   │   │       │   │   │   │   └── mapsproto2pb_test.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── mapsproto2.pb.go
│   │   │       │   │   │       ├── mapsproto2.proto
│   │   │       │   │   │       ├── mapsproto2_test.go
│   │   │       │   │   │       └── mapsproto2pb_test.go
│   │   │       │   │   ├── doc.go
│   │   │       │   │   ├── header.proto
│   │   │       │   │   ├── mapsproto2.proto
│   │   │       │   │   └── mapsproto2_test.go.in
│   │   │       │   ├── mixbench/
│   │   │       │   │   ├── marshal.txt
│   │   │       │   │   ├── marshaler.txt
│   │   │       │   │   ├── mixbench.go
│   │   │       │   │   ├── unmarshal.txt
│   │   │       │   │   ├── unmarshaler.txt
│   │   │       │   │   ├── unsafe_marshaler.txt
│   │   │       │   │   └── unsafe_unmarshaler.txt
│   │   │       │   ├── moredefaults/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── md.pb.go
│   │   │       │   │   ├── md.proto
│   │   │       │   │   ├── md_test.go
│   │   │       │   │   └── mdpb_test.go
│   │   │       │   ├── nopackage/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── nopackage.pb.go
│   │   │       │   │   ├── nopackage.proto
│   │   │       │   │   └── nopackage_test.go
│   │   │       │   ├── oneof/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── neither/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── one.pb.go
│   │   │       │   │   │       ├── one.proto
│   │   │       │   │   │       └── onepb_test.go
│   │   │       │   │   ├── doc.go
│   │   │       │   │   └── one.proto
│   │   │       │   ├── oneof3/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── neither/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── one.pb.go
│   │   │       │   │   │   │   ├── one.proto
│   │   │       │   │   │   │   └── onepb_test.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── one.pb.go
│   │   │       │   │   │       ├── one.proto
│   │   │       │   │   │       └── onepb_test.go
│   │   │       │   │   ├── doc.go
│   │   │       │   │   └── one.proto
│   │   │       │   ├── oneofembed/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── oneofembed.pb.go
│   │   │       │   │   ├── oneofembed.proto
│   │   │       │   │   └── oneofembedpb_test.go
│   │   │       │   ├── packed/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── doc.go
│   │   │       │   │   ├── packed.pb.go
│   │   │       │   │   ├── packed.proto
│   │   │       │   │   └── packed_test.go
│   │   │       │   ├── protosize/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── protosize.pb.go
│   │   │       │   │   ├── protosize.proto
│   │   │       │   │   ├── protosize_test.go
│   │   │       │   │   └── protosizepb_test.go
│   │   │       │   ├── required/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── requiredexample.pb.go
│   │   │       │   │   ├── requiredexample.proto
│   │   │       │   │   └── requiredexamplepb_test.go
│   │   │       │   ├── sizeunderscore/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── sizeunderscore.pb.go
│   │   │       │   │   ├── sizeunderscore.proto
│   │   │       │   │   └── sizeunderscorepb_test.go
│   │   │       │   ├── tags/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── doc.go
│   │   │       │   │   ├── tags.pb.go
│   │   │       │   │   ├── tags.proto
│   │   │       │   │   └── tags_test.go
│   │   │       │   ├── theproto3/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── proto3_test.go
│   │   │       │   │   │   │   ├── theproto3.pb.go
│   │   │       │   │   │   │   ├── theproto3.proto
│   │   │       │   │   │   │   └── theproto3pb_test.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── proto3_test.go
│   │   │       │   │   │   │   ├── theproto3.pb.go
│   │   │       │   │   │   │   ├── theproto3.proto
│   │   │       │   │   │   │   └── theproto3pb_test.go
│   │   │       │   │   │   ├── neither/
│   │   │       │   │   │   │   ├── proto3_test.go
│   │   │       │   │   │   │   ├── theproto3.pb.go
│   │   │       │   │   │   │   ├── theproto3.proto
│   │   │       │   │   │   │   └── theproto3pb_test.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── proto3_test.go
│   │   │       │   │   │   │   ├── theproto3.pb.go
│   │   │       │   │   │   │   ├── theproto3.proto
│   │   │       │   │   │   │   └── theproto3pb_test.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── proto3_test.go
│   │   │       │   │   │   │   ├── theproto3.pb.go
│   │   │       │   │   │   │   ├── theproto3.proto
│   │   │       │   │   │   │   └── theproto3pb_test.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── proto3_test.go
│   │   │       │   │   │   │   ├── theproto3.pb.go
│   │   │       │   │   │   │   ├── theproto3.proto
│   │   │       │   │   │   │   └── theproto3pb_test.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── proto3_test.go
│   │   │       │   │   │       ├── theproto3.pb.go
│   │   │       │   │   │       ├── theproto3.proto
│   │   │       │   │   │       └── theproto3pb_test.go
│   │   │       │   │   ├── doc.go
│   │   │       │   │   ├── footer.proto
│   │   │       │   │   ├── header.proto
│   │   │       │   │   ├── maps.proto
│   │   │       │   │   ├── proto3_test.go.in
│   │   │       │   │   └── theproto3.proto
│   │   │       │   ├── thetest.pb.go
│   │   │       │   ├── thetest.proto
│   │   │       │   ├── thetestpb_test.go
│   │   │       │   ├── types/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── combos/
│   │   │       │   │   │   ├── both/
│   │   │       │   │   │   │   ├── types.pb.go
│   │   │       │   │   │   │   ├── types.proto
│   │   │       │   │   │   │   └── typespb_test.go
│   │   │       │   │   │   ├── marshaler/
│   │   │       │   │   │   │   ├── types.pb.go
│   │   │       │   │   │   │   ├── types.proto
│   │   │       │   │   │   │   └── typespb_test.go
│   │   │       │   │   │   ├── neither/
│   │   │       │   │   │   │   ├── types.pb.go
│   │   │       │   │   │   │   ├── types.proto
│   │   │       │   │   │   │   └── typespb_test.go
│   │   │       │   │   │   ├── unmarshaler/
│   │   │       │   │   │   │   ├── types.pb.go
│   │   │       │   │   │   │   ├── types.proto
│   │   │       │   │   │   │   └── typespb_test.go
│   │   │       │   │   │   ├── unsafeboth/
│   │   │       │   │   │   │   ├── types.pb.go
│   │   │       │   │   │   │   ├── types.proto
│   │   │       │   │   │   │   └── typespb_test.go
│   │   │       │   │   │   ├── unsafemarshaler/
│   │   │       │   │   │   │   ├── types.pb.go
│   │   │       │   │   │   │   ├── types.proto
│   │   │       │   │   │   │   └── typespb_test.go
│   │   │       │   │   │   └── unsafeunmarshaler/
│   │   │       │   │   │       ├── types.pb.go
│   │   │       │   │   │       ├── types.proto
│   │   │       │   │   │       └── typespb_test.go
│   │   │       │   │   └── types.proto
│   │   │       │   ├── unmarshalmerge/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── unmarshalmerge.pb.go
│   │   │       │   │   ├── unmarshalmerge.proto
│   │   │       │   │   ├── unmarshalmerge_test.go
│   │   │       │   │   └── unmarshalmergepb_test.go
│   │   │       │   ├── unrecognized/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── oldnew_test.go
│   │   │       │   │   ├── unrecognized.pb.go
│   │   │       │   │   ├── unrecognized.proto
│   │   │       │   │   └── unrecognizedpb_test.go
│   │   │       │   ├── unrecognizedgroup/
│   │   │       │   │   ├── Makefile
│   │   │       │   │   ├── oldnew_test.go
│   │   │       │   │   ├── unrecognizedgroup.pb.go
│   │   │       │   │   ├── unrecognizedgroup.proto
│   │   │       │   │   └── unrecognizedgrouppb_test.go
│   │   │       │   ├── uuid.go
│   │   │       │   └── uuid_test.go
│   │   │       ├── types/
│   │   │       │   ├── Makefile
│   │   │       │   ├── any.go
│   │   │       │   ├── any.pb.go
│   │   │       │   ├── any_test.go
│   │   │       │   ├── doc.go
│   │   │       │   ├── duration.go
│   │   │       │   ├── duration.pb.go
│   │   │       │   ├── duration_gogo.go
│   │   │       │   ├── duration_test.go
│   │   │       │   ├── empty.pb.go
│   │   │       │   ├── struct.pb.go
│   │   │       │   ├── timestamp.go
│   │   │       │   ├── timestamp.pb.go
│   │   │       │   ├── timestamp_gogo.go
│   │   │       │   ├── timestamp_test.go
│   │   │       │   └── wrappers.pb.go
│   │   │       ├── vanity/
│   │   │       │   ├── command/
│   │   │       │   │   └── command.go
│   │   │       │   ├── enum.go
│   │   │       │   ├── field.go
│   │   │       │   ├── file.go
│   │   │       │   ├── foreach.go
│   │   │       │   ├── msg.go
│   │   │       │   └── test/
│   │   │       │       ├── Makefile
│   │   │       │       ├── doc.go
│   │   │       │       ├── fast/
│   │   │       │       │   ├── gogovanity.pb.go
│   │   │       │       │   ├── proto3.pb.go
│   │   │       │       │   └── vanity.pb.go
│   │   │       │       ├── faster/
│   │   │       │       │   ├── gogovanity.pb.go
│   │   │       │       │   ├── proto3.pb.go
│   │   │       │       │   └── vanity.pb.go
│   │   │       │       ├── gofast/
│   │   │       │       │   └── .gitignore
│   │   │       │       ├── gogovanity.proto
│   │   │       │       ├── proto3.proto
│   │   │       │       ├── slick/
│   │   │       │       │   ├── gogovanity.pb.go
│   │   │       │       │   ├── proto3.pb.go
│   │   │       │       │   └── vanity.pb.go
│   │   │       │       ├── vanity.proto
│   │   │       │       └── vanity_test.go
│   │   │       └── version/
│   │   │           └── version.go
│   │   ├── golang/
│   │   │   ├── glog/
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README
│   │   │   │   ├── glog.go
│   │   │   │   ├── glog_file.go
│   │   │   │   └── glog_test.go
│   │   │   ├── groupcache/
│   │   │   │   ├── .gitignore
│   │   │   │   ├── LICENSE
│   │   │   │   ├── README.md
│   │   │   │   ├── byteview.go
│   │   │   │   ├── byteview_test.go
│   │   │   │   ├── consistenthash/
│   │   │   │   │   ├── consistenthash.go
│   │   │   │   │   └── consistenthash_test.go
│   │   │   │   ├── groupcache.go
│   │   │   │   ├── groupcache_test.go
│   │   │   │   ├── groupcachepb/
│   │   │   │   │   ├── groupcache.pb.go
│   │   │   │   │   └── groupcache.proto
│   │   │   │   ├── http.go
│   │   │   │   ├── http_test.go
│   │   │   │   ├── lru/
│   │   │   │   │   ├── lru.go
│   │   │   │   │   └── lru_test.go
│   │   │   │   ├── peers.go
│   │   │   │   ├── singleflight/
│   │   │   │   │   ├── singleflight.go
│   │   │   │   │   └── singleflight_test.go
│   │   │   │   ├── sinks.go
│   │   │   │   └── testpb/
│   │   │   │       ├── test.pb.go
│   │   │   │       └── test.proto
│   │   │   └── protobuf/
│   │   │       ├── .gitignore
│   │   │       ├── AUTHORS
│   │   │       ├── CONTRIBUTORS
│   │   │       ├── LICENSE
│   │   │       ├── Make.protobuf
│   │   │       ├── Makefile
│   │   │       ├── README.md
│   │   │       ├── _conformance/
│   │   │       │   ├── Makefile
│   │   │       │   ├── conformance.go
│   │   │       │   └── conformance_proto/
│   │   │       │       ├── conformance.pb.go
│   │   │       │       └── conformance.proto
│   │   │       ├── jsonpb/
│   │   │       │   ├── jsonpb.go
│   │   │       │   ├── jsonpb_test.go
│   │   │       │   └── jsonpb_test_proto/
│   │   │       │       ├── Makefile
│  
Copy disabled (too large) Download .txt
Showing preview only (14,575K chars total). Download the full file to get everything.
SYMBOL INDEX (161456 symbols across 7280 files)

FILE: client/client.go
  function NewClient (line 26) | func NewClient(f *cmdutil.Factory) (*client.Client, *restclient.Config, ...
  function NewOpenShiftClient (line 40) | func NewOpenShiftClient(cfg *restclient.Config) (*oclient.Client, *restc...

FILE: configmapcontroller.go
  constant healthPort (line 25) | healthPort = 10254
  function main (line 36) | func main() {
  function registerHandlers (line 89) | func registerHandlers() {
  function handleSigterm (line 105) | func handleSigterm(c *controller.Controller) {

FILE: controller/controller.go
  constant updateOnChangeAnnotation (line 32) | updateOnChangeAnnotation = "configmap.fabric8.io/update-on-change"
  constant separator (line 33) | separator                = ","
  type Controller (line 36) | type Controller struct
    method Run (line 124) | func (c *Controller) Run() {
    method Stop (line 132) | func (c *Controller) Stop() {
  function NewController (line 46) | func NewController(
  function configMapListFunc (line 138) | func configMapListFunc(c *client.Client, ns string) func(api.ListOptions...
  function configMapWatchFunc (line 144) | func configMapWatchFunc(c *client.Client, ns string) func(options api.Li...
  function rollingUpgradeDeployments (line 150) | func rollingUpgradeDeployments(cm *api.ConfigMap, c *client.Client) error {
  function rollingUpgradeDeploymentsConfigs (line 187) | func rollingUpgradeDeploymentsConfigs(cm *api.ConfigMap, oc *oclient.Cli...
  function convertConfigMapToToken (line 226) | func convertConfigMapToToken(cm *api.ConfigMap) string {
  function updateContainers (line 242) | func updateContainers(containers []api.Container, annotationValue, confi...
  function convertToEnvVarName (line 278) | func convertToEnvVarName(text string) string {

FILE: util/types.go
  type MasterType (line 27) | type MasterType
  constant OpenShift (line 30) | OpenShift  MasterType = "OpenShift"
  constant Kubernetes (line 31) | Kubernetes MasterType = "Kubernetes"
  function TypeOfMaster (line 35) | func TypeOfMaster(c *client.Client) (MasterType, error) {

FILE: vendor/cloud.google.com/go/authexample_test.go
  function Example_applicationDefaultCredentials (line 23) | func Example_applicationDefaultCredentials() {
  function Example_serviceAccountFile (line 41) | func Example_serviceAccountFile() {

FILE: vendor/cloud.google.com/go/bigquery/bigquery.go
  constant prodAddr (line 29) | prodAddr = "https://www.googleapis.com/bigquery/v2/"
  type Source (line 32) | type Source interface
  type Destination (line 37) | type Destination interface
  type Option (line 42) | type Option interface
  type ReadSource (line 47) | type ReadSource interface
  type ReadOption (line 52) | type ReadOption interface
  constant Scope (line 56) | Scope = "https://www.googleapis.com/auth/bigquery"
  constant userAgent (line 57) | userAgent = "gcloud-golang-bigquery/20160429"
  type Client (line 60) | type Client struct
    method Copy (line 109) | func (c *Client) Copy(ctx context.Context, dst Destination, src Source...
    method Query (line 132) | func (c *Client) Query(q string) *Query {
    method executeQuery (line 153) | func (c *Client) executeQuery(ctx context.Context, q *Query, options ....
    method Dataset (line 164) | func (c *Client) Dataset(id string) *Dataset {
    method DatasetInProject (line 169) | func (c *Client) DatasetInProject(projectID, datasetID string) *Dataset {
  function NewClient (line 67) | func NewClient(ctx context.Context, projectID string, opts ...option.Cli...
  function initJobProto (line 94) | func initJobProto(projectID string, options []Option) (*bq.Job, []Option) {
  method Read (line 143) | func (q *Query) Read(ctx context.Context, options ...ReadOption) (*Itera...

FILE: vendor/cloud.google.com/go/bigquery/copy_op.go
  type copyOption (line 24) | type copyOption interface
  method cp (line 28) | func (c *Client) cp(ctx context.Context, dst *Table, src Tables, options...

FILE: vendor/cloud.google.com/go/bigquery/copy_test.go
  function defaultCopyJob (line 25) | func defaultCopyJob() *bq.Job {
  function TestCopy (line 46) | func TestCopy(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigquery/create_table_test.go
  type createTableRecorder (line 26) | type createTableRecorder struct
    method createTable (line 31) | func (rec *createTableRecorder) createTable(ctx context.Context, conf ...
  function TestCreateTableOptions (line 36) | func TestCreateTableOptions(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigquery/dataset.go
  type Dataset (line 23) | type Dataset struct
    method Create (line 31) | func (d *Dataset) Create(ctx context.Context) error {
    method Table (line 38) | func (d *Dataset) Table(tableID string) *Table {
    method Tables (line 43) | func (d *Dataset) Tables(ctx context.Context) *TableIterator {
  type TableIterator (line 56) | type TableIterator struct
    method Next (line 67) | func (it *TableIterator) Next() (*Table, error) {
    method PageInfo (line 77) | func (it *TableIterator) PageInfo() *iterator.PageInfo { return it.pag...
    method fetch (line 79) | func (it *TableIterator) fetch(pageSize int, pageToken string) (string...
  method Datasets (line 89) | func (c *Client) Datasets(ctx context.Context) *DatasetIterator {
  method DatasetsInProject (line 94) | func (c *Client) DatasetsInProject(ctx context.Context, projectID string...
  type DatasetIterator (line 108) | type DatasetIterator struct
    method PageInfo (line 125) | func (it *DatasetIterator) PageInfo() *iterator.PageInfo { return it.p...
    method Next (line 127) | func (it *DatasetIterator) Next() (*Dataset, error) {
    method fetch (line 136) | func (it *DatasetIterator) fetch(pageSize int, pageToken string) (stri...

FILE: vendor/cloud.google.com/go/bigquery/dataset_test.go
  type listTablesServiceStub (line 28) | type listTablesServiceStub struct
    method listTables (line 34) | func (s *listTablesServiceStub) listTables(ctx context.Context, projec...
  function TestListTables (line 64) | func TestListTables(t *testing.T) {
  function TestListTablesError (line 103) | func TestListTablesError(t *testing.T) {
  function TestTables (line 120) | func TestTables(t *testing.T) {
  type listDatasetsFake (line 141) | type listDatasetsFake struct
    method listDatasets (line 149) | func (df *listDatasetsFake) listDatasets(_ context.Context, projectID ...
  function TestDatasets (line 185) | func TestDatasets(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigquery/error.go
  type Error (line 24) | type Error struct
    method Error (line 29) | func (e Error) Error() string {
  function errorFromErrorProto (line 33) | func errorFromErrorProto(ep *bq.ErrorProto) *Error {
  type MultiError (line 45) | type MultiError
    method Error (line 47) | func (m MultiError) Error() string {
  type RowInsertionError (line 60) | type RowInsertionError struct
    method Error (line 66) | func (e *RowInsertionError) Error() string {
  type PutMultiError (line 73) | type PutMultiError
    method Error (line 75) | func (pme PutMultiError) Error() string {

FILE: vendor/cloud.google.com/go/bigquery/error_test.go
  function rowInsertionError (line 26) | func rowInsertionError(msg string) RowInsertionError {
  function TestPutMultiErrorString (line 30) | func TestPutMultiErrorString(t *testing.T) {
  function TestMultiErrorString (line 56) | func TestMultiErrorString(t *testing.T) {
  function TestErrorFromErrorProto (line 86) | func TestErrorFromErrorProto(t *testing.T) {
  function TestErrorString (line 103) | func TestErrorString(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigquery/extract_op.go
  type extractOption (line 24) | type extractOption interface
  function DisableHeader (line 29) | func DisableHeader() Option { return disableHeader{} }
  type disableHeader (line 31) | type disableHeader struct
    method implementsOption (line 33) | func (opt disableHeader) implementsOption() {}
    method customizeExtract (line 35) | func (opt disableHeader) customizeExtract(conf *bq.JobConfigurationExt...
  method extract (line 40) | func (c *Client) extract(ctx context.Context, dst *GCSReference, src *Ta...

FILE: vendor/cloud.google.com/go/bigquery/extract_test.go
  function defaultExtractJob (line 26) | func defaultExtractJob() *bq.Job {
  function TestExtract (line 41) | func TestExtract(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigquery/gcs.go
  type GCSReference (line 21) | type GCSReference struct
    method implementsSource (line 52) | func (gcs *GCSReference) implementsSource()      {}
    method implementsDestination (line 53) | func (gcs *GCSReference) implementsDestination() {}
    method customizeLoadSrc (line 92) | func (gcs *GCSReference) customizeLoadSrc(conf *bq.JobConfigurationLoa...
    method customizeExtractDst (line 107) | func (gcs *GCSReference) customizeExtractDst(conf *bq.JobConfiguration...
  method NewGCSReference (line 61) | func (c *Client) NewGCSReference(uri ...string) *GCSReference {
  type DataFormat (line 65) | type DataFormat
  constant CSV (line 68) | CSV             DataFormat = "CSV"
  constant Avro (line 69) | Avro            DataFormat = "AVRO"
  constant JSON (line 70) | JSON            DataFormat = "NEWLINE_DELIMITED_JSON"
  constant DatastoreBackup (line 71) | DatastoreBackup DataFormat = "DATASTORE_BACKUP"
  type Encoding (line 77) | type Encoding
  constant UTF_8 (line 80) | UTF_8      Encoding = "UTF-8"
  constant ISO_8859_1 (line 81) | ISO_8859_1 Encoding = "ISO-8859-1"
  type Compression (line 85) | type Compression
  constant None (line 88) | None Compression = "NONE"
  constant Gzip (line 89) | Gzip Compression = "GZIP"

FILE: vendor/cloud.google.com/go/bigquery/integration_test.go
  function TestIntegration (line 31) | func TestIntegration(t *testing.T) {
  function hasStatusCode (line 167) | func hasStatusCode(err error, code int) bool {

FILE: vendor/cloud.google.com/go/bigquery/iterator.go
  type pageFetcher (line 25) | type pageFetcher interface
  type Iterator (line 31) | type Iterator struct
    method fetchPage (line 66) | func (it *Iterator) fetchPage(ctx context.Context) bool {
    method getEnoughData (line 88) | func (it *Iterator) getEnoughData(ctx context.Context) bool {
    method Next (line 130) | func (it *Iterator) Next(ctx context.Context) bool {
    method Err (line 148) | func (it *Iterator) Err() error {
    method verifyState (line 153) | func (it *Iterator) verifyState() error {
    method Get (line 168) | func (it *Iterator) Get(dst interface{}) error {
    method Schema (line 180) | func (it *Iterator) Schema() (Schema, error) {
  function newIterator (line 55) | func newIterator(s service, pf pageFetcher) *Iterator {

FILE: vendor/cloud.google.com/go/bigquery/iterator_test.go
  type fetchResponse (line 26) | type fetchResponse struct
  type pageFetcherStub (line 32) | type pageFetcherStub struct
    method fetch (line 38) | func (pf *pageFetcherStub) fetch(ctx context.Context, s service, token...
  function TestIterator (line 46) | func TestIterator(t *testing.T) {
  function consumeIterator (line 365) | func consumeIterator(it *Iterator) ([]ValueList, Schema, error) {
  function TestGetBeforeNext (line 383) | func TestGetBeforeNext(t *testing.T) {
  type delayedPageFetcher (line 402) | type delayedPageFetcher struct
    method fetch (line 407) | func (pf *delayedPageFetcher) fetch(ctx context.Context, s service, to...
  function TestIterateIncompleteJob (line 415) | func TestIterateIncompleteJob(t *testing.T) {
  function TestGetDuringErrorState (line 455) | func TestGetDuringErrorState(t *testing.T) {
  function TestGetAfterFinished (line 472) | func TestGetAfterFinished(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigquery/job.go
  type Job (line 25) | type Job struct
    method ID (line 50) | func (j *Job) ID() string {
    method Status (line 109) | func (j *Job) Status(ctx context.Context) (*JobStatus, error) {
    method Cancel (line 116) | func (j *Job) Cancel(ctx context.Context) error {
    method implementsReadSource (line 120) | func (j *Job) implementsReadSource() {}
    method customizeReadQuery (line 122) | func (j *Job) customizeReadQuery(cursor *readQueryConf) error {
  method JobFromID (line 36) | func (c *Client) JobFromID(ctx context.Context, id string) (*Job, error) {
  type State (line 55) | type State
  constant Pending (line 58) | Pending State = iota
  constant Running (line 59) | Running
  constant Done (line 60) | Done
  type JobStatus (line 64) | type JobStatus struct
    method Done (line 99) | func (s *JobStatus) Done() bool {
    method Err (line 104) | func (s *JobStatus) Err() error {
  type jobOption (line 76) | type jobOption interface
  type jobID (line 80) | type jobID
    method implementsOption (line 88) | func (opt jobID) implementsOption() {}
    method customizeJob (line 90) | func (opt jobID) customizeJob(job *bq.Job, projectID string) {
  function JobID (line 84) | func JobID(ID string) Option {

FILE: vendor/cloud.google.com/go/bigquery/legacy.go
  method OpenTable (line 27) | func (c *Client) OpenTable(projectID, datasetID, tableID string) *Table {
  method Table (line 37) | func (c *Client) Table(projectID, datasetID, tableID string) *Table {
  method CreateTable (line 44) | func (c *Client) CreateTable(ctx context.Context, projectID, datasetID, ...
  method Read (line 55) | func (c *Client) Read(ctx context.Context, src ReadSource, options ...Re...
  method ListTables (line 75) | func (d *Dataset) ListTables(ctx context.Context) ([]*Table, error) {

FILE: vendor/cloud.google.com/go/bigquery/load_op.go
  type loadOption (line 24) | type loadOption interface
  function DestinationSchema (line 32) | func DestinationSchema(schema Schema) Option { return destSchema{Schema:...
  type destSchema (line 34) | type destSchema struct
    method implementsOption (line 38) | func (opt destSchema) implementsOption() {}
    method customizeLoad (line 40) | func (opt destSchema) customizeLoad(conf *bq.JobConfigurationLoad) {
  function MaxBadRecords (line 46) | func MaxBadRecords(n int64) Option { return maxBadRecords(n) }
  type maxBadRecords (line 48) | type maxBadRecords
    method implementsOption (line 50) | func (opt maxBadRecords) implementsOption() {}
    method customizeLoad (line 52) | func (opt maxBadRecords) customizeLoad(conf *bq.JobConfigurationLoad) {
  function AllowJaggedRows (line 57) | func AllowJaggedRows() Option { return allowJaggedRows{} }
  type allowJaggedRows (line 59) | type allowJaggedRows struct
    method implementsOption (line 61) | func (opt allowJaggedRows) implementsOption() {}
    method customizeLoad (line 63) | func (opt allowJaggedRows) customizeLoad(conf *bq.JobConfigurationLoad) {
  function AllowQuotedNewlines (line 68) | func AllowQuotedNewlines() Option { return allowQuotedNewlines{} }
  type allowQuotedNewlines (line 70) | type allowQuotedNewlines struct
    method implementsOption (line 72) | func (opt allowQuotedNewlines) implementsOption() {}
    method customizeLoad (line 74) | func (opt allowQuotedNewlines) customizeLoad(conf *bq.JobConfiguration...
  function IgnoreUnknownValues (line 83) | func IgnoreUnknownValues() Option { return ignoreUnknownValues{} }
  type ignoreUnknownValues (line 85) | type ignoreUnknownValues struct
    method implementsOption (line 87) | func (opt ignoreUnknownValues) implementsOption() {}
    method customizeLoad (line 89) | func (opt ignoreUnknownValues) customizeLoad(conf *bq.JobConfiguration...
  method load (line 93) | func (c *Client) load(ctx context.Context, dst *Table, src *GCSReference...

FILE: vendor/cloud.google.com/go/bigquery/load_test.go
  function defaultLoadJob (line 26) | func defaultLoadJob() *bq.Job {
  function stringFieldSchema (line 41) | func stringFieldSchema() *FieldSchema {
  function nestedFieldSchema (line 45) | func nestedFieldSchema() *FieldSchema {
  function bqStringFieldSchema (line 53) | func bqStringFieldSchema() *bq.TableFieldSchema {
  function bqNestedFieldSchema (line 60) | func bqNestedFieldSchema() *bq.TableFieldSchema {
  function TestLoad (line 68) | func TestLoad(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigquery/query.go
  type Query (line 20) | type Query struct
    method implementsSource (line 32) | func (q *Query) implementsSource() {}
    method implementsReadSource (line 34) | func (q *Query) implementsReadSource() {}
    method customizeQuerySrc (line 36) | func (q *Query) customizeQuerySrc(conf *bq.JobConfigurationQuery) {

FILE: vendor/cloud.google.com/go/bigquery/query_op.go
  type queryOption (line 24) | type queryOption interface
  function DisableQueryCache (line 33) | func DisableQueryCache() Option { return disableQueryCache{} }
  type disableQueryCache (line 35) | type disableQueryCache struct
    method implementsOption (line 37) | func (opt disableQueryCache) implementsOption() {}
    method customizeQuery (line 39) | func (opt disableQueryCache) customizeQuery(conf *bq.JobConfigurationQ...
  function DisableFlattenedResults (line 48) | func DisableFlattenedResults() Option { return disableFlattenedResults{} }
  type disableFlattenedResults (line 50) | type disableFlattenedResults struct
    method implementsOption (line 52) | func (opt disableFlattenedResults) implementsOption() {}
    method customizeQuery (line 54) | func (opt disableFlattenedResults) customizeQuery(conf *bq.JobConfigur...
  function AllowLargeResults (line 65) | func AllowLargeResults() Option { return allowLargeResults{} }
  type allowLargeResults (line 67) | type allowLargeResults struct
    method implementsOption (line 69) | func (opt allowLargeResults) implementsOption() {}
    method customizeQuery (line 71) | func (opt allowLargeResults) customizeQuery(conf *bq.JobConfigurationQ...
  function JobPriority (line 78) | func JobPriority(priority string) Option { return jobPriority(priority) }
  type jobPriority (line 80) | type jobPriority
    method implementsOption (line 82) | func (opt jobPriority) implementsOption() {}
    method customizeQuery (line 84) | func (opt jobPriority) customizeQuery(conf *bq.JobConfigurationQuery) {
  constant BatchPriority (line 89) | BatchPriority       = "BATCH"
  constant InteractivePriority (line 90) | InteractivePriority = "INTERACTIVE"
  function MaxBillingTier (line 96) | func MaxBillingTier(tier int) Option { return maxBillingTier(tier) }
  type maxBillingTier (line 98) | type maxBillingTier
    method implementsOption (line 100) | func (opt maxBillingTier) implementsOption() {}
    method customizeQuery (line 102) | func (opt maxBillingTier) customizeQuery(conf *bq.JobConfigurationQuer...
  function MaxBytesBilled (line 112) | func MaxBytesBilled(bytes int64) Option { return maxBytesBilled(bytes) }
  type maxBytesBilled (line 114) | type maxBytesBilled
    method implementsOption (line 116) | func (opt maxBytesBilled) implementsOption() {}
    method customizeQuery (line 118) | func (opt maxBytesBilled) customizeQuery(conf *bq.JobConfigurationQuer...
  method query (line 124) | func (c *Client) query(ctx context.Context, dst *Table, src *Query, opti...

FILE: vendor/cloud.google.com/go/bigquery/query_test.go
  function defaultQueryJob (line 26) | func defaultQueryJob() *bq.Job {
  function TestQuery (line 45) | func TestQuery(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigquery/read_op.go
  function RecordsPerRequest (line 20) | func RecordsPerRequest(n int64) ReadOption { return recordsPerRequest(n) }
  type recordsPerRequest (line 22) | type recordsPerRequest
    method customizeRead (line 24) | func (opt recordsPerRequest) customizeRead(conf *pagingConf) {
  function StartIndex (line 30) | func StartIndex(i uint64) ReadOption { return startIndex(i) }
  type startIndex (line 32) | type startIndex
    method customizeRead (line 34) | func (opt startIndex) customizeRead(conf *pagingConf) {
  method fetch (line 38) | func (conf *readTableConf) fetch(ctx context.Context, s service, token s...
  method Read (line 43) | func (t *Table) Read(_ context.Context, options ...ReadOption) (*Iterato...
  method fetch (line 54) | func (conf *readQueryConf) fetch(ctx context.Context, s service, token s...
  method Read (line 59) | func (j *Job) Read(_ context.Context, options ...ReadOption) (*Iterator,...

FILE: vendor/cloud.google.com/go/bigquery/read_test.go
  type readTabledataArgs (line 25) | type readTabledataArgs struct
  type readQueryArgs (line 30) | type readQueryArgs struct
  type readServiceStub (line 36) | type readServiceStub struct
    method readValues (line 48) | func (s *readServiceStub) readValues(tok string) *readDataResult {
    method readTabledata (line 57) | func (s *readServiceStub) readTabledata(ctx context.Context, conf *rea...
    method readQuery (line 62) | func (s *readServiceStub) readQuery(ctx context.Context, conf *readQue...
  function TestRead (line 67) | func TestRead(t *testing.T) {
  function doRead (line 112) | func doRead(t *testing.T, c *Client, src ReadSource) ([]ValueList, bool) {
  function TestNoMoreValues (line 132) | func TestNoMoreValues(t *testing.T) {
  type delayedReadStub (line 165) | type delayedReadStub struct
    method readQuery (line 171) | func (s *delayedReadStub) readQuery(ctx context.Context, conf *readQue...
  function TestIncompleteJob (line 180) | func TestIncompleteJob(t *testing.T) {
  type errorReadService (line 214) | type errorReadService struct
    method readTabledata (line 218) | func (s *errorReadService) readTabledata(ctx context.Context, conf *re...
  function TestReadError (line 222) | func TestReadError(t *testing.T) {
  function TestReadTabledataOptions (line 238) | func TestReadTabledataOptions(t *testing.T) {
  function TestReadQueryOptions (line 271) | func TestReadQueryOptions(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigquery/schema.go
  type Schema (line 25) | type Schema
    method asTableSchema (line 69) | func (s Schema) asTableSchema() *bq.TableSchema {
    method customizeCreateTable (line 78) | func (s Schema) customizeCreateTable(conf *createTableConf) {
  type FieldSchema (line 27) | type FieldSchema struct
    method asTableFieldSchema (line 49) | func (fs *FieldSchema) asTableFieldSchema() *bq.TableFieldSchema {
  function convertTableFieldSchema (line 82) | func convertTableFieldSchema(tfs *bq.TableFieldSchema) *FieldSchema {
  function convertTableSchema (line 97) | func convertTableSchema(ts *bq.TableSchema) Schema {
  type FieldType (line 105) | type FieldType
  constant StringFieldType (line 108) | StringFieldType    FieldType = "STRING"
  constant IntegerFieldType (line 109) | IntegerFieldType   FieldType = "INTEGER"
  constant FloatFieldType (line 110) | FloatFieldType     FieldType = "FLOAT"
  constant BooleanFieldType (line 111) | BooleanFieldType   FieldType = "BOOLEAN"
  constant TimestampFieldType (line 112) | TimestampFieldType FieldType = "TIMESTAMP"
  constant RecordFieldType (line 113) | RecordFieldType    FieldType = "RECORD"
  function InferSchema (line 127) | func InferSchema(st interface{}) (Schema, error) {
  function inferStruct (line 131) | func inferStruct(rt reflect.Type) (Schema, error) {
  function inferFieldSchema (line 142) | func inferFieldSchema(rt reflect.Type) (*FieldSchema, error) {
  function inferFields (line 187) | func inferFields(rt reflect.Type) (Schema, error) {
  function isByteSlice (line 214) | func isByteSlice(rt reflect.Type) bool {
  function isTimeTime (line 218) | func isTimeTime(rt reflect.Type) bool {
  function isStruct (line 222) | func isStruct(rt reflect.Type) bool {
  function isRepeated (line 226) | func isRepeated(rt reflect.Type) bool {

FILE: vendor/cloud.google.com/go/bigquery/schema_test.go
  method GoString (line 26) | func (fs *FieldSchema) GoString() string {
  function bqTableFieldSchema (line 41) | func bqTableFieldSchema(desc, name, typ, mode string) *bq.TableFieldSche...
  function fieldSchema (line 50) | func fieldSchema(desc, name, typ string, repeated, required bool) *Field...
  function TestSchemaConversion (line 60) | func TestSchemaConversion(t *testing.T) {
  type allStrings (line 187) | type allStrings struct
  type allSignedIntegers (line 192) | type allSignedIntegers struct
  type allUnsignedIntegers (line 200) | type allUnsignedIntegers struct
  type allFloat (line 209) | type allFloat struct
  type allBoolean (line 215) | type allBoolean struct
  type allTime (line 219) | type allTime struct
  function TestSimpleInference (line 223) | func TestSimpleInference(t *testing.T) {
  type containsNested (line 287) | type containsNested struct
  type containsDoubleNested (line 295) | type containsDoubleNested struct
  function TestNestedInference (line 304) | func TestNestedInference(t *testing.T) {
  type simpleRepeated (line 365) | type simpleRepeated struct
  type simpleNestedRepeated (line 371) | type simpleNestedRepeated struct
  function TestRepeatedInference (line 378) | func TestRepeatedInference(t *testing.T) {
  type Embedded (line 422) | type Embedded struct
  type nestedEmbedded (line 426) | type nestedEmbedded struct
  function TestSchemaErrors (line 430) | func TestSchemaErrors(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigquery/service.go
  type service (line 32) | type service interface
  type bigqueryService (line 62) | type bigqueryService struct
    method insertJob (line 91) | func (s *bigqueryService) insertJob(ctx context.Context, job *bq.Job, ...
    method readTabledata (line 124) | func (s *bigqueryService) readTabledata(ctx context.Context, conf *rea...
    method readQuery (line 186) | func (s *bigqueryService) readQuery(ctx context.Context, conf *readQue...
    method insertRows (line 227) | func (s *bigqueryService) insertRows(ctx context.Context, projectID, d...
    method getJobType (line 277) | func (s *bigqueryService) getJobType(ctx context.Context, projectID, j...
    method jobCancel (line 301) | func (s *bigqueryService) jobCancel(ctx context.Context, projectID, jo...
    method jobStatus (line 314) | func (s *bigqueryService) jobStatus(ctx context.Context, projectID, jo...
    method listTables (line 348) | func (s *bigqueryService) listTables(ctx context.Context, projectID, d...
    method createTable (line 378) | func (s *bigqueryService) createTable(ctx context.Context, conf *creat...
    method getTableMetadata (line 403) | func (s *bigqueryService) getTableMetadata(ctx context.Context, projec...
    method deleteTable (line 411) | func (s *bigqueryService) deleteTable(ctx context.Context, projectID, ...
    method convertListedTable (line 443) | func (s *bigqueryService) convertListedTable(t *bq.TableListTables) *T...
    method patchTable (line 459) | func (s *bigqueryService) patchTable(ctx context.Context, projectID, d...
    method insertDataset (line 482) | func (s *bigqueryService) insertDataset(ctx context.Context, datasetID...
    method listDatasets (line 490) | func (s *bigqueryService) listDatasets(ctx context.Context, projectID ...
    method convertListedDataset (line 512) | func (s *bigqueryService) convertListedDataset(d *bq.DatasetListDatase...
  function newBigqueryService (line 66) | func newBigqueryService(client *http.Client, endpoint string) (*bigquery...
  function getPages (line 78) | func getPages(token string, getPage func(token string) (nextToken string...
  type pagingConf (line 99) | type pagingConf struct
  type readTableConf (line 106) | type readTableConf struct
  type readDataResult (line 112) | type readDataResult struct
  type readQueryConf (line 119) | type readQueryConf struct
  constant getQueryResultsTimeout (line 184) | getQueryResultsTimeout = time.Minute
  type insertRowsConf (line 221) | type insertRowsConf struct
  type jobType (line 268) | type jobType
  constant copyJobType (line 271) | copyJobType jobType = iota
  constant extractJobType (line 272) | extractJobType
  constant loadJobType (line 273) | loadJobType
  constant queryJobType (line 274) | queryJobType
  function jobStatusFromProto (line 327) | func jobStatusFromProto(status *bq.JobStatus) (*JobStatus, error) {
  type createTableConf (line 366) | type createTableConf struct
  function bqTableToMetadata (line 415) | func bqTableToMetadata(t *bq.Table) *TableMetadata {
  type patchTableConf (line 453) | type patchTableConf struct

FILE: vendor/cloud.google.com/go/bigquery/table.go
  type Table (line 27) | type Table struct
    method implementsSource (line 137) | func (t *Table) implementsSource()      {}
    method implementsReadSource (line 138) | func (t *Table) implementsReadSource()  {}
    method implementsDestination (line 139) | func (t *Table) implementsDestination() {}
    method tableRefProto (line 142) | func (t *Table) tableRefProto() *bq.TableReference {
    method FullyQualifiedName (line 151) | func (t *Table) FullyQualifiedName() string {
    method implicitTable (line 156) | func (t *Table) implicitTable() bool {
    method customizeLoadDst (line 160) | func (t *Table) customizeLoadDst(conf *bq.JobConfigurationLoad) {
    method customizeExtractSrc (line 164) | func (t *Table) customizeExtractSrc(conf *bq.JobConfigurationExtract) {
    method customizeCopyDst (line 168) | func (t *Table) customizeCopyDst(conf *bq.JobConfigurationTableCopy) {
    method customizeQueryDst (line 178) | func (t *Table) customizeQueryDst(conf *bq.JobConfigurationQuery) {
    method customizeReadSrc (line 184) | func (t *Table) customizeReadSrc(cursor *readTableConf) {
    method Create (line 191) | func (t *Table) Create(ctx context.Context, options ...CreateTableOpti...
    method Metadata (line 204) | func (t *Table) Metadata(ctx context.Context) (*TableMetadata, error) {
    method Delete (line 209) | func (t *Table) Delete(ctx context.Context) error {
    method Patch (line 246) | func (t *Table) Patch() *TableMetadataPatch {
    method NewUploader (line 273) | func (t *Table) NewUploader(opts ...UploadOption) *Uploader {
  type TableMetadata (line 40) | type TableMetadata struct
  type Tables (line 66) | type Tables
    method implementsSource (line 140) | func (ts Tables) implementsSource()     {}
    method customizeCopySrc (line 172) | func (ts Tables) customizeCopySrc(conf *bq.JobConfigurationTableCopy) {
  type TableCreateDisposition (line 70) | type TableCreateDisposition
    method implementsOption (line 82) | func (opt TableCreateDisposition) implementsOption() {}
    method customizeLoad (line 84) | func (opt TableCreateDisposition) customizeLoad(conf *bq.JobConfigurat...
    method customizeCopy (line 88) | func (opt TableCreateDisposition) customizeCopy(conf *bq.JobConfigurat...
    method customizeQuery (line 92) | func (opt TableCreateDisposition) customizeQuery(conf *bq.JobConfigura...
  constant CreateIfNeeded (line 74) | CreateIfNeeded TableCreateDisposition = "CREATE_IF_NEEDED"
  constant CreateNever (line 77) | CreateNever TableCreateDisposition = "CREATE_NEVER"
  function CreateDisposition (line 80) | func CreateDisposition(disp TableCreateDisposition) Option { return disp }
  type TableWriteDisposition (line 98) | type TableWriteDisposition
    method implementsOption (line 115) | func (opt TableWriteDisposition) implementsOption() {}
    method customizeLoad (line 117) | func (opt TableWriteDisposition) customizeLoad(conf *bq.JobConfigurati...
    method customizeCopy (line 121) | func (opt TableWriteDisposition) customizeCopy(conf *bq.JobConfigurati...
    method customizeQuery (line 125) | func (opt TableWriteDisposition) customizeQuery(conf *bq.JobConfigurat...
  constant WriteAppend (line 103) | WriteAppend TableWriteDisposition = "WRITE_APPEND"
  constant WriteTruncate (line 107) | WriteTruncate TableWriteDisposition = "WRITE_TRUNCATE"
  constant WriteEmpty (line 110) | WriteEmpty TableWriteDisposition = "WRITE_EMPTY"
  function WriteDisposition (line 113) | func WriteDisposition(disp TableWriteDisposition) Option { return disp }
  type TableType (line 130) | type TableType
  constant RegularTable (line 133) | RegularTable TableType = "TABLE"
  constant ViewTable (line 134) | ViewTable    TableType = "VIEW"
  type CreateTableOption (line 214) | type CreateTableOption interface
  type tableExpiration (line 218) | type tableExpiration
    method customizeCreateTable (line 223) | func (opt tableExpiration) customizeCreateTable(conf *createTableConf) {
  function TableExpiration (line 221) | func TableExpiration(exp time.Time) CreateTableOption { return tableExpi...
  type viewQuery (line 227) | type viewQuery
    method customizeCreateTable (line 233) | func (opt viewQuery) customizeCreateTable(conf *createTableConf) {
  function ViewQuery (line 231) | func ViewQuery(query string) CreateTableOption { return viewQuery(query) }
  type TableMetadataPatch (line 238) | type TableMetadataPatch struct
    method Description (line 256) | func (p *TableMetadataPatch) Description(desc string) {
    method Name (line 261) | func (p *TableMetadataPatch) Name(name string) {
    method Apply (line 268) | func (p *TableMetadataPatch) Apply(ctx context.Context) (*TableMetadat...

FILE: vendor/cloud.google.com/go/bigquery/uploader.go
  type UploadOption (line 25) | type UploadOption interface
  type Uploader (line 31) | type Uploader struct
    method Put (line 78) | func (u *Uploader) Put(ctx context.Context, src interface{}) error {
    method putMulti (line 102) | func (u *Uploader) putMulti(ctx context.Context, src []ValueSaver) err...
  function SkipInvalidRows (line 38) | func SkipInvalidRows() UploadOption { return skipInvalidRows{} }
  type skipInvalidRows (line 40) | type skipInvalidRows struct
    method customizeInsertRows (line 42) | func (opt skipInvalidRows) customizeInsertRows(conf *insertRowsConf) {
  function UploadIgnoreUnknownValues (line 48) | func UploadIgnoreUnknownValues() UploadOption { return uploadIgnoreUnkno...
  type uploadIgnoreUnknownValues (line 50) | type uploadIgnoreUnknownValues struct
    method customizeInsertRows (line 52) | func (opt uploadIgnoreUnknownValues) customizeInsertRows(conf *insertR...
  function TableTemplateSuffix (line 67) | func TableTemplateSuffix(suffix string) UploadOption { return tableTempl...
  type tableTemplateSuffix (line 69) | type tableTemplateSuffix
    method customizeInsertRows (line 71) | func (opt tableTemplateSuffix) customizeInsertRows(conf *insertRowsCon...
  type insertionRow (line 115) | type insertionRow struct

FILE: vendor/cloud.google.com/go/bigquery/uploader_test.go
  type testSaver (line 24) | type testSaver struct
    method Save (line 29) | func (ts testSaver) Save() (map[string]Value, string, error) {
  function TestRejectsNonValueSavers (line 33) | func TestRejectsNonValueSavers(t *testing.T) {
  type insertRowsRecorder (line 60) | type insertRowsRecorder struct
    method insertRows (line 65) | func (irr *insertRowsRecorder) insertRows(ctx context.Context, project...
  function TestInsertsData (line 70) | func TestInsertsData(t *testing.T) {
  type uploadOptionRecorder (line 151) | type uploadOptionRecorder struct
    method insertRows (line 156) | func (u *uploadOptionRecorder) insertRows(ctx context.Context, project...
  function TestUploadOptionsPropagate (line 161) | func TestUploadOptionsPropagate(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigquery/utils_test.go
  function defaultTable (line 32) | func defaultTable(s service) *Table {
  type testService (line 41) | type testService struct
    method insertJob (line 47) | func (s *testService) insertJob(ctx context.Context, job *bq.Job, proj...
    method jobStatus (line 52) | func (s *testService) jobStatus(ctx context.Context, projectID, jobID ...

FILE: vendor/cloud.google.com/go/bigquery/value.go
  type Value (line 27) | type Value interface
  type ValueLoader (line 31) | type ValueLoader interface
  type ValueList (line 36) | type ValueList
    method Load (line 39) | func (vs *ValueList) Load(v []Value) error {
  type ValueSaver (line 45) | type ValueSaver interface
  type ValuesSaver (line 54) | type ValuesSaver struct
    method Save (line 65) | func (vls *ValuesSaver) Save() (map[string]Value, string, error) {
  function valuesToMap (line 70) | func valuesToMap(vs []Value, schema Schema) (map[string]Value, error) {
  function convertRows (line 97) | func convertRows(rows []*bq.TableRow, schema Schema) ([][]Value, error) {
  function convertRow (line 109) | func convertRow(r *bq.TableRow, schema Schema) ([]Value, error) {
  function convertValue (line 125) | func convertValue(val interface{}, typ FieldType, schema Schema) (Value,...
  function convertRepeatedRecord (line 140) | func convertRepeatedRecord(vals []interface{}, typ FieldType, schema Sch...
  function convertNestedRecord (line 154) | func convertNestedRecord(val map[string]interface{}, schema Schema) (Val...
  function convertBasicType (line 179) | func convertBasicType(val string, typ FieldType) (Value, error) {

FILE: vendor/cloud.google.com/go/bigquery/value_test.go
  function TestConvertBasicValues (line 26) | func TestConvertBasicValues(t *testing.T) {
  function TestConvertTime (line 51) | func TestConvertTime(t *testing.T) {
  function TestConvertNullValues (line 70) | func TestConvertNullValues(t *testing.T) {
  function TestBasicRepetition (line 89) | func TestBasicRepetition(t *testing.T) {
  function TestNestedRecordContainingRepetition (line 120) | func TestNestedRecordContainingRepetition(t *testing.T) {
  function TestRepeatedRecordContainingRepetition (line 157) | func TestRepeatedRecordContainingRepetition(t *testing.T) {
  function TestRepeatedRecordContainingRecord (line 231) | func TestRepeatedRecordContainingRecord(t *testing.T) {
  function TestValuesSaverConvertsToMap (line 327) | func TestValuesSaverConvertsToMap(t *testing.T) {
  function TestConvertRows (line 384) | func TestConvertRows(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigtable/admin.go
  constant adminAddr (line 33) | adminAddr = "bigtableadmin.googleapis.com:443"
  type AdminClient (line 36) | type AdminClient struct
    method Close (line 67) | func (ac *AdminClient) Close() error {
    method instancePrefix (line 71) | func (ac *AdminClient) instancePrefix() string {
    method Tables (line 76) | func (ac *AdminClient) Tables(ctx context.Context) ([]string, error) {
    method CreateTable (line 95) | func (ac *AdminClient) CreateTable(ctx context.Context, table string) ...
    method CreateColumnFamily (line 110) | func (ac *AdminClient) CreateColumnFamily(ctx context.Context, table, ...
    method DeleteTable (line 128) | func (ac *AdminClient) DeleteTable(ctx context.Context, table string) ...
    method DeleteColumnFamily (line 139) | func (ac *AdminClient) DeleteColumnFamily(ctx context.Context, table, ...
    method TableInfo (line 161) | func (ac *AdminClient) TableInfo(ctx context.Context, table string) (*...
    method SetGCPolicy (line 181) | func (ac *AdminClient) SetGCPolicy(ctx context.Context, table, family ...
  function NewAdminClient (line 47) | func NewAdminClient(ctx context.Context, project, instance string, opts ...
  type TableInfo (line 156) | type TableInfo struct
  constant instanceAdminAddr (line 197) | instanceAdminAddr = "bigtableadmin.googleapis.com:443"
  type InstanceAdminClient (line 201) | type InstanceAdminClient struct
    method Close (line 232) | func (iac *InstanceAdminClient) Close() error {
    method Instances (line 245) | func (cac *InstanceAdminClient) Instances(ctx context.Context) ([]*Ins...
  function NewInstanceAdminClient (line 212) | func NewInstanceAdminClient(ctx context.Context, project string, opts .....
  type InstanceInfo (line 237) | type InstanceInfo struct

FILE: vendor/cloud.google.com/go/bigtable/admin_test.go
  function TestAdminIntegration (line 29) | func TestAdminIntegration(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigtable/bigtable.go
  constant prodAddr (line 38) | prodAddr = "bigtable.googleapis.com:443"
  type Client (line 43) | type Client struct
    method Close (line 69) | func (c *Client) Close() error {
    method fullTableName (line 88) | func (c *Client) fullTableName(table string) string {
    method Open (line 104) | func (c *Client) Open(table string) *Table {
  function NewClient (line 50) | func NewClient(ctx context.Context, project, instance string, opts ...op...
  function init (line 82) | func init() {
  type Table (line 95) | type Table struct
    method ReadRows (line 120) | func (t *Table) ReadRows(ctx context.Context, arg RowSet, f func(Row) ...
    method ReadRow (line 186) | func (t *Table) ReadRow(ctx context.Context, row string, opts ...ReadO...
    method Apply (line 372) | func (t *Table) Apply(ctx context.Context, row string, m *Mutation, op...
    method ApplyBulk (line 538) | func (t *Table) ApplyBulk(ctx context.Context, rowKeys []string, muts ...
    method getApplyBulkRetries (line 592) | func (t *Table) getApplyBulkRetries(entries []*entryErr) []*entryErr {
    method doApplyBulk (line 605) | func (t *Table) doApplyBulk(ctx context.Context, entryErrs []*entryErr...
    method ApplyReadModifyWrite (line 664) | func (t *Table) ApplyReadModifyWrite(ctx context.Context, row string, ...
  function decodeFamilyProto (line 196) | func decodeFamilyProto(r Row, row string, f *btpb.Family) {
  type RowSet (line 212) | type RowSet interface
  type RowList (line 221) | type RowList
    method proto (line 223) | func (r RowList) proto() *btpb.RowSet {
    method retainRowsAfter (line 231) | func (r RowList) retainRowsAfter(lastRowKey string) RowSet {
  type RowRange (line 245) | type RowRange struct
    method Unbounded (line 259) | func (r RowRange) Unbounded() bool {
    method Contains (line 264) | func (r RowRange) Contains(row string) bool {
    method String (line 269) | func (r RowRange) String() string {
    method proto (line 277) | func (r RowRange) proto() *btpb.RowSet {
    method retainRowsAfter (line 286) | func (r RowRange) retainRowsAfter(lastRowKey string) RowSet {
  function NewRange (line 251) | func NewRange(begin, end string) RowRange {
  function SingleRow (line 296) | func SingleRow(row string) RowRange {
  function PrefixRange (line 304) | func PrefixRange(prefix string) RowRange {
  function InfiniteRange (line 313) | func InfiniteRange(start string) RowRange {
  function prefixSuccessor (line 323) | func prefixSuccessor(prefix string) string {
  type ReadOption (line 339) | type ReadOption interface
  function RowFilter (line 344) | func RowFilter(f Filter) ReadOption { return rowFilter{f} }
  type rowFilter (line 346) | type rowFilter struct
    method set (line 348) | func (rf rowFilter) set(req *btpb.ReadRowsRequest) { req.Filter = rf.f...
  function LimitRows (line 351) | func LimitRows(limit int64) ReadOption { return limitRows{limit} }
  type limitRows (line 353) | type limitRows struct
    method set (line 355) | func (lr limitRows) set(req *btpb.ReadRowsRequest) { req.RowsLimit = l...
  function mutationsAreRetryable (line 360) | func mutationsAreRetryable(muts []*btpb.Mutation) bool {
  type ApplyOption (line 429) | type ApplyOption interface
  type applyAfterFunc (line 433) | type applyAfterFunc
    method after (line 435) | func (a applyAfterFunc) after(res proto.Message) { a(res) }
  function GetCondMutationResult (line 439) | func GetCondMutationResult(matched *bool) ApplyOption {
  type Mutation (line 448) | type Mutation struct
    method Set (line 473) | func (m *Mutation) Set(family, column string, ts Timestamp, value []by...
    method DeleteCellsInColumn (line 488) | func (m *Mutation) DeleteCellsInColumn(family, column string) {
    method DeleteTimestampRange (line 498) | func (m *Mutation) DeleteTimestampRange(family, column string, start, ...
    method DeleteCellsInFamily (line 510) | func (m *Mutation) DeleteCellsInFamily(family string) {
    method DeleteRow (line 517) | func (m *Mutation) DeleteRow() {
  function NewMutation (line 457) | func NewMutation() *Mutation {
  function NewCondMutation (line 466) | func NewCondMutation(cond Filter, mtrue, mfalse *Mutation) *Mutation {
  type entryErr (line 523) | type entryErr struct
  type Timestamp (line 647) | type Timestamp
    method Time (line 660) | func (ts Timestamp) Time() time.Time { return time.Unix(0, int64(ts)*1...
  constant ServerTime (line 651) | ServerTime Timestamp = -1
  function Time (line 654) | func Time(t time.Time) Timestamp { return Timestamp(t.UnixNano() / 1e3) }
  function Now (line 657) | func Now() Timestamp { return Time(time.Now()) }
  type ReadModifyWrite (line 690) | type ReadModifyWrite struct
    method AppendValue (line 699) | func (m *ReadModifyWrite) AppendValue(family, column string, v []byte) {
    method Increment (line 711) | func (m *ReadModifyWrite) Increment(family, column string, delta int64) {
  function NewReadModifyWrite (line 695) | func NewReadModifyWrite() *ReadModifyWrite { return new(ReadModifyWrite) }

FILE: vendor/cloud.google.com/go/bigtable/bigtable_test.go
  function TestPrefix (line 36) | func TestPrefix(t *testing.T) {
  function TestClientIntegration (line 63) | func TestClientIntegration(t *testing.T) {
  function formatReadItem (line 571) | func formatReadItem(ri ReadItem) string {
  function fill (line 577) | func fill(b, sub []byte) {
  type byColumn (line 584) | type byColumn
    method Len (line 586) | func (b byColumn) Len() int           { return len(b) }
    method Swap (line 587) | func (b byColumn) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }
    method Less (line 588) | func (b byColumn) Less(i, j int) bool { return b[i].Column < b[j].Colu...
  function clearTimestamps (line 590) | func clearTimestamps(r Row) {

FILE: vendor/cloud.google.com/go/bigtable/bttest/example_test.go
  function ExampleNewServer (line 29) | func ExampleNewServer() {

FILE: vendor/cloud.google.com/go/bigtable/bttest/inmem.go
  type Server (line 56) | type Server struct
    method Close (line 103) | func (s *Server) Close() {
  type server (line 67) | type server struct
    method CreateTable (line 114) | func (s *server) CreateTable(ctx context.Context, req *btapb.CreateTab...
    method ListTables (line 128) | func (s *server) ListTables(ctx context.Context, req *btapb.ListTables...
    method GetTable (line 143) | func (s *server) GetTable(ctx context.Context, req *btapb.GetTableRequ...
    method DeleteTable (line 159) | func (s *server) DeleteTable(ctx context.Context, req *btapb.DeleteTab...
    method ModifyColumnFamilies (line 169) | func (s *server) ModifyColumnFamilies(ctx context.Context, req *btapb....
    method ReadRows (line 218) | func (s *server) ReadRows(req *btpb.ReadRowsRequest, stream btpb.Bigta...
    method MutateRow (line 428) | func (s *server) MutateRow(ctx context.Context, req *btpb.MutateRowReq...
    method MutateRows (line 447) | func (s *server) MutateRows(req *btpb.MutateRowsRequest, stream btpb.B...
    method CheckAndMutateRow (line 477) | func (s *server) CheckAndMutateRow(ctx context.Context, req *btpb.Chec...
    method ReadModifyWriteRow (line 619) | func (s *server) ReadModifyWriteRow(ctx context.Context, req *btpb.Rea...
    method needGC (line 706) | func (s *server) needGC() {
    method gcloop (line 715) | func (s *server) gcloop(done <-chan int) {
  function NewServer (line 80) | func NewServer(laddr string, opt ...grpc.ServerOption) (*Server, error) {
  function addRows (line 280) | func addRows(start, end string, tbl *table, rowSet map[string]*row) {
  function streamRow (line 298) | func streamRow(stream btpb.Bigtable_ReadRowsServer, r *row, f *btpb.RowF...
  function filterRow (line 334) | func filterRow(f *btpb.RowFilter, r *row) {
  function filterCells (line 382) | func filterCells(f *btpb.RowFilter, fam, col string, cs []cell) []cell {
  function includeCell (line 392) | func includeCell(f *btpb.RowFilter, fam, col string, cell cell) bool {
  function applyMutations (line 527) | func applyMutations(tbl *table, r *row, muts []*btpb.Mutation, fs map[st...
  function maxTimestamp (line 590) | func maxTimestamp(x, y int64) int64 {
  function newTimestamp (line 597) | func newTimestamp() int64 {
  function appendOrReplaceCell (line 603) | func appendOrReplaceCell(cs []cell, newCell cell) []cell {
  type table (line 743) | type table struct
    method validTimestamp (line 766) | func (t *table) validTimestamp(ts int64) bool {
    method columnFamilies (line 771) | func (t *table) columnFamilies() map[string]*columnFamily {
    method columnFamiliesSet (line 781) | func (t *table) columnFamiliesSet() map[string]bool {
    method mutableRow (line 789) | func (t *table) mutableRow(row string) *row {
    method gc (line 811) | func (t *table) gc() {
  function newTable (line 750) | func newTable(ctr *btapb.CreateTableRequest) *table {
  type byRowKey (line 834) | type byRowKey
    method Len (line 836) | func (b byRowKey) Len() int           { return len(b) }
    method Swap (line 837) | func (b byRowKey) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }
    method Less (line 838) | func (b byRowKey) Less(i, j int) bool { return b[i].key < b[j].key }
  type row (line 840) | type row struct
    method copy (line 857) | func (r *row) copy() *row {
    method gc (line 871) | func (r *row) gc(rules map[string]*btapb.GcRule) {
  function newRow (line 847) | func newRow(key string) *row {
  function applyGC (line 885) | func applyGC(cells []cell, rule *btapb.GcRule) []cell {
  type cell (line 919) | type cell struct
  type byDescTS (line 924) | type byDescTS
    method Len (line 926) | func (b byDescTS) Len() int           { return len(b) }
    method Swap (line 927) | func (b byDescTS) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }
    method Less (line 928) | func (b byDescTS) Less(i, j int) bool { return b[i].ts > b[j].ts }
  type columnFamily (line 930) | type columnFamily struct
    method proto (line 935) | func (c *columnFamily) proto() *btapb.ColumnFamily {
  function toColumnFamilies (line 941) | func toColumnFamilies(families map[string]*columnFamily) map[string]*bta...

FILE: vendor/cloud.google.com/go/bigtable/bttest/inmem_test.go
  function TestConcurrentMutationsReadModifyAndGC (line 30) | func TestConcurrentMutationsReadModifyAndGC(t *testing.T) {
  function TestCreateTableWithFamily (line 138) | func TestCreateTableWithFamily(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigtable/cmd/cbt/cbt.go
  function getClient (line 51) | func getClient() *bigtable.Client {
  function getAdminClient (line 62) | func getAdminClient() *bigtable.AdminClient {
  function getInstanceAdminClient (line 73) | func getInstanceAdminClient() *bigtable.InstanceAdminClient {
  function main (line 84) | func main() {
  function usage (line 128) | func usage(w io.Writer) {
  function init (line 137) | func init() {
  function doCount (line 267) | func doCount(ctx context.Context, args ...string) {
  function doCreateFamily (line 284) | func doCreateFamily(ctx context.Context, args ...string) {
  function doCreateTable (line 294) | func doCreateTable(ctx context.Context, args ...string) {
  function doDeleteFamily (line 304) | func doDeleteFamily(ctx context.Context, args ...string) {
  function doDeleteRow (line 314) | func doDeleteRow(ctx context.Context, args ...string) {
  function doDeleteTable (line 326) | func doDeleteTable(ctx context.Context, args ...string) {
  function init (line 343) | func init() {
  function doDoc (line 349) | func doDoc(ctx context.Context, args ...string)   { doDocFn(ctx, args...) }
  function doHelp (line 350) | func doHelp(ctx context.Context, args ...string)  { doHelpFn(ctx, args.....
  function doMDDoc (line 351) | func doMDDoc(ctx context.Context, args ...string) { doMDDocFn(ctx, args....
  function docFlags (line 353) | func docFlags() []*flag.Flag {
  function doDocReal (line 366) | func doDocReal(ctx context.Context, args ...string) {
  function indentLines (line 382) | func indentLines(s, ind string) string {
  function doHelpReal (line 443) | func doHelpReal(ctx context.Context, args ...string) {
  function doListInstances (line 457) | func doListInstances(ctx context.Context, args ...string) {
  function doLookup (line 474) | func doLookup(ctx context.Context, args ...string) {
  function printRow (line 487) | func printRow(r bigtable.Row) {
  type byColumn (line 507) | type byColumn
    method Len (line 509) | func (b byColumn) Len() int           { return len(b) }
    method Swap (line 510) | func (b byColumn) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }
    method Less (line 511) | func (b byColumn) Less(i, j int) bool { return b[i].Column < b[j].Colu...
  function doLS (line 513) | func doLS(ctx context.Context, args ...string) {
  function doMDDocReal (line 539) | func doMDDocReal(ctx context.Context, args ...string) {
  function doRead (line 582) | func doRead(ctx context.Context, args ...string) {
  function doSet (line 640) | func doSet(ctx context.Context, args ...string) {
  function doSetGCPolicy (line 669) | func doSetGCPolicy(ctx context.Context, args ...string) {
  function parseDuration (line 701) | func parseDuration(s string) (time.Duration, error) {

FILE: vendor/cloud.google.com/go/bigtable/cmd/cbt/cbt_test.go
  function TestParseDuration (line 22) | func TestParseDuration(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigtable/cmd/emulator/cbtemulator.go
  function main (line 33) | func main() {

FILE: vendor/cloud.google.com/go/bigtable/cmd/loadtest/loadtest.go
  function main (line 53) | func main() {
  type stats (line 168) | type stats struct
    method Record (line 174) | func (s *stats) Record(ok bool, d time.Duration) {

FILE: vendor/cloud.google.com/go/bigtable/cmd/scantest/scantest.go
  function main (line 50) | func main() {
  function throughputString (line 121) | func throughputString(agg *stat.Aggregate) string {
  type stats (line 137) | type stats struct
    method Record (line 143) | func (s *stats) Record(ok bool, d time.Duration) {

FILE: vendor/cloud.google.com/go/bigtable/doc.go
  constant Scope (line 102) | Scope = "https://www.googleapis.com/auth/bigtable.data"
  constant ReadonlyScope (line 104) | ReadonlyScope = "https://www.googleapis.com/auth/bigtable.readonly"
  constant AdminScope (line 107) | AdminScope = "https://www.googleapis.com/auth/bigtable.admin.table"
  constant InstanceAdminScope (line 110) | InstanceAdminScope = "https://www.googleapis.com/auth/bigtable.admin.clu...
  constant clientUserAgent (line 115) | clientUserAgent = "cbt-go/20160628"
  constant resourcePrefixHeader (line 119) | resourcePrefixHeader = "google-cloud-resource-prefix"

FILE: vendor/cloud.google.com/go/bigtable/filter.go
  type Filter (line 27) | type Filter interface
  function ChainFilters (line 33) | func ChainFilters(sub ...Filter) Filter { return chainFilter{sub} }
  type chainFilter (line 35) | type chainFilter struct
    method String (line 39) | func (cf chainFilter) String() string {
    method proto (line 47) | func (cf chainFilter) proto() *btpb.RowFilter {
  function InterleaveFilters (line 59) | func InterleaveFilters(sub ...Filter) Filter { return interleaveFilter{s...
  type interleaveFilter (line 61) | type interleaveFilter struct
    method String (line 65) | func (ilf interleaveFilter) String() string {
    method proto (line 73) | func (ilf interleaveFilter) proto() *btpb.RowFilter {
  function RowKeyFilter (line 86) | func RowKeyFilter(pattern string) Filter { return rowKeyFilter(pattern) }
  type rowKeyFilter (line 88) | type rowKeyFilter
    method String (line 90) | func (rkf rowKeyFilter) String() string { return fmt.Sprintf("row(%s)"...
    method proto (line 92) | func (rkf rowKeyFilter) proto() *btpb.RowFilter {
  function FamilyFilter (line 99) | func FamilyFilter(pattern string) Filter { return familyFilter(pattern) }
  type familyFilter (line 101) | type familyFilter
    method String (line 103) | func (ff familyFilter) String() string { return fmt.Sprintf("col(%s:)"...
    method proto (line 105) | func (ff familyFilter) proto() *btpb.RowFilter {
  function ColumnFilter (line 112) | func ColumnFilter(pattern string) Filter { return columnFilter(pattern) }
  type columnFilter (line 114) | type columnFilter
    method String (line 116) | func (cf columnFilter) String() string { return fmt.Sprintf("col(.*:%s...
    method proto (line 118) | func (cf columnFilter) proto() *btpb.RowFilter {
  function ValueFilter (line 125) | func ValueFilter(pattern string) Filter { return valueFilter(pattern) }
  type valueFilter (line 127) | type valueFilter
    method String (line 129) | func (vf valueFilter) String() string { return fmt.Sprintf("value_matc...
    method proto (line 131) | func (vf valueFilter) proto() *btpb.RowFilter {
  function LatestNFilter (line 136) | func LatestNFilter(n int) Filter { return latestNFilter(n) }
  type latestNFilter (line 138) | type latestNFilter
    method String (line 140) | func (lnf latestNFilter) String() string { return fmt.Sprintf("col(*,%...
    method proto (line 142) | func (lnf latestNFilter) proto() *btpb.RowFilter {
  function StripValueFilter (line 147) | func StripValueFilter() Filter { return stripValueFilter{} }
  type stripValueFilter (line 149) | type stripValueFilter struct
    method String (line 151) | func (stripValueFilter) String() string { return "strip_value()" }
    method proto (line 152) | func (stripValueFilter) proto() *btpb.RowFilter {

FILE: vendor/cloud.google.com/go/bigtable/gc.go
  type GCPolicy (line 29) | type GCPolicy interface
  function IntersectionPolicy (line 35) | func IntersectionPolicy(sub ...GCPolicy) GCPolicy { return intersectionP...
  type intersectionPolicy (line 37) | type intersectionPolicy struct
    method String (line 41) | func (ip intersectionPolicy) String() string {
    method proto (line 49) | func (ip intersectionPolicy) proto() *bttdpb.GcRule {
  function UnionPolicy (line 60) | func UnionPolicy(sub ...GCPolicy) GCPolicy { return unionPolicy{sub} }
  type unionPolicy (line 62) | type unionPolicy struct
    method String (line 66) | func (up unionPolicy) String() string {
    method proto (line 74) | func (up unionPolicy) proto() *bttdpb.GcRule {
  function MaxVersionsPolicy (line 86) | func MaxVersionsPolicy(n int) GCPolicy { return maxVersionsPolicy(n) }
  type maxVersionsPolicy (line 88) | type maxVersionsPolicy
    method String (line 90) | func (mvp maxVersionsPolicy) String() string { return fmt.Sprintf("ver...
    method proto (line 92) | func (mvp maxVersionsPolicy) proto() *bttdpb.GcRule {
  function MaxAgePolicy (line 98) | func MaxAgePolicy(d time.Duration) GCPolicy { return maxAgePolicy(d) }
  type maxAgePolicy (line 100) | type maxAgePolicy
    method String (line 111) | func (ma maxAgePolicy) String() string {
    method proto (line 121) | func (ma maxAgePolicy) proto() *bttdpb.GcRule {

FILE: vendor/cloud.google.com/go/bigtable/internal/cbtrc/cbtrc.go
  type Config (line 32) | type Config struct
    method RegisterFlags (line 39) | func (c *Config) RegisterFlags() {
    method CheckFlags (line 46) | func (c *Config) CheckFlags() error {
  function Filename (line 61) | func Filename() string {
  function Load (line 68) | func Load() (*Config, error) {

FILE: vendor/cloud.google.com/go/bigtable/internal/gax/call_option.go
  type CallOption (line 26) | type CallOption interface
  type callOptions (line 30) | type callOptions
    method Resolve (line 32) | func (opts callOptions) Resolve(s *CallSettings) *CallSettings {
  type CallSettings (line 40) | type CallSettings struct
    method Resolve (line 63) | func (w CallSettings) Resolve(s *CallSettings) {
  type RetrySettings (line 46) | type RetrySettings struct
  type BackoffSettings (line 52) | type BackoffSettings struct
  type MultipliableDuration (line 57) | type MultipliableDuration struct
  type withRetryCodes (line 73) | type withRetryCodes
    method Resolve (line 75) | func (w withRetryCodes) Resolve(s *CallSettings) {
  function WithRetryCodes (line 84) | func WithRetryCodes(retryCodes []codes.Code) CallOption {
  type withDelayTimeoutSettings (line 88) | type withDelayTimeoutSettings
    method Resolve (line 90) | func (w withDelayTimeoutSettings) Resolve(s *CallSettings) {
  function WithDelayTimeoutSettings (line 104) | func WithDelayTimeoutSettings(initial time.Duration, max time.Duration, ...

FILE: vendor/cloud.google.com/go/bigtable/internal/gax/invoke.go
  type APICall (line 34) | type APICall
  function scaleDuration (line 37) | func scaleDuration(a time.Duration, mult float64) time.Duration {
  function invokeWithRetry (line 44) | func invokeWithRetry(ctx context.Context, stub APICall, callSettings Cal...
  function Invoke (line 77) | func Invoke(ctx context.Context, stub APICall, opts ...CallOption) error {

FILE: vendor/cloud.google.com/go/bigtable/internal/gax/invoke_test.go
  function TestRandomizedDelays (line 27) | func TestRandomizedDelays(t *testing.T) {

FILE: vendor/cloud.google.com/go/bigtable/internal/option/option.go
  function DefaultClientOptions (line 30) | func DefaultClientOptions(endpoint, scope, userAgent string) ([]option.C...

FILE: vendor/cloud.google.com/go/bigtable/internal/stat/stats.go
  type byDuration (line 29) | type byDuration
    method Len (line 31) | func (data byDuration) Len() int           { return len(data) }
    method Swap (line 32) | func (data byDuration) Swap(i, j int)      { data[i], data[j] = data[j...
    method Less (line 33) | func (data byDuration) Less(i, j int) bool { return data[i] < data[j] }
  function quantile (line 37) | func quantile(data []time.Duration, k, q int) (quantile time.Duration, o...
  type Aggregate (line 73) | type Aggregate struct
    method String (line 112) | func (agg *Aggregate) String() string {
  function NewAggregate (line 81) | func NewAggregate(name string, latencies []time.Duration, errorCount int...
  function WriteCSV (line 126) | func WriteCSV(aggs []*Aggregate, iow io.Writer) error {

FILE: vendor/cloud.google.com/go/bigtable/reader.go
  type Row (line 29) | type Row
    method Key (line 32) | func (r Row) Key() string {
  type ReadItem (line 42) | type ReadItem struct
  type rrState (line 49) | type rrState
  constant newRow (line 52) | newRow rrState = iota
  constant rowInProgress (line 53) | rowInProgress
  constant cellInProgress (line 54) | cellInProgress
  type chunkReader (line 59) | type chunkReader struct
    method Process (line 77) | func (cr *chunkReader) Process(cc *btpb.ReadRowsResponse_CellChunk) (R...
    method Close (line 128) | func (cr *chunkReader) Close() error {
    method handleCellValue (line 136) | func (cr *chunkReader) handleCellValue(cc *btpb.ReadRowsResponse_CellC...
    method finishCell (line 163) | func (cr *chunkReader) finishCell() {
    method commitRow (line 174) | func (cr *chunkReader) commitRow() Row {
    method resetToNewRow (line 181) | func (cr *chunkReader) resetToNewRow() {
    method validateNewRow (line 191) | func (cr *chunkReader) validateNewRow(cc *btpb.ReadRowsResponse_CellCh...
    method validateRowInProgress (line 204) | func (cr *chunkReader) validateRowInProgress(cc *btpb.ReadRowsResponse...
    method validateCellInProgress (line 217) | func (cr *chunkReader) validateCellInProgress(cc *btpb.ReadRowsRespons...
    method isAnyKeyPresent (line 230) | func (cr *chunkReader) isAnyKeyPresent(cc *btpb.ReadRowsResponse_CellC...
    method validateRowStatus (line 238) | func (cr *chunkReader) validateRowStatus(cc *btpb.ReadRowsResponse_Cel...
  function newChunkReader (line 71) | func newChunkReader() *chunkReader {

FILE: vendor/cloud.google.com/go/bigtable/reader_test.go
  constant nilStr (line 34) | nilStr = "<>"
  function TestSingleCell (line 36) | func TestSingleCell(t *testing.T) {
  function TestMultipleCells (line 59) | func TestMultipleCells(t *testing.T) {
  function TestSplitCells (line 94) | func TestSplitCells(t *testing.T) {
  function TestMultipleRows (line 119) | func TestMultipleRows(t *testing.T) {
  function TestBlankQualifier (line 145) | func TestBlankQualifier(t *testing.T) {
  function TestReset (line 171) | func TestReset(t *testing.T) {
  function TestNewFamEmptyQualifier (line 188) | func TestNewFamEmptyQualifier(t *testing.T) {
  type AcceptanceTest (line 201) | type AcceptanceTest struct
  type TestCase (line 205) | type TestCase struct
  type TestResult (line 211) | type TestResult struct
  function TestAcceptance (line 220) | func TestAcceptance(t *testing.T) {
  function runTestCase (line 237) | func runTestCase(t *testing.T, test TestCase) {
  function toSet (line 287) | func toSet(res []TestResult) map[TestResult]bool {
  function ri (line 296) | func ri(rk string, fm string, qual string, ts int64, val string) ReadItem {
  function cc (line 301) | func cc(rk string, fm string, qual string, ts int64, val string, size in...
  function ccData (line 335) | func ccData(val string, size int32, commit bool) *btspb.ReadRowsResponse...
  function ccReset (line 340) | func ccReset() *btspb.ReadRowsResponse_CellChunk {

FILE: vendor/cloud.google.com/go/bigtable/retry_test.go
  function setupFakeServer (line 34) | func setupFakeServer(opt ...grpc.ServerOption) (tbl *Table, cleanup func...
  function TestRetryApply (line 69) | func TestRetryApply(t *testing.T) {
  function TestRetryApplyBulk (line 134) | func TestRetryApplyBulk(t *testing.T) {
  function writeMutateRowsResponse (line 260) | func writeMutateRowsResponse(ss grpc.ServerStream, codes ...codes.Code) ...
  function TestRetainRowsAfter (line 271) | func TestRetainRowsAfter(t *testing.T) {
  function TestRetryReadRows (line 289) | func TestRetryReadRows(t *testing.T) {
  function writeReadRowsResponse (line 348) | func writeReadRowsResponse(ss grpc.ServerStream, rowKeys ...string) error {

FILE: vendor/cloud.google.com/go/compute/metadata/metadata.go
  constant metadataIP (line 43) | metadataIP = "169.254.169.254"
  constant metadataHostEnv (line 50) | metadataHostEnv = "GCE_METADATA_HOST"
  type cachedValue (line 53) | type cachedValue struct
    method get (line 159) | func (c *cachedValue) get() (v string, err error) {
  type NotDefinedError (line 96) | type NotDefinedError
    method Error (line 98) | func (suffix NotDefinedError) Error() string {
  function Get (line 110) | func Get(suffix string) (string, error) {
  function getETag (line 117) | func getETag(client *http.Client, suffix string) (value, etag string, er...
  function getTrimmed (line 153) | func getTrimmed(suffix string) (s string, err error) {
  function OnGCE (line 182) | func OnGCE() bool {
  function initOnGCE (line 187) | func initOnGCE() {
  function testOnGCE (line 191) | func testOnGCE() bool {
  function systemInfoSuggestsGCE (line 260) | func systemInfoSuggestsGCE() bool {
  function Subscribe (line 279) | func Subscribe(suffix string, fn func(v string, ok bool) error) error {
  function ProjectID (line 316) | func ProjectID() (string, error) { return projID.get() }
  function NumericProjectID (line 319) | func NumericProjectID() (string, error) { return projNum.get() }
  function InternalIP (line 322) | func InternalIP() (string, error) {
  function ExternalIP (line 327) | func ExternalIP() (string, error) {
  function Hostname (line 333) | func Hostname() (string, error) {
  function InstanceTags (line 339) | func InstanceTags() ([]string, error) {
  function InstanceID (line 352) | func InstanceID() (string, error) {
  function InstanceName (line 357) | func InstanceName() (string, error) {
  function Zone (line 366) | func Zone() (string, error) {
  function InstanceAttributes (line 378) | func InstanceAttributes() ([]string, error) { return lines("instance/att...
  function ProjectAttributes (line 383) | func ProjectAttributes() ([]string, error) { return lines("project/attri...
  function lines (line 385) | func lines(suffix string) ([]string, error) {
  function InstanceAttributeValue (line 405) | func InstanceAttributeValue(attr string) (string, error) {
  function ProjectAttributeValue (line 417) | func ProjectAttributeValue(attr string) (string, error) {
  function Scopes (line 424) | func Scopes(serviceAccount string) ([]string, error) {
  function strsContains (line 431) | func strsContains(ss []string, s string) bool {

FILE: vendor/cloud.google.com/go/compute/metadata/metadata_test.go
  function TestOnGCE_Stress (line 23) | func TestOnGCE_Stress(t *testing.T) {
  function TestOnGCE_Force (line 40) | func TestOnGCE_Force(t *testing.T) {

FILE: vendor/cloud.google.com/go/container/container.go
  type Type (line 32) | type Type
  constant TypeCreate (line 35) | TypeCreate = Type("createCluster")
  constant TypeDelete (line 36) | TypeDelete = Type("deleteCluster")
  type Status (line 39) | type Status
  constant StatusDone (line 42) | StatusDone         = Status("done")
  constant StatusPending (line 43) | StatusPending      = Status("pending")
  constant StatusRunning (line 44) | StatusRunning      = Status("running")
  constant StatusError (line 45) | StatusError        = Status("error")
  constant StatusProvisioning (line 46) | StatusProvisioning = Status("provisioning")
  constant StatusStopping (line 47) | StatusStopping     = Status("stopping")
  constant prodAddr (line 50) | prodAddr = "https://container.googleapis.com/"
  constant userAgent (line 51) | userAgent = "gcloud-golang-container/20151008"
  type Client (line 55) | type Client struct
    method Clusters (line 213) | func (c *Client) Clusters(ctx context.Context, zone string) ([]*Resour...
    method Cluster (line 225) | func (c *Client) Cluster(ctx context.Context, zone, name string) (*Res...
    method CreateCluster (line 235) | func (c *Client) CreateCluster(ctx context.Context, zone string, resou...
    method DeleteCluster (line 240) | func (c *Client) DeleteCluster(ctx context.Context, zone, name string)...
    method Operations (line 248) | func (c *Client) Operations(ctx context.Context, zone string) ([]*Op, ...
    method Operation (line 264) | func (c *Client) Operation(ctx context.Context, zone, name string) (*O...
  function NewClient (line 61) | func NewClient(ctx context.Context, projectID string, opts ...option.Cli...
  type Resource (line 88) | type Resource struct
  function resourceFromRaw (line 142) | func resourceFromRaw(c *raw.Cluster) *Resource {
  function resourcesFromRaw (line 164) | func resourcesFromRaw(c []*raw.Cluster) []*Resource {
  type Op (line 173) | type Op struct
  function opFromRaw (line 191) | func opFromRaw(o *raw.Operation) *Op {
  function opsFromRaw (line 203) | func opsFromRaw(o []*raw.Operation) []*Op {

FILE: vendor/cloud.google.com/go/datastore/datastore.go
  constant prodAddr (line 34) | prodAddr  = "datastore.googleapis.com:443"
  constant userAgent (line 35) | userAgent = "gcloud-golang-datastore/20160401"
  constant ScopeDatastore (line 39) | ScopeDatastore = "https://www.googleapis.com/auth/datastore"
  type protoClient (line 43) | type protoClient interface
  type datastoreClient (line 49) | type datastoreClient struct
    method Lookup (line 61) | func (dc *datastoreClient) Lookup(ctx context.Context, in *pb.LookupRe...
    method RunQuery (line 65) | func (dc *datastoreClient) RunQuery(ctx context.Context, in *pb.RunQue...
    method BeginTransaction (line 69) | func (dc *datastoreClient) BeginTransaction(ctx context.Context, in *p...
    method Commit (line 73) | func (dc *datastoreClient) Commit(ctx context.Context, in *pb.CommitRe...
    method Rollback (line 77) | func (dc *datastoreClient) Rollback(ctx context.Context, in *pb.Rollba...
    method AllocateIds (line 81) | func (dc *datastoreClient) AllocateIds(ctx context.Context, in *pb.All...
  function newDatastoreClient (line 54) | func newDatastoreClient(conn *grpc.ClientConn, projectID string) pb.Data...
  type Client (line 86) | type Client struct
    method Close (line 342) | func (c *Client) Close() {
    method Get (line 358) | func (c *Client) Get(ctx context.Context, key *Key, dst interface{}) e...
    method GetMulti (line 379) | func (c *Client) GetMulti(ctx context.Context, keys []*Key, dst interf...
    method get (line 383) | func (c *Client) get(ctx context.Context, keys []*Key, dst interface{}...
    method Put (line 466) | func (c *Client) Put(ctx context.Context, key *Key, src interface{}) (...
    method PutMulti (line 480) | func (c *Client) PutMulti(ctx context.Context, keys []*Key, src interf...
    method Delete (line 559) | func (c *Client) Delete(ctx context.Context, key *Key) error {
    method DeleteMulti (line 568) | func (c *Client) DeleteMulti(ctx context.Context, keys []*Key) error {
  function NewClient (line 97) | func NewClient(ctx context.Context, projectID string, opts ...option.Cli...
  type multiArgType (line 151) | type multiArgType
  constant multiArgTypeInvalid (line 154) | multiArgTypeInvalid multiArgType = iota
  constant multiArgTypePropertyLoadSaver (line 155) | multiArgTypePropertyLoadSaver
  constant multiArgTypeStruct (line 156) | multiArgTypeStruct
  constant multiArgTypeStructPtr (line 157) | multiArgTypeStructPtr
  constant multiArgTypeInterface (line 158) | multiArgTypeInterface
  type nsKey (line 163) | type nsKey struct
  function WithNamespace (line 167) | func WithNamespace(parent context.Context, namespace string) context.Con...
  function ctxNamespace (line 173) | func ctxNamespace(ctx context.Context) string {
  type ErrFieldMismatch (line 183) | type ErrFieldMismatch struct
    method Error (line 189) | func (e *ErrFieldMismatch) Error() string {
  type GeoPoint (line 195) | type GeoPoint struct
    method Valid (line 200) | func (g GeoPoint) Valid() bool {
  function keyToProto (line 204) | func keyToProto(k *Key) *pb.Key {
  function protoToKey (line 236) | func protoToKey(p *pb.Key) (*Key, error) {
  function multiKeyToProto (line 258) | func multiKeyToProto(keys []*Key) []*pb.Key {
  function multiProtoToKey (line 267) | func multiProtoToKey(keys []*pb.Key) ([]*Key, error) {
  function multiValid (line 285) | func multiValid(key []*Key) error {
  function checkMultiArg (line 316) | func checkMultiArg(v reflect.Value) (m multiArgType, elemType reflect.Ty...
  function putMutations (line 513) | func putMutations(keys []*Key, src interface{}) ([]*pb.Mutation, error) {
  function deleteMutations (line 583) | func deleteMutations(keys []*Key) ([]*pb.Mutation, error) {

FILE: vendor/cloud.google.com/go/datastore/datastore_test.go
  type myBlob (line 34) | type myBlob
  type myByte (line 35) | type myByte
  type myString (line 36) | type myString
  function makeMyByteSlice (line 39) | func makeMyByteSlice(n int) []myByte {
  function makeInt8Slice (line 47) | func makeInt8Slice(n int) []int8 {
  function makeUint8Slice (line 55) | func makeUint8Slice(n int) []uint8 {
  function newKey (line 63) | func newKey(stringID string, parent *Key) *Key {
  type B0 (line 83) | type B0 struct
  type B1 (line 87) | type B1 struct
  type B2 (line 91) | type B2 struct
  type B3 (line 95) | type B3 struct
  type B4 (line 99) | type B4 struct
  type C0 (line 103) | type C0 struct
  type C1 (line 108) | type C1 struct
  type C2 (line 113) | type C2 struct
  type C3 (line 118) | type C3 struct
  type c4 (line 122) | type c4 struct
  type E (line 126) | type E struct
  type G0 (line 128) | type G0 struct
  type G1 (line 132) | type G1 struct
  type K0 (line 136) | type K0 struct
  type K1 (line 140) | type K1 struct
  type N0 (line 144) | type N0 struct
  type N1 (line 151) | type N1 struct
  type N2 (line 158) | type N2 struct
  type N3 (line 165) | type N3 struct
  type N4 (line 169) | type N4 struct
  type N5 (line 173) | type N5 struct
  type O0 (line 177) | type O0 struct
  type O1 (line 181) | type O1 struct
  type U0 (line 185) | type U0 struct
  type U1 (line 189) | type U1 struct
  type T (line 193) | type T struct
  type X0 (line 197) | type X0 struct
  type X1 (line 203) | type X1 struct
  type X2 (line 209) | type X2 struct
  type X3 (line 214) | type X3 struct
  type Y0 (line 219) | type Y0 struct
  type Y1 (line 225) | type Y1 struct
  type Y2 (line 230) | type Y2 struct
  type Tagged (line 235) | type Tagged struct
  type InvalidTagged1 (line 248) | type InvalidTagged1 struct
  type InvalidTagged2 (line 252) | type InvalidTagged2 struct
  type Inner1 (line 257) | type Inner1 struct
  type Inner2 (line 262) | type Inner2 struct
  type Inner3 (line 266) | type Inner3 struct
  type Outer (line 270) | type Outer struct
  type OuterEquivalent (line 277) | type OuterEquivalent struct
  type Dotted (line 285) | type Dotted struct
  type DottedA (line 289) | type DottedA struct
  type DottedB (line 293) | type DottedB struct
  type SliceOfSlices (line 297) | type SliceOfSlices struct
  type Recursive (line 305) | type Recursive struct
  type MutuallyRecursive0 (line 310) | type MutuallyRecursive0 struct
  type MutuallyRecursive1 (line 315) | type MutuallyRecursive1 struct
  type Doubler (line 320) | type Doubler struct
    method Load (line 326) | func (d *Doubler) Load(props []Property) error {
    method Save (line 330) | func (d *Doubler) Save() ([]Property, error) {
  type Deriver (line 357) | type Deriver struct
    method Load (line 361) | func (e *Deriver) Load(props []Property) error {
    method Save (line 372) | func (e *Deriver) Save() ([]Property, error) {
  type BadMultiPropEntity (line 383) | type BadMultiPropEntity struct
    method Load (line 385) | func (e *BadMultiPropEntity) Load(props []Property) error {
    method Save (line 389) | func (e *BadMultiPropEntity) Save() ([]Property, error) {
  type testCase (line 403) | type testCase struct
  function checkErr (line 1293) | func checkErr(want string, err error) string {
  function TestRoundTrip (line 1305) | func TestRoundTrip(t *testing.T) {
  function TestQueryConstruction (line 1346) | func TestQueryConstruction(t *testing.T) {
  function TestPutMultiTypes (line 1471) | func TestPutMultiTypes(t *testing.T) {
  function TestNoIndexOnSliceProperties (line 1609) | func TestNoIndexOnSliceProperties(t *testing.T) {
  type byName (line 1645) | type byName
    method Len (line 1647) | func (s byName) Len() int           { return len(s) }
    method Less (line 1648) | func (s byName) Less(i, j int) bool { return s[i].Name < s[j].Name }
    method Swap (line 1649) | func (s byName) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
  function TestValidGeoPoint (line 1651) | func TestValidGeoPoint(t *testing.T) {
  function TestPutInvalidEntity (line 1691) | func TestPutInvalidEntity(t *testing.T) {
  type fakeDatastoreClient (line 1739) | type fakeDatastoreClient struct
    method Lookup (line 1750) | func (c *fakeDatastoreClient) Lookup(ctx context.Context, in *pb.Looku...
    method RunQuery (line 1756) | func (c *fakeDatastoreClient) RunQuery(ctx context.Context, in *pb.Run...
    method BeginTransaction (line 1762) | func (c *fakeDatastoreClient) BeginTransaction(ctx context.Context, in...
    method Commit (line 1768) | func (c *fakeDatastoreClient) Commit(ctx context.Context, in *pb.Commi...
    method Rollback (line 1774) | func (c *fakeDatastoreClient) Rollback(ctx context.Context, in *pb.Rol...
    method AllocateIds (line 1780) | func (c *fakeDatastoreClient) AllocateIds(ctx context.Context, in *pb....

FILE: vendor/cloud.google.com/go/datastore/doc.go
  constant resourcePrefixHeader (line 331) | resourcePrefixHeader = "google-cloud-resource-prefix"

FILE: vendor/cloud.google.com/go/datastore/errors.go
  type MultiError (line 26) | type MultiError
    method Error (line 28) | func (m MultiError) Error() string {

FILE: vendor/cloud.google.com/go/datastore/example_test.go
  function Example_auth (line 26) | func Example_auth() *datastore.Client {
  function ExampleGet (line 39) | func ExampleGet() {
  function ExamplePut (line 60) | func ExamplePut() {
  function ExampleDelete (line 87) | func ExampleDelete() {
  type Post (line 100) | type Post struct
  function ExampleGetMulti (line 106) | func ExampleGetMulti() {
  function ExamplePutMulti_slice (line 124) | func ExamplePutMulti_slice() {
  function ExamplePutMulti_interfaceSlice (line 146) | func ExamplePutMulti_interfaceSlice() {
  function ExampleQuery (line 168) | func ExampleQuery() {
  function ExampleTransaction (line 197) | func ExampleTransaction() {

FILE: vendor/cloud.google.com/go/datastore/integration_test.go
  function newClient (line 40) | func newClient(ctx context.Context, t *testing.T) *Client {
  function TestBasics (line 52) | func TestBasics(t *testing.T) {
  function TestListValues (line 85) | func TestListValues(t *testing.T) {
  function TestGetMulti (line 112) | func TestGetMulti(t *testing.T) {
  type Z (line 167) | type Z struct
    method String (line 174) | func (z Z) String() string {
  function TestUnindexableValues (line 185) | func TestUnindexableValues(t *testing.T) {
  function TestNilKey (line 216) | func TestNilKey(t *testing.T) {
  type SQChild (line 239) | type SQChild struct
  type SQTestCase (line 244) | type SQTestCase struct
  function testSmallQueries (line 251) | func testSmallQueries(t *testing.T, ctx context.Context, client *Client,...
  function TestFilters (line 301) | func TestFilters(t *testing.T) {
  function TestLargeQuery (line 388) | func TestLargeQuery(t *testing.T) {
  function TestEventualConsistency (line 553) | func TestEventualConsistency(t *testing.T) {
  function TestProjection (line 583) | func TestProjection(t *testing.T) {
  function TestAllocateIDs (line 623) | func TestAllocateIDs(t *testing.T) {
  function TestGetAllWithFieldMismatch (line 649) | func TestGetAllWithFieldMismatch(t *testing.T) {
  function TestKindlessQueries (line 696) | func TestKindlessQueries(t *testing.T) {
  function TestTransaction (line 820) | func TestTransaction(t *testing.T) {
  function TestNilPointers (line 926) | func TestNilPointers(t *testing.T) {
  function TestNestedRepeatedElementNoIndex (line 964) | func TestNestedRepeatedElementNoIndex(t *testing.T) {

FILE: vendor/cloud.google.com/go/datastore/key.go
  type Key (line 31) | type Key struct
    method Kind (line 40) | func (k *Key) Kind() string {
    method ID (line 44) | func (k *Key) ID() int64 {
    method Name (line 48) | func (k *Key) Name() string {
    method Parent (line 52) | func (k *Key) Parent() *Key {
    method SetParent (line 56) | func (k *Key) SetParent(v *Key) {
    method Namespace (line 63) | func (k *Key) Namespace() string {
    method Incomplete (line 68) | func (k *Key) Incomplete() bool {
    method valid (line 73) | func (k *Key) valid() bool {
    method Equal (line 96) | func (k *Key) Equal(o *Key) bool {
    method marshal (line 113) | func (k *Key) marshal(b *bytes.Buffer) {
    method String (line 128) | func (k *Key) String() string {
    method GobEncode (line 174) | func (k *Key) GobEncode() ([]byte, error) {
    method GobDecode (line 182) | func (k *Key) GobDecode(buf []byte) error {
    method MarshalJSON (line 191) | func (k *Key) MarshalJSON() ([]byte, error) {
    method UnmarshalJSON (line 195) | func (k *Key) UnmarshalJSON(buf []byte) error {
    method Encode (line 210) | func (k *Key) Encode() string {
  type gobKey (line 139) | type gobKey struct
  function keyToGobKey (line 148) | func keyToGobKey(k *Key) *gobKey {
  function gobKeyToKey (line 161) | func gobKeyToKey(gk *gobKey) *Key {
  function DecodeKey (line 223) | func DecodeKey(encoded string) (*Key, error) {
  function NewIncompleteKey (line 243) | func NewIncompleteKey(ctx context.Context, kind string, parent *Key) *Key {
  function NewKey (line 252) | func NewKey(ctx context.Context, kind, name string, id int64, parent *Ke...
  method AllocateIDs (line 264) | func (c *Client) AllocateIDs(ctx context.Context, keys []*Key) ([]*Key, ...

FILE: vendor/cloud.google.com/go/datastore/key_test.go
  function TestNamespace (line 26) | func TestNamespace(t *testing.T) {
  function TestParent (line 40) | func TestParent(t *testing.T) {
  function TestEqual (line 50) | func TestEqual(t *testing.T) {
  function TestEncoding (line 125) | func TestEncoding(t *testing.T) {
  function TestInvalidKeyDecode (line 226) | func TestInvalidKeyDecode(t *testing.T) {

FILE: vendor/cloud.google.com/go/datastore/load.go
  function typeMismatchReason (line 36) | func typeMismatchReason(p Property, v reflect.Value) string {
  type propertyLoader (line 60) | type propertyLoader struct
    method load (line 66) | func (l *propertyLoader) load(codec *structCodec, structValue reflect....
    method loadOneElement (line 83) | func (l *propertyLoader) loadOneElement(codec *structCodec, structValu...
  function setVal (line 178) | func setVal(v reflect.Value, p Property) string {
  function initField (line 275) | func initField(val reflect.Value, index []int) reflect.Value {
  function loadEntity (line 289) | func loadEntity(dst interface{}, src *pb.Entity) (err error) {
  method Load (line 300) | func (s structPLS) Load(props []Property) error {
  function protoToEntity (line 323) | func protoToEntity(src *pb.Entity) (*Entity, error) {
  function propToValue (line 348) | func propToValue(v *pb.Value) (interface{}, error) {

FILE: vendor/cloud.google.com/go/datastore/load_test.go
  type Simple (line 24) | type Simple struct
  type SimpleWithTag (line 28) | type SimpleWithTag struct
  type NestedSimpleWithTag (line 32) | type NestedSimpleWithTag struct
  type NestedSliceOfSimple (line 36) | type NestedSliceOfSimple struct
  type SimpleTwoFields (line 40) | type SimpleTwoFields struct
  type NestedSimpleAnonymous (line 45) | type NestedSimpleAnonymous struct
  type NestedSimple (line 50) | type NestedSimple struct
  type NestedSimple1 (line 55) | type NestedSimple1 struct
  type NestedSimple2X (line 60) | type NestedSimple2X struct
  type BDotB (line 66) | type BDotB struct
  type ABDotB (line 70) | type ABDotB struct
  type MultiAnonymous (line 74) | type MultiAnonymous struct
  function TestLoadEntityNestedLegacy (line 80) | func TestLoadEntityNestedLegacy(t *testing.T) {
  type WithKey (line 173) | type WithKey struct
  type NestedWithKey (line 179) | type NestedWithKey struct
  function TestLoadEntityNested (line 189) | func TestLoadEntityNested(t *testing.T) {

FILE: vendor/cloud.google.com/go/datastore/prop.go
  constant maxIndexedProperties (line 26) | maxIndexedProperties = 20000
  constant maxBlobLen (line 29) | maxBlobLen = 1 << 20
  type Property (line 34) | type Property struct
  type Entity (line 73) | type Entity struct
  type PropertyLoadSaver (line 79) | type PropertyLoadSaver interface
  type PropertyList (line 85) | type PropertyList
    method Load (line 94) | func (l *PropertyList) Load(p []Property) error {
    method Save (line 100) | func (l *PropertyList) Save() ([]Property, error) {
  function validPropertyName (line 106) | func validPropertyName(name string) bool {
  type structCodec (line 133) | type structCodec struct
  type fieldCodec (line 150) | type fieldCodec struct
  function getStructCodec (line 166) | func getStructCodec(t reflect.Type) (*structCodec, error) {
  function getStructCodecLocked (line 174) | func getStructCodecLocked(t reflect.Type) (ret *structCodec, retErr erro...
  type structPLS (line 286) | type structPLS struct
  function newStructPLS (line 293) | func newStructPLS(p interface{}) (*structPLS, error) {
  function LoadStruct (line 308) | func LoadStruct(dst interface{}, p []Property) error {
  function SaveStruct (line 318) | func SaveStruct(src interface{}) ([]Property, error) {

FILE: vendor/cloud.google.com/go/datastore/query.go
  type operator (line 31) | type operator
  constant lessThan (line 34) | lessThan operator = iota + 1
  constant lessEq (line 35) | lessEq
  constant equal (line 36) | equal
  constant greaterEq (line 37) | greaterEq
  constant greaterThan (line 38) | greaterThan
  constant keyFieldName (line 40) | keyFieldName = "__key__"
  type filter (line 52) | type filter struct
  type sortDirection (line 58) | type sortDirection
  constant ascending (line 61) | ascending  sortDirection = false
  constant descending (line 62) | descending sortDirection = true
  type order (line 71) | type order struct
  function NewQuery (line 81) | func NewQuery(kind string) *Query {
  type Query (line 89) | type Query struct
    method clone (line 109) | func (q *Query) clone() *Query {
    method Ancestor (line 125) | func (q *Query) Ancestor(ancestor *Key) *Query {
    method EventualConsistency (line 138) | func (q *Query) EventualConsistency() *Query {
    method Transaction (line 151) | func (q *Query) Transaction(t *Transaction) *Query {
    method Filter (line 165) | func (q *Query) Filter(filterStr string, value interface{}) *Query {
    method Order (line 207) | func (q *Query) Order(fieldName string) *Query {
    method Project (line 243) | func (q *Query) Project(fieldNames ...string) *Query {
    method Distinct (line 252) | func (q *Query) Distinct() *Query {
    method KeysOnly (line 260) | func (q *Query) KeysOnly() *Query {
    method Limit (line 268) | func (q *Query) Limit(limit int) *Query {
    method Offset (line 280) | func (q *Query) Offset(offset int) *Query {
    method Start (line 295) | func (q *Query) Start(c Cursor) *Query {
    method End (line 302) | func (q *Query) End(c Cursor) *Query {
    method toProto (line 309) | func (q *Query) toProto(req *pb.RunQueryRequest) error {
  function unquote (line 234) | func unquote(s string) (string, error) {
  method Count (line 416) | func (c *Client) Count(ctx context.Context, q *Query) (int, error) {
  method GetAll (line 463) | func (c *Client) GetAll(ctx context.Context, q *Query, dst interface{}) ...
  method Run (line 530) | func (c *Client) Run(ctx context.Context, q *Query) *Iterator {
  type Iterator (line 558) | type Iterator struct
    method Next (line 595) | func (t *Iterator) Next(dst interface{}) (*Key, error) {
    method next (line 606) | func (t *Iterator) next() (*Key, *pb.Entity, error) {
    method nextBatch (line 634) | func (t *Iterator) nextBatch() error {
    method Cursor (line 698) | func (t *Iterator) Cursor() (Cursor, error) {
  type Cursor (line 717) | type Cursor struct
    method String (line 722) | func (c Cursor) String() string {
  function DecodeCursor (line 731) | func DecodeCursor(s string) (Cursor, error) {

FILE: vendor/cloud.google.com/go/datastore/query_test.go
  type fakeClient (line 53) | type fakeClient struct
    method RunQuery (line 59) | func (c *fakeClient) RunQuery(_ context.Context, req *pb.RunQueryReque...
    method Commit (line 63) | func (c *fakeClient) Commit(_ context.Context, req *pb.CommitRequest, ...
  function fakeRunQuery (line 67) | func fakeRunQuery(in *pb.RunQueryRequest) (*pb.RunQueryResponse, error) {
  type StructThatImplementsPLS (line 104) | type StructThatImplementsPLS struct
    method Load (line 106) | func (StructThatImplementsPLS) Load(p []Property) error   { return nil }
    method Save (line 107) | func (StructThatImplementsPLS) Save() ([]Property, error) { return nil...
  type StructPtrThatImplementsPLS (line 111) | type StructPtrThatImplementsPLS struct
    method Load (line 113) | func (*StructPtrThatImplementsPLS) Load(p []Property) error   { return...
    method Save (line 114) | func (*StructPtrThatImplementsPLS) Save() ([]Property, error) { return...
  type PropertyMap (line 118) | type PropertyMap
    method Load (line 120) | func (m PropertyMap) Load(props []Property) error {
    method Save (line 127) | func (m PropertyMap) Save() ([]Property, error) {
  type Gopher (line 137) | type Gopher struct
  function TestCheckMultiArg (line 147) | func TestCheckMultiArg(t *testing.T) {
  function TestSimpleQuery (line 209) | func TestSimpleQuery(t *testing.T) {
  function keysEqual (line 345) | func keysEqual(a, b *Key) bool {
  function TestQueriesAreImmutable (line 355) | func TestQueriesAreImmutable(t *testing.T) {
  function TestFilterParser (line 392) | func TestFilterParser(t *testing.T) {
  function TestNamespaceQuery (line 457) | func TestNamespaceQuery(t *testing.T) {
  function TestReadOptions (line 497) | func TestReadOptions(t *testing.T) {

FILE: vendor/cloud.google.com/go/datastore/save.go
  function saveEntity (line 29) | func saveEntity(key *Key, src interface{}) (*pb.Entity, error) {
  function saveStructProperty (line 44) | func saveStructProperty(props *[]Property, name string, noIndex bool, v ...
  function saveSliceProperty (line 87) | func saveSliceProperty(props *[]Property, name string, noIndex bool, v r...
  method Save (line 129) | func (s structPLS) Save() ([]Property, error) {
  method save (line 137) | func (s structPLS) save(props *[]Property, prefix string, noIndex bool) ...
  function propertiesToProto (line 152) | func propertiesToProto(key *Key, props []Property) (*pb.Entity, error) {
  function interfaceToProto (line 183) | func interfaceToProto(iv interface{}, noIndex bool) (*pb.Value, error) {

FILE: vendor/cloud.google.com/go/datastore/save_test.go
  function TestInterfaceToProtoNilKey (line 23) | func TestInterfaceToProtoNilKey(t *testing.T) {

FILE: vendor/cloud.google.com/go/datastore/time.go
  function toUnixMicro (line 27) | func toUnixMicro(t time.Time) int64 {
  function fromUnixMicro (line 34) | func fromUnixMicro(t int64) time.Time {

FILE: vendor/cloud.google.com/go/datastore/time_test.go
  function TestUnixMicro (line 22) | func TestUnixMicro(t *testing.T) {

FILE: vendor/cloud.google.com/go/datastore/transaction.go
  type transactionSettings (line 33) | type transactionSettings struct
  function newTransactionSettings (line 39) | func newTransactionSettings(opts []TransactionOption) *transactionSettin...
  type TransactionOption (line 48) | type TransactionOption interface
  function MaxAttempts (line 53) | func MaxAttempts(attempts int) TransactionOption {
  type maxAttempts (line 57) | type maxAttempts
    method apply (line 59) | func (w maxAttempts) apply(s *transactionSettings) {
  type Transaction (line 74) | type Transaction struct
    method Commit (line 145) | func (t *Transaction) Commit() (*Commit, error) {
    method Rollback (line 182) | func (t *Transaction) Rollback() error {
    method Get (line 200) | func (t *Transaction) Get(key *Key, dst interface{}) error {
    method GetMulti (line 212) | func (t *Transaction) GetMulti(keys []*Key, dst interface{}) error {
    method Put (line 228) | func (t *Transaction) Put(key *Key, src interface{}) (*PendingKey, err...
    method PutMulti (line 241) | func (t *Transaction) PutMulti(keys []*Key, src interface{}) ([]*Pendi...
    method Delete (line 271) | func (t *Transaction) Delete(key *Key) error {
    method DeleteMulti (line 280) | func (t *Transaction) DeleteMulti(keys []*Key) error {
  method NewTransaction (line 83) | func (c *Client) NewTransaction(ctx context.Context, opts ...Transaction...
  method RunInTransaction (line 126) | func (c *Client) RunInTransaction(ctx context.Context, f func(tx *Transa...
  type Commit (line 293) | type Commit struct
    method Key (line 296) | func (c *Commit) Key(p *PendingKey) *Key {
  type PendingKey (line 305) | type PendingKey struct

FILE: vendor/cloud.google.com/go/errorreporting/apiv1beta1/error_group_client.go
  type ErrorGroupCallOptions (line 39) | type ErrorGroupCallOptions struct
  function defaultErrorGroupClientOptions (line 44) | func defaultErrorGroupClientOptions() []option.ClientOption {
  function defaultErrorGroupCallOptions (line 53) | func defaultErrorGroupCallOptions() *ErrorGroupCallOptions {
  type ErrorGroupClient (line 76) | type ErrorGroupClient struct
    method Connection (line 108) | func (c *ErrorGroupClient) Connection() *grpc.ClientConn {
    method Close (line 114) | func (c *ErrorGroupClient) Close() error {
    method SetGoogleClientInfo (line 121) | func (c *ErrorGroupClient) SetGoogleClientInfo(name, version string) {
    method GetGroup (line 140) | func (c *ErrorGroupClient) GetGroup(ctx context.Context, req *clouderr...
    method UpdateGroup (line 156) | func (c *ErrorGroupClient) UpdateGroup(ctx context.Context, req *cloud...
  function NewErrorGroupClient (line 93) | func NewErrorGroupClient(ctx context.Context, opts ...option.ClientOptio...
  function ErrorGroupGroupPath (line 128) | func ErrorGroupGroupPath(project string, group string) string {

FILE: vendor/cloud.google.com/go/errorreporting/apiv1beta1/error_group_client_example_test.go
  function ExampleNewErrorGroupClient (line 25) | func ExampleNewErrorGroupClient() {
  function ExampleErrorGroupClient_GetGroup (line 35) | func ExampleErrorGroupClient_GetGroup() {
  function ExampleErrorGroupClient_UpdateGroup (line 53) | func ExampleErrorGroupClient_UpdateGroup() {

FILE: vendor/cloud.google.com/go/errorreporting/apiv1beta1/error_stats_client.go
  type ErrorStatsCallOptions (line 40) | type ErrorStatsCallOptions struct
  function defaultErrorStatsClientOptions (line 46) | func defaultErrorStatsClientOptions() []option.ClientOption {
  function defaultErrorStatsCallOptions (line 55) | func defaultErrorStatsCallOptions() *ErrorStatsCallOptions {
  type ErrorStatsClient (line 79) | type ErrorStatsClient struct
    method Connection (line 112) | func (c *ErrorStatsClient) Connection() *grpc.ClientConn {
    method Close (line 118) | func (c *ErrorStatsClient) Close() error {
    method SetGoogleClientInfo (line 125) | func (c *ErrorStatsClient) SetGoogleClientInfo(name, version string) {
    method ListGroupStats (line 143) | func (c *ErrorStatsClient) ListGroupStats(ctx context.Context, req *cl...
    method ListEvents (line 169) | func (c *ErrorStatsClient) ListEvents(ctx context.Context, req *cloude...
    method DeleteEvents (line 195) | func (c *ErrorStatsClient) DeleteEvents(ctx context.Context, req *clou...
  function NewErrorStatsClient (line 97) | func NewErrorStatsClient(ctx context.Context, opts ...option.ClientOptio...
  function ErrorStatsProjectPath (line 132) | func ErrorStatsProjectPath(project string) string {
  type ErrorGroupStatsIterator (line 210) | type ErrorGroupStatsIterator struct
    method NextPage (line 229) | func (it *ErrorGroupStatsIterator) NextPage() ([]*clouderrorreportingp...
    method Next (line 253) | func (it *ErrorGroupStatsIterator) Next() (*clouderrorreportingpb.Erro...
    method PageSize (line 269) | func (it *ErrorGroupStatsIterator) PageSize() int {
    method SetPageSize (line 274) | func (it *ErrorGroupStatsIterator) SetPageSize(pageSize int) {
    method SetPageToken (line 283) | func (it *ErrorGroupStatsIterator) SetPageToken(token string) {
    method NextPageToken (line 289) | func (it *ErrorGroupStatsIterator) NextPageToken() string {
  type ErrorEventIterator (line 294) | type ErrorEventIterator struct
    method NextPage (line 313) | func (it *ErrorEventIterator) NextPage() ([]*clouderrorreportingpb.Err...
    method Next (line 337) | func (it *ErrorEventIterator) Next() (*clouderrorreportingpb.ErrorEven...
    method PageSize (line 353) | func (it *ErrorEventIterator) PageSize() int {
    method SetPageSize (line 358) | func (it *ErrorEventIterator) SetPageSize(pageSize int) {
    method SetPageToken (line 367) | func (it *ErrorEventIterator) SetPageToken(token string) {
    method NextPageToken (line 373) | func (it *ErrorEventIterator) NextPageToken() string {

FILE: vendor/cloud.google.com/go/errorreporting/apiv1beta1/error_stats_client_example_test.go
  function ExampleNewErrorStatsClient (line 25) | func ExampleNewErrorStatsClient() {
  function ExampleErrorStatsClient_ListGroupStats (line 35) | func ExampleErrorStatsClient_ListGroupStats() {
  function ExampleErrorStatsClient_ListEvents (line 57) | func ExampleErrorStatsClient_ListEvents() {
  function ExampleErrorStatsClient_DeleteEvents (line 79) | func ExampleErrorStatsClient_DeleteEvents() {

FILE: vendor/cloud.google.com/go/errorreporting/apiv1beta1/errorreporting.go
  constant gapicNameVersion (line 22) | gapicNameVersion = "gapic/0.1.0"

FILE: vendor/cloud.google.com/go/errorreporting/apiv1beta1/report_errors_client.go
  type ReportErrorsCallOptions (line 37) | type ReportErrorsCallOptions struct
  function defaultReportErrorsClientOptions (line 41) | func defaultReportErrorsClientOptions() []option.ClientOption {
  function defaultReportErrorsCallOptions (line 50) | func defaultReportErrorsCallOptions() *ReportErrorsCallOptions {
  type ReportErrorsClient (line 59) | type ReportErrorsClient struct
    method Connection (line 91) | func (c *ReportErrorsClient) Connection() *grpc.ClientConn {
    method Close (line 97) | func (c *ReportErrorsClient) Close() error {
    method SetGoogleClientInfo (line 104) | func (c *ReportErrorsClient) SetGoogleClientInfo(name, version string) {
    method ReportErrorEvent (line 129) | func (c *ReportErrorsClient) ReportErrorEvent(ctx context.Context, req...
  function NewReportErrorsClient (line 76) | func NewReportErrorsClient(ctx context.Context, opts ...option.ClientOpt...
  function ReportErrorsProjectPath (line 111) | func ReportErrorsProjectPath(project string) string {

FILE: vendor/cloud.google.com/go/errorreporting/apiv1beta1/report_errors_client_example_test.go
  function ExampleNewReportErrorsClient (line 25) | func ExampleNewReportErrorsClient() {
  function ExampleReportErrorsClient_ReportErrorEvent (line 35) | func ExampleReportErrorsClient_ReportErrorEvent() {

FILE: vendor/cloud.google.com/go/errors/errors.go
  constant userAgent (line 93) | userAgent = `gcloud-golang-errorreporting/20160701`
  type Client (line 96) | type Client struct
    method Catch (line 197) | func (c *Client) Catch(ctx context.Context, opt ...Option) {
    method Report (line 240) | func (c *Client) Report(ctx context.Context, r *http.Request, v ...int...
    method Reportf (line 249) | func (c *Client) Reportf(ctx context.Context, r *http.Request, format ...
    method logInternal (line 253) | func (c *Client) logInternal(ctx context.Context, r *http.Request, isP...
  function NewClient (line 107) | func NewClient(ctx context.Context, projectID, serviceName, serviceVersi...
  type Option (line 127) | type Option interface
  function PanicFlag (line 146) | func PanicFlag(p *bool) Option { return panicFlag{p} }
  type panicFlag (line 148) | type panicFlag struct
    method isOption (line 152) | func (h panicFlag) isOption() {}
  function Repanic (line 156) | func Repanic(r bool) Option { return repanic(r) }
  type repanic (line 158) | type repanic
    method isOption (line 160) | func (r repanic) isOption() {}
  function WithRequest (line 165) | func WithRequest(r *http.Request) Option { return withRequest{r} }
  type withRequest (line 167) | type withRequest struct
    method isOption (line 171) | func (w withRequest) isOption() {}
  function WithMessage (line 175) | func WithMessage(v ...interface{}) Option { return message(v) }
  type message (line 177) | type message
    method isOption (line 179) | func (m message) isOption() {}
  function WithMessagef (line 183) | func WithMessagef(format string, v ...interface{}) Option { return messa...
  type messagef (line 185) | type messagef struct
    method isOption (line 190) | func (m messagef) isOption() {}
  function chopStack (line 289) | func chopStack(s []byte, isPanic bool) string {

FILE: vendor/cloud.google.com/go/errors/errors_test.go
  constant testProjectID (line 30) | testProjectID = "testproject"
  type fakeRoundTripper (line 32) | type fakeRoundTripper struct
    method RoundTrip (line 42) | func (rt *fakeRoundTripper) RoundTrip(r *http.Request) (*http.Response...
  function newFakeRoundTripper (line 38) | func newFakeRoundTripper() *fakeRoundTripper {
  function newTestClient (line 63) | func newTestClient(rt http.RoundTripper) *errors.Client {
  function init (line 74) | func init() {
  function TestCatchNothing (line 78) | func TestCatchNothing(t *testing.T) {
  function commonChecks (line 90) | func commonChecks(t *testing.T, body, panickingFunction string) {
  function TestCatchPanic (line 105) | func TestCatchPanic(t *testing.T) {
  function TestCatchPanicNilClient (line 123) | func TestCatchPanicNilClient(t *testing.T) {
  function TestLogFailedReports (line 145) | func TestLogFailedReports(t *testing.T) {
  function TestCatchNilPanic (line 164) | func TestCatchNilPanic(t *testing.T) {
  function TestNotCatchNilPanic (line 182) | func TestNotCatchNilPanic(t *testing.T) {
  function TestReport (line 195) | func TestReport(t *testing.T) {
  function TestReportf (line 206) | func TestReportf(t *testing.T) {

FILE: vendor/cloud.google.com/go/errors/stack_test.go
  function TestChopStack (line 19) | func TestChopStack(t *testing.T) {

FILE: vendor/cloud.google.com/go/examples/bigquery/concat_table/main.go
  function main (line 39) | func main() {

FILE: vendor/cloud.google.com/go/examples/bigquery/load/main.go
  function main (line 40) | func main() {

FILE: vendor/cloud.google.com/go/examples/bigquery/query/main.go
  function main (line 39) | func main() {

FILE: vendor/cloud.google.com/go/examples/bigquery/read/main.go
  function printValues (line 40) | func printValues(ctx context.Context, it *bigquery.Iterator) {
  function printTable (line 65) | func printTable(ctx context.Context, client *bigquery.Client, t *bigquer...
  function printQueryResults (line 76) | func printQueryResults(ctx context.Context, client *bigquery.Client, que...
  function main (line 91) | func main() {

FILE: vendor/cloud.google.com/go/examples/bigtable/helloworld/main.go
  constant tableName (line 30) | tableName        = "Hello-Bigtable"
  constant columnFamilyName (line 31) | columnFamilyName = "cf1"
  constant columnName (line 32) | columnName       = "greeting"
  function sliceContains (line 38) | func sliceContains(list []string, target string) bool {
  function main (line 47) | func main() {

FILE: vendor/cloud.google.com/go/examples/bigtable/search/search.go
  constant indexColumnFamily (line 68) | indexColumnFamily   = "i"
  constant contentColumnFamily (line 69) | contentColumnFamily = "c"
  constant mainPage (line 70) | mainPage            = `
  function main (line 107) | func main() {
  function handleMain (line 142) | func handleMain(w http.ResponseWriter, r *http.Request) {
  function tokenize (line 148) | func tokenize(s string) []string {
  function handleContent (line 163) | func handleContent(w http.ResponseWriter, r *http.Request, table *bigtab...
  function handleSearch (line 190) | func handleSearch(w http.ResponseWriter, r *http.Request, table *bigtabl...
  function handleAddDoc (line 278) | func handleAddDoc(w http.ResponseWriter, r *http.Request, table *bigtabl...
  function handleReset (line 355) | func handleReset(w http.ResponseWriter, r *http.Request, table string, a...
  function copyTable (line 383) | func copyTable(src, dst string, client *bigtable.Client, adminClient *bi...
  function handleCopy (line 438) | func handleCopy(w http.ResponseWriter, r *http.Request, dst string, clie...

FILE: vendor/cloud.google.com/go/examples/bigtable/usercounter/main.go
  constant project (line 39) | project  = "PROJECT_ID"
  constant instance (line 40) | instance = "INSTANCE"
  function main (line 51) | func main() {
  function mainHandler (line 92) | func mainHandler(w http.ResponseWriter, r *http.Request) *appError {
  function sliceContains (line 156) | func sliceContains(list []string, target string) bool {
  type appHandler (line 166) | type appHandler
    method ServeHTTP (line 174) | func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
  type appError (line 168) | type appError struct

FILE: vendor/cloud.google.com/go/examples/storage/appengine/app.go
  function init (line 44) | func init() {
  type demo (line 49) | type demo struct
    method errorf (line 61) | func (d *demo) errorf(format string, args ...interface{}) {
    method createFile (line 139) | func (d *demo) createFile(fileName string) {
    method readFile (line 168) | func (d *demo) readFile(fileName string) {
    method copyFile (line 195) | func (d *demo) copyFile(fileName string) {
    method dumpStats (line 211) | func (d *demo) dumpStats(obj *storage.ObjectAttrs) {
    method statFile (line 231) | func (d *demo) statFile(fileName string) {
    method createListFiles (line 246) | func (d *demo) createListFiles() {
    method listBucket (line 255) | func (d *demo) listBucket() {
    method listDir (line 275) | func (d *demo) listDir(name, indent string) {
    method listBucketDirMode (line 297) | func (d *demo) listBucketDirMode() {
    method dumpDefaultACL (line 303) | func (d *demo) dumpDefaultACL() {
    method defaultACL (line 315) | func (d *demo) defaultACL() {
    method putDefaultACLRule (line 321) | func (d *demo) putDefaultACLRule() {
    method deleteDefaultACLRule (line 332) | func (d *demo) deleteDefaultACLRule() {
    method dumpBucketACL (line 343) | func (d *demo) dumpBucketACL() {
    method bucketACL (line 355) | func (d *demo) bucketACL() {
    method putBucketACLRule (line 361) | func (d *demo) putBucketACLRule() {
    method deleteBucketACLRule (line 372) | func (d *demo) deleteBucketACLRule() {
    method dumpACL (line 383) | func (d *demo) dumpACL(fileName string) {
    method acl (line 395) | func (d *demo) acl(fileName string) {
    method putACLRule (line 401) | func (d *demo) putACLRule(fileName string) {
    method deleteACLRule (line 412) | func (d *demo) deleteACLRule(fileName string) {
    method deleteFiles (line 423) | func (d *demo) deleteFiles() {
  function handler (line 68) | func handler(w http.ResponseWriter, r *http.Request) {

FILE: vendor/cloud.google.com/go/examples/storage/appenginevm/app.go
  function main (line 39) | func main() {
  type demo (line 46) | type demo struct
    method errorf (line 60) | func (d *demo) errorf(format string, args ...interface{}) {
    method createFile (line 135) | func (d *demo) createFile(fileName string) {
    method readFile (line 164) | func (d *demo) readFile(fileName string) {
    method copyFile (line 191) | func (d *demo) copyFile(fileName string) {
    method dumpStats (line 207) | func (d *demo) dumpStats(obj *storage.ObjectAttrs) {
    method statFile (line 227) | func (d *demo) statFile(fileName string) {
    method createListFiles (line 242) | func (d *demo) createListFiles() {
    method listBucket (line 251) | func (d *demo) listBucket() {
    method listDir (line 271) | func (d *demo) listDir(name, indent string) {
    method listBucketDirMode (line 293) | func (d *demo) listBucketDirMode() {
    method dumpDefaultACL (line 299) | func (d *demo) dumpDefaultACL() {
    method defaultACL (line 311) | func (d *demo) defaultACL() {
    method putDefaultACLRule (line 317) | func (d *demo) putDefaultACLRule() {
    method deleteDefaultACLRule (line 328) | func (d *demo) deleteDefaultACLRule() {
    method dumpBucketACL (line 339) | func (d *demo) dumpBucketACL() {
    method bucketACL (line 351) | func (d *demo) bucketACL() {
    method putBucketACLRule (line 357) | func (d *demo) putBucketACLRule() {
    method deleteBucketACLRule (line 368) | func (d *demo) deleteBucketACLRule() {
    method dumpACL (line 379) | func (d *demo) dumpACL(fileName string) {
    method acl (line 391) | func (d *demo) acl(fileName string) {
    method putACLRule (line 397) | func (d *demo) putACLRule(fileName string) {
    method deleteACLRule (line 408) | func (d *demo) deleteACLRule(fileName string) {
    method deleteFiles (line 420) | func (d *demo) deleteFiles() {
  function handler (line 67) | func handler(w http.ResponseWriter, r *http.Request) {

FILE: vendor/cloud.google.com/go/internal/bundler/bundler.go
  constant DefaultDelayThreshold (line 30) | DefaultDelayThreshold       = time.Second
  constant DefaultBundleCountThreshold (line 31) | DefaultBundleCountThreshold = 10
  constant DefaultBundleByteThreshold (line 32) | DefaultBundleByteThreshold  = 1e6
  constant DefaultBufferedByteLimit (line 33) | DefaultBufferedByteLimit    = 1e9
  type Bundler (line 46) | type Bundler struct
    method Add (line 124) | func (b *Bundler) Add(item interface{}, size int) error {
    method Flush (line 162) | func (b *Bundler) Flush() {
    method Close (line 180) | func (b *Bundler) Close() {
    method closeAndHandleBundle (line 188) | func (b *Bundler) closeAndHandleBundle() {
    method closeBundle (line 204) | func (b *Bundler) closeBundle() bool {
    method background (line 216) | func (b *Bundler) background() {
  type bundle (line 82) | type bundle struct
  function NewBundler (line 95) | func NewBundler(itemExample interface{}, handler func(interface{})) *Bun...

FILE: vendor/cloud.google.com/go/internal/bundler/bundler_test.go
  function TestBundlerCount1 (line 24) | func TestBundlerCount1(t *testing.T) {
  function TestBundlerCount3 (line 51) | func TestBundlerCount3(t *testing.T) {
  function TestBundlerByteThreshold (line 79) | func TestBundlerByteThreshold(t *testing.T) {
  function TestBundlerLimit (line 111) | func TestBundlerLimit(t *testing.T) {
  function TestBundlerErrors (line 144) | func TestBundlerErrors(t *testing.T) {
  type testHandler (line 165) | type testHandler struct
    method bundles (line 171) | func (t *testHandler) bundles() [][]int {
    method times (line 177) | func (t *testHandler) times() []time.Time {
    method handle (line 183) | func (t *testHandler) handle(b interface{}) {
  function quantizeTimes (line 195) | func quantizeTimes(times []time.Time, q time.Duration) []int {
  function TestQuantizeTimes (line 205) | func TestQuantizeTimes(t *testing.T) {

FILE: vendor/cloud.google.com/go/internal/cloud.go
  constant userAgent (line 25) | userAgent = "gcloud-golang/0.1"
  type Transport (line 29) | type Transport struct
    method RoundTrip (line 40) | func (t *Transport) RoundTrip(req *http.Request) (*http.Response, erro...
  function cloneRequest (line 54) | func cloneRequest(r *http.Request) *http.Request {

FILE: vendor/cloud.google.com/go/internal/testutil/context.go
  constant envProjID (line 29) | envProjID     = "GCLOUD_TESTS_GOLANG_PROJECT_ID"
  constant envPrivateKey (line 30) | envPrivateKey = "GCLOUD_TESTS_GOLANG_KEY"
  function ProjID (line 35) | func ProjID() string {
  function TokenSource (line 46) | func TokenSource(ctx context.Context, scopes ...string) oauth2.TokenSour...

FILE: vendor/cloud.google.com/go/internal/testutil/iterators.go
  function TestIteratorNext (line 44) | func TestIteratorNext(want interface{}, done error, next func() (interfa...
  type PagingIterator (line 77) | type PagingIterator interface
  function TestIteratorNextPageExact (line 111) | func TestIteratorNextPageExact(want interface{}, done error, defaultPage...

FILE: vendor/cloud.google.com/go/internal/testutil/server.go
  type Server (line 42) | type Server struct
    method Start (line 65) | func (s *Server) Start() {
    method Close (line 70) | func (s *Server) Close() {
  function NewServer (line 50) | func NewServer() (*Server, error) {

FILE: vendor/cloud.google.com/go/internal/testutil/server_test.go
  function TestNewServer (line 23) | func TestNewServer(t *testing.T) {

FILE: vendor/cloud.google.com/go/language/apiv1beta1/language.go
  constant gapicNameVersion (line 20) | gapicNameVersion = "gapic/0.1.0"

FILE: vendor/cloud.google.com/go/language/apiv1beta1/language_client.go
  type CallOptions (line 35) | type CallOptions struct
  function defaultClientOptions (line 41) | func defaultClientOptions() []option.ClientOption {
  function defaultCallOptions (line 50) | func defaultCallOptions() *CallOptions {
  type Client (line 74) | type Client struct
    method Connection (line 107) | func (c *Client) Connection() *grpc.ClientConn {
    method Close (line 113) | func (c *Client) Close() error {
    method SetGoogleClientInfo (line 120) | func (c *Client) SetGoogleClientInfo(name, version string) {
    method AnalyzeSentiment (line 127) | func (c *Client) AnalyzeSentiment(ctx context.Context, req *languagepb...
    method AnalyzeEntities (line 143) | func (c *Client) AnalyzeEntities(ctx context.Context, req *languagepb....
    method AnnotateText (line 161) | func (c *Client) AnnotateText(ctx context.Context, req *languagepb.Ann...
  function NewClient (line 92) | func NewClient(ctx context.Context, opts ...option.ClientOption) (*Clien...

FILE: vendor/cloud.google.com/go/language/apiv1beta1/language_client_example_test.go
  function ExampleNewClient (line 25) | func ExampleNewClient() {
  function ExampleClient_AnalyzeSentiment (line 35) | func ExampleClient_AnalyzeSentiment() {
  function ExampleClient_AnalyzeEntities (line 53) | func ExampleClient_AnalyzeEntities() {
  function ExampleClient_AnnotateText (line 71) | func ExampleClient_AnnotateText() {

FILE: vendor/cloud.google.com/go/license_test.go
  function TestLicense (line 32) | func TestLicense(t *testing.T) {

FILE: vendor/cloud.google.com/go/logging/apiv2/config_client.go
  type ConfigCallOptions (line 41) | type ConfigCallOptions struct
  function defaultConfigClientOptions (line 49) | func defaultConfigClientOptions() []option.ClientOption {
  function defaultConfigCallOptions (line 62) | func defaultConfigCallOptions() *ConfigCallOptions {
  type ConfigClient (line 88) | type ConfigClient struct
    method Connection (line 121) | func (c *ConfigClient) Connection() *grpc.ClientConn {
    method Close (line 127) | func (c *ConfigClient) Close() error {
    method SetGoogleClientInfo (line 134) | func (c *ConfigClient) SetGoogleClientInfo(name, version string) {
    method ListSinks (line 164) | func (c *ConfigClient) ListSinks(ctx context.Context, req *loggingpb.L...
    method GetSink (line 190) | func (c *ConfigClient) GetSink(ctx context.Context, req *loggingpb.Get...
    method CreateSink (line 205) | func (c *ConfigClient) CreateSink(ctx context.Context, req *loggingpb....
    method UpdateSink (line 220) | func (c *ConfigClient) UpdateSink(ctx context.Context, req *loggingpb....
    method DeleteSink (line 235) | func (c *ConfigClient) DeleteSink(ctx context.Context, req *loggingpb....
  function NewConfigClient (line 106) | func NewConfigClient(ctx context.Context, opts ...option.ClientOption) (...
  function ConfigParentPath (line 141) | func ConfigParentPath(project string) string {
  function ConfigSinkPath (line 152) | func ConfigSinkPath(project string, sink string) string {
  type LogSinkIterator (line 246) | type LogSinkIterator struct
    method NextPage (line 265) | func (it *LogSinkIterator) NextPage() ([]*loggingpb.LogSink, error) {
    method Next (line 289) | func (it *LogSinkIterator) Next() (*loggingpb.LogSink, error) {
    method PageSize (line 305) | func (it *LogSinkIterator) PageSize() int {
    method SetPageSize (line 310) | func (it *LogSinkIterator) SetPageSize(pageSize int) {
    method SetPageToken (line 319) | func (it *LogSinkIterator) SetPageToken(token string) {
    method NextPageToken (line 325) | func (it *LogSinkIterator) NextPageToken() string {

FILE: vendor/cloud.google.com/go/logging/apiv2/config_client_example_test.go
  function ExampleNewConfigClient (line 25) | func ExampleNewConfigClient() {
  function ExampleConfigClient_ListSinks (line 35) | func ExampleConfigClient_ListSinks() {
  function ExampleConfigClient_GetSink (line 57) | func ExampleConfigClient_GetSink() {
  function ExampleConfigClient_CreateSink (line 75) | func ExampleConfigClient_CreateSink() {
  function ExampleConfigClient_UpdateSink (line 93) | func ExampleConfigClient_UpdateSink() {
  function ExampleConfigClient_DeleteSink (line 111) | func ExampleConfigClient_DeleteSink() {

FILE: vendor/cloud.google.com/go/logging/apiv2/logging.go
  constant gapicNameVersion (line 22) | gapicNameVersion = "gapic/0.1.0"

FILE: vendor/cloud.google.com/go/logging/apiv2/logging_client.go
  type CallOptions (line 42) | type CallOptions struct
  function defaultClientOptions (line 49) | func defaultClientOptions() []option.ClientOption {
  function defaultCallOptions (line 62) | func defaultCallOptions() *CallOptions {
  type Client (line 99) | type Client struct
    method Connection (line 131) | func (c *Client) Connection() *grpc.ClientConn {
    method Close (line 137) | func (c *Client) Close() error {
    method SetGoogleClientInfo (line 144) | func (c *Client) SetGoogleClientInfo(name, version string) {
    method DeleteLog (line 175) | func (c *Client) DeleteLog(ctx context.Context, req *loggingpb.DeleteL...
    method WriteLogEntries (line 187) | func (c *Client) WriteLogEntries(ctx context.Context, req *loggingpb.W...
    method ListLogEntries (line 204) | func (c *Client) ListLogEntries(ctx context.Context, req *loggingpb.Li...
    method ListMonitoredResourceDescriptors (line 230) | func (c *Client) ListMonitoredResourceDescriptors(ctx context.Context,...
  function NewClient (line 116) | func NewClient(ctx context.Context, opts ...option.ClientOption) (*Clien...
  function LoggingParentPath (line 151) | func LoggingParentPath(project string) string {
  function LoggingLogPath (line 162) | func LoggingLogPath(project string, log string) string {
  type LogEntryIterator (line 256) | type LogEntryIterator struct
    method NextPage (line 275) | func (it *LogEntryIterator) NextPage() ([]*loggingpb.LogEntry, error) {
    method Next (line 299) | func (it *LogEntryIterator) Next() (*loggingpb.LogEntry, error) {
    method PageSize (line 315) | func (it *LogEntryIterator) PageSize() int {
    method SetPageSize (line 320) | func (it *LogEntryIterator) SetPageSize(pageSize int) {
    method SetPageToken (line 329) | func (it *LogEntryIterator) SetPageToken(token string) {
    method NextPageToken (line 335) | func (it *LogEntryIterator) NextPageToken() string {
  type MonitoredResourceDescriptorIterator (line 340) | type MonitoredResourceDescriptorIterator struct
    method NextPage (line 359) | func (it *MonitoredResourceDescriptorIterator) NextPage() ([]*monitore...
    method Next (line 383) | func (it *MonitoredResourceDescriptorIterator) Next() (*monitoredrespb...
    method PageSize (line 399) | func (it *MonitoredResourceDescriptorIterator) PageSize() int {
    method SetPageSize (line 404) | func (it *MonitoredResourceDescriptorIterator) SetPageSize(pageSize in...
    method SetPageToken (line 413) | func (it *MonitoredResourceDescriptorIterator) SetPageToken(token stri...
    method NextPageToken (line 419) | func (it *MonitoredResourceDescriptorIterator) NextPageToken() string {

FILE: vendor/cloud.google.com/go/logging/apiv2/logging_client_example_test.go
  function ExampleNewClient (line 25) | func ExampleNewClient() {
  function ExampleClient_DeleteLog (line 35) | func ExampleClient_DeleteLog() {
  function ExampleClient_WriteLogEntries (line 51) | func ExampleClient_WriteLogEntries() {
  function ExampleClient_ListLogEntries (line 69) | func ExampleClient_ListLogEntries() {
  function ExampleClient_ListMonitoredResourceDescriptors (line 91) | func ExampleClient_ListMonitoredResourceDescriptors() {

FILE: vendor/cloud.google.com/go/logging/apiv2/metrics_client.go
  type MetricsCallOptions (line 41) | type MetricsCallOptions struct
  function defaultMetricsClientOptions (line 49) | func defaultMetricsClientOptions() []option.ClientOption {
  function defaultMetricsCallOptions (line 62) | func defaultMetricsCallOptions() *MetricsCallOptions {
  type MetricsClient (line 88) | type MetricsClient struct
    method Connection (line 120) | func (c *MetricsClient) Connection() *grpc.ClientConn {
    method Close (line 126) | func (c *MetricsClient) Close() error {
    method SetGoogleClientInfo (line 133) | func (c *MetricsClient) SetGoogleClientInfo(name, version string) {
    method ListLogMetrics (line 163) | func (c *MetricsClient) ListLogMetrics(ctx context.Context, req *loggi...
    method GetLogMetric (line 189) | func (c *MetricsClient) GetLogMetric(ctx context.Context, req *logging...
    method CreateLogMetric (line 204) | func (c *MetricsClient) CreateLogMetric(ctx context.Context, req *logg...
    method UpdateLogMetric (line 219) | func (c *MetricsClient) UpdateLogMetric(ctx context.Context, req *logg...
    method DeleteLogMetric (line 234) | func (c *MetricsClient) DeleteLogMetric(ctx context.Context, req *logg...
  function NewMetricsClient (line 105) | func NewMetricsClient(ctx context.Context, opts ...option.ClientOption) ...
  function MetricsParentPath (line 140) | func MetricsParentPath(project string) string {
  function MetricsMetricPath (line 151) | func MetricsMetricPath(project string, metric string) string {
  type LogMetricIterator (line 245) | type LogMetricIterator struct
    method NextPage (line 264) | func (it *LogMetricIterator) NextPage() ([]*loggingpb.LogMetric, error) {
    method Next (line 288) | func (it *LogMetricIterator) Next() (*loggingpb.LogMetric, error) {
    method PageSize (line 304) | func (it *LogMetricIterator) PageSize() int {
    method SetPageSize (line 309) | func (it *LogMetricIterator) SetPageSize(pageSize int) {
    method SetPageToken (line 318) | func (it *LogMetricIterator) SetPageToken(token string) {
    method NextPageToken (line 324) | func (it *LogMetricIterator) NextPageToken() string {

FILE: vendor/cloud.google.com/go/logging/apiv2/metrics_client_example_test.go
  function ExampleNewMetricsClient (line 25) | func ExampleNewMetricsClient() {
  function ExampleMetricsClient_ListLogMetrics (line 35) | func ExampleMetricsClient_ListLogMetrics() {
  function ExampleMetricsClient_GetLogMetric (line 57) | func ExampleMetricsClient_GetLogMetric() {
  function ExampleMetricsClient_CreateLogMetric (line 75) | func ExampleMetricsClient_CreateLogMetric() {
  function ExampleMetricsClient_UpdateLogMetric (line 93) | func ExampleMetricsClient_UpdateLogMetric() {
  function ExampleMetricsClient_DeleteLogMetric (line 111) | func ExampleMetricsClient_DeleteLogMetric() {

FILE: vendor/cloud.google.com/go/logging/logging.go
  constant Scope (line 34) | Scope = api.LoggingWriteScope
  type Level (line 37) | type Level
    method String (line 63) | func (v Level) String() string {
  constant Default (line 41) | Default Level = iota
  constant Debug (line 42) | Debug
  constant Info (line 43) | Info
  constant Warning (line 44) | Warning
  constant Error (line 45) | Error
  constant Critical (line 46) | Critical
  constant Alert (line 47) | Alert
  constant Emergency (line 48) | Emergency
  constant nLevel (line 49) | nLevel
  type Client (line 69) | type Client struct
    method flushAfter (line 129) | func (c *Client) flushAfter() int {
    method bufferInterval (line 136) | func (c *Client) bufferInterval() time.Duration {
    method bufferLimit (line 143) | func (c *Client) bufferLimit() int {
    method serviceName (line 150) | func (c *Client) serviceName() string {
    method now (line 157) | func (c *Client) now() time.Time {
    method Writer (line 170) | func (c *Client) Writer(v Level) io.Writer { return c.writer[v] }
    method Logger (line 179) | func (c *Client) Logger(v Level) *log.Logger { return c.logger[v] }
    method apiEntry (line 217) | func (c *Client) apiEntry(e Entry) (*api.LogEntry, error) {
    method LogSync (line 244) | func (c *Client) LogSync(e Entry) error {
    method Log (line 265) | func (c *Client) Log(e Entry) error {
    method scheduleFlushLocked (line 296) | func (c *Client) scheduleFlushLocked(d time.Duration) {
    method timeoutFlush (line 325) | func (c *Client) timeoutFlush() {
    method Ping (line 341) | func (c *Client) Ping() error {
    method Flush (line 358) | func (c *Client) Flush() error {
    method startFlushLocked (line 401) | func (c *Client) startFlushLocked() {
  type levelWriter (line 181) | type levelWriter struct
    method Write (line 186) | func (w levelWriter) Write(p []byte) (n int, err error) {
  type Entry (line 194) | type Entry struct
  constant prodAddr (line 436) | prodAddr = "https://logging.googleapis.com/"
  constant userAgent (line 438) | userAgent = "gcloud-golang-logging/20150922"
  function NewClient (line 446) | func NewClient(ctx context.Context, projectID, logName string, opts ...o...
  type flushCall (line 475) | type flushCall struct

FILE: vendor/cloud.google.com/go/logging/logging_test.go
  function TestLogPayload (line 35) | func TestLogPayload(t *testing.T) {
  function TestBufferInterval (line 106) | func TestBufferInterval(t *testing.T) {
  function TestFlushAfter (line 126) | func TestFlushAfter(t *testing.T) {
  function TestFlush (line 147) | func TestFlush(t *testing.T) {
  function TestOverflow (line 165) | func TestOverflow(t *testing.T) {
  function TestIntegration (line 224) | func TestIntegration(t *testing.T) {
  function TestIntegrationPingBadProject (line 269) | func TestIntegrationPingBadProject(t *testing.T) {
  method stats (line 298) | func (c *Client) stats() (queued, inFlight int) {
  type customJSONObject (line 304) | type customJSONObject struct
    method MarshalJSON (line 306) | func (customJSONObject) MarshalJSON() ([]byte, error) {
  type logTest (line 310) | type logTest struct
    method startGetRequest (line 360) | func (lt *logTest) startGetRequest() {
    method getRequest (line 376) | func (lt *logTest) getRequest() string {
  function newLogTest (line 319) | func newLogTest(t *testing.T) *logTest {
  constant getRequestTimeout (line 374) | getRequestTimeout = 5 * time.Second
  type dummyTokenSource (line 390) | type dummyTokenSource struct
    method Token (line 392) | func (dummyTokenSource) Token() (*oauth2.Token, error) {

FILE: vendor/cloud.google.com/go/monitoring/apiv3/agent_translation_client.go
  type AgentTranslationCallOptions (line 37) | type AgentTranslationCallOptions struct
  function defaultAgentTranslationClientOptions (line 41) | func defaultAgentTranslationClientOptions() []option.ClientOption {
  function defaultAgentTranslationCallOptions (line 48) | func defaultAgentTranslationCallOptions() *AgentTranslationCallOptions {
  type AgentTranslationClient (line 57) | type AgentTranslationClient struct
    method Connection (line 91) | func (c *AgentTranslationClient) Connection() *grpc.ClientConn {
    method Close (line 97) | func (c *AgentTranslationClient) Close() error {
    method SetGoogleClientInfo (line 104) | func (c *AgentTranslationClient) SetGoogleClientInfo(name, version str...
    method CreateCollectdTimeSeries (line 126) | func (c *AgentTranslationClient) CreateCollectdTimeSeries(ctx context....
  function NewAgentTranslationClient (line 76) | func NewAgentTranslationClient(ctx context.Context, opts ...option.Clien...
  function AgentTranslationProjectPath (line 111) | func AgentTranslationProjectPath(project string) string {

FILE: vendor/cloud.google.com/go/monitoring/apiv3/agent_translation_client_example_test.go
  function ExampleNewAgentTranslationClient (line 25) | func ExampleNewAgentTranslationClient() {
  function ExampleAgentTranslationClient_CreateCollectdTimeSeries (line 35) | func ExampleAgentTranslationClient_CreateCollectdTimeSeries() {

FILE: vendor/cloud.google.com/go/monitoring/apiv3/group_client.go
  type GroupCallOptions (line 42) | type GroupCallOptions struct
  function defaultGroupClientOptions (line 51) | func defaultGroupClientOptions() []option.ClientOption {
  function defaultGroupCallOptions (line 58) | func defaultGroupCallOptions() *GroupCallOptions {
  type GroupClient (line 85) | type GroupClient struct
    method Connection (line 128) | func (c *GroupClient) Connection() *grpc.ClientConn {
    method Close (line 134) | func (c *GroupClient) Close() error {
    method SetGoogleClientInfo (line 141) | func (c *GroupClient) SetGoogleClientInfo(name, version string) {
    method ListGroups (line 172) | func (c *GroupClient) ListGroups(ctx context.Context, req *monitoringp...
    method GetGroup (line 199) | func (c *GroupClient) GetGroup(ctx context.Context, req *monitoringpb....
    method CreateGroup (line 215) | func (c *GroupClient) CreateGroup(ctx context.Context, req *monitoring...
    method UpdateGroup (line 232) | func (c *GroupClient) UpdateGroup(ctx context.Context, req *monitoring...
    method DeleteGroup (line 248) | func (c *GroupClient) DeleteGroup(ctx context.Context, req *monitoring...
    method ListGroupMembers (line 260) | func (c *GroupClient) ListGroupMembers(ctx context.Context, req *monit...
  function NewGroupClient (line 113) | func NewGroupClient(ctx context.Context, opts ...option.ClientOption) (*...
  function GroupProjectPath (line 148) | func GroupProjectPath(project string) string {
  function GroupGroupPath (line 159) | func GroupGroupPath(project string, group string) string {
  type GroupIterator (line 286) | type GroupIterator struct
    method NextPage (line 305) | func (it *GroupIterator) NextPage() ([]*monitoringpb.Group, error) {
    method Next (line 329) | func (it *GroupIterator) Next() (*monitoringpb.Group, error) {
    method PageSize (line 345) | func (it *GroupIterator) PageSize() int {
    method SetPageSize (line 350) | func (it *GroupIterator) SetPageSize(pageSize int) {
    method SetPageToken (line 359) | func (it *GroupIterator) SetPageToken(token string) {
    method NextPageToken (line 365) | func (it *GroupIterator) NextPageToken() string {
  type MonitoredResourceIterator (line 370) | type MonitoredResourceIterator struct
    method NextPage (line 389) | func (it *MonitoredResourceIterator) NextPage() ([]*monitoredrespb.Mon...
    method Next (line 413) | func (it *MonitoredResourceIterator) Next() (*monitoredrespb.Monitored...
    method PageSize (line 429) | func (it *MonitoredResourceIterator) PageSize() int {
    method SetPageSize (line 434) | func (it *MonitoredResourceIterator) SetPageSize(pageSize int) {
    method SetPageToken (line 443) | func (it *MonitoredResourceIterator) SetPageToken(token string) {
    method NextPageToken (line 449) | func (it *MonitoredResourceIterator) NextPageToken() string {

FILE: vendor/cloud.google.com/go/monitoring/apiv3/group_client_example_test.go
  function ExampleNewGroupClient (line 25) | func ExampleNewGroupClient() {
  function ExampleGroupClient_ListGroups (line 35) | func ExampleGroupClient_ListGroups() {
  function ExampleGroupClient_GetGroup (line 57) | func ExampleGroupClient_GetGroup() {
  function ExampleGroupClient_CreateGroup (line 75) | func ExampleGroupClient_CreateGroup() {
  function ExampleGroupClient_UpdateGroup (line 93) | func ExampleGroupClient_UpdateGroup() {
  function ExampleGroupClient_DeleteGroup (line 111) | func ExampleGroupClient_DeleteGroup() {
  function ExampleGroupClient_ListGroupMembers (line 127) | func ExampleGroupClient_ListGroupMembers() {

FILE: vendor/cloud.google.com/go/monitoring/apiv3/metric_client.go
  type MetricCallOptions (line 44) | type MetricCallOptions struct
  function defaultMetricClientOptions (line 55) | func defaultMetricClientOptions() []option.ClientOption {
  function defaultMetricCallOptions (line 62) | func defaultMetricCallOptions() *MetricCallOptions {
  type MetricClient (line 91) | type MetricClient struct
    method Connection (line 124) | func (c *MetricClient) Connection() *grpc.ClientConn {
    method Close (line 130) | func (c *MetricClient) Close() error {
    method SetGoogleClientInfo (line 137) | func (c *MetricClient) SetGoogleClientInfo(name, version string) {
    method ListMonitoredResourceDescriptors (line 179) | func (c *MetricClient) ListMonitoredResourceDescriptors(ctx context.Co...
    method GetMonitoredResourceDescriptor (line 205) | func (c *MetricClient) GetMonitoredResourceDescriptor(ctx context.Cont...
    method ListMetricDescriptors (line 220) | func (c *MetricClient) ListMetricDescriptors(ctx context.Context, req ...
    method GetMetricDescriptor (line 246) | func (c *MetricClient) GetMetricDescriptor(ctx context.Context, req *m...
    method CreateMetricDescriptor (line 263) | func (c *MetricClient) CreateMetricDescriptor(ctx context.Context, req...
    method DeleteMetricDescriptor (line 279) | func (c *MetricClient) DeleteMetricDescriptor(ctx context.Context, req...
    method ListTimeSeries (line 290) | func (c *MetricClient) ListTimeSeries(ctx context.Context, req *monito...
    method CreateTimeSeries (line 319) | func (c *MetricClient) CreateTimeSeries(ctx context.Context, req *moni...
  function NewMetricClient (line 109) | func NewMetricClient(ctx context.Context, opts ...option.ClientOption) (...
  function MetricProjectPath (line 144) | func MetricProjectPath(project string) string {
  function MetricMetricDescriptorPathPath (line 155) | func MetricMetricDescriptorPathPath(project string, metricDescriptorPath...
  function MetricMonitoredResourceDescriptorPath (line 167) | func MetricMonitoredResourceDescriptorPath(project string, monitoredReso...
  type MonitoredResourceDescriptorIterator (line 330) | type MonitoredResourceDescriptorIterator struct
    method NextPage (line 349) | func (it *MonitoredResourceDescriptorIterator) NextPage() ([]*monitore...
    method Next (line 373) | func (it *MonitoredResourceDescriptorIterator) Next() (*monitoredrespb...
    method PageSize (line 389) | func (it *MonitoredResourceDescriptorIterator) PageSize() int {
    method SetPageSize (line 394) | func (it *MonitoredResourceDescriptorIterator) SetPageSize(pageSize in...
    method SetPageToken (line 403) | func (it *MonitoredResourceDescriptorIterator) SetPageToken(token stri...
    method NextPageToken (line 409) | func (it *MonitoredResourceDescriptorIterator) NextPageToken() string {
  type MetricDescriptorIterator (line 414) | type MetricDescriptorIterator struct
    method NextPage (line 433) | func (it *MetricDescriptorIterator) NextPage() ([]*metricpb.MetricDesc...
    method Next (line 457) | func (it *MetricDescriptorIterator) Next() (*metricpb.MetricDescriptor...
    method PageSize (line 473) | func (it *MetricDescriptorIterator) PageSize() int {
    method SetPageSize (line 478) | func (it *MetricDescriptorIterator) SetPageSize(pageSize int) {
    method SetPageToken (line 487) | func (it *MetricDescriptorIterator) SetPageToken(token string) {
    method NextPageToken (line 493) | func (it *MetricDescriptorIterator) NextPageToken() string {
  type TimeSeriesIterator (line 498) | type TimeSeriesIterator struct
    method NextPage (line 517) | func (it *TimeSeriesIterator) NextPage() ([]*monitoringpb.TimeSeries, ...
    method Next (line 541) | func (it *TimeSeriesIterator) Next() (*monitoringpb.TimeSeries, error) {
    method PageSize (line 557) | func (it *TimeSeriesIterator) PageSize() int {
    method SetPageSize (line 562) | func (it *TimeSeriesIterator) SetPageSize(pageSize int) {
    method SetPageToken (line 571) | func (it *TimeSeriesIterator) SetPageToken(token string) {
    method NextPageToken (line 577) | func (it *TimeSeriesIterator) NextPageToken() string {

FILE: vendor/cloud.google.com/go/monitoring/apiv3/metric_client_example_test.go
  function ExampleNewMetricClient (line 25) | func ExampleNewMetricClient() {
  function ExampleMetricClient_ListMonitoredResourceDescriptors (line 35) | func ExampleMetricClient_ListMonitoredResourceDescriptors() {
  function ExampleMetricClient_GetMonitoredResourceDescriptor (line 57) | func ExampleMetricClient_GetMonitoredResourceDescriptor() {
  function ExampleMetricClient_ListMetricDescriptors (line 75) | func ExampleMetricClient_ListMetricDescriptors() {
  function ExampleMetricClient_GetMetricDescriptor (line 97) | func ExampleMetricClient_GetMetricDescriptor() {
  function ExampleMetricClient_CreateMetricDescriptor (line 115) | func ExampleMetricClient_CreateMetricDescriptor() {
  function ExampleMetricClient_DeleteMetricDescriptor (line 133) | func ExampleMetricClient_DeleteMetricDescriptor() {
  function ExampleMetricClient_ListTimeSeries (line 149) | func ExampleMetricClient_ListTimeSeries() {
  function ExampleMetricClient_CreateTimeSeries (line 171) | func ExampleMetricClient_CreateTimeSeries() {

FILE: vendor/cloud.google.com/go/monitoring/apiv3/monitoring.go
  constant gapicNameVersion (line 22) | gapicNameVersion = "gapic/0.1.0"

FILE: vendor/cloud.google.com/go/preview/logging/example_entry_iterator_test.go
  function ExampleClient_Entries (line 26) | func ExampleClient_Entries() {
  function ExampleFilter_timestamp (line 36) | func ExampleFilter_timestamp() {
  function ExampleEntryIterator_Next (line 49) | func ExampleEntryIterator_Next() {

FILE: vendor/cloud.google.com/go/preview/logging/example_metric_iterator_test.go
  function ExampleClient_Metrics (line 25) | func ExampleClient_Metrics() {
  function ExampleMetricIterator_Next (line 35) | func ExampleMetricIterator_Next() {

FILE: vendor/cloud.google.com/go/preview/logging/example_paging_test.go
  function ExampleClient_Entries_pagination (line 35) | func ExampleClient_Entries_pagination() {
  function handleEntries (line 67) | func handleEntries(w http.ResponseWriter, r *http.Request) {

FILE: vendor/cloud.google.com/go/preview/logging/example_resource_iterator_test.go
  function ExampleClient_ResourceDescriptors (line 25) | func ExampleClient_ResourceDescriptors() {
  function ExampleResourceDescriptorIterator_Next (line 35) | func ExampleResourceDescriptorIterator_Next() {

FILE: vendor/cloud.google.com/go/preview/logging/example_sink_iterator_test.go
  function ExampleClient_Sinks (line 25) | func ExampleClient_Sinks() {
  function ExampleSinkIterator_Next (line 35) | func ExampleSinkIterator_Next() {

FILE: vendor/cloud.google.com/go/preview/logging/examples_test.go
  function ExampleNewClient (line 25) | func ExampleNewClient() {
  function ExampleClient_Ping (line 38) | func ExampleClient_Ping() {
  function ExampleNewClient_errorFunc (line 49) | func ExampleNewClient_errorFunc() {
  function ExampleClient_DeleteLog (line 66) | func ExampleClient_DeleteLog() {
  function ExampleClient_Logger (line 78) | func ExampleClient_Logger() {
  function ExampleLogger_LogSync (line 88) | func ExampleLogger_LogSync() {
  function ExampleLogger_Log (line 101) | func ExampleLogger_Log() {
  function ExampleLogger_Flush (line 111) | func ExampleLogger_Flush() {
  function ExampleLogger_StandardLogger (line 122) | func ExampleLogger_StandardLogger() {
  function ExampleClient_CreateMetric (line 133) | func ExampleClient_CreateMetric() {
  function ExampleClient_DeleteMetric (line 149) | func ExampleClient_DeleteMetric() {
  function ExampleClient_Metric (line 160) | func ExampleClient_Metric() {
  function ExampleClient_UpdateMetric (line 173) | func ExampleClient_UpdateMetric() {
  function ExampleClient_CreateSink (line 189) | func ExampleClient_CreateSink() {
  function ExampleClient_DeleteSink (line 206) | func ExampleClient_DeleteSink() {
  function ExampleClient_Sink (line 217) | func ExampleClient_Sink() {
  function ExampleClient_UpdateSink (line 230) | func ExampleClient_UpdateSink() {
  function ExampleParseSeverity (line 247) | func ExampleParseSeverity() {

FILE: vendor/cloud.google.com/go/preview/logging/internal/testing/fake.go
  type loggingHandler (line 40) | type loggingHandler struct
    method DeleteLog (line 83) | func (h *loggingHandler) DeleteLog(_ context.Context, req *logpb.Delet...
    method WriteLogEntries (line 97) | func (h *loggingHandler) WriteLogEntries(_ context.Context, req *logpb...
    method ListLogEntries (line 134) | func (h *loggingHandler) ListLogEntries(_ context.Context, req *logpb....
    method filterEntries (line 184) | func (h *loggingHandler) filterEntries(filter string) ([]*logpb.LogEnt...
    method ListMonitoredResourceDescriptors (line 252) | func (h *loggingHandler) ListMonitoredResourceDescriptors(context.Cont...
  type configHandler (line 47) | type configHandler struct
    method GetSink (line 268) | func (h *configHandler) GetSink(_ context.Context, req *logpb.GetSinkR...
    method CreateSink (line 279) | func (h *configHandler) CreateSink(_ context.Context, req *logpb.Creat...
    method UpdateSink (line 291) | func (h *configHandler) UpdateSink(_ context.Context, req *logpb.Updat...
    method DeleteSink (line 300) | func (h *configHandler) DeleteSink(_ context.Context, req *logpb.Delet...
    method ListSinks (line 309) | func (h *configHandler) ListSinks(_ context.Context, req *logpb.ListSi...
  type metricHandler (line 54) | type metricHandler struct
    method GetLogMetric (line 337) | func (h *metricHandler) GetLogMetric(_ context.Context, req *logpb.Get...
    method CreateLogMetric (line 348) | func (h *metricHandler) CreateLogMetric(_ context.Context, req *logpb....
    method UpdateLogMetric (line 360) | func (h *metricHandler) UpdateLogMetric(_ context.Context, req *logpb....
    method DeleteLogMetric (line 369) | func (h *metricHandler) DeleteLogMetric(_ context.Context, req *logpb....
    method ListLogMetrics (line 378) | func (h *metricHandler) ListLogMetrics(_ context.Context, req *logpb.L...
  function NewServer (line 63) | func NewServer() (string, error) {
  constant validProjectID (line 93) | validProjectID = "PROJECT_ID"
  function getPage (line 166) | func getPage(pageSize int, pageToken string, length int) (from, to int, ...
  function parseFilter (line 202) | func parseFilter(filter string) (string, error) {
  function sortEntries (line 213) | func sortEntries(entries []*logpb.LogEntry, orderBy string) error {
  type byTimestamp (line 228) | type byTimestamp
    method Len (line 230) | func (s byTimestamp) Len() int      { return len(s) }
    method Swap (line 231) | func (s byTimestamp) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
    method Less (line 232) | func (s byTimestamp) Less(i, j int) bool {
  function compareTimestamps (line 244) | func compareTimestamps(ts1, ts2 *tspb.Timestamp) int64 {
  type sinksByName (line 330) | type sinksByName
    method Len (line 332) | func (s sinksByName) Len() int           { return len(s) }
    method Swap (line 333) | func (s sinksByName) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
    method Less (line 334) | func (s sinksByName) Less(i, j int) bool { return s[i].Name < s[j].Name }
  type metricsByName (line 399) | type metricsByName
    method Len (line 401) | func (s metricsByName) Len() int           { return len(s) }
    method Swap (line 402) | func (s metricsByName) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
    method Less (line 403) | func (s metricsByName) Less(i, j int) bool { return s[i].Name < s[j].N...
  function invalidArgument (line 405) | func invalidArgument(msg string) error {

FILE: vendor/cloud.google.com/go/preview/logging/internal/testing/fake_test.go
  function TestNewServer (line 32) | func TestNewServer(t *testing.T) {
  function TestParseFilter (line 47) | func TestParseFilter(t *testing.T) {
  function TestSortEntries (line 76) | func TestSortEntries(t *testing.T) {

FILE: vendor/cloud.google.com/go/preview/logging/logging.go
  constant prodAddr (line 66) | prodAddr = "logging.googleapis.com:443"
  constant version (line 67) | version  = "0.2.0"
  constant ReadScope (line 72) | ReadScope = "https://www.googleapis.com/auth/logging.read"
  constant WriteScope (line 75) | WriteScope = "https://www.googleapis.com/auth/logging.write"
  constant AdminScope (line 78) | AdminScope = "https://www.googleapis.com/auth/logging.admin"
  constant defaultErrorCapacity (line 84) | defaultErrorCapacity = 10
  constant DefaultDelayThreshold (line 87) | DefaultDelayThreshold = time.Second
  constant DefaultEntryCountThreshold (line 90) | DefaultEntryCountThreshold = 10
  constant DefaultEntryByteThreshold (line 93) | DefaultEntryByteThreshold = 1 << 20
  constant DefaultBufferedByteLimit (line 96) | DefaultBufferedByteLimit = 1 << 30
  type Client (line 104) | type Client struct
    method parent (line 181) | func (c *Client) parent() string {
    method Ping (line 198) | func (c *Client) Ping(ctx context.Context) error {
    method Logger (line 316) | func (c *Client) Logger(logID string, opts ...LoggerOption) *Logger {
    method logPath (line 348) | func (c *Client) logPath(logID string) string {
    method DeleteLog (line 368) | func (c *Client) DeleteLog(ctx context.Context, logID string) error {
    method Close (line 375) | func (c *Client) Close() error {
    method Entries (line 752) | func (c *Client) Entries(ctx context.Context, opts ...EntriesOption) *...
  function NewClient (line 130) | func NewClient(ctx context.Context, projectID string, opts ...option.Cli...
  function init (line 187) | func init() {
  type Logger (line 214) | type Logger struct
    method LogSync (line 638) | func (l *Logger) LogSync(ctx context.Context, e Entry) error {
    method Log (line 653) | func (l *Logger) Log(e Entry) {
    method Flush (line 665) | func (l *Logger) Flush() {
    method writeLogEntries (line 669) | func (l *Logger) writeLogEntries(ctx context.Context, entries []*logpb...
    method error (line 684) | func (l *Logger) error(err error) {
    method StandardLogger (line 696) | func (l *Logger) StandardLogger(s Severity) *log.Logger { return l.std...
  type LoggerOption (line 226) | type LoggerOption interface
  function CommonResource (line 233) | func CommonResource(r *mrpb.MonitoredResource) LoggerOption { return com...
  type commonResource (line 235) | type commonResource struct
    method set (line 237) | func (r commonResource) set(l *Logger) { l.commonResource = r.Monitore...
  function CommonLabels (line 244) | func CommonLabels(m map[string]string) LoggerOption { return commonLabel...
  type commonLabels (line 246) | type commonLabels
    method set (line 248) | func (c commonLabels) set(l *Logger) { l.commonLabels = c }
  function DelayThreshold (line 256) | func DelayThreshold(d time.Duration) LoggerOption { return delayThreshol...
  type delayThreshold (line 258) | type delayThreshold
    method set (line 260) | func (d delayThreshold) set(l *Logger) { l.bundler.DelayThreshold = ti...
  function EntryCountThreshold (line 268) | func EntryCountThreshold(n int) LoggerOption { return entryCountThreshol...
  type entryCountThreshold (line 270) | type entryCountThreshold
    method set (line 272) | func (e entryCountThreshold) set(l *Logger) { l.bundler.BundleCountThr...
  function EntryByteThreshold (line 279) | func EntryByteThreshold(n int) LoggerOption { return entryByteThreshold(...
  type entryByteThreshold (line 281) | type entryByteThreshold
    method set (line 283) | func (e entryByteThreshold) set(l *Logger) { l.bundler.BundleByteThres...
  function EntryByteLimit (line 291) | func EntryByteLimit(n int) LoggerOption { return entryByteLimit(n) }
  type entryByteLimit (line 293) | type entryByteLimit
    method set (line 295) | func (e entryByteLimit) set(l *Logger) { l.bundler.BundleByteLimit = i...
  function BufferedByteLimit (line 305) | func BufferedByteLimit(n int) LoggerOption { return bufferedByteLimit(n) }
  type bufferedByteLimit (line 307) | type bufferedByteLimit
    method set (line 309) | func (b bufferedByteLimit) set(l *Logger) { l.bundler.BufferedByteLimi...
  type severityWriter (line 353) | type severityWriter struct
    method Write (line 358) | func (w severityWriter) Write(p []byte) (n int, err error) {
  type Severity (line 395) | type Severity
    method String (line 431) | func (v Severity) String() string {
  constant Default (line 399) | Default = Severity(logtypepb.LogSeverity_DEFAULT)
  constant Debug (line 401) | Debug = Severity(logtypepb.LogSeverity_DEBUG)
  constant Info (line 403) | Info = Severity(logtypepb.LogSeverity_INFO)
  constant Notice (line 405) | Notice = Severity(logtypepb.LogSeverity_NOTICE)
  constant Warning (line 407) | Warning = Severity(logtypepb.LogSeverity_WARNING)
  constant Error (line 409) | Error = Severity(logtypepb.LogSeverity_ERROR)
  constant Critical (line 411) | Critical = Severity(logtypepb.LogSeverity_CRITICAL)
  constant Alert (line 413) | Alert = Severity(logtypepb.LogSeverity_ALERT)
  constant Emergency (line 415) | Emergency = Severity(logtypepb.LogSeverity_EMERGENCY)
  function ParseSeverity (line 442) | func ParseSeverity(s string) Severity {
  type Entry (line 454) | type Entry struct
  type HTTPRequest (line 501) | type HTTPRequest struct
  function fromHTTPRequest (line 531) | func fromHTTPRequest(r *HTTPRequest) *logtypepb.HttpRequest {
  function toHTTPRequest (line 554) | func toHTTPRequest(p *logtypepb.HttpRequest) (*HTTPRequest, error) {
  function toProtoStruct (line 586) | func toProtoStruct(v interface{}) (*structpb.Struct, error) {
  function jsonMapToProtoStruct (line 603) | func jsonMapToProtoStruct(m map[string]interface{}) *structpb.Struct {
  function jsonValueToStructValue (line 611) | func jsonValueToStructValue(v interface{}) *structpb.Value {
  type EntriesOption (line 699) | type EntriesOption interface
  function ProjectIDs (line 705) | func ProjectIDs(pids []string) EntriesOption { return projectIDs(pids) }
  type projectIDs (line 707) | type projectIDs
    method set (line 709) | func (p projectIDs) set(r *logpb.ListLogEntriesRequest) { r.ProjectIds...
  function Filter (line 723) | func Filter(f string) EntriesOption { return filter(f) }
  type filter (line 725) | type filter
    method set (line 727) | func (f filter) set(r *logpb.ListLogEntriesRequest) { r.Filter = strin...
  function NewestFirst (line 731) | func NewestFirst() EntriesOption { return newestFirst{} }
  type newestFirst (line 733) | type newestFirst struct
    method set (line 735) | func (newestFirst) set(r *logpb.ListLogEntriesRequest) { r.OrderBy = "...
  function OrderBy (line 743) | func OrderBy(ob string) EntriesOption { return orderBy(ob) }
  type orderBy (line 745) | type orderBy
    method set (line 747) | func (o orderBy) set(r *logpb.ListLogEntriesRequest) { r.OrderBy = str...
  function listLogEntriesRequest (line 765) | func listLogEntriesRequest(projectID string, opts []EntriesOption) *logp...
  type EntryIterator (line 776) | type EntryIterator struct
    method PageInfo (line 786) | func (it *EntryIterator) PageInfo() *iterator.PageInfo { return it.pag...
    method Next (line 791) | func (it *EntryIterator) Next() (*Entry, error) {
    method fetch (line 800) | func (it *EntryIterator) fetch(pageSize int, pageToken string) (string...
  function trunc32 (line 825) | func trunc32(i int) int32 {
  function toLogEntry (line 832) | func toLogEntry(e Entry) (*logpb.LogEntry, error) {
  function fromLogEntry (line 868) | func fromLogEntry(le *logpb.LogEntry) (*Entry, error) {

FILE: vendor/cloud.google.com/go/preview/logging/logging_test.go
  constant testLogIDPrefix (line 47) | testLogIDPrefix = "GO-LOGGING-CLIENT/TEST-LOG"
  function testNow (line 65) | func testNow() time.Time {
  function TestMain (line 72) | func TestMain(m *testing.M) {
  function waitFor (line 140) | func waitFor(f func() bool) {
  function initLogs (line 155) | func initLogs(ctx context.Context) {
  function TestLoggerCreation (line 160) | func TestLoggerCreation(t *testing.T) {
  function TestLogSync (line 219) | func TestLogSync(t *testing.T) {
  function compareEntries (line 255) | func compareEntries(got, want []*Entry) (string, bool) {
  function entryForTesting (line 267) | func entryForTesting(payload interface{}) *Entry {
  function countLogEntries (line 276) | func countLogEntries(ctx context.Context, filter string) int {
  function allTestLogEntries (line 291) | func allTestLogEntries(ctx context.Context) ([]*Entry, error) {
  function cleanNext (line 307) | func cleanNext(it *EntryIterator) (*Entry, error) {
  function TestLogAndEntries (line 316) | func TestLogAndEntries(t *testing.T) {
  function TestStandardLogger (line 344) | func TestStandardLogger(t *testing.T) {
  function TestToProtoStruct (line 379) | func TestToProtoStruct(t *testing.T) {
  function textPayloads (line 428) | func textPayloads(req *logpb.WriteLogEntriesRequest) []string {
  function TestFromLogEntry (line 439) | func TestFromLogEntry(t *testing.T) {
  function TestListLogEntriesRequest (line 520) | func TestListLogEntriesRequest(t *testing.T) {
  function TestSeverity (line 554) | func TestSeverity(t *testing.T) {
  function TestParseSeverity (line 563) | func TestParseSeverity(t *testing.T) {
  function TestErrors (line 582) | func TestErrors(t *testing.T) {
  type badTokenSource (line 603) | type badTokenSource struct
    method Token (line 605) | func (badTokenSource) Token() (*oauth2.Token, error) {
  function TestPing (line 609) | func TestPing(t *testing.T) {
  function TestFromHTTPRequest (line 646) | func TestFromHTTPRequest(t *testing.T) {
  function deleteLog (line 687) | func deleteLog(ctx context.Context, logID string) {

FILE: vendor/cloud.google.com/go/preview/logging/metrics.go
  type Metric (line 32) | type Metric struct
  method CreateMetric (line 51) | func (c *Client) CreateMetric(ctx context.Context, m *Metric) error {
  method DeleteMetric (line 61) | func (c *Client) DeleteMetric(ctx context.Context, metricID string) error {
  method Metric (line 70) | func (c *Client) Metric(ctx context.Context, metricID string) (*Metric, ...
  method UpdateMetric (line 82) | func (c *Client) UpdateMetric(ctx context.Context, m *Metric) error {
  method metricPath (line 90) | func (c *Client) metricPath(metricID string) string {
  method Metrics (line 96) | func (c *Client) Metrics(ctx context.Context) *MetricIterator {
  type MetricIterator (line 110) | type MetricIterator struct
    method PageInfo (line 120) | func (it *MetricIterator) PageInfo() *iterator.PageInfo { return it.pa...
    method Next (line 125) | func (it *MetricIterator) Next() (*Metric, error) {
    method fetch (line 134) | func (it *MetricIterator) fetch(pageSize int, pageToken string) (strin...
  function toLogMetric (line 155) | func toLogMetric(m *Metric) *logpb.LogMetric {
  function fromLogMetric (line 163) | func fromLogMetric(lm *logpb.LogMetric) *Metric {

FILE: vendor/cloud.google.com/go/preview/logging/metrics_test.go
  constant testMetricIDPrefix (line 27) | testMetricIDPrefix = "GO-CLIENT-TEST-METRIC"
  function initMetrics (line 30) | func initMetrics(ctx context.Context) {
  function TestCreateDeleteMetric (line 52) | func TestCreateDeleteMetric(t *testing.T) {
  function TestUpdateMetric (line 81) | func TestUpdateMetric(t *testing.T) {
  function TestListMetrics (line 116) | func TestListMetrics(t *testing.T) {

FILE: vendor/cloud.google.com/go/preview/logging/resources.go
  method ResourceDescriptors (line 31) | func (c *Client) ResourceDescriptors(ctx context.Context) *ResourceDescr...
  type ResourceDescriptorIterator (line 45) | type ResourceDescriptorIterator struct
    method Next (line 57) | func (it *ResourceDescriptorIterator) Next() (*mrpb.MonitoredResourceD...
    method fetch (line 66) | func (it *ResourceDescriptorIterator) fetch(pageSize int, pageToken st...

FILE: vendor/cloud.google.com/go/preview/logging/resources_test.go
  function TestMonitoredResourceDescriptors (line 24) | func TestMonitoredResourceDescriptors(t *testing.T) {

FILE: vendor/cloud.google.com/go/preview/logging/sinks.go
  type Sink (line 34) | type Sink struct
  method CreateSink (line 57) | func (c *Client) CreateSink(ctx context.Context, sink *Sink) (*Sink, err...
  method DeleteSink (line 72) | func (c *Client) DeleteSink(ctx context.Context, sinkID string) error {
  method Sink (line 81) | func (c *Client) Sink(ctx context.Context, sinkID string) (*Sink, error) {
  method UpdateSink (line 93) | func (c *Client) UpdateSink(ctx context.Context, sink *Sink) (*Sink, err...
  method sinkPath (line 104) | func (c *Client) sinkPath(sinkID string) string {
  method Sinks (line 110) | func (c *Client) Sinks(ctx context.Context) *SinkIterator {
  type SinkIterator (line 124) | type SinkIterator struct
    method PageInfo (line 134) | func (it *SinkIterator) PageInfo() *iterator.PageInfo { return it.page...
    method Next (line 139) | func (it *SinkIterator) Next() (*Sink, error) {
    method fetch (line 148) | func (it *SinkIterator) fetch(pageSize int, pageToken string) (string,...
  function toLogSink (line 169) | func toLogSink(s *Sink) *logpb.LogSink {
  function fromLogSink (line 178) | func fromLogSink(ls *logpb.LogSink) *Sink {

FILE: vendor/cloud.google.com/go/preview/logging/sinks_test.go
  constant testSinkIDPrefix (line 33) | testSinkIDPrefix = "GO-CLIENT-TEST-SINK"
  function initSinks (line 39) | func initSinks(ctx context.Context) func() {
  function sinkIDs (line 81) | func sinkIDs(ctx context.Context) []string {
  function bucketNames (line 101) | func bucketNames(ctx context.Context, client *storage.Client) []string {
  function TestCreateDeleteSink (line 120) | func TestCreateDeleteSink(t *testing.T) {
  function TestUpdateSink (line 152) | func TestUpdateSink(t *testing.T) {
  function TestListSinks (line 191) | func TestListSinks(t *testing.T) {

FILE: vendor/cloud.google.com/go/preview/logging/unique_test.go
  function uniqueID (line 39) | func uniqueID(prefix string) string {
  function expiredUniqueIDs (line 47) | func expiredUniqueIDs(ids []string, prefix string) []string {
  function extractTime (line 61) | func extractTime(s, prefix string) (time.Time, bool) {
  function TestExtractTime (line 77) | func TestExtractTime(t *testing.T) {
  function TestExpiredUniqueIDs (line 99) | func TestExpiredUniqueIDs(t *testing.T) {

FILE: vendor/cloud.google.com/go/pubsub/acker.go
  type ackBuffer (line 25) | type ackBuffer struct
    method Add (line 36) | func (buf *ackBuffer) Add(ackID string) {
    method RemoveAll (line 48) | func (buf *ackBuffer) RemoveAll() []string {
    method SendNotifications (line 59) | func (buf *ackBuffer) SendNotifications() {
    method notify (line 70) | func (buf *ackBuffer) notify() {
  type acker (line 80) | type acker struct
    method Start (line 99) | func (a *acker) Start() {
    method Ack (line 122) | func (a *acker) Ack(ackID string) {
    method FastMode (line 128) | func (a *acker) FastMode() {
    method Stop (line 133) | func (a *acker) Stop() {
    method ack (line 143) | func (a *acker) ack(ids []string) {
  constant maxAckAttempts (line 138) | maxAckAttempts = 2

FILE: vendor/cloud.google.com/go/pubsub/acker_test.go
  function TestAcker (line 27) | func TestAcker(t *testing.T) {
  function TestAckerFastMode (line 77) | func TestAckerFastMode(t *testing.T) {
  function TestAckerStop (line 127) | func TestAckerStop(t *testing.T) {
  type ackCallResult (line 166) | type ackCallResult struct
  type ackService (line 171) | type ackService struct
    method acknowledge (line 179) | func (as *ackService) acknowledge(ctx context.Context, subName string,...
    method splitAckIDs (line 193) | func (as *ackService) splitAckIDs(ids []string) ([]string, []string) {
  function TestAckerSplitsBatches (line 200) | func TestAckerSplitsBatches(t *testing.T) {

FILE: vendor/cloud.google.com/go/pubsub/apiv1/publisher_client.go
  type PublisherCallOptions (line 41) | type PublisherCallOptions struct
  function defaultPublisherClientOptions (line 50) | func defaultPublisherClientOptions() []option.ClientOption {
  function defaultPublisherCallOptions (line 60) | func defaultPublisherCallOptions() *PublisherCallOptions {
  type PublisherClient (line 99) | type PublisherClient struct
    method Connection (line 132) | func (c *PublisherClient) Connection() *grpc.ClientConn {
    method Close (line 138) | func (c *PublisherClient) Close() error {
    method SetGoogleClientInfo (line 145) | func (c *PublisherClient) SetGoogleClientInfo(name, version string) {
    method CreateTopic (line 175) | func (c *PublisherClient) CreateTopic(ctx context.Context, req *pubsub...
    method Publish (line 192) | func (c *PublisherClient) Publish(ctx context.Context, req *pubsubpb.P...
    method GetTopic (line 207) | func (c *PublisherClient) GetTopic(ctx context.Context, req *pubsubpb....
    method ListTopics (line 222) | func (c *PublisherClient) ListTopics(ctx context.Context, req *pubsubp...
    method ListTopicSubscriptions (line 248) | func (c *PublisherClient) ListTopicSubscriptions(ctx context.Context, ...
    method DeleteTopic (line 278) | func (c *PublisherClient) DeleteTopic(ctx context.Context, req *pubsub...
  function NewPublisherClient (line 117) | func NewPublisherClient(ctx context.Context, opts ...option.ClientOption...
  function PublisherProjectPath (line 152) | func PublisherProjectPath(project string) string {
  function PublisherTopicPath (line 163) | func PublisherTopicPath(project string, topic string) string {
  type TopicIterator (line 289) | type TopicIterator struct
    method NextPage (line 308) | func (it *TopicIterator) NextPage() ([]*pubsubpb.Topic, error) {
    method Next (line 332) | func (it *TopicIterator) Next() (*pubsubpb.Topic, error) {
    method PageSize (line 348) | func (it *TopicIterator) PageSize() int {
    method SetPageSize (line 353) | func (it *TopicIterator) SetPageSize(pageSize int) {
    method SetPageToken (line 362) | func (it *TopicIterator) SetPageToken(token string) {
    method NextPageToken (line 368) | func (it *TopicIterator) NextPageToken() string {
  type StringIterator (line 373) | type StringIterator struct
    method NextPage (line 392) | func (it *StringIterator) NextPage() ([]string, error) {
    method Next (line 416) | func (it *StringIterator) Next() (string, error) {
    method PageSize (line 432) | func (it *StringIterator) PageSize() int {
    method SetPageSize (line 437) | func (it *StringIterator) SetPageSize(pageSize int) {
    method SetPageToken (line 446) | func (it *StringIterator) SetPageToken(token string) {
    method NextPageToken (line 452) | func (it *StringIterator) NextPageToken() string {

FILE: vendor/cloud.google.com/go/pubsub/apiv1/publisher_client_example_test.go
  function ExampleNewPublisherClient (line 25) | func ExampleNewPublisherClient() {
  function ExamplePublisherClient_CreateTopic (line 35) | func ExamplePublisherClient_CreateTopic() {
  function ExamplePublisherClient_Publish (line 53) | func ExamplePublisherClient_Publish() {
  function ExamplePublisherClient_GetTopic (line 71) | func ExamplePublisherClient_GetTopic() {
  function ExamplePublisherClient_ListTopics (line 89) | func ExamplePublisherClient_ListTopics() {
  function ExamplePublisherClient_ListTopicSubscriptions (line 111) | func ExamplePublisherClient_ListTopicSubscriptions() {
  function ExamplePublisherClient_DeleteTopic (line 133) | func ExamplePublisherClient_DeleteTopic() {

FILE: vendor/cloud.google.com/go/pubsub/apiv1/pubsub.go
  constant gapicNameVersion (line 22) | gapicNameVersion = "gapic/0.1.0"

FILE: vendor/cloud.google.com/go/pubsub/apiv1/subscriber_client.go
  type SubscriberCallOptions (line 42) | type SubscriberCallOptions struct
  function defaultSubscriberClientOptions (line 53) | func defaultSubscriberClientOptions() []option.ClientOption {
  function defaultSubscriberCallOptions (line 63) | func defaultSubscriberCallOptions() *SubscriberCallOptions {
  type SubscriberClient (line 92) | type SubscriberClient struct
    method Connection (line 125) | func (c *SubscriberClient) Connection() *grpc.ClientConn {
    method Close (line 131) | func (c *SubscriberClient) Close() error {
    method SetGoogleClientInfo (line 138) | func (c *SubscriberClient) SetGoogleClientInfo(name, version string) {
    method CreateSubscription (line 185) | func (c *SubscriberClient) CreateSubscription(ctx context.Context, req...
    method GetSubscription (line 200) | func (c *SubscriberClient) GetSubscription(ctx context.Context, req *p...
    method ListSubscriptions (line 215) | func (c *SubscriberClient) ListSubscriptions(ctx context.Context, req ...
    method DeleteSubscription (line 245) | func (c *SubscriberClient) DeleteSubscription(ctx context.Context, req...
    method ModifyAckDeadline (line 259) | func (c *SubscriberClient) ModifyAckDeadline(ctx context.Context, req ...
    method Acknowledge (line 276) | func (c *SubscriberClient) Acknowledge(ctx context.Context, req *pubsu...
    method Pull (line 290) | func (c *SubscriberClient) Pull(ctx context.Context, req *pubsubpb.Pul...
    method ModifyPushConfig (line 310) | func (c *SubscriberClient) ModifyPushConfig(ctx context.Context, req *...
  function NewSubscriberClient (line 110) | func NewSubscriberClient(ctx context.Context, opts ...option.ClientOptio...
  function SubscriberProjectPath (line 145) | func SubscriberProjectPath(project string) string {
  function SubscriberSubscriptionPath (line 156) | func SubscriberSubscriptionPath(project string, subscription string) str...
  function SubscriberTopicPath (line 168) | func SubscriberTopicPath(project string, topic string) string {
  type SubscriptionIterator (line 321) | type SubscriptionIterator struct
    method NextPage (line 340) | func (it *SubscriptionIterator) NextPage() ([]*pubsubpb.Subscription, ...
    method Next (line 364) | func (it *SubscriptionIterator) Next() (*pubsubpb.Subscription, error) {
    method PageSize (line 380) | func (it *SubscriptionIterator) PageSize() int {
    method SetPageSize (line 385) | func (it *SubscriptionIterator) SetPageSize(pageSize int) {
    method SetPageToken (line 394) | func (it *SubscriptionIterator) SetPageToken(token string) {
    method NextPageToken (line 400) | func (it *SubscriptionIterator) NextPageToken() string {

FILE: vendor/cloud.google.com/go/pubsub/apiv1/subscriber_client_example_test.go
  function ExampleNewSubscriberClient (line 25) | func ExampleNewSubscriberClient() {
  function ExampleSubscriberClient_CreateSubscription (line 35) | func ExampleSubscriberClient_CreateSubscription() {
  function ExampleSubscriberClient_GetSubscription (line 53) | func ExampleSubscriberClient_GetSubscription() {
  function ExampleSubscriberClient_ListSubscriptions (line 71) | func ExampleSubscriberClient_ListSubscriptions() {
  function ExampleSubscriberClient_DeleteSubscription (line 93) | func ExampleSubscriberClient_DeleteSubscription() {
  function ExampleSubscriberClient_ModifyAckDeadline (line 109) | func ExampleSubscriberClient_ModifyAckDeadline() {
  function ExampleSubscriberClient_Acknowledge (line 125) | func ExampleSubscriberClient_Acknowledge() {
  function ExampleSubscriberClient_Pull (line 141) | func ExampleSubscriberClient_Pull() {
  function ExampleSubscriberClient_ModifyPushConfig (line 159) | func ExampleSubscriberClient_ModifyPushConfig() {

FILE: vendor/cloud.google.com/go/pubsub/endtoend_test.go
  constant timeout (line 31) | timeout = time.Minute * 10
  constant ackDeadline (line 32) | ackDeadline = time.Second * 10
  constant batchSize (line 34) | batchSize = 100
  constant batches (line 35) | batches = 100
  type messageCounter (line 38) | type messageCounter struct
    method Inc (line 45) | func (mc *messageCounter) Inc(msgID string) {
  function process (line 53) | func process(t *testing.T, it *MessageIterator, mc *messageCounter) {
  function newIter (line 76) | func newIter(t *testing.T, ctx context.Context, sub *Subscription) *Mess...
  function launchIter (line 85) | func launchIter(t *testing.T, ctx context.Context, it *MessageIterator, ...
  type iteratorLifetimes (line 96) | type iteratorLifetimes interface
  type explicitLifetimes (line 106) | type explicitLifetimes struct
    method lifetimeChan (line 111) | func (el *explicitLifetimes) lifetimeChan() <-chan time.Time {
  type consumer (line 123) | type consumer struct
    method consume (line 134) | func (c *consumer) consume(t *testing.T, ctx context.Context, sub *Sub...
  function publish (line 157) | func publish(t *testing.T, ctx context.Context, topic *Topic) []string {
  function diff (line 175) | func diff(got, want map[string]int) map[string]int {
  function TestEndToEnd (line 197) | func TestEndToEnd(t *testing.T) {

FILE: vendor/cloud.google.com/go/pubsub/example_subscription_iterator_test.go
  function ExampleClient_Subscriptions (line 25) | func ExampleClient_Subscriptions() {
  function ExampleSubscriptionIterator_Next (line 36) | func ExampleSubscriptionIterator_Next() {

FILE: vendor/cloud.google.com/go/pubsub/example_test.go
  function ExampleNewClient (line 26) | func ExampleNewClient() {
  function ExampleClient_CreateTopic (line 36) | func ExampleClient_CreateTopic() {
  function ExampleClient_CreateSubscription (line 52) | func ExampleClient_CreateSubscription() {
  function ExampleTopic_Delete (line 75) | func ExampleTopic_Delete() {
  function ExampleTopic_Exists (line 88) | func ExampleTopic_Exists() {
  function ExampleTopic_Publish (line 105) | func ExampleTopic_Publish() {
  function ExampleTopic_Subscriptions (line 122) | func ExampleTopic_Subscriptions() {
  function ExampleSubscription_Delete (line 142) | func ExampleSubscription_Delete() {
  function ExampleSubscription_Exists (line 155) | func ExampleSubscription_Exists() {
  function ExampleSubscription_Config (line 172) | func ExampleSubscription_Config() {
  function ExampleSubscription_Pull (line 186) | func ExampleSubscription_Pull() {
  function ExampleSubscription_ModifyPushConfig (line 200) | func ExampleSubscription_ModifyPushConfig() {
  function ExampleMessageIterator_Next (line 212) | func ExampleMessageIterator_Next() {
  function ExampleMessageIterator_Stop_defer (line 242) | func ExampleMessageIterator_Stop_defer() {
  function ExampleMessageIterator_Stop_goroutine (line 261) | func ExampleMessageIterator_Stop_goroutine() *pubsub.MessageIterator {

FILE: vendor/cloud.google.com/go/pubsub/example_topic_iterator_test.go
  function ExampleClient_Topics (line 25) | func ExampleClient_Topics() {
  function ExampleTopicIterator_Next (line 35) | func ExampleTopicIterator_Next() {

FILE: vendor/cloud.google.com/go/pubsub/integration_test.go
  type messageData (line 31) | type messageData struct
  function extractMessageData (line 37) | func extractMessageData(m *Message) *messageData {
  function TestAll (line 45) | func TestAll(t *testing.T) {

FILE: vendor/cloud.google.com/go/pubsub/iterator.go
  type MessageIterator (line 28) | type MessageIterator struct
    method Next (line 95) | func (it *MessageIterator) Next() (*Message, error) {
    method Stop (line 118) | func (it *MessageIterator) Stop() {
    method done (line 154) | func (it *MessageIterator) done(ackID string, ack bool) {
  function newMessageIterator (line 50) | func newMessageIterator(ctx context.Context, s service, subName string, ...

FILE: vendor/cloud.google.com/go/pubsub/iterator_test.go
  function TestReturnsDoneOnStop (line 26) | func TestReturnsDoneOnStop(t *testing.T) {
  type blockingFetch (line 74) | type blockingFetch struct
    method fetchMessages (line 78) | func (s *blockingFetch) fetchMessages(ctx context.Context, subName str...
  type justInTimeFetch (line 85) | type justInTimeFetch struct
    method fetchMessages (line 89) | func (s *justInTimeFetch) fetchMessages(ctx context.Context, subName s...
    method splitAckIDs (line 101) | func (s *justInTimeFetch) splitAckIDs(ids []string) ([]string, []strin...
    method modifyAckDeadline (line 105) | func (s *justInTimeFetch) modifyAckDeadline(ctx context.Context, subNa...
  function TestAfterAbortReturnsNoMoreThanOneMessage (line 109) | func TestAfterAbortReturnsNoMoreThanOneMessage(t *testing.T) {
  function TestMultipleStopCallsBlockUntilMessageDone (line 204) | func TestMultipleStopCallsBlockUntilMessageDone(t *testing.T) {

FILE: vendor/cloud.google.com/go/pubsub/keepalive.go
  type keepAlive (line 27) | type keepAlive struct
    method Start (line 44) | func (ka *keepAlive) Start() {
    method Add (line 75) | func (ka *keepAlive) Add(ackID string) {
    method Remove (line 84) | func (ka *keepAlive) Remove(ackID string) {
    method Stop (line 96) | func (ka *keepAlive) Stop() {
    method getAckIDs (line 107) | func (ka *keepAlive) getAckIDs() (live, expired []string) {
    method extendDeadlines (line 124) | func (ka *keepAlive) extendDeadlines(ackIDs []string) {
  constant maxExtensionAttempts (line 122) | maxExtensionAttempts = 2
  type drain (line 149) | type drain struct
    method Drain (line 158) | func (d *drain) Drain() {
    method SetPending (line 164) | func (d *drain) SetPending(pending bool) {
    method closeIfDrained (line 169) | func (d *drain) closeIfDrained() {

FILE: vendor/cloud.google.com/go/pubsub/keepalive_test.go
  function TestKeepAliveExtendsDeadline (line 27) | func TestKeepAliveExtendsDeadline(t *testing.T) {
  function TestKeepAliveStopsWhenNoItem (line 75) | func TestKeepAliveStopsWhenNoItem(t *testing.T) {
  function TestKeepAliveStopsWhenItemsExpired (line 105) | func TestKeepAliveStopsWhenItemsExpired(t *testing.T) {
  function TestKeepAliveBlocksUntilAllItemsRemoved (line 146) | func TestKeepAliveBlocksUntilAllItemsRemoved(t *testing.T) {
  type extendCallResult (line 223) | type extendCallResult struct
  type extendService (line 229) | type extendService struct
    method modifyAckDeadline (line 237) | func (es *extendService) modifyAckDeadline(ctx context.Context, subNam...
    method splitAckIDs (line 251) | func (es *extendService) splitAckIDs(ids []string) ([]string, []string) {
  function TestKeepAliveSplitsBatches (line 258) | func TestKeepAliveSplitsBatches(t *testing.T) {

FILE: vendor/cloud.google.com/go/pubsub/message.go
  type Message (line 24) | type Message struct
    method Done (line 72) | func (m *Message) Done(ack bool) {
  function toMessage (line 48) | func toMessage(resp *raw.ReceivedMessage) (*Message, error) {

FILE: vendor/cloud.google.com/go/pubsub/pubsub.go
  constant ScopePubSub (line 32) | ScopePubSub = "https://www.googleapis.com/auth/pubsub"
  constant ScopeCloudPlatform (line 36) | ScopeCloudPlatform = "https://www.googleapis.com/auth/cloud-platform"
  constant prodAddr (line 39) | prodAddr = "https://pubsub.googleapis.com/"
  constant userAgent (line 40) | userAgent = "gcloud-golang-pubsub/20151008"
  type Client (line 44) | type Client struct
    method fullyQualifiedProjectName (line 85) | func (c *Client) fullyQualifiedProjectName() string {
  function NewClient (line 50) | func NewClient(ctx context.Context, projectID string, opts ...option.Cli...
  type pageToken (line 90) | type pageToken struct
    method set (line 95) | func (pt *pageToken) set(tok string) {
    method get (line 100) | func (pt *pageToken) get() string {
    method more (line 105) | func (pt *pageToken) more() bool {
  type stringsIterator (line 110) | type stringsIterator struct
    method Next (line 118) | func (si *stringsIterator) Next() (string, error) {

FILE: vendor/cloud.google.com/go/pubsub/puller.go
  type puller (line 24) | type puller struct
    method Next (line 65) | func (p *puller) Next() (*Message, error) {
    method Stop (line 105) | func (p *puller) Stop() {
  function newPuller (line 48) | func newPuller(s service, subName string, ctx context.Context, batchSize...
  constant maxPullAttempts (line 59) | maxPullAttempts = 2

FILE: vendor/cloud.google.com/go/pubsub/puller_test.go
  type fetchResult (line 25) | type fetchResult struct
  type fetcherService (line 30) | type fetcherService struct
    method fetchMessages (line 36) | func (s *fetcherService) fetchMessages(ctx context.Context, subName st...
  function TestPuller (line 46) | func TestPuller(t *testing.T) {
  function TestPullerAddsToKeepAlive (line 85) | func TestPullerAddsToKeepAlive(t *testing.T) {
  function TestPullerRetriesOnce (line 128) | func TestPullerRetriesOnce(t *testing.T) {

FILE: vendor/cloud.google.com/go/pubsub/service.go
  type service (line 32) | type service interface
  type apiService (line 60) | type apiService struct
    method createSubscription (line 74) | func (s *apiService) createSubscription(ctx context.Context, topicName...
    method getSubscriptionConfig (line 91) | func (s *apiService) getSubscriptionConfig(ctx context.Context, subNam...
    method listProjectSubscriptions (line 112) | func (s *apiService) listProjectSubscriptions(ctx context.Context, pro...
    method deleteSubscription (line 124) | func (s *apiService) deleteSubscription(ctx context.Context, name stri...
    method subscriptionExists (line 129) | func (s *apiService) subscriptionExists(ctx context.Context, name stri...
    method createTopic (line 140) | func (s *apiService) createTopic(ctx context.Context, name string) err...
    method listProjectTopics (line 148) | func (s *apiService) listProjectTopics(ctx context.Context, projName, ...
    method deleteTopic (line 160) | func (s *apiService) deleteTopic(ctx context.Context, name string) err...
    method topicExists (line 165) | func (s *apiService) topicExists(ctx context.Context, name string) (bo...
    method listTopicSubscriptions (line 176) | func (s *apiService) listTopicSubscriptions(ctx context.Context, topic...
    method modifyAckDeadline (line 188) | func (s *apiService) modifyAckDeadline(ctx context.Context, subName st...
    method splitAckIDs (line 207) | func (s *apiService) splitAckIDs(ids []string) ([]string, []string) {
    method acknowledge (line 218) | func (s *apiService) acknowledge(ctx context.Context, subName string, ...
    method fetchMessages (line 228) | func (s *apiService) fetchMessages(ctx context.Context, subName string...
    method publishMessages (line 252) | func (s *apiService) publishMessages(ctx context.Context, topicName st...
    method modifyPushConfig (line 272) | func (s *apiService) modifyPushConfig(ctx context.Context, subName str...
  function newPubSubService (line 64) | func newPubSubService(client *http.Client, endpoint string) (*apiService...
  type stringsPage (line 107) | type stringsPage struct
  constant maxPayload (line 203) | maxPayload = 500 * 1024
  constant overheadPerID (line 204) | overheadPerID = 3

FILE: vendor/cloud.google.com/go/pubsub/subscription.go
  constant DefaultMaxExtension (line 27) | DefaultMaxExtension = 10 * time.Minute
  constant DefaultMaxPrefetch (line 30) | DefaultMaxPrefetch = 100
  type Subscription (line 33) | type Subscription struct
    method String (line 49) | func (s *Subscription) String() string {
    method ID (line 54) | func (s *Subscription) ID() string {
    method Delete (line 113) | func (s *Subscription) Delete(ctx context.Context) error {
    method Exists (line 118) | func (s *Subscription) Exists(ctx context.Context) (bool, error) {
    method Config (line 123) | func (s *Subscription) Config(ctx context.Context) (*SubscriptionConfi...
    method Pull (line 144) | func (s *Subscription) Pull(ctx context.Context, opts ...PullOption) (...
    method ModifyPushConfig (line 155) | func (s *Subscription) ModifyPushConfig(ctx context.Context, conf *Pus...
  method Subscription (line 41) | func (c *Client) Subscription(id string) *Subscription {
  method Subscriptions (line 64) | func (c *Client) Subscriptions(ctx context.Context) *SubscriptionIterator {
  type SubscriptionIterator (line 77) | type SubscriptionIterator struct
    method Next (line 83) | func (subs *SubscriptionIterator) Next() (*Subscription, error) {
  type PushConfig (line 92) | type PushConfig struct
  type SubscriptionConfig (line 101) | type SubscriptionConfig struct
  type PullOption (line 164) | type PullOption interface
  type pullOptions (line 168) | type pullOptions struct
  function processPullOptions (line 182) | func processPullOptions(opts []PullOption) *pullOptions {
  type maxPrefetch (line 195) | type maxPrefetch
    method setOptions (line 197) | func (max maxPrefetch) setOptions(o *pullOptions) {
  function MaxPrefetch (line 210) | func MaxPrefetch(num int) PullOption {
  type maxExtension (line 214) | type maxExtension
    method setOptions (line 216) | func (max maxExtension) setOptions(o *pullOptions) {
  function MaxExtension (line 228) | func MaxExtension(duration time.Duration) PullOption {
  method CreateSubscription (line 254) | func (c *Client) CreateSubscription(ctx context.Context, id string, topi...

FILE: vendor/cloud.google.com/go/pubsub/subscription_test.go
  type subListCall (line 25) | type subListCall struct
  type subListService (line 31) | type subListService struct
    method listSubs (line 38) | func (s *subListService) listSubs(pageTok string) (*stringsPage, error) {
    method listProjectSubscriptions (line 52) | func (s *subListService) listProjectSubscriptions(ctx context.Context,...
    method listTopicSubscriptions (line 60) | func (s *subListService) listTopicSubscriptions(ctx context.Context, t...
  function slurpSubs (line 69) | func slurpSubs(it *SubscriptionIterator) ([]*Subscription, error) {
  function TestSubscriptionID (line 83) | func TestSubscriptionID(t *testing.T) {
  function TestListProjectSubscriptions (line 109) | func TestListProjectSubscriptions(t *testing.T) {
  function TestListTopicSubscriptions (line 140) | func TestListTopicSubscriptions(t *testing.T) {
  function subNames (line 171) | func subNames(subs []*Subscription) []string {

FILE: vendor/cloud.google.com/go/pubsub/topic.go
  constant MaxPublishBatchSize (line 24) | MaxPublishBatchSize = 1000
  type Topic (line 27) | type Topic struct
    method ID (line 83) | func (t *Topic) ID() string {
    method String (line 93) | func (t *Topic) String() string {
    method Delete (line 98) | func (t *Topic) Delete(ctx context.Context) error {
    method Exists (line 103) | func (t *Topic) Exists(ctx context.Context) (bool, error) {
    method Subscriptions (line 112) | func (t *Topic) Subscriptions(ctx context.Context) *SubscriptionIterat...
    method Publish (line 129) | func (t *Topic) Publish(ctx context.Context, msgs ...*Message) ([]stri...
  method CreateTopic (line 40) | func (c *Client) CreateTopic(ctx context.Context, id string) (*Topic, er...
  method Topic (line 47) | func (c *Client) Topic(id string) *Topic {
  method Topics (line 55) | func (c *Client) Topics(ctx context.Context) *TopicIterator {
  type TopicIterator (line 68) | type TopicIterator struct
    method Next (line 74) | func (tps *TopicIterator) Next() (*Topic, error) {

FILE: vendor/cloud.google.com/go/pubsub/topic_test.go
  type topicListCall (line 25) | type topicListCall struct
  type topicListService (line 31) | type topicListService struct
    method listProjectTopics (line 38) | func (s *topicListService) listProjectTopics(ctx context.Context, proj...
  function checkTopicListing (line 52) | func checkTopicListing(t *testing.T, calls []topicListCall, want []strin...
  function slurpTopics (line 69) | func slurpTopics(it *TopicIterator) ([]*Topic, error) {
  function TestTopicID (line 83) | func TestTopicID(t *testing.T) {
  function TestListTopics (line 109) | func TestListTopics(t *testing.T) {
  function TestListCompletelyEmptyTopics (line 138) | func TestListCompletelyEmptyTopics(t *testing.T) {
  function TestListFinalEmptyPage (line 148) | func TestListFinalEmptyPage(t *testing.T) {
  function topicNames (line 165) | func topicNames(topics []*Topic) []string {

FILE: vendor/cloud.google.com/go/pubsub/utils_test.go
  type modDeadlineCall (line 23) | type modDeadlineCall struct
  type acknowledgeCall (line 29) | type acknowledgeCall struct
  type testService (line 34) | type testService struct
    method modifyAckDeadline (line 44) | func (s *testService) modifyAckDeadline(ctx context.Context, subName s...
    method acknowledge (line 53) | func (s *testService) acknowledge(ctx context.Context, subName string,...
    method splitAckIDs (line 61) | func (s *testService) splitAckIDs(ids []string) ([]string, []string) {

FILE: vendor/cloud.google.com/go/speech/apiv1beta1/speech.go
  constant gapicNameVersion (line 20) | gapicNameVersion = "gapic/0.1.0"

FILE: vendor/cloud.google.com/go/speech/apiv1beta1/speech_client.go
  type CallOptions (line 36) | type CallOptions struct
  function defaultClientOptions (line 41) | func defaultClientOptions() []option.ClientOption {
  function defaultCallOptions (line 50) | func defaultCallOptions() *CallOptions {
  type Client (line 73) | type Client struct
    method Connection (line 105) | func (c *Client) Connection() *grpc.ClientConn {
    method Close (line 111) | func (c *Client) Close() error {
    method SetGoogleClientInfo (line 118) | func (c *Client) SetGoogleClientInfo(name, version string) {
    method SyncRecognize (line 126) | func (c *Client) SyncRecognize(ctx context.Context, req *speechpb.Sync...
    method AsyncRecognize (line 143) | func (c *Client) AsyncRecognize(ctx context.Context, req *speechpb.Asy...
  function NewClient (line 90) | func NewClient(ctx context.Context, opts ...option.ClientOption) (*Clien...

FILE: vendor/cloud.google.com/go/speech/apiv1beta1/speech_client_example_test.go
  function ExampleNewClient (line 25) | func ExampleNewClient() {
  function ExampleClient_SyncRecognize (line 35) | func ExampleClient_SyncRecognize() {
  function ExampleClient_AsyncRecognize (line 53) | func ExampleClient_AsyncRecognize() {

FILE: vendor/cloud.google.com/go/storage/acl.go
  type ACLRole (line 25) | type ACLRole
  constant RoleOwner (line 28) | RoleOwner  ACLRole = "OWNER"
  constant RoleReader (line 29) | RoleReader ACLRole = "READER"
  type ACLEntity (line 40) | type ACLEntity
  constant AllUsers (line 43) | AllUsers              ACLEntity = "allUsers"
  constant AllAuthenticatedUsers (line 44) | AllAuthenticatedUsers ACLEntity = "allAuthenticatedUsers"
  type ACLRule (line 48) | type ACLRule struct
  type ACLHandle (line 54) | type ACLHandle struct
    method Delete (line 62) | func (a *ACLHandle) Delete(ctx context.Context, entity ACLEntity) error {
    method Set (line 73) | func (a *ACLHandle) Set(ctx context.Context, entity ACLEntity, role AC...
    method List (line 84) | func (a *ACLHandle) List(ctx context.Context) ([]ACLRule, error) {
    method bucketDefaultList (line 94) | func (a *ACLHandle) bucketDefaultList(ctx context.Context) ([]ACLRule,...
    method bucketDefaultSet (line 102) | func (a *ACLHandle) bucketDefaultSet(ctx context.Context, entity ACLEn...
    method bucketDefaultDelete (line 115) | func (a *ACLHandle) bucketDefaultDelete(ctx context.Context, entity AC...
    method bucketList (line 123) | func (a *ACLHandle) bucketList(ctx context.Context) ([]ACLRule, error) {
    method bucketSet (line 136) | func (a *ACLHandle) bucketSet(ctx context.Context, entity ACLEntity, r...
    method bucketDelete (line 149) | func (a *ACLHandle) bucketDelete(ctx context.Context, entity ACLEntity...
    method objectList (line 157) | func (a *ACLHandle) objectList(ctx context.Context) ([]ACLRule, error) {
    method objectSet (line 165) | func (a *ACLHandle) objectSet(ctx context.Context, entity ACLEntity, r...
    method objectDelete (line 178) | func (a *ACLHandle) objectDelete(ctx context.Context, entity ACLEntity...
  function toACLRules (line 186) | func toACLRules(items []interface{}) []ACLRule {

FILE: vendor/cloud.google.com/go/storage/bucket.go
  method Create (line 29) | func (b *BucketHandle) Create(ctx context.Context, projectID string, att...
  method Delete (line 43) | func (b *BucketHandle) Delete(ctx context.Context) error {
  method ACL (line 51) | func (c *BucketHandle) ACL() *ACLHandle {
  method DefaultObjectACL (line 58) | func (c *BucketHandle) DefaultObjectACL() *ACLHandle {
  method Object (line 68) | func (b *BucketHandle) Object(name string) *ObjectHandle {
  method Attrs (line 82) | func (b *BucketHandle) Attrs(ctx context.Context) (*BucketAttrs, error) {
  type BucketAttrs (line 94) | type BucketAttrs struct
    method toRawBucket (line 152) | func (b *BucketAttrs) toRawBucket() *raw.Bucket {
  function newBucket (line 121) | func newBucket(b *raw.Bucket) *BucketAttrs {
  type ObjectList (line 174) | type ObjectList struct
  method List (line 193) | func (b *BucketHandle) List(ctx context.Context, q *Query) (*ObjectList,...
  method Objects (line 216) | func (b *BucketHandle) Objects(ctx context.Context, q *Query) *ObjectIte...
  type ObjectIterator (line 234) | type ObjectIterator struct
    method PageInfo (line 244) | func (it *ObjectIterator) PageInfo() *iterator.PageInfo { return it.pa...
    method Next (line 253) | func (it *ObjectIterator) Next() (*ObjectAttrs, error) {
    method fetch (line 262) | func (it *ObjectIterator) fetch(pageSize int, pageToken string) (strin...
  method Buckets (line 291) | func (c *Client) Buckets(ctx context.Context, projectID string) *BucketI...
  type BucketIterator (line 305) | type BucketIterator struct
    method Next (line 320) | func (it *BucketIterator) Next() (*BucketAttrs, error) {
    method PageInfo (line 330) | func (it *BucketIterator) PageInfo() *iterator.PageInfo { return it.pa...
    method fetch (line 332) | func (it *BucketIterator) fetch(pageSize int, pageToken string) (strin...

FILE: vendor/cloud.google.com/go/storage/example_test.go
  function ExampleNewClient (line 27) | func ExampleNewClient() {
  function ExampleNewClient_auth (line 41) | func ExampleNewClient_auth() {
  function ExampleBucketHandle_Create (line 59) | func ExampleBucketHandle_Create() {
  function ExampleBucketHandle_Delete (line 70) | func ExampleBucketHandle_Delete() {
  function ExampleBucketHandle_Attrs (line 81) | func ExampleBucketHandle_Attrs() {
  function ExampleBucketHandle_Objects (line 94) | func ExampleBucketHandle_Objects() {
  function ExampleObjectIterator_Next (line 104) | func ExampleObjectIterator_Next() {
  function ExampleSignedURL (line 123) | func ExampleSignedURL() {
  function ExampleObjectHandle_Attrs (line 140) | func ExampleObjectHandle_Attrs() {
  function ExampleObjectHandle_Attrs_withConditions (line 153) | func ExampleObjectHandle_Attrs_withConditions() {
  function ExampleObjectHandle_Update (line 175) | func ExampleObjectHandle_Update() {
  function ExampleBucketHandle_List (line 191) | func ExampleBucketHandle_List() {
  function ExampleObjectHandle_NewReader (line 217) | func ExampleObjectHandle_NewReader() {
  function ExampleObjectHandle_NewRangeReader (line 235) | func ExampleObjectHandle_NewRangeReader() {
  function ExampleObjectHandle_NewWriter (line 254) | func ExampleObjectHandle_NewWriter() {
  function ExampleObjectHandle_CopyTo (line 272) | func ExampleObjectHandle_CopyTo() {
  function ExampleObjectHandle_Delete (line 288) | func ExampleObjectHandle_Delete() {
  function ExampleACLHandle_Delete (line 317) | func ExampleACLHandle_Delete() {
  function ExampleACLHandle_Set (line 329) | func ExampleACLHandle_Set() {
  function ExampleACLHandle_List (line 342) | func ExampleACLHandle_List() {

FILE: vendor/cloud.google.com/go/storage/integration_test.go
  constant testPrefix (line 41) | testPrefix = "-go-cloud-storage-test"
  function TestMain (line 48) | func TestMain(m *testing.M) {
  function initIntegrationTest (line 60) | func initIntegrationTest() bool {
  function testConfig (line 80) | func testConfig(ctx context.Context, t *testing.T) (*Client, string) {
  function config (line 92) | func config(ctx context.Context) (*Client, string) {
  function TestBucketMethods (line 108) | func TestBucketMethods(t *testing.T) {
  function TestIntegration_ConditionalDelete (line 135) | func TestIntegration_ConditionalDelete(t *testing.T) {
  function TestObjects (line 168) | func TestObjects(t *testing.T) {
  function testBucketList (line 523) | func testBucketList(t *testing.T, bkt *BucketHandle, objects []string) {
  function testObjectIterator (line 549) | func testObjectIterator(t *testing.T, bkt *BucketHandle, objects []strin...
  function TestACL (line 575) | func TestACL(t *testing.T) {
  function hasRule (line 640) | func hasRule(acl []ACLRule, rule ACLRule) bool {
  function TestValidObjectNames (line 649) | func TestValidObjectNames(t *testing.T) {
  function TestWriterContentType (line 695) | func TestWriterContentType(t *testing.T) {
  function TestZeroSizedObject (line 744) | func TestZeroSizedObject(t *testing.T) {
  function cleanup (line 775) | func cleanup() error {
  function killBucket (line 815) | func killBucket(ctx context.Context, client *Client, bucketName string) ...
  function randomContents (line 840) | func randomContents() []byte {
  type zeros (line 846) | type zeros struct
    method Read (line 848) | func (zeros) Read(p []byte) (int, error) { return len(p), nil }

FILE: vendor/cloud.google.com/go/storage/reader.go
  type Reader (line 22) | type Reader struct
    method Close (line 28) | func (r *Reader) Close() error {
    method Read (line 32) | func (r *Reader) Read(p []byte) (int, error) {
    method Size (line 43) | func (r *Reader) Size() int64 {
    method Remain (line 48) | func (r *Reader) Remain() int64 {
    method ContentType (line 53) | func (r *Reader) ContentType() string {

FILE: vendor/cloud.google.com/go/storage/storage.go
  constant userAgent (line 58) | userAgent = "gcloud-golang-storage/20151204"
  constant ScopeFullControl (line 63) | ScopeFullControl = raw.DevstorageFullControlScope
  constant ScopeReadOnly (line 67) | ScopeReadOnly = raw.DevstorageReadOnlyScope
  constant ScopeReadWrite (line 71) | ScopeReadWrite = raw.DevstorageReadWriteScope
  type AdminClient (line 78) | type AdminClient struct
    method Close (line 98) | func (c *AdminClient) Close() error {
    method CreateBucket (line 106) | func (c *AdminClient) CreateBucket(ctx context.Context, bucketName str...
    method DeleteBucket (line 113) | func (c *AdminClient) DeleteBucket(ctx context.Context, bucketName str...
  function NewAdminClient (line 86) | func NewAdminClient(ctx context.Context, projectID string, opts ...optio...
  type Client (line 118) | type Client struct
    method Close (line 146) | func (c *Client) Close() error {
    method Bucket (line 167) | func (c *Client) Bucket(name string) *BucketHandle {
  function NewClient (line 125) | func NewClient(ctx context.Context, opts ...option.ClientOption) (*Clien...
  type BucketHandle (line 153) | type BucketHandle struct
  type SignedURLOptions (line 184) | type SignedURLOptions struct
  function SignedURL (line 252) | func SignedURL(bucket, name string, opts *SignedURLOptions) (string, err...
  type ObjectHandle (line 317) | type ObjectHandle struct
    method ACL (line 329) | func (o *ObjectHandle) ACL() *ACLHandle {
    method WithConditions (line 334) | func (o *ObjectHandle) WithConditions(conds ...Condition) *ObjectHandle {
    method Attrs (line 342) | func (o *ObjectHandle) Attrs(ctx context.Context) (*ObjectAttrs, error) {
    method Update (line 363) | func (o *ObjectHandle) Update(ctx context.Context, attrs ObjectAttrs) ...
    method Delete (line 382) | func (o *ObjectHandle) Delete(ctx context.Context) error {
    method CopyTo (line 404) | func (o *ObjectHandle) CopyTo(ctx context.Context, dst *ObjectHandle, ...
    method ComposeFrom (line 444) | func (o *ObjectHandle) ComposeFrom(ctx context.Context, srcs []*Object...
    method NewReader (line 491) | func (o *ObjectHandle) NewReader(ctx context.Context) (*Reader, error) {
    method NewRangeReader (line 498) | func (o *ObjectHandle) NewRangeReader(ctx context.Context, offset, len...
    method NewWriter (line 584) | func (o *ObjectHandle) NewWriter(ctx context.Context) *Writer {
  function parseKey (line 598) | func parseKey(key []byte) (*rsa.PrivateKey, error) {
  function toRawObjectACL (line 616) | func toRawObjectACL(oldACL []ACLRule) []*raw.ObjectAccessControl {
  type ObjectAttrs (line 647) | type ObjectAttrs struct
    method toRawObject (line 631) | func (o ObjectAttrs) toRawObject(bucket string) *raw.Object {
  function convertTime (line 737) | func convertTime(t string) time.Time {
  function newObject (line 745) | func newObject(o *raw.Object) *ObjectAttrs {
  type Query (line 790) | type Query struct
  type contentTyper (line 827) | type contentTyper struct
    method ContentType (line 832) | func (c *contentTyper) ContentType() string {
  type Condition (line 841) | type Condition interface
  function applyConds (line 849) | func applyConds(method string, conds []Condition, call interface{}) error {
  function toSourceConds (line 860) | func toSourceConds(conds []Condition) []Condition {
  function Generation (line 882) | func Generation(gen int64) Condition               { return genCond{"Gen...
  function IfGenerationMatch (line 883) | func IfGenerationMatch(gen int64) Condition        { return genCond{"IfG...
  function IfGenerationNotMatch (line 884) | func IfGenerationNotMatch(gen int64) Condition     { return genCond{"IfG...
  function IfMetaGenerationMatch (line 885) | func IfMetaGenerationMatch(gen int64) Con
Copy disabled (too large) Download .json
Condensed preview — 14216 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (119,833K chars).
[
  {
    "path": ".dockerignore",
    "chars": 13,
    "preview": "vendor\ngolib\n"
  },
  {
    "path": ".gitignore",
    "chars": 68,
    "preview": "*.swp\nbin/\n_dist/\n.idea\ngolib\nrelease\nout/\n_gopath/\n.DS_Store\nbuild\n"
  },
  {
    "path": ".travis.yml",
    "chars": 82,
    "preview": "language: go\ngo:\n- 1.7.1\ninstall:\n- echo \"Don't run anything.\"\nscript:\n- make test"
  },
  {
    "path": "Dockerfile",
    "chars": 117,
    "preview": "FROM scratch\n\nENTRYPOINT [\"/configmapcontroller\"]\n\nCOPY ./build/configmapcontroller-linux-amd64 /configmapcontroller\n"
  },
  {
    "path": "Jenkinsfile",
    "chars": 643,
    "preview": "#!/usr/bin/groovy\n@Library('github.com/fabric8io/fabric8-pipeline-library@master')\ndef dummy\ngoNode{\n  dockerNode{  \n   "
  },
  {
    "path": "LICENSE",
    "chars": 554,
    "preview": "Copyright 2016 Red Hat, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file "
  },
  {
    "path": "Makefile",
    "chars": 2845,
    "preview": "# Copyright (C) 2016 Red Hat, Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use"
  },
  {
    "path": "README.md",
    "chars": 979,
    "preview": "# configmapcontroller\n\nThis controller watches for changes to `ConfigMap` objects and performs rolling upgrades on their"
  },
  {
    "path": "client/client.go",
    "chars": 1485,
    "preview": "/**\n * Copyright (C) 2015 Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may"
  },
  {
    "path": "configmapcontroller.go",
    "chars": 2927,
    "preview": "package main\n\nimport (\n\t\"flag\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/http/pprof\"\n\t\"os\"\n\t\"os/signal\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/"
  },
  {
    "path": "controller/controller.go",
    "chars": 8159,
    "preview": "package controller\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/fabric8io/configmapcontroller/util\"\n\t\"github.com/"
  },
  {
    "path": "examples/deployment.yml",
    "chars": 529,
    "preview": "---\napiVersion: \"extensions/v1beta1\"\nkind: \"Deployment\"\nmetadata:\n  labels:\n    provider: \"fabric8\"\n    project: \"config"
  },
  {
    "path": "glide.yaml",
    "chars": 992,
    "preview": "package: github.com/fabric8io/configmapcontroller\nimport:\n- package: github.com/openshift/origin\n  version: v1.3.0\n  sub"
  },
  {
    "path": "tools/create-intellij-idea-golib.sh",
    "chars": 838,
    "preview": "#!/bin/bash\n\n# Build up a GOPATH directory for IntelliJ IDEA\n# which doesn't support GO15VENDOREXPERIMENT yet\n\n\npushd `d"
  },
  {
    "path": "util/types.go",
    "chars": 1407,
    "preview": "/**\n * Copyright (C) 2015 Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may"
  },
  {
    "path": "vendor/cloud.google.com/go/.travis.yml",
    "chars": 348,
    "preview": "sudo: false\nlanguage: go\ngo:\n- 1.6\n- 1.7\ninstall:\n- go get -v cloud.google.com/go/...\nscript:\n- openssl aes-256-cbc -K $"
  },
  {
    "path": "vendor/cloud.google.com/go/AUTHORS",
    "chars": 506,
    "preview": "# This is the official list of cloud authors for copyright purposes.\n# This file is distinct from the CONTRIBUTORS files"
  },
  {
    "path": "vendor/cloud.google.com/go/CONTRIBUTING.md",
    "chars": 5339,
    "preview": "# Contributing\n\n1. Sign one of the contributor license agreements below.\n1. `go get golang.org/x/review/git-codereview` "
  },
  {
    "path": "vendor/cloud.google.com/go/CONTRIBUTORS",
    "chars": 1210,
    "preview": "# People who have agreed to one of the CLAs and can contribute patches.\n# The AUTHORS file lists the copyright holders; "
  },
  {
    "path": "vendor/cloud.google.com/go/LICENSE",
    "chars": 11342,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "vendor/cloud.google.com/go/README.md",
    "chars": 9423,
    "preview": "# Google Cloud for Go\n\n[![Build Status](https://travis-ci.org/GoogleCloudPlatform/google-cloud-go.svg?branch=master)](ht"
  },
  {
    "path": "vendor/cloud.google.com/go/appveyor.yml",
    "chars": 2433,
    "preview": "# This file configures AppVeyor (http://www.appveyor.com),\n# a Windows-based CI service similar to Travis.\n\n# Identifier"
  },
  {
    "path": "vendor/cloud.google.com/go/authexample_test.go",
    "chars": 2206,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/bigquery.go",
    "chars": 5143,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/copy_op.go",
    "chars": 1386,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/copy_test.go",
    "chars": 2430,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/create_table_test.go",
    "chars": 2145,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/dataset.go",
    "chars": 4591,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/dataset_test.go",
    "chars": 5755,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/doc.go",
    "chars": 833,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/error.go",
    "chars": 2327,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/error_test.go",
    "chars": 2701,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/extract_op.go",
    "chars": 1760,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/extract_test.go",
    "chars": 2317,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/gcs.go",
    "chars": 4233,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/integration_test.go",
    "chars": 4239,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/iterator.go",
    "chars": 5901,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/iterator_test.go",
    "chars": 13109,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/job.go",
    "chars": 3795,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/legacy.go",
    "chars": 2905,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/load_op.go",
    "chars": 3900,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/load_test.go",
    "chars": 4566,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/query.go",
    "chars": 1478,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/query_op.go",
    "chars": 5127,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/query_test.go",
    "chars": 3956,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/read_op.go",
    "chars": 2237,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/read_test.go",
    "chars": 8380,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/schema.go",
    "chars": 6547,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/schema_test.go",
    "chars": 10480,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/service.go",
    "chars": 15080,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/table.go",
    "chars": 8951,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/uploader.go",
    "chars": 4299,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/uploader_test.go",
    "chars": 5092,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/utils_test.go",
    "chars": 1385,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/value.go",
    "chars": 5485,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigquery/value_test.go",
    "chars": 9721,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/admin.go",
    "chars": 8133,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/admin_test.go",
    "chars": 2164,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/bigtable.go",
    "chars": 21515,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/bigtable_test.go",
    "chars": 17763,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/bttest/example_test.go",
    "chars": 1983,
    "preview": "/*\nCopyright 2016 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/bttest/inmem.go",
    "chars": 24218,
    "preview": "/*\nCopyright 2016 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/bttest/inmem_test.go",
    "chars": 4804,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/cmd/cbt/cbt.go",
    "chars": 17748,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/cmd/cbt/cbt_test.go",
    "chars": 1578,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/cmd/cbt/cbtdoc.go",
    "chars": 3440,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/cmd/emulator/cbtemulator.go",
    "chars": 1206,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/cmd/loadtest/loadtest.go",
    "chars": 5205,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/cmd/scantest/scantest.go",
    "chars": 3765,
    "preview": "/*\nCopyright 2016 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/doc.go",
    "chars": 5245,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/filter.go",
    "chars": 4904,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/gc.go",
    "chars": 3491,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/internal/cbtrc/cbtrc.go",
    "chars": 2717,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/internal/gax/call_option.go",
    "chars": 3191,
    "preview": "/*\nCopyright 2016 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/internal/gax/invoke.go",
    "chars": 2500,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/internal/gax/invoke_test.go",
    "chars": 1529,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/internal/option/option.go",
    "chars": 1504,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/internal/stat/stats.go",
    "chars": 3828,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/reader.go",
    "chars": 6628,
    "preview": "/*\nCopyright 2016 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/reader_test.go",
    "chars": 9607,
    "preview": "/*\nCopyright 2016 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/retry_test.go",
    "chars": 10780,
    "preview": "/*\nCopyright 2016 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/bigtable/testdata/read-rows-acceptance-test.json",
    "chars": 36170,
    "preview": "{\n  \"tests\": [\n    {\n      \"name\": \"invalid - no commit\",\n      \"chunks\": [\n        \"row_key: \\\"RK\\\"\\nfamily_name: \\u003"
  },
  {
    "path": "vendor/cloud.google.com/go/cloud.go",
    "chars": 902,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/compute/metadata/metadata.go",
    "chars": 12785,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/compute/metadata/metadata_test.go",
    "chars": 1225,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/container/container.go",
    "chars": 8055,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/datastore.go",
    "chars": 18336,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/datastore_test.go",
    "chars": 35054,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/doc.go",
    "chars": 11065,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/errors.go",
    "chars": 1269,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/example_test.go",
    "chars": 5885,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/integration_test.go",
    "chars": 24895,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/key.go",
    "chars": 6103,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/key_test.go",
    "chars": 5837,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/load.go",
    "chars": 10314,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/load_test.go",
    "chars": 8754,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/prop.go",
    "chars": 9639,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/query.go",
    "chars": 21452,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/query_test.go",
    "chars": 13829,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/save.go",
    "chars": 7188,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/save_test.go",
    "chars": 1027,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/testdata/index.yaml",
    "chars": 490,
    "preview": "indexes:\n\n- kind: SQChild\n  ancestor: yes\n  properties:\n  - name: T\n  - name: I\n\n- kind: SQChild\n  ancestor: yes\n  prope"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/time.go",
    "chars": 1217,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/time_test.go",
    "chars": 2434,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/datastore/transaction.go",
    "chars": 9476,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/errorreporting/apiv1beta1/doc.go",
    "chars": 1060,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/errorreporting/apiv1beta1/error_group_client.go",
    "chars": 5204,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/errorreporting/apiv1beta1/error_group_client_example_test.go",
    "chars": 1808,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/errorreporting/apiv1beta1/error_stats_client.go",
    "chars": 12016,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/errorreporting/apiv1beta1/error_stats_client_example_test.go",
    "chars": 2289,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/errorreporting/apiv1beta1/errorreporting.go",
    "chars": 833,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/errorreporting/apiv1beta1/report_errors_client.go",
    "chars": 4692,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/errorreporting/apiv1beta1/report_errors_client_example_test.go",
    "chars": 1461,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/errors/errors.go",
    "chars": 9705,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/errors/errors_test.go",
    "chars": 5415,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/errors/stack_test.go",
    "chars": 4005,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/bigquery/concat_table/main.go",
    "chars": 2709,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/bigquery/load/main.go",
    "chars": 2835,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/bigquery/query/main.go",
    "chars": 2589,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/bigquery/read/main.go",
    "chars": 3642,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/bigtable/helloworld/README.md",
    "chars": 1771,
    "preview": "# Cloud Bigtable Hello World in Go\n\nThis is a simple application that demonstrates using the [Google Cloud APIs Go\nClien"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/bigtable/helloworld/main.go",
    "chars": 5087,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/bigtable/search/search.go",
    "chars": 14010,
    "preview": "/*\nCopyright 2015 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/examples/bigtable/usercounter/README.md",
    "chars": 1110,
    "preview": "# User Counter\n# (Cloud Bigtable on Managed VMs using Go)\n\nThis app counts how often each user visits. The app uses Clou"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/bigtable/usercounter/app.yaml",
    "chars": 135,
    "preview": "runtime: go\napi_version: go1\nvm: true\n\nmanual_scaling:\n  instances: 1\n\nhandlers:\n# Serve only the web root.\n- url: /\n  s"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/bigtable/usercounter/main.go",
    "chars": 5000,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/storage/appengine/app.go",
    "chars": 12672,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/storage/appengine/app.yaml",
    "chars": 113,
    "preview": "application: <your-app-id-here>\nversion: v1\nruntime: go\napi_version: go1\n\nhandlers:\n- url: /.*\n  script: _go_app\n"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/storage/appenginevm/app.go",
    "chars": 12436,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/examples/storage/appenginevm/app.yaml",
    "chars": 110,
    "preview": "runtime: go\napi_version: go1\nvm: true\n\nmanual_scaling:\n  instances: 1\n\nhandlers:\n- url: /.*\n  script: _go_app\n"
  },
  {
    "path": "vendor/cloud.google.com/go/internal/bundler/bundler.go",
    "chars": 8780,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/internal/bundler/bundler_test.go",
    "chars": 5797,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/internal/cloud.go",
    "chars": 1983,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/internal/testutil/context.go",
    "chars": 1750,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/internal/testutil/iterators.go",
    "chars": 7192,
    "preview": "/*\nCopyright 2016 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/internal/testutil/server.go",
    "chars": 1861,
    "preview": "/*\nCopyright 2016 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/internal/testutil/server_test.go",
    "chars": 911,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/language/apiv1beta1/doc.go",
    "chars": 999,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/language/apiv1beta1/language.go",
    "chars": 711,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/language/apiv1beta1/language_client.go",
    "chars": 5549,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/language/apiv1beta1/language_client_example_test.go",
    "chars": 2052,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/license_test.go",
    "chars": 1730,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/logging/apiv2/README.md",
    "chars": 316,
    "preview": "Auto-generated logging v2 clients\n=================================\n\nThis package includes auto-generated clients for th"
  },
  {
    "path": "vendor/cloud.google.com/go/logging/apiv2/config_client.go",
    "chars": 9890,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/logging/apiv2/config_client_example_test.go",
    "chars": 2725,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/logging/apiv2/doc.go",
    "chars": 918,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/logging/apiv2/logging.go",
    "chars": 826,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/logging/apiv2/logging_client.go",
    "chars": 13601,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/logging/apiv2/logging_client_example_test.go",
    "chars": 2460,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/logging/apiv2/metrics_client.go",
    "chars": 10181,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/logging/apiv2/metrics_client_example_test.go",
    "chars": 2812,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/logging/logging.go",
    "chars": 12940,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/logging/logging_test.go",
    "chars": 11340,
    "preview": "// Copyright 2015 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/monitoring/apiv3/agent_translation_client.go",
    "chars": 4510,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/monitoring/apiv3/agent_translation_client_example_test.go",
    "chars": 1402,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/monitoring/apiv3/doc.go",
    "chars": 1009,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/monitoring/apiv3/group_client.go",
    "chars": 14614,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/monitoring/apiv3/group_client_example_test.go",
    "chars": 3186,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/monitoring/apiv3/metric_client.go",
    "chars": 20347,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/monitoring/apiv3/metric_client_example_test.go",
    "chars": 4182,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/monitoring/apiv3/monitoring.go",
    "chars": 829,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/example_entry_iterator_test.go",
    "chars": 1913,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/example_metric_iterator_test.go",
    "chars": 1337,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/example_paging_test.go",
    "chars": 2679,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/example_resource_iterator_test.go",
    "chars": 1383,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/example_sink_iterator_test.go",
    "chars": 1325,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/examples_test.go",
    "chars": 6001,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/internal/testing/fake.go",
    "chars": 12454,
    "preview": "/*\nCopyright 2016 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/internal/testing/fake_test.go",
    "chars": 2990,
    "preview": "/*\nCopyright 2016 Google Inc. All Rights Reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou "
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/logging.go",
    "chars": 31461,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/logging_test.go",
    "chars": 19828,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/metrics.go",
    "chars": 5520,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/metrics_test.go",
    "chars": 3448,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/resources.go",
    "chars": 3173,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/resources_test.go",
    "chars": 1262,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/sinks.go",
    "chars": 5988,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/sinks_test.go",
    "chars": 6016,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/preview/logging/unique_test.go",
    "chars": 3695,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/acker.go",
    "chars": 4098,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/acker_test.go",
    "chars": 5969,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/apiv1/README.md",
    "chars": 313,
    "preview": "Auto-generated pubsub v1 clients\n=================================\n\nThis package includes auto-generated clients for the"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/apiv1/doc.go",
    "chars": 880,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/apiv1/publisher_client.go",
    "chars": 14370,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/apiv1/publisher_client_example_test.go",
    "chars": 3167,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/apiv1/pubsub.go",
    "chars": 825,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/apiv1/subscriber_client.go",
    "chars": 13917,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/apiv1/subscriber_client_example_test.go",
    "chars": 3819,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/doc.go",
    "chars": 4512,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/endtoend_test.go",
    "chars": 9076,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/example_subscription_iterator_test.go",
    "chars": 1411,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/example_test.go",
    "chars": 6733,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/example_topic_iterator_test.go",
    "chars": 1314,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/integration_test.go",
    "chars": 4131,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/iterator.go",
    "chars": 4906,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/iterator_test.go",
    "chars": 6477,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/keepalive.go",
    "chars": 5168,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/keepalive_test.go",
    "chars": 7634,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/message.go",
    "chars": 2284,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/pubsub.go",
    "chars": 3775,
    "preview": "// Copyright 2014 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  },
  {
    "path": "vendor/cloud.google.com/go/pubsub/puller.go",
    "chars": 3371,
    "preview": "// Copyright 2016 Google Inc. All Rights Reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");"
  }
]

// ... and 14016 more files (download for full content)

About this extraction

This page contains the full source code of the fabric8io/configmapcontroller GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 14216 files (174.0 MB), approximately 27.1M tokens, and a symbol index with 161456 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!