activeadmin 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (255) hide show
  1. data/CHANGELOG.rdoc +15 -1
  2. data/Gemfile +41 -11
  3. data/LICENSE +5 -0
  4. data/README.rdoc +202 -87
  5. data/Rakefile +51 -15
  6. data/activeadmin.gemspec +310 -131
  7. data/cucumber.yml +1 -0
  8. data/features/comments/commenting.feature +81 -0
  9. data/features/comments/viewing_index.feature +19 -0
  10. data/features/edit_page.feature +77 -0
  11. data/features/first_boot.feature +16 -0
  12. data/features/global_navigation.feature +30 -0
  13. data/features/index/formats.feature +10 -0
  14. data/features/index/index_as_block.feature +15 -0
  15. data/features/index/index_as_blog.feature +50 -0
  16. data/features/index/index_as_grid.feature +45 -0
  17. data/features/index/index_as_table.feature +79 -0
  18. data/features/index/index_scopes.feature +52 -0
  19. data/features/index/pagination.feature +23 -0
  20. data/features/new_page.feature +75 -0
  21. data/features/registering_assets.feature +35 -0
  22. data/features/registering_resources.feature +33 -0
  23. data/features/show/default_content.feature +43 -0
  24. data/features/show/page_title.feature +33 -0
  25. data/features/sidebar_sections.feature +128 -0
  26. data/features/specifying_actions.feature +16 -0
  27. data/features/step_definitions/action_item_steps.rb +7 -0
  28. data/features/step_definitions/additional_web_steps.rb +67 -0
  29. data/features/step_definitions/asset_steps.rb +7 -0
  30. data/features/step_definitions/attribute_steps.rb +15 -0
  31. data/features/step_definitions/comment_steps.rb +8 -0
  32. data/features/step_definitions/configuration_steps.rb +31 -0
  33. data/features/step_definitions/factory_steps.rb +28 -0
  34. data/features/step_definitions/flash_steps.rb +3 -0
  35. data/features/step_definitions/format_steps.rb +7 -0
  36. data/features/step_definitions/index_scope_steps.rb +20 -0
  37. data/features/step_definitions/pagination_steps.rb +8 -0
  38. data/features/step_definitions/sidebar_steps.rb +11 -0
  39. data/features/step_definitions/tab_steps.rb +3 -0
  40. data/features/step_definitions/user_steps.rb +20 -0
  41. data/features/step_definitions/web_steps.rb +219 -0
  42. data/features/support/env.rb +88 -0
  43. data/features/support/paths.rb +48 -0
  44. data/features/users/logging_in.feature +34 -0
  45. data/features/users/logging_out.feature +13 -0
  46. data/lib/active_admin.rb +155 -79
  47. data/lib/active_admin/abstract_view_factory.rb +95 -0
  48. data/lib/active_admin/action_items.rb +4 -15
  49. data/lib/active_admin/arbre.rb +23 -0
  50. data/lib/active_admin/arbre/attributes.rb +20 -0
  51. data/lib/active_admin/arbre/class_list.rb +28 -0
  52. data/lib/active_admin/arbre/collection.rb +27 -0
  53. data/lib/active_admin/arbre/context.rb +8 -0
  54. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  55. data/lib/active_admin/arbre/document.rb +42 -0
  56. data/lib/active_admin/arbre/element.rb +151 -0
  57. data/lib/active_admin/arbre/html.rb +84 -0
  58. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  59. data/lib/active_admin/arbre/tag.rb +129 -0
  60. data/lib/active_admin/arbre/text_node.rb +35 -0
  61. data/lib/active_admin/callbacks.rb +87 -0
  62. data/lib/active_admin/comments.rb +73 -0
  63. data/lib/active_admin/comments/comment.rb +15 -0
  64. data/lib/active_admin/comments/configuration.rb +16 -0
  65. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  66. data/lib/active_admin/comments/resource_helper.rb +17 -0
  67. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  68. data/lib/active_admin/comments/views.rb +3 -0
  69. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  70. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  71. data/lib/active_admin/component.rb +22 -0
  72. data/lib/active_admin/controller_action.rb +12 -0
  73. data/lib/active_admin/dashboards.rb +0 -2
  74. data/lib/active_admin/dashboards/dashboard_controller.rb +10 -5
  75. data/lib/active_admin/dashboards/section.rb +5 -14
  76. data/lib/active_admin/devise.rb +43 -0
  77. data/lib/active_admin/dsl.rb +202 -0
  78. data/lib/active_admin/event.rb +31 -0
  79. data/lib/active_admin/form_builder.rb +68 -50
  80. data/lib/active_admin/iconic.rb +51 -0
  81. data/lib/active_admin/iconic/icons.rb +142 -0
  82. data/lib/active_admin/namespace.rb +102 -16
  83. data/lib/active_admin/renderer.rb +18 -3
  84. data/lib/active_admin/resource.rb +110 -9
  85. data/lib/active_admin/resource/belongs_to.rb +31 -0
  86. data/lib/active_admin/resource_controller.rb +45 -260
  87. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  88. data/lib/active_admin/resource_controller/actions.rb +53 -0
  89. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  90. data/lib/active_admin/resource_controller/collection.rb +142 -0
  91. data/lib/active_admin/resource_controller/filters.rb +58 -0
  92. data/lib/active_admin/resource_controller/form.rb +42 -0
  93. data/lib/active_admin/resource_controller/menu.rb +29 -0
  94. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  95. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  96. data/lib/active_admin/resource_controller/sidebars.rb +38 -0
  97. data/lib/active_admin/scope.rb +17 -0
  98. data/lib/active_admin/sidebar.rb +8 -47
  99. data/lib/active_admin/stylesheets/active_admin.scss +418 -0
  100. data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
  101. data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
  102. data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
  103. data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
  104. data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
  105. data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
  106. data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
  107. data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
  108. data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
  109. data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
  110. data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
  111. data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
  112. data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
  113. data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
  114. data/lib/active_admin/version.rb +1 -1
  115. data/lib/active_admin/view_factory.rb +21 -0
  116. data/lib/active_admin/view_helpers.rb +17 -100
  117. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  118. data/lib/active_admin/view_helpers/auto_link_helper.rb +41 -0
  119. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  120. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  121. data/lib/active_admin/view_helpers/filter_form_helper.rb +174 -0
  122. data/lib/active_admin/view_helpers/form_helper.rb +12 -0
  123. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  124. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  125. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  126. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  127. data/lib/active_admin/view_helpers/status_tag_helper.rb +13 -0
  128. data/lib/active_admin/view_helpers/table_helper.rb +12 -0
  129. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  130. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  131. data/lib/active_admin/views.rb +8 -0
  132. data/lib/active_admin/views/action_items.rb +17 -0
  133. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  134. data/lib/active_admin/views/components/columns.rb +49 -0
  135. data/lib/active_admin/views/components/paginated_collection.rb +74 -0
  136. data/lib/active_admin/views/components/panel.rb +26 -0
  137. data/lib/active_admin/views/components/scopes.rb +64 -0
  138. data/lib/active_admin/views/components/sidebar_section.rb +30 -0
  139. data/lib/active_admin/views/components/table_for.rb +174 -0
  140. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  141. data/lib/active_admin/views/header_renderer.rb +37 -0
  142. data/lib/active_admin/views/index_as_block.rb +24 -0
  143. data/lib/active_admin/views/index_as_blog.rb +89 -0
  144. data/lib/active_admin/views/index_as_grid.rb +49 -0
  145. data/lib/active_admin/views/index_as_table.rb +73 -0
  146. data/lib/active_admin/views/pages/base.rb +138 -0
  147. data/lib/active_admin/views/pages/dashboard.rb +61 -0
  148. data/lib/active_admin/views/pages/edit.rb +27 -0
  149. data/lib/active_admin/views/pages/index.rb +64 -0
  150. data/lib/active_admin/views/pages/new.rb +27 -0
  151. data/lib/active_admin/views/pages/show.rb +56 -0
  152. data/lib/active_admin/views/tabs_renderer.rb +52 -0
  153. data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  154. data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  155. data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
  156. data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
  157. data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
  158. data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
  159. data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
  160. data/lib/active_admin/views/templates/active_admin_dashboard/index.html.arb +1 -0
  161. data/lib/active_admin/views/templates/active_admin_default/edit.html.arb +1 -0
  162. data/lib/active_admin/views/{active_admin_default → templates/active_admin_default}/index.csv.erb +0 -0
  163. data/lib/active_admin/views/templates/active_admin_default/index.html.arb +1 -0
  164. data/lib/active_admin/views/templates/active_admin_default/new.html.arb +1 -0
  165. data/lib/active_admin/views/templates/active_admin_default/show.html.arb +1 -0
  166. data/lib/active_admin/views/{layouts → templates/layouts}/active_admin.html.erb +3 -4
  167. data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
  168. data/lib/generators/active_admin/devise/devise_generator.rb +45 -0
  169. data/lib/generators/active_admin/install/install_generator.rb +18 -3
  170. data/lib/generators/active_admin/install/templates/active_admin.js +41 -0
  171. data/lib/generators/active_admin/install/templates/{active_admin.rb → active_admin.rb.erb} +33 -3
  172. data/lib/generators/active_admin/install/templates/active_admin_vendor.js +1 -1
  173. data/lib/generators/active_admin/install/templates/dashboards.rb +3 -4
  174. data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
  175. data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
  176. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
  177. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
  178. data/lib/generators/active_admin/install/templates/images/orderable.png +0 -0
  179. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  180. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  181. data/spec/integration/belongs_to_spec.rb +42 -0
  182. data/spec/integration/index_as_table_spec.rb +0 -119
  183. data/spec/integration/layout_spec.rb +3 -37
  184. data/spec/spec_helper.rb +89 -50
  185. data/spec/support/integration_example_group.rb +37 -0
  186. data/spec/support/rails_template.rb +21 -9
  187. data/spec/support/rails_template_with_data.rb +32 -0
  188. data/spec/support/templates/cucumber.rb +28 -0
  189. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  190. data/spec/unit/action_builder_spec.rb +19 -7
  191. data/spec/unit/action_items_spec.rb +16 -30
  192. data/spec/unit/active_admin_spec.rb +10 -22
  193. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  194. data/spec/unit/arbre/html/element_spec.rb +224 -0
  195. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  196. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  197. data/spec/unit/arbre/html_spec.rb +185 -0
  198. data/spec/unit/auto_link_spec.rb +38 -0
  199. data/spec/unit/belongs_to_spec.rb +44 -0
  200. data/spec/unit/breadcrumbs_spec.rb +110 -0
  201. data/spec/unit/comments_spec.rb +53 -0
  202. data/spec/unit/component_spec.rb +18 -0
  203. data/spec/unit/components/attributes_table_spec.rb +100 -0
  204. data/spec/unit/components/columns_spec.rb +75 -0
  205. data/spec/unit/components/panel_spec.rb +31 -0
  206. data/spec/unit/components/sidebar_section_spec.rb +37 -0
  207. data/spec/unit/components/table_for_spec.rb +130 -0
  208. data/spec/unit/dashboard_controller_spec.rb +26 -0
  209. data/spec/unit/dashboard_section_spec.rb +10 -17
  210. data/spec/unit/display_name_spec.rb +29 -0
  211. data/spec/unit/event_spec.rb +41 -0
  212. data/spec/unit/filter_form_builder_spec.rb +99 -77
  213. data/spec/unit/form_builder_spec.rb +69 -69
  214. data/spec/unit/namespace_spec.rb +61 -3
  215. data/spec/unit/pretty_format_spec.rb +35 -0
  216. data/spec/unit/registration_spec.rb +40 -1
  217. data/spec/unit/renderer_spec.rb +8 -0
  218. data/spec/unit/resource_controller_spec.rb +105 -6
  219. data/spec/unit/resource_spec.rb +78 -11
  220. data/spec/unit/routing_spec.rb +82 -6
  221. data/spec/unit/scope_spec.rb +31 -0
  222. data/spec/unit/tabs_renderer_spec.rb +24 -2
  223. data/spec/unit/view_factory_spec.rb +16 -0
  224. metadata +268 -82
  225. data/.gitignore +0 -25
  226. data/active_admin.gemspec +0 -22
  227. data/lib/active_admin/action_builder.rb +0 -60
  228. data/lib/active_admin/breadcrumbs.rb +0 -26
  229. data/lib/active_admin/dashboards/renderer.rb +0 -45
  230. data/lib/active_admin/dashboards/section_renderer.rb +0 -28
  231. data/lib/active_admin/filters.rb +0 -189
  232. data/lib/active_admin/pages.rb +0 -11
  233. data/lib/active_admin/pages/base.rb +0 -92
  234. data/lib/active_admin/pages/edit.rb +0 -21
  235. data/lib/active_admin/pages/index.rb +0 -58
  236. data/lib/active_admin/pages/index/blog.rb +0 -65
  237. data/lib/active_admin/pages/index/table.rb +0 -48
  238. data/lib/active_admin/pages/index/thumbnails.rb +0 -40
  239. data/lib/active_admin/pages/new.rb +0 -21
  240. data/lib/active_admin/pages/show.rb +0 -54
  241. data/lib/active_admin/table_builder.rb +0 -162
  242. data/lib/active_admin/tabs_renderer.rb +0 -39
  243. data/lib/active_admin/views/active_admin_dashboard/index.html.erb +0 -1
  244. data/lib/active_admin/views/active_admin_default/edit.html.erb +0 -1
  245. data/lib/active_admin/views/active_admin_default/index.html.erb +0 -1
  246. data/lib/active_admin/views/active_admin_default/new.html.erb +0 -1
  247. data/lib/active_admin/views/active_admin_default/show.html.erb +0 -1
  248. data/lib/generators/active_admin/install/templates/active_admin.css +0 -325
  249. data/lib/generators/active_admin/install/templates/images/orderable.gif +0 -0
  250. data/spec/integration/index_as_blog_spec.rb +0 -65
  251. data/spec/integration/index_as_thumbnails_spec.rb +0 -43
  252. data/spec/integration/new_view_spec.rb +0 -52
  253. data/spec/integration/show_view_spec.rb +0 -91
  254. data/spec/unit/sidebar_spec.rb +0 -96
  255. data/spec/unit/table_builder_spec.rb +0 -162
