diff --git a/app/graphql/types/query_type.rb b/app/graphql/types/query_type.rb index c0576f2..598213e 100644 --- a/app/graphql/types/query_type.rb +++ b/app/graphql/types/query_type.rb @@ -9,9 +9,18 @@ def ping 'Pong!' end - field :record_id, RecordType, null: false, - description: 'Retrieve one timdex record' do - argument :id, String, required: true + if Flipflop.v2? + field :record_id, RecordType, null: false, + description: 'Retrieve one timdex record' do + argument :id, String, required: true + argument :index, String, required: false, default_value: nil, + description: 'It is not recommended to provide an index value unless we have provided you with one for your specific use case' + end + else + field :record_id, RecordType, null: false, + description: 'Retrieve one timdex record' do + argument :id, String, required: true + end end if Flipflop.v2? @@ -26,8 +35,8 @@ def info end if Flipflop.v2? - def record_id(id:) - result = Retrieve.new.fetch(id, Timdex::OSClient) + def record_id(id:, index:) + result = Retrieve.new.fetch(id, Timdex::OSClient, index) result['hits']['hits'].first['_source'] rescue Elasticsearch::Transport::Transport::Errors::NotFound raise GraphQL::ExecutionError, "Record '#{id}' not found" @@ -44,6 +53,8 @@ def record_id(id:) argument :subjects, String, required: false, default_value: nil argument :title, String, required: false, default_value: nil argument :from, String, required: false, default_value: '0' + argument :index, String, required: false, default_value: nil, + description: 'It is not recommended to provide an index value unless we have provided you with one for your specific use case' # applied facets argument :collection_facet, [String], required: false, default_value: nil @@ -81,11 +92,11 @@ def record_id(id:) if Flipflop.v2? def search(searchterm:, citation:, contributors:, funding_information:, identifiers:, locations:, subjects:, - title:, from:, **facets) + title:, index:, from:, **facets) query = construct_query(searchterm, citation, contributors, funding_information, identifiers, locations, subjects, title, facets) - results = Opensearch.new.search(from, query, Timdex::OSClient) + results = Opensearch.new.search(from, query, Timdex::OSClient, index) response = {} response[:hits] = results['hits']['total']['value'] diff --git a/app/models/opensearch.rb b/app/models/opensearch.rb index e9c74c3..cd32117 100644 --- a/app/models/opensearch.rb +++ b/app/models/opensearch.rb @@ -2,12 +2,17 @@ class Opensearch SIZE = 20 MAX_PAGE = 200 - def search(from, params, client) + def search(from, params, client, index = nil) @params = params - client.search(index: ENV.fetch('ELASTICSEARCH_INDEX', nil), + index = default_index unless index.present? + client.search(index: index, body: build_query(from)) end + def default_index + ENV.fetch('ELASTICSEARCH_INDEX', nil) + end + # Construct the json query to send to elasticsearch def build_query(from) { diff --git a/app/models/retrieve.rb b/app/models/retrieve.rb index a882c53..5778cad 100644 --- a/app/models/retrieve.rb +++ b/app/models/retrieve.rb @@ -1,17 +1,24 @@ class Retrieve - def fetch(id, client) + def fetch(id, client, index = nil) f = to_filter(id) - record = client.search(index: ENV['ELASTICSEARCH_INDEX'], body: f) + + index = default_index unless index.present? + + record = client.search(index: index, body: f) if client.instance_of?(OpenSearch::Client) raise OpenSearch::Transport::Transport::Errors::NotFound if record['hits']['total']['value'].zero? - else - raise Elasticsearch::Transport::Transport::Errors::NotFound if record['hits']['total'].zero? + elsif record['hits']['total'].zero? + raise Elasticsearch::Transport::Transport::Errors::NotFound end record end + def default_index + ENV.fetch('ELASTICSEARCH_INDEX', nil) + end + def to_filter(id) { query: { diff --git a/test/controllers/graphql_controller_v2_test.rb b/test/controllers/graphql_controller_v2_test.rb index d47fecb..b31df6d 100644 --- a/test/controllers/graphql_controller_v2_test.rb +++ b/test/controllers/graphql_controller_v2_test.rb @@ -153,7 +153,7 @@ def setup }' } assert_equal(200, response.status) json = JSON.parse(response.body) - assert json['data']['search']['records'].first['contributors'].any? { |c| c.has_value? 'Moon, Intae' } + assert json['data']['search']['records'].first['contributors'].any? { |c| c.value? 'Moon, Intae' } end end @@ -177,9 +177,9 @@ def setup assert_equal 'A common table : 80 recipes and stories from my shared cultures /', json['data']['search']['records'].first['title'] assert json['data']['search']['records'].first['contributors'].any? { |c| - c.has_value? 'McTernan, Cynthia Chen, author.' + c.value? 'McTernan, Cynthia Chen, author.' } - assert json['data']['search']['records'].first['identifiers'].any? { |i| i.has_value? '163565002X (hardback)' } + assert json['data']['search']['records'].first['identifiers'].any? { |i| i.value? '163565002X (hardback)' } end end @@ -317,7 +317,6 @@ def setup test 'graphqlv2 filter multiple sources' do VCR.use_cassette('graphql v2 filter multiple sources') do - # no filters to return all sources. used later to test filters return less than the total. post '/graphql', params: { query: '{ @@ -330,8 +329,7 @@ def setup } } } - }' - } + }' } json = JSON.parse(response.body) initial_source_array = json['data']['search']['aggregations']['source'] @@ -348,8 +346,7 @@ def setup } } } - }' - } + }' } assert_equal(200, response.status) json = JSON.parse(response.body) @@ -359,14 +356,13 @@ def setup assert_equal(2, filtered_source_array.count) expected_sources = ['zenodo', 'dspace@mit'] - actual_sources = filtered_source_array.map{|source| source["key"]} + actual_sources = filtered_source_array.map { |source| source['key'] } assert_equal(expected_sources, actual_sources) end end test 'graphqlv2 filter single source' do VCR.use_cassette('graphql v2 filter single source') do - # no filters to return all sources. used later to test filters return less than the total. post '/graphql', params: { query: '{ @@ -379,8 +375,7 @@ def setup } } } - }' - } + }' } json = JSON.parse(response.body) initial_source_array = json['data']['search']['aggregations']['source'] @@ -397,8 +392,7 @@ def setup } } } - }' - } + }' } assert_equal(200, response.status) json = JSON.parse(response.body) @@ -408,8 +402,40 @@ def setup assert_equal(1, filtered_source_array.count) expected_sources = ['dspace@mit'] - actual_sources = filtered_source_array.map{|source| source["key"]} + actual_sources = filtered_source_array.map { |source| source['key'] } assert_equal(expected_sources, actual_sources) end end + + test 'graphqlv2 can retrieve a record from a default index' do + # fragile test: specific item expected in default index + VCR.use_cassette('graphql v2 retrieve from default index') do + post '/graphql', params: { query: + '{ + recordId(id: "dspace:1721.1-44968") { + timdexRecordId + title + } + }' } + + json = JSON.parse(response.body) + assert_equal('dspace:1721.1-44968', json['data']['recordId']['timdexRecordId']) + end + end + + test 'graphqlv2 can retrive a record from a specified index' do + # fragile test: specific item expected in specified index + VCR.use_cassette('graphql v2 retrieve from rdi* index') do + post '/graphql', params: { query: + '{ + recordId(id: "zenodo:5728409", index: "rdi*") { + timdexRecordId + title + } + }' } + + json = JSON.parse(response.body) + assert_equal('zenodo:5728409', json['data']['recordId']['timdexRecordId']) + end + end end diff --git a/test/models/opensearch_test.rb b/test/models/opensearch_test.rb index 55f5311..e08013f 100644 --- a/test/models/opensearch_test.rb +++ b/test/models/opensearch_test.rb @@ -59,6 +59,26 @@ class OpensearchTest < ActiveSupport::TestCase assert matches.select { |m| m['subjects.value'] == 'assured' } end + test 'can override index' do + # fragile test: assumes opensearch instance with at least one index prefixed with `rdi` + VCR.use_cassette('opensearch non-default index') do + params = { title: 'data' } + results = Opensearch.new.search(0, params, Timdex::OSClient, 'rdi*') + assert results['hits']['hits'].map { |hit| hit['_index'] }.uniq.map { |index| index.start_with?('rdi') }.any? + end + end + + test 'default index' do + # fragile test: assumes opensearch instance with at least one index promoted to timdex-prod and no promoted indexes + # that start with rdi* + VCR.use_cassette('opensearch default index') do + params = { title: 'data' } + results = Opensearch.new.search(0, params, Timdex::OSClient) + refute results['hits']['hits'].map { |hit| hit['_index'] }.uniq.map { |index| index.start_with?('rdi') }.any? + assert results['hits']['hits'].map { |hit| hit['_index'] }.uniq.any? + end + end + test 'searches a single field' do VCR.use_cassette('opensearch single field') do params = { title: 'spice' } diff --git a/test/vcr_cassettes/graphql_v2_retrieve_from_default_index.yml b/test/vcr_cassettes/graphql_v2_retrieve_from_default_index.yml new file mode 100644 index 0000000..1f0d3c7 --- /dev/null +++ b/test/vcr_cassettes/graphql_v2_retrieve_from_default_index.yml @@ -0,0 +1,96 @@ +--- +http_interactions: +- request: + method: get + uri: http://localhost:9200/ + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - 'opensearch-ruby/2.0.0 (RUBY_VERSION: 2.7.6; darwin x86_64; Faraday v1.10.0)' + Content-Type: + - application/json + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Content-Length: + - '350' + body: + encoding: ASCII-8BIT + string: | + { + "name" : "e03207b01655", + "cluster_name" : "docker-cluster", + "cluster_uuid" : "9OY_6pKWQKWHQbxorP7qaw", + "version" : { + "distribution" : "opensearch", + "number" : "1.3.0", + "build_type" : "tar", + "build_hash" : "e45991597c86ba1bbcc36ee1dfdc165197a913af", + "build_date" : "2022-03-15T19:07:30.455415Z", + "build_snapshot" : false, + "lucene_version" : "8.10.1", + "minimum_wire_compatibility_version" : "6.8.0", + "minimum_index_compatibility_version" : "6.0.0-beta1" + }, + "tagline" : "The OpenSearch Project: https://opensearch.org/" + } + recorded_at: Wed, 13 Jul 2022 20:10:38 GMT +- request: + method: post + uri: http://localhost:9200/timdex-prod/_search + body: + encoding: UTF-8 + string: '{"query":{"ids":{"values":["dspace:1721.1-44968"]}}}' + headers: + User-Agent: + - 'opensearch-ruby/2.0.0 (RUBY_VERSION: 2.7.6; darwin x86_64; Faraday v1.10.0)' + Content-Type: + - application/json + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Content-Length: + - '1037' + body: + encoding: ASCII-8BIT + string: '{"took":3,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":1,"relation":"eq"},"max_score":1.0,"hits":[{"_index":"dspace-2022-07-13t19-23-43z","_type":"_doc","_id":"dspace:1721.1-44968","_score":1.0,"_source":{"citation":"Stoker, + Thomas M. (2000): Panel data analysis of U.S. coal productivity. MIT Center + for Energy and Environmental Policy Research. Working Paper. https://dspace.mit.edu/handle/1721.1/44968","content_type":["Working + Paper"],"contributors":[{"kind":"author","value":"Stoker, Thomas M."},{"kind":"other","value":"Massachusetts + Institute of Technology. Center for Energy and Environmental Policy Research."}],"dates":[{"kind":"Publication + date","value":"2000"}],"file_formats":["application/pdf"],"format":"electronic + resource","identifiers":[{"kind":"uri","value":"http://hdl.handle.net/1721.1/44968"},{"kind":"oclc","value":"52315985"}],"links":[{"kind":"Digital + object URL","text":"Digital object URL","url":"http://hdl.handle.net/1721.1/44968"}],"numbering":"MIT-CEEPR + (Series) ; 00-004WP.","publication_information":["MIT Center for Energy and + Environmental Policy Research"],"source":"DSpace@MIT","source_link":"https://dspace.mit.edu/handle/1721.1/44968","summary":["We + analyze labor productivity in coal mining in the United States using indices + of productivity change associated with the concepts of panel data modeling. + This approach is valuable when there is extensive heterogeneity in production + units, as with coal mines. We find substantial returns to scale for coal mining + in all geographical regions, and find that smooth technical progress is exhibited + by estimates of the fixed effects for coal mining. We carry out a variety + of diagnostic analyses of our basic model and primary modeling assumptions, + using recently proposed methods for addressing ''errors-in-variable'' and + ''weak instrument bias'' problems, as well a new method for studying errors-in-variables + in nonlinear contexts."],"timdex_record_id":"dspace:1721.1-44968","title":"Panel + data analysis of U.S. coal productivity"}}]}}' + recorded_at: Wed, 13 Jul 2022 20:10:39 GMT +recorded_with: VCR 6.1.0 diff --git a/test/vcr_cassettes/graphql_v2_retrieve_from_rdi_index.yml b/test/vcr_cassettes/graphql_v2_retrieve_from_rdi_index.yml new file mode 100644 index 0000000..366efac --- /dev/null +++ b/test/vcr_cassettes/graphql_v2_retrieve_from_rdi_index.yml @@ -0,0 +1,93 @@ +--- +http_interactions: +- request: + method: get + uri: http://localhost:9200/ + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - 'opensearch-ruby/2.0.0 (RUBY_VERSION: 2.7.6; darwin x86_64; Faraday v1.10.0)' + Content-Type: + - application/json + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Content-Length: + - '350' + body: + encoding: ASCII-8BIT + string: | + { + "name" : "e03207b01655", + "cluster_name" : "docker-cluster", + "cluster_uuid" : "9OY_6pKWQKWHQbxorP7qaw", + "version" : { + "distribution" : "opensearch", + "number" : "1.3.0", + "build_type" : "tar", + "build_hash" : "e45991597c86ba1bbcc36ee1dfdc165197a913af", + "build_date" : "2022-03-15T19:07:30.455415Z", + "build_snapshot" : false, + "lucene_version" : "8.10.1", + "minimum_wire_compatibility_version" : "6.8.0", + "minimum_index_compatibility_version" : "6.0.0-beta1" + }, + "tagline" : "The OpenSearch Project: https://opensearch.org/" + } + recorded_at: Wed, 13 Jul 2022 20:14:01 GMT +- request: + method: post + uri: http://localhost:9200/rdi*/_search + body: + encoding: UTF-8 + string: '{"query":{"ids":{"values":["zenodo:5728409"]}}}' + headers: + User-Agent: + - 'opensearch-ruby/2.0.0 (RUBY_VERSION: 2.7.6; darwin x86_64; Faraday v1.10.0)' + Content-Type: + - application/json + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Content-Length: + - '1184' + body: + encoding: ASCII-8BIT + string: '{"took":2,"timed_out":false,"_shards":{"total":3,"successful":3,"skipped":0,"failed":0},"hits":{"total":{"value":1,"relation":"eq"},"max_score":1.0,"hits":[{"_index":"rdizenodo-2022-07-13t19-23-57z","_type":"_doc","_id":"zenodo:5728409","_score":1.0,"_source":{"citation":"Stevens, + Abigail (2021): Data for time series tutorial. Zenodo. Dataset. https://zenodo.org/record/5728409","content_type":["Dataset"],"contributors":[{"affiliation":["Michigan + State Univ. and Univ. of Michigan"],"kind":"Creator","identifier":["https://orcid.org/0000-0002-5041-3079"],"value":"Stevens, + Abigail"}],"dates":[{"kind":"Publication date","value":"2021"},{"kind":"Issued","value":"2021-11-25"}],"format":"electronic + resource","identifiers":[{"kind":"DOI","value":"10.5281/zenodo.5728409"},{"kind":"url","value":"https://zenodo.org/record/5728409"}],"languages":["en"],"notes":[{"kind":"Other","value":["{\"references\": + [\"Wilson-Hodge, C. et al. (2018). \\\"NICER and Fermi GBM Observations of + the First Galactic Ultraluminous X-Ray Pulsar Swift J0243.6+6124,\\\" ApJ, + 863, 9.\", \"Stevens, A.L. et al. (2018). \\\" A NICER Discovery of a Low-frequency + Quasi-periodic Oscillation in the Soft-intermediate State of MAXI J1535-571,\\\" + ApJ, 865, L15.\"]}"]}],"publication_information":["Zenodo"],"related_items":[{"relationship":"IsVersionOf","uri":"https://doi.org/10.5281/zenodo.5728408"},{"relationship":"IsPartOf","uri":"https://zenodo.org/communities/astronomy-general"}],"rights":[{"uri":"https://creativecommons.org/licenses/by/4.0/legalcode"},{"uri":"info:eu-repo/semantics/openAccess"}],"source":"Zenodo","source_link":"https://zenodo.org/record/5728409","subjects":[{"kind":"Subject + scheme not provided","value":["astronomy"]}],"summary":["\u003cp\u003eThese + are sample data files to be used in the time series tutorial found here: \u003ca + href=\"https://github.com/abigailStev/timeseries-tutorial\"\u003ehttps://github.com/abigailStev/timeseries-tutorial + \u003c/a\u003e\u003c/p\u003e\n\n\u003cp\u003eThey are public datasets from + the NICER X-ray Timing Instrument of a black hole, MAXI J1535-571, and a neutron + star, Swift J0243.6+6124. There are also Good Time Intervals I created for + each of the photon event lists.\u003c/p\u003e"],"timdex_record_id":"zenodo:5728409","title":"Data + for time series tutorial"}}]}}' + recorded_at: Wed, 13 Jul 2022 20:14:01 GMT +recorded_with: VCR 6.1.0 diff --git a/test/vcr_cassettes/opensearch_default_index.yml b/test/vcr_cassettes/opensearch_default_index.yml new file mode 100644 index 0000000..15df5ed --- /dev/null +++ b/test/vcr_cassettes/opensearch_default_index.yml @@ -0,0 +1,152 @@ +--- +http_interactions: +- request: + method: get + uri: http://localhost:9200/ + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - 'opensearch-ruby/2.0.0 (RUBY_VERSION: 2.7.6; darwin x86_64; Faraday v1.10.0)' + Content-Type: + - application/json + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Content-Length: + - '350' + body: + encoding: ASCII-8BIT + string: | + { + "name" : "e03207b01655", + "cluster_name" : "docker-cluster", + "cluster_uuid" : "9OY_6pKWQKWHQbxorP7qaw", + "version" : { + "distribution" : "opensearch", + "number" : "1.3.0", + "build_type" : "tar", + "build_hash" : "e45991597c86ba1bbcc36ee1dfdc165197a913af", + "build_date" : "2022-03-15T19:07:30.455415Z", + "build_snapshot" : false, + "lucene_version" : "8.10.1", + "minimum_wire_compatibility_version" : "6.8.0", + "minimum_index_compatibility_version" : "6.0.0-beta1" + }, + "tagline" : "The OpenSearch Project: https://opensearch.org/" + } + recorded_at: Wed, 13 Jul 2022 19:47:35 GMT +- request: + method: post + uri: http://localhost:9200/timdex-prod/_search + body: + encoding: UTF-8 + string: '{"from":0,"size":20,"query":{"bool":{"should":null,"must":[{"match":{"title":"data"}}],"filter":[]}},"highlight":{"pre_tags":["\u003cspan + class=\"highlight\"\u003e"],"post_tags":["\u003c/span\u003e"],"fields":{"*":{}}},"aggregations":{"collections":{"terms":{"field":"collections.keyword"}},"contributors":{"nested":{"path":"contributors"},"aggs":{"contributor_names":{"terms":{"field":"contributors.value.keyword"}}}},"content_type":{"terms":{"field":"content_type"}},"content_format":{"terms":{"field":"format"}},"languages":{"terms":{"field":"languages.keyword"}},"literary_form":{"terms":{"field":"literary_form"}},"source":{"terms":{"field":"source"}},"subjects":{"nested":{"path":"subjects"},"aggs":{"subject_names":{"terms":{"field":"subjects.value.keyword"}}}}}}' + headers: + User-Agent: + - 'opensearch-ruby/2.0.0 (RUBY_VERSION: 2.7.6; darwin x86_64; Faraday v1.10.0)' + Content-Type: + - application/json + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Content-Length: + - '2381' + body: + encoding: ASCII-8BIT + string: '{"took":8,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":3,"relation":"eq"},"max_score":5.2164545,"hits":[{"_index":"dspace-2022-07-13t19-23-43z","_type":"_doc","_id":"dspace:1721.1-44968","_score":5.2164545,"_source":{"citation":"Stoker, + Thomas M. (2000): Panel data analysis of U.S. coal productivity. MIT Center + for Energy and Environmental Policy Research. Working Paper. https://dspace.mit.edu/handle/1721.1/44968","content_type":["Working + Paper"],"contributors":[{"kind":"author","value":"Stoker, Thomas M."},{"kind":"other","value":"Massachusetts + Institute of Technology. Center for Energy and Environmental Policy Research."}],"dates":[{"kind":"Publication + date","value":"2000"}],"file_formats":["application/pdf"],"format":"electronic + resource","identifiers":[{"kind":"uri","value":"http://hdl.handle.net/1721.1/44968"},{"kind":"oclc","value":"52315985"}],"links":[{"kind":"Digital + object URL","text":"Digital object URL","url":"http://hdl.handle.net/1721.1/44968"}],"numbering":"MIT-CEEPR + (Series) ; 00-004WP.","publication_information":["MIT Center for Energy and + Environmental Policy Research"],"source":"DSpace@MIT","source_link":"https://dspace.mit.edu/handle/1721.1/44968","summary":["We + analyze labor productivity in coal mining in the United States using indices + of productivity change associated with the concepts of panel data modeling. + This approach is valuable when there is extensive heterogeneity in production + units, as with coal mines. We find substantial returns to scale for coal mining + in all geographical regions, and find that smooth technical progress is exhibited + by estimates of the fixed effects for coal mining. We carry out a variety + of diagnostic analyses of our basic model and primary modeling assumptions, + using recently proposed methods for addressing ''errors-in-variable'' and + ''weak instrument bias'' problems, as well a new method for studying errors-in-variables + in nonlinear contexts."],"timdex_record_id":"dspace:1721.1-44968","title":"Panel + data analysis of U.S. coal productivity"},"highlight":{"title":["Panel data analysis of U.S. coal productivity"]}},{"_index":"dspace-2022-07-13t19-23-43z","_type":"_doc","_id":"dspace:1721.1-45062","_score":3.5745273,"_source":{"citation":"Ellerman, + A. Denny, Buchner, Barbara (2006): Over-allocation or abatement? : a preliminary + analysis of the EU ETS based on the 2005 emission data. MIT Center for Energy + and Environmental Policy Research. Working Paper. https://dspace.mit.edu/handle/1721.1/45062","content_type":["Working + Paper"],"contributors":[{"kind":"author","value":"Ellerman, A. Denny"},{"kind":"author","value":"Buchner, + Barbara"},{"kind":"other","value":"Massachusetts Institute of Technology. + Center for Energy and Environmental Policy Research."}],"dates":[{"kind":"Publication + date","value":"2006"}],"file_formats":["application/pdf"],"format":"electronic + resource","identifiers":[{"kind":"uri","value":"http://hdl.handle.net/1721.1/45062"},{"kind":"oclc","value":"159935161"}],"links":[{"kind":"Digital + object URL","text":"Digital object URL","url":"http://hdl.handle.net/1721.1/45062"}],"numbering":"MIT-CEEPR + (Series) ; 06-016WP.","publication_information":["MIT Center for Energy and + Environmental Policy Research"],"source":"DSpace@MIT","source_link":"https://dspace.mit.edu/handle/1721.1/45062","summary":["This + paper provides an initial analysis of the EU ETS based on the installation-level + data for verified emissions and allowance allocations in the first trading + year. Those data, released on May 15, 2006, and subsequent updates revealed + that CO2 emissions were about 4% lower than the allocated allowances. The + main objective of the paper is to shed light on the extent to which over-allocation + and abatement have taken place in 2005. We propose a measure by which over-allocation + can be judged and provide estimates of abatement based on emissions data and + indicators of economic activity as well as trends in energy and carbon intensity. + Finally, we discuss the insights and implications that emerge from this tentative + assessment."],"timdex_record_id":"dspace:1721.1-45062","title":"Over-allocation + or abatement? : a preliminary analysis of the EU ETS based on the 2005 emission + data"},"highlight":{"title":[": a preliminary analysis of the EU ETS based + on the 2005 emission data"]}},{"_index":"dspace-2022-07-13t19-23-43z","_type":"_doc","_id":"dspace:1721.1-44986","_score":3.5745273,"_source":{"citation":"Gupta, + Shreekant (2002): Environmental benefits and cost savings through market-based + instruments : an application using state-level data from India. MIT Center + for Energy and Environmental Policy Research. Working Paper. https://dspace.mit.edu/handle/1721.1/44986","content_type":["Working + Paper"],"contributors":[{"kind":"author","value":"Gupta, Shreekant"},{"kind":"other","value":"Massachusetts + Institute of Technology. Center for Energy and Environmental Policy Research."}],"dates":[{"kind":"Publication + date","value":"2002"}],"file_formats":["application/pdf"],"format":"electronic + resource","identifiers":[{"kind":"uri","value":"http://hdl.handle.net/1721.1/44986"},{"kind":"oclc","value":"52305223"}],"links":[{"kind":"Digital + object URL","text":"Digital object URL","url":"http://hdl.handle.net/1721.1/44986"}],"numbering":"MIT-CEEPR + (Series) ; 02-005WP.","publication_information":["MIT Center for Energy and + Environmental Policy Research"],"source":"DSpace@MIT","source_link":"https://dspace.mit.edu/handle/1721.1/44986","summary":["This + paper develops a methodology for estimating potential cost savings from the + use of market-based instruments (MBIs) when local emissions and abatement + cost data are not available. The paper provides estimates of the cost savings + for a 50% reduction of particulate emissions in India''s five main industrial + states, as well as estimates of the benefits from doing so. The estimates + are developed by applying World Bank particulate intensity and abatement cost + factors to sectoral output data. The estimated costs savings range from 26% + to 169% and the benefits are many times greater than the costs even without + the use of MBIs. The paper concludes by commenting on the relative difficulty + of implementing reductions by market-based instruments and conventional command-and-control + regulations."],"timdex_record_id":"dspace:1721.1-44986","title":"Environmental + benefits and cost savings through market-based instruments : an application + using state-level data from India"},"highlight":{"title":["Environmental benefits + and cost savings through market-based instruments : an application using state-level + data"]}}]},"aggregations":{"languages":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[]},"content_type":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[{"key":"working + paper","doc_count":3}]},"collections":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[]},"subjects":{"doc_count":0,"subject_names":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[]}},"content_format":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[{"key":"electronic + resource","doc_count":3}]},"literary_form":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[]},"source":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[{"key":"dspace@mit","doc_count":3}]},"contributors":{"doc_count":7,"contributor_names":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[{"key":"massachusetts + institute of technology. center for energy and environmental policy research.","doc_count":3},{"key":"buchner, + barbara","doc_count":1},{"key":"ellerman, a. denny","doc_count":1},{"key":"gupta, + shreekant","doc_count":1},{"key":"stoker, thomas m.","doc_count":1}]}}}}' + recorded_at: Wed, 13 Jul 2022 19:47:35 GMT +recorded_with: VCR 6.1.0 diff --git a/test/vcr_cassettes/opensearch_non-default_index.yml b/test/vcr_cassettes/opensearch_non-default_index.yml new file mode 100644 index 0000000..d36925d --- /dev/null +++ b/test/vcr_cassettes/opensearch_non-default_index.yml @@ -0,0 +1,78 @@ +--- +http_interactions: +- request: + method: get + uri: http://localhost:9200/ + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - 'opensearch-ruby/2.0.0 (RUBY_VERSION: 2.7.6; darwin x86_64; Faraday v1.10.0)' + Content-Type: + - application/json + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Content-Length: + - '350' + body: + encoding: ASCII-8BIT + string: | + { + "name" : "e03207b01655", + "cluster_name" : "docker-cluster", + "cluster_uuid" : "9OY_6pKWQKWHQbxorP7qaw", + "version" : { + "distribution" : "opensearch", + "number" : "1.3.0", + "build_type" : "tar", + "build_hash" : "e45991597c86ba1bbcc36ee1dfdc165197a913af", + "build_date" : "2022-03-15T19:07:30.455415Z", + "build_snapshot" : false, + "lucene_version" : "8.10.1", + "minimum_wire_compatibility_version" : "6.8.0", + "minimum_index_compatibility_version" : "6.0.0-beta1" + }, + "tagline" : "The OpenSearch Project: https://opensearch.org/" + } + recorded_at: Wed, 13 Jul 2022 19:37:49 GMT +- request: + method: post + uri: http://localhost:9200/rdi*/_search + body: + encoding: UTF-8 + string: '{"from":0,"size":20,"query":{"bool":{"should":null,"must":[{"match":{"title":"data"}}],"filter":[]}},"highlight":{"pre_tags":["\u003cspan + class=\"highlight\"\u003e"],"post_tags":["\u003c/span\u003e"],"fields":{"*":{}}},"aggregations":{"collections":{"terms":{"field":"collections.keyword"}},"contributors":{"nested":{"path":"contributors"},"aggs":{"contributor_names":{"terms":{"field":"contributors.value.keyword"}}}},"content_type":{"terms":{"field":"content_type"}},"content_format":{"terms":{"field":"format"}},"languages":{"terms":{"field":"languages.keyword"}},"literary_form":{"terms":{"field":"literary_form"}},"source":{"terms":{"field":"source"}},"subjects":{"nested":{"path":"subjects"},"aggs":{"subject_names":{"terms":{"field":"subjects.value.keyword"}}}}}}' + headers: + User-Agent: + - 'opensearch-ruby/2.0.0 (RUBY_VERSION: 2.7.6; darwin x86_64; Faraday v1.10.0)' + Content-Type: + - application/json + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Content-Length: + - '21415' + body: + encoding: ASCII-8BIT + string: !binary |- + eyJ0b29rIjoxNCwidGltZWRfb3V0IjpmYWxzZSwiX3NoYXJkcyI6eyJ0b3RhbCI6Mywic3VjY2Vzc2Z1bCI6Mywic2tpcHBlZCI6MCwiZmFpbGVkIjowfSwiaGl0cyI6eyJ0b3RhbCI6eyJ2YWx1ZSI6MTI3LCJyZWxhdGlvbiI6ImVxIn0sIm1heF9zY29yZSI6My42MjIyODQ3LCJoaXRzIjpbeyJfaW5kZXgiOiJyZGl3aG9hcy0yMDIyLTA3LTEzdDE5LTI0LTUyeiIsIl90eXBlIjoiX2RvYyIsIl9pZCI6Indob2FzOjE5MTItMjMzOCIsIl9zY29yZSI6My42MjIyODQ3LCJfc291cmNlIjp7ImNpdGF0aW9uIjoiRW52aXJvbm1lbnRhbCBTY2llbmNlIFx1MDAyNiBUZWNobm9sb2d5ICA0MiAoMjAwOCk6IDU2ODgtNTY5MyIsImNvbnRlbnRfdHlwZSI6WyJBcnRpY2xlIl0sImNvbnRyaWJ1dG9ycyI6W3sia2luZCI6ImF1dGhvciIsInZhbHVlIjoiQWNrZXJtYW4sIEthdGhlcmluZSBWLiJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiU3VuZHF1aXN0LCBFcmljIFQuIn1dLCJkYXRlcyI6W3sia2luZCI6ImFjY2Vzc2lvbmVkIiwidmFsdWUiOiIyMDA4LTA4LTIwVDE0OjUxOjE0WiJ9LHsia2luZCI6ImF2YWlsYWJsZSIsInZhbHVlIjoiMjAwOC0wOC0yMFQxNDo1MToxNFoifSx7ImtpbmQiOiJQdWJsaWNhdGlvbiBkYXRlIiwidmFsdWUiOiIyMDA4LTA2LTI1In1dLCJmaWxlX2Zvcm1hdHMiOlsiYXBwbGljYXRpb24vcGRmIl0sImZvcm1hdCI6ImVsZWN0cm9uaWMgcmVzb3VyY2UiLCJmdW5kaW5nX2luZm9ybWF0aW9uIjpbeyJmdW5kZXJfbmFtZSI6IlRoaXMgc3R1ZHkgd2FzIHN1cHBvcnRlZCBieSB0aGUgTmF0aW9uYWwgUmVzZWFyY2ggUHJvZ3JhbVxyXG5hbmQgdGhlIEVhcnRoIFN5c3RlbSBEeW5hbWljcyBQcm9ncmFtIG9mIHRoZSBVLlMuXHJcbkdlb2xvZ2ljYWwgU3VydmV5LiJ9XSwiaWRlbnRpZmllcnMiOlt7ImtpbmQiOiJ1cmkiLCJ2YWx1ZSI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTkxMi8yMzM4In0seyJraW5kIjoiZG9pIiwidmFsdWUiOiIxMC4xMDIxL2VzODAwMjIxcSJ9XSwibGFuZ3VhZ2VzIjpbImVuX1VTIl0sImxpbmtzIjpbeyJraW5kIjoiRGlnaXRhbCBvYmplY3QgVVJMIiwidGV4dCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInVybCI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTkxMi8yMzM4In1dLCJub3RlcyI6W3sidmFsdWUiOlsiVGhpcyBwYXBlciBpcyBub3Qgc3ViamVjdCB0byBVLlMuIGNvcHlyaWdodC4gIFRoZSBkZWZpbml0aXZlIHZlcnNpb24gd2FzIHB1Ymxpc2hlZCBpbiBFbnZpcm9ubWVudGFsIFNjaWVuY2UgXHUwMDI2IFRlY2hub2xvZ3kgIDQyICgyMDA4KTogNTY4OC01NjkzLCBkb2k6MTAuMTAyMS9lczgwMDIyMXEuIl19XSwicHVibGljYXRpb25faW5mb3JtYXRpb24iOlsiQW1lcmljYWwgQ2hlbWljYWwgU29jaWV0eSJdLCJyZWxhdGVkX2l0ZW1zIjpbeyJ1cmkiOiJodHRwczovL2RvaS5vcmcvMTAuMTAyMS9lczgwMDIyMXEifV0sInNvdXJjZSI6Ildvb2RzIEhvbGUgT3BlbiBBY2Nlc3MgU2VydmVyIiwic291cmNlX2xpbmsiOiJodHRwczovL2RhcmNoaXZlLm1ibHdob2lsaWJyYXJ5Lm9yZy9oYW5kbGUvMTkxMi8yMzM4Iiwic3VtbWFyeSI6WyJFc3RpbWF0ZXMgb2YgZm9zc2lsLWZ1ZWwgQ08yIGVtaXNzaW9ucyBhcmUgbmVlZGVkIHRvIGFkZHJlc3MgYSB2YXJpZXR5IG9mIGNsaW1hdGUtY2hhbmdlIG1pdGlnYXRpb24gY29uY2VybnMgb3ZlciBhIGJyb2FkIHJhbmdlIG9mIHNwYXRpYWwgYW5kIHRlbXBvcmFsIHNjYWxlcy4gV2UgY29tcGFyZWQgdHdvIGRhdGEgc2V0cyB0aGF0IHJlcG9ydCBwb3dlci1wbGFudCBDTzIgZW1pc3Npb25zIGluIHRoZSBjb250ZXJtaW5vdXMgVS5TLiBmb3IgMjAwNCwgdGhlIG1vc3QgcmVjZW50IHllYXIgcmVwb3J0ZWQgaW4gYm90aCBkYXRhIHNldHMuIFRoZSBkYXRhIHNldHMgd2VyZSBvYnRhaW5lZCBmcm9tIHRoZSBEZXBhcnRtZW50IG9mIEVuZXJneeKAmXMgRW5lcmd5IEluZm9ybWF0aW9uIEFkbWluaXN0cmF0aW9uIChFSUEpIGFuZCB0aGUgRW52aXJvbm1lbnRhbCBQcm90ZWN0aW9uIEFnZW5jeeKAmXMgZUdSSUQgZGF0YWJhc2UuIENvbnRlcm1pbm91cyBVLlMuIHRvdGFsIGVtaXNzaW9ucyBjb21wdXRlZCBmcm9tIHRoZSBkYXRhIHNldHMgZGlmZmVyZWQgYnkgMy41JSBmb3IgdG90YWwgcGxhbnQgZW1pc3Npb25zIChlbGVjdHJpY2l0eSBwbHVzIHVzZWZ1bCB0aGVybWFsIG91dHB1dCkgYW5kIDIuMyUgZm9yIGVsZWN0cmljaXR5IGdlbmVyYXRpb24gb25seS4gVGhlc2UgZGlmZmVyZW5jZXMgYXJlIHdlbGwgd2l0aGluIHByZXZpb3VzIGVzdGltYXRlcyBvZiB1bmNlcnRhaW50eSBpbiBhbm51YWwgVS5TLiBmb3NzaWwtZnVlbCBlbWlzc2lvbnMuIEhvd2V2ZXIsIHRoZSBjb3JyZXNwb25kaW5nIGF2ZXJhZ2UgYWJzb2x1dGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBlc3RpbWF0ZXMgb2YgZW1pc3Npb25zIGZyb20gaW5kaXZpZHVhbCBwb3dlciBwbGFudHMgd2VyZSBtdWNoIGxhcmdlciwgMTYuOSUgYW5kIDI1LjMlLCByZXNwZWN0aXZlbHkuIEJ5IHN0YXRpc3RpY2FsIGFuYWx5c2lzLCB3ZSBpZGVudGlmaWVkIHNldmVyYWwgcG90ZW50aWFsIHNvdXJjZXMgb2YgZGlmZmVyZW5jZXMgYmV0d2VlbiBFSUEgYW5kIGVHUklEIGVzdGltYXRlcyBmb3IgaW5kaXZpZHVhbCBwbGFudHMuIEVzdGltYXRlcyB0aGF0IGFyZSBiYXNlZCBwYXJ0bHkgb3IgZW50aXJlbHkgb24gbW9uaXRvcmluZyBvZiBzdGFjayBnYXNlcyAocmVwb3J0ZWQgYnkgZUdSSUQgb25seSkgZGlmZmVyZWQgc2lnbmlmaWNhbnRseSBmcm9tIGVzdGltYXRlcyBiYXNlZCBvbiBmdWVsIGNvbnN1bXB0aW9uIChhcyByZXBvcnRlZCBieSBFSUEpLiBEaWZmZXJlbmNlcyBpbiBhY2NvdW50aW5nIG1ldGhvZHMgYXBwZWFyIHRvIGV4cGxhaW4gZGlmZmVyZW5jZXMgaW4gZXN0aW1hdGVzIGZvciBlbWlzc2lvbnMgZnJvbSBlbGVjdHJpY2l0eSBnZW5lcmF0aW9uIGZyb20gY29tYmluZWQgaGVhdCBhbmQgcG93ZXIgcGxhbnRzLCBhbmQgZm9yIHRvdGFsIGFuZCBlbGVjdHJpY2l0eSBnZW5lcmF0aW9uIGVtaXNzaW9ucyBmcm9tIHBsYW50cyB0aGF0IGJ1cm4gbm9uY29udmVudGlvbmFsIGZ1ZWxzIChlLmcuLCBiaW9tYXNzKS4gT3VyIGFuYWx5c2lzIHN1Z2dlc3RzIHRoZSBuZWVkIGZvciBjYXJlIGluIHV0aWxpemluZyBlbWlzc2lvbnMgZGF0YSBmcm9tIGluZGl2aWR1YWwgcG93ZXIgcGxhbnRzLCBhbmQgdGhlIG5lZWQgZm9yIHRyYW5zcGFyZW5jeSBpbiBkb2N1bWVudGluZyB0aGUgYWNjb3VudGluZyBhbmQgbW9uaXRvcmluZyBtZXRob2RzIHVzZWQgdG8gZXN0aW1hdGUgZW1pc3Npb25zLiJdLCJ0aW1kZXhfcmVjb3JkX2lkIjoid2hvYXM6MTkxMi0yMzM4IiwidGl0bGUiOiJDb21wYXJpc29uIG9mIHR3byBVLlMuIHBvd2VyLXBsYW50IGNhcmJvbiBkaW94aWRlIGVtaXNzaW9ucyBkYXRhIHNldHMifSwiaGlnaGxpZ2h0Ijp7InRpdGxlIjpbIkNvbXBhcmlzb24gb2YgdHdvIFUuUy4gcG93ZXItcGxhbnQgY2FyYm9uIGRpb3hpZGUgZW1pc3Npb25zIDxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+ZGF0YTwvc3Bhbj4gc2V0cyJdfX0seyJfaW5kZXgiOiJyZGl3aG9hcy0yMDIyLTA3LTEzdDE5LTI0LTUyeiIsIl90eXBlIjoiX2RvYyIsIl9pZCI6Indob2FzOjE5MTItMjQ4NzkiLCJfc2NvcmUiOjMuNjIyMjg0NywiX3NvdXJjZSI6eyJjaXRhdGlvbiI6IkZhcnJpcywgQS4gUy4sIERlZm5lLCBaLiwgXHUwMDI2IEdhbmp1LCBOLiBLLiAoMjAxOSkuIElkZW50aWZ5aW5nIHNhbHQgbWFyc2ggc2hvcmVsaW5lcyBmcm9tIHJlbW90ZWx5IHNlbnNlZCBlbGV2YXRpb24gZGF0YSBhbmQgaW1hZ2VyeS4gUmVtb3RlIFNlbnNpbmcsIDExKDE1KSwgMTc5NS4iLCJjb250ZW50X3R5cGUiOlsiQXJ0aWNsZSJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6IkZhcnJpcywgQW15IFMuIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJEZWZuZSwgWmFmZXIifSx7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6Ikdhbmp1LCBOZWlsIEsuIn1dLCJkYXRlcyI6W3sia2luZCI6ImFjY2Vzc2lvbmVkIiwidmFsdWUiOiIyMDE5LTExLTIxVDIwOjMyOjE2WiJ9LHsia2luZCI6ImF2YWlsYWJsZSIsInZhbHVlIjoiMjAxOS0xMS0yMVQyMDozMjoxNloifSx7ImtpbmQiOiJQdWJsaWNhdGlvbiBkYXRlIiwidmFsdWUiOiIyMDE5LTA3LTMxIn1dLCJmb3JtYXQiOiJlbGVjdHJvbmljIHJlc291cmNlIiwiZnVuZGluZ19pbmZvcm1hdGlvbiI6W3siZnVuZGVyX25hbWUiOiJUaGlzIHByb2plY3Qgd2FzIHN1cHBvcnRlZCBieSB0aGUgVS5TLiBHZW9sb2dpY2FsIFN1cnZleSAoVVNHUykgQ29hc3RhbC9NYXJpbmUgTmF0dXJhbCBIYXphcmRzIGFuZCBSZXNvdXJjZXMgUHJvZ3JhbSBhcyB3ZWxsIGFzIHRoZSBNYXNzYWNodXNldHRzIE8gY2Ugb2YgQ29hc3RhbCBab25lIE1hbmFnZW1lbnQgdW5kZXIgaW50ZXJhZ2VuY3kgYWdyZWVtZW50IDE2RU5NQUxRMDA2MDAwLiJ9XSwiaWRlbnRpZmllcnMiOlt7ImtpbmQiOiJ1cmkiLCJ2YWx1ZSI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTkxMi8yNDg3OSJ9LHsia2luZCI6ImRvaSIsInZhbHVlIjoiMTAuMzM5MC9yczExMTUxNzk1In1dLCJsaW5rcyI6W3sia2luZCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInRleHQiOiJEaWdpdGFsIG9iamVjdCBVUkwiLCJ1cmwiOiJodHRwczovL2hkbC5oYW5kbGUubmV0LzE5MTIvMjQ4NzkifV0sIm5vdGVzIjpbeyJ2YWx1ZSI6WyLCqSBUaGUgQXV0aG9yKHMpLCAyMDE5LiBUaGlzIGFydGljbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIExpY2Vuc2UuIFRoZSBkZWZpbml0aXZlIHZlcnNpb24gd2FzIHB1Ymxpc2hlZCBpbiBGYXJyaXMsIEEuIFMuLCBEZWZuZSwgWi4sIFx1MDAyNiBHYW5qdSwgTi4gSy4gSWRlbnRpZnlpbmcgc2FsdCBtYXJzaCBzaG9yZWxpbmVzIGZyb20gcmVtb3RlbHkgc2Vuc2VkIGVsZXZhdGlvbiBkYXRhIGFuZCBpbWFnZXJ5LiBSZW1vdGUgU2Vuc2luZywgMTEoMTUpLCAoMjAxOSk6IDE3OTUsIGRvaTogMTAuMzM5MC9yczExMTUxNzk1LiJdfV0sInB1YmxpY2F0aW9uX2luZm9ybWF0aW9uIjpbIk1EUEkiXSwicmVsYXRlZF9pdGVtcyI6W3sidXJpIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjMzOTAvcnMxMTE1MTc5NSJ9XSwicmlnaHRzIjpbe30seyJ1cmkiOiJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvIn1dLCJzb3VyY2UiOiJXb29kcyBIb2xlIE9wZW4gQWNjZXNzIFNlcnZlciIsInNvdXJjZV9saW5rIjoiaHR0cHM6Ly9kYXJjaGl2ZS5tYmx3aG9pbGlicmFyeS5vcmcvaGFuZGxlLzE5MTIvMjQ4NzkiLCJzdWJqZWN0cyI6W3sia2luZCI6IlN1YmplY3Qgc2NoZW1lIG5vdCBwcm92aWRlZCIsInZhbHVlIjpbIm1hcnNoIGVkZ2UiLCJtYXJzaCBzaG9yZWxpbmUiLCJ1bm1hbm5lZCBhaXJjcmFmdCBzeXN0ZW0iLCJVQVMiLCJVQVYiLCJkcm9uZSIsImxpZGFyIiwic2FsdCBtYXJzaCIsImNvYXN0YWwgd2V0bGFuZHMiLCJQbHVtIElzbGFuZCJdfV0sInN1bW1hcnkiOlsiU2FsdCBtYXJzaGVzIGFyZSB2YWx1YWJsZSBlY29zeXN0ZW1zIHRoYXQgYXJlIHZ1bG5lcmFibGUgdG8gbGF0ZXJhbCBlcm9zaW9uLCBzdWJtZXJnZW5jZSwgYW5kIGludGVybmFsIGRpc2ludGVncmF0aW9uIGR1ZSB0byBzZWEgbGV2ZWwgcmlzZSwgc3Rvcm1zLCBhbmQgc2VkaW1lbnQgZGVmaWNpdHMuIEJlY2F1c2UgbWFueSBzYWx0IG1hcnNoZXMgYXJlIGxvc2luZyBhcmVhIGluIHJlc3BvbnNlIHRvIHRoZXNlIGZhY3RvcnMsIGl0IGlzIGltcG9ydGFudCB0byBtb25pdG9yIHRoZWlyIGxhdGVyYWwgZXh0ZW50IGF0IGhpZ2ggcmVzb2x1dGlvbiBvdmVyIG11bHRpcGxlIHRpbWVzY2FsZXMuIEluIHRoaXMgc3R1ZHkgd2UgZGVzY3JpYmUgdHdvIG1ldGhvZHMgdG8gY2FsY3VsYXRlIHRoZSBsb2NhdGlvbiBvZiB0aGUgc2FsdCBtYXJzaCBzaG9yZWxpbmUuIFRoZSBtYXJzaCBlZGdlIGZyb20gZWxldmF0aW9uIGRhdGEgKE1FRUQpIG1ldGhvZCB1c2VzIHJlbW90ZWx5IHNlbnNlZCBlbGV2YXRpb24gZGF0YSB0byBjYWxjdWxhdGUgYW4gb2JqZWN0aXZlIHByb3h5IGZvciB0aGUgc2hvcmVsaW5lIG9mIGEgc2FsdCBtYXJzaC4gVGhpcyBwcm94eSBpcyB0aGUgYWJydXB0IGNoYW5nZSBpbiBlbGV2YXRpb24gdGhhdCB1c3VhbGx5IGNoYXJhY3Rlcml6ZXMgdGhlIHNlYXdhcmQgZWRnZSBvZiBhIHNhbHQgbWFyc2gsIGRlc2lnbmF0ZWQgdGhlIOKAnG1hcnNoIHNjYXJwLuKAnSBJdCBpcyBkZXRlY3RlZCBhcyB0aGUgbWF4aW11bSBzbG9wZSBhbG9uZyBhIGNyb3NzLXNob3JlIHRyYW5zZWN0IGJldHdlZW4gbWVhbiBoaWdoIHdhdGVyIGFuZCBtZWFuIHRpZGUgbGV2ZWwuIFRoZSBtZXRob2Qgd2FzIHRlc3RlZCB1c2luZyBsaWRhciB0b3BvYmF0aHltZXRyaWMgYW5kIHBob3RvZ3JhbW1ldHJpYyBlbGV2YXRpb24gZGF0YSBmcm9tIE1hc3NhY2h1c2V0dHMsIFVTQS4gVGhlIG90aGVyIG1ldGhvZCB0byBjYWxjdWxhdGUgdGhlIHNhbHQgbWFyc2ggc2hvcmVsaW5lIGlzIHRoZSBtYXJzaCBlZGdlIGJ5IGltYWdlIHByb2Nlc3NpbmcgKE1FSVApIG1ldGhvZCB3aGljaCBmaW5kcyB0aGUgdW52ZWdldGF0ZWQvdmVnZXRhdGVkIGxpbmUuIFRoaXMgbWV0aG9kIGFwcGxpZXMgaW1hZ2UgY2xhc3NpZmljYXRpb24gdGVjaG5pcXVlcyB0byBtdWx0aXNwZWN0cmFsIGltYWdlcnkgYW5kIGVsZXZhdGlvbiBkYXRhc2V0cyBmb3IgZWRnZSBkZXRlY3Rpb24uIFRoZSBtZXRob2Qgd2FzIHRlc3RlZCB1c2luZyBhZXJpYWwgaW1hZ2VyeSBhbmQgY29hc3RhbCBlbGV2YXRpb24gZGF0YSBmcm9tIHRoZSBQbHVtIElzbGFuZCBFc3R1YXJ5IGluIE1hc3NhY2h1c2V0dHMsIFVTQS4gQm90aCBtZXRob2RzIGNhbGN1bGF0ZSBhIGxpbmUgdGhhdCBjbG9zZWx5IGZvbGxvd3MgdGhlIGVkZ2Ugb2YgdmVnZXRhdGlvbiBzZWVuIGluIGltYWdlcnkuIFRoZSB0d28gbWV0aG9kcyB3ZXJlIGNvbXBhcmVkIHRvIGVhY2ggb3RoZXIgdXNpbmcgaGlnaCByZXNvbHV0aW9uIHVubWFubmVkIGFpcmNyYWZ0IHN5c3RlbXMgKFVBUykgZGF0YSwgYW5kIHRvIGEgaGVhZHMtdXAgZGlnaXRpemVkIHNob3JlbGluZS4gVGhlIHJvb3QtbWVhbi1zcXVhcmUgZGV2aWF0aW9uIHdhcyAwLjYgbWV0ZXJzIGJldHdlZW4gdGhlIHR3byBtZXRob2RzLCBhbmQgbGVzcyB0aGFuIDAuNDMgbWV0ZXJzIGZyb20gdGhlIGRpZ2l0aXplZCBzaG9yZWxpbmUuIFRoZSBNRUlQIG1ldGhvZCB3YXMgYWxzbyBhcHBsaWVkIHRvIGEgbG93ZXIgcmVzb2x1dGlvbiBkYXRhc2V0IHRvIGludmVzdGlnYXRlIHRoZSBlZmZlY3Qgb2YgaG9yaXpvbnRhbCByZXNvbHV0aW9uIG9uIHRoZSByZXN1bHRzLiBCb3RoIG1ldGhvZHMgcHJvdmlkZSBhbiBhY2N1cmF0ZSwgZWZmaWNpZW50LCBhbmQgb2JqZWN0aXZlIHdheSB0byB0cmFjayBzYWx0IG1hcnNoIHNob3JlbGluZXMgd2l0aCBzcGF0aWFsbHkgaW50ZW5zaXZlIGRhdGEgb3ZlciBsYXJnZSBzcGF0aWFsIHNjYWxlcywgd2hpY2ggaXMgbmVjZXNzYXJ5IHRvIGV2YWx1YXRlIGdlb21vcnBoaWMgY2hhbmdlIGFuZCB3ZXRsYW5kIHZ1bG5lcmFiaWxpdHkuIl0sInRpbWRleF9yZWNvcmRfaWQiOiJ3aG9hczoxOTEyLTI0ODc5IiwidGl0bGUiOiJJZGVudGlmeWluZyBzYWx0IG1hcnNoIHNob3JlbGluZXMgZnJvbSByZW1vdGVseSBzZW5zZWQgZWxldmF0aW9uIGRhdGEgYW5kIGltYWdlcnkifSwiaGlnaGxpZ2h0Ijp7InRpdGxlIjpbIklkZW50aWZ5aW5nIHNhbHQgbWFyc2ggc2hvcmVsaW5lcyBmcm9tIHJlbW90ZWx5IHNlbnNlZCBlbGV2YXRpb24gPHNwYW4gY2xhc3M9XCJoaWdobGlnaHRcIj5kYXRhPC9zcGFuPiBhbmQgaW1hZ2VyeSJdfX0seyJfaW5kZXgiOiJyZGl3aG9hcy0yMDIyLTA3LTEzdDE5LTI0LTUyeiIsIl90eXBlIjoiX2RvYyIsIl9pZCI6Indob2FzOjE5MTItMjMyNyIsIl9zY29yZSI6My42MjIyODQ3LCJfc291cmNlIjp7ImNpdGF0aW9uIjoiR2VvY2hlbWlzdHJ5IEdlb3BoeXNpY3MgR2Vvc3lzdGVtcyA5ICgyMDA4KTogUTA3MDA4IiwiY29udGVudF90eXBlIjpbIkFydGljbGUiXSwiY29udHJpYnV0b3JzIjpbeyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJMZWUsIE15dW5nIFcuIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJXYWl0ZSwgV2lsbGlhbSBGLiJ9XSwiZGF0ZXMiOlt7ImtpbmQiOiJhY2Nlc3Npb25lZCIsInZhbHVlIjoiMjAwOC0wOC0xM1QxNDo1MDo1MloifSx7ImtpbmQiOiJhdmFpbGFibGUiLCJ2YWx1ZSI6IjIwMDgtMDgtMTNUMTQ6NTA6NTJaIn0seyJraW5kIjoiUHVibGljYXRpb24gZGF0ZSIsInZhbHVlIjoiMjAwOC0wNy0wOSJ9XSwiZmlsZV9mb3JtYXRzIjpbImFwcGxpY2F0aW9uL3BkZiJdLCJmb3JtYXQiOiJlbGVjdHJvbmljIHJlc291cmNlIiwiaWRlbnRpZmllcnMiOlt7ImtpbmQiOiJ1cmkiLCJ2YWx1ZSI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTkxMi8yMzI3In0seyJraW5kIjoiZG9pIiwidmFsdWUiOiIxMC4xMDI5LzIwMDhHQzAwMjA4MSJ9XSwibGFuZ3VhZ2VzIjpbImVuX1VTIl0sImxpbmtzIjpbeyJraW5kIjoiRGlnaXRhbCBvYmplY3QgVVJMIiwidGV4dCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInVybCI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTkxMi8yMzI3In1dLCJub3RlcyI6W3sidmFsdWUiOlsiVGhpcyBwYXBlciBpcyBub3Qgc3ViamVjdCB0byBVLlMuIGNvcHlyaWdodC4gIFRoZSBkZWZpbml0aXZlIHZlcnNpb24gd2FzIHB1Ymxpc2hlZCBpbiBHZW9jaGVtaXN0cnkgR2VvcGh5c2ljcyBHZW9zeXN0ZW1zIDkgKDIwMDgpOiBRMDcwMDgsIGRvaToxMC4xMDI5LzIwMDhHQzAwMjA4MS4iXX1dLCJwdWJsaWNhdGlvbl9pbmZvcm1hdGlvbiI6WyJBbWVyaWNhbiBHZW9waHlzaWNhbCBVbmlvbiJdLCJyZWxhdGVkX2l0ZW1zIjpbeyJ1cmkiOiJodHRwczovL2RvaS5vcmcvMTAuMTAyOS8yMDA4R0MwMDIwODEifV0sInNvdXJjZSI6Ildvb2RzIEhvbGUgT3BlbiBBY2Nlc3MgU2VydmVyIiwic291cmNlX2xpbmsiOiJodHRwczovL2RhcmNoaXZlLm1ibHdob2lsaWJyYXJ5Lm9yZy9oYW5kbGUvMTkxMi8yMzI3Iiwic3ViamVjdHMiOlt7ImtpbmQiOiJTdWJqZWN0IHNjaGVtZSBub3QgcHJvdmlkZWQiLCJ2YWx1ZSI6WyJNZXRoYW5lIGh5ZHJhdGUiLCJTZWlzbWljIHZlbG9jaXR5IiwiSHlkcmF0ZSBhc3Nlc3NtZW50Il19XSwic3VtbWFyeSI6WyJSZWxhdGluZyBwb3JlLXNwYWNlIGdhcyBoeWRyYXRlIHNhdHVyYXRpb24gdG8gc29uaWMgdmVsb2NpdHkgZGF0YSBpcyBpbXBvcnRhbnQgZm9yIHJlbW90ZWx5IGVzdGltYXRpbmcgZ2FzIGh5ZHJhdGUgY29uY2VudHJhdGlvbiBpbiBzZWRpbWVudC4gSW4gdGhlIHByZXNlbnQgc3R1ZHksIHNvbmljIHZlbG9jaXRpZXMgb2YgZ2FzIGh5ZHJhdGXigJNiZWFyaW5nIHNhbmRzIGFyZSBtb2RlbGVkIHVzaW5nIGEgdGhyZWUtcGhhc2UgQmlvdC10eXBlIHRoZW9yeSBpbiB3aGljaCBzYW5kLCBnYXMgaHlkcmF0ZSwgYW5kIHBvcmUgZmx1aWQgZm9ybSB0aHJlZSBob21vZ2VuZW91cywgaW50ZXJ3b3ZlbiBmcmFtZXdvcmtzLiBUaGlzIHRoZW9yeSBpcyBkZXZlbG9wZWQgdXNpbmcgd2VsbCBsb2cgY29tcHJlc3Npb25hbCBhbmQgc2hlYXIgd2F2ZSB2ZWxvY2l0eSBkYXRhIGZyb20gdGhlIE1hbGxpayA1TC0zOCBwZXJtYWZyb3N0IGdhcyBoeWRyYXRlIHJlc2VhcmNoIHdlbGwgaW4gQ2FuYWRhIGFuZCBhcHBsaWVkIHRvIHdlbGwgbG9nIGRhdGEgZnJvbSBoeWRyYXRlLWJlYXJpbmcgc2FuZHMgaW4gdGhlIEFsYXNrYW4gcGVybWFmcm9zdCwgR3VsZiBvZiBNZXhpY28sIGFuZCBub3J0aGVybiBDYXNjYWRpYSBtYXJnaW4uIFZlbG9jaXR5LWJhc2VkIGdhcyBoeWRyYXRlIHNhdHVyYXRpb24gZXN0aW1hdGVzIGFyZSBpbiBnb29kIGFncmVlbWVudCB3aXRoIE51Y2xlYXIgTWFnbmV0byBSZXNvbmFuY2UgYW5kIHJlc2lzdGl2aXR5IGxvZyBlc3RpbWF0ZXMgb3ZlciB0aGUgY29tcGxldGUgcmFuZ2Ugb2Ygb2JzZXJ2ZWQgZ2FzIGh5ZHJhdGUgc2F0dXJhdGlvbnMuIl0sInRpbWRleF9yZWNvcmRfaWQiOiJ3aG9hczoxOTEyLTIzMjciLCJ0aXRsZSI6IkVzdGltYXRpbmcgcG9yZS1zcGFjZSBnYXMgaHlkcmF0ZSBzYXR1cmF0aW9ucyBmcm9tIHdlbGwgbG9nIGFjb3VzdGljIGRhdGEifSwiaGlnaGxpZ2h0Ijp7InRpdGxlIjpbIkVzdGltYXRpbmcgcG9yZS1zcGFjZSBnYXMgaHlkcmF0ZSBzYXR1cmF0aW9ucyBmcm9tIHdlbGwgbG9nIGFjb3VzdGljIDxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+ZGF0YTwvc3Bhbj4iXX19LHsiX2luZGV4IjoicmRpd2hvYXMtMjAyMi0wNy0xM3QxOS0yNC01MnoiLCJfdHlwZSI6Il9kb2MiLCJfaWQiOiJ3aG9hczoxOTEyLTI0MzA0IiwiX3Njb3JlIjozLjYyMjI4NDcsIl9zb3VyY2UiOnsiY2l0YXRpb24iOiJTaWduZWxsLCBSLiBQLiwgXHUwMDI2IFBvdGhpbmEsIEQuICgyMDE5KS4gQW5hbHlzaXMgYW5kIHZpc3VhbGl6YXRpb24gb2YgY29hc3RhbCBvY2VhbiBtb2RlbCBkYXRhIGluIHRoZSBjbG91ZC4gSm91cm5hbCBvZiBNYXJpbmUgU2NpZW5jZSBhbmQgRW5naW5lZXJpbmcsIDcoNCksIDExMCIsImNvbnRlbnRfdHlwZSI6WyJBcnRpY2xlIl0sImNvbnRyaWJ1dG9ycyI6W3sia2luZCI6ImF1dGhvciIsInZhbHVlIjoiU2lnbmVsbCwgUmljaGFyZCBQLiJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiUG90aGluYSwgRGhhcmhhcyJ9XSwiZGF0ZXMiOlt7ImtpbmQiOiJhY2Nlc3Npb25lZCIsInZhbHVlIjoiMjAxOS0wNy0wMVQxOToxMDozNloifSx7ImtpbmQiOiJhdmFpbGFibGUiLCJ2YWx1ZSI6IjIwMTktMDctMDFUMTk6MTA6MzZaIn0seyJraW5kIjoiUHVibGljYXRpb24gZGF0ZSIsInZhbHVlIjoiMjAxOS0wNC0xOSJ9XSwiZm9ybWF0IjoiZWxlY3Ryb25pYyByZXNvdXJjZSIsImZ1bmRpbmdfaW5mb3JtYXRpb24iOlt7ImZ1bmRlcl9uYW1lIjoiVGhpcyByZXNlYXJjaCBiZW5lZml0ZWQgZnJvbSBOYXRpb25hbCBTY2llbmNlIEZvdW5kYXRpb24gZ3JhbnQgbnVtYmVyIDE3NDA2NDgsIGFuZCBFYXJ0aFNpbSBwcm9qZWN0IHdhcyBmdW5kZWQgYnkgRVJEQyBwcm9qZWN0cyBQRVRUVCBCWTE3LTA5NFNQIGFuZCBQRVRUVCBCWTE2LTA5MVNQLiBUaGlzIHByb2plY3QgYWxzbyBiZW5lZml0ZWQgZnJvbSByZXNlYXJjaCBjcmVkaXRzIGdyYW50ZWQgYnkgQW1hem9uLiJ9XSwiaWRlbnRpZmllcnMiOlt7ImtpbmQiOiJ1cmkiLCJ2YWx1ZSI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTkxMi8yNDMwNCJ9LHsia2luZCI6ImRvaSIsInZhbHVlIjoiMTAuMzM5MC9qbXNlNzA0MDExMCJ9XSwibGlua3MiOlt7ImtpbmQiOiJEaWdpdGFsIG9iamVjdCBVUkwiLCJ0ZXh0IjoiRGlnaXRhbCBvYmplY3QgVVJMIiwidXJsIjoiaHR0cHM6Ly9oZGwuaGFuZGxlLm5ldC8xOTEyLzI0MzA0In1dLCJub3RlcyI6W3sidmFsdWUiOlsiwqkgVGhlIEF1dGhvcihzKSwgMjAxOS4gVGhpcyBhcnRpY2xlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiBMaWNlbnNlLiBUaGUgZGVmaW5pdGl2ZSB2ZXJzaW9uIHdhcyBwdWJsaXNoZWQgaW4gU2lnbmVsbCwgUi4gUC4sIFx1MDAyNiBQb3RoaW5hLCBELiAgQW5hbHlzaXMgYW5kIHZpc3VhbGl6YXRpb24gb2YgY29hc3RhbCBvY2VhbiBtb2RlbCBkYXRhIGluIHRoZSBjbG91ZC4gSm91cm5hbCBvZiBNYXJpbmUgU2NpZW5jZSBhbmQgRW5naW5lZXJpbmcsIDcoNCksICgyMDE5KTsxMTAsIGRvaToxMC4zMzkwL2ptc2U3MDQwMTEwLiJdfV0sInB1YmxpY2F0aW9uX2luZm9ybWF0aW9uIjpbIk1EUEkiXSwicmVsYXRlZF9pdGVtcyI6W3sidXJpIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjMzOTAvam1zZTcwNDAxMTAifV0sInJpZ2h0cyI6W3t9LHsidXJpIjoiaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvNC4wLyJ9XSwic291cmNlIjoiV29vZHMgSG9sZSBPcGVuIEFjY2VzcyBTZXJ2ZXIiLCJzb3VyY2VfbGluayI6Imh0dHBzOi8vZGFyY2hpdmUubWJsd2hvaWxpYnJhcnkub3JnL2hhbmRsZS8xOTEyLzI0MzA0Iiwic3ViamVjdHMiOlt7ImtpbmQiOiJTdWJqZWN0IHNjaGVtZSBub3QgcHJvdmlkZWQiLCJ2YWx1ZSI6WyJvY2VhbiBtb2RlbGluZyIsImNsb3VkIGNvbXB1dGluZyIsImRhdGEgYW5hbHlzaXMiLCJnZW9zcGF0aWFsIGRhdGEgdmlzdWFsaXphdGlvbiJdfV0sInN1bW1hcnkiOlsiVGhlIHRyYWRpdGlvbmFsIGZsb3cgb2YgY29hc3RhbCBvY2VhbiBtb2RlbCBkYXRhIGlzIGZyb20gSGlnaC1QZXJmb3JtYW5jZSBDb21wdXRpbmcgKEhQQykgY2VudGVycyB0byB0aGUgbG9jYWwgZGVza3RvcCwgb3IgdG8gYSBmaWxlIHNlcnZlciB3aGVyZSBqdXN0IHRoZSBuZWVkZWQgZGF0YSBjYW4gYmUgZXh0cmFjdGVkIHZpYSBzZXJ2aWNlcyBzdWNoIGFzIE9QZU5EQVAuIEFuYWx5c2lzIGFuZCB2aXN1YWxpemF0aW9uIGFyZSB0aGVuIGNvbmR1Y3RlZCB1c2luZyBsb2NhbCBoYXJkd2FyZSBhbmQgc29mdHdhcmUuIFRoaXMgcmVxdWlyZXMgbW92aW5nIGxhcmdlIGFtb3VudHMgb2YgZGF0YSBhY3Jvc3MgdGhlIGludGVybmV0IGFzIHdlbGwgYXMgYWNxdWlyaW5nIGFuZCBtYWludGFpbmluZyBsb2NhbCBoYXJkd2FyZSwgc29mdHdhcmUsIGFuZCBzdXBwb3J0IHBlcnNvbm5lbC4gRnVydGhlciwgYXMgZGF0YSBzZXRzIGluY3JlYXNlIGluIHNpemUsIHRoZSB0cmFkaXRpb25hbCB3b3JrZmxvdyBtYXkgbm90IGJlIHNjYWxhYmxlLiBBbHRlcm5hdGl2ZWx5LCByZWNlbnQgYWR2YW5jZXMgbWFrZSBpdCBwb3NzaWJsZSB0byBtb3ZlIGRhdGEgZnJvbSBIUEMgdG8gdGhlIENsb3VkIGFuZCBwZXJmb3JtIGludGVyYWN0aXZlLCBzY2FsYWJsZSwgZGF0YS1wcm94aW1hdGUgYW5hbHlzaXMgYW5kIHZpc3VhbGl6YXRpb24sIHdpdGggc2ltcGx5IGEgd2ViIGJyb3dzZXIgdXNlciBpbnRlcmZhY2UuIFdlIHVzZSB0aGUgZnJhbWV3b3JrIGFkdmFuY2VkIGJ5IHRoZSBOU0YtZnVuZGVkIFBhbmdlbyBwcm9qZWN0LCBhIGZyZWUsIG9wZW4tc291cmNlIFB5dGhvbiBzeXN0ZW0gd2hpY2ggcHJvdmlkZXMgbXVsdGktdXNlciBsb2dpbiB2aWEgSnVweXRlckh1YiBhbmQgcGFyYWxsZWwgYW5hbHlzaXMgdmlhIERhc2ssIGJvdGggcnVubmluZyBpbiBEb2NrZXIgY29udGFpbmVycyBvcmNoZXN0cmF0ZWQgYnkgS3ViZXJuZXRlcy4gRGF0YSBhcmUgc3RvcmVkIGluIHRoZSBaYXJyIGZvcm1hdCwgYSBDbG91ZC1mcmllbmRseSBuLWRpbWVuc2lvbmFsIGFycmF5IGZvcm1hdCB0aGF0IGFsbG93cyBwZXJmb3JtYW50IGV4dHJhY3Rpb24gb2YgZGF0YSBieSBhbnlvbmUgd2l0aG91dCByZWx5aW5nIG9uIGRhdGEgc2VydmljZXMgbGlrZSBPUGVOREFQLiBJbnRlcmFjdGl2ZSB2aXN1YWwgZXhwbG9yYXRpb24gb2YgZGF0YSBvbiBjb21wbGV4LCBsYXJnZSBtb2RlbCBncmlkcyBpcyBtYWRlIHBvc3NpYmxlIGJ5IG5ldyB0b29scyBpbiB0aGUgUHl0aG9uIFB5Vml6IGVjb3N5c3RlbSwgd2hpY2ggY2FuIHJlbmRlciBtYXBzIGF0IHNjcmVlbiByZXNvbHV0aW9uLCBkeW5hbWljYWxseSB1cGRhdGluZyBvbiBwYW4gYW5kIHpvb20gb3BlcmF0aW9ucy4gVHdvIGV4YW1wbGVzIGFyZSBnaXZlbjogKDEpIENhbGN1bGF0aW5nIHRoZSBtYXhpbXVtIHdhdGVyIGxldmVsIGF0IGVhY2ggZ3JpZCBjZWxsIGZyb20gYSA1My1HQiwgNzIwLXRpbWUtc3RlcCwgOS1taWxsaW9uLW5vZGUgdHJpYW5ndWxhciBtZXNoIEFEQ0lSQyBzaW11bGF0aW9uIG9mIEh1cnJpY2FuZSBJa2U7ICgyKSBDcmVhdGluZyBhIGRhc2hib2FyZCBmb3IgdmlzdWFsaXppbmcgZGF0YSBmcm9tIGEgY3VydmlsaW5lYXIgb3J0aG9nb25hbCBDT0FXU1QvUk9NUyBmb3JlY2FzdCBtb2RlbC4iXSwidGltZGV4X3JlY29yZF9pZCI6Indob2FzOjE5MTItMjQzMDQiLCJ0aXRsZSI6IkFuYWx5c2lzIGFuZCB2aXN1YWxpemF0aW9uIG9mIGNvYXN0YWwgb2NlYW4gbW9kZWwgZGF0YSBpbiB0aGUgY2xvdWQuIn0sImhpZ2hsaWdodCI6eyJ0aXRsZSI6WyJBbmFseXNpcyBhbmQgdmlzdWFsaXphdGlvbiBvZiBjb2FzdGFsIG9jZWFuIG1vZGVsIDxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+ZGF0YTwvc3Bhbj4gaW4gdGhlIGNsb3VkLiJdfX0seyJfaW5kZXgiOiJyZGl3aG9hcy0yMDIyLTA3LTEzdDE5LTI0LTUyeiIsIl90eXBlIjoiX2RvYyIsIl9pZCI6Indob2FzOjE5MTItMjI1MiIsIl9zY29yZSI6My41MTEzNDE2LCJfc291cmNlIjp7ImNpdGF0aW9uIjoiR29mZiwgSm9obiBBLiwgSmVua2lucywgQ2hyaXMgSi4sIFdpbGxpYW1zLCBTLiBKZWZmcmVzcyAoMjAwNy0wMyk6IFNlYWJlZCBtYXBwaW5nIGFuZCBjaGFyYWN0ZXJpemF0aW9uIG9mIHNlZGltZW50IHZhcmlhYmlsaXR5IHVzaW5nIHRoZSB1c1NFQUJFRCBkYXRhIGJhc2UuIFByZXByaW50LiBodHRwczovL2RhcmNoaXZlLm1ibHdob2lsaWJyYXJ5Lm9yZy9oYW5kbGUvMTkxMi8yMjUyIiwiY29udGVudF90eXBlIjpbIlByZXByaW50Il0sImNvbnRyaWJ1dG9ycyI6W3sia2luZCI6ImF1dGhvciIsInZhbHVlIjoiR29mZiwgSm9obiBBLiJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiSmVua2lucywgQ2hyaXMgSi4ifSx7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6IldpbGxpYW1zLCBTLiBKZWZmcmVzcyJ9XSwiZGF0ZXMiOlt7ImtpbmQiOiJhY2Nlc3Npb25lZCIsInZhbHVlIjoiMjAwOC0wNi0wNlQxOTozMjozOVoifSx7ImtpbmQiOiJhdmFpbGFibGUiLCJ2YWx1ZSI6IjIwMDgtMDYtMDZUMTk6MzI6MzlaIn0seyJraW5kIjoiUHVibGljYXRpb24gZGF0ZSIsInZhbHVlIjoiMjAwNy0wMyJ9XSwiZmlsZV9mb3JtYXRzIjpbImFwcGxpY2F0aW9uL3BkZiJdLCJmb3JtYXQiOiJlbGVjdHJvbmljIHJlc291cmNlIiwiZnVuZGluZ19pbmZvcm1hdGlvbiI6W3siZnVuZGVyX25hbWUiOiJUaGUgYXV0aG9ycyB0aGFuayB0aGUgT2ZmaWNlIG9mIE5hdmFsIFJlc2VhcmNoIGZvciBzdXBwb3J0IHVuZGVyIGdyYW50c1xyXG5OMDAwMTQtMDUtMS0wMDc5IChKQUcpIGFuZCBOMDAwMTQtMDUtMS0wMDgwIChDSkopLCBhbmQgdGhlIFVTR1MvQ29hc3RhbCBhbmQgTWFyaW5lXHJcbkdlb2xvZ3kgUHJvZ3JhbSAoU0pXKS4ifV0sImlkZW50aWZpZXJzIjpbeyJraW5kIjoidXJpIiwidmFsdWUiOiJodHRwczovL2hkbC5oYW5kbGUubmV0LzE5MTIvMjI1MiJ9XSwibGFuZ3VhZ2VzIjpbImVuX1VTIl0sImxpbmtzIjpbeyJraW5kIjoiRGlnaXRhbCBvYmplY3QgVVJMIiwidGV4dCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInVybCI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTkxMi8yMjUyIn1dLCJub3RlcyI6W3sidmFsdWUiOlsiQXV0aG9yIFBvc3RpbmcuIMKpIFRoZSBBdXRob3IocyksIDIwMDcuICBUaGlzIGlzIHRoZSBhdXRob3IncyB2ZXJzaW9uIG9mIHRoZSB3b3JrLiBJdCBpcyBwb3N0ZWQgaGVyZSBieSBwZXJtaXNzaW9uIG9mIEVsc2V2aWVyIEIuVi4gZm9yIHBlcnNvbmFsIHVzZSwgbm90IGZvciByZWRpc3RyaWJ1dGlvbi4gIFRoZSBkZWZpbml0aXZlIHZlcnNpb24gd2FzIHB1Ymxpc2hlZCBpbiBDb250aW5lbnRhbCBTaGVsZiBSZXNlYXJjaCAyOCAoMjAwOCk6IDYxNC02MzMsIGRvaToxMC4xMDE2L2ouY3NyLjIwMDcuMTEuMDExLiJdfV0sInJlbGF0ZWRfaXRlbXMiOlt7InVyaSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2L2ouY3NyLjIwMDcuMTEuMDExIn1dLCJzb3VyY2UiOiJXb29kcyBIb2xlIE9wZW4gQWNjZXNzIFNlcnZlciIsInNvdXJjZV9saW5rIjoiaHR0cHM6Ly9kYXJjaGl2ZS5tYmx3aG9pbGlicmFyeS5vcmcvaGFuZGxlLzE5MTIvMjI1MiIsInN1YmplY3RzIjpbeyJraW5kIjoiU3ViamVjdCBzY2hlbWUgbm90IHByb3ZpZGVkIiwidmFsdWUiOlsiR3JhaW4gc2l6ZSIsIkNvbnRpbmVudGFsIHNoZWxmIiwiRGF0YWJhc2UiLCJTZW1pdmFyaW9ncmFtIiwiU3RhdGlzdGljYWwgYW5hbHlzaXMiLCJLcmlnaW5nIl19XSwic3VtbWFyeSI6WyJXZSBwcmVzZW50IGEgbWV0aG9kb2xvZ3kgZm9yIHN0YXRpc3RpY2FsIGFuYWx5c2lzIG9mIHJhbmRvbWx5LWxvY2F0ZWQgbWFyaW5lXHJcbnNlZGltZW50IHBvaW50IGRhdGEsIGFuZCBhcHBseSBpdCB0byB0aGUgVS5TLiBjb250aW5lbnRhbCBzaGVsZiBwb3J0aW9ucyBvZiB1c1NFQUJFRCBtZWFuIGdyYWluXHJcbnNpemUgcmVjb3Jkcy4gVGhlIHVzU0VBQkVEIGRhdGFiYXNlLCBsaWtlIG1hbnkgbW9kZXJuLCBsYXJnZSBlbnZpcm9ubWVudGFsIGRhdGFzZXRzLCBpc1xyXG5oZXRlcm9nZW5lb3VzIGFuZCBpbnRlcmRpc2NpcGxpbmFyeS4gV2Ugc3RhdGlzdGljYWxseSB0ZXN0IHRoZSBkYXRhYmFzZSBhcyBhIHNvdXJjZSBvZiBtZWFuIGdyYWluXHJcbnNpemUgZGF0YSwgYW5kIGZyb20gaXQgcHJvdmlkZSBhIGZpcnN0IGV4YW1pbmF0aW9uIG9mIHJlZ2lvbmFsIHNlYWZsb29yIHNlZGltZW50IHZhcmlhYmlsaXR5IGFjcm9zc1xyXG50aGUgZW50aXJlIFVTIGNvbnRpbmVudGFsIHNoZWxmLiBEYXRhIGRlcml2ZWQgZnJvbSBsYWJvcmF0b3J5IGFuYWx5c2VzICjigJxleHRyYWN0ZWTigJ0pIGFuZCBmcm9tXHJcbndvcmQtYmFzZWQgZGVzY3JpcHRpb25zICjigJxwYXJzZWTigJ0pIGFyZSB0cmVhdGVkIHNlcGFyYXRlbHksIGFuZCB0aGV5IGFyZSBjb21wYXJlZCBzdGF0aXN0aWNhbGx5IGFuZCBkZXRlcm1pbmlzdGljYWxseS4gRGF0YSByZWNvcmRzIGFyZSBzZWxlY3RlZCBmb3Igc3BhdGlhbCBhbmFseXNpcyBieSB0aGVpciBsb2NhdGlvbiB3aXRoaW4gc2FtcGxlXHJcbnJlZ2lvbnM6IHBvbHlnb25hbCBhcmVhcyBkZWZpbmVkIGluIEFyY0dJUyBjaG9zZW4gYnkgZ2VvZ3JhcGh5LCB3YXRlciBkZXB0aCwgYW5kIGRhdGFcclxuc3VmZmljaWVuY3kuIFdlIGRlcml2ZSBpc290cm9waWMsIGJpbm5lZCBzZW1pdmFyaW9ncmFtcyBmcm9tIHRoZSBkYXRhLCBhbmQgaW52ZXJ0IHRoZXNlIGZvclxyXG5lc3RpbWF0ZXMgb2Ygbm9pc2UgdmFyaWFuY2UsIGZpZWxkIHZhcmlhbmNlLCBhbmQgZGVjb3JyZWxhdGlvbiBkaXN0YW5jZS4gVGhlIGhpZ2hseSBlcnJhdGljIG5hdHVyZVxyXG5vZiB0aGUgc2VtaXZhcmlvZ3JhbXMgaXMgYSByZXN1bHQgYm90aCBvZiB0aGUgcmFuZG9tIGxvY2F0aW9ucyBvZiB0aGUgZGF0YSBhbmQgb2YgdGhlIGhpZ2ggbGV2ZWwgb2ZcclxuZGF0YSB1bmNlcnRhaW50eSAobm9pc2UpLiBUaGlzIGRlY29ycmVsYXRlcyB0aGUgZGF0YSBjb3ZhcmlhbmNlIG1hdHJpeCBmb3IgdGhlIGludmVyc2lvbiwgYW5kXHJcbmxhcmdlbHkgcHJldmVudHMgcm9idXN0IGVzdGltYXRpb24gb2YgdGhlIGZyYWN0YWwgZGltZW5zaW9uLiBPdXIgY29tcGFyaXNvbiBvZiB0aGUgZXh0cmFjdGVkIGFuZFxyXG5wYXJzZWQgbWVhbiBncmFpbiBzaXplIGRhdGEgZGVtb25zdHJhdGVzIGltcG9ydGFudCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28uIEluIHBhcnRpY3VsYXIsXHJcbmV4dHJhY3RlZCBtZWFzdXJlbWVudHMgZ2VuZXJhbGx5IHByb2R1Y2UgZmluZXIgbWVhbiBncmFpbiBzaXplcywgbG93ZXIgbm9pc2UgdmFyaWFuY2UsIGFuZFxyXG5sb3dlciBmaWVsZCB2YXJpYW5jZSB0aGFuIHBhcnNlZCB2YWx1ZXMuIFN1Y2ggcmVsYXRpb25zaGlwcyBjYW4gYmUgdXNlZCB0byBkZXJpdmUgYSByZWdpb25hbGx5ZGVwZW5kZW50XHJcbmNvbnZlcnNpb24gZmFjdG9yIGJldHdlZW4gdGhlIHR3by4gT3VyIGFuYWx5c2lzIG9mIHNhbXBsZSByZWdpb25zIG9uIHRoZSBVLlMuXHJcbmNvbnRpbmVudGFsIHNoZWxmIHJldmVhbGVkIGNvbnNpZGVyYWJsZSBnZW9ncmFwaGljIHZhcmlhYmlsaXR5IGluIHRoZSBlc3RpbWF0ZWQgc3RhdGlzdGljYWxcclxucGFyYW1ldGVycyBvZiBmaWVsZCB2YXJpYW5jZSBhbmQgZGVjb3JyZWxhdGlvbiBkaXN0YW5jZS4gU29tZSByZWdpb25hbCByZWxhdGlvbnNoaXBzIGFyZSBldmlkZW50LFxyXG5hbmQgb3ZlcmFsbCB0aGVyZSBpcyBhIHRlbmRlbmN5IGZvciBmaWVsZCB2YXJpYW5jZSB0byBiZSBoaWdoZXIgd2hlcmUgdGhlIGF2ZXJhZ2UgbWVhbiBncmFpbiBzaXplXHJcbmlzIGZpbmVyIGdyYWluZWQuIFN1cnByaXNpbmdseSwgcGFyc2VkIGFuZCBleHRyYWN0ZWQgbm9pc2UgbWFnbml0dWRlcyBjb3JyZWxhdGUgd2l0aCBlYWNoIG90aGVyLFxyXG53aGljaCBtYXkgaW5kaWNhdGUgdGhhdCBzb21lIHBvcnRpb24gb2YgdGhlIGRhdGEgdmFyaWFiaWxpdHkgdGhhdCB3ZSBpZGVudGlmeSBhcyDigJxub2lzZeKAnSBpcyBjYXVzZWRcclxuYnkgcmVhbCBncmFpbiBzaXplIHZhcmlhYmlsaXR5IGF0IHZlcnkgc2hvcnQgc2NhbGVzLiBPdXIgYW5hbHlzZXMgZGVtb25zdHJhdGUgdGhhdCBieSBhcHBseWluZyBhXHJcbmJpYXMtY29ycmVjdGlvbiBwcm94eSwgdXNTRUFCRUQgZGF0YSBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSByZWxpYWJsZSBpbnRlcnBvbGF0ZWQgbWFwcyBvZlxyXG5yZWdpb25hbCBtZWFuIGdyYWluIHNpemUgYW5kIHNlZGltZW50IGNoYXJhY3Rlci4iXSwidGltZGV4X3JlY29yZF9pZCI6Indob2FzOjE5MTItMjI1MiIsInRpdGxlIjoiU2VhYmVkIG1hcHBpbmcgYW5kIGNoYXJhY3Rlcml6YXRpb24gb2Ygc2VkaW1lbnQgdmFyaWFiaWxpdHkgdXNpbmcgdGhlIHVzU0VBQkVEIGRhdGEgYmFzZSJ9LCJoaWdobGlnaHQiOnsidGl0bGUiOlsiU2VhYmVkIG1hcHBpbmcgYW5kIGNoYXJhY3Rlcml6YXRpb24gb2Ygc2VkaW1lbnQgdmFyaWFiaWxpdHkgdXNpbmcgdGhlIHVzU0VBQkVEIDxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+ZGF0YTwvc3Bhbj4gYmFzZSJdfX0seyJfaW5kZXgiOiJyZGl3aG9hcy0yMDIyLTA3LTEzdDE5LTI0LTUyeiIsIl90eXBlIjoiX2RvYyIsIl9pZCI6Indob2FzOjE5MTItODYwNSIsIl9zY29yZSI6My41MTEzNDE2LCJfc291cmNlIjp7ImNpdGF0aW9uIjoiUExvUyBPTkUgMTEgKDIwMTYpOiBlMDE2NDk3OSIsImNvbnRlbnRfdHlwZSI6WyJBcnRpY2xlIl0sImNvbnRyaWJ1dG9ycyI6W3sia2luZCI6ImF1dGhvciIsInZhbHVlIjoiVGhpZWxlciwgRS4gUm9iZXJ0In0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJaZWlnbGVyLCBTYXJhIEwuIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJXaW5zbG93LCBMdWtlIEEuIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJIaW5lcywgTWVnYW4gSy4ifSx7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6IlJlYWQsIEpvcmRhbiBTLiJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiV2Fsa2VyLCBKb3JkYW4gSS4ifV0sImRhdGVzIjpbeyJraW5kIjoiYWNjZXNzaW9uZWQiLCJ2YWx1ZSI6IjIwMTYtMTItMjBUMTk6MzM6MzRaIn0seyJraW5kIjoiYXZhaWxhYmxlIiwidmFsdWUiOiIyMDE2LTEyLTIwVDE5OjMzOjM0WiJ9LHsia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMTYtMTEtMDkifV0sImZvcm1hdCI6ImVsZWN0cm9uaWMgcmVzb3VyY2UiLCJmdW5kaW5nX2luZm9ybWF0aW9uIjpbeyJmdW5kZXJfbmFtZSI6IlRoaXMgd29yayB3YXMgc3VwcG9ydGVkIGJ5IHRoZSBOb3J0aCBBdGxhbnRpYyBMYW5kc2NhcGUgQ29uc2VydmF0aW9uIENvb3BlcmF0aXZlIHRocm91Z2ggdGhlIFUuUy4gRGVwYXJ0bWVudCBvZiB0aGUgSW50ZXJpb3IgSHVycmljYW5lIFNhbmR5IHJlY292ZXJ5IHByb2dyYW0gdW5kZXIgdGhlIERpc2FzdGVyIFJlbGllZiBBcHByb3ByaWF0aW9ucyBBY3Qgb2YgMjAxMywgYW5kIHRoZSBVLlMuIEdlb2xvZ2ljYWwgU3VydmV5IENvYXN0YWwgYW5kIE1hcmluZSBHZW9sb2d5IFByb2dyYW0uIn1dLCJpZGVudGlmaWVycyI6W3sia2luZCI6InVyaSIsInZhbHVlIjoiaHR0cHM6Ly9oZGwuaGFuZGxlLm5ldC8xOTEyLzg2MDUifSx7ImtpbmQiOiJkb2kiLCJ2YWx1ZSI6IjEwLjEzNzEvam91cm5hbC5wb25lLjAxNjQ5NzkifV0sImxhbmd1YWdlcyI6WyJlbl9VUyJdLCJsaW5rcyI6W3sia2luZCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInRleHQiOiJEaWdpdGFsIG9iamVjdCBVUkwiLCJ1cmwiOiJodHRwczovL2hkbC5oYW5kbGUubmV0LzE5MTIvODYwNSJ9XSwibm90ZXMiOlt7InZhbHVlIjpbIlRoaXMgaXMgYW4gb3BlbiBhY2Nlc3MgYXJ0aWNsZSwgZnJlZSBvZiBhbGwgY29weXJpZ2h0LiBUaGUgZGVmaW5pdGl2ZSB2ZXJzaW9uIHdhcyBwdWJsaXNoZWQgaW4gUExvUyBPTkUgMTEgKDIwMTYpOiBlMDE2NDk3OSwgZG9pOiAxMC4xMzcxL2pvdXJuYWwucG9uZS4wMTY0OTc5LiJdfV0sInB1YmxpY2F0aW9uX2luZm9ybWF0aW9uIjpbIlB1YmxpYyBMaWJyYXJ5IG9mIFNjaWVuY2UiXSwicmVsYXRlZF9pdGVtcyI6W3siZGVzY3JpcHRpb24iOiJodHRwczovL2RvaS5vcmcvMTAuNTA2Ni9GNzBWODlYMyIsInJlbGF0aW9uc2hpcCI6Imhhc3BhcnQifSx7InVyaSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMzcxL2pvdXJuYWwucG9uZS4wMTY0OTc5In1dLCJyaWdodHMiOlt7fSx7InVyaSI6Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8ifV0sInNvdXJjZSI6Ildvb2RzIEhvbGUgT3BlbiBBY2Nlc3MgU2VydmVyIiwic291cmNlX2xpbmsiOiJodHRwczovL2RhcmNoaXZlLm1ibHdob2lsaWJyYXJ5Lm9yZy9oYW5kbGUvMTkxMi84NjA1Iiwic3VtbWFyeSI6WyJVbmRlcnN0YW5kaW5nIGFuZCBtYW5hZ2luZyBkeW5hbWljIGNvYXN0YWwgbGFuZHNjYXBlcyBmb3IgYmVhY2gtZGVwZW5kZW50IHNwZWNpZXMgcmVxdWlyZXMgYmlvbG9naWNhbCBhbmQgZ2VvbG9naWNhbCBkYXRhIGFjcm9zcyB0aGUgcmFuZ2Ugb2YgcmVsZXZhbnQgZW52aXJvbm1lbnRzIGFuZCBoYWJpdGF0cy4gSXQgaXMgZGlmZmljdWx0IHRvIGFjcXVpcmUgc3VjaCBpbmZvcm1hdGlvbjsgZGF0YSBvZnRlbiBoYXZlIGxpbWl0ZWQgZm9jdXMgZHVlIHRvIHJlc291cmNlIGNvbnN0cmFpbnRzLCBhcmUgY29sbGVjdGVkIGJ5IG5vbi1zcGVjaWFsaXN0cywgb3IgbGFjayBvYnNlcnZhdGlvbmFsIHVuaWZvcm1pdHkuIFdlIGRldmVsb3BlZCBhbiBvcGVuLXNvdXJjZSBzbWFydHBob25lIGFwcGxpY2F0aW9uIGNhbGxlZCBpUGxvdmVyIHRoYXQgYWRkcmVzc2VzIHRoZXNlIGRpZmZpY3VsdGllcyBpbiBjb2xsZWN0aW5nIGJpb2dlb21vcnBoaWMgaW5mb3JtYXRpb24gYXQgcGlwaW5nIHBsb3ZlciAoQ2hhcmFkcml1cyBtZWxvZHVzKSBuZXN0IHNpdGVzIG9uIGNvYXN0YWwgYmVhY2hlcy4gVGhpcyBwYXBlciBkZXNjcmliZXMgaVBsb3ZlciBkZXZlbG9wbWVudCBhbmQgZXZhbHVhdGVzIGRhdGEgcXVhbGl0eSBhbmQgdXRpbGl0eSBmb2xsb3dpbmcgdHdvIHllYXJzIG9mIGNvbGxlY3Rpb24gKG4gPSAxNzk5IGRhdGEgcG9pbnRzIG92ZXIgMTUwMCBrbSBvZiBjb2FzdCBiZXR3ZWVuIE1haW5lIGFuZCBOb3J0aCBDYXJvbGluYSwgVVNBKS4gV2UgZm91bmQgc3Ryb25nIGFncmVlbWVudCBiZXR3ZWVuIGZpZWxkIHVzZXIgYW5kIGV4cGVydCBhc3Nlc3NtZW50cyBhbmQgaGlnaCBtb2RlbCBza2lsbCB3aGVuIGRhdGEgd2VyZSB1c2VkIGZvciBoYWJpdGF0IHN1aXRhYmlsaXR5IHByZWRpY3Rpb24uIE1ldGhvZHMgdXNlZCBoZXJlIHRvIGRldmVsb3AgYW5kIGRlcGxveSBhIGRpc3RyaWJ1dGVkIGRhdGEgY29sbGVjdGlvbiBzeXN0ZW0gaGF2ZSBicm9hZCBhcHBsaWNhYmlsaXR5IHRvIGludGVyZGlzY2lwbGluYXJ5IGVudmlyb25tZW50YWwgbW9uaXRvcmluZyBhbmQgbW9kZWxpbmcuIl0sInRpbWRleF9yZWNvcmRfaWQiOiJ3aG9hczoxOTEyLTg2MDUiLCJ0aXRsZSI6IlNtYXJ0cGhvbmUtYmFzZWQgZGlzdHJpYnV0ZWQgZGF0YSBjb2xsZWN0aW9uIGVuYWJsZXMgcmFwaWQgYXNzZXNzbWVudCBvZiBzaG9yZWJpcmQgaGFiaXRhdCBzdWl0YWJpbGl0eSJ9LCJoaWdobGlnaHQiOnsidGl0bGUiOlsiU21hcnRwaG9uZS1iYXNlZCBkaXN0cmlidXRlZCA8c3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiPmRhdGE8L3NwYW4+IGNvbGxlY3Rpb24gZW5hYmxlcyByYXBpZCBhc3Nlc3NtZW50IG9mIHNob3JlYmlyZCBoYWJpdGF0IHN1aXRhYmlsaXR5Il19fSx7Il9pbmRleCI6InJkaXdob2FzLTIwMjItMDctMTN0MTktMjQtNTJ6IiwiX3R5cGUiOiJfZG9jIiwiX2lkIjoid2hvYXM6MTkxMi0yMjQxIiwiX3Njb3JlIjozLjQwNjk5MjQsIl9zb3VyY2UiOnsiY2l0YXRpb24iOiJDb21wdXRlcnMgXHUwMDI2IEdlb3NjaWVuY2VzIDM0ICgyMDA4KTogNTYxLTU2NSIsImNvbnRlbnRfdHlwZSI6WyJBcnRpY2xlIl0sImNvbnRyaWJ1dG9ycyI6W3sia2luZCI6ImF1dGhvciIsInZhbHVlIjoiUG9wcGUsIExhd3JlbmNlIEouIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJFbGlhc29uLCBBbmRyZXcgSC4ifV0sImRhdGVzIjpbeyJraW5kIjoiYWNjZXNzaW9uZWQiLCJ2YWx1ZSI6IjIwMDgtMDUtMjhUMTY6MTU6MjFaIn0seyJraW5kIjoiYXZhaWxhYmxlIiwidmFsdWUiOiIyMDA4LTA1LTI4VDE2OjE1OjIxWiJ9LHsia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMDctMTEtMDcifV0sImZpbGVfZm9ybWF0cyI6WyJhcHBsaWNhdGlvbi9wZGYiLCJhcHBsaWNhdGlvbi96aXAiXSwiZm9ybWF0IjoiZWxlY3Ryb25pYyByZXNvdXJjZSIsImlkZW50aWZpZXJzIjpbeyJraW5kIjoidXJpIiwidmFsdWUiOiJodHRwczovL2hkbC5oYW5kbGUubmV0LzE5MTIvMjI0MSJ9LHsia2luZCI6ImRvaSIsInZhbHVlIjoiMTAuMTAxNi9qLmNhZ2VvLjIwMDcuMDMuMDE5In1dLCJsYW5ndWFnZXMiOlsiZW5fVVMiXSwibGlua3MiOlt7ImtpbmQiOiJEaWdpdGFsIG9iamVjdCBVUkwiLCJ0ZXh0IjoiRGlnaXRhbCBvYmplY3QgVVJMIiwidXJsIjoiaHR0cHM6Ly9oZGwuaGFuZGxlLm5ldC8xOTEyLzIyNDEifV0sIm5vdGVzIjpbeyJ2YWx1ZSI6WyJUaGlzIHBhcGVyIGlzIG5vdCBzdWJqZWN0IHRvIFUuUy4gY29weXJpZ2h0LiAgVGhlIGRlZmluaXRpdmUgdmVyc2lvbiB3YXMgcHVibGlzaGVkIGluIENvbXB1dGVycyBcdTAwMjYgR2Vvc2NpZW5jZXMgMzQgKDIwMDgpOiA1NjEtNTY1LCBkb2k6MTAuMTAxNi9qLmNhZ2VvLjIwMDcuMDMuMDE5LiJdfV0sInB1YmxpY2F0aW9uX2luZm9ybWF0aW9uIjpbIkVsc2V2aWVyIEIuVi4iXSwicmVsYXRlZF9pdGVtcyI6W3sidXJpIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjEwMTYvai5jYWdlby4yMDA3LjAzLjAxOSJ9XSwic291cmNlIjoiV29vZHMgSG9sZSBPcGVuIEFjY2VzcyBTZXJ2ZXIiLCJzb3VyY2VfbGluayI6Imh0dHBzOi8vZGFyY2hpdmUubWJsd2hvaWxpYnJhcnkub3JnL2hhbmRsZS8xOTEyLzIyNDEiLCJzdWJqZWN0cyI6W3sia2luZCI6IlN1YmplY3Qgc2NoZW1lIG5vdCBwcm92aWRlZCIsInZhbHVlIjpbIlNvZnR3YXJlIiwiUHJvZ3JhbSIsIlZpc3VhbCBCYXNpYyIsIkRhdGEgcHJvY2Vzc2luZyIsIlRlcm5hcnkgZGlhZ3JhbXMiLCJTZWRpbWVudCIsIlBsb3R0aW5nIl19XSwic3VtbWFyeSI6WyJTZWRpbWVudG9sb2dpYyBkYXRhc2V0cyBhcmUgdHlwaWNhbGx5IGxhcmdlIGFuZCBjb21waWxlZCBpbnRvIHRhYmxlcyBvciBkYXRhYmFzZXMsIGJ1dCBwdXJlIG51bWVyaWNhbCBpbmZvcm1hdGlvbiBjYW4gYmUgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQgYW5kIGludGVycHJldC4gVGh1cywgc2NpZW50aXN0cyBjb21tb25seSB1c2UgZ3JhcGhpY2FsIHJlcHJlc2VudGF0aW9ucyB0byByZWR1Y2UgY29tcGxleGl0aWVzLCByZWNvZ25pemUgdHJlbmRzIGFuZCBwYXR0ZXJucyBpbiB0aGUgZGF0YSwgYW5kIGRldmVsb3AgaHlwb3RoZXNlcy4gT2YgdGhlIGdyYXBoaWNhbCB0ZWNobmlxdWVzLCBvbmUgb2YgdGhlIG1vc3QgY29tbW9uIG1ldGhvZHMgdXNlZCBieSBzZWRpbWVudG9sb2dpc3RzIGlzIHRvIHBsb3QgdGhlIGJhc2ljIGdyYXZlbCwgc2FuZCwgc2lsdCwgYW5kIGNsYXkgcGVyY2VudGFnZXMgb24gZXF1aWxhdGVyYWwgdHJpYW5ndWxhciBkaWFncmFtcy4gVGhpcyBtZWFucyBvZiBwcmVzZW50aW5nIGRhdGEgaXMgc2ltcGxlIGFuZCBmYWNpbGl0YXRlcyByYXBpZCBjbGFzc2lmaWNhdGlvbiBvZiBzZWRpbWVudHMgYW5kIGNvbXBhcmlzb24gb2Ygc2FtcGxlcy4iXSwidGltZGV4X3JlY29yZF9pZCI6Indob2FzOjE5MTItMjI0MSIsInRpdGxlIjoiQSBWaXN1YWwgQmFzaWMgcHJvZ3JhbSB0byBwbG90IHNlZGltZW50IGdyYWluLXNpemUgZGF0YSBvbiB0ZXJuYXJ5IGRpYWdyYW1zIn0sImhpZ2hsaWdodCI6eyJ0aXRsZSI6WyJBIFZpc3VhbCBCYXNpYyBwcm9ncmFtIHRvIHBsb3Qgc2VkaW1lbnQgZ3JhaW4tc2l6ZSA8c3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiPmRhdGE8L3NwYW4+IG9uIHRlcm5hcnkgZGlhZ3JhbXMiXX19LHsiX2luZGV4IjoicmRpd2hvYXMtMjAyMi0wNy0xM3QxOS0yNC01MnoiLCJfdHlwZSI6Il9kb2MiLCJfaWQiOiJ3aG9hczoxOTEyLTI4MDIxIiwiX3Njb3JlIjozLjQwNjk5MjQsIl9zb3VyY2UiOnsiY2l0YXRpb24iOiJVaHJhbiwgQi4sIFdpbmRoYW0tTXllcnMsIEwuLCBCbGlzcywgTi4sIE5haGxpaywgQS4gTS4sIFN1bmRxdWlzdCwgRS4sIFx1MDAyNiBTdGFnZywgQy4gTC4gKDIwMjEpLiBJbXByb3ZlZCB3ZXRsYW5kIHNvaWwgb3JnYW5pYyBjYXJib24gc3RvY2tzIG9mIHRoZSBjb250ZXJtaW5vdXMgVS5TLiB0aHJvdWdoIGRhdGEgaGFybW9uaXphdGlvbi4gRnJvbnRpZXJzIGluIFNvaWwgU2NpZW5jZSwgMSwgNzA2NzAxLiIsImNvbnRlbnRfdHlwZSI6WyJBcnRpY2xlIl0sImNvbnRyaWJ1dG9ycyI6W3sia2luZCI6ImF1dGhvciIsInZhbHVlIjoiVWhyYW4sIEJlcmdpdCJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiV2luZGhhbS1NeWVycywgTGlzYW1hcmllIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJCbGlzcywgTm9ybWFuIEIuIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJOYWhsaWssIEFtYW5kYSBNLiJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiU3VuZHF1aXN0LCBFcmljIFQuIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJTdGFnZywgQ2FtaWxsZSBMLiJ9XSwiZGF0ZXMiOlt7ImtpbmQiOiJhY2Nlc3Npb25lZCIsInZhbHVlIjoiMjAyMi0wMi0xNlQyMDozNTo1OFoifSx7ImtpbmQiOiJhdmFpbGFibGUiLCJ2YWx1ZSI6IjIwMjItMDItMTZUMjA6MzU6NThaIn0seyJraW5kIjoiUHVibGljYXRpb24gZGF0ZSIsInZhbHVlIjoiMjAyMS0xMC0xMiJ9XSwiZm9ybWF0IjoiZWxlY3Ryb25pYyByZXNvdXJjZSIsImZ1bmRpbmdfaW5mb3JtYXRpb24iOlt7ImZ1bmRlcl9uYW1lIjoiVGhpcyBwcm9qZWN0IHdhcyBmdW5kZWQgdGhyb3VnaCB0aGUgVS5TLiBHZW9sb2dpY2FsIFN1cnZleSdzIExhbmQgQ2FyYm9uIFByb2dyYW0gYW5kIGEgZ3JhbnQgdG8gRVMgdGhyb3VnaCB0aGUgVS5TLiBHZW9sb2dpY2FsIFN1cnZleSdzIENvbW11bml0eSBmb3IgRGF0YSBJbnRlZ3JhdGlvbiBQcm9ncmFtIGZvciBnZW5lcmF0aW5nIGNyb3NzLWFnZW5jeSBhc3Nlc3NtZW50cy4ifV0sImlkZW50aWZpZXJzIjpbeyJraW5kIjoidXJpIiwidmFsdWUiOiJodHRwczovL2hkbC5oYW5kbGUubmV0LzE5MTIvMjgwMjEifSx7ImtpbmQiOiJkb2kiLCJ2YWx1ZSI6IjEwLjMzODkvZnNvaWwuMjAyMS43MDY3MDEifV0sImxpbmtzIjpbeyJraW5kIjoiRGlnaXRhbCBvYmplY3QgVVJMIiwidGV4dCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInVybCI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTkxMi8yODAyMSJ9XSwibm90ZXMiOlt7InZhbHVlIjpbIsKpIFRoZSBBdXRob3IocyksIDIwMjEuIFRoaXMgYXJ0aWNsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24gTGljZW5zZS4gVGhlIGRlZmluaXRpdmUgdmVyc2lvbiB3YXMgcHVibGlzaGVkIGluIFVocmFuLCBCLiwgV2luZGhhbS1NeWVycywgTC4sIEJsaXNzLCBOLiwgTmFobGlrLCBBLiBNLiwgU3VuZHF1aXN0LCBFLiwgXHUwMDI2IFN0YWdnLCBDLiBMLiAgSW1wcm92ZWQgd2V0bGFuZCBzb2lsIG9yZ2FuaWMgY2FyYm9uIHN0b2NrcyBvZiB0aGUgY29udGVybWlub3VzIFUuUy4gdGhyb3VnaCBkYXRhIGhhcm1vbml6YXRpb24uIEZyb250aWVycyBpbiBTb2lsIFNjaWVuY2UsIDEsICgyMDIxKTogNzA2NzAxLCBodHRwczovL2RvaS5vcmcvMTAuMzM4OS9mc29pbC4yMDIxLjcwNjcwMS4iXX1dLCJwdWJsaWNhdGlvbl9pbmZvcm1hdGlvbiI6WyJGcm9udGllcnMgTWVkaWEiXSwicmVsYXRlZF9pdGVtcyI6W3sidXJpIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjMzODkvZnNvaWwuMjAyMS43MDY3MDEifV0sInJpZ2h0cyI6W3t9LHsidXJpIjoiaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvNC4wLyJ9XSwic291cmNlIjoiV29vZHMgSG9sZSBPcGVuIEFjY2VzcyBTZXJ2ZXIiLCJzb3VyY2VfbGluayI6Imh0dHBzOi8vZGFyY2hpdmUubWJsd2hvaWxpYnJhcnkub3JnL2hhbmRsZS8xOTEyLzI4MDIxIiwic3ViamVjdHMiOlt7ImtpbmQiOiJTdWJqZWN0IHNjaGVtZSBub3QgcHJvdmlkZWQiLCJ2YWx1ZSI6WyJzb2lsIG9yZ2FuaWMgY2FyYm9uIiwic29pbCBjYXJib24gZGVuc2l0eSIsIndldGxhbmQiLCJvcmdhbmljIG1hdHRlciIsInNvaWwgcHJvZmlsZSIsInNvaWwgY2FyYm9uIHN0b2NrIHZ1bG5lcmFiaWxpdHkiXX1dLCJzdW1tYXJ5IjpbIldldGxhbmQgc29pbCBzdG9ja3MgYXJlIGltcG9ydGFudCBnbG9iYWwgcmVwb3NpdG9yaWVzIG9mIGNhcmJvbiAoQykgYnV0IGFyZSBkaWZmaWN1bHQgdG8gcXVhbnRpZnkgYW5kIG1vZGVsIGR1ZSB0byB2YXJ5aW5nIHNhbXBsaW5nIHByb3RvY29scywgYW5kIGdlb21vcnBoaWMvc3BhdGlvLXRlbXBvcmFsIGRpc2NvbnRpbnVpdHkuIE1lcmdpbmcgc2NhbGVzIG9mIHNvaWwtc3VydmV5IHNwYXRpYWwgZXh0ZW50cyB3aXRoIHdldGxhbmQtc3BlY2lmaWMgcG9pbnQtYmFzZWQgZGF0YSBvZmZlcnMgYW4gZXhwbGljaXQsIGVtcGlyaWNhbCBhbmQgdXBkYXRhYmxlIGltcHJvdmVtZW50IGZvciByZWdpb25hbCBhbmQgY29udGluZW50YWwgc2NhbGUgc29pbCBDIHN0b2NrIGFzc2Vzc21lbnRzLiBBZ2VuY3ktY29sbGVjdGVkIGFuZCBjb21tdW5pdHktY29udHJpYnV0ZWQgc29pbCBkYXRhc2V0cyB3ZXJlIGNvbXBhcmVkIGZvciByZXByZXNlbnRhdGl2ZW5lc3MgYW5kIGJpYXMsIHdpdGggdGhlIGdvYWwgb2YgcHJvZHVjaW5nIGEgaGFybW9uaXplZCBuYXRpb25hbCBtYXAgb2Ygd2V0bGFuZCBzb2lsIEMgc3RvY2tzIHdpdGggZXJyb3IgcXVhbnRpZmljYXRpb24gZm9yIHdldGxhbmQgYXJlYXMgb2YgdGhlIGNvbnRlcm1pbm91cyBVbml0ZWQgU3RhdGVzIChDT05VUykgaWRlbnRpZmllZCBieSB0aGUgVVNHUyBOYXRpb25hbCBMYW5kY292ZXIgQ2hhbmdlIERhdGFzZXQuIFRoaXMgYWxsb3dlZCBhbiBlbXBpcmljYWwgcHJlZGljdGl2ZSBtb2RlbCBvZiBTT0MgZGVuc2l0eSB0byBiZSBhcHBsaWVkIGFjcm9zcyB0aGUgZW50aXJlIENPTlVTIHVzaW5nIHJlbGF0aW9uYWwgJU9DIGRpc3RyaWJ1dGlvbiBhbG9uZS4gQSBicm9rZW4tc3RpY2sgcXVhbnRpbGUtcmVncmVzc2lvbiBtb2RlbCBpZGVudGlmaWVkICVPQyB3aXRoIGl0cyByZWxhdGl2ZWx5IGhpZ2ggYW5hbHl0aWNhbCBjb25maWRlbmNlIGFzIGEga2V5IHByZWRpY3RvciBvZiBTT0MgZGVuc2l0eSBpbiBzb2lsIHNlZ21lbnRzOyBzb2lscyBcdTAwM2M2JSBPQyAoaGVyZWFmdGVyLCBtaW5lcmFsIHdldGxhbmQgc29pbHMsIDg1JSBvZiB0aGUgZGF0YXNldCkgaGFkIGEgc3Ryb25nIGxpbmVhciByZWxhdGlvbnNoaXAgb2YgJU9DIHRvIFNPQyBkZW5zaXR5IChSTVNFID0gMC4wMDU5LCB+NCUgbWVhbiBSTVNFKSBhbmQgc29pbHMgXHUwMDNlNiUgT0MgKG9yZ2FuaWMgd2V0bGFuZCBzb2lscywgMTUlIG9mIHRoZSBkYXRhc2V0KSBoYWQgdmlydHVhbGx5IG5vIHByZWRpY3RpdmUgcmVsYXRpb25zaGlwIG9mICVPQyB0byBTT0MgZGVuc2l0eSAoUk1TRSA9IDAuMDM0OCBnIEMgY23iiJIzLCB+NTYlIG1lYW4gUk1TRSkuIERpc2FnZ3JlZ2F0aW9uIGJ5IHZlZ2V0YXRpb24gdHlwZSBvciByZWdpb24gZGlkIG5vdCBhbHRlciB0aGUgYnJlYWtwb2ludCBzaWduaWZpY2FudGx5ICg2JSBPQykgYW5kIGRpZCBub3QgaW1wcm92ZSBtb2RlbCBhY2N1cmFjaWVzIGZvciBpbmxhbmQgYW5kIHRpZGFsIHdldGxhbmRzLiBTaW1pbGFybHksIFNPQyBzdG9ja3MgaW4gdGlkYWwgd2V0bGFuZHMgd2VyZSByZWxhdGVkIHRvICVPQywgYnV0IHdpdGhvdXQgYSBtYXBwYWJsZSBwcm9kdWN0IGZvciBkaXNhZ2dyZWdhdGlvbiB0byBpbXByb3ZlIGFjY3VyYWN5IGJ5IHNvaWwgY2xhc3MsIHJlZ2lvbiBvciBkZXB0aC4gT3VyIGxheWVyZWQgaGFybW9uaXplZCBDT05VUyB3ZXRsYW5kIHNvaWwgbWFwcyByZXZpc2VkIHdldGxhbmQgU09DIHN0b2NrIGVzdGltYXRlcyBkb3dud2FyZCBieSAyNCUgKDkuNSB2cy4gMTIuNVBnIEMpIHdpdGggdGhlIG92ZXJlc3RpbWF0aW9uIGJlaW5nIGVudGlyZWx5IGFuIGlzc3VlIG9mIGlubGFuZCBvcmdhbmljIHdldGxhbmQgc29pbHMgKDM1JSBsb3dlciB0aGFuIFNTVVJHTy1kZXJpdmVkIFNPQyBzdG9ja3MpLiBGdXJ0aGVyLCBTU1VSR08gdW5kZXJlc3RpbWF0ZWQgc29pbCBjYXJib24gc3RvY2tzIGF0IGRlcHRoLCBhcyBtb2RlbGVkIHdldGxhbmQgU09DIHN0b2NrcyBmb3Igb3JnYW5pYy1yaWNoIHNvaWxzIHNob3dlZCBzaWduaWZpY2FudCBwcmVzZXJ2YXRpb24gZG93bmNvcmUgaW4gdGhlIE5XQ0EgZGF0YXNldCAoXHUwMDNjMyUgbG9zcyBiZXR3ZWVuIDAgYW5kIDMwIGNtIGFuZCAzMCBhbmQgMTAwIGNtIGRlcHRocykgaW4gY29udHJhc3QgdG8gbWluZXJhbC1yaWNoIHNvaWxzICgzNyUgZG93bmNvcmUgc3RvY2sgbG9zcykuIEZ1dHVyZSBDT05VUyB3ZXRsYW5kIHNvaWwgQyBhc3Nlc3NtZW50cyB3aWxsIGJlbmVmaXQgZnJvbSBmb2N1c2VkIGF0dGVudGlvbiBvbiBpbXByb3ZlZCBvcmdhbmljIHdldGxhbmQgc29pbCBtZWFzdXJlbWVudHMsIGxhbmQgaGlzdG9yeSwgYW5kIHNwYXRpYWwgcmVwcmVzZW50YXRpdmVuZXNzLiJdLCJ0aW1kZXhfcmVjb3JkX2lkIjoid2hvYXM6MTkxMi0yODAyMSIsInRpdGxlIjoiSW1wcm92ZWQgd2V0bGFuZCBzb2lsIG9yZ2FuaWMgY2FyYm9uIHN0b2NrcyBvZiB0aGUgY29udGVybWlub3VzIFUuUy4gdGhyb3VnaCBkYXRhIGhhcm1vbml6YXRpb24ifSwiaGlnaGxpZ2h0Ijp7InRpdGxlIjpbIkltcHJvdmVkIHdldGxhbmQgc29pbCBvcmdhbmljIGNhcmJvbiBzdG9ja3Mgb2YgdGhlIGNvbnRlcm1pbm91cyBVLlMuIHRocm91Z2ggPHNwYW4gY2xhc3M9XCJoaWdobGlnaHRcIj5kYXRhPC9zcGFuPiBoYXJtb25pemF0aW9uIl19fSx7Il9pbmRleCI6InJkaXdob2FzLTIwMjItMDctMTN0MTktMjQtNTJ6IiwiX3R5cGUiOiJfZG9jIiwiX2lkIjoid2hvYXM6MTkxMi0yNDMxNiIsIl9zY29yZSI6My4yMTU4NTY2LCJfc291cmNlIjp7ImNpdGF0aW9uIjoiVmFuY2UsIFQuIEMuLCBXZW5ncmVuLCBNLiwgQnVyZ2VyLCBFLiwgSGVybmFuZGV6LCBELiwgS2Vhcm5zLCBULiwgTWVkaW5hLUxvcGV6LCBFLiwgTWVyYXRpLCBOLiwgTydCcmllbiwgSy4sIE8nTmVpbCwgSi4sIFBvdGVtcmFnLCBKLiBULiwgU2lnbmVsbCwgUi4gUC4sIFx1MDAyNiBXaWxjb3gsIEsuICgyMDE5KS4gRnJvbSB0aGUgb2NlYW5zIHRvIHRoZSBjbG91ZDogT3Bwb3J0dW5pdGllcyBhbmQgY2hhbGxlbmdlcyBmb3IgZGF0YSwgbW9kZWxzLCBjb21wdXRhdGlvbiBhbmQgd29ya2Zsb3dzLiBGcm9udGllcnMgaW4gTWFyaW5lIFNjaWVuY2UsIDYsIDIxMS4iLCJjb250ZW50X3R5cGUiOlsiQXJ0aWNsZSJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6IlZhbmNlLCBUaWZmYW55IEMuIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJXZW5ncmVuLCBNaWNhaCJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiQnVyZ2VyLCBFdWdlbmUifSx7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6Ikhlcm5hbmRleiwgRGVicmEifSx7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6IktlYXJucywgVGltb3RoeSJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiTWVkaW5hLUxvcGV6LCBFbmNhcm5pIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJNZXJhdGksIE5hemlsYSJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiTydCcmllbiwgS2V2aW4ifSx7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6Ik/igJlOZWlsLCBKb24ifSx7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6IlBvdGVtcmEsIEphbWVzIFQuIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJTaWduZWxsLCBSaWNoYXJkIFAuIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJXaWxjb3gsIEt5bGUifV0sImRhdGVzIjpbeyJraW5kIjoiYWNjZXNzaW9uZWQiLCJ2YWx1ZSI6IjIwMTktMDctMDVUMTg6MjA6NDlaIn0seyJraW5kIjoiYXZhaWxhYmxlIiwidmFsdWUiOiIyMDE5LTA3LTA1VDE4OjIwOjQ5WiJ9LHsia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMTktMDUtMjEifV0sImZvcm1hdCI6ImVsZWN0cm9uaWMgcmVzb3VyY2UiLCJmdW5kaW5nX2luZm9ybWF0aW9uIjpbeyJmdW5kZXJfbmFtZSI6IlRoaXMgaXMgUE1FTCBjb250cmlidXRpb24gNDg3My4ifV0sImlkZW50aWZpZXJzIjpbeyJraW5kIjoidXJpIiwidmFsdWUiOiJodHRwczovL2hkbC5oYW5kbGUubmV0LzE5MTIvMjQzMTYifSx7ImtpbmQiOiJkb2kiLCJ2YWx1ZSI6IjEwLjMzODkvZm1hcnMuMjAxOS4wMDIxMSJ9XSwibGlua3MiOlt7ImtpbmQiOiJEaWdpdGFsIG9iamVjdCBVUkwiLCJ0ZXh0IjoiRGlnaXRhbCBvYmplY3QgVVJMIiwidXJsIjoiaHR0cHM6Ly9oZGwuaGFuZGxlLm5ldC8xOTEyLzI0MzE2In1dLCJub3RlcyI6W3sidmFsdWUiOlsiwqkgVGhlIEF1dGhvcihzKSwgMjAxOS4gVGhpcyBhcnRpY2xlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiBMaWNlbnNlLiBUaGUgZGVmaW5pdGl2ZSB2ZXJzaW9uIHdhcyBwdWJsaXNoZWQgaW4gVmFuY2UsIFQuIEMuLCBXZW5ncmVuLCBNLiwgQnVyZ2VyLCBFLiwgSGVybmFuZGV6LCBELiwgS2Vhcm5zLCBULiwgTWVkaW5hLUxvcGV6LCBFLiwgTWVyYXRpLCBOLiwgTydCcmllbiwgSy4sIE8nTmVpbCwgSi4sIFBvdGVtcmFnLCBKLiBULiwgU2lnbmVsbCwgUi4gUC4sIFx1MDAyNiBXaWxjb3gsIEsuIEZyb20gdGhlIG9jZWFucyB0byB0aGUgY2xvdWQ6IE9wcG9ydHVuaXRpZXMgYW5kIGNoYWxsZW5nZXMgZm9yIGRhdGEsIG1vZGVscywgY29tcHV0YXRpb24gYW5kIHdvcmtmbG93cy4gRnJvbnRpZXJzIGluIE1hcmluZSBTY2llbmNlLCA2KDIxMSksICgyMDE5KSwgZG9pOjEwLjMzODkvZm1hcnMuMjAxOS4wMDIxMS4iXX1dLCJwdWJsaWNhdGlvbl9pbmZvcm1hdGlvbiI6WyJGcm9udGllcnMgTWVkaWEiXSwicmVsYXRlZF9pdGVtcyI6W3sidXJpIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjMzODkvZm1hcnMuMjAxOS4wMDIxMSJ9XSwicmlnaHRzIjpbe30seyJ1cmkiOiJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvIn1dLCJzb3VyY2UiOiJXb29kcyBIb2xlIE9wZW4gQWNjZXNzIFNlcnZlciIsInNvdXJjZV9saW5rIjoiaHR0cHM6Ly9kYXJjaGl2ZS5tYmx3aG9pbGlicmFyeS5vcmcvaGFuZGxlLzE5MTIvMjQzMTYiLCJzdWJqZWN0cyI6W3sia2luZCI6IlN1YmplY3Qgc2NoZW1lIG5vdCBwcm92aWRlZCIsInZhbHVlIjpbIm9jZWFuIG9ic2VydmF0aW9uIiwib2NlYW4gbW9kZWxpbmcgYW5kIHByZWRpY3Rpb24iLCJjbG91ZCIsImRhdGEgbWFuYWdlbWVudCIsImFyY2hpdmluZyIsInRlY2hub2xvZ3kiXX1dLCJzdW1tYXJ5IjpbIkFkdmFuY2VzIGluIG9jZWFuIG9ic2VydmF0aW9ucyBhbmQgbW9kZWxzIG1lYW4gaW5jcmVhc2luZyBmbG93cyBvZiBkYXRhLiBJbnRlZ3JhdGluZyBvYnNlcnZhdGlvbnMgYmV0d2VlbiBkaXNjaXBsaW5lcyBvdmVyIHNwYXRpYWwgc2NhbGVzIGZyb20gcmVnaW9uYWwgdG8gZ2xvYmFsIHByZXNlbnRzIGNoYWxsZW5nZXMuIFJ1bm5pbmcgb2NlYW4gbW9kZWxzIGFuZCBtYW5hZ2luZyB0aGUgcmVzdWx0cyBpcyBjb21wdXRhdGlvbmFsbHkgZGVtYW5kaW5nLiBUaGUgcmlzZSBvZiBjbG91ZCBjb21wdXRpbmcgcHJlc2VudHMgYW4gb3Bwb3J0dW5pdHkgdG8gcmV0aGluayB0cmFkaXRpb25hbCBhcHByb2FjaGVzLiBUaGlzIGluY2x1ZGVzIGRldmVsb3Bpbmcgc2hhcmVkIGRhdGEgcHJvY2Vzc2luZyB3b3JrZmxvd3MgdXRpbGl6aW5nIGNvbW1vbiwgYWRhcHRhYmxlIHNvZnR3YXJlIHRvIGhhbmRsZSBkYXRhIGluZ2VzdCBhbmQgc3RvcmFnZSwgYW5kIGFuIGFzc29jaWF0ZWQgZnJhbWV3b3JrIHRvIG1hbmFnZSBhbmQgZXhlY3V0ZSBkb3duc3RyZWFtIG1vZGVsaW5nLiBXb3JraW5nIGluIHRoZSBjbG91ZCBwcmVzZW50cyBjaGFsbGVuZ2VzOiBtaWdyYXRpb24gb2YgbGVnYWN5IHRlY2hub2xvZ2llcyBhbmQgcHJvY2Vzc2VzLCBjbG91ZC10by1jbG91ZCBpbnRlcm9wZXJhYmlsaXR5LCBhbmQgdGhlIHRyYW5zbGF0aW9uIG9mIGxlZ2lzbGF0aXZlIGFuZCBidXJlYXVjcmF0aWMgcmVxdWlyZW1lbnRzIGZvciDigJxvbi1wcmVtaXNlc+KAnSBzeXN0ZW1zIHRvIHRoZSBjbG91ZC4gVG8gcmVzcG9uZCB0byB0aGUgc2NpZW50aWZpYyBhbmQgc29jaWV0YWwgbmVlZHMgb2YgYSBmaXQtZm9yLXB1cnBvc2Ugb2NlYW4gb2JzZXJ2aW5nIHN5c3RlbSwgYW5kIHRvIG1heGltaXplIHRoZSBiZW5lZml0cyBvZiBtb3JlIGludGVncmF0ZWQgb2JzZXJ2aW5nLCByZXNlYXJjaCBvbiB1dGlsaXppbmcgY2xvdWQgaW5mcmFzdHJ1Y3R1cmVzIGZvciBzaGFyaW5nIGRhdGEgYW5kIG1vZGVscyBpcyB1bmRlcndheS4gQ2xvdWQgcGxhdGZvcm1zIGFuZCB0aGUgc2VydmljZXMvQVBJcyB0aGV5IHByb3ZpZGUgb2ZmZXIgbmV3IHdheXMgZm9yIHNjaWVudGlzdHMgdG8gb2JzZXJ2ZSBhbmQgcHJlZGljdCB0aGUgb2NlYW7igJlzIHN0YXRlLiBIaWdoLXBlcmZvcm1hbmNlIG1hc3Mgc3RvcmFnZSBvZiBvYnNlcnZhdGlvbmFsIGRhdGEsIGNvdXBsZWQgd2l0aCBvbi1kZW1hbmQgY29tcHV0aW5nIHRvIHJ1biBtb2RlbCBzaW11bGF0aW9ucyBpbiBjbG9zZSBwcm94aW1pdHkgdG8gdGhlIGRhdGEsIHRvb2xzIHRvIG1hbmFnZSB3b3JrZmxvd3MsIGFuZCBhIGZyYW1ld29yayB0byBzaGFyZSBhbmQgY29sbGFib3JhdGUsIGVuYWJsZXMgYSBtb3JlIGZsZXhpYmxlIGFuZCBhZGFwdGFibGUgb2JzZXJ2YXRpb24gYW5kIHByZWRpY3Rpb24gY29tcHV0aW5nIGFyY2hpdGVjdHVyZS4gTW9kZWwgb3V0cHV0cyBhcmUgc3RvcmVkIGluIHRoZSBjbG91ZCBhbmQgcmVzZWFyY2hlcnMgZWl0aGVyIGRvd25sb2FkIHN1YnNldHMgZm9yIHRoZWlyIGludGVyZXN0L2FyZWEgb3IgZmVlZCB0aGVtIGludG8gdGhlaXIgb3duIHNpbXVsYXRpb25zIHdpdGhvdXQgbGVhdmluZyB0aGUgY2xvdWQuIEV4cGFuZGVkIHN0b3JhZ2UgYW5kIGNvbXB1dGluZyBjYXBhYmlsaXRpZXMgbWFrZSBpdCBlYXNpZXIgdG8gY3JlYXRlLCBhbmFseXplLCBhbmQgZGlzdHJpYnV0ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gbG9uZy10ZXJtIGRhdGFzZXRzLiBJbiB0aGlzIHBhcGVyLCB3ZSBwcm92aWRlIGFuIGludHJvZHVjdGlvbiB0byBjbG91ZCBjb21wdXRpbmcsIGRlc2NyaWJlIGN1cnJlbnQgdXNlcyBvZiB0aGUgY2xvdWQgZm9yIG1hbmFnZW1lbnQgYW5kIGFuYWx5c2lzIG9mIG9ic2VydmF0aW9uYWwgZGF0YSBhbmQgbW9kZWwgcmVzdWx0cywgYW5kIGRlc2NyaWJlIHdvcmtmbG93cyBmb3IgcnVubmluZyBtb2RlbHMgYW5kIHN0cmVhbWluZyBvYnNlcnZhdGlvbmFsIGRhdGEuIFdlIGRpc2N1c3MgdG9waWNzIHRoYXQgbXVzdCBiZSBjb25zaWRlcmVkIHdoZW4gbW92aW5nIHRvIHRoZSBjbG91ZDogY29zdHMsIHNlY3VyaXR5LCBhbmQgb3JnYW5pemF0aW9uYWwgbGltaXRhdGlvbnMgb24gY2xvdWQgdXNlLiBGdXR1cmUgdXNlcyBvZiB0aGUgY2xvdWQgdmlhIGNvbXB1dGF0aW9uYWwgc2FuZGJveGVzIGFuZCB0aGUgcHJhY3RpY2FsaXRpZXMgYW5kIGNvbnNpZGVyYXRpb25zIG9mIHVzaW5nIHRoZSBjbG91ZCB0byBhcmNoaXZlIGRhdGEgYXJlIGV4cGxvcmVkLiBXZSBhbHNvIGNvbnNpZGVyIHRoZSB3YXlzIGluIHdoaWNoIHRoZSBodW1hbiBlbGVtZW50cyBvZiBvY2VhbiBvYnNlcnZhdGlvbnMgYXJlIGNoYW5naW5nIOKAkyB0aGUgcmlzZSBvZiBhIGdlbmVyYXRpb24gb2YgcmVzZWFyY2hlcnMgd2hvc2Ugb2JzZXJ2YXRpb25zIGFyZSBsaWtlbHkgdG8gYmUgbWFkZSByZW1vdGVseSByYXRoZXIgdGhhbiBoYW5kcyBvbiDigJMgYW5kIGhvdyB0aGVpciBleHBlY3RhdGlvbnMgYW5kIG5lZWRzIGRyaXZlIHJlc2VhcmNoIHRvd2FyZHMgdGhlIGNsb3VkLiBJbiBjb25jbHVzaW9uLCB2aXNpb25zIG9mIGEgZnV0dXJlIHdoZXJlIGNsb3VkIGNvbXB1dGluZyBpcyB1YmlxdWl0b3VzIGFyZSBkaXNjdXNzZWQuIl0sInRpbWRleF9yZWNvcmRfaWQiOiJ3aG9hczoxOTEyLTI0MzE2IiwidGl0bGUiOiJGcm9tIHRoZSBvY2VhbnMgdG8gdGhlIGNsb3VkOiBPcHBvcnR1bml0aWVzIGFuZCBjaGFsbGVuZ2VzIGZvciBkYXRhLCBtb2RlbHMsIGNvbXB1dGF0aW9uIGFuZCB3b3JrZmxvd3MuIn0sImhpZ2hsaWdodCI6eyJ0aXRsZSI6WyJGcm9tIHRoZSBvY2VhbnMgdG8gdGhlIGNsb3VkOiBPcHBvcnR1bml0aWVzIGFuZCBjaGFsbGVuZ2VzIGZvciA8c3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiPmRhdGE8L3NwYW4+LCBtb2RlbHMsIGNvbXB1dGF0aW9uIGFuZCB3b3JrZmxvd3MiXX19LHsiX2luZGV4IjoicmRpemVub2RvLTIwMjItMDctMTN0MTktMjMtNTd6IiwiX3R5cGUiOiJfZG9jIiwiX2lkIjoiemVub2RvOjQwODg2NjAiLCJfc2NvcmUiOjMuMDUxODEzMSwiX3NvdXJjZSI6eyJjaXRhdGlvbiI6IkhhemJvdW4sIEplZmZyZXkgUyAoMjAyMCk6IFB1bHNhciBEYXRhIFRvb2xib3guIFplbm9kby4gU29mdHdhcmUuIGh0dHBzOi8vemVub2RvLm9yZy9yZWNvcmQvNDA4ODY2MCIsImNvbnRlbnRfdHlwZSI6WyJTb2Z0d2FyZSJdLCJjb250cmlidXRvcnMiOlt7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgb2YgV2FzaGluZ3RvbiBCb3RoZWxsIl0sImtpbmQiOiJDcmVhdG9yIiwiaWRlbnRpZmllciI6WyJodHRwczovL29yY2lkLm9yZy8wMDAwLTAwMDMtMjc0Mi0zMzIxIl0sInZhbHVlIjoiSGF6Ym91biwgSmVmZnJleSBTIn1dLCJkYXRlcyI6W3sia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMjAifSx7ImtpbmQiOiJJc3N1ZWQiLCJ2YWx1ZSI6IjIwMjAtMTAtMTQifV0sImVkaXRpb24iOiIwLjIuMiIsImZvcm1hdCI6ImVsZWN0cm9uaWMgcmVzb3VyY2UiLCJpZGVudGlmaWVycyI6W3sia2luZCI6IkRPSSIsInZhbHVlIjoiMTAuNTI4MS96ZW5vZG8uNDA4ODY2MCJ9LHsia2luZCI6InVybCIsInZhbHVlIjoiaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC80MDg4NjYwIn1dLCJwdWJsaWNhdGlvbl9pbmZvcm1hdGlvbiI6WyJaZW5vZG8iXSwicmVsYXRlZF9pdGVtcyI6W3sicmVsYXRpb25zaGlwIjoiSXNWZXJzaW9uT2YiLCJ1cmkiOiJodHRwczovL2RvaS5vcmcvMTAuNTI4MS96ZW5vZG8uNDA4ODY1OSJ9LHsicmVsYXRpb25zaGlwIjoiSXNQYXJ0T2YiLCJ1cmkiOiJodHRwczovL3plbm9kby5vcmcvY29tbXVuaXRpZXMvYXN0cm9ub215LWdlbmVyYWwifV0sInJpZ2h0cyI6W3sidXJpIjoiaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC9sZWdhbGNvZGUifSx7InVyaSI6ImluZm86ZXUtcmVwby9zZW1hbnRpY3Mvb3BlbkFjY2VzcyJ9XSwic291cmNlIjoiWmVub2RvIiwic291cmNlX2xpbmsiOiJodHRwczovL3plbm9kby5vcmcvcmVjb3JkLzQwODg2NjAiLCJzdWJqZWN0cyI6W3sia2luZCI6IlN1YmplY3Qgc2NoZW1lIG5vdCBwcm92aWRlZCIsInZhbHVlIjpbIlB1bHNhcnMsIFBUQSwgZGF0YSwgUFNSRklUUyJdfV0sInN1bW1hcnkiOlsiXHUwMDNjcFx1MDAzZUEgc29mdHdhcmUgc3VpdGUgdXNlZCBmb3IgYnVpbGRpbmcgUFNSRklUUyBkYXRhIHN0YW5kYXJkIGZpbGVzIGluIFB5dGhvbi5cdTAwMjZuYnNwO1x1MDAzYy9wXHUwMDNlIl0sInRpbWRleF9yZWNvcmRfaWQiOiJ6ZW5vZG86NDA4ODY2MCIsInRpdGxlIjoiUHVsc2FyIERhdGEgVG9vbGJveCJ9LCJoaWdobGlnaHQiOnsidGl0bGUiOlsiUHVsc2FyIDxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+RGF0YTwvc3Bhbj4gVG9vbGJveCJdfX0seyJfaW5kZXgiOiJyZGl3aG9hcy0yMDIyLTA3LTEzdDE5LTI0LTUyeiIsIl90eXBlIjoiX2RvYyIsIl9pZCI6Indob2FzOjE5MTItODY3MiIsIl9zY29yZSI6My4wNDUwMjY4LCJfc291cmNlIjp7ImNpdGF0aW9uIjoiU2Vpc21vbG9naWNhbCBSZXNlYXJjaCBMZXR0ZXJzIDg4ICgyMDE3KTogMjMtMzEiLCJjb250ZW50X3R5cGUiOlsiQXJ0aWNsZSJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6IkZsb3JlcywgQ2xhdWRpYSBILiJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoidGVuIEJyaW5rLCBVcmkgUy4ifSx7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6Ik1jR3VpcmUsIEplZmZyZXkgSi4ifSx7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6IkNvbGxpbnMsIEpvaG4gQS4ifV0sImRhdGVzIjpbeyJraW5kIjoiYWNjZXNzaW9uZWQiLCJ2YWx1ZSI6IjIwMTctMDEtMzBUMTk6MjQ6MThaIn0seyJraW5kIjoiYXZhaWxhYmxlIiwidmFsdWUiOiIyMDE3LTExLTAyVDA4OjM4OjM2WiJ9LHsia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMTYtMTEtMDIifV0sImZvcm1hdCI6ImVsZWN0cm9uaWMgcmVzb3VyY2UiLCJmdW5kaW5nX2luZm9ybWF0aW9uIjpbeyJmdW5kZXJfbmFtZSI6IlRoaXMgcHJvamVjdCB3YXMgcGFydGlhbGx5XHJcbmZ1bmRlZCBieSB0aGUgTnVjbGVhciBSZWd1bGF0b3J5IENvbW1pc3Npb24gdW5kZXIgTlJDXHJcbkpvYiBOdW1iZXIgVjYxNjYuIn1dLCJpZGVudGlmaWVycyI6W3sia2luZCI6InVyaSIsInZhbHVlIjoiaHR0cHM6Ly9oZGwuaGFuZGxlLm5ldC8xOTEyLzg2NzIifSx7ImtpbmQiOiJkb2kiLCJ2YWx1ZSI6IjEwLjE3ODUvMDIyMDE2MDA3OSJ9XSwibGFuZ3VhZ2VzIjpbImVuX1VTIl0sImxpbmtzIjpbeyJraW5kIjoiRGlnaXRhbCBvYmplY3QgVVJMIiwidGV4dCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInVybCI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTkxMi84NjcyIn1dLCJub3RlcyI6W3sidmFsdWUiOlsiQXV0aG9yIFBvc3RpbmcuIMKpIFNlaXNtb2xvZ2ljYWwgU29jaWV0eSBvZiBBbWVyaWNhLCAyMDE2LiAgVGhpcyBhcnRpY2xlIGlzIHBvc3RlZCBoZXJlIGJ5IHBlcm1pc3Npb24gb2YgU2Vpc21vbG9naWNhbCBTb2NpZXR5IG9mIEFtZXJpY2EgZm9yIHBlcnNvbmFsIHVzZSwgbm90IGZvciByZWRpc3RyaWJ1dGlvbi4gIFRoZSBkZWZpbml0aXZlIHZlcnNpb24gd2FzIHB1Ymxpc2hlZCBpbiBTZWlzbW9sb2dpY2FsIFJlc2VhcmNoIExldHRlcnMgODggKDIwMTcpOiAyMy0zMSwgZG9pOjEwLjE3ODUvMDIyMDE2MDA3OS4iXX0seyJraW5kIjoiZW1iYXJnbyIsInZhbHVlIjpbIjIwMTctMTEtMDIiXX1dLCJwdWJsaWNhdGlvbl9pbmZvcm1hdGlvbiI6WyJTZWlzbW9sb2dpY2FsIFNvY2lldHkgb2YgQW1lcmljYSJdLCJyZWxhdGVkX2l0ZW1zIjpbeyJ1cmkiOiJodHRwczovL2RvaS5vcmcvMTAuMTc4NS8wMjIwMTYwMDc5In1dLCJzb3VyY2UiOiJXb29kcyBIb2xlIE9wZW4gQWNjZXNzIFNlcnZlciIsInNvdXJjZV9saW5rIjoiaHR0cHM6Ly9kYXJjaGl2ZS5tYmx3aG9pbGlicmFyeS5vcmcvaGFuZGxlLzE5MTIvODY3MiIsInN1bW1hcnkiOlsiRWFydGhxdWFrZSBkYXRhIGZyb20gdHdvIHNob3J04oCQcGVyaW9kIG9jZWFu4oCQYm90dG9tIHNlaXNtb21ldGVyIChPQlMpIG5ldHdvcmtzIGRlcGxveWVkIGZvciBvdmVyIGEgeWVhciBvbiB0aGUgY29udGluZW50YWwgc2xvcGUgb2ZmIE5ldyBZb3JrIGFuZCBzb3V0aGVybiBOZXcgRW5nbGFuZCB3ZXJlIHVzZWQgdG8gZXZhbHVhdGUgc2Vpc21pY2l0eSBhbmQgZ3JvdW5kIG1vdGlvbnMgYWxvbmcgdGhlIGNvbnRpbmVudGFsIG1hcmdpbi4gT3VyIE9CUyBuZXR3b3JrcyBsb2NhdGVkIG9ubHkgb25lIGVhcnRocXVha2Ugb2YgTWPiiLwxLjUgbmVhciB0aGUgc2hlbGYgZWRnZSBkdXJpbmcgc2l4IG1vbnRocyBvZiByZWNvcmRpbmcsIHN1Z2dlc3RpbmcgdGhhdCBzZWlzbWljIGFjdGl2aXR5IChNTGdcdTAwM2UzLjApIG9mIHRoZSBtYXJnaW4gYXMgZmFyIGFzIDE1MOKAkzIwMCBrbSBvZmZzaG9yZSBpcyBwcm9iYWJseSBzdWNjZXNzZnVsbHkgbW9uaXRvcmVkIGJ5IGxhbmQgc3RhdGlvbnMgd2l0aG91dCB0aGUgbmVlZCBmb3IgT0JTIGRlcGxveW1lbnRzLiBUaGUgc3BlY3RyYWwgYWNjZWxlcmF0aW9uIGZyb20gdHdvIGxvY2FsIGVhcnRocXVha2VzIHJlY29yZGVkIGJ5IHRoZSBPQlMgd2FzIGZvdW5kIHRvIGJlIGdlbmVyYWxseSBzaW1pbGFyIHRvIHRoZSBhY2NlbGVyYXRpb24gZnJvbSB0aGVzZSBlYXJ0aHF1YWtlcyByZWNvcmRlZCBhdCBzZXZlcmFsIHNlaXNtaWMgc3RhdGlvbnMgb24gbGFuZCBhbmQgdG8gaHlicmlkIGVtcGlyaWNhbCBhY2NlbGVyYXRpb24gcmVsYXRpb25zaGlwcyBmb3IgZWFzdGVybiBOb3J0aCBBbWVyaWNhLiBUaGVyZWZvcmUsIHRoZSBzZWlzbWljIGF0dGVudWF0aW9uIHVzZWQgZm9yIGVhc3Rlcm4gTm9ydGggQW1lcmljYSBjYW4gYmUgZXh0ZW5kZWQgaW4gdGhpcyByZWdpb24gYXQgbGVhc3QgdG8gdGhlIGNvbnRpbmVudGFsIHNsb3BlLiBIb3dldmVyLCBhZGRpdGlvbmFsIG9mZnNob3JlIHN0dWRpZXMgYXJlIG5lZWRlZCB0byB2ZXJpZnkgdGhlc2UgcHJlbGltaW5hcnkgY29uY2x1c2lvbnMuIl0sInRpbWRleF9yZWNvcmRfaWQiOiJ3aG9hczoxOTEyLTg2NzIiLCJ0aXRsZSI6Ik9ic2VydmF0aW9ucyBvZiBzZWlzbWljaXR5IGFuZCBncm91bmQgbW90aW9uIGluIHRoZSBOb3J0aGVhc3QgVS5TLiBBdGxhbnRpYyBNYXJnaW4gZnJvbSBvY2VhbuKAkGJvdHRvbSBzZWlzbW9tZXRlciBkYXRhIn0sImhpZ2hsaWdodCI6eyJ0aXRsZSI6WyJBdGxhbnRpYyBNYXJnaW4gZnJvbSBvY2VhbuKAkGJvdHRvbSBzZWlzbW9tZXRlciA8c3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiPmRhdGE8L3NwYW4+Il19fSx7Il9pbmRleCI6InJkaXdob2FzLTIwMjItMDctMTN0MTktMjQtNTJ6IiwiX3R5cGUiOiJfZG9jIiwiX2lkIjoid2hvYXM6MTkxMi04NzQ0IiwiX3Njb3JlIjoyLjg5MTQzMTMsIl9zb3VyY2UiOnsiY2l0YXRpb24iOiJHZW9jaGVtaXN0cnksIEdlb3BoeXNpY3MsIEdlb3N5c3RlbXMgMTcgKDIwMTYpOiA0MzU04oCTNDM2NSIsImNvbnRlbnRfdHlwZSI6WyJBcnRpY2xlIl0sImNvbnRyaWJ1dG9ycyI6W3sia2luZCI6ImF1dGhvciIsInZhbHVlIjoiQnJvdGhlcnMsIExhdXJhIEwuIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJIZXJtYW4sIEJydWNlIE0uIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJIYXJ0LCBQYXRyaWNrIEUuIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJSdXBwZWwsIENhcm9seW4gRC4ifV0sImRhdGVzIjpbeyJraW5kIjoiYWNjZXNzaW9uZWQiLCJ2YWx1ZSI6IjIwMTctMDItMjdUMTg6NTA6MjBaIn0seyJraW5kIjoiYXZhaWxhYmxlIiwidmFsdWUiOiIyMDE3LTA1LTA0VDA4OjA2OjAyWiJ9LHsia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMTYtMTEtMDQifV0sImZvcm1hdCI6ImVsZWN0cm9uaWMgcmVzb3VyY2UiLCJmdW5kaW5nX2luZm9ybWF0aW9uIjpbeyJmdW5kZXJfbmFtZSI6IkRPRSBORVRML05SQyBNZXRoYW5lIEh5ZHJhdGUgRmVsbG93c2hpcCBHcmFudCBOdW1iZXI6IERFLUZDMjYtMDVOVDQyMjQ4O1xyXG4gICAgVVNHU+KAk0RPRSBJbnRlcmFnZW5jeSBBZ3JlZW1lbnRzIEdyYW50IE51bWJlcjogREUtRkUwMDAyOTEgYW5kIDAwMjM0OTUifV0sImlkZW50aWZpZXJzIjpbeyJraW5kIjoidXJpIiwidmFsdWUiOiJodHRwczovL2hkbC5oYW5kbGUubmV0LzE5MTIvODc0NCJ9LHsia2luZCI6ImRvaSIsInZhbHVlIjoiMTAuMTAwMi8yMDE2R0MwMDY1ODQifV0sImxhbmd1YWdlcyI6WyJlbl9VUyJdLCJsaW5rcyI6W3sia2luZCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInRleHQiOiJEaWdpdGFsIG9iamVjdCBVUkwiLCJ1cmwiOiJodHRwczovL2hkbC5oYW5kbGUubmV0LzE5MTIvODc0NCJ9XSwibm90ZXMiOlt7InZhbHVlIjpbIkF1dGhvciBQb3N0aW5nLiDCqSBBbWVyaWNhbiBHZW9waHlzaWNhbCBVbmlvbiwgMjAxNi4gIFRoaXMgYXJ0aWNsZSBpcyBwb3N0ZWQgaGVyZSBieSBwZXJtaXNzaW9uIG9mIEFtZXJpY2FuIEdlb3BoeXNpY2FsIFVuaW9uIGZvciBwZXJzb25hbCB1c2UsIG5vdCBmb3IgcmVkaXN0cmlidXRpb24uICBUaGUgZGVmaW5pdGl2ZSB2ZXJzaW9uIHdhcyBwdWJsaXNoZWQgaW4gR2VvY2hlbWlzdHJ5LCBHZW9waHlzaWNzLCBHZW9zeXN0ZW1zIDE3ICgyMDE2KTogNDM1NOKAkzQzNjUsIGRvaToxMC4xMDAyLzIwMTZHQzAwNjU4NC4iXX0seyJraW5kIjoiZW1iYXJnbyIsInZhbHVlIjpbIjIwMTctMDUtMDQiXX1dLCJwdWJsaWNhdGlvbl9pbmZvcm1hdGlvbiI6WyJKb2huIFdpbGV5IFx1MDAyNiBTb25zIl0sInJlbGF0ZWRfaXRlbXMiOlt7InVyaSI6Imh0dHBzOi8vZG9pLm9yZy8xMC4xMDAyLzIwMTZHQzAwNjU4NCJ9XSwic291cmNlIjoiV29vZHMgSG9sZSBPcGVuIEFjY2VzcyBTZXJ2ZXIiLCJzb3VyY2VfbGluayI6Imh0dHBzOi8vZGFyY2hpdmUubWJsd2hvaWxpYnJhcnkub3JnL2hhbmRsZS8xOTEyLzg3NDQiLCJzdWJqZWN0cyI6W3sia2luZCI6IlN1YmplY3Qgc2NoZW1lIG5vdCBwcm92aWRlZCIsInZhbHVlIjpbIlN1YnNlYSBwZXJtYWZyb3N0IiwiR2FzIGh5ZHJhdGVzIiwiTXVsdGljaGFubmVsIHNlaXNtaWMgZGF0YSIsIkFyY3RpYyBPY2VhbiJdfV0sInN1bW1hcnkiOlsiU3Vic2VhIGljZS1iZWFyaW5nIHBlcm1hZnJvc3QgKElCUEYpIGFuZCBhc3NvY2lhdGVkIGdhcyBoeWRyYXRlIGluIHRoZSBBcmN0aWMgaGF2ZSBiZWVuIHN1YmplY3QgdG8gYSB3YXJtaW5nIGNsaW1hdGUgYW5kIHNhbGluZSBpbnRydXNpb24gc2luY2UgdGhlIGxhc3QgdHJhbnNncmVzc2lvbiBhdCB0aGUgZW5kIG9mIHRoZSBQbGVpc3RvY2VuZS4gVGhlIGNvbnNlcXVlbnQgZGVncmFkYXRpb24gb2YgSUJQRiBpcyBwb3RlbnRpYWxseSBhc3NvY2lhdGVkIHdpdGggc2lnbmlmaWNhbnQgZGVnYXNzaW5nIG9mIGRpc3NvY2lhdGluZyBnYXMgaHlkcmF0ZSBkZXBvc2l0cy4gUHJldmlvdXMgc3R1ZGllcyBpbnRlcnByZXRlZCB0aGUgZGlzdHJpYnV0aW9uIG9mIHN1YnNlYSBwZXJtYWZyb3N0IG9uIHRoZSBVLlMuIEJlYXVmb3J0IGNvbnRpbmVudGFsIHNoZWxmIGJhc2VkIG9uIGdlb2dyYXBoaWNhbGx5IHNwYXJzZSBkYXRhIHNldHMgYW5kIG1vZGVsaW5nIG9mIGV4cGVjdGVkIHRoZXJtYWwgaGlzdG9yeS4gVGhlIG1vc3QgY2l0ZWQgd29yayBwcm9qZWN0cyBzdWJzZWEgcGVybWFmcm9zdCB0byB0aGUgc2hlbGYgZWRnZSAo4oi8MTAwIG0gaXNvYmF0aCkuIFRoaXMgc3R1ZHkgdXNlcyBhIGNvbXBpbGF0aW9uIG9mIHN0YWNraW5nIHZlbG9jaXR5IGFuYWx5c2VzIGZyb20g4oi8MTAwLDAwMCBsaW5lLWttIG9mIGluZHVzdHJ5LWNvbGxlY3RlZCBtdWx0aWNoYW5uZWwgc2Vpc21pYyByZWZsZWN0aW9uIGRhdGEgYWNxdWlyZWQgb3ZlciA1NywwMDAga20yIG9mIHRoZSBVLlMuIEJlYXVmb3J0IHNoZWxmIHRvIGRlbGluZWF0ZSBjb250aW51b3VzIHN1YnNlYSBJQlBGLiBHcmlkZGVkIGF2ZXJhZ2UgdmVsb2NpdGllcyBvZiB0aGUgdXBwZXJtb3N0IDc1MCBtcyB0d28td2F5IHRyYXZlbCB0aW1lIHJhbmdlIGZyb20gMTQ3NSB0byAzMTEwIG0gc+KIkjEuIFRoZSBtb25vdG9uaWMsIGNyb3NzLXNob3JlIHBhdHRlcm4gaW4gdmVsb2NpdHkgZGlzdHJpYnV0aW9uIHN1Z2dlc3RzIHRoYXQgdGhlIHNlYXdhcmQgZXh0ZW50IG9mIGNvbnRpbnVvdXMgSUJQRiBpcyB3aXRoaW4gMzcga20gb2YgdGhlIG1vZGVybiBzaG9yZWxpbmUgYXQgd2F0ZXIgZGVwdGhz4oCJXHUwMDNj4oCJMjUgbS4gVGhlc2UgaW50ZXJwcmV0YXRpb25zIGNvcnJvYm9yYXRlIHJlY2VudCBCZWF1Zm9ydCBzZWlzbWljIHJlZnJhY3Rpb24gc3R1ZGllcyBhbmQgcHJvdmlkZSB0aGUgYmVzdCwgbWFyZ2luLXNjYWxlIGV2aWRlbmNlIHRoYXQgY29udGludW91cyBzdWJzZWEgSUJQRiBkb2VzIG5vdCBjdXJyZW50bHkgZXh0ZW5kIHRvIHRoZSBub3J0aGVybiBsaW1pdHMgb2YgdGhlIGNvbnRpbmVudGFsIHNoZWxmLiJdLCJ0aW1kZXhfcmVjb3JkX2lkIjoid2hvYXM6MTkxMi04NzQ0IiwidGl0bGUiOiJTdWJzZWEgaWNlLWJlYXJpbmcgcGVybWFmcm9zdCBvbiB0aGUgVS5TLiBCZWF1Zm9ydCBNYXJnaW4gOiAxLiBNaW5pbXVtIHNlYXdhcmQgZXh0ZW50IGRlZmluZWQgZnJvbSBtdWx0aWNoYW5uZWwgc2Vpc21pYyByZWZsZWN0aW9uIGRhdGEifSwiaGlnaGxpZ2h0Ijp7InRpdGxlIjpbIk1pbmltdW0gc2Vhd2FyZCBleHRlbnQgZGVmaW5lZCBmcm9tIG11bHRpY2hhbm5lbCBzZWlzbWljIHJlZmxlY3Rpb24gPHNwYW4gY2xhc3M9XCJoaWdobGlnaHRcIj5kYXRhPC9zcGFuPiJdfX0seyJfaW5kZXgiOiJyZGl3aG9hcy0yMDIyLTA3LTEzdDE5LTI0LTUyeiIsIl90eXBlIjoiX2RvYyIsIl9pZCI6Indob2FzOjE5MTItMjQzMDAiLCJfc2NvcmUiOjIuODkxNDMxMywiX3NvdXJjZSI6eyJjaXRhdGlvbiI6IkxlbnR6LCBFLiBFLiwgUGxhbnQsIE4uIEcuLCBcdTAwMjYgVGhpZWxlciwgRS4gUi4gKDIwMTkpLiBSZWxhdGlvbnNoaXBzIGJldHdlZW4gcmVnaW9uYWwgY29hc3RhbCBsYW5kIGNvdmVyIGRpc3RyaWJ1dGlvbnMgYW5kIGVsZXZhdGlvbiByZXZlYWwgZGF0YSB1bmNlcnRhaW50eSBpbiBhIHNlYS1sZXZlbCByaXNlIGltcGFjdHMgbW9kZWwuIEVhcnRoIFN1cmZhY2UgRHluYW1pY3MsIDcoMiksIDQyOS00MzgiLCJjb250ZW50X3R5cGUiOlsiQXJ0aWNsZSJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6IkxlbnR6LCBFcmlrYSBFLiJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiUGxhbnQsIE5hdGhhbmllbCBHLiJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiVGhpZWxlciwgRS4gUm9iZXJ0In1dLCJkYXRlcyI6W3sia2luZCI6ImFjY2Vzc2lvbmVkIiwidmFsdWUiOiIyMDE5LTA3LTAxVDE1OjU3OjAwWiJ9LHsia2luZCI6ImF2YWlsYWJsZSIsInZhbHVlIjoiMjAxOS0wNy0wMVQxNTo1NzowMFoifSx7ImtpbmQiOiJQdWJsaWNhdGlvbiBkYXRlIiwidmFsdWUiOiIyMDE5LTA1LTE1In1dLCJmb3JtYXQiOiJlbGVjdHJvbmljIHJlc291cmNlIiwiZnVuZGluZ19pbmZvcm1hdGlvbiI6W3siZnVuZGVyX25hbWUiOiJUaGlzIHJlc2VhcmNoIHdhcyBmdW5kZWQgYnkgdGhlIFUuUy4gR2VvbG9naWNhbCBTdXJ2ZXkgQ29hc3RhbCBhbmQgTWFyaW5lIEdlb2xvZ3kgUHJvZ3JhbS4gV2UgdGhhbmsgUC4gU291cHkgRGFseWFuZGVyIGZvciBlYXJseSByZXZpZXdzIGFuZCBkaXNjdXNzaW9uIG9mIHRoaXMgcGFwZXIuIEFueSB1c2Ugb2YgdHJhZGUsIGZpcm0sIG9yIHByb2R1Y3QgbmFtZXMgaXMgZm9yIGRlc2NyaXB0aXZlIHB1cnBvc2VzIG9ubHkgYW5kIGRvZXMgbm90IGltcGx5IGVuZG9yc2VtZW50IGJ5IHRoZSBVUyBHb3Zlcm5tZW50LiJ9XSwiaWRlbnRpZmllcnMiOlt7ImtpbmQiOiJ1cmkiLCJ2YWx1ZSI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTkxMi8yNDMwMCJ9LHsia2luZCI6ImRvaSIsInZhbHVlIjoiMTAuNTE5NC9lc3VyZi03LTQyOS0yMDE5In1dLCJsaW5rcyI6W3sia2luZCI6IkRpZ2l0YWwgb2JqZWN0IFVSTCIsInRleHQiOiJEaWdpdGFsIG9iamVjdCBVUkwiLCJ1cmwiOiJodHRwczovL2hkbC5oYW5kbGUubmV0LzE5MTIvMjQzMDAifV0sIm5vdGVzIjpbeyJ2YWx1ZSI6WyLCqSBUaGUgQXV0aG9yKHMpLCAyMDE5LiBUaGlzIGFydGljbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIExpY2Vuc2UuIFRoZSBkZWZpbml0aXZlIHZlcnNpb24gd2FzIHB1Ymxpc2hlZCBpbiBMZW50eiwgRS4gRS4sIFBsYW50LCBOLiBHLiwgXHUwMDI2IFRoaWVsZXIsIEUuIFIuIFJlbGF0aW9uc2hpcHMgYmV0d2VlbiByZWdpb25hbCBjb2FzdGFsIGxhbmQgY292ZXIgZGlzdHJpYnV0aW9ucyBhbmQgZWxldmF0aW9uIHJldmVhbCBkYXRhIHVuY2VydGFpbnR5IGluIGEgc2VhLWxldmVsIHJpc2UgaW1wYWN0cyBtb2RlbC4gRWFydGggU3VyZmFjZSBEeW5hbWljcywgNygyKSwgKDIwMTkpOjQyOS00MzgsIGRvaToxMC41MTk0L2VzdXJmLTctNDI5LTIwMTkuIl19XSwicHVibGljYXRpb25faW5mb3JtYXRpb24iOlsiRXVyb3BlYW4gR2Vvc2NpZW5jZXMgVW5pb24iXSwicmVsYXRlZF9pdGVtcyI6W3sidXJpIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjUxOTQvZXN1cmYtNy00MjktMjAxOSJ9XSwicmlnaHRzIjpbe30seyJ1cmkiOiJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvIn1dLCJzb3VyY2UiOiJXb29kcyBIb2xlIE9wZW4gQWNjZXNzIFNlcnZlciIsInNvdXJjZV9saW5rIjoiaHR0cHM6Ly9kYXJjaGl2ZS5tYmx3aG9pbGlicmFyeS5vcmcvaGFuZGxlLzE5MTIvMjQzMDAiLCJzdW1tYXJ5IjpbIlVuZGVyc3RhbmRpbmcgbGFuZCBsb3NzIG9yIHJlc2lsaWVuY2UgaW4gcmVzcG9uc2UgdG8gc2VhLWxldmVsIHJpc2UgKFNMUikgcmVxdWlyZXMgc3BhdGlhbGx5IGV4dGVuc2l2ZSBhbmQgY29udGludW91cyBkYXRhc2V0cyB0byBjYXB0dXJlIGxhbmRzY2FwZSB2YXJpYWJpbGl0eS4gV2UgaW52ZXN0aWdhdGUgdGhlIHNlbnNpdGl2aXR5IGFuZCBza2lsbCBvZiBhIG1vZGVsIHRoYXQgcHJlZGljdHMgZHluYW1pYyByZXNwb25zZSBsaWtlbGlob29kIHRvIFNMUiBhY3Jvc3MgdGhlIG5vcnRoZWFzdGVybiBVUyBieSBleHBsb3Jpbmcgc2V2ZXJhbCBkYXRhIGlucHV0cyBhbmQgb3V0Y29tZXMuIFVzaW5nIGVsZXZhdGlvbiBhbmQgbGFuZCBjb3ZlciBkYXRhc2V0cywgd2UgZGV0ZXJtaW5lIHdoZXJlIGRhdGEgZXJyb3IgaXMgbGlrZWx5LCBxdWFudGlmeSBpdHMgZWZmZWN0IG9uIHByZWRpY3Rpb25zLCBhbmQgZXZhbHVhdGUgaXRzIGluZmx1ZW5jZSBvbiBwcmVkaWN0aW9uIGNvbmZpZGVuY2UuIFJlc3VsdHMgc2hvdyBkYXRhIGVycm9yIGlzIGNvbmNlbnRyYXRlZCBpbiBsb3ctbHlpbmcgYXJlYXMgd2l0aCBsaXR0bGUgaW1wYWN0IG9uIHByZWRpY3Rpb24gc2tpbGwsIGFzIHRoZSBpbmhlcmVudCBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZSBkYXRhc2V0cyBjYW4gYmUgZXhwbG9pdGVkIHRvIHJlZHVjZSBkYXRhIHVuY2VydGFpbnR5IHVzaW5nIEJheWVzaWFuIGluZmVyZW5jZS4gVGhpcyBzdWdnZXN0cyB0aGUgYXBwcm9hY2ggbWF5IGJlIGV4dGVuZGVkIHRvIHJlZ2lvbnMgd2l0aCBsaW1pdGVkIGRhdGEgYXZhaWxhYmlsaXR5IGFuZC9vciBwb29yIHF1YWxpdHkuIEZ1cnRoZXJtb3JlLCB3ZSB2ZXJpZnkgdGhhdCBtb2RlbCBzZW5zaXRpdml0eSBpbiB0aGVzZSBmaXJzdC1vcmRlciBsYW5kc2NhcGUgY2hhbmdlIGFzc2Vzc21lbnRzIGlzIHdlbGwtbWF0Y2hlZCB0byBsYXJnZXIgY29hc3RhbCBwcm9jZXNzIHVuY2VydGFpbnRpZXMsIGZvciB3aGljaCBwcm9jZXNzLWJhc2VkIG1vZGVscyBhcmUgaW1wb3J0YW50IGNvbXBsZW1lbnRzIHRvIGZ1cnRoZXIgcmVkdWNlIHVuY2VydGFpbnR5LiJdLCJ0aW1kZXhfcmVjb3JkX2lkIjoid2hvYXM6MTkxMi0yNDMwMCIsInRpdGxlIjoiUmVsYXRpb25zaGlwcyBiZXR3ZWVuIHJlZ2lvbmFsIGNvYXN0YWwgbGFuZCBjb3ZlciBkaXN0cmlidXRpb25zIGFuZCBlbGV2YXRpb24gcmV2ZWFsIGRhdGEgdW5jZXJ0YWludHkgaW4gYSBzZWEtbGV2ZWwgcmlzZSBpbXBhY3RzIG1vZGVsIn0sImhpZ2hsaWdodCI6eyJ0aXRsZSI6WyJSZWxhdGlvbnNoaXBzIGJldHdlZW4gcmVnaW9uYWwgY29hc3RhbCBsYW5kIGNvdmVyIGRpc3RyaWJ1dGlvbnMgYW5kIGVsZXZhdGlvbiByZXZlYWwgPHNwYW4gY2xhc3M9XCJoaWdobGlnaHRcIj5kYXRhPC9zcGFuPiB1bmNlcnRhaW50eSJdfX0seyJfaW5kZXgiOiJyZGl6ZW5vZG8tMjAyMi0wNy0xM3QxOS0yMy01N3oiLCJfdHlwZSI6Il9kb2MiLCJfaWQiOiJ6ZW5vZG86MzM1NjcxMCIsIl9zY29yZSI6Mi44Nzg3MDU1LCJfc291cmNlIjp7ImNpdGF0aW9uIjoiQm91bGFuZ2llciwgSmVscywgR29icmVjaHQsIERhdmlkICgyMDE5KTogVGhlcm1vZHluYW1pYyBkYXRhIGZvciBhc3Ryb2NoZW1pc3RyeS4gWmVub2RvLiBEYXRhc2V0LiBodHRwczovL3plbm9kby5vcmcvcmVjb3JkLzMzNTY3MTAiLCJjb250ZW50X3R5cGUiOlsiRGF0YXNldCJdLCJjb250cmlidXRvcnMiOlt7ImFmZmlsaWF0aW9uIjpbIktVIExldXZlbiJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAzLTA2MjAtNjU4WCJdLCJ2YWx1ZSI6IkJvdWxhbmdpZXIsIEplbHMifSx7ImFmZmlsaWF0aW9uIjpbIktVIExldXZlbiJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTM0NDMtMzQxNiJdLCJ2YWx1ZSI6IkdvYnJlY2h0LCBEYXZpZCJ9XSwiZGF0ZXMiOlt7ImtpbmQiOiJQdWJsaWNhdGlvbiBkYXRlIiwidmFsdWUiOiIyMDE5In0seyJraW5kIjoiSXNzdWVkIiwidmFsdWUiOiIyMDE5LTAzLTEyIn1dLCJlZGl0aW9uIjoiMS4xLjAiLCJmb3JtYXQiOiJlbGVjdHJvbmljIHJlc291cmNlIiwiZnVuZGluZ19pbmZvcm1hdGlvbiI6W3siYXdhcmRfbnVtYmVyIjoiNjQ2NzU4IiwiYXdhcmRfdXJpIjoiaW5mbzpldS1yZXBvL2dyYW50QWdyZWVtZW50L0VDL0gyMDIwLzY0Njc1OC8iLCJmdW5kZXJfaWRlbnRpZmllciI6IjEwLjEzMDM5LzEwMDAxMDY2MSIsImZ1bmRlcl9pZGVudGlmaWVyX3R5cGUiOiJDcm9zc3JlZiBGdW5kZXIgSUQiLCJmdW5kZXJfbmFtZSI6IkV1cm9wZWFuIENvbW1pc3Npb24ifV0sImlkZW50aWZpZXJzIjpbeyJraW5kIjoiRE9JIiwidmFsdWUiOiIxMC41MjgxL3plbm9kby4zMzU2NzEwIn0seyJraW5kIjoidXJsIiwidmFsdWUiOiJodHRwczovL3plbm9kby5vcmcvcmVjb3JkLzMzNTY3MTAifV0sImxhbmd1YWdlcyI6WyJlbiJdLCJub3RlcyI6W3sia2luZCI6Ik90aGVyIiwidmFsdWUiOlsiVGhpcyBkYXRhIGlzIHByb2R1Y2VkIGFuZCB1c2VkIGJ5IEJvdWxhbmdpZXIgZXQgYWwuIDIwMTliIChzdWJtLikiXX1dLCJwdWJsaWNhdGlvbl9pbmZvcm1hdGlvbiI6WyJaZW5vZG8iXSwicmVsYXRlZF9pdGVtcyI6W3sicmVsYXRpb25zaGlwIjoiSXNWZXJzaW9uT2YiLCJ1cmkiOiJodHRwczovL2RvaS5vcmcvMTAuNTI4MS96ZW5vZG8uMjU5MDY3NCJ9LHsicmVsYXRpb25zaGlwIjoiSXNQYXJ0T2YiLCJ1cmkiOiJodHRwczovL3plbm9kby5vcmcvY29tbXVuaXRpZXMvYXN0cm9ub215LWdlbmVyYWwifV0sInJpZ2h0cyI6W3sidXJpIjoiaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC9sZWdhbGNvZGUifSx7InVyaSI6ImluZm86ZXUtcmVwby9zZW1hbnRpY3Mvb3BlbkFjY2VzcyJ9XSwic291cmNlIjoiWmVub2RvIiwic291cmNlX2xpbmsiOiJodHRwczovL3plbm9kby5vcmcvcmVjb3JkLzMzNTY3MTAiLCJzdWJqZWN0cyI6W3sia2luZCI6IlN1YmplY3Qgc2NoZW1lIG5vdCBwcm92aWRlZCIsInZhbHVlIjpbImFzdHJvY2hlbWlzdHJ5Il19LHsia2luZCI6IlN1YmplY3Qgc2NoZW1lIG5vdCBwcm92aWRlZCIsInZhbHVlIjpbInRoZXJtb2R5bmFtaWNzIl19LHsia2luZCI6IlN1YmplY3Qgc2NoZW1lIG5vdCBwcm92aWRlZCIsInZhbHVlIjpbImFzdHJvbm9teSJdfV0sInN1bW1hcnkiOlsiXHUwMDNjcFx1MDAzZUNvbGxlY3Rpb24gb2YgdGhlcm1vZHluYW1pYyBwcm9wZXJ0aWVzIG9mIDc4IGNoZW1pY2FsIHNwZWNpZXMuIFRoZSBwcm9wZXJ0aWVzIGluY2x1ZGUgcGFydGl0aW9uIGZ1bmN0aW9ucywgcm90YXRpb25hbCBhbmQgdmlicmF0aW9uYWwgdGVtcGVyYXR1cmVzLCBlbGVjdHJvbmljIGVuZXJneSBsZXZlbHMsIHRoZSBlbGVjdHJvbmljIHBvdGVudGlhbCBlbmVyZ2llcyBhdCAwSy4sIGFuZCBzZXZlcmFsIG1pbmltdW0gZW5lcmd5IGdlb21ldHJpZXMuIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBkYXRhIGlzIHRvIGNvbXB1dGUgdGhlIEdpYmJzIGZyZWUgZW5lcmdpZXMgb2YgdGhlIHNwZWNpZXMsIHRvIGJlIHVzZWQgaW4gY2hlbWljYWwgcmVhY3Rpb24gcmF0ZXMuIFRoZXJlZm9yZSwgdGhlc2UgYXJlIHByb3ZpZGVkIGluIHRoZSBvdXRwdXQgZGlyZWN0b3J5ICh1cCB0byAzMDAwSykuIEEgZWFzaWx5IGV4cG9ydGFibGUgSlNPTiBmaWxlIHdpdGggYWxsIHRoZXJtb2R5bmFtaWMgcHJvcGVydGllcyBpcyBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgb3V0cHV0IGRpcmVjdG9yeS4gVGhlIGRhdGEgaGFzIHBhcnRpYWxseSBiZWVuIGNvbGxlY3RlZCBmcm9tIHNldmVyYWwgZGF0YWJhc2VzIGFuZCBpbmRpdmlkdWFsIHBhcGVycy4gTWlzc2luZyBkYXRhIGhhcyBiZWVuIGNvbXB1dGVkIGJ5IG91cnNlbHZlcy4gQWxsIGlucHV0IGRhdGEgaXMgaG9tb2dlbmlzZWQgdG8gYSBzaW5nbGUgZm9ybWF0LCB3aGljaCBpcyBub3QgdGhlIGNhc2Ugd2hlbiBjb2xsZWN0ZWQgZnJvbSBkaWZmZXJlbnQgc291cmNlcy4gVGhlIHJlZmVyZW5jZSBmb2xkZXIgY29udGFpbnMgZXh0ZW5zaXZlIGluZm9ybWF0aW9uIG9uIHRoZSBzb3VyY2VzIHdoZXJlIHdlIGdvdCB0aGUgZGF0YSBmcm9tLiBNb3JlIGRldGFpbGVkIGV4cGxhbmF0aW9ucyBjYW4gYmUgZm91bmQgaW4gdGhlIHNldmVyYWwgUkVBRE1FIGZpbGVzLiBBbGwgcHJvY2Vzc2luZyBoYXMgYmVlbiBwZXJmb3JtZWQgdXNpbmcgbXkgcmVwb3NpdG9yeSBvZiBweXRob24gc2NyaXB0cyAoaHR0cHM6Ly9iaXRidWNrZXQub3JnL0plbHNCL3RoZXJtb2NoZW1pc3RyeSkuIFdlIGVuY291cmFnZSBwZW9wbGUgdG8gZXh0ZW5kIHRoZSBzY3JpcHRzIHdpdGggbW9yZSBmZWF0dXJlcyBhbmQgZXh0ZW5kIHRoZSBkYXRhIHdpdGggbW9yZSBjaGVtaWNhbCBzcGVjaWVzLiBUaGlzIHdvcmsgc3RyaXZlcyB0b3dhcmRzIGNvbnNpc3RlbmN5LCBzaW5jZSB3ZSAoYW5kIG90aGVycykgZm91bmQgaW5jb25zaXN0ZW5jaWVzIGJldHdlZW4gdGhlIHRoZXJtb2R5bmFtaWMgZGF0YWJhc2VzIFx1MDAzY2VtXHUwMDNlTklTVC9KQU5BRiB0YWJsZXNcdTAwM2MvZW1cdTAwM2UgYW5kIE5BU0FcdTAwMjYjMzk7cyBcdTAwM2NlbVx1MDAzZVRoaXJkIE1pbGxlbm5pdW0gSWRlYWwgR2FzIGFuZCBDb25kZW5zZWQgUGhhc2UgVGhlcm1vY2hlbWljYWwgRGF0YWJhc2UgZm9yIENvbWJ1c3Rpb24gd2l0aCBVcGRhdGVzIGZyb20gQWN0aXZlIFRoZXJtb2NoZW1pY2FsIFRhYmxlcy4gXHUwMDNjL2VtXHUwMDNlXHUwMDNjL3BcdTAwM2UiXSwidGltZGV4X3JlY29yZF9pZCI6Inplbm9kbzozMzU2NzEwIiwidGl0bGUiOiJUaGVybW9keW5hbWljIGRhdGEgZm9yIGFzdHJvY2hlbWlzdHJ5In0sImhpZ2hsaWdodCI6eyJ0aXRsZSI6WyJUaGVybW9keW5hbWljIDxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+ZGF0YTwvc3Bhbj4gZm9yIGFzdHJvY2hlbWlzdHJ5Il19fSx7Il9pbmRleCI6InJkaXplbm9kby0yMDIyLTA3LTEzdDE5LTIzLTU3eiIsIl90eXBlIjoiX2RvYyIsIl9pZCI6Inplbm9kbzoyNTkwNjc1IiwiX3Njb3JlIjoyLjg3ODcwNTUsIl9zb3VyY2UiOnsiY2l0YXRpb24iOiJCb3VsYW5naWVyLCBKZWxzLCBHb2JyZWNodCwgRGF2aWQgKDIwMTkpOiBUaGVybW9keW5hbWljIGRhdGEgZm9yIGFzdHJvY2hlbWlzdHJ5LiBaZW5vZG8uIERhdGFzZXQuIGh0dHBzOi8vemVub2RvLm9yZy9yZWNvcmQvMjU5MDY3NSIsImNvbnRlbnRfdHlwZSI6WyJEYXRhc2V0Il0sImNvbnRyaWJ1dG9ycyI6W3siYWZmaWxpYXRpb24iOlsiS1UgTGV1dmVuIl0sImtpbmQiOiJDcmVhdG9yIiwiaWRlbnRpZmllciI6WyJodHRwczovL29yY2lkLm9yZy8wMDAwLTAwMDMtMDYyMC02NThYIl0sInZhbHVlIjoiQm91bGFuZ2llciwgSmVscyJ9LHsiYWZmaWxpYXRpb24iOlsiS1UgTGV1dmVuIl0sImtpbmQiOiJDcmVhdG9yIiwiaWRlbnRpZmllciI6WyJodHRwczovL29yY2lkLm9yZy8wMDAwLTAwMDItMzQ0My0zNDE2Il0sInZhbHVlIjoiR29icmVjaHQsIERhdmlkIn1dLCJkYXRlcyI6W3sia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMTkifSx7ImtpbmQiOiJJc3N1ZWQiLCJ2YWx1ZSI6IjIwMTktMDMtMTIifV0sImVkaXRpb24iOiIxLjAuMCIsImZvcm1hdCI6ImVsZWN0cm9uaWMgcmVzb3VyY2UiLCJmdW5kaW5nX2luZm9ybWF0aW9uIjpbeyJhd2FyZF9udW1iZXIiOiI2NDY3NTgiLCJhd2FyZF91cmkiOiJpbmZvOmV1LXJlcG8vZ3JhbnRBZ3JlZW1lbnQvRUMvSDIwMjAvNjQ2NzU4LyIsImZ1bmRlcl9pZGVudGlmaWVyIjoiMTAuMTMwMzkvMTAwMDEwNjYxIiwiZnVuZGVyX2lkZW50aWZpZXJfdHlwZSI6IkNyb3NzcmVmIEZ1bmRlciBJRCIsImZ1bmRlcl9uYW1lIjoiRXVyb3BlYW4gQ29tbWlzc2lvbiJ9XSwiaWRlbnRpZmllcnMiOlt7ImtpbmQiOiJET0kiLCJ2YWx1ZSI6IjEwLjUyODEvemVub2RvLjI1OTA2NzUifSx7ImtpbmQiOiJ1cmwiLCJ2YWx1ZSI6Imh0dHBzOi8vemVub2RvLm9yZy9yZWNvcmQvMjU5MDY3NSJ9XSwibm90ZXMiOlt7ImtpbmQiOiJPdGhlciIsInZhbHVlIjpbIlRoaXMgZGF0YSBpcyBwcm9kdWNlZCBhbmQgdXNlZCBieSBCb3VsYW5naWVyIGV0IGFsLiAyMDE5YiAoc3VibS4pIl19XSwicHVibGljYXRpb25faW5mb3JtYXRpb24iOlsiWmVub2RvIl0sInJlbGF0ZWRfaXRlbXMiOlt7InJlbGF0aW9uc2hpcCI6IklzVmVyc2lvbk9mIiwidXJpIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjUyODEvemVub2RvLjI1OTA2NzQifSx7InJlbGF0aW9uc2hpcCI6IklzUGFydE9mIiwidXJpIjoiaHR0cHM6Ly96ZW5vZG8ub3JnL2NvbW11bml0aWVzL2FzdHJvbm9teS1nZW5lcmFsIn1dLCJyaWdodHMiOlt7InVyaSI6Imh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvbGVnYWxjb2RlIn0seyJ1cmkiOiJpbmZvOmV1LXJlcG8vc2VtYW50aWNzL29wZW5BY2Nlc3MifV0sInNvdXJjZSI6Ilplbm9kbyIsInNvdXJjZV9saW5rIjoiaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC8yNTkwNjc1Iiwic3ViamVjdHMiOlt7ImtpbmQiOiJTdWJqZWN0IHNjaGVtZSBub3QgcHJvdmlkZWQiLCJ2YWx1ZSI6WyJhc3Ryb2NoZW1pc3RyeSJdfSx7ImtpbmQiOiJTdWJqZWN0IHNjaGVtZSBub3QgcHJvdmlkZWQiLCJ2YWx1ZSI6WyJ0aGVybW9keW5hbWljcyJdfSx7ImtpbmQiOiJTdWJqZWN0IHNjaGVtZSBub3QgcHJvdmlkZWQiLCJ2YWx1ZSI6WyJhc3Ryb25vbXkiXX1dLCJzdW1tYXJ5IjpbIlx1MDAzY3BcdTAwM2VDb2xsZWN0aW9uIG9mIHRoZXJtb2R5bmFtaWMgcHJvcGVydGllcyBvZiA3OCBjaGVtaWNhbCBzcGVjaWVzLiBUaGUgcHJvcGVydGllcyBpbmNsdWRlIHBhcnRpdGlvbiBmdW5jdGlvbnMsIHJvdGF0aW9uYWwgYW5kIHZpYnJhdGlvbmFsIHRlbXBlcmF0dXJlcywgZWxlY3Ryb25pYyBlbmVyZ3kgbGV2ZWxzLCB0aGUgZWxlY3Ryb25pYyBwb3RlbnRpYWwgZW5lcmdpZXMgYXQgMEsuLCBhbmQgc2V2ZXJhbCBtaW5pbXVtIGVuZXJneSBnZW9tZXRyaWVzLiBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgZGF0YSBpcyB0byBjb21wdXRlIHRoZSBHaWJicyBmcmVlIGVuZXJnaWVzIG9mIHRoZSBzcGVjaWVzLCB0byBiZSB1c2VkIGluIGNoZW1pY2FsIHJlYWN0aW9uIHJhdGVzLiBUaGVyZWZvcmUsIHRoZXNlIGFyZSBwcm92aWRlZCBpbiB0aGUgb3V0cHV0IGRpcmVjdG9yeSAodXAgdG8gMzAwMEspLiBBIGVhc2lseSBleHBvcnRhYmxlIEpTT04gZmlsZSB3aXRoIGFsbCB0aGVybW9keW5hbWljIHByb3BlcnRpZXMgaXMgYWxzbyBhdmFpbGFibGUgaW4gdGhlIG91dHB1dCBkaXJlY3RvcnkuIFRoZSBkYXRhIGhhcyBwYXJ0aWFsbHkgYmVlbiBjb2xsZWN0ZWQgZnJvbSBzZXZlcmFsIGRhdGFiYXNlcyBhbmQgaW5kaXZpZHVhbCBwYXBlcnMuIE1pc3NpbmcgZGF0YSBoYXMgYmVlbiBjb21wdXRlZCBieSBvdXJzZWx2ZXMuIEFsbCBpbnB1dCBkYXRhIGlzIGhvbW9nZW5pc2VkIHRvIGEgc2luZ2xlIGZvcm1hdCwgd2hpY2ggaXMgbm90IHRoZSBjYXNlIHdoZW4gY29sbGVjdGVkIGZyb20gZGlmZmVyZW50IHNvdXJjZXMuIFRoZSByZWZlcmVuY2UgZm9sZGVyIGNvbnRhaW5zIGV4dGVuc2l2ZSBpbmZvcm1hdGlvbiBvbiB0aGUgc291cmNlcyB3aGVyZSB3ZSBnb3QgdGhlIGRhdGEgZnJvbS4gTW9yZSBkZXRhaWxlZCBleHBsYW5hdGlvbnMgY2FuIGJlIGZvdW5kIGluIHRoZSBzZXZlcmFsIFJFQURNRSBmaWxlcy4gQWxsIHByb2Nlc3NpbmcgaGFzIGJlZW4gcGVyZm9ybWVkIHVzaW5nIG15IHJlcG9zaXRvcnkgb2YgcHl0aG9uIHNjcmlwdHMgKGh0dHBzOi8vYml0YnVja2V0Lm9yZy9KZWxzQi90aGVybW9jaGVtaXN0cnkpLiBXZSBlbmNvdXJhZ2UgcGVvcGxlIHRvIGV4dGVuZCB0aGUgc2NyaXB0cyB3aXRoIG1vcmUgZmVhdHVyZXMgYW5kIGV4dGVuZCB0aGUgZGF0YSB3aXRoIG1vcmUgY2hlbWljYWwgc3BlY2llcy4gVGhpcyB3b3JrIHN0cml2ZXMgdG93YXJkcyBjb25zaXN0ZW5jeSwgc2luY2Ugd2UgKGFuZCBvdGhlcnMpIGZvdW5kIGluY29uc2lzdGVuY2llcyBiZXR3ZWVuIHRoZSB0aGVybW9keW5hbWljIGRhdGFiYXNlcyBcdTAwM2NlbVx1MDAzZU5JU1QvSkFOQUYgdGFibGVzXHUwMDNjL2VtXHUwMDNlIGFuZCBOQVNBXHUwMDI2IzM5O3MgXHUwMDNjZW1cdTAwM2VUaGlyZCBNaWxsZW5uaXVtIElkZWFsIEdhcyBhbmQgQ29uZGVuc2VkIFBoYXNlIFRoZXJtb2NoZW1pY2FsIERhdGFiYXNlIGZvciBDb21idXN0aW9uIHdpdGggVXBkYXRlcyBmcm9tIEFjdGl2ZSBUaGVybW9jaGVtaWNhbCBUYWJsZXMuIFx1MDAzYy9lbVx1MDAzZVx1MDAzYy9wXHUwMDNlIl0sInRpbWRleF9yZWNvcmRfaWQiOiJ6ZW5vZG86MjU5MDY3NSIsInRpdGxlIjoiVGhlcm1vZHluYW1pYyBkYXRhIGZvciBhc3Ryb2NoZW1pc3RyeSJ9LCJoaWdobGlnaHQiOnsidGl0bGUiOlsiVGhlcm1vZHluYW1pYyA8c3BhbiBjbGFzcz1cImhpZ2hsaWdodFwiPmRhdGE8L3NwYW4+IGZvciBhc3Ryb2NoZW1pc3RyeSJdfX0seyJfaW5kZXgiOiJyZGl3aG9hcy0yMDIyLTA3LTEzdDE5LTI0LTUyeiIsIl90eXBlIjoiX2RvYyIsIl9pZCI6Indob2FzOjE5MTItMTA0NTQiLCJfc2NvcmUiOjIuODIwMzAxLCJfc291cmNlIjp7ImNpdGF0aW9uIjoiUmVtb3RlIFNlbnNpbmcgMTAgKDIwMTgpOiA3OTIiLCJjb250ZW50X3R5cGUiOlsiQXJ0aWNsZSJdLCJjb250cmlidXRvcnMiOlt7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6IkJhdWdobWFuLCBDYXJzb24gQS4ifSx7ImtpbmQiOiJhdXRob3IiLCJ2YWx1ZSI6IkpvbmVzLCBCZW5qYW1pbiBNLiJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiQm9kb255LCBLYXJpbiBMLiJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiTWFubiwgRGFuaWVsIEguIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJMYXJzZW4sIENocmlzIEYuIn0seyJraW5kIjoiYXV0aG9yIiwidmFsdWUiOiJIaW1lbHN0b3NzLCBFbWlseSJ9LHsia2luZCI6ImF1dGhvciIsInZhbHVlIjoiU21pdGgsIEplcmVteSJ9XSwiZGF0ZXMiOlt7ImtpbmQiOiJhY2Nlc3Npb25lZCIsInZhbHVlIjoiMjAxOC0wNy0wNVQxNzo1Nzo0M1oifSx7ImtpbmQiOiJhdmFpbGFibGUiLCJ2YWx1ZSI6IjIwMTgtMDctMDVUMTc6NTc6NDNaIn0seyJraW5kIjoiUHVibGljYXRpb24gZGF0ZSIsInZhbHVlIjoiMjAxOC0wNS0xOSJ9XSwiZm9ybWF0IjoiZWxlY3Ryb25pYyByZXNvdXJjZSIsImZ1bmRpbmdfaW5mb3JtYXRpb24iOlt7ImZ1bmRlcl9uYW1lIjoiRnVuZGluZyBmb3IgdGhpcyByZXNlYXJjaCB3YXMgcHJvdmlkZWQgYnkgdGhlIFUuUy4gR2VvbG9naWNhbCBTdXJ2ZXkgTGFuZCBDaGFuZ2UgU2NpZW5jZVxyXG5hbmQgTGFuZCBSZW1vdGUgU2Vuc2luZyBwcm9ncmFtcywgdGhlIFUuUy4gRmlzaCBhbmRXaWxkbGlmZSBTZXJ2aWNlIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBBbGFza2EgRmFpcmJhbmtzLiJ9XSwiaWRlbnRpZmllcnMiOlt7ImtpbmQiOiJ1cmkiLCJ2YWx1ZSI6Imh0dHBzOi8vaGRsLmhhbmRsZS5uZXQvMTkxMi8xMDQ1NCJ9LHsia2luZCI6ImRvaSIsInZhbHVlIjoiMTAuMzM5MC9yczEwMDUwNzkyIn1dLCJsYW5ndWFnZXMiOlsiZW5fVVMiXSwibGlua3MiOlt7ImtpbmQiOiJEaWdpdGFsIG9iamVjdCBVUkwiLCJ0ZXh0IjoiRGlnaXRhbCBvYmplY3QgVVJMIiwidXJsIjoiaHR0cHM6Ly9oZGwuaGFuZGxlLm5ldC8xOTEyLzEwNDU0In1dLCJub3RlcyI6W3sidmFsdWUiOlsiwqkgVGhlIEF1dGhvcihzKSwgMjAxOC4gVGhpcyBhcnRpY2xlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbiBMaWNlbnNlLiBUaGUgZGVmaW5pdGl2ZSB2ZXJzaW9uIHdhcyBwdWJsaXNoZWQgaW4gUmVtb3RlIFNlbnNpbmcgMTAgKDIwMTgpOiA3OTIsIGRvaToxMC4zMzkwL3JzMTAwNTA3OTIuIl19XSwicHVibGljYXRpb25faW5mb3JtYXRpb24iOlsiTURQSSBBRyJdLCJyZWxhdGVkX2l0ZW1zIjpbeyJ1cmkiOiJodHRwczovL2RvaS5vcmcvMTAuMzM5MC9yczEwMDUwNzkyIn1dLCJyaWdodHMiOlt7fSx7InVyaSI6Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC8ifV0sInNvdXJjZSI6Ildvb2RzIEhvbGUgT3BlbiBBY2Nlc3MgU2VydmVyIiwic291cmNlX2xpbmsiOiJodHRwczovL2RhcmNoaXZlLm1ibHdob2lsaWJyYXJ5Lm9yZy9oYW5kbGUvMTkxMi8xMDQ1NCIsInN1YmplY3RzIjpbeyJraW5kIjoiU3ViamVjdCBzY2hlbWUgbm90IHByb3ZpZGVkIiwidmFsdWUiOlsiUmVtb3RlIHNlbnNpbmciLCJMaURBUiIsIlNhbmQgZHVuZXMiLCJQZXJtYWZyb3N0IiwiTWlncmF0aW9uIiwiU3ViLUFyY3RpYyJdfV0sInN1bW1hcnkiOlsiVGhpcyBzdHVkeSB1c2VzIGFuIGFpcmJvcm5lIExpZ2h0IERldGVjdGlvbiBhbmQgUmFuZ2luZyAoTGlEQVIpIHN1cnZleSwgaGlzdG9yaWNhbCBhZXJpYWwgcGhvdG9ncmFwaHkgYW5kIGhpc3RvcmljYWwgY2xpbWF0ZSBkYXRhIHRvIGRlc2NyaWJlIHRoZSBjaGFyYWN0ZXIgYW5kIGR5bmFtaWNzIG9mIHRoZSBOb2dhaGFiYXJhIFNhbmQgRHVuZXMsIGEgc3ViLUFyY3RpYyBkdW5lIGZpZWxkIGluIGludGVyaW9yIEFsYXNrYeKAmXMgZGlzY29udGludW91cyBwZXJtYWZyb3N0IHpvbmUuIFRoZSBOb2dhaGFiYXJhIFNhbmQgRHVuZXMgY29uc2lzdCBvZiBhIDQzLWttMiBhcmVhIG9mIGFjdGl2ZSB0cmFuc3ZlcnNlIGFuZCBiYXJjaGFub2lkIGR1bmVzIHdpdGhpbiBhIDMyMDAta20yIGFyZWEgb2YgdmVnZXRhdGVkIGR1bmUgYW5kIHNhbmQgc2hlZXQgZGVwb3NpdHMuIFRoZSBhdmVyYWdlIGR1bmUgaGVpZ2h0IGluIHRoZSBhY3RpdmUgcG9ydGlvbiBvZiB0aGUgZHVuZSBmaWVsZCBpcyA1LjggbSwgd2l0aCBhIG1heGltdW0gZHVuZSBoZWlnaHQgb2YgMjggbS4gRHVuZSBzcGFjaW5nIGlzIHZhcmlhYmxlIHdpdGggYXZlcmFnZSBjcmVzdC10by1jcmVzdCBkaXN0YW5jZXMgZm9yIHNlbGVjdCB0cmFuc2VjdHMgcmFuZ2luZyBmcm9tIDY24oCTMTMyIG0uIEJldHdlZW4gMTk1MiBhbmQgMjAxNSwgZHVuZXMgbWlncmF0ZWQgYXQgYW4gYXZlcmFnZSByYXRlIG9mIDAuNTIgbSBh4oiSMS4gRHVuZSBtb3ZlbWVudCB3YXMgZ3JlYXRlc3QgYmV0d2VlbiAxOTUyIGFuZCAxOTc4ICgwLjY4IG0gYeKIkjEpIGFuZCBsZWFzdCBiZXR3ZWVuIDE5NzggYW5kIDIwMTUgKDAuNDMgbSBh4oiSMSkuIER1bmVzIG1pZ3JhdGVkIHByZWRvbWluYW50bHkgdG8gdGhlIHNvdXRoZWFzdDsgaG93ZXZlciwgYWxvbmcgdGhlIGR1bmUgZmllbGQgbWFyZ2luLCBuZXQgbWlncmF0aW9uIHdhcyB0b3dhcmRzIHRoZSBlZGdlIG9mIHRoZSBkdW5lIGZpZWxkIHJlZ2FyZGxlc3Mgb2YgaGVhZGluZy4gQmV0dGVyIGNvbnN0cmFpbmluZyB0aGUgcHJvY2Vzc2VzIGNvbnRyb2xsaW5nIGR1bmUgZmllbGQgZHluYW1pY3MgYXQgdGhlIE5vZ2FoYWJhcmEgZHVuZXMgd291bGQgcHJvdmlkZSBpbmZvcm1hdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIG1vZGVsIHBvc3NpYmxlIHJlYWN0aXZhdGlvbiBvZiBtb3JlIG5vcnRoZXJseSBkdW5lIGZpZWxkcyBhbmQgc2FuZCBzaGVldHMgaW4gcmVzcG9uc2UgdG8gY2xpbWF0ZSBjaGFuZ2UsIHNoaWZ0aW5nIGZpcmUgcmVnaW1lcyBhbmQgcGVybWFmcm9zdCB0aGF3LiJdLCJ0aW1kZXhfcmVjb3JkX2lkIjoid2hvYXM6MTkxMi0xMDQ1NCIsInRpdGxlIjoiUmVtb3RlbHkgc2Vuc2luZyB0aGUgbW9ycGhvbWV0cmljcyBhbmQgZHluYW1pY3Mgb2YgYSBjb2xkIHJlZ2lvbiBkdW5lIGZpZWxkIHVzaW5nIGhpc3RvcmljYWwgYWVyaWFsIHBob3RvZ3JhcGh5IGFuZCBhaXJib3JuZSBMSURBUiBkYXRhIn0sImhpZ2hsaWdodCI6eyJ0aXRsZSI6WyJtb3JwaG9tZXRyaWNzIGFuZCBkeW5hbWljcyBvZiBhIGNvbGQgcmVnaW9uIGR1bmUgZmllbGQgdXNpbmcgaGlzdG9yaWNhbCBhZXJpYWwgcGhvdG9ncmFwaHkgYW5kIGFpcmJvcm5lIExJREFSIDxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+ZGF0YTwvc3Bhbj4iXX19LHsiX2luZGV4IjoicmRpemVub2RvLTIwMjItMDctMTN0MTktMjMtNTd6IiwiX3R5cGUiOiJfZG9jIiwiX2lkIjoiemVub2RvOjU3Mjg0MDkiLCJfc2NvcmUiOjIuNzI0MTgyLCJfc291cmNlIjp7ImNpdGF0aW9uIjoiU3RldmVucywgQWJpZ2FpbCAoMjAyMSk6IERhdGEgZm9yIHRpbWUgc2VyaWVzIHR1dG9yaWFsLiBaZW5vZG8uIERhdGFzZXQuIGh0dHBzOi8vemVub2RvLm9yZy9yZWNvcmQvNTcyODQwOSIsImNvbnRlbnRfdHlwZSI6WyJEYXRhc2V0Il0sImNvbnRyaWJ1dG9ycyI6W3siYWZmaWxpYXRpb24iOlsiTWljaGlnYW4gU3RhdGUgVW5pdi4gYW5kIFVuaXYuIG9mIE1pY2hpZ2FuIl0sImtpbmQiOiJDcmVhdG9yIiwiaWRlbnRpZmllciI6WyJodHRwczovL29yY2lkLm9yZy8wMDAwLTAwMDItNTA0MS0zMDc5Il0sInZhbHVlIjoiU3RldmVucywgQWJpZ2FpbCJ9XSwiZGF0ZXMiOlt7ImtpbmQiOiJQdWJsaWNhdGlvbiBkYXRlIiwidmFsdWUiOiIyMDIxIn0seyJraW5kIjoiSXNzdWVkIiwidmFsdWUiOiIyMDIxLTExLTI1In1dLCJmb3JtYXQiOiJlbGVjdHJvbmljIHJlc291cmNlIiwiaWRlbnRpZmllcnMiOlt7ImtpbmQiOiJET0kiLCJ2YWx1ZSI6IjEwLjUyODEvemVub2RvLjU3Mjg0MDkifSx7ImtpbmQiOiJ1cmwiLCJ2YWx1ZSI6Imh0dHBzOi8vemVub2RvLm9yZy9yZWNvcmQvNTcyODQwOSJ9XSwibGFuZ3VhZ2VzIjpbImVuIl0sIm5vdGVzIjpbeyJraW5kIjoiT3RoZXIiLCJ2YWx1ZSI6WyJ7XCJyZWZlcmVuY2VzXCI6IFtcIldpbHNvbi1Ib2RnZSwgQy4gZXQgYWwuICgyMDE4KS4gXFxcIk5JQ0VSIGFuZCBGZXJtaSBHQk0gT2JzZXJ2YXRpb25zIG9mIHRoZSBGaXJzdCBHYWxhY3RpYyBVbHRyYWx1bWlub3VzIFgtUmF5IFB1bHNhciBTd2lmdCBKMDI0My42KzYxMjQsXFxcIiBBcEosIDg2MywgOS5cIiwgXCJTdGV2ZW5zLCBBLkwuIGV0IGFsLiAoMjAxOCkuIFxcXCIgQSBOSUNFUiBEaXNjb3Zlcnkgb2YgYSBMb3ctZnJlcXVlbmN5IFF1YXNpLXBlcmlvZGljIE9zY2lsbGF0aW9uIGluIHRoZSBTb2Z0LWludGVybWVkaWF0ZSBTdGF0ZSBvZiBNQVhJIEoxNTM1LTU3MSxcXFwiIEFwSiwgODY1LCBMMTUuXCJdfSJdfV0sInB1YmxpY2F0aW9uX2luZm9ybWF0aW9uIjpbIlplbm9kbyJdLCJyZWxhdGVkX2l0ZW1zIjpbeyJyZWxhdGlvbnNoaXAiOiJJc1ZlcnNpb25PZiIsInVyaSI6Imh0dHBzOi8vZG9pLm9yZy8xMC41MjgxL3plbm9kby41NzI4NDA4In0seyJyZWxhdGlvbnNoaXAiOiJJc1BhcnRPZiIsInVyaSI6Imh0dHBzOi8vemVub2RvLm9yZy9jb21tdW5pdGllcy9hc3Ryb25vbXktZ2VuZXJhbCJ9XSwicmlnaHRzIjpbeyJ1cmkiOiJodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvNC4wL2xlZ2FsY29kZSJ9LHsidXJpIjoiaW5mbzpldS1yZXBvL3NlbWFudGljcy9vcGVuQWNjZXNzIn1dLCJzb3VyY2UiOiJaZW5vZG8iLCJzb3VyY2VfbGluayI6Imh0dHBzOi8vemVub2RvLm9yZy9yZWNvcmQvNTcyODQwOSIsInN1YmplY3RzIjpbeyJraW5kIjoiU3ViamVjdCBzY2hlbWUgbm90IHByb3ZpZGVkIiwidmFsdWUiOlsiYXN0cm9ub215Il19XSwic3VtbWFyeSI6WyJcdTAwM2NwXHUwMDNlVGhlc2UgYXJlIHNhbXBsZSBkYXRhIGZpbGVzIHRvIGJlIHVzZWQgaW4gdGhlIHRpbWUgc2VyaWVzIHR1dG9yaWFsIGZvdW5kIGhlcmU6IFx1MDAzY2EgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9hYmlnYWlsU3Rldi90aW1lc2VyaWVzLXR1dG9yaWFsXCJcdTAwM2VodHRwczovL2dpdGh1Yi5jb20vYWJpZ2FpbFN0ZXYvdGltZXNlcmllcy10dXRvcmlhbCBcdTAwM2MvYVx1MDAzZVx1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VUaGV5IGFyZSBwdWJsaWMgZGF0YXNldHMgZnJvbSB0aGUgTklDRVIgWC1yYXkgVGltaW5nIEluc3RydW1lbnQgb2YgYSBibGFjayBob2xlLCBNQVhJIEoxNTM1LTU3MSwgYW5kIGEgbmV1dHJvbiBzdGFyLCBTd2lmdCBKMDI0My42KzYxMjQuIFRoZXJlIGFyZSBhbHNvIEdvb2QgVGltZSBJbnRlcnZhbHMgSSBjcmVhdGVkIGZvciBlYWNoIG9mIHRoZSBwaG90b24gZXZlbnQgbGlzdHMuXHUwMDNjL3BcdTAwM2UiXSwidGltZGV4X3JlY29yZF9pZCI6Inplbm9kbzo1NzI4NDA5IiwidGl0bGUiOiJEYXRhIGZvciB0aW1lIHNlcmllcyB0dXRvcmlhbCJ9LCJoaWdobGlnaHQiOnsidGl0bGUiOlsiPHNwYW4gY2xhc3M9XCJoaWdobGlnaHRcIj5EYXRhPC9zcGFuPiBmb3IgdGltZSBzZXJpZXMgdHV0b3JpYWwiXX19LHsiX2luZGV4IjoicmRpemVub2RvLTIwMjItMDctMTN0MTktMjMtNTd6IiwiX3R5cGUiOiJfZG9jIiwiX2lkIjoiemVub2RvOjMyMjE0NzgiLCJfc2NvcmUiOjIuNzI0MTgyLCJfc291cmNlIjp7ImNpdGF0aW9uIjoiRm9yZW1hbi1NYWNrZXksIERhbmllbCAoMjAxNyk6IEZpdHRpbmcgYSBwbGFuZSB0byBkYXRhLiBaZW5vZG8uIFRleHQuIGh0dHBzOi8vemVub2RvLm9yZy9yZWNvcmQvMzIyMTQ3OCIsImNvbnRlbnRfdHlwZSI6WyJUZXh0Il0sImNvbnRyaWJ1dG9ycyI6W3sia2luZCI6IkNyZWF0b3IiLCJpZGVudGlmaWVyIjpbImh0dHBzOi8vb3JjaWQub3JnLzAwMDAtMDAwMi05MzI4LTU2NTIiXSwidmFsdWUiOiJGb3JlbWFuLU1hY2tleSwgRGFuaWVsIn1dLCJkYXRlcyI6W3sia2luZCI6IlB1YmxpY2F0aW9uIGRhdGUiLCJ2YWx1ZSI6IjIwMTcifSx7ImtpbmQiOiJJc3N1ZWQiLCJ2YWx1ZSI6IjIwMTctMDYtMDEifV0sImZvcm1hdCI6ImVsZWN0cm9uaWMgcmVzb3VyY2UiLCJpZGVudGlmaWVycyI6W3sia2luZCI6IkRPSSIsInZhbHVlIjoiMTAuNTI4MS96ZW5vZG8uMzIyMTQ3OCJ9LHsia2luZCI6InVybCIsInZhbHVlIjoiaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC8zMjIxNDc4In1dLCJsYW5ndWFnZXMiOlsiZW4iXSwibm90ZXMiOlt7ImtpbmQiOiJEYXRhY2l0ZSByZXNvdXJjZSB0eXBlIiwidmFsdWUiOlsiVGVjaG5pY2FsIG5vdGUiXX1dLCJwdWJsaWNhdGlvbl9pbmZvcm1hdGlvbiI6WyJaZW5vZG8iXSwicmVsYXRlZF9pdGVtcyI6W3sicmVsYXRpb25zaGlwIjoiSXNWZXJzaW9uT2YiLCJ1cmkiOiJodHRwczovL2RvaS5vcmcvMTAuNTI4MS96ZW5vZG8uMzIyMTQ3NyJ9LHsicmVsYXRpb25zaGlwIjoiSXNQYXJ0T2YiLCJ1cmkiOiJodHRwczovL3plbm9kby5vcmcvY29tbXVuaXRpZXMvYXN0cm9ub215LWdlbmVyYWwifV0sInJpZ2h0cyI6W3sidXJpIjoiaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzQuMC9sZWdhbGNvZGUifSx7InVyaSI6ImluZm86ZXUtcmVwby9zZW1hbnRpY3Mvb3BlbkFjY2VzcyJ9XSwic291cmNlIjoiWmVub2RvIiwic291cmNlX2xpbmsiOiJodHRwczovL3plbm9kby5vcmcvcmVjb3JkLzMyMjE0NzgiLCJzdW1tYXJ5IjpbIlx1MDAzY3BcdTAwM2VNeSBibG9nIHBvc3QgYWJvdXQgaG93IHRvIGZpdCBhIHBsYW5lIHRvIGRhdGE6XHUwMDI2bmJzcDtcdTAwM2NhIGhyZWY9XCJodHRwczovL2RmbS5pby9wb3N0cy9maXR0aW5nLWEtcGxhbmUvXCJcdTAwM2VodHRwczovL2RmbS5pby9wb3N0cy9maXR0aW5nLWEtcGxhbmUvXHUwMDNjL2FcdTAwM2VcdTAwM2MvcFx1MDAzZSJdLCJ0aW1kZXhfcmVjb3JkX2lkIjoiemVub2RvOjMyMjE0NzgiLCJ0aXRsZSI6IkZpdHRpbmcgYSBwbGFuZSB0byBkYXRhIn0sImhpZ2hsaWdodCI6eyJ0aXRsZSI6WyJGaXR0aW5nIGEgcGxhbmUgdG8gPHNwYW4gY2xhc3M9XCJoaWdobGlnaHRcIj5kYXRhPC9zcGFuPiJdfX0seyJfaW5kZXgiOiJyZGl6ZW5vZG8tMjAyMi0wNy0xM3QxOS0yMy01N3oiLCJfdHlwZSI6Il9kb2MiLCJfaWQiOiJ6ZW5vZG86NjYxMTM4MiIsIl9zY29yZSI6Mi41ODU0MDIzLCJfc291cmNlIjp7ImNpdGF0aW9uIjoiTG9ra2VuLCBNYXJ0aW5lLCBHYWdsaWFubywgQWxleGFuZGVyLCBOYXJheWFuLCBHYXV0aGFtLCBIbG/FvmVrLCBSZW7DqWUsIEtlc3NsZXIsIFJpY2hhcmQsIENyZW5zaGF3LCBKb2huIEZyYW5rbGluLCBTYWxvLCBMYXVyYSwgQWx2ZXMsIENhdGFyaW5hIFMuLCBDaGF0dGVyamVlLCBEZWVwLCBWaW5jZW56aSwgTWFyaWEsIE1hbHosIEFsZXggSS4gKDIwMjIpOiBTQ09UQ0ggQ2F0YWxvZ3VlIGFuZCBBc3NvY2lhdGVkIERhdGEgRmlsZXMuIFplbm9kby4gRGF0YXNldC4gaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC82NjExMzgyIiwiY29udGVudF90eXBlIjpbIkRhdGFzZXQiXSwiY29udHJpYnV0b3JzIjpbeyJhZmZpbGlhdGlvbiI6WyJVbml2ZXJzaXR5IG9mIFRvcm9udG8iXSwia2luZCI6IkNyZWF0b3IiLCJpZGVudGlmaWVyIjpbImh0dHBzOi8vb3JjaWQub3JnLzAwMDAtMDAwMS01OTE3LTk1NVgiXSwidmFsdWUiOiJMb2trZW4sIE1hcnRpbmUifSx7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgYXQgVXJiYW5hLUNoYW1wYWlnbiJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAzLTQ5MDYtODQ0NyJdLCJ2YWx1ZSI6IkdhZ2xpYW5vLCBBbGV4YW5kZXIifSx7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgYXQgVXJiYW5hLUNoYW1wYWlnbiJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAxLTYwMjItMDQ4NCJdLCJ2YWx1ZSI6Ik5hcmF5YW4sIEdhdXRoYW0ifSx7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgb2YgVG9yb250byJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTA5NjUtNzg2NCJdLCJ2YWx1ZSI6Ikhsb8W+ZWssIFJlbsOpZSJ9LHsiYWZmaWxpYXRpb24iOlsiVW5pdmVyc2l0eSBvZiBDaGljYWdvIl0sImtpbmQiOiJDcmVhdG9yIiwiaWRlbnRpZmllciI6WyJodHRwczovL29yY2lkLm9yZy8wMDAwLTAwMDMtMzIyMS0wNDE5Il0sInZhbHVlIjoiS2Vzc2xlciwgUmljaGFyZCJ9LHsiYWZmaWxpYXRpb24iOlsiVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIl0sImtpbmQiOiJDcmVhdG9yIiwiaWRlbnRpZmllciI6WyJodHRwczovL29yY2lkLm9yZy8wMDAwLTAwMDItMjQ5NS0zNTE0Il0sInZhbHVlIjoiQ3JlbnNoYXcsIEpvaG4gRnJhbmtsaW4ifSx7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgb2YgTWlubmVzb3RhIl0sImtpbmQiOiJDcmVhdG9yIiwiaWRlbnRpZmllciI6WyJodHRwczovL29yY2lkLm9yZy8wMDAwLTAwMDEtNTQ3My02ODcxIl0sInZhbHVlIjoiU2FsbywgTGF1cmEifSx7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgQ29sbGVnZSBMb25kb24iXSwia2luZCI6IkNyZWF0b3IiLCJpZGVudGlmaWVyIjpbImh0dHBzOi8vb3JjaWQub3JnLzAwMDAtMDAwMi02MTY0LTkwNDQiXSwidmFsdWUiOiJBbHZlcywgQ2F0YXJpbmEgUy4ifSx7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgYXQgVXJiYW5hLUNoYW1wYWlnbiJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAzLTAwMzgtNTQ2OCJdLCJ2YWx1ZSI6IkNoYXR0ZXJqZWUsIERlZXAifSx7ImFmZmlsaWF0aW9uIjpbIkR1a2UgVW5pdmVyc2l0eSJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAxLTg3ODgtMTY4OCJdLCJ2YWx1ZSI6IlZpbmNlbnppLCBNYXJpYSJ9LHsiYWZmaWxpYXRpb24iOlsiUnVoci1Vbml2ZXJzaXR5IEJvY2h1bSJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTg2NzYtMTYyMiJdLCJ2YWx1ZSI6Ik1hbHosIEFsZXggSS4ifV0sImRhdGVzIjpbeyJraW5kIjoiUHVibGljYXRpb24gZGF0ZSIsInZhbHVlIjoiMjAyMiJ9LHsia2luZCI6Iklzc3VlZCIsInZhbHVlIjoiMjAyMi0wNi0wMSJ9XSwiZWRpdGlvbiI6IjEuMCIsImZvcm1hdCI6ImVsZWN0cm9uaWMgcmVzb3VyY2UiLCJpZGVudGlmaWVycyI6W3sia2luZCI6IkRPSSIsInZhbHVlIjoiMTAuNTI4MS96ZW5vZG8uNjYxMTM4MiJ9LHsia2luZCI6InVybCIsInZhbHVlIjoiaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC82NjExMzgyIn1dLCJsYW5ndWFnZXMiOlsiZW4iXSwicHVibGljYXRpb25faW5mb3JtYXRpb24iOlsiWmVub2RvIl0sInJlbGF0ZWRfaXRlbXMiOlt7InJlbGF0aW9uc2hpcCI6IklzVmVyc2lvbk9mIiwidXJpIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjUyODEvemVub2RvLjY2MDEyMTAifSx7InJlbGF0aW9uc2hpcCI6IklzUGFydE9mIiwidXJpIjoiaHR0cHM6Ly96ZW5vZG8ub3JnL2NvbW11bml0aWVzL2FzdHJvbm9teS1nZW5lcmFsIn1dLCJyaWdodHMiOlt7InVyaSI6Imh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvbGVnYWxjb2RlIn0seyJ1cmkiOiJpbmZvOmV1LXJlcG8vc2VtYW50aWNzL29wZW5BY2Nlc3MifV0sInNvdXJjZSI6Ilplbm9kbyIsInNvdXJjZV9saW5rIjoiaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC82NjExMzgyIiwic3ViamVjdHMiOlt7ImtpbmQiOiJTdWJqZWN0IHNjaGVtZSBub3QgcHJvdmlkZWQiLCJ2YWx1ZSI6WyJsYXJnZS1zY2FsZSBzdXJ2ZXlzIl19LHsia2luZCI6IlN1YmplY3Qgc2NoZW1lIG5vdCBwcm92aWRlZCIsInZhbHVlIjpbInRyYW5zaWVudCBzY2llbmNlIl19LHsia2luZCI6IlN1YmplY3Qgc2NoZW1lIG5vdCBwcm92aWRlZCIsInZhbHVlIjpbInNpbXVsYXRpb25zIl19XSwic3VtbWFyeSI6WyJcdTAwM2NwXHUwMDNlXHUwMDNjc3Ryb25nXHUwMDNlVGhlIFNpbXVsYXRlZCBDYXRhbG9ndWUgb2YgT3B0aWNhbCBUcmFuc2llbnRzIGFuZCBDb3JyZWxhdGVkIEhvc3RzIChTQ09UQ0gpXHUwMDNjL3N0cm9uZ1x1MDAzZVx1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VUaGlzIGlzIGEgXHUwMDNjZW1cdTAwM2VzdGF0aWNcdTAwM2MvZW1cdTAwM2UgZGF0YSByZWxlYXNlIGZvciBTQ09UQ0gsIGEgY2F0YWxvZ3VlIGNvbnRhaW5pbmcgNSBtaWxsaW9uIGV4cGxvc2l2ZSB0cmFuc2llbnRzIGFuZCB0aGUgcHJvcGVydGllcyBvZiB0aGVpciByZWFsaXN0aWNhbGx5LWFzc29jaWF0ZWQgaG9zdCBnYWxheGllcy4gVGhlIGNhdGFsb2d1ZSBjb25zaXN0cyBvZiAxMyB0cmFuc2llbnQgY2xhc3NlczogMyBTTiBJYSBjbGFzc2VzIChJYSwgSWF4LCBJYSA5MWJnLWxpa2UpLCAyIEgtcmljaCBjb3JlLWNvbGxhcHNlIGNsYXNzZXMgKElJLCBJSW4pLCA1IEgtcG9vciBjbGFzc2VzIChJYiwgSWMsIEljLUJMLCBJSWIsIFNMU04tSSksIGFuZCAzIG5vbi1TTiBjbGFzc2VzIChBR04sIEtOLCBUREUpLiBEZXRhaWxzIG9uIHRoZSBtZXRob2RvbG9neSB1c2VkIHRvIGNvbnN0cnVjdCB0aGVzZSBkYXRhIGNhbiBiZSBmb3VuZCBpbiBMb2trZW4sIEdhZ2xpYW5vLCBldCBhbC4gKDIwMjIpIGFuZCB0aGUgYXNzb2NpYXRlZCByZXBvIGZvciB0aGlzIHdvcmsgaXMgbG9jYXRlZCBhdCBcdTAwM2NhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vTFNTVERFU0MvdHJhbnNpZW50LWhvc3Qtc2ltc1wiXHUwMDNlaHR0cHM6Ly9naXRodWIuY29tL0xTU1RERVNDL3RyYW5zaWVudC1ob3N0LXNpbXNcdTAwM2MvYVx1MDAzZS4gVGhpcyBkYXRhIHJlbGVhc2UgY29uc2lzdHMgb2YgdGhyZWUgdHlwZXMgb2YgZmlsZXM6XHUwMDNjL3BcdTAwM2VcblxuXHUwMDNjcFx1MDAzZVx1MDAzY3N0cm9uZ1x1MDAzZVNDT1RDSCBDYXRhbG9ndWVzIChzY290Y2hfejMuaGRmNSwgc2NvdGNoX3psaW0uaGRmNSk6IFx1MDAzYy9zdHJvbmdcdTAwM2VcdTAwM2MvcFx1MDAzZVxuXG5cdTAwM2NvbFx1MDAzZVxuXHRcdTAwM2NsaVx1MDAzZVx1MDAzY3N0cm9uZ1x1MDAzZXNjb3RjaF96My5oZGY1OiBcdTAwM2Mvc3Ryb25nXHUwMDNlVGhpcyBpcyBhIGNhdGFsb2d1ZSBvZiA1TSB0cmFuc2llbnRzIGFuZCBob3N0IHByb3BlcnRpZXMgZm9yIDEzIHRyYW5zaWVudCBjbGFzc2VzIHdpdGhpbiBcdTAwM2NzcGFuIGNsYXNzPVwibWF0aC10ZXhcIlx1MDAzZVxcKDBcdTAwMjZsdDt6XHUwMDI2bHQ7M1xcKVx1MDAzYy9zcGFuXHUwMDNlLiBUaGUgcmVsYXRpdmUgcmF0ZXMgYmV0d2VlbiBjbGFzc2VzIGFyZSBub3QgcmVhbGlzdGljLiBUaGUgY2F0YWxvZ3VlIGNvbnNpc3RzIG9mIHR3byBtYWluIHRhYmxlczogdGhlIFx1MDAzY2VtXHUwMDNlVHJhbnNpZW50IFRhYmxlXHUwMDNjL2VtXHUwMDNlIGFuZCB0aGUgXHUwMDNjZW1cdTAwM2VIb3N0IFRhYmxlLiBcdTAwM2MvZW1cdTAwM2VUaGUgXHUwMDNjZW1cdTAwM2VUcmFuc2llbnQgVGFibGUgXHUwMDNjL2VtXHUwMDNlY29udGFpbnMgdHJ1ZSwgdG9wLW9mLXRoZS1nYWxheHkgbGlnaHQgY3VydmVzIGluIFZlcmEgUnViaW4gT2JzZXJ2YXRvcnkgTFNTVCBwYXNzYmFuZHMgKFx1MDAzY2VtXHUwMDNldWdyaXpZXHUwMDNjL2VtXHUwMDNlKSBmb3IgZWFjaCBvZiB0aGUgc2ltdWxhdGVkIHRyYW5zaWVudHMuIFRoZSBcdTAwM2NlbVx1MDAzZUhvc3QgVGFibGVcdTAwM2MvZW1cdTAwM2UgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhvc3QgZ2FsYXhpZXMgb2YgZWFjaCB0cmFuc2llbnQsIGluY2x1ZGluZyBhcHBhcmVudCBtYWduaXR1ZGUgaW4gTFNTVCBwYXNzYmFuZHMsIHNoYXBlLCBzdGFyLWZvcm1hdGlvbiByYXRlLCBhbmQgc3RlbGxhciBtYXNzLiBUaGUgdHdvIHRhYmxlcyBhcmUgbGlua2VkIGFuZCBjYW4gYmUgY3Jvc3MtbWF0Y2hlZCBieSBcdTAwM2NlbVx1MDAzZVRJRFx1MDAzYy9lbVx1MDAzZSwgdGhlIHVuaXF1ZSBpbnRlZ2VyIElEIG9mIGEgc2ltdWxhdGVkIHRyYW5zaWVudDsgYW5kIFx1MDAzY2VtXHUwMDNlR0lEXHUwMDNjL2VtXHUwMDNlLCB0aGUgdW5pcXVlIGludGVnZXIgSUQgb2YgZWFjaCBob3N0IGdhbGF4eS5cdTAwM2MvbGlcdTAwM2Vcblx0XHUwMDNjbGlcdTAwM2VcdTAwM2NzdHJvbmdcdTAwM2VzY290Y2hfemxpbS5oZGY1IFx1MDAzYy9zdHJvbmdcdTAwM2Uoc29vbiB0byBiZSBhZGRlZCEpXHUwMDNjc3Ryb25nXHUwMDNlOiBcdTAwM2Mvc3Ryb25nXHUwMDNlVGhpcyBjYXRhbG9ndWUgY29uc2lzdHMgb2YgNU0gZXZlbnRzIHNpbXVsYXRlZCBpbiBTTkFOQSB3aXRoIGFuIHVwcGVyIHJlZHNoaWZ0IGxpbWl0IG9mIFx1MDAzY3NwYW4gY2xhc3M9XCJtYXRoLXRleFwiXHUwMDNlXFwoelx1MDAyNmx0OzAuOFxcKVx1MDAzYy9zcGFuXHUwMDNlLiBNb3JlIGV2ZW50cyBhcmUgc2ltdWxhdGVkIGF0IGxvd2VyIHJlZHNoaWZ0IHRoYW4gU0NPVENIX1ozLmhkZjUsIHNvIHRoaXMgY2F0YWxvZ3VlIG1pZ2h0IGJlIG1vcmUgdmFsdWFibGUgZm9yIGxvdy16IHN0dWRpZXMgKGUuZy4sIG9mIEtOZSkuXHUwMDNjL2xpXHUwMDNlXG5cdTAwM2Mvb2xcdTAwM2VcblxuXHUwMDNjcFx1MDAzZVRoZSBmdWxsIG9yZ2FuaXphdGlvbiBvZiB0aGUgY2F0YWxvZ3VlIGlzIHNob3duIGluIEZpZ3VyZSBCMSBvZiBvdXIgcGFwZXIsIGFuZCB3ZSBwcm92aWRlIGEgbGlzdCBvZiB0aGUgc2NoZW1hIGFzIFRhYmxlcyA0IGFuZCA1LiBUdXRvcmlhbHMgZm9yIHF1ZXJ5aW5nIHRoZSBkYXRhYmFzZSBmb3Igc3BlY2lmaWMgc2NpZW5jZSBjYXNlcyBhcmUgYXZhaWxhYmxlIGF0IFx1MDAzY2EgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9MU1NUREVTQy90cmFuc2llbnQtaG9zdC1zaW1zL2Jsb2IvbWFpbi9ub3RlYm9va3MvU0NPVENIX3dhbGt0aHJvdWdocy5pcHluYlwiXHUwMDNlaHR0cHM6Ly9naXRodWIuY29tL0xTU1RERVNDL3RyYW5zaWVudC1ob3N0LXNpbXMvYmxvYi9tYWluL25vdGVib29rcy9TQ09UQ0hfd2Fsa3Rocm91Z2hzLmlweW5iXHUwMDNjL2FcdTAwM2UuXHUwMDNjL3BcdTAwM2VcblxuXHUwMDNjcFx1MDAzZUlmIGFsbCB5b3Ugd2FudCBhcmUgdGhlIGRhdGEgcHJvZHVjdHMsIHRoZW4geW91XHUwMDI2IzM5O3JlIGRvbmUhIElmIHlvdVx1MDAyNiMzOTtyZSBpbnRlcmVzdGVkIGluIGdlbmVyYXRpbmcgbmV3IHNpbXVsYXRpb25zIG9yIGFyZSBqdXN0IGN1cmlvdXMgdG8gbGVhcm4gYWJvdXQgaG93IHdlIHNpbXVsYXRlZCByZWFsaXN0aWMgaG9zdCBnYWxheHkgY29ycmVsYXRpb25zLCBjaGVjayBvdXQgdGhlIHR3byB0eXBlcyBvZiBzdXBwbGVtZW50YWwgZGF0YSBmaWxlczpcdTAwM2MvcFx1MDAzZVxuXG5cdTAwM2NwXHUwMDNlXHUwMDNjc3Ryb25nXHUwMDNlSE9TVExJQnMgKCpfR0hPU1QuSE9TVExJQi5neik6XHUwMDNjL3N0cm9uZ1x1MDAzZVx1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VUaGUgbGlicmFyaWVzIG9mIGNhbmRpZGF0ZSBDb3Ntb0RDMiBob3N0IGdhbGF4aWVzIHRvIHdoaWNoIHNpbXVsYXRlZCB0cmFuc2llbnRzIGFyZSBtYXRjaGVkLiBUaGVzZSBmaWxlcyBjYW4gYmUgdXNlZCB0byByZXJ1biBTTkFOQSBmb3IgdW5pcXVlIHN1cnZleSBzdHJhdGVnaWVzIChmb290cHJpbnQsIGNhZGVuY2UsIGV0YyksIGFuZCB3ZXJlIGdlbmVyYXRlZCB1c2luZyBcdTAwM2NhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vTFNTVERFU0MvdHJhbnNpZW50LWhvc3Qtc2ltcy9ibG9iL21haW4vbm90ZWJvb2tzL0hvc3RsaWJfQ29uc3RydWN0b3IuaXB5bmJcIlx1MDAzZWh0dHBzOi8vZ2l0aHViLmNvbS9MU1NUREVTQy90cmFuc2llbnQtaG9zdC1zaW1zL2Jsb2IvbWFpbi9ub3RlYm9va3MvSG9zdGxpYl9Db25zdHJ1Y3Rvci5pcHluYlx1MDAzYy9hXHUwMDNlLiBUaGUgdHJhbnNpZW50cyB3ZVx1MDAyNiMzOTt2ZSBzaW11bGF0ZWQgdXNlIG9uZSBvZiBmaXZlIEhPU1RMSUJzOiBcdTAwM2NlbVx1MDAzZVNOSWFcdTAwM2MvZW1cdTAwM2UsIFx1MDAzY2VtXHUwMDNlU05JYmNcdTAwM2MvZW1cdTAwM2UsIFx1MDAzY2VtXHUwMDNlU05JSVx1MDAzYy9lbVx1MDAzZSwgXHUwMDNjZW1cdTAwM2VVTk1BVENIRURcdTAwM2MvZW1cdTAwM2UsIGFuZCBcdTAwM2NlbVx1MDAzZVVOTUFUQ0hFRF9LTlx1MDAzYy9lbVx1MDAzZS4gVGhlIGZpcnN0IHRocmVlIG9mIHRoZXNlIEhPU1RMSUJzIGVuY29kZSBjb3JyZWxhdGlvbnMgZnJvbSB0aGUgR0hPU1QgY2F0YWxvZ3VlIChHYWdsaWFubysyMDIxKS4gVGhlIGxhc3QgdHdvIGNvbnRhaW4gcmVwcmVzZW50YXRpdmUgc3Vic2V0cyBvZiBDb3Ntb0RDMiAobm8gZXhwbGljaXQgaG9zdCBjb3JyZWxhdGlvbnMpLCBhbmQgdGhlIGxhc3QgZmlsZSBjb250YWlucyBnYWxheGllcyB3aG9zZSBwaG90b21ldHJ5IGhhcyBiZWVuIHNsaWdodGx5IG1vZGlmaWVkIHRvIGludHJvZHVjZSByZWFsaXN0aWMgc2NhdHRlciBpbnRvIHRoZSBjb2xvci1jb2xvciBkaXN0cmlidXRpb24gb2YgbWF0Y2hlZCBLTiBob3N0IGdhbGF4aWVzLlx1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VUaGUgZGF0YSBpbiB0aGVzZSBmaWxlcyByb3VnaGx5IG1hdGNoIHRoZSBmaW5hbCBnYWxheHkgcHJvcGVydGllcyBsaXN0ZWQgaW4gdGhlIFNDT1RDSCBjYXRhbG9ndWUsIHdpdGggb25lIGV4Y2VwdGlvbjogXHUwMDNjZW1cdTAwM2VOQlJfTElTVFx1MDAzYy9lbVx1MDAzZSwgdGhlIGNvc21vREMyIElEcyBvZiBvdGhlciBnYWxheGllcyBpbiB0aGF0IEhPU1RMSUIgd2l0aGluIGEgMTBcdTAwMjYjMzk7XHUwMDI2IzM5OyByYWRpdXMgb2YgYSBnaXZlbiBnYWxheHkuIFRoaXMgaXMgdXNlZnVsIGZvciBjYWxjdWxhdGluZyB0aGUgZGlyZWN0aW9uYWwgbGlnaHQgcmFkaXVzIChHdXB0YSsyMDE2KSB0byBlYWNoIHRyYW5zaWVudCBhbmQgcmVhbGlzdGljYWxseSBtaXMtYXNzb2NpYXRpbmcgc29tZSBob3N0cyAoYXMgd2lsbCBiZSBkb25lIGZvciBFTEFzVGlDQykuXHUwMDNjL3BcdTAwM2VcblxuXHUwMDNjcFx1MDAzZVx1MDAyNm5ic3A7XHUwMDNjL3BcdTAwM2VcblxuXHUwMDNjcFx1MDAzZVx1MDAzY3N0cm9uZ1x1MDAzZVdHVE1BUHMgKCpfR0hPU1QuV0dUTUFQLmd6KTogXHUwMDNjL3N0cm9uZ1x1MDAzZVx1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VUaGUgUHJvYmFiaWxpdHkgRGVuc2l0eSBGdW5jdGlvbnMgKFBERnMpIGRlc2NyaWJpbmcgdGhlIHByb2JhYmlsaXR5IG9mIGEgY2xhc3Mgb2YgdHJhbnNpZW50IHRvIG9jY3VyIGluIGEgZ2FsYXh5IG9mIGNlcnRhaW4gcHJvcGVydGllcy4gVGhlc2UgY2FuIGJlIHVzZWQgYXMgaW5wdXQgdG8gcmVydW4gU05BTkEsIGFuZCB3ZXJlIGdlbmVyYXRlZCB1c2luZyB0aGUgc2NyaXB0IFx1MDAzY2EgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9MU1NUREVTQy90cmFuc2llbnQtaG9zdC1zaW1zL2Jsb2IvbWFpbi9zY3JpcHRzL3dlaWdodG1hcF9nZW5lcmF0b3IucHlcIlx1MDAzZWh0dHBzOi8vZ2l0aHViLmNvbS9MU1NUREVTQy90cmFuc2llbnQtaG9zdC1zaW1zL2Jsb2IvbWFpbi9zY3JpcHRzL3dlaWdodG1hcF9nZW5lcmF0b3IucHkuXHUwMDNjL2FcdTAwM2UgVGhlIGdhbGF4eSBwcm9wZXJ0aWVzIG92ZXIgd2hpY2ggYSBQREYgaXMgZGVmaW5lZCBpcyB2YXJpYWJsZSwgYW5kIHRoZSBQREYgb2YgZWFjaCBjbGFzcyBoYXMgYmVlbiBjb25zdHJ1Y3RlZCB0byBlbmNvZGUgc3VidGxlciBjb3JyZWxhdGlvbnMgdGhhbiBhcmUgY2FwdHVyZWQgaW4gR0hPU1QgYW5kIGtub3duIGNvcnJlbGF0aW9ucyB3aXRoIGRlcml2ZWQgcHJvcGVydGllcyAoc3Rhci1mb3JtYXRpb24gcmF0ZSwgbWV0YWxsaWNpdHksIGFuZCBzdGVsbGFyIG1hc3MsIG5vbmUgb2Ygd2hpY2ggYXJlIGVzdGltYXRlZCBpbiBHSE9TVCkuIEhvc3QgbWF0Y2hpbmcgaW4gU05BTkEgaXMgZG9uZSBmcm9tIHRoZSBIT1NUTElCIGNvbmRpdGlvbmVkIG9uIHRoZSBXR1RNQVAgZGlzdHJpYnV0aW9ucy4gRmlsZSBzY2hlbWEgaXNcdTAwM2MvcFx1MDAzZVxuXG5cdTAwM2NwXHUwMDNlXHUwMDNjZW1cdTAwM2V4IHkgeiBXR1QgU05NQUdTSElGVFx1MDAzYy9lbVx1MDAzZVx1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VXaGVyZSBcdTAwM2NlbVx1MDAzZXh5elx1MDAzYy9lbVx1MDAzZSBkZWZpbmVzIGEgcG9pbnQgYWxvbmcgYSB0aHJlZS1kaW1lbnNpb25hbCwgdW5pZm9ybWx5LXNwYWNlZCBwYXJhbWV0ZXIgc3BhY2Ugb2YgaG9zdCBnYWxheHkgcHJvcGVydGllcywgXHUwMDNjZW1cdTAwM2VXR1RcdTAwM2MvZW1cdTAwM2UgZGVmaW5lcyB0aGUgd2VpZ2h0IHRvIGFzc2lnbiBhIGdhbGF4eSB3aXRoIHRob3NlIHByb3BlcnRpZXNcdTAwM2NlbVx1MDAzZSBcdTAwM2MvZW1cdTAwM2VpbiBtYXRjaGluZywgYW5kIFx1MDAzY2VtXHUwMDNlU05NQUdTSElGVCBcdTAwM2MvZW1cdTAwM2VkZXNjcmliZXMgdGhlIG1hZ25pdHVkZSBvZmZzZXQgdG8gYXR0cmlidXRlIHRvIHRyYW5zaWVudHMgbWF0Y2hlZCB0byBhIGdhbGF4eSB3aXRoIHRoZXNlIHByb3BlcnRpZXMgKHRoaXMgU05BTkEgZnVuY3Rpb25hbGl0eSBpcyBub3QgdXNlZCkuIEludGVycG9sYXRpb24gaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHdlaWdodHMgZm9yIEhPU1RMSUIgZ2FsYXhpZXMgd2l0aCBwcm9wZXJ0aWVzIGJldHdlZW4gZ3JpZCBwb2ludHMuXHUwMDNjL3BcdTAwM2VcblxuXHUwMDNjcFx1MDAzZVx1MDAyNm5ic3A7XHUwMDNjL3BcdTAwM2VcblxuXHUwMDNjcFx1MDAzZVF1ZXN0aW9ucz8gQ29tbWVudHM/IFBsZWFzZSByZWFjaCBvdXQgdG8gTWFydGluZSBMb2trZW4gKFx1MDAzY2VtXHUwMDNlbG9ra2VuQGFzdHJvLnV0b3JvbnRvLmNhXHUwMDNjL2VtXHUwMDNlKSBvciBBbGV4IEdhZ2xpYW5vIChcdTAwM2NlbVx1MDAzZWdhZ2xpYW4yQGlsbGlub2lzLmVkdVx1MDAzYy9lbVx1MDAzZSkuXHUwMDNjL3BcdTAwM2UiXSwidGltZGV4X3JlY29yZF9pZCI6Inplbm9kbzo2NjExMzgyIiwidGl0bGUiOiJTQ09UQ0ggQ2F0YWxvZ3VlIGFuZCBBc3NvY2lhdGVkIERhdGEgRmlsZXMifSwiaGlnaGxpZ2h0Ijp7InRpdGxlIjpbIlNDT1RDSCBDYXRhbG9ndWUgYW5kIEFzc29jaWF0ZWQgPHNwYW4gY2xhc3M9XCJoaWdobGlnaHRcIj5EYXRhPC9zcGFuPiBGaWxlcyJdfX0seyJfaW5kZXgiOiJyZGl6ZW5vZG8tMjAyMi0wNy0xM3QxOS0yMy01N3oiLCJfdHlwZSI6Il9kb2MiLCJfaWQiOiJ6ZW5vZG86NjY3MTI1NSIsIl9zY29yZSI6Mi41ODU0MDIzLCJfc291cmNlIjp7ImNpdGF0aW9uIjoiTG9ra2VuLCBNYXJ0aW5lLCBHYWdsaWFubywgQWxleGFuZGVyLCBOYXJheWFuLCBHYXV0aGFtLCBIbG/FvmVrLCBSZW7DqWUsIEtlc3NsZXIsIFJpY2hhcmQsIENyZW5zaGF3LCBKb2huIEZyYW5rbGluLCBTYWxvLCBMYXVyYSwgQWx2ZXMsIENhdGFyaW5hIFMuLCBDaGF0dGVyamVlLCBEZWVwLCBWaW5jZW56aSwgTWFyaWEsIE1hbHosIEFsZXggSS4gKDIwMjIpOiBTQ09UQ0ggQ2F0YWxvZ3VlIGFuZCBBc3NvY2lhdGVkIERhdGEgRmlsZXMuIFplbm9kby4gRGF0YXNldC4gaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC82NjcxMjU1IiwiY29udGVudF90eXBlIjpbIkRhdGFzZXQiXSwiY29udHJpYnV0b3JzIjpbeyJhZmZpbGlhdGlvbiI6WyJVbml2ZXJzaXR5IG9mIFRvcm9udG8iXSwia2luZCI6IkNyZWF0b3IiLCJpZGVudGlmaWVyIjpbImh0dHBzOi8vb3JjaWQub3JnLzAwMDAtMDAwMS01OTE3LTk1NVgiXSwidmFsdWUiOiJMb2trZW4sIE1hcnRpbmUifSx7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgYXQgVXJiYW5hLUNoYW1wYWlnbiJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAzLTQ5MDYtODQ0NyJdLCJ2YWx1ZSI6IkdhZ2xpYW5vLCBBbGV4YW5kZXIifSx7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgYXQgVXJiYW5hLUNoYW1wYWlnbiJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAxLTYwMjItMDQ4NCJdLCJ2YWx1ZSI6Ik5hcmF5YW4sIEdhdXRoYW0ifSx7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgb2YgVG9yb250byJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTA5NjUtNzg2NCJdLCJ2YWx1ZSI6Ikhsb8W+ZWssIFJlbsOpZSJ9LHsiYWZmaWxpYXRpb24iOlsiVW5pdmVyc2l0eSBvZiBDaGljYWdvIl0sImtpbmQiOiJDcmVhdG9yIiwiaWRlbnRpZmllciI6WyJodHRwczovL29yY2lkLm9yZy8wMDAwLTAwMDMtMzIyMS0wNDE5Il0sInZhbHVlIjoiS2Vzc2xlciwgUmljaGFyZCJ9LHsiYWZmaWxpYXRpb24iOlsiVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uIl0sImtpbmQiOiJDcmVhdG9yIiwiaWRlbnRpZmllciI6WyJodHRwczovL29yY2lkLm9yZy8wMDAwLTAwMDItMjQ5NS0zNTE0Il0sInZhbHVlIjoiQ3JlbnNoYXcsIEpvaG4gRnJhbmtsaW4ifSx7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgb2YgTWlubmVzb3RhIl0sImtpbmQiOiJDcmVhdG9yIiwiaWRlbnRpZmllciI6WyJodHRwczovL29yY2lkLm9yZy8wMDAwLTAwMDEtNTQ3My02ODcxIl0sInZhbHVlIjoiU2FsbywgTGF1cmEifSx7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgQ29sbGVnZSBMb25kb24iXSwia2luZCI6IkNyZWF0b3IiLCJpZGVudGlmaWVyIjpbImh0dHBzOi8vb3JjaWQub3JnLzAwMDAtMDAwMi02MTY0LTkwNDQiXSwidmFsdWUiOiJBbHZlcywgQ2F0YXJpbmEgUy4ifSx7ImFmZmlsaWF0aW9uIjpbIlVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgYXQgVXJiYW5hLUNoYW1wYWlnbiJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAzLTAwMzgtNTQ2OCJdLCJ2YWx1ZSI6IkNoYXR0ZXJqZWUsIERlZXAifSx7ImFmZmlsaWF0aW9uIjpbIkR1a2UgVW5pdmVyc2l0eSJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAxLTg3ODgtMTY4OCJdLCJ2YWx1ZSI6IlZpbmNlbnppLCBNYXJpYSJ9LHsiYWZmaWxpYXRpb24iOlsiUnVoci1Vbml2ZXJzaXR5IEJvY2h1bSJdLCJraW5kIjoiQ3JlYXRvciIsImlkZW50aWZpZXIiOlsiaHR0cHM6Ly9vcmNpZC5vcmcvMDAwMC0wMDAyLTg2NzYtMTYyMiJdLCJ2YWx1ZSI6Ik1hbHosIEFsZXggSS4ifV0sImRhdGVzIjpbeyJraW5kIjoiUHVibGljYXRpb24gZGF0ZSIsInZhbHVlIjoiMjAyMiJ9LHsia2luZCI6Iklzc3VlZCIsInZhbHVlIjoiMjAyMi0wNi0wMSJ9XSwiZWRpdGlvbiI6IjEuMCIsImZvcm1hdCI6ImVsZWN0cm9uaWMgcmVzb3VyY2UiLCJpZGVudGlmaWVycyI6W3sia2luZCI6IkRPSSIsInZhbHVlIjoiMTAuNTI4MS96ZW5vZG8uNjY3MTI1NSJ9LHsia2luZCI6InVybCIsInZhbHVlIjoiaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC82NjcxMjU1In1dLCJsYW5ndWFnZXMiOlsiZW4iXSwicHVibGljYXRpb25faW5mb3JtYXRpb24iOlsiWmVub2RvIl0sInJlbGF0ZWRfaXRlbXMiOlt7InJlbGF0aW9uc2hpcCI6IklzVmVyc2lvbk9mIiwidXJpIjoiaHR0cHM6Ly9kb2kub3JnLzEwLjUyODEvemVub2RvLjY2MDEyMTAifSx7InJlbGF0aW9uc2hpcCI6IklzUGFydE9mIiwidXJpIjoiaHR0cHM6Ly96ZW5vZG8ub3JnL2NvbW11bml0aWVzL2FzdHJvbm9teS1nZW5lcmFsIn1dLCJyaWdodHMiOlt7InVyaSI6Imh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS80LjAvbGVnYWxjb2RlIn0seyJ1cmkiOiJpbmZvOmV1LXJlcG8vc2VtYW50aWNzL29wZW5BY2Nlc3MifV0sInNvdXJjZSI6Ilplbm9kbyIsInNvdXJjZV9saW5rIjoiaHR0cHM6Ly96ZW5vZG8ub3JnL3JlY29yZC82NjcxMjU1Iiwic3ViamVjdHMiOlt7ImtpbmQiOiJTdWJqZWN0IHNjaGVtZSBub3QgcHJvdmlkZWQiLCJ2YWx1ZSI6WyJsYXJnZS1zY2FsZSBzdXJ2ZXlzIl19LHsia2luZCI6IlN1YmplY3Qgc2NoZW1lIG5vdCBwcm92aWRlZCIsInZhbHVlIjpbInRyYW5zaWVudCBzY2llbmNlIl19LHsia2luZCI6IlN1YmplY3Qgc2NoZW1lIG5vdCBwcm92aWRlZCIsInZhbHVlIjpbInNpbXVsYXRpb25zIl19XSwic3VtbWFyeSI6WyJcdTAwM2NwXHUwMDNlXHUwMDNjc3Ryb25nXHUwMDNlVGhlIFNpbXVsYXRlZCBDYXRhbG9ndWUgb2YgT3B0aWNhbCBUcmFuc2llbnRzIGFuZCBDb3JyZWxhdGVkIEhvc3RzIChTQ09UQ0gpXHUwMDNjL3N0cm9uZ1x1MDAzZVx1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VUaGlzIGlzIGEgXHUwMDNjZW1cdTAwM2VzdGF0aWNcdTAwM2MvZW1cdTAwM2UgZGF0YSByZWxlYXNlIGZvciBTQ09UQ0gsIGEgY2F0YWxvZ3VlIGNvbnRhaW5pbmcgNSBtaWxsaW9uIGV4cGxvc2l2ZSB0cmFuc2llbnRzIGFuZCB0aGUgcHJvcGVydGllcyBvZiB0aGVpciByZWFsaXN0aWNhbGx5LWFzc29jaWF0ZWQgaG9zdCBnYWxheGllcy4gVGhlIGNhdGFsb2d1ZSBjb25zaXN0cyBvZiAxMyB0cmFuc2llbnQgY2xhc3NlczogMyBTTiBJYSBjbGFzc2VzIChJYSwgSWF4LCBJYSA5MWJnLWxpa2UpLCAyIEgtcmljaCBjb3JlLWNvbGxhcHNlIGNsYXNzZXMgKElJLCBJSW4pLCA1IEgtcG9vciBjbGFzc2VzIChJYiwgSWMsIEljLUJMLCBJSWIsIFNMU04tSSksIGFuZCAzIG5vbi1TTiBjbGFzc2VzIChBR04sIEtOLCBUREUpLiBUaGUgcGFyYW1ldGVycyBhdmFpbGFibGUgZm9yIGVhY2ggdHJhbnNpZW50IGFuZCBob3N0IGdhbGF4eSBwYWlyIGFyZSBvdXRsaW5lZCBpbiBcdTAwM2NzdHJvbmdcdTAwM2VTQ09UQ0hfc2NoZW1hLm1kXHUwMDNjL3N0cm9uZ1x1MDAzZS5cdTAwM2MvcFx1MDAzZVxuXG5cdTAwM2NwXHUwMDNlXHUwMDI2bmJzcDtcdTAwM2MvcFx1MDAzZVxuXG5cdTAwM2NwXHUwMDNlRGV0YWlscyBvbiB0aGUgbWV0aG9kb2xvZ3kgdXNlZCB0byBjb25zdHJ1Y3QgdGhlc2UgZGF0YSBjYW4gYmUgZm91bmQgaW4gTG9ra2VuLCBHYWdsaWFubywgZXQgYWwuICgyMDIyKSBhbmQgdGhlIGFzc29jaWF0ZWQgcmVwbyBmb3IgdGhpcyB3b3JrIGlzIGxvY2F0ZWQgYXQgXHUwMDNjYSBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL0xTU1RERVNDL3RyYW5zaWVudC1ob3N0LXNpbXNcIlx1MDAzZWh0dHBzOi8vZ2l0aHViLmNvbS9MU1NUREVTQy90cmFuc2llbnQtaG9zdC1zaW1zXHUwMDNjL2FcdTAwM2UuIFRoaXMgZGF0YSByZWxlYXNlIGNvbnNpc3RzIG9mIHRocmVlIHR5cGVzIG9mIGZpbGVzOlx1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VcdTAwM2NzdHJvbmdcdTAwM2VTQ09UQ0ggQ2F0YWxvZ3VlcyAoc2NvdGNoX3ozLmhkZjUsIHNjb3RjaF96bGltLmhkZjUpOiBcdTAwM2Mvc3Ryb25nXHUwMDNlXHUwMDNjL3BcdTAwM2VcblxuXHUwMDNjb2xcdTAwM2Vcblx0XHUwMDNjbGlcdTAwM2VcdTAwM2NzdHJvbmdcdTAwM2VzY290Y2hfejMuaGRmNTogXHUwMDNjL3N0cm9uZ1x1MDAzZVRoaXMgaXMgYSBjYXRhbG9ndWUgb2YgNU0gdHJhbnNpZW50cyBhbmQgaG9zdCBwcm9wZXJ0aWVzIGZvciAxMyB0cmFuc2llbnQgY2xhc3NlcyB3aXRoaW4gXHUwMDNjc3BhbiBjbGFzcz1cIm1hdGgtdGV4XCJcdTAwM2VcXCgwXHUwMDI2bHQ7elx1MDAyNmx0OzNcXClcdTAwM2Mvc3Bhblx1MDAzZS4gVGhlIHJlbGF0aXZlIHJhdGVzIGJldHdlZW4gY2xhc3NlcyBhcmUgbm90IHJlYWxpc3RpYy4gVGhlIGNhdGFsb2d1ZSBjb25zaXN0cyBvZiB0d28gbWFpbiB0YWJsZXM6IHRoZSBcdTAwM2NlbVx1MDAzZVRyYW5zaWVudCBUYWJsZVx1MDAzYy9lbVx1MDAzZSBhbmQgdGhlIFx1MDAzY2VtXHUwMDNlSG9zdCBUYWJsZS4gXHUwMDNjL2VtXHUwMDNlVGhlIFx1MDAzY2VtXHUwMDNlVHJhbnNpZW50IFRhYmxlIFx1MDAzYy9lbVx1MDAzZWNvbnRhaW5zIHRydWUsIHRvcC1vZi10aGUtZ2FsYXh5IGxpZ2h0IGN1cnZlcyBpbiBWZXJhIFJ1YmluIE9ic2VydmF0b3J5IExTU1QgcGFzc2JhbmRzIChcdTAwM2NlbVx1MDAzZXVncml6WVx1MDAzYy9lbVx1MDAzZSkgZm9yIGVhY2ggb2YgdGhlIHNpbXVsYXRlZCB0cmFuc2llbnRzLiBUaGUgXHUwMDNjZW1cdTAwM2VIb3N0IFRhYmxlXHUwMDNjL2VtXHUwMDNlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBob3N0IGdhbGF4aWVzIG9mIGVhY2ggdHJhbnNpZW50LCBpbmNsdWRpbmcgYXBwYXJlbnQgbWFnbml0dWRlIGluIExTU1QgcGFzc2JhbmRzLCBzaGFwZSwgc3Rhci1mb3JtYXRpb24gcmF0ZSwgYW5kIHN0ZWxsYXIgbWFzcy4gVGhlIHR3byB0YWJsZXMgYXJlIGxpbmtlZCBhbmQgY2FuIGJlIGNyb3NzLW1hdGNoZWQgYnkgXHUwMDNjZW1cdTAwM2VUSURcdTAwM2MvZW1cdTAwM2UsIHRoZSB1bmlxdWUgaW50ZWdlciBJRCBvZiBhIHNpbXVsYXRlZCB0cmFuc2llbnQ7IGFuZCBcdTAwM2NlbVx1MDAzZUdJRFx1MDAzYy9lbVx1MDAzZSwgdGhlIHVuaXF1ZSBpbnRlZ2VyIElEIG9mIGVhY2ggaG9zdCBnYWxheHkuXHUwMDNjL2xpXHUwMDNlXG5cdFx1MDAzY2xpXHUwMDNlXHUwMDNjc3Ryb25nXHUwMDNlc2NvdGNoX3psaW0uaGRmNSBcdTAwM2Mvc3Ryb25nXHUwMDNlKHNvb24gdG8gYmUgYWRkZWQhKVx1MDAzY3N0cm9uZ1x1MDAzZTogXHUwMDNjL3N0cm9uZ1x1MDAzZVRoaXMgY2F0YWxvZ3VlIGNvbnNpc3RzIG9mIDVNIGV2ZW50cyBzaW11bGF0ZWQgaW4gU05BTkEgd2l0aCBhbiB1cHBlciByZWRzaGlmdCBsaW1pdCBvZiBcdTAwM2NzcGFuIGNsYXNzPVwibWF0aC10ZXhcIlx1MDAzZVxcKHpcdTAwMjZsdDswLjhcXClcdTAwM2Mvc3Bhblx1MDAzZS4gTW9yZSBldmVudHMgYXJlIHNpbXVsYXRlZCBhdCBsb3dlciByZWRzaGlmdCB0aGFuIFNDT1RDSF9aMy5oZGY1LCBzbyB0aGlzIGNhdGFsb2d1ZSBtaWdodCBiZSBtb3JlIHZhbHVhYmxlIGZvciBsb3cteiBzdHVkaWVzIChlLmcuLCBvZiBLTmUpLlx1MDAzYy9saVx1MDAzZVxuXHUwMDNjL29sXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VUaGUgZnVsbCBvcmdhbml6YXRpb24gb2YgdGhlIGNhdGFsb2d1ZSBpcyBzaG93biBpbiBGaWd1cmUgQjEgb2Ygb3VyIHBhcGVyLCBhbmQgd2UgcHJvdmlkZSBhIGxpc3Qgb2YgdGhlIHNjaGVtYSBhcyBUYWJsZXMgNCBhbmQgNS4gVHV0b3JpYWxzIGZvciBxdWVyeWluZyB0aGUgZGF0YWJhc2UgZm9yIHNwZWNpZmljIHNjaWVuY2UgY2FzZXMgYXJlIGF2YWlsYWJsZSBhdCBcdTAwM2NhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vTFNTVERFU0MvdHJhbnNpZW50LWhvc3Qtc2ltcy9ibG9iL21haW4vbm90ZWJvb2tzL1NDT1RDSF93YWxrdGhyb3VnaHMuaXB5bmJcIlx1MDAzZWh0dHBzOi8vZ2l0aHViLmNvbS9MU1NUREVTQy90cmFuc2llbnQtaG9zdC1zaW1zL2Jsb2IvbWFpbi9ub3RlYm9va3MvU0NPVENIX3dhbGt0aHJvdWdocy5pcHluYlx1MDAzYy9hXHUwMDNlLlx1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VJZiBhbGwgeW91IHdhbnQgYXJlIHRoZSBkYXRhIHByb2R1Y3RzLCB0aGVuIHlvdVx1MDAyNiMzOTtyZSBkb25lISBJZiB5b3VcdTAwMjYjMzk7cmUgaW50ZXJlc3RlZCBpbiBnZW5lcmF0aW5nIG5ldyBzaW11bGF0aW9ucyBvciBhcmUganVzdCBjdXJpb3VzIHRvIGxlYXJuIGFib3V0IGhvdyB3ZSBzaW11bGF0ZWQgcmVhbGlzdGljIGhvc3QgZ2FsYXh5IGNvcnJlbGF0aW9ucywgY2hlY2sgb3V0IHRoZSB0d28gdHlwZXMgb2Ygc3VwcGxlbWVudGFsIGRhdGEgZmlsZXM6XHUwMDNjL3BcdTAwM2VcblxuXHUwMDNjcFx1MDAzZVx1MDAzY3N0cm9uZ1x1MDAzZUhPU1RMSUJzICgqX0dIT1NULkhPU1RMSUIuZ3opOlx1MDAzYy9zdHJvbmdcdTAwM2VcdTAwM2MvcFx1MDAzZVxuXG5cdTAwM2NwXHUwMDNlVGhlIGxpYnJhcmllcyBvZiBjYW5kaWRhdGUgQ29zbW9EQzIgaG9zdCBnYWxheGllcyB0byB3aGljaCBzaW11bGF0ZWQgdHJhbnNpZW50cyBhcmUgbWF0Y2hlZC4gVGhlc2UgZmlsZXMgY2FuIGJlIHVzZWQgdG8gcmVydW4gU05BTkEgZm9yIHVuaXF1ZSBzdXJ2ZXkgc3RyYXRlZ2llcyAoZm9vdHByaW50LCBjYWRlbmNlLCBldGMpLCBhbmQgd2VyZSBnZW5lcmF0ZWQgdXNpbmcgXHUwMDNjYSBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL0xTU1RERVNDL3RyYW5zaWVudC1ob3N0LXNpbXMvYmxvYi9tYWluL25vdGVib29rcy9Ib3N0bGliX0NvbnN0cnVjdG9yLmlweW5iXCJcdTAwM2VodHRwczovL2dpdGh1Yi5jb20vTFNTVERFU0MvdHJhbnNpZW50LWhvc3Qtc2ltcy9ibG9iL21haW4vbm90ZWJvb2tzL0hvc3RsaWJfQ29uc3RydWN0b3IuaXB5bmJcdTAwM2MvYVx1MDAzZS4gVGhlIHRyYW5zaWVudHMgd2VcdTAwMjYjMzk7dmUgc2ltdWxhdGVkIHVzZSBvbmUgb2YgZml2ZSBIT1NUTElCczogXHUwMDNjZW1cdTAwM2VTTklhXHUwMDNjL2VtXHUwMDNlLCBcdTAwM2NlbVx1MDAzZVNOSWJjXHUwMDNjL2VtXHUwMDNlLCBcdTAwM2NlbVx1MDAzZVNOSUlcdTAwM2MvZW1cdTAwM2UsIFx1MDAzY2VtXHUwMDNlVU5NQVRDSEVEXHUwMDNjL2VtXHUwMDNlLCBhbmQgXHUwMDNjZW1cdTAwM2VVTk1BVENIRURfS05cdTAwM2MvZW1cdTAwM2UuIFRoZSBmaXJzdCB0aHJlZSBvZiB0aGVzZSBIT1NUTElCcyBlbmNvZGUgY29ycmVsYXRpb25zIGZyb20gdGhlIEdIT1NUIGNhdGFsb2d1ZSAoR2FnbGlhbm8rMjAyMSkuIFRoZSBsYXN0IHR3byBjb250YWluIHJlcHJlc2VudGF0aXZlIHN1YnNldHMgb2YgQ29zbW9EQzIgKG5vIGV4cGxpY2l0IGhvc3QgY29ycmVsYXRpb25zKSwgYW5kIHRoZSBsYXN0IGZpbGUgY29udGFpbnMgZ2FsYXhpZXMgd2hvc2UgcGhvdG9tZXRyeSBoYXMgYmVlbiBzbGlnaHRseSBtb2RpZmllZCB0byBpbnRyb2R1Y2UgcmVhbGlzdGljIHNjYXR0ZXIgaW50byB0aGUgY29sb3ItY29sb3IgZGlzdHJpYnV0aW9uIG9mIG1hdGNoZWQgS04gaG9zdCBnYWxheGllcy5cdTAwM2MvcFx1MDAzZVxuXG5cdTAwM2NwXHUwMDNlVGhlIGRhdGEgaW4gdGhlc2UgZmlsZXMgcm91Z2hseSBtYXRjaCB0aGUgZmluYWwgZ2FsYXh5IHByb3BlcnRpZXMgbGlzdGVkIGluIHRoZSBTQ09UQ0ggY2F0YWxvZ3VlLCB3aXRoIG9uZSBleGNlcHRpb246IFx1MDAzY2VtXHUwMDNlTkJSX0xJU1RcdTAwM2MvZW1cdTAwM2UsIHRoZSBjb3Ntb0RDMiBJRHMgb2Ygb3RoZXIgZ2FsYXhpZXMgaW4gdGhhdCBIT1NUTElCIHdpdGhpbiBhIDEwXHUwMDI2IzM5O1x1MDAyNiMzOTsgcmFkaXVzIG9mIGEgZ2l2ZW4gZ2FsYXh5LiBUaGlzIGlzIHVzZWZ1bCBmb3IgY2FsY3VsYXRpbmcgdGhlIGRpcmVjdGlvbmFsIGxpZ2h0IHJhZGl1cyAoR3VwdGErMjAxNikgdG8gZWFjaCB0cmFuc2llbnQgYW5kIHJlYWxpc3RpY2FsbHkgbWlzLWFzc29jaWF0aW5nIHNvbWUgaG9zdHMgKGFzIHdpbGwgYmUgZG9uZSBmb3IgRUxBc1RpQ0MpLlx1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VcdTAwMjZuYnNwO1x1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VcdTAwM2NzdHJvbmdcdTAwM2VXR1RNQVBzICgqX0dIT1NULldHVE1BUC5neik6IFx1MDAzYy9zdHJvbmdcdTAwM2VcdTAwM2MvcFx1MDAzZVxuXG5cdTAwM2NwXHUwMDNlVGhlIFByb2JhYmlsaXR5IERlbnNpdHkgRnVuY3Rpb25zIChQREZzKSBkZXNjcmliaW5nIHRoZSBwcm9iYWJpbGl0eSBvZiBhIGNsYXNzIG9mIHRyYW5zaWVudCB0byBvY2N1ciBpbiBhIGdhbGF4eSBvZiBjZXJ0YWluIHByb3BlcnRpZXMuIFRoZXNlIGNhbiBiZSB1c2VkIGFzIGlucHV0IHRvIHJlcnVuIFNOQU5BLCBhbmQgd2VyZSBnZW5lcmF0ZWQgdXNpbmcgdGhlIHNjcmlwdCBcdTAwM2NhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vTFNTVERFU0MvdHJhbnNpZW50LWhvc3Qtc2ltcy9ibG9iL21haW4vc2NyaXB0cy93ZWlnaHRtYXBfZ2VuZXJhdG9yLnB5XCJcdTAwM2VodHRwczovL2dpdGh1Yi5jb20vTFNTVERFU0MvdHJhbnNpZW50LWhvc3Qtc2ltcy9ibG9iL21haW4vc2NyaXB0cy93ZWlnaHRtYXBfZ2VuZXJhdG9yLnB5Llx1MDAzYy9hXHUwMDNlIFRoZSBnYWxheHkgcHJvcGVydGllcyBvdmVyIHdoaWNoIGEgUERGIGlzIGRlZmluZWQgaXMgdmFyaWFibGUsIGFuZCB0aGUgUERGIG9mIGVhY2ggY2xhc3MgaGFzIGJlZW4gY29uc3RydWN0ZWQgdG8gZW5jb2RlIHN1YnRsZXIgY29ycmVsYXRpb25zIHRoYW4gYXJlIGNhcHR1cmVkIGluIEdIT1NUIGFuZCBrbm93biBjb3JyZWxhdGlvbnMgd2l0aCBkZXJpdmVkIHByb3BlcnRpZXMgKHN0YXItZm9ybWF0aW9uIHJhdGUsIG1ldGFsbGljaXR5LCBhbmQgc3RlbGxhciBtYXNzLCBub25lIG9mIHdoaWNoIGFyZSBlc3RpbWF0ZWQgaW4gR0hPU1QpLiBIb3N0IG1hdGNoaW5nIGluIFNOQU5BIGlzIGRvbmUgZnJvbSB0aGUgSE9TVExJQiBjb25kaXRpb25lZCBvbiB0aGUgV0dUTUFQIGRpc3RyaWJ1dGlvbnMuIEZpbGUgc2NoZW1hIGlzXHUwMDNjL3BcdTAwM2VcblxuXHUwMDNjcFx1MDAzZVx1MDAzY2VtXHUwMDNleCB5IHogV0dUIFNOTUFHU0hJRlRcdTAwM2MvZW1cdTAwM2VcdTAwM2MvcFx1MDAzZVxuXG5cdTAwM2NwXHUwMDNlV2hlcmUgXHUwMDNjZW1cdTAwM2V4eXpcdTAwM2MvZW1cdTAwM2UgZGVmaW5lcyBhIHBvaW50IGFsb25nIGEgdGhyZWUtZGltZW5zaW9uYWwsIHVuaWZvcm1seS1zcGFjZWQgcGFyYW1ldGVyIHNwYWNlIG9mIGhvc3QgZ2FsYXh5IHByb3BlcnRpZXMsIFx1MDAzY2VtXHUwMDNlV0dUXHUwMDNjL2VtXHUwMDNlIGRlZmluZXMgdGhlIHdlaWdodCB0byBhc3NpZ24gYSBnYWxheHkgd2l0aCB0aG9zZSBwcm9wZXJ0aWVzXHUwMDNjZW1cdTAwM2UgXHUwMDNjL2VtXHUwMDNlaW4gbWF0Y2hpbmcsIGFuZCBcdTAwM2NlbVx1MDAzZVNOTUFHU0hJRlQgXHUwMDNjL2VtXHUwMDNlZGVzY3JpYmVzIHRoZSBtYWduaXR1ZGUgb2Zmc2V0IHRvIGF0dHJpYnV0ZSB0byB0cmFuc2llbnRzIG1hdGNoZWQgdG8gYSBnYWxheHkgd2l0aCB0aGVzZSBwcm9wZXJ0aWVzICh0aGlzIFNOQU5BIGZ1bmN0aW9uYWxpdHkgaXMgbm90IHVzZWQpLiBJbnRlcnBvbGF0aW9uIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB3ZWlnaHRzIGZvciBIT1NUTElCIGdhbGF4aWVzIHdpdGggcHJvcGVydGllcyBiZXR3ZWVuIGdyaWQgcG9pbnRzLlx1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VcdTAwMjZuYnNwO1x1MDAzYy9wXHUwMDNlXG5cblx1MDAzY3BcdTAwM2VRdWVzdGlvbnM/IENvbW1lbnRzPyBQbGVhc2UgcmVhY2ggb3V0IHRvIE1hcnRpbmUgTG9ra2VuIChcdTAwM2NlbVx1MDAzZWxva2tlbkBhc3Ryby51dG9yb250by5jYVx1MDAzYy9lbVx1MDAzZSkgb3IgQWxleCBHYWdsaWFubyAoXHUwMDNjZW1cdTAwM2VnYWdsaWFuMkBpbGxpbm9pcy5lZHVcdTAwM2MvZW1cdTAwM2UpLlx1MDAzYy9wXHUwMDNlIl0sInRpbWRleF9yZWNvcmRfaWQiOiJ6ZW5vZG86NjY3MTI1NSIsInRpdGxlIjoiU0NPVENIIENhdGFsb2d1ZSBhbmQgQXNzb2NpYXRlZCBEYXRhIEZpbGVzIn0sImhpZ2hsaWdodCI6eyJ0aXRsZSI6WyJTQ09UQ0ggQ2F0YWxvZ3VlIGFuZCBBc3NvY2lhdGVkIDxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0XCI+RGF0YTwvc3Bhbj4gRmlsZXMiXX19XX0sImFnZ3JlZ2F0aW9ucyI6eyJsYW5ndWFnZXMiOnsiZG9jX2NvdW50X2Vycm9yX3VwcGVyX2JvdW5kIjowLCJzdW1fb3RoZXJfZG9jX2NvdW50IjowLCJidWNrZXRzIjpbeyJrZXkiOiJlbiIsImRvY19jb3VudCI6MTh9LHsia2V5IjoiZW5fdXMiLCJkb2NfY291bnQiOjh9LHsia2V5IjoiZnIiLCJkb2NfY291bnQiOjF9XX0sImNvbnRlbnRfdHlwZSI6eyJkb2NfY291bnRfZXJyb3JfdXBwZXJfYm91bmQiOjAsInN1bV9vdGhlcl9kb2NfY291bnQiOjAsImJ1Y2tldHMiOlt7ImtleSI6ImRhdGFzZXQiLCJkb2NfY291bnQiOjEwMX0seyJrZXkiOiJhcnRpY2xlIiwiZG9jX2NvdW50IjoxMn0seyJrZXkiOiJzb2Z0d2FyZSIsImRvY19jb3VudCI6NX0seyJrZXkiOiJ0ZXh0IiwiZG9jX2NvdW50Ijo0fSx7ImtleSI6InByZXByaW50IiwiZG9jX2NvdW50IjoyfSx7ImtleSI6ImNvbmZlcmVuY2VwYXBlciIsImRvY19jb3VudCI6MX0seyJrZXkiOiJqb3VybmFsYXJ0aWNsZSIsImRvY19jb3VudCI6MX0seyJrZXkiOiJyZXBvcnQiLCJkb2NfY291bnQiOjF9XX0sImNvbGxlY3Rpb25zIjp7ImRvY19jb3VudF9lcnJvcl91cHBlcl9ib3VuZCI6MCwic3VtX290aGVyX2RvY19jb3VudCI6MCwiYnVja2V0cyI6W119LCJzdWJqZWN0cyI6eyJkb2NfY291bnQiOjMxMSwic3ViamVjdF9uYW1lcyI6eyJkb2NfY291bnRfZXJyb3JfdXBwZXJfYm91bmQiOjUsInN1bV9vdGhlcl9kb2NfY291bnQiOjI1MywiYnVja2V0cyI6W3sia2V5Ijoic29jaWFsIHNjaWVuY2VzIiwiZG9jX2NvdW50Ijo2MH0seyJrZXkiOiJhc3Ryb25vbXkiLCJkb2NfY291bnQiOjd9LHsia2V5IjoiYWxtYSIsImRvY19jb3VudCI6NX0seyJrZXkiOiJtZWRpY2luZSwgaGVhbHRoIGFuZCBsaWZlIHNjaWVuY2VzIiwiZG9jX2NvdW50Ijo1fSx7ImtleSI6ImNvb2xpbmcgZmxvd3MiLCJkb2NfY291bnQiOjR9LHsia2V5IjoiZW1pc3Npb24gbGluZSBnYWxheGllcyIsImRvY19jb3VudCI6NH0seyJrZXkiOiJoeWRyb2R5bmFtaWMgc2ltdWxhdGlvbnMiLCJkb2NfY291bnQiOjR9LHsia2V5IjoiaHlkcm9keW5hbWljcyIsImRvY19jb3VudCI6NH0seyJrZXkiOiJseW1hbi1hbHBoYSBnYWxheGllcyIsImRvY19jb3VudCI6NH0seyJrZXkiOiJseW1hbi1icmVhayBnYWxheGllcyIsImRvY19jb3VudCI6NH1dfX0sImNvbnRlbnRfZm9ybWF0Ijp7ImRvY19jb3VudF9lcnJvcl91cHBlcl9ib3VuZCI6MCwic3VtX290aGVyX2RvY19jb3VudCI6MCwiYnVja2V0cyI6W3sia2V5IjoiZWxlY3Ryb25pYyByZXNvdXJjZSIsImRvY19jb3VudCI6MTI3fV19LCJsaXRlcmFyeV9mb3JtIjp7ImRvY19jb3VudF9lcnJvcl91cHBlcl9ib3VuZCI6MCwic3VtX290aGVyX2RvY19jb3VudCI6MCwiYnVja2V0cyI6W119LCJzb3VyY2UiOnsiZG9jX2NvdW50X2Vycm9yX3VwcGVyX2JvdW5kIjowLCJzdW1fb3RoZXJfZG9jX2NvdW50IjowLCJidWNrZXRzIjpbeyJrZXkiOiJhYmR1bCBsYXRpZiBqYW1lZWwgcG92ZXJ0eSBhY3Rpb24gbGFiIGRhdGF2ZXJzZSIsImRvY19jb3VudCI6NjB9LHsia2V5IjoiemVub2RvIiwiZG9jX2NvdW50Ijo1NH0seyJrZXkiOiJ3b29kcyBob2xlIG9wZW4gYWNjZXNzIHNlcnZlciIsImRvY19jb3VudCI6MTN9XX0sImNvbnRyaWJ1dG9ycyI6eyJkb2NfY291bnQiOjY2MywiY29udHJpYnV0b3JfbmFtZXMiOnsiZG9jX2NvdW50X2Vycm9yX3VwcGVyX2JvdW5kIjo2LCJzdW1fb3RoZXJfZG9jX2NvdW50Ijo1OTUsImJ1Y2tldHMiOlt7ImtleSI6ImR1ZmxvLCBlc3RoZXIiLCJkb2NfY291bnQiOjE1fSx7ImtleSI6ImdyZWVuc3RvbmUsIG1pY2hhZWwiLCJkb2NfY291bnQiOjEwfSx7ImtleSI6ImFzaHJhZiwgbmF2YSIsImRvY19jb3VudCI6Nn0seyJrZXkiOiJiYW5lcmplZSwgYWJoaWppdCIsImRvY19jb3VudCI6Nn0seyJrZXkiOiJkYW5laGthciwgYXNoa2JpeiIsImRvY19jb3VudCI6Nn0seyJrZXkiOiJsYXJyZWd1eSwgaG9yYWNpbyIsImRvY19jb3VudCI6Nn0seyJrZXkiOiJvc21hbiwgYWRhbSIsImRvY19jb3VudCI6Nn0seyJrZXkiOiJtYXJzaGFsbCwgam9obiIsImRvY19jb3VudCI6NX0seyJrZXkiOiJhYmhpaml0IGJhbmVyamVlIiwiZG9jX2NvdW50Ijo0fSx7ImtleSI6ImF0a2luLCBkYXZpZCIsImRvY19jb3VudCI6NH1dfX19fQ== + recorded_at: Wed, 13 Jul 2022 19:37:49 GMT +recorded_with: VCR 6.1.0