bolognese 0.9.66 → 0.9.67

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd229fb753ad0389b74ddaccb134bc5e2b193326cef507a09c6188de325caf18
4
- data.tar.gz: 9701468b6ea703819593f16894ad9d5041a3c208c5d40507d4aabecbe2225717
3
+ metadata.gz: 9bbbf8e600c97f1574dc77569b3522b1f98b07cd3c530b0b606e7c7e6117ad69
4
+ data.tar.gz: a28a34dc194d55c645a8e70521d31ba72b0ab036334d5b7c2bffabac945e7c76
5
5
  SHA512:
6
- metadata.gz: dacd921436458f1c686fd0226728dfd7b9d5024fa506320aa02add7569c6b2514f76729d7640421dbc81978b34aa3fdf6b40880050fd17dd4a2b9bf9146f9fd3
7
- data.tar.gz: a4ad5d0e146a0cdc95bb1f2dcb335a769abefcd54e715311a24c20f1c1ed789161a9642a4cc80f185a8464eb36685dc164e10975eca3b573d258f641036df267
6
+ metadata.gz: 30ad680f129dee6db608e573ba70d00346f5c5fafd986395c10ebc33e475916b18379f4fcb74dea84ee4bbec93c385acb9b11cdcfdf4598a41d701d6fca2f634
7
+ data.tar.gz: 1e84b690268e4448c5340cf91b0631b162237f27d68ee23682ecde19491a11ab5743cbcd4c95b547c88ed923d277b5f62abcbc7e52f047fa88c46e0bc7db4660
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bolognese (0.9.66)
4
+ bolognese (0.9.67)
5
5
  activesupport (>= 4.2.5, < 6)
6
6
  benchmark_methods (~> 0.7)
7
7
  bibtex-ruby (~> 4.1)
@@ -99,18 +99,18 @@ module Bolognese
99
99
  book_metadata = meta.dig("crossref", "book", "book_metadata")
100
100
  book_series_metadata = meta.dig("crossref", "book", "book_series_metadata")
101
101
  book_set_metadata = meta.dig("crossref", "book", "book_set_metadata")
102
- bibliographic_metadata = meta.dig("crossref", "book", "content_item")
102
+ bibliographic_metadata = meta.dig("crossref", "book", "content_item") || {}
103
103
  additional_type = bibliographic_metadata.fetch("component_type", nil) ? "book-" + bibliographic_metadata.fetch("component_type") : "book"
104
104
  publisher = book_metadata.dig("publisher", "publisher_name")
105
105
  when "conference"
106
- event_metadata = meta.dig("crossref", "conference", "event_metadata")
107
- bibliographic_metadata = meta.dig("crossref", "conference", "conference_paper")
106
+ event_metadata = meta.dig("crossref", "conference", "event_metadata") || {}
107
+ bibliographic_metadata = meta.dig("crossref", "conference", "conference_paper") || {}
108
108
  when "journal"
109
- journal_metadata = meta.dig("crossref", "journal", "journal_metadata")
110
- bibliographic_metadata = meta.dig("crossref", "journal", "journal_article")
109
+ journal_metadata = meta.dig("crossref", "journal", "journal_metadata") || {}
110
+ bibliographic_metadata = meta.dig("crossref", "journal", "journal_article") || {}
111
111
  program_metadata = bibliographic_metadata.dig("crossmark", "custom_metadata", "program") || bibliographic_metadata.dig("program")
112
- journal_issue = meta.dig("crossref", "journal", "journal_issue")
113
- journal_article = meta.dig("crossref", "journal", "journal_article")
112
+ journal_issue = meta.dig("crossref", "journal", "journal_issue") || {}
113
+ journal_article = meta.dig("crossref", "journal", "journal_article") || {}
114
114
 
115
115
  additional_type = if journal_article.present?
116
116
  "journal_article"
@@ -120,9 +120,9 @@ module Bolognese
120
120
  "journal"
121
121
  end
122
122
  when "posted_content"
123
- bibliographic_metadata = meta.dig("crossref", "posted_content")
123
+ bibliographic_metadata = meta.dig("crossref", "posted_content") || {}
124
124
  when "sa_component"
125
- bibliographic_metadata = meta.dig("crossref", "sa_component", "component_list", "component")
125
+ bibliographic_metadata = meta.dig("crossref", "sa_component", "component_list", "component") || {}
126
126
  end
127
127
 
128
128
  additional_type = (additional_type || model).underscore.camelize
@@ -194,7 +194,9 @@ module Bolognese
194
194
  def crossref_license(program_metadata)
195
195
  access_indicator = Array.wrap(program_metadata).find { |m| m["name"] == "AccessIndicators" }
196
196
  if access_indicator.present?
197
- { "id" => normalize_url(parse_attributes(access_indicator["license_ref"])) }
197
+ Array.wrap(access_indicator["license_ref"]).map do |license|
198
+ { "id" => normalize_url(parse_attributes(license)) }
199
+ end.uniq.unwrap
198
200
  else
199
201
  nil
200
202
  end
@@ -1,3 +1,3 @@
1
1
  module Bolognese
2
- VERSION = "0.9.66"
2
+ VERSION = "0.9.67"
3
3
  end