@@ -0,0 +1,51 @@
1
+ require 'active_admin/iconic/icons'
2
+
3
+ module ActiveAdmin
4
+ module Iconic
5
+
6
+ # Default color to use for icons
7
+ @@default_color = "#5E6469"
8
+ mattr_accessor :default_color
9
+
10
+ # Default width to use for icons
11
+ @@default_width = 15
12
+ mattr_accessor :default_width
13
+
14
+ # Default height to use for icons
15
+ @@default_height = 15
16
+ mattr_accessor :default_height
17
+
18
+ # Render an icon:
19
+ # Iconic.icon :loop
20
+ def self.icon(name, options = {})
21
+ options = {
22
+ :color => default_color,
23
+ :width => default_width,
24
+ :height => default_height,
25
+ :id => ""
26
+ }.merge(options)
27
+
28
+
29
+ options[:style] = "fill:#{options[:color]};"
30
+ options[:fill] = options.delete(:color)
31
+
32
+ # Convert to strings representations of pixels
33
+ [:width, :height].each do |key|
34
+ options[key] = "#{options[key]}px" unless options[key].is_a?(String)
35
+ end
36
+
37
+ template = ICONS[name.to_sym]
38
+
39
+ if template
40
+ svg = template.dup
41
+ options.each do |key, value|
42
+ svg.gsub!("{#{key}}", value)
43
+ end
44
+ "<span class=\"icon icon_#{name}\">#{svg}</span>".html_safe
45
+ else
46
+ raise "Could not find the icon named #{name}"
47
+ end
48
+ end
49
+
50
+ end
51
+ end
@@ -0,0 +1,142 @@
1
+ module ActiveAdmin
2
+ module Iconic
3
+ ICONS = {
4
+ :arrow_down => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M32,16.016l-5.672-5.664c0,0-3.18,3.18-6.312,6.312V0h-8.023v16.664l-6.32-6.32L0,16.016L16,32 L32,16.016z"/></svg>',
5
+ :arrow_down_alt1 => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><path fill="{fill}" d="M32,16c0-8.835-7.164-16-16-16S0,7.165,0,16c0,8.837,7.164,16,16,16S32,24.837,32,16z M8,16.031h6V8h4v8.031 h5.969L16,24L8,16.031z"/></svg>',
6
+ :arrow_down_alt2 => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="arrow_x5F_up_x5F_alt2_x5F_32x32"> <path fill="{fill}"d="M32,16c0-8.836-7.165-16-16-16C7.163,0,0,7.164,0,16s7.163,16,16,16C24.835,32,32,24.836,32,16z M12,22h2V6h4v16h2l-4,4 L12,22z"/></g></svg>',
7
+ :arrow_left => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M15.984,32l5.672-5.672c0,0-3.18-3.18-6.312-6.312H32v-8.023H15.344l6.312-6.32L15.984,0L0,16 L15.984,32z"/></svg>',
8
+ :arrow_left_alt1 => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><path fill="{fill}" d="M16,32.001c8.834,0,16-7.164,16-16c0-8.836-7.165-16-16-16c-8.837,0-16,7.164-16,16 C0,24.837,7.164,32.001,16,32.001z M15.969,8v6H24v4h-8.031v5.969L8,16L15.969,8z"/></svg>',
9
+ :arrow_left_alt2 => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="arrow_x5F_left_x5F_alt2_x5F_32x32"> <path fill="{fill}"d="M16,32c8.837,0,16-7.164,16-16S24.837,0,16,0C7.165,0,0,7.164,0,16S7.165,32,16,32z M10,12v2h16v4H10v2l-4-4L10,12z"/></g></svg>',
10
+ :arrow_right => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 31.999" style="enable-background:new 0 0 32 31.999;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M16.016,0l-5.668,5.672c0,0,3.18,3.18,6.312,6.312H0v8.023h16.66l-6.316,6.319l5.672,5.672L32,16 L16.016,0z"/></svg>',
11
+ :arrow_right_alt1 => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><path fill="{fill}" d="M16.001,0.002c-8.834,0-16,7.164-16,16s7.165,16,16,16c8.837,0,16-7.163,16-16S24.838,0.002,16.001,0.002z M16.032,24.003v-6H8.001v-4.001h8.031V8.033l7.969,7.969L16.032,24.003z"/></svg>',
12
+ :arrow_right_alt2 => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="arrow_x5F_right_x5F_alt2_x5F_32x32"> <path fill="{fill}"d="M16,0C7.165,0,0,7.164,0,16s7.165,16,16,16c8.837,0,16-7.164,16-16S24.837,0,16,0z M22,20v-2H6v-4h16v-2l4,4L22,20z"/></g></svg>',
13
+ :arrow_up => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32.005" style="enable-background:new 0 0 32 32.005;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M0,15.984l5.672,5.667c0,0,3.18-3.178,6.312-6.315v16.669h8.023V15.336l6.32,6.325L32,15.984L16,0 L0,15.984z"/></svg>',
14
+ :arrow_up_alt1 => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><path fill="{fill}" d="M0.001,16.002c0,8.834,7.164,16,16,16c8.836,0,15.999-7.165,15.999-16c0-8.837-7.163-16-15.999-16 C7.166,0.002,0.001,7.166,0.001,16.002z M24.002,15.971h-6v8.031h-4v-8.031H8.033l7.969-7.969L24.002,15.971z"/></svg>',
15
+ :arrow_up_alt2 => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="arrow_x5F_down_x5F_alt2_x5F_32x32"> <path fill="{fill}"d="M0,16c0,8.836,7.163,16,16,16c8.835,0,16-7.164,16-16S24.835,0,16,0C7.163,0,0,7.164,0,16z M20,10h-2v16h-4V10h-2l4-4 L20,10z"/></g></svg>',
16
+ :article => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <polygon style="{style}" points="32,4 0,4 0,0 32,0 32,4 "/> <polygon style="{style}" points="20,12 0,12 0,8 20,8 20,12 "/> <polygon style="{style}" points="32,24 0,24 0,20 32,20 32,24 "/> <polygon style="{style}" points="24,32 0,32 0,28 24,28 24,32 "/> <path fill="{fill}"style="{style}" d="M32,30c0,1.104-0.898,2-2,2c-1.109,0-2.004-0.896-2.004-2s0.895-2,2.004-2 C31.102,28,32,28.896,32,30z"/></g></svg>',
17
+ :at => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="ampersand_x5F_32x32"> <path fill="{fill}" d="M29.844,24C31.214,21.646,32,18.922,32,16c0-8.836-7.164-16-16-16S0,7.164,0,16s7.164,16,16,16 c4.417,0,8.417-1.789,11.312-4.688l-2.833-2.833C22.308,26.656,19.308,28,16,28C9.383,28,4,22.617,4,16S9.383,4,16,4 s12,5.383,12,12c0,1.422-0.273,2.781-0.734,4.047L27.234,20H24V8.042h-8c-4.422,0-8,3.583-8,8c0,4.419,3.578,8,8,8 c1.836,0,3.508-0.644,4.859-1.683C21.586,23.328,22.695,24,24,24H29.844z M20,14.008v2.034c0,2.208-1.797,4-4,4s-4-1.792-4-4 c0-2.206,1.797-4,4-4h4V14.008z"/></g></svg>',
18
+ :battery_charging => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 16" enable-background="new 0 0 32 16" xml:space="preserve"><path fill="{fill}"d="M28,4V2c0-1.099-0.897-2-2-2H2C0.899,0,0,0.901,0,2v4.043h6.391c0.821-2.324,3.02-4,5.629-4V4h3.984v2H12.02v4h4.067v2 H12.02v2.043c-2.609,0-4.808-1.676-5.629-4H0V14c0,1.1,0.899,2,2,2h24c1.103,0,2-0.9,2-2v-2h4V4H28z"/></svg>',
19
+ :battery_empty => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 16" enable-background="new 0 0 32 16" xml:space="preserve"><path fill="{fill}"d="M32,4h-4V2c0-1.099-0.897-2-2-2H2C0.899,0,0,0.901,0,2v12c0,1.099,0.899,2,2,2h24c1.103,0,2-0.901,2-2v-2h4V4z M24,12H4V4 h20V12z"/></svg>',
20
+ :battery_full => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 16" enable-background="new 0 0 32 16" xml:space="preserve"><path fill="{fill}"d="M32,4h-4V2c0-1.099-0.897-2-2-2H2C0.899,0,0,0.901,0,2v12c0,1.102,0.899,2,2,2h24c1.103,0,2-0.898,2-2v-2h4V4z"/></svg>',
21
+ :battery_half => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 16" enable-background="new 0 0 32 16" xml:space="preserve"><path fill="{fill}"d="M32,4h-4V2c0-1.099-0.897-2-2-2H2C0.899,0,0,0.901,0,2v12c0,1.1,0.899,2,2,2h24c1.103,0,2-0.9,2-2v-2h4V4z M24,12h-8V4h8V12 z"/></svg>',
22
+ :beaker => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 16 32" style="enable-background:new 0 0 16 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M14,0H2C0.895,0,0,0.896,0,2v22c0,4.417,3.582,8,8,8s8-3.583,8-8V2C16,0.896,15.105,0,14,0z M10,24 c-1.105,0-2-0.896-2-2s0.895-2,2-2s2,0.896,2,2S11.105,24,10,24z M12,16h-1.945c-0.016-1.104-0.914-2-2.023-2s-2.008,0.896-2.023,2 H4V4h8V16z"/></svg>',
23
+ :beaker_alt => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 16 32" style="enable-background:new 0 0 16 32;" xml:space="preserve"><g> <circle style="{style}" cx="9" cy="9" r="0.969"/> <path fill="{fill}"style="{style}" d="M14,0H2C0.895,0,0,0.896,0,2v22c0,4.417,3.582,8,8,8s8-3.583,8-8V2C16,0.896,15.105,0,14,0z M5.031,20c-0.535,0-0.969-0.433-0.969-0.969s0.434-0.969,0.969-0.969S6,18.495,6,19.031S5.566,20,5.031,20z M10,24 c-1.105,0-2-0.896-2-2s0.895-2,2-2s2,0.896,2,2S11.105,24,10,24z M12,16h-1.945c-0.016-1.104-0.914-2-2.023-2s-2.008,0.896-2.023,2 H4V4h8V16z"/></g></svg>',
24
+ :bolt => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="bolt_x5F_32x32"> <polygon fill="{fill}" points="32,0 8,16 14,20 0,32 24,20 18,16 "/></g></svg>',
25
+ :book => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 28 32" style="enable-background:new 0 0 28 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M4,0C1.792,0,0,1.792,0,4v24c0,2.209,1.792,4,4,4h24V0H4z M24,28H8V4h3.984v8.039l4-4l4.031,4.031V4 H24V28z"/></svg>',
26
+ :book_alt => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 31.969" style="enable-background:new 0 0 32 31.969;" xml:space="preserve"><g> <rect x="11.99" y="7.992" style="{style}" width="7.99" height="4.028"/> <path fill="{fill}"style="{style}" d="M27.975,8.039L32,4.011h-4.025V0H3.996C1.787,0,0,1.789,0,3.995v23.979 c0,2.206,1.787,3.995,3.996,3.995h23.979V12.036h3.994L27.975,8.039z M23.975,27.974H7.99V3.995h15.984V27.974z"/></g></svg>',
27
+ :box => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="box_x5F_32x32"> <g> <rect y="12" fill="{fill}" width="32" height="20"/> <polygon fill="{fill}" points="18,8 32,8 28,0 18,0 "/> <polygon fill="{fill}" points="14,0 4,0 0,8 14,8 "/> </g></g></svg>',
28
+ :calendar => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <polygon style="{style}" points="23.918,4 23.918,0 19.918,0 19.918,4 11.918,4 11.918,0 7.918,0 7.918,4 0,4 0,8 7.918,8 11.918,8 19.918,8 23.918,8 32,8 32,4 "/> <rect x="4" y="20" style="{style}" width="24" height="4"/> <rect x="4" y="12" style="{style}" width="24" height="4"/> <polygon style="{style}" points="24,32 4,32 4,28 28,28 "/></g></svg>',
29
+ :calendar_alt_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M26,4v2.047c0,2.211-1.789,4-4,4s-4-1.789-4-4V4h-4v2.047c0,2.211-1.789,4-4,4s-4-1.789-4-4V4H0v28 h32V4H26z M10,28H6v-4h4V28z M10,20H6v-4h4V20z M18,28h-4v-4h4V28z M18,20.008h-4v-4h4V20.008z M22,28v-4h4L22,28z M26,20h-4v-4h4 V20z"/> <path fill="{fill}"style="{style}" d="M8,6V2c0-1.104,0.895-2,2-2s2,0.896,2,2v4c0,1.104-0.895,2-2,2S8,7.104,8,6z"/> <path fill="{fill}"style="{style}" d="M20,6V2c0-1.104,0.895-2,2-2s2,0.896,2,2v4c0,1.104-0.895,2-2,2S20,7.104,20,6z"/></g></svg>',
30
+ :calendar_alt_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <polygon style="{style}" points="32,32 0,32 0,4 4,4 4,28 28,28 28,4 32,4 32,32 "/> <rect x="6" y="12" style="{style}" width="4" height="4"/> <rect x="14" y="12.008" style="{style}" width="4" height="4"/> <rect x="22" y="12" style="{style}" width="4" height="4"/> <rect x="6" y="20" style="{style}" width="4" height="4"/> <rect x="14" y="20" style="{style}" width="4" height="4"/> <polygon style="{style}" points="22,24 22,20 26,20 "/> <path fill="{fill}"style="{style}" d="M8,6V2c0-1.104,0.895-2,2-2s2,0.896,2,2v4c0,1.104-0.895,2-2,2S8,7.104,8,6z"/> <path fill="{fill}"style="{style}" d="M20,6V2c0-1.104,0.895-2,2-2s2,0.896,2,2v4c0,1.104-0.895,2-2,2S20,7.104,20,6z"/></g></svg>',
31
+ :cd => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <g> <path fill="{fill}"style="{style}" d="M16,0C7.164,0,0,7.164,0,16s7.164,16,16,16s16-7.164,16-16S24.836,0,16,0z M16.031,19.934 c-2.188,0-3.965-1.773-3.965-3.965c0-2.195,1.777-3.969,3.965-3.969C18.227,12,20,13.773,20,15.969 C20,18.16,18.227,19.934,16.031,19.934z"/> </g></g></svg>',
32
+ :chat => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="chat_x5F_32x32"> <path fill="{fill}" d="M24,12V8c0-5.523-4-8-8-8H8C4,0,0,2.125,0,8c0,5.75,4,8,8,8h0.926C8.359,17.099,8,18.406,8,20v4 c0,4.418,3.582,8,8,8c0-2.209,1.797-4,4-4h4c4,0,8-2.25,8-8C32,14.125,28,12,24,12z M8,12c-4,0-4-3.012-4-4c0-1.199,0-4,4-4h8 c1.5,0,4,0.52,4,4v4c0,1.307-0.625,2.471-1.609,3.2C16.931,13.258,14.609,12,12,12H8z M24,24h-4c-2.609,0-4.938,1.258-6.397,3.199 C12.629,26.469,12,25.305,12,24v-4c0-1.831,0.91-2.941,1.816-3.512C15.098,17.156,16,18.457,16,20c2.957,0,5.509-1.621,6.895-4.004 c-0.004,0.001-0.004,0.001-0.004,0.004H24c4,0,4,2.802,4,4C28,20.989,28,24,24,24z M23.719,13.994 c-0.027,0.092-0.059,0.182-0.085,0.271C23.66,14.176,23.696,14.086,23.719,13.994z"/></g></svg>',
33
+ :chat_alt_fill => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="chat_x5F_alt_x5F_fill_x5F_32x32"> <g> <g> <path fill="{fill}" d="M24,12c0,4.418-3.578,8-8,8c0-2.207-1.793-4-4-4H8c-4,0-8-2.25-8-8c0-5.875,4-8,8-8h8c4,0,8,2.479,8,8V12 z"/> </g> <path fill="{fill}" d="M12,12"/> <path fill="{fill}" d="M12,12"/> <g> <g> <path fill="{fill}" d="M25.984,12.213C25.863,17.625,21.438,22,16,22h-2v-2c0-1.104-0.897-2-2-2H8.203 C8.078,18.619,8,19.281,8,20v4c0,4.418,3.582,8,8,8c0-2.209,1.797-4,4-4h4c4,0,8-2.25,8-8C32,15.106,29.219,12.84,25.984,12.213 z"/> </g> </g> </g></g></svg>',
34
+ :chat_alt_stroke => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="chat_x5F_alt_x5F_stroke_x5F_32x32"> <g> <g> <path fill="{fill}" d="M25.978,12.213c-0.024,1.386-0.337,2.695-0.884,3.889C27.978,16.582,28,18.93,28,20c0,0.989,0,4-3.996,4 H20c-2.605,0-4.938,1.258-6.397,3.2C12.634,26.471,12,25.307,12,24v-4c0-0.792,0.141-1.414,0.359-1.928 C12.243,18.051,12.125,18,12,18H8.203c-0.125,0.619-0.199,1.281-0.199,2v4c0,4.418,3.578,8,7.996,8c0-2.209,1.79-4,4-4h4.004 C28,28,32,25.75,32,20C32,15.106,29.219,12.84,25.978,12.213z"/> </g> <path fill="{fill}" d="M16,4c1.493,0,4,0.52,4,4v4c0,1.309-0.632,2.471-1.601,3.2C16.938,13.26,14.609,12,12,12H8.004 C4,12,4,8.989,4,8c0-1.195,0-4,4.004-4H16 M16,0H8.004C4,0,0,2.125,0,8c0,5.75,4,8,8.004,8H12c2.212,0,4,1.793,4,4 c4.422,0,8.004-3.582,8.004-8V8C24.004,2.479,20,0,16,0L16,0z"/> </g></g></svg>',
35
+ :check => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 25.754" style="enable-background:new 0 0 32 25.754;" xml:space="preserve"><g> <polygon style="{style}" points="11.941,25.754 0,13.812 5.695,8.117 11.941,14.363 26.305,0 32,5.695 11.941,25.754 "/></g></svg>',
36
+ :check_alt => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M16,0C7.164,0,0,7.164,0,16s7.164,16,16,16s16-7.164,16-16S24.836,0,16,0z M13.52,23.383L6.16,16.02 l2.828-2.828l4.532,4.535l9.617-9.618l2.828,2.828L13.52,23.383z"/></svg>',
37
+ :clock => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M16,4c6.617,0,12,5.383,12,12s-5.383,12-12,12S4,22.617,4,16S9.383,4,16,4 M16,0 C7.164,0,0,7.164,0,16s7.164,16,16,16s16-7.164,16-16S24.836,0,16,0L16,0z"/> <path fill="{fill}"style="{style}" d="M21.422,18.578L18,15.152V8h-4.023v7.992c0,0.602,0.277,1.122,0.695,1.493l3.922,3.922 L21.422,18.578z"/></g></svg>',
38
+ :cloud => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 20" enable-background="new 0 0 32 20" xml:space="preserve"><path fill="{fill}" d="M24,4c-0.379,0-0.738,0.062-1.103,0.11C21.507,1.648,18.929,0,16,0c-2.988,0-5.566,1.665-6.941,4.101 C8.71,4.054,8.355,4,8,4c-4.41,0-8,3.586-8,8c0,4.414,3.59,8,8,8h16c4.413,0,8-3.586,8-8C32,7.586,28.413,4,24,4z M24,16H8 c-2.207,0-4-1.797-4-4c0-2.195,1.944-3.883,4.007-3.945C8.012,9,8.179,9.922,8.507,10.797l3.743-1.399C12.085,8.953,12,8.484,12,8 c0-2.204,1.793-4,4-4c1.293,0,2.465,0.641,3.199,1.64C17.272,7.101,16,9.395,16,12h4c0-2.204,1.793-4,4-4c2.21,0,4,1.796,4,4 C28,14.203,26.21,16,24,16z"/></svg>',
39
+ :cog => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M32,20v-8h-4.734c-0.141-0.391-0.289-0.771-0.469-1.146l3.344-3.339l-5.656-5.661l-3.344,3.344 C20.777,5.026,20.375,4.933,20,4.792V0h-8v4.792c-0.383,0.141-0.781,0.234-1.145,0.406l-3.34-3.344l-5.66,5.661l3.34,3.339 C5.02,11.229,4.871,11.609,4.734,12H0v8h4.734c0.137,0.391,0.285,0.771,0.461,1.146l-3.34,3.339l5.66,5.661l3.34-3.344 c0.363,0.172,0.762,0.266,1.145,0.406V32h8v-4.792c0.375-0.141,0.777-0.234,1.141-0.406l3.344,3.344l5.656-5.661l-3.344-3.339 c0.18-0.375,0.328-0.755,0.469-1.146H32z M16,20.083c-2.211,0-4-1.791-4-4c0-2.208,1.789-4,4-4c2.207,0,4,1.792,4,4 C20,18.292,18.207,20.083,16,20.083z"/></svg>',
40
+ :cog_alt => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="cog_x5F_alt_x5F_32x32"> <path fill="{fill}" d="M32,17.969v-4l-4.781-1.992c-0.133-0.375-0.273-0.737-0.445-1.094l1.93-4.805L25.875,3.25l-4.763,1.961 c-0.362-0.175-0.734-0.323-1.117-0.461L17.969,0h-4l-1.977,4.734c-0.398,0.141-0.781,0.289-1.161,0.469L6.078,3.294L3.25,6.122 l1.938,4.711C5,11.219,4.847,11.614,4.703,12.021L0,14.031v4l4.706,1.961c0.146,0.406,0.302,0.802,0.489,1.188l-1.903,4.742 L6.12,28.75l4.724-1.945c0.378,0.18,0.766,0.325,1.164,0.461L14.031,32h4l1.979-4.758c0.38-0.141,0.755-0.289,1.114-0.461 l4.797,1.922l2.828-2.828l-1.969-4.773c0.167-0.359,0.305-0.722,0.438-1.094L32,17.969z M15.969,22c-3.312,0-6-2.688-6-6 s2.688-6,6-6s6,2.688,6,6S19.281,22,15.969,22z"/></g></svg>',
41
+ :comment_alt1_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M0,19.992C0,26.626,5.375,32,12.008,32v-4.015c0-2.203,1.789-4,4-4h3.996 C26.625,23.985,32,18.624,32,11.999S26.625,0,20.004,0h-9.996c-5.52,0-9.996,4.47-9.996,9.999v9.993H0z"/></g></svg>',
42
+ :comment_alt1_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M20.004,8c2.203,0,4,1.789,4,3.995c0,2.203-1.797,3.997-4,3.997h-3.996c-3.07,0-5.875,1.164-8,3.062 v-9.06c0-1.104,0.898-1.995,2-1.995H20.004 M20.004,0h-9.996c-5.52,0-9.996,4.477-9.996,9.995v9.997H0C0,26.625,5.375,32,12.008,32 v-4.008c0-2.211,1.789-4,4-4h3.996C26.625,23.992,32,18.617,32,11.995C32,5.37,26.625,0,20.004,0L20.004,0z"/></svg>',
43
+ :comment_alt2_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32.001 24.002" style="enable-background:new 0 0 32.001 24.002;" xml:space="preserve"><g> <g> <path fill="{fill}"style="{style}" d="M29.938,20.002c0,0,2.062-4.001,2.062-8.001C32.001,2,24.005,0,16.005,0 C-6.37,0,0.011,20.002,4.011,24.002c4-4,4-4,9.996-4H29.938z"/> </g></g></svg>',
44
+ :comment_alt2_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 24" style="enable-background:new 0 0 32 24;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M16,4c11.074,0,12,4.129,12,8c0,1.344-0.359,2.805-0.75,4H14c-4.703,0-6.734,0.195-9,1.758 c-0.938-2.572-1.535-6.046-0.375-8.84C5.975,5.656,9.803,4,16,4 M16,0C-6.369,0,0.012,20,4.006,24c4-4,4-4,9.994-4h15.938 c0,0,2.062-4,2.062-8C32,2,24,0,16,0L16,0z"/></g></svg>',
45
+ :comment_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 28" style="enable-background:new 0 0 32 28;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M0,20c0,4.417,3.586,8,8,8c0-2.211,1.792-4,4-4h8c6.629,0,12-5.375,12-12S26.629,0,20,0H10 C4.477,0,0,4.477,0,10V20z"/></g></svg>',
46
+ :comment_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 28" style="enable-background:new 0 0 32 28;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M20,4c4.414,0,8,3.586,8,8s-3.586,8-8,8h-8c-2.609,0-4.933,1.258-6.394,3.203 C4.633,22.469,4,21.305,4,20V10c0-3.308,2.695-6,6-6H20 M20,0H10C4.477,0,0,4.477,0,10v10c0,4.417,3.586,8,8,8c0-2.211,1.793-4,4-4 h8c6.629,0,12-5.375,12-12S26.629,0,20,0L20,0z"/></svg>',
47
+ :compass => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g> <path fill="{fill}"d="M16,4c6.618,0,12,5.383,12,12s-5.382,12-12,12C9.384,28,4,22.617,4,16S9.384,4,16,4 M16,0C7.165,0,0,7.164,0,16 s7.165,16,16,16c8.837,0,16-7.164,16-16S24.837,0,16,0L16,0z"/> <g> <path fill="{fill}"d="M18.125,13.879c0.797,0.798,1.009,1.93,0.719,2.944L24,8l-8.703,5.138C16.281,12.896,17.359,13.109,18.125,13.879z"/> <path fill="{fill}"d="M13.884,18.121c-0.774-0.771-0.984-1.85-0.743-2.836L8,24l8.832-5.16C15.816,19.133,14.688,18.922,13.884,18.121z"/> </g></g></svg>',
48
+ :cursor => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="cursor_x5F_32x32"> <polygon fill="{fill}" points="32,28 18,14 24,8 0,0 8,23.995 14,17.995 28,32 "/></g></svg>',
49
+ :denied => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M16,0C7.164,0,0,7.164,0,16s7.164,16,16,16s16-7.164,16-16S24.836,0,16,0z M16,4 c2.59,0,4.973,0.844,6.934,2.242L6.238,22.93C4.84,20.969,4,18.586,4,16C4,9.383,9.383,4,16,4z M16,28 c-2.59,0-4.973-0.844-6.934-2.242L25.762,9.07C27.16,11.031,28,13.414,28,16C28,22.617,22.617,28,16,28z"/></svg>',
50
+ :denied_alt => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M16,0C7.164,0,0,7.164,0,16c0,8.836,7.164,16,16,16s16-7.164,16-16C32,7.164,24.836,0,16,0z M16,8 c0.711,0,1.387,0.121,2.043,0.297l-9.742,9.75C8.121,17.391,8,16.71,8,16C8,11.586,11.59,8,16,8z M16,24 c-0.711,0-1.387-0.125-2.043-0.297l9.742-9.75C23.879,14.609,24,15.289,24,16C24,20.414,20.41,24,16,24z"/></svg>',
51
+ :dial => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 31.828" enable-background="new 0 0 32 31.828" xml:space="preserve"><g id="{id}"></g><g id="dial_x5F_32x32"> <g> <path fill="{fill}" d="M16,11.828c-2.21,0-4,1.79-4,4c0,2.208,1.79,4,4,4c2.212,0,4-1.793,4-4C20,13.617,18.212,11.828,16,11.828 z"/> <path fill="{fill}" d="M28.556,6.047c-0.344,0.281-0.766,0.469-1.243,0.469c-1.101,0-2-0.895-2-2 c0-0.488,0.196-0.918,0.484-1.266c-2.219-1.711-4.906-2.864-7.835-3.227C17.859,1.031,17.04,1.828,16,1.828 c-1.038,0-1.871-0.808-1.96-1.828c-2.969,0.382-5.672,1.555-7.911,3.324C6.384,3.66,6.562,4.062,6.562,4.516c0,1.105-0.891,2-2,2 c-0.444,0-0.844-0.176-1.179-0.426C1.297,8.796,0,12.145,0,15.828c0,8.836,7.165,16,16,16c8.837,0,16-7.164,16-16 C32,12.113,30.688,8.746,28.556,6.047z M16,23.828c-4.418,0-8-3.582-8-8c0-2.211,0.895-4.208,2.344-5.657L16,4.515l5.649,5.645 C23.103,11.613,24,13.613,24,15.828C24,20.246,20.415,23.828,16,23.828z"/> </g></g></svg>',
52
+ :document_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M21.609,0H0v32l7.977-6.641L15.992,32L24,25.37L32,32V10.301L21.609,0z M18,14V4l10,10H18z"/></svg>',
53
+ :document_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32.023" style="enable-background:new 0 0 32 32.023;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M22.016,0H0v31.961l8.053-6.582l8.016,6.645l8.016-6.637L32,32.008v-22L22.016,0z M28.021,23.955 l-3.953-3.229c0,0-0.041,0.034-0.104,0.086l-7.896,6.535L8.09,20.734l-4.084,3.221c0,0,0-17.373,0-20.016c2.1,0,7.807,0,12.006,0 v12.01h12.01C28.021,18.682,28.021,23.955,28.021,23.955z M20.016,11.945c0-1.543,0-5.918,0-8.006 c1.615,1.619,6.402,6.404,8.006,8.006C25.975,11.945,21.568,11.945,20.016,11.945z"/></svg>',
54
+ :eject => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <polygon style="{style}" points="0,20 16,0 32,20 "/> <rect y="24" style="{style}" width="31.955" height="8"/></g></svg>',
55
+ :equalizer => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M20,20h-2V2c0-1.105-0.891-2-2-2c-1.102,0-2,0.895-2,2v18h-2v4h2v6c0,1.105,0.898,2,2,2 c1.109,0,2-0.895,2-2v-6h2V20z"/> <path fill="{fill}"style="{style}" d="M32,8h-2V2c0-1.105-0.891-2-2-2c-1.102,0-2,0.895-2,2v6h-2v4h2v18c0,1.105,0.898,2,2,2 c1.109,0,2-0.895,2-2V12h2V8z"/> <path fill="{fill}"style="{style}" d="M8,12H6V2c0-1.105-0.891-2-2-2C2.898,0,2,0.895,2,2v10H0v4h2v14c0,1.105,0.898,2,2,2 c1.109,0,2-0.895,2-2V16h2V12z"/></g></svg>',
56
+ :eyedropper => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="eyedropper_x5F_32x32"> <path fill="{fill}" d="M29.658,13.684c3.123-3.118,3.123-8.18,0-11.297c-1.555-1.559-3.602-2.34-5.643-2.34 c-2.045,0-4.092,0.781-5.649,2.34l-0.592,0.59L14.798,0l-2.82,2.823l2.977,2.974L0,20.761v7.247L3.931,32h7.414l14.907-14.906 l2.875,2.878l2.82-2.82l-2.875-2.878L29.658,13.684z M10.321,27.365c0.047-1.511-0.477-3.033-1.627-4.186 c-1.061-1.06-2.443-1.582-3.834-1.629L17.782,8.628l5.642,5.638L10.321,27.365z"/></g></svg>',
57
+ :first => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <polygon style="{style}" points="32,32 8,16 32,0 "/> <rect y="4" style="{style}" width="8" height="24"/></g></svg>',
58
+ :folder_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g> <path fill="{fill}" d="M32,30c0,1.105-0.891,2-2,2H2c-1.105,0-2-0.895-2-2V12h32V30z"/> <polygon fill="{fill}" points="12,4.003 12,0 0,0 0,8 32,8 32,4.003 "/></g></svg>',
59
+ :folder_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><path fill="{fill}" d="M16,4V0H0v12.004v3.375V28c0,2.211,1.79,4,4,4h24c2.207,0,4-1.789,4-4V16.004v-4V4H16z M12,4L12,4v4h4h12v4 H4V4H12z M28,28H4V16h24v0.004V28z"/></svg>',
60
+ :fork => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 28 32" enable-background="new 0 0 28 32" xml:space="preserve"><g> <path fill="{fill}"d="M20,0v3.875c0,1.602-0.625,3.109-1.755,4.239L6.93,19.367C5.141,21.151,4.156,23.495,4.047,26H0l6,6l6-6H8.042 c0.106-1.438,0.685-2.773,1.708-3.805l11.32-11.25C22.961,9.055,24,6.547,24,3.875V0H20z"/> <path fill="{fill}"d="M23.953,26c-0.109-2.505-1.099-4.849-2.891-6.641l-2.227-2.214L16,19.964l2.242,2.231c1.031,1.028,1.609,2.367,1.711,3.805 H16l6,6l6-6H23.953z"/></g></svg>',
61
+ :fullscreen => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="fullscreen_x5F_32x32"> <g> <polygon fill="{fill}" points="27.414,24.586 22.828,20 20,22.828 24.586,27.414 20,32 32,32 32,20 "/> <polygon fill="{fill}" points="12,0 0,0 0,12 4.586,7.414 9.125,11.953 11.953,9.125 7.414,4.586 "/> <polygon fill="{fill}" points="12,22.828 9.172,20 4.586,24.586 0,20 0,32 12,32 7.414,27.414 "/> <polygon fill="{fill}" points="32,0 20,0 24.586,4.586 20.042,9.125 22.87,11.953 27.414,7.414 32,12 "/> </g></g></svg>',
62
+ :fullscreen_alt => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="fullscreen_x5F_alt_x5F_32x32"> <g> <polygon fill="{fill}" points="29.414,26.586 22.828,20 20,22.828 26.586,29.414 24,32 32,32 32,24 "/> <polygon fill="{fill}" points="2.586,5.414 9.172,12 12,9.172 5.414,2.586 8,0 0,0 0,8 "/> <polygon fill="{fill}" points="26.586,2.586 20,9.172 22.828,12 29.414,5.414 32,8 32,0 24,0 "/> <polygon fill="{fill}" points="12,22.828 9.172,20 2.586,26.586 0,24 0,32 8,32 5.414,29.414 "/> </g></g></svg>',
63
+ :fullscreen_exit => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="fullscreen_x5F_exit_x5F_32x32"> <g> <polygon fill="{fill}" points="24.586,27.414 29.172,32 32,29.172 27.414,24.586 32,20 20,20 20,32 "/> <polygon fill="{fill}" points="0,12 12,12 12,0 7.414,4.586 2.875,0.043 0.047,2.871 4.586,7.414 "/> <polygon fill="{fill}" points="0,29.172 2.828,32 7.414,27.414 12,32 12,20 0,20 4.586,24.586 "/> <polygon fill="{fill}" points="20,12 32,12 27.414,7.414 31.961,2.871 29.133,0.043 24.586,4.586 20,0 "/> </g></g></svg>',
64
+ :fullscreen_exit_alt => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="fullscreen_x5F_exit_x5F_alt_x5F_32x32"> <g> <polygon fill="{fill}" points="22.586,25.414 29.172,32 32,29.172 25.414,22.586 28,20 20,20 20,28 "/> <polygon fill="{fill}" points="6.547,9.371 4,12 11.961,11.957 12,4 9.375,6.543 2.828,0 0,2.828 "/> <polygon fill="{fill}" points="0,29.172 2.828,32 9.414,25.414 12,28 12,20 4,20 6.586,22.586 "/> <polygon fill="{fill}" points="28.031,12 25.438,9.404 32,2.838 29.164,0 22.594,6.566 20,3.971 20,12 "/> </g></g></svg>',
65
+ :headphones => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 28" style="enable-background:new 0 0 32 28;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M30,16h-2v-4c0-6.627-5.375-12-12-12S4,5.373,4,12v4H2c-1.105,0-2,0.895-2,2v8c0,1.105,0.895,2,2,2h6 V16v-4c0-4.411,3.586-8,8-8s8,3.589,8,8v4v12h6c1.104,0,2-0.895,2-2v-8C32,16.895,31.104,16,30,16z"/></svg>',
66
+ :heart_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 28" style="enable-background:new 0 0 32 28;" xml:space="preserve"><g> <g> <path fill="{fill}"style="{style}" d="M16,3.844C14.387,1.578,11.871,0,8.887,0C3.984,0,0,3.992,0,8.891v0.734L16.006,28L32,9.625V8.891 C32,3.992,28.016,0,23.115,0C20.131,0,17.615,1.578,16,3.844z"/> </g></g></svg>',
67
+ :heart_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 28" style="enable-background:new 0 0 32 28;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M23.115,4c2.453,0,4.49,1.82,4.834,4.188L16.006,21.906L4.053,8.188C4.396,5.82,6.428,4,8.887,4 c2.016,0,3.854,2.164,3.854,2.164L16,9.625l3.256-3.461C19.256,6.164,21.1,4,23.115,4 M23.115,0c-2.984,0-5.5,1.578-7.115,3.844 C14.387,1.578,11.871,0,8.887,0C3.984,0,0,3.992,0,8.891v0.734L16.006,28L32,9.625V8.891C32,3.992,28.016,0,23.115,0L23.115,0z"/></g></svg>',
68
+ :home => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="home_x5F_32x32"> <path fill="{fill}" d="M16,0L0,16h4v16h24V16h4L16,0z M24,28h-6v-6h-4v6H8V13.656L16,8l8,5.656V28z"/></g></svg>',
69
+ :image => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <polygon style="{style}" points="8,24 8,16 12,12 16,16 24,8 32,16 32,24 "/> <polygon style="{style}" points="4,28 4,0 0,4 0,28 0,32 4,32 28,32 32,28 "/></g></svg>',
70
+ :info => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 16 32" enable-background="new 0 0 16 32" xml:space="preserve"><g id="{id}"></g><g id="Layer_21"> <g> <path fill="{fill}" d="M2,16c1.104,0,2,0.895,2,2v8c0,1.105-0.896,2-2,2H0v4h16v-4h-1.992c-1.102,0-2-0.895-2-2L12,12H0v4H2z"/> <circle fill="{fill}" cx="8" cy="4" r="4"/> </g></g></svg>',
71
+ :iphone => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 24 32" style="enable-background:new 0 0 24 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M16,0H8C3.582,0,0,3.582,0,8v16c0,4.418,3.582,8,8,8h8c4.418,0,8-3.582,8-8V8C24,3.582,20.418,0,16,0 z M12,30.062c-1.138,0-2.062-0.924-2.062-2.062s0.924-2.062,2.062-2.062c1.139,0,2.062,0.924,2.062,2.062S13.139,30.062,12,30.062z M20,24H4V8c0-2.206,1.794-4,4-4h8c2.205,0,4,1.794,4,4V24z"/></svg>',
72
+ :key_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <g> <path fill="{fill}"style="{style}" d="M22,0c-5.523,0-10,4.477-10,10c0,0.623,0.074,1.227,0.184,1.816L0,24v8h12v-4h4v-4h4v-4 l0.184-0.184C20.773,19.926,21.379,20,22,20c5.523,0,10-4.477,10-10S27.523,0,22,0z M22.008,12c-1.105,0-2-0.895-2-2s0.895-2,2-2 s2,0.895,2,2S23.113,12,22.008,12z"/> </g></g></svg>',
73
+ :key_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M22,4c3.309,0,6,2.691,6,6s-2.691,6-6,6c-0.312,0-0.658-0.039-1.088-0.117L18.844,15.5l-1.488,1.488 l-0.184,0.184L16,18.344V20h-4v4H8v4H4v-2.344l11.012-11.012l1.488-1.488l-0.383-2.07C16.038,10.657,16,10.312,16,10 C16,6.691,18.691,4,22,4 M22,0c-5.523,0-10,4.477-10,10c0,0.625,0.074,1.227,0.184,1.816L0,24v8h12v-4h4v-4h4v-4l0.184-0.184 C20.773,19.926,21.377,20,22,20c5.523,0,10-4.477,10-10S27.523,0,22,0L22,0z"/> <circle style="{style}" cx="22.008" cy="10" r="2"/></g></svg>',
74
+ :last => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <polygon style="{style}" points="0,0 24,16 0,32 "/> <rect x="24" y="4" style="{style}" width="8" height="24"/></g></svg>',
75
+ :left_quote => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 24" enable-background="new 0 0 32 24" xml:space="preserve"><g id="{id}"></g><g id="left_x5F_quote_x5F_32x32"> <g> <path fill="{fill}" d="M32,24V12h-8c0-4.411,3.587-8,8-8V0c-6.616,0-12,5.383-12,12v12H32z"/> <path fill="{fill}" d="M12,24V12H4c0-4.411,3.587-8,8-8V0C5.384,0,0,5.383,0,12v12H12z"/> </g></g></svg>',
76
+ :left_quote_alt => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 24" enable-background="new 0 0 32 24" xml:space="preserve"><g id="{id}"></g><g id="left_x5F_quote_x5F_alt_x5F_32x32"> <g> <polygon fill="{fill}" points="32,24 32,0 20,12 20,24 "/> <polygon fill="{fill}" points="12,24 12,0 0,12 0,24 "/> </g></g></svg>',
77
+ :lightbulb => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 20.051 32" style="enable-background:new 0 0 20.051 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M10.024,4.007c3.32,0,6.019,2.7,6.019,6.017c0,1.894-0.867,3.636-2.379,4.773 c-2.266,1.707-3.18,3.593-3.496,5.179H9.883c-0.313-1.586-1.23-3.473-3.493-5.179c-1.515-1.137-2.382-2.879-2.382-4.773 C4.008,6.707,6.707,4.007,10.024,4.007 M10.024,0C4.488,0,0,4.488,0,10.024c0,3.28,1.547,6.147,3.977,7.976 c1.121,0.844,2.042,1.93,2.042,3.43v2.555h8.012V21.43c0-1.5,0.922-2.586,2.043-3.43c2.43-1.829,3.977-4.696,3.977-7.976 C20.051,4.488,15.562,0,10.024,0L10.024,0z"/> <rect x="6.02" y="27.992" style="{style}" width="8.012" height="4.008"/></g></svg>',
78
+ :link => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="link_x5F_32x32"> <g> <path fill="{fill}" d="M31.414,0.586c-0.781-0.781-2.047-0.781-2.828,0l-4.071,4.073C22.847,3.553,20.921,3,18.999,3 c-2.559,0-5.116,0.977-7.069,2.93l-6,6c-3.422,3.42-3.844,8.703-1.274,12.584l-4.069,4.072c-0.781,0.781-0.781,2.047,0,2.828 C0.977,31.805,1.487,32,1.999,32c0.516,0,1.024-0.195,1.415-0.586l4.069-4.072C9.155,28.447,11.077,29,12.999,29 c2.562,0,5.118-0.977,7.071-2.93l6-6c3.422-3.419,3.844-8.703,1.272-12.583l4.071-4.073C32.195,2.633,32.195,1.367,31.414,0.586z M24.999,13c0,1.602-0.625,3.109-1.757,4.242l-6,6C16.108,24.375,14.602,25,12.999,25c-0.906,0-1.772-0.221-2.569-0.602 l2.984-2.984c0.781-0.781,0.781-2.047,0-2.828s-2.047-0.781-2.828,0L7.602,21.57C7.218,20.775,6.999,19.908,6.999,19 c0-1.602,0.625-3.109,1.759-4.242l6-6C15.89,7.625,17.398,7,18.999,7c0.906,0,1.774,0.221,2.571,0.602l-3.047,3.047 c-0.781,0.781-0.781,2.047,0,2.828c0.391,0.391,0.901,0.586,1.413,0.586c0.516,0,1.024-0.195,1.415-0.586l3.047-3.047 C24.78,11.225,24.999,12.092,24.999,13z"/> </g></g></svg>',
79
+ :lock_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 24.006 32" style="enable-background:new 0 0 24.006 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M14.006,0c-5.508,0-10,4.485-10,10v2H0v14c0,3.309,2.693,6,6,6h12.006c3.307,0,6-2.691,6-6V10 C24.006,4.485,19.516,0,14.006,0z M12,24c-1.104,0-2-0.895-2-2s0.896-2,2-2c1.107,0,2,0.895,2,2S13.107,24,12,24z M20.006,12h-12v-2 c0-3.309,2.695-6,6-6c3.307,0,6,2.691,6,6V12z"/></svg>',
80
+ :lock_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 24.008 32" style="enable-background:new 0 0 24.008 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M14.008,0c-5.512,0-10,4.484-10,10v2H0v14c0,3.305,2.695,6,6,6h12.008c3.312,0,6-2.695,6-6V10 C24.008,4.484,19.523,0,14.008,0z M8.008,10c0-3.312,2.695-6,6-6c3.312,0,6,2.688,6,6v2h-12V10z M18.008,28H6c-1.102,0-2-0.898-2-2 V16h16.008v10C20.008,27.102,19.113,28,18.008,28z"/> <path fill="{fill}"style="{style}" d="M14.008,22c0,1.102-0.898,2-2,2c-1.109,0-2-0.898-2-2c0-1.109,0.891-2,2-2 C13.109,20,14.008,20.891,14.008,22z"/></g></svg>',
81
+ :loop => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 31.999 32" style="enable-background:new 0 0 31.999 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M9.804,3.677l-5.803,5.8V3.841H0v11.997h12.001v-4H7.298l5.335-5.333 c3.387-3.391,9.307-3.391,12.701,0l2.828-2.828C23.261-1.229,14.708-1.222,9.804,3.677z"/> <path fill="{fill}"style="{style}" d="M19.999,16.033v4h4.703l-5.336,5.338c-3.389,3.395-9.307,3.395-12.701,0l-2.829,2.824 C6.287,30.648,9.55,32,13.021,32c3.469,0,6.725-1.352,9.174-3.805l5.805-5.803v5.639h4V16.033H19.999z"/></g></svg>',
82
+ :loop_alt1 => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 24" enable-background="new 0 0 32 24" xml:space="preserve"><g> <path fill="{fill}"d="M26,12l-6,6h4c0,1.102-0.897,2-2,2H10c-1.101,0-2-0.898-2-2v-2H4v2c0,3.308,2.691,6,6,6h12c3.312,0,6-2.692,6-6h4L26,12z" /> <path fill="{fill}"d="M22,0H10C6.691,0,4,2.692,4,6v0.062H0L6,12l6-5.938H8V6c0-1.102,0.899-2,2-2h12c1.103,0,2,0.898,2,2v2h4V6 C28,2.692,25.312,0,22,0z"/></g></svg>',
83
+ :loop_alt2 => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 28" enable-background="new 0 0 32 28" xml:space="preserve"><g> <path fill="{fill}"d="M19.946,20l6.007-8L32,20h-4v2c0,3.308-2.688,6-6,6H10c-3.309,0-6-2.692-6-6v-2h4v2c0,1.102,0.899,2,2,2h12 c1.103,0,2-0.898,2-2v-2H19.946z"/> <path fill="{fill}"d="M12.056,8l-6.009,8L0,8h4V6c0-3.308,2.691-6,6-6h12c3.312,0,6,2.692,6,6v2h-4V6c0-1.102-0.897-2-2-2H10 C8.899,4,8,4.898,8,6v2H12.056z"/></g></svg>',
84
+ :loop_alt3 => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 24" enable-background="new 0 0 32 24" xml:space="preserve"><g> <path fill="{fill}"d="M28,12v2c0,1.102-0.897,2-2,2H12v-4l-8,6l8,6v-4h14c3.312,0,6-2.695,6-6v-2H28z"/> <path fill="{fill}"d="M4,10c0-1.104,0.899-2,2-2h14v4l7.993-6L20,0v4H6c-3.309,0-6,2.688-6,6v2h4V10z"/></g></svg>',
85
+ :loop_alt4 => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 24" enable-background="new 0 0 32 24" xml:space="preserve"><g> <path fill="{fill}"d="M28,14c0,1.102-0.899,2-2,2H7.991v-4L0,18l7.991,6v-4H26c3.309,0,6-2.695,6-6H28z"/> <path fill="{fill}"d="M6,8h18v4l8-6l-8-6v4H6c-3.306,0-6,2.688-6,6h4C4,8.896,4.897,8,6,8z"/></g></svg>',
86
+ :magnifying_glass => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M20.135,0C13.594,0,8.273,5.32,8.273,11.864c0,1.565,0.32,3.05,0.867,4.422L0,25.43L6.572,32 l9.146-9.148c1.367,0.555,2.854,0.875,4.416,0.875c6.537,0,11.865-5.32,11.865-11.862C32,5.32,26.672,0,20.135,0z M6.572,26.352 c-0.432-0.438-0.494-0.492-0.922-0.922c1.271-1.269,3.828-3.836,5.686-5.688c0.289,0.328,0.596,0.633,0.914,0.922 C10.4,22.516,7.844,25.078,6.572,26.352z M20.135,19.729c-4.338,0-7.869-3.526-7.869-7.865c0-4.338,3.531-7.869,7.869-7.869 c4.334,0,7.865,3.531,7.865,7.869C28,16.203,24.469,19.729,20.135,19.729z"/></svg>',
87
+ :magnifying_glass_alt => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 31.992 32" style="enable-background:new 0 0 31.992 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M20.127,0C13.594,0,8.268,5.32,8.268,11.864c0,1.565,0.326,3.05,0.873,4.417L0,25.427L6.57,32 l9.148-9.151c1.361,0.553,2.846,0.875,4.408,0.875c6.545,0,11.865-5.322,11.865-11.859C31.992,5.32,26.672,0,20.127,0z M20.127,19.727c-4.33,0-7.861-3.531-7.861-7.862c0-4.338,3.531-7.869,7.861-7.869c4.342,0,7.873,3.531,7.873,7.869 C28,16.195,24.469,19.727,20.127,19.727z"/></g></svg>',
88
+ :mail => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 24" style="enable-background:new 0 0 32 24;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M0,0v24h32V0H0z M24.859,4l-7.445,7.445c-0.781,0.781-2.047,0.781-2.828,0L7.141,4H24.859z M4,20 V6.516l7.758,7.758c1.172,1.172,2.703,1.758,4.242,1.758s3.07-0.586,4.242-1.758L28,6.516V20H4z"/></svg>',
89
+ :mail_alt => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 24" enable-background="new 0 0 32 24" xml:space="preserve"><g> <polygon fill="{fill}" points="16.078,11.457 32,3.918 32,0 0,0 0,3.903 "/> <polygon fill="{fill}" points="16.087,15.879 0,8.322 0,24 32,24 32,8.344 "/></g></svg>',
90
+ :map_pin_fill => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 20 32" enable-background="new 0 0 20 32" xml:space="preserve"><g id="{id}"></g><g id="map_x5F_pin_x5F_fill_x5F_32x32"> <g> <g> <path fill="{fill}" d="M17.07,2.93c-3.906-3.906-10.234-3.906-14.141,0c-3.906,3.904-3.906,10.237,0,14.141 C2.93,17.07,10,24,10,32c0-8,7.07-14.93,7.07-14.93C20.977,13.167,20.977,6.833,17.07,2.93z M10,14.005c-2.211,0-4-1.789-4-4 s1.789-4,4-4s4,1.789,4,4S12.211,14.005,10,14.005z"/> </g> </g></g></svg>',
91
+ :map_pin_stroke => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 20 32" enable-background="new 0 0 20 32" xml:space="preserve"><g id="{id}"></g><g id="map_x5F_pin_x5F_stroke_x5F_32x32"> <g> <path fill="{fill}" d="M10,4c1.602,0,3.109,0.625,4.242,1.76C15.375,6.891,16,8.398,16,10s-0.625,3.109-1.734,4.213 c-0.164,0.166-2.234,2.224-4.266,5.441c-2.023-3.211-4.086-5.261-4.242-5.415C4.625,13.109,4,11.602,4,10s0.625-3.109,1.758-4.242 S8.398,4,10,4 M10,0C7.438,0,4.883,0.977,2.93,2.93c-3.906,3.904-3.906,10.237,0,14.141C2.93,17.07,10,24,10,32 c0-8,7.07-14.93,7.07-14.93c3.906-3.904,3.906-10.237,0-14.141C15.117,0.977,12.558,0,10,0L10,0z"/> <path fill="{fill}" d="M12,10c0,1.105-0.896,2-2,2c-1.109,0-2-0.895-2-2s0.891-2,2-2C11.104,8,12,8.895,12,10z"/> </g></g></svg>',
92
+ :minus => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 8" style="enable-background:new 0 0 32 8;" xml:space="preserve"><rect style="{style}" width="32" height="8"/></svg>',
93
+ :minus_alt => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><path fill="{fill}" d="M16,0C7.165,0,0,7.164,0,16s7.165,16,16,16c8.837,0,16-7.164,16-16S24.837,0,16,0z M24,18H8v-4h16V18z"/></svg>',
94
+ :moon_fill => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="moon_x5F_fill_x5F_32x32"> <g> <path fill="{fill}" d="M24.633,22.184c-8.188,0-14.82-6.637-14.82-14.82c0-2.695,0.773-5.188,2.031-7.363 C5.016,1.969,0,8.188,0,15.645C0,24.676,7.32,32,16.352,32c7.456,0,13.68-5.023,15.648-11.844 C29.82,21.41,27.328,22.184,24.633,22.184z"/> </g></g></svg>',
95
+ :moon_stroke => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="moon_x5F_stroke_x5F_32x32"> <path fill="{fill}" d="M5.891,9.148c0.852,8.959,8,16.109,16.961,16.953C20.938,27.311,18.698,28,16.352,28 C9.539,28,4,22.459,4,15.646C4,13.3,4.688,11.059,5.891,9.148 M11.844,0C5.016,1.969,0,8.19,0,15.646C0,24.678,7.32,32,16.352,32 c7.456,0,13.68-5.021,15.648-11.844c-2.18,1.256-4.672,2.029-7.367,2.029c-8.188,0-14.82-6.636-14.82-14.82 C9.812,4.67,10.586,2.178,11.844,0L11.844,0z"/></g></svg>',
96
+ :move => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="move_x5F_32x32"> <g> <polygon fill="{fill}" points="18,20 18,26 22,26 16,32 10,26 14,26 14,20 "/> <polygon fill="{fill}" points="14,12 14,6 10,6 16,0 22,6 18,6 18,12 "/> <polygon fill="{fill}" points="12,18 6,18 6,22 0,16 6,10 6,14 12,14 "/> <polygon fill="{fill}" points="20,14 26,14 26,10 32,16 26,22 26,18 20,18 "/> </g></g></svg>',
97
+ :move_alt1 => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="move_x5F_alt1_x5F_32x32"> <g> <polygon fill="{fill}" points="16,22 18,20 18,26 22,26 16,32 10,26 14,26 14,20 "/> <polygon fill="{fill}" points="16,10.062 14,12 14,6 10,6 16,0 22,6 18,6 18,12 "/> <polygon fill="{fill}" points="10,16 12,18 6,18 6,22 0,16 6,10 6,14 12,14 "/> <polygon fill="{fill}" points="21.938,16 20,14 26,14 26,10 32,16 26,22 26,18 20,18 "/> </g></g></svg>',
98
+ :move_alt2 => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="move_x5F_alt2_x5F_32x32"> <path fill="{fill}"fill="5E6469" d="M16,0C7.165,0,0,7.164,0,16s7.165,16,16,16c8.837,0,16-7.164,16-16S24.837,0,16,0z M22,20v-2h-4v4h2l-4,4l-4-4h2v-4h-4v2 l-4-4l4-4v2h4v-4h-2l4-4l4,4h-2v4h4v-2l4,4L22,20z"/></g></svg>',
99
+ :move_horizontal => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 12" enable-background="new 0 0 32 12" xml:space="preserve"><g id="Layer_1_1_"></g><g id="move_x5F_horizontal_x5F_12x32"> <g> <polygon fill="{fill}" points="12,8 6,8 6,12 0,6 6,0 6,4 12,4 "/> <polygon fill="{fill}" points="20,4 26,4 26,0 32,6 26,12 26,8 20,8 "/> </g></g></svg>',
100
+ :move_horizontal_alt1 => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 12" enable-background="new 0 0 32 12" xml:space="preserve"><g id="{id}"></g><g id="move_x5F_horizontal_x5F_alt1_x5F_12x32"> <g> <polygon fill="{fill}" points="10,6 12,8 6,8 6,12 0,6 6,0 6,4 12,4 "/> <polygon fill="{fill}" points="21.938,6 20,4 26,4 26,0 32,6 26,12 26,8 20,8 "/> </g></g></svg>',
101
+ :move_horizontal_alt2 => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="move_x5F_horizontal_x5F_alt2_x5F_32x32"> <path fill="{fill}" d="M32,16c0-8.836-7.163-16-16-16C7.165,0,0,7.164,0,16s7.165,16,16,16C24.837,32,32,24.836,32,16z M10,18v2 l-4-4l4-4v2h12v-2l4,4l-4,4v-2H10z"/></g></svg>',
102
+ :move_vertical => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 12 32" enable-background="new 0 0 12 32" xml:space="preserve"><g id="{id}"></g><g id="move_x5F_vertical_x5F_12x32"> <g> <polygon fill="{fill}" points="8,20 8,26 12,26 6,32 0,26 4,26 4,20 "/> <polygon fill="{fill}" points="4,12 4,6 0,6 6,0 12,6 8,6 8,12 "/> </g></g></svg>',
103
+ :move_vertical_alt1 => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 12 32" enable-background="new 0 0 12 32" xml:space="preserve"><g id="{id}"></g><g id="move_x5F_vertical_x5F_alt1_x5F_12x32"> <g> <polygon fill="{fill}" points="6,22 8,20 8,26 12,26 6,32 0,26 4,26 4,20 "/> <polygon fill="{fill}" points="6,10.062 4,12 4,6 0,6 6,0 12,6 8,6 8,12 "/> </g></g></svg>',
104
+ :move_vertical_alt2 => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="move_x5F_vertical_x5F_alt2_x5F_32x32"> <path fill="{fill}" d="M16,0C7.165,0,0,7.164,0,16s7.165,16,16,16c8.837,0,16-7.164,16-16S24.837,0,16,0z M18,22h2l-4,4l-4-4h2V10 h-2l4-4l4,4h-2V22z"/></g></svg>',
105
+ :movie => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><path fill="{fill}"d="M27.977,8h-3.95L28,4.016L24.073,0h-5.565l3.987,3.984L18.409,8h-4.722l4.058-3.984L13.734,0H8.078l3.984,3.984L7.977,8 H3.969l4.062-3.984L4.016,0H0v32h32V0h-3.922L32,4L27.977,8z M28,27.958H4v-4h24V27.958z M28,20H4v-4h24V20z"/></svg>',
106
+ :new_window => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M32,0H8v7.998c-2.906,0-8,0-8,0.002v24h24v-8h8V0z M20,28H4V16h4v8h12C20,25.791,20,27.998,20,28z M28,20H12V8h16V20z"/></svg>',
107
+ :pause => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 24 32" style="enable-background:new 0 0 24 32;" xml:space="preserve"><g> <rect style="{style}" width="8" height="32"/> <rect x="16" style="{style}" width="8" height="32"/></g></svg>',
108
+ :pen => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32.004" style="enable-background:new 0 0 32 32.004;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M29.656,2.344C28.1,0.781,26.053,0,24,0c-2.047,0-4.094,0.781-5.656,2.344L0.031,20.657L0,32.004 h11.312l18.344-18.347C32.781,10.535,32.781,5.468,29.656,2.344z M9.656,28.001H8v-4H4.021l0.006-1.681L21.172,5.172l0,0 l5.656,5.656v0L9.656,28.001z"/></svg>',
109
+ :pen_alt_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32.002" style="enable-background:new 0 0 32 32.002;" xml:space="preserve"><g> <g> <path fill="{fill}"style="{style}" d="M29.656,2.344c-3.119-3.125-8.191-3.125-11.312,0L0.031,20.656L0,32.002h11.312l18.344-18.346 C32.781,10.534,32.781,5.467,29.656,2.344z M9.609,28.002H3.953v-5.689c1.562-1.562,4.094-1.562,5.656,0 C11.172,23.877,11.172,26.439,9.609,28.002z M26.756,10.828L21.1,5.172c1.562-1.562,4.094-1.562,5.656,0 S28.318,9.266,26.756,10.828z"/> </g></g></svg>',
110
+ :pen_alt_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32.002" style="enable-background:new 0 0 32 32.002;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M29.656,2.344C28.094,0.781,26.047,0,24,0s-4.094,0.781-5.656,2.344L0.031,20.656L0,32.002h11.312 l18.344-18.346C32.781,10.534,32.781,5.466,29.656,2.344z M9.656,28H9.609c1.562-1.562,1.562-4.125,0-5.688 c-1.494-1.496-3.859-1.517-5.426-0.149L21.137,5.211l5.656,5.655L9.656,28z"/></svg>',
111
+ :pin => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="pin_x5F_32x32"> <path fill="{fill}" d="M32,8c0-4.417-3.585-8-8-8c-2.984,0-5.562,1.659-6.938,4.086c0-0.002,0.004-0.004,0.004-0.005 c-0.363-0.036-0.723-0.112-1.098-0.112c-6.625,0-12,5.371-12,12c0,2.527,0.79,4.865,2.125,6.799L0,32l9.29-6.064 c1.913,1.283,4.21,2.033,6.679,2.033c6.629,0,12-5.371,12-12c0-0.346-0.069-0.669-0.101-1.008C30.321,13.594,32,11.005,32,8z M15.969,23.969c-4.413,0-8-3.588-8-8c0-4.412,3.587-8,8-8c0.016,0,0.024,0.004,0.031,0.004c0-0.008,0.004-0.014,0.004-0.02 C16.004,7.969,16,7.984,16,8c0,0.695,0.118,1.355,0.281,1.998l-3.172,3.174c-1.562,1.562-1.562,4.094,0,5.656s4.094,1.562,5.656,0 l3.141-3.141c0.66,0.18,1.344,0.305,2.062,0.309C23.953,20.396,20.375,23.969,15.969,23.969z M24,12c-2.203,0-4-1.794-4-4 s1.797-4,4-4s4,1.794,4,4S26.203,12,24,12z"/></g></svg>',
112
+ :play => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 24 32" style="enable-background:new 0 0 24 32;" xml:space="preserve"><polygon style="{style}" points="0,0 24,16 0,32 "/></svg>',
113
+ :play_alt => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M16,0C7.164,0,0,7.164,0,16s7.164,16,16,16s16-7.164,16-16S24.836,0,16,0z M10,24V8l16.008,8L10,24z" /></svg>',
114
+ :plus => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><polygon style="{style}" points="32,12 20,12 20,0 12,0 12,12 0,12 0,20 12,20 12,32 20,32 20,20 32,20 "/></svg>',
115
+ :plus_alt => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><path fill="{fill}" d="M16,0C7.165,0,0,7.164,0,16s7.165,16,16,16c8.837,0,16-7.164,16-16S24.837,0,16,0z M24,18h-6v6h-4v-6H8v-4h6 V8h4v6h6V18z"/></svg>',
116
+ :read_more => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <polygon style="{style}" points="32,4 0,4 0,0 32,0 32,4 "/> <polygon style="{style}" points="20,12 0,12 0,8 20,8 20,12 "/> <polygon style="{style}" points="32,20.086 0,20.086 0,16.086 32,16.086 32,20.086 "/> <circle style="{style}" cx="2" cy="30" r="2"/> <path fill="{fill}"style="{style}" d="M12,30c0,1.104-0.898,2-2,2c-1.109,0-2.004-0.896-2.004-2S8.891,28,10,28C11.102,28,12,28.896,12,30 z"/> <circle style="{style}" cx="18" cy="30" r="2"/></g></svg>',
117
+ :reload => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 24 28" style="enable-background:new 0 0 24 28;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M20,16c0,4.41-3.586,8-8,8s-8-3.59-8-8s3.586-8,8-8l2.359,0.027l-1.164,1.164l2.828,2.828L22.035,6 l-6.012-6l-2.828,2.828L14.375,4H12C5.375,4,0,9.371,0,16s5.375,12,12,12s12-5.371,12-12H20z"/></g></svg>',
118
+ :reload_alt => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 24 28" style="enable-background:new 0 0 24 28;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M20,16c0,4.414-3.586,8-8,8s-8-3.586-8-8s3.586-8,8-8l4.023,0.043v3.977L22.035,6l-6.012-6v4H12 C5.375,4,0,9.375,0,16s5.375,12,12,12s12-5.375,12-12H20z"/></g></svg>',
119
+ :right_quote => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 24" enable-background="new 0 0 32 24" xml:space="preserve"><g id="{id}"></g><g id="right_x5F_quote_x5F_32x32"> <g> <path fill="{fill}" d="M0,0v12h8c0,4.411-3.585,8-8,8v4c6.618,0,12-5.383,12-12V0H0z"/> <path fill="{fill}" d="M20,0v12h8c0,4.411-3.585,8-8,8v4c6.618,0,12-5.383,12-12V0H20z"/> </g></g></svg>',
120
+ :right_quote_alt => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 24" enable-background="new 0 0 32 24" xml:space="preserve"><g id="{id}"></g><g id="right_x5F_quote_x5F_alt_x5F_32x32"> <g> <polygon fill="{fill}" points="0,0 0,24 12,12 12,0 "/> <polygon fill="{fill}" points="20,0 20,24 32,12 32,0 "/> </g></g></svg>',
121
+ :rss => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <circle style="{style}" cx="4.001" cy="28" r="4.001"/> <g> <path fill="{fill}"style="{style}" d="M6.023,20.004c3.309,0,6,2.691,6,6.004h4.001C16.025,20.492,11.538,16,6.023,16V20.004z"/> </g> <g> <path fill="{fill}"style="{style}" d="M5.996,12c7.719,0,14.002,6.285,14.002,14.007h4C23.998,16.078,15.923,8,5.996,8V12z"/> </g> <g> <path fill="{fill}"style="{style}" d="M5.996,4C18.129,4,28,13.871,28,26.008h4C32,11.665,20.334,0,5.996,0V4z"/> </g></g></svg>',
122
+ :rss_alt => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g> <path fill="{fill}"d="M32,32h-4.569C27.431,16.875,15.125,4.573,0,4.573V0C17.641,0,32,14.355,32,32L32,32z"/> <path fill="{fill}"d="M22.859,32h-4.574c0-10.082-8.207-18.285-18.285-18.285V9.143C12.603,9.143,22.859,19.398,22.859,32L22.859,32z"/> <path fill="{fill}"d="M13.719,32H9.141c0-5.043-4.094-9.143-9.141-9.143v-4.572C7.562,18.285,13.719,24.438,13.719,32L13.719,32z"/> <path fill="{fill}"d="M4.571,32c0-2.523-2.04-4.57-4.571-4.57V32H4.571z"/></g></svg>',
123
+ :spin => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 28 32" enable-background="new 0 0 28 32" xml:space="preserve"><g id="{id}"></g><g id="reload_x5F_alt2_x5F_28x32"> <g> <path fill="{fill}"d="M23.883,6.086l-2.82,2.831C22.953,10.808,24,13.323,24,16c0,5.516-4.484,10-10,10v-2l-4,4l4,4v-2c7.719,0,14-6.281,14-14 C28,12.255,26.539,8.734,23.883,6.086z"/> <path fill="{fill}"d="M18,4l-4-4v2C6.281,2,0,8.281,0,16c0,3.745,1.461,7.266,4.117,9.914l2.82-2.831C5.047,21.192,4,18.677,4,16 C4,10.484,8.484,6,14,6v2L18,4z"/> </g></g></svg>',
124
+ :spin_alt => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="reload_x5F_alt3_x5F_32x32"> <g> <path fill="{fill}"d="M4.688,27.32C1.664,24.297,0,20.281,0,16C0,7.18,7.172,0,16,0l2,2l-2,2C9.383,4,4,9.383,4,16 c0,3.211,1.25,6.227,3.516,8.492l-2.453,0.32L4.688,27.32L4.688,27.32z"/> <path fill="{fill}"d="M16,32l-2-1.992L16,28c6.617,0,12-5.383,12-12c0-3.203-1.25-6.219-3.523-8.489l2.461-0.323l0.367-2.505 C30.328,7.708,32,11.727,32,16C32,24.82,24.82,32,16,32L16,32z"/> </g></g></svg>',
125
+ :star => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="star_x5F_32x32"> <g> <polygon fill="{fill}" points="22.136,19.625 32,12 20,12 16,0 12,12 0,12 9.875,19.594 6,32 16.016,24.32 26.008,32 "/> </g></g></svg>',
126
+ :stop => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><rect style="{style}" width="32" height="32"/></svg>',
127
+ :sun => '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve"><g id="{id}"></g><g id="sun_x5F_32x32"> <g> <path fill="{fill}" d="M24,16c0,4.417-3.585,8-8,8c-4.422,0-8-3.583-8-8s3.578-8,8-8C20.415,8,24,11.583,24,16z"/> <path fill="{fill}" d="M16,3.312c1.384,0,2.691,0.276,3.938,0.688H20l-4-4l-4,4h0.056C13.306,3.589,14.613,3.312,16,3.312z"/> <path fill="{fill}" d="M16,28.688c-1.387,0-2.694-0.276-3.944-0.688H12l4,4l4-4h-0.062C18.691,28.411,17.384,28.688,16,28.688z" /> <path fill="{fill}" d="M28.688,16c0,1.383-0.281,2.695-0.688,3.942V20l4-4l-4-4v0.058C28.406,13.305,28.688,14.617,28.688,16z"/> <path fill="{fill}" d="M3.312,16c0-1.383,0.274-2.695,0.688-3.942V12l-4,4l4,4v-0.058C3.587,18.695,3.312,17.383,3.312,16z"/> <path fill="{fill}" d="M24.969,24.969c-0.976,0.984-2.101,1.711-3.272,2.305l-0.04,0.039h5.656v-5.656l-0.043,0.042 C26.681,22.87,25.953,23.992,24.969,24.969z"/> <path fill="{fill}" d="M7.031,7.031c0.978-0.984,2.094-1.711,3.266-2.305l0.047-0.039H4.688v5.656l0.04-0.042 C5.321,9.13,6.047,8.008,7.031,7.031z"/> <path fill="{fill}" d="M7.031,24.969c-0.984-0.977-1.71-2.099-2.304-3.271l-0.04-0.042v5.656h5.656l-0.047-0.039 C9.125,26.68,8.009,25.953,7.031,24.969z"/> <path fill="{fill}" d="M24.969,7.031c0.984,0.977,1.712,2.099,2.301,3.271l0.043,0.042V4.688h-5.656l0.04,0.039 C22.868,5.32,23.993,6.047,24.969,7.031z"/> </g></g></svg>',
128
+ :tag_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M13.277,0H0v13.277L18.719,32V18.723H32L13.277,0z M7.312,11.121c-2.102,0-3.805-1.703-3.805-3.805 s1.703-3.805,3.805-3.805s3.805,1.703,3.805,3.805S9.414,11.121,7.312,11.121z"/></svg>',
129
+ :tag_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M11.699,8.613c0,1.703-1.383,3.086-3.082,3.086c-1.703,0-3.086-1.383-3.086-3.086 c0-1.699,1.383-3.078,3.086-3.078C10.316,5.535,11.699,6.914,11.699,8.613z"/> <g> <path fill="{fill}"style="{style}" d="M0,0v13.273L18.727,32c0,0,0-10.793,0-13.27c2.477,0,13.273,0,13.273,0L13.273,0H0z M11.797,3.562 c0.773,0.77,7.879,7.883,11.602,11.605c-3.102,0-8.234,0-8.234,0s0,5.133,0,8.227C11.441,19.676,4.336,12.566,3.562,11.801 c0-1.055,0-5.961,0-8.238C5.84,3.562,10.742,3.562,11.797,3.562z"/> </g></g></svg>',
130
+ :trash_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M28,4h-4c0-2.211-1.789-4-4-4h-8C9.789,0,8,1.789,8,4H4H0v4h4v18c0,3.312,2.688,6,6,6h12 c3.312,0,6-2.688,6-6V8h4V4H28z M12,24c-1.105,0-2-0.896-2-2s0.895-2,2-2s2,0.896,2,2S13.105,24,12,24z M12,16c-1.105,0-2-0.896-2-2 s0.895-2,2-2s2,0.896,2,2S13.105,16,12,16z M20,24c-1.105,0-2-0.896-2-2s0.895-2,2-2s2,0.896,2,2S21.105,24,20,24z M20,16 c-1.105,0-2-0.896-2-2s0.895-2,2-2s2,0.896,2,2S21.105,16,20,16z"/></svg>',
131
+ :trash_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M32,4h-4h-4c0-2.211-1.789-4-4-4h-8C9.789,0,8,1.789,8,4H4H0v4h4v18c0,3.312,2.688,6,6,6h12 c3.312,0,6-2.688,6-6V8h4V4z M24,26c0,1.102-0.898,2-2,2H10c-1.102,0-2-0.898-2-2V8h16V26z"/> <circle style="{style}" cx="12" cy="22" r="2"/> <circle style="{style}" cx="12" cy="14" r="2"/> <circle style="{style}" cx="20" cy="22" r="2"/> <circle style="{style}" cx="20" cy="14" r="2"/></g></svg>',
132
+ :undo => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 31.985" style="enable-background:new 0 0 32 31.985;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M28.156,3.72c-4.957-4.958-13.604-4.961-18.557,0L4,9.32V4.001H0v12h12v-4H6.975l5.453-5.453 c3.447-3.445,9.453-3.445,12.9,0.007C27.053,8.274,28,10.563,28,13.001s-0.947,4.727-2.672,6.453l-3.016,3.008l2.828,2.828 l3.016-3.008C30.631,19.805,32,16.508,32,13.001C32,9.493,30.631,6.196,28.156,3.72z"/> <rect x="16.449" y="27.157" transform="matrix(0.7071 0.7071 -0.7071 0.7071 26.0209 -4.5056)" style="{style}" width="4" height="4"/></g></svg>',
133
+ :unlock_fill => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 24.008 32" style="enable-background:new 0 0 24.008 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M14.008,0c-5.516,0-10,4.487-10,10h4c0-3.309,2.688-6,6-6c3.305,0,6,2.691,6,6v2H0v14 c0,3.308,2.695,6,6,6h12.008c3.305,0,6-2.692,6-6V10C24.008,4.487,19.518,0,14.008,0z M12,24c-1.102,0-2-0.896-2-2 c0-1.105,0.898-2,2-2c1.109,0,2,0.895,2,2C14,23.104,13.109,24,12,24z"/></svg>',
134
+ :unlock_stroke => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 24.008 32" style="enable-background:new 0 0 24.008 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M14.008,0c-5.516,0-10,4.489-10,10h4c0-3.305,2.691-6,6-6s6,2.695,6,6v2H0v14c0,3.312,2.691,6,6,6 h12.008c3.309,0,6-2.688,6-6V10C24.008,4.489,19.523,0,14.008,0z M18.008,28H6c-1.102,0-2-0.896-2-2V16h16.008v10 C20.008,27.104,19.109,28,18.008,28z"/> <path fill="{fill}"style="{style}" d="M14.004,22c0,1.109-0.895,2-2,2s-2-0.891-2-2c0-1.102,0.895-2,2-2S14.004,20.898,14.004,22z"/></g></svg>',
135
+ :user => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 24 32" style="enable-background:new 0 0 24 32;" xml:space="preserve"><g> <path fill="{fill}"style="{style}" d="M12,16C5.375,16,0,21.372,0,28c0,2.208,1.789,4,4,4h16c2.211,0,4-1.792,4-4 C24,21.372,18.625,16,12,16z"/> <circle style="{style}" cx="12" cy="6" r="6"/></g></svg>',
136
+ :volume => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 24" style="enable-background:new 0 0 32 24;" xml:space="preserve"><g> <g> <path fill="{fill}"style="{style}" d="M8,20c-4.416,0-8-3.579-8-8s3.584-8,8-8V20z"/> </g> <g> <polygon style="{style}" points="12,4 20,0 20,24 12,20 "/> </g> <path fill="{fill}"style="{style}" d="M24.006,19.999v-4c0.328,0,0.666-0.046,1-0.125C26.762,15.423,28,13.829,28,12 s-1.238-3.422-3.01-3.874c-0.318-0.078-0.656-0.118-0.984-0.118v-4c0.656,0,1.312,0.085,1.953,0.241C29.521,5.155,32,8.336,32,12 c0,3.671-2.479,6.858-6.025,7.751C25.309,19.914,24.652,19.999,24.006,19.999L24.006,19.999z"/></g></svg>',
137
+ :volume_mute => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 24" style="enable-background:new 0 0 32 24;" xml:space="preserve"><g> <g> <path fill="{fill}"style="{style}" d="M8,20c-4.418,0-8-3.583-8-8s3.582-8,8-8V20z"/> </g> <g> <polygon style="{style}" points="12,4 20,0 20,24 12,20 "/> </g> <polygon style="{style}" points="32,14 24,14 24,10 32,10 32,14 "/></g></svg>',
138
+ :x => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 28 28" style="enable-background:new 0 0 28 28;" xml:space="preserve"><g> <polygon style="{style}" points="28,22.398 19.594,14 28,5.602 22.398,0 14,8.402 5.598,0 0,5.602 8.398,14 0,22.398 5.598,28 14,19.598 22.398,28 "/></g></svg>',
139
+ :x_alt => '<svg version="1.1" id="{id}" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="{width}" height="{height}" viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve"><path fill="{fill}"style="{style}" d="M16,0C7.164,0,0,7.164,0,16s7.164,16,16,16s16-7.164,16-16S24.836,0,16,0z M23.914,21.086 l-2.828,2.828L16,18.828l-5.086,5.086l-2.828-2.828L13.172,16l-5.086-5.086l2.828-2.828L16,13.172l5.086-5.086l2.828,2.828 L18.828,16L23.914,21.086z"/></svg>',
140
+ }
141
+ end
142
+ end
@@ -1,25 +1,60 @@
1
1
  module ActiveAdmin
