openstax_utilities 4.1.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/app/routines/openstax/utilities/limit_and_paginate_relation.rb +85 -0
- data/app/routines/openstax/utilities/order_relation.rb +105 -0
- data/app/routines/openstax/utilities/search_and_organize_relation.rb +130 -0
- data/app/routines/openstax/utilities/search_relation.rb +94 -0
- data/lib/openstax/utilities/access_policy.rb +4 -3
- data/lib/openstax/utilities/assets.rb +29 -0
- data/lib/openstax/utilities/assets/manifest.rb +62 -0
- data/lib/openstax/utilities/version.rb +1 -1
- data/lib/openstax_utilities.rb +5 -5
- data/spec/cassettes/OpenStax_Utilities_Assets/loading_remote_manifest/uses_remote_json.yml +353 -0
- data/spec/dummy/app/access_policies/dummier_access_policy.rb +10 -0
- data/spec/dummy/app/assets/config/manifest.js +3 -0
- data/spec/dummy/config/application.rb +6 -11
- data/spec/dummy/config/environments/test.rb +1 -1
- data/spec/dummy/config/initializers/search_users.rb +26 -0
- data/spec/dummy/config/secrets.yml +2 -5
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/test.log +32144 -0
- data/spec/dummy/tmp/cache/C09/760/6da7b2a29da9cb0f80ef102c7effb91fab3374db +0 -0
- data/spec/factories/user.rb +1 -1
- data/spec/lib/openstax/utilities/access_policy_spec.rb +16 -15
- data/spec/lib/openstax/utilities/assets_spec.rb +40 -0
- data/spec/rails_helper.rb +1 -2
- data/spec/routines/openstax/utilities/limit_and_paginate_relation_spec.rb +72 -0
- data/spec/routines/openstax/utilities/order_relation_spec.rb +55 -0
- data/spec/routines/openstax/utilities/{abstract_keyword_search_routine_spec.rb → search_and_organize_relation_spec.rb} +54 -47
- data/spec/routines/openstax/utilities/search_relation_spec.rb +81 -0
- data/spec/vcr_helper.rb +18 -0
- metadata +123 -44
- data/app/handlers/openstax/utilities/keyword_search_handler.rb +0 -95
- data/app/routines/openstax/utilities/abstract_keyword_search_routine.rb +0 -158
- data/spec/dummy/app/routines/search_users.rb +0 -21
- data/spec/handlers/openstax/utilities/keyword_search_handler_spec.rb +0 -126
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'request_store'
|
2
|
+
require_relative 'assets/manifest'
|
3
|
+
|
4
|
+
module OpenStax::Utilities
|
5
|
+
module Assets
|
6
|
+
def self.url
|
7
|
+
url = Rails.application.secrets.assets_url
|
8
|
+
url.ends_with?('/') ? url : "#{url}/"
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.url_for(asset)
|
12
|
+
"#{url}#{asset}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.manifest
|
16
|
+
RequestStore.store[:assets_manifest] ||= OpenStax::Utilities::Assets::Manifest.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.tags_for(asset)
|
20
|
+
manifest[asset].map do |chunk|
|
21
|
+
"<script type='text/javascript' src='#{chunk}' crossorigin='anonymous' async></script>"
|
22
|
+
end.join("\n").html_safe
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.digest_for(asset)
|
26
|
+
Digest::MD5.hexdigest tags_for(asset)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'faraday-http-cache'
|
3
|
+
|
4
|
+
module OpenStax::Utilities
|
5
|
+
module Assets
|
6
|
+
# Reads and parses the assets manifest
|
7
|
+
class Manifest
|
8
|
+
def initialize
|
9
|
+
@assets = HashWithIndifferentAccess.new
|
10
|
+
|
11
|
+
url = OpenStax::Utilities::Assets.url_for('assets.json')
|
12
|
+
|
13
|
+
begin
|
14
|
+
response = self.class.client.get url
|
15
|
+
|
16
|
+
if response.success?
|
17
|
+
contents = JSON.parse response.body
|
18
|
+
|
19
|
+
if contents['entrypoints'].blank?
|
20
|
+
Rails.logger.error { "failed to parse manifest from #{url}" }
|
21
|
+
else
|
22
|
+
contents['entrypoints'].each do |entry_key, chunks|
|
23
|
+
@assets[entry_key] = chunks['js'].map do |chunk|
|
24
|
+
OpenStax::Utilities::Assets.url_for(chunk)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
else
|
29
|
+
Rails.logger.error { "status #{response.status} when reading remote url: #{url}" }
|
30
|
+
end
|
31
|
+
rescue Faraday::ConnectionFailed, Addressable::URI::InvalidURIError, Errno::ECONNREFUSED
|
32
|
+
end
|
33
|
+
|
34
|
+
Rails.logger.info do
|
35
|
+
"running in development mode with assets served by webpack at #{
|
36
|
+
OpenStax::Utilities::Assets.url
|
37
|
+
}"
|
38
|
+
end if @assets.blank?
|
39
|
+
end
|
40
|
+
|
41
|
+
def [](asset)
|
42
|
+
return [ OpenStax::Utilities::Assets.url_for("#{asset}.js") ] if @assets.blank?
|
43
|
+
|
44
|
+
@assets[asset] || []
|
45
|
+
end
|
46
|
+
|
47
|
+
protected
|
48
|
+
|
49
|
+
# Faraday is probably thread-safe but makes no guarantees
|
50
|
+
# https://github.com/lostisland/faraday/issues/370
|
51
|
+
# We could potentially reuse the client object
|
52
|
+
# However, bugs happen: https://github.com/lostisland/faraday/issues/1068
|
53
|
+
def self.client
|
54
|
+
Faraday.new do |builder|
|
55
|
+
builder.use :http_cache, store: Rails.cache
|
56
|
+
|
57
|
+
builder.adapter Faraday.default_adapter
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/openstax_utilities.rb
CHANGED
@@ -19,6 +19,7 @@ require "openstax/utilities/acts_as_numberable"
|
|
19
19
|
require "openstax/utilities/delegate_access_control"
|
20
20
|
require "openstax/utilities/access_policy"
|
21
21
|
require "openstax/utilities/osu_helper"
|
22
|
+
require "openstax/utilities/assets"
|
22
23
|
|
23
24
|
module OpenStax
|
24
25
|
module Utilities
|
@@ -35,7 +36,7 @@ module OpenStax
|
|
35
36
|
#
|
36
37
|
# Configuration machinery.
|
37
38
|
#
|
38
|
-
# To configure OpenStax Utilities, put the following code in your applications
|
39
|
+
# To configure OpenStax Utilities, put the following code in your applications
|
39
40
|
# initialization logic (eg. in the config/initializers in a Rails app)
|
40
41
|
#
|
41
42
|
# OpenStax::Utilities.configure do |config|
|
@@ -43,7 +44,7 @@ module OpenStax
|
|
43
44
|
# ...
|
44
45
|
# end
|
45
46
|
#
|
46
|
-
|
47
|
+
|
47
48
|
def configure
|
48
49
|
yield configuration
|
49
50
|
end
|
@@ -56,8 +57,8 @@ module OpenStax
|
|
56
57
|
attr_accessor :standard_date_format
|
57
58
|
attr_accessor :standard_datetime_format
|
58
59
|
attr_accessor :standard_time_format
|
59
|
-
|
60
|
-
def initialize
|
60
|
+
|
61
|
+
def initialize
|
61
62
|
@standard_date_format = "%b %d, %Y"
|
62
63
|
@standard_datetime_format = "%b %d, %Y %l:%M %p %Z"
|
63
64
|
@standard_time_format = "%l:%M %p %Z"
|
@@ -69,4 +70,3 @@ module OpenStax
|
|
69
70
|
|
70
71
|
end
|
71
72
|
end
|
72
|
-
|
@@ -0,0 +1,353 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://tutor-dev.openstax.org/assets/assets.json
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.2
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- "*/*"
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Server:
|
22
|
+
- nginx
|
23
|
+
Date:
|
24
|
+
- Thu, 13 Sep 2018 17:45:53 GMT
|
25
|
+
Content-Type:
|
26
|
+
- application/json
|
27
|
+
Content-Length:
|
28
|
+
- '404'
|
29
|
+
Last-Modified:
|
30
|
+
- Fri, 31 Aug 2018 21:21:15 GMT
|
31
|
+
Connection:
|
32
|
+
- keep-alive
|
33
|
+
Etag:
|
34
|
+
- '"5b89b14b-194"'
|
35
|
+
Expires:
|
36
|
+
- Fri, 13 Sep 2019 17:45:53 GMT
|
37
|
+
Cache-Control:
|
38
|
+
- max-age=31536000
|
39
|
+
- public
|
40
|
+
Strict-Transport-Security:
|
41
|
+
- max-age=31536000; includeSubdomains
|
42
|
+
Accept-Ranges:
|
43
|
+
- bytes
|
44
|
+
body:
|
45
|
+
encoding: UTF-8
|
46
|
+
string: |
|
47
|
+
{
|
48
|
+
"all-features.svg": {
|
49
|
+
"src": "aa24fa15d6d08eb7078616fbb038188d.svg",
|
50
|
+
"integrity": "sha256-QIcMINxIyaiYNQW9dnIvxmzMmLeQosO1bSgC7pzLpKQ= sha384-aa0rfgAhJ+iIH8CRpf4Ei0V3KlQWZ3Fh+MMMo40S0kixI692PhGM2qFvq1/3qSFx sha512-oObRARlAvemWUB3OwlW6lP6tQDuRW3YxXZ6rGXZln4cZ96sejeYJ9BOmvVSDTfGHDZHU0l6gF4VrmlBF9dCgpw=="
|
51
|
+
},
|
52
|
+
"ap_physics-book-thumbnail.svg": {
|
53
|
+
"src": "dcbb7de4327cd469d54012fcfbaf83ac.svg",
|
54
|
+
"integrity": "sha256-DWm0KEcgX5XXa3XOSmwS6lx8gYzPaS8gLquubhEGIh0= sha384-JyqJgDexFBJMAAsiDKVEoZ70dNEB6ZFP9wKgc6p+rnr+oqbwlJefSUVkgX1k454V sha512-36vObxxYPaGBDeVpzvwjKac4fGprb5H7XHNgA4IWA9x0KbIg/nzYR2uUsEu77gaHoHV3CUbEdIAc3sGc/fKf3A=="
|
55
|
+
},
|
56
|
+
"ap_us_history-book-thumbnail.svg": {
|
57
|
+
"src": "ea15eb313d33bf91c3fadc2fe7dab027.svg",
|
58
|
+
"integrity": "sha256-cR4KKeLsxiAgV+EDpAU3vVFs5FpnuhAxOc8IlBsS+Jc= sha384-+ackdSHqLVeGuZJ3ABavi/LwJnwHdKy0vDufWeNYbCvT/E7nIT5fHS7RXivfdOPf sha512-WQ5JjbuMoaV+EddeQBm9uDvbn0M8QYubb1wWAUeVkkN3clMBhMnnI551do0ulHMKCjq3ZGQHrLDfofwUELQFEQ=="
|
59
|
+
},
|
60
|
+
"biology-book-thumbnail.svg": {
|
61
|
+
"src": "09a7aa2d0aa9bc4f083ae2b514966827.svg",
|
62
|
+
"integrity": "sha256-Q8ctLwjOkI7MmE1O7fWGrUyDWTuh0SyGaUROWDSZuAU= sha384-Rft6bksJWnKoqqy+pVb3dLYFKLWGkP8AS58oZ6prX0ihX3e+WGUJbUSmlw4mPIkO sha512-zyWDI5gric8qXi4GdtSzIUBgLxvn59Plb5PhjdunS1TjpWOsxI5lG0YmnkPFCjxa63rXio4hswLoy4PHcE8igQ=="
|
63
|
+
},
|
64
|
+
"biology_2e-book-thumbnail.svg": {
|
65
|
+
"src": "2c69b48945c8869b7195c99b3bb8b390.svg",
|
66
|
+
"integrity": "sha256-Mom7+7inJVDA/6XczbQ9eZHKH9EttlLUlbX0q32WvAY= sha384-XvUUDHngymDbamwadCVvQifAel4O/77r6x2/0FnbRQGLNyAjvN9k4LBbSk85mtW+ sha512-CxMUoVkgRjj2ojALi2EHr7AxTs9+1kOQj3rDKnjFTi9CsQjBLcWotS6kZCVGttw4FjueBl1T1rsAq8EwoAZDsQ=="
|
67
|
+
},
|
68
|
+
"cant-save-work.svg": {
|
69
|
+
"src": "5ad1479c3561fa1988912b1c3e061282.svg",
|
70
|
+
"integrity": "sha256-egeZy7hvduoP9ujDJEB9fRwf/QRuZE9+e5B6yI1D1q4= sha384-I61LI2VdHk5a7lzeaNveog7TWTPncH0BzDjAVPnnMUpmAEU8yIdQAheXqbLT2OGt sha512-7pYkiymyYORnuUEdhehr4NFtk5Yy++owADUWu2NmtRVTQz3qODSvmPgysoyBaFWaAb0iJ9GzBRaw/5EiyQC3vQ=="
|
71
|
+
},
|
72
|
+
"college_physics-book-thumbnail.svg": {
|
73
|
+
"src": "aac1db15414fad4a0e79efbb886cd8f0.svg",
|
74
|
+
"integrity": "sha256-qE69BiNBc1iYcaV0nGFgMkh39eheSSpafxp2c/uqv5U= sha384-ujsnbp8Ahdy4uTPdXZ0jOp3jhvbH6QjtK8zkALqHi/UN7L0LrKlQB2zit9JiNt9U sha512-GM2S0r7q6YnBmV+7ej2iRtITX5X3R1/p6vpy+llGf8JwKn/aYyvWaFtXq74yvkN3Wo8k/ZXJiO7LqmsJHYoMpg=="
|
75
|
+
},
|
76
|
+
"entrepreneurship-book-thumbnail.svg": {
|
77
|
+
"src": "9527f9c2439d00c1d58ec28e52420e2b.svg",
|
78
|
+
"integrity": "sha256-I9i39FEBc4kHcAkgTDc1n2BAaydY/cz9nrTIZ0fFXyA= sha384-qrWWGZDEI/302XzLD2hPaRKubyplPfCPu8LKBzylmXlxu57xAbiq8Ye0U24WBxgA sha512-iBAELZ7s/y+hxwAwPutHSafTd7cyrU4P9wvykmDVTu4noK1ccC8QChc6zk2MsBynfm1ISMO0sjKlJ7Dz+H1pDg=="
|
79
|
+
},
|
80
|
+
"entrypoints": {
|
81
|
+
"tutor": {
|
82
|
+
"js": [
|
83
|
+
"tutor-b920eb0be760a7c440bf.min.js"
|
84
|
+
],
|
85
|
+
"js.map": [
|
86
|
+
"tutor-b920eb0be760a7c440bf.min.js.map"
|
87
|
+
]
|
88
|
+
},
|
89
|
+
"lmspair": {
|
90
|
+
"js": [
|
91
|
+
"lmspair-b920eb0be760a7c440bf.min.js"
|
92
|
+
],
|
93
|
+
"js.map": [
|
94
|
+
"lmspair-b920eb0be760a7c440bf.min.js.map"
|
95
|
+
]
|
96
|
+
}
|
97
|
+
},
|
98
|
+
"exclude-question.svg": {
|
99
|
+
"src": "f7460965d0f2443a757b68486a271a46.svg",
|
100
|
+
"integrity": "sha256-U0lKhNqO0f+UFKzsJDL1tO24TrsTrp+ZOwH/C3eP8iM= sha384-onoZmRrSMr22/L0ysTlsQlhUiO7O+ea+LNnEaVctuUecPdOJGE4onsGx7FRudlHZ sha512-SwHKMLIhqmUJJHI5BNCqJsN3mALz8g85MvJoGSDHm2n3cyx3F2IBjgA6aPnVzp072ZGpcK8tlil5RzgcsqTtVw=="
|
101
|
+
},
|
102
|
+
"exercise-details-action.svg": {
|
103
|
+
"src": "ade68bd7a65ec534db8f179e78173f36.svg",
|
104
|
+
"integrity": "sha256-jPGHeozXhBAfeuSt6kZg0O0SqhX/Ofg9B1HAClnXI+A= sha384-srUWMTIvZBKyzwyk+vKJ9uwZ8viObVdvP/0Xmq3blFD8w48KKm0vP8iieFQ/4njf sha512-76DO9BtdlnsUmsba/rP4H2tYXtMy2dTK/CudPTQnkESzGWiC4hbpn2aDSh8vAG/CD3ObPFo4u2Utpc/iCRm/dg=="
|
105
|
+
},
|
106
|
+
"exercise-exclude-card-view-action.svg": {
|
107
|
+
"src": "6f6a7d08a934392dfb6daae9b32e1eca.svg",
|
108
|
+
"integrity": "sha256-Ttp7m6dHS9X+6JFLpkfD4EcQPB4xKAD5kFVHuLmFGCI= sha384-sEGYw9qGeaH2C6ou+UzssORsdqVPgMkB1iOgqj+AMAQwjH89k3iu9Rcr9V8DCuXy sha512-p2DUqibi4667xwZylBV+XOseXeitmvEb28FmfPBnfyGNlMEpBFRYVb+w2/Hr8T4lZ1mZjLEJE1N7wPwTurKqLw=="
|
109
|
+
},
|
110
|
+
"exercise-exclude-details-view-action.svg": {
|
111
|
+
"src": "f03fe8cfd847898edc376bf0bdac0056.svg",
|
112
|
+
"integrity": "sha256-pO3LCOn2pMqZNaEAwG4meH5xOjfaa4EvGTvR8AxaY+k= sha384-dnKtfgmDF18YjfzV+uz7DS89doo6v3ClonG2Ak/jHIzm4gGe++wr9AmFWDHzGv72 sha512-0m84pmF3KPDwGMRrtGmM9+7ylVAO457hnomaZRXQcnLwPh7nkAP4cECf5+urSYG+o766dM3BWrUS5ZETRZCi5w=="
|
113
|
+
},
|
114
|
+
"exercise-feedback-off-action.svg": {
|
115
|
+
"src": "cc317d981b83c9468e000a4cd0cd6bd1.svg",
|
116
|
+
"integrity": "sha256-poQbe47ZyBZn/r0nVK8QlvfCStK7I3reJf31ic5XU+E= sha384-P7/nY9zRRRtpVbGA24ZIeI4mPmerty84X7uWBrzPjaUOAS2FgtnvWdbcTZnUqN2S sha512-dSge35cZIzZfaxbBzcamOyId4rTn8CWwWJ37wNf54VDcdk2h/8lTC5eLxLe5nDwQq1HZtBnnN6H9JmG4tSfdOA=="
|
117
|
+
},
|
118
|
+
"exercise-feedback-on-action.svg": {
|
119
|
+
"src": "7941f79e27c564f9778784c78a005f78.svg",
|
120
|
+
"integrity": "sha256-u0kNxYc0B/rm9U86ul3VNZByM9yNneSjvvArdW1RWDA= sha384-VU5b7mFjwluxcp72y8oupgiMswhsqYzIsj6/tHw6PoIawkt1GELqYoByDJ3erlNl sha512-mBtoqoEmzXhOUEbz4TpNclqOmLraeQbHTmM2xRFtu++sHiW1lMkX2B+a313v7laVQGr1ZDptmuItSXg/OE9rWg=="
|
121
|
+
},
|
122
|
+
"exercise-include-action.svg": {
|
123
|
+
"src": "9b3328d7b81d35b1764a709b5e2fe14a.svg",
|
124
|
+
"integrity": "sha256-yP6keVl5XVCCb7YKkvD/6zVWwcOQ7pAqgB0H0jSoafM= sha384-0YpNustNygxYxOF654o+uVJJvrZIddYOcU7wKU1zk4ayenBOUL0k/ghPvkmD+nlV sha512-R/PK9Bbxe8mRUglibbClnRpKmt3oECX2l+A8Z+bnDXVii+wQufmN23jka6oaS5TqFRF1e1DVWGHxz6oIfpbXlQ=="
|
125
|
+
},
|
126
|
+
"exercise-report-error-action.svg": {
|
127
|
+
"src": "062f41bcd1652ae1e6c77bfeb0bab7aa.svg",
|
128
|
+
"integrity": "sha256-spCoklXvyEE96RU6A7DbGn5LX3lBBMbfLLoceIRUCYM= sha384-k0nkM8JP4NWILjiRgV9R9cEOqHpnZ33AzM5qcJAetFxCn80W+6pZVedm6bKZdQcH sha512-0WueUVO8xKmGQXqf1UUFm3NAEvS0YL9m20OzOgOr0GCZpzzmhxH4DgtuOsu2I/Qj/5s9HnVYcaKeIzCSyi3h5A=="
|
129
|
+
},
|
130
|
+
"export-by.svg": {
|
131
|
+
"src": "8ef183dc2032a92a87e654ccf009c858.svg",
|
132
|
+
"integrity": "sha256-znMsZmY1bYcoxtmQV73W0dk8Lvqimu5JYxZGAKaLDrk= sha384-DenBRw8WXoI3jjlL+d28j1fQCPwpSKrjTEfxMG5nCYJT6XWyA0lwOFHppGb5siRl sha512-mnCct5NVCBZUoFLBEYmUjXpQpfwYxRAk6JDP6EFCrjy5LLGCTu85df4MbsagBX9LoVUsinzpIzckdH2stVanWg=="
|
133
|
+
},
|
134
|
+
"hs_physics-book-thumbnail.png": {
|
135
|
+
"src": "57112172ebb42b6d76439ef3c09e10a0.png",
|
136
|
+
"integrity": "sha256-X8trpVLInJlun+ilsDXvuIRUWWTTFrMNCodyGjGE00U= sha384-wZTgHHcKjYDXRa/mU3kEfgexBJUHa3+SUCDExZSX9RSz47No8RiIH8HYNQWJbc6U sha512-yXPx9yx0xlWTJ4yiDFSD+b2n63Ixvz09wV7bTvqv370IfweQVDypQjOQF4QlmuDmx8UQvLma6LVyyBECTxwebg=="
|
137
|
+
},
|
138
|
+
"icon-completed.svg": {
|
139
|
+
"src": "1eaa77438418976d919742a5f51778de.svg",
|
140
|
+
"integrity": "sha256-/K4ahQxRv8VVA4xFL4YhzPzl2850BlHndoyY6I5QmO4= sha384-AGd5sL6cIlNIkd5HRwp/DM6oyVytHeZz2VP0DnN6PoOqnTbCRUiuhqq/Wvdc74tq sha512-JFmeWiO2a8uV98fXj0wOXSYGqtGyKkdXzXqEwb4oLdB6mEbmweWYsQr1E2SsLr7AaO8IJm0sWbKSJOtmSYXQPg=="
|
141
|
+
},
|
142
|
+
"icon-copy-course.svg": {
|
143
|
+
"src": "1d0014e980c13576a550645339994b4a.svg",
|
144
|
+
"integrity": "sha256-QIPi/bNPslFUOaHnJBrp6g7Uvqyz4IzD68qsOu6WL9Y= sha384-7P3AUbnSRFGrTNfB4fLEwrM7PbvGSVS5PiIrPDuXO/Lfy99K0Ru8gvjRvHQZY6P8 sha512-wCBpSGWJsFgbT+UcEWSUzSfRhnrGRVo3t2PiGmTQ4bTTD5FveTZ1m57BalXvjM01Bf4NaUilo7aWy1L5047p+A=="
|
145
|
+
},
|
146
|
+
"icon-correct.svg": {
|
147
|
+
"src": "d62f4fb9677b23b176d92210a6e635ef.svg",
|
148
|
+
"integrity": "sha256-xNt/TBBZyJNIOve+JEo1QPmEHjDXOG+zhgJdGNWVY4c= sha384-66GlLUhSM8fjCEYhQe8jpj2YxoJmDxrhbf6cFFZKXs2lSp37pWwcb9jZFSoFx4NX sha512-EX/6y1IKJDKllghlw6eYxCICFXpkWzC+sOzxIr8bJ6tT/QQ/fapWqMXwGJFyEObfhj+KcO9KwI4zl8e9Tv6Xjw=="
|
149
|
+
},
|
150
|
+
"icon-end.svg": {
|
151
|
+
"src": "5296aaa9429bfe5364c92abde90b4edc.svg",
|
152
|
+
"integrity": "sha256-BXtydxlsc1UFcXLNGICzgSi1AAleC4V/MHFo3GmofHo= sha384-xnAT7T4PYBriYONAxS9fe8MaPuMfGFXqEb8dyXWAN0CqZwg9E3qQE4JDXPAJYSiw sha512-cAw2abfRDgnsFKfFkb9ZjUeov0AahzebMlDc9vKr7+PAwSmvzfHowgNGvRQc99nDAXALUwbtuNPqO5k0lbZLog=="
|
153
|
+
},
|
154
|
+
"icon-event.svg": {
|
155
|
+
"src": "fa1d0a374b1f522c38359988bf6e1397.svg",
|
156
|
+
"integrity": "sha256-pP/L+KKaa88C4cdigU270H2BnnFgok5DJR3WmvSNqbA= sha384-PafVjCvOmkOHIwcKLViwNuAvEqvafJ3dmuEFeLuptY+yi7uu8MOSZhYvFuC2oJWy sha512-zsjD8duZuW3hSIOfdmuC8Ir2h1al6lvobuoNBUy5L7oA55PLn0d5ctr34jbjp4OarvDAWtYGAUlhAOfd8r6G1g=="
|
157
|
+
},
|
158
|
+
"icon-external.svg": {
|
159
|
+
"src": "97a63312f2f3742a92945f8d88749dbb.svg",
|
160
|
+
"integrity": "sha256-ZZRqh5dtY6W9RtdFwrD0BaiY4R/KLj7ek5org5dhiXM= sha384-9VDt4hCbNSJUoNFKE/x1/UrBuxR2x2hNKZFfgie6I+ogsjRcNKgWQp27o+zZhfLd sha512-YONCeRp+yZ1GwgQBqDZxvFRSTBkYvT8hMGD3WVn4EP5FkrRYDBPqOY3QFE5Kj6yy65uxExY+D4WeYUJBgU0Ojw=="
|
161
|
+
},
|
162
|
+
"icon-feedback.svg": {
|
163
|
+
"src": "7dc00913481d3aa9a49be8cf59c3c035.svg",
|
164
|
+
"integrity": "sha256-wblvGlrCG5TUofVjXU15+CBY2aRcC6h1sV4Dd0XuyMU= sha384-ssrw3CwHB/bh8E/yiLGHxatTI0xlGeOcvemUlUQyvGoehxMUF8fZDco/w1a6RF3l sha512-J8ElVtpiYvQzUlS74h/QtWngAGjkTCJqdVvXpPV5169mQx8f4YjbLkFvxJaUgQwWa6Cxeh53xdMCrU5Qih80iw=="
|
165
|
+
},
|
166
|
+
"icon-homework.svg": {
|
167
|
+
"src": "ffc68bfb492c28cdd981df81d36e16fa.svg",
|
168
|
+
"integrity": "sha256-7sf4rOZYKIP9qB3Gy1658p9KYCU0GmAjt21KjuuX8sQ= sha384-evtoWVKVfwGkPHIogy6WgvvbRs8APaAJbnqS8cXl42t4k303HueNhzhqe+qizgak sha512-eDqCY98nA1OKs6dS5ERZBW/tWKdPileDrEBPLopep1hJkqK0CZsGGpb+sd/PHwq/y+dKL8nAUAAtJD1aj7DYAA=="
|
169
|
+
},
|
170
|
+
"icon-incorrect.svg": {
|
171
|
+
"src": "79d4706e51a98be43c9d27102c6b1b91.svg",
|
172
|
+
"integrity": "sha256-0wBdRovm9zI8TfENz6nTYhEA+CPEobOUbB3wuZPDcdY= sha384-8x6qtL6UDYSqef5xokqC153m/QEnHeT/y2jlVTbYsa21SGzhbGr1vJd4eaQEn+3k sha512-3ePjz40aQczwcCvh0e7sKMQWog9l2tRVH6aP9l/i2ye/Nvy4zfphsX+Ke15YXK46fKWm5WhBvzRdziGBw/WRaw=="
|
173
|
+
},
|
174
|
+
"icon-individual-review-heading.svg": {
|
175
|
+
"src": "005ae70666804bf1b4fcbdd1820cda69.svg",
|
176
|
+
"integrity": "sha256-z6B3CCVljKsfARlA4smvKa8MWT1+yKVyCb5Q2xPV+5s= sha384-L41LTjzYeTj1BAfaxuLLplZF5lS9HI7r19SlOprdfYlZxyuN6eWYweCLySfBJLl8 sha512-4/0E8WkRF7zyekaFucGHMho/+sqyHb57QvTwJ5U6ZYZw4c8ACFoHcNDd6R4kuI06ImivTmvK0c+3IFju8WpOcg=="
|
177
|
+
},
|
178
|
+
"icon-individual-review.svg": {
|
179
|
+
"src": "94f2e768af2ef350e8756f5159a3b560.svg",
|
180
|
+
"integrity": "sha256-6XWMkb/NOcs5yKd3zXn3wHG/X9dHpX7eIhPVTWmPMjw= sha384-Zvssf5n/SRzZl/1nr26TW99JJrgDKZSrb2qjB/vP0OySH38HTBP1CSxtR95rTK8i sha512-UoAVUGQXLBdFHocYTTZtQT4JQa1jFyvDv3dKj0YqCwr5BGuq2ICgI+ItT+FLpUxleattFTAoNTxZJgnqrdkkIQ=="
|
181
|
+
},
|
182
|
+
"icon-interactive-placeholder.svg": {
|
183
|
+
"src": "2a0017a49d2dacbc02dab29ba52f7a08.svg",
|
184
|
+
"integrity": "sha256-NCfCPWYY8SX8a8wF0UZ71MtZ0xz7cyArY+6Z4azs2wM= sha384-jtOPNwwOtGb7IBOjTMGbjUqvTXjpvH9tn6aiHPtNKp8j8KlN44IihZNrS4AxtfAQ sha512-9U1du0DlL8DOIe39bsEQXEwWbS4NQmrc4vGC1lGL5z4r68mkcC3KOFkwPi2BWWN/vHJ82daqihBKmk1eCn74vQ=="
|
185
|
+
},
|
186
|
+
"icon-interactive.svg": {
|
187
|
+
"src": "790f8f667a1ef6aa74114278d7e58b7d.svg",
|
188
|
+
"integrity": "sha256-FDbdyyGIVVSSUlTj9A1a0BgEVkURMetRvMdKSqpt2MA= sha384-XhOGsiw2ypmKK5+Q8ocjx6FNGACD8F6pMOauwFtONWL47vA0tsNFDUkpmzfpzUgI sha512-P9qJuOoQaUHZ/p+1oa9AAYjAHJKg2BURRjDmHVRHomOpJakz9zKblJNaYRVaBOJWXrWWqqsDpwAI6znqVuazNA=="
|
189
|
+
},
|
190
|
+
"icon-new-course.svg": {
|
191
|
+
"src": "8ff80c156c21fc6abf9683c5c17de83f.svg",
|
192
|
+
"integrity": "sha256-uo955IwvjR3ScptZKAdQptFFCc+L5T/JmZ2hu4Hldxk= sha384-kK4iY5qdUN7UpWRuRLz4n3qFAs1m+5nzAXCySMKKIqBMNkV7/ZOZbOoZ+4E2gWTn sha512-CiUa0EJHljs9YN/zfJTcHDXhAHfl/0LpLKD0ndQZ0XsXRaXhHXFVVC6FoEHFmlMJhjuYWndhvm+iu6gnRZsE9g=="
|
193
|
+
},
|
194
|
+
"icon-personalized-intro-heading.svg": {
|
195
|
+
"src": "cbdf929d0e17cf97add3bc0dac6a7328.svg",
|
196
|
+
"integrity": "sha256-IBctmn9uifI7pVyxN2AexMqDiMA0kBd9GIWXvmBjSSY= sha384-QSASvvsbnTxKvqE39SdY/SvOMZtN3jta5tfglrpReaBQwrWZAgiwx8Lu2Nr9K8bv sha512-j8nX3RJSFuflhL1gMAKFdbnT//RvitfljX2J/mKgMnF7qekYoWAJGyi203k6/U4zWjEUIdFwHAsrnuE6gwOxqw=="
|
197
|
+
},
|
198
|
+
"icon-personalized-intro.svg": {
|
199
|
+
"src": "d0ec81696d3f0f537b73cc7d55aa5d8c.svg",
|
200
|
+
"integrity": "sha256-AKsLueFcgvjfVdRvoXF9JRaEp0d00WJWF48bplDE4KM= sha384-irp1AA5AMLgDZ+PkyQcv7WmIyQocDbgkMYiu8MXHFVbykU59Z1fK9fiYIDUNZfK9 sha512-MlyPKN8FoXgF7KyvwCCUrz0TcbrU0D3S5IDTEqoigVH6jqg6SBjn/wva+2usftm9DMBiIw7JxHSmRGYAJLUrSQ=="
|
201
|
+
},
|
202
|
+
"icon-personalized.svg": {
|
203
|
+
"src": "db35e38026c6e71b91bd689fea0cb6ce.svg",
|
204
|
+
"integrity": "sha256-os5aOEnjevx/9gTLS5wGa+r4Zi/Q2U+DOXwxiTOVwNM= sha384-rxBYlhFhyP2PIvkoK9jnLeoNzIcq3iD34xkmhOuAp2+gZMJ7jgvw8zww5plJEqlf sha512-28R7zIvQX8En8DYGFNqGksngu6k0I2qZ7L4ebfV2GA/jOEGIwgKIImPWDVJKuImKbqN9C4+PTJN8avPlCrxynQ=="
|
205
|
+
},
|
206
|
+
"icon-reading.svg": {
|
207
|
+
"src": "260832dd3b75923fbb73c2e4c9496f76.svg",
|
208
|
+
"integrity": "sha256-JihCXF0Rayd2OIXiTGI78+9gSUkL3YvE3MojjVlkZVk= sha384-6hh7LBOpsGEbwmSjprn/8u1at61H5ihj7LWWhtokxGxcx7Y4ClJsdhPQU+ehycHs sha512-g1kceTzm7WkbTgl9OFbb5wFHMSjoFTntz71JdzgPogU89DzJd7z1rJ+ecIshV07z0jrEWyFQag6oL3kO9qptsQ=="
|
209
|
+
},
|
210
|
+
"icon-recover.svg": {
|
211
|
+
"src": "98147b62873e4126b3e401e1de69dc36.svg",
|
212
|
+
"integrity": "sha256-LCc1oQEtidXDzm5gKYdefTDgeXdN4v9eRVgelyyb1q0= sha384-Oe3lDlAtROLcqbua09sa4U+dx0YKgmrGFWm/sB3V0a7F3weiBctVTe+vc5UUon7e sha512-18OSvbgIM1m/PQW0FZDD8hUw8lkcHlra9U3l9rDPMmWA0rZQWuBncLLEStnuMk7Dg0xJFLHXkoBoSFFsPLEr8g=="
|
213
|
+
},
|
214
|
+
"icon-spaced-practice-intro-heading.svg": {
|
215
|
+
"src": "e9b103dc00923e20ca3513fe7c827e99.svg",
|
216
|
+
"integrity": "sha256-jjfLXDcMqN2MKGTmPbV6xWEiFADvVpPFgspOUeU9nWA= sha384-Jp751ZJHk16LIUFNIISYzeUxqs0Wstixcft4IEfcErIyH8L7mHRqQ19n38M7ijWK sha512-DJwbFJ0ja/dQ+Pk1bWEpTcr4nErrITukQMnc3RMFZqZ2wvjkr46N2Oj+VyHyQpeazVdP+IIZTHGIXyWqJKxpdg=="
|
217
|
+
},
|
218
|
+
"icon-spaced-practice-intro.svg": {
|
219
|
+
"src": "759ca0007f65b2d71b45b77183d98762.svg",
|
220
|
+
"integrity": "sha256-IVk9O+hTqIhPE1HtFcKFNAhl8KA3AloSA60hc1D35SA= sha384-mrz5GkX/eaPGtpB+SaJ+SbeRe+lySFZc8ypl9S/FOYCsSU1LsTK2FXbjTZqNb9rV sha512-GP+2CFuLygKSpykN7HXWrZ1R7JqrApgx1FeVkA27Hq3VbGQTona6iemrdPz6l3KZTrTpOTQbmkDi4f8RVM5zrQ=="
|
221
|
+
},
|
222
|
+
"icon-spaced-practice.svg": {
|
223
|
+
"src": "313955b37572c6d83e0989fcbaaa3a1d.svg",
|
224
|
+
"integrity": "sha256-dnJamctcrUQMUEnuJ9USdrPjwdzzraj0diuOdRD9+1c= sha384-uusWYCiPcxLnKG/m4+XecfUlSb+voNei1uXO/B/CVq+3yTBT8x+XEE8/k4LJX7L8 sha512-cdEo0Ea50nJPfX1NwAuVGvdhSd97VJkGnJOZ0ThkwZDuBVeYnXzOlMznVQsIKIFxfxMURxPtgr7Lgvqe3V5ahw=="
|
225
|
+
},
|
226
|
+
"icon-test.svg": {
|
227
|
+
"src": "c07bc4e863e2e875e4f7367ad7da03f6.svg",
|
228
|
+
"integrity": "sha256-8ovyBLYu4km60nOW2obXQGLFPN44ZsgyIiSwmO22b9U= sha384-eBQPb5Lok6/b6BsAvI20ANFiymp9KvTSIay9kPJY7SBuBRBiAUKnnh/3foT1WNfa sha512-ngj/qVNQrlwKcX6g61bnPfdI6kBpJSeLNb31k/eqSamn+vVZ2hb7RtbRWVOCKhlSx3/2/u3MSYWMhPFwKV3zdg=="
|
229
|
+
},
|
230
|
+
"icon-two-step-intro-heading.svg": {
|
231
|
+
"src": "000934185c3c0d5be58c6a6dae7b8f26.svg",
|
232
|
+
"integrity": "sha256-2Bytl2XMGtb9Z3iXDtHJNY7P2mWQIRIsViY9L1unwXc= sha384-haJFr46mCgFjuJkcGOFjtcMyNf38Yr4WmzC3gn9G5YXhkt10IWP/MqTjxFKKa4HF sha512-uQjoDHvw4BJ6LeVVj4Gac5cR8Kf3G1jJsRfuCixzNTAWdh7SYzuodJxzpih9cRw2Cnqn/ZANwfzWBkJGt/NDng=="
|
233
|
+
},
|
234
|
+
"icon-two-step-intro.svg": {
|
235
|
+
"src": "dada9a6e0febdd86d4ad4ad3ac6ca2f0.svg",
|
236
|
+
"integrity": "sha256-dDRjGCnDNkRKFd9AnUYsfCG97J6LFcxa4JQnLCwFkxY= sha384-E+/YdMVeaVpfYBHopB4Zm9KP4+zh4yfcNfdl9Y8+1wxS4+Q32uzkL2UTVAdCCe/U sha512-O/ctilyRrMXmqQnQyI4Qukg/8QHRxxkVU7hKMWZQHm+SwMP1xag6bsltJ86U9dZv7k/i1516I0my1jsnUHbaIw=="
|
237
|
+
},
|
238
|
+
"icon-video-placeholder.svg": {
|
239
|
+
"src": "59c2b6634ba0dc7fc7eca3ae8a679152.svg",
|
240
|
+
"integrity": "sha256-p04VjnTOPydVDkpF0PZV4UIzMxvO/BQR2z1GRMVzc/U= sha384-v40l/dwi7PJeU6QHWw+SnLWN4Uu5KDSjjkAv74tUUgtl1pS8mjh5W5IVupD0YFcM sha512-pCbKElEAoBeSyjU1jHHE8cpCG5+uFOy+rgEgAublEdA93CorUyixibXA5iVKrrQZ/ZQmcXlluj8aYKhf3sOMow=="
|
241
|
+
},
|
242
|
+
"icon-video.svg": {
|
243
|
+
"src": "21f3e628bc44dfce2e24f8cfec47a0d8.svg",
|
244
|
+
"integrity": "sha256-NlwXchMCaxZB3VLlcxo4piwni5jjo/eplJ/UaQU0DdU= sha384-Xn0xt8K/Sgd14fGQVyjPsstfi2Y5L26OPu6UleKEsJhszceJJmcgY4dr16e6OFPm sha512-tpsdzcO7wls31Vl3Vsjc0auMJvR7cEo8hOoE+01xVLVkb5qKi5pOCU4xaXG08xFVL33dRx8fUm+z1R+jIRTUVQ=="
|
245
|
+
},
|
246
|
+
"icon-worked-example.svg": {
|
247
|
+
"src": "309b353715d7c6b9ae2a81b1a9023780.svg",
|
248
|
+
"integrity": "sha256-8t4YvRZDcaIbUnrchsq4D3m8C9A0yIRrk7IcaHhZlcI= sha384-tn3V6W2JF0UlJxo7WYGOURgMjCIRH/VqF4nJUX06YQ1oGXP02A5G5sWPKtvHby52 sha512-UEGcHtTj0NogdhyqXRCdeUzLUrsZvGTTiX/UCkqimBGBzLSaIIO3EtNr8JoYAdUXQEq3nMQul6ouZhJoRkgHEg=="
|
249
|
+
},
|
250
|
+
"icon-wrm.svg": {
|
251
|
+
"src": "c7bd4e178229a98b8774588bc7a6ffe7.svg",
|
252
|
+
"integrity": "sha256-XcbLf91P/SJgrYxy6CNDq9FOGxKCmNVw1kauO6S0+a0= sha384-d52Q/QDbFPf1ZLVgAnBk+In+i7l0I0FHCxj15XlH24um/dgLm+Zk+s+WVood+nqr sha512-WyNAhnnew2LtsesFuvBSsZq9OjeI8MyI88INYfPPgZyEJmkkUwk2w6EhKl8aJF5MfyMohH9eUefFiFLXiz9InA=="
|
253
|
+
},
|
254
|
+
"instructions-highlighter-icon.svg": {
|
255
|
+
"src": "8fe7c78ea503e5570a5f304da25a18f4.svg",
|
256
|
+
"integrity": "sha256-3toLWhK8uSO9ZK4VZb5Ts6PmF7FpPw280LNrj/aWd1s= sha384-nC8EOBd4BAxIJkFAKxksaH7ufXYLwZKqLhRpx8Tm37OP49QJL4wQfSAckxeZIMRB sha512-ZQ59ZjAJjrSnH10iJji/pGwPAuLXeKgejtdfITg112TP1Y13FOWdAYFDUs4As2EAufPaoZaCIeSMKH9cw+ug9w=="
|
257
|
+
},
|
258
|
+
"instructions-notes-icon.svg": {
|
259
|
+
"src": "fd076cc8c9652104b669e16f1fd6dd39.svg",
|
260
|
+
"integrity": "sha256-W52rFj58UdsNd0AxpgN5ffwqyh1MQaotN7Ii1BmBDGU= sha384-Mp4WKhTV6XHT+hzBi0xu6BBgD9DV/OPWkhJRuouSKS1n0G0rzzew2GzbwcS3q9kz sha512-mqfzAy1YWoMF46TSuu99p2kuQN7cRcPm9511iE3k97suXlDHkXd9ViBRV3W7p6cx6Ry9Pse+RDKbhJ3WLFOsqw=="
|
261
|
+
},
|
262
|
+
"instructions-panel-icon.svg": {
|
263
|
+
"src": "f54739e81447998f251bfa4cfe5235d8.svg",
|
264
|
+
"integrity": "sha256-daRrpXUohzziG+lL6n4EC+skDqyzi5Gdm8JkgwqOG24= sha384-1Aq1g3NDNjzRZI0mn1LzesF1DR1LUwE5iXY68lDBfD8WyMx1s3M9/Rh1VXoUhhMr sha512-fy5qGHUe4wpqJbr85X0Pnj7yCXcEqmHc7TASK23xv8F1BWp4GVgnSAwnDl8e+bGlb3mFe+0G7DLmVu7VFgzzng=="
|
265
|
+
},
|
266
|
+
"lmspair.js": {
|
267
|
+
"src": "lmspair-b920eb0be760a7c440bf.min.js",
|
268
|
+
"integrity": "sha256-zj4BIjiWRMW8+QCFAF5QoySAtYl3X6v4G6ghehGUe2I= sha384-w0fhrLZFfWdcozcxYAvU5Fn6cQBoJXReN45T34IbFAAY3dPdKwXA007UCx7G8bnR sha512-PK7Y3NTJP4J01XJUP4zlvDaCbsSJH0+UGefnfEsRqQ8GKK8jukCWui23teFX8qPptHi+9cgPUz8FhEUCRssWhA=="
|
269
|
+
},
|
270
|
+
"lmspair.js.map": {
|
271
|
+
"src": "lmspair-b920eb0be760a7c440bf.min.js.map",
|
272
|
+
"integrity": "sha256-r6zqgX5y0+kz8XueErGOCJp21skTeBg2Cyc/HYpBtp0= sha384-/KoyUPKkIwTK8WbNGFlOZcNHF/yzHIIEhmUpIucAyel1Wyl16JTTszBbmIgNVXk0 sha512-q8sytkhkh0q4LuavgoI/ByIXferqUdDsRr25F9l/ws2vo3sxvWQyEq539MjltvvFXPwUjf42eRIlTANL/lEggQ=="
|
273
|
+
},
|
274
|
+
"low-cost.svg": {
|
275
|
+
"src": "d472c99532f99a96b0077c98919b225c.svg",
|
276
|
+
"integrity": "sha256-YUxnr6DqF7RUBPLRkpeMWLzD8meevaYeGICF5sjKqdg= sha384-7/cRGlxuGP5Txh69HjejWx24sA1ADsF654y3fdtXQjsfzHwkrRVz+8qz/nXuG9bs sha512-4ql/s1cwVQAUZY7SCcVG28yT8NfMO9n7xp5Q+Hbi17dq8ktZsOnW4KGRjfIQLzYv5Gq4ba1h9kS6ZuxKa4BecQ=="
|
277
|
+
},
|
278
|
+
"machine-learning.svg": {
|
279
|
+
"src": "55490dd6c556c47099d62009ff27b239.svg",
|
280
|
+
"integrity": "sha256-KcHMLf9/Jk/SiWir2R4GoiVibnaSPsCSVaepMB1OXU0= sha384-hvPkNJSzfgpCJ1H0d5cFekKzF5YS07R1bDUFkVXQn9VOKLeeHKRXizHKXihTe1nI sha512-Ioas8FnK3KSgZyCPzy+4kyVbkTcSSQI7t0I4xip+qjIMcTbkY2tmKCE4KgfBmsMibOrOkm4Cdx0ayQAHBAruRA=="
|
281
|
+
},
|
282
|
+
"openstax-logo-white.png": {
|
283
|
+
"src": "f2444d4fd75af3b6705db4faa67c5159.png",
|
284
|
+
"integrity": "sha256-tx/oz4lQz3fk1MD4bkCh+q7ccRbZO9jaUkNUdLa4agw= sha384-6QAmqkxWzSaCGZfZXeQ4DsgzeUl7VAKMxuGznMuaODWTWZ92B5NbRwnX2tmOXNGq sha512-fs3NoJJQNCJzk7wq7KfV1Hm5amlhkHSboGK2SHolGm64KIoHhh8TAixfzYX1q6F/lDNvmuNqfQOatItzuMvYaA=="
|
285
|
+
},
|
286
|
+
"openstax-tutor-beta-logo.svg": {
|
287
|
+
"src": "f18b0f23c170a67630329412c35f7db8.svg",
|
288
|
+
"integrity": "sha256-nL0MxXkLoMYbAVmOnAzUMhFN+GsijRlbOvzy4Vb71u8= sha384-KPsn3+E01chDGAQ+iwjPG4zT40tWQQgeTG1IcDrZGssmvJZZxumw3YJo79ocGgNV sha512-sb1CRkrTtA9wMmafVG9A3JXNTkBBJ3Gs+j9KNLImVPqd+HBWqQ4je7ZjKY0GH9DzDFUovhPajwPH0Ulyh5qZYA=="
|
289
|
+
},
|
290
|
+
"ost-hero.jpg": {
|
291
|
+
"src": "f0d3bb6d9242c522ff41985568cdcaa6.jpg",
|
292
|
+
"integrity": "sha256-Wmvgh9YW1rpqmLHTNDG741acRV0Ed/4bXmUyILaTKg0= sha384-86PzPaGiRYQEKGshdQ952zAF0e1wgRlmOuijLqtdnzL5Htmot1vjDK/JOxfHk2wI sha512-wtsH/jVxQTcJeY/amx8IYzLcrakfPAa/1cMC6X55fJNpinYOqYY8JEyC0N4/XOL2M2oXrXWXAN7buy15ZQ3BDQ=="
|
293
|
+
},
|
294
|
+
"pending-verification.svg": {
|
295
|
+
"src": "e767f1bf6310180b139aa05f6b533263.svg",
|
296
|
+
"integrity": "sha256-RGKCVnt5LvnfsQw5fnaKWdm1MnqbPP/S0UubXFzHTfY= sha384-3pjlCK8T1uTBU0anaYdwSYckECzPiEFv/2ZtwdSshTdOhacNtZYMQ+1SX0FXZ+s/ sha512-r1E1lmCRwedlIrD9ICE+slrnhmmJinYzfdtqIZTmIi47dNqSbdm6Pjgc4zOatB5U5D3sVB/LDB3zCmbx+F/Dlg=="
|
297
|
+
},
|
298
|
+
"personalized.svg": {
|
299
|
+
"src": "2b20d03cc82916d962b66602c03139a9.svg",
|
300
|
+
"integrity": "sha256-O/LsK3vPlv3BQ4ljTxYNbtV5MYIUHjxy6RvnydzKdJU= sha384-CAjpa1dwP1lEF8I8SAwrzQ8hVEiTNj8Qn+PReZ8i9VD4mYogIrmuaoHJfjSYMrlN sha512-CtNXI/LqpiQqLr/fj7axU7LxU0LBzhA/yvLMhKd0sSz7ak3I19BOVf5RqSJGF6UXJ7oK760TXcMrGPfL8ppmlQ=="
|
301
|
+
},
|
302
|
+
"question-details.svg": {
|
303
|
+
"src": "7db5ec34af929030c99ae593ef1129fd.svg",
|
304
|
+
"integrity": "sha256-Idl3X0htyjennT4iZ7wlad6oLwPni5e31qIjHvBG0ig= sha384-nq5eoyY7uHelThhHS6ukxsztaSPvxC8fUrRNoFzFDbkU+KVgS3SjGtBQejy5zq0+ sha512-ryndGXWUjsPEeK04P1R8QjyLFvKqGQGKcSQwzPU3hszqaPHY4DkAR6Q4xTX2lJL3B7lbpwlbucSNxJjByF2BSw=="
|
305
|
+
},
|
306
|
+
"sociology-book-thumbnail.svg": {
|
307
|
+
"src": "87f800dff49d121084ae12bdf6b239f7.svg",
|
308
|
+
"integrity": "sha256-jKdj9T2a0NDgMKN/f4kBheWk4Qj8P9ijxKVFo5Az+n0= sha384-ueLpzQcQT6xn2mLd9fwBYN5V39agKUgQ0cB5TKoZj3uPAxugcUi6/45CuyPVcso7 sha512-gXqXDjmj8Z9FIBg/9P3HDIFdIGFNj1Og4FBlx0u7R4g42P1cK6jV8zVv4vzz8WsVOhlsucpxix118PwPidhyoQ=="
|
309
|
+
},
|
310
|
+
"spaced-practice.svg": {
|
311
|
+
"src": "921793921ccdd98049dfb9afc9e214c0.svg",
|
312
|
+
"integrity": "sha256-EuBXQAroPjLMdFlcL/7lxOwGhTzdgEEtDyCMfXQK3xA= sha384-m/r7MVfXZ6nvDei8nVZGxMxMUvkTzsJ6DG0xirWVvTFTuTzj3xHhONatgW2tR2qJ sha512-3JjnvUz/2vzWu6glse5dfmGC+q7eoZVQoCZTz0kDjB2Cd62g8tMOwblxGd01rlNN58QwdM7+JtLnTNV2YmXvUg=="
|
313
|
+
},
|
314
|
+
"student-id.svg": {
|
315
|
+
"src": "a43719051e12773aac21032f5605bf44.svg",
|
316
|
+
"integrity": "sha256-JGhkqIZaqydKtTHRd34d7siuWWJqPK4aBclthhxSBHY= sha384-mvQWsSeekaNJvsxZVYkt+yjrj7SeC1mpdtuH3rDEPm29MMu6u0TM7l09gkwsr1+Q sha512-KrKVoQojDXREk1CgmPzb67opIQXHf2GGaCbaxX3MbbWoCRKsBr1SzUtKKejeOXXqEcYgH71C7alqAEAsXv157g=="
|
317
|
+
},
|
318
|
+
"thanks.svg": {
|
319
|
+
"src": "b6c57fb1a28c9b844d80c2731eceff04.svg",
|
320
|
+
"integrity": "sha256-V9gGBEv4x3SCE4rXswydR4vwBJGCDsbP6RVLcEHn20Y= sha384-mTjvU8iI3HzfV2Qwx3GrIBUXEKgeEwHe3ZRDixFJxLiN1NcjtrcbxqeIDRb0yYvH sha512-DaCD05S8s2vE3UkE7rls74qeNwSCbdGYtQXA+Bze4FkjCrWIXxb3shl2TWp93Tc0l5e4WMYE/yimfJ8Av1eLcQ=="
|
321
|
+
},
|
322
|
+
"tutor-background.svg": {
|
323
|
+
"src": "3cc6304df650475b4f10f232ff1a5ef7.svg",
|
324
|
+
"integrity": "sha256-hwlHuLTQur24h28OmJblnn3sxHpriuWag+JZEP0FmwQ= sha384-Znri9p3p0BEVkbUHn6dC/4i4eaEE/vZgo5GY7sB2vQeDQhEjNRGyviKM+n7g+tOm sha512-1pejTCv0JPxfhLQ/YccFsZeFzKNo1rmxM0pG3w/p5C9jAJNgL+8SxQzJ0CDhATrPXEKJAOMQebFjC0Jp0OJQiA=="
|
325
|
+
},
|
326
|
+
"tutor.js": {
|
327
|
+
"src": "tutor-b920eb0be760a7c440bf.min.js",
|
328
|
+
"integrity": "sha256-tUf3KX1QlfRrJ7KJQQ4Ug40ZQS2T5thLAHSQoxbFI88= sha384-jmALLyE5iHUJA6h/FjOiPJT91DkuFM1XFIvo3OI8ZuaPm+ViPRdVwMrx+i5kcchC sha512-BBlxT9ywpOCERkuP0CSu8AKLRCWmd2uNMf7xwxZPTNH7233TGTJrcnClysI6x19gjYfiaC0JAmmfzNJImEjWPQ=="
|
329
|
+
},
|
330
|
+
"tutor.js.map": {
|
331
|
+
"src": "tutor-b920eb0be760a7c440bf.min.js.map",
|
332
|
+
"integrity": "sha256-Zzt45LgnZqL+4u9CJPZkJC12HZSsB7mLGfqAF84sy0M= sha384-CQoX4WqDssFuIHAQWSYjVVypECIxQKFTSUT+NT3Zt34j7/4GnTswEP+4wHgAadWd sha512-7NM8XP+5ZrEaWzLYKcS1CmsLtRQ3o/0Xsfl2UT+H8sGRbo3aaUVagdnPE+ldWrjyKtPqKbb4Z3IrJYBUUzfZzQ=="
|
333
|
+
},
|
334
|
+
"two-step.svg": {
|
335
|
+
"src": "420bd9cd338cbadd717b467652f39972.svg",
|
336
|
+
"integrity": "sha256-aNb0APXZC5Ccskfvym4qLaYuidR8Q/DCdScvaDbY7+A= sha384-S4QxsFZ9BwOHWQf2RjXtXpghVIzss0LkIWxIr/jgjEbDj7UfkY1NNUCnjpi3tGyh sha512-fKvPtm05LtVny66ebvGEuACVH+FZasRDkNym/kbTQoSp0JHBlaGROLDyaIclri3i6/lauJBUR8E0g25hfsyPaw=="
|
337
|
+
},
|
338
|
+
"under-construction.svg": {
|
339
|
+
"src": "3ec1654100b2949e03fe3672d4d11c02.svg",
|
340
|
+
"integrity": "sha256-XYAFrfp93PRK93dmGmyuHwF0Vc8aK607Wa8QaR+d2AU= sha384-0/CAwh8G+ojbqV2jbISPpF8JZz4cM40YhSRB5OOtMDW+oeMTSAFOrydhAYbmTacR sha512-PLHo8+zkC0JqAJC3ZPK5WNZbFiSGHYYHI6XxmaL7yIEX8w5kr4n6i5N/WVpeeyLP3SOo960q1giupV3BqAHSOA=="
|
341
|
+
},
|
342
|
+
"view-analytics.svg": {
|
343
|
+
"src": "9d10bd3d48974cdbf0f331c7feddd248.svg",
|
344
|
+
"integrity": "sha256-vtNdsHjfsjbQk/5oNADgrIAIqURecD9P4ZrZAo6Pfes= sha384-PlIKDJbmktmjRxnOZWLjKXN/ClJryQR2zfPmNrfBMvxl+dku7vumqYFRIfwkoK9j sha512-pwgSXSXsQxdSIN6Jot3GFP2yQTaj3qNDNh7lkhq+w5H2CpdBCEcCV2CS/CHJNZUMymhvbEJFNs4hKASdNkX3Sw=="
|
345
|
+
},
|
346
|
+
"view-textbook-questions.svg": {
|
347
|
+
"src": "08012f03a5268802675536d260cac3f6.svg",
|
348
|
+
"integrity": "sha256-mvsVwamHpST7FAvIQHdMvnTTAY1sBid/C+ezqf+wdmg= sha384-5X7g/jp6BEjbh4fmyRz5OdXYSRQ+GOKCgbxifciG4jsEVZbEOXB80h7veLLcIyqO sha512-ebw6zM2nJ3l3B0x9x7eVWE6cOnAK1os4kKX75JBByp7YE/LV/D8He5a3EBJehUHvMlIIBsD8qqNKClanvp6Jug=="
|
349
|
+
}
|
350
|
+
}
|
351
|
+
http_version:
|
352
|
+
recorded_at: Thu, 13 Sep 2018 17:45:53 GMT
|
353
|
+
recorded_with: VCR 2.9.3
|