premailer-rails 1.11.0 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +64 -0
  3. data/CHANGELOG.md +10 -0
  4. data/Gemfile +13 -13
  5. data/README.md +11 -9
  6. data/VERSION +1 -1
  7. data/{example → examples/rails5}/.gitignore +0 -0
  8. data/examples/rails5/Gemfile +4 -0
  9. data/{example → examples/rails5}/README.md +0 -0
  10. data/{example → examples/rails5}/Rakefile +1 -1
  11. data/{example → examples/rails5}/app/assets/stylesheets/email.css +0 -0
  12. data/{example → examples/rails5}/app/mailers/example_mailer.rb +0 -0
  13. data/{example → examples/rails5}/app/views/example_mailer/test_message.html.erb +0 -0
  14. data/{example → examples/rails5}/bin/rails +1 -1
  15. data/{example → examples/rails5}/config/application.rb +4 -1
  16. data/examples/rails5/config/boot.rb +3 -0
  17. data/{example → examples/rails5}/config/environment.rb +1 -1
  18. data/{example → examples/rails5}/config/environments/development.rb +0 -0
  19. data/{example → examples/rails5}/config/environments/production.rb +0 -0
  20. data/{example → examples/rails5}/config/initializers/assets.rb +0 -0
  21. data/{example → examples/rails5}/config/routes.rb +0 -0
  22. data/{example → examples/rails5}/config.ru +2 -1
  23. data/{example → examples/rails5}/test/mailers/previews/example_mailer_preview.rb +0 -0
  24. data/examples/rails6/.gitignore +16 -0
  25. data/examples/rails6/Gemfile +5 -0
  26. data/examples/rails6/README.md +10 -0
  27. data/examples/rails6/Rakefile +6 -0
  28. data/examples/rails6/app/assets/config/manifest.js +1 -0
  29. data/examples/rails6/app/assets/stylesheets/email.css +32 -0
  30. data/examples/rails6/app/mailers/example_mailer.rb +7 -0
  31. data/examples/rails6/app/views/example_mailer/test_message.html.erb +18 -0
  32. data/examples/rails6/bin/rails +4 -0
  33. data/examples/rails6/config/application.rb +15 -0
  34. data/examples/rails6/config/boot.rb +3 -0
  35. data/examples/rails6/config/environment.rb +5 -0
  36. data/examples/rails6/config/environments/development.rb +9 -0
  37. data/examples/rails6/config/environments/production.rb +9 -0
  38. data/examples/rails6/config/routes.rb +3 -0
  39. data/examples/rails6/config.ru +6 -0
  40. data/examples/rails6/test/mailers/previews/example_mailer_preview.rb +5 -0
  41. data/examples/rails7-propshaft/.gitignore +16 -0
  42. data/examples/rails7-propshaft/Gemfile +6 -0
  43. data/examples/rails7-propshaft/README.md +10 -0
  44. data/examples/rails7-propshaft/Rakefile +6 -0
  45. data/examples/rails7-propshaft/app/assets/stylesheets/email.css +32 -0
  46. data/examples/rails7-propshaft/app/mailers/example_mailer.rb +7 -0
  47. data/examples/rails7-propshaft/app/views/example_mailer/test_message.html.erb +18 -0
  48. data/examples/rails7-propshaft/bin/rails +4 -0
  49. data/examples/rails7-propshaft/config/application.rb +14 -0
  50. data/examples/rails7-propshaft/config/boot.rb +3 -0
  51. data/examples/rails7-propshaft/config/environment.rb +5 -0
  52. data/examples/rails7-propshaft/config/environments/development.rb +9 -0
  53. data/examples/rails7-propshaft/config/environments/production.rb +9 -0
  54. data/examples/rails7-propshaft/config/routes.rb +3 -0
  55. data/examples/rails7-propshaft/config.ru +6 -0
  56. data/examples/rails7-propshaft/test/mailers/previews/example_mailer_preview.rb +5 -0
  57. data/examples/rails7-sprockets/.gitignore +16 -0
  58. data/examples/rails7-sprockets/Gemfile +6 -0
  59. data/examples/rails7-sprockets/README.md +10 -0
  60. data/examples/rails7-sprockets/Rakefile +6 -0
  61. data/examples/rails7-sprockets/app/assets/config/manifest.js +1 -0
  62. data/examples/rails7-sprockets/app/assets/stylesheets/email.css +32 -0
  63. data/examples/rails7-sprockets/app/mailers/example_mailer.rb +7 -0
  64. data/examples/rails7-sprockets/app/views/example_mailer/test_message.html.erb +18 -0
  65. data/examples/rails7-sprockets/bin/rails +4 -0
  66. data/examples/rails7-sprockets/config/application.rb +14 -0
  67. data/examples/rails7-sprockets/config/boot.rb +3 -0
  68. data/examples/rails7-sprockets/config/environment.rb +5 -0
  69. data/examples/rails7-sprockets/config/environments/development.rb +9 -0
  70. data/examples/rails7-sprockets/config/environments/production.rb +9 -0
  71. data/examples/rails7-sprockets/config/routes.rb +3 -0
  72. data/examples/rails7-sprockets/config.ru +6 -0
  73. data/examples/rails7-sprockets/test/mailers/previews/example_mailer_preview.rb +5 -0
  74. data/lib/premailer/rails/css_helper.rb +2 -0
  75. data/lib/premailer/rails/css_loaders/asset_pipeline_loader.rb +5 -4
  76. data/lib/premailer/rails/css_loaders/network_loader.rb +1 -1
  77. data/lib/premailer/rails/css_loaders/propshaft_loader.rb +38 -0
  78. data/lib/premailer/rails/css_loaders.rb +1 -0
  79. data/lib/premailer/rails/railtie.rb +1 -1
  80. data/lib/premailer/rails.rb +1 -1
  81. data/premailer-rails.gemspec +3 -1
  82. data/spec/integration/css_helper_spec.rb +173 -71
  83. data/spec/rails_app/config/application.rb +7 -1
  84. data/spec/spec_helper.rb +0 -13
  85. data/spec/unit/css_loaders/asset_pipeline_loader_spec.rb +44 -32
  86. data/spec/unit/css_loaders/propshaft_loader_spec.rb +57 -0
  87. metadata +91 -56
  88. data/.coveralls.yml +0 -1
  89. data/.travis.yml +0 -16
  90. data/example/Gemfile +0 -10
  91. data/example/config/boot.rb +0 -3
  92. data/example/config/secrets.yml +0 -2