2
+
3
+ class ResourceMismatchError < StandardError; end
4
+
5
+ # Namespaces are the basic organizing principle for resources within Active Admin
6
+ #
7
+ # Each resource is registered into a namespace which defines:
8
+ # * the namespaceing for routing
9
+ # * the module to namespace controllers
10
+ # * the menu which gets displayed (other resources in the same namespace)
11
+ #
12
+ # For example:
13
+ #
14
+ # ActiveAdmin.register Post, :namespace => :admin
15
+ #
16
+ # Will register the Post model into the "admin" namespace. This will namespace the
17
+ # urls for the resource to "/admin/posts" and will set the controller to
18
+ # Admin::PostsController
19
+ #
20
+ # You can also register to the "root" namespace, which is to say no namespace at all.
21
+ #
22
+ # ActiveAdmin.register Post, :namespace => false
23
+ #
24
+ # This will register the resource to an instantiated namespace called :root. The
25
+ # resource will be accessible from "/posts" and the controller will be PostsController.
26
+ #
2
27
  class Namespace
3
28
 
29
+ RegisterEvent = 'active_admin.namespace.register'.freeze
30
+
4
31
  attr_reader :resources, :name, :menu
5
32
 
6
33
  def initialize(name)
7
34
  @name = name.to_s.underscore.to_sym