@@ -0,0 +1,90 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.datacite.org/prefixes/10.1111
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Maremma - https://github.com/datacite/maremma
12
+ Accept:
13
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Date:
20
+ - Fri, 29 Dec 2017 12:46:05 GMT
21
+ Content-Type:
22
+ - application/vnd.api+json; charset=utf-8
23
+ Connection:
24
+ - keep-alive
25
+ Status:
26
+ - 200 OK
27
+ X-Anonymous-Consumer:
28
+ - 'true'
29
+ Cache-Control:
30
+ - max-age=0, private, must-revalidate
31
+ Vary:
32
+ - Accept-Encoding
33
+ Etag:
34
+ - W/"d2c510be641d45d932800af9be99a6be"
35
+ X-Runtime:
36
+ - '0.774296'
37
+ X-Request-Id:
38
+ - 767f4c1c-1fb3-45f4-a643-7fb8fd2bda11
39
+ X-Powered-By:
40
+ - Phusion Passenger 5.1.12
41
+ Server:
42
+ - nginx/1.12.2 + Phusion Passenger 5.1.12
43
+ Access-Control-Allow-Origin:
44
+ - "*"
45
+ Access-Control-Allow-Methods:
46
+ - GET, POST, PATCH, PUT, DELETE, OPTIONS
47
+ Access-Control-Allow-Headers:
48
+ - DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
49
+ Access-Control-Expose-Headers:
50
+ - DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Authorization
51
+ body:
52
+ encoding: UTF-8
53
+ string: '{"data":{"id":"10.1111","type":"prefixes","attributes":{"registration-agency":"Crossref","created":null,"updated":"2016-09-21T20:45:34Z"},"relationships":{"clients":{"data":[]},"providers":{"data":[]}}}}'
54
+ http_version:
55
+ recorded_at: Fri, 29 Dec 2017 12:46:05 GMT
56
+ - request:
57
+ method: get
58
+ uri: http://www.crossref.org/openurl/?format=unixref&id=doi:10.1111/nph.14619&noredirect=true&pid=tech@datacite.org
59
+ body:
60
+ encoding: US-ASCII
61
+ string: ''
62
+ headers:
63
+ User-Agent:
64
+ - Maremma - https://github.com/datacite/maremma
65
+ Accept:
66
+ - text/xml
67
+ response:
68
+ status:
69
+ code: 200
70
+ message: OK
71
+ headers:
72
+ Server:
73
+ - Apache-Coyote/1.1
74
+ Crossref-Deployment-Name:
75
+ - cr6-1
76
+ Content-Type:
77
+ - text/xml;charset=UTF-8
78
+ Content-Language:
79
+ - en-US
80
+ Date:
81
+ - Fri, 29 Dec 2017 12:46:05 GMT
82
+ Connection:
83
+ - close
84
+ body:
85
+ encoding: ASCII-8BIT
86
+ string: !binary |-
87
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGRvaV9yZWNvcmRzPg0KICA8ZG9pX3JlY29yZCBvd25lcj0iMTAuMTExMSIgdGltZXN0YW1wPSIyMDE3LTA2LTA1IDA2OjU2OjU5Ij4NCiAgICA8Y3Jvc3NyZWY+DQogICAgICA8am91cm5hbD4NCiAgICAgICAgPGpvdXJuYWxfbWV0YWRhdGEgbGFuZ3VhZ2U9ImVuIj4NCiAgICAgICAgICA8ZnVsbF90aXRsZT5OZXcgUGh5dG9sb2dpc3Q8L2Z1bGxfdGl0bGU+DQogICAgICAgICAgPGFiYnJldl90aXRsZT5OZXcgUGh5dG9sPC9hYmJyZXZfdGl0bGU+DQogICAgICAgICAgPGlzc24+MDAyODY0Nlg8L2lzc24+DQogICAgICAgIDwvam91cm5hbF9tZXRhZGF0YT4NCiAgICAgICAgPGpvdXJuYWxfYXJ0aWNsZSBwdWJsaWNhdGlvbl90eXBlPSJmdWxsX3RleHQiPg0KICAgICAgICAgIDx0aXRsZXM+DQogICAgICAgICAgICA8dGl0bGU+TGlmZSBhbmQgZGVhdGggb2YgcHJvdGVpbnMgYWZ0ZXIgcHJvdGVhc2UgY2xlYXZhZ2U6IHByb3RlaW4gZGVncmFkYXRpb24gYnkgdGhlIE4tZW5kIHJ1bGUgcGF0aHdheTwvdGl0bGU+DQogICAgICAgICAgPC90aXRsZXM+DQogICAgICAgICAgPGNvbnRyaWJ1dG9ycz4NCiAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJmaXJzdCI+DQogICAgICAgICAgICAgIDxnaXZlbl9uYW1lPk5pY288L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgIDxzdXJuYW1lPkRpc3NtZXllcjwvc3VybmFtZT4NCiAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPkluZGVwZW5kZW50IEp1bmlvciBSZXNlYXJjaCBHcm91cCBvbiBQcm90ZWluIFJlY29nbml0aW9uIGFuZCBEZWdyYWRhdGlvbjsgTGVpYm5peiBJbnN0aXR1dGUgb2YgUGxhbnQgQmlvY2hlbWlzdHJ5IChJUEIpOyBXZWluYmVyZyAzIEhhbGxlIChTYWFsZSkgRC0wNjEyMCBHZXJtYW55PC9hZmZpbGlhdGlvbj4NCiAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPlNjaWVuY2VDYW1wdXMgSGFsbGUgLSBQbGFudC1iYXNlZCBCaW9lY29ub215OyBCZXR0eS1IZWltYW5uLVN0cmFzc2UgMyBIYWxsZSAoU2FhbGUpIEQtMDYxMjAgR2VybWFueTwvYWZmaWxpYXRpb24+DQogICAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMi00MTU2LTM3NjE8L09SQ0lEPg0KICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgPGdpdmVuX25hbWU+U3VzYW5hPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICA8c3VybmFtZT5SaXZhczwvc3VybmFtZT4NCiAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPkxJUE07IFVuaXZlcnNpdMOpIGRlIFRvdWxvdXNlOyBJTlJBOyBDTlJTOyBDYXN0YW5ldC1Ub2xvc2FuIDMxIDMyNiBGcmFuY2U8L2FmZmlsaWF0aW9uPg0KICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgIDxwZXJzb25fbmFtZSBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiIHNlcXVlbmNlPSJhZGRpdGlvbmFsIj4NCiAgICAgICAgICAgICAgPGdpdmVuX25hbWU+RW1tYW51ZWxsZTwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgPHN1cm5hbWU+R3JhY2lldDwvc3VybmFtZT4NCiAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPkRlcGFydG1lbnQgb2YgQmlvbG9neTsgTWF5bm9vdGggVW5pdmVyc2l0eTsgTWF5bm9vdGggQ28uIEtpbGRhcmUgSXJlbGFuZDwvYWZmaWxpYXRpb24+DQogICAgICAgICAgICAgIDxPUkNJRD5odHRwOi8vb3JjaWQub3JnLzAwMDAtMDAwMy0zNTQ4LTgyMTM8L09SQ0lEPg0KICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICA8L2NvbnRyaWJ1dG9ycz4NCiAgICAgICAgICA8cHVibGljYXRpb25fZGF0ZSBtZWRpYV90eXBlPSJvbmxpbmUiPg0KICAgICAgICAgICAgPG1vbnRoPjA2PC9tb250aD4NCiAgICAgICAgICAgIDxkYXk+MDU8L2RheT4NCiAgICAgICAgICAgIDx5ZWFyPjIwMTc8L3llYXI+DQogICAgICAgICAgPC9wdWJsaWNhdGlvbl9kYXRlPg0KICAgICAgICAgIDxjcm9zc21hcms+DQogICAgICAgICAgICA8Y3Jvc3NtYXJrX3BvbGljeT4xMC4xMDAyL2Nyb3NzbWFya19wb2xpY3k8L2Nyb3NzbWFya19wb2xpY3k+DQogICAgICAgICAgICA8Y3Jvc3NtYXJrX2RvbWFpbnM+DQogICAgICAgICAgICAgIDxjcm9zc21hcmtfZG9tYWluPg0KICAgICAgICAgICAgICAgIDxkb21haW4+d2lsZXkuY29tPC9kb21haW4+DQogICAgICAgICAgICAgIDwvY3Jvc3NtYXJrX2RvbWFpbj4NCiAgICAgICAgICAgIDwvY3Jvc3NtYXJrX2RvbWFpbnM+DQogICAgICAgICAgICA8Y3Jvc3NtYXJrX2RvbWFpbl9leGNsdXNpdmU+dHJ1ZTwvY3Jvc3NtYXJrX2RvbWFpbl9leGNsdXNpdmU+DQogICAgICAgICAgICA8Y3VzdG9tX21ldGFkYXRhPg0KICAgICAgICAgICAgICA8cHJvZ3JhbSBuYW1lPSJmdW5kcmVmIj4NCiAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIG5hbWU9ImZ1bmRncm91cCI+DQogICAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIG5hbWU9ImZ1bmRlcl9uYW1lIj4NCiAgICAgICAgICAgICAgICAgICAgQWdlbmNlIE5hdGlvbmFsZSBkZSBsYSBSZWNoZXJjaGUNCiAgICAgICAgICAgICAgICAgICAgPGFzc2VydGlvbiBuYW1lPSJmdW5kZXJfaWRlbnRpZmllciI+aHR0cDovL2R4LmRvaS5vcmcvMTAuMTMwMzkvNTAxMTAwMDAxNjY1PC9hc3NlcnRpb24+DQogICAgICAgICAgICAgICAgICA8L2Fzc2VydGlvbj4NCiAgICAgICAgICAgICAgICAgIDxhc3NlcnRpb24gbmFtZT0iYXdhcmRfbnVtYmVyIj5BTlItMTAtTEFCWC00MTwvYXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgPGFzc2VydGlvbiBuYW1lPSJhd2FyZF9udW1iZXIiPkFOUi0xMS1JREVYLTAwMDItMDI8L2Fzc2VydGlvbj4NCiAgICAgICAgICAgICAgICA8L2Fzc2VydGlvbj4NCiAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIG5hbWU9ImZ1bmRncm91cCI+DQogICAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIG5hbWU9ImZ1bmRlcl9uYW1lIj4NCiAgICAgICAgICAgICAgICAgICAgRGVwYXJ0bWVudCBvZiBBZ3JpY3VsdHVyZSwgRm9vZCBhbmQgdGhlIE1hcmluZQ0KICAgICAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIG5hbWU9ImZ1bmRlcl9pZGVudGlmaWVyIj5odHRwOi8vZHguZG9pLm9yZy8xMC4xMzAzOS81MDExMDAwMDE1ODQ8L2Fzc2VydGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvYXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgPGFzc2VydGlvbiBuYW1lPSJhd2FyZF9udW1iZXIiPjE0L1MvODE5PC9hc3NlcnRpb24+DQogICAgICAgICAgICAgICAgPC9hc3NlcnRpb24+DQogICAgICAgICAgICAgICAgPGFzc2VydGlvbiBuYW1lPSJmdW5kZ3JvdXAiPg0KICAgICAgICAgICAgICAgICAgPGFzc2VydGlvbiBuYW1lPSJmdW5kZXJfbmFtZSI+DQogICAgICAgICAgICAgICAgICAgIFNjaWVuY2UgRm91bmRhdGlvbiBJcmVsYW5kDQogICAgICAgICAgICAgICAgICAgIDxhc3NlcnRpb24gbmFtZT0iZnVuZGVyX2lkZW50aWZpZXIiPmh0dHA6Ly9keC5kb2kub3JnLzEwLjEzMDM5LzUwMTEwMDAwMTYwMjwvYXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9hc3NlcnRpb24+DQogICAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIG5hbWU9ImF3YXJkX251bWJlciI+MTMvSUEvMTg3MDwvYXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgIDwvYXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgIDxhc3NlcnRpb24gbmFtZT0iZnVuZGdyb3VwIj4NCiAgICAgICAgICAgICAgICAgIDxhc3NlcnRpb24gbmFtZT0iZnVuZGVyX25hbWUiPlZpcnR1YWwgSXJpc2ggQ2VudHJlIGZvciBDcm9wIEltcHJvdmVtZW50PC9hc3NlcnRpb24+DQogICAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIG5hbWU9ImF3YXJkX251bWJlciI+MTQvUy84MTk8L2Fzc2VydGlvbj4NCiAgICAgICAgICAgICAgICA8L2Fzc2VydGlvbj4NCiAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIG5hbWU9ImZ1bmRncm91cCI+DQogICAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIG5hbWU9ImZ1bmRlcl9uYW1lIj4NCiAgICAgICAgICAgICAgICAgICAgRXVyb3BlYW4gUmVnaW9uYWwgRGV2ZWxvcG1lbnQgRnVuZA0KICAgICAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIG5hbWU9ImZ1bmRlcl9pZGVudGlmaWVyIj5odHRwOi8vZHguZG9pLm9yZy8xMC4xMzAzOS81MDExMDAwMDg1MzA8L2Fzc2VydGlvbj4NCiAgICAgICAgICAgICAgICAgIDwvYXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgPGFzc2VydGlvbiBuYW1lPSJhd2FyZF9udW1iZXIiPkxTUC1UUDItMTwvYXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgIDwvYXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgIDxhc3NlcnRpb24gbmFtZT0iZnVuZGdyb3VwIj4NCiAgICAgICAgICAgICAgICAgIDxhc3NlcnRpb24gbmFtZT0iZnVuZGVyX25hbWUiPg0KICAgICAgICAgICAgICAgICAgICBEZXV0c2NoZSBGb3JzY2h1bmdzZ2VtZWluc2NoYWZ0DQogICAgICAgICAgICAgICAgICAgIDxhc3NlcnRpb24gbmFtZT0iZnVuZGVyX2lkZW50aWZpZXIiPmh0dHA6Ly9keC5kb2kub3JnLzEwLjEzMDM5LzUwMTEwMDAwMTY1OTwvYXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgPC9hc3NlcnRpb24+DQogICAgICAgICAgICAgICAgICA8YXNzZXJ0aW9uIG5hbWU9ImF3YXJkX251bWJlciI+REkgMTc5NC8zLTE8L2Fzc2VydGlvbj4NCiAgICAgICAgICAgICAgICA8L2Fzc2VydGlvbj4NCiAgICAgICAgICAgICAgPC9wcm9ncmFtPg0KICAgICAgICAgICAgICA8cHJvZ3JhbSBuYW1lPSJBY2Nlc3NJbmRpY2F0b3JzIj4NCiAgICAgICAgICAgICAgICA8bGljZW5zZV9yZWYgYXBwbGllc190bz0idGRtIj5odHRwOi8vZG9pLndpbGV5LmNvbS8xMC4xMDAyL3RkbV9saWNlbnNlXzE8L2xpY2Vuc2VfcmVmPg0KICAgICAgICAgICAgICAgIDxsaWNlbnNlX3JlZiBhcHBsaWVzX3RvPSJ2b3IiIHN0YXJ0X2RhdGU9IjIwMTctMDYtMDUiPmh0dHA6Ly9vbmxpbmVsaWJyYXJ5LndpbGV5LmNvbS90ZXJtc0FuZENvbmRpdGlvbnM8L2xpY2Vuc2VfcmVmPg0KICAgICAgICAgICAgICA8L3Byb2dyYW0+DQogICAgICAgICAgICA8L2N1c3RvbV9tZXRhZGF0YT4NCiAgICAgICAgICA8L2Nyb3NzbWFyaz4NCiAgICAgICAgICA8YXJjaGl2ZV9sb2NhdGlvbnM+DQogICAgICAgICAgICA8YXJjaGl2ZSBuYW1lPSJQb3J0aWNvIiAvPg0KICAgICAgICAgIDwvYXJjaGl2ZV9sb2NhdGlvbnM+DQogICAgICAgICAgPGRvaV9kYXRhPg0KICAgICAgICAgICAgPGRvaT4xMC4xMTExL25waC4xNDYxOTwvZG9pPg0KICAgICAgICAgICAgPHJlc291cmNlPmh0dHA6Ly9kb2kud2lsZXkuY29tLzEwLjExMTEvbnBoLjE0NjE5PC9yZXNvdXJjZT4NCiAgICAgICAgICAgIDxjb2xsZWN0aW9uIHByb3BlcnR5PSJjcmF3bGVyLWJhc2VkIj4NCiAgICAgICAgICAgICAgPGl0ZW0gY3Jhd2xlcj0iaVBhcmFkaWdtcyI+DQogICAgICAgICAgICAgICAgPHJlc291cmNlPmh0dHA6Ly9vbmxpbmVsaWJyYXJ5LndpbGV5LmNvbS93b2wxL2RvaS8xMC4xMTExL25waC4xNDYxOS9mdWxscGRmPC9yZXNvdXJjZT4NCiAgICAgICAgICAgICAgPC9pdGVtPg0KICAgICAgICAgICAgPC9jb2xsZWN0aW9uPg0KICAgICAgICAgICAgPGNvbGxlY3Rpb24gcHJvcGVydHk9InRleHQtbWluaW5nIj4NCiAgICAgICAgICAgICAgPGl0ZW0+DQogICAgICAgICAgICAgICAgPHJlc291cmNlIGNvbnRlbnRfdmVyc2lvbj0idm9yIiBtaW1lX3R5cGU9ImFwcGxpY2F0aW9uL3BkZiI+aHR0cHM6Ly9hcGkud2lsZXkuY29tL29ubGluZWxpYnJhcnkvdGRtL3YxL2FydGljbGVzLzEwLjExMTElMkZucGguMTQ2MTk8L3Jlc291cmNlPg0KICAgICAgICAgICAgICA8L2l0ZW0+DQogICAgICAgICAgICA8L2NvbGxlY3Rpb24+DQogICAgICAgICAgPC9kb2lfZGF0YT4NCiAgICAgICAgICA8Y2l0YXRpb25fbGlzdD4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMDF8bnBoMTQ2MTktY2l0LTAwMDEiPg0KICAgICAgICAgICAgICA8YXV0aG9yPkJpZW52ZW51dDwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxNTwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDAyL3BtaWMuMjAxNTAwMDI3PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPlByb3Rlb21lLXdpZGUgYW5hbHlzaXMgb2YgdGhlIGFtaW5vIHRlcm1pbmFsIHN0YXR1cyBvZiBFc2NoZXJpY2hpYSBjb2xpIHByb3RlaW5zIGF0IHRoZSBzdGVhZHktc3RhdGUgYW5kIHVwb24gZGVmb3JteWxhdGlvbiBpbmhpYml0aW9uPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5Qcm90ZW9taWNzPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjE1PC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjI1MDM8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAwMnxucGgxNDYxOS1jaXQtMDAwMiI+DQogICAgICAgICAgICAgIDxhdXRob3I+QnJvd2VyPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDEzPC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMTYvai5tb2xjZWwuMjAxMy4wMi4wMDk8L2RvaT4NCiAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+TmV1cm9kZWdlbmVyYXRpb24tYXNzb2NpYXRlZCBwcm90ZWluIGZyYWdtZW50cyBhcyBzaG9ydC1saXZlZCBzdWJzdHJhdGVzIG9mIHRoZSBOLWVuZCBydWxlIHBhdGh3YXk8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk1vbGVjdWxhciBDZWxsPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjUwPC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjE2MTwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDAzfG5waDE0NjE5LWNpdC0wMDAzIj4NCiAgICAgICAgICAgICAgPGF1dGhvcj5DYWx2bzwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxNzwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDc0L21jcC5NMTE2LjA2MzgxODwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5Db21wYXJhdGl2ZSBhbmFseXNpcyBvZiBtaXRvY2hvbmRyaWFsIE4tdGVybWluaSBmcm9tIG1vdXNlLCBodW1hbiwgYW5kIHllYXN0PC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5Nb2xlY3VsYXIgJmFtcDsgQ2VsbHVsYXIgUHJvdGVvbWljczwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgPHZvbHVtZT4xNjwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT41MTI8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAwNHxucGgxNDYxOS1jaXQtMDAwNCI+DQogICAgICAgICAgICAgIDxhdXRob3I+Q2hlbjwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxNzwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTI2L3NjaWVuY2UuYWFsMzY1NTwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5BbiBOLWVuZCBydWxlIHBhdGh3YXkgdGhhdCByZWNvZ25pemVzIHByb2xpbmUgYW5kIGRlc3Ryb3lzIGdsdWNvbmVvZ2VuaWMgZW56eW1lczwvYXJ0aWNsZV90aXRsZT4NCiAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+U2NpZW5jZTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgPHZvbHVtZT4zNTU8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+ZWFhSTM2NTU8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAwNXxucGgxNDYxOS1jaXQtMDAwNSI+DQogICAgICAgICAgICAgIDxhdXRob3I+Q2hpc2hvbG08L2F1dGhvcj4NCiAgICAgICAgICAgICAgPGNZZWFyPjIwMDU8L2NZZWFyPg0KICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTA3My9wbmFzLjA0MDk0NjgxMDI8L2RvaT4NCiAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+TW9sZWN1bGFyIGNoYXJhY3Rlcml6YXRpb24gb2YgcHJvdGVvbHl0aWMgY2xlYXZhZ2Ugc2l0ZXMgb2YgdGhlIFBzZXVkb21vbmFzIHN5cmluZ2FlIGVmZmVjdG9yIEF2clJwdDI8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPlByb2NlZWRpbmdzIG9mIHRoZSBOYXRpb25hbCBBY2FkZW15IG9mIFNjaWVuY2VzLCBVU0E8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+MTAyPC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjIwODc8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAwNnxucGgxNDYxOS1jaXQtMDAwNiI+DQogICAgICAgICAgICAgIDxhdXRob3I+RGl0emVsPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDAzPC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvbmNiOTg0PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPkRlZ3JhZGF0aW9uIG9mIERJQVAxIGJ5IHRoZSBOLWVuZCBydWxlIHBhdGh3YXkgaXMgZXNzZW50aWFsIGZvciByZWd1bGF0aW5nIGFwb3B0b3NpczwvYXJ0aWNsZV90aXRsZT4NCiAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+TmF0dXJlIENlbGwgQmlvbG9neTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgPHZvbHVtZT41PC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjQ2NzwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDA3fG5waDE0NjE5LWNpdC0wMDA3Ij4NCiAgICAgICAgICAgICAgPGF1dGhvcj5Eb25nPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDE3PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExMDEvZ2FkLjI5MjIzNS4xMTY8L2RvaT4NCiAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+VWJpcXVpdHlsYXRpb24gYWN0aXZhdGVzIGEgcGVwdGlkYXNlIHRoYXQgcHJvbW90ZXMgY2xlYXZhZ2UgYW5kIGRlc3RhYmlsaXphdGlvbiBvZiBpdHMgYWN0aXZhdGluZyBFMyBsaWdhc2VzIGFuZCBkaXZlcnNlIGdyb3d0aCByZWd1bGF0b3J5IHByb3RlaW5zIHRvIGxpbWl0IGNlbGwgcHJvbGlmZXJhdGlvbiBpbiBBcmFiaWRvcHNpczwvYXJ0aWNsZV90aXRsZT4NCiAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+R2VuZXMgJmFtcDsgRGV2ZWxvcG1lbnQ8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+MzE8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MTk3PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMDh8bnBoMTQ2MTktY2l0LTAwMDgiPg0KICAgICAgICAgICAgICA8YXV0aG9yPkVzY2hlbi1MaXBwb2xkPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDE2PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExMDQvcHAuMTYuMDAzMzY8L2RvaT4NCiAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+QmFjdGVyaWFsIEF2clJwdDItbGlrZSBjeXN0ZWluZSBwcm90ZWFzZXMgYmxvY2sgYWN0aXZhdGlvbiBvZiB0aGUgQXJhYmlkb3BzaXMgbWl0b2dlbi1hY3RpdmF0ZWQgcHJvdGVpbiBraW5hc2VzLCBNUEs0IGFuZCBNUEsxMTwvYXJ0aWNsZV90aXRsZT4NCiAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+UGxhbnQgUGh5c2lvbG9neTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgPHZvbHVtZT4xNzE8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MjIyMzwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDA5fG5waDE0NjE5LWNpdC0wMDA5Ij4NCiAgICAgICAgICAgICAgPGF1dGhvcj5GYWRlbjwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxNjwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDM4L25jb21tczEyMjAyPC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPlBoZW5vdHlwZXMgb24gZGVtYW5kIHZpYSBzd2l0Y2hhYmxlIHRhcmdldCBwcm90ZWluIGRlZ3JhZGF0aW9uIGluIG11bHRpY2VsbHVsYXIgb3JnYW5pc21zPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5OYXR1cmUgQ29tbXVuaWNhdGlvbnM8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+Nzwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xMjIwMjwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDEwfG5waDE0NjE5LWNpdC0wMDEwIj4NCiAgICAgICAgICAgICAgPGF1dGhvcj5HYXJ6b248L2F1dGhvcj4NCiAgICAgICAgICAgICAgPGNZZWFyPjIwMDc8L2NZZWFyPg0KICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAxNi9qLmZlYnNsZXQuMjAwNy4wNi4wMDU8L2RvaT4NCiAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+UFJUNi9BdDVnMDIzMTAgZW5jb2RlcyBhbiBBcmFiaWRvcHNpcyB1YmlxdWl0aW4gbGlnYXNlIG9mIHRoZSBOLWVuZCBydWxlIHBhdGh3YXkgd2l0aCBhcmdpbmluZSBzcGVjaWZpY2l0eSBhbmQgaXMgbm90IHRoZSBDRVIzIGxvY3VzPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5GRUJTIExldHRlcnM8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+NTgxPC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjMxODk8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAxMXxucGgxNDYxOS1jaXQtMDAxMSI+DQogICAgICAgICAgICAgIDxhdXRob3I+R2V2YWVydDwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAwMzwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDM4L25idDgxMDwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5FeHBsb3JpbmcgcHJvdGVvbWVzIGFuZCBhbmFseXppbmcgcHJvdGVpbiBwcm9jZXNzaW5nIGJ5IG1hc3Mgc3BlY3Ryb21ldHJpYyBpZGVudGlmaWNhdGlvbiBvZiBzb3J0ZWQgTi10ZXJtaW5hbCBwZXB0aWRlczwvYXJ0aWNsZV90aXRsZT4NCiAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+TmF0dXJlIEJpb3RlY2hub2xvZ3k8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+MjE8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+NTY2PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMTJ8bnBoMTQ2MTktY2l0LTAwMTIiPg0KICAgICAgICAgICAgICA8YXV0aG9yPkdpYmJzPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDE0PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMTYvai50Y2IuMjAxNC4wNS4wMDE8L2RvaT4NCiAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+VGhlIGV1a2FyeW90aWMgTi1lbmQgcnVsZSBwYXRod2F5OiBjb25zZXJ2ZWQgbWVjaGFuaXNtcyBhbmQgZGl2ZXJzZSBmdW5jdGlvbnM8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPlRyZW5kcyBpbiBDZWxsIEJpb2xvZ3k8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+MjQ8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+NjAzPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMTN8bnBoMTQ2MTktY2l0LTAwMTMiPg0KICAgICAgICAgICAgICA8YXV0aG9yPkdpYmJzPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDE2PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExMTEvbnBoLjE0MTA1PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPkZyb20gc3RhcnQgdG8gZmluaXNoOiBhbWluby10ZXJtaW5hbCBwcm90ZWluIG1vZGlmaWNhdGlvbnMgYXMgZGVncmFkYXRpb24gc2lnbmFscyBpbiBwbGFudHM8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk5ldyBQaHl0b2xvZ2lzdDwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgPHZvbHVtZT4yMTE8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MTE4ODwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDE0fG5waDE0NjE5LWNpdC0wMDE0Ij4NCiAgICAgICAgICAgICAgPGF1dGhvcj5HaWJiczwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxMTwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDM4L25hdHVyZTEwNTM0PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPkhvbWVvc3RhdGljIHJlc3BvbnNlIHRvIGh5cG94aWEgaXMgcmVndWxhdGVkIGJ5IHRoZSBOLWVuZCBydWxlIHBhdGh3YXkgaW4gcGxhbnRzPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5OYXR1cmU8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+NDc5PC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjQxNTwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDE1fG5waDE0NjE5LWNpdC0wMDE1Ij4NCiAgICAgICAgICAgICAgPGF1dGhvcj5HcmF2b3Q8L2F1dGhvcj4NCiAgICAgICAgICAgICAgPGNZZWFyPjIwMTY8L2NZZWFyPg0KICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTE4Ni9zMTI4NzAtMDE2LTA5NDEteTwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5IeXBveGlhIHJlc3BvbnNlIGluIEFyYWJpZG9wc2lzIHJvb3RzIGluZmVjdGVkIGJ5IFBsYXNtb2Rpb3Bob3JhIGJyYXNzaWNhZSBzdXBwb3J0cyB0aGUgZGV2ZWxvcG1lbnQgb2YgY2x1YnJvb3Q8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkJNQyBQbGFudCBCaW9sb2d5PC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjE2PC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjI1MTwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDE2fG5waDE0NjE5LWNpdC0wMDE2Ij4NCiAgICAgICAgICAgICAgPGF1dGhvcj5IYW1tZXJsZTwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MTk5ODwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDc0L2piYy4yNzMuMzkuMjUwMDA8L2RvaT4NCiAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+UHJvdGVpbnMgb2YgbmV3bHkgaXNvbGF0ZWQgbXV0YW50cyBhbmQgdGhlIGFtaW5vLXRlcm1pbmFsIHByb2xpbmUgYXJlIGVzc2VudGlhbCBmb3IgdWJpcXVpdGluLXByb3RlYXNvbWUtY2F0YWx5emVkIGNhdGFib2xpdGUgZGVncmFkYXRpb24gb2YgZnJ1Y3Rvc2UtMSw2LWJpc3Bob3NwaGF0YXNlIG9mIFNhY2NoYXJvbXljZXMgY2VyZXZpc2lhZTwvYXJ0aWNsZV90aXRsZT4NCiAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+Sm91cm5hbCBvZiBCaW9sb2dpY2FsIENoZW1pc3RyeTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgPHZvbHVtZT4yNzM8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MjUwMDA8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAxN3xucGgxNDYxOS1jaXQtMDAxNyI+DQogICAgICAgICAgICAgIDxhdXRob3I+SG9lcm5zdGVpbjwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxNjwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDc0L21jcC5NMTE1LjA1NzE5MDwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5JZGVudGlmaWNhdGlvbiBvZiB0YXJnZXRzIGFuZCBpbnRlcmFjdGlvbiBwYXJ0bmVycyBvZiBhcmdpbnlsLXRSTkEgcHJvdGVpbiB0cmFuc2ZlcmFzZSBpbiB0aGUgbW9zcyBQaHlzY29taXRyZWxsYSBwYXRlbnM8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk1vbGVjdWxhciAmYW1wOyBDZWxsdWxhciBQcm90ZW9taWNzPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjE1PC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjE4MDg8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAxOHxucGgxNDYxOS1jaXQtMDAxOCI+DQogICAgICAgICAgICAgIDxhdXRob3I+SHVlc2dlbjwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxMjwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTExL2ouMTM5OS0zMDU0LjIwMTEuMDE1MzYueDwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5OLSBhbmQgQy10ZXJtaW5hbCBkZWdyYWRvbWljczogbmV3IGFwcHJvYWNoZXMgdG8gcmV2ZWFsIGJpb2xvZ2ljYWwgcm9sZXMgZm9yIHBsYW50IHByb3RlYXNlcyBmcm9tIHN1YnN0cmF0ZSBpZGVudGlmaWNhdGlvbjwvYXJ0aWNsZV90aXRsZT4NCiAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+UGh5c2lvbG9naWEgUGxhbnRhcnVtPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjE0NTwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT41PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMTl8bnBoMTQ2MTktY2l0LTAwMTkiPg0KICAgICAgICAgICAgICA8YXV0aG9yPkh3YW5nPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDEwPC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExMjYvc2NpZW5jZS4xMTgzMTQ3PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPk4tdGVybWluYWwgYWNldHlsYXRpb24gb2YgY2VsbHVsYXIgcHJvdGVpbnMgY3JlYXRlcyBzcGVjaWZpYyBkZWdyYWRhdGlvbiBzaWduYWxzPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5TY2llbmNlPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjMyNzwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT45NzM8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAyMHxucGgxNDYxOS1jaXQtMDAyMCI+DQogICAgICAgICAgICAgIDxhdXRob3I+S2ltPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDE0PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMTYvai5jZWxsLjIwMTMuMTEuMDMxPC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPlRoZSBOLXRlcm1pbmFsIG1ldGhpb25pbmUgb2YgY2VsbHVsYXIgcHJvdGVpbnMgYXMgYSBkZWdyYWRhdGlvbiBzaWduYWw8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkNlbGw8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+MTU2PC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjE1ODwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDIxfG5waDE0NjE5LWNpdC0wMDIxIj4NCiAgICAgICAgICAgICAgPGF1dGhvcj5LbGVpZmVsZDwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxMDwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDM4L25idC4xNjExPC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPklzb3RvcGljIGxhYmVsaW5nIG9mIHRlcm1pbmFsIGFtaW5lcyBpbiBjb21wbGV4IHNhbXBsZXMgaWRlbnRpZmllcyBwcm90ZWluIE4tdGVybWluaSBhbmQgcHJvdGVhc2UgY2xlYXZhZ2UgcHJvZHVjdHM8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk5hdHVyZSBCaW90ZWNobm9sb2d5PC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjI4PC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjI4MTwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDIyfG5waDE0NjE5LWNpdC0wMDIyIj4NCiAgICAgICAgICAgICAgPGF1dGhvcj5MZWU8L2F1dGhvcj4NCiAgICAgICAgICAgICAgPGNZZWFyPjIwMTY8L2NZZWFyPg0KICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTQzNDgvbW9sY2VsbHMuMjAxNi4yMzI5PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPk4tdGVybWluYWwgYWNldHlsYXRpb24tdGFyZ2V0ZWQgTi1lbmQgcnVsZSBwcm90ZW9seXRpYyBzeXN0ZW06IHRoZSBBYy9OLWVuZCBydWxlIHBhdGh3YXk8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk1vbGVjdWxlcyBhbmQgQ2VsbHM8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+Mzk8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MTY5PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMjN8bnBoMTQ2MTktY2l0LTAwMjMiPg0KICAgICAgICAgICAgICA8YXV0aG9yPkxpPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDE3PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExMDUvdHBjLjE2LjAwNzY4PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPlByb3RlaW4gZGVncmFkYXRpb24gcmF0ZSBpbiBBcmFiaWRvcHNpcyB0aGFsaWFuYSBsZWFmIGdyb3d0aCBhbmQgZGV2ZWxvcG1lbnQ8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPlBsYW50IENlbGw8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+Mjk8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MjA3PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMjR8bnBoMTQ2MTktY2l0LTAwMjQiPg0KICAgICAgICAgICAgICA8YXV0aG9yPk1ham92c2t5PC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDE0PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMjEvcHI1MDAxNjRqPC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPlRhcmdldGVkIHByb3Rlb21pY3MgYW5hbHlzaXMgb2YgcHJvdGVpbiBkZWdyYWRhdGlvbiBpbiBwbGFudCBzaWduYWxpbmcgb24gYW4gTFRRLU9yYml0cmFwIG1hc3Mgc3BlY3Ryb21ldGVyPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5Kb3VybmFsIG9mIFByb3Rlb21lIFJlc2VhcmNoPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjEzPC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjQyNDY8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAyNXxucGgxNDYxOS1jaXQtMDAyNSI+DQogICAgICAgICAgICAgIDxhdXRob3I+TWFyY2hpPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDE2PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvc3JlcDI2MDIwPC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPlRoZSBOLWVuZCBydWxlIHBhdGh3YXkgcmVndWxhdGVzIHBhdGhvZ2VuIHJlc3BvbnNlcyBpbiBwbGFudHM8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPlNjaWVudGlmaWMgUmVwb3J0czwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgPHZvbHVtZT42PC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjI2MDIwPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMjZ8bnBoMTQ2MTktY2l0LTAwMjYiPg0KICAgICAgICAgICAgICA8YXV0aG9yPk1lbmRpb25kbzwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxNjwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTExL3BiaS4xMjMzNDwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5FbmhhbmNlZCB3YXRlcmxvZ2dpbmcgdG9sZXJhbmNlIGluIGJhcmxleSBieSBtYW5pcHVsYXRpb24gb2YgZXhwcmVzc2lvbiBvZiB0aGUgTi1lbmQgcnVsZSBwYXRod2F5IEUzIGxpZ2FzZSBQUk9URU9MWVNJUzY8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPlBsYW50IEJpb3RlY2hub2xvZ3kgSm91cm5hbDwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgPHZvbHVtZT4xNDwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT40MDwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDI3fG5waDE0NjE5LWNpdC0wMDI3Ij4NCiAgICAgICAgICAgICAgPGF1dGhvcj5Nb3Q8L2F1dGhvcj4NCiAgICAgICAgICAgICAgPGNZZWFyPjIwMTc8L2NZZWFyPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5SZWFsLXRpbWUgZGV0ZWN0aW9uIG9mIE4tZW5kIHJ1bGUtbWVkaWF0ZWQgdWJpcXVpdGluYXRpb24gdmlhIGZsdW9yZXNjZW50bHkgbGFiZWxlZCBzdWJzdHJhdGUgcHJvYmVzPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5OZXcgUGh5dG9sb2dpc3Q8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDxkb2k+MTAuMTExMS9ucGguMTQ0OTc8L2RvaT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDI4fG5waDE0NjE5LWNpdC0wMDI4Ij4NCiAgICAgICAgICAgICAgPGF1dGhvcj5OaXNoaW11cmE8L2F1dGhvcj4NCiAgICAgICAgICAgICAgPGNZZWFyPjIwMTM8L2NZZWFyPg0KICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTEwNS90cGMuMTEzLjExMjU1NzwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5DbHBTMSBpcyBhIGNvbnNlcnZlZCBzdWJzdHJhdGUgc2VsZWN0b3IgZm9yIHRoZSBjaGxvcm9wbGFzdCBDbHAgcHJvdGVhc2Ugc3lzdGVtIGluIEFyYWJpZG9wc2lzPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5QbGFudCBDZWxsPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjI1PC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjIyNzY8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAyOXxucGgxNDYxOS1jaXQtMDAyOSI+DQogICAgICAgICAgICAgIDxhdXRob3I+TmlzaGltdXJhPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDE1PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMTYvai5iYmFiaW8uMjAxNC4xMS4wMTI8L2RvaT4NCiAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+T3JnYW5pemF0aW9uLCBmdW5jdGlvbiBhbmQgc3Vic3RyYXRlcyBvZiB0aGUgZXNzZW50aWFsIENscCBwcm90ZWFzZSBzeXN0ZW0gaW4gcGxhc3RpZHM8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkJpb2NoaW1pY2EgZXQgQmlvcGh5c2ljYSBBY3RhPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjE4NDc8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+OTE1PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMzB8bnBoMTQ2MTktY2l0LTAwMzAiPg0KICAgICAgICAgICAgICA8YXV0aG9yPlBpYXRrb3Y8L2F1dGhvcj4NCiAgICAgICAgICAgICAgPGNZZWFyPjIwMTJhPC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwNzMvcG5hcy4xMjA3Nzg2MTA5PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPlRoZSBOLWVuZCBydWxlIHBhdGh3YXkgY291bnRlcmFjdHMgY2VsbCBkZWF0aCBieSBkZXN0cm95aW5nIHByb2Fwb3B0b3RpYyBwcm90ZWluIGZyYWdtZW50czwvYXJ0aWNsZV90aXRsZT4NCiAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+UHJvY2VlZGluZ3Mgb2YgdGhlIE5hdGlvbmFsIEFjYWRlbXkgb2YgU2NpZW5jZXMsIFVTQTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgPHZvbHVtZT4xMDk8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+RTE4Mzk8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAzMXxucGgxNDYxOS1jaXQtMDAzMSI+DQogICAgICAgICAgICAgIDxhdXRob3I+UGlhdGtvdjwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxMmI8L2NZZWFyPg0KICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTAxNi9qLm1vbGNlbC4yMDEyLjEwLjAxMjwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5UaGUgYXV0by1nZW5lcmF0ZWQgZnJhZ21lbnQgb2YgdGhlIFVzcDEgZGV1YmlxdWl0eWxhc2UgaXMgYSBwaHlzaW9sb2dpY2FsIHN1YnN0cmF0ZSBvZiB0aGUgTi1lbmQgcnVsZSBwYXRod2F5PC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5Nb2xlY3VsYXIgQ2VsbDwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgPHZvbHVtZT40ODwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT45MjY8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAzMnxucGgxNDYxOS1jaXQtMDAzMiI+DQogICAgICAgICAgICAgIDxhdXRob3I+UG90dXNjaGFrPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4xOTk4PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwNzMvcG5hcy45NS4xNC43OTA0PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPlBSVDEgb2YgQXJhYmlkb3BzaXMgdGhhbGlhbmEgZW5jb2RlcyBhIGNvbXBvbmVudCBvZiB0aGUgcGxhbnQgTi1lbmQgcnVsZcKgcGF0aHdheTwvYXJ0aWNsZV90aXRsZT4NCiAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+UHJvY2VlZGluZ3Mgb2YgdGhlIE5hdGlvbmFsIEFjYWRlbXkgb2YgU2NpZW5jZXMsIFVTQTwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgPHZvbHVtZT45NTwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT43OTA0PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMzN8bnBoMTQ2MTktY2l0LTAwMzMiPg0KICAgICAgICAgICAgICA8YXV0aG9yPlJhbzwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAwMTwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDM4LzM1MDczNjI3PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPkRlZ3JhZGF0aW9uIG9mIGEgY29oZXNpbiBzdWJ1bml0IGJ5IHRoZSBOLWVuZCBydWxlIHBhdGh3YXkgaXMgZXNzZW50aWFsIGZvciBjaHJvbW9zb21lIHN0YWJpbGl0eTwvYXJ0aWNsZV90aXRsZT4NCiAgICAgICAgICAgICAgPGpvdXJuYWxfdGl0bGU+TmF0dXJlPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjQxMDwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT45NTU8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAzNHxucGgxNDYxOS1jaXQtMDAzNCI+DQogICAgICAgICAgICAgIDxhdXRob3I+UmliZXI8L2F1dGhvcj4NCiAgICAgICAgICAgICAgPGNZZWFyPjIwMTU8L2NZZWFyPg0KICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTEwNC9wcC4xMTQuMjUzMDg4PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPlRoZSBncmVlbmluZyBhZnRlciBleHRlbmRlZCBkYXJrbmVzczEgaXMgYW4gTi1lbmQgcnVsZSBwYXRod2F5IG11dGFudCB3aXRoIGhpZ2ggdG9sZXJhbmNlIHRvIHN1Ym1lcmdlbmNlIGFuZCBzdGFydmF0aW9uPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5QbGFudCBQaHlzaW9sb2d5PC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjE2Nzwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xNjE2PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMzV8bnBoMTQ2MTktY2l0LTAwMzUiPg0KICAgICAgICAgICAgICA8YXV0aG9yPlJvd2xhbmQ8L2F1dGhvcj4NCiAgICAgICAgICAgICAgPGNZZWFyPjIwMTU8L2NZZWFyPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5UaGUgQXJhYmlkb3BzaXMgY2hsb3JvcGxhc3Qgc3Ryb21hbCBOLXRlcm1pbm9tZTogY29tcGxleGl0aWVzIG9mIGFtaW5vLXRlcm1pbmFsIHByb3RlaW4gbWF0dXJhdGlvbiBhbmQgc3RhYmlsaXR5PC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5QbGFudCBQaHlzaW9sb2d5PC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjE2OTwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xODgxPC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMzZ8bnBoMTQ2MTktY2l0LTAwMzYiPg0KICAgICAgICAgICAgICA8YXV0aG9yPlNhbnR0PC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDA4PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwOTEvbWJjLkUwOC0wMy0wMzI4PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPlRoZSB5ZWFzdCBHSUQgY29tcGxleCwgYSBub3ZlbCB1YmlxdWl0aW4gbGlnYXNlIChFMykgaW52b2x2ZWQgaW4gdGhlIHJlZ3VsYXRpb24gb2YgY2FyYm9oeWRyYXRlIG1ldGFib2xpc208L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk1vbGVjdWxhciBCaW9sb2d5IG9mIHRoZSBDZWxsPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjE5PC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjMzMjM8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAzN3xucGgxNDYxOS1jaXQtMDAzNyI+DQogICAgICAgICAgICAgIDxhdXRob3I+U2NoaWxsaW5nPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDExPC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvbnByb3QuMjAxMC4xNzg8L2RvaT4NCiAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+Q2hhcmFjdGVyaXphdGlvbiBvZiB0aGUgcHJpbWUgYW5kIG5vbi1wcmltZSBhY3RpdmUgc2l0ZSBzcGVjaWZpY2l0aWVzIG9mIHByb3RlYXNlcyBieSBwcm90ZW9tZS1kZXJpdmVkIHBlcHRpZGUgbGlicmFyaWVzIGFuZCB0YW5kZW0gbWFzcyBzcGVjdHJvbWV0cnk8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk5hdHVyZSBQcm90b2NvbHM8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+Njwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xMTE8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDAzOHxucGgxNDYxOS1jaXQtMDAzOCI+DQogICAgICAgICAgICAgIDxhdXRob3I+VGFrZW1vdG88L2F1dGhvcj4NCiAgICAgICAgICAgICAgPGNZZWFyPjIwMDU8L2NZZWFyPg0KICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTA5NC9NUE1JLTE4LTEyNTg8L2RvaT4NCiAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+TWVtYnJhbmUgcmVsZWFzZSBhbmQgZGVzdGFiaWxpemF0aW9uIG9mIEFyYWJpZG9wc2lzIFJJTjQgZm9sbG93aW5nIGNsZWF2YWdlIGJ5IFBzZXVkb21vbmFzIHN5cmluZ2FlIEF2clJwdDI8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPk1vbGVjdWxhciBQbGFudC1NaWNyb2JlIEludGVyYWN0aW9uczwvam91cm5hbF90aXRsZT4NCiAgICAgICAgICAgICAgPHZvbHVtZT4xODwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xMjU4PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwMzl8bnBoMTQ2MTktY2l0LTAwMzkiPg0KICAgICAgICAgICAgICA8YXV0aG9yPlRhc2FraTwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxMjwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTQ2L2FubnVyZXYtYmlvY2hlbS0wNTE3MTAtMDkzMzA4PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPlRoZSBOLWVuZCBydWxlIHBhdGh3YXk8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkFubnVhbCBSZXZpZXcgb2YgQmlvY2hlbWlzdHJ5PC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjgxPC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjI2MTwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDQwfG5waDE0NjE5LWNpdC0wMDQwIj4NCiAgICAgICAgICAgICAgPGF1dGhvcj5Uc2lhdHNpYW5pPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDEzPC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjExMDUvdHBjLjExMy4xMTUyODc8L2RvaT4NCiAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+VGhlIEFyYWJpZG9wc2lzIG1ldGFjYXNwYXNlOSBkZWdyYWRvbWU8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPlBsYW50IENlbGw8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+MjU8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MjgzMTwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDQxfG5waDE0NjE5LWNpdC0wMDQxIj4NCiAgICAgICAgICAgICAgPGF1dGhvcj5WYXJzaGF2c2t5PC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDExPC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMDIvcHJvLjY2NjwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5UaGUgTi1lbmQgcnVsZSBwYXRod2F5IGFuZCByZWd1bGF0aW9uIGJ5IHByb3Rlb2x5c2lzPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5Qcm90ZWluIFNjaWVuY2U8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+MjA8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MTI5ODwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDQyfG5waDE0NjE5LWNpdC0wMDQyIj4NCiAgICAgICAgICAgICAgPGF1dGhvcj5WZW5uZTwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxNTwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDAyL3BtaWMuMjAxNTAwMDE0PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPkFuIGltcHJvdmVkIHdvcmtmbG93IGZvciBxdWFudGl0YXRpdmUgTi10ZXJtaW5hbCBjaGFyZ2UtYmFzZWQgZnJhY3Rpb25hbCBkaWFnb25hbCBjaHJvbWF0b2dyYXBoeSAoQ2hhRlJBRElDKSB0byBzdHVkeSBwcm90ZW9seXRpYyBldmVudHMgaW4gQXJhYmlkb3BzaXMgdGhhbGlhbmE8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPlByb3Rlb21pY3M8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+MTU8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MjQ1ODwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDQzfG5waDE0NjE5LWNpdC0wMDQzIj4NCiAgICAgICAgICAgICAgPGF1dGhvcj5WZW5uZTwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxMzwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDIxL3ByNDAwNDM1ZDwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5Ob3ZlbCBoaWdobHkgc2Vuc2l0aXZlLCBzcGVjaWZpYywgYW5kIHN0cmFpZ2h0Zm9yd2FyZCBzdHJhdGVneSBmb3IgY29tcHJlaGVuc2l2ZSBOLXRlcm1pbmFsIHByb3Rlb21pY3MgcmV2ZWFscyB1bmtub3duIHN1YnN0cmF0ZXMgb2YgdGhlIG1pdG9jaG9uZHJpYWwgcGVwdGlkYXNlIEljcDU1PC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5Kb3VybmFsIG9mIFByb3Rlb21lIFJlc2VhcmNoPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjEyPC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjM4MjM8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iMTAuMTExMS9ucGguMTQ2MTktQklCMDA0NHxucGgxNDYxOS1jaXQtMDA0NCI+DQogICAgICAgICAgICAgIDxhdXRob3I+Vm9ndGxlPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDA5PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMTYvai5jZWxsLjIwMDkuMDcuMDQ1PC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPkdsb2JhbCBhbmFseXNpcyBvZiB0aGUgbWl0b2Nob25kcmlhbCBOLXByb3Rlb21lIGlkZW50aWZpZXMgYSBwcm9jZXNzaW5nIHBlcHRpZGFzZSBjcml0aWNhbCBmb3IgcHJvdGVpbiBzdGFiaWxpdHk8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkNlbGw8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+MTM5PC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjQyODwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDQ1fG5waDE0NjE5LWNpdC0wMDQ1Ij4NCiAgICAgICAgICAgICAgPGF1dGhvcj5XYWRhczwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxNjwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDc0L2piYy5NMTE2Ljc0Nzk1NjwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5BbmFseXppbmcgTi10ZXJtaW5hbCBhcmdpbnlsYXRpb24gdGhyb3VnaCB0aGUgdXNlIG9mIHBlcHRpZGUgYXJyYXlzIGFuZCBkZWdyYWRhdGlvbiBhc3NheXM8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPkpvdXJuYWwgb2YgQmlvbG9naWNhbCBDaGVtaXN0cnk8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+MjkxPC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjIwOTc2PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwNDZ8bnBoMTQ2MTktY2l0LTAwNDYiPg0KICAgICAgICAgICAgICA8YXV0aG9yPldlaXRzPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDE0PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvbmNvbW1zNDQyNTwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5QbGFudCBjeXN0ZWluZSBveGlkYXNlcyBjb250cm9sIHRoZSBveHlnZW4tZGVwZW5kZW50IGJyYW5jaCBvZiB0aGUgTi1lbmQtcnVsZSBwYXRod2F5PC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5OYXR1cmUgQ29tbXVuaWNhdGlvbnM8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+NTwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4zNDI1PC9maXJzdF9wYWdlPg0KICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IjEwLjExMTEvbnBoLjE0NjE5LUJJQjAwNDd8bnBoMTQ2MTktY2l0LTAwNDciPg0KICAgICAgICAgICAgICA8YXV0aG9yPldoaXRlPC9hdXRob3I+DQogICAgICAgICAgICAgIDxjWWVhcj4yMDE2PC9jWWVhcj4NCiAgICAgICAgICAgICAgPGRvaSBwcm92aWRlcj0iY3Jvc3NyZWYiPjEwLjEwMzgvbmNvbW1zMTQ2OTA8L2RvaT4NCiAgICAgICAgICAgICAgPGFydGljbGVfdGl0bGU+UGxhbnQgY3lzdGVpbmUgb3hpZGFzZXMgYXJlIGRpb3h5Z2VuYXNlcyB0aGF0IGRpcmVjdGx5IGVuYWJsZSBhcmdpbnlsIHRyYW5zZmVyYXNlLWNhdGFseXplZCBhcmdpbnlsYXRpb24gb2YgTi1lbmQgcnVsZSB0YXJnZXRzPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5OYXR1cmUgQ29tbXVuaWNhdGlvbnM8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+ODwvdm9sdW1lPg0KICAgICAgICAgICAgICA8Zmlyc3RfcGFnZT4xNDY5MDwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDQ4fG5waDE0NjE5LWNpdC0wMDQ4Ij4NCiAgICAgICAgICAgICAgPGF1dGhvcj5YdTwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxNTwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMTA1L3RwYy4xNS4wMDE3MzwvZG9pPg0KICAgICAgICAgICAgICA8YXJ0aWNsZV90aXRsZT5Ud28gTi10ZXJtaW5hbCBhY2V0eWx0cmFuc2ZlcmFzZXMgYW50YWdvbmlzdGljYWxseSByZWd1bGF0ZSB0aGUgc3RhYmlsaXR5IG9mIGEgbm9kLWxpa2UgcmVjZXB0b3IgaW4gQXJhYmlkb3BzaXM8L2FydGljbGVfdGl0bGU+DQogICAgICAgICAgICAgIDxqb3VybmFsX3RpdGxlPlBsYW50IENlbGw8L2pvdXJuYWxfdGl0bGU+DQogICAgICAgICAgICAgIDx2b2x1bWU+Mjc8L3ZvbHVtZT4NCiAgICAgICAgICAgICAgPGZpcnN0X3BhZ2U+MTU0NzwvZmlyc3RfcGFnZT4NCiAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSIxMC4xMTExL25waC4xNDYxOS1CSUIwMDQ5fG5waDE0NjE5LWNpdC0wMDQ5Ij4NCiAgICAgICAgICAgICAgPGF1dGhvcj5aaGFuZzwvYXV0aG9yPg0KICAgICAgICAgICAgICA8Y1llYXI+MjAxNTwvY1llYXI+DQogICAgICAgICAgICAgIDxkb2kgcHJvdmlkZXI9ImNyb3NzcmVmIj4xMC4xMDAyL3BtaWMuMjAxNDAwNTMwPC9kb2k+DQogICAgICAgICAgICAgIDxhcnRpY2xlX3RpdGxlPlF1YW50aXRhdGl2ZSBwcm90ZW9taWNzIGFuYWx5c2lzIG9mIHRoZSBBcmcvTi1lbmQgcnVsZSBwYXRod2F5IG9mIHRhcmdldGVkIGRlZ3JhZGF0aW9uIGluIEFyYWJpZG9wc2lzIHJvb3RzPC9hcnRpY2xlX3RpdGxlPg0KICAgICAgICAgICAgICA8am91cm5hbF90aXRsZT5Qcm90ZW9taWNzPC9qb3VybmFsX3RpdGxlPg0KICAgICAgICAgICAgICA8dm9sdW1lPjE1PC92b2x1bWU+DQogICAgICAgICAgICAgIDxmaXJzdF9wYWdlPjI0NDc8L2ZpcnN0X3BhZ2U+DQogICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgIDwvY2l0YXRpb25fbGlzdD4NCiAgICAgICAgPC9qb3VybmFsX2FydGljbGU+DQogICAgICA8L2pvdXJuYWw+DQogICAgPC9jcm9zc3JlZj4NCiAgPC9kb2lfcmVjb3JkPg0KPC9kb2lfcmVjb3Jkcz4=
88
+ http_version:
89
+ recorded_at: Fri, 29 Dec 2017 12:46:06 GMT
90
+ recorded_with: VCR 3.0.3
@@ -171,6 +171,24 @@ describe Bolognese::Metadata, vcr: true do
171
171
  expect(subject.provider).to eq("Crossref")