@@ -1,45 +1,57 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Premailer::Rails::CSSLoaders::AssetPipelineLoader do
4
- before do
5
- allow(Rails.configuration)
6
- .to receive(:assets).and_return(double(prefix: '/assets'))
7
- allow(Rails.configuration).to receive(:relative_url_root).and_return(nil)
8
- end
9
-
10
- describe ".file_name" do
11
- subject do
12
- Premailer::Rails::CSSLoaders::AssetPipelineLoader.file_name(asset)
3
+ if defined?(::Sprockets)
4
+ describe Premailer::Rails::CSSLoaders::AssetPipelineLoader do
5
+ before do
6
+ allow(Rails.configuration)
7
+ .to receive(:assets).and_return(double(prefix: '/assets'))
8
+ allow(Rails.configuration).to receive(:relative_url_root).and_return(nil)
13
9
  end
14
10
 
15
- context "when asset file path contains prefix" do
16
- let(:asset) { '/assets/application.css' }
17
- it { is_expected.to eq('application.css') }
18
- end
11
+ describe ".file_name" do
12
+ subject do
13
+ Premailer::Rails::CSSLoaders::AssetPipelineLoader.file_name(asset)
14
+ end
19
15
 
20
- context "when asset file path contains prefix and relative_url_root is set" do
21
- before do
22
- allow(Rails.configuration)
23
- .to receive(:relative_url_root).and_return('/foo')
16
+ context "when asset file path contains prefix" do
17
+ let(:asset) { '/assets/application.css' }
18
+ it { is_expected.to eq('application.css') }
24
19
  end