8
35
  @resources = {}
9
36
  @menu = Menu.new
37
+ register_module unless root?
38
+ generate_dashboard_controller
10
39
  end
11
40
 
41
+ # Register a resource into this namespace. The preffered method to access this is to
42
+ # use the global registration ActiveAdmin.register which delegates to the proper
43
+ # namespace instance.
12
44
  def register(resource, options = {}, &block)
13
- # Init and store the resource
14
- config = Resource.new(self, resource, options)
15
- @resources[config.camelized_resource_name] = config
45
+ config = find_or_build_resource(resource, options)
16
46
 
17
47
  # Register the resource
18
- register_module unless root?
19
- register_resource_controller(config, &block)
20
- register_dashboard_controller(config)
21
- register_with_menu(config)
22
-
48
+ register_resource_controller(config)
49
+ parse_registration_block(config, &block) if block_given?
50
+ register_with_menu(config) if config.include_in_menu?
51
+
52
+ # Ensure that the dashboard is generated
53
+ generate_dashboard_controller
54
+
55
+ # Dispatch a registration event
56
+ ActiveAdmin::Event.dispatch ActiveAdmin::Resource::RegisterEvent, config
57
+
23
58
  # Return the config
24
59
  config
25
60
  end
@@ -40,6 +75,11 @@ module ActiveAdmin
40
75
  @module_name ||= name.to_s.camelize