172
172
  end
173
173
 
174
+ it "journal article with" do
175
+ input = "https://doi.org/10.1111/nph.14619"
176
+ subject = Bolognese::Metadata.new(input: input)
177
+ expect(subject.id).to eq(input)
178
+ expect(subject.url).to eq("http://doi.wiley.com/10.1111/nph.14619")
179
+ expect(subject.type).to eq("ScholarlyArticle")
180
+ expect(subject.additional_type).to eq("JournalArticle")
181
+ expect(subject.resource_type_general).to eq("Text")
182
+ expect(subject.author.length).to eq(3)
183
+ expect(subject.author.first).to eq("type"=>"Person", "id"=>"http://orcid.org/0000-0002-4156-3761", "name"=>"Nico Dissmeyer", "givenName"=>"Nico", "familyName"=>"Dissmeyer")
184
+ expect(subject.title).to eq("Life and death of proteins after protease cleavage: protein degradation by the N-end rule pathway")
185
+ expect(subject.license).to eq([{"id"=>"http://doi.wiley.com/10.1002/tdm_license_1"}, {"id"=>"http://onlinelibrary.wiley.com/termsAndConditions"}])
186
+ expect(subject.date_published).to eq("2017-06-05")
187
+ expect(subject.date_modified).to eq("2017-06-05T10:56:59Z")
188
+ expect(subject.is_part_of).to eq("type"=>"Periodical", "title"=>"New Phytologist", "issn"=>"0028646X")
189
+ expect(subject.provider).to eq("Crossref")
190
+ end
191
+
174
192
  it "not found error" do
175
193
  input = "https://doi.org/10.7554/elife.01567x"
176
194
  subject = Bolognese::Metadata.new(input: input)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bolognese
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.66
4
+ version: 0.9.67
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
@@ -639,6 +639,7 @@ files:
639
639
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/dataset.yml
640
640
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/date_in_future.yml
641
641
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/journal_article.yml
642
+ - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/journal_article_with.yml
642
643
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/not_found_error.yml
643
644
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/posted_content.yml
644
645
  - spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_datacite_metadata/BlogPosting.yml