25
20
 
26
- let(:asset) { '/foo/assets/application.css' }
27
- it { is_expected.to eq('application.css') }
28
- end
21
+ context "when asset file path contains prefix and relative_url_root is set" do
22
+ before do
23
+ allow(Rails.configuration)
24
+ .to receive(:relative_url_root).and_return('/foo')
25
+ end
29
26
 
30
- context "when asset file path contains 32 chars fingerprint" do
31
- let(:asset) { 'application-6776f581a4329e299531e1d52aa59832.css' }
32
- it { is_expected.to eq('application.css') }
33
- end
27
+ let(:asset) { '/foo/assets/application.css' }
28
+ it { is_expected.to eq('application.css') }
29
+ end
34
30
 
35
- context "when asset file path contains 64 chars fingerprint" do
36
- let(:asset) { 'application-02275ccb3fd0c11615bbfb11c99ea123ca2287e75045fe7b72cefafb880dad2b.css' }
37
- it { is_expected.to eq('application.css') }
38
- end
31
+ context "when asset file path contains prefix and relative_url_root is set to root" do
32
+ before do
33
+ allow(Rails.configuration)
34
+ .to receive(:relative_url_root).and_return('/')
35
+ end
39
36
 
40
- context "when asset file page contains numbers, but not a fingerprint" do
41
- let(:asset) { 'test/20130708152545-foo-bar.css' }
42
- it { is_expected.to eq("test/20130708152545-foo-bar.css") }
37
+ let(:asset) { '/assets/application.css' }
38
+ it { is_expected.to eq('application.css') }
39
+ end
40
+
41
+ context "when asset file path contains 32 chars fingerprint" do
42
+ let(:asset) { 'application-6776f581a4329e299531e1d52aa59832.css' }
43
+ it { is_expected.to eq('application.css') }
44
+ end
45
+
46
+ context "when asset file path contains 64 chars fingerprint" do
47
+ let(:asset) { 'application-02275ccb3fd0c11615bbfb11c99ea123ca2287e75045fe7b72cefafb880dad2b.css' }
48
+ it { is_expected.to eq('application.css') }
49
+ end
50
+
51
+ context "when asset file page contains numbers, but not a fingerprint" do
52
+ let(:asset) { 'test/20130708152545-foo-bar.css' }
53
+ it { is_expected.to eq("test/20130708152545-foo-bar.css") }
54
+ end
43
55
  end
44
56
  end
45
57
  end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+
3
+ if defined?(::Propshaft)
4
+ describe Premailer::Rails::CSSLoaders::PropshaftLoader do
5
+ before do
6
+ allow(Rails.application)
7
+ .to receive(:assets).and_return(double(prefix: '/assets'))
8
+ allow(Rails.configuration).to receive(:relative_url_root).and_return(nil)
9
+ end
10
+
11
+ describe ".file_name" do
12
+ subject do
13
+ described_class.file_name(asset)
14
+ end
15
+
16
+ context "when asset file path contains prefix" do
17
+ let(:asset) { '/assets/application.css' }
18
+ it { is_expected.to eq('application.css') }
19
+ end
20
+
21
+ context "when asset file path contains prefix and relative_url_root is set" do
22
+ before do
23
+ allow(Rails.configuration)
24
+ .to receive(:relative_url_root).and_return('/foo')
25
+ end
26
+
27
+ let(:asset) { '/foo/assets/application.css' }
28
+ it { is_expected.to eq('application.css') }
29
+ end
30
+
31
+ context "when asset file path contains prefix and relative_url_root is set to root" do
32
+ before do
33
+ allow(Rails.configuration)
34
+ .to receive(:relative_url_root).and_return('/')
35
+ end
36
+
37
+ let(:asset) { '/assets/application.css' }
38
+ it { is_expected.to eq('application.css') }
39
+ end
40
+
41
+ context "when asset file path contains 7 chars fingerprint" do
42
+ let(:asset) { 'application-1234567.css' }
43
+ it { is_expected.to eq('application.css') }
44
+ end
45
+
46
+ context "when asset file path contains 128 chars fingerprint" do
47
+ let(:asset) { 'application-02275ccb3fd0c11615bbfb11c99ea123ca2287e75045fe7b72cefafb880dad2b.css' }
48
+ it { is_expected.to eq('application.css') }
49
+ end
50
+
51
+ context "when asset file page contains numbers, but not a fingerprint" do
52
+ let(:asset) { 'test/20130708152545-foo-bar.css' }
53
+ it { is_expected.to eq("test/20130708152545-foo-bar.css") }
54
+ end
55
+ end
56
+ end
57
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: premailer-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.0
4
+ version: 1.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philipe Fatio
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-17 00:00:00.000000000 Z
11
+ date: 2022-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: premailer
@@ -45,35 +45,35 @@ dependencies:
45
45
  - !ruby/object:Gem::Version