41
76
  end
42
77
 
78
+ # Returns the name of the dashboard controller for this namespace
79
+ def dashboard_controller_name
80
+ [module_name, "DashboardController"].compact.join("::")
81
+ end
82
+
43
83
  # Unload all the registered resources for this namespace
44
84
  def unload!
45
85
  unload_resources!
@@ -47,8 +87,44 @@ module ActiveAdmin
47
87
  unload_menu!
48
88
  end
49
89
 
90
+ # The menu gets built by Active Admin once all the resources have been
91
+ # loaded. This method gets called to register each resource with the menu system.
92
+ def load_menu!
93
+ register_dashboard
94
+ resources.values.each do |config|
95
+ register_with_menu(config) if config.include_in_menu?
96
+ end
97
+ end
98
+
99
+ # Returns the first registered ActiveAdmin::Resource instance for a given class
100
+ def resource_for(klass)
101
+ resources.values.find{|config| config.resource == klass }
102
+ end
103
+
50
104
  protected
51
105
 
106
+ # Either returns an existing Resource instance or builds a new
107
+ # one for the resource and options
108
+ def find_or_build_resource(resource_class, options)
109
+ resource = Resource.new(self, resource_class, options)
110
+
111
+ # If we've already registered this resource, use the existing
112
+ if @resources.has_key? resource.camelized_resource_name
113
+ existing_resource = @resources[resource.camelized_resource_name]
114
+
115
+ if existing_resource.resource != resource_class
116
+ raise ActiveAdmin::ResourceMismatchError,
117
+ "Tried to register #{resource_class} as #{resource.camelized_resource_name} but already registered to #{resource.resource}"
118
+ end
119
+
120
+ resource = existing_resource
121
+ else
122
+ @resources[resource.camelized_resource_name] = resource
123
+ end
124
+
125
+ resource
126
+ end
127
+
52
128
  def unload_resources!
