Version Description
Download this release
Release Info
Developer | justinbusa |
Plugin | WordPress Page Builder – Beaver Builder |
Version | 1.6.4 |
Comparing to | |
See all releases |
Code changes from version 1.6.2.1 to 1.6.4
- changelog.txt +87 -0
- classes/class-fl-builder-admin-settings.php +5 -3
- classes/class-fl-builder-fonts.php +2661 -0
- classes/class-fl-builder-icons.php +6 -6
- classes/class-fl-builder-loop.php +17 -1
- classes/class-fl-builder-model.php +1371 -242
- classes/class-fl-builder-module.php +12 -0
- classes/class-fl-builder-multisite.php +120 -0
- classes/class-fl-builder-update.php +30 -1
- classes/class-fl-builder.php +492 -82
- css/colorpicker.css +0 -169
- css/fl-builder-admin-settings.css +7 -0
- css/fl-builder-layout-responsive.css +12 -0
- css/fl-builder-layout.css +121 -8
- css/fl-builder.css +328 -60
- css/fl-color-picker.css +514 -0
- css/font-awesome.min.css +2 -2
- css/jquery.nanoscroller.css +5 -5
- fl-builder.php +15 -8
- fonts/FontAwesome.otf +0 -0
- fonts/fontawesome-webfont.eot +0 -0
- fonts/fontawesome-webfont.svg +90 -15
- fonts/fontawesome-webfont.ttf +0 -0
- fonts/fontawesome-webfont.woff +0 -0
- fonts/fontawesome-webfont.woff2 +0 -0
- includes/admin-settings-editing.php +8 -2
- includes/column-css.php +31 -28
- includes/column-group.php +2 -1
- includes/column-settings.php +13 -0
- includes/field-color.php +3 -3
- includes/field-font.php +8 -0
- includes/field.php +1 -1
- includes/layout-js-config.php +11 -0
- includes/row-css.php +32 -29
- includes/row-settings.php +23 -2
- includes/row-video.php +12 -10
- includes/settings.php +31 -23
- includes/ui-bar.php +7 -0
- includes/ui-fields.php +6 -0
- includes/{js-config.php → ui-js-config.php} +27 -11
- includes/ui-js-templates.php +186 -0
- includes/ui-panel.php +98 -0
- includes/ui.php +0 -123
- includes/updater-config.php +1 -1
- js/colorpicker.js +0 -485
- js/fl-builder-admin-settings.js +69 -43
- js/fl-builder-layout.js +131 -7
- js/fl-builder-preview.js +196 -9
- js/fl-builder-tour.js +1 -1
- js/fl-builder.js +1228 -214
- js/fl-color-picker.js +1816 -0
- js/fl-slideshow.js +1 -1
- js/fl-stylesheet.js +1 -1
- json/font-awesome.json +1 -1
- languages/de_DE.mo +0 -0
- languages/de_DE.po +3219 -2793
- languages/es_ES.mo +0 -0
- languages/es_ES.po +1182 -889
- languages/fr_FR.mo +0 -0
- languages/fr_FR.po +158 -98
changelog.txt
CHANGED
@@ -1,3 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<h4>1.6.2.1 - 08/25/2015</h4>
|
2 |
<p><strong>Enhancements</strong></p>
|
3 |
<ul>
|
1 |
+
<h4>1.6.4 - 10/13/2015</h4>
|
2 |
+
<p>This update adds a number of new features. Be sure to check out <a href="https://www.wpbeaverbuilder.com/beaver-builder-1-6-4-featuring-a-new-color-picker-full-height-rows-the-number-counter-module-and-more/" target="_blank">the blog post</a> for detailed info on what was added.
|
3 |
+
<p><strong>Enhancements</strong></p>
|
4 |
+
<ul>
|
5 |
+
<li>Added an all new modern color picker that allows you to save color presets.</li>
|
6 |
+
<li>Added the ability to create full height rows.</li>
|
7 |
+
<li>Added the ability to create equal height columns.</li>
|
8 |
+
<li>Added a column settings dropdown that allows you to edit, delete and insert new columns.</li>
|
9 |
+
<li>Added the ability to resize columns by dragging.</li>
|
10 |
+
<li>Added the Number Counter module.</li>
|
11 |
+
<li>Added a new font setting to the Heading module for picking custom font families.</li>
|
12 |
+
<li>Misc UI improvements.</li>
|
13 |
+
</ul>
|
14 |
+
<p><strong>Bug Fixes</strong></p>
|
15 |
+
<ul>
|
16 |
+
<li>Fixed a bug with saving a template where hitting enter loads a 404 page.</li>
|
17 |
+
<li>Fixed a bug with the Content Slider module's mobile images not showing.</li>
|
18 |
+
<li>Removed generic lightbox button styling that caused issues with third party themes.</li>
|
19 |
+
</ul>
|
20 |
+
|
21 |
+
<h4>1.6.3.4 - 10/10/2015</h4>
|
22 |
+
<p><strong>Bug Fixes</strong></p>
|
23 |
+
<ul>
|
24 |
+
<li>Fixed a content rendering issue that can cause an infinite loop with certain shortcodes or widgets.</li>
|
25 |
+
</ul>
|
26 |
+
|
27 |
+
<h4>1.6.3.3 - 10/06/2015</h4>
|
28 |
+
<p><strong>Enhancements</strong></p>
|
29 |
+
<ul>
|
30 |
+
<li>Added a default option to the date format setting in the post modules. When set to default, the date format set in wp-admin will be used.</li>
|
31 |
+
<li>Added FLBuilderLayoutConfig JS global with path vars and anchor link animation vars. Allows you to override anchor link animation settings.</li>
|
32 |
+
<li>Added the ability to add MP4 and WebM videos to row backgrounds.</li>
|
33 |
+
</ul>
|
34 |
+
<p><strong>Bug Fixes</strong></p>
|
35 |
+
<ul>
|
36 |
+
<li>Fixed a bug with widgets that have nested settings arrays.</li>
|
37 |
+
<li>Fixed a bug with the Post Carousel moduel's image size setting.</li>
|
38 |
+
<li>Fixed a bug with white text in inputs fields.</li>
|
39 |
+
<li>Fixed a bug with plugins like Soil that remove the ID attribute from link tags.</li>
|
40 |
+
<li>Fixed a bug with row background videos when caching is enabled.</li>
|
41 |
+
<li>Fixed a bug with multiple fields.</li>
|
42 |
+
<li>Fixed a bug with the Content Slider module where text/photo content renders below the video when the background is set to a video.</li>
|
43 |
+
<li>Fixed a bug that caused row actions to be inaccessible when negative margins are present.</li>
|
44 |
+
</ul>
|
45 |
+
|
46 |
+
<h4>1.6.3.2 - 09/14/2015</h4>
|
47 |
+
<p><strong>Enhancements</strong></p>
|
48 |
+
<ul>
|
49 |
+
<li>Updated Font Awesome.</li>
|
50 |
+
<li>Added Mobile Width setting to the Menu Module.</li>
|
51 |
+
<li>The $id variable is now always available in a module's frontend.php file.</li>
|
52 |
+
<li>Added fl_builder_layout_style_media filter.</li>
|
53 |
+
<li>Added fl_builder_render_css filter.</li>
|
54 |
+
</ul>
|
55 |
+
<p><strong>Bug Fixes</strong></p>
|
56 |
+
<ul>
|
57 |
+
<li>Added more specificity to link color selectors in the Menu module to prevent them from being overridden by themes.</li>
|
58 |
+
<li>Reworked parallax logic so it works on touch screen laptops.</li>
|
59 |
+
</ul>
|
60 |
+
|
61 |
+
<h4>1.6.3.1 - 09/03/2015</h4>
|
62 |
+
<p><strong>Bug Fixes</strong></p>
|
63 |
+
<ul>
|
64 |
+
<li>Fixed an issue with deleting rows and resizing columns.</li>
|
65 |
+
<li>CSS tweak to fix overlay global tag when a row color is set.</li>
|
66 |
+
<li>CSS tweak to fix media modal close button.</li>
|
67 |
+
</ul>
|
68 |
+
|
69 |
+
<h4>1.6.3 - 09/01/2015</h4>
|
70 |
+
<p><strong>Enhancements</strong></p>
|
71 |
+
<ul>
|
72 |
+
<li>Rows and modules can now be saved as either standard or global templates! Be sure to check out <a href="https://www.wpbeaverbuilder.com/row-and-module-templates-are-now-in-beta/" target="_blank">the blog post</a> for more info on how that works.</li>
|
73 |
+
<li>Agency members now have the option to add categorized sections of their row and module templates to the builder's panel.</li>
|
74 |
+
<li>Added a new admin setting under Settings > Page Builder > Editing to disable the ability to edit global rows and modules.</li>
|
75 |
+
<li>Duplicating global row and module templates now converts them to standard templates.</li>
|
76 |
+
<li>The text editor font size setting now uses px instead of pt.</li>
|
77 |
+
<li>Added additional sizes to the text editor font size setting.</li>
|
78 |
+
<li>Added access to the $settings object in the fl_builder_control_ action.</li>
|
79 |
+
</ul>
|
80 |
+
<p><strong>Bug Fixes</strong></p>
|
81 |
+
<ul>
|
82 |
+
<li>Added AJAX check for the builder's init method to prevent issues with WooCommerce AJAX.</li>
|
83 |
+
<li>Added more specificity to selectors for row and column colors to prevent themes from overriding them.</li>
|
84 |
+
<li>Fixed Menu module typo.</li>
|
85 |
+
<li>Fixed linking issues with the content slider.</li>
|
86 |
+
</ul>
|
87 |
+
|
88 |
<h4>1.6.2.1 - 08/25/2015</h4>
|
89 |
<p><strong>Enhancements</strong></p>
|
90 |
<ul>
|
classes/class-fl-builder-admin-settings.php
CHANGED
@@ -551,9 +551,11 @@ final class FLBuilderAdminSettings {
|
|
551 |
{
|
552 |
if ( isset( $_POST['fl-editing-nonce'] ) && wp_verify_nonce( $_POST['fl-editing-nonce'], 'editing' ) ) {
|
553 |
|
554 |
-
$capability
|
|
|
555 |
|
556 |
FLBuilderModel::update_admin_settings_option( '_fl_builder_editing_capability', $capability, true );
|
|
|
557 |
}
|
558 |
}
|
559 |
|
@@ -658,7 +660,7 @@ final class FLBuilderAdminSettings {
|
|
658 |
self::clear_cache_for_all_sites();
|
659 |
}
|
660 |
else {
|
661 |
-
FLBuilderModel::
|
662 |
}
|
663 |
}
|
664 |
}
|
@@ -684,7 +686,7 @@ final class FLBuilderAdminSettings {
|
|
684 |
// Loop through the blog ids and clear the cache.
|
685 |
foreach ( $blog_ids as $id ) {
|
686 |
switch_to_blog( $id );
|
687 |
-
FLBuilderModel::
|
688 |
}
|
689 |
|
690 |
// Revert to the original blog.
|
551 |
{
|
552 |
if ( isset( $_POST['fl-editing-nonce'] ) && wp_verify_nonce( $_POST['fl-editing-nonce'], 'editing' ) ) {
|
553 |
|
554 |
+
$capability = sanitize_text_field( $_POST['fl-editing-capability'] );
|
555 |
+
$templates_capability = sanitize_text_field( $_POST['fl-global-templates-editing-capability'] );
|
556 |
|
557 |
FLBuilderModel::update_admin_settings_option( '_fl_builder_editing_capability', $capability, true );
|
558 |
+
FLBuilderModel::update_admin_settings_option( '_fl_builder_global_templates_editing_capability', $templates_capability, true );
|
559 |
}
|
560 |
}
|
561 |
|
660 |
self::clear_cache_for_all_sites();
|
661 |
}
|
662 |
else {
|
663 |
+
FLBuilderModel::delete_asset_cache_for_all_posts();
|
664 |
}
|
665 |
}
|
666 |
}
|
686 |
// Loop through the blog ids and clear the cache.
|
687 |
foreach ( $blog_ids as $id ) {
|
688 |
switch_to_blog( $id );
|
689 |
+
FLBuilderModel::delete_asset_cache_for_all_posts();
|
690 |
}
|
691 |
|
692 |
// Revert to the original blog.
|
classes/class-fl-builder-fonts.php
ADDED
@@ -0,0 +1,2661 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|