newsletter 3.2.6 → 3.2.7

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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/app/controllers/newsletter/newsletters_controller.rb +8 -2
  4. data/app/models/newsletter/design.rb +11 -6
  5. data/app/models/newsletter/element.rb +1 -1
  6. data/app/models/newsletter/newsletter.rb +5 -0
  7. data/app/views/newsletter/designs/_form.html.erb +2 -0
  8. data/app/views/newsletter/newsletters/_head.html.erb +1 -1
  9. data/app/views/newsletter/newsletters/_newsletter.html.erb +13 -2
  10. data/app/views/newsletter/newsletters/archive.html.erb +1 -1
  11. data/app/views/newsletter/newsletters/edit.html.erb +1 -1
  12. data/app/views/newsletter/newsletters/show.css.erb +1 -0
  13. data/app/views/newsletter/newsletters/show.html.erb +13 -2
  14. data/app/views/newsletter/newsletters/stylesheet.css +1 -0
  15. data/config/locales/newsletters.en.yml +1 -0
  16. data/config/routes.rb +1 -1
  17. data/db/migrate/002_carrier_wave_for_assets.rb +19 -0
  18. data/db/migrate/003_add_stylesheet_text_to_designs.rb +12 -0
  19. data/designs/exports/example-export.yaml +61 -268
  20. data/lib/newsletter/engine.rb +7 -1
  21. data/lib/newsletter/version.rb +1 -1
  22. data/newsletter.gemspec +11 -0
  23. data/spec/test_app/config/database.postgres.yml +3 -3
  24. data/spec/test_app/db/migrate/20150507154748_carrier_wave_for_assets.rb +19 -0
  25. data/spec/test_app/db/migrate/20150507195612_add_stylesheet_text_to_designs.rb +12 -0
  26. data/spec/test_app/db/schema.rb +5 -4
  27. data/spec/test_app/script/full_suite +3 -3
  28. data/spec/test_app/spec/factories/designs.rb +3 -1
  29. data/spec/test_app/spec/factories/newsletters.rb +1 -1
  30. data/spec/test_app/spec/features/newsletter/design_spec.rb +2 -0
  31. data/spec/test_app/spec/models/newsletter/design_spec.rb +27 -3
  32. data/spec/test_app/spec/models/newsletter/engine_spec.rb +11 -0
  33. data/spec/test_app/spec/models/newsletter/newsletter_spec.rb +21 -0
  34. data/spec/test_app/spec/support/files/newsletter_empty_table_prefix.yml +12 -0
  35. metadata +21 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca3ac56519c2cce9f9541adf35b13c59661a4fd0
4
- data.tar.gz: 31e107af3b406dac20f079a6743b86ad2cd8ee67
3
+ metadata.gz: 624c68b4546267131697484baeb37761fb6409da
4
+ data.tar.gz: c77304e432fd8af78762564f68aff2f236b0ae49
5
5
  SHA512:
6
- metadata.gz: c31f181214ef20662cf68707c9f0332c3994c5a16aa248455038ed9aff2339c05c92545ae6ff3a427b333cf45b63fa74431b0a46e8cee302f6113c8bc5b37e3d
7
- data.tar.gz: 5361c58eacf4b85987984f2f2da6211fad2103d618ff9af71655d7cf289057620f35270ae4ce71170783166838dcbd87196c12e9b784c86dd2e7e79c81b01f04
6
+ metadata.gz: e957c0dbe1deb75a342ec8de0b547858cb23ddf47878cad79036a76179c3d5e309e98271ee166d09a5b30c36031bcc81d491e3cd231f37addc99a802756f0d6c
7
+ data.tar.gz: 077ba6cad38aadd2617d2837689a43d038035a96cd5c5c6fb0726f6adc1a5f1f00931ca7a5740a160ad204ff56c1e5c25b1ae329d9654faee7b6ed632ac47084
data/README.md CHANGED
@@ -11,6 +11,7 @@ Online Documentation
11
11
  --------------------
