bolognese 1.8.12 → 1.8.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/bolognese/readers/crossref_reader.rb +1 -2
- data/lib/bolognese/version.rb +1 -1
- data/lib/bolognese/writers/bibtex_writer.rb +1 -1
- data/spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/article_id_as_page_number.yml +100 -0
- data/spec/readers/crossref_reader_spec.rb +20 -2
- data/spec/writers/bibtex_writer_spec.rb +1 -1
- data/spec/writers/citation_writer_spec.rb +2 -2
- data/spec/writers/datacite_writer_spec.rb +1 -1
- data/spec/writers/ris_writer_spec.rb +3 -2
- data/spec/writers/schema_org_writer_spec.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea0a1d41de990f8bc6e940f8df5c3734b8751b262306273084e770bfe0834ddb
|
4
|
+
data.tar.gz: a3bbc207e08285915c00db8c1294a09ebc0c3bc2f6a13a996a76a6b2e36c6a6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40d1961b4ef91c03d58ec3bc9782c03c2862db4aa81eeaca42e8873fa475d4181c05057846030ef7508323c88a1e80c36fa783c8b057b7bd3145a9831f89d286
|
7
|
+
data.tar.gz: 86018966453c45e25911663ceb7e910a8a251a51fe2d441210255c2ea3f3ebf69f62c5b3bbc942f0dd5504efc1322071724c2b2f44ec87bb40c9d2340e7405d7
|
data/Gemfile.lock
CHANGED
@@ -64,7 +64,6 @@ module Bolognese
|
|
64
64
|
journal_article = meta.dig("crossref", "journal", "journal_article") || {}
|
65
65
|
bibliographic_metadata = journal_article.presence || journal_issue.presence || journal_metadata
|
66
66
|
program_metadata = bibliographic_metadata.dig("crossmark", "custom_metadata", "program") || bibliographic_metadata.dig("program")
|
67
|
-
|
68
67
|
resource_type = if journal_article.present?
|
69
68
|
"journal_article"
|
70
69
|
elsif journal_issue.present?
|
@@ -150,7 +149,7 @@ module Bolognese
|
|
150
149
|
"title" => parse_attributes(journal_metadata.to_h["full_title"]),
|
151
150
|
"volume" => parse_attributes(journal_issue.dig("journal_volume", "volume")),
|
152
151
|
"issue" => parse_attributes(journal_issue.dig("issue")),
|
153
|
-
"firstPage" => bibliographic_metadata.dig("pages", "first_page"),
|
152
|
+
"firstPage" => bibliographic_metadata.dig("pages", "first_page") || parse_attributes(journal_article.to_h.dig("publisher_item", "item_number"), first: true),
|
154
153
|
"lastPage" => bibliographic_metadata.dig("pages", "last_page") }.compact
|
155
154
|
elsif book_series_metadata.to_h.fetch("series_metadata", nil).present?
|
156
155
|
issn = normalize_issn(book_series_metadata.dig("series_metadata", "issn"))
|
data/lib/bolognese/version.rb
CHANGED
@@ -6,7 +6,7 @@ module Bolognese
|
|
6
6
|
def bibtex
|
7
7
|
return nil unless valid?
|
8
8
|
|
9
|
-
pages = container.to_h["firstPage"].present? ? [container["firstPage"], container["lastPage"]].join("-") : nil
|
9
|
+
pages = container.to_h["firstPage"].present? ? [container["firstPage"], container["lastPage"]].compact.join("-") : nil
|
10
10
|
|
11
11
|
bib = {
|
12
12
|
bibtex_type: types["bibtex"].presence || "misc",
|
@@ -0,0 +1,100 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://doi.org/ra/10.1103
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Mozilla/5.0 (compatible; Maremma/4.7.2; mailto:info@datacite.org)
|
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: ''
|
18
|
+
headers:
|
19
|
+
Date:
|
20
|
+
- Mon, 12 Oct 2020 21:29:38 GMT
|
21
|
+
Content-Type:
|
22
|
+
- application/json;charset=UTF-8
|
23
|
+
Connection:
|
24
|
+
- keep-alive
|
25
|
+
Set-Cookie:
|
26
|
+
- __cfduid=db4cdafcb2a4ecdd2039ecc54bc79d52a1602538178; expires=Wed, 11-Nov-20
|
27
|
+
21:29:38 GMT; path=/; domain=.doi.org; HttpOnly; SameSite=Lax; Secure
|
28
|
+
Cf-Cache-Status:
|
29
|
+
- DYNAMIC
|
30
|
+
Cf-Request-Id:
|
31
|
+
- 05c051217300001f21b40ee200000001
|
32
|
+
Expect-Ct:
|
33
|
+
- max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
|
34
|
+
Report-To:
|
35
|
+
- '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report?lkg-colo=71&lkg-time=1602538179"}],"group":"cf-nel","max_age":604800}'
|
36
|
+
Nel:
|
37
|
+
- '{"report_to":"cf-nel","max_age":604800}'
|
38
|
+
Strict-Transport-Security:
|
39
|
+
- max-age=31536000; includeSubDomains; preload
|
40
|
+
Server:
|
41
|
+
- cloudflare
|
42
|
+
Cf-Ray:
|
43
|
+
- 5e13eae258061f21-FRA
|
44
|
+
Alt-Svc:
|
45
|
+
- h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400
|
46
|
+
body:
|
47
|
+
encoding: ASCII-8BIT
|
48
|
+
string: |-
|
49
|
+
[
|
50
|
+
{
|
51
|
+
"DOI": "10.1103",
|
52
|
+
"RA": "Crossref"
|
53
|
+
}
|
54
|
+
]
|
55
|
+
http_version:
|
56
|
+
recorded_at: Mon, 12 Oct 2020 21:29:38 GMT
|
57
|
+
- request:
|
58
|
+
method: get
|
59
|
+
uri: https://api.crossref.org/works/10.1103/physrevlett.120.117701/transform/application/vnd.crossref.unixsd+xml
|
60
|
+
body:
|
61
|
+
encoding: US-ASCII
|
62
|
+
string: ''
|
63
|
+
headers:
|
64
|
+
User-Agent:
|
65
|
+
- Mozilla/5.0 (compatible; Maremma/4.7.2; mailto:info@datacite.org)
|
66
|
+
Accept:
|
67
|
+
- text/xml
|
68
|
+
response:
|
69
|
+
status:
|
70
|
+
code: 200
|
71
|
+
message: OK
|
72
|
+
headers:
|
73
|
+
Link:
|
74
|
+
- <http://dx.doi.org/10.1103/physrevlett.120.117701>; rel="canonical", <https://link.aps.org/article/10.1103/PhysRevLett.120.117701>;
|
75
|
+
version="vor"; rel="item", <http://harvest.aps.org/v2/journals/articles/10.1103/PhysRevLett.120.117701/fulltext>;
|
76
|
+
version="vor"; rel="item", <https://link.aps.org/licenses/aps-default-license>;
|
77
|
+
version="vor"; rel="license"
|
78
|
+
Access-Control-Allow-Origin:
|
79
|
+
- "*"
|
80
|
+
Access-Control-Allow-Headers:
|
81
|
+
- X-Requested-With
|
82
|
+
Content-Length:
|
83
|
+
- '15204'
|
84
|
+
Server:
|
85
|
+
- http-kit
|
86
|
+
Date:
|
87
|
+
- Mon, 12 Oct 2020 21:29:39 GMT
|
88
|
+
X-Rate-Limit-Limit:
|
89
|
+
- '50'
|
90
|
+
X-Rate-Limit-Interval:
|
91
|
+
- 1s
|
92
|
+
Connection:
|
93
|
+
- close
|
94
|
+
body:
|
95
|
+
encoding: ASCII-8BIT
|
96
|
+
string: !binary |-
|
97
|
+
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGNyb3NzcmVmX3Jlc3VsdCB4bWxucz0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIiB2ZXJzaW9uPSIzLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvcXJzY2hlbWEvMy4wIGh0dHA6Ly93d3cuY3Jvc3NyZWYub3JnL3NjaGVtYXMvY3Jvc3NyZWZfcXVlcnlfb3V0cHV0My4wLnhzZCI+DQogIDxxdWVyeV9yZXN1bHQ+DQogICAgPGhlYWQ+DQogICAgICA8ZG9pX2JhdGNoX2lkPm5vbmU8L2RvaV9iYXRjaF9pZD4NCiAgICA8L2hlYWQ+DQogICAgPGJvZHk+DQogICAgICA8cXVlcnkgc3RhdHVzPSJyZXNvbHZlZCI+DQogICAgICAgIDxkb2kgdHlwZT0iam91cm5hbF9hcnRpY2xlIj4xMC4xMTAzL1BoeXNSZXZMZXR0LjEyMC4xMTc3MDE8L2RvaT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9InB1Ymxpc2hlci1uYW1lIiB0eXBlPSJzdHJpbmciPkFtZXJpY2FuIFBoeXNpY2FsIFNvY2lldHkgKEFQUyk8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0icHJlZml4LW5hbWUiIHR5cGU9InN0cmluZyI+QW1lcmljYW4gUGh5c2ljYWwgU29jaWV0eTwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJtZW1iZXItaWQiIHR5cGU9Im51bWJlciI+MTY8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iY2l0YXRpb24taWQiIHR5cGU9Im51bWJlciI+OTcxNTAxMzU8L2NybS1pdGVtPg0KICAgICAgICA8Y3JtLWl0ZW0gbmFtZT0iam91cm5hbC1pZCIgdHlwZT0ibnVtYmVyIj41MjA0PC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9ImRlcG9zaXQtdGltZXN0YW1wIiB0eXBlPSJudW1iZXIiPjIwMTgwMzEzMTUxODQ4PC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9Im93bmVyLXByZWZpeCIgdHlwZT0ic3RyaW5nIj4xMC4xMTAzPC9jcm0taXRlbT4NCiAgICAgICAgPGNybS1pdGVtIG5hbWU9Imxhc3QtdXBkYXRlIiB0eXBlPSJkYXRlIj4yMDE4LTAzLTEzVDExOjE5OjAyWjwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjcmVhdGVkIiB0eXBlPSJkYXRlIj4yMDE4LTAzLTEzVDExOjE4OjU2WjwvY3JtLWl0ZW0+DQogICAgICAgIDxjcm0taXRlbSBuYW1lPSJjaXRlZGJ5LWNvdW50IiB0eXBlPSJudW1iZXIiPjI1PC9jcm0taXRlbT4NCiAgICAgICAgPGRvaV9yZWNvcmQ+DQogICAgICAgICAgPGNyb3NzcmVmIHhtbG5zPSJodHRwOi8vd3d3LmNyb3NzcmVmLm9yZy94c2NoZW1hLzEuMSIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LmNyb3NzcmVmLm9yZy94c2NoZW1hLzEuMSBodHRwOi8vZG9pLmNyb3NzcmVmLm9yZy9zY2hlbWFzL3VuaXhyZWYxLjEueHNkIj4NCiAgICAgICAgICAgIDxqb3VybmFsPg0KICAgICAgICAgICAgICA8am91cm5hbF9tZXRhZGF0YSBsYW5ndWFnZT0iZW4iPg0KICAgICAgICAgICAgICAgIDxmdWxsX3RpdGxlPlBoeXNpY2FsIFJldmlldyBMZXR0ZXJzPC9mdWxsX3RpdGxlPg0KICAgICAgICAgICAgICAgIDxhYmJyZXZfdGl0bGU+UGh5cy4gUmV2LiBMZXR0LjwvYWJicmV2X3RpdGxlPg0KICAgICAgICAgICAgICAgIDxpc3NuIG1lZGlhX3R5cGU9InByaW50Ij4wMDMxLTkwMDc8L2lzc24+DQogICAgICAgICAgICAgICAgPGlzc24gbWVkaWFfdHlwZT0iZWxlY3Ryb25pYyI+MTA3OS03MTE0PC9pc3NuPg0KICAgICAgICAgICAgICAgIDxjb2Rlbj5QUkxUQU88L2NvZGVuPg0KICAgICAgICAgICAgICA8L2pvdXJuYWxfbWV0YWRhdGE+DQogICAgICAgICAgICAgIDxqb3VybmFsX2lzc3VlPg0KICAgICAgICAgICAgICAgIDxwdWJsaWNhdGlvbl9kYXRlIG1lZGlhX3R5cGU9InByaW50Ij4NCiAgICAgICAgICAgICAgICAgIDxtb250aD4zPC9tb250aD4NCiAgICAgICAgICAgICAgICAgIDx5ZWFyPjIwMTg8L3llYXI+DQogICAgICAgICAgICAgICAgPC9wdWJsaWNhdGlvbl9kYXRlPg0KICAgICAgICAgICAgICAgIDxqb3VybmFsX3ZvbHVtZT4NCiAgICAgICAgICAgICAgICAgIDx2b2x1bWU+MTIwPC92b2x1bWU+DQogICAgICAgICAgICAgICAgPC9qb3VybmFsX3ZvbHVtZT4NCiAgICAgICAgICAgICAgICA8aXNzdWU+MTE8L2lzc3VlPg0KICAgICAgICAgICAgICA8L2pvdXJuYWxfaXNzdWU+DQogICAgICAgICAgICAgIDxqb3VybmFsX2FydGljbGUgcHVibGljYXRpb25fdHlwZT0iZnVsbF90ZXh0Ij4NCiAgICAgICAgICAgICAgICA8dGl0bGVzPg0KICAgICAgICAgICAgICAgICAgPHRpdGxlPlByZWRpY3Rpb24gb2YgYSBMYXJnZS1HYXAgYW5kIFN3aXRjaGFibGUgS2FuZS1NZWxlIFF1YW50dW0gU3BpbiBIYWxsIEluc3VsYXRvcjwvdGl0bGU+DQogICAgICAgICAgICAgICAgPC90aXRsZXM+DQogICAgICAgICAgICAgICAgPGNvbnRyaWJ1dG9ycz4NCiAgICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBzZXF1ZW5jZT0iZmlyc3QiIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPkFudGltbzwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+TWFycmF6em88L3N1cm5hbWU+DQogICAgICAgICAgICAgICAgICA8L3BlcnNvbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgPHBlcnNvbl9uYW1lIHNlcXVlbmNlPSJhZGRpdGlvbmFsIiBjb250cmlidXRvcl9yb2xlPSJhdXRob3IiPg0KICAgICAgICAgICAgICAgICAgICA8Z2l2ZW5fbmFtZT5NYXJjbzwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+R2liZXJ0aW5pPC9zdXJuYW1lPg0KICAgICAgICAgICAgICAgICAgPC9wZXJzb25fbmFtZT4NCiAgICAgICAgICAgICAgICAgIDxwZXJzb25fbmFtZSBzZXF1ZW5jZT0iYWRkaXRpb25hbCIgY29udHJpYnV0b3Jfcm9sZT0iYXV0aG9yIj4NCiAgICAgICAgICAgICAgICAgICAgPGdpdmVuX25hbWU+RGF2aWRlPC9naXZlbl9uYW1lPg0KICAgICAgICAgICAgICAgICAgICA8c3VybmFtZT5DYW1waTwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgc2VxdWVuY2U9ImFkZGl0aW9uYWwiIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPk5pY29sYXM8L2dpdmVuX25hbWU+DQogICAgICAgICAgICAgICAgICAgIDxzdXJuYW1lPk1vdW5ldDwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgICA8cGVyc29uX25hbWUgc2VxdWVuY2U9ImFkZGl0aW9uYWwiIGNvbnRyaWJ1dG9yX3JvbGU9ImF1dGhvciI+DQogICAgICAgICAgICAgICAgICAgIDxnaXZlbl9uYW1lPk5pY29sYTwvZ2l2ZW5fbmFtZT4NCiAgICAgICAgICAgICAgICAgICAgPHN1cm5hbWU+TWFyemFyaTwvc3VybmFtZT4NCiAgICAgICAgICAgICAgICAgIDwvcGVyc29uX25hbWU+DQogICAgICAgICAgICAgICAgPC9jb250cmlidXRvcnM+DQogICAgICAgICAgICAgICAgPHB1YmxpY2F0aW9uX2RhdGUgbWVkaWFfdHlwZT0ib25saW5lIj4NCiAgICAgICAgICAgICAgICAgIDxtb250aD4zPC9tb250aD4NCiAgICAgICAgICAgICAgICAgIDxkYXk+MTM8L2RheT4NCiAgICAgICAgICAgICAgICAgIDx5ZWFyPjIwMTg8L3llYXI+DQogICAgICAgICAgICAgICAgPC9wdWJsaWNhdGlvbl9kYXRlPg0KICAgICAgICAgICAgICAgIDxwdWJsaXNoZXJfaXRlbT4NCiAgICAgICAgICAgICAgICAgIDxpdGVtX251bWJlciBpdGVtX251bWJlcl90eXBlPSJhcnRpY2xlLW51bWJlciI+MTE3NzAxPC9pdGVtX251bWJlcj4NCiAgICAgICAgICAgICAgICA8L3B1Ymxpc2hlcl9pdGVtPg0KICAgICAgICAgICAgICAgIDxjcm9zc21hcms+DQogICAgICAgICAgICAgICAgICA8Y3Jvc3NtYXJrX3ZlcnNpb24+Mi4wPC9jcm9zc21hcmtfdmVyc2lvbj4NCiAgICAgICAgICAgICAgICAgIDxjcm9zc21hcmtfcG9saWN5PjEwLjExMDMvY3Jvc3NtYXJrLXBvbGljeTwvY3Jvc3NtYXJrX3BvbGljeT4NCiAgICAgICAgICAgICAgICAgIDxjcm9zc21hcmtfZG9tYWlucz4NCiAgICAgICAgICAgICAgICAgICAgPGNyb3NzbWFya19kb21haW4+DQogICAgICAgICAgICAgICAgICAgICAgPGRvbWFpbj5qb3VybmFscy5hcHMub3JnPC9kb21haW4+DQogICAgICAgICAgICAgICAgICAgIDwvY3Jvc3NtYXJrX2RvbWFpbj4NCiAgICAgICAgICAgICAgICAgIDwvY3Jvc3NtYXJrX2RvbWFpbnM+DQogICAgICAgICAgICAgICAgICA8Y3Jvc3NtYXJrX2RvbWFpbl9leGNsdXNpdmU+dHJ1ZTwvY3Jvc3NtYXJrX2RvbWFpbl9leGNsdXNpdmU+DQogICAgICAgICAgICAgICAgICA8Y3VzdG9tX21ldGFkYXRhPg0KICAgICAgICAgICAgICAgICAgICA8ZnI6cHJvZ3JhbSB4bWxuczpmcj0iaHR0cDovL3d3dy5jcm9zc3JlZi5vcmcvZnVuZHJlZi54c2QiIG5hbWU9ImZ1bmRyZWYiPg0KICAgICAgICAgICAgICAgICAgICAgIDxmcjphc3NlcnRpb24gbmFtZT0iZnVuZGdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmcjphc3NlcnRpb24gbmFtZT0iZnVuZGVyX25hbWUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICBTY2h3ZWl6ZXJpc2NoZXIgTmF0aW9uYWxmb25kcyB6dXIgRsO2cmRlcnVuZyBkZXIgV2lzc2Vuc2NoYWZ0bGljaGVuIEZvcnNjaHVuZw0KICAgICAgICAgICAgICAgICAgICAgICAgICA8ZnI6YXNzZXJ0aW9uIG5hbWU9ImZ1bmRlcl9pZGVudGlmaWVyIj5odHRwOi8vZHguZG9pLm9yZy8xMC4xMzAzOS81MDExMDAwMDE3MTE8L2ZyOmFzc2VydGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZnI6YXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgIDwvZnI6YXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgIDxmcjphc3NlcnRpb24gbmFtZT0iZnVuZGdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxmcjphc3NlcnRpb24gbmFtZT0iZnVuZGVyX25hbWUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICBIb3Jpem9uIDIwMjAgRnJhbWV3b3JrIFByb2dyYW1tZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICA8ZnI6YXNzZXJ0aW9uIG5hbWU9ImZ1bmRlcl9pZGVudGlmaWVyIj5odHRwOi8vZHguZG9pLm9yZy8xMC4xMzAzOS8xMDAwMTA2NjE8L2ZyOmFzc2VydGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZnI6YXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgIDwvZnI6YXNzZXJ0aW9uPg0KICAgICAgICAgICAgICAgICAgICA8L2ZyOnByb2dyYW0+DQogICAgICAgICAgICAgICAgICAgIDxhaTpwcm9ncmFtIHhtbG5zOmFpPSJodHRwOi8vd3d3LmNyb3NzcmVmLm9yZy9BY2Nlc3NJbmRpY2F0b3JzLnhzZCIgbmFtZT0iQWNjZXNzSW5kaWNhdG9ycyI+DQogICAgICAgICAgICAgICAgICAgICAgPGFpOmxpY2Vuc2VfcmVmIGFwcGxpZXNfdG89InZvciIgc3RhcnRfZGF0ZT0iMjAxOC0wMy0xMyI+aHR0cHM6Ly9saW5rLmFwcy5vcmcvbGljZW5zZXMvYXBzLWRlZmF1bHQtbGljZW5zZTwvYWk6bGljZW5zZV9yZWY+DQogICAgICAgICAgICAgICAgICAgIDwvYWk6cHJvZ3JhbT4NCiAgICAgICAgICAgICAgICAgIDwvY3VzdG9tX21ldGFkYXRhPg0KICAgICAgICAgICAgICAgIDwvY3Jvc3NtYXJrPg0KICAgICAgICAgICAgICAgIDxkb2lfZGF0YT4NCiAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2TGV0dC4xMjAuMTE3NzAxPC9kb2k+DQogICAgICAgICAgICAgICAgICA8dGltZXN0YW1wPjIwMTgwMzEzMTUxODQ4PC90aW1lc3RhbXA+DQogICAgICAgICAgICAgICAgICA8cmVzb3VyY2U+aHR0cHM6Ly9saW5rLmFwcy5vcmcvZG9pLzEwLjExMDMvUGh5c1JldkxldHQuMTIwLjExNzcwMTwvcmVzb3VyY2U+DQogICAgICAgICAgICAgICAgICA8Y29sbGVjdGlvbiBwcm9wZXJ0eT0iY3Jhd2xlci1iYXNlZCI+DQogICAgICAgICAgICAgICAgICAgIDxpdGVtIGNyYXdsZXI9ImlQYXJhZGlnbXMiPg0KICAgICAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZT5odHRwOi8vaGFydmVzdC5hcHMub3JnL3YyL2pvdXJuYWxzL2FydGljbGVzLzEwLjExMDMvUGh5c1JldkxldHQuMTIwLjExNzcwMS9mdWxsdGV4dDwvcmVzb3VyY2U+DQogICAgICAgICAgICAgICAgICAgIDwvaXRlbT4NCiAgICAgICAgICAgICAgICAgIDwvY29sbGVjdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjb2xsZWN0aW9uIHByb3BlcnR5PSJzeW5kaWNhdGlvbiI+DQogICAgICAgICAgICAgICAgICAgIDxpdGVtPg0KICAgICAgICAgICAgICAgICAgICAgIDxyZXNvdXJjZSBjb250ZW50X3ZlcnNpb249InZvciI+aHR0cHM6Ly9saW5rLmFwcy5vcmcvYXJ0aWNsZS8xMC4xMTAzL1BoeXNSZXZMZXR0LjEyMC4xMTc3MDE8L3Jlc291cmNlPg0KICAgICAgICAgICAgICAgICAgICA8L2l0ZW0+DQogICAgICAgICAgICAgICAgICA8L2NvbGxlY3Rpb24+DQogICAgICAgICAgICAgICAgPC9kb2lfZGF0YT4NCiAgICAgICAgICAgICAgICA8Y2l0YXRpb25fbGlzdD4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzFSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2TGV0dC42MS4yMDE1PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMlIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZMZXR0Ljk1LjIyNjgwMTwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzNSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2TGV0dC45NS4xNDY4MDI8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M0UjEiPg0KICAgICAgICAgICAgICAgICAgICA8dm9sdW1lX3RpdGxlPlRvcG9sb2dpY2FsIEluc3VsYXRvcnMgYW5kIFRvcG9sb2dpY2FsIFN1cGVyY29uZHVjdG9yczwvdm9sdW1lX3RpdGxlPg0KICAgICAgICAgICAgICAgICAgICA8YXV0aG9yPkIu4oCJQS4gQmVybmV2aWc8L2F1dGhvcj4NCiAgICAgICAgICAgICAgICAgICAgPGNZZWFyPjIwMTM8L2NZZWFyPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pIHByb3ZpZGVyPSJjcm9zc3JlZiI+MTAuMTUxNS85NzgxNDAwODQ2NzMzPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjNVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTI2L3NjaWVuY2UuMTE0ODA0NzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzZSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEyNi9zY2llbmNlLjExMzM3MzQ8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M3UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMzgvbm1hdDUwMTI8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M4UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMjYvc2NpZW5jZS5hYWk4MTQyPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjOVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTExL2ouMTM2NS0zMTIxLjIwMDcuMDA3ODMueDwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzEwUjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjM3NDkvY2FubWluLjUwLjIuNDMxPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMTNSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTA4OC8wOTUzLTg5ODQvMjEvMzkvMzk1NTAyPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMTRSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTA4OC8xMzYxLTY0OFgvYWE4Zjc5PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMTVSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2Qi44Mi4wODExMDE8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2MxNlIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjgxLjE2MTEwNDwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzE3UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMDMvUGh5c1JldkxldHQuMTAzLjA2MzAwNDwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzE4UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMDMvUGh5c1JldkIuODcuMDQxMTA4PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMTlSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2TGV0dC4xMDIuMDczMDA1PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMjBSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2TGV0dC43Ny4zODY1PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMjFSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2Qi44OC4wODUxMTc8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2MyNFIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDE2L2ouY29tbWF0c2NpLjIwMTMuMDguMDUzPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMjZSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAxNi9qLmNvbW1hdHNjaS4yMDE0LjA3LjA0MzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzI3UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMTYvai5jcGMuMjAxNS4wNS4wMTE8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2MyOFIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDE2L2ouY3BjLjIwMDkuMDIuMDAzPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMjlSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAxNi9qLmNwYy4yMDE0LjA1LjAwMzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzMwUjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMTYvai5jb21tYXRzY2kuMjAxNS4wOS4wMTM8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2MzMVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZMZXR0LjEwOC4yMzU1MDI8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2MzM1IxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1Jldk1vZFBoeXMuODQuMTQxOTwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzM0UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMDMvUGh5c1JldkIuODQuMTk1NDMwPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMzZSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAxNi9qLmNwYy4yMDE3LjA5LjAzMzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzM3UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMDMvUGh5c1JldkIuODMuMjM1NDAxPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjMzhSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2Qi45NS4wNzUxNDY8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2MzOVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjY0LjExNTIwMjwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzQwUjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMzgvbnBoeXM0MDkxPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjNDFSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAzOC9ucGh5czQxNzQ8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M0MlIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTI2L3NjaWVuY2UuYWFuNjAwMzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzQzUjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwODgvMDMwNS00NjA4LzE1LzQvMDA5PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjNDRSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2TGV0dC45NS4wNzY4MDQ8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M0NVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjY5LjAzNTEwODwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzQ2UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjExMDMvUmV2TW9kUGh5cy43My41MTU8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M0N1IxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjk2LjA3NTQ0ODwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzQ4UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMjEvYWNzLm5hbm9sZXR0LjdiMDEwOTA8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M0OVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjE5LjM1OTM8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M1MFIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjUzLjUwNDc8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M1NFIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZMZXR0LjExNy4yMjY4MDE8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M1NVIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZMZXR0LjExNy4yNDY0MDE8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M1NlIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDM4L25jb21tczgzMTU8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M1N1IxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMDM4L25hdHVyZTIzOTA1PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjNTlSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTAwMi93Y21zLjEyODA8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M2MFIxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjY4LjA0NTQwNzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzYxUjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwMjEvbmw0MDA3NDc5PC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgICAgPGNpdGF0aW9uIGtleT0iUGh5c1JldkxldHQuMTIwLjExNzcwMUNjNjJSMSI+DQogICAgICAgICAgICAgICAgICAgIDxkb2k+MTAuMTEwMy9QaHlzUmV2Qi45MS4xMjUzMDQ8L2RvaT4NCiAgICAgICAgICAgICAgICAgIDwvY2l0YXRpb24+DQogICAgICAgICAgICAgICAgICA8Y2l0YXRpb24ga2V5PSJQaHlzUmV2TGV0dC4xMjAuMTE3NzAxQ2M2M1IxIj4NCiAgICAgICAgICAgICAgICAgICAgPGRvaT4xMC4xMTAzL1BoeXNSZXZCLjg5LjIwNTQxNzwvZG9pPg0KICAgICAgICAgICAgICAgICAgPC9jaXRhdGlvbj4NCiAgICAgICAgICAgICAgICAgIDxjaXRhdGlvbiBrZXk9IlBoeXNSZXZMZXR0LjEyMC4xMTc3MDFDYzY0UjEiPg0KICAgICAgICAgICAgICAgICAgICA8ZG9pPjEwLjEwNjMvMS40ODI0ODkzPC9kb2k+DQogICAgICAgICAgICAgICAgICA8L2NpdGF0aW9uPg0KICAgICAgICAgICAgICAgIDwvY2l0YXRpb25fbGlzdD4NCiAgICAgICAgICAgICAgPC9qb3VybmFsX2FydGljbGU+DQogICAgICAgICAgICA8L2pvdXJuYWw+DQogICAgICAgICAgPC9jcm9zc3JlZj4NCiAgICAgICAgPC9kb2lfcmVjb3JkPg0KICAgICAgPC9xdWVyeT4NCiAgICA8L2JvZHk+DQogIDwvcXVlcnlfcmVzdWx0Pg0KPC9jcm9zc3JlZl9yZXN1bHQ+
|
98
|
+
http_version:
|
99
|
+
recorded_at: Mon, 12 Oct 2020 21:29:39 GMT
|
100
|
+
recorded_with: VCR 3.0.3
|
@@ -33,7 +33,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
33
33
|
expect(subject.dates).to eq([{"date"=>"2014-02-11", "dateType"=>"Issued"}, {"date"=>"2018-08-23T13:41:49Z", "dateType"=>"Updated"}])
|
34
34
|
expect(subject.publication_year).to eq("2014")
|
35
35
|
expect(subject.publisher).to eq("eLife Sciences Publications, Ltd")
|
36
|
-
expect(subject.container).to eq("identifier"=>"2050-084X", "identifierType"=>"ISSN", "title"=>"eLife", "type"=>"Journal", "volume"=>"3")
|
36
|
+
expect(subject.container).to eq("firstPage" => "e01567", "identifier"=>"2050-084X", "identifierType"=>"ISSN", "title"=>"eLife", "type"=>"Journal", "volume"=>"3")
|
37
37
|
expect(subject.related_identifiers.length).to eq(27)
|
38
38
|
expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"2050-084X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
|
39
39
|
expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.1038/ncb2764", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
|
@@ -100,7 +100,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
100
100
|
expect(subject.related_identifiers.length).to eq(70)
|
101
101
|
expect(subject.related_identifiers.first).to eq("relatedIdentifier"=>"1664-462X", "relatedIdentifierType"=>"ISSN", "relationType"=>"IsPartOf", "resourceTypeGeneral"=>"Collection")
|
102
102
|
expect(subject.related_identifiers.last).to eq("relatedIdentifier"=>"10.17660/actahortic.2004.632.41", "relatedIdentifierType"=>"DOI", "relationType"=>"References")
|
103
|
-
expect(subject.container).to eq("identifier"=>"1664-462X", "identifierType"=>"ISSN", "title"=>"Frontiers in Plant Science", "type"=>"Journal", "volume"=>"10")
|
103
|
+
expect(subject.container).to eq("firstPage" => "816", "identifier"=>"1664-462X", "identifierType"=>"ISSN", "title"=>"Frontiers in Plant Science", "type"=>"Journal", "volume"=>"10")
|
104
104
|
expect(subject.agency).to eq("crossref")
|
105
105
|
end
|
106
106
|
|
@@ -718,6 +718,24 @@ describe Bolognese::Metadata, vcr: true do
|
|
718
718
|
expect(subject.date_registered).to eq("2012-10-31T16:15:44Z")
|
719
719
|
end
|
720
720
|
|
721
|
+
it "article id as page number" do
|
722
|
+
input = "https://doi.org/10.1103/physrevlett.120.117701"
|
723
|
+
subject = Bolognese::Metadata.new(input: input)
|
724
|
+
expect(subject.valid?).to be true
|
725
|
+
expect(subject.id).to eq("https://doi.org/10.1103/physrevlett.120.117701")
|
726
|
+
expect(subject.url).to eq("https://link.aps.org/doi/10.1103/PhysRevLett.120.117701")
|
727
|
+
expect(subject.types).to eq("bibtex"=>"article", "citeproc"=>"article-journal", "resourceType"=>"JournalArticle", "resourceTypeGeneral"=>"Text", "ris"=>"JOUR", "schemaOrg"=>"ScholarlyArticle")
|
728
|
+
expect(subject.creators.length).to eq(5)
|
729
|
+
expect(subject.creators.first).to eq("familyName"=>"Marrazzo", "givenName"=>"Antimo", "name"=>"Marrazzo, Antimo", "nameType"=>"Personal")
|
730
|
+
expect(subject.titles).to eq([{"title"=>"Prediction of a Large-Gap and Switchable Kane-Mele Quantum Spin Hall Insulator"}])
|
731
|
+
expect(subject.dates).to include({"date"=>"2018-03-13", "dateType"=>"Issued"})
|
732
|
+
expect(subject.publication_year).to eq("2018")
|
733
|
+
expect(subject.publisher).to eq("American Physical Society (APS)")
|
734
|
+
expect(subject.container).to eq("firstPage" => "117701", "identifier"=>"1079-7114", "identifierType"=>"ISSN", "issue"=>"11", "title"=>"Physical Review Letters", "type"=>"Journal", "volume"=>"120")
|
735
|
+
expect(subject.agency).to eq("crossref")
|
736
|
+
expect(subject.date_registered).to eq("2018-03-13T15:18:48Z")
|
737
|
+
end
|
738
|
+
|
721
739
|
it "posted content copernicus" do
|
722
740
|
input = "https://doi.org/10.5194/CP-2020-95"
|
723
741
|
subject = Bolognese::Metadata.new(input: input)
|
@@ -56,7 +56,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
56
56
|
expect(bibtex[:bibtex_key]).to eq("https://doi.org/10.3204/desy-2014-01645")
|
57
57
|
expect(bibtex[:doi]).to eq("10.3204/desy-2014-01645")
|
58
58
|
expect(bibtex[:title]).to eq("Dynamics of colloids in molecular glass forming liquids studied via X-ray photon correlation spectroscopy")
|
59
|
-
expect(bibtex[:pages]).to eq("2014
|
59
|
+
expect(bibtex[:pages]).to eq("2014")
|
60
60
|
expect(bibtex[:year]).to eq("2014")
|
61
61
|
end
|
62
62
|
|
@@ -9,7 +9,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
9
9
|
subject = Bolognese::Metadata.new(input: input, from: "crossref")
|
10
10
|
expect(subject.style).to eq("apa")
|
11
11
|
expect(subject.locale).to eq("en-US")
|
12
|
-
expect(subject.citation).to eq("Sankar, M., Nieminen, K., Ragni, L., Xenarios, I., & Hardtke, C. S. (2014). Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth. <i>ELife</i>, <i>3</i
|
12
|
+
expect(subject.citation).to eq("Sankar, M., Nieminen, K., Ragni, L., Xenarios, I., & Hardtke, C. S. (2014). Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth. <i>ELife</i>, <i>3</i>, e01567. https://doi.org/10.7554/elife.01567")
|
13
13
|
end
|
14
14
|
|
15
15
|
it "Journal article vancouver style" do
|
@@ -17,7 +17,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
17
17
|
subject = Bolognese::Metadata.new(input: input, from: "crossref", style: "vancouver", locale: "en-US")
|
18
18
|
expect(subject.style).to eq("vancouver")
|
19
19
|
expect(subject.locale).to eq("en-US")
|
20
|
-
expect(subject.citation).to eq("Sankar M, Nieminen K, Ragni L, Xenarios I, Hardtke CS. Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth. eLife [Internet]. 2014Feb11;3. Available from: https://elifesciences.org/articles/01567")
|
20
|
+
expect(subject.citation).to eq("Sankar M, Nieminen K, Ragni L, Xenarios I, Hardtke CS. Automated quantitative histology reveals vascular morphodynamics during Arabidopsis hypocotyl secondary growth. eLife [Internet]. 2014Feb11;3:e01567. Available from: https://elifesciences.org/articles/01567")
|
21
21
|
end
|
22
22
|
|
23
23
|
it "Dataset" do
|
@@ -316,7 +316,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
316
316
|
subject.descriptions = { "description" => "This is an abstract." }
|
317
317
|
expect(subject.valid?).to be true
|
318
318
|
datacite = Maremma.from_xml(subject.datacite).fetch("resource", {})
|
319
|
-
expect(datacite.dig("descriptions", "description")).to eq(
|
319
|
+
expect(datacite.dig("descriptions", "description")).to eq([{"__content__"=>"eLife, 3, e01567", "descriptionType"=>"SeriesInformation"}, {"__content__"=>"This is an abstract.", "descriptionType"=>"Abstract"}])
|
320
320
|
end
|
321
321
|
|
322
322
|
it "change description no input" do
|
@@ -19,8 +19,9 @@ describe Bolognese::Metadata, vcr: true do
|
|
19
19
|
expect(ris[11]).to eq("PY - 2014")
|
20
20
|
expect(ris[12]).to eq("PB - eLife Sciences Publications, Ltd")
|
21
21
|
expect(ris[13]).to eq("VL - 3")
|
22
|
-
expect(ris[14]).to eq("
|
23
|
-
expect(ris[15]).to eq("
|
22
|
+
expect(ris[14]).to eq("SP - e01567")
|
23
|
+
expect(ris[15]).to eq("SN - 2050-084X")
|
24
|
+
expect(ris[16]).to eq("ER - ")
|
24
25
|
end
|
25
26
|
|
26
27
|
it "with pages" do
|
@@ -11,7 +11,7 @@ describe Bolognese::Metadata, vcr: true do
|
|
11
11
|
expect(json["@id"]).to eq("https://doi.org/10.7554/elife.01567")
|
12
12
|
expect(json["@type"]).to eq("ScholarlyArticle")
|
13
13
|
expect(json["isPartOf"]).to eq("@type"=>"Periodical", "issn"=>"2050-084X")
|
14
|
-
expect(json["periodical"]).to eq("@type"=>"Journal", "identifier"=>"2050-084X", "identifierType"=>"ISSN", "name"=>"eLife", "volume"=>"3")
|
14
|
+
expect(json["periodical"]).to eq("@type"=>"Journal", "firstPage" => "e01567", "identifier"=>"2050-084X", "identifierType"=>"ISSN", "name"=>"eLife", "volume"=>"3")
|
15
15
|
expect(json["citation"].length).to eq(26)
|
16
16
|
expect(json["citation"].first).to eq("@id"=>"https://doi.org/10.1038/nature02100", "@type"=>"CreativeWork")
|
17
17
|
expect(json["funder"]).to eq([{"name"=>"SystemsX", "@type"=>"Organization"},
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bolognese
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Fenner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-10-
|
11
|
+
date: 2020-10-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: maremma
|
@@ -899,6 +899,7 @@ files:
|
|
899
899
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/affiliation_is_space.yml
|
900
900
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/another_book.yml
|
901
901
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/another_book_chapter.yml
|
902
|
+
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/article_id_as_page_number.yml
|
902
903
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/author_literal.yml
|
903
904
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book.yml
|
904
905
|
- spec/fixtures/vcr_cassettes/Bolognese_Metadata/get_crossref_metadata/book_chapter.yml
|