46
46
  version: '3'
47
47
  - !ruby/object:Gem::Dependency
48
- name: rspec
48
+ name: net-smtp
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: '3.3'
54
- type: :development
53
+ version: '0'
54
+ type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - "~>"
58
+ - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: '3.3'
60
+ version: '0'
61
61
  - !ruby/object:Gem::Dependency
62
- name: nokogiri
62
+ name: rspec
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - ">="
65
+ - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0'
67
+ version: '3.3'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ">="
72
+ - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0'
74
+ version: '3.3'
75
75
  - !ruby/object:Gem::Dependency
76
- name: coveralls
76
+ name: nokogiri
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
@@ -97,40 +97,89 @@ executables: []
97
97
  extensions: []
98
98
  extra_rdoc_files: []
99
99
  files:
100
- - ".coveralls.yml"
100
+ - ".github/workflows/test.yml"
101
101
  - ".gitignore"
102
102
  - ".rspec"
103
- - ".travis.yml"
104
103
  - CHANGELOG.md
105
104
  - Gemfile
106
105
  - LICENSE
107
106
  - README.md
108
107
  - Rakefile
109
108
  - VERSION
110
- - example/.gitignore
111
- - example/Gemfile
112
- - example/README.md
113
- - example/Rakefile
114
- - example/app/assets/stylesheets/email.css
115
- - example/app/mailers/example_mailer.rb
116
- - example/app/views/example_mailer/test_message.html.erb
117
- - example/bin/rails
118
- - example/config.ru
119
- - example/config/application.rb
120
- - example/config/boot.rb
121
- - example/config/environment.rb
122
- - example/config/environments/development.rb
123
- - example/config/environments/production.rb
124
- - example/config/initializers/assets.rb
125
- - example/config/routes.rb
126
- - example/config/secrets.yml
127
- - example/test/mailers/previews/example_mailer_preview.rb
109
+ - examples/rails5/.gitignore
110
+ - examples/rails5/Gemfile
111
+ - examples/rails5/README.md
112
+ - examples/rails5/Rakefile
113
+ - examples/rails5/app/assets/stylesheets/email.css
114
+ - examples/rails5/app/mailers/example_mailer.rb
115
+ - examples/rails5/app/views/example_mailer/test_message.html.erb
116
+ - examples/rails5/bin/rails
117
+ - examples/rails5/config.ru
118
+ - examples/rails5/config/application.rb
119
+ - examples/rails5/config/boot.rb
120
+ - examples/rails5/config/environment.rb
121
+ - examples/rails5/config/environments/development.rb
122
+ - examples/rails5/config/environments/production.rb
123
+ - examples/rails5/config/initializers/assets.rb
124
+ - examples/rails5/config/routes.rb
125
+ - examples/rails5/test/mailers/previews/example_mailer_preview.rb
126
+ - examples/rails6/.gitignore
127
+ - examples/rails6/Gemfile
128
+ - examples/rails6/README.md
129
+ - examples/rails6/Rakefile
130
+ - examples/rails6/app/assets/config/manifest.js
131
+ - examples/rails6/app/assets/stylesheets/email.css
132
+ - examples/rails6/app/mailers/example_mailer.rb
133
+ - examples/rails6/app/views/example_mailer/test_message.html.erb
134
+ - examples/rails6/bin/rails
135
+ - examples/rails6/config.ru
136
+ - examples/rails6/config/application.rb
137
+ - examples/rails6/config/boot.rb
138
+ - examples/rails6/config/environment.rb
139
+ - examples/rails6/config/environments/development.rb
140
+ - examples/rails6/config/environments/production.rb
141
+ - examples/rails6/config/routes.rb
142
+ - examples/rails6/test/mailers/previews/example_mailer_preview.rb
143
+ - examples/rails7-propshaft/.gitignore
144
+ - examples/rails7-propshaft/Gemfile
145
+ - examples/rails7-propshaft/README.md
146
+ - examples/rails7-propshaft/Rakefile
147
+ - examples/rails7-propshaft/app/assets/stylesheets/email.css
148
+ - examples/rails7-propshaft/app/mailers/example_mailer.rb
149
+ - examples/rails7-propshaft/app/views/example_mailer/test_message.html.erb
150
+ - examples/rails7-propshaft/bin/rails
151
+ - examples/rails7-propshaft/config.ru
152
+ - examples/rails7-propshaft/config/application.rb
153
+ - examples/rails7-propshaft/config/boot.rb
154
+ - examples/rails7-propshaft/config/environment.rb
155
+ - examples/rails7-propshaft/config/environments/development.rb
156
+ - examples/rails7-propshaft/config/environments/production.rb
157
+ - examples/rails7-propshaft/config/routes.rb
158
+ - examples/rails7-propshaft/test/mailers/previews/example_mailer_preview.rb
159
+ - examples/rails7-sprockets/.gitignore
160
+ - examples/rails7-sprockets/Gemfile
161
+ - examples/rails7-sprockets/README.md
162
+ - examples/rails7-sprockets/Rakefile
163
+ - examples/rails7-sprockets/app/assets/config/manifest.js
164
+ - examples/rails7-sprockets/app/assets/stylesheets/email.css
165
+ - examples/rails7-sprockets/app/mailers/example_mailer.rb
166
+ - examples/rails7-sprockets/app/views/example_mailer/test_message.html.erb
167
+ - examples/rails7-sprockets/bin/rails
168
+ - examples/rails7-sprockets/config.ru
169
+ - examples/rails7-sprockets/config/application.rb
170
+ - examples/rails7-sprockets/config/boot.rb
171
+ - examples/rails7-sprockets/config/environment.rb
172
+ - examples/rails7-sprockets/config/environments/development.rb
173
+ - examples/rails7-sprockets/config/environments/production.rb
174
+ - examples/rails7-sprockets/config/routes.rb
175
+ - examples/rails7-sprockets/test/mailers/previews/example_mailer_preview.rb
128
176
  - lib/premailer/rails.rb