53
129
  resources.each do |name, config|
54
130
  parent = (module_name || 'Object').constantize
@@ -56,6 +132,7 @@ module ActiveAdmin
56
132
  # Remove the const if its been defined
57
133
  parent.send(:remove_const, const_name) if parent.const_defined?(const_name)
58
134
  end
135
+ @resources = {}
59
136
  end
60
137
 
61
138
  def unload_dashboard!
@@ -72,21 +149,32 @@ module ActiveAdmin
72
149
  eval "module ::#{module_name}; end"
73
150
  end
74
151
 
75
- def register_resource_controller(config, &block)
152
+ def register_resource_controller(config)
76
153
  eval "class ::#{config.controller_name} < ActiveAdmin::ResourceController; end"
77
154
  config.controller.active_admin_config = config
78
- config.controller.class_eval(&block) if block_given?
155
+ end
156
+
157
+ def dsl
158
+ @dsl ||= DSL.new
159
+ end
160
+
161
+ def parse_registration_block(config, &block)
162
+ dsl.run_registration_block(config, &block)
79
163
  end
80
164
 
81
165
  # Creates a dashboard controller for this config
82
- def register_dashboard_controller(config)
83
- eval "class ::#{config.dashboard_controller_name} < ActiveAdmin::Dashboards::DashboardController; end"
166
+ def generate_dashboard_controller
167
+ eval "class ::#{dashboard_controller_name} < ActiveAdmin::Dashboards::DashboardController; end"
168
+ end
169
+
170
+ # Adds the dashboard to the menu
171
+ def register_dashboard
172
+ dashboard_path = root? ? :dashboard_path : "#{name}_dashboard_path".to_sym
173
+ menu.add("Dashboard", dashboard_path, 1) unless menu["Dashboard"]
84
174
  end
