fc2json 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7e40ed0ee6914ba7f03f52603b94dfc7f4f0b430
4
+ data.tar.gz: e3d0c184cc995e5197acd0d7fa69f1d2eafa803f
5
+ SHA512:
6
+ metadata.gz: e0f253865ab0212168ed90dce50cbcb1fb3573ee18eb89fb5eab8d0ec75beaf1f6eed3add623066715bd9f3a77fec26069685db4af23d3db35f7146e49ed6771
7
+ data.tar.gz: 0387251b1aca6c4e95f09f6eee1497b00fc8d49dc7de4b42b2a4c803c1f8ba0618c7f439c11700d760e10ef2ba70c9ebce51f4da2aa5f5b9c1ce3194daaeb0f5
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ source "http://rubygems.org"
2
+ gem 'nokogiri', "~> 1.5.10"
3
+
4
+ group :development, :test do
5
+ gem "rspec", "~> 2.8", ">= 2.8.0"
6
+ gem "bundler", "~> 1.0"
7
+ gem "jeweler", "~> 1.8", ">= 1.8.7"
8
+ end
9
+
10
+ group :test do
11
+ gem "vcr", "~> 2.8", ">= 2.8.0"
12
+ gem "webmock", "~> 1.15", "< 1.16.0"
13
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,72 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ addressable (2.3.5)
5
+ builder (3.2.2)
6
+ crack (0.4.1)
7
+ safe_yaml (~> 0.9.0)
8
+ diff-lcs (1.1.3)
9
+ faraday (0.8.8)
10
+ multipart-post (~> 1.2.0)
11
+ git (1.2.6)
12
+ github_api (0.10.1)
13
+ addressable
14
+ faraday (~> 0.8.1)
15
+ hashie (>= 1.2)
16
+ multi_json (~> 1.4)
17
+ nokogiri (~> 1.5.2)
18
+ oauth2
19
+ hashie (2.0.5)
20
+ highline (1.6.20)
21
+ httpauth (0.2.0)
22
+ jeweler (1.8.8)
23
+ builder
24
+ bundler (~> 1.0)
25
+ git (>= 1.2.5)
26
+ github_api (= 0.10.1)
27
+ highline (>= 1.6.15)
28
+ nokogiri (= 1.5.10)
29
+ rake
30
+ rdoc
31
+ json (1.8.1)
32
+ jwt (0.1.8)
33
+ multi_json (>= 1.5)
34
+ multi_json (1.8.2)
35
+ multi_xml (0.5.5)
36
+ multipart-post (1.2.0)
37
+ nokogiri (1.5.10)
38
+ oauth2 (0.9.2)
39
+ faraday (~> 0.8)
40
+ httpauth (~> 0.2)
41
+ jwt (~> 0.1.4)
42
+ multi_json (~> 1.0)
43
+ multi_xml (~> 0.5)
44
+ rack (~> 1.2)
45
+ rack (1.5.2)
46
+ rake (10.1.1)
47
+ rdoc (4.1.0)
48
+ json (~> 1.4)
49
+ rspec (2.8.0)
50
+ rspec-core (~> 2.8.0)
51
+ rspec-expectations (~> 2.8.0)
52
+ rspec-mocks (~> 2.8.0)
53
+ rspec-core (2.8.0)
54
+ rspec-expectations (2.8.0)
55
+ diff-lcs (~> 1.1.2)
56
+ rspec-mocks (2.8.0)
57
+ safe_yaml (0.9.7)
58
+ vcr (2.8.0)
59
+ webmock (1.15.2)
60
+ addressable (>= 2.2.7)
61
+ crack (>= 0.3.2)
62
+
63
+ PLATFORMS
64
+ ruby
65
+
66
+ DEPENDENCIES
67
+ bundler (~> 1.0)
68
+ jeweler (~> 1.8, >= 1.8.7)
69
+ nokogiri (~> 1.5.10)
70
+ rspec (~> 2.8, >= 2.8.0)
71
+ vcr (~> 2.8, >= 2.8.0)
72
+ webmock (~> 1.15, < 1.16.0)
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2013 rpepato
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,19 @@
1
+ = fc2json
2
+
3
+ Description goes here.
4
+
5
+ == Contributing to fc2json
6
+
7
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
8
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
9
+ * Fork the project.
10
+ * Start a feature/bugfix branch.
11
+ * Commit and push until you are happy with your contribution.
12
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
13
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
14
+
15
+ == Copyright
16
+
17
+ Copyright (c) 2013 rpepato. See LICENSE.txt for
18
+ further details.
19
+
data/Rakefile ADDED
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "fc2json"
18
+ gem.homepage = "http://github.com/rpepato/fc2json"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{Converts Esri feature services to Json}
21
+ gem.description = %Q{fc2json queries, downloads and formats all data from a remote Esri feature service, exposing it as json representation}
22
+ gem.email = "rpepato@gmail.com"
23
+ gem.authors = ["Roberto Pepato"]
24
+ # dependencies defined in Gemfile
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rspec/core'
29
+ require 'rspec/core/rake_task'
30
+ RSpec::Core::RakeTask.new(:spec) do |spec|
31
+ spec.pattern = FileList['spec/**/*_spec.rb']
32
+ end
33
+
34
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
35
+ spec.pattern = 'spec/**/*_spec.rb'
36
+ spec.rcov = true
37
+ end
38
+
39
+ task :default => :spec
40
+
41
+ require 'rdoc/task'
42
+ Rake::RDocTask.new do |rdoc|
43
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
44
+
45
+ rdoc.rdoc_dir = 'rdoc'
46
+ rdoc.title = "fc2json #{version}"
47
+ rdoc.rdoc_files.include('README*')
48
+ rdoc.rdoc_files.include('lib/**/*.rb')
49
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
data/fc2json.gemspec ADDED
@@ -0,0 +1,67 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+ # stub: fc2json 0.1.0 ruby lib
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "fc2json"
9
+ s.version = "0.1.0"
10
+
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
13
+ s.authors = ["Roberto Pepato"]
14
+ s.date = "2013-12-30"
15
+ s.description = "fc2json queries, downloads and formats all data from a remote Esri feature service, exposing it as json representation"
16
+ s.email = "rpepato@gmail.com"
17
+ s.extra_rdoc_files = [
18
+ "LICENSE.txt",
19
+ "README.rdoc"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ ".rspec",
24
+ "Gemfile",
25
+ "Gemfile.lock",
26
+ "LICENSE.txt",
27
+ "README.rdoc",
28
+ "Rakefile",
29
+ "VERSION",
30
+ "fc2json.gemspec",
31
+ "lib/fc2json.rb",
32
+ "spec/fc2json_spec.rb",
33
+ "spec/fixtures/vcr_cassettes/1000_batch_size.yml",
34
+ "spec/fixtures/vcr_cassettes/3000_batch_size.yml",
35
+ "spec/fixtures/vcr_cassettes/3_batch_size.yml",
36
+ "spec/fixtures/vcr_cassettes/4_batch_size.yml",
37
+ "spec/fixtures/vcr_cassettes/6_batch_size.yml",
38
+ "spec/fixtures/vcr_cassettes/empty.yml",
39
+ "spec/spec_helper.rb"
40
+ ]
41
+ s.homepage = "http://github.com/rpepato/fc2json"
42
+ s.licenses = ["MIT"]
43
+ s.rubygems_version = "2.2.0.rc.1"
44
+ s.summary = "Converts Esri feature services to Json"
45
+
46
+ if s.respond_to? :specification_version then
47
+ s.specification_version = 4
48
+
49
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
+ s.add_runtime_dependency(%q<nokogiri>, ["~> 1.5.10"])
51
+ s.add_development_dependency(%q<rspec>, [">= 2.8.0", "~> 2.8"])
52
+ s.add_development_dependency(%q<bundler>, ["~> 1.0"])
53
+ s.add_development_dependency(%q<jeweler>, [">= 1.8.7", "~> 1.8"])
54
+ else
55
+ s.add_dependency(%q<nokogiri>, ["~> 1.5.10"])
56
+ s.add_dependency(%q<rspec>, [">= 2.8.0", "~> 2.8"])
57
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
58
+ s.add_dependency(%q<jeweler>, [">= 1.8.7", "~> 1.8"])
59
+ end
60
+ else
61
+ s.add_dependency(%q<nokogiri>, ["~> 1.5.10"])
62
+ s.add_dependency(%q<rspec>, [">= 2.8.0", "~> 2.8"])
63
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
64
+ s.add_dependency(%q<jeweler>, [">= 1.8.7", "~> 1.8"])
65
+ end
66
+ end
67
+
data/lib/fc2json.rb ADDED
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+ require 'open-uri'
3
+ require 'cgi'
4
+ require 'json'
5
+ require 'nokogiri'
6
+
7
+ Encoding.default_external = Encoding::UTF_8
8
+ Encoding.default_internal = Encoding::UTF_8
9
+
10
+ class FC2Json
11
+ attr_accessor :service_url, :object_identifier_field_name, :records_per_request, :where_clause
12
+
13
+ def initialize (service_url, object_identifier_field_name = nil, records_per_request = nil, where_clause = nil)
14
+ @service_url = service_url
15
+ @object_identifier_field_name = object_identifier_field_name || "FID"
16
+ @records_per_request = records_per_request || 2000
17
+ @where_clause = where_clause || "1 = 1"
18
+ end
19
+
20
+ def get
21
+ ids = get_ids
22
+ json = {}
23
+ request_index = 0
24
+ continue = true
25
+
26
+ while continue do
27
+ if ids[request_index * @records_per_request + (@records_per_request - 1)].nil?
28
+ continue = false
29
+ where = "#{@object_identifier_field_name} >= #{ids[request_index * @records_per_request]} AND #{@object_identifier_field_name} <= #{ids.last}"
30
+ else
31
+ where = "#{@object_identifier_field_name} >= #{ids[request_index * @records_per_request]} AND #{@object_identifier_field_name} <= #{ids[request_index * @records_per_request + (@records_per_request - 1)]}"
32
+ end
33
+ request_url = "#{@service_url}/query?where=#{CGI.escape(where)}&f=pjson&outFields=*"
34
+
35
+ request_result = JSON.parse(Nokogiri::HTML(open(request_url)))
36
+ if request_result["exceededTransferLimit"]
37
+ raise ArgumentError, "The batch size of #{@records_per_request} exceeds the capability provided by the service used on this query. Review the service's batch size limit and adjust your query parameters."
38
+ end
39
+
40
+ if json.empty?
41
+ json = request_result
42
+ else
43
+ json["features"].concat request_result["features"]
44
+ end
45
+
46
+ request_index += 1
47
+
48
+ continue = false if continue && json["features"].count == ids.count
49
+ end
50
+
51
+ # Esri treats where clauses that returns no data as invalid. We return an empty hash instead.
52
+ if json["error"]
53
+ return {} if json["error"]["details"] == ["'where' parameter is invalid"]
54
+ end
55
+
56
+ json
57
+ end
58
+
59
+ private
60
+
61
+ def get_ids
62
+ request_url = "#{self.service_url}/query?where=#{CGI.escape(self.where_clause)}&f=pjson&returnIdsOnly=true"
63
+ (JSON.parse Nokogiri::HTML(open(request_url)))["objectIds"]
64
+ end
65
+
66
+
67
+ end
@@ -0,0 +1,56 @@
1
+ # encoding: utf-8
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
+
4
+ describe "when querying a remote service" do
5
+
6
+ describe "when the service returns no data" do
7
+
8
+ it "should return an empty json" do
9
+ VCR.use_cassette('empty') do
10
+ fc2json = FC2Json.new "http://services2.arcgis.com/hMIIIBIOpi8Cdgjw/arcgis/rest/services/ubs/FeatureServer/0", "FID", 1000, "1 > 2"
11
+ fc2json.get.should be_empty
12
+ end
13
+ end
14
+
15
+ end
16
+
17
+ describe "when the service returns data" do
18
+
19
+ it "should return a set compatible with where clause" do
20
+ VCR.use_cassette("1000_batch_size") do
21
+ fc2json = FC2Json.new "http://services2.arcgis.com/hMIIIBIOpi8Cdgjw/arcgis/rest/services/ubs/FeatureServer/0", "FID", 1000, "FID >= 1 and FID <=6"
22
+ fc2json.get["features"].count.should == 6
23
+ end
24
+ end
25
+
26
+ it "should return data when query batch is equal to dataset size" do
27
+ VCR.use_cassette("6_batch_size") do
28
+ fc2json = FC2Json.new "http://services2.arcgis.com/hMIIIBIOpi8Cdgjw/arcgis/rest/services/ubs/FeatureServer/0", "FID", 6, "FID >= 1 and FID <=6"
29
+ fc2json.get["features"].count.should == 6
30
+ end
31
+ end
32
+
33
+ it "should return data when query batch is less than dataset size" do
34
+ VCR.use_cassette("3_batch_size") do
35
+ fc2json = FC2Json.new "http://services2.arcgis.com/hMIIIBIOpi8Cdgjw/arcgis/rest/services/ubs/FeatureServer/0", "FID", 3, "FID >= 1 and FID <=6"
36
+ fc2json.get["features"].count.should == 6
37
+ end
38
+
39
+ VCR.use_cassette("4_batch_size") do
40
+ fc2json = FC2Json.new "http://services2.arcgis.com/hMIIIBIOpi8Cdgjw/arcgis/rest/services/ubs/FeatureServer/0", "FID", 4, "FID >= 1 and FID <=6"
41
+ fc2json.get["features"].count.should == 6
42
+ end
43
+ end
44
+
45
+ it "should raise error when batch size is greater than the size supported by the service" do
46
+ VCR.use_cassette("3000_batch_size") do
47
+ fc2json = FC2Json.new "http://services2.arcgis.com/hMIIIBIOpi8Cdgjw/arcgis/rest/services/ubs/FeatureServer/0", "FID", 3000, "FID >= 1 and FID <=3001"
48
+ expect{fc2json.get}.to raise_error(ArgumentError, "The batch size of 3000 exceeds the capability provided by the service used on this query. Review the service's batch size limit and adjust your query parameters.")
49
+ end
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+
56
+
@@ -0,0 +1,272 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://services2.arcgis.com/hMIIIBIOpi8Cdgjw/arcgis/rest/services/ubs/FeatureServer/0/query?f=pjson&returnIdsOnly=true&where=FID%20%3E=%201%20and%20FID%20%3C=6
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept-Encoding:
11
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
12
+ Accept:
13
+ - '*/*'
14
+ User-Agent:
15
+ - Ruby
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Content-Type:
22
+ - text/plain; charset=utf-8
23
+ Etag:
24
+ - sd1_-1263509158
25
+ Server:
26
+ - Microsoft-IIS/8.0
27
+ X-Powered-By:
28
+ - ASP.NET
29
+ Access-Control-Allow-Origin:
30
+ - '*'
31
+ Date:
32
+ - Mon, 30 Dec 2013 22:22:06 GMT
33
+ Content-Length:
34
+ - '86'
35
+ body:
36
+ encoding: UTF-8
37
+ string: "{\r\n \"objectIdFieldName\" : \"FID\", \r\n \"objectIds\" : [\r\n
38
+ \ 1, \r\n 2, \r\n 3, \r\n 4, \r\n 5, \r\n 6\r\n ]\r\n}"
39
+ http_version:
40
+ recorded_at: Mon, 30 Dec 2013 22:21:59 GMT
41
+ - request:
42
+ method: get
43
+ uri: http://services2.arcgis.com/hMIIIBIOpi8Cdgjw/arcgis/rest/services/ubs/FeatureServer/0/query?f=pjson&outFields=*&where=FID%20%3E=%201%20AND%20FID%20%3C=%206
44
+ body:
45
+ encoding: US-ASCII
46
+ string: ''
47
+ headers:
48
+ Accept-Encoding:
49
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
50
+ Accept:
51
+ - '*/*'
52
+ User-Agent:
53
+ - Ruby
54
+ response:
55
+ status:
56
+ code: 200
57
+ message: OK
58
+ headers:
59
+ Content-Type:
60
+ - text/plain; charset=utf-8
61
+ Etag:
62
+ - sd1_1820370826
63
+ Server:
64
+ - Microsoft-IIS/8.0
65
+ X-Powered-By:
66
+ - ASP.NET
67
+ Access-Control-Allow-Origin:
68
+ - '*'
69
+ Date:
70
+ - Mon, 30 Dec 2013 22:21:59 GMT
71
+ Content-Length:
72
+ - '1505'
73
+ body:
74
+ encoding: ASCII-8BIT
75
+ string: !binary |-
76
+ ew0KICAib2JqZWN0SWRGaWVsZE5hbWUiIDogIkZJRCIsIA0KICAiZ2xvYmFs
77
+ SWRGaWVsZE5hbWUiIDogIiIsIA0KICAiZ2VvbWV0cnlUeXBlIiA6ICJlc3Jp
78
+ R2VvbWV0cnlQb2ludCIsIA0KICAic3BhdGlhbFJlZmVyZW5jZSIgOiB7DQog
79
+ ICAgIndraWQiIDogMTAyMTAwLCANCiAgICAibGF0ZXN0V2tpZCIgOiAzODU3
80
+ DQogIH0sIA0KICAiZmllbGRzIiA6IFsNCiAgICB7DQogICAgICAibmFtZSIg
81
+ OiAidmxyX2xhdGl0dWRlIiwgDQogICAgICAidHlwZSIgOiAiZXNyaUZpZWxk
82
+ VHlwZURvdWJsZSIsIA0KICAgICAgImFsaWFzIiA6ICJ2bHJfbGF0aXR1ZGUi
83
+ LCANCiAgICAgICJzcWxUeXBlIiA6ICJzcWxUeXBlRmxvYXQiLCANCiAgICAg
84
+ ICJkb21haW4iIDogbnVsbCwgDQogICAgICAiZGVmYXVsdFZhbHVlIiA6IG51
85
+ bGwNCiAgICB9LCANCiAgICB7DQogICAgICAibmFtZSIgOiAidmxyX2xvbmdp
86
+ dHVkZSIsIA0KICAgICAgInR5cGUiIDogImVzcmlGaWVsZFR5cGVEb3VibGUi
87
+ LCANCiAgICAgICJhbGlhcyIgOiAidmxyX2xvbmdpdHVkZSIsIA0KICAgICAg
88
+ InNxbFR5cGUiIDogInNxbFR5cGVGbG9hdCIsIA0KICAgICAgImRvbWFpbiIg
89
+ OiBudWxsLCANCiAgICAgICJkZWZhdWx0VmFsdWUiIDogbnVsbA0KICAgIH0s
90
+ IA0KICAgIHsNCiAgICAgICJuYW1lIiA6ICJjb2RfbXVuaWMiLCANCiAgICAg
91
+ ICJ0eXBlIiA6ICJlc3JpRmllbGRUeXBlSW50ZWdlciIsIA0KICAgICAgImFs
92
+ aWFzIiA6ICJjb2RfbXVuaWMiLCANCiAgICAgICJzcWxUeXBlIiA6ICJzcWxU
93
+ eXBlSW50ZWdlciIsIA0KICAgICAgImRvbWFpbiIgOiBudWxsLCANCiAgICAg
94
+ ICJkZWZhdWx0VmFsdWUiIDogbnVsbA0KICAgIH0sIA0KICAgIHsNCiAgICAg
95
+ ICJuYW1lIiA6ICJjb2RfY25lcyIsIA0KICAgICAgInR5cGUiIDogImVzcmlG
96
+ aWVsZFR5cGVJbnRlZ2VyIiwgDQogICAgICAiYWxpYXMiIDogImNvZF9jbmVz
97
+ IiwgDQogICAgICAic3FsVHlwZSIgOiAic3FsVHlwZUludGVnZXIiLCANCiAg
98
+ ICAgICJkb21haW4iIDogbnVsbCwgDQogICAgICAiZGVmYXVsdFZhbHVlIiA6
99
+ IG51bGwNCiAgICB9LCANCiAgICB7DQogICAgICAibmFtZSIgOiAibm9tX2Vz
100
+ dGFiIiwgDQogICAgICAidHlwZSIgOiAiZXNyaUZpZWxkVHlwZVN0cmluZyIs
101
+ IA0KICAgICAgImFsaWFzIiA6ICJub21fZXN0YWIiLCANCiAgICAgICJzcWxU
102
+ eXBlIiA6ICJzcWxUeXBlTlZhcmNoYXIiLCAibGVuZ3RoIiA6IDI1NiwgDQog
103
+ ICAgICAiZG9tYWluIiA6IG51bGwsIA0KICAgICAgImRlZmF1bHRWYWx1ZSIg
104
+ OiBudWxsDQogICAgfSwgDQogICAgew0KICAgICAgIm5hbWUiIDogImRzY19l
105
+ bmRlcmVjbyIsIA0KICAgICAgInR5cGUiIDogImVzcmlGaWVsZFR5cGVTdHJp
106
+ bmciLCANCiAgICAgICJhbGlhcyIgOiAiZHNjX2VuZGVyZWNvIiwgDQogICAg
107
+ ICAic3FsVHlwZSIgOiAic3FsVHlwZU5WYXJjaGFyIiwgImxlbmd0aCIgOiAy
108
+ NTYsIA0KICAgICAgImRvbWFpbiIgOiBudWxsLCANCiAgICAgICJkZWZhdWx0
109
+ VmFsdWUiIDogbnVsbA0KICAgIH0sIA0KICAgIHsNCiAgICAgICJuYW1lIiA6
110
+ ICJkc2NfYmFpcnJvIiwgDQogICAgICAidHlwZSIgOiAiZXNyaUZpZWxkVHlw
111
+ ZVN0cmluZyIsIA0KICAgICAgImFsaWFzIiA6ICJkc2NfYmFpcnJvIiwgDQog
112
+ ICAgICAic3FsVHlwZSIgOiAic3FsVHlwZU5WYXJjaGFyIiwgImxlbmd0aCIg
113
+ OiAyNTYsIA0KICAgICAgImRvbWFpbiIgOiBudWxsLCANCiAgICAgICJkZWZh
114
+ dWx0VmFsdWUiIDogbnVsbA0KICAgIH0sIA0KICAgIHsNCiAgICAgICJuYW1l
115
+ IiA6ICJkc2NfY2lkYWRlIiwgDQogICAgICAidHlwZSIgOiAiZXNyaUZpZWxk
116
+ VHlwZVN0cmluZyIsIA0KICAgICAgImFsaWFzIiA6ICJkc2NfY2lkYWRlIiwg
117
+ DQogICAgICAic3FsVHlwZSIgOiAic3FsVHlwZU5WYXJjaGFyIiwgImxlbmd0
118
+ aCIgOiAyNTYsIA0KICAgICAgImRvbWFpbiIgOiBudWxsLCANCiAgICAgICJk
119
+ ZWZhdWx0VmFsdWUiIDogbnVsbA0KICAgIH0sIA0KICAgIHsNCiAgICAgICJu
120
+ YW1lIiA6ICJkc2NfdGVsZWZvbmUiLCANCiAgICAgICJ0eXBlIiA6ICJlc3Jp
121
+ RmllbGRUeXBlU3RyaW5nIiwgDQogICAgICAiYWxpYXMiIDogImRzY190ZWxl
122
+ Zm9uZSIsIA0KICAgICAgInNxbFR5cGUiIDogInNxbFR5cGVOVmFyY2hhciIs
123
+ ICJsZW5ndGgiIDogMjU2LCANCiAgICAgICJkb21haW4iIDogbnVsbCwgDQog
124
+ ICAgICAiZGVmYXVsdFZhbHVlIiA6IG51bGwNCiAgICB9LCANCiAgICB7DQog
125
+ ICAgICAibmFtZSIgOiAiZHNjX2VzdHJ1dF9maXNpY19hbWJpZW5jaWEiLCAN
126
+ CiAgICAgICJ0eXBlIiA6ICJlc3JpRmllbGRUeXBlU3RyaW5nIiwgDQogICAg
127
+ ICAiYWxpYXMiIDogImRzY19lc3RydXRfZmlzaWNfYW1iaWVuY2lhIiwgDQog
128
+ ICAgICAic3FsVHlwZSIgOiAic3FsVHlwZU5WYXJjaGFyIiwgImxlbmd0aCIg
129
+ OiAyNTYsIA0KICAgICAgImRvbWFpbiIgOiBudWxsLCANCiAgICAgICJkZWZh
130
+ dWx0VmFsdWUiIDogbnVsbA0KICAgIH0sIA0KICAgIHsNCiAgICAgICJuYW1l
131
+ IiA6ICJkc2NfYWRhcF9kZWZpY19maXNpY19pZG9zb3MiLCANCiAgICAgICJ0
132
+ eXBlIiA6ICJlc3JpRmllbGRUeXBlU3RyaW5nIiwgDQogICAgICAiYWxpYXMi
133
+ IDogImRzY19hZGFwX2RlZmljX2Zpc2ljX2lkb3NvcyIsIA0KICAgICAgInNx
134
+ bFR5cGUiIDogInNxbFR5cGVOVmFyY2hhciIsICJsZW5ndGgiIDogMjU2LCAN
135
+ CiAgICAgICJkb21haW4iIDogbnVsbCwgDQogICAgICAiZGVmYXVsdFZhbHVl
136
+ IiA6IG51bGwNCiAgICB9LCANCiAgICB7DQogICAgICAibmFtZSIgOiAiZHNj
137
+ X2VxdWlwYW1lbnRvcyIsIA0KICAgICAgInR5cGUiIDogImVzcmlGaWVsZFR5
138
+ cGVTdHJpbmciLCANCiAgICAgICJhbGlhcyIgOiAiZHNjX2VxdWlwYW1lbnRv
139
+ cyIsIA0KICAgICAgInNxbFR5cGUiIDogInNxbFR5cGVOVmFyY2hhciIsICJs
140
+ ZW5ndGgiIDogMjU2LCANCiAgICAgICJkb21haW4iIDogbnVsbCwgDQogICAg
141
+ ICAiZGVmYXVsdFZhbHVlIiA6IG51bGwNCiAgICB9LCANCiAgICB7DQogICAg
142
+ ICAibmFtZSIgOiAiZHNjX21lZGljYW1lbnRvcyIsIA0KICAgICAgInR5cGUi
143
+ IDogImVzcmlGaWVsZFR5cGVTdHJpbmciLCANCiAgICAgICJhbGlhcyIgOiAi
144
+ ZHNjX21lZGljYW1lbnRvcyIsIA0KICAgICAgInNxbFR5cGUiIDogInNxbFR5
145
+ cGVOVmFyY2hhciIsICJsZW5ndGgiIDogMjU2LCANCiAgICAgICJkb21haW4i
146
+ IDogbnVsbCwgDQogICAgICAiZGVmYXVsdFZhbHVlIiA6IG51bGwNCiAgICB9
147
+ LCANCiAgICB7DQogICAgICAibmFtZSIgOiAiRklEIiwgDQogICAgICAidHlw
148
+ ZSIgOiAiZXNyaUZpZWxkVHlwZUludGVnZXIiLCANCiAgICAgICJhbGlhcyIg
149
+ OiAiRklEIiwgDQogICAgICAic3FsVHlwZSIgOiAic3FsVHlwZUludGVnZXIi
150
+ LCANCiAgICAgICJkb21haW4iIDogbnVsbCwgDQogICAgICAiZGVmYXVsdFZh
151
+ bHVlIiA6IG51bGwNCiAgICB9DQogIF0sIA0KICAiZmVhdHVyZXMiIDogWw0K
152
+ ICAgIHsNCiAgICAgICJhdHRyaWJ1dGVzIiA6IHsNCiAgICAgICAgInZscl9s
153
+ YXRpdHVkZSIgOiAtMTkuODY3ODYyNDYyOTk2OSwgDQogICAgICAgICJ2bHJf
154
+ bG9uZ2l0dWRlIiA6IC00My44OTMxNzAzNTY3NDkyLCANCiAgICAgICAgImNv
155
+ ZF9tdW5pYyIgOiAzMTU2NzAsIA0KICAgICAgICAiY29kX2NuZXMiIDogMjc2
156
+ MzU0MCwgDQogICAgICAgICJub21fZXN0YWIiIDogIlNBQkFSQSBDRU5UUk8g
157
+ REUgU0FVREUgTk9WTyBBTFZPUkFEQSIsIA0KICAgICAgICAiZHNjX2VuZGVy
158
+ ZWNvIiA6ICJBViBCT0EgVklBR0VNIiwgDQogICAgICAgICJkc2NfYmFpcnJv
159
+ IiA6ICJOT1ZPIEFMVk9SQURBIiwgDQogICAgICAgICJkc2NfY2lkYWRlIiA6
160
+ ICJTYWJhcsOhIiwgDQogICAgICAgICJkc2NfdGVsZWZvbmUiIDogIjMxMzQ4
161
+ MTUzNDQiLCANCiAgICAgICAgImRzY19lc3RydXRfZmlzaWNfYW1iaWVuY2lh
162
+ IiA6ICJEZXNlbXBlbmhvIG1lZGlhbm8gb3UgIHVtIHBvdWNvIGFiYWl4byBk
163
+ YSBtw6lkaWEiLCANCiAgICAgICAgImRzY19hZGFwX2RlZmljX2Zpc2ljX2lk
164
+ b3NvcyIgOiAiRGVzZW1wZW5obyBtZWRpYW5vIG91ICB1bSBwb3VjbyBhYmFp
165
+ eG8gZGEgbcOpZGlhIiwgDQogICAgICAgICJkc2NfZXF1aXBhbWVudG9zIiA6
166
+ ICJEZXNlbXBlbmhvIG1lZGlhbm8gb3UgIHVtIHBvdWNvIGFiYWl4byBkYSBt
167
+ w6lkaWEiLCANCiAgICAgICAgImRzY19tZWRpY2FtZW50b3MiIDogIkRlc2Vt
168
+ cGVuaG8gYWNpbWEgZGEgbcOpZGlhIiwgDQogICAgICAgICJGSUQiIDogMQ0K
169
+ ICAgICAgfSwgDQogICAgICAiZ2VvbWV0cnkiIDogDQogICAgICB7DQogICAg
170
+ ICAgICJ4IiA6IC00ODg2MTY1LjM3MzQxNTczMDksIA0KICAgICAgICAieSIg
171
+ OiAtMjI1NzM4My45NzQwMjY4NDQ0DQogICAgICB9DQogICAgfSwgDQogICAg
172
+ ew0KICAgICAgImF0dHJpYnV0ZXMiIDogew0KICAgICAgICAidmxyX2xhdGl0
173
+ dWRlIiA6IC0xMC45MTEyMzcwMDE0MTg4LCANCiAgICAgICAgInZscl9sb25n
174
+ aXR1ZGUiIDogLTM3LjA2MjA3NzUyMjI3NjgsIA0KICAgICAgICAiY29kX211
175
+ bmljIiA6IDI4MDAzMCwgDQogICAgICAgICJjb2RfY25lcyIgOiAzNDkyLCAN
176
+ CiAgICAgICAgIm5vbV9lc3RhYiIgOiAiVVMgT1NXQUxETyBERSBTT1VaQSIs
177
+ IA0KICAgICAgICAiZHNjX2VuZGVyZWNvIiA6ICJUViBBREFMVE8gQk9URUxI
178
+ TyIsIA0KICAgICAgICAiZHNjX2JhaXJybyIgOiAiR0VUVUxJTyBWQVJHQVMi
179
+ LCANCiAgICAgICAgImRzY19jaWRhZGUiIDogIkFyYWNhanUiLCANCiAgICAg
180
+ ICAgImRzY190ZWxlZm9uZSIgOiAiNzkzMTc5MTMyNiIsIA0KICAgICAgICAi
181
+ ZHNjX2VzdHJ1dF9maXNpY19hbWJpZW5jaWEiIDogIkRlc2VtcGVuaG8gYWNp
182
+ bWEgZGEgbcOpZGlhIiwgDQogICAgICAgICJkc2NfYWRhcF9kZWZpY19maXNp
183
+ Y19pZG9zb3MiIDogIkRlc2VtcGVuaG8gbXVpdG8gYWNpbWEgZGEgbcOpZGlh
184
+ IiwgDQogICAgICAgICJkc2NfZXF1aXBhbWVudG9zIiA6ICJEZXNlbXBlbmhv
185
+ IG1lZGlhbm8gb3UgIHVtIHBvdWNvIGFiYWl4byBkYSBtw6lkaWEiLCANCiAg
186
+ ICAgICAgImRzY19tZWRpY2FtZW50b3MiIDogIkRlc2VtcGVuaG8gYWNpbWEg
187
+ ZGEgbcOpZGlhIiwgDQogICAgICAgICJGSUQiIDogMg0KICAgICAgfSwgDQog
188
+ ICAgICAiZ2VvbWV0cnkiIDogDQogICAgICB7DQogICAgICAgICJ4IiA6IC00
189
+ MTI1NzMxLjU5NzUyMDY4MzksIA0KICAgICAgICAieSIgOiAtMTIyMjA0Mi4z
190
+ MjA3NDQ0MTYNCiAgICAgIH0NCiAgICB9LCANCiAgICB7DQogICAgICAiYXR0
191
+ cmlidXRlcyIgOiB7DQogICAgICAgICJ2bHJfbGF0aXR1ZGUiIDogLTguOTcy
192
+ MjAzNzMxNTM2NiwgDQogICAgICAgICJ2bHJfbG9uZ2l0dWRlIiA6IC00OC4x
193
+ NzE2MzcwNTgyNTY3LCANCiAgICAgICAgImNvZF9tdW5pYyIgOiAxNzE2NTAs
194
+ IA0KICAgICAgICAiY29kX2NuZXMiIDogMjQ5NDExNiwgDQogICAgICAgICJu
195
+ b21fZXN0YWIiIDogIlUgQiBTIEkgVEVORU5URSBTQUxVU1RJQU5PIExFQU5E
196
+ Uk8gREUgT0xJVkVJUkEiLCANCiAgICAgICAgImRzY19lbmRlcmVjbyIgOiAi
197
+ UFJBQ0EgTFVJUyBST0NIQSIsIA0KICAgICAgICAiZHNjX2JhaXJybyIgOiAi
198
+ Q0VOVFJPIiwgDQogICAgICAgICJkc2NfY2lkYWRlIiA6ICJQZWRybyBBZm9u
199
+ c28iLCANCiAgICAgICAgImRzY190ZWxlZm9uZSIgOiAiKDYzKTM0NjYyNDQx
200
+ IiwgDQogICAgICAgICJkc2NfZXN0cnV0X2Zpc2ljX2FtYmllbmNpYSIgOiAi
201
+ RGVzZW1wZW5obyBhY2ltYSBkYSBtw6lkaWEiLCANCiAgICAgICAgImRzY19h
202
+ ZGFwX2RlZmljX2Zpc2ljX2lkb3NvcyIgOiAiRGVzZW1wZW5obyBtZWRpYW5v
203
+ IG91ICB1bSBwb3VjbyBhYmFpeG8gZGEgbcOpZGlhIiwgDQogICAgICAgICJk
204
+ c2NfZXF1aXBhbWVudG9zIiA6ICJEZXNlbXBlbmhvIG11aXRvIGFjaW1hIGRh
205
+ IG3DqWRpYSIsIA0KICAgICAgICAiZHNjX21lZGljYW1lbnRvcyIgOiAiRGVz
206
+ ZW1wZW5obyBtdWl0byBhY2ltYSBkYSBtw6lkaWEiLCANCiAgICAgICAgIkZJ
207
+ RCIgOiAzDQogICAgICB9LCANCiAgICAgICJnZW9tZXRyeSIgOiANCiAgICAg
208
+ IHsNCiAgICAgICAgIngiIDogLTUzNjI0NDIuMTA4MDAzNTIzMiwgDQogICAg
209
+ ICAgICJ5IiA6IC0xMDAyODg4LjM0NjExNDgwNQ0KICAgICAgfQ0KICAgIH0s
210
+ IA0KICAgIHsNCiAgICAgICJhdHRyaWJ1dGVzIiA6IHsNCiAgICAgICAgInZs
211
+ cl9sYXRpdHVkZSIgOiAtOS40ODU5NDMzMTc0MTMwNiwgDQogICAgICAgICJ2
212
+ bHJfbG9uZ2l0dWRlIiA6IC0zNS44NTc1NzI1NTU1NDA5LCANCiAgICAgICAg
213
+ ImNvZF9tdW5pYyIgOiAyNzA3NzAsIA0KICAgICAgICAiY29kX2NuZXMiIDog
214
+ NjY4NTMxNSwgDQogICAgICAgICJub21fZXN0YWIiIDogIlVTRiBFTkZFUk1F
215
+ SVJPIFBFRFJPIEpBQ0lOVE8gQVJFQSAwOSIsIA0KICAgICAgICAiZHNjX2Vu
216
+ ZGVyZWNvIiA6ICJSIDE1IERFIEFHT1NUTyIsIA0KICAgICAgICAiZHNjX2Jh
217
+ aXJybyIgOiAiQ0VOVFJPIiwgDQogICAgICAgICJkc2NfY2lkYWRlIiA6ICJS
218
+ aW8gTGFyZ28iLCANCiAgICAgICAgImRzY190ZWxlZm9uZSIgOiAiTsOjbyBz
219
+ ZSBhcGxpY2EiLCANCiAgICAgICAgImRzY19lc3RydXRfZmlzaWNfYW1iaWVu
220
+ Y2lhIiA6ICJEZXNlbXBlbmhvIG1lZGlhbm8gb3UgIHVtIHBvdWNvIGFiYWl4
221
+ byBkYSBtw6lkaWEiLCANCiAgICAgICAgImRzY19hZGFwX2RlZmljX2Zpc2lj
222
+ X2lkb3NvcyIgOiAiRGVzZW1wZW5obyBtZWRpYW5vIG91ICB1bSBwb3VjbyBh
223
+ YmFpeG8gZGEgbcOpZGlhIiwgDQogICAgICAgICJkc2NfZXF1aXBhbWVudG9z
224
+ IiA6ICJEZXNlbXBlbmhvIG1lZGlhbm8gb3UgIHVtIHBvdWNvIGFiYWl4byBk
225
+ YSBtw6lkaWEiLCANCiAgICAgICAgImRzY19tZWRpY2FtZW50b3MiIDogIkRl
226
+ c2VtcGVuaG8gbWVkaWFubyBvdSAgdW0gcG91Y28gYWJhaXhvIGRhIG3DqWRp
227
+ YSIsIA0KICAgICAgICAiRklEIiA6IDQNCiAgICAgIH0sIA0KICAgICAgImdl
228
+ b21ldHJ5IiA6IA0KICAgICAgew0KICAgICAgICAieCIgOiAtMzk5MTY0Ni43
229
+ MTc5NjU2NzM3LCANCiAgICAgICAgInkiIDogLTEwNjA4MjcuODAyNjEyNDA2
230
+ NA0KICAgICAgfQ0KICAgIH0sIA0KICAgIHsNCiAgICAgICJhdHRyaWJ1dGVz
231
+ IiA6IHsNCiAgICAgICAgInZscl9sYXRpdHVkZSIgOiAtMjMuODk2LCANCiAg
232
+ ICAgICAgInZscl9sb25naXR1ZGUiIDogLTUzLjQxLCANCiAgICAgICAgImNv
233
+ ZF9tdW5pYyIgOiA0MTE4ODUsIA0KICAgICAgICAiY29kX2NuZXMiIDogNjgx
234
+ MTI5OSwgDQogICAgICAgICJub21fZXN0YWIiIDogIlVOSURBREUgREUgQVRF
235
+ TkNBTyBQUklNQVJJQSBTQVVERSBEQSBGQU1JTElBIiwgDQogICAgICAgICJk
236
+ c2NfZW5kZXJlY28iIDogIlJVQSBHVUlMSEVSTUUgQlJVWEVMIiwgDQogICAg
237
+ ICAgICJkc2NfYmFpcnJvIiA6ICJDRU5UUk8iLCANCiAgICAgICAgImRzY19j
238
+ aWRhZGUiIDogIlBlcm9iYWwiLCANCiAgICAgICAgImRzY190ZWxlZm9uZSIg
239
+ OiAiNDQzNjI1MTQ2MiIsIA0KICAgICAgICAiZHNjX2VzdHJ1dF9maXNpY19h
240
+ bWJpZW5jaWEiIDogIkRlc2VtcGVuaG8gbXVpdG8gYWNpbWEgZGEgbcOpZGlh
241
+ IiwgDQogICAgICAgICJkc2NfYWRhcF9kZWZpY19maXNpY19pZG9zb3MiIDog
242
+ IkRlc2VtcGVuaG8gbXVpdG8gYWNpbWEgZGEgbcOpZGlhIiwgDQogICAgICAg
243
+ ICJkc2NfZXF1aXBhbWVudG9zIiA6ICJEZXNlbXBlbmhvIG1lZGlhbm8gb3Ug
244
+ IHVtIHBvdWNvIGFiYWl4byBkYSBtw6lkaWEiLCANCiAgICAgICAgImRzY19t
245
+ ZWRpY2FtZW50b3MiIDogIkRlc2VtcGVuaG8gbXVpdG8gYWNpbWEgZGEgbcOp
246
+ ZGlhIiwgDQogICAgICAgICJGSUQiIDogNQ0KICAgICAgfSwgDQogICAgICAi
247
+ Z2VvbWV0cnkiIDogDQogICAgICB7DQogICAgICAgICJ4IiA6IC01OTQ1NTc0
248
+ LjAwMzI2ODc0MTEsIA0KICAgICAgICAieSIgOiAtMjc0MDc0MC4zNjc3MzU1
249
+ MzE2DQogICAgICB9DQogICAgfSwgDQogICAgew0KICAgICAgImF0dHJpYnV0
250
+ ZXMiIDogew0KICAgICAgICAidmxyX2xhdGl0dWRlIiA6IC0xNS41MzI1NzU4
251
+ NDU3MTc5LCANCiAgICAgICAgInZscl9sb25naXR1ZGUiIDogLTQyLjMwNTM0
252
+ NTUzNTI3NzEsIA0KICAgICAgICAiY29kX211bmljIiA6IDMxMzA2NSwgDQog
253
+ ICAgICAgICJjb2RfY25lcyIgOiA2NTk0ODQwLCANCiAgICAgICAgIm5vbV9l
254
+ c3RhYiIgOiAiVUFQUyBCQVJSQSBERSBBUkVJQSIsIA0KICAgICAgICAiZHNj
255
+ X2VuZGVyZWNvIiA6ICJDT01VTklEQURFIERFIEJBUlJBIERFIEFSRUlBIiwg
256
+ DQogICAgICAgICJkc2NfYmFpcnJvIiA6ICJaT05BIFJVUkFMIiwgDQogICAg
257
+ ICAgICJkc2NfY2lkYWRlIiA6ICJJbmRhaWFiaXJhIiwgDQogICAgICAgICJk
258
+ c2NfdGVsZWZvbmUiIDogIjM4MzgyNDkxMTkiLCANCiAgICAgICAgImRzY19l
259
+ c3RydXRfZmlzaWNfYW1iaWVuY2lhIiA6ICJEZXNlbXBlbmhvIG1lZGlhbm8g
260
+ b3UgIHVtIHBvdWNvIGFiYWl4byBkYSBtw6lkaWEiLCANCiAgICAgICAgImRz
261
+ Y19hZGFwX2RlZmljX2Zpc2ljX2lkb3NvcyIgOiAiRGVzZW1wZW5obyBtZWRp
262
+ YW5vIG91ICB1bSBwb3VjbyBhYmFpeG8gZGEgbcOpZGlhIiwgDQogICAgICAg
263
+ ICJkc2NfZXF1aXBhbWVudG9zIiA6ICJEZXNlbXBlbmhvIG1lZGlhbm8gb3Ug
264
+ IHVtIHBvdWNvIGFiYWl4byBkYSBtw6lkaWEiLCANCiAgICAgICAgImRzY19t
265
+ ZWRpY2FtZW50b3MiIDogIkRlc2VtcGVuaG8gbWVkaWFubyBvdSAgdW0gcG91
266
+ Y28gYWJhaXhvIGRhIG3DqWRpYSIsIA0KICAgICAgICAiRklEIiA6IDYNCiAg
267
+ ICAgIH0sIA0KICAgICAgImdlb21ldHJ5IiA6IA0KICAgICAgew0KICAgICAg
268
+ ICAieCIgOiAtNDcwOTQwOS41MjI4MjA1MzYsIA0KICAgICAgICAieSIgOiAt
269
+ MTc1MDY1NS4wNDYxMzk0NzMzDQogICAgICB9DQogICAgfQ0KICBdDQp9
270
+ http_version:
271
+ recorded_at: Mon, 30 Dec 2013 22:22:00 GMT
272
+ recorded_with: VCR 2.8.0