129
177
  - lib/premailer/rails/css_helper.rb
130
178
  - lib/premailer/rails/css_loaders.rb
131
179
  - lib/premailer/rails/css_loaders/asset_pipeline_loader.rb
132
180
  - lib/premailer/rails/css_loaders/file_system_loader.rb
133
181
  - lib/premailer/rails/css_loaders/network_loader.rb
182
+ - lib/premailer/rails/css_loaders/propshaft_loader.rb
134
183
  - lib/premailer/rails/customized_premailer.rb
135
184
  - lib/premailer/rails/hook.rb
136
185
  - lib/premailer/rails/railtie.rb
@@ -160,13 +209,15 @@ files:
160
209
  - spec/unit/css_loaders/asset_pipeline_loader_spec.rb
161
210
  - spec/unit/css_loaders/file_system_loader_spec.rb
162
211
  - spec/unit/css_loaders/network_loader_spec.rb
212
+ - spec/unit/css_loaders/propshaft_loader_spec.rb
163
213
  - spec/unit/customized_premailer_spec.rb
164
214
  - spec/unit/premailer_rails_spec.rb
165
215
  homepage: https://github.com/fphilipe/premailer-rails
166
216
  licenses:
167
217
  - MIT
168
- metadata: {}
169
- post_install_message:
218
+ metadata:
219
+ changelog_uri: https://github.com/fphilipe/premailer-rails/blob/v1.12.0/CHANGELOG.md
220
+ post_install_message:
170
221
  rdoc_options: []