85
175
 
86
176
  # Does all the work of registernig a config with the menu system
87
177
  def register_with_menu(config)
88
- menu.add("Dashboard", "#{name}_dashboard_path".to_sym, 1) unless menu["Dashboard"]
89
-
90
178
  # The menu we're going to add this resource to
91
179
  add_to = menu
92
180
 
@@ -105,7 +193,5 @@ module ActiveAdmin
105
193
  add_to.add(config.menu_item_name, config.route_collection_path)
106
194
  end
107
195
  end
108
-
109
-
110
196
  end
111
197
  end
@@ -1,15 +1,30 @@
1
1
  module ActiveAdmin
2
2
  class Renderer
3
3
 
4
+ include ::ActiveAdmin::ViewHelpers::RendererHelper
5
+ include Arbre::HTML
6
+
4
7
  attr_accessor :view, :assigns
5
8
 
9
+ # For use in html
10
+ alias_method :helpers, :view
11
+
6
12
  def initialize(view_or_renderer)
7
13
  @view = view_or_renderer.is_a?(Renderer) ? view_or_renderer.view : view_or_renderer
8
- @assigns = view.assigns.each { |key, value| instance_variable_set("@#{key}", value) }
14
+
15
+ if view.respond_to?(:assigns)
16
+ @assigns = view.assigns.each { |key, value| instance_variable_set("@#{key}", value) }
17
+ else
18
+ @assigns = {}
19
+ end
9
20
  end