12
12
  * [Homepage](http://ireachnews.com)
13
13
  * [Github Wiki](https://github.com/LoneStarInternet/newsletter/wiki)
14
+ * [Changelog](http://www.ireachnews.com/index.html#changelog)
14
15
 
15
16
  Requirements
16
17
  ------------
@@ -1,7 +1,6 @@
1
1
  module Newsletter
2
2
  class NewslettersController < ::Newsletter::ApplicationController
3
3
  helper_method :newsletter
4
-
5
4
  def sort
6
5
  Newsletter.all.each do | newsletter |
7
6
  newsletter.sequence = params["newsletters"].index(newsletter.id.to_s)+1
@@ -14,6 +13,10 @@ module Newsletter
14
13
  @newsletters = Newsletter.published
15
14
  render :layout => ::Newsletter.archive_layout
16
15
  end
16
+
17
+ def stylesheet
18
+
19
+ end
17
20
 
18
21
  def publish
19
22
  if @newsletter.publish
@@ -39,7 +42,10 @@ module Newsletter
39
42
 
40
43
  def show
41
44
  return redirect_to(main_app.newsletter_archive_path) unless @newsletter.present?
42
- render layout: false
45
+ respond_to do |format|
46
+ format.html { render layout: false }
47
+ format.css { render layout: false, content_type: 'text/css' }
48
+ end
43
49
  end
44
50
 
45
51
  def editor
@@ -17,7 +17,8 @@ module ::Newsletter
17
17
 
18
18
  accepts_nested_attributes_for :areas
19
19
 
20
- attr_accessible :name, :description, :html_text, :areas_attributes
20
+ attr_accessible :name, :description, :html_text, :areas_attributes,
21
+ :stylesheet_text
21
22
 
22
23
  scope :active, :conditions => {:deleted_at => nil}
23
24
 
@@ -35,6 +36,7 @@ module ::Newsletter
35
36
  YAML.dump( {
36
37
  :name => name,
37
38
  :html_text => html_text,
39
+ :stylesheet_text => stylesheet_text,
38
40
  :description => description,
39
41
  :areas => areas.collect{|area| area.export_fields},
40
42
  :elements => elements.collect{|element| element.export_fields},
@@ -55,7 +57,8 @@ module ::Newsletter
55
57
  data[:name] = design_name if design_name
56
58
  design = Design.create(:name => data[:name],
57
59
  :html_text => data[:html_text],
58
- :description => data[:description])
60
+ :description => data[:description],
61
+ :stylesheet_text => data[:stylesheet_text])
59
62
  data[:areas].each do |area_data|
60
63
  Area.import(design,area_data)
61
64
  end
@@ -102,9 +105,11 @@ module ::Newsletter
102
105
  end
103
106
 
104
107
  # move a design's images on name change
105
- def move_images
106
- return unless @old_name && @old_name != name
107
- FileUtils.mv(images_path(@old_name),images_path)
108
+ def move_images(old_name=nil, new_name=nil)
109
+ old_name ||= @old_name
110
+ name ||= new_name
111
+ return unless old_name && old_name != name
112
+ FileUtils.mv(images_path(old_name),images_path)
108
113
  end
109
114
 
110
115
  # imports images from array of base64 encoded images
@@ -119,7 +124,7 @@ module ::Newsletter
119
124
  end
120
125
 
121
126
  def html_text
122
- return @html_text if @html_text
127
+ return @html_text if @html_text.present?
123
128
  @html_text = read_design
124
129
  end
125
130
 
@@ -52,7 +52,7 @@ module Newsletter
52
52
 
53
53
  # retrieves the html erb design from the file system
54
54
  def html_text
55
- return @html_text if @html_text
55
+ return @html_text if @html_text.present?
56
56
  @html_text = read_design
57
57
  end
58
58
 
@@ -31,6 +31,11 @@ module Newsletter
31
31
  def headlines
32
32
  pieces.select{|piece| piece.respond_to?(:headline)}
33
33
  end
34
+
35
+ # returns it's stylesheet
36
+ def stylesheet
37
+ design.stylesheet_text.to_s
38
+ end
34
39
 
35
40
  # returns the newsletter's content as plain text
36
41
  def email_text
@@ -8,6 +8,8 @@
8
8
  <label>Design Filename</label>
9
9
  <div style="padding-top: 9px;"><%= @design.view_path.gsub(/^#{::Newsletter.designs_path}/,'') %></div><br />
10
10
  <% end %>
11
+ <%= f.label :stylesheet_text %>
12
+ <%= f.text_area :stylesheet_text %><br />
11
13
  <%= f.label :html_text %>
12
14
  <%= f.text_area :html_text %><br />
13
15
  <div class='newsletter_parts_group'>
@@ -1,8 +1,8 @@
1
1
  <% unless is_email? %>
2
2
  <link rel="stylesheet" href="https://code.jquery.com/ui/1.10.3/themes/le-frog/jquery-ui.css">
3
3
  <%= javascript_include_tag 'newsletter/application' %>
4
+ <%= csrf_meta_tag %>
4
5
  <%= yield :head_content %>
5
-
6
6
  <style>
7
7
  .edit_link {
8
8
  font-family: Verdana, Arial, Helvetica, sans-serif;
@@ -1,11 +1,22 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
1
+ <% unless is_email? %>
2
+ <!DOCTYPE html>
3
+ <html lang="en">
3
4
  <head>
4
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
5
7
  <title><%= @newsletter.name %></title>
8
+ <link rel="stylesheet" type="text/css" media="screen" href="<%= "/newsletters/#{@newsletter.id}/stylesheet.css" %>"/>
6
9
  <%= render 'newsletter/newsletters/head' %>
7
10
  </head>
8
11
  <body>
12
+ <% else %>
13
+ <!DOCTYPE html>
14
+ <style>
15
+ <%= @newsletter.design.stylesheet_text %>
16
+ </style>
17
+ <% end %>
9
18
  <%= render :inline => File.readlines(@newsletter.design.view_path).join, :locals => @newsletter.locals %>
19
+ <% unless is_email? %>
10
20
  </body>
11
21
  </html>
22
+ <% end %>
@@ -2,7 +2,7 @@
2
2
 
3
3
  <ul style="margin-bottom: 100px;">
4
4
  <% @newsletters.published.each do |newsletter| %>
5
- <li><%= link_to newsletter.name, public_newsletter_path(newsletter) %></li>
5
+ <li><%= link_to newsletter.name, newsletter.public_url('public') %></li>
6
6
  <% end %>
7
7
  </ul>
8
8
 
@@ -13,7 +13,7 @@
13
13
  <% end %>
14
14
 
15
15
  <p><b>Newsletter Window Size: </b>
16
- <% [[640,480],[800,600],[1024,768],[1280,1024],[1600,1200]].each do |width,height| %>
16
+ <% [[320,568],[640,480],[800,600],[1024,768],[1280,1024],[1600,1200]].each do |width,height| %>
17
17
  <%= link_to_function "#{width}x#{height}","$('#preview').css({height: '#{height}px', width: '#{width}px'})" %>
18
18
  <% end %>
19
19
  </p>
@@ -0,0 +1 @@
1
+ <%= @newsletter.design.stylesheet_text %>
@@ -1,11 +1,22 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
1
+ <% unless is_email? %>
2
+ <!DOCTYPE html>
3
+ <html lang="en">
3
4
  <head>
4
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
5
7
  <title><%= @newsletter.name %></title>
8
+ <link rel="stylesheet" type="text/css" media="screen" href="<%= "/newsletters/#{@newsletter.id}/stylesheet.css" %>"/>
6
9
  <%= render 'newsletter/newsletters/head' %>
7
10
  </head>
8
11
  <body>
12
+ <% else %>
13
+ <!DOCTYPE html>
14
+ <style>
15
+ <%= @newsletter.design.stylesheet_text %>
16
+ </style>
17
+ <% end %>
9
18
  <%= render :inline => File.readlines(@newsletter.design.view_path).join, :locals => @newsletter.locals %>
19
+ <% unless is_email? %>
10
20
  </body>
11
21
  </html>
22
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= @newsletter.design.stylesheet_text %>
@@ -13,6 +13,7 @@ en:
13
13
  name: "Name"
14
14
  description: "Description"
15
15
  html_text: "HTML code"
16
+ stylesheet_text: "Style Sheet"
16
17
  newsletter/element:
17
18
  html_text: "HTML code"
18
19
 
@@ -17,7 +17,7 @@ Newsletter::Engine.routes.draw do
17
17
  end
18
18
  resources :elements, :only => [:edit,:create,:update,:destroy]
19
19
 
20
- match "/:newsletter_id/areas/:id/sort" => "newsletter/areas#sort", :method => :get, as: 'sort_area'
20
+ match "/:newsletter_id/areas/:id/sort" => "areas#sort", :method => :get, as: 'sort_area'
21
21
  match '/newsletters/:id/:mode' => 'newsletters#show', :method => :get, :as => :public_newsletter_mode
22
22
  match '/newsletters/:id/public' => 'newsletters#show', :method => :get, :as => :public_newsletter
23
23
  match '/newsletters/:id' => 'newsletters#show', :method => :get, :as => :newsletter
@@ -0,0 +1,19 @@
1
+ class CarrierWaveForAssets < ActiveRecord::Migration
2
+ def up
3
+ table_prefix = 'newsletter_'
4
+ begin
5
+ table_prefix = ::Newsletter.table_prefix
6
+ rescue
7
+ end
8
+ rename_column :"#{table_prefix}assets", :filename, :image
9
+ end
10
+
11
+ def down
12
+ table_prefix = 'newsletter_'
13
+ begin
14
+ table_prefix = ::Newsletter.table_prefix
15
+ rescue
16
+ end
17
+ rename_column :"#{table_prefix}assets", :image, :filename
18
+ end
19
+ end
@@ -0,0 +1,12 @@
1
+ class AddStylesheetTextToDesigns < ActiveRecord::Migration
2
+ def table_prefix
3
+ table_prefix = 'newsletter_'
4
+ begin
5
+ table_prefix = ::Newsletter.table_prefix
6
+ rescue
7
+ end
8
+ end
9
+ def change
10
+ add_column :"#{table_prefix}designs", :stylesheet_text, :text
11
+ end
12
+ end
@@ -1,45 +1,48 @@
1
1
  ---
2
2
  :name: My Design
3
- :html_text: ! "<style type=\"text/css\">\r\nh1{font-family: Arial Black, Arial, Helvetica,
4
- sans-serif; color: #333333; font-size:22px; margin:0; padding: 0 0 10px 0; }\r\nh2{font-family:
5
- Arial Black, Arial, Helvetica, sans-serif; color: #333333; font-size:17px; margin:0;
6
- padding: 7px 0 0 0;}\r\nh3 {font-family: Arial Black, Arial, Helvetica, sans-serif;
7
- color: #0068b3; font-size:9pt; margin:0; padding: 0;}\r\np {font-family: Arial,
8
- Helvetica, sans-serif; color: #333333; font-size:8.5pt; margin-top:4px; margin-bottom:4px;}\r\np.right{font-family:
9
- Arial, Helvetica, sans-serif; color: #333333; font-size:9.5pt; margin:0 0 15px 0;
10
- padding: 0; line-height:1.2em;}\r\na{text-decoration:none; color: #0068b3;}\r\na:hover
11
- {color: #7fc348;}\r\n.footer {font-size:7pt;}\r\np a {font-size: 6pt; font-weight:
12
- bold;}\r\np.right a {font-size: 7pt;}\r\nhr{color: #7fc348; margin:5px 0; height:
13
- 1px; padding: 0;}\r\n.bullet {color: #7fc348; font-weight: bold; height: 5px;}\r\n
14
- .wrappertable
15
- {\r\n\twidth: 587px;\r\n\tmargin: 0 8px;\r\n }\r\n .leftcoltable {\r\n\twidth:
16
- 227px;\r\n } \r\n .rightcoltable {\r\n\twidth: 347px;\r\n }\r\n .left_col_img
17
- {\r\n\twidth: 220px;\r\n }\r\n .right_col_img {\r\n\twidth: 320px;\r\n }\r\n
18
- \ .right_col_art_img {\r\n\twidth: 174px;\r\n }\r\n@media only screen and (max-device-width:
19
- 600px) {\r\n .wrappertable {\r\n\twidth: 95%;\r\n }\r\n .leftcoltable {\r\n\twidth:
20
- 100%;\r\n }\r\n .rightcoltable {\r\n\twidth: 100%;\r\n }\r\n .left_col_img {\r\n\twidth:
21
- 95%;\r\n }\r\n .right_col_img {\r\n\twidth: 95%;\r\n }\r\n .header_img {\r\n\twidth:
22
- 100%;\r\n }\r\n}\r\n</style>\r\n<center>\r\n<table cellspacing=\"0\" cellpadding=\"0\"
23
- class=\"wrappertable\" width=\"587\">\r\n<tr><td colspan=\"2\" align=\"center\"><%= design_image(\"newsletter_header.png\", width: \"587\", class: \"header_img\") %></td></tr>\r\n<tr
24
- bgcolor=\"#0068b3\" cellpadding=\"2\" cellspacing=\"2\"><td style=\"font-family:arial,sans-serif;font-size:11px;color:#FFFFFF;\"cellpadding=\"2\"
25
- cellspacing=\"2\">&nbsp;Your Tagline or Newsletter Description</td><td align=\"right\"
26
- style=\"font-family:arial,sans-serif;font-size:12px;color:#FFFFFF;\" cellpadding=\"2\"
27
- cellspacing=\"2\"><%= @newsletter.name %>&nbsp;</td></tr>\r\n</table>\r\n\r\n<table
28
- cellspacing=\"0\" cellpadding=\"0\" class=\"wrappertable\" width=\"587\">\r\n<tr
29
- valign=\"top\">\r\n<td><table cellspacing=\"0\" cellpadding=\"0\" class=\"leftcoltable\"
30
- align=\"left\"><tr><td>\r\n<h2>In This Issue</h2>\r\n<!-- Left Column -->\r\n<%=
31
- render left_column %>\r\n<hr />\r\n<h3><%= link_to \"Newsletter Archives\", \"#{::Newsletter.site_url}/newsletters/archive\",
3
+ :html_text: "<center>\r\n<table cellspacing=\"0\" cellpadding=\"0\" class=\"wrapper
4
+ table\">\r\n<tr><td colspan=\"2\"><%= design_image(\"newsletter_header.png\", class:
5
+ \"header_img\", style: \"display: block;\") %></td></tr>\r\n<tr bgcolor=\"#0068b3\"><td
6
+ style=\"font-family:arial,sans-serif;font-size:11px;color:#FFFFFF;\">&nbsp;Your
7
+ Tagline or Newsletter Description</td><td align=\"right\" style=\"font-family:arial,sans-serif;font-size:12px;color:#FFFFFF;\"><%=
8
+ @newsletter.name %>&nbsp;</td></tr>\r\n</table>\r\n\r\n<table cellspacing=\"0\"
9
+ cellpadding=\"0\" class=\"wrappertable\">\r\n<tr valign=\"top\">\r\n<td><table cellspacing=\"0\"
10
+ cellpadding=\"0\" class=\"leftcoltable\" align=\"left\"><tr><td>\r\n<h2>In This
11
+ Issue</h2>\r\n<!-- Left Column -->\r\n<%= render left_column %>\r\n</td></tr></table>\r\n<!--Right
12
+ Column-->\r\n<table cellspacing=\"0\" cellpadding=\"0\" class=\"rightcoltable\"><tr><td>\r\n<%=
13
+ render right_column %>\r\n<hr />\r\n<h3><%= link_to \"Newsletter Archives\", \"#{::Newsletter.site_url}/newsletters/archive\",
32
14
  :target => '_blank' %></h3>\r\n<p>If you missed a previous release or simply want
33
15
  to review an article of interest, all our newsletters have been archived. <%= link_to
34
- \"Read More\", \"#{::Newsletter.site_url}/newsletters/archive\" %></p>\r\n</td></tr></table>\r\n<!--Right
35
- Column-->\r\n<table cellspacing=\"0\" cellpadding=\"0\" class=\"rightcoltable\"
36
- align=\"right\"><tr><td>\r\n<%= render right_column %>\r\n</td></tr></table></td>\r\n</tr>\r\n<%
16
+ \"Read More\", \"#{::Newsletter.site_url}/newsletters/archive\" %></p>\r\n</td></tr></table></td>\r\n</tr>\r\n<%
37
17
  if is_email? %>\r\n<tr><td><hr /><p class=\"footer\" align=\"center\"><font color=\"#aaaaaa\">To
38
18
  remove your address from this newsletter list, please click <%= link_to \"Here\",
39
19
  '#UNSUBSCRIBE_URL##' %>.</font></p></td></tr>\r\n<% end %>\r\n<tr><td><hr /><p class=\"footer\"
40
20
  align=\"center\"><font color=\"#555555\"><b>My Company, Inc.</b> <span class=\"bullet\">&#8226;</span>
41
21
  123 Test Road <span class=\"bullet\">&#8226;</span> Austin, TX 78701 <span class=\"bullet\">&#8226;</span>
42
22
  p:512.555.1212</font></p></td></tr>\r\n</table>\r\n</center>"
23
+ :stylesheet_text: "h1 {\r\n font-family: Arial Black, Arial, Helvetica, sans-serif;\r\n
24
+ \ color: #333333;\r\n font-size:22px;\r\n margin:0;\r\n padding: 0 0 10px 0;\r\n}\r\nh2
25
+ {\r\n font-family: Arial Black, Arial, Helvetica, sans-serif;\r\n color: #333333;\r\n
26
+ \ font-size:17px;\r\n margin:0;\r\n padding: 7px 0 0 0;\r\n}\r\nh3 {\r\n font-family:
27
+ Arial Black, Arial, Helvetica, sans-serif;\r\n color: #0068b3;\r\n font-size:9pt;\r\n
28
+ \ margin:0;\r\n padding: 0;\r\n}\r\np {\r\n font-family: Arial, Helvetica, sans-serif;\r\n
29
+ \ color: #333333;\r\n font-size:8.5pt;\r\n margin-top:4px;\r\n margin-bottom:4px;\r\n}\r\np.right
30
+ {\r\n font-family: Arial, Helvetica, sans-serif;\r\n color: #333333;\r\n font-size:9.5pt;\r\n
31
+ \ margin:0 0 15px 0;\r\n padding: 0;\r\n line-height:1.2em;\r\n}\r\na {\r\n text-decoration:none;\r\n
32
+ \ color: #0068b3;\r\n}\r\na:hover {\r\n color: #7fc348;\r\n}\r\n.footer {\r\n font-size:7pt;\r\n}\r\np
33
+ a {\r\n font-size: 6pt;\r\n font-weight: bold;\r\n}\r\np.right a {\r\n font-size:
34
+ 7pt;\r\n}\r\nhr {\r\n background-color: #7fc348;\r\n color: #7fc348;\r\n margin:5px
35
+ 0;\r\n height: 1px;\r\n padding: 0;\r\n border: none;\r\n}\r\n.bullet {\r\n color:
36
+ #7fc348;\r\n font-weight: bold;\r\n height: 5px;\r\n}\r\n.wrappertable {\r\n width:
37
+ 587px;\r\n margin: 0 8px;\r\n}\r\n.leftcoltable {\r\n width: 227px;\r\n} \r\n.rightcoltable
38
+ {\r\n width: 347px;\r\n float: right;\r\n}\r\n.left_col_img {\r\n width: 220px;\r\n}\r\n
39
+ \ .left_col_art_img {\r\n width: 110px;\r\n float: left;\r\n}\r\n.right_col_img
40
+ {\r\n width: 320px;\r\n}\r\n .right_col_art_img {\r\n width: 174px;\r\n float:
41
+ left;\r\n}\r\n@media screen and (max-width: 600px) {\r\n .wrappertable {\r\n\twidth:
42
+ 95%;\r\n }\r\n .leftcoltable {\r\n\twidth: 100%;\r\n }\r\n .rightcoltable {\r\n\twidth:
43
+ 100%;\r\n\tfloat: none;\r\n }\r\n .left_col_img {\r\n\twidth: 95%;\r\n }\r\n
44
+ \ .right_col_img {\r\n\twidth: 95%;\r\n }\r\n .header_img {\r\n\twidth: 100%;\r\n
45
+ \ }\r\n}"
43
46
  :description: This is the simple newsletter template.
44
47
  :areas:
45
48
  - :name: left_column
@@ -48,28 +51,12 @@
48
51
  :description: This will house the elements of the 'right_column'
49
52
  :elements:
50
53
  - :name: Left Column Article
51
- :description: Article with a heading, an excerpt, and a Read More link
52
- :html_text: ! '<hr />
53
-
54
- <h3>
55
-
56
- <% unless link.url.blank? %>
57
-
58
- <%= link_to headline, link.url %>
59
-
60
- <% else %>
61
-
62
- <%=h headline %>
63
-
64
- <% end %>
65
-
66
- </h3>
67
-
68
-
69
- <p><%= filter(article_excerpt) %> <nobr><%= link_to(''Read More'', link.url) unless
70
- link.url.blank? %></nobr></p>
71
-
72
- '
54
+ :description: Article with a heading, an excerpt, an image, and a Read More link
55
+ :html_text: "<hr />\r\n<h3>\r\n<% unless link.url.blank? %>\r\n<%= link_to headline,
56
+ link.url %>\r\n<% else %>\r\n<%=h headline %>\r\n<% end %>\r\n</h3>\r\n<%= image_tag(image.url,
57
+ {:width=>\"110\", :vspace=>\"5\", :hspace=>\"10\", :align=>\"left\", :alt => image.text,
58
+ :class=>\"left_col_art_img\"} ) unless image.url.blank? %>\r\n<p><%= filter(article_excerpt)
59
+ %> <nobr><%= link_to('Read More', link.url) unless link.url.blank? %></nobr></p>"
73
60
  :areas:
74
61
  - :name: left_column
75
62
  :description: This will house the elements of the 'left_column'
@@ -82,19 +69,25 @@
82
69
  :type: Newsletter::Field::Text
83
70
  - :name: article_excerpt
84
71
  :label: Article Excerpt
85
- :sequence: 1
72
+ :sequence: 2
86
73
  :is_required:
87
74
  :description: ''
88
75
  :type: Newsletter::Field::TextArea
76
+ - :name: image
77
+ :label: Image
78
+ :sequence: 3
79
+ :is_required:
80
+ :description: Should be 110 px wide.
81
+ :type: Newsletter::Field::InlineAsset
89
82
  - :name: link
90
83
  :label: Read More Link
91
- :sequence: 1
84
+ :sequence: 5
92
85
  :is_required:
93
86
  :description: ''
94
87
  :type: Newsletter::Field::InlineAsset
95
88
  - :name: Left Column Image
96
89
  :description: Image that is formatted for the left column
97
- :html_text: ! "<hr />\r\n<p><%= image_tag image.url, {:width=>\"220\", :alt=>image.text,
90
+ :html_text: "<hr />\r\n<p><%= image_tag image.url, {:width=>\"220\", :alt=>image.text,
98
91
  :class=>\"left_col_img\" } %></p>\r\n"
99
92
  :areas:
100
93
  - :name: left_column
@@ -108,7 +101,7 @@
108
101
  :type: Newsletter::Field::InlineAsset
109
102
  - :name: Right Column Article
110
103
  :description: Includes a headline, excerpt, image, and read more link
111
- :html_text: ! "<h1><%= headline %></h1>\r\n<p class=\"right\">\r\n<%= image_tag(image.url,
104
+ :html_text: "<h1><%= headline %></h1>\r\n<p class=\"right\">\r\n<%= image_tag(image.url,
112
105
  {:width=>\"174\", :vspace=>\"5\", :hspace=>\"10\", :align=>\"left\", :alt => image.text,
113
106
  :class=>\"right_col_art_img\"} ) unless image.url.blank? %>\r\n<%= filter(article_excerpt)
114
107
  %>\r\n<nobr><%= link_to('Read More', link.url) unless link.url.blank? %></nobr></p>"
@@ -124,25 +117,25 @@
124
117
  :type: Newsletter::Field::Text
125
118
  - :name: article_excerpt
126
119
  :label: Article Excerpt
127
- :sequence: 1
120
+ :sequence: 2
128
121
  :is_required:
129
122
  :description: ''
130
123
  :type: Newsletter::Field::TextArea
131
124
  - :name: image
132
125
  :label: Image
133
- :sequence: 1
126
+ :sequence: 3
134
127
  :is_required:
135
128
  :description: Should be 174 px wide
136
129
  :type: Newsletter::Field::InlineAsset
137
130
  - :name: link
138
131
  :label: Read More Link
139
- :sequence: 2
132
+ :sequence: 4
140
133
  :is_required:
141
134
  :description: ''
142
135
  :type: Newsletter::Field::InlineAsset
143
136
  - :name: Right Column Headline
144
137
  :description: ''
145
- :html_text: <h1><%= headline %></h1>
138
+ :html_text: "<h1><%= headline %></h1>"
146
139
  :areas:
147
140
  - :name: right_column
148
141
  :description: This will house the elements of the 'right_column'
@@ -155,7 +148,7 @@
155
148
  :type: Newsletter::Field::Text
156
149
  - :name: Right Column Image
157
150
  :description: ''
158
- :html_text: ! '<%= image_tag image.url, {:width=>"320", :alt=>image.text, :style=>"margin:0;
151
+ :html_text: '<%= image_tag image.url, {:width=>"320", :alt=>image.text, :style=>"margin:0;
159
152
  padding: 15px 0 0 0;", :class=>"right_col_img"} %>'
160
153
  :areas:
161
154
  - :name: right_column
@@ -169,8 +162,8 @@
169
162
  :type: Newsletter::Field::InlineAsset
170
163
  - :name: Right Column Paragraph
171
164
  :description: Paragraph with read more link.
172
- :html_text: ! "<p class=\"right\">\n\t<%= filter(body) %> <%= link_to 'Read More',
173
- link.url unless link.url.blank? %>\n</p>"
165
+ :html_text: "<p class=\"right\">\r\n\t<%= filter(body) %> <%= link_to 'Read More',
166
+ link.url unless link.url.blank? %>\r\n</p>"
174
167
  :areas:
175
168
  - :name: right_column
176
169
  :description: This will house the elements of the 'right_column'
@@ -183,410 +176,210 @@
183
176
  :type: Newsletter::Field::TextArea
184
177
  - :name: link
185
178
  :label: Read More Link
186
- :sequence: 1
179
+ :sequence: 2
187
180
  :is_required:
188
181
  :description: ''
189
182
  :type: Newsletter::Field::InlineAsset
190
183
  :images:
191
184
  - :name: newsletter_header.png
192
- :data: ! 'iVBORw0KGgoAAAANSUhEUgAAAksAAABeCAIAAAC8W8dUAAAAGXRFWHRTb2Z0
193
-
185
+ :data: |
186
+ iVBORw0KGgoAAAANSUhEUgAAAksAAABeCAIAAAC8W8dUAAAAGXRFWHRTb2Z0
194
187
  d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9i
195
-
196
188
  ZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2Vo
197
-
198
189
  aUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6
199
-
200
190
  bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2
201
-
202
191
  LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpS
203
-
204
192
  REYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk
205
-
206
193
  Zi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIg
207
-
208
194
  eG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8i
209
-
210
195
  IHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5
211
-
212
196
  cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5j
213
-
214
197
  b20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRp
215
-
216
198
  ZDowMjgwMTE3NDA3MjA2ODExODA4M0NEQ0E2N0Y3QUVBMiIgeG1wTU06RG9j
217
-
218
199
  dW1lbnRJRD0ieG1wLmRpZDo4NjczRDZEREMxM0MxMUU0ODhBOUI4OUM2MUEw
219
-
220
200
  QzNFRCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4NjczRDZEQ0MxM0Mx
221
-
222
201
  MUU0ODhBOUI4OUM2MUEwQzNFRCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQ
223
-
224
202
  aG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9t
225
-
226
203
  IHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDM4MDExNzQwNzIwNjgxMTgw
227
-
228
204
  ODNDRENBNjdGN0FFQTIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDI4
229
-
230
205
  MDExNzQwNzIwNjgxMTgwODNDRENBNjdGN0FFQTIiLz4gPC9yZGY6RGVzY3Jp
231
-
232
206
  cHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9
233
-
234
207
  InIiPz5DleZ0AAAfOElEQVR42uxdC2wUR5p22Nmzje0Yv2bsMR7jYfwifiY2
235
-
236
208
  5mFhyNrLYRzgQLtcUEJE7jabRIm0nHJ3OmmVKKfTLnfill3pBFn2BJITmYsS
237
-
238
209
  SHjEiIUDDOZpFmPwBoMN2GP8msHGNnbw3CJxf9xkdrarurv6MT3dw/8pikxP
239
-
240
210
  T3VVTVd99dX/1/8/8/jx4wgEAoFAIMIOzyDDIRAIBAIZDoFAIBAIZDgEAoFA
241
-
242
211
  IJDhEAgEAoFAhkMgEAgEIqQM1zvWKX5DRny2cXph3DcyNjUsckN8VNKzkYn4
243
-
244
212
  uiAQCMTTznBAbx+1vSl+z8t5/1ZgXWiQXvj42r923G8SuSEvoerVwvefhhei
245
-
246
213
  t7e3p6eHvJ6amupyubR6SnNzM3kxMzMzIyMDx2QYY3h4eHJygncxKSk5JiYG
247
-
248
214
  OwcRDFhC9eBj3bsMwnDAx+L09lQB6K2xsZG8DnPQe++9FxkZqclTqI+ora1F
249
-
250
215
  hgtv9PXdvX//PvXtCo8G+qbx7LPPalWg1+tNSUnBN0cxZoTqwd6p2+2ec0bo
251
-
252
216
  gpPuPfgeSGJycvL06dPYDwiECBvt3r37yy+/1Ios6+vrt23bhh1rSobjZBwK
253
-
254
217
  OBPh+PHj4+Pj2A8IBIlLly4BG7ndbm3mpd7erVu3dnR0YMeamOFAxp1xH0AB
255
-
256
218
  ZyKcOnUKOwGBIMXWvn37NFv6Hzu2Y8eOyclJ7Fv1sIT28U13Py6z10RaolHA
257
-
258
219
  mQJnz54tLi5GaxkC4RdbQG9asZHX6927d69WQhARYg0HmHw0cqn/KAo4E+HE
259
-
260
220
  iRPYCQgER0jaiq2dO3civYUVw3EyzvfoIQo4s6CjowPWrdgPCMTU1JTGK37c
261
-
262
221
  mQw/hguVjGvznMSfXxk+//xz7AQEAoEMZ1AZN+4bOTfwP/jzK4PX621vb8d+
263
-
264
222
  QCAQyHBGlHGn3Hvxt1eDo0eP+nw+7AcEAoEMZywZhwJOExnX0tKC/YBAIJDh
265
-
266
223
  IlKinMaRcSjgtFmUNDWhjEMgEMhwEdVzXjeIjKMKuIVpf4uvglxgHC8EAmFw
267
-
268
224
  6HTiu8C6MKXb6Z26LSnjFjtW6SzggN4SIm0aPuKz69uueA+JK9qfzf9dUJt5
269
-
270
225
  qPN3PCL/2Qv1KTHp2j7l+PHj8+fP1zDOLAKBQJhPwxlExlEF3BLHOm2fYo+Z
271
-
272
226
  K35DsKNOk82MsSSqzG8nFP0d43ghEIinXcMZRMZRBZzmqU3L7DUtgwfFW3qg
273
-
274
227
  61fZifVBClfW0n+Ed6Uiba3KZ1VVVVFT3hg5jtf4+LjH4xkcHAy8OGvWLIfD
275
-
276
228
  gbqTxNjYmM83xTvFbLFYYmJiYX0Df5ioIZOTE48ePQq8GB8/Kz4+Hn9l8dGR
277
-
278
229
  mppqtVp1Hh1er/fGjRvc31FRUTk5ORpWQNe3FmTcno6fS8q4IEWq1EfAAaDy
279
-
280
230
  ki0NHpeDCL4wwA8CW25frrLY8vLypqYmasyFEydObNy40ThD1+fzXbt27dKl
281
-
282
231
  SyIBkFJSUsqnoSzj3di3GOVdhMFptbJud1Nzgcqahal1UJBNFEoZGhqEWYZH
283
-
284
232
  CWSPJScnszcwJMQm2RBoRXr6bDVU197ePjr6pNv9f/B+WTLBb2VlJbU0oYTD
285
-
286
233
  gSBLKyoqUswBQGxXr15taWmBjhK6B5aAUOHs7Gz1+SC5xwn1BtTh8OHDZAqF
287
-
288
234
  vLy8ZcuWabJu1pXhQMblDVWJx8oK3tSvj4BjF6xB4vLOkSvQh4FXSlLq1DcT
289
-
290
235
  3vXly5dTA6hzcbwMIuOA2I4cOSIZ/QiGFkhS4GzQpkKzj+hkOnrnzh3exejo
291
-
292
236
  aHYCoOYChfmXffKF2XxgYIBkWXaGg166dauLmpKU2mOAzs5OmPiMxnOwprlx
293
-
294
237
  o4OlIVwrEhIS5s51KUu7evnyZfGkNtyrxchwQgmHA0HekJmZqYDhoJeA2CQf
295
-
296
238
  B4ClYUNDA7yNL730ksvlUrnsEOoN6KidO3dSh2rHNEpLS1etWqWSZfU+D7fU
297
-
298
239
  8bLkPcGwxukm4Pyoc70jMb8E54AEmXVvgb1Ok5LLysqE0g0bIY4XDOCPPvoI
299
-
300
240
  OJg9uB/cCcOvvr5e7rEHEFvkxYcPH4rLoEBQp2NGsuEwMTHBWDEqPJ6hS5da
301
-
302
241
  ZD0RAA28fv361att7C0NNhQ0BG6Gr8AXI54aAJ1s376dhd4Cv7Jr165Dhw4F
303
-
304
242
  41AQlClEb360traqP3SrN8NlxGfnJVTpP/XrKeA4uBKLJVva2P0boF4NH9o1
305
-
306
243
  0sYTjo64UuhzrcqvqakRGgyhjeMFFdi6dauyuOywWoTBL7JpQyOSeKEVK+PC
307
-
308
244
  Vog/GGcTuPPBgwe8i3FxcYwLXpjcgagU9zYwhEFI7ubNG9AQZTWBL8LXnwZ6
309
-
310
245
  6+rqAjqR9Yb7cfbs2d27d2tOcp9++inLSjQ1NdVkDBcSGae/gGNvqbbHz8/1
311
-
312
246
  7eddWZyuZTMLCgry8vKoHx09GrIsSCLbHbJKkJXBPCEhgSYKJ9i044Qw+Y0q
313
-
314
247
  5shZsxJYvjs8PKyG3jgAvwLJhZzeyH1aWYCvhz3J9fb2ghRTMzpg4agtyQHj
315
-
316
248
  MqYvV7lHGhqG01/G6S/g2FsK1KuVjINyeDbOGEtigXWhto1atmyZEEmQJnEd
317
-
318
249
  AAPvk08+UZ92BEpoaGhgH8azZlH2A6muB7Jum5hgagiV4VhseCB3Ojqua9Lz
319
-
320
250
  QHJud0+oJm6QoSrpzU9yYbxdCaOyvr5efTlAcgcOHNCqVgcPHmS5rbS0VP2z
321
-
322
251
  QuMBDOJGMjcbyLhCW6V6HgqVgOOwOuedjgsSLd1/879eLXw/GEReNftV7Wk7
323
-
324
252
  IwNkHHUJ1tTUpNg7Uc12h/j2C9TW6XwSNO727dsii0cYxqdPn66urmZ5LtXi
325
-
326
253
  xWgNoprQviM/phKot7EwXH9/n8ieXnR0dOw0/PUEPHz4UEQf2O3p+h8kgOWI
327
-
328
254
  uAwNbMjU1BQsKURaAUVxJyLCjN5gubZ3717xxZ9/dEAv9ff3i4yO1tbWrKys
329
-
330
255
  srIyTXiX5TZ4nFkZjhM3kk6VMGXXZf/EpAKOAzwIHice6Bn6oXesU6W1zPfo
331
-
332
256
  IfkUWCIEo1Fr1qzZsmULdd5paWlR4JqoGO3t7SJjsra2lse4UDfOo0zo5MPx
333
-
334
257
  48dzc3NZ/EKF6ASKFZ8rgWBEZlvSukYtgWqEY2Eaoey1aWlpmZlzqKsT0Iu3
335
-
336
258
  bnVRKwY1GRkZ1t+18sYNwR8d+gEakpSURLaip6dbaAkCDSwqKmZ59IoVK/zb
337
-
338
259
  GENDQ6R3scPhWLlyZeCVqKgoodKKiooyMzP9/9yxYwd5z1tvvUWuMlmqCu+5
339
-
340
260
  kGUaXtGqqipyPTo+Pn7x4kUYBdRvHTlyRNvDauKAZ5mV4RhlHEzZILbUsFFo
341
-
342
261
  BZz/cZKpDE6696iUceSmbvCIHF7xRYsWnT17lvyosbFRzWEduRAy/sEAfuON
343
-
344
262
  N6ienzCkgeeAxmB5Sx3/7Mf7EhISyBlzbGxUnOEkvVHgBnE1ptgINzw8TBVw
345
-
346
263
  +fn5IiwFlXn++ReEjF737t3TmeE8niGhdQDwdE5OrlArgMNAwnZ2dlLFNxTL
347
-
348
264
  0hAhd2I/Zs6cyX5y5tlpSO6aKJn6xseFPCeBgzds2EB9Llysrq6G0VFfX08u
349
-
350
265
  AeHKqVOn6urqNPw1Oa7lJg1YfcKvA4MaRB70sybTSMiy57DYqCJUO2KEVsD5
351
-
352
266
  ZdyLGX8vfg8n49Q8pWWQv7VdYa8NIm0vWRLyOF4g4KjbHSL0FjhPbdq0iXoP
353
-
354
267
  d7yPpQLKTHGS3iiSziaKjXDURwMrsMzsTufc6OhoxTtOGqK7u1suvflht6cD
355
-
356
268
  nVM/unv3bkQYQWgYAr3Bmy9OHsCpMIKoAxzWtbIcsiTpDR4EK06uPrD6LCgo
357
-
358
269
  2Lx589q1a4Xctk3DcBFsroZqHDGMIOCebI5lrImxSNDq3hv/oXyu95zjHRKA
359
-
360
270
  1YPmcZZ5az1YeVE/gjGgz6wnJOAk6c0v5l555RXqR+fPn2epANUUJ2JjY6RA
361
-
362
271
  hhIUGuGoj05Pn82022OxzJkzR5kq1RAgQ6l7vKCnJemNA9A5cCF5HXShen8l
363
-
364
272
  gwDEUFtbG5VRQL2xWMphBK1fv5760cWLF7Wqp9BQLSsrA6ozPcMFW8YZQcA9
365
-
366
273
  mUwt0ZJOH2rCMbcO8ef6UltNsBtVXl4uJOMOHz4c7KdzwSnI67W1tSz05h/G
367
-
368
274
  cD+lP1tbWZwqqaQC86/4dyW9USRvUGyEE1pHM94pJPV8vindhtLQ0CCVfXNz
369
-
370
275
  89gLAT1K7a6+vjCRcZ2dnVS2Xr16NfvWn8vlonozXrt2TZNKLlq0iH2ompLh
371
-
372
276
  girjjCPgnqxK7DWSMo4MR8KC3rFOnkUzJcqp+SEBqgZavpwe7pJ9o08xhJao
373
-
374
277
  wLtyeVpojmD5OvVUnIgIY1EJ4ue+1ZyEUw+yvdSty6CubChr5YwMWR68QG9U
375
-
376
278
  4xbjYQ/jg+poCnQiVxgtXbqUfXEpF0uWLNGhK0LMcCDjSlKk7ZYKZJxxBJxf
377
-
378
279
  xq1y/YOkjDvjln3opM1zkj9rp76kE20Lx/H66quvgvrorq4u8mJFRYXcswpw
379
-
380
280
  P3WhKmTsIahlFiMJfffRKAtDiHAk1UqnJpTw8PAw+83Jycnwi2dlZRUUFJaV
381
-
382
281
  lVdVLZ0/v0I3TxOhqtpssiNfUL8C+js8NipbW1vJiwosWynTIK/7UwEohlaO
383
-
384
282
  JEZnOMBy52uayzijCTgO34ZjjnKK3yM3mAu1paAXdWuU0LBxu93Bi+MFEofq
385
-
386
283
  Bpmbm6ugNKrrAaOGEzDFCXr8k9QFHBkXF8fOkVSdoYbhenq62aNe2e3p8+Y9
387
-
388
284
  53BkJiUl6X+AjOopwx6rjLeyoa4tGGPKGBlC2yfZ2UrOIxUWFpIXb9++rbKS
389
-
390
285
  yipjSobjToxpK+OMJuD8kEwDKzeYy7WhZrKlQUo7R6ftUMTx8ng89C0BRX7V
391
-
392
286
  NpuNuhWj2BQnYkgj+Sk2NpY8LyXCkWTh7Ea42Ng48iIXf0tPbxHFoLI7yEpl
393
-
394
287
  pVH1t6Sbj/ExNEQJ0eJwOJSFYqC6F6m3QagPOGkahmNUV+wyzpgCzi/jJJ1r
395
-
396
288
  2GUc3AY3h7yl+sfxoqbUEiJalg0TWTzKA9UURyUM6lnvmJg/xxCR5EhqsexT
397
-
398
289
  fGwsXXUByV250go85/EMGSdpALWe5EXoQGWlUQ9i8xLAmhG8pKYcZs+eraw0
399
-
400
290
  q9VKE9OTKsNUUpeVYctw2so4wwo4DpLONSDjjt75hKUoMhUc0Kf+LeXieNHZ
401
-
402
291
  uqkpGKk3qNNQYqLyhsMKl5FOGKUAdbOLauOJ/xasxjwBIxxrxpzExCSRT4FW
403
-
404
292
  r1+/fuHC+Zs3b8gyzukGKvsqdiKl9htLTBmDY2RkhPEtZZqcBaxljOs/WcQZ
405
-
406
293
  DBglMz1L4A+WECdGFnBP+IAhYhljMBfS93Jh+uqQNErnOF79/f3Uga1YMlKP
407
-
408
294
  WDF61rGfiiP5idN/VIPW5OQEuQWq0ggHZJCWliYesBhYZGAacDOo26SkZChf
409
-
410
295
  /8iT7AsO6FVlxjPqOsnIEpYR1NWJesuZttAteq1RGI4lfiOnz8QjVRpcwHH4
411
-
412
296
  a+ffdfyhSWVLe8c6eae8U6KcrsTi0Px8BojjxeUF1r/t7KY4mhEujiOe6Oho
413
-
414
297
  HsvCzXZ7umSx1D1SEWRmzmEMye+nuojpjVybLZUM9mgEkMnWn3JQXfk1Hx09
415
-
416
298
  PT3KzN46Y4ZxqqLeGmd8AfeEimLSJXdloSHicbzO9x/iXamcvT6UP5+Ocby+
417
-
418
299
  +eYbHVrEfjqKpBnqmTZyB8zPjuQmEqkCqZuccnefYO2swI1tOsPttTNnmkEK
419
-
420
300
  BGPb2VAwhdONqaHYZG5uhlNvjTOFgGPn3ZPuPSJcfsX7FwwXY0kstC4O5c+n
421
-
422
301
  YxwvZbm85YJqz6CCxRQH/ETugPl9TEhnEzI2ikojnB8gDalhq1hUXW+v+/z5
423
-
424
302
  c19//Uf9eU7PyCmIsMEMQ9VGjYwzi4Bjp3ORcMwkl1ekrdXzkAAVoY3jFUII
425
-
426
303
  mOIm/5Lh+JrMYrH4rREsxjwNT8Ll5OSqSb4F6xXgOZ0Th4aBlyPiaWc4NTLO
427
-
428
304
  RAKOQ03WK5JxvKgyzvfo4VXv7/nsYl8e8haFNo5XSBmOQjO8+MgkPwXubcLK
429
-
430
305
  gPTm4JGieiNcIByOzJKSUjUlXL9+PYQ5vhEI8zGcYhlnLgH3hA8YwjGDjCPD
431
-
432
306
  MV/znOEdEihJqTMIl4cwjldoQVLFgwcPArclSbsab2eSjGwSSIrUTU7FLuB+
433
-
434
307
  Yi4qKgaeU7ZpGTHt5WHMcwUIxJOdEqNVSJlTpekE3BM+sNc03f2YR1c8HOve
435
-
436
308
  xQuj3Hz3U949C+x1xmlUTU1NQ0MDeZ2L46VVUgwSixYtUjnjq+EPuJnUWEBL
437
-
438
309
  nLyjZuXm7UySJQT+UysjHJXnAE7nXI9naHBwUO6BsI6O6xUVC3Q4TkA9oB0d
439
-
440
310
  Ha15dAyRlNzmBTWHhhoEpiZHhpM5RWa9ctX7e/F5Hyiw2Lo0Iz7bpALOL+N+
441
-
442
311
  OOenX3T9UuQeLquOn+TIVHApUU6uHwwCLo4X1TX56NGjmjCcw+EgnU2Ki4tD
443
-
444
312
  6L4scGp7lGM4qhskz2ZJLQG+yN2meThK/kRgsdjt6fCfz+cbHr7HTnVA3kCN
445
-
446
313
  5MEG7QdLZBSVjRwOc0y1oUV5ebluR9AMhRkGrBPL9l1EgI3KpALuOxlXLRmO
447
-
448
314
  +UDXr/xxvMhUcJKxLvVHsON4zZw5k0YnoXTyFjDFjQopMDKYJLUE/xe1NcKJ
449
-
450
315
  Ekkk0NXzz7+weHFlfn4+SwavEGbHDoMQJPpAZQgSZDjN533pbGqcq6F5BRw7
451
-
452
316
  RfnDMXsn+3jBUKCXdEgFJxf6x/GKMEByL6opjvtD0gjnpz3eFe6LwTDCsag6
453
-
454
317
  q9U2b95zCxYszMrKEskDJ5n0Vav6UBUkshe5w0FeDPtTjCZjOHYZZ2oBxwEo
455
-
456
318
  yhFXKn4PF475Qn8j7zpLL4UEa9asobP1dBwvlYU7nRTVyxiqI3ggKQfmX25/
457
-
458
319
  kpo0h1ZCApW2qVljkpKSdRqMkZEOR+b8+RUiDik6uPILHUTBA9osOxzUcMzI
459
-
460
320
  cCaQcWYXcBxqnT+VlHFH73xCNrbQVmnMFnFxvKgfNTY2qiyc6gtw8+bN0DZZ
461
-
462
321
  wJA2IZRSgFZCPFUekfIUBI3+6dlycnKFNi31SatG1ZFU+n+aQV3/GS0upW6w
463
-
464
322
  GLZmnIxr7P6NrG+ZTsBxYAzHbK7GLlmypK2tLRhJk6mpN+BBXq+XxW7EA1DI
465
-
466
323
  hx9+GDEdTCgxMRHUVWZmJpCo3KKETHHf+56FUZFQty5B/4mfpWMEJyiBD6am
467
-
468
324
  fBMTD7jDDCUlpbLcVebOdWkbnkYWoH/ItQKoE2V+LjDp9/a6gTXht4YfHf4f
469
-
470
325
  GRlFPZhoLlC3Bzo6OuA9V+BsAj/3tm3boFsyMjLsdjv0EowOeGf0ydAdzgwX
471
-
472
326
  weZMHwYCjsNSx8viDEei2LrUyC3i4nipV2yUBYGAzyQQanV1tdzS/Om8ef6f
473
-
474
327
  H3zwgdwZIS4ujuf7APxEKk4hfuIST/Mm8aGhQXJaV2CEu3q1jfTL8Ht7sq47
475
-
476
328
  aTXUc+4m+RUapWzuvnfPy6lkgN+RJy0tDaSqqRmOaofj3nMFnswwprjlIy92
477
-
478
329
  8y9+8QtT9MYMI1eO0RpndgHnl3ElKTKOtTniSg11SIAKkTheKlFaSrFcXrhw
479
-
480
330
  QYFFnZqLHAScgkmTNKTB/Hvv3j12fiI/omomBSfhqFu7ClJah1DiCLUaFgFy
481
-
482
331
  ixoeHqbyNFVGmwuwsqRuP1Dfc8ntDRhT5HU9QyeHM8NFsFnjwkDAcVjufI39
483
-
484
332
  5sXpZjjwJxzHSyWoYRUVuLG0t7dTKURBAP4IgY1KUjmJpKVmmWGVGeGoJUPb
485
-
486
333
  5bojaptoWxag1VRTXG9vr9yVTV8f/YSDbv47QUVhYSH1t4a3XVY5MJqoVoZ5
487
-
488
334
  8+Yhw+kt40wt4J4svtjCckZMn/I24CEB+hpFOI6X5mM4YtqNhd1QBNOi0MJW
489
-
490
335
  2SqVccdP5DYWcabsJJzQ3N3f3ydL+rALxGAgOZnyLgFJ37rVxV4INJmawC8u
491
-
492
336
  Lk79sWjN46+Oj4/L/UpxMT1P5P79+9mXAvDcpia63SQnJwcZTm8ZZ3YB528F
493
-
494
337
  S2PLU18yUaNqamqCoQ6FfDV37tzJOIyB3qh0CJTscrkU1ArUFXmmjQdQISIb
495
-
496
338
  fSyeDspOwgmVDDMyuzdQT0+3VppSGdLT6U4l8DvevHmDpQRorFDSVE0CgEH5
497
-
498
339
  2h4+U3BYG15gqjUO6rZ7927G6jU0NFBfDFj8mcXNxBwMxyLjwkDA+WUci2YF
499
-
500
340
  1jdRo7g4XpoXK7RQhWG5fft2SSV36NAhalLyiGnzoeJakaY4HiT3ISU5UnE4
501
-
502
341
  yrQ0O1UAXbnSykJyQCHULcpgaHSRlY3QsbyBgQFJkoNmQmOpG7PcCXdNKqnA
503
-
504
342
  4iWCY8eOKaDMykr6OSK32y1JcvDpZ599JpSFUWhliQynSsaJh7YKDwHHqFmB
505
-
506
343
  zkOeCk4uhOJ4qUFGRobQYAN6AyXX3NxMHcnwaX19vRC9gRxRw3CSG5WSCkz8
507
-
508
344
  BjWCSUgAcSTX398nZJMbGxu7erVN6Ey9zZaq57uUmTlH6COo4eXLfxA6Aw4N
509
-
510
345
  FKI37nWS60Qj5NMLr9a2bdtgCdX8HRgLpAovYJqtW7cGlsaybwnLSiGnSq5A
511
-
512
346
  IZscaHqgwNbWVqEaKtveCBXMcfIDJvTqOa/v6fh5eAu4QM0qchCwwl5rukZx
513
-
514
347
  cbyo4ZjVoKamRujIHVxsbGxsamoCqccdcYOJb3R0FAa2eIrw1atXqzHGSDKc
515
-
516
348
  pFOGuERTE46SE0BUooJ5v7Oz886dO1A+qEyoJEz33OG50dH7IuEf4X4NA0Az
517
-
518
349
  tiIrK0topxGqCjQGOjg5OZk74gY/+9TUlLhPTXR0tLbBo73T8P+zqKiIZWeP
519
-
520
350
  Go6Ee5kDF2TwPrP4/a9btw6IVqjAhoYGEN/Z2dmpqak2m21oaAhGR1dXl/jo
521
-
522
351
  WLlypblmHtOcbSywLkzpdvLC6oefgOOw2LGqZfAgtbF5CVUpMelmbNSaNWu2
523
-
524
352
  bNmi+WS3fv36Xbt2iexKCWk1KoCGVWY/4ExxIpTAQIExaiSgpAASmevhOm9q
525
-
526
353
  lsTcuSFY0TscmTAdU71F/DwnKyhzbm6eslMQjOs2WF2xMJzT6WQpjTEEKxDY
527
-
528
354
  2rVr9+3bx0jDknjxxRdDmL5DGWaYqK7UCMVhJuDEG/tte9NXm7RFInG81MDl
529
-
530
355
  cm3YsEGjedMBfKm+HBFTnKSNLULKXUVlTjhYEyg7CEEFFKV/8DAO8+Y9x9KZ
531
-
532
356
  LABFqFiGMvrN9/QwJUNnTLrGHoK1rKxMq0EHo0NBOAVkOJkyjrDGhZ+AE2ks
533
-
534
357
  XHElFpu3UUuWLAnGhAiqC9aqKguBBe+6des0yaElMl1K+qGI3xYdHa2+A61W
535
-
536
358
  W0aGQ30z09LSdEgLJ7IOKCoqVk9y0Ao1GeYKCwtZfhHGyNQiSTkCISuvel1d
537
-
538
359
  nXqSA3rbtGmTGeecGeaqLk/ZhKuA45Aex18eVs5eb+oWcXG8glEyrFVBySme
539
-
540
360
  /WFaefvtt7XyCRRhuNhYphoK3aZVxhyn06lSycHXQx7diiM5NYbJ/Px8la3g
541
-
542
361
  9sklb+vv72cscMWKFZKvsbipjEpyanJ8A0ECvZk0garJGI6nbMJVwEVMJy6/
543
-
544
362
  4j0UeCXGklhoXWz2dgUvjhcouXfffVfusQSoDAz+jRs3ajiARbYZGfcYhW7T
545
-
546
363
  MCccyK+SklKRrG9CgKaVlZWHUL2RJAd0K9eKBrwIrdDkeIDL5Xr99dfF32r2
547
-
548
364
  Y+CwzHrjjTckF1tyj4FXVla+9dZbQt6VIqMDmgYEad784EHxNImPSspLqApS
549
-
550
365
  jetc75zr2//tOjS+RCsBZ4vNFK+wPVbvCJBk3ruilB/qcEggNTU1qEHnYKis
551
-
552
366
  Xr368uXLwZi+QSMCV8Fs0tbWJulgApNI+TSCMXqhG6lzLuOz4DaoHukPotII
553
-
554
367
  R2rN+fMrPJ6hwcFBEa+NwB6z2VKTkpIUP5H6E6uP+AV0C1wFDbl7965kVGho
555
-
556
368
  RXr6bG39P4Hk3nvvvZZpUH03ZDloQA03b97c3t7e3NxMlWtAVApOyEEd3nzz
557
-
558
369
  za6urtZpiN8MjwBShKWDytEB/UzOJ3a7XbeJ9JnHjx9HIAwG36OH/3lxIy+p
559
-
560
370
  wj9XfBbGW7La96HP5/F4enp6RkdHR0b+3JNOpxPmWZvNpuc5ZeMD2HRsbGz6
561
-
562
371
  eMBUoNEoahrArGZJKwO/O3c8INDhkGsFUClMuMFuBffi+f9ptVpVkkSg/tMq
563
-
564
372
  bQ1UEoqFlc3AwEDgmoAbHUBvJopaggxnPpxxH+CdhytJqftR/mbsGQQCgWDH
565
-
566
373
  DOwCA6Lp7se8KwvsddgtCAQCgQxnbrR7zvH2J1OinMZPBYdAIBDIcAgJHOvm
567
-
568
374
  R+gQOv2NQCAQCGQ406B3rJMXrCvGkpidWII9g0AgEMhw5sZJ9x7elYq0tabL
569
-
570
375
  JIBAIBDIcAi+gOu4z0+qW25fjj2DQCAQyHDmRuPt3/KuhHdYMgQCgUCGeypw
571
-
572
376
  xn3A/YAfaCCMw5IhEAhEsGHBLggeesc62zwn708NdNxvcsSVJkal5yctKLAu
573
-
574
377
  JO9s95wjU56igEMgEAg1wJgmwcL/3tlzvPe/yespUc51uf8UeL7tUv+xL7p+
575
-
576
378
  ybstxpL4zgu/RYZDIBAIZDhjgQy7RfJcUvS3wViHH/ZSc3n/jetfyuzV2JMI
577
-
578
379
  BAKBDGcgjPtG/v3Cj9SUkJdQ9Wrh+9iTCAQCoQboaaI9bg5fVvP1GEvij/P/
579
-
580
380
  EbsRgUAgkOEMB9+jb9TQ20+Kf41HvBEIBEI9nol48yD2grZYWdJanH9SwRf/
581
-
582
381
  9KeZX5z8cde9BOxDBAKBQA1nRLg9SjLYIr0hEAgEMpzRca3f5rk3V9ZX4P7t
583
-
584
382
  BzchvSEQCISGwF3KoCAm8v9e+8GXs+L7WKTb+bYfnO50YachEAgEMpxpSG5p
585
-
586
383
  /h/nuS5+//t0x5PJb5K+7io72+Wa9P0VdhcCgUAgw5mP5553uFMS7iXGe7gr
587
-
588
384
  I2PWB5PPtrszBx7EYP8gEAgEMhwCgUAgEPKAniYIBAKBCE/8vwADAM6L1SQ4
589
-
590
385
  rsO3AAAAAElFTkSuQmCC
591
-
592
- '