171
222
  require_paths:
172
223
  - lib
@@ -181,28 +232,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
232
  - !ruby/object:Gem::Version
182
233
  version: '0'
183
234
  requirements: []
184
- rubygems_version: 3.1.2
185
- signing_key:
235
+ rubygems_version: 3.3.3
236
+ signing_key:
186
237
  specification_version: 4
187
238
  summary: Easily create styled HTML emails in Rails.
188
239
  test_files:
189
- - example/Gemfile
190
- - example/README.md
191
- - example/Rakefile
192
- - example/app/assets/stylesheets/email.css
193
- - example/app/mailers/example_mailer.rb
194
- - example/app/views/example_mailer/test_message.html.erb
195
- - example/bin/rails
196
- - example/config.ru
197
- - example/config/application.rb
198
- - example/config/boot.rb
199
- - example/config/environment.rb
200
- - example/config/environments/development.rb
201
- - example/config/environments/production.rb
202
- - example/config/initializers/assets.rb
203
- - example/config/routes.rb
204
- - example/config/secrets.yml
205
- - example/test/mailers/previews/example_mailer_preview.rb
206
240
  - spec/integration/css_helper_spec.rb
207
241
  - spec/integration/delivery_spec.rb
208
242
  - spec/integration/hook_spec.rb
@@ -227,5 +261,6 @@ test_files:
227
261
  - spec/unit/css_loaders/asset_pipeline_loader_spec.rb
228
262
  - spec/unit/css_loaders/file_system_loader_spec.rb
229
263
  - spec/unit/css_loaders/network_loader_spec.rb
264
+ - spec/unit/css_loaders/propshaft_loader_spec.rb
230
265
  - spec/unit/customized_premailer_spec.rb
231
266
  - spec/unit/premailer_rails_spec.rb
data/.coveralls.yml DELETED
@@ -1 +0,0 @@
1
- service_name: travis-ci
data/.travis.yml DELETED
@@ -1,16 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- cache: bundler
4
- script: bundle exec rspec
5
- rvm:
6
- - 2.6.5
7
- - 2.7.0
8
- env:
9
- matrix:
10
- - ACTION_MAILER_VERSION=5
11
- - ACTION_MAILER_VERSION=6
12
- - ACTION_MAILER_VERSION=master
13
- matrix:
14
- fast_finish: true
15
- allow_failures:
16
- - env: ACTION_MAILER_VERSION=master
data/example/Gemfile DELETED
@@ -1,10 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'rails', '~> 5.0.0.beta3'
4
- gem 'premailer-rails', path: '..'
5
- gem 'nokogiri'
6
-
7
- platforms :rbx do
8
- gem 'rubysl'
9
- gem 'racc'
10
- end
@@ -1,3 +0,0 @@
1
- ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
2
-
3
- require 'bundler/setup' # Set up gems listed in the Gemfile.
@@ -1,2 +0,0 @@
1
- development:
2
- secret_key_base: bc1d05753b1a42a7d983dcb4f998c433532ec8f91ab3842a36ed3d9072d143a2d9c05a6dc43a3d780a2ff3d8e7b75a1011ae2e0d13a022e98dc1f0299da5a5a0