10
21
 
11
- def method_missing(*args, &block)
12
- view.send(*args, &block)
22
+ def method_missing(name,*args, &block)
23
+ if view.respond_to?(name)
24
+ view.send(name, *args, &block)
25
+ else
26
+ super
27
+ end
13
28
  end
14
29
 
15
30
  def to_html(*args)
@@ -1,9 +1,51 @@
1
1
  module ActiveAdmin
2
+
3
+ # Resource is the primary data storage for resource configuration in Active Admin
4
+ #
5
+ # When you register a resource (ActiveAdmin.register Post) you are actually creating
6
+ # a new Resource instance within the given Namespace.
7
+ #
8
+ # The instance of the current resource is available in ResourceController and views
9
+ # by calling the #active_admin_config method.
10
+ #
2
11
  class Resource
3
12
 
4
- attr_reader :namespace, :resource, :page_configs, :member_actions, :collection_actions,
5
- :parent_menu_item_name
6
- attr_accessor :resource_name, :sort_order, :scope_to, :scope_to_association_method
13
+ # Event dispatched when a new resource is registered
14
+ RegisterEvent = 'active_admin.resource.register'.freeze
15
+
16
+ autoload :BelongsTo, 'active_admin/resource/belongs_to'
17
+
18
+ # The namespace this resource belongs to
19
+ attr_reader :namespace
20
+
21
+ # The class this resource wraps. If you register the Post model, Resource#resource
22
+ # will point to the Post class
23
+ attr_reader :resource
24
+
25
+ # A hash of page configurations for the controller indexed by action name
26
+ attr_reader :page_configs
27
+
28
+ # An array of member actions defined for this resource
29
+ attr_reader :member_actions
30
+
31
+ # An array of collection actions defined for this resource
32
+ attr_reader :collection_actions
33
+
34
+ # The titleized name to use for this resource
35
+ attr_accessor :resource_name
36
+
37
+ # The default sort order to use in the controller
38
+ attr_accessor :sort_order
39
+
40
+ # Scope this resource to an association in the controller
41
+ attr_accessor :scope_to
42
+
43
+ # If we're scoping resources, use this method on the parent to return the collection
44
+ attr_accessor :scope_to_association_method
45
+
46
+ # Set to false to turn off admin notes
47
+ attr_accessor :admin_notes
48
+
7
49
 
8
50
  def initialize(namespace, resource, options = {})
9
51
  @namespace = namespace
@@ -11,7 +53,9 @@ module ActiveAdmin
11
53
  @options = default_options.merge(options)
12
54
  @sort_order = @options[:sort_order]
13
55
  @page_configs = {}
56
+ @menu_options = {}
14
57
  @member_actions, @collection_actions = [], []
58
+ @scopes = []
15
59
  end
16
60
 
17
61
  # An underscored safe representation internally for this resource
@@ -51,7 +95,7 @@ module ActiveAdmin
51
95
 
52
96
  # Returns the routes prefix for this resource
53
97
  def route_prefix
54
- controller.resources_configuration[:self][:route_prefix]
98
+ namespace.module_name.try(:underscore)
55
99
  end
56
100
 
57
101
  # Returns a symbol for the route to use to get to the
@@ -60,9 +104,27 @@ module ActiveAdmin
60
104
  [route_prefix, controller.resources_configuration[:self][:route_collection_name], 'path'].compact.join('_').to_sym
61
105
  end
62
106
 
63
- # Set the menu options
107
+ # Returns the named route for an instance of this resource
108
+ def route_instance_path
109
+ [route_prefix, controller.resources_configuration[:self][:route_instance_name], 'path'].compact.join('_').to_sym
110
+ end
111
+
112
+ # Set the menu options. To not add this resource to the menu, just
113
+ # call #menu(false)
64
114
  def menu(options = {})
65
- @parent_menu_item_name = options[:parent]
115
+ options = options == false ? { :display => false } : options
116
+ @menu_options = options
117
+ end
118
+
119
+ # Returns the name to put this resource under in the menu
120
+ def parent_menu_item_name
121
+ @menu_options[:parent]
122
+ end
123
+
124
+ # Should this resource be added to the menu system?
125
+ def include_in_menu?
126
+ return false if @menu_options[:display] == false
127
+ !(belongs_to? && !belongs_to_config.optional?)
66
128
  end
67
129
 
68
130
  # Returns the name to be displayed in the menu for this resource
@@ -70,6 +132,7 @@ module ActiveAdmin
70
132
  @menu_item_name ||= plural_resource_name
71
133
  end
72
134
 
135
+ # Clears all the member actions this resource knows about
73
136
  def clear_member_actions!
74
137
  @member_actions = []
75
138
  end
@@ -78,9 +141,47 @@ module ActiveAdmin
78
141
  @collection_actions = []
79
142
  end
80
143
 
81
- # Returns the name of the controller class for this resource
82
- def dashboard_controller_name
83
- [namespace.module_name, "DashboardController"].compact.join("::")
144
+ # Return an array of scopes for this resource
145
+ def scopes
146
+ @scopes
147
+ end
148
+
149
+ # Returns a scope for this object by its identifier
150
+ def get_scope_by_id(id)
151
+ id = id.to_s
152
+ @scopes.find{|s| s.id == id }
153
+ end
154
+
155
+ def default_scope
156
+ @default_scope
157
+ end
158
+
159
+ # Create a new scope object for this resource
160
+ def scope(*args, &block)
161
+ options = args.extract_options!
162
+ @scopes << ActiveAdmin::Scope.new(*args, &block)
163
+ if options[:default]
164
+ @default_scope = @scopes.last
165
+ end
166
+ end
167
+
168
+ # Are admin notes turned on for this resource
169
+ def admin_notes?
170
+ admin_notes.nil? ? ActiveAdmin.admin_notes : admin_notes
171
+ end
172
+
173
+ def belongs_to(target, options = {})
174
+ @belongs_to = Resource::BelongsTo.new(self, target, options)
175
+ controller.belongs_to(target, options.dup)
176
+ end
177
+
178
+ def belongs_to_config
179
+ @belongs_to
180
+ end
181
+
182
+ # Do we belong to another resource
183
+ def belongs_to?
184
+ !belongs_to_config.nil?
84
185
  end
85
186
 
86
187
  private