diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0fe6136eae11b77787726d44f517df9e536c0cdb..a1d98332be0d5c39a997f7ce570933320e08c8e4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,42 @@
+0.74.0-beta14
+=============
+* Framework improvements:
+    * Introduced an ability to uninstall modules which were installed via composer (bin/magento module:uninstall <moduleName>)
+    * Introduced an ability to uninstall themes (bin/magento theme:uninstall <themeName>)
+    * Introduced an ability to backup and rollback DB and Media via CLI (bin/magento setup:backup, options are --code, --db or --media)
+    * Introduced an ability to uninstall language packages (bin/magento i18n:uninstall <languagePack>)
+    * Introduced API notation for the following modules: Backend, Backup, Cron, Log, PageCache 
+    * Added join processors to search services, joined config for services with extension attributes
+    * Renamed hidden_tax to discount_tax_compensation 
+    * The customer address entity table was transformed from EAV into a flat model to minimize database operations
+* Fixed bugs:
+    * Fixed an issue where Setup Wizard failed on readiness check when Magento was deployed by composer create-project
+    * Fixed the local file path disclosure when trying to browse image cache directory  
+    * Fixed an issue where development errors resulted in too many redirects 
+    * Fixed an integration test failure in Reports ViewedTest 
+    * Fixed an issue where it was impossible to save existent Grouped Product with no child items 
+    * Fixed an issue where message "We don't have as many "conf1" as you requested" appeared 
+    * Fixed an issue where second product from bundle product was ordered as separate item after checkout 
+    * Fixed an issue where configs for payments and shippings were not encrypted 
+    * Fixed an issue where Table Rates shipping method did not work 
+    * Fixed an issue where admin could not set locale properly on Account page 
+    * Fixed incomplete generated results of single tenant compiler 
+    * Fixed an issue with full page caching where one set of prices was cached for all customers 
+    * Fixed incorrect urls for private content 
+    * Fixed an issue where it was not possible to assign a product link to another product using API 
+    * Fixed an issue where zipcode was not displayed as required field on Create New Order page 
+    * Fixed the Sample Data re-installation 
+    * Fixed random fails on inventory tab for test CreateSimpleProductEntityTest
+* Tests:
+    * Covered various modules with unit tests 
+    * Functional tests fixed and maintained
+* GitHub issues:
+    * [#1156](https://github.com/magento/magento2/pull/1156) -- Moves common code to all auto-generated Interceptor classes into a trait
+    * [#1206](https://github.com/magento/magento2/pull/1206) -- Allow modules to live outside of app/code directory
+    * [#1245](https://github.com/magento/magento2/pull/1245) -- Unable to save product per website wise
+    * [#1347](https://github.com/magento/magento2/pull/1347) -- Fixed failing Install during integration tests (MAGETWO-38482)
+    * [#1368](https://github.com/magento/magento2/pull/1368) -- Fix typo in getCurrentCategoryKey
+    
 0.74.0-beta13
 =============
 * Framework improvements:
diff --git a/app/code/Magento/AdminNotification/composer.json b/app/code/Magento/AdminNotification/composer.json
index d26dfd7372721000e9973b16a3ea720e1e09a6e5..5ae1d3e4e2009835a572a2c9081ee74619532b51 100644
--- a/app/code/Magento/AdminNotification/composer.json
+++ b/app/code/Magento/AdminNotification/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/AdvancedPricingImportExport/composer.json b/app/code/Magento/AdvancedPricingImportExport/composer.json
index c8b52c1509eb996357137da8f799be5d85c864d7..3e7abff2e19eca58d7d762c6f90932188af3aef6 100644
--- a/app/code/Magento/AdvancedPricingImportExport/composer.json
+++ b/app/code/Magento/AdvancedPricingImportExport/composer.json
@@ -3,16 +3,16 @@
   "description": "N/A",
   "require": {
     "php": "~5.5.0|~5.6.0",
-    "magento/module-catalog": "0.74.0-beta13",
-    "magento/module-import-export": "0.74.0-beta13",
-    "magento/module-catalog-import-export": "0.74.0-beta13",
-    "magento/module-customer": "0.74.0-beta13",
-    "magento/module-store": "0.74.0-beta13",
-    "magento/framework": "0.74.0-beta13",
+    "magento/module-catalog": "0.74.0-beta14",
+    "magento/module-import-export": "0.74.0-beta14",
+    "magento/module-catalog-import-export": "0.74.0-beta14",
+    "magento/module-customer": "0.74.0-beta14",
+    "magento/module-store": "0.74.0-beta14",
+    "magento/framework": "0.74.0-beta14",
     "magento/magento-composer-installer": "*"
   },
   "type": "magento2-module",
-  "version": "0.74.0-beta13",
+  "version": "0.74.0-beta14",
   "license": [
     "OSL-3.0",
     "AFL-3.0"
diff --git a/app/code/Magento/Authorization/composer.json b/app/code/Magento/Authorization/composer.json
index 9225d004e7ce2f5753e0f21d8f95ca2fb7cbe9cf..9ce77947a0b214ceb0d0dd04c9e35f6e6c602ca2 100644
--- a/app/code/Magento/Authorization/composer.json
+++ b/app/code/Magento/Authorization/composer.json
@@ -3,12 +3,12 @@
     "description": "Authorization module provides access to Magento ACL functionality.",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Backend/composer.json b/app/code/Magento/Backend/composer.json
index b7e2b7bc15ba6f54e72cc1d6b084c18876592c52..b2b20216cf652a430d51f44492332e150011cd7d 100644
--- a/app/code/Magento/Backend/composer.json
+++ b/app/code/Magento/Backend/composer.json
@@ -3,27 +3,27 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-developer": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-cron": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/module-reports": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-user": "0.74.0-beta13",
-        "magento/module-backup": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-translation": "0.74.0-beta13",
-        "magento/module-require-js": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-developer": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-cron": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/module-reports": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-user": "0.74.0-beta14",
+        "magento/module-backup": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-translation": "0.74.0-beta14",
+        "magento/module-require-js": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Backend/etc/adminhtml/system.xml b/app/code/Magento/Backend/etc/adminhtml/system.xml
index 5dbc4c0c399f25b11b39141f598afa8429b5dcde..858101e90267aa01b8fc0f75d82447955297ef10 100644
--- a/app/code/Magento/Backend/etc/adminhtml/system.xml
+++ b/app/code/Magento/Backend/etc/adminhtml/system.xml
@@ -253,6 +253,10 @@
                     <label>European Union Countries</label>
                     <source_model>Magento\Directory\Model\Config\Source\Country</source_model>
                 </field>
+                <field id="destinations" translate="label" type="multiselect" sortOrder="40" showInDefault="1" showInWebsite="0" showInStore="0">
+                    <label>Top destinations</label>
+                    <source_model>Magento\Directory\Model\Config\Source\Country</source_model>
+                </field>
             </group>
             <group id="locale" translate="label" type="text" sortOrder="8" showInDefault="1" showInWebsite="1" showInStore="1">
                 <label>Locale Options</label>
diff --git a/app/code/Magento/Backup/composer.json b/app/code/Magento/Backup/composer.json
index 30ca528748ce5de5d93f6cf933d2b5bc8bc24cd1..74b0a704e1de9374392c01a64e69b075fc416fde 100644
--- a/app/code/Magento/Backup/composer.json
+++ b/app/code/Magento/Backup/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-cron": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-cron": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Bundle/Block/Checkout/Cart/Item/Renderer.php b/app/code/Magento/Bundle/Block/Checkout/Cart/Item/Renderer.php
index 9139bd45b3e11295f712093142bdacd27981d89f..5a23f62b959ef87ff65698c3011e2e1d7840344e 100644
--- a/app/code/Magento/Bundle/Block/Checkout/Cart/Item/Renderer.php
+++ b/app/code/Magento/Bundle/Block/Checkout/Cart/Item/Renderer.php
@@ -30,8 +30,8 @@ class Renderer extends \Magento\Checkout\Block\Cart\Item\Renderer
      * @param \Magento\Framework\Url\Helper\Data $urlHelper
      * @param \Magento\Framework\Message\ManagerInterface $messageManager
      * @param PriceCurrencyInterface $priceCurrency
-     * @param Configuration $bundleProductConfiguration
      * @param \Magento\Framework\Module\Manager $moduleManager
+     * @param Configuration $bundleProductConfiguration
      * @param array $data
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
diff --git a/app/code/Magento/Bundle/Model/Resource/Indexer/Price.php b/app/code/Magento/Bundle/Model/Resource/Indexer/Price.php
index e4a7ceb99903b0987bbd38eebc3464895efe4d25..f216ecfc5b4e9f749eeac10696bcf202b83a6db6 100644
--- a/app/code/Magento/Bundle/Model/Resource/Indexer/Price.php
+++ b/app/code/Magento/Bundle/Model/Resource/Indexer/Price.php
@@ -20,7 +20,7 @@ class Price extends \Magento\Catalog\Model\Resource\Product\Indexer\Price\Defaul
      */
     public function reindexAll()
     {
-        $this->useIdxTable(true);
+        $this->tableStrategy->setUseIdxTable(true);
 
         $this->beginTransaction();
         try {
@@ -54,10 +54,7 @@ class Price extends \Magento\Catalog\Model\Resource\Product\Indexer\Price\Defaul
      */
     protected function _getBundlePriceTable()
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('catalog_product_index_price_bundle_idx');
-        }
-        return $this->getTable('catalog_product_index_price_bundle_tmp');
+        return $this->tableStrategy->getTableName('catalog_product_index_price_bundle');
     }
 
     /**
@@ -67,10 +64,7 @@ class Price extends \Magento\Catalog\Model\Resource\Product\Indexer\Price\Defaul
      */
     protected function _getBundleSelectionTable()
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('catalog_product_index_price_bundle_sel_idx');
-        }
-        return $this->getTable('catalog_product_index_price_bundle_sel_tmp');
+        return $this->tableStrategy->getTableName('catalog_product_index_price_bundle_sel');
     }
 
     /**
@@ -80,10 +74,7 @@ class Price extends \Magento\Catalog\Model\Resource\Product\Indexer\Price\Defaul
      */
     protected function _getBundleOptionTable()
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('catalog_product_index_price_bundle_opt_idx');
-        }
-        return $this->getTable('catalog_product_index_price_bundle_opt_tmp');
+        return $this->tableStrategy->getTableName('catalog_product_index_price_bundle_opt');
     }
 
     /**
diff --git a/app/code/Magento/Bundle/composer.json b/app/code/Magento/Bundle/composer.json
index ddc09411834f50f6715db4ad8103539915f34a44..f3017a3a8dda032fb32a79cff12622d3cb601bc2 100644
--- a/app/code/Magento/Bundle/composer.json
+++ b/app/code/Magento/Bundle/composer.json
@@ -3,28 +3,28 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-catalog-rule": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-gift-message": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-catalog-rule": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-gift-message": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "suggest": {
-        "magento/module-webapi": "0.74.0-beta13"
+        "magento/module-webapi": "0.74.0-beta14"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml
index 9c84f6735136c63ec0d0d78449e0d52295e3a014..94ceb9f5440cc6de01d0a7a13863b41d8b753f71 100644
--- a/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml
+++ b/app/code/Magento/Bundle/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -8,7 +8,12 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <referenceBlock name="checkout.cart.item.renderers">
-            <block class="Magento\Bundle\Block\Checkout\Cart\Item\Renderer" as="bundle" template="Magento_Checkout::cart/item/default.phtml"/>
+            <block class="Magento\Bundle\Block\Checkout\Cart\Item\Renderer" as="bundle" template="Magento_Checkout::cart/item/default.phtml">
+                <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions" name="checkout.cart.item.renderers.bundle.actions" as="actions">
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Edit" name="checkout.cart.item.renderers.bundle.actions.edit" template="Magento_Checkout::cart/item/renderer/actions/edit.phtml"/>
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Remove" name="checkout.cart.item.renderers.bundle.actions.remove" template="Magento_Checkout::cart/item/renderer/actions/remove.phtml"/>
+                </block>
+            </block>
         </referenceBlock>
     </body>
 </page>
diff --git a/app/code/Magento/BundleImportExport/composer.json b/app/code/Magento/BundleImportExport/composer.json
index ddbc85cb67cb1d20f44a4bdb9c64ab3bf44f0127..78b23b0ff876b31caff7359c35e625ee986e6100 100755
--- a/app/code/Magento/BundleImportExport/composer.json
+++ b/app/code/Magento/BundleImportExport/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-import-export": "0.74.0-beta13",
-        "magento/module-catalog-import-export": "0.74.0-beta13",
-        "magento/module-bundle": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-import-export": "0.74.0-beta14",
+        "magento/module-catalog-import-export": "0.74.0-beta14",
+        "magento/module-bundle": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/CacheInvalidate/composer.json b/app/code/Magento/CacheInvalidate/composer.json
index 5045f5b065cb0b6b80ecc9810dd84ed828bc7c26..5f5a8b2ce39bfa5fff3162892d333dcbd8c1659f 100644
--- a/app/code/Magento/CacheInvalidate/composer.json
+++ b/app/code/Magento/CacheInvalidate/composer.json
@@ -3,12 +3,12 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-page-cache": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-page-cache": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Captcha/composer.json b/app/code/Magento/Captcha/composer.json
index 8e61f79ac764e5f722d5de600b515d27f5abc4be..044ade39edc271c3b8d5d1b4f9aebcb1cc740e90 100644
--- a/app/code/Magento/Captcha/composer.json
+++ b/app/code/Magento/Captcha/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Catalog/Block/Product/View/Options/Type/Select.php b/app/code/Magento/Catalog/Block/Product/View/Options/Type/Select.php
index 7da80121645d24a199e980a2df32a05aa918145c..cedd7b1f845981a902617fc90a8a4896bf5642c0 100644
--- a/app/code/Magento/Catalog/Block/Product/View/Options/Type/Select.php
+++ b/app/code/Magento/Catalog/Block/Product/View/Options/Type/Select.php
@@ -46,7 +46,7 @@ class Select extends \Magento\Catalog\Block\Product\View\Options\AbstractOptions
             if ($_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_DROP_DOWN) {
                 $select->setName('options[' . $_option->getid() . ']')->addOption('', __('-- Please Select --'));
             } else {
-                $select->setName('options[' . $_option->getid() . ']');
+                $select->setName('options[' . $_option->getid() . '][]');
                 $select->setClass('multiselect admin__control-multiselect' . $require . ' product-custom-option');
             }
             foreach ($_option->getValues() as $_value) {
diff --git a/app/code/Magento/Catalog/Model/Indexer/Product/Price/AbstractAction.php b/app/code/Magento/Catalog/Model/Indexer/Product/Price/AbstractAction.php
index 6e43b0666791cf26a65df23d3dbd6809bbc48b2f..c6da03c6a48ee2dd466f15ffe71f3e1d9a33c7b6 100755
--- a/app/code/Magento/Catalog/Model/Indexer/Product/Price/AbstractAction.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Product/Price/AbstractAction.php
@@ -15,16 +15,9 @@ abstract class AbstractAction
     /**
      * Default Product Type Price indexer resource model
      *
-     * @var string
+     * @var \Magento\Catalog\Model\Resource\Product\Indexer\Price\DefaultPrice
      */
-    protected $_defaultPriceIndexer;
-
-    /**
-     * Resource instance
-     *
-     * @var \Magento\Framework\App\Resource
-     */
-    protected $_resource;
+    protected $_defaultIndexerResource;
 
     /**
      * @var \Magento\Framework\DB\Adapter\AdapterInterface
@@ -78,14 +71,6 @@ abstract class AbstractAction
     protected $_indexers;
 
     /**
-     * Flag that defines if need to use "_idx" index table suffix instead of "_tmp"
-     *
-     * @var bool
-     */
-    protected $_useIdxTable = false;
-
-    /**
-     * @param \Magento\Framework\App\Resource $resource
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $config
      * @param \Magento\Store\Model\StoreManagerInterface $storeManager
      * @param \Magento\Directory\Model\CurrencyFactory $currencyFactory
@@ -93,10 +78,9 @@ abstract class AbstractAction
      * @param \Magento\Framework\Stdlib\DateTime $dateTime
      * @param \Magento\Catalog\Model\Product\Type $catalogProductType
      * @param \Magento\Catalog\Model\Resource\Product\Indexer\Price\Factory $indexerPriceFactory
-     * @param string $defaultPriceIndexer
+     * @param \Magento\Catalog\Model\Resource\Product\Indexer\Price\DefaultPrice $defaultIndexerResource
      */
     public function __construct(
-        \Magento\Framework\App\Resource $resource,
         \Magento\Framework\App\Config\ScopeConfigInterface $config,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
         \Magento\Directory\Model\CurrencyFactory $currencyFactory,
@@ -104,9 +88,8 @@ abstract class AbstractAction
         \Magento\Framework\Stdlib\DateTime $dateTime,
         \Magento\Catalog\Model\Product\Type $catalogProductType,
         \Magento\Catalog\Model\Resource\Product\Indexer\Price\Factory $indexerPriceFactory,
-        $defaultPriceIndexer
+        \Magento\Catalog\Model\Resource\Product\Indexer\Price\DefaultPrice $defaultIndexerResource
     ) {
-        $this->_resource = $resource;
         $this->_config = $config;
         $this->_storeManager = $storeManager;
         $this->_currencyFactory = $currencyFactory;
@@ -114,20 +97,8 @@ abstract class AbstractAction
         $this->_dateTime = $dateTime;
         $this->_catalogProductType = $catalogProductType;
         $this->_indexerPriceFactory = $indexerPriceFactory;
-        $this->_defaultPriceIndexer = $defaultPriceIndexer;
-    }
-
-    /**
-     * Retrieve connection instance
-     *
-     * @return bool|\Magento\Framework\DB\Adapter\AdapterInterface
-     */
-    protected function _getConnection()
-    {
-        if (null === $this->_connection) {
-            $this->_connection = $this->_resource->getConnection('write');
-        }
-        return $this->_connection;
+        $this->_defaultIndexerResource = $defaultIndexerResource;
+        $this->_connection = $this->_defaultIndexerResource->getWriteConnection();
     }
 
     /**
@@ -147,11 +118,11 @@ abstract class AbstractAction
     protected function _syncData(array $processIds = [])
     {
         // delete invalid rows
-        $select = $this->_getConnection()->select()->from(
-            ['index_price' => $this->_getTable('catalog_product_index_price')],
+        $select = $this->_connection->select()->from(
+            ['index_price' => $this->_defaultIndexerResource->getTable('catalog_product_index_price')],
             null
         )->joinLeft(
-            ['ip_tmp' => $this->_getIdxTable()],
+            ['ip_tmp' => $this->_defaultIndexerResource->getIdxTable()],
             'index_price.entity_id = ip_tmp.entity_id AND index_price.website_id = ip_tmp.website_id',
             []
         )->where(
@@ -161,23 +132,15 @@ abstract class AbstractAction
             $select->where('index_price.entity_id IN(?)', $processIds);
         }
         $sql = $select->deleteFromSelect('index_price');
-        $this->_getConnection()->query($sql);
+        $this->_connection->query($sql);
 
-        $this->_insertFromTable($this->_getIdxTable(), $this->_getTable('catalog_product_index_price'));
+        $this->_insertFromTable(
+            $this->_defaultIndexerResource->getIdxTable(),
+            $this->_defaultIndexerResource->getTable('catalog_product_index_price')
+        );
         return $this;
     }
 
-    /**
-     * Returns table name for given entity
-     *
-     * @param string $entityName
-     * @return string
-     */
-    protected function _getTable($entityName)
-    {
-        return $this->_resource->getTableName($entityName);
-    }
-
     /**
      * Prepare website current dates table
      *
@@ -185,14 +148,13 @@ abstract class AbstractAction
      */
     protected function _prepareWebsiteDateTable()
     {
-        $write = $this->_getConnection();
         $baseCurrency = $this->_config->getValue(\Magento\Directory\Model\Currency::XML_PATH_CURRENCY_BASE);
 
-        $select = $write->select()->from(
-            ['cw' => $this->_getTable('store_website')],
+        $select = $this->_connection->select()->from(
+            ['cw' => $this->_defaultIndexerResource->getTable('store_website')],
             ['website_id']
         )->join(
-            ['csg' => $this->_getTable('store_group')],
+            ['csg' => $this->_defaultIndexerResource->getTable('store_group')],
             'cw.default_group_id = csg.group_id',
             ['store_id' => 'default_store_id']
         )->where(
@@ -200,7 +162,7 @@ abstract class AbstractAction
         );
 
         $data = [];
-        foreach ($write->fetchAll($select) as $item) {
+        foreach ($this->_connection->fetchAll($select) as $item) {
             /** @var $website \Magento\Store\Model\Website */
             $website = $this->_storeManager->getWebsite($item['website_id']);
 
@@ -229,10 +191,12 @@ abstract class AbstractAction
             }
         }
 
-        $table = $this->_getTable('catalog_product_index_website');
+        $table = $this->_defaultIndexerResource->getTable('catalog_product_index_website');
         $this->_emptyTable($table);
         if ($data) {
-            $write->insertMultiple($table, $data);
+            foreach ($data as $row) {
+                $this->_connection->insertOnDuplicate($table, $row, array_keys($row));
+            }
         }
 
         return $this;
@@ -246,24 +210,27 @@ abstract class AbstractAction
      */
     protected function _prepareTierPriceIndex($entityIds = null)
     {
-        $write = $this->_getConnection();
-        $table = $this->_getTable('catalog_product_index_tier_price');
+        $table = $this->_defaultIndexerResource->getTable('catalog_product_index_tier_price');
         $this->_emptyTable($table);
 
-        $websiteExpression = $write->getCheckSql('tp.website_id = 0', 'ROUND(tp.value * cwd.rate, 4)', 'tp.value');
-        $select = $write->select()->from(
-            ['tp' => $this->_getTable(['catalog_product_entity', 'tier_price'])],
+        $websiteExpression = $this->_connection->getCheckSql(
+            'tp.website_id = 0',
+            'ROUND(tp.value * cwd.rate, 4)',
+            'tp.value'
+        );
+        $select = $this->_connection->select()->from(
+            ['tp' => $this->_defaultIndexerResource->getTable(['catalog_product_entity', 'tier_price'])],
             ['entity_id']
         )->join(
-            ['cg' => $this->_getTable('customer_group')],
+            ['cg' => $this->_defaultIndexerResource->getTable('customer_group')],
             'tp.all_groups = 1 OR (tp.all_groups = 0 AND tp.customer_group_id = cg.customer_group_id)',
             ['customer_group_id']
         )->join(
-            ['cw' => $this->_getTable('store_website')],
+            ['cw' => $this->_defaultIndexerResource->getTable('store_website')],
             'tp.website_id = 0 OR tp.website_id = cw.website_id',
             ['website_id']
         )->join(
-            ['cwd' => $this->_getTable('catalog_product_index_website')],
+            ['cwd' => $this->_defaultIndexerResource->getTable('catalog_product_index_website')],
             'cw.website_id = cwd.website_id',
             []
         )->where(
@@ -279,7 +246,7 @@ abstract class AbstractAction
         }
 
         $query = $select->insertFromSelect($table);
-        $write->query($query);
+        $this->_connection->query($query);
 
         return $this;
     }
@@ -292,24 +259,27 @@ abstract class AbstractAction
      */
     protected function _prepareGroupPriceIndex($entityIds = null)
     {
-        $write = $this->_getConnection();
-        $table = $this->_getTable('catalog_product_index_group_price');
+        $table = $this->_defaultIndexerResource->getTable('catalog_product_index_group_price');
         $this->_emptyTable($table);
 
-        $websiteExpression = $write->getCheckSql('gp.website_id = 0', 'ROUND(gp.value * cwd.rate, 4)', 'gp.value');
-        $select = $write->select()->from(
-            ['gp' => $this->_getTable(['catalog_product_entity', 'group_price'])],
+        $websiteExpression = $this->_connection->getCheckSql(
+            'gp.website_id = 0',
+            'ROUND(gp.value * cwd.rate, 4)',
+            'gp.value'
+        );
+        $select = $this->_connection->select()->from(
+            ['gp' => $this->_defaultIndexerResource->getTable(['catalog_product_entity', 'group_price'])],
             ['entity_id']
         )->join(
-            ['cg' => $this->_getTable('customer_group')],
+            ['cg' => $this->_defaultIndexerResource->getTable('customer_group')],
             'gp.all_groups = 1 OR (gp.all_groups = 0 AND gp.customer_group_id = cg.customer_group_id)',
             ['customer_group_id']
         )->join(
-            ['cw' => $this->_getTable('store_website')],
+            ['cw' => $this->_defaultIndexerResource->getTable('store_website')],
             'gp.website_id = 0 OR gp.website_id = cw.website_id',
             ['website_id']
         )->join(
-            ['cwd' => $this->_getTable('catalog_product_index_website')],
+            ['cwd' => $this->_defaultIndexerResource->getTable('catalog_product_index_website')],
             'cw.website_id = cwd.website_id',
             []
         )->where(
@@ -325,7 +295,7 @@ abstract class AbstractAction
         }
 
         $query = $select->insertFromSelect($table);
-        $write->query($query);
+        $this->_connection->query($query);
 
         return $this;
     }
@@ -343,7 +313,7 @@ abstract class AbstractAction
             foreach ($types as $typeId => $typeInfo) {
                 $modelName = isset(
                     $typeInfo['price_indexer']
-                ) ? $typeInfo['price_indexer'] : $this->_defaultPriceIndexer;
+                ) ? $typeInfo['price_indexer'] : get_class($this->_defaultIndexerResource);
 
                 $isComposite = !empty($typeInfo['composite']);
                 $indexer = $this->_indexerPriceFactory->create(
@@ -377,7 +347,7 @@ abstract class AbstractAction
     }
 
     /**
-     * Copy data from source table of read adapter to destination table of index adapter
+     * Copy data from source table to destination
      *
      * @param string $sourceTable
      * @param string $destTable
@@ -386,47 +356,19 @@ abstract class AbstractAction
      */
     protected function _insertFromTable($sourceTable, $destTable, $where = null)
     {
-        $connection = $this->_getConnection();
-        $sourceColumns = array_keys($connection->describeTable($sourceTable));
-        $targetColumns = array_keys($connection->describeTable($destTable));
-        $select = $connection->select()->from($sourceTable, $sourceColumns);
+        $sourceColumns = array_keys($this->_connection->describeTable($sourceTable));
+        $targetColumns = array_keys($this->_connection->describeTable($destTable));
+        $select = $this->_connection->select()->from($sourceTable, $sourceColumns);
         if ($where) {
             $select->where($where);
         }
-        $query = $connection->insertFromSelect(
+        $query = $this->_connection->insertFromSelect(
             $select,
             $destTable,
             $targetColumns,
             \Magento\Framework\DB\Adapter\AdapterInterface::INSERT_ON_DUPLICATE
         );
-        $connection->query($query);
-    }
-
-    /**
-     * Set or get what either "_idx" or "_tmp" suffixed temporary index table need to use
-     *
-     * @param bool $value
-     * @return bool
-     */
-    protected function _useIdxTable($value = null)
-    {
-        if ($value !== null) {
-            $this->_useIdxTable = (bool)$value;
-        }
-        return $this->_useIdxTable;
-    }
-
-    /**
-     * Retrieve temporary index table name
-     *
-     * @return string
-     */
-    protected function _getIdxTable()
-    {
-        if ($this->_useIdxTable()) {
-            return $this->_getTable('catalog_product_index_price_idx');
-        }
-        return $this->_getTable('catalog_product_index_price_tmp');
+        $this->_connection->query($query);
     }
 
     /**
@@ -437,7 +379,7 @@ abstract class AbstractAction
      */
     protected function _emptyTable($table)
     {
-        $this->_getConnection()->delete($table);
+        $this->_connection->delete($table);
     }
 
     /**
@@ -449,11 +391,11 @@ abstract class AbstractAction
      */
     protected function _reindexRows($changedIds = [])
     {
-        $this->_emptyTable($this->_getIdxTable());
+        $this->_emptyTable($this->_defaultIndexerResource->getIdxTable());
         $this->_prepareWebsiteDateTable();
 
         $select = $this->_connection->select()->from(
-            $this->_getTable('catalog_product_entity'),
+            $this->_defaultIndexerResource->getTable('catalog_product_entity'),
             ['entity_id', 'type_id']
         )->where(
             'entity_id IN(?)',
@@ -479,10 +421,10 @@ abstract class AbstractAction
 
         if (!empty($notCompositeIds)) {
             $select = $this->_connection->select()->from(
-                ['l' => $this->_getTable('catalog_product_relation')],
+                ['l' => $this->_defaultIndexerResource->getTable('catalog_product_relation')],
                 'parent_id'
             )->join(
-                ['e' => $this->_getTable('catalog_product_entity')],
+                ['e' => $this->_defaultIndexerResource->getTable('catalog_product_entity')],
                 'e.entity_id = l.parent_id',
                 ['type_id']
             )->where(
@@ -525,9 +467,8 @@ abstract class AbstractAction
      */
     protected function _copyRelationIndexData($parentIds, $excludeIds = null)
     {
-        $write = $this->_connection;
-        $select = $write->select()->from(
-            $this->_getTable('catalog_product_relation'),
+        $select = $this->_connection->select()->from(
+            $this->_defaultIndexerResource->getTable('catalog_product_relation'),
             ['child_id']
         )->where(
             'parent_id IN(?)',
@@ -537,17 +478,17 @@ abstract class AbstractAction
             $select->where('child_id NOT IN(?)', $excludeIds);
         }
 
-        $children = $write->fetchCol($select);
+        $children = $this->_connection->fetchCol($select);
 
         if ($children) {
-            $select = $write->select()->from(
-                $this->_getTable('catalog_product_index_price')
+            $select = $this->_connection->select()->from(
+                $this->_defaultIndexerResource->getTable('catalog_product_index_price')
             )->where(
                 'entity_id IN(?)',
                 $children
             );
-            $query = $select->insertFromSelect($this->_getIdxTable(), [], false);
-            $write->query($query);
+            $query = $select->insertFromSelect($this->_defaultIndexerResource->getIdxTable(), [], false);
+            $this->_connection->query($query);
         }
 
         return $this;
diff --git a/app/code/Magento/Catalog/Model/Indexer/Product/Price/Action/Full.php b/app/code/Magento/Catalog/Model/Indexer/Product/Price/Action/Full.php
index 61700737da9d279d805533bc4421db2bbfb18182..ac9c4391efaa1bf23198ef8ec07c16436f5666eb 100755
--- a/app/code/Magento/Catalog/Model/Indexer/Product/Price/Action/Full.php
+++ b/app/code/Magento/Catalog/Model/Indexer/Product/Price/Action/Full.php
@@ -21,8 +21,8 @@ class Full extends \Magento\Catalog\Model\Indexer\Product\Price\AbstractAction
     public function execute($ids = null)
     {
         try {
-            $this->_useIdxTable(true);
-            $this->_emptyTable($this->_getIdxTable());
+            $this->_defaultIndexerResource->getTableStrategy()->setUseIdxTable(true);
+            $this->_emptyTable($this->_defaultIndexerResource->getIdxTable());
             $this->_prepareWebsiteDateTable();
             $this->_prepareTierPriceIndex();
             $this->_prepareGroupPriceIndex();
diff --git a/app/code/Magento/Catalog/Model/Resource/Category/Flat.php b/app/code/Magento/Catalog/Model/Resource/Category/Flat.php
index 01f2fa19a59ca5163d06d995796414944bb60cc5..fcc0fbf435f681062bdf3f39a0ab9e21d9dbeaad 100644
--- a/app/code/Magento/Catalog/Model/Resource/Category/Flat.php
+++ b/app/code/Magento/Catalog/Model/Resource/Category/Flat.php
@@ -11,6 +11,7 @@ use Magento\CatalogUrlRewrite\Model\CategoryUrlRewriteGenerator;
  * Category flat model
  *
  * @SuppressWarnings(PHPMD.LongVariable)
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
 class Flat extends \Magento\Indexer\Model\Resource\AbstractResource
 {
@@ -78,7 +79,10 @@ class Flat extends \Magento\Indexer\Model\Resource\AbstractResource
     protected $_categoryFactory;
 
     /**
+     * Class constructor
+     *
      * @param \Magento\Framework\Model\Resource\Db\Context $context
+     * @param \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy
      * @param \Magento\Catalog\Model\CategoryFactory $categoryFactory
      * @param CollectionFactory $categoryCollectionFactory
      * @param \Magento\Store\Model\StoreManagerInterface $storeManager
@@ -88,6 +92,7 @@ class Flat extends \Magento\Indexer\Model\Resource\AbstractResource
      */
     public function __construct(
         \Magento\Framework\Model\Resource\Db\Context $context,
+        \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy,
         \Magento\Catalog\Model\CategoryFactory $categoryFactory,
         \Magento\Catalog\Model\Resource\Category\CollectionFactory $categoryCollectionFactory,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
@@ -100,7 +105,7 @@ class Flat extends \Magento\Indexer\Model\Resource\AbstractResource
         $this->_storeManager = $storeManager;
         $this->_catalogConfig = $catalogConfig;
         $this->_eventManager = $eventManager;
-        parent::__construct($context, $resourcePrefix);
+        parent::__construct($context, $tableStrategy, $resourcePrefix);
     }
 
     /**
diff --git a/app/code/Magento/Catalog/Model/Resource/Product/Indexer/AbstractIndexer.php b/app/code/Magento/Catalog/Model/Resource/Product/Indexer/AbstractIndexer.php
index 0b27b2e351936a40021478bad8332133315a2625..03a082ac070ccf8f1aec001af905968183588585 100644
--- a/app/code/Magento/Catalog/Model/Resource/Product/Indexer/AbstractIndexer.php
+++ b/app/code/Magento/Catalog/Model/Resource/Product/Indexer/AbstractIndexer.php
@@ -23,16 +23,18 @@ abstract class AbstractIndexer extends \Magento\Indexer\Model\Resource\AbstractR
      * Class constructor
      *
      * @param \Magento\Framework\Model\Resource\Db\Context $context
+     * @param \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy
      * @param \Magento\Eav\Model\Config $eavConfig
      * @param string|null $resourcePrefix
      */
     public function __construct(
         \Magento\Framework\Model\Resource\Db\Context $context,
+        \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy,
         \Magento\Eav\Model\Config $eavConfig,
         $resourcePrefix = null
     ) {
         $this->_eavConfig = $eavConfig;
-        parent::__construct($context, $resourcePrefix);
+        parent::__construct($context, $tableStrategy, $resourcePrefix);
     }
 
     /**
diff --git a/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Eav/AbstractEav.php b/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Eav/AbstractEav.php
index 450b8207a86a2a979a0977eb079e9832e4e32c71..a156d0282926d13ad1a39ff29e3a4bdc5dbbe129 100644
--- a/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Eav/AbstractEav.php
+++ b/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Eav/AbstractEav.php
@@ -23,18 +23,20 @@ abstract class AbstractEav extends \Magento\Catalog\Model\Resource\Product\Index
      * Construct
      *
      * @param \Magento\Framework\Model\Resource\Db\Context $context
+     * @param \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy
      * @param \Magento\Eav\Model\Config $eavConfig
      * @param \Magento\Framework\Event\ManagerInterface $eventManager
      * @param string|null $resourcePrefix
      */
     public function __construct(
         \Magento\Framework\Model\Resource\Db\Context $context,
+        \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy,
         \Magento\Eav\Model\Config $eavConfig,
         \Magento\Framework\Event\ManagerInterface $eventManager,
         $resourcePrefix = null
     ) {
         $this->_eventManager = $eventManager;
-        parent::__construct($context, $eavConfig, $resourcePrefix);
+        parent::__construct($context, $tableStrategy, $eavConfig, $resourcePrefix);
     }
 
     /**
@@ -45,21 +47,19 @@ abstract class AbstractEav extends \Magento\Catalog\Model\Resource\Product\Index
      */
     public function reindexAll()
     {
-        $this->useIdxTable(true);
+        $this->tableStrategy->setUseIdxTable(true);
         $this->beginTransaction();
         try {
             $this->clearTemporaryIndexTable();
             $this->_prepareIndex();
             $this->_prepareRelationIndex();
             $this->_removeNotVisibleEntityFromIndex();
-
             $this->syncData();
             $this->commit();
         } catch (\Exception $e) {
             $this->rollBack();
             throw $e;
         }
-
         return $this;
     }
 
@@ -107,7 +107,6 @@ abstract class AbstractEav extends \Magento\Catalog\Model\Resource\Product\Index
             $adapter->rollBack();
             throw $e;
         }
-
         return $this;
     }
 
@@ -174,12 +173,12 @@ abstract class AbstractEav extends \Magento\Catalog\Model\Resource\Product\Index
     }
 
     /**
-     * Prepare data index for product relations
+     * Prepare data index select for product relations
      *
      * @param array $parentIds the parent entity ids limitation
-     * @return $this
+     * @return \Magento\Framework\DB\Select
      */
-    protected function _prepareRelationIndex($parentIds = null)
+    protected function _prepareRelationIndexSelect($parentIds = null)
     {
         $write = $this->_getWriteAdapter();
         $idxTable = $this->getIdxTable();
@@ -215,8 +214,22 @@ abstract class AbstractEav extends \Magento\Catalog\Model\Resource\Product\Index
             ]
         );
 
+        return $select;
+    }
+
+    /**
+     * Prepare data index for product relations
+     *
+     * @param array $parentIds the parent entity ids limitation
+     * @return $this
+     */
+    protected function _prepareRelationIndex($parentIds = null)
+    {
+        $write = $this->_getWriteAdapter();
+        $idxTable = $this->getIdxTable();
+
         $query = $write->insertFromSelect(
-            $select,
+            $this->_prepareRelationIndexSelect($parentIds),
             $idxTable,
             [],
             \Magento\Framework\DB\Adapter\AdapterInterface::INSERT_IGNORE
@@ -259,10 +272,9 @@ abstract class AbstractEav extends \Magento\Catalog\Model\Resource\Product\Index
             $adapter->delete($this->getMainTable(), $where);
             $adapter->commit();
         } catch (\Exception $e) {
-            $adapter->rollback();
+            $adapter->rollBack();
             throw $e;
         }
-
         return $this;
     }
 
@@ -284,13 +296,11 @@ abstract class AbstractEav extends \Magento\Catalog\Model\Resource\Product\Index
 
             // insert new index
             $this->insertFromTable($this->getIdxTable(), $this->getMainTable());
-
             $adapter->commit();
         } catch (\Exception $e) {
-            $adapter->rollback();
+            $adapter->rollBack();
             throw $e;
         }
-
         return $this;
     }
 }
diff --git a/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Eav/Decimal.php b/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Eav/Decimal.php
index 49c694355daf768f44f156f4e91ada07ce3fe52c..f8e73ca886a6c22c3af6b5b634bd0131ae5faa8b 100644
--- a/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Eav/Decimal.php
+++ b/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Eav/Decimal.php
@@ -131,9 +131,6 @@ class Decimal extends AbstractEav
      */
     public function getIdxTable($table = null)
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('catalog_product_index_eav_decimal_idx');
-        }
-        return $this->getTable('catalog_product_index_eav_decimal_tmp');
+        return $this->tableStrategy->getTableName('catalog_product_index_eav_decimal');
     }
 }
diff --git a/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Eav/Source.php b/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Eav/Source.php
index 287847f4acf445a582a4f32f80d8128cdfe9e2eb..f5899d9a55c7996ce8b2980ba865bd792724f975 100644
--- a/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Eav/Source.php
+++ b/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Eav/Source.php
@@ -25,6 +25,7 @@ class Source extends AbstractEav
      * Construct
      *
      * @param \Magento\Framework\Model\Resource\Db\Context $context
+     * @param \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy
      * @param \Magento\Eav\Model\Config $eavConfig
      * @param \Magento\Framework\Event\ManagerInterface $eventManager
      * @param \Magento\Catalog\Model\Resource\Helper $resourceHelper
@@ -32,13 +33,14 @@ class Source extends AbstractEav
      */
     public function __construct(
         \Magento\Framework\Model\Resource\Db\Context $context,
+        \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy,
         \Magento\Eav\Model\Config $eavConfig,
         \Magento\Framework\Event\ManagerInterface $eventManager,
         \Magento\Catalog\Model\Resource\Helper $resourceHelper,
         $resourcePrefix = null
     ) {
         $this->_resourceHelper = $resourceHelper;
-        parent::__construct($context, $eavConfig, $eventManager, $resourcePrefix);
+        parent::__construct($context, $tableStrategy, $eavConfig, $eventManager, $resourcePrefix);
     }
 
     /**
@@ -321,9 +323,6 @@ class Source extends AbstractEav
      */
     public function getIdxTable($table = null)
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('catalog_product_index_eav_idx');
-        }
-        return $this->getTable('catalog_product_index_eav_tmp');
+        return $this->tableStrategy->getTableName('catalog_product_index_eav');
     }
 }
diff --git a/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Price/DefaultPrice.php b/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Price/DefaultPrice.php
index 7c488ecf2ec36d3bc050d1726df25a72d6d365fb..467091e3c42ed9e29542d5624ae9fc5dfdd6e1ee 100755
--- a/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Price/DefaultPrice.php
+++ b/app/code/Magento/Catalog/Model/Resource/Product/Indexer/Price/DefaultPrice.php
@@ -42,7 +42,10 @@ class DefaultPrice extends \Magento\Catalog\Model\Resource\Product\Indexer\Abstr
     protected $_eventManager = null;
 
     /**
+     * Class constructor
+     *
      * @param \Magento\Framework\Model\Resource\Db\Context $context
+     * @param \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy
      * @param \Magento\Eav\Model\Config $eavConfig
      * @param \Magento\Framework\Event\ManagerInterface $eventManager
      * @param \Magento\Framework\Module\Manager $moduleManager
@@ -50,6 +53,7 @@ class DefaultPrice extends \Magento\Catalog\Model\Resource\Product\Indexer\Abstr
      */
     public function __construct(
         \Magento\Framework\Model\Resource\Db\Context $context,
+        \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy,
         \Magento\Eav\Model\Config $eavConfig,
         \Magento\Framework\Event\ManagerInterface $eventManager,
         \Magento\Framework\Module\Manager $moduleManager,
@@ -57,7 +61,27 @@ class DefaultPrice extends \Magento\Catalog\Model\Resource\Product\Indexer\Abstr
     ) {
         $this->_eventManager = $eventManager;
         $this->moduleManager = $moduleManager;
-        parent::__construct($context, $eavConfig, $resourcePrefix);
+        parent::__construct($context, $tableStrategy, $eavConfig, $resourcePrefix);
+    }
+
+    /**
+     * Get Table strategy
+     *
+     * @return \Magento\Indexer\Model\Indexer\Table\StrategyInterface
+     */
+    public function getTableStrategy()
+    {
+        return $this->tableStrategy;
+    }
+
+    /**
+     * Get write connection
+     *
+     * @return false|\Magento\Framework\DB\Adapter\AdapterInterface
+     */
+    public function getWriteConnection()
+    {
+        return $this->_getWriteAdapter();
     }
 
     /**
@@ -129,7 +153,7 @@ class DefaultPrice extends \Magento\Catalog\Model\Resource\Product\Indexer\Abstr
      */
     public function reindexAll()
     {
-        $this->useIdxTable(true);
+        $this->tableStrategy->setUseIdxTable(true);
         $this->beginTransaction();
         try {
             $this->reindex();
@@ -176,10 +200,7 @@ class DefaultPrice extends \Magento\Catalog\Model\Resource\Product\Indexer\Abstr
      */
     protected function _getDefaultFinalPriceTable()
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('catalog_product_index_price_final_idx');
-        }
-        return $this->getTable('catalog_product_index_price_final_tmp');
+        return $this->tableStrategy->getTableName('catalog_product_index_price_final');
     }
 
     /**
@@ -330,10 +351,7 @@ class DefaultPrice extends \Magento\Catalog\Model\Resource\Product\Indexer\Abstr
      */
     protected function _getCustomOptionAggregateTable()
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('catalog_product_index_price_opt_agr_idx');
-        }
-        return $this->getTable('catalog_product_index_price_opt_agr_tmp');
+        return $this->tableStrategy->getTableName('catalog_product_index_price_opt_agr');
     }
 
     /**
@@ -343,10 +361,7 @@ class DefaultPrice extends \Magento\Catalog\Model\Resource\Product\Indexer\Abstr
      */
     protected function _getCustomOptionPriceTable()
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('catalog_product_index_price_opt_idx');
-        }
-        return $this->getTable('catalog_product_index_price_opt_tmp');
+        return $this->tableStrategy->getTableName('catalog_product_index_price_opt');
     }
 
     /**
@@ -630,10 +645,7 @@ class DefaultPrice extends \Magento\Catalog\Model\Resource\Product\Indexer\Abstr
      */
     public function getIdxTable($table = null)
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('catalog_product_index_price_idx');
-        }
-        return $this->getTable('catalog_product_index_price_tmp');
+        return $this->tableStrategy->getTableName('catalog_product_index_price');
     }
 
     /**
diff --git a/app/code/Magento/Catalog/composer.json b/app/code/Magento/Catalog/composer.json
index 2c1ac69b4bbf736b53a62ea9d6387171ece6e7f4..7c1d49431e273833b821bae24c446d3364c6b458 100644
--- a/app/code/Magento/Catalog/composer.json
+++ b/app/code/Magento/Catalog/composer.json
@@ -3,37 +3,37 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-cms": "0.74.0-beta13",
-        "magento/module-indexer": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-log": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-widget": "0.74.0-beta13",
-        "magento/module-wishlist": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-msrp": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-catalog-rule": "0.74.0-beta13",
-        "magento/module-product-alert": "0.74.0-beta13",
-        "magento/module-url-rewrite": "0.74.0-beta13",
-        "magento/module-catalog-url-rewrite": "0.74.0-beta13",
-        "magento/module-page-cache": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-cms": "0.74.0-beta14",
+        "magento/module-indexer": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-log": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-widget": "0.74.0-beta14",
+        "magento/module-wishlist": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-msrp": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-catalog-rule": "0.74.0-beta14",
+        "magento/module-product-alert": "0.74.0-beta14",
+        "magento/module-url-rewrite": "0.74.0-beta14",
+        "magento/module-catalog-url-rewrite": "0.74.0-beta14",
+        "magento/module-page-cache": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "suggest": {
-        "magento/module-cookie": "0.74.0-beta13"
+        "magento/module-cookie": "0.74.0-beta14"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Catalog/etc/di.xml b/app/code/Magento/Catalog/etc/di.xml
index f4aad2caa251e2efce7f66c472eb76c8e17c5c6d..40b644c226a2ae2af8135aee265bcbe473480f98 100644
--- a/app/code/Magento/Catalog/etc/di.xml
+++ b/app/code/Magento/Catalog/etc/di.xml
@@ -185,7 +185,7 @@
     </type>
     <type name="Magento\Catalog\Model\Indexer\Product\Price\AbstractAction">
         <arguments>
-            <argument name="defaultPriceIndexer" xsi:type="string">Magento\Catalog\Model\Resource\Product\Indexer\Price\DefaultPrice</argument>
+            <argument name="defaultPriceIndexer" xsi:type="object">Magento\Catalog\Model\Resource\Product\Indexer\Price\DefaultPrice</argument>
         </arguments>
     </type>
     <type name="Magento\Eav\Model\Entity\Attribute\Set">
diff --git a/app/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml
index d14cbd5b13e6e0dc0a2696e007a81e931d4d376e..8760461ac724838b80814aee5db7c635edaccf82 100644
--- a/app/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml
+++ b/app/code/Magento/Catalog/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -8,7 +8,12 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <referenceBlock name="checkout.cart.item.renderers">
-            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="virtual" template="cart/item/default.phtml"/>
+            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="virtual" template="cart/item/default.phtml">
+                <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions" name="checkout.cart.item.renderers.virtual.actions" as="actions">
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Edit" name="checkout.cart.item.renderers.virtual.actions.edit" template="Magento_Checkout::cart/item/renderer/actions/edit.phtml"/>
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Remove" name="checkout.cart.item.renderers.virtual.actions.remove" template="Magento_Checkout::cart/item/renderer/actions/remove.phtml"/>
+                </block>
+            </block>
         </referenceBlock>
     </body>
 </page>
diff --git a/app/code/Magento/CatalogImportExport/composer.json b/app/code/Magento/CatalogImportExport/composer.json
index fe82fc10d1355d83dbc6a71cbe7ec882504f4f0d..ca381cabc50404db10ec64a2c7e635b69124c128 100644
--- a/app/code/Magento/CatalogImportExport/composer.json
+++ b/app/code/Magento/CatalogImportExport/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-import-export": "0.74.0-beta13",
-        "magento/module-indexer": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-import-export": "0.74.0-beta14",
+        "magento/module-indexer": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "ext-ctype": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/CatalogInventory/Model/Adminhtml/Stock/Item.php b/app/code/Magento/CatalogInventory/Model/Adminhtml/Stock/Item.php
index 92704735fe73e9978cb0f321f9058a28ff4933e1..ee34eeea325a2a439cf5b6fae82180df8ee83a8a 100644
--- a/app/code/Magento/CatalogInventory/Model/Adminhtml/Stock/Item.php
+++ b/app/code/Magento/CatalogInventory/Model/Adminhtml/Stock/Item.php
@@ -11,13 +11,15 @@ use Magento\CatalogInventory\Api\StockRegistryInterface;
 use Magento\Customer\Api\GroupManagementInterface;
 use Magento\Framework\Api\AttributeValueFactory;
 use Magento\Framework\Api\ExtensionAttributesFactory;
+use Magento\Framework\Object\IdentityInterface;
+use Magento\Catalog\Model\Product;
 
 /**
  * Catalog Inventory Stock Model for adminhtml area
  * @method \Magento\CatalogInventory\Api\Data\StockItemExtensionInterface getExtensionAttributes()
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
-class Item extends \Magento\CatalogInventory\Model\Stock\Item
+class Item extends \Magento\CatalogInventory\Model\Stock\Item implements IdentityInterface
 {
     /**
      * @var GroupManagementInterface
@@ -122,4 +124,17 @@ class Item extends \Magento\CatalogInventory\Model\Stock\Item
     {
         return true;
     }
+
+    /**
+     * @inheritdoc
+     */
+    public function getIdentities()
+    {
+        $tags = [];
+        if ($this->getProductId()) {
+            $tags[] = Product::CACHE_TAG . '_' . $this->getProductId();
+        }
+
+        return $tags;
+    }
 }
diff --git a/app/code/Magento/CatalogInventory/Model/Resource/Indexer/Stock/DefaultStock.php b/app/code/Magento/CatalogInventory/Model/Resource/Indexer/Stock/DefaultStock.php
index 05de6b3ffe27586b7f67cf22684ea4049210db6a..8667d4765713ea38e548b44867262df173d63406 100644
--- a/app/code/Magento/CatalogInventory/Model/Resource/Indexer/Stock/DefaultStock.php
+++ b/app/code/Magento/CatalogInventory/Model/Resource/Indexer/Stock/DefaultStock.php
@@ -36,18 +36,20 @@ class DefaultStock extends \Magento\Catalog\Model\Resource\Product\Indexer\Abstr
      * Class constructor
      *
      * @param \Magento\Framework\Model\Resource\Db\Context $context
+     * @param \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy
      * @param \Magento\Eav\Model\Config $eavConfig
      * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
      * @param string|null $resourcePrefix
      */
     public function __construct(
         \Magento\Framework\Model\Resource\Db\Context $context,
+        \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy,
         \Magento\Eav\Model\Config $eavConfig,
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
         $resourcePrefix = null
     ) {
         $this->_scopeConfig = $scopeConfig;
-        parent::__construct($context, $eavConfig, $resourcePrefix);
+        parent::__construct($context, $tableStrategy, $eavConfig, $resourcePrefix);
     }
 
     /**
@@ -68,7 +70,7 @@ class DefaultStock extends \Magento\Catalog\Model\Resource\Product\Indexer\Abstr
      */
     public function reindexAll()
     {
-        $this->useIdxTable(true);
+        $this->tableStrategy->setUseIdxTable(true);
         $this->beginTransaction();
         try {
             $this->_prepareIndexTable();
@@ -287,9 +289,6 @@ class DefaultStock extends \Magento\Catalog\Model\Resource\Product\Indexer\Abstr
      */
     public function getIdxTable($table = null)
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('cataloginventory_stock_status_idx');
-        }
-        return $this->getTable('cataloginventory_stock_status_tmp');
+        return $this->tableStrategy->getTableName('cataloginventory_stock_status');
     }
 }
diff --git a/app/code/Magento/CatalogInventory/Model/Resource/Stock/Item.php b/app/code/Magento/CatalogInventory/Model/Resource/Stock/Item.php
index b182d738370fcf152295f199814a120ebbff8604..ee653da73580405bdb9f219ef4793e6b5adc0783 100644
--- a/app/code/Magento/CatalogInventory/Model/Resource/Stock/Item.php
+++ b/app/code/Magento/CatalogInventory/Model/Resource/Stock/Item.php
@@ -123,6 +123,7 @@ class Item extends \Magento\Framework\Model\Resource\Db\AbstractDb
         parent::_afterSave($object);
         /** @var StockItemInterface $object */
         if ($this->processIndexEvents) {
+            $this->stockIndexerProcessor->markIndexerAsInvalid();
             $this->stockIndexerProcessor->reindexRow($object->getProductId());
         }
         return $this;
diff --git a/app/code/Magento/CatalogInventory/Model/StockRegistry.php b/app/code/Magento/CatalogInventory/Model/StockRegistry.php
index f32aeb2104b686091e06120271c462ec33542f08..059910b98b6f6b5dee0cf76426d92074e4f1a548 100644
--- a/app/code/Magento/CatalogInventory/Model/StockRegistry.php
+++ b/app/code/Magento/CatalogInventory/Model/StockRegistry.php
@@ -172,7 +172,7 @@ class StockRegistry implements StockRegistryInterface
         $criteria = $this->criteriaFactory->create();
         $criteria->setLimit($currentPage, $pageSize);
         $criteria->setWebsiteFilter($websiteId);
-        $criteria->setQtyFilter('>=', $qty);
+        $criteria->setQtyFilter('<=', $qty);
         $criteria->addField('qty');
         return $this->stockItemRepository->getList($criteria);
     }
diff --git a/app/code/Magento/CatalogInventory/Test/Unit/Block/Plugin/ProductViewTest.php b/app/code/Magento/CatalogInventory/Test/Unit/Block/Plugin/ProductViewTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..4edffd7709f010ce79108f022e22a3e1c19ce03c
--- /dev/null
+++ b/app/code/Magento/CatalogInventory/Test/Unit/Block/Plugin/ProductViewTest.php
@@ -0,0 +1,82 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\CatalogInventory\Test\Unit\Block\Plugin;
+
+class ProductViewTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\CatalogInventory\Block\Plugin\ProductView
+     */
+    protected $block;
+
+    /**
+     * @var \Magento\CatalogInventory\Api\Data\StockItemInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $stockItem;
+
+    /**
+     * @var \Magento\CatalogInventory\Api\StockRegistryInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $stockRegistry;
+
+    protected function setUp()
+    {
+        $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+
+        $this->stockItem = $this->getMockBuilder('\Magento\CatalogInventory\Model\Stock\Item')
+            ->disableOriginalConstructor()
+            ->setMethods(['getQtyMinAllowed', 'getQtyMaxAllowed', 'getQtyIncrements'])
+            ->getMock();
+
+        $this->stockRegistry = $this->getMockBuilder('Magento\CatalogInventory\Api\StockRegistryInterface')
+            ->getMock();
+
+        $this->block = $objectManager->getObject(
+            'Magento\CatalogInventory\Block\Plugin\ProductView',
+            [
+                'stockRegistry' => $this->stockRegistry
+            ]
+        );
+    }
+
+    public function testAfterGetQuantityValidators()
+    {
+        $result = [
+            'validate-item-quantity' =>
+                [
+                    'minAllowed' => 2,
+                    'maxAllowed' => 5,
+                    'qtyIncrements' => 3
+                ]
+        ];
+        $validators = [];
+        $productViewBlock = $this->getMockBuilder('Magento\Catalog\Block\Product\View')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $productMock = $this->getMockBuilder('Magento\Catalog\Model\Product')
+            ->disableOriginalConstructor()
+            ->setMethods(['_wakeup', 'getId', 'getStore'])
+            ->getMock();
+        $storeMock = $this->getMockBuilder('Magento\Store\Model\Store')
+            ->disableOriginalConstructor()
+            ->setMethods(['getWebsiteId', '_wakeup'])
+            ->getMock();
+
+        $productViewBlock->expects($this->any())->method('getProduct')->willReturn($productMock);
+        $productMock->expects($this->once())->method('getId')->willReturn('productId');
+        $productMock->expects($this->once())->method('getStore')->willReturn($storeMock);
+        $storeMock->expects($this->once())->method('getWebsiteId')->willReturn('websiteId');
+        $this->stockRegistry->expects($this->once())
+            ->method('getStockItem')
+            ->with('productId', 'websiteId')
+            ->willReturn($this->stockItem);
+        $this->stockItem->expects($this->once())->method('getQtyMinAllowed')->willReturn(2);
+        $this->stockItem->expects($this->any())->method('getQtyMaxAllowed')->willReturn(5);
+        $this->stockItem->expects($this->any())->method('getQtyIncrements')->willReturn(3);
+
+        $this->assertEquals($result, $this->block->afterGetQuantityValidators($productViewBlock, $validators));
+    }
+}
diff --git a/app/code/Magento/CatalogInventory/Test/Unit/Block/Stockqty/DefaultStockqtyTest.php b/app/code/Magento/CatalogInventory/Test/Unit/Block/Stockqty/DefaultStockqtyTest.php
index a513382ecc9c08706363240c69c0e210e5e4d5cc..fd247ef871523bf14f3ee2480af22f3c648d6627 100644
--- a/app/code/Magento/CatalogInventory/Test/Unit/Block/Stockqty/DefaultStockqtyTest.php
+++ b/app/code/Magento/CatalogInventory/Test/Unit/Block/Stockqty/DefaultStockqtyTest.php
@@ -30,6 +30,11 @@ class DefaultStockqtyTest extends \PHPUnit_Framework_TestCase
      */
     protected $stockRegistryMock;
 
+    /**
+     * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scopeConfigMock;
+
     protected function setUp()
     {
         $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
@@ -44,12 +49,16 @@ class DefaultStockqtyTest extends \PHPUnit_Framework_TestCase
         $this->stockRegistryMock = $this->getMockBuilder('Magento\CatalogInventory\Api\StockRegistryInterface')
             ->disableOriginalConstructor()
             ->getMock();
+        $this->scopeConfigMock = $this->getMockBuilder('\Magento\Framework\App\Config\ScopeConfigInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
         $this->block = $objectManager->getObject(
             'Magento\CatalogInventory\Block\Stockqty\DefaultStockqty',
             [
                 'registry' => $this->registryMock,
                 'stockState' => $this->stockState,
-                'stockRegistry' => $this->stockRegistryMock
+                'stockRegistry' => $this->stockRegistryMock,
+                'scopeConfig' => $this->scopeConfigMock
             ]
         );
     }
@@ -198,4 +207,10 @@ class DefaultStockqtyTest extends \PHPUnit_Framework_TestCase
         $dataArray[$key] = $value;
         $property->setValue($this->block, $dataArray);
     }
+
+    public function testGetThresholdQty()
+    {
+        $this->scopeConfigMock->expects($this->once())->method('getValue')->willReturn(5);
+        $this->assertEquals(5, $this->block->getThresholdQty());
+    }
 }
diff --git a/app/code/Magento/CatalogInventory/Test/Unit/Model/Adminhtml/Stock/ItemTest.php b/app/code/Magento/CatalogInventory/Test/Unit/Model/Adminhtml/Stock/ItemTest.php
index bcf805e7260685689b0fda77d1026a91c8aa006b..096c3e60ebde0867c7288c24cec2efeb66651921 100644
--- a/app/code/Magento/CatalogInventory/Test/Unit/Model/Adminhtml/Stock/ItemTest.php
+++ b/app/code/Magento/CatalogInventory/Test/Unit/Model/Adminhtml/Stock/ItemTest.php
@@ -58,4 +58,10 @@ class ItemTest extends \PHPUnit_Framework_TestCase
         $this->_model->setCustomerGroupId(2);
         $this->assertEquals(2, $this->_model->getCustomerGroupId());
     }
+
+    public function testGetIdentities()
+    {
+        $this->_model->setProductId(1);
+        $this->assertEquals(['catalog_product_1'], $this->_model->getIdentities());
+    }
 }
diff --git a/app/code/Magento/CatalogInventory/Test/Unit/Model/ConfigurationTest.php b/app/code/Magento/CatalogInventory/Test/Unit/Model/ConfigurationTest.php
index 6de9c01656aecb292c061550e65c69bc000ee0c1..14b5bebfb49f0ac812c2a283a58ac61f5632cbbe 100644
--- a/app/code/Magento/CatalogInventory/Test/Unit/Model/ConfigurationTest.php
+++ b/app/code/Magento/CatalogInventory/Test/Unit/Model/ConfigurationTest.php
@@ -259,4 +259,14 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
         ];
         $this->assertEquals($fields, $this->model->getConfigItemOptions());
     }
+
+    public function testGetManageStock()
+    {
+        $store = 1;
+        $this->scopeConfigMock->expects($this->once())
+            ->method('isSetFlag')
+            ->with(Configuration::XML_PATH_MANAGE_STOCK, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $store)
+            ->willReturn(1);
+        $this->assertEquals(1, $this->model->getManageStock($store));
+    }
 }
diff --git a/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/ItemTest.php b/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/ItemTest.php
index f6cfa8b4e7e6643d3b4df80ae83fe79bd57dd0fc..93f078e9ca11d272ef5abc37b8d2c73820cf9096 100644
--- a/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/ItemTest.php
+++ b/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/ItemTest.php
@@ -403,4 +403,58 @@ class ItemTest extends \PHPUnit_Framework_TestCase
         $this->item->setLowStockDate($date);
         $this->assertEquals($date, $this->item->getLowStockDate());
     }
+
+    /**
+     * @param array $config
+     * @param mixed $expected
+     * @dataProvider getQtyIncrementsDataProvider(
+     */
+    public function testGetQtyIncrements($config, $expected)
+    {
+        $this->setDataArrayValue('qty_increments', $config['qty_increments']);
+        $this->setDataArrayValue('enable_qty_increments', $config['enable_qty_increments']);
+        $this->setDataArrayValue('use_config_qty_increments', $config['use_config_qty_increments']);
+        if ($config['use_config_qty_increments']) {
+            $this->stockConfiguration->expects($this->once())
+                ->method('getQtyIncrements')
+                ->with($this->storeId)
+                ->willReturn($config['qty_increments']);
+        } else {
+            $this->setDataArrayValue('qty_increments', $config['qty_increments']);
+        }
+        $this->assertEquals($expected, $this->item->getQtyIncrements());
+    }
+
+    /**
+     * @return array
+     */
+    public function getQtyIncrementsDataProvider()
+    {
+        return [
+            [
+                [
+                    'qty_increments' => 1,
+                    'enable_qty_increments' => true,
+                    'use_config_qty_increments' => true
+                ],
+                1
+            ],
+            [
+                [
+                    'qty_increments' => -2,
+                    'enable_qty_increments' => true,
+                    'use_config_qty_increments' => true
+                ],
+                false
+            ],
+            [
+                [
+                    'qty_increments' => 3,
+                    'enable_qty_increments' => true,
+                    'use_config_qty_increments' => false
+                ],
+                3
+            ],
+        ];
+    }
 }
diff --git a/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/StockItemRepositoryTest.php b/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/StockItemRepositoryTest.php
index d01e095949ef6020c099d017e7dd15cca5a30e7f..ed72a425ea8fb2b4d67ec6a75fbf405dfb79505a 100644
--- a/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/StockItemRepositoryTest.php
+++ b/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/StockItemRepositoryTest.php
@@ -6,9 +6,12 @@
 namespace Magento\CatalogInventory\Test\Unit\Model\Stock;
 
 use \Magento\CatalogInventory\Model\Stock\StockItemRepository;
+use \Magento\CatalogInventory\Api\Data as InventoryApiData;
 
 /**
  * Class StockItemRepositoryTest
+ *
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
 class StockItemRepositoryTest extends \PHPUnit_Framework_TestCase
 {
@@ -18,7 +21,11 @@ class StockItemRepositoryTest extends \PHPUnit_Framework_TestCase
     protected $model;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\CatalogInventory\Model\Stock\Item |\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $stockItemMock;
+    /**
+     * @var \Magento\CatalogInventory\Api\StockConfigurationInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $stockConfigurationMock;
 
@@ -28,42 +35,42 @@ class StockItemRepositoryTest extends \PHPUnit_Framework_TestCase
     protected $productMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\CatalogInventory\Model\Spi\StockStateProviderInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $stockStateProviderMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\CatalogInventory\Model\Resource\Stock\Item|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $stockItemResourceMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var InventoryApiData\StockItemInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $stockItemMock;
+    protected $stockItemFactoryMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var InventoryApiData\StockItemCollectionInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $stockItemCollectionMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Catalog\Model\ProductFactory|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $productFactoryMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\DB\QueryBuilderFactory|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $queryBuilderMock;
+    protected $queryBuilderFactoryMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\DB\MapperFactory|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $mapperMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $localeDateMock;
 
@@ -74,6 +81,27 @@ class StockItemRepositoryTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
+        $this->stockItemMock = $this->getMockBuilder('\Magento\CatalogInventory\Model\Stock\Item')
+            ->disableOriginalConstructor()
+            ->setMethods(
+                [
+                    'getItemId',
+                    'getProductId',
+                    'setIsInStock',
+                    'setStockStatusChangedAutomaticallyFlag',
+                    'getStockStatusChangedAutomaticallyFlag',
+                    'getManageStock',
+                    'setLowStockDate',
+                    'setStockStatusChangedAuto',
+                    'hasStockStatusChangedAutomaticallyFlag',
+                    'setQty',
+                    'getWebsiteId',
+                    'setWebsiteId',
+                    'getStockId',
+                    'setStockId'
+                ]
+            )
+            ->getMock();
         $this->stockConfigurationMock = $this->getMockBuilder(
             'Magento\CatalogInventory\Api\StockConfigurationInterface'
         )
@@ -87,12 +115,16 @@ class StockItemRepositoryTest extends \PHPUnit_Framework_TestCase
         $this->stockItemResourceMock = $this->getMockBuilder('Magento\CatalogInventory\Model\Resource\Stock\Item')
             ->disableOriginalConstructor()
             ->getMock();
-        $this->stockItemMock = $this->getMockBuilder('Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory')
+        $this->stockItemFactoryMock = $this->getMockBuilder(
+            'Magento\CatalogInventory\Api\Data\StockItemInterfaceFactory'
+        )
+            ->setMethods(['create'])
             ->disableOriginalConstructor()
             ->getMock();
         $this->stockItemCollectionMock = $this->getMockBuilder(
             'Magento\CatalogInventory\Api\Data\StockItemCollectionInterfaceFactory'
         )
+            ->setMethods(['create'])
             ->disableOriginalConstructor()
             ->getMock();
         $this->productFactoryMock = $this->getMockBuilder('Magento\Catalog\Model\ProductFactory')
@@ -101,12 +133,14 @@ class StockItemRepositoryTest extends \PHPUnit_Framework_TestCase
             ->getMock();
         $this->productMock = $this->getMockBuilder('Magento\Catalog\Model\Product')
             ->disableOriginalConstructor()
+            ->setMethods(['load', 'getId', 'getTypeId', '__wakeup'])
             ->getMock();
         $this->productFactoryMock->expects($this->any())
             ->method('create')
             ->willReturn($this->productMock);
 
-        $this->queryBuilderMock = $this->getMockBuilder('Magento\Framework\DB\QueryBuilderFactory')
+        $this->queryBuilderFactoryMock = $this->getMockBuilder('Magento\Framework\DB\QueryBuilderFactory')
+            ->setMethods(['create'])
             ->disableOriginalConstructor()
             ->getMock();
         $this->mapperMock = $this->getMockBuilder('Magento\Framework\DB\MapperFactory')
@@ -127,29 +161,167 @@ class StockItemRepositoryTest extends \PHPUnit_Framework_TestCase
             $this->stockConfigurationMock,
             $this->stockStateProviderMock,
             $this->stockItemResourceMock,
-            $this->stockItemMock,
+            $this->stockItemFactoryMock,
             $this->stockItemCollectionMock,
             $this->productFactoryMock,
-            $this->queryBuilderMock,
+            $this->queryBuilderFactoryMock,
             $this->mapperMock,
             $this->localeDateMock,
             $this->indexProcessorMock
         );
     }
 
+    public function testDelete()
+    {
+        $this->stockItemResourceMock->expects($this->once())
+            ->method('delete')
+            ->with($this->stockItemMock)
+            ->willReturnSelf();
+
+        $this->assertTrue($this->model->delete($this->stockItemMock));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\CouldNotDeleteException
+     */
+    public function testDeleteException()
+    {
+        $this->stockItemResourceMock->expects($this->once())
+            ->method('delete')
+            ->with($this->stockItemMock)
+            ->willThrowException(new \Exception());
+
+        $this->model->delete($this->stockItemMock);
+    }
+
+    public function testDeleteById()
+    {
+        $id = 1;
+
+        $this->stockItemFactoryMock->expects($this->once())->method('create')->willReturn($this->stockItemMock);
+        $this->stockItemResourceMock->expects($this->once())->method('load')->with($this->stockItemMock, $id);
+        $this->stockItemMock->expects($this->once())->method('getItemId')->willReturn($id);
+
+        $this->assertTrue($this->model->deleteById($id));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\CouldNotDeleteException
+     * @expectedExceptionMessage Stock Item with id "1" does not exist.
+     */
+    public function testDeleteByIdException()
+    {
+        $id = 1;
+
+        $this->stockItemFactoryMock->expects($this->once())->method('create')->willReturn($this->stockItemMock);
+        $this->stockItemResourceMock->expects($this->once())->method('load')->with($this->stockItemMock, $id);
+        $this->stockItemMock->expects($this->once())->method('getItemId')->willReturn(null);
+
+        $this->assertTrue($this->model->deleteById($id));
+    }
+
     public function testSave()
     {
-        $params = [];
+        $productId = 1;
+
+        $this->stockItemMock->expects($this->any())->method('getProductId')->willReturn($productId);
+        $this->productMock->expects($this->once())->method('load')->with($productId)->willReturnSelf();
+        $this->productMock->expects($this->once())->method('getId')->willReturn($productId);
+        $this->productMock->expects($this->once())->method('getTypeId')->willReturn('typeId');
+        $this->stockConfigurationMock->expects($this->once())->method('isQty')->with('typeId')->willReturn(true);
+        $this->stockStateProviderMock->expects($this->once())
+            ->method('verifyStock')
+            ->with($this->stockItemMock)
+            ->willReturn(false);
+        $this->stockItemMock->expects($this->once())->method('getManageStock')->willReturn(true);
+        $this->stockItemMock->expects($this->once())->method('setIsInStock')->with(false)->willReturnSelf();
+        $this->stockItemMock->expects($this->once())
+            ->method('setStockStatusChangedAutomaticallyFlag')
+            ->with(true)
+            ->willReturnSelf();
+        $this->stockItemMock->expects($this->any())->method('setLowStockDate')->willReturnSelf();
+        $this->stockStateProviderMock->expects($this->once())
+            ->method('verifyNotification')
+            ->with($this->stockItemMock)
+            ->willReturn(true);
+        $this->stockItemMock->expects($this->atLeastOnce())->method('setStockStatusChangedAuto')->willReturnSelf();
+        $this->stockItemMock->expects($this->once())
+            ->method('hasStockStatusChangedAutomaticallyFlag')
+            ->willReturn(true);
+        $this->stockItemMock->expects($this->once())
+            ->method('getStockStatusChangedAutomaticallyFlag')
+            ->willReturn(true);
+        $this->stockItemMock->expects($this->once())->method('getWebsiteId')->willReturn(1);
+        $this->stockItemMock->expects($this->once())->method('setWebsiteId')->with(1)->willReturnSelf();
+        $this->stockItemMock->expects($this->once())->method('getStockId')->willReturn(1);
+        $this->stockItemMock->expects($this->once())->method('setStockId')->with(1)->willReturnSelf();
+        $this->stockItemResourceMock->expects($this->once())
+            ->method('save')
+            ->with($this->stockItemMock)
+            ->willReturnSelf();
+        $this->indexProcessorMock->expects($this->once())->method('reindexRow')->with($productId);
+
+        $this->assertEquals($this->stockItemMock, $this->model->save($this->stockItemMock));
+    }
+
+    public function testSaveWithoutProductId()
+    {
+        $productId = 1;
+
+        $this->stockItemMock->expects($this->any())->method('getProductId')->willReturn($productId);
+        $this->productMock->expects($this->once())->method('load')->with($productId)->willReturnSelf();
+        $this->productMock->expects($this->once())->method('getId')->willReturn(null);
+
+        $this->assertEquals($this->stockItemMock, $this->model->save($this->stockItemMock));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\CouldNotSaveException
+     */
+    public function testSaveException()
+    {
+        $productId = 1;
+
+        $this->stockItemMock->expects($this->any())->method('getProductId')->willReturn($productId);
+        $this->productMock->expects($this->once())->method('load')->with($productId)->willReturnSelf();
+        $this->productMock->expects($this->once())->method('getId')->willReturn($productId);
+        $this->productMock->expects($this->once())->method('getTypeId')->willReturn('typeId');
+        $this->stockConfigurationMock->expects($this->once())->method('isQty')->with('typeId')->willReturn(false);
+        $this->stockItemMock->expects($this->once())->method('setQty')->with(0)->willReturnSelf();
+        $this->stockItemMock->expects($this->once())->method('getWebsiteId')->willReturn(1);
+        $this->stockItemMock->expects($this->once())->method('setWebsiteId')->with(1)->willReturnSelf();
+        $this->stockItemMock->expects($this->once())->method('getStockId')->willReturn(1);
+        $this->stockItemMock->expects($this->once())->method('setStockId')->with(1)->willReturnSelf();
+        $this->stockItemResourceMock->expects($this->once())
+            ->method('save')
+            ->with($this->stockItemMock)
+            ->willThrowException(new \Exception());
+
+        $this->model->save($this->stockItemMock);
+    }
 
-        $stockItemMock = $this->getMockBuilder('Magento\CatalogInventory\Api\Data\StockItemInterface')
+    public function testGetList()
+    {
+        $criteriaMock = $this->getMockBuilder('Magento\CatalogInventory\Api\StockItemCriteriaInterface')
+            ->getMock();
+        $queryBuilderMock = $this->getMockBuilder('Magento\Framework\DB\QueryBuilder')
             ->disableOriginalConstructor()
+            ->setMethods(['setCriteria', 'setResource', 'create'])
             ->getMock();
-        $this->indexProcessorMock->expects($this->any())
-            ->method('reindexRow')
-            ->withAnyParameters();
-        $this->assertInstanceOf(
-            'Magento\CatalogInventory\Api\Data\StockItemInterface',
-            $this->model->save($stockItemMock, $params)
-        );
+        $queryMock = $this->getMockBuilder('Magento\Framework\DB\QueryInterface')
+            ->getMock();
+        $queryCollectionMock = $this->getMockBuilder('Magento\CatalogInventory\Api\Data\StockItemCollectionInterface')
+            ->getMock();
+
+        $this->queryBuilderFactoryMock->expects($this->once())->method('create')->willReturn($queryBuilderMock);
+        $queryBuilderMock->expects($this->once())->method('setCriteria')->with($criteriaMock)->willReturnSelf();
+        $queryBuilderMock->expects($this->once())
+            ->method('setResource')
+            ->with($this->stockItemResourceMock)
+            ->willReturnSelf();
+        $queryBuilderMock->expects($this->once())->method('create')->willReturn($queryMock);
+        $this->stockItemCollectionMock->expects($this->once())->method('create')->willReturn($queryCollectionMock);
+
+        $this->assertEquals($queryCollectionMock, $this->model->getList($criteriaMock));
     }
 }
diff --git a/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/StockRepositoryTest.php b/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/StockRepositoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..dc13237c4677445f25dd6d6107100a8345e61b9c
--- /dev/null
+++ b/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/StockRepositoryTest.php
@@ -0,0 +1,186 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\CatalogInventory\Test\Unit\Model\Stock;
+
+use \Magento\CatalogInventory\Model\Stock\StockRepository;
+
+/**
+ * Class StockRepositoryTest
+ */
+class StockRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var StockRepository
+     */
+    protected $model;
+
+    /**
+     * @var \Magento\CatalogInventory\Model\Stock |\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $stockMock;
+
+    /**
+     * @var \Magento\CatalogInventory\Model\Resource\Stock|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $stockResourceMock;
+
+    /**
+     * @var Magento\CatalogInventory\Model\StockFactory |\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $stockFactoryMock;
+
+    /**
+     * @var Magento\CatalogInventory\Api\Data\StockCollectionInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $stockCollectionMock;
+
+    /**
+     * @var \Magento\Framework\DB\QueryBuilderFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $queryBuilderFactoryMock;
+
+    /**
+     * @var \Magento\Framework\DB\MapperFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $mapperMock;
+
+    protected function setUp()
+    {
+
+        $this->stockMock = $this->getMockBuilder('\Magento\CatalogInventory\Model\Stock')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->stockResourceMock = $this->getMockBuilder('\Magento\CatalogInventory\Model\Resource\Stock')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->stockFactoryMock = $this->getMockBuilder(
+            'Magento\CatalogInventory\Model\StockFactory'
+        )
+            ->setMethods(['create'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->stockCollectionMock = $this->getMockBuilder(
+            'Magento\CatalogInventory\Api\Data\StockCollectionInterfaceFactory'
+        )
+            ->setMethods(['create'])
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->queryBuilderFactoryMock = $this->getMockBuilder('Magento\Framework\DB\QueryBuilderFactory')
+            ->setMethods(['create'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->mapperMock = $this->getMockBuilder('Magento\Framework\DB\MapperFactory')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->model = new StockRepository(
+            $this->stockResourceMock,
+            $this->stockFactoryMock,
+            $this->stockCollectionMock,
+            $this->queryBuilderFactoryMock,
+            $this->mapperMock
+        );
+    }
+
+    public function testSave()
+    {
+        $this->stockResourceMock->expects($this->once())
+            ->method('save')
+            ->with($this->stockMock)
+            ->willReturnSelf();
+
+        $this->assertEquals($this->stockMock, $this->model->save($this->stockMock));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\CouldNotSaveException
+     */
+    public function testSaveException()
+    {
+        $this->stockResourceMock->expects($this->once())
+            ->method('save')
+            ->with($this->stockMock)
+            ->willThrowException(new \Exception());
+
+        $this->model->save($this->stockMock);
+    }
+
+    public function testGetList()
+    {
+        $criteriaMock = $this->getMockBuilder('Magento\CatalogInventory\Api\StockCriteriaInterface')
+            ->getMock();
+        $queryBuilderMock = $this->getMockBuilder('Magento\Framework\DB\QueryBuilder')
+            ->disableOriginalConstructor()
+            ->setMethods(['setCriteria', 'setResource', 'create'])
+            ->getMock();
+        $queryMock = $this->getMockBuilder('Magento\Framework\DB\QueryInterface')
+            ->getMock();
+        $queryCollectionMock = $this->getMockBuilder('Magento\CatalogInventory\Api\Data\StockCollectionInterface')
+            ->getMock();
+
+        $this->queryBuilderFactoryMock->expects($this->once())->method('create')->willReturn($queryBuilderMock);
+        $queryBuilderMock->expects($this->once())->method('setCriteria')->with($criteriaMock)->willReturnSelf();
+        $queryBuilderMock->expects($this->once())
+            ->method('setResource')
+            ->with($this->stockResourceMock)
+            ->willReturnSelf();
+        $queryBuilderMock->expects($this->once())->method('create')->willReturn($queryMock);
+        $this->stockCollectionMock->expects($this->once())->method('create')->willReturn($queryCollectionMock);
+
+        $this->assertEquals($queryCollectionMock, $this->model->getList($criteriaMock));
+    }
+
+    public function testDelete()
+    {
+        $this->stockResourceMock->expects($this->once())
+            ->method('delete')
+            ->with($this->stockMock)
+            ->willReturnSelf();
+
+        $this->assertTrue($this->model->delete($this->stockMock));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\CouldNotDeleteException
+     */
+    public function testDeleteException()
+    {
+        $this->stockResourceMock->expects($this->once())
+            ->method('delete')
+            ->with($this->stockMock)
+            ->willThrowException(new \Exception());
+
+        $this->model->delete($this->stockMock);
+    }
+
+    public function testDeleteById()
+    {
+        $id = 1;
+
+        $this->stockFactoryMock->expects($this->once())->method('create')->willReturn($this->stockMock);
+        $this->stockResourceMock->expects($this->once())->method('load')->with($this->stockMock, $id);
+        $this->stockMock->expects($this->once())->method('getId')->willReturn($id);
+
+        $this->assertTrue($this->model->deleteById($id));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\CouldNotDeleteException
+     * @expectedExceptionMessage Stock with id "1" does not exist.
+     */
+    public function testDeleteByIdException()
+    {
+        $id = 1;
+
+        $this->stockFactoryMock->expects($this->once())->method('create')->willReturn($this->stockMock);
+        $this->stockResourceMock->expects($this->once())->method('load')->with($this->stockMock, $id);
+        $this->stockMock->expects($this->once())->method('getId')->willReturn(null);
+
+        $this->assertTrue($this->model->deleteById($id));
+    }
+}
diff --git a/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/StockStatusRepositoryTest.php b/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/StockStatusRepositoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..19eadb2165460d9f9ba2428d652580f6f78a0b6b
--- /dev/null
+++ b/app/code/Magento/CatalogInventory/Test/Unit/Model/Stock/StockStatusRepositoryTest.php
@@ -0,0 +1,185 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\CatalogInventory\Test\Unit\Model\Stock;
+
+use \Magento\CatalogInventory\Model\Stock\StockStatusRepository;
+use \Magento\CatalogInventory\Api\Data as InventoryApiData;
+
+/**
+ * Class StockStatusRepositoryTest
+ */
+class StockStatusRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var StockStatusRepository
+     */
+    protected $model;
+
+    /**
+     * @var \Magento\CatalogInventory\Model\Stock\Status|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $stockStatusMock;
+
+    /**
+     * @var \Magento\CatalogInventory\Model\Resource\Stock\Status|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $stockStatusResourceMock;
+
+    /**
+     * @var Magento\CatalogInventory\Model\Stock\StatusFactory |\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $stockStatusFactoryMock;
+
+    /**
+     * @var InventoryApiData\StockStatusCollectionInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $stockStatusCollectionMock;
+
+    /**
+     * @var \Magento\Framework\DB\QueryBuilderFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $queryBuilderFactoryMock;
+
+    /**
+     * @var \Magento\Framework\DB\MapperFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $mapperMock;
+
+    protected function setUp()
+    {
+        $this->stockStatusMock = $this->getMockBuilder('\Magento\CatalogInventory\Model\Stock\Status')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->stockStatusResourceMock = $this->getMockBuilder('\Magento\CatalogInventory\Model\Resource\Stock\Status')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->stockStatusFactoryMock = $this->getMockBuilder(
+            'Magento\CatalogInventory\Model\Stock\StatusFactory'
+        )
+            ->setMethods(['create'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->stockStatusCollectionMock = $this->getMockBuilder(
+            'Magento\CatalogInventory\Api\Data\StockStatusCollectionInterfaceFactory'
+        )
+            ->setMethods(['create'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->queryBuilderFactoryMock = $this->getMockBuilder('Magento\Framework\DB\QueryBuilderFactory')
+            ->setMethods(['create'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->mapperMock = $this->getMockBuilder('Magento\Framework\DB\MapperFactory')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->model = new StockStatusRepository(
+            $this->stockStatusResourceMock,
+            $this->stockStatusFactoryMock,
+            $this->stockStatusCollectionMock,
+            $this->queryBuilderFactoryMock,
+            $this->mapperMock
+        );
+    }
+
+    public function testSave()
+    {
+        $this->stockStatusResourceMock->expects($this->once())
+            ->method('save')
+            ->with($this->stockStatusMock)
+            ->willReturnSelf();
+
+        $this->assertEquals($this->stockStatusMock, $this->model->save($this->stockStatusMock));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\CouldNotSaveException
+     */
+    public function testSaveException()
+    {
+        $this->stockStatusResourceMock->expects($this->once())
+            ->method('save')
+            ->with($this->stockStatusMock)
+            ->willThrowException(new \Exception());
+
+        $this->model->save($this->stockStatusMock);
+    }
+
+    public function testGetList()
+    {
+        $criteriaMock = $this->getMockBuilder('Magento\CatalogInventory\Api\StockStatusCriteriaInterface')
+            ->getMock();
+        $queryBuilderMock = $this->getMockBuilder('Magento\Framework\DB\QueryBuilder')
+            ->disableOriginalConstructor()
+            ->setMethods(['setCriteria', 'setResource', 'create'])
+            ->getMock();
+        $queryMock = $this->getMockBuilder('Magento\Framework\DB\QueryInterface')
+            ->getMock();
+        $queryCollectionMock = $this->getMockBuilder('Magento\CatalogInventory\Api\Data\StockStatusCollectionInterface')
+            ->getMock();
+
+        $this->queryBuilderFactoryMock->expects($this->once())->method('create')->willReturn($queryBuilderMock);
+        $queryBuilderMock->expects($this->once())->method('setCriteria')->with($criteriaMock)->willReturnSelf();
+        $queryBuilderMock->expects($this->once())
+            ->method('setResource')
+            ->with($this->stockStatusResourceMock)
+            ->willReturnSelf();
+        $queryBuilderMock->expects($this->once())->method('create')->willReturn($queryMock);
+        $this->stockStatusCollectionMock->expects($this->once())->method('create')->willReturn($queryCollectionMock);
+
+        $this->assertEquals($queryCollectionMock, $this->model->getList($criteriaMock));
+    }
+
+    public function testDelete()
+    {
+        $this->stockStatusResourceMock->expects($this->once())
+            ->method('delete')
+            ->with($this->stockStatusMock)
+            ->willReturnSelf();
+
+        $this->assertTrue($this->model->delete($this->stockStatusMock));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\CouldNotDeleteException
+     */
+    public function testDeleteException()
+    {
+        $this->stockStatusResourceMock->expects($this->once())
+            ->method('delete')
+            ->with($this->stockStatusMock)
+            ->willThrowException(new \Exception());
+
+        $this->model->delete($this->stockStatusMock);
+    }
+
+    public function testDeleteById()
+    {
+        $id = 1;
+
+        $this->stockStatusFactoryMock->expects($this->once())->method('create')->willReturn($this->stockStatusMock);
+        $this->stockStatusResourceMock->expects($this->once())->method('load')->with($this->stockStatusMock, $id);
+
+        $this->assertTrue($this->model->deleteById($id));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\CouldNotDeleteException
+     */
+    public function testDeleteByIdException()
+    {
+        $id = 1;
+
+        $this->stockStatusFactoryMock->expects($this->once())->method('create')->willReturn($this->stockStatusMock);
+        $this->stockStatusResourceMock->expects($this->once())->method('load')->with($this->stockStatusMock, $id);
+        $this->stockStatusResourceMock->expects($this->once())
+            ->method('delete')
+            ->with($this->stockStatusMock)
+            ->willThrowException(new \Exception());
+
+        $this->assertTrue($this->model->deleteById($id));
+    }
+}
diff --git a/app/code/Magento/CatalogInventory/Test/Unit/Model/StockRegistryTest.php b/app/code/Magento/CatalogInventory/Test/Unit/Model/StockRegistryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..0c7cdea123e283baf3a5f2f9021e5dcb057fbbf4
--- /dev/null
+++ b/app/code/Magento/CatalogInventory/Test/Unit/Model/StockRegistryTest.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\CatalogInventory\Test\Unit\Model;
+
+/**
+ * Class StockRegistryTest
+ */
+class StockRegistryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\CatalogInventory\Model\StockRegistry
+     */
+    protected $model;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $criteria;
+
+    public function setUp()
+    {
+        $this->criteria = $this->getMockBuilder('Magento\CatalogInventory\Api\StockItemCriteriaInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $criteriaFactory = $this->getMockBuilder('Magento\CatalogInventory\Api\StockItemCriteriaInterfaceFactory')
+            ->setMethods(['create'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $criteriaFactory->expects($this->once())->method('create')->willReturn($this->criteria);
+
+        $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+        $this->model = $objectManager->getObject(
+            'Magento\CatalogInventory\Model\StockRegistry',
+            [
+                'criteriaFactory' => $criteriaFactory
+            ]
+        );
+    }
+
+    public function testGetLowStockItems()
+    {
+        $this->criteria->expects($this->once())->method('setLimit')->with(1, 0);
+        $this->criteria->expects($this->once())->method('setWebsiteFilter')->with(1);
+        $this->criteria->expects($this->once())->method('setQtyFilter')->with('<=');
+        $this->criteria->expects($this->once())->method('addField')->with('qty');
+        $this->model->getLowStockItems(1, 100);
+    }
+}
diff --git a/app/code/Magento/CatalogInventory/composer.json b/app/code/Magento/CatalogInventory/composer.json
index 17807abf00284e37befeee24f9146e7822ab1675..fa1c799fe739d3bcf87ca6f916bcde0962624808 100644
--- a/app/code/Magento/CatalogInventory/composer.json
+++ b/app/code/Magento/CatalogInventory/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-indexer": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-indexer": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/CatalogInventory/etc/webapi.xml b/app/code/Magento/CatalogInventory/etc/webapi.xml
index 80317eccf51a7dd8ba3e7d24fe0497cef61e9df2..fe200c8628cb130aa2f3847283c7b52e0bac3b23 100644
--- a/app/code/Magento/CatalogInventory/etc/webapi.xml
+++ b/app/code/Magento/CatalogInventory/etc/webapi.xml
@@ -13,7 +13,7 @@
             <resource ref="Magento_CatalogInventory::cataloginventory"/>
         </resources>
     </route>
-    <route url="/V1/stockItems/:productSku" method="PUT">
+    <route url="/V1/products/:productSku/stockItems/:itemId" method="PUT">
         <service class="Magento\CatalogInventory\Api\StockRegistryInterface" method="updateStockItemBySku"/>
         <resources>
             <resource ref="Magento_CatalogInventory::cataloginventory"/>
diff --git a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog.php b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog.php
index 328482c119808ee3a2a47dad19363837a9649a71..f5c53227cf41c7587d110a9b50dab39aae37bd10 100644
--- a/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog.php
+++ b/app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 /**
  * Backend Catalog Price Rules controller
  *
@@ -36,11 +34,15 @@ class Catalog extends Action
     protected $_coreRegistry = null;
 
     /**
+     * Date filter instance
+     *
      * @var \Magento\Framework\Stdlib\DateTime\Filter\Date
      */
     protected $_dateFilter;
 
     /**
+     * Constructor
+     *
      * @param Context $context
      * @param Registry $coreRegistry
      * @param Date $dateFilter
@@ -53,6 +55,8 @@ class Catalog extends Action
     }
 
     /**
+     * Init action
+     *
      * @return $this
      */
     protected function _initAction()
@@ -68,6 +72,8 @@ class Catalog extends Action
     }
 
     /**
+     * Is access to section allowed
+     *
      * @return bool
      */
     protected function _isAllowed()
diff --git a/app/code/Magento/CatalogRule/Helper/Data.php b/app/code/Magento/CatalogRule/Helper/Data.php
index 439cff46006938de35eb744508e7b7424413c2fa..33ff883655675bf067876ac24d74ef0248ed99ce 100644
--- a/app/code/Magento/CatalogRule/Helper/Data.php
+++ b/app/code/Magento/CatalogRule/Helper/Data.php
@@ -12,13 +12,12 @@ namespace Magento\CatalogRule\Helper;
 class Data extends \Magento\Framework\App\Helper\AbstractHelper
 {
     /**
-     * Algorithm for calculating price rule
+     * Algorithm for calculating price by rule
      *
      * @param  string $actionOperator
      * @param  int $ruleAmount
      * @param  float $price
      * @return float|int
-     * @api
      */
     public function calcPriceRule($actionOperator, $ruleAmount, $price)
     {
diff --git a/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php b/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php
index 55b77da9849cec49ac94e2af32d15e6caf00aeb8..cef79f4f73706fba4969a990a42bc5836f244701 100755
--- a/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php
+++ b/app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php
@@ -18,6 +18,15 @@ class IndexBuilder
 {
     const SECONDS_IN_DAY = 86400;
 
+    /**
+     * CatalogRuleGroupWebsite columns list
+     *
+     * This array contain list of CatalogRuleGroupWebsite table columns
+     *
+     * @var array
+     */
+    protected $_catalogRuleGroupWebsiteColumnsList = ['rule_id', 'customer_group_id', 'website_id'];
+
     /**
      * @var \Magento\Framework\App\Resource
      */
@@ -415,8 +424,6 @@ class IndexBuilder
      */
     protected function applyAllRules(Product $product = null)
     {
-        $write = $this->getWriteAdapter();
-
         $fromDate = mktime(0, 0, 0, date('m'), date('d') - 1);
         $toDate = mktime(0, 0, 0, date('m'), date('d') + 1);
 
@@ -499,6 +506,17 @@ class IndexBuilder
             $this->saveRuleProductPrices($dayPrices);
         }
 
+        return $this->updateCatalogRuleGroupWebsiteData();
+    }
+
+    /**
+     * Update CatalogRuleGroupWebsite data
+     *
+     * @return $this
+     */
+    protected function updateCatalogRuleGroupWebsiteData()
+    {
+        $write = $this->getWriteAdapter();
         $write->delete($this->getTable('catalogrule_group_website'), []);
 
         $timestamp = $this->dateTime->gmtTimestamp();
@@ -507,11 +525,15 @@ class IndexBuilder
             true
         )->from(
             $this->getTable('catalogrule_product'),
-            ['rule_id', 'customer_group_id', 'website_id']
+            $this->_catalogRuleGroupWebsiteColumnsList
         )->where(
             "{$timestamp} >= from_time AND (({$timestamp} <= to_time AND to_time > 0) OR to_time = 0)"
         );
-        $query = $select->insertFromSelect($this->getTable('catalogrule_group_website'));
+        $query = $select->insertFromSelect(
+            $this->getTable('catalogrule_group_website'),
+            $this->_catalogRuleGroupWebsiteColumnsList
+        );
+
         $write->query($query);
 
         return $this;
@@ -658,7 +680,6 @@ class IndexBuilder
                 $arrData[$key]['latest_start_date'] = $this->dateFormat->formatDate($data['latest_start_date'], false);
                 $arrData[$key]['earliest_end_date'] = $this->dateFormat->formatDate($data['earliest_end_date'], false);
             }
-            $adapter->insertOnDuplicate($this->getTable('catalogrule_affected_product'), array_unique($productIds));
             $adapter->insertOnDuplicate($this->getTable('catalogrule_product_price'), $arrData);
         } catch (\Exception $e) {
             throw $e;
diff --git a/app/code/Magento/CatalogRule/Setup/InstallSchema.php b/app/code/Magento/CatalogRule/Setup/InstallSchema.php
index 5c4700a3fb0ae645f1861a08a69526b407ed7e1d..68629bbadabce2551c3b3c2c74bcce3f44e26024 100644
--- a/app/code/Magento/CatalogRule/Setup/InstallSchema.php
+++ b/app/code/Magento/CatalogRule/Setup/InstallSchema.php
@@ -358,22 +358,6 @@ class InstallSchema implements InstallSchemaInterface
 
         $installer->getConnection()->createTable($table);
 
-        /**
-         * Create table 'catalogrule_affected_product'
-         */
-        $table = $installer->getConnection()
-            ->newTable($installer->getTable('catalogrule_affected_product'))
-            ->addColumn(
-                'product_id',
-                \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
-                null,
-                ['unsigned' => true, 'nullable' => false, 'primary' => true],
-                'Product Id'
-            )
-            ->setComment('CatalogRule Affected Product');
-
-        $installer->getConnection()->createTable($table);
-
         /**
          * Create table 'catalogrule_group_website'
          */
diff --git a/app/code/Magento/CatalogRule/Test/Unit/Helper/DataTest.php b/app/code/Magento/CatalogRule/Test/Unit/Helper/DataTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..0d75d688a07a164bb674fa343d97800049173af0
--- /dev/null
+++ b/app/code/Magento/CatalogRule/Test/Unit/Helper/DataTest.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\CatalogRule\Test\Unit\Helper;
+
+use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
+
+class DataTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Helper object
+     *
+     * @var \Magento\CatalogRule\Helper\Data
+     */
+    protected $helper;
+
+    protected function setUp()
+    {
+        $this->helper = (new ObjectManager($this))->getObject('Magento\CatalogRule\Helper\Data');
+    }
+
+    /**
+     * Test price rule calculation
+     *
+     * @param string $actionOperator
+     * @param int|float $ruleAmount
+     * @param int|float $price
+     * @param int|float $expectedAmount
+     *
+     * @dataProvider calcPriceRuleDataProvider
+     */
+    public function testCalcPriceRule($actionOperator, $ruleAmount, $price, $expectedAmount)
+    {
+        $this->assertEquals($expectedAmount, $this->helper->calcPriceRule($actionOperator, $ruleAmount, $price));
+    }
+
+    /**
+     * Data provider for cal price rule test
+     *
+     * @return array
+     */
+    public function calcPriceRuleDataProvider()
+    {
+        return [
+            ['to_fixed', 10, 10, 10],
+            ['to_fixed', 0, 10, 0],
+            ['to_fixed', 10, 0, 0],
+            ['to_fixed', 0, 0, 0],
+            ['to_percent', 100, 100, 100],
+            ['to_percent', 10, 100, 10],
+            ['to_percent', 10, 70, 7],
+            ['to_percent', 100, 10, 10],
+            ['by_fixed', 100, 100, 0],
+            ['by_fixed', 10, 100, 90],
+            ['by_fixed', 100, 10, 0],
+            ['by_percent', 100, 100, 0],
+            ['by_percent', 100, 10, 0],
+            ['by_percent', 100, 1, 0],
+            ['by_percent', 10, 100, 90],
+            ['by_percent', 10, 10, 9],
+            ['by_percent', 1, 10, 9.90],
+        ];
+    }
+}
diff --git a/app/code/Magento/CatalogRule/Test/Unit/Model/CronTest.php b/app/code/Magento/CatalogRule/Test/Unit/Model/CronTest.php
index 07e27c6398a6a8678788390b12e5fd0076cea02e..2d8f4b8b8a6a95955be084fcda3a2a6ad25dab6c 100644
--- a/app/code/Magento/CatalogRule/Test/Unit/Model/CronTest.php
+++ b/app/code/Magento/CatalogRule/Test/Unit/Model/CronTest.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\CatalogRule\Test\Unit\Model;
 
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
@@ -13,23 +11,35 @@ use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 class CronTest extends \PHPUnit_Framework_TestCase
 {
     /**
+     * Processor
+     *
      * @var \Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $ruleProductProcessor;
 
     /**
+     * Cron object
+     *
      * @var \Magento\CatalogRule\Model\Cron
      */
     protected $cron;
 
     protected function setUp()
     {
-        $this->ruleProductProcessor = $this->getMock('Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor',
-            [], [], '', false);
-
-        $this->cron = (new ObjectManager($this))->getObject('Magento\CatalogRule\Model\Cron', [
-            'ruleProductProcessor' => $this->ruleProductProcessor,
-        ]);
+        $this->ruleProductProcessor = $this->getMock(
+            'Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor',
+            [],
+            [],
+            '',
+            false
+        );
+
+        $this->cron = (new ObjectManager($this))->getObject(
+            'Magento\CatalogRule\Model\Cron',
+            [
+                'ruleProductProcessor' => $this->ruleProductProcessor,
+            ]
+        );
     }
 
     public function testDailyCatalogUpdate()
diff --git a/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/IndexBuilderTest.php b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/IndexBuilderTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..8c41a3c24276dcad12e5733216b5eb2a21cc3640
--- /dev/null
+++ b/app/code/Magento/CatalogRule/Test/Unit/Model/Indexer/IndexBuilderTest.php
@@ -0,0 +1,213 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\CatalogRule\Test\Unit\Model\Indexer;
+
+/**
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @SuppressWarnings(PHPMD.TooManyFields)
+ */
+class IndexBuilderTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\CatalogRule\Model\Indexer\IndexBuilder
+     */
+    protected $indexBuilder;
+
+    /**
+     * @var \Magento\Framework\App\Resource|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resource;
+
+    /**
+     * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $storeManager;
+
+    /**
+     * @var \Magento\CatalogRule\Model\Resource\Rule\CollectionFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $ruleCollectionFactory;
+
+    /**
+     * @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $logger;
+
+    /**
+     * @var \Magento\Framework\Pricing\PriceCurrencyInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $priceCurrency;
+
+
+    /**
+     * @var \Magento\Eav\Model\Config|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $eavConfig;
+
+    /**
+     * @var \Magento\Framework\Stdlib\DateTime|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $dateFormat;
+
+    /**
+     * @var \Magento\Framework\Stdlib\DateTime\DateTime|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $dateTime;
+
+    /**
+     * @var \Magento\Catalog\Model\ProductFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $productFactory;
+
+    /**
+     * @var \Magento\Framework\DB\Adapter\AdapterInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $connection;
+
+    /**
+     * @var \Magento\Framework\DB\Select|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $select;
+
+    /**
+     * @var \Zend_Db_Statement_Interface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $db;
+
+    /**
+     * @var \Magento\Store\Model\Website|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $website;
+
+    /**
+     * @var \Magento\Rule\Model\Condition\Combine|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $combine;
+
+    /**
+     * @var \Magento\CatalogRule\Model\Rule|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $rules;
+
+    /**
+     * @var \Magento\Catalog\Model\Product|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $product;
+
+    /**
+     * @var \Magento\Eav\Model\Entity\Attribute\AbstractAttribute|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $attribute;
+
+    /**
+     * @var \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $backend;
+
+    /**
+     * Set up test
+     *
+     * @return void
+     */
+    protected function setUp()
+    {
+        $this->resource = $this->getMock(
+            'Magento\Framework\App\Resource',
+            ['getConnection', 'getTableName'],
+            [],
+            '',
+            false
+        );
+        $this->ruleCollectionFactory = $this->getMock(
+            'Magento\CatalogRule\Model\Resource\Rule\CollectionFactory',
+            ['create', 'addFieldToFilter'],
+            [],
+            '',
+            false
+        );
+        $this->backend = $this->getMock(
+            'Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->select = $this->getMock('Magento\Framework\DB\Select', [], [], '', false);
+        $this->connection = $this->getMock('Magento\Framework\DB\Adapter\AdapterInterface');
+        $this->db = $this->getMock('Zend_Db_Statement_Interface', [], [], '', false);
+        $this->website = $this->getMock('Magento\Store\Model\Website', [], [], '', false);
+        $this->storeManager = $this->getMock('Magento\Store\Model\StoreManagerInterface', [], [], '', false);
+        $this->combine = $this->getMock('Magento\Rule\Model\Condition\Combine', [], [], '', false);
+        $this->rules = $this->getMock('Magento\CatalogRule\Model\Rule', [], [], '', false);
+        $this->logger = $this->getMock('Psr\Log\LoggerInterface', [], [], '', false);
+        $this->attribute = $this->getMock('Magento\Eav\Model\Entity\Attribute\AbstractAttribute', [], [], '', false);
+        $this->priceCurrency = $this->getMock('Magento\Framework\Pricing\PriceCurrencyInterface');
+        $this->dateFormat = $this->getMock('Magento\Framework\Stdlib\DateTime', [], [], '', false);
+        $this->dateTime = $this->getMock('Magento\Framework\Stdlib\DateTime\DateTime', [], [], '', false);
+        $this->eavConfig = $this->getMock('Magento\Eav\Model\Config', [], [], '', false);
+        $this->product = $this->getMock('Magento\Catalog\Model\Product', [], [], '', false);
+        $this->productFactory = $this->getMock('Magento\Catalog\Model\ProductFactory', ['create'], [], '', false);
+
+        $this->connection->expects($this->any())->method('select')->will($this->returnValue($this->select));
+        $this->connection->expects($this->any())->method('query')->will($this->returnValue($this->db));
+
+        $this->select->expects($this->any())->method('distinct')->will($this->returnSelf());
+        $this->select->expects($this->any())->method('where')->will($this->returnSelf());
+        $this->select->expects($this->any())->method('from')->will($this->returnSelf());
+        $this->select->expects($this->any())->method('order')->will($this->returnSelf());
+
+        $this->resource->expects($this->any())->method('getConnection')->will($this->returnValue($this->connection));
+        $this->resource->expects($this->any())->method('getTableName')->will($this->returnArgument(0));
+
+        $this->storeManager->expects($this->any())->method('getWebsites')->will($this->returnValue([$this->website]));
+        $this->storeManager->expects($this->any())->method('getWebsite')->will($this->returnValue($this->website));
+
+        $this->rules->expects($this->any())->method('getId')->will($this->returnValue(1));
+        $this->rules->expects($this->any())->method('getWebsiteIds')->will($this->returnValue([1]));
+        $this->rules->expects($this->any())->method('getConditions')->will($this->returnValue($this->combine));
+        $this->rules->expects($this->any())->method('getCustomerGroupIds')->will($this->returnValue([1]));
+
+        $this->ruleCollectionFactory->expects($this->any())->method('create')->will($this->returnSelf());
+        $this->ruleCollectionFactory->expects($this->any())->method('addFieldToFilter')->will(
+            $this->returnValue([$this->rules])
+        );
+
+        $this->product->expects($this->any())->method('load')->will($this->returnSelf());
+        $this->product->expects($this->any())->method('getId')->will($this->returnValue(1));
+        $this->product->expects($this->any())->method('getWebsiteIds')->will($this->returnValue([1]));
+
+        $this->combine->expects($this->any())->method('validate')->will($this->returnValue(true));
+        $this->attribute->expects($this->any())->method('getBackend')->will($this->returnValue($this->backend));
+        $this->eavConfig->expects($this->any())->method('getAttribute')->will($this->returnValue($this->attribute));
+        $this->productFactory->expects($this->any())->method('create')->will($this->returnValue($this->product));
+
+        $this->indexBuilder = new \Magento\CatalogRule\Model\Indexer\IndexBuilder(
+            $this->ruleCollectionFactory,
+            $this->priceCurrency,
+            $this->resource,
+            $this->storeManager,
+            $this->logger,
+            $this->eavConfig,
+            $this->dateFormat,
+            $this->dateTime,
+            $this->productFactory
+        );
+    }
+
+    /**
+     * Test UpdateCatalogRuleGroupWebsiteData
+     *
+     * @covers \Magento\CatalogRule\Model\Indexer\IndexBuilder::updateCatalogRuleGroupWebsiteData
+     * @return void
+     */
+    public function testUpdateCatalogRuleGroupWebsiteData()
+    {
+        $this->select->expects($this->once())->method('insertFromSelect')->with('catalogrule_group_website');
+        
+        $this->indexBuilder->reindexByIds([1]);
+    }
+}
diff --git a/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/CategoryTest.php b/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/CategoryTest.php
index 4814767f39d9e8017bd8e45804c5b8a670a2bd1c..59bd89d00579eff03f37dc0293027240c303c5e3 100644
--- a/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/CategoryTest.php
+++ b/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/CategoryTest.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\CatalogRule\Test\Unit\Plugin\Indexer;
 
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
@@ -29,20 +27,37 @@ class CategoryTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->productRuleProcessor = $this->getMock('Magento\CatalogRule\Model\Indexer\Product\ProductRuleProcessor',
-            [], [], '', false);
-        $this->subject = $this->getMock('Magento\Catalog\Model\Category', ['getAffectedProductIds', '__wakeUp'], [],
-            '', false);
-
-        $this->plugin = (new ObjectManager($this))->getObject('Magento\CatalogRule\Plugin\Indexer\Category', [
-            'productRuleProcessor' => $this->productRuleProcessor,
-        ]);
+        $this->productRuleProcessor = $this->getMock(
+            'Magento\CatalogRule\Model\Indexer\Product\ProductRuleProcessor',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->subject = $this->getMock(
+            'Magento\Catalog\Model\Category',
+            ['getAffectedProductIds', '__wakeUp'],
+            [],
+            '',
+            false
+        );
+
+        $this->plugin = (new ObjectManager($this))->getObject(
+            'Magento\CatalogRule\Plugin\Indexer\Category',
+            [
+                'productRuleProcessor' => $this->productRuleProcessor,
+            ]
+        );
     }
 
     public function testAfterSaveWithoutAffectedProductIds()
     {
-        $this->subject->expects($this->any())->method('getAffectedProductIds')->will($this->returnValue([]));
-        $this->productRuleProcessor->expects($this->never())->method('reindexList');
+        $this->subject->expects($this->any())
+            ->method('getAffectedProductIds')
+            ->will($this->returnValue([]));
+
+        $this->productRuleProcessor->expects($this->never())
+            ->method('reindexList');
 
         $this->assertEquals($this->subject, $this->plugin->afterSave($this->subject, $this->subject));
     }
@@ -51,15 +66,21 @@ class CategoryTest extends \PHPUnit_Framework_TestCase
     {
         $productIds = [1, 2, 3];
 
-        $this->subject->expects($this->any())->method('getAffectedProductIds')->will($this->returnValue($productIds));
-        $this->productRuleProcessor->expects($this->once())->method('reindexList')->with($productIds);
+        $this->subject->expects($this->any())
+            ->method('getAffectedProductIds')
+            ->will($this->returnValue($productIds));
+
+        $this->productRuleProcessor->expects($this->once())
+            ->method('reindexList')
+            ->with($productIds);
 
         $this->assertEquals($this->subject, $this->plugin->afterSave($this->subject, $this->subject));
     }
 
     public function testAfterDelete()
     {
-        $this->productRuleProcessor->expects($this->once())->method('markIndexerAsInvalid');
+        $this->productRuleProcessor->expects($this->once())
+            ->method('markIndexerAsInvalid');
 
         $this->assertEquals($this->subject, $this->plugin->afterDelete($this->subject, $this->subject));
     }
diff --git a/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/CustomerGroupTest.php b/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/CustomerGroupTest.php
index f0c7283f1d4eb081ed736b11591521036d21560d..fb911fb1cdbd7211e3d39b5ea2528587d9c3f343 100644
--- a/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/CustomerGroupTest.php
+++ b/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/CustomerGroupTest.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\CatalogRule\Test\Unit\Plugin\Indexer;
 
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
@@ -13,34 +11,55 @@ use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 class CustomerGroupTest extends \PHPUnit_Framework_TestCase
 {
     /**
+     * Rule processor mock
+     *
      * @var \Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $ruleProductProcessor;
 
     /**
+     * Subject group
+     *
      * @var \Magento\Customer\Model\Group|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $subject;
 
     /**
+     * Tested plugin
+     *
      * @var \Magento\CatalogRule\Plugin\Indexer\CustomerGroup
      */
     protected $plugin;
 
     protected function setUp()
     {
-        $this->ruleProductProcessor = $this->getMock('Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor',
-            [], [], '', false);
-        $this->subject = $this->getMock('Magento\Customer\Model\Group', [], [], '', false);
+        $this->ruleProductProcessor = $this->getMock(
+            'Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->subject = $this->getMock(
+            'Magento\Customer\Model\Group',
+            [],
+            [],
+            '',
+            false
+        );
 
-        $this->plugin = (new ObjectManager($this))->getObject('Magento\CatalogRule\Plugin\Indexer\CustomerGroup', [
-            'ruleProductProcessor' => $this->ruleProductProcessor,
-        ]);
+        $this->plugin = (new ObjectManager($this))->getObject(
+            'Magento\CatalogRule\Plugin\Indexer\CustomerGroup',
+            [
+                'ruleProductProcessor' => $this->ruleProductProcessor,
+            ]
+        );
     }
 
     public function testAfterDelete()
     {
-        $this->ruleProductProcessor->expects($this->once())->method('markIndexerAsInvalid');
+        $this->ruleProductProcessor->expects($this->once())
+            ->method('markIndexerAsInvalid');
 
         $this->assertEquals($this->subject, $this->plugin->afterDelete($this->subject, $this->subject));
     }
diff --git a/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/ImportExportTest.php b/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/ImportExportTest.php
index eac185dcc129f308874f6c412f24655dbcaaf0b1..68a4dae5ef04fae0434f9af375015454afe8e238 100644
--- a/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/ImportExportTest.php
+++ b/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/ImportExportTest.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\CatalogRule\Test\Unit\Plugin\Indexer;
 
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
@@ -13,36 +11,51 @@ use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 class ImportExportTest extends \PHPUnit_Framework_TestCase
 {
     /**
+     * Indexer processor mock
+     *
      * @var \Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $ruleProductProcessor;
 
     /**
+     * Import model mock
+     *
      * @var \Magento\ImportExport\Model\Import|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $subject;
 
     /**
+     * Tested plugin
+     *
      * @var \Magento\CatalogRule\Plugin\Indexer\ImportExport
      */
     protected $plugin;
 
     protected function setUp()
     {
-        $this->ruleProductProcessor = $this->getMock('Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor',
-            [], [], '', false);
+        $this->ruleProductProcessor = $this->getMock(
+            'Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor',
+            [],
+            [],
+            '',
+            false
+        );
         $this->subject = $this->getMock('Magento\ImportExport\Model\Import', [], [], '', false);
 
-        $this->plugin = (new ObjectManager($this))->getObject('Magento\CatalogRule\Plugin\Indexer\ImportExport', [
-            'ruleProductProcessor' => $this->ruleProductProcessor,
-        ]);
+        $this->plugin = (new ObjectManager($this))->getObject(
+            'Magento\CatalogRule\Plugin\Indexer\ImportExport',
+            [
+                'ruleProductProcessor' => $this->ruleProductProcessor,
+            ]
+        );
     }
 
     public function testAfterImportSource()
     {
         $result = true;
 
-        $this->ruleProductProcessor->expects($this->once())->method('markIndexerAsInvalid');
+        $this->ruleProductProcessor->expects($this->once())
+            ->method('markIndexerAsInvalid');
 
         $this->assertEquals($result, $this->plugin->afterImportSource($this->subject, $result));
     }
diff --git a/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/WebsiteTest.php b/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/WebsiteTest.php
index 2fca372e8e4ac7d196b2ac4bff988dc8c57a41f7..39571d32c38003914838a6d702817d09e44e8e76 100644
--- a/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/WebsiteTest.php
+++ b/app/code/Magento/CatalogRule/Test/Unit/Plugin/Indexer/WebsiteTest.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\CatalogRule\Test\Unit\Plugin\Indexer;
 
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
@@ -13,34 +11,49 @@ use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 class WebsiteTest extends \PHPUnit_Framework_TestCase
 {
     /**
+     * Indexer processor mock
+     *
      * @var \Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $ruleProductProcessor;
 
     /**
+     * Website mock
+     *
      * @var \Magento\Store\Model\Website|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $subject;
 
     /**
+     * Tested plugin
+     *
      * @var \Magento\CatalogRule\Plugin\Indexer\Website
      */
     protected $plugin;
 
     protected function setUp()
     {
-        $this->ruleProductProcessor = $this->getMock('Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor',
-            [], [], '', false);
+        $this->ruleProductProcessor = $this->getMock(
+            'Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor',
+            [],
+            [],
+            '',
+            false
+        );
         $this->subject = $this->getMock('Magento\Store\Model\Website', [], [], '', false);
 
-        $this->plugin = (new ObjectManager($this))->getObject('Magento\CatalogRule\Plugin\Indexer\Website', [
-            'ruleProductProcessor' => $this->ruleProductProcessor,
-        ]);
+        $this->plugin = (new ObjectManager($this))->getObject(
+            'Magento\CatalogRule\Plugin\Indexer\Website',
+            [
+                'ruleProductProcessor' => $this->ruleProductProcessor,
+            ]
+        );
     }
 
     public function testAfterDelete()
     {
-        $this->ruleProductProcessor->expects($this->once())->method('markIndexerAsInvalid');
+        $this->ruleProductProcessor->expects($this->once())
+            ->method('markIndexerAsInvalid');
 
         $this->assertEquals($this->subject, $this->plugin->afterDelete($this->subject, $this->subject));
     }
diff --git a/app/code/Magento/CatalogRule/composer.json b/app/code/Magento/CatalogRule/composer.json
index 3611281f1c69d49dd4efc8f6044045e0f33614c9..539ca4af208560e40d7f890c9550308bde89485e 100644
--- a/app/code/Magento/CatalogRule/composer.json
+++ b/app/code/Magento/CatalogRule/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-rule": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-indexer": "0.74.0-beta13",
-        "magento/module-import-export": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-rule": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-indexer": "0.74.0-beta14",
+        "magento/module-import-export": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/CatalogSearch/composer.json b/app/code/Magento/CatalogSearch/composer.json
index 307467c3c6217b54f23acdee9766524ef5817723..1d8292288c1c06458eea32cb0b3985d82f3147a4 100644
--- a/app/code/Magento/CatalogSearch/composer.json
+++ b/app/code/Magento/CatalogSearch/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-search": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-indexer": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-search": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-indexer": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/CatalogUrlRewrite/composer.json b/app/code/Magento/CatalogUrlRewrite/composer.json
index a4fdb35d55615c085511be97e462cfba358b6794..764fb5ed8db3fc88023dba3f275a543386e34315 100644
--- a/app/code/Magento/CatalogUrlRewrite/composer.json
+++ b/app/code/Magento/CatalogUrlRewrite/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-catalog-import-export": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-import-export": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-url-rewrite": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-catalog-import-export": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-import-export": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-url-rewrite": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/CatalogWidget/composer.json b/app/code/Magento/CatalogWidget/composer.json
index 633cc2a7cc48e4ab5bcf48ef3a976ae1bbb6302f..a1708c5aa5d6b1c14848114666f7bb6e520eaa00 100644
--- a/app/code/Magento/CatalogWidget/composer.json
+++ b/app/code/Magento/CatalogWidget/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-widget": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-rule": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-wishlist": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-widget": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-rule": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-wishlist": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Checkout/Block/Cart/Item/Renderer.php b/app/code/Magento/Checkout/Block/Cart/Item/Renderer.php
index 7394a876366be2966e0ab7a98ca08b7fb0c20af2..0775d1866a45a30aeed2b94c0899757e2481bd06 100644
--- a/app/code/Magento/Checkout/Block/Cart/Item/Renderer.php
+++ b/app/code/Magento/Checkout/Block/Cart/Item/Renderer.php
@@ -8,7 +8,9 @@
 
 namespace Magento\Checkout\Block\Cart\Item;
 
+use Magento\Checkout\Block\Cart\Item\Renderer\Actions;
 use Magento\Framework\Pricing\PriceCurrencyInterface;
+use Magento\Framework\View\Element\AbstractBlock;
 use Magento\Quote\Model\Quote\Item;
 use Magento\Catalog\Pricing\Price\ConfiguredPriceInterface;
 
@@ -120,10 +122,10 @@ class Renderer extends \Magento\Framework\View\Element\Template implements \Mage
     /**
      * Set item for render
      *
-     * @param \Magento\Quote\Model\Quote\Item\AbstractItem $item
+     * @param Item $item
      * @return $this
      */
-    public function setItem(\Magento\Quote\Model\Quote\Item\AbstractItem $item)
+    public function setItem(Item $item)
     {
         $this->_item = $item;
         return $this;
@@ -316,19 +318,6 @@ class Renderer extends \Magento\Framework\View\Element\Template implements \Mage
         return $this->getProductOptions();
     }
 
-    /**
-     * Get item configure url
-     *
-     * @return string
-     */
-    public function getConfigureUrl()
-    {
-        return $this->getUrl(
-            'checkout/cart/configure',
-            ['id' => $this->getItem()->getId(), 'product_id' => $this->getItem()->getProduct()->getId()]
-        );
-    }
-
     /**
      * Get quote item qty
      *
@@ -432,7 +421,7 @@ class Renderer extends \Magento\Framework\View\Element\Template implements \Mage
     /**
      * Return product additional information block
      *
-     * @return \Magento\Framework\View\Element\AbstractBlock
+     * @return AbstractBlock
      */
     public function getProductAdditionalInformationBlock()
     {
@@ -529,10 +518,10 @@ class Renderer extends \Magento\Framework\View\Element\Template implements \Mage
     /**
      * Return the unit price html
      *
-     * @param \Magento\Quote\Model\Quote\Item\AbstractItem $item
+     * @param Item $item
      * @return string
      */
-    public function getUnitPriceHtml(\Magento\Quote\Model\Quote\Item\AbstractItem  $item)
+    public function getUnitPriceHtml(Item  $item)
     {
         /** @var Renderer $block */
         $block = $this->getLayout()->getBlock('checkout.item.price.unit');
@@ -543,10 +532,10 @@ class Renderer extends \Magento\Framework\View\Element\Template implements \Mage
     /**
      * Return row total html
      *
-     * @param \Magento\Quote\Model\Quote\Item\AbstractItem  $item
+     * @param Item  $item
      * @return string
      */
-    public function getRowTotalHtml(\Magento\Quote\Model\Quote\Item\AbstractItem  $item)
+    public function getRowTotalHtml(Item  $item)
     {
         /** @var Renderer $block */
         $block = $this->getLayout()->getBlock('checkout.item.price.row');
@@ -557,10 +546,10 @@ class Renderer extends \Magento\Framework\View\Element\Template implements \Mage
     /**
      * Return item price html for sidebar
      *
-     * @param \Magento\Quote\Model\Quote\Item\AbstractItem  $item
+     * @param Item  $item
      * @return string
      */
-    public function getSidebarItemPriceHtml(\Magento\Quote\Model\Quote\Item\AbstractItem  $item)
+    public function getSidebarItemPriceHtml(Item  $item)
     {
         /** @var Renderer $block */
         $block = $this->getLayout()->getBlock('checkout.cart.item.price.sidebar');
@@ -571,10 +560,10 @@ class Renderer extends \Magento\Framework\View\Element\Template implements \Mage
     /**
      * Get unit price excluding tax html
      *
-     * @param Item\AbstractItem $item
+     * @param Item $item
      * @return string
      */
-    public function getUnitPriceExclTaxHtml(\Magento\Quote\Model\Quote\Item\AbstractItem  $item)
+    public function getUnitPriceExclTaxHtml(Item  $item)
     {
         /** @var Renderer $block */
         $block = $this->getLayout()->getBlock('checkout.onepage.review.item.price.unit.excl');
@@ -585,10 +574,10 @@ class Renderer extends \Magento\Framework\View\Element\Template implements \Mage
     /**
      * Get unit price including tax html
      *
-     * @param Item\AbstractItem $item
+     * @param Item $item
      * @return string
      */
-    public function getUnitPriceInclTaxHtml(\Magento\Quote\Model\Quote\Item\AbstractItem  $item)
+    public function getUnitPriceInclTaxHtml(Item  $item)
     {
         /** @var Renderer $block */
         $block = $this->getLayout()->getBlock('checkout.onepage.review.item.price.unit.incl');
@@ -599,10 +588,10 @@ class Renderer extends \Magento\Framework\View\Element\Template implements \Mage
     /**
      * Get row total excluding tax html
      *
-     * @param Item\AbstractItem $item
+     * @param Item $item
      * @return string
      */
-    public function getRowTotalExclTaxHtml(\Magento\Quote\Model\Quote\Item\AbstractItem  $item)
+    public function getRowTotalExclTaxHtml(Item  $item)
     {
         /** @var Renderer $block */
         $block = $this->getLayout()->getBlock('checkout.onepage.review.item.price.rowtotal.excl');
@@ -613,14 +602,32 @@ class Renderer extends \Magento\Framework\View\Element\Template implements \Mage
     /**
      * Get row total including tax html
      *
-     * @param Item\AbstractItem $item
+     * @param Item $item
      * @return string
      */
-    public function getRowTotalInclTaxHtml(\Magento\Quote\Model\Quote\Item\AbstractItem  $item)
+    public function getRowTotalInclTaxHtml(Item  $item)
     {
         /** @var Renderer $block */
         $block = $this->getLayout()->getBlock('checkout.onepage.review.item.price.rowtotal.incl');
         $block->setItem($item);
         return $block->toHtml();
     }
+
+    /**
+     * Get row total including tax html
+     *
+     * @param Item $item
+     * @return string
+     */
+    public function getActions(Item $item)
+    {
+        /** @var Actions $block */
+        $block = $this->getChildBlock('actions');
+        if ($block instanceof Actions) {
+            $block->setItem($item);
+            return $block->toHtml();
+        } else {
+            return '';
+        }
+    }
 }
diff --git a/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions.php b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions.php
new file mode 100644
index 0000000000000000000000000000000000000000..e3d27d82677a2e7a925f5211b2563462cf69f5a4
--- /dev/null
+++ b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Checkout\Block\Cart\Item\Renderer;
+
+use Magento\Checkout\Block\Cart\Item\Renderer\Actions\Generic;
+use Magento\Framework\View\Element\Text;
+use Magento\Quote\Model\Quote\Item;
+
+class Actions extends Text
+{
+    /**
+     * @var Item
+     */
+    protected $item;
+
+    /**
+     * Returns current quote item
+     *
+     * @return Item
+     */
+    public function getItem()
+    {
+        return $this->item;
+    }
+
+    /**
+     * Set current quote item
+     *
+     * @param Item $item
+     * @return $this
+     */
+    public function setItem(Item $item)
+    {
+        $this->item = $item;
+        return $this;
+    }
+
+    /**
+     * Render html output
+     *
+     * @return string
+     */
+    protected function _toHtml()
+    {
+        $this->setText('');
+
+        $layout = $this->getLayout();
+        foreach ($this->getChildNames() as $child) {
+            /** @var Generic $childBlock */
+            $childBlock = $layout->getBlock($child);
+            if ($childBlock instanceof Generic) {
+                $childBlock->setItem($this->getItem());
+                $this->addText($layout->renderElement($child, false));
+            }
+        }
+
+        return parent::_toHtml();
+    }
+}
diff --git a/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Edit.php b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Edit.php
new file mode 100644
index 0000000000000000000000000000000000000000..39cd103a9ee82c191dfb93b696a8df07251925f3
--- /dev/null
+++ b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Edit.php
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Checkout\Block\Cart\Item\Renderer\Actions;
+
+class Edit extends Generic
+{
+    /**
+     * Get item configure url
+     *
+     * @return string
+     */
+    public function getConfigureUrl()
+    {
+        return $this->getUrl(
+            'checkout/cart/configure',
+            [
+                'id' => $this->getItem()->getId(),
+                'product_id' => $this->getItem()->getProduct()->getId()
+            ]
+        );
+    }
+}
diff --git a/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Generic.php b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Generic.php
new file mode 100644
index 0000000000000000000000000000000000000000..6ce4f2eb87a700f63b29e6b21c228559a3a782b2
--- /dev/null
+++ b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Generic.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Checkout\Block\Cart\Item\Renderer\Actions;
+
+use Magento\Framework\View\Element\Template;
+use Magento\Quote\Model\Quote\Item;
+
+class Generic extends Template
+{
+    /**
+     * @var Item
+     */
+    protected $item;
+
+    /**
+     * Returns current quote item
+     *
+     * @return Item
+     */
+    public function getItem()
+    {
+        return $this->item;
+    }
+
+    /**
+     * Set current quote item
+     *
+     * @param Item $item
+     * @return $this
+     */
+    public function setItem(Item $item)
+    {
+        $this->item = $item;
+        return $this;
+    }
+
+    /**
+     * Check if product is visible in site visibility
+     *
+     * @return bool
+     */
+    public function isProductVisibleInSiteVisibility()
+    {
+        return $this->getItem()->getProduct()->isVisibleInSiteVisibility();
+    }
+
+    /**
+     * Check if cart item is virtual
+     *
+     * @return bool
+     */
+    public function isVirtual()
+    {
+        return (bool)$this->getItem()->getIsVirtual();
+    }
+}
diff --git a/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Remove.php b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Remove.php
new file mode 100644
index 0000000000000000000000000000000000000000..066afb6a0822335c35069b35d227fa36ae86f19b
--- /dev/null
+++ b/app/code/Magento/Checkout/Block/Cart/Item/Renderer/Actions/Remove.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Checkout\Block\Cart\Item\Renderer\Actions;
+
+use Magento\Checkout\Helper\Cart;
+use Magento\Framework\View\Element\Template;
+
+class Remove extends Generic
+{
+    /**
+     * @var Cart
+     */
+    protected $cartHelper;
+
+    /**
+     * @param Template\Context $context
+     * @param Cart $cartHelper
+     * @param array $data
+     */
+    public function __construct(
+        Template\Context $context,
+        Cart $cartHelper,
+        array $data = []
+    ) {
+        $this->cartHelper = $cartHelper;
+        parent::__construct($context, $data);
+    }
+
+    /**
+     * Get delete item POST JSON
+     *
+     * @return string
+     */
+    public function getDeletePostJson()
+    {
+        return $this->cartHelper->getDeletePostJson($this->getItem());
+    }
+}
diff --git a/app/code/Magento/Checkout/Block/Cart/Shipping.php b/app/code/Magento/Checkout/Block/Cart/Shipping.php
index 8cf93dd33eaa66b2e65598029299152b508dc991..fd79502fbcb0d30195e19be88f619b2f7491c56c 100644
--- a/app/code/Magento/Checkout/Block/Cart/Shipping.php
+++ b/app/code/Magento/Checkout/Block/Cart/Shipping.php
@@ -5,8 +5,16 @@
  */
 namespace Magento\Checkout\Block\Cart;
 
+use Magento\Customer\Api\AddressRepositoryInterface;
+use Magento\Customer\Api\CustomerRepositoryInterface;
 use Magento\Framework\Pricing\PriceCurrencyInterface;
+use Magento\Quote\Api\Data\EstimateAddressInterfaceFactory;
+use Magento\Quote\Api\ShippingMethodManagementInterface;
+use Magento\Quote\Model\QuoteRepository;
 
+/**
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
 class Shipping extends \Magento\Checkout\Block\Cart\AbstractCart
 {
     /**
@@ -43,6 +51,31 @@ class Shipping extends \Magento\Checkout\Block\Cart\AbstractCart
      */
     protected $priceCurrency;
 
+    /**
+     * @var EstimateAddressInterfaceFactory
+     */
+    protected $estimatedAddressFactory;
+
+    /**
+     * @var ShippingMethodManagementInterface
+     */
+    protected $shippingMethodManager;
+
+    /**
+     * @var AddressRepositoryInterface
+     */
+    protected $addressRepository;
+
+    /**
+     * @var CustomerRepositoryInterface
+     */
+    protected $customerRepository;
+
+    /**
+     * @var QuoteRepository
+     */
+    protected $quoteRepository;
+
     /**
      * @param \Magento\Framework\View\Element\Template\Context $context
      * @param \Magento\Customer\Model\Session $customerSession
@@ -50,7 +83,13 @@ class Shipping extends \Magento\Checkout\Block\Cart\AbstractCart
      * @param \Magento\Directory\Block\Data $directoryBlock
      * @param \Magento\Shipping\Model\CarrierFactoryInterface $carrierFactory
      * @param PriceCurrencyInterface $priceCurrency
+     * @param EstimateAddressInterfaceFactory $estimatedAddressFactory
+     * @param ShippingMethodManagementInterface $shippingMethodManager
+     * @param AddressRepositoryInterface $addressRepository
+     * @param CustomerRepositoryInterface $customerRepository
+     * @param QuoteRepository $quoteRepository
      * @param array $data
+     * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
         \Magento\Framework\View\Element\Template\Context $context,
@@ -59,11 +98,21 @@ class Shipping extends \Magento\Checkout\Block\Cart\AbstractCart
         \Magento\Directory\Block\Data $directoryBlock,
         \Magento\Shipping\Model\CarrierFactoryInterface $carrierFactory,
         PriceCurrencyInterface $priceCurrency,
+        EstimateAddressInterfaceFactory $estimatedAddressFactory,
+        ShippingMethodManagementInterface $shippingMethodManager,
+        AddressRepositoryInterface $addressRepository,
+        CustomerRepositoryInterface $customerRepository,
+        QuoteRepository $quoteRepository,
         array $data = []
     ) {
         $this->priceCurrency = $priceCurrency;
         $this->_directoryBlock = $directoryBlock;
         $this->_carrierFactory = $carrierFactory;
+        $this->estimatedAddressFactory = $estimatedAddressFactory;
+        $this->shippingMethodManager = $shippingMethodManager;
+        $this->addressRepository = $addressRepository;
+        $this->customerRepository = $customerRepository;
+        $this->quoteRepository = $quoteRepository;
         parent::__construct($context, $customerSession, $checkoutSession, $data);
         $this->_isScopePrivate = true;
     }
@@ -309,4 +358,39 @@ class Shipping extends \Magento\Checkout\Block\Cart\AbstractCart
         $block->setShippingRate($shippingRate);
         return $block->toHtml();
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected function _beforeToHtml()
+    {
+        if ($this->_customerSession->isLoggedIn()) {
+            $customer = $this->customerRepository->getById($this->_customerSession->getCustomerId());
+            if ($defaultShipping = $customer->getDefaultShipping()) {
+                $address = $this->addressRepository->getById($defaultShipping);
+                if ($address) {
+                    /** @var \Magento\Quote\Api\Data\EstimateAddressInterface $estimatedAddress */
+                    $estimatedAddress = $this->estimatedAddressFactory->create();
+                    $estimatedAddress->setCountryId($address->getCountryId());
+                    $estimatedAddress->setPostcode($address->getPostcode());
+                    $estimatedAddress->setRegion((string)$address->getRegion()->getRegion());
+                    $estimatedAddress->setRegionId($address->getRegionId());
+                    $this->shippingMethodManager->estimateByAddress($this->getQuote()->getId(), $estimatedAddress);
+                    $this->quoteRepository->save($this->getQuote());
+                }
+            }
+        }
+        return parent::_beforeToHtml();
+    }
+
+    /**
+     * Check if multiple countries for shipping is allowed
+     *
+     * @return bool
+     */
+    public function isMultipleCountriesAllowed()
+    {
+        $collection = $this->_directoryBlock->getCountryCollection();
+        return $collection->count() > 1 ? true : false;
+    }
 }
diff --git a/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/Renderer/Actions/EditTest.php b/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/Renderer/Actions/EditTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..122e8c85909b95a459b6578567d17922681fa113
--- /dev/null
+++ b/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/Renderer/Actions/EditTest.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Checkout\Test\Unit\Block\Cart\Item\Renderer\Actions;
+
+use Magento\Catalog\Model\Product;
+use Magento\Checkout\Block\Cart\Item\Renderer\Actions\Edit;
+use Magento\Quote\Model\Quote\Item;
+
+class EditTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var Edit
+     */
+    protected $model;
+
+    /** @var \Magento\Framework\UrlInterface|\PHPUnit_Framework_MockObject_MockObject */
+    protected $urlBuilderMock;
+
+    protected function setUp()
+    {
+        $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+
+        $this->urlBuilderMock = $this->getMockBuilder('Magento\Framework\UrlInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->model = $objectManagerHelper->getObject(
+            'Magento\Checkout\Block\Cart\Item\Renderer\Actions\Edit',
+            [
+                'urlBuilder' => $this->urlBuilderMock,
+            ]
+        );
+    }
+
+    public function testGetConfigureUrl()
+    {
+        $itemId = 45;
+        $productId = 12;
+        $configureUrl = 'configure url';
+
+        /**
+         * @var Item|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $itemMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        /**
+         * @var Product|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $productMock = $this->getMockBuilder('Magento\Catalog\Model\Product')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $itemMock->expects($this->once())
+            ->method('getProduct')
+            ->willReturn($productMock);
+        $itemMock->expects($this->once())
+            ->method('getId')
+            ->willReturn($itemId);
+
+        $productMock->expects($this->once())
+            ->method('getId')
+            ->willReturn($productId);
+
+        $this->urlBuilderMock->expects($this->once())
+            ->method('getUrl')
+            ->with('checkout/cart/configure', ['id' => $itemId, 'product_id' => $productId])
+            ->willReturn($configureUrl);
+
+        $this->model->setItem($itemMock);
+        $this->assertEquals($configureUrl, $this->model->getConfigureUrl());
+    }
+}
diff --git a/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/Renderer/Actions/GenericTest.php b/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/Renderer/Actions/GenericTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..d6c6f0824c67b3b50c1fd7aaa88e2c224e3f61c5
--- /dev/null
+++ b/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/Renderer/Actions/GenericTest.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Checkout\Test\Unit\Block\Cart\Item\Renderer\Actions;
+
+use Magento\Catalog\Model\Product;
+use Magento\Checkout\Block\Cart\Item\Renderer\Actions\Generic;
+use Magento\Quote\Model\Quote\Item;
+
+class GenericTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var Generic
+     */
+    protected $model;
+
+    protected function setUp()
+    {
+        $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+
+        $this->model = $objectManagerHelper->getObject(
+            'Magento\Checkout\Block\Cart\Item\Renderer\Actions\Generic',
+            []
+        );
+    }
+
+    public function testGetItem()
+    {
+        /**
+         * @var Item|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $itemMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->assertEquals($this->model, $this->model->setItem($itemMock));
+        $this->assertEquals($itemMock, $this->model->getItem());
+    }
+
+    public function testIsProductVisibleInSiteVisibility()
+    {
+        /**
+         * @var Item|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $itemMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        /**
+         * @var Product|\PHPUnit_Framework_MockObject_MockObject $productMock
+         */
+        $productMock = $this->getMockBuilder('Magento\Catalog\Model\Product')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $itemMock->expects($this->once())
+            ->method('getProduct')
+            ->willReturn($productMock);
+
+        $productMock->expects($this->once())
+            ->method('isVisibleInSiteVisibility')
+            ->willReturn(true);
+
+        $this->assertEquals($this->model, $this->model->setItem($itemMock));
+        $this->assertTrue($this->model->isProductVisibleInSiteVisibility());
+    }
+
+    public function testIsVirtual()
+    {
+        /**
+         * @var Item|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $itemMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->setMethods(['getIsVirtual'])
+            ->getMock();
+
+        $itemMock->expects($this->once())
+            ->method('getIsVirtual')
+            ->willReturn(true);
+
+        $this->assertEquals($this->model, $this->model->setItem($itemMock));
+        $this->assertTrue($this->model->isVirtual());
+    }
+}
diff --git a/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/Renderer/Actions/RemoveTest.php b/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/Renderer/Actions/RemoveTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..d2ebb0637ea9df67ed0d6846f48694b8b1ac9faf
--- /dev/null
+++ b/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/Renderer/Actions/RemoveTest.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Checkout\Test\Unit\Block\Cart\Item\Renderer\Actions;
+
+use Magento\Checkout\Block\Cart\Item\Renderer\Actions\Remove;
+use Magento\Checkout\Helper\Cart;
+use Magento\Quote\Model\Quote\Item;
+
+class RemoveTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var Remove
+     */
+    protected $model;
+
+    /** @var Cart|\PHPUnit_Framework_MockObject_MockObject */
+    protected $cartHelperMock;
+
+    protected function setUp()
+    {
+        $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+
+        $this->cartHelperMock = $this->getMockBuilder('Magento\Checkout\Helper\Cart')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->model = $objectManagerHelper->getObject(
+            'Magento\Checkout\Block\Cart\Item\Renderer\Actions\Remove',
+            [
+                'cartHelper' => $this->cartHelperMock,
+            ]
+        );
+    }
+
+    public function testGetConfigureUrl()
+    {
+        $json = '{json;}';
+
+        /**
+         * @var Item|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $itemMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->cartHelperMock->expects($this->once())
+            ->method('getDeletePostJson')
+            ->with($itemMock)
+            ->willReturn($json);
+
+        $this->model->setItem($itemMock);
+        $this->assertEquals($json, $this->model->getDeletePostJson());
+    }
+}
diff --git a/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/Renderer/ActionsTest.php b/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/Renderer/ActionsTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..514648f0a8c6037acac41ffcd9b0519449fe376f
--- /dev/null
+++ b/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/Renderer/ActionsTest.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Checkout\Test\Unit\Block\Cart\Item\Renderer;
+
+use Magento\Checkout\Block\Cart\Item\Renderer\Actions;
+use Magento\Checkout\Block\Cart\Item\Renderer\Actions\Generic;
+use Magento\Quote\Model\Quote\Item;
+
+class ActionsTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var Actions
+     */
+    protected $model;
+
+    /**
+     * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scopeConfigMock;
+
+    /**
+     * @var \Magento\Framework\View\LayoutInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $layoutMock;
+
+    protected function setUp()
+    {
+        $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+
+        $this->scopeConfigMock = $this->getMockBuilder('Magento\Framework\App\Config\ScopeConfigInterface')
+            ->getMockForAbstractClass();
+
+        $this->layoutMock = $this->getMockBuilder('Magento\Framework\View\LayoutInterface')
+            ->getMockForAbstractClass();
+
+        $this->model = $objectManagerHelper->getObject(
+            'Magento\Checkout\Block\Cart\Item\Renderer\Actions',
+            [
+                'scopeConfig' => $this->scopeConfigMock,
+                'layout' => $this->layoutMock,
+            ]
+        );
+    }
+
+    public function testGetItem()
+    {
+        /**
+         * @var Item|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $itemMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->assertEquals($this->model, $this->model->setItem($itemMock));
+        $this->assertEquals($itemMock, $this->model->getItem());
+    }
+
+    public function testToHtml()
+    {
+        $childNameOne = 'child.1';
+        $childNameTextOne = 'child.1 text';
+        $childNameTwo = 'child.2';
+        $childNames = [$childNameOne, $childNameTwo];
+
+        $this->scopeConfigMock->expects($this->once())
+            ->method('getValue')
+            ->willReturn(false);
+
+        /**
+         * @var Item|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $itemMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->model->setItem($itemMock);
+
+        $this->layoutMock->expects($this->once())
+            ->method('getChildNames')
+            ->with($this->model->getNameInLayout())
+            ->willReturn($childNames);
+
+        /** @var Generic|\PHPUnit_Framework_MockObject_MockObject $childMockOne */
+        $childMockOne = $this->getMockBuilder('Magento\Checkout\Block\Cart\Item\Renderer\Actions\Generic')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $childMockOne->expects($this->once())
+            ->method('setItem')
+            ->with($itemMock);
+
+        $childMockTwo = false;
+
+        $this->layoutMock->expects($this->once())
+            ->method('renderElement')
+            ->with($childNameOne, false)
+            ->willReturn($childNameTextOne);
+        $this->layoutMock->expects($this->exactly(2))
+            ->method('getBlock')
+            ->willReturnMap(
+                [
+                    [$childNameOne, $childMockOne],
+                    [$childNameTwo, $childMockTwo],
+                ]
+            );
+
+        $this->assertEquals($childNameTextOne, $this->model->toHtml());
+    }
+}
diff --git a/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/RendererTest.php b/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/RendererTest.php
index 575eebc4188964d8eb8365f41068006d263e5e6f..0796e0f6363fc2448164178f869b27cb7bc2f6c9 100644
--- a/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/RendererTest.php
+++ b/app/code/Magento/Checkout/Test/Unit/Block/Cart/Item/RendererTest.php
@@ -5,7 +5,8 @@
  */
 namespace Magento\Checkout\Test\Unit\Block\Cart\Item;
 
-use \Magento\Checkout\Block\Cart\Item\Renderer;
+use Magento\Checkout\Block\Cart\Item\Renderer;
+use Magento\Quote\Model\Quote\Item;
 
 class RendererTest extends \PHPUnit_Framework_TestCase
 {
@@ -42,7 +43,7 @@ class RendererTest extends \PHPUnit_Framework_TestCase
             'Magento\Checkout\Block\Cart\Item\Renderer',
             [
                 'imageHelper' => $this->_imageHelper,
-                'context' => $context
+                'context' => $context,
             ]
         );
     }
@@ -89,7 +90,7 @@ class RendererTest extends \PHPUnit_Framework_TestCase
         );
         $product->expects($this->any())->method('getName')->will($this->returnValue('Parent Product'));
 
-        /** @var \Magento\Quote\Model\Quote\Item|\PHPUnit_Framework_MockObject_MockObject $item */
+        /** @var Item|\PHPUnit_Framework_MockObject_MockObject $item */
         $item = $this->getMock('Magento\Quote\Model\Quote\Item', [], [], '', false);
         $item->expects($this->any())->method('getProduct')->will($this->returnValue($product));
 
@@ -147,4 +148,59 @@ class RendererTest extends \PHPUnit_Framework_TestCase
 
         $this->assertEquals($priceHtml, $this->_renderer->getProductPriceHtml($product));
     }
+
+    public function testGetActions()
+    {
+        $blockNameInLayout = 'block.name';
+        $blockHtml = 'block html';
+
+        /**
+         * @var \Magento\Checkout\Block\Cart\Item\Renderer\Actions|\PHPUnit_Framework_MockObject_MockObject $blockMock
+         */
+        $blockMock = $this->getMockBuilder('Magento\Checkout\Block\Cart\Item\Renderer\Actions')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->layout->expects($this->once())
+            ->method('getChildName')
+            ->with($this->_renderer->getNameInLayout(), 'actions')
+            ->willReturn($blockNameInLayout);
+        $this->layout->expects($this->once())
+            ->method('getBlock')
+            ->with($blockNameInLayout)
+            ->willReturn($blockMock);
+
+        /**
+         * @var Item|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $itemMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $blockMock->expects($this->once())
+            ->method('setItem')
+            ->with($itemMock);
+        $blockMock->expects($this->once())
+            ->method('toHtml')
+            ->willReturn($blockHtml);
+
+        $this->assertEquals($blockHtml, $this->_renderer->getActions($itemMock));
+    }
+
+    public function testGetActionsWithNoBlock()
+    {
+        $this->layout->expects($this->once())
+            ->method('getChildName')
+            ->with($this->_renderer->getNameInLayout(), 'actions')
+            ->willReturn(false);
+
+        /**
+         * @var Item|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $itemMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->assertEquals('', $this->_renderer->getActions($itemMock));
+    }
 }
diff --git a/app/code/Magento/Checkout/Test/Unit/Block/Cart/ShippingTest.php b/app/code/Magento/Checkout/Test/Unit/Block/Cart/ShippingTest.php
index fcb3e58c804dc897df014041384246218b4c2703..13fbfbc990be11852eef14ff41ee0bcbcc708484 100644
--- a/app/code/Magento/Checkout/Test/Unit/Block/Cart/ShippingTest.php
+++ b/app/code/Magento/Checkout/Test/Unit/Block/Cart/ShippingTest.php
@@ -5,16 +5,217 @@
  */
 namespace Magento\Checkout\Test\Unit\Block\Cart;
 
+use Magento\Checkout\Block\Cart\Shipping;
+use Magento\Checkout\Model\Session as CheckoutSession;
+use Magento\Customer\Api\AddressRepositoryInterface;
+use Magento\Customer\Api\CustomerRepositoryInterface;
+use Magento\Customer\Api\Data\AddressInterface;
+use Magento\Customer\Model\Session as CustomerSession;
+use Magento\Directory\Block\Data as DirectoryData;
+use Magento\Framework\App\Config\ScopeConfigInterface;
+use Magento\Framework\Event\ManagerInterface as EventManager;
+use Magento\Framework\Pricing\PriceCurrencyInterface;
+use Magento\Framework\View\Element\Template\Context;
+use Magento\Framework\View\Layout;
+use Magento\Quote\Api\Data\EstimateAddressInterface;
+use Magento\Quote\Api\Data\EstimateAddressInterfaceFactory;
+use Magento\Quote\Api\ShippingMethodManagementInterface;
+use Magento\Quote\Model\Quote;
+use Magento\Quote\Model\QuoteRepository;
+use Magento\Shipping\Model\CarrierFactoryInterface;
+use Magento\Store\Model\ScopeInterface;
+
+/**
+ * @SuppressWarnings(PHPMD.TooManyFields)
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
 class ShippingTest extends \PHPUnit_Framework_TestCase
 {
-    /** @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager  */
-    protected $objectManager;
+    /** @var  Shipping */
+    protected $model;
+
+    /** @var  Context |\PHPUnit_Framework_MockObject_MockObject */
+    protected $context;
+
+    /** @var  CustomerSession |\PHPUnit_Framework_MockObject_MockObject */
+    protected $customerSession;
+
+    /** @var  CheckoutSession |\PHPUnit_Framework_MockObject_MockObject */
+    protected $checkoutSession;
+
+    /** @var  DirectoryData |\PHPUnit_Framework_MockObject_MockObject */
+    protected $directoryData;
+
+    /** @var  CarrierFactoryInterface |\PHPUnit_Framework_MockObject_MockObject */
+    protected $carrierFactory;
+
+    /** @var  PriceCurrencyInterface |\PHPUnit_Framework_MockObject_MockObject */
+    protected $priceCurrency;
+
+    /** @var  EstimateAddressInterfaceFactory |\PHPUnit_Framework_MockObject_MockObject */
+    protected $estimatedAddressFactory;
+
+    /** @var  ShippingMethodManagementInterface |\PHPUnit_Framework_MockObject_MockObject */
+    protected $shippingMethodManager;
+
+    /** @var  AddressRepositoryInterface |\PHPUnit_Framework_MockObject_MockObject */
+    protected $addressReporitory;
+
+    /** @var  CustomerRepositoryInterface |\PHPUnit_Framework_MockObject_MockObject */
+    protected $customerRepository;
+
+    /** @var  QuoteRepository |\PHPUnit_Framework_MockObject_MockObject */
+    protected $quoteRepository;
 
-    protected $shippingBlock;
+    /** @var  Layout |\PHPUnit_Framework_MockObject_MockObject */
+    protected $layout;
+
+    /** @var  EventManager |\PHPUnit_Framework_MockObject_MockObject */
+    protected $eventManager;
+
+    /** @var  ScopeConfigInterface |\PHPUnit_Framework_MockObject_MockObject */
+    protected $scopeConfig;
+
+    /** @var  EstimateAddressInterface |\PHPUnit_Framework_MockObject_MockObject */
+    protected $estimatedAddress;
+
+    /** @var  AddressInterface |\PHPUnit_Framework_MockObject_MockObject */
+    protected $address;
+
+    /** @var  Quote |\PHPUnit_Framework_MockObject_MockObject */
+    protected $quote;
 
     protected function setUp()
     {
-        $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+        $this->prepareContext();
+
+        $this->customerSession = $this->getMockBuilder('Magento\Customer\Model\Session')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->checkoutSession = $this->getMockBuilder('Magento\Checkout\Model\Session')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->directoryData = $this->getMockBuilder('Magento\Directory\Block\Data')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->carrierFactory = $this->getMockBuilder('Magento\Shipping\Model\CarrierFactoryInterface')
+            ->getMockForAbstractClass();
+
+        $this->priceCurrency = $this->getMockBuilder('Magento\Framework\Pricing\PriceCurrencyInterface')
+            ->getMockForAbstractClass();
+
+        $this->prepareEstimatedAddress();
+
+        $this->shippingMethodManager = $this->getMockBuilder('Magento\Quote\Api\ShippingMethodManagementInterface')
+            ->getMockForAbstractClass();
+
+        $this->prepareAddressRepository();
+
+        $this->customerRepository = $this->getMockBuilder('Magento\Customer\Api\CustomerRepositoryInterface')
+            ->getMockForAbstractClass();
+
+        $this->prepareQuoteRepository();
+
+        $this->model = new Shipping(
+            $this->context,
+            $this->customerSession,
+            $this->checkoutSession,
+            $this->directoryData,
+            $this->carrierFactory,
+            $this->priceCurrency,
+            $this->estimatedAddressFactory,
+            $this->shippingMethodManager,
+            $this->addressReporitory,
+            $this->customerRepository,
+            $this->quoteRepository
+        );
+    }
+
+    protected function prepareContext()
+    {
+        $this->layout = $this->getMockBuilder('Magento\Framework\View\Layout')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->eventManager = $this->getMockBuilder('Magento\Framework\Event\ManagerInterface')
+            ->setMethods([
+                'dispatch',
+            ])
+            ->getMockForAbstractClass();
+
+        $this->scopeConfig = $this->getMockBuilder('Magento\Framework\App\Config\ScopeConfigInterface')
+            ->setMethods([
+                'getValue',
+            ])
+            ->getMockForAbstractClass();
+
+        $this->context = $this->getMockBuilder('Magento\Framework\View\Element\Template\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->context->expects($this->once())
+            ->method('getLayout')
+            ->will($this->returnValue($this->layout));
+
+        $this->context->expects($this->once())
+            ->method('getEventManager')
+            ->will($this->returnValue($this->eventManager));
+
+        $this->context->expects($this->once())
+            ->method('getScopeConfig')
+            ->will($this->returnValue($this->scopeConfig));
+    }
+
+    protected function prepareEstimatedAddress()
+    {
+        $this->estimatedAddress = $this->getMockBuilder('Magento\Quote\Api\Data\EstimateAddressInterface')
+            ->setMethods([
+                'setCountryId',
+                'setPostcode',
+                'setRegion',
+                'setRegionId',
+            ])
+            ->getMockForAbstractClass();
+
+        $this->estimatedAddressFactory = $this->getMockBuilder('Magento\Quote\Api\Data\EstimateAddressInterfaceFactory')
+            ->disableOriginalConstructor()
+            ->setMethods([
+                'create',
+            ])
+            ->getMock();
+
+        $this->estimatedAddressFactory->expects($this->any())
+            ->method('create')
+            ->willReturn($this->estimatedAddress);
+    }
+
+    protected function prepareAddressRepository()
+    {
+        $this->address = $this->getMockBuilder('Magento\Customer\Api\Data\AddressInterface')
+            ->setMethods([
+                'getCountryId',
+                'getPostcode',
+                'getRegion',
+                'getRegionId',
+            ])
+            ->getMockForAbstractClass();
+
+        $this->addressReporitory = $this->getMockBuilder('Magento\Customer\Api\AddressRepositoryInterface')
+            ->getMockForAbstractClass();
+    }
+
+    protected function prepareQuoteRepository()
+    {
+        $this->quoteRepository = $this->getMockBuilder('Magento\Quote\Model\QuoteRepository')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->quote = $this->getMockBuilder('Magento\Quote\Model\Quote')
+            ->disableOriginalConstructor()
+            ->getMock();
     }
 
     public function testGetShippingPriceHtml()
@@ -38,30 +239,234 @@ class ShippingTest extends \PHPUnit_Framework_TestCase
             ->method('toHtml')
             ->will($this->returnValue($shippingPriceHtml));
 
-        $layoutMock = $this->getMockBuilder('\Magento\Framework\View\Layout')
-            ->disableOriginalConstructor()
-            ->getMock();
-
-        $layoutMock->expects($this->once())
+        $this->layout->expects($this->once())
             ->method('getBlock')
             ->with('checkout.shipping.price')
             ->will($this->returnValue($priceBlockMock));
 
-        $contextMock = $this->getMockBuilder('\Magento\Framework\View\Element\Template\Context')
+        $this->assertEquals($shippingPriceHtml, $this->model->getShippingPriceHtml($shippingRateMock));
+    }
+
+    public function testBeforeToHtmlCustomerNotLoggedIn()
+    {
+        $this->eventManager->expects($this->once())
+            ->method('dispatch')
+            ->with('view_block_abstract_to_html_before', ['block' => $this->model])
+            ->willReturnSelf();
+
+        $this->scopeConfig->expects($this->once())
+            ->method('getValue')
+            ->with('advanced/modules_disable_output/Magento_Checkout', ScopeInterface::SCOPE_STORE)
+            ->willReturn(false);
+
+        $this->customerSession->expects($this->once())
+            ->method('isLoggedIn')
+            ->willReturn(false);
+
+        $this->assertEquals('', $this->model->toHtml());
+    }
+
+    public function testBeforeToHtmlNoDefaultShippingAddress()
+    {
+        $customerId = 1;
+        $defaultShipping = 0;
+
+        $this->eventManager->expects($this->once())
+            ->method('dispatch')
+            ->with('view_block_abstract_to_html_before', ['block' => $this->model])
+            ->willReturnSelf();
+
+        $this->scopeConfig->expects($this->once())
+            ->method('getValue')
+            ->with('advanced/modules_disable_output/Magento_Checkout', ScopeInterface::SCOPE_STORE)
+            ->willReturn(false);
+
+        $this->customerSession->expects($this->once())
+            ->method('isLoggedIn')
+            ->willReturn(true);
+        $this->customerSession->expects($this->once())
+            ->method('getCustomerId')
+            ->willReturn($customerId);
+
+        $customerData = $this->getMockBuilder('Magento\Customer\Api\Data\CustomerInterface')
+            ->setMethods([
+                'getDefaultShipping',
+            ])
+            ->getMockForAbstractClass();
+        $customerData->expects($this->once())
+            ->method('getDefaultShipping')
+            ->willReturn($defaultShipping);
+
+        $this->customerRepository->expects($this->once())
+            ->method('getById')
+            ->with($customerId)
+            ->willReturn($customerData);
+
+        $this->assertEquals('', $this->model->toHtml());
+    }
+
+    /**
+     * @param int $customerId
+     * @param int $defaultShipping
+     * @param int $countryId
+     * @param string $postcode
+     * @param string $region
+     * @param int $regionId
+     * @param int $quoteId
+     * @dataProvider dataProviderBeforeToHtml
+     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
+     */
+    public function testBeforeToHtml(
+        $customerId,
+        $defaultShipping,
+        $countryId,
+        $postcode,
+        $region,
+        $regionId,
+        $quoteId
+    ) {
+        $this->eventManager->expects($this->once())
+            ->method('dispatch')
+            ->with('view_block_abstract_to_html_before', ['block' => $this->model])
+            ->willReturnSelf();
+
+        $this->scopeConfig->expects($this->once())
+            ->method('getValue')
+            ->with('advanced/modules_disable_output/Magento_Checkout', ScopeInterface::SCOPE_STORE)
+            ->willReturn(false);
+
+        $this->customerSession->expects($this->once())
+            ->method('isLoggedIn')
+            ->willReturn(true);
+        $this->customerSession->expects($this->once())
+            ->method('getCustomerId')
+            ->willReturn($customerId);
+
+        $customerDataMock = $this->getMockBuilder('Magento\Customer\Api\Data\CustomerInterface')
+            ->setMethods([
+                'getDefaultShipping',
+            ])
+            ->getMockForAbstractClass();
+        $customerDataMock->expects($this->once())
+            ->method('getDefaultShipping')
+            ->willReturn($defaultShipping);
+
+        $this->customerRepository->expects($this->once())
+            ->method('getById')
+            ->with($customerId)
+            ->willReturn($customerDataMock);
+
+        $this->addressReporitory->expects($this->once())
+            ->method('getById')
+            ->with($defaultShipping)
+            ->willReturn($this->address);
+
+        $regionMock = $this->getMockBuilder('Magento\Customer\Api\Data\RegionInterface')
+            ->setMethods([
+                'getRegion',
+            ])
+            ->getMockForAbstractClass();
+        $regionMock->expects($this->once())
+            ->method('getRegion')
+            ->willReturn($region);
+
+        $this->address->expects($this->once())
+            ->method('getCountryId')
+            ->willReturn($countryId);
+        $this->address->expects($this->once())
+            ->method('getPostcode')
+            ->willReturn($postcode);
+        $this->address->expects($this->once())
+            ->method('getRegion')
+            ->willReturn($regionMock);
+        $this->address->expects($this->once())
+            ->method('getRegionId')
+            ->willReturn($regionId);
+
+        $this->estimatedAddress->expects($this->once())
+            ->method('setCountryId')
+            ->with($countryId)
+            ->willReturnSelf();
+        $this->estimatedAddress->expects($this->once())
+            ->method('setPostcode')
+            ->with($postcode)
+            ->willReturnSelf();
+        $this->estimatedAddress->expects($this->once())
+            ->method('setRegion')
+            ->with($region)
+            ->willReturnSelf();
+        $this->estimatedAddress->expects($this->once())
+            ->method('setRegionId')
+            ->with($regionId)
+            ->willReturnSelf();
+
+        $this->checkoutSession->expects($this->once())
+            ->method('getQuote')
+            ->willReturn($this->quote);
+
+        $this->quote->expects($this->once())
+            ->method('getId')
+            ->willReturn($quoteId);
+
+        $this->shippingMethodManager->expects($this->once())
+            ->method('estimateByAddress')
+            ->with($quoteId, $this->estimatedAddress)
+            ->willReturnSelf();
+
+        $this->quoteRepository->expects($this->once())
+            ->method('save')
+            ->with($this->quote)
+            ->willReturnSelf();
+
+        $this->assertEquals('', $this->model->toHtml());
+    }
+
+    /**
+     * @return array
+     */
+    public function dataProviderBeforeToHtml()
+    {
+        return [
+            [1, 1, 1, '12345', '', 1, 1],
+            [1, 1, 1, '12345', '', 0, 1],
+            [1, 1, 1, '', '', 0, 1],
+            [1, 1, 1, '12345', 'California', 0, 1],
+            [1, 1, 1, '12345', 'California', 1, 1],
+        ];
+    }
+
+    /**
+     * @param int $count
+     * @param bool $expectedResult
+     * @dataProvider dataProviderIsMultipleCountriesAllowed
+     */
+    public function testIsMultipleCountriesAllowed(
+        $count,
+        $expectedResult
+    ) {
+        $collection = $this->getMockBuilder('Magento\Directory\Model\Resource\Country\Collection')
             ->disableOriginalConstructor()
-            ->setMethods(['getLayout'])
             ->getMock();
+        $collection->expects($this->once())
+            ->method('count')
+            ->willReturn($count);
 
-        $contextMock->expects($this->once())
-            ->method('getLayout')
-            ->will($this->returnValue($layoutMock));
+        $this->directoryData->expects($this->once())
+            ->method('getCountryCollection')
+            ->willReturn($collection);
 
-        /** @var \Magento\Checkout\Block\Cart\Shipping $shippingBlock */
-        $shippingBlock = $this->objectManager->getObject(
-            'Magento\Checkout\Block\Cart\Shipping',
-            ['context' => $contextMock]
-        );
+        $this->assertEquals($expectedResult, $this->model->isMultipleCountriesAllowed());
+    }
 
-        $this->assertEquals($shippingPriceHtml, $shippingBlock->getShippingPriceHtml($shippingRateMock));
+    /**
+     * @return array
+     */
+    public function dataProviderIsMultipleCountriesAllowed()
+    {
+        return [
+            [0, false],
+            [1, false],
+            [2, true],
+        ];
     }
 }
diff --git a/app/code/Magento/Checkout/composer.json b/app/code/Magento/Checkout/composer.json
index db8918bca762e2ed96a00a597bc0291a0138e96e..572909061f99a33ba2f588192618604966ddcdf2 100644
--- a/app/code/Magento/Checkout/composer.json
+++ b/app/code/Magento/Checkout/composer.json
@@ -3,32 +3,31 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-payment": "0.74.0-beta13",
-        "magento/module-shipping": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-gift-message": "0.74.0-beta13",
-        "magento/module-wishlist": "0.74.0-beta13",
-        "magento/module-page-cache": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/module-msrp": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-ui": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-payment": "0.74.0-beta14",
+        "magento/module-shipping": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-gift-message": "0.74.0-beta14",
+        "magento/module-page-cache": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/module-msrp": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-ui": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "suggest": {
-        "magento/module-cookie": "0.74.0-beta13"
+        "magento/module-cookie": "0.74.0-beta14"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_index.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_index.xml
index d0aeb1702d330c44a65833c0bfef597b5e09c6b0..93554677907714333edd3b3251c3f1a418473628 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_index.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_index.xml
@@ -18,6 +18,7 @@
                     <container name="checkout.cart.form.before" as="form_before" label="Shopping Cart Items Before" htmlTag="div" htmlClass="rewards" before="checkout.cart.form"/>
                     <block class="Magento\Checkout\Block\Cart" name="checkout.cart.form" as="cart-items" template="cart/form.phtml">
                         <block class="Magento\Framework\View\Element\RendererList" name="checkout.cart.item.renderers" as="renderer.list"/>
+                        <block class="Magento\Framework\View\Element\Text\ListText" name="checkout.cart.order.actions"/>
                     </block>
                     <container name="checkout.cart.widget" as="checkout_cart_widget" label="Shopping Cart Items After"/>
                     <block class="Magento\Checkout\Block\Cart\Shipping" name="checkout.cart.shipping" as="shipping" template="cart/shipping.phtml"/>
diff --git a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml
index d5462c158bd29ec8124188211368c28bd268c0bf..572820909c24eaf337b6cb1131f1f59199c83972 100644
--- a/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml
+++ b/app/code/Magento/Checkout/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -9,8 +9,18 @@
     <update handle="checkout_item_price_renderers"/>
     <body>
         <referenceBlock name="checkout.cart.item.renderers">
-            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="default" template="cart/item/default.phtml"/>
-            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="simple" template="cart/item/default.phtml"/>
+            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="default" template="cart/item/default.phtml">
+                <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions" name="checkout.cart.item.renderers.default.actions" as="actions">
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Edit" name="checkout.cart.item.renderers.default.actions.edit" template="Magento_Checkout::cart/item/renderer/actions/edit.phtml"/>
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Remove" name="checkout.cart.item.renderers.default.actions.remove" template="Magento_Checkout::cart/item/renderer/actions/remove.phtml"/>
+                </block>
+            </block>
+            <block class="Magento\Checkout\Block\Cart\Item\Renderer" as="simple" template="cart/item/default.phtml">
+                <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions" name="checkout.cart.item.renderers.simple.actions" as="actions">
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Edit" name="checkout.cart.item.renderers.simple.actions.edit" template="Magento_Checkout::cart/item/renderer/actions/edit.phtml"/>
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Remove" name="checkout.cart.item.renderers.simple.actions.remove" template="Magento_Checkout::cart/item/renderer/actions/remove.phtml"/>
+                </block>
+            </block>
         </referenceBlock>
     </body>
 </page>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/form.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/form.phtml
index a78b7d152131dd4a66c17f4d2e66afbcdfc60019..a5f8db141716f4da993703cfb5ba37f30fa96a02 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/cart/form.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/form.phtml
@@ -60,4 +60,6 @@
         <input type="hidden" value="" id="update_cart_action_container" />
     </div>
 </form>
+<?php echo $block->getChildHtml('checkout.cart.order.actions') ?>
 <?php echo $block->getChildHtml('shopping.cart.table.after'); ?>
+
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/item/default.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/item/default.phtml
index a189143ba870fd923daab34f7dad81d062ed393d..e0aa120c9c63ef5b620a66cafa01abbce89a7b68 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/cart/item/default.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/item/default.phtml
@@ -118,35 +118,7 @@ $canApplyMsrp = $helper->isShowBeforeOrderConfirm($product) && $helper->isMinima
     <tr class="item-actions">
         <td colspan="<?php echo $cols;?>">
             <div class="actions-toolbar">
-
-                <?php if ($this->helper('Magento\Wishlist\Helper\Data')->isAllowInCart()) : ?>
-                    <?php if ($isVisibleProduct): ?>
-                        <a href="#"
-                           data-post='<?php echo $this->helper('Magento\Wishlist\Helper\Data')->getMoveFromCartParams($_item->getId()); ?>'
-                           class="use-ajax action towishlist">
-                            <span><?php echo __('Move to Wish List'); ?></span>
-                        </a>
-                    <?php endif ?>
-                <?php endif ?>
-
-                <?php if ($isVisibleProduct): ?>
-                    <a class="action edit"
-                       href="<?php echo $block->getConfigureUrl() ?>"
-                       title="<?php echo $block->escapeHtml(__('Edit item parameters')); ?>">
-                        <span>
-                            <?php echo __('Edit') ?>
-                        </span>
-                   </a>
-                <?php endif ?>
-                
-                <a href="#"
-                   title="<?php echo $block->escapeHtml(__('Remove item')); ?>"
-                   class="action delete"
-                   data-post='<?php echo $this->helper('Magento\Checkout\Helper\Cart')->getDeletePostJson($_item); ?>'>
-                    <span>
-                        <?php echo __('Remove item')?>
-                    </span>
-                </a>
+                <?php echo $block->getActions($_item) ?>
             </div>
         </td>
     </tr>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/item/renderer/actions/edit.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/item/renderer/actions/edit.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..4123e6419a32c1f5b6d0eeb04f3013cc0a63ec39
--- /dev/null
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/item/renderer/actions/edit.phtml
@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+// @codingStandardsIgnoreFile
+
+/** @var $block \Magento\Checkout\Block\Cart\Item\Renderer\Actions\Edit */
+?>
+<?php if ($block->isProductVisibleInSiteVisibility()): ?>
+    <a class="action action-edit"
+       href="<?php echo $block->getConfigureUrl() ?>"
+       title="<?php echo $block->escapeHtml(__('Edit item parameters')); ?>">
+        <span>
+            <?php echo __('Edit') ?>
+        </span>
+   </a>
+<?php endif ?>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/item/renderer/actions/remove.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/item/renderer/actions/remove.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..bed34897aec6c0f44918036fc3e4624e1dc06626
--- /dev/null
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/item/renderer/actions/remove.phtml
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+// @codingStandardsIgnoreFile
+
+/** @var $block \Magento\Checkout\Block\Cart\Item\Renderer\Actions\Remove */
+?>
+<a href="#"
+   title="<?php echo $block->escapeHtml(__('Remove item')); ?>"
+   class="action action-delete"
+   data-post='<?php echo $block->getDeletePostJson(); ?>'>
+    <span>
+        <?php echo __('Remove item')?>
+    </span>
+</a>
diff --git a/app/code/Magento/Checkout/view/frontend/templates/cart/shipping.phtml b/app/code/Magento/Checkout/view/frontend/templates/cart/shipping.phtml
index 71964e6df4437cc9af2c52ed354e1b5fb2a183a8..c38df0934ee5923819d4903d39531d1ad2ab7565 100644
--- a/app/code/Magento/Checkout/view/frontend/templates/cart/shipping.phtml
+++ b/app/code/Magento/Checkout/view/frontend/templates/cart/shipping.phtml
@@ -71,7 +71,8 @@
                     "form": "#shipping-zip-form",
                     "regionJson": <?php echo $this->helper('Magento\Directory\Helper\Data')->getRegionJson() ?>,
                     "defaultRegion": "<?php echo $block->getEstimateRegionId() ?>",
-                    "countriesWithOptionalZip": <?php echo $this->helper('Magento\Directory\Helper\Data')->getCountriesWithOptionalZip(true) ?>
+                    "countriesWithOptionalZip": <?php echo $this->helper('Magento\Directory\Helper\Data')->getCountriesWithOptionalZip(true) ?>,
+                    "isMultipleCountriesAllowed": <?php echo $block->isMultipleCountriesAllowed() ? 'true' : 'false'; ?>
                 }
             }
         }
diff --git a/app/code/Magento/Checkout/view/frontend/web/js/region-updater.js b/app/code/Magento/Checkout/view/frontend/web/js/region-updater.js
index d48975806a79664906a1ff1ab6954f37ba23f536..d6cef062b1d507b82fcc00b5ee99fbc128d533a5 100644
--- a/app/code/Magento/Checkout/view/frontend/web/js/region-updater.js
+++ b/app/code/Magento/Checkout/view/frontend/web/js/region-updater.js
@@ -21,24 +21,18 @@ define([
             isRegionRequired: true,
             isZipRequired: true,
             isCountryRequired: true,
-            currentRegion: null
+            currentRegion: null,
+            isMultipleCountriesAllowed: true
         },
 
         _create: function () {
-            this.currentRegionOption = this.options.currentRegion;
+            this._initCountryElement();
 
+            this.currentRegionOption = this.options.currentRegion;
             this.regionTmpl = mageTemplate(this.options.regionTemplate);
 
             this._updateRegion(this.element.find('option:selected').val());
 
-            this.element.on('change', $.proxy(function (e) {
-                this._updateRegion($(e.target).val());
-            }, this));
-
-            if (this.isCountryRequired) {
-                this.element.addClass('required-entry');
-            }
-
             $(this.options.regionListId).on('change', $.proxy(function (e) {
                 this.setOption = false;
                 this.currentRegionOption = $(e.target).val();
@@ -49,6 +43,21 @@ define([
             }, this));
         },
 
+        _initCountryElement: function() {
+            if (this.options.isMultipleCountriesAllowed) {
+                this.element.parents('div.field').show();
+                this.element.on('change', $.proxy(function (e) {
+                    this._updateRegion($(e.target).val());
+                }, this));
+                if (this.options.isCountryRequired) {
+                    this.element.addClass('required-entry');
+                    this.element.parents('div.field').addClass('required');
+                }
+            } else {
+                this.element.parents('div.field').hide();
+            }
+        },
+
         /**
          * Remove options from dropdown list
          * @param {Object} selectElement - jQuery object for dropdown list
diff --git a/app/code/Magento/CheckoutAgreements/composer.json b/app/code/Magento/CheckoutAgreements/composer.json
index bea7e49ea19fc077686d3e7ba0e73bec7beb2978..28936c416e31dc474a95b0687d98edef469ba886 100644
--- a/app/code/Magento/CheckoutAgreements/composer.json
+++ b/app/code/Magento/CheckoutAgreements/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-ui": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-ui": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Cms/composer.json b/app/code/Magento/Cms/composer.json
index 73cbc55bc1d1818796bc345b579f2eb594d2d192..74159635377d7d0ac47f23cd8474b47b4415610b 100644
--- a/app/code/Magento/Cms/composer.json
+++ b/app/code/Magento/Cms/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/module-widget": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-email": "0.74.0-beta13",
-        "magento/module-ui": "0.74.0-beta13",
-        "magento/module-variable": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/module-widget": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-email": "0.74.0-beta14",
+        "magento/module-ui": "0.74.0-beta14",
+        "magento/module-variable": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/CmsUrlRewrite/composer.json b/app/code/Magento/CmsUrlRewrite/composer.json
index f469ccf9a8a16e50c34bcc66cac4a59c1dc7df58..c5d23577dd32064af54e69ea0c18bf918232f32a 100644
--- a/app/code/Magento/CmsUrlRewrite/composer.json
+++ b/app/code/Magento/CmsUrlRewrite/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-cms": "0.74.0-beta13",
-        "magento/module-url-rewrite": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-cms": "0.74.0-beta14",
+        "magento/module-url-rewrite": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Config/composer.json b/app/code/Magento/Config/composer.json
index 99e065fbf08f55ac4666e3c27b6944de65d9f4e0..cc83e07515d7c6e3f56c531d84d10edcceb1226e 100644
--- a/app/code/Magento/Config/composer.json
+++ b/app/code/Magento/Config/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-cron": "0.74.0-beta13",
-        "magento/module-email": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-cron": "0.74.0-beta14",
+        "magento/module-email": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/ConfigurableImportExport/composer.json b/app/code/Magento/ConfigurableImportExport/composer.json
index 54fb284e622096d698a49ea4154a0ad47fe4f037..8d04a7bae07ab90d74604415193102a43f299075 100644
--- a/app/code/Magento/ConfigurableImportExport/composer.json
+++ b/app/code/Magento/ConfigurableImportExport/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-catalog-import-export": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-import-export": "0.74.0-beta13",
-        "magento/module-configurable-product": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-catalog-import-export": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-import-export": "0.74.0-beta14",
+        "magento/module-configurable-product": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/ConfigurableProduct/Model/Resource/Product/Indexer/Price/Configurable.php b/app/code/Magento/ConfigurableProduct/Model/Resource/Product/Indexer/Price/Configurable.php
index 086efbbf9f8ff8a995a15eeb283026924322288d..2dc2f6d2c88f2ee28b27916108ea451727845ad6 100644
--- a/app/code/Magento/ConfigurableProduct/Model/Resource/Product/Indexer/Price/Configurable.php
+++ b/app/code/Magento/ConfigurableProduct/Model/Resource/Product/Indexer/Price/Configurable.php
@@ -17,7 +17,7 @@ class Configurable extends \Magento\Catalog\Model\Resource\Product\Indexer\Price
      */
     public function reindexAll()
     {
-        $this->useIdxTable(true);
+        $this->tableStrategy->setUseIdxTable(true);
         $this->beginTransaction();
         try {
             $this->reindex();
@@ -63,10 +63,7 @@ class Configurable extends \Magento\Catalog\Model\Resource\Product\Indexer\Price
      */
     protected function _getConfigurableOptionAggregateTable()
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('catalog_product_index_price_cfg_opt_agr_idx');
-        }
-        return $this->getTable('catalog_product_index_price_cfg_opt_agr_tmp');
+        return $this->tableStrategy->getTableName('catalog_product_index_price_cfg_opt_agr');
     }
 
     /**
@@ -76,10 +73,7 @@ class Configurable extends \Magento\Catalog\Model\Resource\Product\Indexer\Price
      */
     protected function _getConfigurableOptionPriceTable()
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('catalog_product_index_price_cfg_opt_idx');
-        }
-        return $this->getTable('catalog_product_index_price_cfg_opt_tmp');
+        return $this->tableStrategy->getTableName('catalog_product_index_price_cfg_opt');
     }
 
     /**
diff --git a/app/code/Magento/ConfigurableProduct/Test/Unit/Block/Cart/Item/Renderer/ConfigurableTest.php b/app/code/Magento/ConfigurableProduct/Test/Unit/Block/Cart/Item/Renderer/ConfigurableTest.php
index 8594a0fb07f30e864b0d9744eb15f260930f0cf0..23f9b9b8ff1439e46352cf30a3567302222b33fc 100644
--- a/app/code/Magento/ConfigurableProduct/Test/Unit/Block/Cart/Item/Renderer/ConfigurableTest.php
+++ b/app/code/Magento/ConfigurableProduct/Test/Unit/Block/Cart/Item/Renderer/ConfigurableTest.php
@@ -233,7 +233,7 @@ class ConfigurableTest extends \PHPUnit_Framework_TestCase
 
     public function testGetOptionList()
     {
-        $itemMock = $this->getMock('Magento\Quote\Model\Quote\Item\AbstractItem', [], [], '', false);
+        $itemMock = $this->getMock('Magento\Quote\Model\Quote\Item', [], [], '', false);
         $this->_renderer->setItem($itemMock);
         $this->productConfigMock->expects($this->once())->method('getOptions')->with($itemMock);
         $this->_renderer->getOptionList();
diff --git a/app/code/Magento/ConfigurableProduct/composer.json b/app/code/Magento/ConfigurableProduct/composer.json
index a59d294e11653be15c3407afdddc78db584f82eb..d67c88a3d956bb5c369acb68c95818f9d10047c2 100644
--- a/app/code/Magento/ConfigurableProduct/composer.json
+++ b/app/code/Magento/ConfigurableProduct/composer.json
@@ -3,27 +3,27 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-msrp": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-catalog-rule": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-msrp": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-catalog-rule": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "suggest": {
-      "magento/module-webapi": "0.74.0-beta13"
+      "magento/module-webapi": "0.74.0-beta14"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/attribute-js-template.phtml b/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/attribute-js-template.phtml
index 2865b30b7710771e8fa63e2542f8f08e08c5c68e..a997ad893456cef5e3ff769f50a3881cdcb8fa12 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/attribute-js-template.phtml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/attribute-js-template.phtml
@@ -149,14 +149,14 @@
                     <div class="fields-group-2">
                         <div class="field field-pricing-value">
                             <div class="control">
-                                <input type="text" class="pricing-value validate-number"
+                                <input type="text" class="pricing-value validate-number" <?php if(!$block->getCanEditPrice()): ?> 'disabled="disabled"' <?php endif; ?>
                                        name="product[configurable_attributes_data][<%- data.attribute.id %>][values][<%- data.option.id %>][pricing_value]" />
                             </div>
                         </div>
                         <div class="field field-pricing-measure">
                             <div class="actions dropdown actions-select">
                                 <input type="hidden" value="0" name="product[configurable_attributes_data][<%- data.attribute.id %>][values][<%- data.option.id %>][is_percent]"/>
-                                <button type="button" class="action toggle" data-toggle="dropdown" data-mage-init='{"dropdown":{}}'>
+                                <button type="button" class="action toggle" data-toggle="dropdown" data-mage-init='{"dropdown":{}}' <?php if(!$block->getCanEditPrice()): ?> 'disabled="disabled"' <?php endif; ?>>
                                     <span><?php echo $block->getBaseCurrency()->getSymbol() ?></span>
                                 </button>
                                 <ul class="dropdown" data-role="dropdown-menu" data-mage-init='{"menu":{}}'>
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/attribute-template.phtml b/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/attribute-template.phtml
index 9a50b287313e96ffbf5d4335e1fb8c9563ee5f8e..dd8a327146c9e87e81db2815df1a84ec4d9afcf2 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/attribute-template.phtml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/attribute-template.phtml
@@ -118,7 +118,7 @@ $id = $block->escapeHtml($attribute['attribute_id']);
                                                 <div class="fields-group-2">
                                                     <div class="field field-pricing-value">
                                                         <div class="control">
-                                                            <input type="text" class="pricing-value validate-number"
+                                                            <input type="text" <?php if (!$block->getCanEditPrice()): ?> disabled="disabled";<?php endif; ?> class="pricing-value validate-number"
                                                                    name="<?php echo $namePrefix ?>[<?php echo $valueIndex ?>][pricing_value]"
                                                                    value="<?php echo $block->escapeHtml($pricingValue);
                                 ?>">
@@ -128,7 +128,7 @@ $id = $block->escapeHtml($attribute['attribute_id']);
                                                         <div class="actions dropdown actions-select">
                                                             <input name="<?php echo $namePrefix ?>[<?php echo $valueIndex ?>][is_percent]" type="hidden" value="<?php echo $isPercent ? 1 : 0;
                                 ?>"/>
-                                                            <button type="button" class="action toggle" data-toggle="dropdown" data-mage-init='{"dropdown":{}}'>
+                                                            <button type="button" class="action toggle" <?php if (!$block->getCanEditPrice()): ?> disabled="disabled" <?php endif; ?> data-toggle="dropdown" data-mage-init='{"dropdown":{}}'>
                                                                 <span><?php echo $isPercent ? __('%') : $block->getBaseCurrency()->getSymbol() ?></span>
                                                             </button>
                                                             <ul class="dropdown" data-role="dropdown-menu" data-mage-init='{"menu":{}}'>
diff --git a/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml
index ed335b6babce89860d2af06041a59957ce9dcea5..8b303c7a667fcec5c25753db40715ed3e168e8b4 100644
--- a/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml
+++ b/app/code/Magento/ConfigurableProduct/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -8,7 +8,12 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <referenceBlock name="checkout.cart.item.renderers">
-            <block class="Magento\ConfigurableProduct\Block\Cart\Item\Renderer\Configurable" as="configurable" template="Magento_Checkout::cart/item/default.phtml"/>
+            <block class="Magento\ConfigurableProduct\Block\Cart\Item\Renderer\Configurable" as="configurable" template="Magento_Checkout::cart/item/default.phtml">
+                <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions" name="checkout.cart.item.renderers.configurable.actions" as="actions">
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Edit" name="checkout.cart.item.renderers.configurable.actions.edit" template="Magento_Checkout::cart/item/renderer/actions/edit.phtml"/>
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Remove" name="checkout.cart.item.renderers.configurable.actions.remove" template="Magento_Checkout::cart/item/renderer/actions/remove.phtml"/>
+                </block>
+            </block>
         </referenceBlock>
     </body>
 </page>
diff --git a/app/code/Magento/Contact/Test/Unit/Controller/Index/IndexTest.php b/app/code/Magento/Contact/Test/Unit/Controller/Index/IndexTest.php
index bb59c0e78c7425e6c3e38d1428574a7b738758c2..ccaec64fabb98588414aac86ae67c5e8b14bd956 100644
--- a/app/code/Magento/Contact/Test/Unit/Controller/Index/IndexTest.php
+++ b/app/code/Magento/Contact/Test/Unit/Controller/Index/IndexTest.php
@@ -1,32 +1,37 @@
 <?php
 /**
- *
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Contact\Test\Unit\Controller\Index;
 
 class IndexTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\Contact\Controller\Index\Index|\PHPUnit_Framework_MockObject_MockObject
+     * Controller
+     *
+     * @var \Magento\Contact\Controller\Index\Index
      */
     protected $_controller;
 
     /**
+     * Scope config mock
+     *
      * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_scopeConfig;
 
     /**
+     * View mock
+     *
      * @var \Magento\Framework\App\ViewInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_view;
 
     /**
+     * Url mock
+     *
      * @var \Magento\Framework\UrlInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_url;
@@ -34,7 +39,10 @@ class IndexTest extends \PHPUnit_Framework_TestCase
     public function setUp()
     {
         $this->_scopeConfig = $this->getMockForAbstractClass(
-            '\Magento\Framework\App\Config\ScopeConfigInterface', ['isSetFlag'], '', false
+            '\Magento\Framework\App\Config\ScopeConfigInterface',
+            ['isSetFlag'],
+            '',
+            false
         );
         $context = $this->getMock(
             '\Magento\Framework\App\Action\Context',
diff --git a/app/code/Magento/Contact/Test/Unit/Controller/IndexTest.php b/app/code/Magento/Contact/Test/Unit/Controller/IndexTest.php
index 9db82a0300c8dfcc1fb590aa2f7bf329596dd736..609eaddcc4b579de6c613e1855fda232937ea2d2 100644
--- a/app/code/Magento/Contact/Test/Unit/Controller/IndexTest.php
+++ b/app/code/Magento/Contact/Test/Unit/Controller/IndexTest.php
@@ -4,18 +4,20 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Contact\Test\Unit\Controller;
 
 class IndexTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\Contact\Controller\Index|\PHPUnit_Framework_MockObject_MockObject
+     * Controller instance
+     *
+     * @var \Magento\Contact\Controller\Index
      */
     protected $_controller;
 
     /**
+     * Scope config instance
+     *
      * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_scopeConfig;
@@ -23,7 +25,10 @@ class IndexTest extends \PHPUnit_Framework_TestCase
     public function setUp()
     {
         $this->_scopeConfig = $this->getMockForAbstractClass(
-            '\Magento\Framework\App\Config\ScopeConfigInterface', ['isSetFlag'], '', false
+            '\Magento\Framework\App\Config\ScopeConfigInterface',
+            ['isSetFlag'],
+            '',
+            false
         );
         $context = $this->getMock(
             '\Magento\Framework\App\Action\Context',
@@ -33,23 +38,21 @@ class IndexTest extends \PHPUnit_Framework_TestCase
             false
         );
 
-        $context->expects(
-            $this->any()
-        )->method(
-            'getRequest'
-        )->will(
-            $this->returnValue($this->getMockForAbstractClass('\Magento\Framework\App\RequestInterface', [], '', false))
-        );
+        $context->expects($this->any())
+            ->method('getRequest')
+            ->will(
+                $this->returnValue(
+                    $this->getMockForAbstractClass('\Magento\Framework\App\RequestInterface', [], '', false)
+                )
+            );
 
-        $context->expects(
-            $this->any()
-        )->method(
-            'getResponse'
-        )->will(
-            $this->returnValue(
-                $this->getMockForAbstractClass('\Magento\Framework\App\ResponseInterface', [], '', false)
-            )
-        );
+        $context->expects($this->any())
+            ->method('getResponse')
+            ->will(
+                $this->returnValue(
+                    $this->getMockForAbstractClass('\Magento\Framework\App\ResponseInterface', [], '', false)
+                )
+            );
 
         $this->_controller = new \Magento\Contact\Controller\Index(
             $context,
@@ -61,20 +64,20 @@ class IndexTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
+     * Dispatch test
+     *
      * @expectedException \Magento\Framework\Exception\NotFoundException
      */
     public function testDispatch()
     {
-        $this->_scopeConfig->expects(
-            $this->once()
-        )->method(
-            'isSetFlag'
-        )->with(
-            \Magento\Contact\Controller\Index::XML_PATH_ENABLED,
-            \Magento\Store\Model\ScopeInterface::SCOPE_STORE
-        )->will(
-            $this->returnValue(false)
-        );
+        $this->_scopeConfig->expects($this->once())
+            ->method('isSetFlag')
+            ->with(
+                \Magento\Contact\Controller\Index::XML_PATH_ENABLED,
+                \Magento\Store\Model\ScopeInterface::SCOPE_STORE
+            )
+            ->will($this->returnValue(false));
+
         $this->_controller->dispatch(
             $this->getMockForAbstractClass('\Magento\Framework\App\RequestInterface', [], '', false)
         );
diff --git a/app/code/Magento/Contact/Test/Unit/Helper/DataTest.php b/app/code/Magento/Contact/Test/Unit/Helper/DataTest.php
index cffd617f422b4327608f4a626a17a5772dc94a12..057cc4672acf0dcf72ce5b5df73a778e8bbd5f57 100644
--- a/app/code/Magento/Contact/Test/Unit/Helper/DataTest.php
+++ b/app/code/Magento/Contact/Test/Unit/Helper/DataTest.php
@@ -4,28 +4,34 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Contact\Test\Unit\Helper;
 
 class DataTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\Contact\Helper\Data|\PHPUnit_Framework_MockObject_MockObject
+     * Helper
+     *
+     * @var \Magento\Contact\Helper\Data
      */
     protected $_helper;
 
     /**
+     * Scope config mock
+     *
      * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_scopeConfig;
 
     /**
+     * Customer session mock
+     *
      * @var \Magento\Customer\Model\Session|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_customerSession;
 
     /**
+     * Customer view helper mock
+     *
      * @var \Magento\Customer\Helper\View|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_customerViewHelper;
@@ -35,7 +41,9 @@ class DataTest extends \PHPUnit_Framework_TestCase
         $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
         $className = '\Magento\Contact\Helper\Data';
         $arguments = $objectManagerHelper->getConstructArguments($className);
-        /** @var \Magento\Framework\App\Helper\Context $context */
+        /**
+         * @var \Magento\Framework\App\Helper\Context $context
+         */
         $context = $arguments['context'];
         $this->_scopeConfig = $context->getScopeConfig();
         $this->_customerSession = $arguments['customerSession'];
@@ -58,7 +66,7 @@ class DataTest extends \PHPUnit_Framework_TestCase
             ->method('getValue')
             ->will($this->returnValue(null));
 
-        $this->assertTrue(is_null($this->_helper->isEnabled()));
+        $this->assertTrue(null === $this->_helper->isEnabled());
     }
 
     public function testGetUserNameNotLoggedIn()
@@ -104,8 +112,12 @@ class DataTest extends \PHPUnit_Framework_TestCase
         $this->_customerSession->expects($this->once())
             ->method('isLoggedIn')
             ->will($this->returnValue(true));
+
         $customerDataObject = $this->getMock('\Magento\Customer\Api\Data\CustomerInterface', [], [], '', false);
-        $customerDataObject->expects($this->once())->method('getEmail')->will($this->returnValue('customer@email.com'));
+        $customerDataObject->expects($this->once())
+            ->method('getEmail')
+            ->will($this->returnValue('customer@email.com'));
+
         $this->_customerSession->expects($this->once())
             ->method('getCustomerDataObject')
             ->will($this->returnValue($customerDataObject));
diff --git a/app/code/Magento/Contact/composer.json b/app/code/Magento/Contact/composer.json
index 855dc95f1b15efa4b57d63915006bfb38028b121..b439ea140c197b1ed56baf1e2d815da1401ad79b 100644
--- a/app/code/Magento/Contact/composer.json
+++ b/app/code/Magento/Contact/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-cms": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-cms": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Cookie/composer.json b/app/code/Magento/Cookie/composer.json
index f407a5b8678efc0b356538691028f981353d3ba4..544fd07a9c3789660daca22b02bfc19ba3f3aef5 100644
--- a/app/code/Magento/Cookie/composer.json
+++ b/app/code/Magento/Cookie/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "suggest": {
-        "magento/module-backend": "0.74.0-beta13"
+        "magento/module-backend": "0.74.0-beta14"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Cron/composer.json b/app/code/Magento/Cron/composer.json
index 2b1ebf6e958d6c4629e5205532dfc0b182d8d6a6..6399fb6b9e9020bfbbdcd39b429d38acd51db867 100644
--- a/app/code/Magento/Cron/composer.json
+++ b/app/code/Magento/Cron/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/CurrencySymbol/composer.json b/app/code/Magento/CurrencySymbol/composer.json
index 87a1ae6197aed04f3647858aaf8ae5c6c3b727f7..84def1d3cbe14acfc288d09d027e68ac7ef0514f 100644
--- a/app/code/Magento/CurrencySymbol/composer.json
+++ b/app/code/Magento/CurrencySymbol/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-page-cache": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-page-cache": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Customer/composer.json b/app/code/Magento/Customer/composer.json
index 69fc3efec3823f3e47c02b91eb7c6dc6d3a9a20e..0eece788e93cecb4c80b798123ea44284882baca 100644
--- a/app/code/Magento/Customer/composer.json
+++ b/app/code/Magento/Customer/composer.json
@@ -3,33 +3,33 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-newsletter": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-wishlist": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-review": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-page-cache": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-authorization": "0.74.0-beta13",
-        "magento/module-integration": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/module-ui": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-newsletter": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-wishlist": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-review": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-page-cache": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-authorization": "0.74.0-beta14",
+        "magento/module-integration": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/module-ui": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "suggest": {
-        "magento/module-cookie": "0.74.0-beta13"
+        "magento/module-cookie": "0.74.0-beta14"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/CustomerImportExport/composer.json b/app/code/Magento/CustomerImportExport/composer.json
index 0fca4e85cc1316d04098a0685fdc613ab7af42c1..b6a1e407f40a90d40681457f8b3c44f71a51810b 100644
--- a/app/code/Magento/CustomerImportExport/composer.json
+++ b/app/code/Magento/CustomerImportExport/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-import-export": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-import-export": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/DesignEditor/composer.json b/app/code/Magento/DesignEditor/composer.json
index c74e983baf4c68378fe6735571211cdf05e11cb0..b1da5a0bdcd348ed89d44f6c55133d29d268e728 100644
--- a/app/code/Magento/DesignEditor/composer.json
+++ b/app/code/Magento/DesignEditor/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-translation": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-translation": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Developer/composer.json b/app/code/Magento/Developer/composer.json
index 159132b761c1f3ac35336599634434a2cf489651..a48bb0105867b156433a4addf530adbefcf87e48 100644
--- a/app/code/Magento/Developer/composer.json
+++ b/app/code/Magento/Developer/composer.json
@@ -3,12 +3,12 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Dhl/composer.json b/app/code/Magento/Dhl/composer.json
index 844caf08a5f13cf23065ae0ed66adcc52014cb3b..02b7d41aa6e9cb7951f25396c7d440274d5b0d56 100644
--- a/app/code/Magento/Dhl/composer.json
+++ b/app/code/Magento/Dhl/composer.json
@@ -3,22 +3,22 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-shipping": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-shipping": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Directory/Block/Data.php b/app/code/Magento/Directory/Block/Data.php
index 9df3c512994106d3827b39bf404a63a8ba9512f8..08242cb6e25dc0fb494970fef8839820e4b26dec 100644
--- a/app/code/Magento/Directory/Block/Data.php
+++ b/app/code/Magento/Directory/Block/Data.php
@@ -3,10 +3,6 @@
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
-
-/**
- * Directory data block
- */
 namespace Magento\Directory\Block;
 
 class Data extends \Magento\Framework\View\Element\Template
@@ -84,6 +80,20 @@ class Data extends \Magento\Framework\View\Element\Template
         return $collection;
     }
 
+    /**
+     * Retrieve list of top destinations countries
+     *
+     * @return array
+     */
+    protected function getTopDestinations()
+    {
+        $destinations = (string)$this->_scopeConfig->getValue(
+            'general/country/destinations',
+            \Magento\Store\Model\ScopeInterface::SCOPE_STORE
+        );
+        return !empty($destinations) ? explode(',', $destinations) : [];
+    }
+
     /**
      * @param null|string $defValue
      * @param string $name
@@ -102,7 +112,9 @@ class Data extends \Magento\Framework\View\Element\Template
         if ($cache) {
             $options = unserialize($cache);
         } else {
-            $options = $this->getCountryCollection()->toOptionArray();
+            $options = $this->getCountryCollection()
+                ->setForegroundCountries($this->getTopDestinations())
+                ->toOptionArray();
             $this->_configCacheType->save(serialize($options), $cacheKey);
         }
         $html = $this->getLayout()->createBlock(
diff --git a/app/code/Magento/Directory/Test/Unit/Block/DataTest.php b/app/code/Magento/Directory/Test/Unit/Block/DataTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..9d5fb0635bd667381ab5cd3f2cba90bc16736cae
--- /dev/null
+++ b/app/code/Magento/Directory/Test/Unit/Block/DataTest.php
@@ -0,0 +1,329 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Directory\Test\Unit\Block;
+
+use Magento\Directory\Block\Data;
+use Magento\Directory\Helper\Data as HelperData;
+use Magento\Directory\Model\Resource\Country\Collection as CountryCollection;
+use Magento\Directory\Model\Resource\Country\CollectionFactory as CountryCollectionFactory;
+use Magento\Directory\Model\Resource\Region\CollectionFactory as RegionCollectionFactory;
+use Magento\Framework\App\Cache\Type\Config;
+use Magento\Framework\App\Config\ScopeConfigInterface;
+use Magento\Framework\Json\EncoderInterface;
+use Magento\Framework\View\Element\Template\Context;
+use Magento\Framework\View\LayoutInterface;
+use Magento\Store\Model\ScopeInterface;
+use Magento\Store\Model\Store;
+use Magento\Store\Model\StoreManagerInterface;
+
+/**
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
+class DataTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var  Data */
+    protected $model;
+
+    /** @var  Context |\PHPUnit_Framework_MockObject_MockObject */
+    protected $context;
+
+    /** @var  HelperData |\PHPUnit_Framework_MockObject_MockObject */
+    protected $helperData;
+
+    /** @var  EncoderInterface |\PHPUnit_Framework_MockObject_MockObject */
+    protected $jsonEncoder;
+
+    /** @var  Config |\PHPUnit_Framework_MockObject_MockObject */
+    protected $cacheTypeConfig;
+
+    /** @var  RegionCollectionFactory |\PHPUnit_Framework_MockObject_MockObject */
+    protected $regionCollectionFactory;
+
+    /** @var  CountryCollectionFactory |\PHPUnit_Framework_MockObject_MockObject */
+    protected $countryCollectionFactory;
+
+    /** @var  ScopeConfigInterface |\PHPUnit_Framework_MockObject_MockObject */
+    protected $scopeConfig;
+
+    /** @var  StoreManagerInterface |\PHPUnit_Framework_MockObject_MockObject */
+    protected $storeManager;
+
+    /** @var  Store |\PHPUnit_Framework_MockObject_MockObject */
+    protected $store;
+
+    /** @var  CountryCollection |\PHPUnit_Framework_MockObject_MockObject */
+    protected $countryCollection;
+
+    /** @var  LayoutInterface |\PHPUnit_Framework_MockObject_MockObject */
+    protected $layout;
+
+    protected function setUp()
+    {
+        $this->prepareContext();
+
+        $this->helperData = $this->getMockBuilder('Magento\Directory\Helper\Data')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->jsonEncoder = $this->getMockBuilder('Magento\Framework\Json\EncoderInterface')
+            ->getMockForAbstractClass();
+
+        $this->cacheTypeConfig = $this->getMockBuilder('Magento\Framework\App\Cache\Type\Config')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->regionCollectionFactory = $this->getMockBuilder(
+            'Magento\Directory\Model\Resource\Region\CollectionFactory'
+        )
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->prepareCountryCollection();
+
+        $this->model = new Data(
+            $this->context,
+            $this->helperData,
+            $this->jsonEncoder,
+            $this->cacheTypeConfig,
+            $this->regionCollectionFactory,
+            $this->countryCollectionFactory
+        );
+    }
+
+    protected function prepareContext()
+    {
+        $this->store = $this->getMockBuilder('Magento\Store\Model\Store')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->scopeConfig = $this->getMockBuilder('Magento\Framework\App\Config\ScopeConfigInterface')
+            ->getMockForAbstractClass();
+
+        $this->storeManager = $this->getMockBuilder('Magento\Store\Model\StoreManagerInterface')
+            ->getMockForAbstractClass();
+
+        $this->storeManager->expects($this->any())
+            ->method('getStore')
+            ->willReturn($this->store);
+
+        $this->layout = $this->getMockBuilder('Magento\Framework\View\LayoutInterface')
+            ->getMockForAbstractClass();
+
+        $this->context = $this->getMockBuilder('Magento\Framework\View\Element\Template\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->context->expects($this->any())
+            ->method('getScopeConfig')
+            ->willReturn($this->scopeConfig);
+
+        $this->context->expects($this->any())
+            ->method('getStoreManager')
+            ->willReturn($this->storeManager);
+
+        $this->context->expects($this->any())
+            ->method('getLayout')
+            ->willReturn($this->layout);
+    }
+
+    protected function prepareCountryCollection()
+    {
+        $this->countryCollection = $this->getMockBuilder('Magento\Directory\Model\Resource\Country\Collection')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->countryCollectionFactory = $this->getMockBuilder(
+            'Magento\Directory\Model\Resource\Country\CollectionFactory'
+        )
+            ->disableOriginalConstructor()
+            ->setMethods([
+                'create'
+            ])
+            ->getMock();
+
+        $this->countryCollectionFactory->expects($this->any())
+            ->method('create')
+            ->willReturn($this->countryCollection);
+    }
+
+    /**
+     * @param string $storeCode
+     * @param int $defaultCountry
+     * @param string $destinations
+     * @param array $expectedDestinations
+     * @param array $options
+     * @param string $resultHtml
+     * @dataProvider dataProviderGetCountryHtmlSelect
+     */
+    public function testGetCountryHtmlSelect(
+        $storeCode,
+        $defaultCountry,
+        $destinations,
+        $expectedDestinations,
+        $options,
+        $resultHtml
+    ) {
+        $this->helperData->expects($this->once())
+            ->method('getDefaultCountry')
+            ->willReturn($defaultCountry);
+
+        $this->store->expects($this->once())
+            ->method('getCode')
+            ->willReturn($storeCode);
+
+        $this->cacheTypeConfig->expects($this->once())
+            ->method('load')
+            ->with('DIRECTORY_COUNTRY_SELECT_STORE_' . $storeCode)
+            ->willReturn(false);
+        $this->cacheTypeConfig->expects($this->once())
+            ->method('save')
+            ->with(serialize($options), 'DIRECTORY_COUNTRY_SELECT_STORE_' . $storeCode)
+            ->willReturnSelf();
+
+        $this->scopeConfig->expects($this->once())
+            ->method('getValue')
+            ->with('general/country/destinations', ScopeInterface::SCOPE_STORE)
+            ->willReturn($destinations);
+
+        $this->countryCollection->expects($this->once())
+            ->method('loadByStore')
+            ->willReturnSelf();
+        $this->countryCollection->expects($this->any())
+            ->method('setForegroundCountries')
+            ->with($expectedDestinations)
+            ->willReturnSelf();
+        $this->countryCollection->expects($this->once())
+            ->method('toOptionArray')
+            ->willReturn($options);
+
+        $elementHtmlSelect = $this->mockElementHtmlSelect($defaultCountry, $options, $resultHtml);
+
+        $this->layout->expects($this->once())
+            ->method('createBlock')
+            ->willReturn($elementHtmlSelect);
+
+        $this->assertEquals($resultHtml, $this->model->getCountryHtmlSelect());
+    }
+
+    /**
+     * 1. Store code
+     * 2. Default Country ID
+     * 3. Top Destinations
+     * 4. Exploded Top Destinations
+     * 5. Result options
+     *
+     * @return array
+     */
+    public function dataProviderGetCountryHtmlSelect()
+    {
+        return [
+            [
+                'default',
+                1,
+                '',
+                [],
+                [
+                    [
+                        'value' => 'US',
+                        'label' => 'United States',
+                    ],
+                ],
+                'result html',
+            ],
+            [
+                'default',
+                1,
+                'US',
+                [
+                    0 => 'US',
+                ],
+                [
+                    [
+                        'value' => 'US',
+                        'label' => 'United States',
+                    ],
+                ],
+                'result html',
+            ],
+            [
+                'default',
+                1,
+                'US,GB',
+                [
+                    0 => 'US',
+                    1 => 'GB',
+                ],
+                [
+                    [
+                        'value' => 'US',
+                        'label' => 'United States',
+                    ],
+                    [
+                        'value' => 'GB',
+                        'label' => 'Great Britain',
+                    ],
+                ],
+                'result html',
+            ],
+        ];
+    }
+
+    /**
+     * @param $defaultCountry
+     * @param $options
+     * @param $resultHtml
+     * @return \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected function mockElementHtmlSelect($defaultCountry, $options, $resultHtml)
+    {
+        $name = 'country_id';
+        $id = 'country';
+        $title = 'Country';
+
+        $elementHtmlSelect = $this->getMockBuilder('Magento\Framework\View\Element\Html\Select')
+            ->disableOriginalConstructor()
+            ->setMethods([
+                'setName',
+                'setId',
+                'setTitle',
+                'setValue',
+                'setOptions',
+                'setExtraParams',
+                'getHtml',
+            ])
+            ->getMock();
+
+        $elementHtmlSelect->expects($this->once())
+            ->method('setName')
+            ->with($name)
+            ->willReturnSelf();
+        $elementHtmlSelect->expects($this->once())
+            ->method('setId')
+            ->with($id)
+            ->willReturnSelf();
+        $elementHtmlSelect->expects($this->once())
+            ->method('setTitle')
+            ->with(__($title))
+            ->willReturnSelf();
+        $elementHtmlSelect->expects($this->once())
+            ->method('setValue')
+            ->with($defaultCountry)
+            ->willReturnSelf();
+        $elementHtmlSelect->expects($this->once())
+            ->method('setOptions')
+            ->with($options)
+            ->willReturnSelf();
+        $elementHtmlSelect->expects($this->once())
+            ->method('setExtraParams')
+            ->with('data-validate="{\'validate-select\':true}"')
+            ->willReturnSelf();
+        $elementHtmlSelect->expects($this->once())
+            ->method('getHtml')
+            ->willReturn($resultHtml);
+
+        return $elementHtmlSelect;
+    }
+}
diff --git a/app/code/Magento/Directory/composer.json b/app/code/Magento/Directory/composer.json
index bc48bec5995d1768c6b6963bd2d72689a5bca4cf..23ab56ed5a4f107e2748d9c98f7a78fe3b762bc4 100644
--- a/app/code/Magento/Directory/composer.json
+++ b/app/code/Magento/Directory/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Downloadable/Block/Checkout/Cart/Item/Renderer.php b/app/code/Magento/Downloadable/Block/Checkout/Cart/Item/Renderer.php
index 699e44fe150db1c3f052928ebbe89f212e24eacb..2416dc5d4c9efde09c4dcbcb23d60a700c5c97c5 100644
--- a/app/code/Magento/Downloadable/Block/Checkout/Cart/Item/Renderer.php
+++ b/app/code/Magento/Downloadable/Block/Checkout/Cart/Item/Renderer.php
@@ -30,8 +30,8 @@ class Renderer extends \Magento\Checkout\Block\Cart\Item\Renderer
      * @param \Magento\Framework\Url\Helper\Data $urlHelper
      * @param \Magento\Framework\Message\ManagerInterface $messageManager
      * @param PriceCurrencyInterface $priceCurrency
-     * @param \Magento\Downloadable\Helper\Catalog\Product\Configuration $downloadableProductConfiguration
      * @param \Magento\Framework\Module\Manager $moduleManager
+     * @param \Magento\Downloadable\Helper\Catalog\Product\Configuration $downloadableProductConfiguration
      * @param array $data
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
diff --git a/app/code/Magento/Downloadable/Model/Resource/Indexer/Price.php b/app/code/Magento/Downloadable/Model/Resource/Indexer/Price.php
index accf63a02ea487aeb397b6dc83987364145259c9..4245dede4be09a31918bc40c0814e7d8f628134f 100644
--- a/app/code/Magento/Downloadable/Model/Resource/Indexer/Price.php
+++ b/app/code/Magento/Downloadable/Model/Resource/Indexer/Price.php
@@ -20,7 +20,7 @@ class Price extends \Magento\Catalog\Model\Resource\Product\Indexer\Price\Defaul
      */
     public function reindexAll()
     {
-        $this->useIdxTable(true);
+        $this->tableStrategy->setUseIdxTable(true);
         $this->beginTransaction();
         try {
             $this->reindex();
@@ -68,10 +68,7 @@ class Price extends \Magento\Catalog\Model\Resource\Product\Indexer\Price\Defaul
      */
     protected function _getDownloadableLinkPriceTable()
     {
-        if ($this->useIdxTable()) {
-            return $this->getTable('catalog_product_index_price_downlod_idx');
-        }
-        return $this->getTable('catalog_product_index_price_downlod_tmp');
+        return $this->tableStrategy->getTableName('catalog_product_index_price_downlod');
     }
 
     /**
diff --git a/app/code/Magento/Downloadable/composer.json b/app/code/Magento/Downloadable/composer.json
index 15f14f91214a75f64c9e6493480b1d972d830b95..b28ee43df4619e46d9314a36a88369cb34ce7a94 100644
--- a/app/code/Magento/Downloadable/composer.json
+++ b/app/code/Magento/Downloadable/composer.json
@@ -3,28 +3,27 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-wishlist": "0.74.0-beta13",
-        "magento/module-gift-message": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-msrp": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-gift-message": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-msrp": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_item_renderers.xml
index 7a152eff590fc3608cbec1644a13a9b674b1160e..f6307cf7f80f69f3e424dd155b80f8b5cbbeba20 100644
--- a/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_item_renderers.xml
+++ b/app/code/Magento/Downloadable/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -8,7 +8,12 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <referenceBlock name="checkout.cart.item.renderers">
-            <block class="Magento\Downloadable\Block\Checkout\Cart\Item\Renderer" as="downloadable" template="checkout/cart/item/default.phtml"/>
+            <block class="Magento\Downloadable\Block\Checkout\Cart\Item\Renderer" as="downloadable" template="checkout/cart/item/default.phtml">
+                <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions" name="checkout.cart.item.renderers.downloadable.actions" as="actions">
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Edit" name="checkout.cart.item.renderers.downloadable.actions.edit" template="Magento_Checkout::cart/item/renderer/actions/edit.phtml"/>
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Remove" name="checkout.cart.item.renderers.downloadable.actions.remove" template="Magento_Checkout::cart/item/renderer/actions/remove.phtml"/>
+                </block>
+            </block>
         </referenceBlock>
         <referenceBlock name="additional.product.info">
             <block class="Magento\Downloadable\Block\Checkout\Cart\Item\Renderer" name="downloadable.product.links" template="Magento_Downloadable::checkout/links.phtml"/>
diff --git a/app/code/Magento/Downloadable/view/frontend/templates/checkout/cart/item/default.phtml b/app/code/Magento/Downloadable/view/frontend/templates/checkout/cart/item/default.phtml
index 62441265c7402ef642fcc8027a3a2beb7d93b788..e45c33bba790ddcf3d0cf97ab7130fc0185fd65c 100644
--- a/app/code/Magento/Downloadable/view/frontend/templates/checkout/cart/item/default.phtml
+++ b/app/code/Magento/Downloadable/view/frontend/templates/checkout/cart/item/default.phtml
@@ -104,22 +104,7 @@ $canApplyMsrp = $helper->isShowBeforeOrderConfirm($product) && $helper->isMinima
     <tr class="item-actions">
         <td colspan="<?php echo $cols;?>">
             <div class="actions-toolbar">
-                <?php if ($this->helper('Magento\Wishlist\Helper\Data')->isAllowInCart()) : ?>
-                    <?php if ($isVisibleProduct): ?>
-                        <a href="#" data-post='<?php echo $this->helper('Magento\Wishlist\Helper\Data')->getMoveFromCartParams($_item->getId()); ?>' class="use-ajax action towishlist">
-                            <span><?php echo __('Move to Wish List'); ?></span>
-                        </a>
-                    <?php endif ?>
-                <?php endif ?>
-                <?php if ($isVisibleProduct): ?>
-                    <a class="action edit" href="<?php echo $block->getConfigureUrl() ?>" title="<?php echo __('Edit item parameters') ?>"><span><?php echo __('Edit') ?></span></a>
-                <?php endif ?>
-                <button title="<?php echo __('Remove item') ?>"
-                        type="button"
-                        class="action delete"
-                        data-post='<?php echo $this->helper('Magento\Checkout\Helper\Cart')->getDeletePostJson($_item); ?>'>
-                    <span><?php echo __('Remove item')?></span>
-                </button>
+                <?php echo $block->getActions($_item) ?>
             </div>
         </td>
     </tr>
diff --git a/app/code/Magento/Eav/composer.json b/app/code/Magento/Eav/composer.json
index 5f243b8986208869e385aebfcbb4b57e28615de6..27a79fab2f4a2d182e3df0749481b2877d6eb5cf 100644
--- a/app/code/Magento/Eav/composer.json
+++ b/app/code/Magento/Eav/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Email/Model/AbstractTemplate.php b/app/code/Magento/Email/Model/AbstractTemplate.php
index 4eba984b8fcfa243c684cce9019a51444cad3283..4b92506e5118417cdba79e7b8556afd8974fe8da 100644
--- a/app/code/Magento/Email/Model/AbstractTemplate.php
+++ b/app/code/Magento/Email/Model/AbstractTemplate.php
@@ -71,22 +71,26 @@ abstract class AbstractTemplate extends AbstractModel implements TemplateTypesIn
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Store\Model\App\Emulation $appEmulation
      * @param \Magento\Store\Model\StoreManagerInterface $storeManager
+     * @param \Magento\Framework\Model\Resource\AbstractResource $resource
+     * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
      * @param array $data
      */
     public function __construct(
         \Magento\Framework\Model\Context $context,
-        \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Registry $registry,
+        \Magento\Framework\View\DesignInterface $design,
         \Magento\Store\Model\App\Emulation $appEmulation,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
-        array $data = []
+        array $data = [],
+        \Magento\Framework\Model\Resource\AbstractResource $resource = null,
+        \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null
     ) {
         $this->_design = $design;
         $this->_area = isset($data['area']) ? $data['area'] : null;
         $this->_store = isset($data['store']) ? $data['store'] : null;
         $this->_appEmulation = $appEmulation;
         $this->_storeManager = $storeManager;
-        parent::__construct($context, $registry, null, null, $data);
+        parent::__construct($context, $registry, $resource, $resourceCollection, $data);
     }
 
     /**
diff --git a/app/code/Magento/Email/Model/BackendTemplate.php b/app/code/Magento/Email/Model/BackendTemplate.php
index c8bc6b34398e0c492f9123cfaeedc8182da23299..e95278407067921ce22144ee327204e518b60625 100644
--- a/app/code/Magento/Email/Model/BackendTemplate.php
+++ b/app/code/Magento/Email/Model/BackendTemplate.php
@@ -38,8 +38,8 @@ class BackendTemplate extends Template
      */
     public function __construct(
         \Magento\Framework\Model\Context $context,
-        \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Registry $registry,
+        \Magento\Framework\View\DesignInterface $design,
         \Magento\Store\Model\App\Emulation $appEmulation,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
         \Magento\Framework\Filesystem $filesystem,
@@ -53,8 +53,8 @@ class BackendTemplate extends Template
     ) {
         parent::__construct(
             $context,
-            $design,
             $registry,
+            $design,
             $appEmulation,
             $storeManager,
             $filesystem,
diff --git a/app/code/Magento/Email/Model/Template.php b/app/code/Magento/Email/Model/Template.php
index 8b9e01d79eb803054587d91bd49887948f4c9403..a349f5d9ed0708300e369fb97800dc258f3ded2d 100644
--- a/app/code/Magento/Email/Model/Template.php
+++ b/app/code/Magento/Email/Model/Template.php
@@ -156,10 +156,10 @@ class Template extends \Magento\Email\Model\AbstractTemplate implements \Magento
 
     /**
      * @param \Magento\Framework\Model\Context $context
-     * @param \Magento\Framework\View\DesignInterface $design
      * @param \Magento\Framework\Registry $registry
+     * @param \Magento\Framework\View\DesignInterface $design
      * @param \Magento\Store\Model\App\Emulation $appEmulation
-     * @param \Magento\Store\Model\StoreManagerInterface $storeManager
+     * @param StoreManagerInterface $storeManager
      * @param \Magento\Framework\Filesystem $filesystem
      * @param \Magento\Framework\View\Asset\Repository $assetRepo
      * @param \Magento\Framework\View\FileSystem $viewFileSystem
@@ -167,13 +167,15 @@ class Template extends \Magento\Email\Model\AbstractTemplate implements \Magento
      * @param Template\FilterFactory $emailFilterFactory
      * @param Template\Config $emailConfig
      * @param array $data
+     * @param \Magento\Framework\Model\Resource\AbstractResource $resource
+     * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
      *
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
         \Magento\Framework\Model\Context $context,
-        \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Registry $registry,
+        \Magento\Framework\View\DesignInterface $design,
         \Magento\Store\Model\App\Emulation $appEmulation,
         StoreManagerInterface $storeManager,
         \Magento\Framework\Filesystem $filesystem,
@@ -182,7 +184,9 @@ class Template extends \Magento\Email\Model\AbstractTemplate implements \Magento
         \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
         \Magento\Email\Model\Template\FilterFactory $emailFilterFactory,
         \Magento\Email\Model\Template\Config $emailConfig,
-        array $data = []
+        array $data = [],
+        \Magento\Framework\Model\Resource\AbstractResource $resource = null,
+        \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null
     ) {
         $this->_scopeConfig = $scopeConfig;
         $this->_filesystem = $filesystem;
@@ -190,7 +194,16 @@ class Template extends \Magento\Email\Model\AbstractTemplate implements \Magento
         $this->_viewFileSystem = $viewFileSystem;
         $this->_emailFilterFactory = $emailFilterFactory;
         $this->_emailConfig = $emailConfig;
-        parent::__construct($context, $design, $registry, $appEmulation, $storeManager, $data);
+        parent::__construct(
+            $context,
+            $registry,
+            $design,
+            $appEmulation,
+            $storeManager,
+            $data,
+            $resource,
+            $resourceCollection
+        );
     }
 
     /**
diff --git a/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php b/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php
index 47d4e8e0929ac4722552617b51d069385d24d2be..3c89c3a8532971729ea0a7fcbb408ef0854fb2a3 100644
--- a/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php
+++ b/app/code/Magento/Email/Test/Unit/Model/TemplateTest.php
@@ -122,8 +122,8 @@ class TemplateTest extends \PHPUnit_Framework_TestCase
             ->setConstructorArgs(
                 [
                     $this->context,
-                    $this->design,
                     $this->registry,
+                    $this->design,
                     $this->appEmulation,
                     $this->storeManager,
                     $this->filesystem,
@@ -758,8 +758,8 @@ class TemplateTest extends \PHPUnit_Framework_TestCase
         )->setConstructorArgs(
             [
                 $this->getMock('Magento\Framework\Model\Context', [], [], '', false),
-                $this->getMock('Magento\Theme\Model\View\Design', [], [], '', false),
                 $this->getMock('Magento\Framework\Registry', [], [], '', false),
+                $this->getMock('Magento\Theme\Model\View\Design', [], [], '', false),
                 $this->getMock('Magento\Store\Model\App\Emulation', [], [], '', false),
                 $this->getMock('Magento\Store\Model\StoreManager', [], [], '', false),
                 $this->getMock('Magento\Framework\Filesystem', [], [], '', false),
diff --git a/app/code/Magento/Email/composer.json b/app/code/Magento/Email/composer.json
index e1be936adc070dc4d55a948b467c7e147cd8193d..337caab036bcf8efe39b14f1d7d22bf534a38f02 100644
--- a/app/code/Magento/Email/composer.json
+++ b/app/code/Magento/Email/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-cms": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-variable": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-cms": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-variable": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Fedex/composer.json b/app/code/Magento/Fedex/composer.json
index 2fe10a640638848100355b7e0b1c66a8b5244292..63f7f335ce91ef6b55f722c63265ca6cc57f560a 100644
--- a/app/code/Magento/Fedex/composer.json
+++ b/app/code/Magento/Fedex/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-shipping": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-shipping": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/GiftMessage/Api/GuestCartRepositoryInterface.php b/app/code/Magento/GiftMessage/Api/GuestCartRepositoryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..93973b139a221edb40fb63a51691c506a6ac66dd
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Api/GuestCartRepositoryInterface.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Api;
+
+/**
+ * Interface GuestCartRepositoryInterface
+ * @api
+ */
+interface GuestCartRepositoryInterface
+{
+    /**
+     * Return the gift message for a specified order.
+     *
+     * @param string $cartId The shopping cart ID.
+     * @return \Magento\GiftMessage\Api\Data\MessageInterface Gift message.
+     */
+    public function get($cartId);
+
+    /**
+     * Set the gift message for an entire order.
+     *
+     * @param string $cartId The cart ID.
+     * @param \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage The gift message.
+     * @return bool
+     * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist.
+     * @throws \Magento\Framework\Exception\InputException You cannot add gift messages to empty carts.
+     * @throws \Magento\Framework\Exception\CouldNotSaveException The specified gift message could not be saved.
+     */
+    public function save($cartId, \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage);
+}
diff --git a/app/code/Magento/GiftMessage/Api/GuestItemRepositoryInterface.php b/app/code/Magento/GiftMessage/Api/GuestItemRepositoryInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..31ce48c0907271a6d2b47089683a8af1d4f56e8a
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Api/GuestItemRepositoryInterface.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Api;
+
+/**
+ * Interface GuestItemRepositoryInterface
+ * @api
+ */
+interface GuestItemRepositoryInterface
+{
+    /**
+     * Return the gift message for a specified item in a specified shopping cart.
+     *
+     * @param string $cartId The shopping cart ID.
+     * @param int $itemId The item ID.
+     * @return \Magento\GiftMessage\Api\Data\MessageInterface Gift message.
+     * @throws \Magento\Framework\Exception\NoSuchEntityException The specified item does not exist in the cart.
+     */
+    public function get($cartId, $itemId);
+
+    /**
+     * Set the gift message for a specified item in a specified shopping cart.
+     *
+     * @param string $cartId The cart ID.
+     * @param \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage The gift message.
+     * @param int $itemId The item ID.
+     * @return bool
+     * @throws \Magento\Framework\Exception\NoSuchEntityException The specified cart does not exist.
+     * @throws \Magento\Framework\Exception\InputException You cannot add gift messages to empty carts.
+     * @throws \Magento\Framework\Exception\CouldNotSaveException The specified gift message could not be saved.
+     */
+    public function save($cartId, \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage, $itemId);
+}
diff --git a/app/code/Magento/GiftMessage/Block/Cart/GiftOptions.php b/app/code/Magento/GiftMessage/Block/Cart/GiftOptions.php
new file mode 100644
index 0000000000000000000000000000000000000000..bf208eb18eac7714eef0689d9178821e7346cdb5
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Block/Cart/GiftOptions.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Block\Cart;
+
+use Magento\Backend\Block\Template\Context;
+use Magento\Framework\Json\Encoder;
+use Magento\GiftMessage\Model\CompositeConfigProvider;
+
+class GiftOptions extends \Magento\Backend\Block\Template
+{
+    /**
+     * @var bool
+     */
+    protected $_isScopePrivate = false;
+
+    /**
+     * @var array
+     */
+    protected $jsLayout;
+
+    /**
+     * @var \Magento\Checkout\Model\CompositeConfigProvider
+     */
+    protected $configProvider;
+
+    /**
+     * @var array|\Magento\Checkout\Block\Checkout\LayoutProcessorInterface[]
+     */
+    protected $layoutProcessors;
+
+    /**
+     * @var Encoder
+     */
+    protected $jsonEncoder;
+
+    /**
+     * @param Context $context
+     * @param Encoder $jsonEncoder
+     * @param CompositeConfigProvider $configProvider
+     * @param array $layoutProcessors
+     * @param array $data
+     */
+    public function __construct(
+        Context $context,
+        Encoder $jsonEncoder,
+        CompositeConfigProvider $configProvider,
+        array $layoutProcessors = [],
+        array $data = []
+    ) {
+        parent::__construct($context, $data);
+        $this->jsonEncoder = $jsonEncoder;
+        $this->_isScopePrivate = true;
+        $this->jsLayout = isset($data['jsLayout']) && is_array($data['jsLayout']) ? $data['jsLayout'] : [];
+        $this->configProvider = $configProvider;
+        $this->layoutProcessors = $layoutProcessors;
+    }
+
+    /**
+     * @return string
+     */
+    public function getJsLayout()
+    {
+        foreach ($this->layoutProcessors as $processor) {
+            $this->jsLayout = $processor->process($this->jsLayout);
+        }
+        return $this->jsonEncoder->encode($this->jsLayout);
+    }
+
+    /**
+     * Retrieve gift message configuration
+     *
+     * @return array
+     */
+    public function getGiftOptionsConfigJson()
+    {
+        return $this->jsonEncoder->encode($this->configProvider->getConfig());
+    }
+}
diff --git a/app/code/Magento/GiftMessage/Block/Cart/Item/Renderer/Actions/GiftOptions.php b/app/code/Magento/GiftMessage/Block/Cart/Item/Renderer/Actions/GiftOptions.php
new file mode 100644
index 0000000000000000000000000000000000000000..429279e7ff2c9fc409716b6361d6991908e2dccb
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Block/Cart/Item/Renderer/Actions/GiftOptions.php
@@ -0,0 +1,66 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Block\Cart\Item\Renderer\Actions;
+
+use Magento\Backend\Block\Template\Context;
+use Magento\Checkout\Block\Cart\Item\Renderer\Actions\Generic;
+use Magento\Framework\Json\Encoder;
+
+class GiftOptions extends Generic
+{
+    /**
+     * @var bool
+     */
+    protected $_isScopePrivate = false;
+
+    /**
+     * @var array
+     */
+    protected $jsLayout;
+
+    /**
+     * @var array|LayoutProcessorInterface[]
+     */
+    protected $layoutProcessors;
+
+    /**
+     * @var Encoder
+     */
+    protected $jsonEncoder;
+
+    /**
+     * @param Context $context
+     * @param Encoder $jsonEncoder
+     * @param array $layoutProcessors
+     * @param array $data
+     */
+    public function __construct(
+        Context $context,
+        Encoder $jsonEncoder,
+        array $layoutProcessors = [],
+        array $data = []
+    ) {
+        parent::__construct($context, $data);
+        $this->jsonEncoder = $jsonEncoder;
+        $this->_isScopePrivate = true;
+        $this->jsLayout = isset($data['jsLayout']) && is_array($data['jsLayout']) ? $data['jsLayout'] : [];
+        $this->layoutProcessors = $layoutProcessors;
+    }
+
+    /**
+     * Return JS layout
+     *
+     * @return string
+     */
+    public function getJsLayout()
+    {
+        $jsLayout = $this->jsLayout;
+        foreach ($this->layoutProcessors as $processor) {
+            $jsLayout = $processor->process($jsLayout, $this->getItem());
+        }
+        return $this->jsonEncoder->encode($jsLayout);
+    }
+}
diff --git a/app/code/Magento/GiftMessage/Block/Cart/Item/Renderer/Actions/ItemIdProcessor.php b/app/code/Magento/GiftMessage/Block/Cart/Item/Renderer/Actions/ItemIdProcessor.php
new file mode 100644
index 0000000000000000000000000000000000000000..e3a2d93376a431294e35ef03ab7371f1e0da8255
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Block/Cart/Item/Renderer/Actions/ItemIdProcessor.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Block\Cart\Item\Renderer\Actions;
+
+use Magento\Quote\Model\Quote\Item;
+
+class ItemIdProcessor implements LayoutProcessorInterface
+{
+    /**
+     * Adds item ID to giftOptionsCartItem configuration and name
+     *
+     * @param array $jsLayout
+     * @param Item $item
+     * @return array
+     */
+    public function process($jsLayout, Item $item)
+    {
+        if (isset($jsLayout['components']['giftOptionsCartItem'])) {
+            if (!isset($jsLayout['components']['giftOptionsCartItem']['config'])) {
+                $jsLayout['components']['giftOptionsCartItem']['config'] = [];
+            }
+            $jsLayout['components']['giftOptionsCartItem']['config']['itemId'] = $item->getId();
+
+            $jsLayout['components']['giftOptionsCartItem-' . $item->getId()] =
+                $jsLayout['components']['giftOptionsCartItem'];
+            unset($jsLayout['components']['giftOptionsCartItem']);
+        }
+
+        return $jsLayout;
+    }
+}
diff --git a/app/code/Magento/GiftMessage/Block/Cart/Item/Renderer/Actions/LayoutProcessorInterface.php b/app/code/Magento/GiftMessage/Block/Cart/Item/Renderer/Actions/LayoutProcessorInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..5e8ecfacb3a3bdcb0cf2cb4a3c41aae8cdfe39a8
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Block/Cart/Item/Renderer/Actions/LayoutProcessorInterface.php
@@ -0,0 +1,20 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Block\Cart\Item\Renderer\Actions;
+
+use Magento\Quote\Model\Quote\Item;
+
+interface LayoutProcessorInterface
+{
+    /**
+     * Process JS layout of block
+     *
+     * @param array $jsLayout
+     * @param Item $item
+     * @return array
+     */
+    public function process($jsLayout, Item $item);
+}
diff --git a/app/code/Magento/GiftMessage/Model/CartRepository.php b/app/code/Magento/GiftMessage/Model/CartRepository.php
index 4fe6b988236c6258fc0d7f7068a72f803468debb..7cb8058bfb250ad003ed865e2bd807cf54a9c607 100644
--- a/app/code/Magento/GiftMessage/Model/CartRepository.php
+++ b/app/code/Magento/GiftMessage/Model/CartRepository.php
@@ -12,7 +12,7 @@ use Magento\Framework\Exception\InputException;
 use Magento\Framework\Exception\State\InvalidTransitionException;
 
 /**
- * Shopping cart gift message repository object.
+ * Shopping cart gift message repository object for registered customer
  */
 class CartRepository implements \Magento\GiftMessage\Api\CartRepositoryInterface
 {
diff --git a/app/code/Magento/GiftMessage/Model/CompositeConfigProvider.php b/app/code/Magento/GiftMessage/Model/CompositeConfigProvider.php
new file mode 100644
index 0000000000000000000000000000000000000000..49fe4c189b1971e7d2eb8b9babea91d665e1fc43
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Model/CompositeConfigProvider.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Model;
+
+use Magento\Checkout\Model\ConfigProviderInterface;
+
+class CompositeConfigProvider implements ConfigProviderInterface
+{
+    /**
+     * @var ConfigProviderInterface[]
+     */
+    private $configProviders;
+
+    /**
+     * @param ConfigProviderInterface[] $configProviders
+     */
+    public function __construct(
+        array $configProviders
+    ) {
+        $this->configProviders = $configProviders;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getConfig()
+    {
+        $config = [];
+        foreach ($this->configProviders as $configProvider) {
+            $config = array_merge_recursive($config, $configProvider->getConfig());
+        }
+        return $config;
+    }
+}
diff --git a/app/code/Magento/GiftMessage/Model/GiftMessageConfigProvider.php b/app/code/Magento/GiftMessage/Model/GiftMessageConfigProvider.php
index aac0982ecb6048d72321897b820d6222fab0b6ec..18d2b55950c90179d2234eb50203e94b1aaf8607 100644
--- a/app/code/Magento/GiftMessage/Model/GiftMessageConfigProvider.php
+++ b/app/code/Magento/GiftMessage/Model/GiftMessageConfigProvider.php
@@ -7,9 +7,16 @@ namespace Magento\GiftMessage\Model;
 
 use Magento\Checkout\Model\ConfigProviderInterface;
 use Magento\GiftMessage\Helper\Message as GiftMessageHelper;
+use Magento\Framework\App\Http\Context as HttpContext;
+use Magento\Customer\Model\Context as CustomerContext;
+use Magento\Framework\UrlInterface;
+use Magento\Framework\Locale\FormatInterface as LocaleFormat;
+use Magento\Framework\Data\Form\FormKey;
 
 /**
- * Configuration provider for GiftMessage rendering on "Shipping Method" step of checkout.
+ * Configuration provider for GiftMessage rendering on "Checkout cart" page.
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 class GiftMessageConfigProvider implements ConfigProviderInterface
 {
@@ -33,22 +40,49 @@ class GiftMessageConfigProvider implements ConfigProviderInterface
      */
     protected $checkoutSession;
 
+    /**
+     * @var \Magento\Store\Model\StoreManagerInterface
+     */
+    protected $storeManager;
+
+    /**
+     * @var LocaleFormat
+     */
+    protected $localeFormat;
+
+    /**
+     * @var FormKey
+     */
+    protected $formKey;
+
     /**
      * @param \Magento\Framework\App\Helper\Context $context
      * @param \Magento\GiftMessage\Api\CartRepositoryInterface $cartRepository
      * @param \Magento\GiftMessage\Api\ItemRepositoryInterface $itemRepository
      * @param \Magento\Checkout\Model\Session $checkoutSession
+     * @param HttpContext $httpContext
+     * @param \Magento\Store\Model\StoreManagerInterface $storeManager
+     * @param LocaleFormat $localeFormat
+     * @param FormKey $formKey
      */
     public function __construct(
         \Magento\Framework\App\Helper\Context $context,
         \Magento\GiftMessage\Api\CartRepositoryInterface $cartRepository,
         \Magento\GiftMessage\Api\ItemRepositoryInterface $itemRepository,
-        \Magento\Checkout\Model\Session $checkoutSession
+        \Magento\Checkout\Model\Session $checkoutSession,
+        HttpContext $httpContext,
+        \Magento\Store\Model\StoreManagerInterface $storeManager,
+        LocaleFormat $localeFormat,
+        FormKey $formKey
     ) {
         $this->scopeConfiguration = $context->getScopeConfig();
         $this->cartRepository = $cartRepository;
         $this->itemRepository = $itemRepository;
         $this->checkoutSession = $checkoutSession;
+        $this->httpContext = $httpContext;
+        $this->storeManager = $storeManager;
+        $this->localeFormat = $localeFormat;
+        $this-> formKey = $formKey;
     }
 
     /**
@@ -57,6 +91,7 @@ class GiftMessageConfigProvider implements ConfigProviderInterface
     public function getConfig()
     {
         $configuration = [];
+        $configuration['giftMessage'] = [];
         $orderLevelGiftMessageConfiguration = (bool)$this->scopeConfiguration->getValue(
             GiftMessageHelper::XPATH_CONFIG_GIFT_MESSAGE_ALLOW_ORDER,
             \Magento\Store\Model\ScopeInterface::SCOPE_STORE
@@ -67,7 +102,7 @@ class GiftMessageConfigProvider implements ConfigProviderInterface
         );
         if ($orderLevelGiftMessageConfiguration) {
             $orderMessages = $this->getOrderLevelGiftMessages();
-            $configuration['isOrderLevelGiftOptionsEnabled'] = true;
+            $configuration['isOrderLevelGiftOptionsEnabled'] = (bool)$this->isQuoteVirtual() ? false : true;
             $configuration['giftMessage']['orderLevel'] = $orderMessages === null ? true : $orderMessages->getData();
         }
         if ($itemLevelGiftMessageConfiguration) {
@@ -75,9 +110,50 @@ class GiftMessageConfigProvider implements ConfigProviderInterface
             $configuration['isItemLevelGiftOptionsEnabled'] = true;
             $configuration['giftMessage']['itemLevel'] = $itemMessages === null ? true : $itemMessages;
         }
+        $configuration['priceFormat'] = $this->localeFormat->getPriceFormat(
+            null,
+            $this->checkoutSession->getQuote()->getQuoteCurrencyCode()
+        );
+        $configuration['storeCode'] = $this->getStoreCode();
+        $configuration['isCustomerLoggedIn'] = $this->isCustomerLoggedIn();
+        $configuration['formKey'] = $this->formKey->getFormKey();
+        $store = $this->storeManager->getStore();
+        $configuration['baseUrl'] = $store->isFrontUrlSecure()
+                ? $store->getBaseUrl(UrlInterface::URL_TYPE_LINK, true)
+                : $store->getBaseUrl(UrlInterface::URL_TYPE_LINK, false);
         return $configuration;
     }
 
+    /**
+     * Check if customer is logged in
+     *
+     * @return bool
+     */
+    private function isCustomerLoggedIn()
+    {
+        return (bool)$this->httpContext->getValue(CustomerContext::CONTEXT_AUTH);
+    }
+
+    /**
+     * Retrieve store code
+     *
+     * @return string
+     */
+    protected function getStoreCode()
+    {
+        return $this->checkoutSession->getQuote()->getStore()->getCode();
+    }
+
+    /**
+     * Check if quote is virtual
+     *
+     * @return bool
+     */
+    protected function isQuoteVirtual()
+    {
+        return $this->checkoutSession->loadCustomerQuote()->getQuote()->getIsVirtual();
+    }
+
     /**
      * Load already specified quote level gift message.
      *
diff --git a/app/code/Magento/GiftMessage/Model/GiftMessageManager.php b/app/code/Magento/GiftMessage/Model/GiftMessageManager.php
index bba98363c7d4a608a7e4a23b821b59af8954b642..b230fb2c40c69875bcf35e184c87710e86bbb38b 100644
--- a/app/code/Magento/GiftMessage/Model/GiftMessageManager.php
+++ b/app/code/Magento/GiftMessage/Model/GiftMessageManager.php
@@ -5,7 +5,6 @@
  */
 namespace Magento\GiftMessage\Model;
 
-use Magento\Framework\Exception\State\InvalidTransitionException;
 use Magento\Framework\Exception\CouldNotSaveException;
 
 class GiftMessageManager
@@ -100,18 +99,9 @@ class GiftMessageManager
      * @param null|int $entityId The entity ID.
      * @return void
      * @throws \Magento\Framework\Exception\CouldNotSaveException The specified gift message is not available.
-     * @throws \Magento\Framework\Exception\State\InvalidTransitionException The billing or shipping address is not set.
      */
     public function setMessage(\Magento\Quote\Model\Quote $quote, $type, $giftMessage, $entityId = null)
     {
-        if ($quote->getBillingAddress()->getCountryId() === null) {
-            throw new InvalidTransitionException(__('Billing address is not set'));
-        }
-
-        // check if shipping address is set
-        if ($quote->getShippingAddress()->getCountryId() === null) {
-            throw new InvalidTransitionException(__('Shipping address is not set'));
-        }
         $message[$type][$entityId] = [
             'from' => $giftMessage->getSender(),
             'to' => $giftMessage->getRecipient(),
diff --git a/app/code/Magento/GiftMessage/Model/GuestCartRepository.php b/app/code/Magento/GiftMessage/Model/GuestCartRepository.php
new file mode 100644
index 0000000000000000000000000000000000000000..b27513fc3550ea850d467d4e0105243664929eb3
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Model/GuestCartRepository.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ *
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\GiftMessage\Model;
+
+use Magento\GiftMessage\Api\Data\MessageInterface;
+use Magento\GiftMessage\Api\GuestCartRepositoryInterface;
+use Magento\Quote\Model\QuoteIdMask;
+use Magento\Quote\Model\QuoteIdMaskFactory;
+
+/**
+ * Shopping cart gift message repository object for guest
+ */
+class GuestCartRepository implements GuestCartRepositoryInterface
+{
+    /**
+     * @var CartRepository
+     */
+    protected $repository;
+
+    /**
+     * @var QuoteIdMaskFactory
+     */
+    protected $quoteIdMaskFactory;
+
+    /**
+     * @param CartRepository $repository
+     * @param QuoteIdMaskFactory $quoteIdMaskFactory
+     */
+    public function __construct(
+        CartRepository $repository,
+        QuoteIdMaskFactory $quoteIdMaskFactory
+    ) {
+        $this->repository = $repository;
+        $this->quoteIdMaskFactory = $quoteIdMaskFactory;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function get($cartId)
+    {
+        /** @var $quoteIdMask QuoteIdMask */
+        $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id');
+        return $this->repository->get($quoteIdMask->getQuoteId());
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function save($cartId, MessageInterface $giftMessage)
+    {
+        /** @var $quoteIdMask QuoteIdMask */
+        $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id');
+        return $this->repository->save($quoteIdMask->getQuoteId(), $giftMessage);
+    }
+}
diff --git a/app/code/Magento/GiftMessage/Model/GuestItemRepository.php b/app/code/Magento/GiftMessage/Model/GuestItemRepository.php
new file mode 100644
index 0000000000000000000000000000000000000000..d46ed3c55894dbf584f0b41aa687a4fbeb66fc4d
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Model/GuestItemRepository.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ *
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\GiftMessage\Model;
+
+use Magento\GiftMessage\Api\Data\MessageInterface;
+use Magento\GiftMessage\Api\GuestItemRepositoryInterface;
+use Magento\Quote\Model\QuoteIdMask;
+use Magento\Quote\Model\QuoteIdMaskFactory;
+
+/**
+ * Shopping cart gift message item repository object for guest
+ */
+class GuestItemRepository implements GuestItemRepositoryInterface
+{
+    /**
+     * @var ItemRepository
+     */
+    protected $repository;
+
+    /**
+     * @var QuoteIdMaskFactory
+     */
+    protected $quoteIdMaskFactory;
+
+    /**
+     * @param ItemRepository $repository
+     * @param QuoteIdMaskFactory $quoteIdMaskFactory
+     */
+    public function __construct(
+        ItemRepository $repository,
+        QuoteIdMaskFactory $quoteIdMaskFactory
+    ) {
+        $this->repository = $repository;
+        $this->quoteIdMaskFactory = $quoteIdMaskFactory;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function get($cartId, $itemId)
+    {
+        /** @var $quoteIdMask QuoteIdMask */
+        $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id');
+        return $this->repository->get($quoteIdMask->getQuoteId(), $itemId);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function save($cartId, MessageInterface $giftMessage, $itemId)
+    {
+        /** @var $quoteIdMask QuoteIdMask */
+        $quoteIdMask = $this->quoteIdMaskFactory->create()->load($cartId, 'masked_id');
+        return $this->repository->save($quoteIdMask->getQuoteId(), $giftMessage, $itemId);
+    }
+}
diff --git a/app/code/Magento/GiftMessage/Model/ItemRepository.php b/app/code/Magento/GiftMessage/Model/ItemRepository.php
index d7220d2516f7a2b934d9365a83c481f13249b1c2..cead9782a4ec13bcfacfba5ba47910cf1c4eaa02 100644
--- a/app/code/Magento/GiftMessage/Model/ItemRepository.php
+++ b/app/code/Magento/GiftMessage/Model/ItemRepository.php
@@ -13,7 +13,7 @@ use Magento\Framework\Exception\State\InvalidTransitionException;
 use Magento\Framework\Exception\NoSuchEntityException;
 
 /**
- * Shopping cart gift message item repository object.
+ * Shopping cart gift message item repository object for registered customer
  */
 class ItemRepository implements \Magento\GiftMessage\Api\ItemRepositoryInterface
 {
diff --git a/app/code/Magento/GiftMessage/Model/Plugin/TotalsDataProcessorPlugin.php b/app/code/Magento/GiftMessage/Model/Plugin/TotalsDataProcessorPlugin.php
deleted file mode 100644
index 9d26c0a38b413dc6b3f19718fba77544b0413432..0000000000000000000000000000000000000000
--- a/app/code/Magento/GiftMessage/Model/Plugin/TotalsDataProcessorPlugin.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-namespace Magento\GiftMessage\Model\Plugin;
-
-use Magento\Quote\Model\Cart\TotalsAdditionalDataProcessor;
-use Magento\Quote\Api\Data\TotalsAdditionalDataInterface;
-
-/**
- * Shopping cart gift message item repository object.
- */
-class TotalsDataProcessorPlugin
-{
-    /**
-     * @var \Magento\GiftMessage\Api\CartRepositoryInterface
-     */
-    protected $cartRepository;
-
-    /**
-     * @var \Magento\GiftMessage\Api\ItemRepositoryInterface
-     */
-    protected $itemRepositoryInterface;
-
-    /**
-     * @param \Magento\GiftMessage\Api\CartRepositoryInterface $cartRepository
-     * @param \Magento\GiftMessage\Api\ItemRepositoryInterface $itemRepository
-     */
-    public function __construct(
-        \Magento\GiftMessage\Api\CartRepositoryInterface $cartRepository,
-        \Magento\GiftMessage\Api\ItemRepositoryInterface $itemRepository
-    ) {
-        $this->cartRepository = $cartRepository;
-        $this->itemRepositoryInterface = $itemRepository;
-    }
-
-    /**
-     * Set gift messages from additional data.
-     *
-     * @param \Magento\Quote\Model\Cart\TotalsAdditionalDataProcessor $subject
-     * @param TotalsAdditionalDataInterface $additionalData
-     * @param int $cartId
-     * @return void
-     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
-     */
-    public function beforeProcess(
-        TotalsAdditionalDataProcessor $subject,
-        TotalsAdditionalDataInterface $additionalData,
-        $cartId
-    ) {
-        $giftMessages = $additionalData->getExtensionAttributes()->getGiftMessages();
-        foreach ($giftMessages as $giftMessage) {
-            /** @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */
-            $entityType = $giftMessage->getExtensionAttributes()->getEntityType();
-            $entityId = $giftMessage->getExtensionAttributes()->getEntityId();
-            if ($entityType === 'quote') {
-                $this->cartRepository->save($cartId, $giftMessage);
-            } elseif ($entityType === 'item') {
-                $this->itemRepositoryInterface->save($cartId, $giftMessage, $entityId);
-            }
-        }
-    }
-}
diff --git a/app/code/Magento/GiftMessage/Test/Unit/Block/Cart/GiftOptionsTest.php b/app/code/Magento/GiftMessage/Test/Unit/Block/Cart/GiftOptionsTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..32a94d762c75f446d4fab739287f165ae7e9e58f
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Test/Unit/Block/Cart/GiftOptionsTest.php
@@ -0,0 +1,80 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Test\Unit\Block\Cart;
+
+use Magento\GiftMessage\Block\Cart\GiftOptions;
+
+class GiftOptionsTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var \Magento\Backend\Block\Template\Context|\PHPUnit_Framework_MockObject_MockObject */
+    protected $context;
+
+    /** @var \Magento\GiftMessage\Model\CompositeConfigProvider|\PHPUnit_Framework_MockObject_MockObject */
+    protected $compositeConfigProvider;
+
+    /** @var \Magento\Checkout\Model\CompositeConfigProvider|\PHPUnit_Framework_MockObject_MockObject */
+    protected $layoutProcessorMock;
+
+    /** @var \Magento\GiftMessage\Block\Cart\GiftOptions */
+    protected $model;
+
+    /** @var \Magento\Framework\Json\Encoder|\PHPUnit_Framework_MockObject_MockObject */
+    protected $jsonEncoderMock;
+
+    /** @var array  */
+    protected $jsLayout = ['root' => 'node'];
+
+    public function setUp()
+    {
+        $this->context = $this->getMock('Magento\Backend\Block\Template\Context', [], [], '', false);
+        $this->jsonEncoderMock = $this->getMock('Magento\Framework\Json\Encoder', [], [], '', false);
+        $this->compositeConfigProvider = $this->getMock(
+            'Magento\GiftMessage\Model\CompositeConfigProvider',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->layoutProcessorMock = $this->getMockForAbstractClass(
+            'Magento\Checkout\Block\Checkout\LayoutProcessorInterface',
+            [],
+            '',
+            false
+        );
+        $this->model = new GiftOptions(
+            $this->context,
+            $this->jsonEncoderMock,
+            $this->compositeConfigProvider,
+            [$this->layoutProcessorMock],
+            ['jsLayout' => $this->jsLayout]
+        );
+    }
+
+    public function testGetJsLayout()
+    {
+        $this->layoutProcessorMock->expects($this->once())
+            ->method('process')
+            ->with($this->jsLayout)
+            ->willReturnArgument(0);
+        $this->jsonEncoderMock->expects($this->once())
+            ->method('encode')
+            ->with($this->jsLayout)
+            ->willReturnArgument(0);
+        $this->assertEquals($this->jsLayout, $this->model->getJsLayout());
+    }
+
+    public function testGetGiftOptionsConfigJson()
+    {
+        $this->compositeConfigProvider->expects($this->once())
+            ->method('getConfig')
+            ->willReturn($this->jsLayout);
+        $this->jsonEncoderMock->expects($this->once())
+            ->method('encode')
+            ->with($this->jsLayout)
+            ->willReturnArgument(0);
+        $this->assertEquals($this->jsLayout, $this->model->getGiftOptionsConfigJson());
+    }
+}
diff --git a/app/code/Magento/GiftMessage/Test/Unit/Block/Cart/Item/Renderer/Actions/GiftOptionsTest.php b/app/code/Magento/GiftMessage/Test/Unit/Block/Cart/Item/Renderer/Actions/GiftOptionsTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..0a3f3e89b7db12507f78d643cc47758e7e55eb4c
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Test/Unit/Block/Cart/Item/Renderer/Actions/GiftOptionsTest.php
@@ -0,0 +1,79 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Test\Unit\Block\Cart\Item\Renderer\Actions;
+
+use Magento\Backend\Block\Template\Context;
+use Magento\Checkout\Block\Checkout\LayoutProcessorInterface;
+use Magento\Framework\Json\Encoder;
+use Magento\GiftMessage\Block\Cart\Item\Renderer\Actions\GiftOptions;
+use Magento\Quote\Model\Quote\Item;
+
+class GiftOptionsTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var GiftOptions */
+    protected $model;
+
+    /** @var Context|\PHPUnit_Framework_MockObject_MockObject */
+    protected $contextMock;
+
+    /** @var LayoutProcessorInterface|\PHPUnit_Framework_MockObject_MockObject */
+    protected $layoutProcessorMock;
+
+    /** @var Encoder|\PHPUnit_Framework_MockObject_MockObject */
+    protected $jsonEncoderMock;
+
+    /** @var array  */
+    protected $jsLayout = ['root' => 'node'];
+
+    public function setUp()
+    {
+        $this->contextMock = $this->getMockBuilder('Magento\Backend\Block\Template\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->jsonEncoderMock = $this->getMockBuilder('Magento\Framework\Json\Encoder')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->compositeConfigProvider = $this->getMockBuilder('Magento\Checkout\Model\CompositeConfigProvider')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->layoutProcessorMock = $this->getMockBuilder('Magento\Checkout\Block\Checkout\LayoutProcessorInterface')
+            ->disableOriginalConstructor()
+            ->getMockForAbstractClass();
+
+        $this->model = new GiftOptions(
+            $this->contextMock,
+            $this->jsonEncoderMock,
+            [$this->layoutProcessorMock],
+            ['jsLayout' => $this->jsLayout]
+        );
+    }
+
+    public function testGetJsLayout()
+    {
+        /**
+         * @var Item|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $itemMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->layoutProcessorMock->expects($this->once())
+            ->method('process')
+            ->with($this->jsLayout, $itemMock)
+            ->willReturnArgument(0);
+
+        $this->jsonEncoderMock->expects($this->once())
+            ->method('encode')
+            ->with($this->jsLayout)
+            ->willReturnArgument(0);
+
+        $this->model->setItem($itemMock);
+        $this->assertEquals($this->jsLayout, $this->model->getJsLayout());
+    }
+}
diff --git a/app/code/Magento/GiftMessage/Test/Unit/Block/Cart/Item/Renderer/Actions/ItemIdProcessorTest.php b/app/code/Magento/GiftMessage/Test/Unit/Block/Cart/Item/Renderer/Actions/ItemIdProcessorTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..3231c73acb741f51b7cad2b2bd12d46d5b349cce
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Test/Unit/Block/Cart/Item/Renderer/Actions/ItemIdProcessorTest.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Test\Unit\Block\Cart\Item\Renderer\Actions;
+
+use Magento\GiftMessage\Block\Cart\Item\Renderer\Actions\ItemIdProcessor;
+use Magento\Quote\Model\Quote\Item;
+
+class ItemIdProcessorTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var ItemIdProcessor */
+    protected $model;
+
+    public function setUp()
+    {
+        $this->model = new ItemIdProcessor();
+    }
+
+    /**
+     * @param int $itemId
+     * @param array $jsLayout
+     * @param array $result
+     * @dataProvider dataProviderProcess
+     */
+    public function testProcess($itemId, array $jsLayout, array $result)
+    {
+        /**
+         * @var Item|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $itemMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $itemMock->expects($this->any())
+            ->method('getId')
+            ->willReturn($itemId);
+
+        $this->assertEquals($result, $this->model->process($jsLayout, $itemMock));
+    }
+
+    public function dataProviderProcess()
+    {
+        return [
+            [
+                12,
+                ['components' => []],
+                ['components' => []],
+            ],
+            [
+                21,
+                ['components' => ['giftOptionsCartItem' => []]],
+                ['components' => ['giftOptionsCartItem-21' => ['config' => ['itemId' => 21]]]],
+            ],
+            [
+                23,
+                ['components' => ['giftOptionsCartItem' => ['config' => ['key' => 'value']]]],
+                ['components' => ['giftOptionsCartItem-23' => ['config' => ['key' => 'value', 'itemId' => 23]]]],
+            ],
+            [
+                23,
+                ['components' => ['giftOptionsCartItem' => ['config' => ['key' => 'value'], 'key2' => 'value2']]],
+                [
+                    'components' => [
+                        'giftOptionsCartItem-23' => [
+                            'config' => ['key' => 'value', 'itemId' => 23], 'key2' => 'value2'
+                        ]
+                    ]
+                ],
+            ],
+        ];
+    }
+}
diff --git a/app/code/Magento/GiftMessage/Test/Unit/Model/CartRepositoryTest.php b/app/code/Magento/GiftMessage/Test/Unit/Model/CartRepositoryTest.php
index 6974c1f131cda2f511408dde59205c496619a7a1..2998ba06c7614c722c80bfc5e6a68abfc7266500 100644
--- a/app/code/Magento/GiftMessage/Test/Unit/Model/CartRepositoryTest.php
+++ b/app/code/Magento/GiftMessage/Test/Unit/Model/CartRepositoryTest.php
@@ -4,9 +4,10 @@
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
-
 namespace Magento\GiftMessage\Test\Unit\Model;
 
+// @codingStandardsIgnoreFile
+
 use Magento\GiftMessage\Model\CartRepository;
 
 class CartRepositoryTest extends \PHPUnit_Framework_TestCase
diff --git a/app/code/Magento/GiftMessage/Test/Unit/Model/GiftMessageManagerTest.php b/app/code/Magento/GiftMessage/Test/Unit/Model/GiftMessageManagerTest.php
index e44dca6dec3c1d412b24f7110c0a695893267aa6..e578198b12162cdef6f6e7035dce7e48596aa053 100644
--- a/app/code/Magento/GiftMessage/Test/Unit/Model/GiftMessageManagerTest.php
+++ b/app/code/Magento/GiftMessage/Test/Unit/Model/GiftMessageManagerTest.php
@@ -48,16 +48,6 @@ class GiftMessageManagerTest extends \PHPUnit_Framework_TestCase
      */
     protected $giftMessageMock;
 
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $billingAddressMock;
-
-    /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
-     */
-    protected $shippingAddressMock;
-
     protected function setUp()
     {
         $this->messageFactoryMock =
@@ -131,10 +121,6 @@ class GiftMessageManagerTest extends \PHPUnit_Framework_TestCase
             '',
             false);
 
-        $this->billingAddressMock =
-            $this->getMock('\Magento\Sales\Model\Quote\Address', ['getCountryId', '__wakeup'], [], '', false);
-        $this->shippingAddressMock =
-            $this->getMock('\Magento\Sales\Model\Quote\Address', ['getCountryId', '__wakeup'], [], '', false);
         $this->model = new \Magento\GiftMessage\Model\GiftMessageManager($this->messageFactoryMock);
     }
 
@@ -332,52 +318,12 @@ class GiftMessageManagerTest extends \PHPUnit_Framework_TestCase
         $this->model->add($giftMessages, $this->quoteMock);
     }
 
-    /**
-     * @expectedException \Magento\Framework\Exception\State\InvalidTransitionException
-     * @expectedExceptionMessage Billing address is not set
-     */
-    public function testSetMessageEmptyBillingAddressException()
-    {
-        $this->quoteMock->expects($this->once())
-            ->method('getBillingAddress')
-            ->will($this->returnValue($this->billingAddressMock));
-        $this->billingAddressMock->expects($this->once())->method('getCountryId')->will($this->returnValue(null));
-
-        $this->model->setMessage($this->quoteMock, 'item', $this->giftMessageMock);
-    }
-
-    /**
-     * @expectedException \Magento\Framework\Exception\State\InvalidTransitionException
-     * @expectedExceptionMessage Shipping address is not set
-     */
-    public function testSetMessageEmptyShippingAddressException()
-    {
-        $this->quoteMock->expects($this->once())
-            ->method('getBillingAddress')
-            ->will($this->returnValue($this->billingAddressMock));
-        $this->billingAddressMock->expects($this->any())->method('getCountryId')->will($this->returnValue(12));
-        $this->quoteMock->expects($this->once())
-            ->method('getShippingAddress')
-            ->will($this->returnValue($this->shippingAddressMock));
-        $this->shippingAddressMock->expects($this->any())->method('getCountryId')->will($this->returnValue(null));
-
-        $this->model->setMessage($this->quoteMock, 'item', $this->giftMessageMock);
-    }
-
     /**
      * @expectedException \Magento\Framework\Exception\CouldNotSaveException
      * @expectedExceptionMessage Could not add gift message to shopping cart
      */
     public function testSetMessageCouldNotAddGiftMessageException()
     {
-        $this->quoteMock->expects($this->once())
-            ->method('getBillingAddress')
-            ->will($this->returnValue($this->billingAddressMock));
-        $this->billingAddressMock->expects($this->once())->method('getCountryId')->will($this->returnValue(12));
-        $this->quoteMock->expects($this->once())
-            ->method('getShippingAddress')
-            ->will($this->returnValue($this->shippingAddressMock));
-        $this->shippingAddressMock->expects($this->once())->method('getCountryId')->will($this->returnValue(13));
         $this->giftMessageMock->expects($this->once())->method('getSender')->will($this->returnValue('sender'));
         $this->giftMessageMock->expects($this->once())->method('getRecipient')->will($this->returnValue('recipient'));
         $this->giftMessageMock->expects($this->once())->method('getMessage')->will($this->returnValue('Message'));
@@ -388,5 +334,4 @@ class GiftMessageManagerTest extends \PHPUnit_Framework_TestCase
 
         $this->model->setMessage($this->quoteMock, 'item', $this->giftMessageMock);
     }
-
 }
diff --git a/app/code/Magento/GiftMessage/Test/Unit/Model/GuestCartRepositoryTest.php b/app/code/Magento/GiftMessage/Test/Unit/Model/GuestCartRepositoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..8344cdd7541ee114dd203e62a4357fe93106344d
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Test/Unit/Model/GuestCartRepositoryTest.php
@@ -0,0 +1,122 @@
+<?php
+/**
+ *
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Test\Unit\Model;
+
+// @codingStandardsIgnoreFile
+
+use Magento\GiftMessage\Api\Data\MessageInterface;
+use Magento\GiftMessage\Model\ItemRepository;
+use Magento\GiftMessage\Model\GuestItemRepository;
+use Magento\Quote\Model\QuoteIdMask;
+use Magento\Quote\Model\QuoteIdMaskFactory;
+
+class GuestCartRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var GuestItemRepository
+     */
+    protected $model;
+
+    /**
+     * @var ItemRepository|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $repositoryMock;
+
+    /**
+     * @var QuoteIdMaskFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $quoteIdMaskFactoryMock;
+
+    protected function setUp()
+    {
+        $this->repositoryMock = $this->getMockBuilder('Magento\GiftMessage\Model\ItemRepository')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->quoteIdMaskFactoryMock = $this->getMockBuilder('Magento\Quote\Model\QuoteIdMaskFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMockForAbstractClass();
+
+        $this->model = new GuestItemRepository(
+            $this->repositoryMock,
+            $this->quoteIdMaskFactoryMock
+        );
+    }
+
+    public function testGet()
+    {
+        $cartId = 'jIUggbo76';
+        $quoteId = 123;
+        $itemId = 234;
+
+        /** @var QuoteIdMask|\PHPUnit_Framework_MockObject_MockObject $quoteIdMaskMock */
+        $quoteIdMaskMock = $this->getMockBuilder('Magento\Quote\Model\QuoteIdMask')
+            ->setMethods(['getQuoteId', 'load'])
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->quoteIdMaskFactoryMock->expects($this->once())
+            ->method('create')
+            ->willReturn($quoteIdMaskMock);
+
+        $quoteIdMaskMock->expects($this->once())
+            ->method('load')
+            ->with($cartId, 'masked_id')
+            ->willReturnSelf();
+        $quoteIdMaskMock->expects($this->once())
+            ->method('getQuoteId')
+            ->willReturn($quoteId);
+
+        /** @var MessageInterface|\PHPUnit_Framework_MockObject_MockObject $messageMock */
+        $messageMock = $this->getMockBuilder('Magento\GiftMessage\Api\Data\MessageInterface')
+            ->getMockForAbstractClass();
+
+        $this->repositoryMock->expects($this->once())
+            ->method('get')
+            ->with($quoteId, $itemId)
+            ->willReturn($messageMock);
+
+        $this->assertEquals($messageMock, $this->model->get($cartId, $itemId));
+    }
+
+    public function testSave()
+    {
+        $cartId = 'jIUggbo76';
+        $quoteId = 123;
+        $itemId = 234;
+
+        /** @var QuoteIdMask|\PHPUnit_Framework_MockObject_MockObject $quoteIdMaskMock */
+        $quoteIdMaskMock = $this->getMockBuilder('Magento\Quote\Model\QuoteIdMask')
+            ->setMethods(['getQuoteId', 'load'])
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->quoteIdMaskFactoryMock->expects($this->once())
+            ->method('create')
+            ->willReturn($quoteIdMaskMock);
+
+        $quoteIdMaskMock->expects($this->once())
+            ->method('load')
+            ->with($cartId, 'masked_id')
+            ->willReturnSelf();
+        $quoteIdMaskMock->expects($this->once())
+            ->method('getQuoteId')
+            ->willReturn($quoteId);
+
+        /** @var MessageInterface|\PHPUnit_Framework_MockObject_MockObject $messageMock */
+        $messageMock = $this->getMockBuilder('Magento\GiftMessage\Api\Data\MessageInterface')
+            ->getMockForAbstractClass();
+
+        $this->repositoryMock->expects($this->once())
+            ->method('save')
+            ->with($quoteId, $messageMock, $itemId)
+            ->willReturn(true);
+
+        $this->assertTrue($this->model->save($cartId, $messageMock, $itemId));
+    }
+}
diff --git a/app/code/Magento/GiftMessage/Test/Unit/Model/GuestItemRepositoryTest.php b/app/code/Magento/GiftMessage/Test/Unit/Model/GuestItemRepositoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..ec445ead2172ac058ed07506cd31d995d844593c
--- /dev/null
+++ b/app/code/Magento/GiftMessage/Test/Unit/Model/GuestItemRepositoryTest.php
@@ -0,0 +1,225 @@
+<?php
+/**
+ *
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Test\Unit\Model;
+
+// @codingStandardsIgnoreFile
+
+use Magento\GiftMessage\Model\ItemRepository;
+
+class GuestItemRepositoryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var ItemRepository
+     */
+    protected $itemRepository;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $quoteRepositoryMock;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $messageFactoryMock;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $quoteMock;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $messageMock;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $quoteItemMock;
+
+    /**
+     * @var string
+     */
+    protected $cartId = 13;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $storeManagerMock;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $giftMessageManagerMock;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $helperMock;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $storeMock;
+
+    protected function setUp()
+    {
+        $this->quoteRepositoryMock = $this->getMock('Magento\Quote\Model\QuoteRepository', [], [], '', false);
+        $this->messageFactoryMock = $this->getMock(
+            'Magento\GiftMessage\Model\MessageFactory',
+            [
+                'create',
+                '__wakeup'
+            ],
+            [],
+            '',
+            false
+        );
+        $this->messageMock = $this->getMock('Magento\GiftMessage\Model\Message', [], [], '', false);
+        $this->quoteItemMock = $this->getMock(
+            '\Magento\Qote\Model\Quote\Item',
+            [
+                'getGiftMessageId',
+                '__wakeup'
+            ],
+            [],
+            '',
+            false
+        );
+        $this->quoteMock = $this->getMock(
+            '\Magento\Quote\Model\Quote',
+            [
+                'getGiftMessageId',
+                'getItemById',
+                '__wakeup',
+            ],
+            [],
+            '',
+            false
+        );
+        $this->storeManagerMock = $this->getMock('Magento\Store\Model\StoreManagerInterface');
+        $this->giftMessageManagerMock =
+            $this->getMock('Magento\GiftMessage\Model\GiftMessageManager', [], [], '', false);
+        $this->helperMock = $this->getMock('Magento\GiftMessage\Helper\Message', [], [], '', false);
+        $this->storeMock = $this->getMock('Magento\Store\Model\Store', [], [], '', false);
+        $this->itemRepository = new \Magento\GiftMessage\Model\ItemRepository(
+            $this->quoteRepositoryMock,
+            $this->storeManagerMock,
+            $this->giftMessageManagerMock,
+            $this->helperMock,
+            $this->messageFactoryMock
+        );
+
+        $this->quoteRepositoryMock->expects($this->once())
+            ->method('getActive')
+            ->with($this->cartId)
+            ->will($this->returnValue($this->quoteMock));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\NoSuchEntityException
+     * @expectedExceptionMessage There is no item with provided id in the cart
+     */
+    public function testGetWithNoSuchEntityException()
+    {
+        $itemId = 2;
+
+        $this->quoteMock->expects($this->once())->method('getItemById')->with($itemId)->will($this->returnValue(null));
+
+        $this->itemRepository->get($this->cartId, $itemId);
+    }
+
+    public function testGetWithoutMessageId()
+    {
+        $messageId = 0;
+        $itemId = 2;
+
+        $this->quoteMock->expects($this->once())
+            ->method('getItemById')
+            ->with($itemId)
+            ->will($this->returnValue($this->quoteItemMock));
+        $this->quoteItemMock->expects($this->once())->method('getGiftMessageId')->will($this->returnValue($messageId));
+
+        $this->assertNull($this->itemRepository->get($this->cartId, $itemId));
+    }
+
+    public function testGet()
+    {
+        $messageId = 123;
+        $itemId = 2;
+
+        $this->quoteMock->expects($this->once())
+            ->method('getItemById')
+            ->with($itemId)
+            ->will($this->returnValue($this->quoteItemMock));
+        $this->quoteItemMock->expects($this->once())->method('getGiftMessageId')->will($this->returnValue($messageId));
+        $this->messageFactoryMock->expects($this->once())
+            ->method('create')
+            ->will($this->returnValue($this->messageMock));
+        $this->messageMock->expects($this->once())
+            ->method('load')
+            ->with($messageId)
+            ->will($this->returnValue($this->messageMock));
+
+        $this->assertEquals($this->messageMock, $this->itemRepository->get($this->cartId, $itemId));
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\NoSuchEntityException
+     * @expectedExceptionMessage There is no product with provided  itemId: 1 in the cart
+     */
+    public function testSaveWithNoSuchEntityException()
+    {
+        $itemId = 1;
+
+        $this->quoteMock->expects($this->once())->method('getItemById')->with($itemId)->will($this->returnValue(null));
+
+        $this->itemRepository->save($this->cartId, $this->messageMock, $itemId);
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\State\InvalidTransitionException
+     * @expectedExceptionMessage Gift Messages is not applicable for virtual products
+     */
+    public function testSaveWithInvalidTransitionException()
+    {
+        $itemId = 1;
+
+        $quoteItem = $this->getMock('\Magento\Sales\Model\Quote\Item', ['getIsVirtual', '__wakeup'], [], '', false);
+        $this->quoteMock->expects($this->once())
+            ->method('getItemById')
+            ->with($itemId)
+            ->will($this->returnValue($quoteItem));
+        $quoteItem->expects($this->once())->method('getIsVirtual')->will($this->returnValue(1));
+
+        $this->itemRepository->save($this->cartId, $this->messageMock, $itemId);
+    }
+
+    public function testSave()
+    {
+        $itemId = 1;
+
+        $quoteItem = $this->getMock('\Magento\Sales\Model\Quote\Item', ['getIsVirtual', '__wakeup'], [], '', false);
+        $this->quoteMock->expects($this->once())
+            ->method('getItemById')
+            ->with($itemId)
+            ->will($this->returnValue($quoteItem));
+        $quoteItem->expects($this->once())->method('getIsVirtual')->will($this->returnValue(0));
+        $this->storeManagerMock->expects($this->once())->method('getStore')->will($this->returnValue($this->storeMock));
+        $this->helperMock->expects($this->once())
+            ->method('isMessagesAllowed')
+            ->with('items', $this->quoteMock, $this->storeMock)
+            ->will($this->returnValue(true));
+        $this->giftMessageManagerMock->expects($this->once())
+            ->method('setMessage')
+            ->with($this->quoteMock, 'quote_item', $this->messageMock, $itemId)
+            ->will($this->returnValue($this->giftMessageManagerMock));
+
+        $this->assertTrue($this->itemRepository->save($this->cartId, $this->messageMock, $itemId));
+    }
+}
diff --git a/app/code/Magento/GiftMessage/Test/Unit/Model/ItemRepositoryTest.php b/app/code/Magento/GiftMessage/Test/Unit/Model/ItemRepositoryTest.php
index 5caa71f1b2bd2a492dc92b99c63c92970169d1bf..ed3f45fd157b4b63a7e747d3172c60e02921aafc 100644
--- a/app/code/Magento/GiftMessage/Test/Unit/Model/ItemRepositoryTest.php
+++ b/app/code/Magento/GiftMessage/Test/Unit/Model/ItemRepositoryTest.php
@@ -4,9 +4,10 @@
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
-
 namespace Magento\GiftMessage\Test\Unit\Model;
 
+// @codingStandardsIgnoreFile
+
 use Magento\GiftMessage\Model\ItemRepository;
 
 class ItemRepositoryTest extends \PHPUnit_Framework_TestCase
diff --git a/app/code/Magento/GiftMessage/composer.json b/app/code/Magento/GiftMessage/composer.json
index 2e2e4b6a8e46e6c2d9cb6a63e3b6a69c5ef0c69d..6159ad811b2306d08af85bd45cd0475e3ca56cfe 100644
--- a/app/code/Magento/GiftMessage/composer.json
+++ b/app/code/Magento/GiftMessage/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-multishipping": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-multishipping": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/GiftMessage/etc/di.xml b/app/code/Magento/GiftMessage/etc/di.xml
index 6d3a903c6804546afbb95cc7805b746d5acd6e39..47a6c71f15a4028fed977849abe9e3f1e1221219 100644
--- a/app/code/Magento/GiftMessage/etc/di.xml
+++ b/app/code/Magento/GiftMessage/etc/di.xml
@@ -15,6 +15,8 @@
     </type>
     <preference for="Magento\GiftMessage\Api\CartRepositoryInterface" type="Magento\GiftMessage\Model\CartRepository"/>
     <preference for="Magento\GiftMessage\Api\ItemRepositoryInterface" type="Magento\GiftMessage\Model\ItemRepository"/>
+    <preference for="Magento\GiftMessage\Api\GuestCartRepositoryInterface" type="Magento\GiftMessage\Model\GuestCartRepository"/>
+    <preference for="Magento\GiftMessage\Api\GuestItemRepositoryInterface" type="Magento\GiftMessage\Model\GuestItemRepository"/>
     <preference for="Magento\GiftMessage\Api\OrderRepositoryInterface" type="Magento\GiftMessage\Model\OrderRepository"/>
     <preference for="Magento\GiftMessage\Api\OrderItemRepositoryInterface" type="Magento\GiftMessage\Model\OrderItemRepository"/>
     <preference for="Magento\GiftMessage\Api\Data\MessageInterface" type="Magento\GiftMessage\Model\Message"/>
@@ -26,7 +28,4 @@
         <plugin name="save_gift_message" type="Magento\GiftMessage\Model\Plugin\OrderSave"/>
         <plugin name="get_gift_message" type="Magento\GiftMessage\Model\Plugin\OrderGet"/>
     </type>
-    <type name="\Magento\Quote\Model\Cart\TotalsAdditionalDataProcessor">
-        <plugin name="gift_message_processor" type="Magento\GiftMessage\Model\Plugin\TotalsDataProcessorPlugin" />
-    </type>
 </config>
diff --git a/app/code/Magento/GiftMessage/etc/frontend/di.xml b/app/code/Magento/GiftMessage/etc/frontend/di.xml
index 36f49a653bd335290781925b7db55593cbc5efe9..faa2f043fe6059d83e3bd1dc97f92c25f6553be9 100644
--- a/app/code/Magento/GiftMessage/etc/frontend/di.xml
+++ b/app/code/Magento/GiftMessage/etc/frontend/di.xml
@@ -29,11 +29,18 @@
     <type name="Magento\Multishipping\Model\Checkout\Type\Multishipping">
         <plugin name="save_gift_messages" type="Magento\GiftMessage\Model\Type\Plugin\Multishipping"/>
     </type>
-    <type name="Magento\Checkout\Model\CompositeConfigProvider">
+    <type name="Magento\GiftMessage\Model\CompositeConfigProvider">
         <arguments>
             <argument name="configProviders" xsi:type="array">
                 <item name="gift_message_config_provider" xsi:type="object">Magento\GiftMessage\Model\GiftMessageConfigProvider</item>
             </argument>
         </arguments>
     </type>
+    <type name="Magento\GiftMessage\Block\Cart\Item\Renderer\Actions\GiftOptions">
+        <arguments>
+            <argument name="layoutProcessors" xsi:type="array">
+                <item name="itemIdProcessor" xsi:type="object">Magento\GiftMessage\Block\Cart\Item\Renderer\Actions\ItemIdProcessor</item>
+            </argument>
+        </arguments>
+    </type>
 </config>
diff --git a/app/code/Magento/GiftMessage/etc/webapi.xml b/app/code/Magento/GiftMessage/etc/webapi.xml
index c5dd571a7ac105813159525195c8074be14be8c6..bb0b2f0795634c0b1f798c27883a042dfdc72939 100644
--- a/app/code/Magento/GiftMessage/etc/webapi.xml
+++ b/app/code/Magento/GiftMessage/etc/webapi.xml
@@ -7,6 +7,7 @@
 -->
 <routes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="../../../../../app/code/Magento/Webapi/etc/webapi.xsd">
+    <!-- For authorized customer -->
     <route url="/V1/carts/:cartId/gift-message" method="GET">
         <service class="Magento\GiftMessage\Api\CartRepositoryInterface" method="get"/>
         <resources>
@@ -31,4 +32,68 @@
             <resource ref="Magento_Sales::create" />
         </resources>
     </route>
+
+    <!-- For current customer -->
+    <route url="/V1/carts/mine/gift-message" method="GET">
+        <service class="Magento\GiftMessage\Api\CartRepositoryInterface" method="get"/>
+        <resources>
+            <resource ref="self" />
+        </resources>
+        <data>
+            <parameter name="cartId" force="true">%cart_id%</parameter>
+        </data>
+    </route>
+    <route url="/V1/carts/mine/gift-message/:itemId" method="GET">
+        <service class="Magento\GiftMessage\Api\ItemRepositoryInterface" method="get"/>
+        <resources>
+            <resource ref="self" />
+        </resources>
+        <data>
+            <parameter name="cartId" force="true">%cart_id%</parameter>
+        </data>
+    </route>
+    <route url="/V1/carts/mine/gift-message" method="POST">
+        <service class="Magento\GiftMessage\Api\CartRepositoryInterface" method="save"/>
+        <resources>
+            <resource ref="self" />
+        </resources>
+        <data>
+            <parameter name="cartId" force="true">%cart_id%</parameter>
+        </data>
+    </route>
+    <route url="/V1/carts/mine/gift-message/:itemId" method="POST">
+        <service class="Magento\GiftMessage\Api\ItemRepositoryInterface" method="save"/>
+        <resources>
+            <resource ref="self" />
+        </resources>
+        <data>
+            <parameter name="cartId" force="true">%cart_id%</parameter>
+        </data>
+    </route>
+
+    <!-- For guests -->
+    <route url="/V1/guest-carts/:cartId/gift-message" method="GET">
+        <service class="Magento\GiftMessage\Api\GuestCartRepositoryInterface" method="get"/>
+        <resources>
+            <resource ref="anonymous" />
+        </resources>
+    </route>
+    <route url="/V1/guest-carts/:cartId/gift-message/:itemId" method="GET">
+        <service class="Magento\GiftMessage\Api\GuestItemRepositoryInterface" method="get"/>
+        <resources>
+            <resource ref="anonymous" />
+        </resources>
+    </route>
+    <route url="/V1/guest-carts/:cartId/gift-message" method="POST">
+        <service class="Magento\GiftMessage\Api\GuestCartRepositoryInterface" method="save"/>
+        <resources>
+            <resource ref="anonymous" />
+        </resources>
+    </route>
+    <route url="/V1/guest-carts/:cartId/gift-message/:itemId" method="POST">
+        <service class="Magento\GiftMessage\Api\GuestItemRepositoryInterface" method="save"/>
+        <resources>
+            <resource ref="anonymous" />
+        </resources>
+    </route>
 </routes>
diff --git a/app/code/Magento/GiftMessage/view/frontend/layout/checkout_cart_index.xml b/app/code/Magento/GiftMessage/view/frontend/layout/checkout_cart_index.xml
new file mode 100644
index 0000000000000000000000000000000000000000..66e18b7a0f7f7ecb45b5e3ae98d5d2bc3b019cad
--- /dev/null
+++ b/app/code/Magento/GiftMessage/view/frontend/layout/checkout_cart_index.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="checkout.cart.order.actions">
+            <block class="Magento\GiftMessage\Block\Cart\GiftOptions" name="checkout.cart.order.actions.gift_options" template="cart/gift_options.phtml" cacheable="false">
+                <arguments>
+                    <argument name="jsLayout" xsi:type="array">
+                        <item name="types" xsi:type="array"/>
+                        <item name="components" xsi:type="array">
+                            <item name="giftOptionsCart" xsi:type="array">
+                                <item name="component" xsi:type="string">Magento_GiftMessage/js/view/gift-message</item>
+                                <item name="config" xsi:type="array">
+                                    <item name="template" xsi:type="string">Magento_GiftMessage/gift-message</item>
+                                    <item name="formTemplate" xsi:type="string">Magento_GiftMessage/gift-message-form</item>
+                                </item>
+                            </item>
+                        </item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
+</page>
diff --git a/app/code/Magento/GiftMessage/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/GiftMessage/view/frontend/layout/checkout_cart_item_renderers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b94cab5dace25517631f0034bdf5098ee867b64d
--- /dev/null
+++ b/app/code/Magento/GiftMessage/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="checkout.cart.item.renderers.default.actions">
+            <block class="Magento\GiftMessage\Block\Cart\Item\Renderer\Actions\GiftOptions" name="checkout.cart.item.renderers.default.actions.gift_options" template="cart/item/renderer/actions/gift_options.phtml" before="-" cacheable="false">
+                <arguments>
+                    <argument name="jsLayout" xsi:type="array">
+                        <item name="types" xsi:type="array"/>
+                        <item name="components" xsi:type="array">
+                            <item name="giftOptionsCartItem" xsi:type="array">
+                                <item name="component" xsi:type="string">Magento_GiftMessage/js/view/gift-message</item>
+                                <item name="config" xsi:type="array">
+                                    <item name="template" xsi:type="string">Magento_GiftMessage/gift-message-item-level</item>
+                                    <item name="formTemplate" xsi:type="string">Magento_GiftMessage/gift-message-form</item>
+                                </item>
+                            </item>
+                        </item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+        <referenceBlock name="checkout.cart.item.renderers.simple.actions">
+            <block class="Magento\GiftMessage\Block\Cart\Item\Renderer\Actions\GiftOptions" name="checkout.cart.item.renderers.simple.actions.gift_options" template="cart/item/renderer/actions/gift_options.phtml" before="-" cacheable="false">
+                <arguments>
+                    <argument name="jsLayout" xsi:type="array">
+                        <item name="types" xsi:type="array"/>
+                        <item name="components" xsi:type="array">
+                            <item name="giftOptionsCartItem" xsi:type="array">
+                                <item name="component" xsi:type="string">Magento_GiftMessage/js/view/gift-message</item>
+                                <item name="config" xsi:type="array">
+                                    <item name="template" xsi:type="string">Magento_GiftMessage/gift-message-item-level</item>
+                                    <item name="formTemplate" xsi:type="string">Magento_GiftMessage/gift-message-form</item>
+                                </item>
+                            </item>
+                        </item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+        <referenceBlock name="checkout.cart.item.renderers.bundle.actions">
+            <block class="Magento\GiftMessage\Block\Cart\Item\Renderer\Actions\GiftOptions" name="checkout.cart.item.renderers.bundle.actions.gift_options" template="cart/item/renderer/actions/gift_options.phtml" before="-" cacheable="false">
+                <arguments>
+                    <argument name="jsLayout" xsi:type="array">
+                        <item name="types" xsi:type="array"/>
+                        <item name="components" xsi:type="array">
+                            <item name="giftOptionsCartItem" xsi:type="array">
+                                <item name="component" xsi:type="string">Magento_GiftMessage/js/view/gift-message</item>
+                                <item name="config" xsi:type="array">
+                                    <item name="template" xsi:type="string">Magento_GiftMessage/gift-message-item-level</item>
+                                    <item name="formTemplate" xsi:type="string">Magento_GiftMessage/gift-message-form</item>
+                                </item>
+                            </item>
+                        </item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+        <referenceBlock name="checkout.cart.item.renderers.grouped.actions">
+            <block class="Magento\GiftMessage\Block\Cart\Item\Renderer\Actions\GiftOptions" name="checkout.cart.item.renderers.grouped.actions.gift_options" template="cart/item/renderer/actions/gift_options.phtml" before="-" cacheable="false">
+                <arguments>
+                    <argument name="jsLayout" xsi:type="array">
+                        <item name="types" xsi:type="array"/>
+                        <item name="components" xsi:type="array">
+                            <item name="giftOptionsCartItem" xsi:type="array">
+                                <item name="component" xsi:type="string">Magento_GiftMessage/js/view/gift-message</item>
+                                <item name="config" xsi:type="array">
+                                    <item name="template" xsi:type="string">Magento_GiftMessage/gift-message-item-level</item>
+                                    <item name="formTemplate" xsi:type="string">Magento_GiftMessage/gift-message-form</item>
+                                </item>
+                            </item>
+                        </item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+        <referenceBlock name="checkout.cart.item.renderers.configurable.actions">
+            <block class="Magento\GiftMessage\Block\Cart\Item\Renderer\Actions\GiftOptions" name="checkout.cart.item.renderers.configurable.actions.gift_options" template="cart/item/renderer/actions/gift_options.phtml" before="-" cacheable="false">
+                <arguments>
+                    <argument name="jsLayout" xsi:type="array">
+                        <item name="types" xsi:type="array"/>
+                        <item name="components" xsi:type="array">
+                            <item name="giftOptionsCartItem" xsi:type="array">
+                                <item name="component" xsi:type="string">Magento_GiftMessage/js/view/gift-message</item>
+                                <item name="config" xsi:type="array">
+                                    <item name="template" xsi:type="string">Magento_GiftMessage/gift-message-item-level</item>
+                                    <item name="formTemplate" xsi:type="string">Magento_GiftMessage/gift-message-form</item>
+                                </item>
+                            </item>
+                        </item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+        <referenceBlock name="checkout.cart.item.renderers.gift-card.actions">
+            <block class="Magento\GiftMessage\Block\Cart\Item\Renderer\Actions\GiftOptions" name="checkout.cart.item.renderers.gift-card.actions.gift_options" template="cart/item/renderer/actions/gift_options.phtml" before="-" cacheable="false">
+                <arguments>
+                    <argument name="jsLayout" xsi:type="array">
+                        <item name="types" xsi:type="array"/>
+                        <item name="components" xsi:type="array">
+                            <item name="giftOptionsCartItem" xsi:type="array">
+                                <item name="component" xsi:type="string">Magento_GiftMessage/js/view/gift-message</item>
+                                <item name="config" xsi:type="array">
+                                    <item name="template" xsi:type="string">Magento_GiftMessage/gift-message-item-level</item>
+                                    <item name="formTemplate" xsi:type="string">Magento_GiftMessage/gift-message-form</item>
+                                </item>
+                            </item>
+                        </item>
+                    </argument>
+                </arguments>
+            </block>
+        </referenceBlock>
+    </body>
+</page>
diff --git a/app/code/Magento/GiftMessage/view/frontend/layout/checkout_onepage_index.xml b/app/code/Magento/GiftMessage/view/frontend/layout/checkout_onepage_index.xml
deleted file mode 100644
index fbaba91cb60ea62a5639373e4b8af76e39a5e3e0..0000000000000000000000000000000000000000
--- a/app/code/Magento/GiftMessage/view/frontend/layout/checkout_onepage_index.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<!--
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
--->
-<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
-    <body>
-        <referenceBlock name="checkout.root">
-            <arguments>
-                <argument name="jsLayout" xsi:type="array">
-                    <item name="components" xsi:type="array">
-                        <item name="checkout" xsi:type="array">
-                            <item name="children" xsi:type="array">
-                                <item name="steps" xsi:type="array">
-                                    <item name="children" xsi:type="array">
-                                        <item name="shipping" xsi:type="array">
-                                            <item name="children" xsi:type="array">
-                                                <item name="additional" xsi:type="array">
-                                                    <item name="component" xsi:type="string">Magento_GiftMessage/js/view/gift-options</item>
-                                                    <item name="children" xsi:type="array">
-                                                        <item name="orderLevelGiftMessage" xsi:type="array">
-                                                            <item name="component" xsi:type="string">Magento_GiftMessage/js/view/order-level-gift-message</item>
-                                                        </item>
-                                                        <item name="itemLevelGiftMessage" xsi:type="array">
-                                                            <item name="component" xsi:type="string">Magento_GiftMessage/js/view/item-level-gift-message</item>
-                                                        </item>
-                                                    </item>
-                                                </item>
-                                            </item>
-                                        </item>
-                                    </item>
-                                </item>
-                            </item>
-                        </item>
-                    </item>
-                </argument>
-            </arguments>
-        </referenceBlock>
-    </body>
-</page>
diff --git a/app/code/Magento/GiftMessage/view/frontend/templates/Cart/gift_options.phtml b/app/code/Magento/GiftMessage/view/frontend/templates/Cart/gift_options.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..af4d469a652daaa72c47a607c3769106254da609
--- /dev/null
+++ b/app/code/Magento/GiftMessage/view/frontend/templates/Cart/gift_options.phtml
@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+?>
+<div id="gift-options-cart" data-bind="scope:'giftOptionsCart'">
+    <!-- ko template: getTemplate() --><!-- /ko -->
+    <script type="text/x-magento-init">
+        {
+            "#gift-options-cart": {
+                "Magento_Ui/js/core/app": <?php echo $block->getJsLayout();?>
+            }
+        }
+    </script>
+    <script>
+        window.giftOptionsConfig = <?php echo $block->getGiftOptionsConfigJson(); ?>;
+    </script>
+</div>
diff --git a/app/code/Magento/GiftMessage/view/frontend/templates/Cart/item/renderer/actions/gift_options.phtml b/app/code/Magento/GiftMessage/view/frontend/templates/Cart/item/renderer/actions/gift_options.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..10388eabe38174c6c1d0cc9fff8ede649067f860
--- /dev/null
+++ b/app/code/Magento/GiftMessage/view/frontend/templates/Cart/item/renderer/actions/gift_options.phtml
@@ -0,0 +1,24 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+// @codingStandardsIgnoreFile
+
+/** @var $block \Magento\GiftMessage\Block\Cart\Item\Renderer\Actions\GiftOptions */
+?>
+<?php if (!$block->isVirtual()): ?>
+    <div id="gift-options-cart-item-<?php echo $block->getItem()->getId() ?>"
+        data-bind="scope:'giftOptionsCartItem-<?php echo $block->getItem()->getId() ?>'"
+        class="gift-options-cart-item">
+        <!-- ko template: getTemplate() --><!-- /ko -->
+        <script type="text/x-magento-init">
+            {
+                "#gift-options-cart-item-<?php echo $block->getItem()->getId() ?>": {
+                    "Magento_Ui/js/core/app": <?php echo $block->getJsLayout();?>
+                }
+            }
+        </script>
+    </div>
+<?php endif ?>
diff --git a/app/code/Magento/GiftMessage/view/frontend/templates/cart/gift_options.phtml b/app/code/Magento/GiftMessage/view/frontend/templates/cart/gift_options.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..af4d469a652daaa72c47a607c3769106254da609
--- /dev/null
+++ b/app/code/Magento/GiftMessage/view/frontend/templates/cart/gift_options.phtml
@@ -0,0 +1,19 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+?>
+<div id="gift-options-cart" data-bind="scope:'giftOptionsCart'">
+    <!-- ko template: getTemplate() --><!-- /ko -->
+    <script type="text/x-magento-init">
+        {
+            "#gift-options-cart": {
+                "Magento_Ui/js/core/app": <?php echo $block->getJsLayout();?>
+            }
+        }
+    </script>
+    <script>
+        window.giftOptionsConfig = <?php echo $block->getGiftOptionsConfigJson(); ?>;
+    </script>
+</div>
diff --git a/app/code/Magento/GiftMessage/view/frontend/templates/cart/item/renderer/actions/gift_options.phtml b/app/code/Magento/GiftMessage/view/frontend/templates/cart/item/renderer/actions/gift_options.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..10388eabe38174c6c1d0cc9fff8ede649067f860
--- /dev/null
+++ b/app/code/Magento/GiftMessage/view/frontend/templates/cart/item/renderer/actions/gift_options.phtml
@@ -0,0 +1,24 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+// @codingStandardsIgnoreFile
+
+/** @var $block \Magento\GiftMessage\Block\Cart\Item\Renderer\Actions\GiftOptions */
+?>
+<?php if (!$block->isVirtual()): ?>
+    <div id="gift-options-cart-item-<?php echo $block->getItem()->getId() ?>"
+        data-bind="scope:'giftOptionsCartItem-<?php echo $block->getItem()->getId() ?>'"
+        class="gift-options-cart-item">
+        <!-- ko template: getTemplate() --><!-- /ko -->
+        <script type="text/x-magento-init">
+            {
+                "#gift-options-cart-item-<?php echo $block->getItem()->getId() ?>": {
+                    "Magento_Ui/js/core/app": <?php echo $block->getJsLayout();?>
+                }
+            }
+        </script>
+    </div>
+<?php endif ?>
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/js/action/gift-options.js b/app/code/Magento/GiftMessage/view/frontend/web/js/action/gift-options.js
new file mode 100644
index 0000000000000000000000000000000000000000..4896aeb00b5b87c57ad90cdcc86c26e68da0b794
--- /dev/null
+++ b/app/code/Magento/GiftMessage/view/frontend/web/js/action/gift-options.js
@@ -0,0 +1,57 @@
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+/*global define*/
+define(
+    [
+        '../model/url-builder',
+        'mage/storage',
+        'Magento_Ui/js/model/errorlist',
+        'mage/url'
+    ],
+    function(urlBuilder, storage, errorList, url) {
+        "use strict";
+        return function(giftMessage, remove) {
+            url.setBaseUrl(giftMessage.getConfigValue('baseUrl'));
+            var quoteId = giftMessage.getConfigValue('quoteId');
+            var serviceUrl;
+            if (giftMessage.getConfigValue('isCustomerLoggedIn')) {
+                serviceUrl = urlBuilder.createUrl('/carts/mine/gift-message', {});
+                if (giftMessage.itemId != 'orderLevel') {
+                    serviceUrl = urlBuilder.createUrl('/carts/mine/gift-message/:itemId', {itemId: giftMessage.itemId});
+                }
+            } else {
+                serviceUrl = urlBuilder.createUrl('/guest-carts/:cartId/gift-message', {cartId: quoteId});
+                if (giftMessage.itemId != 'orderLevel') {
+                    serviceUrl = urlBuilder.createUrl(
+                        '/guest-carts/:cartId/gift-message/:itemId',
+                        {cartId: quoteId, itemId: giftMessage.itemId}
+                    );
+                }
+            }
+            errorList.clear();
+
+            storage.post(
+                serviceUrl,
+                JSON.stringify({
+                    gift_message: giftMessage.getSubmitParams(remove)
+                })
+            ).done(
+                function(result) {
+                    giftMessage.reset();
+                    _.each(giftMessage.getAfterSubmitCallbacks(), function(callback) {
+                        if (_.isFunction(callback)) {
+                            callback();
+                        }
+                    });
+                }
+            ).fail(
+                function(response) {
+                    var error = JSON.parse(response.responseText);
+                    errorList.add(error);
+                }
+            );
+        };
+    }
+);
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/js/model/gift-message.js b/app/code/Magento/GiftMessage/view/frontend/web/js/model/gift-message.js
index d5f0e072c77132c455ae521560f4c5f7522d92b7..ad91613b1364535ec43548e251bb46fefb67ec5f 100644
--- a/app/code/Magento/GiftMessage/view/frontend/web/js/model/gift-message.js
+++ b/app/code/Magento/GiftMessage/view/frontend/web/js/model/gift-message.js
@@ -3,57 +3,107 @@
  * See COPYING.txt for license details.
  */
 /*global define*/
-define(['underscore', './gift-options'],
-    function(_, giftOptions) {
+define(['Magento_Ui/js/lib/component/provider', 'underscore', 'mage/url'],
+    function (provider, _, url) {
         "use strict";
-        var itemLevelDefaultMessages, orderLevelDefaultMessage,
-            isItemLevelGiftOptionsSelected = false,
-            isOrderLevelGiftOptionsSelected = false,
-            isGiftOptionsSelected = false;
-        if (giftOptions.isItemLevelGiftOptionsEnabled() && _.isObject(window.checkoutConfig.giftMessage.itemLevel)) {
-            itemLevelDefaultMessages = window.checkoutConfig.giftMessage.itemLevel;
-            isItemLevelGiftOptionsSelected = true;
-            isGiftOptionsSelected = true;
-        }
-        if (giftOptions.isOrderLevelGiftOptionsEnabled() && _.isObject(window.checkoutConfig.giftMessage.orderLevel)) {
-            orderLevelDefaultMessage = window.checkoutConfig.giftMessage.orderLevel;
-            isOrderLevelGiftOptionsSelected = true;
-            isGiftOptionsSelected = true;
-        }
-        return {
-            getDefaultMessageForItem: function(itemId) {
-                if (_.isObject(itemLevelDefaultMessages) && itemLevelDefaultMessages.hasOwnProperty(itemId)) {
-                    return {
-                        from: itemLevelDefaultMessages[itemId].sender,
-                        to: itemLevelDefaultMessages[itemId].recipient,
-                        message: itemLevelDefaultMessages[itemId].message
-                    };
+        return function (itemId) {
+            var model = {
+                id: 'message-' + itemId,
+                itemId: itemId,
+                observables: {},
+                additionalOptions: [],
+                submitParams: [
+                    'recipient',
+                    'sender',
+                    'message'
+                ],
+                initialize: function() {
+                    this.getObservable('alreadyAdded')(false);
+                    var message = false;
+
+                    if (this.itemId == 'orderLevel') {
+                        message = window.giftOptionsConfig.giftMessage.hasOwnProperty(this.itemId)
+                            ? window.giftOptionsConfig.giftMessage[this.itemId]
+                            : null;
+                    } else {
+                        message =
+                            window.giftOptionsConfig.giftMessage.hasOwnProperty('itemLevel')
+                            && window.giftOptionsConfig.giftMessage['itemLevel'].hasOwnProperty(this.itemId)
+                            ? window.giftOptionsConfig.giftMessage['itemLevel'][this.itemId]
+                            : null;
+                    }
+                    if (_.isObject(message)) {
+                        this.getObservable('recipient')(message.recipient);
+                        this.getObservable('sender')(message.sender);
+                        this.getObservable('message')(message.message);
+                        this.getObservable('alreadyAdded')(true);
+                    }
+                },
+                getObservable: function(key) {
+                    this.initObservable(this.id, key);
+                    return provider[this.getUniqueKey(this.id, key)];
+                },
+                initObservable: function(node, key) {
+                    if (node && !this.observables.hasOwnProperty(node)) {
+                        this.observables[node] = [];
+                    }
+                    if (key && this.observables[node].indexOf(key) == -1) {
+                        this.observables[node].push(key);
+                        provider.observe(this.getUniqueKey(node, key));
+                    }
+                },
+                getUniqueKey: function(node, key) {
+                    return node + '-' + key;
+                },
+                getConfigValue: function(key) {
+                    return window.giftOptionsConfig.hasOwnProperty(key) ?
+                        window.giftOptionsConfig[key]
+                        : null;
+                },
+                reset: function() {
+                    this.getObservable('isClear')(true);
+                },
+                getAfterSubmitCallbacks: function() {
+                    var callbacks = [];
+                    callbacks.push(this.afterSubmit);
+                    _.each(this.additionalOptions, function(option) {
+                        if (_.isFunction(option.afterSubmit)) {
+                            callbacks.push(option.afterSubmit);
+                        }
+                    });
+                    return callbacks;
+                },
+                afterSubmit: function() {
+                    window.location.href = url.build('checkout/cart/updatePost')
+                        + '?form_key=' + window.giftOptionsConfig.giftMessage.formKey
+                        + '&cart[]';
+                },
+                getSubmitParams: function(remove) {
+                    var params = {},
+                        self = this;
+                    _.each(this.submitParams, function(key) {
+                        var observable = provider[self.getUniqueKey(self.id, key)];
+                        if (_.isFunction(observable)) {
+                            params[key] = remove ? null : observable();
+                        }
+                    });
+
+                    if(this.additionalOptions.length) {
+                        params['extension_attributes'] = {};
+                    }
+                    _.each(this.additionalOptions, function(option) {
+                        if (_.isFunction(option.getSubmitParams)) {
+                            params['extension_attributes'] = _.extend(
+                                params['extension_attributes'],
+                                option.getSubmitParams(remove)
+                            );
+                        }
+                    });
+                    return params;
                 }
-                return {
-                    from: null, to: null, message: null
-                };
-            },
-            getDefaultMessageForQuote: function() {
-                if (orderLevelDefaultMessage) {
-                    return {
-                        from: orderLevelDefaultMessage.sender,
-                        to: orderLevelDefaultMessage.recipient,
-                        message: orderLevelDefaultMessage.message
-                    };
-                }
-                return {
-                    from: null, to: null, message: null
-                };
-            },
-            isGiftOptionsSelected: function() {
-                return isGiftOptionsSelected;
-            },
-            isItemLevelGiftOptionsSelected: function() {
-                return isItemLevelGiftOptionsSelected;
-            },
-            isOrderLevelGiftOptionsSelected: function() {
-                return isOrderLevelGiftOptionsSelected;
-            }
-        };
+            };
+            model.initialize();
+            return model;
+        }
     }
 );
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/js/model/gift-options.js b/app/code/Magento/GiftMessage/view/frontend/web/js/model/gift-options.js
index 000bf4b508e32c54442401024877cdb2e396279a..187f17e5b3962788ba0eb03a95858e4672d27c7b 100644
--- a/app/code/Magento/GiftMessage/view/frontend/web/js/model/gift-options.js
+++ b/app/code/Magento/GiftMessage/view/frontend/web/js/model/gift-options.js
@@ -4,59 +4,18 @@
  */
 /*global define*/
 define(['underscore'],
-    function(_) {
+    function (_) {
         "use strict";
-        var isOrderLevelGiftOptionsEnabled = window.checkoutConfig.isOrderLevelGiftOptionsEnabled || false,
-            isItemLevelGiftOptionsEnabled = window.checkoutConfig.isItemLevelGiftOptionsEnabled || false;
         return {
-            orderLevelGiftOptions: [],
-            itemLevelGiftOptions: [],
-            extraGiftOptions: [],
-            isGiftOptionsAvailable: function() {
-                var isAvailable = isOrderLevelGiftOptionsEnabled || isItemLevelGiftOptionsEnabled;
-
-                _.each(this.getExtraGiftOptions(), function(option){
-                    if (typeof option.isAvailable() === 'function') {
-                        isAvailable = isAvailable || option.isAvailable();
-                    }
-                });
-
-                return isAvailable;
-            },
-            isOrderLevelGiftOptionsEnabled: function() {
-                return isOrderLevelGiftOptionsEnabled;
-            },
-            isItemLevelGiftOptionsEnabled: function() {
-                return isItemLevelGiftOptionsEnabled;
-            },
-            getExtraGiftOptions: function() {
-                return this.getGiftOptions(this.extraGiftOptions);
-            },
-            getOrderLevelGiftOptions: function() {
-                return this.getGiftOptions(this.orderLevelGiftOptions);
-            },
-            getItemLevelGiftOptions: function() {
-                return this.getGiftOptions(this.itemLevelGiftOptions);
-            },
-            getGiftOptions: function(options) {
-                return _.map(
-                    _.sortBy(options, function(giftOption){
-                        return giftOption.sortOrder
-                    }),
-                    function(giftOption) {
-                        return giftOption.option
-                    }
-                )
-            },
-            setExtraGiftOptions: function (giftOption, sortOrder) {
-                this.extraGiftOptions.push({'option': giftOption, 'sortOrder': sortOrder});
-            },
-            addOrderLevelGiftOptions: function(giftOption, sortOrder) {
-                this.orderLevelGiftOptions.push({'option': giftOption, 'sortOrder': sortOrder});
-            },
-            addItemLevelGiftOptions: function(giftOption, sortOrder) {
-                this.itemLevelGiftOptions.push({'option': giftOption, 'sortOrder': sortOrder});
+            options: [],
+            addOption: function(option) {
+                if(!this.options.hasOwnProperty(option.itemId)) {
+                    this.options[option.itemId] = option;
+                }
+            },
+            getOptionByItemId: function(itemId) {
+                return this.options.hasOwnProperty(itemId) ? this.options[itemId] : null;
             }
-        };
+        }
     }
 );
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/js/model/url-builder.js b/app/code/Magento/GiftMessage/view/frontend/web/js/model/url-builder.js
new file mode 100644
index 0000000000000000000000000000000000000000..ba62ba64f94d06356dc0bebffec378fb0b78c710
--- /dev/null
+++ b/app/code/Magento/GiftMessage/view/frontend/web/js/model/url-builder.js
@@ -0,0 +1,38 @@
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+/*jshint browser:true jquery:true*/
+/*global alert*/
+define(
+    ['jquery'],
+    function($) {
+        return {
+            method: "rest",
+            storeCode: window.giftOptionsConfig.storeCode,
+            version: 'V1',
+            serviceUrl: ':method/:storeCode/:version',
+
+            createUrl: function(url, params) {
+                var completeUrl = this.serviceUrl + url;
+                return this.bindParams(completeUrl, params);
+            },
+            bindParams: function(url, params) {
+                params.method = this.method;
+                params.storeCode = this.storeCode;
+                params.version = this.version;
+
+                var urlParts = url.split("/");
+                urlParts = urlParts.filter(Boolean);
+
+                $.each(urlParts, function(key, part) {
+                    part = part.replace(':', '');
+                    if (params[part] != undefined) {
+                        urlParts[key] = params[part];
+                    }
+                });
+                return urlParts.join('/');
+            }
+        };
+    }
+);
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/js/view/gift-message.js b/app/code/Magento/GiftMessage/view/frontend/web/js/view/gift-message.js
new file mode 100644
index 0000000000000000000000000000000000000000..70a563cc3015afef902a93fff8471c40b255d5c9
--- /dev/null
+++ b/app/code/Magento/GiftMessage/view/frontend/web/js/view/gift-message.js
@@ -0,0 +1,78 @@
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+/*global define*/
+define(['uiComponent', '../model/gift-message', '../model/gift-options', '../action/gift-options'],
+    function (Component, giftMessage, giftOptions, giftOptionsService) {
+        "use strict";
+        return Component.extend({
+            formBlockVisibility: null,
+            resultBlockVisibility: null,
+            model: {},
+            initialize: function() {
+                var self = this;
+                this._super()
+                    .observe('formBlockVisibility')
+                    .observe({'resultBlockVisibility': false});
+
+                this.itemId = this.itemId || 'orderLevel';
+                var model = new giftMessage(this.itemId);
+                giftOptions.addOption(model);
+                this.model = model;
+
+                this.model.getObservable('isClear').subscribe(function(value) {
+                    if (value == true) {
+                        self.formBlockVisibility(false);
+                        self.model.getObservable('alreadyAdded')(true);
+                    }
+                });
+
+                this.isResultBlockVisible();
+            },
+            isResultBlockVisible: function() {
+                var self = this;
+                if (this.model.getObservable('alreadyAdded')()) {
+                    this.resultBlockVisibility(true);
+                }
+                this.model.getObservable('additionalOptionsApplied').subscribe(function(value) {
+                    if (value == true) {
+                        self.resultBlockVisibility(true);
+                    }
+                });
+            },
+            getObservable: function(key) {
+                return this.model.getObservable(key);
+            },
+            toggleFormBlockVisibility: function() {
+                if (!this.model.getObservable('alreadyAdded')()) {
+                    this.formBlockVisibility(!this.formBlockVisibility());
+                }
+            },
+            editOptions: function() {
+                this.resultBlockVisibility(false);
+                this.formBlockVisibility(true);
+            },
+            deleteOptions: function() {
+                giftOptionsService(this.model, true);
+            },
+            hideFormBlock: function() {
+                this.formBlockVisibility(false);
+                if (this.model.getObservable('alreadyAdded')()) {
+                    this.resultBlockVisibility(true);
+                }
+            },
+            isActive: function() {
+                switch (this.itemId) {
+                    case 'orderLevel':
+                        return this.model.getConfigValue('isOrderLevelGiftOptionsEnabled') == true;
+                    default:
+                        return this.model.getConfigValue('isItemLevelGiftOptionsEnabled') == true;
+                }
+            },
+            submitOptions: function() {
+                giftOptionsService(this.model);
+            }
+        });
+    }
+);
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/js/view/gift-options.js b/app/code/Magento/GiftMessage/view/frontend/web/js/view/gift-options.js
deleted file mode 100644
index f216daa41a6090523acd22cf302ffafcbf40cbd1..0000000000000000000000000000000000000000
--- a/app/code/Magento/GiftMessage/view/frontend/web/js/view/gift-options.js
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-/*global define*/
-define(['uiComponent', 'ko', '../model/gift-options', '../model/gift-message', 'Magento_Ui/js/model/errorlist'],
-    function (Component, ko, giftOptions, giftMessage, errorList) {
-        "use strict";
-
-        return Component.extend({
-            defaults: {
-                template: 'Magento_GiftMessage/gift-options',
-                displayArea: 'shippingAdditional'
-            },
-            options: [],
-            isGiftOptionsSelected: ko.observable(giftMessage.isGiftOptionsSelected()),
-            isOrderLevelGiftOptionsSelected: ko.observable(giftMessage.isOrderLevelGiftOptionsSelected()),
-            isItemLevelGiftOptionsSelected: ko.observable(giftMessage.isItemLevelGiftOptionsSelected()),
-            isGiftOptionsAvailable: function() {
-                return giftOptions.isGiftOptionsAvailable();
-            },
-            isOrderLevelGiftOptionsEnabled: function() {
-                return giftOptions.isOrderLevelGiftOptionsEnabled();
-            },
-            isItemLevelGiftOptionsEnabled: function() {
-                return giftOptions.isItemLevelGiftOptionsEnabled();
-            },
-            getOrderLevelGiftOptions: function() {
-                return this.filterOptions(giftOptions.getOrderLevelGiftOptions());
-            },
-            getItemLevelGiftOptions: function() {
-                return this.filterOptions(giftOptions.getItemLevelGiftOptions());
-            },
-            getExtraGiftOptions: function() {
-                return this.filterOptions(giftOptions.getExtraGiftOptions());
-            },
-            filterOptions: function(options) {
-                return _.filter(options, function(option) {
-                        var result = true;
-                        if (option.isDirectRendering !== 'undefined') {
-                            result = !option.isDirectRendering;
-                        }
-                        return result;
-                    }
-                );
-            },
-            collectOptions: function(giftOption, additionalFlag) {
-                if (!this.isAvailableForSubmiting(giftOption)) {
-                    return false;
-                }
-                var self = this;
-                if (giftOption.optionType === 'undefined') {
-                    errorList.add('You should define type of your custom option');
-                }
-
-                if (!this.options.hasOwnProperty(giftOption.optionType)) {
-                    this.options[giftOption.optionType] = [];
-                }
-
-                _.each(giftOption.submit(additionalFlag), function(optionItem) {
-                    self.options[giftOption.optionType].push(optionItem);
-                });
-            },
-            isAvailableForSubmiting: function(option) {
-                return typeof option.isSubmit == 'undefined' || option.isSubmit ? true : false;
-            },
-            submit: function() {
-                var self = this;
-
-                var removeOrder = giftOptions.isItemLevelGiftOptionsEnabled() && this.isOrderLevelGiftOptionsEnabled()
-                    && (!this.isGiftOptionsSelected() || !this.isOrderLevelGiftOptionsSelected())
-                    ? true
-                    : false;
-                _.each(giftOptions.getOrderLevelGiftOptions(), function(option) {
-                    self.collectOptions(option, removeOrder);
-                });
-
-                var removeItem = giftOptions.isItemLevelGiftOptionsEnabled() && this.isItemLevelGiftOptionsEnabled()
-                && (!this.isGiftOptionsSelected() || !this.isItemLevelGiftOptionsSelected())
-                    ? true
-                    : false;
-                _.each(giftOptions.getItemLevelGiftOptions(), function(option) {
-                    self.collectOptions(option, removeItem);
-                });
-
-                _.each(giftOptions.getExtraGiftOptions(), function(option) {
-                    self.collectOptions(option);
-                });
-
-                var result = this.options;
-                this.options = [];
-                return result;
-            }
-        });
-    }
-);
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/js/view/item-level-gift-message.js b/app/code/Magento/GiftMessage/view/frontend/web/js/view/item-level-gift-message.js
deleted file mode 100644
index 05ef405b1feaa037798fe7f74912222cee74f0c9..0000000000000000000000000000000000000000
--- a/app/code/Magento/GiftMessage/view/frontend/web/js/view/item-level-gift-message.js
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-/*global define*/
-define(['uiComponent', 'ko', '../model/gift-options', 'Magento_Checkout/js/model/quote', '../model/gift-message'],
-    function (Component, ko, giftOptions, quote, giftMessage) {
-        "use strict";
-        return Component.extend({
-            defaults: {
-                template: 'Magento_GiftMessage/item-level-gift-message',
-                displayArea: 'itemLevelGiftMessage'
-            },
-            messages: {},
-            quoteItems: [],
-            quoteItemsCount: 0,
-            imagePlaceholder: window.checkoutConfig.staticBaseUrl +
-                '/frontend/Magento/blank/en_US/Magento_Catalog/images/product/placeholder/thumbnail.jpg',
-            optionType: 'gift_messages',
-            initialize: function() {
-                var item,
-                    that = this,
-                    quoteItems = quote.getItems();
-                quote.getShippingAddress().subscribe(function(shippingAddress) {
-                    var name = shippingAddress.firstname + ' ' + shippingAddress.lastname;
-                    for (item in quoteItems) {
-                        if (quoteItems.hasOwnProperty(item)) {
-                            if (quoteItems[item].is_virtual === '0') {
-                                var itemId = quoteItems[item].item_id;
-                                that.messages[itemId] = {
-                                    from: ko.observable(giftMessage.getDefaultMessageForItem(itemId).from || name),
-                                    to: ko.observable(giftMessage.getDefaultMessageForItem(itemId).to || name),
-                                    message: ko.observable(giftMessage.getDefaultMessageForItem(itemId).message)
-                                };
-                                quoteItems[item].isItemLevelGiftMessageVisible = ko.observable(false);
-                                that.quoteItems.push(quoteItems[item]);
-                            }
-                        }
-                    }
-                    that.quoteItemsCount = that.quoteItems.length;
-                    this.dispose();
-                });
-                this._super();
-                giftOptions.addItemLevelGiftOptions(this);
-            },
-            itemImages: ko.observableArray(),
-            setItemLevelGiftMessageHidden: function(data, event) {
-                event.preventDefault();
-                if (data.hasOwnProperty('item_id')) {
-                    this.isItemLevelGiftMessageVisible(!this.isItemLevelGiftMessageVisible());
-                }
-            },
-            submit: function(remove) {
-                remove = remove || false;
-                var itemId,
-                    giftMessages = [],
-                    that = this;
-                for (itemId in this.messages) {
-                    if (that.messages.hasOwnProperty(itemId)) {
-                        if (that.messages[itemId].message() !== null) {
-                            giftMessages.push({
-                                sender: remove ? null : that.messages[itemId].from(),
-                                recipient: remove ? null : that.messages[itemId].to(),
-                                message: remove ? null : that.messages[itemId].message(),
-                                extension_attributes: {
-                                    entity_id: itemId,
-                                    entity_type: 'item'
-                                }
-                            });
-                        }
-                    }
-                }
-                return giftMessages;
-            }
-        });
-    }
-);
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/js/view/order-level-gift-message.js b/app/code/Magento/GiftMessage/view/frontend/web/js/view/order-level-gift-message.js
deleted file mode 100644
index 277f17a2b4277a61e30d6d9d9ac462f5fe4c2379..0000000000000000000000000000000000000000
--- a/app/code/Magento/GiftMessage/view/frontend/web/js/view/order-level-gift-message.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-/*global define*/
-define([
-        'uiComponent',
-        'ko',
-        '../model/gift-options',
-        'Magento_Checkout/js/model/quote',
-        '../model/gift-message'
-    ],
-    function (Component, ko, giftOptions, quote, giftMessage) {
-        "use strict";
-        return Component.extend({
-            defaults: {
-                template: 'Magento_GiftMessage/order-level-gift-message',
-                displayArea: 'orderLevelGiftMessage'
-            },
-            message: {},
-            optionType: 'gift_messages',
-            initialize: function() {
-                var that = this;
-                quote.getShippingAddress().subscribe(function(shippingAddress) {
-                    var customerName = shippingAddress.firstname + ' ' + shippingAddress.lastname;
-                    that.message = {
-                        from: ko.observable(giftMessage.getDefaultMessageForQuote().from || customerName),
-                        to: ko.observable(giftMessage.getDefaultMessageForQuote().to || customerName),
-                        message: ko.observable(giftMessage.getDefaultMessageForQuote().message)
-                    };
-                    this.dispose();
-                });
-                this._super();
-                giftOptions.addOrderLevelGiftOptions(this, 10);
-            },
-            isOrderLevelGiftMessageVisible: ko.observable(false),
-            setOrderLevelGiftMessageVisible: function(data, event) {
-                event.preventDefault();
-                this.isOrderLevelGiftMessageVisible(!this.isOrderLevelGiftMessageVisible());
-            },
-            quoteId: quote.entity_id,
-            submit: function(remove) {
-                remove = remove || false;
-                if (this.message.message() !== null) {
-                    return [{
-                        sender: remove ? null : this.message.from(),
-                        recipient: remove ? null : this.message.to(),
-                        message: remove ? null : this.message.message(),
-                        extension_attributes: {
-                            entity_id: this.quoteId,
-                            entity_type: 'quote'
-                        }
-                    }];
-                }
-                return [];
-            }
-        });
-    }
-);
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message-form.html b/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message-form.html
new file mode 100644
index 0000000000000000000000000000000000000000..31cbc7e111aaee3a5b8a9191a68adb43010a45e7
--- /dev/null
+++ b/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message-form.html
@@ -0,0 +1,63 @@
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<div class="gift-message">
+    <div class="gift-options-title">
+        <span data-bind="text: $t('Gift Message (optional)')"></span>
+    </div>
+    <div class="gift-options-content">
+        <fieldset class="fieldset">
+            <div class="field field-to">
+                <label for="gift-message-whole-to" class="label">
+                    <span data-bind="text: $t('To') + ':'"></span>
+                </label>
+                <div class="control">
+                    <input type="text"
+                           id="gift-message-whole-to"
+                           class="input-text"
+                           data-bind="value: getObservable('recipient')">
+                </div>
+            </div>
+
+            <div class="field field-from">
+                <label for="gift-message-whole-from" class="label">
+                    <span data-bind="text: $t('From') + ':'"></span>
+                </label>
+                <div class="control">
+                    <input type="text"
+                           id="gift-message-whole-from"
+                           class="input-text"
+                           data-bind="value: getObservable('sender')">
+                </div>
+            </div>
+            <div class="field text">
+                <label for="gift-message-whole-message" class="label">
+                    <span data-bind="text: $t('Message') + ':'"></span>
+                </label>
+                <div class="control">
+                    <textarea id="gift-message-whole-message"
+                              class="input-text"
+                              rows="5" cols="10"
+                              data-bind="value: getObservable('message')"></textarea>
+                </div>
+            </div>
+        </fieldset>
+        <div class="actions-toolbar">
+            <div class="secondary">
+                <button type="submit" class="action secondary action-update" data-bind="
+                    attr: {title: $t('Update')},
+                    click: $data.submitOptions.bind($data)">
+                    <span data-bind="text: $t('Update')"></span>
+                </button>
+                <button class="action action-cancel" data-bind="
+                    attr: {title: $t('Cancel')},
+                    click: $data.hideFormBlock.bind($data)">
+                    <span data-bind="text: $t('Cancel')"></span>
+                </button>
+            </div>
+        </div>
+    </div>
+</div>
\ No newline at end of file
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message-item-level.html b/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message-item-level.html
new file mode 100644
index 0000000000000000000000000000000000000000..78f2175867b72a3991912eeda796bd7aff3615ef
--- /dev/null
+++ b/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message-item-level.html
@@ -0,0 +1,55 @@
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<!-- ko if: isActive() -->
+<a href="#"
+   class="action action-gift"
+   data-bind="
+   click: $data.toggleFormBlockVisibility.bind($data),
+   css: {_active: formBlockVisibility() || resultBlockVisibility()}
+   ">
+    <span data-bind="text: $t('Gift options')"></span>
+</a>
+<div class="gift-content" data-bind="css: {_active: formBlockVisibility() || resultBlockVisibility()}"> <!-- add class "active" to display the content -->
+    <!-- ko ifnot: resultBlockVisibility() -->
+        <div class="gift-options">
+            <!-- ko foreach: getRegion('additionalOptions') -->
+                <!-- ko template: getTemplate() --><!-- /ko -->
+            <!-- /ko -->
+            <!-- ko template: formTemplate --><!--/ko-->
+        </div>
+    <!-- /ko -->
+    <!-- ko if: resultBlockVisibility() -->
+        <div class="gift-summary">
+            <!-- ko foreach: getRegion('additionalOptions') -->
+                <!--ko template: appliedTemplate --><!-- /ko -->
+            <!-- /ko -->
+
+            <!-- ko if: getObservable('message') -->
+                <div class="gift-message-summary">
+                    <span data-bind="text: $t('Message') + ':'"></span>
+                    <!-- ko text: getObservable('message') --><!-- /ko -->
+                </div>
+            <!-- /ko -->
+            
+            <div class="actions-toolbar">
+                <div class="secondary">
+                    <button type="submit" class="action action-edit" data-bind="
+                            click: $data.editOptions.bind($data),
+                            attr: {title: $t('Edit')">
+                        <span data-bind="text: $t('Edit')"></span>
+                    </button>
+                    <button class="action action-delete" data-bind="
+                            click: $data.deleteOptions.bind($data),
+                            attr: {title: $t('Delete')">
+                        <span data-bind="text: $t('Delete')"></span>
+                    </button>
+                </div>
+            </div>
+        </div>
+    <!-- /ko -->
+</div>
+<!-- /ko -->
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message.html b/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message.html
new file mode 100644
index 0000000000000000000000000000000000000000..dbe0ee8c877cd04fc9c25d5e3ab332ecbbb0a916
--- /dev/null
+++ b/app/code/Magento/GiftMessage/view/frontend/web/template/gift-message.html
@@ -0,0 +1,54 @@
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<!-- ko if: isActive() -->
+<div class="cart-gift-item">
+    <div class="gift-item-block block"
+         data-collapsible="true"
+         data-bind="css: {_active: formBlockVisibility() || resultBlockVisibility()}">
+        <div class="title" data-role="title" data-bind="click: $data.toggleFormBlockVisibility.bind($data)">
+            <span data-bind="text: $t('Gift options')"></span>
+        </div>
+        <div class="content" data-role="content" data-bind="visible: formBlockVisibility() || resultBlockVisibility()">
+            <!-- ko ifnot: resultBlockVisibility() -->
+            <div class="gift-options">
+                <!-- ko foreach: getRegion('additionalOptions') -->
+                    <!-- ko template: getTemplate() --><!-- /ko -->
+                <!-- /ko -->
+                <!-- ko template: formTemplate --><!--/ko-->
+            </div>
+            <!-- /ko -->
+            <div class="gift-summary">
+                <!-- ko if: resultBlockVisibility() -->
+                    <!-- ko foreach: getRegion('additionalOptions') -->
+                         <!--ko template: appliedTemplate --><!-- /ko -->
+                    <!-- /ko -->
+
+                    <!-- ko if: getObservable('message') -->
+                        <div class="gift-message-summary">
+                            <span data-bind="text: $t('Message') + ':'"></span>
+                            <!-- ko text: getObservable('message') --><!-- /ko -->
+                        </div>
+                    <!-- /ko -->
+                    <div class="actions-toolbar">
+                        <div class="secondary">
+                            <button type="submit"
+                                    class="action action-edit"
+                                    data-bind="attr: {title: $t('Edit')}, click: $data.editOptions.bind($data)">
+                                <span data-bind="text: $t('Edit')"></span>
+                            </button>
+                            <button class="action action-delete"
+                                    data-bind="attr: {title: $t('Delete')}, click: $data.deleteOptions.bind($data)">
+                                <span data-bind="text: $t('Delete')"></span>
+                            </button>
+                        </div>
+                    </div>
+                <!-- /ko -->
+            </div>
+        </div>
+    </div>
+</div>
+<!-- /ko -->
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/template/gift-options.html b/app/code/Magento/GiftMessage/view/frontend/web/template/gift-options.html
deleted file mode 100644
index 02b2c1d5f03c0105ae4ce29fbadb27979998c578..0000000000000000000000000000000000000000
--- a/app/code/Magento/GiftMessage/view/frontend/web/template/gift-options.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!--
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
--->
-<fieldset class="fieldset gift-message" data-bind="visible: isGiftOptionsAvailable()">
-    <legend class="legend"><span data-bind="text: $t('Do you have any gift items in your order?')"></span></legend><br>
-    <div class="field choice">
-        <input type="checkbox" name="allow_gift_options" id="allow_gift_options" class="checkbox" data-bind="checked: isGiftOptionsSelected">
-        <label for="allow_gift_options" class="label"><span data-bind="text: $t('Add gift options')"></span></label>
-    </div>
-    <dl class="options-items" id="allow-gift-options-container" data-bind="visible: isGiftOptionsSelected">
-        <dt id="add-gift-options-for-order" class="order-title" data-bind="visible: isOrderLevelGiftOptionsEnabled()">
-            <div class="field choice">
-                <input type="checkbox" name="allow_gift_messages_for_order" id="allow_gift_options_for_order" class="checkbox" data-bind="checked: isOrderLevelGiftOptionsSelected">
-                <label for="allow_gift_options_for_order" class="label"><span data-bind="text: $t('Gift Options for the Entire Order')"></span></label>
-            </div>
-            <dd id="allow-gift-options-for-order-container" class="order-options" style="display: block;" data-bind="visible: isOrderLevelGiftOptionsSelected">
-                <!-- ko foreach: getOrderLevelGiftOptions() -->
-                    <!-- ko template: getTemplate() --><!-- /ko -->
-                <!-- /ko -->
-            </dd>
-        </dt>
-        <dt id="add-gift-options-for-items" class="order-title individual" data-bind="visible: isItemLevelGiftOptionsEnabled()">
-            <div class="field choice">
-                <input type="checkbox" name="allow_gift_options_for_items" id="allow_gift_options_for_items" class="checkbox" data-bind="checked: isItemLevelGiftOptionsSelected">
-                <label for="allow_gift_options_for_items" class="label"><span data-bind="text: $t('Gift Options for Individual Items')"></span></label>
-            </div>
-            <dd id="allow-gift-options-for-items-container" class="order-options individual" style="display: block;" data-bind="visible: isItemLevelGiftOptionsSelected">
-                <!-- ko foreach: getItemLevelGiftOptions() -->
-                    <!-- ko template: getTemplate() --><!-- /ko -->
-                <!-- /ko -->
-            </dd>
-        </dt>
-        <dt id="extra-options-container" class="extra-options-container">
-            <!-- ko foreach: getExtraGiftOptions() -->
-                <!-- ko template: getTemplate() --><!-- /ko -->
-            <!-- /ko -->
-        </dt>
-    </dl>
-</fieldset>
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/template/item-level-gift-message.html b/app/code/Magento/GiftMessage/view/frontend/web/template/item-level-gift-message.html
deleted file mode 100644
index 83432afd48fa1f7cbe1056731e685db57cd1374e..0000000000000000000000000000000000000000
--- a/app/code/Magento/GiftMessage/view/frontend/web/template/item-level-gift-message.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!--
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
--->
-<ol class="items" data-bind="foreach: quoteItems">
-    <li class="item">
-        <div class="product">
-            <div class="number">
-                <span>
-                    <!-- ko text: $t('Item') --><!-- /ko -->
-                    <!-- ko text: ($index() + 1) --><!-- /ko -->
-                </span>
-                <!-- ko text: $t('of') --><!-- /ko -->
-                <!-- ko text: $parent.quoteItemsCount --><!-- /ko -->
-            </div>
-            <div class="img photo container">
-                <span class="product-image-container" style="width:100px;">
-                    <span class="product-image-wrapper" style="padding-bottom: 100%;">
-                        <img class="product-image-photo" data-bind="attr: {src: thumbnail || $parent.imagePlaceholder, alt: name}">
-                    </span>
-                </span>
-            </div>
-            <strong class="product name" style="width:100px;" data-bind="text: name"></strong>
-        </div>
-        <div class="options">
-            <!-- <div class="options-items-container"></div> -->
-             <!--ko foreach: $parent.getRegion('item-level-additional-data') -->
-             <!--ko template: getTemplate() --><!--/ko -->
-            <!--/ko -->
-            <a href="#" class="action activate message" data-bind="click: $parent.setItemLevelGiftMessageHidden, text: $t('Gift Message')"></a>
-            <div id="gift-messages-for-item-container" class="block message" data-bind="visible: isItemLevelGiftMessageVisible">
-                <fieldset class="fieldset">
-                    <p data-bind="text: $t('Leave a box blank if you don\'t want to add a gift message for that item.')"></p>
-                    <div class="field from">
-                        <label class="label" data-bind="attr: {for: 'gift-message-' + item_id + '-from'}"><span data-bind="text: $t('From')"></span></label>
-                        <div class="control">
-                            <input type="text" title="From" class="input-text" data-bind="
-                                value: $parent.messages[item_id].from,
-                                attr: {
-                                    name: 'giftmessage[quote_item][' + item_id + '][from]',
-                                    id: 'gift-message-' + item_id  + '-from'
-                                }
-                            ">
-                        </div>
-                    </div>
-                    <div class="field to">
-                        <label class="label" data-bind="attr: {for: 'gift-message-' + item_id + '-to'}"><span data-bind="text: $t('To')"></span></label>
-                        <div class="control">
-                            <input type="text" title="To" class="input-text" data-bind="
-                            value: $parent.messages[item_id].to,
-                            attr: {
-                                name: 'giftmessage[quote_item][' + item_id + '][to]',
-                                id: 'gift-message-' + item_id + '-to'
-                            }
-                        ">
-                        </div>
-                    </div>
-                    <div class="field text">
-                        <label class="label" data-bind="attr: {for: 'gift-message-' + item_id + '-message'}"><span data-bind="text: $t('Message')"></span></label>
-                        <div class="control">
-                            <textarea class="input-text giftmessage-area" title="Message" rows="5" cols="40" data-bind="
-                                value: $parent.messages[item_id].message,
-                                attr: {
-                                    id: 'gift-message-' + item_id + '-message',
-                                    name: 'giftmessage[quote_item][' + item_id + '][message]'
-                                }
-                            "></textarea>
-                        </div>
-                    </div>
-                </fieldset>
-            </div>
-        </div>
-    </li>
-</ol>
diff --git a/app/code/Magento/GiftMessage/view/frontend/web/template/order-level-gift-message.html b/app/code/Magento/GiftMessage/view/frontend/web/template/order-level-gift-message.html
deleted file mode 100644
index fc9be980c704a7e3dfcf8743e87ed4b2e78fa347..0000000000000000000000000000000000000000
--- a/app/code/Magento/GiftMessage/view/frontend/web/template/order-level-gift-message.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
--->
-<!--
-<div class="options-order-container" id="options-order-container-1"></div>
--->
-<a href="#" class="action activate message" data-bind="click: setOrderLevelGiftMessageVisible, text: $t('Gift Message')"></a>
-<div id="allow-gift-messages-for-order-container" class="gift-messages-order" data-bind="visible: isOrderLevelGiftMessageVisible">
-    <fieldset class="fieldset">
-        <p data-bind="text: $t('Leave this box blank if you don\'t want to leave a gift message for the entire order.')"></p>
-        <div class="field from">
-            <label for="gift-message-whole-from" class="label"><span data-bind="text: $t('From')"></span></label>
-            <div class="control">
-                <input type="text" id="gift-message-whole-from" title="From" class="input-text" data-bind="
-                    value: message.from,
-                    attr: {
-                        name: 'giftmessage[quote][' + quoteId  + '][from]'
-                    }
-                ">
-            </div>
-        </div>
-        <div class="field to">
-            <label for="gift-message-whole-to" class="label"><span data-bind="text: $t('To')"></span></label>
-            <div class="control">
-                <input type="text" id="gift-message-whole-to" title="To" class="input-text" data-bind="
-                value: message.to,
-                attr: {
-                    name: 'giftmessage[quote][' + quoteId + '][to]'
-                }
-            ">
-            </div>
-        </div>
-        <div class="field text">
-            <label for="gift-message-whole-message" class="label"><span data-bind="text: $t('Message')"></span></label>
-            <div class="control">
-                <textarea id="gift-message-whole-message" class="input-text" title="Message" rows="5" cols="10" data-bind="
-                    value: message.message,
-                    attr: {
-                        name: 'giftmessage[quote][' + quoteId + '][message]'
-                    }
-                ">
-                </textarea>
-            </div>
-        </div>
-    </fieldset>
-</div>
diff --git a/app/code/Magento/GoogleAdwords/composer.json b/app/code/Magento/GoogleAdwords/composer.json
index 304cc1bf791158d545194f29f2c3be44a9b8c097..5cc77002b47154ceced14a609d6e0d41282926d7 100644
--- a/app/code/Magento/GoogleAdwords/composer.json
+++ b/app/code/Magento/GoogleAdwords/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/GoogleAnalytics/composer.json b/app/code/Magento/GoogleAnalytics/composer.json
index 92aee5dbd021df882f73761a6b368c905fdcc83e..09c1724be6bc16c662205bef182abc2a677a37b0 100644
--- a/app/code/Magento/GoogleAnalytics/composer.json
+++ b/app/code/Magento/GoogleAnalytics/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-cookie": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-cookie": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/GoogleOptimizer/composer.json b/app/code/Magento/GoogleOptimizer/composer.json
index f046d154cbcf7acf581a241c374e026df489efc2..97573703a09a74e685922b0b3948f6af8e30aa73 100644
--- a/app/code/Magento/GoogleOptimizer/composer.json
+++ b/app/code/Magento/GoogleOptimizer/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-google-analytics": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-cms": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-google-analytics": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-cms": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/GoogleShopping/composer.json b/app/code/Magento/GoogleShopping/composer.json
index 564c50bd7a9c4929da303ab754797a91b5c26994..1e2387799214e5b48fe356487cc1ea18ce2d030f 100644
--- a/app/code/Magento/GoogleShopping/composer.json
+++ b/app/code/Magento/GoogleShopping/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/GroupedImportExport/composer.json b/app/code/Magento/GroupedImportExport/composer.json
index d17ec6ec9e8dfa34f60b13a34725d2c7fea5abca..33a57b24cb7193f6bb5f3b2f0eef591837005946 100644
--- a/app/code/Magento/GroupedImportExport/composer.json
+++ b/app/code/Magento/GroupedImportExport/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-import-export": "0.74.0-beta13",
-        "magento/module-catalog-import-export": "0.74.0-beta13",
-        "magento/module-grouped-product": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-import-export": "0.74.0-beta14",
+        "magento/module-catalog-import-export": "0.74.0-beta14",
+        "magento/module-grouped-product": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/GroupedProduct/Model/Resource/Product/Indexer/Price/Grouped.php b/app/code/Magento/GroupedProduct/Model/Resource/Product/Indexer/Price/Grouped.php
index 1aa5d99953baecbd2efc8ca05b4a9d961d5fb70e..78155ac89acefd03b022fec7e2f7cb7fc1c70b3f 100644
--- a/app/code/Magento/GroupedProduct/Model/Resource/Product/Indexer/Price/Grouped.php
+++ b/app/code/Magento/GroupedProduct/Model/Resource/Product/Indexer/Price/Grouped.php
@@ -17,7 +17,7 @@ class Grouped extends \Magento\Catalog\Model\Resource\Product\Indexer\Price\Defa
      */
     public function reindexAll()
     {
-        $this->useIdxTable(true);
+        $this->tableStrategy->setUseIdxTable(true);
         $this->beginTransaction();
         try {
             $this->_prepareGroupedProductPriceData();
diff --git a/app/code/Magento/GroupedProduct/composer.json b/app/code/Magento/GroupedProduct/composer.json
index d108bccbced3c09fa8991ae13fbf15296e7075f4..4ee6e8762d9b6760ce1ad74e9978af483e913f0d 100644
--- a/app/code/Magento/GroupedProduct/composer.json
+++ b/app/code/Magento/GroupedProduct/composer.json
@@ -3,22 +3,22 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/module-msrp": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/module-msrp": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_cart_item_renderers.xml
index c9021d6bcbd8fbd461cd9463b53bdad518f63203..8044a857c6a3e8863fc2f4299ebc39eb564b7793 100644
--- a/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_cart_item_renderers.xml
+++ b/app/code/Magento/GroupedProduct/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -8,7 +8,12 @@
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
     <body>
         <referenceBlock name="checkout.cart.item.renderers">
-            <block class="Magento\GroupedProduct\Block\Cart\Item\Renderer\Grouped" as="grouped" template="Magento_Checkout::cart/item/default.phtml"/>
+            <block class="Magento\GroupedProduct\Block\Cart\Item\Renderer\Grouped" as="grouped" template="Magento_Checkout::cart/item/default.phtml">
+                <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions" name="checkout.cart.item.renderers.grouped.actions" as="actions">
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Edit" name="checkout.cart.item.renderers.grouped.actions.edit" template="Magento_Checkout::cart/item/renderer/actions/edit.phtml"/>
+                    <block class="Magento\Checkout\Block\Cart\Item\Renderer\Actions\Remove" name="checkout.cart.item.renderers.grouped.actions.remove" template="Magento_Checkout::cart/item/renderer/actions/remove.phtml"/>
+                </block>
+            </block>
         </referenceBlock>
     </body>
 </page>
diff --git a/app/code/Magento/ImportExport/composer.json b/app/code/Magento/ImportExport/composer.json
index e7cbb957d07e0c2be37df045848e2ba04994930c..e5e58f1eeb8b2d8329b2789124b0a372ca75ef3a 100644
--- a/app/code/Magento/ImportExport/composer.json
+++ b/app/code/Magento/ImportExport/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-indexer": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-indexer": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "ext-ctype": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Indexer/Model/Indexer/Table/Strategy.php b/app/code/Magento/Indexer/Model/Indexer/Table/Strategy.php
new file mode 100644
index 0000000000000000000000000000000000000000..2d6c154a2a707879fc47cd6bd5720806b2e96733
--- /dev/null
+++ b/app/code/Magento/Indexer/Model/Indexer/Table/Strategy.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Indexer\Model\Indexer\Table;
+
+/**
+ * Class Strategy
+ * @package Magento\Indexer
+ */
+class Strategy implements StrategyInterface
+{
+    /**
+     * Application resource
+     *
+     * @var \Magento\Framework\App\Resource
+     */
+    protected $resource;
+
+    /**
+     * Constructor
+     *
+     * @param \Magento\Framework\App\Resource $resource
+     */
+    public function __construct(
+        \Magento\Framework\App\Resource $resource
+    ) {
+        $this->resource = $resource;
+    }
+
+    /**
+     * Use index table directly
+     *
+     * @var bool
+     */
+    protected $useIdxTable = false;
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getUseIdxTable()
+    {
+        return $this->useIdxTable;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setUseIdxTable($value = false)
+    {
+        $this->useIdxTable = (bool) $value;
+        return $this;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getTableName($tablePrefix)
+    {
+        return $this->resource->getTableName($this->prepareTableName($tablePrefix));
+    }
+
+    /**
+     * Prepare index table name
+     *
+     * @param string $tablePrefix
+     *
+     * @return string
+     */
+    public function prepareTableName($tablePrefix)
+    {
+        return $this->getUseIdxTable()
+            ? $tablePrefix . self::IDX_SUFFIX
+            : $tablePrefix . self::TMP_SUFFIX;
+    }
+}
diff --git a/app/code/Magento/Indexer/Model/Indexer/Table/StrategyInterface.php b/app/code/Magento/Indexer/Model/Indexer/Table/StrategyInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..c1693ceb44cd47f8a7d7e7de2649e6264985ad77
--- /dev/null
+++ b/app/code/Magento/Indexer/Model/Indexer/Table/StrategyInterface.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Indexer\Model\Indexer\Table;
+
+/**
+ * Interface StrategyInterface
+ * @package Magento\Indexer
+ */
+interface StrategyInterface
+{
+    const IDX_SUFFIX = '_idx';
+
+    const TMP_SUFFIX = '_tmp';
+
+    /**
+     * Get IDX table usage flag
+     *
+     * @return bool
+     * @SuppressWarnings(PHPMD.BooleanGetMethodName)
+     */
+    public function getUseIdxTable();
+
+    /**
+     * Set IDX table usage flag
+     *
+     * @param bool $value
+     *
+     * @return $this
+     */
+    public function setUseIdxTable($value = false);
+
+    /**
+     * Prepare index table name
+     *
+     * @param string $tablePrefix
+     *
+     * @return string
+     */
+    public function prepareTableName($tablePrefix);
+
+    /**
+     * Returns target table name
+     *
+     * @param string $tablePrefix
+     *
+     * @return string
+     */
+    public function getTableName($tablePrefix);
+}
diff --git a/app/code/Magento/Indexer/Model/Resource/AbstractResource.php b/app/code/Magento/Indexer/Model/Resource/AbstractResource.php
index 9fa80dac9e76571bf9a4153cce3e255206499767..aeccf684e6a22fef89ab314648d073bb94e35286 100644
--- a/app/code/Magento/Indexer/Model/Resource/AbstractResource.php
+++ b/app/code/Magento/Indexer/Model/Resource/AbstractResource.php
@@ -16,16 +16,28 @@ use Magento\Framework\DB\Select;
 
 abstract class AbstractResource extends \Magento\Framework\Model\Resource\Db\AbstractDb
 {
-    const IDX_SUFFIX = '_idx';
-
-    const TMP_SUFFIX = '_tmp';
+    /**
+     * Constructor
+     *
+     * @var \Magento\Indexer\Model\Indexer\Table\StrategyInterface
+     */
+    protected $tableStrategy;
 
     /**
-     * Flag that defines if need to use "_idx" index table suffix instead of "_tmp"
+     * Class constructor
      *
-     * @var bool
+     * @param \Magento\Framework\Model\Resource\Db\Context $context
+     * @param \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy
+     * @param null $resourcePrefix
      */
-    protected $_isNeedUseIdxTable = false;
+    public function __construct(
+        \Magento\Framework\Model\Resource\Db\Context $context,
+        \Magento\Indexer\Model\Indexer\Table\StrategyInterface $tableStrategy,
+        $resourcePrefix = null
+    ) {
+        $this->tableStrategy = $tableStrategy;
+        parent::__construct($context, $resourcePrefix);
+    }
 
     /**
      * Reindex all
@@ -34,7 +46,7 @@ abstract class AbstractResource extends \Magento\Framework\Model\Resource\Db\Abs
      */
     public function reindexAll()
     {
-        $this->useIdxTable(true);
+        $this->tableStrategy->setUseIdxTable(true);
         return $this;
     }
 
@@ -56,14 +68,10 @@ abstract class AbstractResource extends \Magento\Framework\Model\Resource\Db\Abs
      */
     public function getIdxTable($table = null)
     {
-        $suffix = self::TMP_SUFFIX;
-        if ($this->_isNeedUseIdxTable) {
-            $suffix = self::IDX_SUFFIX;
-        }
         if ($table) {
-            return $table . $suffix;
+            return $this->tableStrategy->prepareTableName($table);
         }
-        return $this->getMainTable() . $suffix;
+        return $this->tableStrategy->prepareTableName($this->getMainTable());
     }
 
     /**
@@ -155,20 +163,6 @@ abstract class AbstractResource extends \Magento\Framework\Model\Resource\Db\Abs
         return $this;
     }
 
-    /**
-     * Set or get what either "_idx" or "_tmp" suffixed temporary index table need to use
-     *
-     * @param bool $value
-     * @return bool
-     */
-    public function useIdxTable($value = null)
-    {
-        if ($value !== null) {
-            $this->_isNeedUseIdxTable = (bool)$value;
-        }
-        return $this->_isNeedUseIdxTable;
-    }
-
     /**
      * Clean up temporary index table
      *
diff --git a/app/code/Magento/Indexer/Test/Unit/Model/Indexer/Table/StrategyTest.php b/app/code/Magento/Indexer/Test/Unit/Model/Indexer/Table/StrategyTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..6aed194580dc6f9168d2f9bde635f315180daafe
--- /dev/null
+++ b/app/code/Magento/Indexer/Test/Unit/Model/Indexer/Table/StrategyTest.php
@@ -0,0 +1,94 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Indexer\Test\Unit\Model\Indexer\Table;
+
+/**
+ * Class StrategyTest
+ * @package Magento\Indexer\Test\Unit\Model\Indexer\Table
+ */
+class StrategyTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * Strategy object
+     *
+     * @var \Magento\Indexer\Model\Indexer\Table\Strategy
+     */
+    protected $_model;
+
+    /**
+     * Resource mock
+     *
+     * @var \Magento\Framework\App\Resource|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $_resourceMock;
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function setUp()
+    {
+        $this->_resourceMock = $this->getMock(
+            '\Magento\Framework\App\Resource',
+            [],
+            [],
+            '',
+            false
+        );
+        $this->_model = new \Magento\Indexer\Model\Indexer\Table\Strategy(
+            $this->_resourceMock
+        );
+    }
+
+    /**
+     * Test use idx table switcher
+     *
+     * @return void
+     */
+    public function testUseIdxTable()
+    {
+        $this->assertEquals(false, $this->_model->getUseIdxTable());
+        $this->_model->setUseIdxTable(false);
+        $this->assertEquals(false, $this->_model->getUseIdxTable());
+        $this->_model->setUseIdxTable(true);
+        $this->assertEquals(true, $this->_model->getUseIdxTable());
+        $this->_model->setUseIdxTable();
+        $this->assertEquals(false, $this->_model->getUseIdxTable());
+    }
+
+    /**
+     * Test table name preparation
+     *
+     * @return void
+     */
+    public function testPrepareTableName()
+    {
+        $this->assertEquals('test_tmp', $this->_model->prepareTableName('test'));
+        $this->_model->setUseIdxTable(true);
+        $this->assertEquals('test_idx', $this->_model->prepareTableName('test'));
+        $this->_model->setUseIdxTable(false);
+        $this->assertEquals('test_tmp', $this->_model->prepareTableName('test'));
+    }
+
+    /**
+     * Test table name getter
+     *
+     * @return void
+     */
+    public function testGetTableName()
+    {
+        $prefix = 'pre_';
+        $this->_resourceMock->expects($this->any())->method('getTableName')->will(
+            $this->returnCallback(
+                function ($tableName) use ($prefix) {
+                    return $prefix . $tableName;
+                }
+            )
+        );
+        $this->assertEquals('pre_test_tmp', $this->_model->getTableName('test'));
+        $this->_model->setUseIdxTable(true);
+        $this->assertEquals('pre_test_idx', $this->_model->getTableName('test'));
+    }
+}
diff --git a/app/code/Magento/Indexer/Test/Unit/Model/Processor/InvalidateCacheTest.php b/app/code/Magento/Indexer/Test/Unit/Model/Processor/InvalidateCacheTest.php
index 29628de82f5459902a9996b0e47e4beeb179ac2b..90c5606b85da7ec8612250701c9adfbc9d075742 100644
--- a/app/code/Magento/Indexer/Test/Unit/Model/Processor/InvalidateCacheTest.php
+++ b/app/code/Magento/Indexer/Test/Unit/Model/Processor/InvalidateCacheTest.php
@@ -4,33 +4,41 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Indexer\Test\Unit\Model\Processor;
 
 class InvalidateCacheTest extends \PHPUnit_Framework_TestCase
 {
     /**
+     * Tested plugin
+     *
      * @var \Magento\Indexer\Model\Processor\InvalidateCache
      */
     protected $plugin;
 
     /**
+     * Mock for context
+     *
      * @var \Magento\Indexer\Model\CacheContext|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $contextMock;
 
     /**
+     * Subject mock
+     *
      * @var \Magento\Indexer\Model\ActionInterface|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $subjectMock;
 
     /**
+     * Event manager mock
+     *
      * @var \Magento\Framework\Event\Manager|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $eventManagerMock;
 
     /**
+     * Module manager mock
+     *
      * @var \Magento\Framework\Module\Manager|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $moduleManager;
@@ -40,20 +48,21 @@ class InvalidateCacheTest extends \PHPUnit_Framework_TestCase
      */
     public function setUp()
     {
-        $this->subjectMock = $this->getMock('Magento\Indexer\Model\Processor',
-            [], [], '', false);
-        $this->contextMock = $this->getMock('Magento\Indexer\Model\CacheContext',
-            [], [], '', false);
-        $this->eventManagerMock = $this->getMock('Magento\Framework\Event\Manager',
-            [], [], '', false);
-        $this->moduleManager = $this->getMock('Magento\Framework\Module\Manager',
-            [], [], '', false);
+        $this->subjectMock = $this->getMock('Magento\Indexer\Model\Processor', [], [], '', false);
+        $this->contextMock = $this->getMock('Magento\Indexer\Model\CacheContext', [], [], '', false);
+        $this->eventManagerMock = $this->getMock('Magento\Framework\Event\Manager', [], [], '', false);
+        $this->moduleManager = $this->getMock('Magento\Framework\Module\Manager', [], [], '', false);
         $this->plugin = new \Magento\Indexer\Model\Processor\InvalidateCache(
-            $this->contextMock, $this->eventManagerMock, $this->moduleManager);
+            $this->contextMock,
+            $this->eventManagerMock,
+            $this->moduleManager
+        );
     }
 
     /**
      * Test afterUpdateMview with enabled PageCache module
+     *
+     * @return void
      */
     public function testAfterUpdateMviewPageCacheEnabled()
     {
@@ -63,14 +72,17 @@ class InvalidateCacheTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue(true));
         $this->eventManagerMock->expects($this->once())
             ->method('dispatch')
-            ->with($this->equalTo('clean_cache_after_reindex'),
-                $this->equalTo(['object' => $this->contextMock]));
-        $actualResult = $this->plugin->afterUpdateMview($this->subjectMock);
-        $this->assertNull($actualResult);
+            ->with(
+                $this->equalTo('clean_cache_after_reindex'),
+                $this->equalTo(['object' => $this->contextMock])
+            );
+        $this->plugin->afterUpdateMview($this->subjectMock);
     }
 
     /**
-     * afterUpdateMview with disabled PageCache module
+     * Test afterUpdateMview with disabled PageCache module
+     *
+     * @return void
      */
     public function testAfterUpdateMviewPageCacheDisabled()
     {
@@ -80,7 +92,6 @@ class InvalidateCacheTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue(false));
         $this->eventManagerMock->expects($this->never())
             ->method('dispatch');
-        $actualResult = $this->plugin->afterUpdateMview($this->subjectMock);
-        $this->assertNull($actualResult);
+        $this->plugin->afterUpdateMview($this->subjectMock);
     }
 }
diff --git a/app/code/Magento/Indexer/Test/Unit/Model/Resource/AbstractResourceTest.php b/app/code/Magento/Indexer/Test/Unit/Model/Resource/AbstractResourceTest.php
index 79e058df703750c0242663308e62b9555296e379..07b7bf63f7c8ca71d7d146d0ad56e0b59ea624ec 100644
--- a/app/code/Magento/Indexer/Test/Unit/Model/Resource/AbstractResourceTest.php
+++ b/app/code/Magento/Indexer/Test/Unit/Model/Resource/AbstractResourceTest.php
@@ -17,6 +17,11 @@ class AbstractResourceTest extends \PHPUnit_Framework_TestCase
      */
     protected $_resourceMock;
 
+    /**
+     * @var \Magento\Indexer\Model\Indexer\Table\StrategyInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $_tableStrategyInterface;
+
 
     protected function setUp()
     {
@@ -24,10 +29,20 @@ class AbstractResourceTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()
             ->getMock();
 
+        $this->_tableStrategyInterface = $this->getMock(
+            'Magento\Indexer\Model\Indexer\Table\StrategyInterface',
+            [],
+            [],
+            '',
+            false
+        );
         $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
         $arguments = $objectManager->getConstructArguments(
             '\Magento\Indexer\Test\Unit\Model\Resource\AbstractResourceStub',
-            ['resource' => $this->_resourceMock]
+            [
+                'resource' => $this->_resourceMock,
+                'tableStrategy' => $this->_tableStrategyInterface
+            ]
         );
         $this->model = $objectManager->getObject(
             '\Magento\Indexer\Test\Unit\Model\Resource\AbstractResourceStub',
@@ -37,18 +52,17 @@ class AbstractResourceTest extends \PHPUnit_Framework_TestCase
 
     public function testReindexAll()
     {
+        $this->_tableStrategyInterface->expects($this->once())
+            ->method('setUseIdxTable')
+            ->with(true);
+        $this->_tableStrategyInterface->expects($this->once())
+            ->method('prepareTableName')
+            ->with('test')
+            ->will($this->returnValue('test_idx'));
         $this->model->reindexAll();
         $this->assertEquals('test_idx', $this->model->getIdxTable('test'));
     }
 
-    public function testUseIdxTable()
-    {
-        $this->model->useIdxTable(true);
-        $this->assertEquals('test_idx', $this->model->getIdxTable('test'));
-        $this->model->useIdxTable(false);
-        $this->assertEquals('test_tmp', $this->model->getIdxTable('test'));
-    }
-
     public function testClearTemporaryIndexTable()
     {
         $connectionMock = $this->getMock('Magento\Framework\DB\Adapter\AdapterInterface', [], [], '', false);
diff --git a/app/code/Magento/Indexer/composer.json b/app/code/Magento/Indexer/composer.json
index 5334b4ad74bf65576c1ccec4ad8f4294e9dddf87..5c2d70fd3ba1f4706522b5534b358eed397bb3d7 100644
--- a/app/code/Magento/Indexer/composer.json
+++ b/app/code/Magento/Indexer/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-page-cache": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-page-cache": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Indexer/etc/crontab.xml b/app/code/Magento/Indexer/etc/crontab.xml
index 33e6a27040f939cca18a0ccf2418ffa0fa3ee5b7..2dd222c0e0166f7a4c5f1800e8655c83dccb0cec 100644
--- a/app/code/Magento/Indexer/etc/crontab.xml
+++ b/app/code/Magento/Indexer/etc/crontab.xml
@@ -6,7 +6,7 @@
  */
 -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../Cron/etc/crontab.xsd">
-    <group id="index">
+    <group id="default">
         <job name="indexer_reindex_all_invalid" instance="Magento\Indexer\Model\Processor" method="reindexAllInvalid">
             <schedule>* * * * *</schedule>
         </job>
diff --git a/app/code/Magento/Indexer/etc/di.xml b/app/code/Magento/Indexer/etc/di.xml
index 8c6730dffb5c959d732d78f590c366eae74ef1bb..d6c354590a60c3ab39544872c966aa98eb1f5572 100644
--- a/app/code/Magento/Indexer/etc/di.xml
+++ b/app/code/Magento/Indexer/etc/di.xml
@@ -10,6 +10,8 @@
     <preference for="Magento\Framework\Mview\View\StateInterface" type="Magento\Indexer\Model\Mview\View\State" />
     <preference for="Magento\Indexer\Model\ConfigInterface" type="Magento\Indexer\Model\Config" />
     <preference for="Magento\Indexer\Model\IndexerInterface" type="Magento\Indexer\Model\Indexer" />
+    <preference for="Magento\Indexer\Model\Indexer\Table\StrategyInterface" type="Magento\Indexer\Model\Indexer\Table\Strategy" />
+    <type name="Magento\Indexer\Model\Indexer\Table\StrategyInterface" shared="false" />
     <type name="Magento\Indexer\Model\Indexer">
         <arguments>
             <argument name="view" xsi:type="object" shared="false">Magento\Framework\Mview\View</argument>
diff --git a/app/code/Magento/Integration/composer.json b/app/code/Magento/Integration/composer.json
index e7522cbdd35551484344ff6d2e89df0259344269..71e7696d8ef28184f8fd128d60231cac19b28ca4 100644
--- a/app/code/Magento/Integration/composer.json
+++ b/app/code/Magento/Integration/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-user": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-authorization": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-user": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-authorization": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/LayeredNavigation/composer.json b/app/code/Magento/LayeredNavigation/composer.json
index bdc20c0270c5158053c633cfcfad014a842cbcb3..5fb0f54db609de19157dbbe5a22daf6d3025c950 100644
--- a/app/code/Magento/LayeredNavigation/composer.json
+++ b/app/code/Magento/LayeredNavigation/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Log/composer.json b/app/code/Magento/Log/composer.json
index 1e5b22c27320a7ab072789131a4b60f59b9dbdac..226458dacc1e2acfe398cfea0d658fb0ec2ab22e 100644
--- a/app/code/Magento/Log/composer.json
+++ b/app/code/Magento/Log/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/MediaStorage/composer.json b/app/code/Magento/MediaStorage/composer.json
index d6eb3484a3966987d8d3278506a3ba04abba6b52..da20bf9f3dc3d8790f4710a3027cbd22335b0d34 100644
--- a/app/code/Magento/MediaStorage/composer.json
+++ b/app/code/Magento/MediaStorage/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Msrp/composer.json b/app/code/Magento/Msrp/composer.json
index 264b8eb51dba8d26cd6487ab3a4c05374119152b..552af5d5da3518251046821ba504ab4608661fd3 100644
--- a/app/code/Magento/Msrp/composer.json
+++ b/app/code/Magento/Msrp/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-bundle": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-downloadable": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-grouped-product": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-bundle": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-downloadable": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-grouped-product": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Multishipping/composer.json b/app/code/Magento/Multishipping/composer.json
index 1d8a0325c2eb0998dc4e53af4125e2204ad25f50..3f6d9e22a139d0932d538424871afc49b49baa40 100644
--- a/app/code/Magento/Multishipping/composer.json
+++ b/app/code/Magento/Multishipping/composer.json
@@ -3,19 +3,19 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-payment": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-payment": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Newsletter/Model/Queue.php b/app/code/Magento/Newsletter/Model/Queue.php
index 4c34f3419f10ad6f41717fd31d5b656d2d849ffb..3a42e4ac6e36ba5b352caffd24f13cf5e23c48d7 100644
--- a/app/code/Magento/Newsletter/Model/Queue.php
+++ b/app/code/Magento/Newsletter/Model/Queue.php
@@ -119,13 +119,15 @@ class Queue extends \Magento\Email\Model\AbstractTemplate
      * @param \Magento\Newsletter\Model\ProblemFactory $problemFactory
      * @param \Magento\Newsletter\Model\Resource\Subscriber\CollectionFactory $subscriberCollectionFactory
      * @param \Magento\Newsletter\Model\Queue\TransportBuilder $transportBuilder
+     * @param \Magento\Framework\Model\Resource\AbstractResource $resource
+     * @param \Magento\Framework\Data\Collection\AbstractDb $resourceCollection
      * @param array $data
      * @SuppressWarnings(PHPMD.ExcessiveParameterList)
      */
     public function __construct(
         \Magento\Framework\Model\Context $context,
-        \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Registry $registry,
+        \Magento\Framework\View\DesignInterface $design,
         \Magento\Store\Model\App\Emulation $appEmulation,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
         \Magento\Newsletter\Model\Template\Filter $templateFilter,
@@ -134,9 +136,20 @@ class Queue extends \Magento\Email\Model\AbstractTemplate
         \Magento\Newsletter\Model\ProblemFactory $problemFactory,
         \Magento\Newsletter\Model\Resource\Subscriber\CollectionFactory $subscriberCollectionFactory,
         \Magento\Newsletter\Model\Queue\TransportBuilder $transportBuilder,
+        \Magento\Framework\Model\Resource\AbstractResource $resource = null,
+        \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
         array $data = []
     ) {
-        parent::__construct($context, $design, $registry, $appEmulation, $storeManager, $data);
+        parent::__construct(
+            $context,
+            $registry,
+            $design,
+            $appEmulation,
+            $storeManager,
+            $data,
+            $resource,
+            $resourceCollection
+        );
         $this->_templateFilter = $templateFilter;
         $this->_date = $date;
         $this->_templateFactory = $templateFactory;
diff --git a/app/code/Magento/Newsletter/Model/Template.php b/app/code/Magento/Newsletter/Model/Template.php
index 9f2dc723b155c0da2015d5cae3d906f5069ec660..9f439f7192713eb30dfff6dbc279b615cc53a6ff 100644
--- a/app/code/Magento/Newsletter/Model/Template.php
+++ b/app/code/Magento/Newsletter/Model/Template.php
@@ -106,8 +106,8 @@ class Template extends \Magento\Email\Model\AbstractTemplate
      */
     public function __construct(
         \Magento\Framework\Model\Context $context,
-        \Magento\Framework\View\DesignInterface $design,
         \Magento\Framework\Registry $registry,
+        \Magento\Framework\View\DesignInterface $design,
         \Magento\Store\Model\App\Emulation $appEmulation,
         \Magento\Store\Model\StoreManagerInterface $storeManager,
         \Magento\Framework\App\RequestInterface $request,
@@ -117,7 +117,7 @@ class Template extends \Magento\Email\Model\AbstractTemplate
         \Magento\Framework\Filter\FilterManager $filterManager,
         array $data = []
     ) {
-        parent::__construct($context, $design, $registry, $appEmulation, $storeManager, $data);
+        parent::__construct($context, $registry, $design, $appEmulation, $storeManager, $data);
         $this->_storeManager = $storeManager;
         $this->_request = $request;
         $this->_filter = $filter;
diff --git a/app/code/Magento/Newsletter/Test/Unit/Model/Plugin/CustomerPluginTest.php b/app/code/Magento/Newsletter/Test/Unit/Model/Plugin/CustomerPluginTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..0c97d3ef5ef8a0b28513411058c1604b81aa6bed
--- /dev/null
+++ b/app/code/Magento/Newsletter/Test/Unit/Model/Plugin/CustomerPluginTest.php
@@ -0,0 +1,94 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Newsletter\Test\Unit\Model\Plugin;
+
+class CustomerPluginTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Newsletter\Model\Plugin\CustomerPlugin
+     */
+    protected $plugin;
+
+    /**
+     * @var \Magento\Newsletter\Model\SubscriberFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $subscriberFactory;
+
+    /**
+     * @var \Magento\Newsletter\Model\Subscriber|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $subscriber;
+
+    /**
+     * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
+     */
+    protected $objectManager;
+
+    public function setUp()
+    {
+        $this->subscriberFactory = $this->getMockBuilder('\Magento\Newsletter\Model\SubscriberFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $this->subscriber = $this->getMockBuilder('\Magento\Newsletter\Model\Subscriber')
+            ->setMethods(['loadByEmail', 'getId', 'delete', 'updateSubscription'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->subscriberFactory->expects($this->any())->method('create')->willReturn($this->subscriber);
+
+        $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+
+        $this->plugin = $this->objectManager->getObject(
+            'Magento\Newsletter\Model\Plugin\CustomerPlugin',
+            [
+                'subscriberFactory' => $this->subscriberFactory
+            ]
+        );
+    }
+
+    public function testAfterSave()
+    {
+        $customerId = 1;
+        $subject = $this->getMock('\Magento\Customer\Api\CustomerRepositoryInterface');
+        $customer = $this->getMock('Magento\Customer\Api\Data\CustomerInterface');
+        $customer->expects($this->once())->method('getId')->willReturn($customerId);
+        $this->subscriber->expects($this->once())->method('updateSubscription')->with($customerId)->willReturnSelf();
+
+        $this->assertEquals($customer, $this->plugin->afterSave($subject, $customer));
+    }
+
+    public function testAroundDelete()
+    {
+        $deleteCustomer = function () {
+            return true;
+        };
+        $subject = $this->getMock('\Magento\Customer\Api\CustomerRepositoryInterface');
+        $customer = $this->getMock('Magento\Customer\Api\Data\CustomerInterface');
+        $customer->expects($this->once())->method('getEmail')->willReturn('test@test.com');
+        $this->subscriber->expects($this->once())->method('loadByEmail')->with('test@test.com')->willReturnSelf();
+        $this->subscriber->expects($this->once())->method('getId')->willReturn(1);
+        $this->subscriber->expects($this->once())->method('delete')->willReturnSelf();
+
+        $this->assertEquals(true, $this->plugin->aroundDelete($subject, $deleteCustomer, $customer));
+    }
+
+    public function testAroundDeleteById()
+    {
+        $customerId = 1;
+        $deleteCustomerById = function () {
+            return true;
+        };
+        $subject = $this->getMock('\Magento\Customer\Api\CustomerRepositoryInterface');
+        $customer = $this->getMock('Magento\Customer\Api\Data\CustomerInterface');
+        $subject->expects($this->once())->method('getById')->willReturn($customer);
+        $customer->expects($this->once())->method('getEmail')->willReturn('test@test.com');
+        $this->subscriber->expects($this->once())->method('loadByEmail')->with('test@test.com')->willReturnSelf();
+        $this->subscriber->expects($this->once())->method('getId')->willReturn(1);
+        $this->subscriber->expects($this->once())->method('delete')->willReturnSelf();
+
+        $this->assertEquals(true, $this->plugin->aroundDeleteById($subject, $deleteCustomerById, $customerId));
+    }
+}
diff --git a/app/code/Magento/Newsletter/Test/Unit/Model/QueueTest.php b/app/code/Magento/Newsletter/Test/Unit/Model/QueueTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..bb8ec3b719f54c143447aececfde24daccbcc5ce
--- /dev/null
+++ b/app/code/Magento/Newsletter/Test/Unit/Model/QueueTest.php
@@ -0,0 +1,205 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Newsletter\Test\Unit\Model;
+
+class QueueTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Newsletter\Model\Queue
+     */
+    protected $queue;
+
+    /**
+     * @var \Magento\Newsletter\Model\Template\Filter|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $templateFilter;
+
+    /**
+     * @var \Magento\Framework\Stdlib\DateTime\DateTime|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $date;
+
+    /**
+     * @var \Magento\Newsletter\Model\TemplateFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $templateFactory;
+
+    /**
+     * @var \Magento\Newsletter\Model\ProblemFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $problemFactory;
+
+    /**
+     * @var \Magento\Newsletter\Model\Resource\Subscriber\Collection|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $subscribersCollection;
+
+    /**
+     * @var \Magento\Newsletter\Model\Resource\Subscriber\CollectionFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $subscribersCollectionFactory;
+
+    /**
+     * @var \Magento\Newsletter\Model\Queue\TransportBuilder|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $transportBuilder;
+
+    /**
+     * @var \Magento\Newsletter\Model\Resource\Queue|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resource;
+
+    /**
+     * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
+     */
+    protected $objectManager;
+
+    public function setUp()
+    {
+        $this->templateFilter = $this->getMockBuilder('\Magento\Newsletter\Model\Template\Filter')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $this->date = $this->getMockBuilder('\Magento\Framework\Stdlib\DateTime\DateTime')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->templateFactory = $this->getMockBuilder('\Magento\Newsletter\Model\TemplateFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create', 'load'])
+            ->getMock();
+        $this->problemFactory = $this->getMockBuilder('\Magento\Newsletter\Model\ProblemFactory')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->transportBuilder = $this->getMockBuilder('\Magento\Newsletter\Model\Queue\TransportBuilder')
+            ->disableOriginalConstructor()
+            ->setMethods(
+                ['setTemplateData', 'setTemplateOptions', 'setTemplateVars', 'setFrom', 'addTo', 'getTransport']
+            )
+            ->getMock();
+        $this->subscribersCollection = $this->getMockBuilder('\Magento\Newsletter\Model\Resource\Subscriber\Collection')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->resource = $this->getMockBuilder('\Magento\Newsletter\Model\Resource\Queue')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->subscribersCollectionFactory = $this->getMockBuilder(
+            '\Magento\Newsletter\Model\Resource\Subscriber\CollectionFactory'
+        )
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $this->subscribersCollectionFactory->expects($this->any())->method('create')->willReturn(
+            $this->subscribersCollection
+        );
+
+        $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+
+        $this->queue = $this->objectManager->getObject(
+            '\Magento\Newsletter\Model\Queue',
+            [
+                'templateFilter' => $this->templateFilter,
+                'date' => $this->date,
+                'templateFactory' => $this->templateFactory,
+                'problemFactory' => $this->problemFactory,
+                'subscriberCollectionFactory' => $this->subscribersCollectionFactory,
+                'transportBuilder' => $this->transportBuilder,
+                'resource' => $this->resource
+            ]
+        );
+    }
+
+    public function testSendPerSubscriber1()
+    {
+        $this->queue->setQueueStatus(2);
+        $this->queue->setQueueStartAt(1);
+
+        $this->assertEquals($this->queue, $this->queue->sendPerSubscriber());
+    }
+
+    public function testSendPerSubscriberZeroSize()
+    {
+        $this->queue->setQueueStatus(1);
+        $this->queue->setQueueStartAt(1);
+        $this->subscribersCollection->expects($this->once())->method('getQueueJoinedFlag')->willReturn(false);
+        $this->subscribersCollection->expects($this->once())->method('useQueue')->with($this->queue)->willReturnSelf();
+        $this->subscribersCollection->expects($this->once())->method('getSize')->willReturn(0);
+        $this->date->expects($this->once())->method('gmtDate')->willReturn('any_date');
+
+        $this->assertEquals($this->queue, $this->queue->sendPerSubscriber());
+    }
+
+    public function testSendPerSubscriber2()
+    {
+        $this->queue->setQueueStatus(1);
+        $this->queue->setQueueStartAt(1);
+        $collection = $this->getMockBuilder('\Magento\Framework\Data\Collection')
+            ->disableOriginalConstructor()
+            ->setMethods(['getItems'])
+            ->getMock();
+        $item = $this->getMockBuilder('\Magento\Newsletter\Model\Subscriber')
+            ->disableOriginalConstructor()
+            ->setMethods(['getStoreId', 'getSubscriberEmail', 'getSubscriberFullName', 'received'])
+            ->getMock();
+        $transport = $this->getMock('\Magento\Framework\Mail\TransportInterface');
+        $this->subscribersCollection->expects($this->once())->method('getQueueJoinedFlag')->willReturn(false);
+        $this->subscribersCollection->expects($this->once())->method('useQueue')->with($this->queue)->willReturnSelf();
+        $this->subscribersCollection->expects($this->once())->method('getSize')->willReturn(5);
+        $this->subscribersCollection->expects($this->once())->method('useOnlyUnsent')->willReturnSelf();
+        $this->subscribersCollection->expects($this->once())->method('showCustomerInfo')->willReturnSelf();
+        $this->subscribersCollection->expects($this->once())->method('setPageSize')->willReturnSelf();
+        $this->subscribersCollection->expects($this->once())->method('setCurPage')->willReturnSelf();
+        $this->subscribersCollection->expects($this->once())->method('load')->willReturn($collection);
+        $this->transportBuilder->expects($this->once())->method('setTemplateData')->willReturnSelf();
+        $collection->expects($this->atLeastOnce())->method('getItems')->willReturn([$item]);
+        $item->expects($this->once())->method('getStoreId')->willReturn('store_id');
+        $item->expects($this->once())->method('getSubscriberEmail')->willReturn('email');
+        $item->expects($this->once())->method('getSubscriberFullName')->willReturn('full_name');
+        $this->transportBuilder->expects($this->once())->method('setTemplateOptions')->willReturnSelf();
+        $this->transportBuilder->expects($this->once())->method('setTemplateVars')->willReturnSelf();
+        $this->transportBuilder->expects($this->once())->method('setFrom')->willReturnSelf();
+        $this->transportBuilder->expects($this->once())->method('addTo')->willReturnSelf();
+        $this->transportBuilder->expects($this->once())->method('getTransport')->willReturn($transport);
+        $item->expects($this->once())->method('received')->with($this->queue)->willReturnSelf();
+
+        $this->assertEquals($this->queue, $this->queue->sendPerSubscriber());
+    }
+
+    public function testGetDataForSave()
+    {
+        $result = [
+            'template_id' => 'id',
+            'queue_status' => 'status',
+            'queue_start_at' => 'start_at',
+            'queue_finish_at' => 'finish_at'
+        ];
+        $this->queue->setTemplateId('id');
+        $this->queue->setQueueStatus('status');
+        $this->queue->setQueueStartAt('start_at');
+        $this->queue->setQueueFinishAt('finish_at');
+
+        $this->assertEquals($result, $this->queue->getDataForSave());
+    }
+
+    public function testGetTemplate()
+    {
+        $template = $this->getMockBuilder('\Magento\Newsletter\Model\Template')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->queue->setTemplateId(2);
+        $this->templateFactory->expects($this->once())->method('create')->willReturn($template);
+        $template->expects($this->once())->method('load')->with(2)->willReturnSelf();
+
+        $this->assertEquals($template, $this->queue->getTemplate());
+    }
+
+    public function testGetStores()
+    {
+        $stores = ['store'];
+        $this->resource->expects($this->once())->method('getStores')->willReturn($stores);
+
+        $this->assertEquals($stores, $this->queue->getStores());
+    }
+}
diff --git a/app/code/Magento/Newsletter/Test/Unit/Model/SubscriberTest.php b/app/code/Magento/Newsletter/Test/Unit/Model/SubscriberTest.php
index bd8380299a52ee06f8d95a9ddea229ae2649160e..90d5c2ca0a4886deac1ab31f7acf72a004ace884 100644
--- a/app/code/Magento/Newsletter/Test/Unit/Model/SubscriberTest.php
+++ b/app/code/Magento/Newsletter/Test/Unit/Model/SubscriberTest.php
@@ -100,7 +100,9 @@ class SubscriberTest extends \PHPUnit_Framework_TestCase
             [
                 'loadByEmail',
                 'getIdFieldName',
-                'save'
+                'save',
+                'loadByCustomerData',
+                'received'
             ],
             [],
             '',
@@ -134,7 +136,6 @@ class SubscriberTest extends \PHPUnit_Framework_TestCase
                 'name' => 'subscriber_name'
             ]
         );
-        $this->resource->expects($this->any())->method('getIdFieldName')->willReturn('id_field');
         $this->scopeConfig->expects($this->any())->method('getValue')->willReturn(true);
         $this->customerSession->expects($this->any())->method('isLoggedIn')->willReturn(true);
         $customerDataModel = $this->getMock('\Magento\Customer\Api\Data\CustomerInterface');
@@ -144,21 +145,193 @@ class SubscriberTest extends \PHPUnit_Framework_TestCase
         $this->customerRepository->expects($this->any())->method('getById')->willReturn($customerDataModel);
         $customerDataModel->expects($this->any())->method('getStoreId')->willReturn(1);
         $customerDataModel->expects($this->any())->method('getId')->willReturn(1);
-        $this->transportBuilder->expects($this->any())->method('setTemplateIdentifier')->willReturnSelf();
-        $this->transportBuilder->expects($this->any())->method('setTemplateOptions')->willReturnSelf();
-        $this->transportBuilder->expects($this->any())->method('setTemplateVars')->willReturnSelf();
-        $this->transportBuilder->expects($this->any())->method('setFrom')->willReturnSelf();
-        $this->transportBuilder->expects($this->any())->method('addTo')->willReturnSelf();
-        $storeModel = $this->getMock('\Magento\Store\Model\Store', ['getId'], [], '', false);
-        $this->scopeConfig->expects($this->any())->method('getValue')->willReturn('owner_email@magento.com');
-        $this->storeManager->expects($this->any())->method('getStore')->willReturn($storeModel);
-        $storeModel->expects($this->any())->method('getId')->willReturn(1);
-        $transport = $this->getMock('\Magento\Framework\Mail\TransportInterface');
-        $this->transportBuilder->expects($this->any())->method('getTransport')->willReturn($transport);
-        $transport->expects($this->any())->method('sendMessage')->willReturnSelf();
-        $inlineTranslation = $this->getMock('Magento\Framework\Translate\Inline\StateInterface');
-        $inlineTranslation->expects($this->any())->method('resume')->willReturnSelf();
+        $this->sendEmailCheck();
         $this->resource->expects($this->atLeastOnce())->method('save')->willReturnSelf();
+
         $this->assertEquals(1, $this->subscriber->subscribe($email));
     }
+
+    public function testSubscribeNotLoggedIn()
+    {
+        $email = 'subscriber_email@magento.com';
+        $this->resource->expects($this->any())->method('loadByEmail')->willReturn(
+            [
+                'subscriber_status' => 3,
+                'subscriber_email' => $email,
+                'name' => 'subscriber_name'
+            ]
+        );
+        $this->scopeConfig->expects($this->any())->method('getValue')->willReturn(true);
+        $this->customerSession->expects($this->any())->method('isLoggedIn')->willReturn(false);
+        $customerDataModel = $this->getMock('\Magento\Customer\Api\Data\CustomerInterface');
+        $this->customerSession->expects($this->any())->method('getCustomerDataObject')->willReturn($customerDataModel);
+        $this->customerSession->expects($this->any())->method('getCustomerId')->willReturn(1);
+        $customerDataModel->expects($this->any())->method('getEmail')->willReturn($email);
+        $this->customerRepository->expects($this->any())->method('getById')->willReturn($customerDataModel);
+        $customerDataModel->expects($this->any())->method('getStoreId')->willReturn(1);
+        $customerDataModel->expects($this->any())->method('getId')->willReturn(1);
+        $this->sendEmailCheck();
+        $this->resource->expects($this->atLeastOnce())->method('save')->willReturnSelf();
+
+        $this->assertEquals(2, $this->subscriber->subscribe($email));
+    }
+
+    public function testUpdateSubscription()
+    {
+        $customerId = 1;
+        $customerDataMock = $this->getMockBuilder('\Magento\Customer\Api\Data\CustomerInterface')
+            ->getMock();
+        $this->customerRepository->expects($this->atLeastOnce())
+            ->method('getById')
+            ->with($customerId)->willReturn($customerDataMock);
+        $this->resource->expects($this->atLeastOnce())
+            ->method('loadByCustomerData')
+            ->with($customerDataMock)
+            ->willReturn(
+                [
+                    'subscriber_id' => 1,
+                    'subscriber_status' => 1
+                ]
+            );
+        $customerDataMock->expects($this->atLeastOnce())->method('getId')->willReturn('id');
+        $this->resource->expects($this->atLeastOnce())->method('save')->willReturnSelf();
+        $this->customerAccountManagement->expects($this->once())
+            ->method('getConfirmationStatus')
+            ->with($customerId)
+            ->willReturn('account_confirmation_required');
+        $customerDataMock->expects($this->once())->method('getStoreId')->willReturn('store_id');
+        $customerDataMock->expects($this->once())->method('getEmail')->willReturn('email');
+
+        $this->assertEquals($this->subscriber, $this->subscriber->updateSubscription($customerId));
+    }
+
+    public function testUnsubscribeCustomerById()
+    {
+        $customerId = 1;
+        $customerDataMock = $this->getMockBuilder('\Magento\Customer\Api\Data\CustomerInterface')
+            ->getMock();
+        $this->customerRepository->expects($this->atLeastOnce())
+            ->method('getById')
+            ->with($customerId)->willReturn($customerDataMock);
+        $this->resource->expects($this->atLeastOnce())
+            ->method('loadByCustomerData')
+            ->with($customerDataMock)
+            ->willReturn(
+                [
+                    'subscriber_id' => 1,
+                    'subscriber_status' => 1
+                ]
+            );
+        $customerDataMock->expects($this->atLeastOnce())->method('getId')->willReturn('id');
+        $this->resource->expects($this->atLeastOnce())->method('save')->willReturnSelf();
+        $customerDataMock->expects($this->once())->method('getStoreId')->willReturn('store_id');
+        $customerDataMock->expects($this->once())->method('getEmail')->willReturn('email');
+        $this->sendEmailCheck();
+
+        $this->subscriber->unsubscribeCustomerById($customerId);
+    }
+
+    public function testSubscribeCustomerById()
+    {
+        $customerId = 1;
+        $customerDataMock = $this->getMockBuilder('\Magento\Customer\Api\Data\CustomerInterface')
+            ->getMock();
+        $this->customerRepository->expects($this->atLeastOnce())
+            ->method('getById')
+            ->with($customerId)->willReturn($customerDataMock);
+        $this->resource->expects($this->atLeastOnce())
+            ->method('loadByCustomerData')
+            ->with($customerDataMock)
+            ->willReturn(
+                [
+                    'subscriber_id' => 1,
+                    'subscriber_status' => 3
+                ]
+            );
+        $customerDataMock->expects($this->atLeastOnce())->method('getId')->willReturn('id');
+        $this->resource->expects($this->atLeastOnce())->method('save')->willReturnSelf();
+        $customerDataMock->expects($this->once())->method('getStoreId')->willReturn('store_id');
+        $customerDataMock->expects($this->once())->method('getEmail')->willReturn('email');
+        $this->sendEmailCheck();
+
+        $this->subscriber->subscribeCustomerById($customerId);
+    }
+
+    public function testUnsubscribe()
+    {
+        $this->resource->expects($this->once())->method('save')->willReturnSelf();
+        $this->sendEmailCheck();
+
+        $this->assertEquals($this->subscriber, $this->subscriber->unsubscribe());
+    }
+
+    /**
+     * @expectedException \Magento\Framework\Exception\LocalizedException
+     * @expectedExceptionMessage This is an invalid subscription confirmation code.
+     */
+    public function testUnsubscribeException()
+    {
+        $this->subscriber->setCode(111);
+        $this->subscriber->setCheckCode(222);
+
+        $this->subscriber->unsubscribe();
+    }
+
+    public function testGetSubscriberFullName()
+    {
+        $this->subscriber->setCustomerFirstname('John');
+        $this->subscriber->setCustomerLastname('Doe');
+
+        $this->assertEquals('John Doe', $this->subscriber->getSubscriberFullName());
+    }
+
+    public function testConfirm()
+    {
+        $code = 111;
+        $this->subscriber->setCode($code);
+        $this->resource->expects($this->once())->method('save')->willReturnSelf();
+
+        $this->assertTrue($this->subscriber->confirm($code));
+    }
+
+    public function testConfirmWrongCode()
+    {
+        $code = 111;
+        $this->subscriber->setCode(222);
+
+        $this->assertFalse($this->subscriber->confirm($code));
+    }
+
+    public function testReceived()
+    {
+        $queue = $this->getMockBuilder('\Magento\Newsletter\Model\Queue')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->resource->expects($this->once())->method('received')->with($this->subscriber, $queue)->willReturnSelf();
+
+        $this->assertEquals($this->subscriber, $this->subscriber->received($queue));
+    }
+
+    protected function sendEmailCheck()
+    {
+        $storeModel = $this->getMockBuilder('\Magento\Store\Model\Store')
+            ->disableOriginalConstructor()
+            ->setMethods(['getId'])
+            ->getMock();
+        $transport = $this->getMock('\Magento\Framework\Mail\TransportInterface');
+        $this->scopeConfig->expects($this->any())->method('getValue')->willReturn(true);
+        $this->transportBuilder->expects($this->once())->method('setTemplateIdentifier')->willReturnSelf();
+        $this->transportBuilder->expects($this->once())->method('setTemplateOptions')->willReturnSelf();
+        $this->transportBuilder->expects($this->once())->method('setTemplateVars')->willReturnSelf();
+        $this->transportBuilder->expects($this->once())->method('setFrom')->willReturnSelf();
+        $this->transportBuilder->expects($this->once())->method('addTo')->willReturnSelf();
+        $this->storeManager->expects($this->any())->method('getStore')->willReturn($storeModel);
+        $storeModel->expects($this->any())->method('getId')->willReturn(1);
+        $this->transportBuilder->expects($this->once())->method('getTransport')->willReturn($transport);
+        $transport->expects($this->once())->method('sendMessage')->willReturnSelf();
+        $this->inlineTranslation->expects($this->once())->method('suspend')->willReturnSelf();
+        $this->inlineTranslation->expects($this->once())->method('resume')->willReturnSelf();
+
+        return $this;
+    }
 }
diff --git a/app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php b/app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php
index 1b599897715f903b48a95b6432f14c96a74f3f4f..0bbd428237b19edb86a68947a8964696d138baa9 100644
--- a/app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php
+++ b/app/code/Magento/Newsletter/Test/Unit/Model/TemplateTest.php
@@ -65,8 +65,8 @@ class TemplateTest extends \PHPUnit_Framework_TestCase
             ['_init'],
             [
                 $context,
-                $design,
                 $registry,
+                $design,
                 $appEmulation,
                 $storeManager,
                 $request,
diff --git a/app/code/Magento/Newsletter/composer.json b/app/code/Magento/Newsletter/composer.json
index 5e9806a6fab8fd93f56c0a0ccca0256ca1771bc6..1ac1fb8c9d929acbe852fb2c8c0fa93ee1e42409 100644
--- a/app/code/Magento/Newsletter/composer.json
+++ b/app/code/Magento/Newsletter/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-widget": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-cms": "0.74.0-beta13",
-        "magento/module-email": "0.74.0-beta13",
-        "magento/module-cron": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-require-js": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-widget": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-cms": "0.74.0-beta14",
+        "magento/module-email": "0.74.0-beta14",
+        "magento/module-cron": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-require-js": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/OfflinePayments/composer.json b/app/code/Magento/OfflinePayments/composer.json
index 90045a9378f6e5f6b38fe5824ccfb2deea5770b6..5118d798b7ee7a9f2a5c5f1291afd3a9f9ade93d 100644
--- a/app/code/Magento/OfflinePayments/composer.json
+++ b/app/code/Magento/OfflinePayments/composer.json
@@ -3,13 +3,13 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-payment": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-payment": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/OfflineShipping/composer.json b/app/code/Magento/OfflineShipping/composer.json
index 9e6c4caa47f24bf81041f76336168cdaf9256b15..5a4bc6de203315f49cc562f6c3561279bc5febe8 100644
--- a/app/code/Magento/OfflineShipping/composer.json
+++ b/app/code/Magento/OfflineShipping/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-shipping": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-sales-rule": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-shipping": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-sales-rule": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/PageCache/composer.json b/app/code/Magento/PageCache/composer.json
index bc812b12e6d5c3b4ed3047b46623a6a0b2fb5f19..ce7896f50957edfc63dc32ca1c2b335c880bd0d9 100644
--- a/app/code/Magento/PageCache/composer.json
+++ b/app/code/Magento/PageCache/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Payment/composer.json b/app/code/Magento/Payment/composer.json
index 87f3a9ef1cd080f2b0da3e1e42532f71dc39d4b4..b78f45d789049bbd5d2a03a892e688dbd0d40535 100644
--- a/app/code/Magento/Payment/composer.json
+++ b/app/code/Magento/Payment/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Persistent/composer.json b/app/code/Magento/Persistent/composer.json
index 379f16a66b2f4879c1c315c5a33c6d93cd69f64b..b81c38561e3dfc1e24c9565dec1988e79ff43715 100644
--- a/app/code/Magento/Persistent/composer.json
+++ b/app/code/Magento/Persistent/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-cron": "0.74.0-beta13",
-        "magento/module-page-cache": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-cron": "0.74.0-beta14",
+        "magento/module-page-cache": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/ProductAlert/composer.json b/app/code/Magento/ProductAlert/composer.json
index 3e993546d08a901e3e7f7feda86c18e19e2cfd7e..715f9607506075b3e7fd70a2f1f691c63f78f3f5 100644
--- a/app/code/Magento/ProductAlert/composer.json
+++ b/app/code/Magento/ProductAlert/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Quote/Api/Data/EstimateAddressInterface.php b/app/code/Magento/Quote/Api/Data/EstimateAddressInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..5d5eb86351846141bfbd6c6bdca9ef58b6fa63bb
--- /dev/null
+++ b/app/code/Magento/Quote/Api/Data/EstimateAddressInterface.php
@@ -0,0 +1,103 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Quote\Api\Data;
+
+/**
+ * Interface EstimateAddressInterface
+ * @api
+ */
+interface EstimateAddressInterface extends \Magento\Framework\Api\CustomAttributesDataInterface
+{
+    /**#@+
+     * Constants defined for keys of array, makes typos less likely
+     */
+    const KEY_COUNTRY_ID = 'country_id';
+
+    const KEY_REGION_ID = 'region_id';
+
+    const KEY_REGION = 'region';
+
+    const KEY_POSTCODE = 'postcode';
+
+    /**#@-*/
+
+    /**
+     * Get region name
+     *
+     * @return string
+     */
+    public function getRegion();
+
+    /**
+     * Set region name
+     *
+     * @param string $region
+     * @return $this
+     */
+    public function setRegion($region);
+
+    /**
+     * Get region id
+     *
+     * @return int
+     */
+    public function getRegionId();
+
+    /**
+     * Set region id
+     *
+     * @param int $regionId
+     * @return $this
+     */
+    public function setRegionId($regionId);
+
+    /**
+     * Get country id
+     *
+     * @return string
+     */
+    public function getCountryId();
+
+    /**
+     * Set country id
+     *
+     * @param string $countryId
+     * @return $this
+     */
+    public function setCountryId($countryId);
+
+    /**
+     * Get postcode
+     *
+     * @return string
+     */
+    public function getPostcode();
+
+    /**
+     * Set postcode
+     *
+     * @param string $postcode
+     * @return $this
+     */
+    public function setPostcode($postcode);
+
+    /**
+     * Retrieve existing extension attributes object or create a new one.
+     *
+     * @return \Magento\Quote\Api\Data\EstimateAddressExtensionInterface|null
+     */
+    public function getExtensionAttributes();
+
+    /**
+     * Set an extension attributes object.
+     *
+     * @param \Magento\Quote\Api\Data\EstimateAddressExtensionInterface $extensionAttributes
+     * @return $this
+     */
+    public function setExtensionAttributes(
+        \Magento\Quote\Api\Data\EstimateAddressExtensionInterface $extensionAttributes
+    );
+}
diff --git a/app/code/Magento/Quote/Api/ShippingMethodManagementInterface.php b/app/code/Magento/Quote/Api/ShippingMethodManagementInterface.php
index 51044998e15e0e20520f690e21bcb0fd51f581d5..e9edbf4241fd0fa6d0decfeacad347b10aa2c04a 100644
--- a/app/code/Magento/Quote/Api/ShippingMethodManagementInterface.php
+++ b/app/code/Magento/Quote/Api/ShippingMethodManagementInterface.php
@@ -26,6 +26,24 @@ interface ShippingMethodManagementInterface
      */
     public function set($cartId, $carrierCode, $methodCode);
 
+    /**
+     * Estimate shipping
+     *
+     * @param int $cartId The shopping cart ID.
+     * @param \Magento\Quote\Api\Data\EstimateAddressInterface $address The estimate address
+     * @return \Magento\Quote\Api\Data\ShippingMethodInterface[] An array of shipping methods.
+     */
+    public function estimateByAddress($cartId, \Magento\Quote\Api\Data\EstimateAddressInterface $address);
+
+    /**
+     * Estimate shipping
+     *
+     * @param int $cartId The shopping cart ID.
+     * @param int $addressId The estimate address id
+     * @return \Magento\Quote\Api\Data\ShippingMethodInterface[] An array of shipping methods.
+     */
+    public function estimateByAddressId($cartId, $addressId);
+
     /**
      * Returns selected shipping method for a specified quote.
      *
diff --git a/app/code/Magento/Quote/Model/EstimateAddress.php b/app/code/Magento/Quote/Model/EstimateAddress.php
new file mode 100644
index 0000000000000000000000000000000000000000..652f8a00f685c9ac36752c1463dda9a5e9f592d4
--- /dev/null
+++ b/app/code/Magento/Quote/Model/EstimateAddress.php
@@ -0,0 +1,119 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Quote\Model;
+
+use Magento\Framework\Model\AbstractExtensibleModel;
+use Magento\Quote\Api\Data\EstimateAddressInterface;
+
+class EstimateAddress extends AbstractExtensibleModel implements EstimateAddressInterface
+{
+    /**
+     * Get region name
+     *
+     * @return string
+     */
+    public function getRegion()
+    {
+        return $this->getData(self::KEY_REGION);
+    }
+
+    /**
+     * Set region name
+     *
+     * @param string $region
+     * @return $this
+     */
+    public function setRegion($region)
+    {
+        return $this->setData(self::KEY_REGION, $region);
+    }
+
+    /**
+     * Get region id
+     *
+     * @return int
+     */
+    public function getRegionId()
+    {
+        return $this->getData(self::KEY_REGION_ID);
+    }
+
+    /**
+     * Set region id
+     *
+     * @param int $regionId
+     * @return $this
+     */
+    public function setRegionId($regionId)
+    {
+        return $this->setData(self::KEY_REGION_ID, $regionId);
+    }
+
+    /**
+     * Get country id
+     *
+     * @return string
+     */
+    public function getCountryId()
+    {
+        return $this->getData(self::KEY_COUNTRY_ID);
+    }
+
+    /**
+     * Set country id
+     *
+     * @param string $countryId
+     * @return $this
+     */
+    public function setCountryId($countryId)
+    {
+        return $this->setData(self::KEY_COUNTRY_ID, $countryId);
+    }
+
+    /**
+     * Get postcode
+     *
+     * @return string
+     */
+    public function getPostcode()
+    {
+        return $this->getData(self::KEY_POSTCODE);
+    }
+
+    /**
+     * Set postcode
+     *
+     * @param string $postcode
+     * @return $this
+     */
+    public function setPostcode($postcode)
+    {
+        return $this->setData(self::KEY_POSTCODE, $postcode);
+    }
+
+    /**
+     * Retrieve existing extension attributes object or create a new one.
+     *
+     * @return \Magento\Quote\Api\Data\EstimateAddressExtensionInterface|null
+     */
+    public function getExtensionAttributes()
+    {
+        return $this->_getExtensionAttributes();
+    }
+
+    /**
+     * Set an extension attributes object.
+     *
+     * @param \Magento\Quote\Api\Data\EstimateAddressExtensionInterface $extensionAttributes
+     * @return $this
+     */
+    public function setExtensionAttributes(
+        \Magento\Quote\Api\Data\EstimateAddressExtensionInterface $extensionAttributes
+    ) {
+        $this->_setExtensionAttributes($extensionAttributes);
+    }
+}
diff --git a/app/code/Magento/Quote/Model/ShippingMethodManagement.php b/app/code/Magento/Quote/Model/ShippingMethodManagement.php
index c1dc45aee4a479b3bfaa1f8671aadd57f9a8ad01..f8a39533b4233cf77b9365821857ca0e973ada0c 100644
--- a/app/code/Magento/Quote/Model/ShippingMethodManagement.php
+++ b/app/code/Magento/Quote/Model/ShippingMethodManagement.php
@@ -33,18 +33,29 @@ class ShippingMethodManagement implements ShippingMethodManagementInterface
      */
     protected $converter;
 
+    /**
+     * Customer Address repository
+     *
+     * @var \Magento\Customer\Api\AddressRepositoryInterface
+     */
+    protected $addressRepository;
+
     /**
      * Constructs a shipping method read service object.
      *
      * @param QuoteRepository $quoteRepository Quote repository.
      * @param \Magento\Quote\Model\Cart\ShippingMethodConverter $converter Shipping method converter.
+     * @param \Magento\Customer\Api\AddressRepositoryInterface $addressRepository Customer Address repository
+     *
      */
     public function __construct(
         QuoteRepository $quoteRepository,
-        Cart\ShippingMethodConverter $converter
+        Cart\ShippingMethodConverter $converter,
+        \Magento\Customer\Api\AddressRepositoryInterface $addressRepository
     ) {
         $this->quoteRepository = $quoteRepository;
         $this->converter = $converter;
+        $this->addressRepository = $addressRepository;
     }
 
     /**
@@ -146,4 +157,78 @@ class ShippingMethodManagement implements ShippingMethodManagementInterface
         }
         return true;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function estimateByAddress($cartId, \Magento\Quote\Api\Data\EstimateAddressInterface $address)
+    {
+        /** @var \Magento\Quote\Model\Quote $quote */
+        $quote = $this->quoteRepository->getActive($cartId);
+
+        // no methods applicable for empty carts or carts with virtual products
+        if ($quote->isVirtual() || 0 == $quote->getItemsCount()) {
+            return [];
+        }
+
+        return $this->getEstimatedRates(
+            $quote,
+            $address->getCountryId(),
+            $address->getPostcode(),
+            $address->getRegionId(),
+            $address->getRegion()
+        );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function estimateByAddressId($cartId, $addressId)
+    {
+        /** @var \Magento\Quote\Model\Quote $quote */
+        $quote = $this->quoteRepository->getActive($cartId);
+
+        // no methods applicable for empty carts or carts with virtual products
+        if ($quote->isVirtual() || 0 == $quote->getItemsCount()) {
+            return [];
+        }
+        $address = $this->addressRepository->getById($addressId);
+
+        return $this->getEstimatedRates(
+            $quote,
+            $address->getCountryId(),
+            $address->getPostcode(),
+            $address->getRegionId(),
+            $address->getRegion()
+        );
+    }
+
+    /**
+     * Get estimated rates
+     *
+     * @param Quote $quote
+     * @param int $country
+     * @param string $postcode
+     * @param int $regionId
+     * @param string $region
+     * @return \Magento\Quote\Api\Data\ShippingMethodInterface[] An array of shipping methods.
+     */
+    protected function getEstimatedRates(\Magento\Quote\Model\Quote $quote, $country, $postcode, $regionId, $region)
+    {
+        $output = [];
+        $shippingAddress = $quote->getShippingAddress();
+        $shippingAddress->setCountryId($country);
+        $shippingAddress->setPostcode($postcode);
+        $shippingAddress->setRegionId($regionId);
+        $shippingAddress->setRegion($region);
+        $shippingAddress->setCollectShippingRates(true);
+        $shippingAddress->collectShippingRates();
+        $shippingRates = $shippingAddress->getGroupedAllShippingRates();
+        foreach ($shippingRates as $carrierRates) {
+            foreach ($carrierRates as $rate) {
+                $output[] = $this->converter->modelToDataObject($rate, $quote->getQuoteCurrencyCode());
+            }
+        }
+        return $output;
+    }
 }
diff --git a/app/code/Magento/Quote/composer.json b/app/code/Magento/Quote/composer.json
index f58331308612ac84cf4b8e0e7a42328671b2450e..05d09f86f706c1689b7d04bf1f05527d584c2ff2 100644
--- a/app/code/Magento/Quote/composer.json
+++ b/app/code/Magento/Quote/composer.json
@@ -3,26 +3,26 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-catalog-rule": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-authorization": "0.74.0-beta13",
-        "magento/module-payment": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-shipping": "0.74.0-beta13",
-        "magento/module-sales-sequence": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-catalog-rule": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-authorization": "0.74.0-beta14",
+        "magento/module-payment": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-shipping": "0.74.0-beta14",
+        "magento/module-sales-sequence": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Quote/etc/di.xml b/app/code/Magento/Quote/etc/di.xml
index a9c14a1991ffbe85f900d457d5fb7c7193f554a8..66cae592e21018589902a907529cbcc87007c8e4 100644
--- a/app/code/Magento/Quote/etc/di.xml
+++ b/app/code/Magento/Quote/etc/di.xml
@@ -37,6 +37,7 @@
     <preference for="Magento\Quote\Api\GuestBillingAddressManagementInterface" type="Magento\Quote\Model\GuestCart\GuestBillingAddressManagement" />
     <preference for="Magento\Quote\Api\GuestAddressDetailsManagementInterface" type="Magento\Quote\Model\GuestCart\GuestAddressDetailsManagement" />
     <preference for="Magento\Quote\Api\GuestCartTotalManagementInterface" type="\Magento\Quote\Model\GuestCart\GuestCartTotalManagement" />
+    <preference for="Magento\Quote\Api\Data\EstimateAddressInterface" type="Magento\Quote\Model\EstimateAddress" />
     <type name="Magento\Webapi\Controller\Rest\ParamsOverrider">
         <arguments>
             <argument name="paramOverriders" xsi:type="array">
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Filter/Form.php b/app/code/Magento/Reports/Block/Adminhtml/Filter/Form.php
index f786c95ab8b8a38faab8fbea1e2ff5e0d26fab18..335952ca4de8b007e49860881a68faea0f09d3dc 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Filter/Form.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Filter/Form.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Block\Adminhtml\Filter;
 
 /**
@@ -42,6 +40,7 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic
      * @param string $fieldId
      * @param bool $visibility
      *
+     * @codeCoverageIgnore
      * @return void
      */
     public function setFieldVisibility($fieldId, $visibility)
@@ -95,6 +94,7 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic
      * @param string $key
      * @param string $value
      * @return $this
+     * @codeCoverageIgnore
      */
     public function addReportTypeOption($key, $value)
     {
@@ -113,7 +113,13 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic
 
         /** @var \Magento\Framework\Data\Form $form */
         $form = $this->_formFactory->create(
-            ['data' => ['id' => 'filter_form', 'action' => $actionUrl, 'method' => 'get']]
+            [
+                'data' => [
+                    'id' => 'filter_form',
+                    'action' => $actionUrl,
+                    'method' => 'get'
+                ]
+            ]
         );
 
         $htmlIdPrefix = 'sales_report_';
@@ -127,7 +133,11 @@ class Form extends \Magento\Backend\Block\Widget\Form\Generic
         $fieldset->addField(
             'report_type',
             'select',
-            ['name' => 'report_type', 'options' => $this->_reportTypeOptions, 'label' => __('Date Used')]
+            [
+                'name' => 'report_type',
+                'options' => $this->_reportTypeOptions,
+                'label' => __('Date Used')
+            ]
         );
 
         $fieldset->addField(
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Grid.php b/app/code/Magento/Reports/Block/Adminhtml/Grid.php
index 9fe1fa27a2c481ff73d35930f66aec1e5ea298e6..463339d2949ad37ca67bdb46c17ea109bb77ddb5 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Grid.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Grid.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Block\Adminhtml;
 
 /**
@@ -81,7 +79,7 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
     {
         $filter = $this->getParam($this->getVarNameFilter(), null);
 
-        if (is_null($filter)) {
+        if (null === $filter) {
             $filter = $this->_defaultFilter;
         }
 
@@ -154,7 +152,7 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
     /**
      * Get allowed stores
      *
-     * @return array
+     * @return array|\int[]
      */
     protected function _getAllowedStoreIds()
     {
@@ -205,7 +203,7 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
      * Set visibility of store switcher
      *
      * @param bool $visible
-     *
+     * @codeCoverageIgnore
      * @return void
      */
     public function setStoreSwitcherVisibility($visible = true)
@@ -215,6 +213,7 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
 
     /**
      * Return visibility of store switcher
+     * @codeCoverageIgnore
      *
      * @return bool
      * @SuppressWarnings(PHPMD.BooleanGetMethodName)
@@ -226,6 +225,7 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
 
     /**
      * Return store switcher html
+     * @codeCoverageIgnore
      *
      * @return string
      */
@@ -238,8 +238,8 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
      * Set visibility of date filter
      *
      * @param bool $visible
-     *
      * @return void
+     * @codeCoverageIgnore
      */
     public function setDateFilterVisibility($visible = true)
     {
@@ -248,6 +248,7 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
 
     /**
      * Return visibility of date filter
+     * @codeCoverageIgnore
      *
      * @return bool
      * @SuppressWarnings(PHPMD.BooleanGetMethodName)
@@ -259,6 +260,7 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
 
     /**
      * Return date filter html
+     * @codeCoverageIgnore
      *
      * @return string
      */
@@ -289,6 +291,7 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
 
     /**
      * Return refresh button html
+     * @codeCoverageIgnore
      *
      * @return string
      */
@@ -302,8 +305,8 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
      *
      * @param string $name
      * @param string $value
-     *
      * @return void
+     * @codeCoverageIgnore
      */
     public function setFilter($name, $value)
     {
@@ -331,8 +334,8 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
      * Set sub-report rows count
      *
      * @param int $size
-     *
      * @return void
+     * @codeCoverageIgnore
      */
     public function setSubReportSize($size)
     {
@@ -341,6 +344,7 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
 
     /**
      * Return sub-report rows count
+     * @codeCoverageIgnore
      *
      * @return int
      */
@@ -353,6 +357,7 @@ class Grid extends \Magento\Backend\Block\Widget\Grid
      * Retrieve errors
      *
      * @return array
+     * @codeCoverageIgnore
      */
     public function getErrors()
     {
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Grid/AbstractGrid.php b/app/code/Magento/Reports/Block/Adminhtml/Grid/AbstractGrid.php
index a8507b2bc510f322728ea1775d729e34e19c10c1..f169dd2c8e5dea332af923133738b55536462e34 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Grid/AbstractGrid.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Grid/AbstractGrid.php
@@ -71,6 +71,8 @@ class AbstractGrid extends \Magento\Backend\Block\Widget\Grid\Extended
     }
 
     /**
+     * Pseudo constructor
+     *
      * @return void
      */
     protected function _construct()
@@ -86,6 +88,10 @@ class AbstractGrid extends \Magento\Backend\Block\Widget\Grid\Extended
     }
 
     /**
+     * Get resource collection name
+     *
+     * @codeCoverageIgnore
+     *
      * @return string
      */
     public function getResourceCollectionName()
@@ -339,9 +345,11 @@ class AbstractGrid extends \Magento\Backend\Block\Widget\Grid\Extended
     }
 
     /**
-     * @param array $storeIds
+     * StoreIds setter
      *
+     * @param array $storeIds
      * @return $this
+     * @codeCoverageIgnore
      */
     public function setStoreIds($storeIds)
     {
@@ -396,6 +404,7 @@ class AbstractGrid extends \Magento\Backend\Block\Widget\Grid\Extended
      * @param \Magento\Framework\Object $filterData
      * @return $this
      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     * @codeCoverageIgnore
      */
     protected function _addCustomFilter($collection, $filterData)
     {
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Grid/Column/Renderer/Currency.php b/app/code/Magento/Reports/Block/Adminhtml/Grid/Column/Renderer/Currency.php
index ac9cf8c700bd7efc13558d6fb0161388dd2de4e3..30555dbca8d2b14a12cff014d8e3da1b667a6591 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Grid/Column/Renderer/Currency.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Grid/Column/Renderer/Currency.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Block\Adminhtml\Grid\Column\Renderer;
 
 /**
@@ -24,15 +22,15 @@ class Currency extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\Curren
     public function render(\Magento\Framework\Object $row)
     {
         $data = $row->getData($this->getColumn()->getIndex());
-        $currency_code = $this->_getCurrencyCode($row);
+        $currencyCode = $this->_getCurrencyCode($row);
 
-        if (!$currency_code) {
+        if (!$currencyCode) {
             return $data;
         }
 
         $data = floatval($data) * $this->_getRate($row);
         $data = sprintf("%f", $data);
-        $data = $this->_localeCurrency->getCurrency($currency_code)->toCurrency($data);
+        $data = $this->_localeCurrency->getCurrency($currencyCode)->toCurrency($data);
         return $data;
     }
 }
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Grid/Shopcart.php b/app/code/Magento/Reports/Block/Adminhtml/Grid/Shopcart.php
index 023f4f4bac729ed0fb6e44b7ffc123a595464b1a..0c635887cf0bc156ba384355eacf96de09ab76cd 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Grid/Shopcart.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Grid/Shopcart.php
@@ -28,6 +28,7 @@ class Shopcart extends \Magento\Backend\Block\Widget\Grid\Extended
 
     /**
      * StoreIds setter
+     * @codeCoverageIgnore
      *
      * @param array $storeIds
      * @return $this
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Product.php b/app/code/Magento/Reports/Block/Adminhtml/Product.php
index 9c5cad9fc76f8398a9cef6677f51183ee0d94e9d..4adc6dccbc09aa166b571c6e73e39ace1ed60187 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Product.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Product.php
@@ -13,7 +13,7 @@ namespace Magento\Reports\Block\Adminhtml;
 class Product extends \Magento\Backend\Block\Widget\Grid\Container
 {
     /**
-     * @return void
+     * {@inheritdoc}
      */
     protected function _construct()
     {
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Bestsellers.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Bestsellers.php
index d872439b7f8e6417d2ea613f868105c0764a20fb..32a25599702e9d312ac79160b5d0d5b8f38199ca 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Bestsellers.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Bestsellers.php
@@ -13,12 +13,14 @@ namespace Magento\Reports\Block\Adminhtml\Sales;
 class Bestsellers extends \Magento\Backend\Block\Widget\Grid\Container
 {
     /**
+     * Template
+     *
      * @var string
      */
     protected $_template = 'report/grid/container.phtml';
 
     /**
-     * @return void
+     * {@inheritdoc}
      */
     protected function _construct()
     {
@@ -35,6 +37,8 @@ class Bestsellers extends \Magento\Backend\Block\Widget\Grid\Container
     }
 
     /**
+     * Get filter URL
+     *
      * @return string
      */
     public function getFilterUrl()
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Bestsellers/Grid.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Bestsellers/Grid.php
index d6820a811970fded00679f36d5ad6564ccae7e36..bedef6d74acceb8be7e61ef3d045faf17f1c98be 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Bestsellers/Grid.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Bestsellers/Grid.php
@@ -14,12 +14,15 @@ namespace Magento\Reports\Block\Adminhtml\Sales\Bestsellers;
 class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
 {
     /**
+     * GROUP BY criteria
+     *
      * @var string
      */
     protected $_columnGroupBy = 'period';
 
     /**
-     * @return void
+     * {@inheritdoc}
+     * @codeCoverageIgnore
      */
     protected function _construct()
     {
@@ -28,7 +31,8 @@ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
     }
 
     /**
-     * @return string
+     * {@inheritdoc}
+     * @codeCoverageIgnore
      */
     public function getResourceCollectionName()
     {
@@ -36,7 +40,7 @@ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
     }
 
     /**
-     * @return \Magento\Backend\Block\Widget\Grid\Extended
+     * {@inheritdoc}
      */
     protected function _prepareColumns()
     {
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Coupons.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Coupons.php
index c14f1c248b15bdbd2c3ee8a859d9a3fe32c41c6d..cfd20f5e3a468e5948e746da801ddc2b8291db3d 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Coupons.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Coupons.php
@@ -13,12 +13,14 @@ namespace Magento\Reports\Block\Adminhtml\Sales;
 class Coupons extends \Magento\Backend\Block\Widget\Grid\Container
 {
     /**
+     * Template file
+     *
      * @var string
      */
     protected $_template = 'report/grid/container.phtml';
 
     /**
-     * @return void
+     * {@inheritdoc}
      */
     protected function _construct()
     {
@@ -35,6 +37,8 @@ class Coupons extends \Magento\Backend\Block\Widget\Grid\Container
     }
 
     /**
+     * Get filter URL
+     *
      * @return string
      */
     public function getFilterUrl()
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Coupons/Grid.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Coupons/Grid.php
index c04265b1c531f9c8eaef861a81eacdd8998afc84..cf79f4c06682831286c114354b47d1943008b5ed 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Coupons/Grid.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Coupons/Grid.php
@@ -14,12 +14,15 @@ namespace Magento\Reports\Block\Adminhtml\Sales\Coupons;
 class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
 {
     /**
+     * GROUP BY criteria
+     *
      * @var string
      */
     protected $_columnGroupBy = 'period';
 
     /**
-     * @return void
+     * {@inheritdoc}
+     * @codeCoverageIgnore
      */
     protected function _construct()
     {
@@ -29,7 +32,7 @@ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
     }
 
     /**
-     * @return string
+     * {@inheritdoc}
      */
     public function getResourceCollectionName()
     {
@@ -41,7 +44,7 @@ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
     }
 
     /**
-     * @return \Magento\Backend\Block\Widget\Grid\Extended
+     * {@inheritdoc}
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     protected function _prepareColumns()
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Grid/Column/Renderer/Date.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Grid/Column/Renderer/Date.php
index b18faf62ef5530eefda4516a5de9410c0277468a..30b6fccb13435e396ce06d6383768b301f0f399c 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Grid/Column/Renderer/Date.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Grid/Column/Renderer/Date.php
@@ -13,6 +13,8 @@ use Magento\Framework\Locale\Bundle\DataBundle;
 class Date extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\Date
 {
     /**
+     * Constructor
+     *
      * @param \Magento\Backend\Block\Context $context
      * @param \Magento\Framework\Locale\ResolverInterface $localeResolver
      * @param array $data
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Invoiced.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Invoiced.php
index 3b6cf45846551dae90daad88e9d1b02f3e186793..e6de75fb9545e9723b5a02f1e87ee9f4cc434259 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Invoiced.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Invoiced.php
@@ -13,12 +13,14 @@ namespace Magento\Reports\Block\Adminhtml\Sales;
 class Invoiced extends \Magento\Backend\Block\Widget\Grid\Container
 {
     /**
+     * Template file
+     *
      * @var string
      */
     protected $_template = 'report/grid/container.phtml';
 
     /**
-     * @return void
+     * {@inheritdoc}
      */
     protected function _construct()
     {
@@ -35,6 +37,8 @@ class Invoiced extends \Magento\Backend\Block\Widget\Grid\Container
     }
 
     /**
+     * Get filter URL
+     *
      * @return string
      */
     public function getFilterUrl()
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Invoiced/Grid.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Invoiced/Grid.php
index 414c2e775872a1e9a36795e820c9b417533c1416..854520bafad351539f350b4f1c9369db8fdd0372 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Invoiced/Grid.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Invoiced/Grid.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Block\Adminhtml\Sales\Invoiced;
 
 /**
@@ -17,12 +15,15 @@ namespace Magento\Reports\Block\Adminhtml\Sales\Invoiced;
 class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
 {
     /**
+     * GROUP BY condition
+     *
      * @var string
      */
     protected $_columnGroupBy = 'period';
 
     /**
-     * @return void
+     * {@inheritdoc}
+     * @codeCoverageIgnore
      */
     protected function _construct()
     {
@@ -31,18 +32,17 @@ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
     }
 
     /**
-     * @return string
+     * {@inheritdoc}
      */
     public function getResourceCollectionName()
     {
-        return $this->getFilterData()->getData(
-            'report_type'
-        ) ==
-            'created_at_invoice' ? 'Magento\Sales\Model\Resource\Report\Invoiced\Collection\Invoiced' : 'Magento\Sales\Model\Resource\Report\Invoiced\Collection\Order';
+        return ($this->getFilterData()->getData('report_type')) == 'created_at_invoice'
+            ? 'Magento\Sales\Model\Resource\Report\Invoiced\Collection\Invoiced'
+            : 'Magento\Sales\Model\Resource\Report\Invoiced\Collection\Order';
     }
 
     /**
-     * @return \Magento\Backend\Block\Widget\Grid\Extended
+     * {@inheritdoc}
      */
     protected function _prepareColumns()
     {
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Refunded.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Refunded.php
index 6ff26a3822b8a7f76f37ff4a046314317f538db0..c48dee92771a07839ef2e352350d0ed9a52f8446 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Refunded.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Refunded.php
@@ -13,12 +13,14 @@ namespace Magento\Reports\Block\Adminhtml\Sales;
 class Refunded extends \Magento\Backend\Block\Widget\Grid\Container
 {
     /**
+     * Template file
+     *
      * @var string
      */
     protected $_template = 'report/grid/container.phtml';
 
     /**
-     * @return void
+     * {@inheritdoc}
      */
     protected function _construct()
     {
@@ -35,6 +37,8 @@ class Refunded extends \Magento\Backend\Block\Widget\Grid\Container
     }
 
     /**
+     * Get filter URL
+     *
      * @return string
      */
     public function getFilterUrl()
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Refunded/Grid.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Refunded/Grid.php
index e5f68a315f74013a51de8df19dc74cfbc996efb5..c3964e9675cd7f4b67807df54e548cef34028d13 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Refunded/Grid.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Refunded/Grid.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Block\Adminhtml\Sales\Refunded;
 
 /**
@@ -17,12 +15,15 @@ namespace Magento\Reports\Block\Adminhtml\Sales\Refunded;
 class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
 {
     /**
+     * GROUP BY criteria
+     *
      * @var string
      */
     protected $_columnGroupBy = 'period';
 
     /**
-     * @return void
+     * {@inheritdoc}
+     * @codeCoverageIgnore
      */
     protected function _construct()
     {
@@ -31,18 +32,17 @@ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
     }
 
     /**
-     * @return string
+     * {@inheritdoc}
      */
     public function getResourceCollectionName()
     {
-        return $this->getFilterData()->getData(
-            'report_type'
-        ) ==
-            'created_at_refunded' ? 'Magento\Sales\Model\Resource\Report\Refunded\Collection\Refunded' : 'Magento\Sales\Model\Resource\Report\Refunded\Collection\Order';
+        return $this->getFilterData()->getData('report_type') == 'created_at_refunded'
+            ? 'Magento\Sales\Model\Resource\Report\Refunded\Collection\Refunded'
+            : 'Magento\Sales\Model\Resource\Report\Refunded\Collection\Order';
     }
 
     /**
-     * @return \Magento\Backend\Block\Widget\Grid\Extended
+     * {@inheritdoc}
      */
     protected function _prepareColumns()
     {
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Sales.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Sales.php
index 6c6ca70730a2111e637426a159365a973a5be8e3..ad43f74e52646da9445d0d8a2c12500f3b761f8f 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Sales.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Sales.php
@@ -13,12 +13,14 @@ namespace Magento\Reports\Block\Adminhtml\Sales;
 class Sales extends \Magento\Backend\Block\Widget\Grid\Container
 {
     /**
+     * Template file
+     *
      * @var string
      */
     protected $_template = 'report/grid/container.phtml';
 
     /**
-     * @return void
+     * {@inheritdoc}
      */
     protected function _construct()
     {
@@ -35,6 +37,8 @@ class Sales extends \Magento\Backend\Block\Widget\Grid\Container
     }
 
     /**
+     * Get filter URL
+     *
      * @return string
      */
     public function getFilterUrl()
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Sales/Grid.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Sales/Grid.php
index 012e170b2c269dac90cdd6b43d1461edf4aa4ee4..6f7b99bb8941fe4cef1547a952e9e00583bfb9c0 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Sales/Grid.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Sales/Grid.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Block\Adminhtml\Sales\Sales;
 
 /**
@@ -17,12 +15,15 @@ namespace Magento\Reports\Block\Adminhtml\Sales\Sales;
 class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
 {
     /**
+     * GROUP BY criteria
+     *
      * @var string
      */
     protected $_columnGroupBy = 'period';
 
     /**
-     * @return void
+     * {@inheritdoc}
+     * @codeCoverageIgnore
      */
     protected function _construct()
     {
@@ -31,18 +32,18 @@ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
     }
 
     /**
-     * @return string
+     * {@inheritdoc}
      */
     public function getResourceCollectionName()
     {
-        return $this->getFilterData()->getData(
-            'report_type'
-        ) ==
-            'updated_at_order' ? 'Magento\Sales\Model\Resource\Report\Order\Updatedat\Collection' : 'Magento\Sales\Model\Resource\Report\Order\Collection';
+        return $this->getFilterData()->getData('report_type') == 'updated_at_order'
+            ? 'Magento\Sales\Model\Resource\Report\Order\Updatedat\Collection'
+            : 'Magento\Sales\Model\Resource\Report\Order\Collection';
     }
 
     /**
-     * @return \Magento\Backend\Block\Widget\Grid\Extended
+     * {@inheritdoc}
+     *
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     protected function _prepareColumns()
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Shipping.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Shipping.php
index 0499c0ee07af14dbf113e5a4fc6aa388bdb4f04e..e72406788d3ec9a30fe366c536e7d68d80fb222d 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Shipping.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Shipping.php
@@ -13,12 +13,14 @@ namespace Magento\Reports\Block\Adminhtml\Sales;
 class Shipping extends \Magento\Backend\Block\Widget\Grid\Container
 {
     /**
+     * Template file
+     *
      * @var string
      */
     protected $_template = 'report/grid/container.phtml';
 
     /**
-     * @return void
+     * {@inheritdoc}
      */
     protected function _construct()
     {
@@ -35,6 +37,8 @@ class Shipping extends \Magento\Backend\Block\Widget\Grid\Container
     }
 
     /**
+     * Get filter URL
+     *
      * @return string
      */
     public function getFilterUrl()
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Shipping/Grid.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Shipping/Grid.php
index ee594aaa3447565990652114cee7ba498b1f3011..28d8bbe6b196fb55963f61797c95a09962960e50 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Shipping/Grid.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Shipping/Grid.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Block\Adminhtml\Sales\Shipping;
 
 /**
@@ -17,12 +15,15 @@ namespace Magento\Reports\Block\Adminhtml\Sales\Shipping;
 class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
 {
     /**
+     * Group by criteria
+     *
      * @var string
      */
     protected $_columnGroupBy = 'period';
 
     /**
-     * @return void
+     * {@inheritdoc}
+     * @codeCoverageIgnore
      */
     protected function _construct()
     {
@@ -32,18 +33,17 @@ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
     }
 
     /**
-     * @return string
+     * {@inheritdoc}
      */
     public function getResourceCollectionName()
     {
-        return $this->getFilterData()->getData(
-            'report_type'
-        ) ==
-            'created_at_shipment' ? 'Magento\Sales\Model\Resource\Report\Shipping\Collection\Shipment' : 'Magento\Sales\Model\Resource\Report\Shipping\Collection\Order';
+        return $this->getFilterData()->getData('report_type') == 'created_at_shipment'
+            ? 'Magento\Sales\Model\Resource\Report\Shipping\Collection\Shipment'
+            : 'Magento\Sales\Model\Resource\Report\Shipping\Collection\Order';
     }
 
     /**
-     * @return \Magento\Backend\Block\Widget\Grid\Extended
+     * {@inheritdoc}
      */
     protected function _prepareColumns()
     {
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Tax.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Tax.php
index 767760eabb655e8849f345c7db16503ce145432e..ed27f1616518c78751c902e7433f2c8a35b86511 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Tax.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Tax.php
@@ -13,12 +13,14 @@ namespace Magento\Reports\Block\Adminhtml\Sales;
 class Tax extends \Magento\Backend\Block\Widget\Grid\Container
 {
     /**
+     * Template file
+     *
      * @var string
      */
     protected $_template = 'report/grid/container.phtml';
 
     /**
-     * @return void
+     * {@inheritdoc}
      */
     protected function _construct()
     {
@@ -35,6 +37,8 @@ class Tax extends \Magento\Backend\Block\Widget\Grid\Container
     }
 
     /**
+     * Get filter URL
+     *
      * @return string
      */
     public function getFilterUrl()
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Sales/Tax/Grid.php b/app/code/Magento/Reports/Block/Adminhtml/Sales/Tax/Grid.php
index 48c3a647299b4b3cc76dde1dd63ed36a0e05f7a2..7196f1ff332533630ba0241383ffc6cd6a12e030 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Sales/Tax/Grid.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Sales/Tax/Grid.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Block\Adminhtml\Sales\Tax;
 
 /**
@@ -17,16 +15,22 @@ namespace Magento\Reports\Block\Adminhtml\Sales\Tax;
 class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
 {
     /**
+     * GROUP BY criteria
+     *
      * @var string
      */
     protected $_columnGroupBy = 'period';
 
     /**
+     * Config factory
+     *
      * @var \Magento\Sales\Model\Order\ConfigFactory
      */
     protected $_configFactory;
 
     /**
+     * Constructor
+     *
      * @param \Magento\Backend\Block\Template\Context $context
      * @param \Magento\Backend\Helper\Data $backendHelper
      * @param \Magento\Reports\Model\Resource\Report\Collection\Factory $resourceFactory
@@ -49,7 +53,8 @@ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
     }
 
     /**
-     * @return void
+     * {@inheritdoc}
+     * @codeCoverageIgnore
      */
     protected function _construct()
     {
@@ -59,18 +64,17 @@ class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
     }
 
     /**
-     * @return string
+     * {@inheritdoc}
      */
     public function getResourceCollectionName()
     {
-        return $this->getFilterData()->getData(
-            'report_type'
-        ) ==
-            'updated_at_order' ? 'Magento\Tax\Model\Resource\Report\Updatedat\Collection' : 'Magento\Tax\Model\Resource\Report\Collection';
+        return $this->getFilterData()->getData('report_type') == 'updated_at_order'
+            ? 'Magento\Tax\Model\Resource\Report\Updatedat\Collection'
+            : 'Magento\Tax\Model\Resource\Report\Collection';
     }
 
     /**
-     * @return \Magento\Backend\Block\Widget\Grid\Extended
+     * {@inheritdoc}
      */
     protected function _prepareColumns()
     {
diff --git a/app/code/Magento/Reports/Block/Adminhtml/Wishlist.php b/app/code/Magento/Reports/Block/Adminhtml/Wishlist.php
index 690c98b4d692559de2d645c23623801f0ebe4705..df114f5e653e6b121874ab9aad21a71174abcb43 100644
--- a/app/code/Magento/Reports/Block/Adminhtml/Wishlist.php
+++ b/app/code/Magento/Reports/Block/Adminhtml/Wishlist.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Block\Adminhtml;
 
 /**
@@ -16,36 +14,8 @@ namespace Magento\Reports\Block\Adminhtml;
 class Wishlist extends \Magento\Backend\Block\Template
 {
     /**
-     * @var int
-     */
-    public $wishlists_count;
-
-    /**
-     * @var int
-     */
-    public $items_bought;
-
-    /**
-     * @var int
-     */
-    public $shared_count;
-
-    /**
-     * @var int
-     */
-    public $referrals_count;
-
-    /**
-     * @var int
-     */
-    public $conversions_count;
-
-    /**
-     * @var int
-     */
-    public $customer_with_wishlist;
-
-    /**
+     * Template file
+     *
      * @var string
      */
     protected $_template = 'report/wishlist.phtml';
@@ -58,6 +28,8 @@ class Wishlist extends \Magento\Backend\Block\Template
     protected $_wishlistFactory;
 
     /**
+     * Constructor
+     *
      * @param \Magento\Backend\Block\Template\Context $context
      * @param \Magento\Reports\Model\Resource\Wishlist\CollectionFactory $wishlistFactory
      * @param array $data
@@ -72,9 +44,9 @@ class Wishlist extends \Magento\Backend\Block\Template
     }
 
     /**
-     * @return $this
+     * {@inheritdoc}
      */
-    public function _beforeToHtml()
+    protected function _beforeToHtml()
     {
         $this->setChild(
             'grid',
diff --git a/app/code/Magento/Reports/Block/Product/AbstractProduct.php b/app/code/Magento/Reports/Block/Product/AbstractProduct.php
index dfe51eea66fed23301c4f8d4a0d9bdb6945e4d69..cf420b4d3cebeddc38077c1f3619ac4ae5fcf403 100644
--- a/app/code/Magento/Reports/Block/Product/AbstractProduct.php
+++ b/app/code/Magento/Reports/Block/Product/AbstractProduct.php
@@ -81,11 +81,11 @@ abstract class AbstractProduct extends \Magento\Catalog\Block\Product\AbstractPr
     }
 
     /**
-     * Retrieve Product Index model instance
+     * Public method for retrieve Product Index model
      *
      * @return \Magento\Reports\Model\Product\Index\AbstractIndex
      */
-    protected function _getModel()
+    public function getModel()
     {
         try {
             $model = $this->_indexFactory->get($this->_indexType);
@@ -96,16 +96,6 @@ abstract class AbstractProduct extends \Magento\Catalog\Block\Product\AbstractPr
         return $model;
     }
 
-    /**
-     * Public method for retrieve Product Index model
-     *
-     * @return \Magento\Reports\Model\Product\Index\AbstractIndex
-     */
-    public function getModel()
-    {
-        return $this->_getModel();
-    }
-
     /**
      * Retrieve Index Product Collection
      *
@@ -116,14 +106,14 @@ abstract class AbstractProduct extends \Magento\Catalog\Block\Product\AbstractPr
         if ($this->_collection === null) {
             $attributes = $this->_catalogConfig->getProductAttributes();
 
-            $this->_collection = $this->_getModel()->getCollection()->addAttributeToSelect($attributes);
+            $this->_collection = $this->getModel()->getCollection()->addAttributeToSelect($attributes);
 
             if ($this->getCustomerId()) {
                 $this->_collection->setCustomerId($this->getCustomerId());
             }
 
             $this->_collection->excludeProductIds(
-                $this->_getModel()->getExcludeProductIds()
+                $this->getModel()->getExcludeProductIds()
             )->addUrlRewrite()->setPageSize(
                 $this->getPageSize()
             )->setCurPage(
@@ -152,7 +142,7 @@ abstract class AbstractProduct extends \Magento\Catalog\Block\Product\AbstractPr
      */
     public function getCount()
     {
-        if (!$this->_getModel()->getCount()) {
+        if (!$this->getModel()->getCount()) {
             return 0;
         }
         return $this->getItemsCollection()->count();
diff --git a/app/code/Magento/Reports/Block/Product/Compared.php b/app/code/Magento/Reports/Block/Product/Compared.php
index 6693d0053ea87edac053ff4e54bb3ada3de04152..67e3d641b829a4c8add0ba1df7fa85749c9f79f7 100644
--- a/app/code/Magento/Reports/Block/Product/Compared.php
+++ b/app/code/Magento/Reports/Block/Product/Compared.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Block\Product;
 
 /**
@@ -15,6 +13,9 @@ namespace Magento\Reports\Block\Product;
  */
 class Compared extends \Magento\Reports\Block\Product\AbstractProduct
 {
+    /**
+     * Config path for compared products count
+     */
     const XML_PATH_RECENTLY_COMPARED_COUNT = 'catalog/recently_products/compared_count';
 
     /**
@@ -34,7 +35,10 @@ class Compared extends \Magento\Reports\Block\Product\AbstractProduct
         if ($this->hasData('page_size')) {
             return $this->getData('page_size');
         }
-        return $this->_scopeConfig->getValue(self::XML_PATH_RECENTLY_COMPARED_COUNT, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
+        return $this->_scopeConfig->getValue(
+            self::XML_PATH_RECENTLY_COMPARED_COUNT,
+            \Magento\Store\Model\ScopeInterface::SCOPE_STORE
+        );
     }
 
     /**
diff --git a/app/code/Magento/Reports/Block/Product/Viewed.php b/app/code/Magento/Reports/Block/Product/Viewed.php
index 947c90c89505ce4e8957ff7870c13862da31f526..9a689ec5a6da59c758e9b85e01125a27f897089e 100644
--- a/app/code/Magento/Reports/Block/Product/Viewed.php
+++ b/app/code/Magento/Reports/Block/Product/Viewed.php
@@ -4,17 +4,20 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Block\Product;
 
+use \Magento\Framework\Object\IdentityInterface;
+
 /**
  * Reports Recently Viewed Products Block
  *
  * @author     Magento Core Team <core@magentocommerce.com>
  */
-class Viewed extends \Magento\Reports\Block\Product\AbstractProduct implements \Magento\Framework\Object\IdentityInterface
+class Viewed extends AbstractProduct implements IdentityInterface
 {
+    /**
+     * Config path to recently viewed product count
+     */
     const XML_PATH_RECENTLY_VIEWED_COUNT = 'catalog/recently_products/viewed_count';
 
     /**
@@ -34,7 +37,10 @@ class Viewed extends \Magento\Reports\Block\Product\AbstractProduct implements \
         if ($this->hasData('page_size')) {
             return $this->getData('page_size');
         }
-        return $this->_scopeConfig->getValue(self::XML_PATH_RECENTLY_VIEWED_COUNT, \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
+        return $this->_scopeConfig->getValue(
+            self::XML_PATH_RECENTLY_VIEWED_COUNT,
+            \Magento\Store\Model\ScopeInterface::SCOPE_STORE
+        );
     }
 
     /**
diff --git a/app/code/Magento/Reports/Helper/Data.php b/app/code/Magento/Reports/Helper/Data.php
index 50856d3b37cde36d9b1066dcc9aa5d608a004b9b..c33b0791a559ec899c8477972f803320245df473 100644
--- a/app/code/Magento/Reports/Helper/Data.php
+++ b/app/code/Magento/Reports/Helper/Data.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 /**
  * Reports data helper
  */
@@ -23,16 +21,22 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
     const REPORT_PERIOD_TYPE_YEAR = 'year';
 
     /**
+     * Item factory
+     *
      * @var \Magento\Reports\Model\ItemFactory
      */
     protected $_itemFactory;
 
     /**
+     * Constructor
+     *
      * @param \Magento\Framework\App\Helper\Context $context
      * @param \Magento\Reports\Model\ItemFactory $itemFactory
      */
-    public function __construct(\Magento\Framework\App\Helper\Context $context, \Magento\Reports\Model\ItemFactory $itemFactory)
-    {
+    public function __construct(
+        \Magento\Framework\App\Helper\Context $context,
+        \Magento\Reports\Model\ItemFactory $itemFactory
+    ) {
         parent::__construct($context);
         $this->_itemFactory = $itemFactory;
     }
@@ -55,7 +59,7 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
 
         $dateStart = new \DateTime($from);
         $dateEnd = new \DateTime($to);
-        while ($dateStart->diff($dateEnd)->invert = 0) {
+        while ($dateStart->diff($dateEnd)->invert == 0) {
             switch ($period) {
                 case self::REPORT_PERIOD_TYPE_DAY:
                     $intervals[] = $dateStart->format('Y-m-d');
diff --git a/app/code/Magento/Reports/Model/Flag.php b/app/code/Magento/Reports/Model/Flag.php
index d289a0ce35412498b963fb7ce3e3059591fcf7f5..3782a655f24862cbf5dee4291ed8ab0832a9fa3e 100644
--- a/app/code/Magento/Reports/Model/Flag.php
+++ b/app/code/Magento/Reports/Model/Flag.php
@@ -30,6 +30,7 @@ class Flag extends \Magento\Framework\Flag
 
     /**
      * Setter for flag code
+     * @codeCoverageIgnore
      *
      * @param string $code
      * @return $this
diff --git a/app/code/Magento/Reports/Model/Grouped/Collection.php b/app/code/Magento/Reports/Model/Grouped/Collection.php
index 6f8e9d561dad6cd65a5ea80b76e2a15465c1f50f..3f00e36c1a7a7ec4d78f975baaa33bd3bc3f747d 100644
--- a/app/code/Magento/Reports/Model/Grouped/Collection.php
+++ b/app/code/Magento/Reports/Model/Grouped/Collection.php
@@ -25,6 +25,7 @@ class Collection extends \Magento\Framework\Data\Collection
 
     /**
      * Set column to group by
+     * @codeCoverageIgnore
      *
      * @param string $column
      * @return $this
@@ -61,6 +62,7 @@ class Collection extends \Magento\Framework\Data\Collection
 
     /**
      * Setter for resource collection
+     * @codeCoverageIgnore
      *
      * @param DbCollection $collection
      * @return $this
diff --git a/app/code/Magento/Reports/Model/Item.php b/app/code/Magento/Reports/Model/Item.php
index ecc9c805e91722136affdff251c4123ca873613c..01a60c397c5eab8bc83b6345979e1f982601ee9b 100644
--- a/app/code/Magento/Reports/Model/Item.php
+++ b/app/code/Magento/Reports/Model/Item.php
@@ -19,6 +19,7 @@ class Item extends \Magento\Framework\Object
 
     /**
      * Set is empty indicator
+     * @codeCoverageIgnore
      *
      * @param bool $flag
      * @return $this
@@ -31,6 +32,7 @@ class Item extends \Magento\Framework\Object
 
     /**
      * Get is empty indicator
+     * @codeCoverageIgnore
      *
      * @return bool
      * @SuppressWarnings(PHPMD.BooleanGetMethodName)
@@ -49,6 +51,7 @@ class Item extends \Magento\Framework\Object
 
     /**
      * Get children
+     * @codeCoverageIgnore
      *
      * @return array
      */
@@ -59,6 +62,7 @@ class Item extends \Magento\Framework\Object
 
     /**
      * Set children
+     * @codeCoverageIgnore
      *
      * @param array $children
      * @return $this
diff --git a/app/code/Magento/Reports/Model/Resource/Event/Collection.php b/app/code/Magento/Reports/Model/Resource/Event/Collection.php
index 7a515823998ef5c5787fbd9fdb1fd72f4f30ee00..94124028fdb3716c430e6c44bfdf3497786988b0 100644
--- a/app/code/Magento/Reports/Model/Resource/Event/Collection.php
+++ b/app/code/Magento/Reports/Model/Resource/Event/Collection.php
@@ -32,6 +32,7 @@ class Collection extends \Magento\Framework\Model\Resource\Db\Collection\Abstrac
 
     /**
      * Add store ids filter
+     * @codeCoverageIgnore
      *
      * @param array $storeIds
      * @return $this
diff --git a/app/code/Magento/Reports/Model/Resource/Order/Collection.php b/app/code/Magento/Reports/Model/Resource/Order/Collection.php
index 60b24016381f63220ffc29feabe48525f12be626..07c2e2aa8c4a76d1d262f38904d52b00ea622f99 100644
--- a/app/code/Magento/Reports/Model/Resource/Order/Collection.php
+++ b/app/code/Magento/Reports/Model/Resource/Order/Collection.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Model\Resource\Order;
 
 use Magento\Framework\DB\Select;
@@ -40,26 +38,36 @@ class Collection extends \Magento\Sales\Model\Resource\Order\Collection
     protected $_scopeConfig;
 
     /**
+     * Store manager instance
+     *
      * @var \Magento\Store\Model\StoreManagerInterface
      */
     protected $_storeManager;
 
     /**
+     * Locale date instance
+     *
      * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface
      */
     protected $_localeDate;
 
     /**
+     * Order config instance
+     *
      * @var \Magento\Sales\Model\Order\Config
      */
     protected $_orderConfig;
 
     /**
+     * Reports order factory
+     *
      * @var \Magento\Sales\Model\Resource\Report\OrderFactory
      */
     protected $_reportOrderFactory;
 
     /**
+     * Constructor
+     *
      * @param \Magento\Framework\Data\Collection\EntityFactory $entityFactory
      * @param \Psr\Log\LoggerInterface $logger
      * @param \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy
@@ -128,6 +136,7 @@ class Collection extends \Magento\Sales\Model\Resource\Order\Collection
      * Retrieve is live flag for rep
      *
      * @return bool
+     * @codeCoverageIgnore
      */
     public function isLive()
     {
@@ -162,7 +171,7 @@ class Collection extends \Magento\Sales\Model\Resource\Order\Collection
      */
     protected function _getSalesAmountExpression()
     {
-        if (is_null($this->_salesAmountExpression)) {
+        if (null === $this->_salesAmountExpression) {
             $adapter = $this->getConnection();
             $expressionTransferObject = new \Magento\Framework\Object(
                 [
@@ -257,8 +266,8 @@ class Collection extends \Magento\Sales\Model\Resource\Order\Collection
      * Prepare report summary from aggregated data
      *
      * @param string $range
-     * @param mixed $customStart
-     * @param mixed $customEnd
+     * @param string|null $customStart
+     * @param string|null $customEnd
      * @return $this
      */
     protected function _prepareSummaryAggregated($range, $customStart, $customEnd)
@@ -271,13 +280,13 @@ class Collection extends \Magento\Sales\Model\Resource\Order\Collection
         $rangePeriod = $this->_getRangeExpressionForAttribute($range, 'main_table.period');
 
         $tableName = $this->getConnection()->quoteIdentifier('main_table.period');
-        $rangePeriod2 = str_replace($tableName, "MIN({$tableName})", $rangePeriod);
+        $rangePeriodAggregateStmt = str_replace($tableName, "MIN({$tableName})", $rangePeriod);
 
         $this->getSelect()->columns(
             [
                 'revenue' => 'SUM(main_table.total_revenue_amount)',
                 'quantity' => 'SUM(main_table.orders_count)',
-                'range' => $rangePeriod2,
+                'range' => $rangePeriodAggregateStmt,
             ]
         )->order(
             'range'
@@ -349,8 +358,8 @@ class Collection extends \Magento\Sales\Model\Resource\Order\Collection
      *
      * @param string $range
      * @param string $attribute
-     * @param mixed $from
-     * @param mixed $to
+     * @param string|null $from
+     * @param string|null $to
      * @return string
      */
     protected function _getTZRangeOffsetExpression($range, $attribute, $from = null, $to = null)
@@ -665,7 +674,7 @@ class Collection extends \Magento\Sales\Model\Resource\Order\Collection
     /**
      * Set store filter collection
      *
-     * @param array $storeIds
+     * @param int[] $storeIds
      * @return $this
      */
     public function setStoreIds($storeIds)
@@ -778,16 +787,15 @@ class Collection extends \Magento\Sales\Model\Resource\Order\Collection
      */
     public function addSumAvgTotals($storeId = 0)
     {
-        $adapter = $this->getConnection();
-        $baseSubtotalRefunded = $adapter->getIfNullSql('main_table.base_subtotal_refunded', 0);
-        $baseSubtotalCanceled = $adapter->getIfNullSql('main_table.base_subtotal_canceled', 0);
-        $baseDiscountCanceled = $adapter->getIfNullSql('main_table.base_discount_canceled', 0);
-
         /**
          * calculate average and total amount
          */
-        $expr = $storeId ==
-            0 ? "(main_table.base_subtotal -\n            {$baseSubtotalRefunded} - {$baseSubtotalCanceled} - ABS(main_table.base_discount_amount) -\n            {$baseDiscountCanceled}) * main_table.base_to_global_rate" : "main_table.base_subtotal - {$baseSubtotalCanceled} - {$baseSubtotalRefunded} -\n            ABS(main_table.base_discount_amount) - {$baseDiscountCanceled}";
+        $expr = $this->getTotalsExpression(
+            $storeId,
+            $this->getConnection()->getIfNullSql('main_table.base_subtotal_refunded', 0),
+            $this->getConnection()->getIfNullSql('main_table.base_subtotal_canceled', 0),
+            $this->getConnection()->getIfNullSql('main_table.base_discount_canceled', 0)
+        );
 
         $this->getSelect()->columns(
             ['orders_avg_amount' => "AVG({$expr})"]
@@ -798,6 +806,28 @@ class Collection extends \Magento\Sales\Model\Resource\Order\Collection
         return $this;
     }
 
+    /**
+     * Get SQL expression for totals
+     *
+     * @param int $storeId
+     * @param string $baseSubtotalRefunded
+     * @param string $baseSubtotalCanceled
+     * @param string $baseDiscountCanceled
+     * @return string
+     */
+    protected function getTotalsExpression(
+        $storeId,
+        $baseSubtotalRefunded,
+        $baseSubtotalCanceled,
+        $baseDiscountCanceled
+    ) {
+        $template = ($storeId != 0)
+            ? 'main_table.base_subtotal - %2$s - %1$s - ABS(main_table.base_discount_amount) - %3$s'
+            : '(main_table.base_subtotal - %1$s - %2$s - ABS(main_table.base_discount_amount) - %3$s) '
+                . ' * main_table.base_to_global_rate';
+        return sprintf($template, $baseSubtotalRefunded, $baseSubtotalCanceled, $baseDiscountCanceled);
+    }
+
     /**
      * Sort order by total amount
      *
@@ -869,6 +899,7 @@ class Collection extends \Magento\Sales\Model\Resource\Order\Collection
      * Initialize initial fields to select
      *
      * @return $this
+     * @codeCoverageIgnore
      */
     protected function _initInitialFieldsToSelect()
     {
diff --git a/app/code/Magento/Reports/Model/Resource/Product/Collection.php b/app/code/Magento/Reports/Model/Resource/Product/Collection.php
index 3eb9ac629a26e8fdcd075618a98ea3c26357ce1a..7df4b5dc4d9d0bc3616cb6221d4609ad158f8f40 100644
--- a/app/code/Magento/Reports/Model/Resource/Product/Collection.php
+++ b/app/code/Magento/Reports/Model/Resource/Product/Collection.php
@@ -147,8 +147,8 @@ class Collection extends \Magento\Catalog\Model\Resource\Product\Collection
 
     /**
      * Set Type for COUNT SQL Select
+     * @codeCoverageIgnore
      *
-     * @codeCoverageIgnoreStart
      * @param int $type
      * @return $this
      */
@@ -160,6 +160,7 @@ class Collection extends \Magento\Catalog\Model\Resource\Product\Collection
 
     /**
      * Set product entity id
+     * @codeCoverageIgnore
      *
      * @param string $entityId
      * @return $this
@@ -172,6 +173,7 @@ class Collection extends \Magento\Catalog\Model\Resource\Product\Collection
 
     /**
      * Get product entity id
+     * @codeCoverageIgnore
      *
      * @return int
      */
@@ -182,6 +184,7 @@ class Collection extends \Magento\Catalog\Model\Resource\Product\Collection
 
     /**
      * Set product entity table name
+     * @codeCoverageIgnore
      *
      * @param string $value
      * @return $this
@@ -194,6 +197,7 @@ class Collection extends \Magento\Catalog\Model\Resource\Product\Collection
 
     /**
      * Get product entity table name
+     * @codeCoverageIgnore
      *
      * @return string
      */
@@ -204,6 +208,7 @@ class Collection extends \Magento\Catalog\Model\Resource\Product\Collection
 
     /**
      * Get product attribute set  id
+     * @codeCoverageIgnore
      *
      * @return int
      */
@@ -214,6 +219,7 @@ class Collection extends \Magento\Catalog\Model\Resource\Product\Collection
 
     /**
      * Set product attribute set id
+     * @codeCoverageIgnore
      *
      * @param int $value
      * @return $this
@@ -223,7 +229,6 @@ class Collection extends \Magento\Catalog\Model\Resource\Product\Collection
         $this->_productEntityAttributeSetId = $value;
         return $this;
     }
-    //@codeCoverageIgnoreEnd
 
     /**
      * Join fields
diff --git a/app/code/Magento/Reports/Model/Resource/Product/Index/AbstractIndex.php b/app/code/Magento/Reports/Model/Resource/Product/Index/AbstractIndex.php
index 52d72406cb130d56d6a11e75ed1d68e139268287..45b1c2c5e9d51e3bbb6a0633c821187f731434df 100644
--- a/app/code/Magento/Reports/Model/Resource/Product/Index/AbstractIndex.php
+++ b/app/code/Magento/Reports/Model/Resource/Product/Index/AbstractIndex.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Model\Resource\Product\Index;
 
 /**
@@ -14,16 +12,22 @@ namespace Magento\Reports\Model\Resource\Product\Index;
 abstract class AbstractIndex extends \Magento\Framework\Model\Resource\Db\AbstractDb
 {
     /**
+     * DateItime instance
+     *
      * @var \Magento\Framework\Stdlib\DateTime
      */
     protected $dateTime;
 
     /**
+     * Reports helper
+     *
      * @var \Magento\Reports\Model\Resource\Helper
      */
     protected $_resourceHelper;
 
     /**
+     * Constructor
+     *
      * @param \Magento\Framework\Model\Resource\Db\Context $context
      * @param \Magento\Reports\Model\Resource\Helper $resourceHelper
      * @param \Magento\Framework\Stdlib\DateTime $dateTime
@@ -55,7 +59,9 @@ abstract class AbstractIndex extends \Magento\Framework\Model\Resource\Db\Abstra
             return $this;
         }
         $adapter = $this->_getWriteAdapter();
-        $select = $adapter->select()->from($this->getMainTable())->where('visitor_id = ?', $object->getVisitorId());
+        $select = $adapter->select()
+            ->from($this->getMainTable())
+            ->where('visitor_id = ?', $object->getVisitorId());
 
         $rowSet = $select->query()->fetchAll();
         foreach ($rowSet as $row) {
@@ -76,7 +82,7 @@ abstract class AbstractIndex extends \Magento\Framework\Model\Resource\Db\Abstra
 
             if ($idx) {
                 /**
-                 * If we are here it means that we have two rows: one with known customer, but second just visitor is set
+                 * If we are here it means that we have two rows: one with known customer and second with guest visitor
                  * One row should be updated with customer_id, second should be deleted
                  */
                 $adapter->delete($this->getMainTable(), ['index_id = ?' => $row['index_id']]);
@@ -192,7 +198,7 @@ abstract class AbstractIndex extends \Magento\Framework\Model\Resource\Db\Abstra
      * Add information about product ids to visitor/customer
      *
      * @param \Magento\Framework\Object|\Magento\Reports\Model\Product\Index\AbstractIndex $object
-     * @param array $productIds
+     * @param int[] $productIds
      * @return $this
      */
     public function registerIds(\Magento\Framework\Object $object, $productIds)
diff --git a/app/code/Magento/Reports/Model/Resource/Product/Index/Collection/AbstractCollection.php b/app/code/Magento/Reports/Model/Resource/Product/Index/Collection/AbstractCollection.php
index b172b4e053c274e51f42417e56f381343b2abb9d..77ea700b2cc00c843a8df396649870d0e9009b67 100644
--- a/app/code/Magento/Reports/Model/Resource/Product/Index/Collection/AbstractCollection.php
+++ b/app/code/Magento/Reports/Model/Resource/Product/Index/Collection/AbstractCollection.php
@@ -179,6 +179,7 @@ abstract class AbstractCollection extends \Magento\Catalog\Model\Resource\Produc
 
     /**
      * Set customer id, that will be used in 'whereCondition'
+     * @codeCoverageIgnore
      *
      * @param int $id
      * @return $this
diff --git a/app/code/Magento/Reports/Model/Resource/Product/Index/Viewed.php b/app/code/Magento/Reports/Model/Resource/Product/Index/Viewed.php
index 0ad3ffd330f063475affcd8cb56e36a9e5b4b7b8..93a22cf0011189fb11b3306525879f4f7b4685a1 100644
--- a/app/code/Magento/Reports/Model/Resource/Product/Index/Viewed.php
+++ b/app/code/Magento/Reports/Model/Resource/Product/Index/Viewed.php
@@ -17,6 +17,7 @@ class Viewed extends \Magento\Reports\Model\Resource\Product\Index\AbstractIndex
      * Initialize connection and main resource table
      *
      * @return void
+     * @codeCoverageIgnore
      */
     protected function _construct()
     {
diff --git a/app/code/Magento/Reports/Model/Resource/Report/AbstractReport.php b/app/code/Magento/Reports/Model/Resource/Report/AbstractReport.php
index 84a6d7d6a25efac94bd4ff2f7f3935a5c2ee70c1..777d13232b2a349e64b58ff63cd0b382012232a6 100644
--- a/app/code/Magento/Reports/Model/Resource/Report/AbstractReport.php
+++ b/app/code/Magento/Reports/Model/Resource/Report/AbstractReport.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Model\Resource\Report;
 
 /**
@@ -22,21 +20,29 @@ abstract class AbstractReport extends \Magento\Framework\Model\Resource\Db\Abstr
     protected $_flag = null;
 
     /**
+     * Logger instance
+     *
      * @var \Psr\Log\LoggerInterface
      */
     protected $_logger;
 
     /**
+     * Locale date instance
+     *
      * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface
      */
     protected $_localeDate;
 
     /**
+     * Reports flag factory
+     *
      * @var \Magento\Reports\Model\FlagFactory
      */
     protected $_reportsFlagFactory;
 
     /**
+     * Constructor
+     *
      * @param \Magento\Framework\Model\Resource\Db\Context $context
      * @param \Psr\Log\LoggerInterface $logger
      * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
@@ -179,7 +185,7 @@ abstract class AbstractReport extends \Magento\Framework\Model\Resource\Db\Abstr
      * @param string $whereColumn
      * @param null|string|\DateTime $from
      * @param null|string|\DateTime $to
-     * @param array $additionalWhere
+     * @param [][] $additionalWhere
      * @param string $alias
      * @return \Magento\Framework\DB\Select
      */
@@ -281,12 +287,12 @@ abstract class AbstractReport extends \Magento\Framework\Model\Resource\Db\Abstr
      *
      * @param string $table
      * @param string $relatedTable
-     * @param array $joinCondition
+     * @param [] $joinCondition
      * @param string $column
      * @param string $whereColumn
      * @param string|null $from
      * @param string|null $to
-     * @param array $additionalWhere
+     * @param [][] $additionalWhere
      * @param string $alias
      * @param string $relatedAlias
      * @return \Magento\Framework\DB\Select
@@ -353,7 +359,7 @@ abstract class AbstractReport extends \Magento\Framework\Model\Resource\Db\Abstr
     /**
      * Retrieve query for attribute with timezone conversion
      *
-     * @param string|array $table
+     * @param string|[] $table
      * @param string $column
      * @param null|mixed $from
      * @param null|mixed $to
diff --git a/app/code/Magento/Reports/Model/Resource/Report/Collection.php b/app/code/Magento/Reports/Model/Resource/Report/Collection.php
index 2de5f389f25247113bbb141ddfc84486d8ab7bd6..abc6db15ad0380ba97d6d0efc337961c4b775f65 100644
--- a/app/code/Magento/Reports/Model/Resource/Report/Collection.php
+++ b/app/code/Magento/Reports/Model/Resource/Report/Collection.php
@@ -96,6 +96,7 @@ class Collection extends \Magento\Framework\Data\Collection
 
     /**
      * Set period
+     * @codeCoverageIgnore
      *
      * @param int $period
      * @return $this
@@ -108,6 +109,7 @@ class Collection extends \Magento\Framework\Data\Collection
 
     /**
      * Set interval
+     * @codeCoverageIgnore
      *
      * @param \DateTime $fromDate
      * @param \DateTime $toDate
@@ -260,6 +262,7 @@ class Collection extends \Magento\Framework\Data\Collection
 
     /**
      * Set store ids
+     * @codeCoverageIgnore
      *
      * @param array $storeIds
      * @return $this
@@ -272,6 +275,7 @@ class Collection extends \Magento\Framework\Data\Collection
 
     /**
      * Get store ids
+     * @codeCoverageIgnore
      *
      * @return array
      */
@@ -292,6 +296,7 @@ class Collection extends \Magento\Framework\Data\Collection
 
     /**
      * Set page size
+     * @codeCoverageIgnore
      *
      * @param int $size
      * @return $this
@@ -304,6 +309,7 @@ class Collection extends \Magento\Framework\Data\Collection
 
     /**
      * Get page size
+     * @codeCoverageIgnore
      *
      * @return int
      */
diff --git a/app/code/Magento/Reports/Model/Resource/Report/Collection/AbstractCollection.php b/app/code/Magento/Reports/Model/Resource/Report/Collection/AbstractCollection.php
index 234d520b32b126a6641fb8288b09c2e990fe19de..4575ec6394c844f38d4d871042095f612de90e9e 100644
--- a/app/code/Magento/Reports/Model/Resource/Report/Collection/AbstractCollection.php
+++ b/app/code/Magento/Reports/Model/Resource/Report/Collection/AbstractCollection.php
@@ -64,6 +64,7 @@ class AbstractCollection extends \Magento\Framework\Model\Resource\Db\Collection
 
     /**
      * Set array of columns that should be aggregated
+     * @codeCoverageIgnore
      *
      * @param array $columns
      * @return $this
@@ -76,6 +77,7 @@ class AbstractCollection extends \Magento\Framework\Model\Resource\Db\Collection
 
     /**
      * Retrieve array of columns that should be aggregated
+     * @codeCoverageIgnore
      *
      * @return array
      */
@@ -86,6 +88,7 @@ class AbstractCollection extends \Magento\Framework\Model\Resource\Db\Collection
 
     /**
      * Set date range
+     * @codeCoverageIgnore
      *
      * @param mixed $from
      * @param mixed $to
@@ -100,6 +103,7 @@ class AbstractCollection extends \Magento\Framework\Model\Resource\Db\Collection
 
     /**
      * Set period
+     * @codeCoverageIgnore
      *
      * @param string $period
      * @return $this
@@ -218,6 +222,7 @@ class AbstractCollection extends \Magento\Framework\Model\Resource\Db\Collection
 
     /**
      * Setter for isSubTotals
+     * @codeCoverageIgnore
      *
      * @param bool $flag
      * @return $this
diff --git a/app/code/Magento/Reports/Model/Resource/Report/Product/Viewed.php b/app/code/Magento/Reports/Model/Resource/Report/Product/Viewed.php
index 56e658e56db51f51339f45c7d28785fe9281dd62..432ebc9b5d432e6f4653e1789e280a6a0a595c4f 100644
--- a/app/code/Magento/Reports/Model/Resource/Report/Product/Viewed.php
+++ b/app/code/Magento/Reports/Model/Resource/Report/Product/Viewed.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 /**
  * Most viewed product report aggregate resource model
  *
@@ -31,16 +29,22 @@ class Viewed extends \Magento\Sales\Model\Resource\Report\AbstractReport
     const AGGREGATION_YEARLY = 'report_viewed_product_aggregated_yearly';
 
     /**
+     * Product resource instance
+     *
      * @var \Magento\Catalog\Model\Resource\Product
      */
     protected $_productResource;
 
     /**
+     * Resource helper instance
+     *
      * @var \Magento\Reports\Model\Resource\Helper
      */
     protected $_resourceHelper;
 
     /**
+     * Constructor
+     *
      * @param \Magento\Framework\Model\Resource\Db\Context $context
      * @param \Psr\Log\LoggerInterface $logger
      * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
diff --git a/app/code/Magento/Reports/Model/Resource/Wishlist/Collection.php b/app/code/Magento/Reports/Model/Resource/Wishlist/Collection.php
index 797b20da8555176e603785c511672062d90830ac..ab98d411ca05510003c9c9e4fc1cf7e8e2d7bfa7 100644
--- a/app/code/Magento/Reports/Model/Resource/Wishlist/Collection.php
+++ b/app/code/Magento/Reports/Model/Resource/Wishlist/Collection.php
@@ -60,6 +60,7 @@ class Collection extends \Magento\Framework\Model\Resource\Db\Collection\Abstrac
 
     /**
      * Set wishlist table name
+     * @codeCoverageIgnore
      *
      * @param string $value
      * @return $this
@@ -72,6 +73,7 @@ class Collection extends \Magento\Framework\Model\Resource\Db\Collection\Abstrac
 
     /**
      * Retrieve wishlist table name
+     * @codeCoverageIgnore
      *
      * @return string
      */
diff --git a/app/code/Magento/Reports/Setup/InstallData.php b/app/code/Magento/Reports/Setup/InstallData.php
index 071ed7c29645029f880b7af63cb0950259590f98..fef292ffb21a02c04131a4a1cd209555951f1496 100644
--- a/app/code/Magento/Reports/Setup/InstallData.php
+++ b/app/code/Magento/Reports/Setup/InstallData.php
@@ -7,8 +7,6 @@
 
 namespace Magento\Reports\Setup;
 
-// @codingStandardsIgnoreFile
-
 use Magento\Cms\Model\PageFactory;
 use Magento\Framework\Setup\ModuleContextInterface;
 use Magento\Framework\Setup\ModuleDataSetupInterface;
@@ -82,11 +80,13 @@ class InstallData implements \Magento\Framework\Setup\InstallDataInterface
         $cms = $this->pageFactory->create();
         $cms->load('home', 'identifier');
 
+        // @codingStandardsIgnoreStart
         $reportLayoutUpdate = '<!--
     <referenceContainer name="right">
         <action method="unsetChild"><argument name="alias" xsi:type="string">right.reports.product.viewed</argument></action>
         <action method="unsetChild"><argument name="alias" xsi:type="string">right.reports.product.compared</argument></action>
     </referenceContainer>-->';
+        // @codingStandardsIgnoreEnd
 
         /*
          * Merge and save old layout update data with report layout data
diff --git a/app/code/Magento/Reports/Test/Unit/Helper/DataTest.php b/app/code/Magento/Reports/Test/Unit/Helper/DataTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..81eb87c4cac8a1532b08a48e109af0a6c42327fd
--- /dev/null
+++ b/app/code/Magento/Reports/Test/Unit/Helper/DataTest.php
@@ -0,0 +1,147 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Reports\Test\Unit\Helper;
+
+use Magento\Reports\Helper\Data;
+
+class DataTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Reports\Helper\Data
+     */
+    protected $data;
+
+    /**
+     * @var \Magento\Framework\App\Helper\Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $contextMock;
+
+    /**
+     * @var \Magento\Reports\Model\ItemFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $itemFactoryMock;
+
+    /**
+     * {@inheritDoc}
+     */
+    protected function setUp()
+    {
+        $this->contextMock = $this->getMockBuilder('Magento\Framework\App\Helper\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->itemFactoryMock = $this->getMockBuilder('Magento\Reports\Model\ItemFactory')
+            ->setMethods(['create'])
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->data = new Data(
+            $this->contextMock,
+            $this->itemFactoryMock
+        );
+    }
+
+    /**
+     * @param string $from
+     * @param string $to
+     * @param string $period
+     * @param array $results
+     * @dataProvider intervalsDataProvider
+     * @return void
+     */
+    public function testGetIntervals($from, $to, $period, $results)
+    {
+        $this->assertEquals($this->data->getIntervals($from, $to, $period), $results);
+    }
+
+    /**
+     * @param string $from
+     * @param string $to
+     * @param string $period
+     * @param array $results
+     * @dataProvider intervalsDataProvider
+     * @return void
+     */
+    public function testPrepareIntervalsCollection($from, $to, $period, $results)
+    {
+        $collection = $this->getMockBuilder('Magento\Framework\Data\Collection')
+            ->disableOriginalConstructor()
+            ->setMethods(['addItem'])
+            ->getMock();
+
+        $item = $this->getMockBuilder('Magento\Reports\Model\Item')
+            ->disableOriginalConstructor()
+            ->setMethods(['setPeriod', 'setIsEmpty'])
+            ->getMock();
+
+        $this->itemFactoryMock->expects($this->exactly(count($results)))
+            ->method('create')
+            ->willReturn($item);
+        $item->expects($this->exactly(count($results)))
+            ->method('setIsEmpty');
+        $collection->expects($this->exactly(count($results)))
+            ->method('addItem');
+
+        foreach ($results as $key => $result) {
+            $item->expects($this->at($key + $key))
+                ->method('setPeriod')
+                ->with($result);
+        }
+
+        $this->data->prepareIntervalsCollection($collection, $from, $to, $period);
+    }
+
+    /**
+     * @return array
+     */
+    public function intervalsDataProvider()
+    {
+        return [
+            [
+                'from' => '2000-01-15 10:00:00',
+                'to' => '2000-01-15 11:00:00',
+                'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_DAY,
+                'results' => ['2000-01-15']
+            ],
+            [
+                'from' => '2000-01-15 10:00:00',
+                'to' => '2000-01-17 10:00:00',
+                'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_MONTH,
+                'results' => ['2000-01']
+            ],
+            [
+                'from' => '2000-01-15 10:00:00',
+                'to' => '2000-02-15 10:00:00',
+                'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_YEAR,
+                'results' => ['2000']
+            ],
+            [
+                'from' => '2000-01-15 10:00:00',
+                'to' => '2000-01-16 11:00:00',
+                'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_DAY,
+                'results' => ['2000-01-15', '2000-01-16']
+            ],
+            [
+                'from' => '2000-01-15 10:00:00',
+                'to' => '2000-02-17 10:00:00',
+                'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_MONTH,
+                'results' => ['2000-01', '2000-02']
+            ],
+            [
+                'from' => '2000-01-15 10:00:00',
+                'to' => '2003-02-15 10:00:00',
+                'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_YEAR,
+                'results' => ['2000', '2001', '2002', '2003']
+            ],
+            [
+                'from' => '',
+                'to' => '',
+                'period' => \Magento\Reports\Helper\Data::REPORT_PERIOD_TYPE_YEAR,
+                'results' => []
+            ]
+        ];
+    }
+}
diff --git a/app/code/Magento/Reports/Test/Unit/Model/Event/ObserverTest.php b/app/code/Magento/Reports/Test/Unit/Model/Event/ObserverTest.php
index ba4dc5396b30df834f76dba8b40183af149af079..7e53522ac6680d17587318727bf538a6bebbdd0e 100644
--- a/app/code/Magento/Reports/Test/Unit/Model/Event/ObserverTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Model/Event/ObserverTest.php
@@ -47,6 +47,14 @@ class ObserverTest extends \PHPUnit_Framework_TestCase
      */
     protected $productCompModelMock;
 
+    /**
+     * @var \Magento\Reports\Model\Product\Index\ViewedFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $productIndexFactoryMock;
+    
+    /**
+     * {@inheritDoc}
+     */
     public function setUp()
     {
         $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
@@ -56,13 +64,13 @@ class ObserverTest extends \PHPUnit_Framework_TestCase
         $this->customerVisitorMock = $this->getMockBuilder('Magento\Customer\Model\Visitor')
             ->disableOriginalConstructor()->getMock();
 
-        $productIndexFactoryMock = $this->getMockBuilder('Magento\Reports\Model\Product\Index\ViewedFactory')
+        $this->productIndexFactoryMock = $this->getMockBuilder('Magento\Reports\Model\Product\Index\ViewedFactory')
             ->setMethods(['create'])
             ->disableOriginalConstructor()->getMock();
         $this->productIndexMock = $this->getMockBuilder('Magento\Reports\Model\Product\Index\Viewed')
             ->disableOriginalConstructor()->getMock();
 
-        $productIndexFactoryMock->expects($this->any())
+        $this->productIndexFactoryMock->expects($this->any())
             ->method('create')
             ->willReturn($this->productIndexMock);
 
@@ -84,20 +92,25 @@ class ObserverTest extends \PHPUnit_Framework_TestCase
         $storeManager->expects($this->any())
             ->method('getStore')
             ->willReturn($this->storeMock);
-        $this->productCompFactoryMock = $this->getMockBuilder('Magento\Reports\Model\Product\Index\ComparedFactory')
+        
+        $this->productCompModelMock = $this->getMockBuilder('Magento\Reports\Model\Product\Index\Compared')
             ->disableOriginalConstructor()
-            ->setMethods(['create'])
             ->getMock();
-        $this->productCompModelMock = $this->getMockBuilder('Magento\Reports\Model\Product\Index\Compared')
+
+        $this->productCompFactoryMock = $this->getMockBuilder('Magento\Reports\Model\Product\Index\ComparedFactory')
             ->disableOriginalConstructor()
+            ->setMethods(['create'])
             ->getMock();
+        $this->productCompFactoryMock->expects($this->any())
+            ->method('create')
+            ->willReturn($this->productCompModelMock);
 
         $this->observer = $objectManager->getObject(
             'Magento\Reports\Model\Event\Observer',
             [
                 'customerSession' => $this->customerSessionMock,
                 'customerVisitor' => $this->customerVisitorMock,
-                'productIndxFactory' => $productIndexFactoryMock,
+                'productIndxFactory' => $this->productIndexFactoryMock,
                 'productCompFactory' => $this->productCompFactoryMock,
                 'storeManager' => $storeManager,
                 'event' => $reportEventFactory
@@ -105,6 +118,9 @@ class ObserverTest extends \PHPUnit_Framework_TestCase
         );
     }
 
+    /**
+     * @return void
+     */
     public function testCatalogProductViewCustomer()
     {
         $productId = 5;
@@ -123,17 +139,10 @@ class ObserverTest extends \PHPUnit_Framework_TestCase
             'store_id' => $storeId,
         ];
 
-        $this->storeMock->expects($this->any())
-            ->method('getId')
-            ->willReturn($storeId);
-
-        $this->customerSessionMock->expects($this->any())
-            ->method('isLoggedIn')
-            ->willReturn(true);
+        $this->storeMock->expects($this->any())->method('getId')->willReturn($storeId);
 
-        $this->customerSessionMock->expects($this->any())
-            ->method('getCustomerId')
-            ->willReturn($customerId);
+        $this->customerSessionMock->expects($this->any())->method('isLoggedIn')->willReturn(true);
+        $this->customerSessionMock->expects($this->any())->method('getCustomerId')->willReturn($customerId);
 
         $this->prepareProductIndexMock($expectedViewedData);
         $this->prepareReportEventModel($expectedEventData);
@@ -141,6 +150,9 @@ class ObserverTest extends \PHPUnit_Framework_TestCase
         $this->observer->catalogProductView($eventObserver);
     }
 
+    /**
+     * @return void
+     */
     public function testCatalogProductViewVisitor()
     {
         $productId = 6;
@@ -159,17 +171,11 @@ class ObserverTest extends \PHPUnit_Framework_TestCase
             'store_id' => $storeId,
         ];
 
-        $this->storeMock->expects($this->any())
-            ->method('getId')
-            ->willReturn($storeId);
+        $this->storeMock->expects($this->any())->method('getId')->willReturn($storeId);
 
-        $this->customerSessionMock->expects($this->any())
-            ->method('isLoggedIn')
-            ->willReturn(false);
+        $this->customerSessionMock->expects($this->any())->method('isLoggedIn')->willReturn(false);
 
-        $this->customerVisitorMock->expects($this->any())
-            ->method('getId')
-            ->willReturn($visitorId);
+        $this->customerVisitorMock->expects($this->any())->method('getId')->willReturn($visitorId);
 
         $this->prepareProductIndexMock($expectedViewedData);
         $this->prepareReportEventModel($expectedEventData);
@@ -182,6 +188,7 @@ class ObserverTest extends \PHPUnit_Framework_TestCase
      * @param string $userKey
      * @param int $userId
      * @dataProvider catalogProductCompareAddProductDataProvider
+     * @return void
      */
     public function testCatalogProductCompareAddProduct($isLoggedIn, $userKey, $userId)
     {
@@ -193,31 +200,84 @@ class ObserverTest extends \PHPUnit_Framework_TestCase
             $userKey => $userId
         ];
         $observerMock = $this->getObserverMock($productId);
-        $this->customerSessionMock->expects($this->any())
-            ->method('isLoggedIn')
-            ->willReturn($isLoggedIn);
-        $this->customerSessionMock->expects($this->any())
-            ->method('getCustomerId')
-            ->willReturn($customerId);
-        $this->customerVisitorMock->expects($this->any())
-            ->method('getId')
-            ->willReturn($visitorId);
-        $this->productCompFactoryMock->expects($this->any())
-            ->method('create')
-            ->willReturn($this->productCompModelMock);
-        $this->productCompModelMock->expects($this->any())
-            ->method('setData')
-            ->with($viewData)
-            ->willReturnSelf();
-        $this->productCompModelMock->expects($this->any())
-            ->method('save')
-            ->willReturnSelf();
-        $this->productCompModelMock->expects($this->any())
-            ->method('calculate')
-            ->willReturnSelf();
+
+        $this->customerSessionMock->expects($this->any())->method('isLoggedIn')->willReturn($isLoggedIn);
+        $this->customerSessionMock->expects($this->any())->method('getCustomerId')->willReturn($customerId);
+
+        $this->customerVisitorMock->expects($this->any())->method('getId')->willReturn($visitorId);
+
+        $this->productCompModelMock->expects($this->any())->method('setData')->with($viewData)->willReturnSelf();
+        $this->productCompModelMock->expects($this->any())->method('save')->willReturnSelf();
+        $this->productCompModelMock->expects($this->any())->method('calculate')->willReturnSelf();
+
         $this->assertEquals($this->observer, $this->observer->catalogProductCompareAddProduct($observerMock));
     }
 
+    /**
+     * @return void
+     */
+    public function testCustomerLoginLoggedInTrue()
+    {
+        $customerId = 222;
+        $visitorId = 333;
+        $observerMock = $this->getObserverMock(111);
+
+        $this->customerSessionMock->expects($this->once())->method('isLoggedIn')->willReturn(true);
+        $this->customerSessionMock->expects($this->once())->method('getCustomerId')->willReturn($customerId);
+
+        $this->customerVisitorMock->expects($this->once())->method('getId')->willReturn($visitorId);
+
+        $this->reportEventMock->expects($this->once())->method('updateCustomerType')->with($visitorId, $customerId);
+
+        $this->productCompModelMock->expects($this->once())->method('updateCustomerFromVisitor')->willReturnSelf();
+        $this->productCompModelMock->expects($this->once())->method('calculate')->willReturnSelf();
+
+        $this->productIndexMock->expects($this->once())->method('updateCustomerFromVisitor')->willReturnSelf();
+        $this->productIndexMock->expects($this->once())->method('calculate')->willReturnSelf();
+
+        $this->assertEquals($this->observer, $this->observer->customerLogin($observerMock));
+    }
+
+    /**
+     * @return void
+     */
+    public function testCustomerLoginLoggedInFalse()
+    {
+        $observerMock = $this->getObserverMock(111);
+
+        $this->customerSessionMock->expects($this->once())->method('isLoggedIn')->willReturn(false);
+        $this->customerSessionMock->expects($this->never())->method('getCustomerId');
+
+        $this->customerVisitorMock->expects($this->never())->method('getId');
+
+        $this->productCompModelMock->expects($this->never())->method('updateCustomerFromVisitor')->willReturnSelf();
+        $this->productCompModelMock->expects($this->never())->method('calculate')->willReturnSelf();
+
+        $this->productIndexMock->expects($this->never())->method('updateCustomerFromVisitor')->willReturnSelf();
+        $this->productIndexMock->expects($this->never())->method('calculate')->willReturnSelf();
+
+        $this->assertEquals($this->observer, $this->observer->customerLogin($observerMock));
+    }
+
+    /**
+     * @return void
+     */
+    public function testCustomerLogout()
+    {
+        $observerMock = $this->getObserverMock(111);
+
+        $this->productCompModelMock->expects($this->once())->method('purgeVisitorByCustomer')->willReturnSelf();
+        $this->productCompModelMock->expects($this->once())->method('calculate')->willReturnSelf();
+
+        $this->productIndexMock->expects($this->once())->method('purgeVisitorByCustomer')->willReturnSelf();
+        $this->productIndexMock->expects($this->once())->method('calculate')->willReturnSelf();
+
+        $this->assertEquals($this->observer, $this->observer->customerLogout($observerMock));
+    }
+
+    /**
+     * @return array
+     */
     public function catalogProductCompareAddProductDataProvider()
     {
         return [
@@ -260,14 +320,8 @@ class ObserverTest extends \PHPUnit_Framework_TestCase
      */
     protected function prepareReportEventModel($expectedEventData)
     {
-        $this->reportEventMock->expects($this->any())
-            ->method('setData')
-            ->with($expectedEventData)
-            ->willReturnSelf();
-
-        $this->reportEventMock->expects($this->any())
-            ->method('save')
-            ->willReturnSelf();
+        $this->reportEventMock->expects($this->any())->method('setData')->with($expectedEventData)->willReturnSelf();
+        $this->reportEventMock->expects($this->any())->method('save')->willReturnSelf();
     }
 
     /**
@@ -276,22 +330,21 @@ class ObserverTest extends \PHPUnit_Framework_TestCase
      */
     protected function getObserverMock($productId)
     {
-        $eventObserverMock = $this->getMockBuilder('Magento\Framework\Event\Observer')->disableOriginalConstructor()
+        $eventObserverMock = $this->getMockBuilder('Magento\Framework\Event\Observer')
+            ->disableOriginalConstructor()
             ->getMock();
-        $eventMock = $this->getMockBuilder('Magento\Framework\Event')->disableOriginalConstructor()
+        $eventMock = $this->getMockBuilder('Magento\Framework\Event')
+            ->disableOriginalConstructor()
             ->setMethods(['getProduct'])->getMock();
-        $productMock = $this->getMockBuilder('Magento\Catalog\Model\Product')->disableOriginalConstructor()
+        $productMock = $this->getMockBuilder('Magento\Catalog\Model\Product')
+            ->disableOriginalConstructor()
             ->getMock();
 
-        $productMock->expects($this->any())
-            ->method('getId')
-            ->willReturn($productId);
-        $eventMock->expects($this->any())
-            ->method('getProduct')
-            ->willReturn($productMock);
-        $eventObserverMock->expects($this->any())
-            ->method('getEvent')
-            ->willReturn($eventMock);
+        $productMock->expects($this->any())->method('getId')->willReturn($productId);
+
+        $eventMock->expects($this->any())->method('getProduct')->willReturn($productMock);
+
+        $eventObserverMock->expects($this->any())->method('getEvent')->willReturn($eventMock);
 
         return $eventObserverMock;
     }
diff --git a/app/code/Magento/Reports/Test/Unit/Model/Plugin/LogTest.php b/app/code/Magento/Reports/Test/Unit/Model/Plugin/LogTest.php
index a6585041528a549b1d69b10135614c1270f44937..f9ee6d86285e0aad348824a00a26ae17f2e42e7f 100644
--- a/app/code/Magento/Reports/Test/Unit/Model/Plugin/LogTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Model/Plugin/LogTest.php
@@ -3,82 +3,84 @@
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
+
 namespace Magento\Reports\Test\Unit\Model\Plugin;
 
+use Magento\Reports\Model\Plugin\Log;
+
 class LogTest extends \PHPUnit_Framework_TestCase
 {
     /**
      * @var \Magento\Reports\Model\Plugin\Log
      */
-    protected $model;
+    protected $log;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Reports\Model\Event|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $reportEventMock;
+    protected $eventMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Reports\Model\Product\Index\Compared|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $cmpProductIdxMock;
+    protected $comparedMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Reports\Model\Product\Index\Viewed|\PHPUnit_Framework_MockObject_MockObject
      */
-    protected $viewProductIdxMock;
+    protected $viewedMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Log\Model\Resource\Log|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $logResourceMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Log\Model\Resource\Log|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $subjectMock;
 
+    /**
+     * {@inheritDoc}
+     */
     protected function setUp()
     {
-        $this->reportEventMock = $this->getMock('Magento\Reports\Model\Event', [], [], '', false);
-        $this->cmpProductIdxMock = $this->getMock(
-            'Magento\Reports\Model\Product\Index\Compared',
-            [],
-            [],
-            '',
-            false
-        );
-        $this->viewProductIdxMock = $this->getMock(
-            'Magento\Reports\Model\Product\Index\Viewed',
-            [],
-            [],
-            '',
-            false
-        );
+        $this->eventMock = $this->getMockBuilder('Magento\Reports\Model\Event')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->comparedMock = $this->getMockBuilder('Magento\Reports\Model\Product\Index\Compared')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->viewedMock = $this->getMockBuilder('Magento\Reports\Model\Product\Index\Viewed')
+            ->disableOriginalConstructor()
+            ->getMock();
 
-        $this->logResourceMock = $this->getMock('Magento\Log\Model\Resource\Log', [], [], '', false);
+        $this->logResourceMock = $this->getMockBuilder('Magento\Log\Model\Resource\Log')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->subjectMock = $this->getMockBuilder('Magento\Log\Model\Resource\Log')
+            ->disableOriginalConstructor()
+            ->getMock();
 
-        $this->subjectMock = $this->getMock('Magento\Log\Model\Resource\Log', [], [], '', false);
-        $this->model = new \Magento\Reports\Model\Plugin\Log(
-            $this->reportEventMock,
-            $this->cmpProductIdxMock,
-            $this->viewProductIdxMock
+        $this->log = new Log(
+            $this->eventMock,
+            $this->comparedMock,
+            $this->viewedMock
         );
     }
 
     /**
-     * @covers \Magento\Reports\Model\Plugin\Log::afterClean
+     * @return void
      */
     public function testAfterClean()
     {
-        $this->reportEventMock->expects($this->once())->method('clean');
-
-        $this->cmpProductIdxMock->expects($this->once())->method('clean');
-
-        $this->viewProductIdxMock->expects($this->once())->method('clean');
+        $this->eventMock->expects($this->once())->method('clean');
+        $this->comparedMock->expects($this->once())->method('clean');
+        $this->viewedMock->expects($this->once())->method('clean');
 
         $this->assertEquals(
             $this->logResourceMock,
-            $this->model->afterClean($this->subjectMock, $this->logResourceMock)
+            $this->log->afterClean($this->subjectMock, $this->logResourceMock)
         );
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Model/Product/Index/ComparedTest.php b/app/code/Magento/Reports/Test/Unit/Model/Product/Index/ComparedTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..7a2a7213a6b7899f7f89fd47a04bb66fb31539ea
--- /dev/null
+++ b/app/code/Magento/Reports/Test/Unit/Model/Product/Index/ComparedTest.php
@@ -0,0 +1,149 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Reports\Test\Unit\Model\Product\Index;
+
+use Magento\Reports\Model\Product\Index\Compared;
+
+class ComparedTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Reports\Model\Product\Index\Compared
+     */
+    protected $compared;
+
+    /**
+     * @var \Magento\Framework\Model\Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $contextMock;
+
+    /**
+     * @var \Magento\Framework\Registry|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $registryMock;
+
+    /**
+     * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $storeManagerMock;
+
+    /**
+     * @var \Magento\Customer\Model\Visitor|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $visitorMock;
+
+    /**
+     * @var \Magento\Customer\Model\Session|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $sessionMock;
+
+    /**
+     * @var \Magento\Framework\Session\Generic|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $genericMock;
+
+    /**
+     * @var \Magento\Catalog\Model\Product\Visibility|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $visibilityMock;
+
+    /**
+     * @var \Magento\Framework\Stdlib\DateTime|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $dateTimeMock;
+
+    /**
+     * @var \Magento\Catalog\Helper\Product\Compare|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $catalogProductHelperMock;
+
+    /**
+     * @var \Magento\Framework\Model\Resource\AbstractResource|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resourceMock;
+
+    /**
+     * @var \Magento\Framework\Data\Collection\AbstractDb|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $dbMock;
+    /**
+     * {@inheritDoc}
+     */
+    protected function setUp()
+    {
+        $this->contextMock = $this->getMockBuilder('Magento\Framework\Model\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->registryMock = $this->getMockBuilder('Magento\Framework\Registry')
+            ->getMock();
+        $this->storeManagerMock = $this->getMockBuilder('Magento\Store\Model\StoreManagerInterface')
+            ->getMock();
+        $this->visitorMock = $this->getMockBuilder('Magento\Customer\Model\Visitor')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->sessionMock = $this->getMockBuilder('Magento\Customer\Model\Session')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->genericMock = $this->getMockBuilder('Magento\Framework\Session\Generic')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->visibilityMock = $this->getMockBuilder('Magento\Catalog\Model\Product\Visibility')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->dateTimeMock = $this->getMockBuilder('Magento\Framework\Stdlib\DateTime')
+            ->getMock();
+        $this->catalogProductHelperMock = $this->getMockBuilder('Magento\Catalog\Helper\Product\Compare')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->resourceMock = $this->getMockBuilder('Magento\Framework\Model\Resource\AbstractResource')
+            ->disableOriginalConstructor()
+            ->setMethods(['getIdFieldName', '_construct', '_getReadAdapter', '_getWriteAdapter'])
+            ->getMock();
+        $this->dbMock = $this->getMockBuilder('Magento\Framework\Data\Collection\AbstractDb')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->compared = new Compared(
+            $this->contextMock,
+            $this->registryMock,
+            $this->storeManagerMock,
+            $this->visitorMock,
+            $this->sessionMock,
+            $this->genericMock,
+            $this->visibilityMock,
+            $this->dateTimeMock,
+            $this->catalogProductHelperMock,
+            $this->resourceMock,
+            $this->dbMock
+        );
+    }
+
+    /**
+     * @return void
+     */
+    public function testGetExcludeProductIds()
+    {
+        $collection = $this->getMockBuilder('Magento\Catalog\Model\Resource\Product\Compare\Item\Collection')
+            ->disableOriginalConstructor()
+            ->setMethods(['getEntityId'])
+            ->getMock();
+        $collection->expects($this->once())->method('getEntityId')->willReturn(1);
+
+        $product = $this->getMockBuilder('Magento\Catalog\Model\Product')
+            ->disableOriginalConstructor()
+            ->setMethods(['getId'])
+            ->getMock();
+        $product->expects($this->once())->method('getId')->willReturn(2);
+
+        $this->catalogProductHelperMock->expects($this->once())->method('hasItems')->willReturn(true);
+        $this->catalogProductHelperMock->expects($this->once())->method('getItemCollection')->willReturn([$collection]);
+
+        $this->registryMock->expects($this->any())->method('registry')->willReturn($product);
+
+        $this->assertEquals([1, 2], $this->compared->getExcludeProductIds());
+    }
+}
diff --git a/app/code/Magento/Reports/Test/Unit/Model/Resource/Event/CollectionTest.php b/app/code/Magento/Reports/Test/Unit/Model/Resource/Event/CollectionTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..2191830c60ffd3ebdad30f105190cc31f9aa2b7f
--- /dev/null
+++ b/app/code/Magento/Reports/Test/Unit/Model/Resource/Event/CollectionTest.php
@@ -0,0 +1,161 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Reports\Test\Unit\Model\Resource\Event;
+
+use Magento\Reports\Model\Resource\Event\Collection;
+
+class CollectionTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Reports\Model\Resource\Event\Collection
+     */
+    protected $collection;
+
+    /**
+     * @var \Magento\Framework\Data\Collection\EntityFactoryInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $entityFactoryMock;
+
+    /**
+     * @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $loggerMock;
+
+    /**
+     * @var \Magento\Framework\Data\Collection\Db\FetchStrategyInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $fetchStrategyMock;
+
+    /**
+     * @var \Magento\Framework\Event\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $managerMock;
+
+    /**
+     * @var \Magento\Framework\Model\Resource\Db\AbstractDb|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resourceMock;
+
+    /**
+     * @var \Zend_Db_Adapter_Abstract|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $dbMock;
+
+    /**
+     * @var \Zend_Db_Select|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $selectMock;
+
+    /**
+     * {@inheritDoc}
+     */
+    protected function setUp()
+    {
+        $this->entityFactoryMock = $this->getMockBuilder('Magento\Framework\Data\Collection\EntityFactoryInterface')
+            ->getMock();
+        $this->loggerMock = $this->getMockBuilder('Psr\Log\LoggerInterface')
+            ->getMock();
+        $this->fetchStrategyMock = $this->getMockBuilder('Magento\Framework\Data\Collection\Db\FetchStrategyInterface')
+            ->getMock();
+        $this->managerMock = $this->getMockBuilder('Magento\Framework\Event\ManagerInterface')
+            ->getMock();
+
+        $this->selectMock = $this->getMockBuilder('Zend_Db_Select')
+            ->setMethods(['where', 'from'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->selectMock->expects($this->any())
+            ->method('from')
+            ->willReturnSelf();
+        $this->selectMock->expects($this->any())
+            ->method('where')
+            ->willReturnSelf();
+
+        $this->dbMock = $this->getMockBuilder('Zend_Db_Adapter_Abstract')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->dbMock->expects($this->any())
+            ->method('select')
+            ->willReturn($this->selectMock);
+
+        $this->resourceMock = $this->getMockBuilder('Magento\Framework\Model\Resource\Db\AbstractDb')
+            ->disableOriginalConstructor()
+            ->setMethods(['getReadConnection', 'getCurrentStoreIds', '_construct', 'getMainTable', 'getTable'])
+            ->getMock();
+        $this->resourceMock->expects($this->any())
+            ->method('getReadConnection')
+            ->willReturn($this->dbMock);
+
+        $this->collection = new Collection(
+            $this->entityFactoryMock,
+            $this->loggerMock,
+            $this->fetchStrategyMock,
+            $this->managerMock,
+            null,
+            $this->resourceMock
+        );
+    }
+
+    /**
+     * @param mixed $ignoreData
+     * @param 'string' $ignoreSql
+     * @dataProvider ignoresDataProvider
+     * @return void
+     */
+    public function testAddStoreFilter($ignoreData, $ignoreSql)
+    {
+        $typeId = 1;
+        $subjectId =2;
+        $subtype = 3;
+        $limit = 0;
+        $stores = [1, 2];
+
+        $this->resourceMock
+            ->expects($this->once())
+            ->method('getCurrentStoreIds')
+            ->willReturn($stores);
+        $this->selectMock
+            ->expects($this->at(0))
+            ->method('where')
+            ->with('event_type_id = ?', $typeId);
+        $this->selectMock
+            ->expects($this->at(1))
+            ->method('where')
+            ->with('subject_id = ?', $subjectId);
+        $this->selectMock
+            ->expects($this->at(2))
+            ->method('where')
+            ->with('subtype = ?', $subtype);
+        $this->selectMock
+            ->expects($this->at(3))
+            ->method('where')
+            ->with('store_id IN(?)', $stores);
+        $this->selectMock
+            ->expects($this->at(4))
+            ->method('where')
+            ->with($ignoreSql, $ignoreData);
+
+        $this->collection->addRecentlyFiler($typeId, $subjectId, $subtype, $ignoreData, $limit);
+    }
+
+    /**
+     * @return array
+     */
+    public function ignoresDataProvider()
+    {
+        return [
+            [
+                'ignoreData' => 1,
+                'ignoreSql' => 'object_id <> ?'
+            ],
+            [
+                'ignoreData' => [1],
+                'ignoreSql' => 'object_id NOT IN(?)'
+            ]
+        ];
+    }
+}
diff --git a/app/code/Magento/Reports/Test/Unit/Model/Resource/EventTest.php b/app/code/Magento/Reports/Test/Unit/Model/Resource/EventTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..5d1dc3bbcea0733b49ccf35ba68ae9f3d948581a
--- /dev/null
+++ b/app/code/Magento/Reports/Test/Unit/Model/Resource/EventTest.php
@@ -0,0 +1,248 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Reports\Test\Unit\Model\Resource;
+
+use Magento\Reports\Model\Resource\Event;
+
+class EventTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Reports\Model\Resource\Event
+     */
+    protected $event;
+
+    /**
+     * @var \Magento\Framework\Model\Resource\Db\Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $contextMock;
+
+    /**
+     * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scopeConfigMock;
+
+    /**
+     * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $storeManagerMock;
+
+    /**
+     * @var \Magento\Framework\DB\Adapter\AdapterInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $connectionMock;
+
+    /**
+     * @var \Magento\Framework\App\Resource|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resourceMock;
+
+    /**
+     * @var \Magento\Store\Model\Store|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $storeMock;
+
+    /**
+     * {@inheritDoc}
+     */
+    protected function setUp()
+    {
+        $this->contextMock = $this->getMockBuilder('Magento\Framework\Model\Resource\Db\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->scopeConfigMock = $this->getMockBuilder('Magento\Framework\App\Config\ScopeConfigInterface')
+            ->getMock();
+
+        $this->storeManagerMock = $this->getMockBuilder('Magento\Store\Model\StoreManagerInterface')
+            ->getMock();
+
+        $this->storeMock = $this->getMockBuilder('Magento\Store\Model\Store')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->storeManagerMock
+            ->expects($this->any())
+            ->method('getStore')
+            ->willReturn($this->storeMock);
+
+        $this->connectionMock = $this->getMockBuilder('Magento\Framework\DB\Adapter\AdapterInterface')
+            ->getMock();
+
+        $this->resourceMock = $this->getMockBuilder('Magento\Framework\App\Resource')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->resourceMock
+            ->expects($this->any())
+            ->method('getConnection')
+            ->willReturn($this->connectionMock);
+
+        $this->contextMock
+            ->expects($this->any())
+            ->method('getResources')
+            ->willReturn($this->resourceMock);
+
+        $this->event = new Event(
+            $this->contextMock,
+            $this->scopeConfigMock,
+            $this->storeManagerMock
+        );
+    }
+
+    /**
+     * @return void
+     */
+    public function testUpdateCustomerTypeWithoutType()
+    {
+        $eventMock = $this->getMockBuilder('Magento\Reports\Model\Event')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->connectionMock
+            ->expects($this->never())
+            ->method('update');
+
+        $this->event->updateCustomerType($eventMock, 1, 1);
+
+    }
+
+    /**
+     * @return void
+     */
+    public function testUpdateCustomerTypeWithType()
+    {
+        $eventMock = $this->getMockBuilder('Magento\Reports\Model\Event')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->connectionMock
+            ->expects($this->once())
+            ->method('update');
+
+        $this->event->updateCustomerType($eventMock, 1, 1, ['type']);
+
+    }
+
+    /**
+     * @return void
+     */
+    public function testApplyLogToCollection()
+    {
+        $derivedSelect = 'SELECT * FROM table';
+        $idFieldName = 'IdFieldName';
+
+        $collectionSelectMock = $this->getMockBuilder('Magento\Framework\DB\Select')
+            ->disableOriginalConstructor()
+            ->setMethods(['joinInner', 'order'])
+            ->getMock();
+        $collectionSelectMock
+            ->expects($this->once())
+            ->method('joinInner')
+            ->with(
+                ['evt' => new \Zend_Db_Expr("({$derivedSelect})")],
+                "{$idFieldName} = evt.object_id",
+                []
+            )
+            ->willReturnSelf();
+        $collectionSelectMock
+            ->expects($this->once())
+            ->method('order')
+            ->willReturnSelf();
+
+        $collectionMock = $this->getMockBuilder('Magento\Framework\Data\Collection\AbstractDb')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $collectionMock
+            ->expects($this->once())
+            ->method('getResource')
+            ->willReturnSelf();
+        $collectionMock
+            ->expects($this->once())
+            ->method('getIdFieldName')
+            ->willReturn($idFieldName);
+        $collectionMock
+            ->expects($this->any())
+            ->method('getSelect')
+            ->willReturn($collectionSelectMock);
+
+        $selectMock = $this->getMockBuilder('Magento\Framework\DB\Select')
+            ->disableOriginalConstructor()
+            ->setMethods(['from', 'where', 'group', 'joinInner', '__toString'])
+            ->getMock();
+        $selectMock
+            ->expects($this->once())
+            ->method('from')
+            ->willReturnSelf();
+        $selectMock
+            ->expects($this->any())
+            ->method('where')
+            ->willReturnSelf();
+        $selectMock
+            ->expects($this->once())
+            ->method('group')
+            ->willReturnSelf();
+        $selectMock
+            ->expects($this->any())
+            ->method('__toString')
+            ->willReturn($derivedSelect);
+
+        $this->connectionMock
+            ->expects($this->once())
+            ->method('select')
+            ->willReturn($selectMock);
+
+        $this->storeMock
+            ->expects($this->any())
+            ->method('getId')
+            ->willReturn(1);
+
+        $this->event->applyLogToCollection($collectionMock, 1, 1, 1);
+    }
+
+    /**
+     * @return void
+     */
+    public function testClean()
+    {
+        $eventMock = $this->getMockBuilder('Magento\Reports\Model\Event')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $selectMock = $this->getMockBuilder('Magento\Framework\DB\Select')
+            ->disableOriginalConstructor()
+            ->setMethods(['select', 'from', 'joinLeft', 'where', 'limit', 'fetchCol'])
+            ->getMock();
+
+        $this->connectionMock
+            ->expects($this->at(3))
+            ->method('fetchCol')
+            ->willReturn(1);
+        $this->connectionMock
+            ->expects($this->once())
+            ->method('delete');
+        $this->connectionMock
+            ->expects($this->any())
+            ->method('select')
+            ->willReturn($selectMock);
+
+        $selectMock
+            ->expects($this->exactly(2))
+            ->method('from')
+            ->willReturnSelf();
+        $selectMock
+            ->expects($this->exactly(2))
+            ->method('joinLeft')
+            ->willReturnSelf();
+        $selectMock
+            ->expects($this->any())
+            ->method('where')
+            ->willReturnSelf();
+        $selectMock
+            ->expects($this->exactly(2))
+            ->method('limit')
+            ->willReturnSelf();
+
+        $this->event->clean($eventMock);
+    }
+}
diff --git a/app/code/Magento/Reports/Test/Unit/Model/Resource/HelperTest.php b/app/code/Magento/Reports/Test/Unit/Model/Resource/HelperTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..b000c4ad43ab230bf9b648241354cb3cd60b65d3
--- /dev/null
+++ b/app/code/Magento/Reports/Test/Unit/Model/Resource/HelperTest.php
@@ -0,0 +1,122 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Reports\Test\Unit\Model\Resource;
+
+use Magento\Reports\Model\Resource\Helper;
+
+class HelperTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Reports\Model\Resource\Helper
+     */
+    protected $helper;
+
+    /**
+     * @var \Magento\Framework\App\Resource|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resourceMock;
+
+    /**
+     * @var \Magento\Framework\DB\Adapter\AdapterInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $connectionMock;
+
+    /**
+     * {@inheritDoc}
+     */
+    protected function setUp()
+    {
+        $this->resourceMock = $this->getMockBuilder('Magento\Framework\App\Resource')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->connectionMock = $this->getMockBuilder('Magento\Framework\DB\Adapter\AdapterInterface')
+            ->getMock();
+
+        $this->resourceMock
+            ->expects($this->any())
+            ->method('getConnection')
+            ->willReturn($this->connectionMock);
+
+        $this->helper = new Helper(
+            $this->resourceMock
+        );
+    }
+
+    /**
+     * @return void
+     */
+    public function testMergeVisitorProductIndex()
+    {
+        $mainTable = 'mainTable';
+        $data = ['dataKey' => 'dataValue'];
+        $matchFields = ['matchField'];
+
+        $this->connectionMock
+            ->expects($this->once())
+            ->method('insertOnDuplicate')
+            ->with($mainTable, $data, array_keys($data));
+
+        $this->helper->mergeVisitorProductIndex($mainTable, $data, $matchFields);
+    }
+
+    /**
+     * @param string $type
+     * @param array $result
+     * @dataProvider typesDataProvider
+     * @return void
+     */
+    public function testUpdateReportRatingPos($type, $result)
+    {
+        $mainTable = 'mainTable';
+        $column = 'column';
+        $aggregationTable = 'aggregationTable';
+
+        $selectMock = $this->getMockBuilder('Magento\Framework\DB\Select')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $selectMock
+            ->expects($this->any())
+            ->method('from')
+            ->willReturnSelf();
+        $selectMock
+            ->expects($this->once())
+            ->method('group')
+            ->willReturnSelf();
+        $selectMock
+            ->expects($this->once())
+            ->method('order')
+            ->willReturnSelf();
+        $selectMock
+            ->expects($this->once())
+            ->method('insertFromSelect')
+            ->with($aggregationTable, $result)
+            ->willReturnSelf();
+
+        $this->connectionMock
+            ->expects($this->any())
+            ->method('select')
+            ->willReturn($selectMock);
+
+        $this->helper->updateReportRatingPos($this->connectionMock, $type, $column, $mainTable, $aggregationTable);
+    }
+
+    /**
+     * @return array
+     */
+    public function typesDataProvider()
+    {
+        $mResult = ['period', 'store_id', 'product_id', 'product_name', 'product_price', 'column', 'rating_pos'];
+        $dResult = ['period', 'store_id', 'product_id', 'product_name', 'product_price', 'id', 'column', 'rating_pos'];
+        return [
+            ['type' => 'year', 'result' => $mResult],
+            ['type' => 'month', 'result' => $mResult],
+            ['type' => 'day', 'result' => $dResult],
+            ['type' => null, 'result' => $mResult]
+        ];
+    }
+}
diff --git a/app/code/Magento/Reports/Test/Unit/Model/Resource/Order/CollectionTest.php b/app/code/Magento/Reports/Test/Unit/Model/Resource/Order/CollectionTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..22a6bb1be49c2719d81af2339c7feef95295a195
--- /dev/null
+++ b/app/code/Magento/Reports/Test/Unit/Model/Resource/Order/CollectionTest.php
@@ -0,0 +1,509 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Reports\Test\Unit\Model\Resource\Order;
+
+use Magento\Reports\Model\Resource\Order\Collection;
+
+/**
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
+class CollectionTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Reports\Model\Resource\Order\Collection
+     */
+    protected $collection;
+
+    /**
+     * @var \Magento\Framework\Data\Collection\EntityFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $entityFactoryMock;
+
+    /**
+     * @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $loggerMock;
+
+    /**
+     * @var \Magento\Framework\Data\Collection\Db\FetchStrategyInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $fetchStrategyMock;
+
+    /**
+     * @var \Magento\Framework\Event\ManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $managerMock;
+
+    /**
+     * @var \Magento\Sales\Model\Resource\EntitySnapshot|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $entitySnapshotMock;
+
+    /**
+     * @var \Magento\Framework\DB\Helper|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $helperMock;
+
+    /**
+     * @var \Magento\Framework\App\Config\ScopeConfigInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scopeConfigMock;
+
+    /**
+     * @var \Magento\Store\Model\StoreManagerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $storeManagerMock;
+
+    /**
+     * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $timezoneMock;
+
+    /**
+     * @var \Magento\Sales\Model\Order\Config|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $configMock;
+
+    /**
+     * @var \Magento\Sales\Model\Resource\Report\OrderFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $orderFactoryMock;
+
+    /**
+     * @var \Zend_Db_Adapter_Abstract|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $dbMock;
+
+    /**
+     * @var \Zend_Db_Select|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $selectMock;
+
+    /**
+     * @var \Magento\Framework\Model\Resource\Db\AbstractDb|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resourceMock;
+
+    /**
+     * {@inheritDoc}
+     */
+    protected function setUp()
+    {
+        $this->entityFactoryMock = $this->getMockBuilder('Magento\Framework\Data\Collection\EntityFactory')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->loggerMock = $this->getMockBuilder('Psr\Log\LoggerInterface')
+            ->getMock();
+        $this->fetchStrategyMock = $this->getMockBuilder('Magento\Framework\Data\Collection\Db\FetchStrategyInterface')
+            ->getMock();
+        $this->managerMock = $this->getMockBuilder('Magento\Framework\Event\ManagerInterface')
+            ->getMock();
+        $this->entitySnapshotMock = $this->getMockBuilder('Magento\Sales\Model\Resource\EntitySnapshot')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->helperMock = $this->getMockBuilder('Magento\Framework\DB\Helper')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->scopeConfigMock = $this->getMockBuilder('Magento\Framework\App\Config\ScopeConfigInterface')
+            ->getMock();
+        $this->storeManagerMock = $this->getMockBuilder('Magento\Store\Model\StoreManagerInterface')
+            ->getMock();
+        $this->timezoneMock = $this->getMockBuilder('Magento\Framework\Stdlib\DateTime\TimezoneInterface')
+            ->getMock();
+        $this->configMock = $this->getMockBuilder('Magento\Sales\Model\Order\Config')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->orderFactoryMock = $this->getMockBuilder('Magento\Sales\Model\Resource\Report\OrderFactory')
+            ->setMethods(['create'])
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->selectMock = $this->getMockBuilder('Zend_Db_Select')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->selectMock
+            ->expects($this->any())
+            ->method('columns')
+            ->willReturnSelf();
+        $this->selectMock
+            ->expects($this->any())
+            ->method('where')
+            ->willReturnSelf();
+        $this->selectMock
+            ->expects($this->any())
+            ->method('order')
+            ->willReturnSelf();
+        $this->selectMock
+            ->expects($this->any())
+            ->method('group')
+            ->willReturnSelf();
+        $this->selectMock
+            ->expects($this->any())
+            ->method('getPart')
+            ->willReturn([]);
+
+        $this->dbMock = $this->getMockForAbstractClass(
+            'Zend_Db_Adapter_Abstract',
+            [],
+            '',
+            false,
+            true,
+            true,
+            ['select', 'getIfNullSql', 'getDateFormatSql', 'prepareSqlCondition', 'getCheckSql']
+        );
+        $this->dbMock
+            ->expects($this->any())
+            ->method('select')
+            ->willReturn($this->selectMock);
+
+        $this->resourceMock = $this->getMockBuilder('Magento\Framework\Model\Resource\Db\AbstractDb')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->resourceMock
+            ->expects($this->once())
+            ->method('getReadConnection')
+            ->willReturn($this->dbMock);
+
+        $this->collection = new Collection(
+            $this->entityFactoryMock,
+            $this->loggerMock,
+            $this->fetchStrategyMock,
+            $this->managerMock,
+            $this->entitySnapshotMock,
+            $this->helperMock,
+            $this->scopeConfigMock,
+            $this->storeManagerMock,
+            $this->timezoneMock,
+            $this->configMock,
+            $this->orderFactoryMock,
+            null,
+            $this->resourceMock
+        );
+    }
+
+    /**
+     * @return void
+     */
+    public function testCheckIsLive()
+    {
+        $range = '';
+        $this->scopeConfigMock
+            ->expects($this->once())
+            ->method('getValue')
+            ->with(
+                'sales/dashboard/use_aggregated_data',
+                \Magento\Store\Model\ScopeInterface::SCOPE_STORE
+            );
+
+        $this->collection->checkIsLive($range);
+    }
+
+    /**
+     * @param int $useAggregatedData
+     * @param string $mainTable
+     * @param int $isFilter
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $getIfNullSqlResult
+     * @dataProvider useAggregatedDataDataProvider
+     * @return void
+     */
+    public function testPrepareSummary($useAggregatedData, $mainTable, $isFilter, $getIfNullSqlResult)
+    {
+        $range = '';
+        $customStart = 1;
+        $customEnd = 10;
+
+        $this->scopeConfigMock
+            ->expects($this->once())
+            ->method('getValue')
+            ->with(
+                'sales/dashboard/use_aggregated_data',
+                \Magento\Store\Model\ScopeInterface::SCOPE_STORE
+            )
+            ->willReturn($useAggregatedData);
+
+        $orderMock = $this->getMockBuilder('Magento\Sales\Model\Resource\Report\Order')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->orderFactoryMock
+            ->expects($this->any())
+            ->method('create')
+            ->willReturn($orderMock);
+
+        $this->resourceMock
+            ->expects($this->at(0))
+            ->method('getTable')
+            ->with($mainTable);
+
+        $this->dbMock
+            ->expects($getIfNullSqlResult)
+            ->method('getIfNullSql');
+
+        $this->collection->prepareSummary($range, $customStart, $customEnd, $isFilter);
+    }
+
+    /**
+     * @param int $range
+     * @param string $customStart
+     * @param string $customEnd
+     * @param string $expectedInterval
+     * @dataProvider firstPartDateRangeDataProvider
+     * @return void
+     */
+    public function testGetDateRangeFirstPart($range, $customStart, $customEnd, $expectedInterval)
+    {
+        $result = $this->collection->getDateRange($range, $customStart, $customEnd);
+        $interval = $result['to']->diff($result['from']);
+        $intervalResult = $interval->format('%y %m %d %h:%i:%s');
+        $this->assertEquals($expectedInterval, $intervalResult);
+    }
+
+    /**
+     * @param int $range
+     * @param string $customStart
+     * @param string $customEnd
+     * @param string $config
+     * @dataProvider secondPartDateRangeDataProvider
+     * @return void
+     */
+    public function testGetDateRangeSecondPart($range, $customStart, $customEnd, $config)
+    {
+        $this->scopeConfigMock
+            ->expects($this->once())
+            ->method('getValue')
+            ->with(
+                $config,
+                \Magento\Store\Model\ScopeInterface::SCOPE_STORE
+            )
+            ->willReturn(1);
+
+        $result = $this->collection->getDateRange($range, $customStart, $customEnd);
+        $this->assertEquals(3, count($result));
+    }
+
+    /**
+     * @return void
+     */
+    public function testGetDateRangeWithReturnObject()
+    {
+        $this->assertEquals(2, count($this->collection->getDateRange('7d', '', '', true)));
+        $this->assertEquals(3, count($this->collection->getDateRange('7d', '', '', false)));
+    }
+
+    /**
+     * @return void
+     */
+    public function testAddItemCountExpr()
+    {
+        $this->selectMock
+            ->expects($this->once())
+            ->method('columns')
+            ->with(['items_count' => 'total_item_count'], 'main_table');
+        $this->collection->addItemCountExpr();
+    }
+
+    /**
+     * @param int $isFilter
+     * @param int $useAggregatedData
+     * @param string $mainTable
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $getIfNullSqlResult
+     * @dataProvider totalsDataProvider
+     * @return void
+     */
+    public function testCalculateTotals($isFilter, $useAggregatedData, $mainTable, $getIfNullSqlResult)
+    {
+        $this->scopeConfigMock
+            ->expects($this->once())
+            ->method('getValue')
+            ->with(
+                'sales/dashboard/use_aggregated_data',
+                \Magento\Store\Model\ScopeInterface::SCOPE_STORE
+            )
+            ->willReturn($useAggregatedData);
+
+        $this->resourceMock
+            ->expects($this->at(0))
+            ->method('getTable')
+            ->with($mainTable);
+
+        $this->dbMock
+            ->expects($getIfNullSqlResult)
+            ->method('getIfNullSql');
+
+        $this->collection->checkIsLive('');
+        $this->collection->calculateTotals($isFilter);
+    }
+
+    /**
+     * @param int $isFilter
+     * @param string $useAggregatedData
+     * @param string $mainTable
+     * @dataProvider salesDataProvider
+     * @return void
+     */
+    public function testCalculateSales($isFilter, $useAggregatedData, $mainTable)
+    {
+        $this->scopeConfigMock
+            ->expects($this->once())
+            ->method('getValue')
+            ->with(
+                'sales/dashboard/use_aggregated_data',
+                \Magento\Store\Model\ScopeInterface::SCOPE_STORE
+            )
+            ->willReturn($useAggregatedData);
+
+        $storeMock = $this->getMockBuilder('Magento\Store\Model\Store')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->storeManagerMock
+            ->expects($this->any())
+            ->method('getStore')
+            ->willReturn($storeMock);
+
+        $this->resourceMock
+            ->expects($this->at(0))
+            ->method('getTable')
+            ->with($mainTable);
+
+        $this->collection->calculateSales($isFilter);
+    }
+
+    /**
+     * @return void
+     */
+    public function testSetDateRange()
+    {
+        $fromDate = '1';
+        $toDate = '2';
+
+        $this->dbMock
+            ->expects($this->at(0))
+            ->method('prepareSqlCondition')
+            ->with('"created_at"', ['from' => $fromDate, 'to' => $toDate]);
+
+        $this->collection->setDateRange($fromDate, $toDate);
+    }
+
+    /**
+     * @param array $storeIds
+     * @param array $parameters
+     * @dataProvider storesDataProvider
+     * @return void
+     */
+    public function testSetStoreIds($storeIds, $parameters)
+    {
+        $this->dbMock
+            ->expects($this->any())
+            ->method('getIfNullSql')
+            ->willReturn('text');
+
+        $this->selectMock
+            ->expects($this->once())
+            ->method('columns')
+            ->with($parameters)
+            ->willReturnSelf();
+
+        $this->collection->setStoreIds($storeIds);
+    }
+
+    /**
+     * @return array
+     */
+    public function useAggregatedDataDataProvider()
+    {
+        return [
+            [1, 'sales_order_aggregated_created', 0, $this->never()],
+            [0, 'sales_order', 0, $this->exactly(7)],
+            [0, 'sales_order', 1, $this->exactly(6)]
+        ];
+    }
+
+    /**
+     * @return array
+     */
+    public function firstPartDateRangeDataProvider()
+    {
+        return [
+            ['', '', '', '0 0 0 23:59:59'],
+            ['24h', '', '', '0 0 1 0:0:0'],
+            ['7d', '', '', '0 0 6 23:59:59']
+        ];
+    }
+
+    /**
+     * @return array
+     */
+    public function secondPartDateRangeDataProvider()
+    {
+        return [
+            ['1m', 1, 10, 'reports/dashboard/mtd_start'],
+            ['1y', 1, 10, 'reports/dashboard/ytd_start'],
+            ['2y', 1, 10, 'reports/dashboard/ytd_start']
+        ];
+    }
+
+    /**
+     * @return array
+     */
+    public function totalsDataProvider()
+    {
+        return [
+            [1, 1, 'sales_order_aggregated_created', $this->never()],
+            [0, 1, 'sales_order_aggregated_created', $this->never()],
+            [1, 0, 'sales_order', $this->exactly(10)],
+            [0, 0, 'sales_order', $this->exactly(11)]
+        ];
+    }
+
+    /**
+     * @return array
+     */
+    public function salesDataProvider()
+    {
+        return [
+            [1, 1, 'sales_order_aggregated_created'],
+            [0, 1, 'sales_order_aggregated_created'],
+            [1, 0, 'sales_order'],
+            [0, 0, 'sales_order']
+        ];
+    }
+
+    /**
+     * @return array
+     */
+    public function storesDataProvider()
+    {
+        $firstReturn = [
+            'subtotal' => 'SUM(main_table.base_subtotal * main_table.base_to_global_rate)',
+            'tax' => 'SUM(main_table.base_tax_amount * main_table.base_to_global_rate)',
+            'shipping' => 'SUM(main_table.base_shipping_amount * main_table.base_to_global_rate)',
+            'discount' => 'SUM(main_table.base_discount_amount * main_table.base_to_global_rate)',
+            'total' => 'SUM(main_table.base_grand_total * main_table.base_to_global_rate)',
+            'invoiced' => 'SUM(main_table.base_total_paid * main_table.base_to_global_rate)',
+            'refunded' => 'SUM(main_table.base_total_refunded * main_table.base_to_global_rate)',
+            'profit' => 'SUM(text *  main_table.base_to_global_rate) + SUM(text * main_table.base_to_global_rate) '.
+                '- SUM(text * main_table.base_to_global_rate) - SUM(text * main_table.base_to_global_rate) '.
+                '- SUM(text * main_table.base_to_global_rate)',
+        ];
+
+        $secondReturn = [
+            'subtotal' => 'SUM(main_table.base_subtotal)',
+            'tax' => 'SUM(main_table.base_tax_amount)',
+            'shipping' => 'SUM(main_table.base_shipping_amount)',
+            'discount' => 'SUM(main_table.base_discount_amount)',
+            'total' => 'SUM(main_table.base_grand_total)',
+            'invoiced' => 'SUM(main_table.base_total_paid)',
+            'refunded' => 'SUM(main_table.base_total_refunded)',
+            'profit' => 'SUM(text) + SUM(text) - SUM(text) - SUM(text) - SUM(text)',
+        ];
+
+        return [
+            [[], $firstReturn],
+            [[1], $secondReturn]
+        ];
+    }
+}
diff --git a/app/code/Magento/Reports/Test/Unit/Model/Resource/Report/Collection/AbstractCollectionTest.php b/app/code/Magento/Reports/Test/Unit/Model/Resource/Report/Collection/AbstractCollectionTest.php
index 96ad13c9b21868aa019927b72cee62eba019797b..ed5075a8bf70b7e4aeeb28e4e5eec0e08af3d08f 100644
--- a/app/code/Magento/Reports/Test/Unit/Model/Resource/Report/Collection/AbstractCollectionTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Model/Resource/Report/Collection/AbstractCollectionTest.php
@@ -4,16 +4,16 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Reports\Test\Unit\Model\Resource\Report\Collection;
 
 class AbstractCollectionTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var AbstractCollection
+     * Tested collection
+     *
+     * @var \Magento\Reports\Model\Resource\Report\Collection\AbstractCollection
      */
-    protected $_model;
+    protected $collection;
 
     protected function setUp()
     {
@@ -29,7 +29,7 @@ class AbstractCollectionTest extends \PHPUnit_Framework_TestCase
             ->getMockForAbstractClass();
         $resource->method('getReadConnection')->willReturn($connection);
 
-        $this->_model = new \Magento\Reports\Model\Resource\Report\Collection\AbstractCollection(
+        $this->collection = new \Magento\Reports\Model\Resource\Report\Collection\AbstractCollection(
             $entityFactory,
             $logger,
             $fetchStrategy,
@@ -41,15 +41,15 @@ class AbstractCollectionTest extends \PHPUnit_Framework_TestCase
 
     public function testIsSubtotalsGetDefault()
     {
-        $this->assertFalse($this->_model->isSubTotals());
+        $this->assertFalse($this->collection->isSubTotals());
     }
 
     public function testSetIsSubtotals()
     {
-        $this->_model->setIsSubTotals(true);
-        $this->assertTrue($this->_model->isSubTotals());
+        $this->collection->setIsSubTotals(true);
+        $this->assertTrue($this->collection->isSubTotals());
 
-        $this->_model->setIsSubTotals(false);
-        $this->assertFalse($this->_model->isSubTotals());
+        $this->collection->setIsSubTotals(false);
+        $this->assertFalse($this->collection->isSubTotals());
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Model/Resource/Report/CollectionTest.php b/app/code/Magento/Reports/Test/Unit/Model/Resource/Report/CollectionTest.php
index c1e8adeeee7d3c16a6bb8984939699ef12c1ef48..ca08b3b21761a51c314c60a315f89e1dc5d359e2 100644
--- a/app/code/Magento/Reports/Test/Unit/Model/Resource/Report/CollectionTest.php
+++ b/app/code/Magento/Reports/Test/Unit/Model/Resource/Report/CollectionTest.php
@@ -3,32 +3,196 @@
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
+
 namespace Magento\Reports\Test\Unit\Model\Resource\Report;
 
+use Magento\Reports\Model\Resource\Report\Collection;
+
 class CollectionTest extends \PHPUnit_Framework_TestCase
 {
     /**
      * @var \Magento\Reports\Model\Resource\Report\Collection
      */
-    protected $_model;
+    protected $collection;
 
+    /**
+     * @var \Magento\Framework\Data\Collection\EntityFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $entityFactoryMock;
+
+    /**
+     * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $timezoneMock;
+
+    /**
+     * @var \Magento\Reports\Model\Resource\Report\Collection\Factory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $factoryMock;
+
+    /**
+     * {@inheritDoc}
+     */
     protected function setUp()
     {
-        $helper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
-        $this->_model = $helper->getObject('Magento\Reports\Model\Resource\Report\Collection');
+        $this->entityFactoryMock = $this->getMockBuilder('Magento\Framework\Data\Collection\EntityFactory')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->timezoneMock = $this->getMockBuilder('Magento\Framework\Stdlib\DateTime\TimezoneInterface')
+            ->getMock();
+        $this->factoryMock = $this->getMockBuilder('Magento\Reports\Model\Resource\Report\Collection\Factory')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->timezoneMock
+            ->expects($this->any())
+            ->method('formatDateTime')
+            ->will($this->returnCallback([$this, 'formatDateTime']));
+
+        $this->collection = new Collection(
+            $this->entityFactoryMock,
+            $this->timezoneMock,
+            $this->factoryMock
+        );
     }
 
-    public function testGetIntervalsWithoutSpecifiedPeriod()
+    /**
+     * @return void
+     */
+    public function testGetPeriods()
     {
-        $startDate = new \DateTime('-3 day');
-        $endDate = new \DateTime('+3 day');
-        $this->_model->setInterval($startDate, $endDate);
+        $expectedArray = ['day' => 'Day', 'month' => 'Month', 'year' => 'Year'];
+        $this->assertEquals($expectedArray, $this->collection->getPeriods());
+    }
 
-        $this->assertEquals(0, $this->_model->getSize());
+    /**
+     * @return void
+     */
+    public function testGetStoreIds()
+    {
+        $storeIds = [1];
+        $this->assertEquals(null, $this->collection->getStoreIds());
+        $this->collection->setStoreIds($storeIds);
+        $this->assertEquals($storeIds, $this->collection->getStoreIds());
     }
 
-    public function testGetIntervalsWithoutSpecifiedInterval()
+    /**
+     * @param string $period
+     * @param \DateTime $fromDate
+     * @param \DateTime $toDate
+     * @param int $size
+     * @dataProvider intervalsDataProvider
+     * @return void
+     */
+    public function testGetSize($period, $fromDate, $toDate, $size)
     {
-        $this->assertEquals(0, $this->_model->getSize());
+        $this->collection->setPeriod($period);
+        $this->collection->setInterval($fromDate, $toDate);
+        $this->assertEquals($size, $this->collection->getSize());
+    }
+
+    /**
+     * @return void
+     */
+    public function testGetPageSize()
+    {
+        $pageSize = 1;
+        $this->assertEquals(null, $this->collection->getPageSize());
+        $this->collection->setPageSize($pageSize);
+        $this->assertEquals($pageSize, $this->collection->getPageSize());
+    }
+
+    /**
+     * @param string $period
+     * @param \DateTime $fromDate
+     * @param \DateTime $toDate
+     * @param int $size
+     * @dataProvider intervalsDataProvider
+     * @return void
+     */
+    public function testGetReports($period, $fromDate, $toDate, $size)
+    {
+        $this->collection->setPeriod($period);
+        $this->collection->setInterval($fromDate, $toDate);
+        $reports = $this->collection->getReports();
+        foreach ($reports as $report) {
+            $this->assertInstanceOf('\Magento\Framework\Object', $report);
+            $reportData = $report->getData();
+            $this->assertTrue(empty($reportData['children']));
+            $this->assertTrue($reportData['is_empty']);
+        }
+        $this->assertEquals($size, count($reports));
+    }
+
+    /**
+     * @return void
+     */
+    public function testLoadData()
+    {
+        $this->assertInstanceOf('\Magento\Reports\Model\Resource\Report\Collection', $this->collection->loadData());
+    }
+
+    /**
+     * @return array
+     */
+    public function intervalsDataProvider()
+    {
+        return [
+            [
+                '_period' => 'day',
+                '_from' => new \DateTime('-3 day'),
+                '_to' => new \DateTime('+3 day'),
+                'size' => 7
+            ],
+            [
+                '_period' => 'month',
+                '_from' => new \DateTime('2015-01-15 11:11:11'),
+                '_to' => new \DateTime('2015-01-25 11:11:11'),
+                'size' => 1
+            ],
+            [
+                '_period' => 'month',
+                '_from' => new \DateTime('2015-01-15 11:11:11'),
+                '_to' => new \DateTime('2015-02-25 11:11:11'),
+                'size' => 2
+            ],
+            [
+                '_period' => 'year',
+                '_from' => new \DateTime('2015-01-15 11:11:11'),
+                '_to' => new \DateTime('2015-01-25 11:11:11'),
+                'size' => 1
+            ],
+            [
+                '_period' => 'year',
+                '_from' => new \DateTime('2014-01-15 11:11:11'),
+                '_to' => new \DateTime('2015-01-25 11:11:11'),
+                'size' => 2
+            ],
+            [
+                '_period' => null,
+                '_from' => new \DateTime('-3 day'),
+                '_to' => new \DateTime('+3 day'),
+                'size' => 0
+            ]
+        ];
+    }
+
+    /**
+     * @return string
+     */
+    public function formatDateTime()
+    {
+        $args = func_get_args();
+
+        $dateStart = $args[0];
+
+        $formatter = new \IntlDateFormatter(
+            "en_US",
+            \IntlDateFormatter::SHORT,
+            \IntlDateFormatter::SHORT,
+            'America/Los_Angeles'
+        );
+
+        return $formatter->format($dateStart);
     }
 }
diff --git a/app/code/Magento/Reports/Test/Unit/Model/Resource/Report/Product/ViewedTest.php b/app/code/Magento/Reports/Test/Unit/Model/Resource/Report/Product/ViewedTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..b22e4f2bf044939cb3db933093d341afbf6318ac
--- /dev/null
+++ b/app/code/Magento/Reports/Test/Unit/Model/Resource/Report/Product/ViewedTest.php
@@ -0,0 +1,286 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Reports\Test\Unit\Model\Resource\Report\Product;
+
+use Magento\Reports\Model\Resource\Report\Product\Viewed;
+
+/**
+ * @SuppressWarnings(PHPMD.TooManyFields)
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
+class ViewedTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\Reports\Model\Resource\Report\Product\Viewed
+     */
+    protected $viewed;
+
+    /**
+     * @var \Magento\Framework\Model\Resource\Db\Context|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $contextMock;
+
+    /**
+     * @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $loggerMock;
+
+    /**
+     * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $timezoneMock;
+
+    /**
+     * @var \Magento\Reports\Model\FlagFactory|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $flagFactoryMock;
+
+    /**
+     * @var \Magento\Framework\Stdlib\DateTime|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $dateTimeMock;
+
+    /**
+     * @var \Magento\Framework\Stdlib\DateTime\Timezone\Validator|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $validatorMock;
+
+    /**
+     * @var \Magento\Catalog\Model\Resource\Product|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $productMock;
+
+    /**
+     * @var \Magento\Reports\Model\Resource\Helper|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $helperMock;
+
+    /**
+     * @var \Magento\Framework\DB\Adapter\AdapterInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $connectionMock;
+
+    /**
+     * @var \Magento\Framework\App\Resource|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resourceMock;
+
+    /**
+     * @var \Magento\Framework\DB\Select|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $selectMock;
+
+    /**
+     * @var \Zend_Db_Statement_Interface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $zendDbMock;
+
+    /**
+     * @var \Magento\Eav\Model\Entity\Attribute\AbstractAttribute|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $attributeMock;
+
+    /**
+     * @var \Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $backendMock;
+
+    /**
+     * @var \Magento\Reports\Model\Flag|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $flagMock;
+
+    /**
+     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
+     * @return void
+     */
+    protected function setUp()
+    {
+        $this->zendDbMock = $this->getMockBuilder('Zend_Db_Statement_Interface')->getMock();
+        $this->zendDbMock->expects($this->any())->method('fetchColumn')->willReturn([]);
+
+        $this->selectMock = $this->getMockBuilder('Magento\Framework\DB\Select')
+            ->disableOriginalConstructor()
+            ->setMethods(
+                [
+                    'from',
+                    'where',
+                    'joinInner',
+                    'joinLeft',
+                    'having',
+                    'useStraightJoin',
+                    'insertFromSelect',
+                    '__toString'
+                ]
+            )
+            ->getMock();
+        $this->selectMock->expects($this->any())->method('from')->willReturnSelf();
+        $this->selectMock->expects($this->any())->method('where')->willReturnSelf();
+        $this->selectMock->expects($this->any())->method('joinInner')->willReturnSelf();
+        $this->selectMock->expects($this->any())->method('joinLeft')->willReturnSelf();
+        $this->selectMock->expects($this->any())->method('having')->willReturnSelf();
+        $this->selectMock->expects($this->any())->method('useStraightJoin')->willReturnSelf();
+        $this->selectMock->expects($this->any())->method('insertFromSelect')->willReturnSelf();
+        $this->selectMock->expects($this->any())->method('__toString')->willReturn('string');
+
+        $this->connectionMock = $this->getMockBuilder('Magento\Framework\DB\Adapter\AdapterInterface')->getMock();
+        $this->connectionMock->expects($this->any())->method('select')->willReturn($this->selectMock);
+        $this->connectionMock->expects($this->any())->method('query')->willReturn($this->zendDbMock);
+
+        $this->resourceMock = $this->getMockBuilder('Magento\Framework\App\Resource')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->resourceMock->expects($this->any())->method('getConnection')->willReturn($this->connectionMock);
+        $this->resourceMock->expects($this->any())->method('getTableName')->will(
+            $this->returnCallback(
+                function ($arg) {
+                    return $arg;
+                }
+            )
+        );
+
+        $this->contextMock = $this->getMockBuilder('Magento\Framework\Model\Resource\Db\Context')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->contextMock->expects($this->any())->method('getResources')->willReturn($this->resourceMock);
+
+        $this->loggerMock = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock();
+
+        $dateTime = $this->getMockBuilder('DateTime')->getMock();
+
+        $this->timezoneMock = $this->getMockBuilder('Magento\Framework\Stdlib\DateTime\TimezoneInterface')->getMock();
+        $this->timezoneMock->expects($this->any())->method('scopeDate')->willReturn($dateTime);
+
+        $this->dateTimeMock = $this->getMockBuilder('Magento\Framework\Stdlib\DateTime')->getMock();
+
+        $this->flagMock = $this->getMockBuilder('Magento\Reports\Model\Flag')
+            ->disableOriginalConstructor()
+            ->setMethods(['setReportFlagCode', 'unsetData', 'loadSelf', 'setFlagData', 'setLastUpdate', 'save'])
+            ->getMock();
+
+        $this->flagFactoryMock = $this->getMockBuilder('Magento\Reports\Model\FlagFactory')
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+        $this->flagFactoryMock->expects($this->any())->method('create')->willReturn($this->flagMock);
+
+        $this->validatorMock = $this->getMockBuilder('Magento\Framework\Stdlib\DateTime\Timezone\Validator')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->backendMock = $this->getMockBuilder('Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->attributeMock = $this->getMockBuilder('Magento\Eav\Model\Entity\Attribute\AbstractAttribute')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->attributeMock->expects($this->any())->method('getBackend')->willReturn($this->backendMock);
+
+        $this->productMock = $this->getMockBuilder('Magento\Catalog\Model\Resource\Product')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->productMock->expects($this->any())->method('getAttribute')->willReturn($this->attributeMock);
+
+        $this->helperMock = $this->getMockBuilder('Magento\Reports\Model\Resource\Helper')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->viewed = new Viewed(
+            $this->contextMock,
+            $this->loggerMock,
+            $this->timezoneMock,
+            $this->flagFactoryMock,
+            $this->dateTimeMock,
+            $this->validatorMock,
+            $this->productMock,
+            $this->helperMock
+        );
+    }
+
+    /**
+     * @param mixed $from
+     * @param mixed $to
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $truncateCount
+     * @param \PHPUnit_Framework_MockObject_Matcher_InvokedCount $deleteCount
+     * @dataProvider intervalsDataProvider
+     * @return void
+     */
+    public function testAggregate($from, $to, $truncateCount, $deleteCount)
+    {
+        $this->connectionMock->expects($truncateCount)->method('truncateTable');
+        $this->connectionMock->expects($deleteCount)->method('delete');
+
+        $this->helperMock
+            ->expects($this->at(0))
+            ->method('updateReportRatingPos')
+            ->with(
+                $this->connectionMock,
+                'day',
+                'views_num',
+                'report_viewed_product_aggregated_daily',
+                'report_viewed_product_aggregated_daily'
+            )
+            ->willReturnSelf();
+        $this->helperMock
+            ->expects($this->at(1))
+            ->method('updateReportRatingPos')
+            ->with(
+                $this->connectionMock,
+                'month',
+                'views_num',
+                'report_viewed_product_aggregated_daily',
+                'report_viewed_product_aggregated_monthly'
+            )
+            ->willReturnSelf();
+        $this->helperMock
+            ->expects($this->at(2))
+            ->method('updateReportRatingPos')
+            ->with(
+                $this->connectionMock,
+                'year',
+                'views_num',
+                'report_viewed_product_aggregated_daily',
+                'report_viewed_product_aggregated_yearly'
+            )
+            ->willReturnSelf();
+
+        $this->flagMock->expects($this->once())->method('unsetData')->willReturnSelf();
+        $this->flagMock->expects($this->once())->method('loadSelf')->willReturnSelf();
+        $this->flagMock->expects($this->never())->method('setFlagData')->willReturnSelf();
+        $this->flagMock->expects($this->once())->method('setLastUpdate')->willReturnSelf();
+        $this->flagMock->expects($this->once())->method('save')->willReturnSelf();
+        $this->flagMock
+            ->expects($this->once())
+            ->method('setReportFlagCode')
+            ->with(\Magento\Reports\Model\Flag::REPORT_PRODUCT_VIEWED_FLAG_CODE)
+            ->willReturnSelf();
+
+        $this->viewed->aggregate($from, $to);
+    }
+
+    /**
+     * @return array
+     */
+    public function intervalsDataProvider()
+    {
+        return [
+            [
+                'from' => new \DateTime('+3 day'),
+                'to' => new \DateTime('-3 day'),
+                'truncateCount' => $this->never(),
+                'deleteCount' => $this->once()
+            ],
+            [
+                'from' => null,
+                'to' => null,
+                'truncateCount' => $this->once(),
+                'deleteCount' => $this->never()
+            ]
+        ];
+    }
+}
diff --git a/app/code/Magento/Reports/composer.json b/app/code/Magento/Reports/composer.json
index 099550f07e1ea5ec1812cf7466c1f75732a52e60..89ac5cea8d624dd0d8c836196cda54c80b9daa21 100644
--- a/app/code/Magento/Reports/composer.json
+++ b/app/code/Magento/Reports/composer.json
@@ -3,28 +3,28 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-cms": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-widget": "0.74.0-beta13",
-        "magento/module-log": "0.74.0-beta13",
-        "magento/module-wishlist": "0.74.0-beta13",
-        "magento/module-review": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-downloadable": "0.74.0-beta13",
-        "magento/module-sales-rule": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-cms": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-widget": "0.74.0-beta14",
+        "magento/module-log": "0.74.0-beta14",
+        "magento/module-wishlist": "0.74.0-beta14",
+        "magento/module-review": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-downloadable": "0.74.0-beta14",
+        "magento/module-sales-rule": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/RequireJs/composer.json b/app/code/Magento/RequireJs/composer.json
index c921a04022f146ff8fe438985fd98d93ef9c3fbe..f36ff58438ce0c1b827ee011308bdf0710623bf6 100644
--- a/app/code/Magento/RequireJs/composer.json
+++ b/app/code/Magento/RequireJs/composer.json
@@ -3,11 +3,11 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/framework": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Review/Model/Review.php b/app/code/Magento/Review/Model/Review.php
index b68d7fc1d128d48c7e624123ceb13a6fc7cd6584..ec1d84b348e0b880a2b46e05827654c7dbc9b176 100644
--- a/app/code/Magento/Review/Model/Review.php
+++ b/app/code/Magento/Review/Model/Review.php
@@ -6,6 +6,7 @@
 namespace Magento\Review\Model;
 
 use Magento\Catalog\Model\Product;
+use Magento\Framework\Object\IdentityInterface;
 use Magento\Review\Model\Resource\Review\Product\Collection as ProductCollection;
 use Magento\Review\Model\Resource\Review\Status\Collection as StatusCollection;
 
@@ -21,7 +22,7 @@ use Magento\Review\Model\Resource\Review\Status\Collection as StatusCollection;
  * @method \Magento\Review\Model\Review setStatusId(int $value)
  * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
-class Review extends \Magento\Framework\Model\AbstractModel
+class Review extends \Magento\Framework\Model\AbstractModel implements IdentityInterface
 {
     /**
      * Event prefix for observer
@@ -359,4 +360,18 @@ class Review extends \Magento\Framework\Model\AbstractModel
     {
         return $this->getResource()->getEntityIdByCode($entityCode);
     }
+
+    /**
+     * Return unique ID(s) for each object in system
+     *
+     * @return array
+     */
+    public function getIdentities()
+    {
+        $tags = [];
+        if ($this->isApproved() && $this->getEntityPkValue()) {
+            $tags[] = Product::CACHE_TAG . '_' . $this->getEntityPkValue();
+        }
+        return $tags;
+    }
 }
diff --git a/app/code/Magento/Review/Test/Unit/Model/ReviewTest.php b/app/code/Magento/Review/Test/Unit/Model/ReviewTest.php
index e96842c2cc28601dd771445269d924f42cd51d01..4be052abd03baebb2d5125ab1662c30f99acd5bc 100644
--- a/app/code/Magento/Review/Test/Unit/Model/ReviewTest.php
+++ b/app/code/Magento/Review/Test/Unit/Model/ReviewTest.php
@@ -6,6 +6,7 @@
 
 namespace Magento\Review\Test\Unit\Model;
 
+use \Magento\Catalog\Model\Product;
 use \Magento\Review\Model\Review;
 
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
@@ -270,4 +271,15 @@ class ReviewTest extends \PHPUnit_Framework_TestCase
             ->will($this->returnValue($result));
         $this->assertSame($result, $this->review->getEntityIdByCode($entityCode));
     }
+
+    public function testGetIdentities()
+    {
+        $this->review->setStatusId(Review::STATUS_PENDING);
+        $this->assertEmpty($this->review->getIdentities());
+
+        $productId = 1;
+        $this->review->setEntityPkValue($productId);
+        $this->review->setStatusId(Review::STATUS_APPROVED);
+        $this->assertEquals([Product::CACHE_TAG . '_' . $productId], $this->review->getIdentities());
+    }
 }
diff --git a/app/code/Magento/Review/composer.json b/app/code/Magento/Review/composer.json
index 45201df67e97c0cfec3850649adf2b8fdcfbfa74..b8bb07beb0f6fc1ba9a59a47a57b2329e504a074 100644
--- a/app/code/Magento/Review/composer.json
+++ b/app/code/Magento/Review/composer.json
@@ -3,22 +3,22 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-newsletter": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-ui": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-newsletter": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-ui": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "suggest": {
-        "magento/module-cookie": "0.74.0-beta13"
+        "magento/module-cookie": "0.74.0-beta14"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Review/view/frontend/layout/review_product_listajax.xml b/app/code/Magento/Review/view/frontend/layout/review_product_listajax.xml
index 3af29a203ff8ff030ae04b5fa2dc651de88f9a5b..0f950489f8aae9dc1c8c8405a6c1c7a5adbf076a 100644
--- a/app/code/Magento/Review/view/frontend/layout/review_product_listajax.xml
+++ b/app/code/Magento/Review/view/frontend/layout/review_product_listajax.xml
@@ -7,7 +7,7 @@
 -->
 <layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/layout_generic.xsd">
     <container name="root">
-        <block class="Magento\Review\Block\Product\View\ListView" name="product.info.product_additional_data" as="product_additional_data" template="product/view/list.phtml"/>
+        <block class="Magento\Review\Block\Product\View\ListView" name="product.info.product_additional_data" as="product_additional_data" template="product/view/list.phtml" />
         <block class="Magento\Theme\Block\Html\Pager" name="product_review_list.toolbar">
             <arguments>
                 <argument name="show_per_page" xsi:type="boolean">false</argument>
diff --git a/app/code/Magento/Rss/composer.json b/app/code/Magento/Rss/composer.json
index 9e085b9677094ac04fb063a23147c319500255be..ca4231a1f2e5bd6127a2792c31677aca56da011a 100644
--- a/app/code/Magento/Rss/composer.json
+++ b/app/code/Magento/Rss/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Rule/Model/AbstractModel.php b/app/code/Magento/Rule/Model/AbstractModel.php
index 6f4cebc0536d3f373f0da1b4658ded5c3263ea67..375c4180106991ac0a47ee2b5c069d84c11dd2b9 100644
--- a/app/code/Magento/Rule/Model/AbstractModel.php
+++ b/app/code/Magento/Rule/Model/AbstractModel.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 /**
  * Abstract Rule entity data model
  */
@@ -63,16 +61,22 @@ abstract class AbstractModel extends \Magento\Framework\Model\AbstractModel
     abstract public function getActionsInstance();
 
     /**
+     * Form factory
+     *
      * @var \Magento\Framework\Data\FormFactory
      */
     protected $_formFactory;
 
     /**
+     * Timezone instance
+     *
      * @var \Magento\Framework\Stdlib\DateTime\TimezoneInterface
      */
     protected $_localeDate;
 
     /**
+     * Constructor
+     *
      * @param \Magento\Framework\Model\Context $context
      * @param \Magento\Framework\Registry $registry
      * @param \Magento\Framework\Data\FormFactory $formFactory
@@ -233,7 +237,7 @@ abstract class AbstractModel extends \Magento\Framework\Model\AbstractModel
      */
     protected function _resetConditions($conditions = null)
     {
-        if (is_null($conditions)) {
+        if (null === $conditions) {
             $conditions = $this->getConditionsInstance();
         }
         $conditions->setRule($this)->setId('1')->setPrefix('conditions');
@@ -250,7 +254,7 @@ abstract class AbstractModel extends \Magento\Framework\Model\AbstractModel
      */
     protected function _resetActions($actions = null)
     {
-        if (is_null($actions)) {
+        if (null === $actions) {
             $actions = $this->getActionsInstance();
         }
         $actions->setRule($this)->setId('1')->setPrefix('actions');
@@ -390,6 +394,7 @@ abstract class AbstractModel extends \Magento\Framework\Model\AbstractModel
      * Check availability to delete rule
      *
      * @return bool
+     * @codeCoverageIgnore
      */
     public function isDeleteable()
     {
@@ -401,6 +406,7 @@ abstract class AbstractModel extends \Magento\Framework\Model\AbstractModel
      *
      * @param bool $value
      * @return $this
+     * @codeCoverageIgnore
      */
     public function setIsDeleteable($value)
     {
@@ -412,6 +418,7 @@ abstract class AbstractModel extends \Magento\Framework\Model\AbstractModel
      * Check if rule is readonly
      *
      * @return bool
+     * @codeCoverageIgnore
      */
     public function isReadonly()
     {
@@ -423,6 +430,7 @@ abstract class AbstractModel extends \Magento\Framework\Model\AbstractModel
      *
      * @param bool $value
      * @return $this
+     * @codeCoverageIgnore
      */
     public function setIsReadonly($value)
     {
diff --git a/app/code/Magento/Rule/Test/Unit/Model/Condition/Product/AbstractProductTest.php b/app/code/Magento/Rule/Test/Unit/Model/Condition/Product/AbstractProductTest.php
index 32d0b012c88418f6e18656975357f3d17a9461f1..7c628927f6c15426dba5042fa02316cb428864bd 100644
--- a/app/code/Magento/Rule/Test/Unit/Model/Condition/Product/AbstractProductTest.php
+++ b/app/code/Magento/Rule/Test/Unit/Model/Condition/Product/AbstractProductTest.php
@@ -4,8 +4,6 @@
  * See COPYING.txt for license details.
  */
 
-// @codingStandardsIgnoreFile
-
 namespace Magento\Rule\Test\Unit\Model\Condition\Product;
 
 use ReflectionMethod;
@@ -14,24 +12,30 @@ use ReflectionProperty;
 class AbstractProductTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var AbstractProduct|\PHPUnit_Framework_MockObject_MockObject
+     * Tested condition
+     *
+     * @var \Magento\Rule\Model\Condition\Product\AbstractProduct|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_condition;
 
     /**
+     * Framework object
+     *
      * @var \Magento\Framework\Object|\PHPUnit_Framework_MockObject_MockObject
      */
     protected $_object;
 
     /**
+     * Reflection for Magento\Rule\Model\Condition\Product\AbstractProduct::$_entityAttributeValues
+     *
      * @var \ReflectionProperty
-     * 'Magento\Rule\Model\Condition\Product\AbstractProduct::_entityAttributeValues'
      */
     protected $_entityAttributeValuesProperty;
 
     /**
+     * Reflection for Magento\Rule\Model\Condition\Product\AbstractProduct::$_config
+     *
      * @var \ReflectionProperty
-     * 'Magento\Rule\Model\Condition\Product\AbstractProduct::_config'
      */
     protected $_configProperty;
 
@@ -159,8 +163,10 @@ class AbstractProductTest extends \PHPUnit_Framework_TestCase
             $this->_condition,
             $this->getMock('Magento\Eav\Model\Config', [], [], '', false)
         );
-        $this->_entityAttributeValuesProperty->setValue($this->_condition,
-            $this->getMock('Magento\Eav\Model\Config', [], [], '', false));
+        $this->_entityAttributeValuesProperty->setValue(
+            $this->_condition,
+            $this->getMock('Magento\Eav\Model\Config', [], [], '', false)
+        );
 
         $attribute = new \Magento\Framework\Object();
         $attribute->setBackendType('datetime');
@@ -306,7 +312,7 @@ class AbstractProductTest extends \PHPUnit_Framework_TestCase
             ->disableOriginalConstructor()
             ->getMock();
         $attrObjectSourceMock
-            ->expects(is_null($expectedAttrObjSourceAllOptionsParam) ? $this->never() : $this->once())
+            ->expects((null === $expectedAttrObjSourceAllOptionsParam) ? $this->never() : $this->once())
             ->method('getAllOptions')
             ->with($expectedAttrObjSourceAllOptionsParam)
             ->willReturn($attrObjectSourceAllOptionsValue);
@@ -317,7 +323,7 @@ class AbstractProductTest extends \PHPUnit_Framework_TestCase
             ->getMock();
         $attributeObjectMock->method('usesSource')->willReturn(true);
         $attributeObjectMock
-            ->expects(is_null($attributeObjectFrontendInput) ? $this->never() : $this->once())
+            ->expects((null === $attributeObjectFrontendInput) ? $this->never() : $this->once())
             ->method('getFrontendInput')
             ->willReturn($attributeObjectFrontendInput);
         $attributeObjectMock->method('getSource')->willReturn($attrObjectSourceMock);
@@ -345,12 +351,14 @@ class AbstractProductTest extends \PHPUnit_Framework_TestCase
         $attrSetCollectionValueMock->method('setEntityTypeFilter')->will($this->returnSelf());
         $attrSetCollectionValueMock->method('load')->will($this->returnSelf());
         $attrSetCollectionValueMock
-            ->expects(is_null($attrSetCollectionOptionsArray) ? $this->never() : $this->once())
+            ->expects((null === $attrSetCollectionOptionsArray) ? $this->never() : $this->once())
             ->method('toOptionArray')
             ->willReturn($attrSetCollectionOptionsArray);
 
-        $attrSetCollectionProperty =
-            new ReflectionProperty('Magento\Rule\Model\Condition\Product\AbstractProduct', '_attrSetCollection');
+        $attrSetCollectionProperty = new ReflectionProperty(
+            'Magento\Rule\Model\Condition\Product\AbstractProduct',
+            '_attrSetCollection'
+        );
         $attrSetCollectionProperty->setAccessible(true);
         $attrSetCollectionProperty->setValue($this->_condition, $attrSetCollectionValueMock);
 
@@ -366,6 +374,8 @@ class AbstractProductTest extends \PHPUnit_Framework_TestCase
     }
 
     /**
+     * Data provider for prepare value options
+     *
      * @return array
      * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
diff --git a/app/code/Magento/Rule/composer.json b/app/code/Magento/Rule/composer.json
index d6e66b999c893133d222d72c447801d2b2bff85e..5d0a656ebc0bb6db836a97268ddecc99906ad595 100644
--- a/app/code/Magento/Rule/composer.json
+++ b/app/code/Magento/Rule/composer.json
@@ -3,16 +3,16 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Sales/Test/Unit/Model/Email/TemplateTest.php b/app/code/Magento/Sales/Test/Unit/Model/Email/TemplateTest.php
index 37c29c2be223a85d35eb22fa196c757480c062ed..b4f0e627cebf03296c4ce22b62758b0a0e40cd9e 100644
--- a/app/code/Magento/Sales/Test/Unit/Model/Email/TemplateTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Model/Email/TemplateTest.php
@@ -38,20 +38,6 @@ class TemplateTest extends \PHPUnit_Framework_TestCase
 
         $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
 
-        $objectManagerMock = $this->getMock('Magento\Framework\ObjectManagerInterface');
-        $objectManagerMock->expects($this->once())
-            ->method('get')
-            ->with('Magento\Email\Model\Resource\Template')
-            ->will($this->returnValue($objectManagerHelper->getObject('Magento\Email\Model\Resource\Template')));
-
-        try {
-            $this->objectManagerBackup = \Magento\Framework\App\ObjectManager::getInstance();
-        } catch (\RuntimeException $e) {
-            $this->objectManagerBackup = \Magento\Framework\App\Bootstrap::createObjectManagerFactory(BP, $_SERVER)
-                ->create($_SERVER);
-        }
-        \Magento\Framework\App\ObjectManager::setInstance($objectManagerMock);
-
         $this->template = $objectManagerHelper->getObject(
             'Magento\Sales\Model\Email\Template',
             [
@@ -60,12 +46,6 @@ class TemplateTest extends \PHPUnit_Framework_TestCase
         );
     }
 
-    protected function tearDown()
-    {
-        parent::tearDown();
-        \Magento\Framework\App\ObjectManager::setInstance($this->objectManagerBackup);
-    }
-
     public function testIncludeTemplate()
     {
         $this->mockViewFilesystem->expects($this->once())
diff --git a/app/code/Magento/Sales/composer.json b/app/code/Magento/Sales/composer.json
index 7f07de89e05f1b012a4d782d2828f7f86dd127eb..e9850b28b5ebbefd68476b14a55a1ea6f8bb63af 100644
--- a/app/code/Magento/Sales/composer.json
+++ b/app/code/Magento/Sales/composer.json
@@ -3,35 +3,35 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-authorization": "0.74.0-beta13",
-        "magento/module-payment": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/module-sales-rule": "0.74.0-beta13",
-        "magento/module-sales-sequence": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-widget": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-gift-message": "0.74.0-beta13",
-        "magento/module-reports": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-wishlist": "0.74.0-beta13",
-        "magento/module-email": "0.74.0-beta13",
-        "magento/module-shipping": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-ui": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-authorization": "0.74.0-beta14",
+        "magento/module-payment": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/module-sales-rule": "0.74.0-beta14",
+        "magento/module-sales-sequence": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-widget": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-gift-message": "0.74.0-beta14",
+        "magento/module-reports": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-wishlist": "0.74.0-beta14",
+        "magento/module-email": "0.74.0-beta14",
+        "magento/module-shipping": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-ui": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/SalesRule/composer.json b/app/code/Magento/SalesRule/composer.json
index 73ca3c6e1d876da3377b77cc31d0a0a61b398a5a..e842b73e7b207cacc55274b6f11cb78df5d008ab 100644
--- a/app/code/Magento/SalesRule/composer.json
+++ b/app/code/Magento/SalesRule/composer.json
@@ -3,26 +3,26 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-rule": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-shipping": "0.74.0-beta13",
-        "magento/module-payment": "0.74.0-beta13",
-        "magento/module-reports": "0.74.0-beta13",
-        "magento/module-catalog-rule": "0.74.0-beta13",
-        "magento/module-widget": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-rule": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-shipping": "0.74.0-beta14",
+        "magento/module-payment": "0.74.0-beta14",
+        "magento/module-reports": "0.74.0-beta14",
+        "magento/module-catalog-rule": "0.74.0-beta14",
+        "magento/module-widget": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/SalesSequence/composer.json b/app/code/Magento/SalesSequence/composer.json
index 15ce9855deb2e50bac1d6261380f653585182cfc..825a8e16713a027df4ea0dd1da8d58e2af16c7ea 100644
--- a/app/code/Magento/SalesSequence/composer.json
+++ b/app/code/Magento/SalesSequence/composer.json
@@ -3,11 +3,11 @@
   "description": "N/A",
   "require": {
     "php": "~5.5.0|~5.6.0",
-    "magento/framework": "0.74.0-beta13",
+    "magento/framework": "0.74.0-beta14",
     "magento/magento-composer-installer": "*"
   },
   "type": "magento2-module",
-  "version": "0.74.0-beta13",
+  "version": "0.74.0-beta14",
   "license": [
     "OSL-3.0",
     "AFL-3.0"
diff --git a/app/code/Magento/Search/composer.json b/app/code/Magento/Search/composer.json
index d0eea2c18d8d8791e84e4b2b396f714ccedd2388..98e1ce97eda1a03ced7574846f0a8d0d3efc2722 100644
--- a/app/code/Magento/Search/composer.json
+++ b/app/code/Magento/Search/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-catalog-search": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-reports": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-catalog-search": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-reports": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/SendFriend/composer.json b/app/code/Magento/SendFriend/composer.json
index f8e2a4f687541841f0942de6a0805271b6dac339..b6712222a0c651e7a30e4186b029c40789fd30ae 100644
--- a/app/code/Magento/SendFriend/composer.json
+++ b/app/code/Magento/SendFriend/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Shipping/composer.json b/app/code/Magento/Shipping/composer.json
index 1960a285405d0b1fb9159a8cbb6905f4b27b57e8..26e8e039f88d70c2292afe9ffeae4601a4f1ea4a 100644
--- a/app/code/Magento/Shipping/composer.json
+++ b/app/code/Magento/Shipping/composer.json
@@ -3,27 +3,27 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-contact": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-payment": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-contact": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-payment": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "ext-gd": "*",
         "magento/magento-composer-installer": "*"
     },
     "suggest": {
-        "magento/module-fedex": "0.74.0-beta13",
-        "magento/module-ups": "0.74.0-beta13"
+        "magento/module-fedex": "0.74.0-beta14",
+        "magento/module-ups": "0.74.0-beta14"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Sitemap/composer.json b/app/code/Magento/Sitemap/composer.json
index 7c7137e8db82477d6c3ded19a28dd6969b68fc42..6e9cd7ca7d1d8f9a280952fcccdd76c9b45a844c 100644
--- a/app/code/Magento/Sitemap/composer.json
+++ b/app/code/Magento/Sitemap/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-cms": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-catalog-url-rewrite": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-cms": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-catalog-url-rewrite": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Store/composer.json b/app/code/Magento/Store/composer.json
index e8a224d7a443669cfe35054a4ebb9af15f6138fe..3bb80c7c21ec85900b2c9c7ec5b15ce3a6c99176 100644
--- a/app/code/Magento/Store/composer.json
+++ b/app/code/Magento/Store/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-ui": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-ui": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Tax/composer.json b/app/code/Magento/Tax/composer.json
index 3ef7c5e73fc4cd09ad9f1ff4cca1b0b5f56ed1d6..b2d4d6faad79318556340971f6dd6d832e89af6c 100644
--- a/app/code/Magento/Tax/composer.json
+++ b/app/code/Magento/Tax/composer.json
@@ -3,24 +3,24 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-shipping": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-reports": "0.74.0-beta13",
-        "magento/module-page-cache": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-shipping": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-reports": "0.74.0-beta14",
+        "magento/module-page-cache": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/TaxImportExport/composer.json b/app/code/Magento/TaxImportExport/composer.json
index 0cebf5d7d3360dba867fee97e90b3a9d2336ad91..2642b8587938955bd7b651a9485560794002064f 100644
--- a/app/code/Magento/TaxImportExport/composer.json
+++ b/app/code/Magento/TaxImportExport/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Theme/composer.json b/app/code/Magento/Theme/composer.json
index 7e2129cc460bb0145f4cf7dacf63bb226e4bb049..9fbb0bd754d2cc08791507e25ca35d5d013776d9 100644
--- a/app/code/Magento/Theme/composer.json
+++ b/app/code/Magento/Theme/composer.json
@@ -3,23 +3,23 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-cms": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-widget": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/module-media-storage": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-require-js": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-cms": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-widget": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/module-media-storage": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-require-js": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "suggest": {
-        "magento/module-translation": "0.74.0-beta13"
+        "magento/module-translation": "0.74.0-beta14"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Translation/composer.json b/app/code/Magento/Translation/composer.json
index 05ce2874e8b195cefb7355cb2208a5ca59b6208d..7de19b36d8a93d4c6640246a5098e529c27e1860 100644
--- a/app/code/Magento/Translation/composer.json
+++ b/app/code/Magento/Translation/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-developer": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-developer": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Ui/Component/Control/ActionPool.php b/app/code/Magento/Ui/Component/Control/ActionPool.php
index 74f327fec1531089563d850815d93ad1bdbfc351..6ccb8393648dc0337a7acc66d6f4022acfbce878 100644
--- a/app/code/Magento/Ui/Component/Control/ActionPool.php
+++ b/app/code/Magento/Ui/Component/Control/ActionPool.php
@@ -128,7 +128,7 @@ class ActionPool implements ActionPoolInterface
     {
         $container = $this->context->getPageLayout()->createBlock(
             'Magento\Ui\Component\Control\Container',
-            'container-' . $key,
+            'container-' . $view->getName() . '-' . $key,
             [
                 'data' => [
                     'button_item' => $this->items[$key],
diff --git a/app/code/Magento/Ui/Test/Unit/Component/Control/ActionPoolTest.php b/app/code/Magento/Ui/Test/Unit/Component/Control/ActionPoolTest.php
index eaae007216af0aa226ff98336e22c727190102a0..8d62c797c2f061a82c07d05bfae258a47a1922ef 100644
--- a/app/code/Magento/Ui/Test/Unit/Component/Control/ActionPoolTest.php
+++ b/app/code/Magento/Ui/Test/Unit/Component/Control/ActionPoolTest.php
@@ -99,6 +99,7 @@ class ActionPoolTest extends \PHPUnit_Framework_TestCase
     public function testAdd()
     {
         $data = ['id' => 'id'];
+        $this->uiComponentInterfaceMock->expects($this->once())->method('getName')->willReturn('name');
         $this->itemFactoryMock->expects($this->any())->method('create')->willReturn($this->items[$this->key]);
         $this->items[$this->key]->expects($this->any())->method('setData')->with($data)->willReturnSelf();
 
@@ -114,7 +115,7 @@ class ActionPoolTest extends \PHPUnit_Framework_TestCase
             ->method('createBlock')
             ->with(
                 'Magento\Ui\Component\Control\Container',
-                'container-' . $this->key,
+                'container-name-' . $this->key,
                 [
                     'data' => [
                         'button_item' => $this->items[$this->key],
diff --git a/app/code/Magento/Ui/composer.json b/app/code/Magento/Ui/composer.json
index edb3157e7aab2160a922d9f80b68fe3674e946ed..35d8c625925fde44598e7b8524c3e574d51f309e 100644
--- a/app/code/Magento/Ui/composer.json
+++ b/app/code/Magento/Ui/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-authorization": "0.74.0-beta13",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-authorization": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Ups/composer.json b/app/code/Magento/Ups/composer.json
index 29ec2510c07e79abb5e21f664e90c98db3554609..871fbcdc12c1d2a6a3055ac20e0b5370575a5489 100644
--- a/app/code/Magento/Ups/composer.json
+++ b/app/code/Magento/Ups/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-shipping": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-shipping": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/UrlRewrite/composer.json b/app/code/Magento/UrlRewrite/composer.json
index 91f18fbea4728a982a17dca4cd56a0ac9f5ab88e..24a2772e11a3c6bf97a534c2fa44c09e672e3d6d 100644
--- a/app/code/Magento/UrlRewrite/composer.json
+++ b/app/code/Magento/UrlRewrite/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-catalog-url-rewrite": "0.74.0-beta13",
-        "magento/module-cms": "0.74.0-beta13",
-        "magento/module-cms-url-rewrite": "0.74.0-beta13",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-catalog-url-rewrite": "0.74.0-beta14",
+        "magento/module-cms": "0.74.0-beta14",
+        "magento/module-cms-url-rewrite": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/User/composer.json b/app/code/Magento/User/composer.json
index 82c4b5609f4d62e0499e75a6a4f4147da21ebdf6..b16f88f04a4c5b9cec2efb70b688923490d10226 100644
--- a/app/code/Magento/User/composer.json
+++ b/app/code/Magento/User/composer.json
@@ -3,15 +3,15 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-authorization": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-integration": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-authorization": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-integration": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Usps/composer.json b/app/code/Magento/Usps/composer.json
index 625a904edd642d843d9d02ec910e2616a242dd5f..59b75138b5be4d8cb021390eec32bc8747c00f8e 100644
--- a/app/code/Magento/Usps/composer.json
+++ b/app/code/Magento/Usps/composer.json
@@ -3,20 +3,20 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-shipping": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/module-config": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-shipping": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/module-config": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "lib-libxml": "*",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Variable/composer.json b/app/code/Magento/Variable/composer.json
index b61f8fe802c68ffa61e53966cb117e1f439a4436..58eb8dbd4b6c0be1e41c82dd72972cde940dfe8c 100644
--- a/app/code/Magento/Variable/composer.json
+++ b/app/code/Magento/Variable/composer.json
@@ -3,14 +3,14 @@
     "description": "N/A",
     "require": {
         "php": "~5.4.11|~5.5.0|~5.6.0",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-email": "0.74.0-beta13",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-email": "0.74.0-beta14",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Version/composer.json b/app/code/Magento/Version/composer.json
index 4a3025af599865f283ba05b22341148d4412162e..07feda54cfd8fcfa810c79f28b9775b8abd4951b 100644
--- a/app/code/Magento/Version/composer.json
+++ b/app/code/Magento/Version/composer.json
@@ -3,11 +3,11 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/framework": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Webapi/composer.json b/app/code/Magento/Webapi/composer.json
index 94d5b769e85526178ded1e4a57d0488acccca8b6..7c018de1b3b051d135d1fe69741e44a94185723c 100644
--- a/app/code/Magento/Webapi/composer.json
+++ b/app/code/Magento/Webapi/composer.json
@@ -3,18 +3,18 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-authorization": "0.74.0-beta13",
-        "magento/module-integration": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-authorization": "0.74.0-beta14",
+        "magento/module-integration": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "suggest": {
-        "magento/module-user": "0.74.0-beta13"
+        "magento/module-user": "0.74.0-beta14"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Weee/composer.json b/app/code/Magento/Weee/composer.json
index ba0a615bab17ec2d4cd8221715dd418b87785220..7102e797d034a46b70b9724af86c42669e9a8d1b 100644
--- a/app/code/Magento/Weee/composer.json
+++ b/app/code/Magento/Weee/composer.json
@@ -3,21 +3,21 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-tax": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-directory": "0.74.0-beta13",
-        "magento/module-eav": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-quote": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-tax": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-directory": "0.74.0-beta14",
+        "magento/module-eav": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-quote": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Widget/composer.json b/app/code/Magento/Widget/composer.json
index cfecd20e99f1b7ad876322a228f0868b448e1c05..53ed15c7b6fb5644a930350c0ef7825766161645 100644
--- a/app/code/Magento/Widget/composer.json
+++ b/app/code/Magento/Widget/composer.json
@@ -3,17 +3,17 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-cms": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-variable": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-cms": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-variable": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Wishlist/Block/Cart/Item/Renderer/Actions/MoveToWishlist.php b/app/code/Magento/Wishlist/Block/Cart/Item/Renderer/Actions/MoveToWishlist.php
new file mode 100644
index 0000000000000000000000000000000000000000..790280fe2d76c33de1c57a74a2850728f86ae244
--- /dev/null
+++ b/app/code/Magento/Wishlist/Block/Cart/Item/Renderer/Actions/MoveToWishlist.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Wishlist\Block\Cart\Item\Renderer\Actions;
+
+use Magento\Checkout\Block\Cart\Item\Renderer\Actions\Generic;
+use Magento\Framework\View\Element\Template;
+use Magento\Wishlist\Helper\Data;
+
+class MoveToWishlist extends Generic
+{
+    /**
+     * @var Data
+     */
+    protected $wishlistHelper;
+
+    /**
+     * @param Template\Context $context
+     * @param Data $wishlistHelper
+     * @param array $data
+     */
+    public function __construct(
+        Template\Context $context,
+        Data $wishlistHelper,
+        array $data = []
+    ) {
+        $this->wishlistHelper = $wishlistHelper;
+        parent::__construct($context, $data);
+    }
+
+    /**
+     * Check whether "add to wishlist" button is allowed in cart
+     *
+     * @return bool
+     */
+    public function isAllowInCart()
+    {
+        return $this->wishlistHelper->isAllowInCart();
+    }
+
+    /**
+     * Get JSON POST params for moving from cart
+     *
+     * @return string
+     */
+    public function getMoveFromCartParams()
+    {
+        return $this->wishlistHelper->getMoveFromCartParams($this->getItem()->getId());
+    }
+}
diff --git a/app/code/Magento/Wishlist/Test/Unit/Block/Cart/Item/Renderer/Actions/MoveToWishlistTest.php b/app/code/Magento/Wishlist/Test/Unit/Block/Cart/Item/Renderer/Actions/MoveToWishlistTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e64e5803f094a2210a09b9b5536f5c441b4416f4
--- /dev/null
+++ b/app/code/Magento/Wishlist/Test/Unit/Block/Cart/Item/Renderer/Actions/MoveToWishlistTest.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Wishlist\Test\Unit\Block\Cart\Item\Renderer\Actions;
+
+use Magento\Wishlist\Block\Cart\Item\Renderer\Actions\MoveToWishlist;
+use Magento\Quote\Model\Quote\Item;
+use Magento\Wishlist\Helper\Data;
+
+class MoveToWishlistTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var MoveToWishlist
+     */
+    protected $model;
+
+    /** @var Data|\PHPUnit_Framework_MockObject_MockObject */
+    protected $wishlistHelperMock;
+
+    protected function setUp()
+    {
+        $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+
+        $this->wishlistHelperMock = $this->getMockBuilder('Magento\Wishlist\Helper\Data')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->model = $objectManagerHelper->getObject(
+            'Magento\Wishlist\Block\Cart\Item\Renderer\Actions\MoveToWishlist',
+            [
+                'wishlistHelper' => $this->wishlistHelperMock,
+            ]
+        );
+    }
+
+    public function testIsAllowInCart()
+    {
+        $this->wishlistHelperMock->expects($this->once())
+            ->method('isAllowInCart')
+            ->willReturn(true);
+
+        $this->assertTrue($this->model->isAllowInCart());
+    }
+
+    public function testGetMoveFromCartParams()
+    {
+        $itemId = 45;
+        $json = '{json;}';
+
+        /**
+         * @var Item|\PHPUnit_Framework_MockObject_MockObject $itemMock
+         */
+        $itemMock = $this->getMockBuilder('Magento\Quote\Model\Quote\Item')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $itemMock->expects($this->once())
+            ->method('getId')
+            ->willReturn($itemId);
+
+        $this->wishlistHelperMock->expects($this->once())
+            ->method('getMoveFromCartParams')
+            ->with($itemId)
+            ->willReturn($json);
+
+        $this->model->setItem($itemMock);
+        $this->assertEquals($json, $this->model->getMoveFromCartParams());
+    }
+}
diff --git a/app/code/Magento/Wishlist/composer.json b/app/code/Magento/Wishlist/composer.json
index 703058cbf5f90410d1631d2d9dedda1ad6c026f4..31d183b64bb0ae5cafd1f548adcc4c776cf12132 100644
--- a/app/code/Magento/Wishlist/composer.json
+++ b/app/code/Magento/Wishlist/composer.json
@@ -3,28 +3,28 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/module-store": "0.74.0-beta13",
-        "magento/module-customer": "0.74.0-beta13",
-        "magento/module-catalog": "0.74.0-beta13",
-        "magento/module-checkout": "0.74.0-beta13",
-        "magento/module-theme": "0.74.0-beta13",
-        "magento/module-catalog-inventory": "0.74.0-beta13",
-        "magento/module-rss": "0.74.0-beta13",
-        "magento/module-backend": "0.74.0-beta13",
-        "magento/module-sales": "0.74.0-beta13",
-        "magento/module-grouped-product": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
-        "magento/module-ui": "0.74.0-beta13",
+        "magento/module-store": "0.74.0-beta14",
+        "magento/module-customer": "0.74.0-beta14",
+        "magento/module-catalog": "0.74.0-beta14",
+        "magento/module-checkout": "0.74.0-beta14",
+        "magento/module-theme": "0.74.0-beta14",
+        "magento/module-catalog-inventory": "0.74.0-beta14",
+        "magento/module-rss": "0.74.0-beta14",
+        "magento/module-backend": "0.74.0-beta14",
+        "magento/module-sales": "0.74.0-beta14",
+        "magento/module-grouped-product": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
+        "magento/module-ui": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "suggest": {
-        "magento/module-configurable-product": "0.74.0-beta13",
-        "magento/module-downloadable": "0.74.0-beta13",
-        "magento/module-bundle": "0.74.0-beta13",
-        "magento/module-cookie": "0.74.0-beta13"
+        "magento/module-configurable-product": "0.74.0-beta14",
+        "magento/module-downloadable": "0.74.0-beta14",
+        "magento/module-bundle": "0.74.0-beta14",
+        "magento/module-cookie": "0.74.0-beta14"
     },
     "type": "magento2-module",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/code/Magento/Wishlist/view/frontend/layout/checkout_cart_item_renderers.xml b/app/code/Magento/Wishlist/view/frontend/layout/checkout_cart_item_renderers.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6318b605dd52b13999b0337d28905768f4162d14
--- /dev/null
+++ b/app/code/Magento/Wishlist/view/frontend/layout/checkout_cart_item_renderers.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd">
+    <body>
+        <referenceBlock name="checkout.cart.item.renderers.default.actions">
+            <block class="Magento\Wishlist\Block\Cart\Item\Renderer\Actions\MoveToWishlist" name="checkout.cart.item.renderers.default.actions.move_to_wishlist" template="cart/item/renderer/actions/move_to_wishlist.phtml" before="checkout.cart.item.renderers.default.actions.edit"/>
+        </referenceBlock>
+        <referenceBlock name="checkout.cart.item.renderers.simple.actions">
+            <block class="Magento\Wishlist\Block\Cart\Item\Renderer\Actions\MoveToWishlist" name="checkout.cart.item.renderers.simple.actions.move_to_wishlist" template="cart/item/renderer/actions/move_to_wishlist.phtml" before="checkout.cart.item.renderers.simple.actions.edit"/>
+        </referenceBlock>
+        <referenceBlock name="checkout.cart.item.renderers.bundle.actions">
+            <block class="Magento\Wishlist\Block\Cart\Item\Renderer\Actions\MoveToWishlist" name="checkout.cart.item.renderers.bundle.actions.move_to_wishlist" template="cart/item/renderer/actions/move_to_wishlist.phtml" before="checkout.cart.item.renderers.bundle.actions.edit"/>
+        </referenceBlock>
+        <referenceBlock name="checkout.cart.item.renderers.downloadable.actions">
+            <block class="Magento\Wishlist\Block\Cart\Item\Renderer\Actions\MoveToWishlist" name="checkout.cart.item.renderers.downloadable.actions.move_to_wishlist" template="cart/item/renderer/actions/move_to_wishlist.phtml" before="checkout.cart.item.renderers.downloadable.actions.edit"/>
+        </referenceBlock>
+        <referenceBlock name="checkout.cart.item.renderers.grouped.actions">
+            <block class="Magento\Wishlist\Block\Cart\Item\Renderer\Actions\MoveToWishlist" name="checkout.cart.item.renderers.grouped.actions.move_to_wishlist" template="cart/item/renderer/actions/move_to_wishlist.phtml" before="checkout.cart.item.renderers.grouped.actions.edit"/>
+        </referenceBlock>
+        <referenceBlock name="checkout.cart.item.renderers.configurable.actions">
+            <block class="Magento\Wishlist\Block\Cart\Item\Renderer\Actions\MoveToWishlist" name="checkout.cart.item.renderers.configurable.actions.move_to_wishlist" template="cart/item/renderer/actions/move_to_wishlist.phtml" before="checkout.cart.item.renderers.configurable.actions.edit"/>
+        </referenceBlock>
+        <referenceBlock name="checkout.cart.item.renderers.virtual.actions">
+            <block class="Magento\Wishlist\Block\Cart\Item\Renderer\Actions\MoveToWishlist" name="checkout.cart.item.renderers.virtual.actions.move_to_wishlist" template="cart/item/renderer/actions/move_to_wishlist.phtml" before="checkout.cart.item.renderers.virtual.actions.edit"/>
+        </referenceBlock>
+    </body>
+</page>
diff --git a/app/code/Magento/Wishlist/view/frontend/templates/cart/item/renderer/actions/move_to_wishlist.phtml b/app/code/Magento/Wishlist/view/frontend/templates/cart/item/renderer/actions/move_to_wishlist.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..196122cf80c6e05975bedfd5ec7dfba3df9b3c2e
--- /dev/null
+++ b/app/code/Magento/Wishlist/view/frontend/templates/cart/item/renderer/actions/move_to_wishlist.phtml
@@ -0,0 +1,17 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+// @codingStandardsIgnoreFile
+
+/** @var $block \Magento\Wishlist\Block\Cart\Item\Renderer\Actions\MoveToWishlist */
+?>
+<?php if ($block->isAllowInCart() && $block->isProductVisibleInSiteVisibility()): ?>
+    <a href="#"
+       data-post='<?php echo $block->getMoveFromCartParams(); ?>'
+       class="use-ajax action action-towishlist">
+        <span><?php echo __('Move to Wishlist'); ?></span>
+    </a>
+<?php endif ?>
diff --git a/app/code/Magento/Wishlist/view/frontend/templates/rss/email.phtml b/app/code/Magento/Wishlist/view/frontend/templates/rss/email.phtml
index 8655b864bc2fa14eb7e87f6464710acd5430f7df..7043be8d41932d846e1461f7ed5ce9db6f41afdd 100644
--- a/app/code/Magento/Wishlist/view/frontend/templates/rss/email.phtml
+++ b/app/code/Magento/Wishlist/view/frontend/templates/rss/email.phtml
@@ -10,7 +10,7 @@
 ?>
 <?php if ($block->getLink()): ?>
 <p style="font-size:12px; line-height:16px; margin:0 0 16px;">
-    <?php echo __("RSS link to %1's wishlist", $this->helper('Magento\Wishlist\Helper\Data')->getCustomerName()) ?>
+    <?php echo __("RSS link to %1's wishlist", $block->escapeHtml($this->helper('Magento\Wishlist\Helper\Data')->getCustomerName())) ?>
     <br />
     <a href="<?php echo $block->getLink(); ?>"><?php echo $block->getLink(); ?></a>
 </p>
diff --git a/app/design/adminhtml/Magento/backend/composer.json b/app/design/adminhtml/Magento/backend/composer.json
index 58fbb8be56c6018d058fc9797820f32babab0f07..a635d2f6368d6f8d066d468efc7a6056820e06e4 100644
--- a/app/design/adminhtml/Magento/backend/composer.json
+++ b/app/design/adminhtml/Magento/backend/composer.json
@@ -3,11 +3,11 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/framework": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-theme",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/_cart.less b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/_cart.less
index 68018d4275960d6c94c3b4cff3307c69a8ac584a..089a66bff442b12dda09f922093d1e215abc9e43 100644
--- a/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/_cart.less
+++ b/app/design/frontend/Magento/blank/Magento_Checkout/web/css/source/module/_cart.less
@@ -4,323 +4,326 @@
 //  */
 
 //
-//    Common
-//--------------------------------------
+//  Common
+//  _____________________________________________
 
 & when (@media-common = true) {
 
-//
-//    Shopping cart
-//--------------------------------------
-.cart {
-    //  Summary block
-    &-summary {
-        &:extend(.abs-add-box-sizing all);
-        .css(background, @sidebar__background-color);
-        margin-bottom: @indent__m;
-        padding: 1px 15px @indent__m;
-        > .title {
-            .heading(h3);
-            display: block;
-        }
-        .block {
-            margin-bottom: 0;
+    //
+    //  Shopping cart
+    //  ---------------------------------------------
+
+    .cart {
+        //  Summary block
+        &-summary {
+            &:extend(.abs-add-box-sizing all);
+            .css(background, @sidebar__background-color);
+            margin-bottom: @indent__m;
+            padding: 1px 15px @indent__m;
             > .title {
-                .icon-font(
-                    @_icon-font-content: @icon-down,
-                    @_icon-font-size: 30px,
-                    @_icon-font-position: after
-                );
-                border-top: @border-width__base solid @border-color__base;
-                cursor: pointer;
                 display: block;
-                font-weight: @font-weight__semibold;
-                margin-bottom: 0;
-                overflow: hidden;
-                padding: 7px 20px 7px 5px;
-                position: relative;
-                &:after {
-                    position: absolute;
-                    right: 0;
-                    top: -5px;
-                }
-                strong {
-                    .column.main & {
-                        font-weight: @font-weight__regular;
-                        .font-size(18);
-                    }
-                }
-            }
-            > .content {
-                display: none;
+                .heading(h3);
             }
-            &.active {
+            .block {
+                margin-bottom: 0;
                 > .title {
-                    .icon-font-symbol(
-                        @_icon-font-content: @icon-prev,
-                        @_icon-font-position: after
+                    border-top: @border-width__base solid @border-color__base;
+                    cursor: pointer;
+                    font-weight: @font-weight__semibold;
+                    .icon-font(
+                    @_icon-font-content: @icon-down,
+                    @_icon-font-size: 30px,
+                    @_icon-font-position: after,
+                    @_icon-font-display: block
                     );
+                    margin-bottom: 0;
+                    overflow: hidden;
+                    padding: 7px @indent__base 7px @indent__xs;
+                    position: relative;
+                    &:after {
+                        position: absolute;
+                        right: 0;
+                        top: -5px;
+                    }
+                    strong {
+                        .column.main & {
+                            .font-size(18);
+                            font-weight: @font-weight__regular;
+                        }
+                    }
                 }
                 > .content {
-                    display: block;
+                    display: none;
                 }
-            }
-            .item-options {
-                margin-left: 0;
-            }
-            .fieldset {
-                margin: 15px 0 25px 5px;
-                .field {
-                    margin: 0 0 @indent__s;
-                    &.note {
-                        font-size: @font-size__s;
+                &.active {
+                    > .title {
+                        .icon-font-symbol(
+                        @_icon-font-content: @icon-prev,
+                        @_icon-font-position: after
+                        );
+                    }
+                    > .content {
+                        display: block;
                     }
                 }
-            }
-            .fieldset {
-                .methods {
+                .item-options {
+                    margin-left: 0;
+                }
+                .fieldset {
+                    margin: 15px 0 @indent__m @indent__xs;
                     .field {
-                        > .label {
-                            display: inline;
+                        margin: 0 0 @indent__s;
+                        &.note {
+                            font-size: @font-size__s;
                         }
                     }
                 }
-            }
-            .fieldset.estimate {
-                > .legend,
-                > .legend + br {
-                    &:extend(.abs-no-display all);
+                .fieldset {
+                    .methods {
+                        .field {
+                            > .label {
+                                display: inline;
+                            }
+                        }
+                    }
+                }
+                .fieldset.estimate {
+                    > .legend,
+                    > .legend + br {
+                        &:extend(.abs-no-display all);
+                    }
                 }
             }
-        }
-        .actions-toolbar {
-            > .primary {
-                button {
-                    &:extend(.abs-revert-secondary-color all);
+            .actions-toolbar {
+                > .primary {
+                    button {
+                        &:extend(.abs-revert-secondary-color all);
+                    }
                 }
             }
+            &:extend(.abs-adjustment-incl-excl-tax all);
         }
-        &:extend(.abs-adjustment-incl-excl-tax all);
-    }
 
-    //  Totals block
-    &-totals {
-        .table-wrapper {
-            overflow: inherit;
-        }
-        border-top: 1px solid @border-color__base;
-        padding-top: 10px;
-        .mark {
-            font-weight: @font-weight__regular;
-            padding-left: 4px;
-            strong {
+        //  Totals block
+        &-totals {
+            border-top: 1px solid @border-color__base;
+            padding-top: 10px;
+            .table-wrapper {
+                overflow: inherit;
+            }
+            .mark {
                 font-weight: @font-weight__regular;
-            }
-        }
-        .amount {
-            padding-right: 4px;
-            text-align: right;
-            strong {
-                font-weight: @font-weight__regular;
-            }
-        }
-        .grand:last-child {
-            .mark,
-            .amount {
-                padding-top: @indent__base;
+                padding-left: 4px;
+                strong {
+                    font-weight: @font-weight__regular;
+                }
             }
             .amount {
                 padding-right: 4px;
                 text-align: right;
                 strong {
-                    font-weight: @font-weight__bold;
+                    font-weight: @font-weight__regular;
                 }
             }
-        }
-        .msrp {
-            margin-bottom: @indent__s;
-        }
-        .totals-tax {
-            &-summary {
+            .grand:last-child {
                 .mark,
                 .amount {
-                    border-top: @border-width__base solid @border-color__base;
-                    border-bottom: @border-width__base solid @border-color__base;
-                    cursor: pointer;
+                    padding-top: @indent__base;
                 }
-                .amount .price {
-                    position: relative;
-                    padding-right: @indent__m;
-                    .icon-font(
-                        @icon-down,
-                        @_icon-font-size: 30px,
-                        @_icon-font-text-hide: true,
-                        @_icon-font-position: after,
-                        @_icon-font-display: block
-                    );
-                    &:after {
-                        position: absolute;
-                        right: -5px;
-                        top: -12px;
+                .amount {
+                    padding-right: 4px;
+                    text-align: right;
+                    strong {
+                        font-weight: @font-weight__bold;
                     }
                 }
-                &.expanded {
+            }
+            .msrp {
+                margin-bottom: @indent__s;
+            }
+            .totals-tax {
+                &-summary {
                     .mark,
                     .amount {
-                        border-bottom: 0;
+                        border-bottom: @border-width__base solid @border-color__base;
+                        border-top: @border-width__base solid @border-color__base;
+                        cursor: pointer;
                     }
                     .amount .price {
-                        .icon-font-symbol(
+                        .icon-font(
+                        @icon-down,
+                        @_icon-font-size: 30px,
+                        @_icon-font-text-hide: true,
+                        @_icon-font-position: after,
+                        @_icon-font-display: block
+                        );
+                        padding-right: @indent__m;
+                        position: relative;
+                        &:after {
+                            position: absolute;
+                            right: -5px;
+                            top: -12px;
+                        }
+                    }
+                    &.expanded {
+                        .mark,
+                        .amount {
+                            border-bottom: 0;
+                        }
+                        .amount .price {
+                            .icon-font-symbol(
                             @_icon-font-content: @icon-up,
                             @_icon-font-position: after
-                        );
+                            );
+                        }
                     }
                 }
-            }
-            &-details {
-                display: none;
-                border-bottom: @border-width__base solid @border-color__base;
-                &.shown {
-                    display: table-row;
+                &-details {
+                    border-bottom: @border-width__base solid @border-color__base;
+                    display: none;
+                    &.shown {
+                        display: table-row;
+                    }
                 }
             }
+            .table-wrapper {
+                margin-bottom: 0;
+            }
+            .table-caption {
+                &:extend(.abs-no-display all);
+            }
         }
-        .table-wrapper {
-            margin-bottom: 0;
-        }
-        .table-caption {
-            &:extend(.abs-no-display all);
-        }
-    }
 
-    //  Products table
-    &.table-wrapper {
-        .items {
-            thead + .item {
-                border-top: @border-width__base solid @border-color__base;
+        //  Products table
+        &.table-wrapper {
+            .items {
+                thead + .item {
+                    border-top: @border-width__base solid @border-color__base;
+                }
+                > .item {
+                    border-bottom: @border-width__base solid @border-color__base;
+                    position: relative;
+                }
             }
-            > .item {
-                border-bottom: @border-width__base solid @border-color__base;
-                position: relative;
+            .col {
+                padding-top: 20px;
+                &.qty {
+                    .input-text {
+                        margin-top: -5px;
+                        &:extend(.abs-input-qty all);
+                    }
+                    .label {
+                        &:extend(.abs-visually-hidden all);
+                    }
+                }
             }
-        }
-        .col {
-            padding-top: 20px;
-            &.qty {
-                .input-text {
-                    margin-top: -5px;
-                    &:extend(.abs-input-qty all);
+            .item {
+                &-actions td {
+                    padding-bottom: @indent__s;
+                    text-align: center;
+                    white-space: normal;
                 }
-                .label {
-                    &:extend(.abs-visually-hidden all);
+                .col {
+                    &.item {
+                        display: block;
+                        min-height: 75px;
+                        padding: @indent__m 0 @indent__s 75px;
+                        position: relative;
+                    }
                 }
             }
-        }
-        .item {
-            &-actions td {
-                padding-bottom: 10px;
-                text-align: center;
-                white-space: normal;
+            .actions-toolbar {
+                &:extend(.abs-add-clearfix all);
+                > .action {
+                    &:extend(button all);
+                    .link-as-button();
+                    margin-bottom: @indent__s;
+                    margin-right: @indent__s;
+                    &:last-child {
+                        margin-right: 0;
+                    }
+                }
             }
-            .col {
-                &.item {
+            .action {
+                &.help.map {
+                    &:extend(.abs-action-button-as-link all);
+                    font-weight: @font-weight__regular;
+                }
+            }
+            .product {
+                &-item-photo {
                     display: block;
-                    padding: 25px 0 10px 75px;
-                    position: relative;
-                    min-height: 75px;
+                    left: 0;
+                    max-width: 60px;
+                    padding: 0;
+                    position: absolute;
+                    top: 15px;
+                    width: 100%;
+                }
+                &-item-details {
+                    white-space: normal;
+                }
+                &-item-name {
+                    display: inline-block;
+                    font-weight: @font-weight__regular;
+                    margin-top: -6px;
                 }
             }
-        }
-        .actions-toolbar {
-            > .action {
-                &:extend(button all);
-                .link-as-button();
-                margin-left: @indent__s;
-                margin-bottom: @indent__s;
-                &:first-child {
-                    margin-left: 0;
+            .gift-registry-name-label {
+                &:after {
+                    content: ':';
                 }
             }
-        }
-        .action {
-            &.help.map {
-                &:extend(.abs-action-button-as-link all);
-                font-weight: @font-weight__regular;
+            //  Product options
+            .item-options {
+                font-size: @font-size__s;
+                margin-bottom: @indent__s;
+                &:extend(.abs-product-options-list all);
+                &:extend(.abs-add-clearfix all);
             }
-        }
-        .product {
-            &-item-photo {
-                display: block;
-                max-width: 60px;
-                left: 0;
-                padding: 0;
-                position: absolute;
-                top: 15px;
-                width: 100%;
+
+            .product-item-name + .item-options {
+                margin-top: @indent__s;
             }
-            &-item-details {
-                white-space: normal;
+
+            .product-image-wrapper {
+                &:extend(.abs-reset-image-wrapper all);
             }
-            &-item-name {
+            .action.configure {
                 display: inline-block;
-                font-weight: @font-weight__regular;
-                margin-top: -6px;
+                margin: 0 0 @indent__base;
             }
         }
-        .gift-registry-name-label {
-            &:after {
-                content: ":";
+        &-container {
+            .form-cart {
+                &:extend(.abs-shopping-cart-items all);
             }
-        }
-        // Product options
-        .item-options {
-            font-size: @font-size__s;
-            margin-bottom: @indent__s;
-            &:extend(.abs-product-options-list all);
-            &:extend(.abs-add-clearfix all);
-        }
-
-        .product-item-name + .item-options {
-            margin-top: @indent__s;
-        }
-
-        .product-image-wrapper {
-            &:extend(.abs-reset-image-wrapper all);
-        }
-        .action.configure {
-            display: inline-block;
-            margin: 0 0 @indent__base;
-        }
-    }
-    &-container {
-        .form-cart {
-            &:extend(.abs-shopping-cart-items all);
-        }
-        .checkout-methods-items {
-            &:extend(.abs-reset-list all);
-            text-align: center;
-            margin-top: @indent__base;
-            .action.primary {
-                &:extend(.abs-button-l all);
-                margin-bottom: @indent__s;
-                width: 100%;
+            .checkout-methods-items {
+                margin-top: @indent__base;
+                &:extend(.abs-reset-list all);
+                text-align: center;
+                .action.primary {
+                    &:extend(.abs-button-l all);
+                    margin-bottom: @indent__s;
+                    width: 100%;
+                }
             }
         }
     }
-}
 
-//
-//    Cross sell
-//--------------------------------------
-.block.crosssell {
-    margin-top: 70px;
-}
+    //
+    //  Cross sell
+    //  ---------------------------------------------
 
+    .block.crosssell {
+        margin-top: 70px;
+    }
 }
 
 //
-//    Mobile
-//--------------------------------------
+//  Mobile
+//  _____________________________________________
+
 .media-width(@extremum, @break) when (@extremum = 'max') and (@break = @screen__m) {
     .cart {
         &.table-wrapper {
@@ -341,7 +344,7 @@
                     white-space: nowrap;
                     width: 33%;
                     &:before {
-                        content: attr(data-th) ":";
+                        content: attr(data-th) ':';
                         display: block;
                         font-weight: @font-weight__bold;
                         padding-bottom: 10px;
@@ -360,12 +363,16 @@
                 &:extend(.abs-shopping-cart-items-mobile all);
             }
         }
+        &.table-wrapper {
+            overflow: inherit;
+        }
     }
 }
 
 //
-//    Desktop
-//--------------------------------------
+//  Desktop
+//  _____________________________________________
+
 .media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) {
     .cart {
         &-container {
@@ -378,8 +385,8 @@
             }
         }
         &-summary {
-            position: relative;
             float: right;
+            position: relative;
             width: 23%;
             .actions-toolbar {
                 .column.main & {
@@ -413,11 +420,11 @@
             .product {
                 &-item-photo {
                     display: table-cell;
+                    max-width: 100%;
                     padding-right: @indent__base;
+                    position: static;
                     vertical-align: top;
                     width: 1%;
-                    position: static;
-                    max-width: 100%;
                 }
                 &-item-details {
                     display: table-cell;
diff --git a/app/design/frontend/Magento/blank/Magento_GiftMessage/web/css/source/_module.less b/app/design/frontend/Magento/blank/Magento_GiftMessage/web/css/source/_module.less
index 121a06f86bf824d7b5d34d90caf7dfd36c74bad5..2d0e55d1620636743623cfea6dd99a900743cc73 100644
--- a/app/design/frontend/Magento/blank/Magento_GiftMessage/web/css/source/_module.less
+++ b/app/design/frontend/Magento/blank/Magento_GiftMessage/web/css/source/_module.less
@@ -4,182 +4,288 @@
 //  */
 
 //
-//    Common
-//--------------------------------------
+//  Variables
+//  _____________________________________________
 
-& when (@media-common = true) {
+@gift-message-field-label__color: @color-gray40;
+@gift-item-block__border-color: @color-gray-light5;
+@gift-item-block__border-width: @border-width__base;
+
+//
+//  Common
+//  _____________________________________________
 
-.gift-message {
-    margin: 0;
-    .fieldset& {
-        > .legend {
-            &:extend(.abs-methods-shipping-title all);
+& when (@media-common = true) {
+    .gift-message {
+        .actions-toolbar {
+            .action-cancel {
+                &:extend(.abs-action-button-as-link all);
+                display: none;
+            }
         }
-    }
-    .opc-wrapper .step-content .fieldset& {
-        br + .field {
-            margin: 0;
+        .field {
+            .label {
+                .css(color, @gift-message-field-label__color);
+                .css(font-weight, @font-weight__regular);
+            }
         }
     }
-    .field.choice {
-        font-weight: @font-weight__regular;
+
+    .gift-options {
+        &:extend(.abs-add-clearfix all);
+    }
+
+    .gift-options-title {
         margin: 0 0 @indent__base;
-        &:before {
-            display: none;
+    }
+
+    .gift-options-content {
+        .fieldset {
+            margin: 0 0 @indent__base;
         }
     }
-    .activate.message {
-        display: inline-block;
-        margin: 0 0 @indent__s;
-    }
-    .product-image-wrapper {
-        &:extend(.abs-reset-image-wrapper all);
-    }
-    .options-items {
-        .css(background, @sidebar__background-color);
-        display: block;
-        margin: @indent__base 0 0;
-        padding: @indent__base;
-        .order-title:not(:first-child),
-        .extra-options-container {
-            font-weight: @font-weight__regular;
-            margin: @indent__base 0 0;
-        }
-        .order-options {
-            margin: 0 0 @indent__base @indent__base;
-        }
-        .block.message {
-            margin-bottom: @indent__s;
-        }
-        .items {
-            .list-reset-styles();
-            .item {
-                border-bottom: @border-width__base solid @border-color__base;
-                margin-bottom: @indent__base;
-                padding-bottom: @indent__s;
-                .product {
-                    .photo {
-                        margin: @indent__s 0;
-                    }
-                }
-                &:last-child {
-                    border-bottom: 0;
-                    padding-bottom: 0;
+    .gift-summary {
+        .actions-toolbar {
+            > .secondary {
+                float: none;
+                .action {
+                    margin: @indent__s @indent__base 0 0;
                 }
             }
         }
-        .number {
-            font-size: @font-size__s;
-        }
-        .regular-price,
-        .price-including-tax,
-        .price-excluding-tax {
-            &:before {
-                content: attr(data-label) ": ";
-            }
-            .price {
-                font-weight: @font-weight__bold;
+    }
+
+    //
+    //  In-table block
+    //  ---------------------------------------------
+
+    .cart.table-wrapper {
+        .gift-content {
+            display: none;
+            clear: left;
+            float: left;
+            margin-right: -100%;
+            padding: @indent__base 0;
+            width: 100%;
+            text-align: left;
+            &._active {
+                display: block;
             }
         }
-        .price-including-tax {
-            .font-size(14);
+
+        .action-gift {
+            &:extend(.cart.table-wrapper .actions-toolbar > .action all);
+            .button-icon(
+            @icon-down,
+            @_icon-font-size: 32px,
+            @_icon-font-line-height: 16px,
+            @_icon-font-position: after
+            );
+            &._active {
+                .icon-font-symbol(
+                @icon-up,
+                @_icon-font-position: after
+                );
+            }
         }
     }
-}
 
-//
-//    Account order gift message
-//--------------------------------------
-.order-details-items {
-    .order-gift-message,
-    .block-order-details-gift-message {
-        .item-options {
-            dt {
-                margin: @indent__s 0;
-                font-weight: @font-weight__regular;
+    //
+    //  Collapsible block
+    //  ---------------------------------------------
+
+    .gift-item-block {
+        margin: 0;
+        &._active {
+            .title {
+                .icon-font-symbol(
+                @icon-up,
+                @_icon-font-position: after
+                );
             }
         }
-        &:extend(.abs-add-clearfix all);
-        dt:after {
-            content: "";
-        }
-        .label {
-            &:extend(.abs-colon all);
+
+        .title {
+            border-radius: 3px;
+            .button(
+            @_button-margin: 20px 0 0,
+            @_button-padding: 7px 15px,
+            @_button-icon-use: true,
+            @_button-font-content: @icon-down,
+            @_button-icon-font: @button-icon__font,
+            @_button-icon-font-size: 32px,
+            @_button-icon-font-line-height: 16px,
+            @_button-icon-font-position: after
+            );
+            .css(font-weight, @font-weight__bold);
+            &:active {
+                .css(box-shadow, @button__shadow);
+            }
         }
-        .item-message {
-            clear: left;
+
+        .content {
+            &:extend(.abs-add-clearfix all);
+            .css(border-bottom, @gift-item-block__border-width solid @gift-item-block__border-color);
+            padding: @indent__s @indent__s @indent__base;
+            position: relative;
         }
     }
-}
 
-.order-details-items .order-items {
-    .order-gift-message {
-        &:not(.expanded-content) {
-            &:extend(.abs-hidden);
-        }
-        .action.close {
-            &:extend(.abs-no-display all);
+    //
+    //  Account order gift message
+    //  ---------------------------------------------
+
+    .order-details-items {
+        .order-gift-message,
+        .block-order-details-gift-message {
+            .item-options {
+                dt {
+                    .css(font-weight, @font-weight__regular);
+                    margin: @indent__s 0;
+                }
+            }
+            &:extend(.abs-add-clearfix all);
+            dt {
+                &:after {
+                    content: '';
+                }
+            }
+            .label {
+                &:extend(.abs-colon all);
+            }
+            .item-message {
+                clear: left;
+            }
         }
     }
-    .action.show {
-        padding-right: @indent__base;
-        position: relative;
-        .icon-font(
+
+    .order-details-items .order-items {
+        .order-gift-message {
+            &:not(.expanded-content) {
+                &:extend(.abs-hidden);
+            }
+            .action.close {
+                &:extend(.abs-no-display all);
+            }
+        }
+        .action.show {
+            .icon-font(
             @_icon-font-content: @icon-down,
             @_icon-font-size: 22px,
             @_icon-font-text-hide: false,
             @_icon-font-position: after,
             @_icon-font-display: inline-block
-        );
-        &:after {
-            position: absolute;
-            right: 0;
-            top: -4px;
-        }
-        &.expanded {
-            .icon-font-symbol(
+            );
+            padding-right: @indent__base;
+            position: relative;
+            &:after {
+                position: absolute;
+                right: 0;
+                top: -4px;
+            }
+            &.expanded {
+                .icon-font-symbol(
                 @_icon-font-content: @icon-up,
                 @_icon-font-position: after
-            );
+                );
+            }
         }
     }
+
+    .block-order-details-gift-message {
+        border-top: @border-width__base solid @border-color__base;
+        padding-top: @indent__s;
+    }
 }
 
-.block-order-details-gift-message {
-    border-top: @border-width__base solid @border-color__base;
-    padding-top: @indent__s;
+//
+//  Mobile
+//  _____________________________________________
+
+.media-width(@extremum, @break) when (@extremum = 'max') and (@break = @screen__m) {
+    .gift-message {
+        .actions-toolbar {
+            .action-update {
+                .font-size(20);
+                padding: 15px;
+                width: 100%;
+            }
+        }
+    }
+    .gift-item-block {
+        border-bottom: 0;
+        .css(border-top, @gift-item-block__border-width solid @gift-item-block__border-color);
+    }
+    .cart.table-wrapper {
+        .gift-content {
+            margin-right: -@indent__s;
+        }
+    }
 }
 
+.media-width(@extremum, @break) when (@extremum = 'max') and (@break = @screen__s) {
+    .cart.table-wrapper {
+        .gift-content {
+            border-bottom: @border-width__base solid @border-color__base;
+            margin-bottom: @indent__base;
+        }
+    }
 }
 
 //
-//    Desktop
-//--------------------------------------
+//  Desktop
+//  _____________________________________________
+
 .media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) {
     .gift-message {
-        .item {
-            border-bottom: @border-width__base solid @border-color__base;
-            margin-bottom: @indent__base;
-            padding-bottom: @indent__s;
-            &:extend(.abs-add-clearfix-desktop all);
-            .product {
-                float: left;
-                margin-right: @indent__base;
-                .photo {
-                    margin: @indent__s 0;
+        .actions-toolbar {
+            .secondary {
+                float: right;
+                .action {
+                    float: right;
+                    margin-left: @indent__base;
                 }
-                .name {
-                    text-overflow: ellipsis;
-                    overflow: hidden;
-                    max-width: 145px;
+                .action-cancel {
+                    display: block;
+                    float: left;
+                    margin-top: 6px;
                 }
             }
-            .options {
-                overflow: hidden;
-            }
         }
-        .price-box > .price {
-            display: block;
+        .field {
+            &:extend(.abs-clearfix all);
+            .form-field-type-revert(
+            @_type: inline,
+            @_type-inline-label-align: left
+            );
+        }
+    }
+    .gift-options-title {
+        .css(font-weight, @font-weight__light);
+        .font-size(18);
+    }
+    .gift-summary,
+    .cart.table-wrapper .gift-summary {
+        .actions-toolbar {
+            &:extend(.abs-reset-left-margin-desktop all);
+        }
+    }
+    .cart-container {
+        .cart-gift-item {
+            &:extend(.abs-shopping-cart-items-desktop all);
+        }
+    }
+
+    //
+    //  In-table block
+    //  ---------------------------------------------
+
+    .cart.table-wrapper {
+        .action-gift {
+            float: left;
+        }
+        .gift-content {
+            padding: @indent__base 0;
         }
     }
 }
diff --git a/app/design/frontend/Magento/blank/composer.json b/app/design/frontend/Magento/blank/composer.json
index ed12dd50070e3732d4d1dad3ae1035b8452d9dc4..e715b5304c3a39ca06f52c98c37a438a68cf839d 100644
--- a/app/design/frontend/Magento/blank/composer.json
+++ b/app/design/frontend/Magento/blank/composer.json
@@ -3,11 +3,11 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/framework": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-theme",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/design/frontend/Magento/luma/Magento_Checkout/web/css/source/module/_cart.less b/app/design/frontend/Magento/luma/Magento_Checkout/web/css/source/module/_cart.less
index 3b102ea7e75ff16c628f0e7dfb72dba27f006640..84fe60c7262910782021ee8c38b2d319cc66efc7 100644
--- a/app/design/frontend/Magento/luma/Magento_Checkout/web/css/source/module/_cart.less
+++ b/app/design/frontend/Magento/luma/Magento_Checkout/web/css/source/module/_cart.less
@@ -8,449 +8,483 @@
 @cart-item-cell-padding-top: 20px;
 
 //
-//    Common
-//--------------------------------------
+//  Common
+//  _____________________________________________
 
 & when (@media-common = true) {
 
-//
-//    Shopping cart
-//--------------------------------------
-.checkout-cart-index {
-    .page-main {
-        padding-left: 0;
-        padding-right: 0;
-    }
-    .page-title-wrapper {
-        padding-left: @layout__width-xs-indent;
-        padding-right: @layout__width-xs-indent;
-    }
-}
-.cart {
-    // Cart container
-    &-container {
-        .form-cart {
-            &:extend(.abs-shopping-cart-items all);
+    //
+    //  Shopping cart
+    //  ---------------------------------------------
+
+    .checkout-cart-index {
+        .page-main {
+            padding-left: 0;
+            padding-right: 0;
+        }
+        .page-title-wrapper {
+            padding-left: @layout__width-xs-indent;
+            padding-right: @layout__width-xs-indent;
         }
     }
-
-    //  Summary block
-    &-summary {
-        &:extend(.abs-add-box-sizing all);
-        .css(background, @sidebar__background-color);
-        margin-bottom: 25px;
-        padding: 1px 0 25px;
-        > .title {
-            display: none;
-            .font-size(24);
-            font-weight: @font-weight__light;
-            margin: 12px 0;
+    .cart {
+        //  Cart container
+        &-container {
+            .form-cart {
+                &:extend(.abs-shopping-cart-items all);
+            }
         }
 
-        .block {
-            &:extend(.abs-cart-block all);
-            .item-options {
-                margin: 0 0 16px;
-                .field {
-                    .radio {
-                        float: left;
-                    }
-                    .radio + .label {
-                        display: block;
-                        overflow: hidden;
-                        margin: 0;
-                    }
-                }
+        //  Summary block
+        &-summary {
+            &:extend(.abs-add-box-sizing all);
+            .css(background, @sidebar__background-color);
+            margin-bottom: 25px;
+            padding: 1px 0 25px;
+            > .title {
+                display: none;
+                .font-size(24);
+                font-weight: @font-weight__light;
+                margin: 12px 0;
             }
 
-            form:not(:last-of-type) {
-                .fieldset {
-                    margin: 0 0 @indent__m;
+            .block {
+                form:not(:last-of-type) {
+                    .fieldset {
+                        margin: 0 0 @indent__m;
+                    }
                 }
-            }
 
-            .price {
-                font-weight: @font-weight__bold;
-            }
-
-            .field {
-                margin: 0 0 16px;
-                &.note {
-                    display: none;
+                .price {
+                    font-weight: @font-weight__bold;
                 }
-            }
 
-            .actions-toolbar {
-                > .primary {
-                    text-align: left;
-                    .action.primary {
-                        &:extend(.abs-revert-to-action-secondary all);
-                        width: auto;
+                .field {
+                    margin: 0 0 16px;
+                    &.note {
+                        display: none;
                     }
                 }
-            }
 
-            .fieldset.estimate {
-                > .legend,
-                > .legend + br {
-                    &:extend(.abs-no-display all);
+                .actions-toolbar {
+                    > .primary {
+                        text-align: left;
+                        .action.primary {
+                            &:extend(.abs-revert-to-action-secondary all);
+                            width: auto;
+                        }
+                    }
                 }
-            }
-        }
 
-        .page-main & {
-            .block {
-                margin-bottom: 0;
+                .fieldset.estimate {
+                    > .legend,
+                    > .legend + br {
+                        &:extend(.abs-no-display all);
+                    }
+                }
+                &:extend(.abs-cart-block all);
+                .title {
+                    strong {
+                        .font-size(14);
+                        font-weight: @font-weight__semibold;
+                    }
+                }
+                .item-options {
+                    margin: 0 0 16px;
+                    .field {
+                        .radio {
+                            float: left;
+                        }
+                        .radio {
+                            + .label {
+                                display: block;
+                                margin: 0;
+                                overflow: hidden;
+                            }
+                        }
+                    }
+                }
             }
-        }
 
-        .checkout-methods-items {
-            &:extend(.abs-reset-list all);
-            margin: 20px 0 0;
-            padding: 0 @mobile-cart-padding;
-            text-align: center;
-            .action.primary.checkout {
-                &:extend(.abs-button-l all);
-                width: 100%;
-            }
-            .item {
-                margin-bottom: 25px;
-                &:last-child {
+            .page-main & {
+                .block {
                     margin-bottom: 0;
                 }
             }
-        }
 
-        .message {
-            padding-left: 20px;
-            > *:first-child:before {
-                display: none;
+            .checkout-methods-items {
+                &:extend(.abs-reset-list all);
+                margin: 20px 0 0;
+                padding: 0 @mobile-cart-padding;
+                text-align: center;
+                .action.primary.checkout {
+                    &:extend(.abs-button-l all);
+                    width: 100%;
+                }
+                .item {
+                    margin-bottom: 25px;
+                    &:last-child {
+                        margin-bottom: 0;
+                    }
+                }
             }
-        }
-        &:extend(.abs-adjustment-incl-excl-tax all);
-    }
 
-    //  Totals block
-    &-totals {
-        border-top: 1px solid @border-color__base;
-        padding-top: 10px;
-        tbody,
-        tfoot {
-            .mark {
-                border: 0;
-                font-weight: @font-weight__regular;
-                padding: 6px 0;
-                text-align: left;
-            }
-            .amount {
-                border: 0;
-                font-weight: @font-weight__regular;
-                padding: 6px 0 6px 14px;
-                text-align: right;
+            .message {
+                padding-left: 20px;
+                > *:first-child:before {
+                    display: none;
+                }
             }
+            &:extend(.abs-adjustment-incl-excl-tax all);
         }
-        .table-caption {
-            &:extend(.abs-no-display all);
-        }
-        .grand {
-            th,
-            td {
-                padding: 11px 0;
-            }
-            .mark {
-                border-top: 1px solid @border-color__base;
-                .font-size(16);
-                padding-right: @indent__s;
-                strong {
-                    display: inline-block;
+
+        //  Totals block
+        &-totals {
+            border-top: 1px solid @border-color__base;
+            padding-top: 10px;
+            tbody,
+            tfoot {
+                .mark {
+                    border: 0;
                     font-weight: @font-weight__regular;
-                    padding: 3px 0 0;
+                    padding: 6px 0;
+                    text-align: left;
+                }
+                .amount {
+                    border: 0;
+                    font-weight: @font-weight__regular;
+                    padding: 6px 0 6px 14px;
+                    text-align: right;
                 }
             }
-            .amount {
-                border-top: 1px solid @border-color__base;
-                .font-size(18);
+            .table-caption {
+                &:extend(.abs-no-display all);
             }
-        }
-        .msrp {
-            margin-bottom: @indent__s;
-        }
-        tbody tr:last-child td {
-            padding-bottom: 19px;
-        }
-        .totals-tax {
-            &-summary {
-                .mark,
+            .grand {
+                th,
+                td {
+                    padding: 11px 0;
+                }
+                .mark {
+                    border-top: 1px solid @border-color__base;
+                    .font-size(16);
+                    padding-right: @indent__s;
+                    strong {
+                        display: inline-block;
+                        font-weight: @font-weight__regular;
+                        padding: 3px 0 0;
+                    }
+                }
                 .amount {
-                    border-top: @border-width__base solid @border-color__base;
-                    border-bottom: @border-width__base solid @border-color__base;
-                    cursor: pointer;
+                    border-top: 1px solid @border-color__base;
+                    .font-size(18);
                 }
-                .amount .price {
-                    position: relative;
-                    padding-right: 20px;
-                    .icon-font(
+            }
+            .msrp {
+                margin-bottom: @indent__s;
+            }
+            tbody tr:last-child td {
+                padding-bottom: 19px;
+            }
+            .totals-tax {
+                &-summary {
+                    .mark,
+                    .amount {
+                        border-bottom: @border-width__base solid @border-color__base;
+                        border-top: @border-width__base solid @border-color__base;
+                        cursor: pointer;
+                    }
+                    .amount .price {
+                        .icon-font(
                         @icon-down,
                         @_icon-font-size: 12px,
                         @_icon-font-line-height: 12px,
                         @_icon-font-text-hide: true,
                         @_icon-font-position: after
-                    );
-                    &:after {
-                        position: absolute;
-                        right: 3px;
-                        top: 3px;
-                    }
-                }
-                &.expanded {
-                    .mark,
-                    .amount {
-                        border-bottom: 0;
+                        );
+                        padding-right: 20px;
+                        position: relative;
+                        &:after {
+                            position: absolute;
+                            right: 3px;
+                            top: 3px;
+                        }
                     }
-                    .amount .price {
-                        .icon-font-symbol(
+                    &.expanded {
+                        .mark,
+                        .amount {
+                            border-bottom: 0;
+                        }
+                        .amount .price {
+                            .icon-font-symbol(
                             @_icon-font-content: @icon-up,
                             @_icon-font-position: after
-                        );
+                            );
+                        }
                     }
                 }
-            }
-            &-details {
-                display: none;
-                border-bottom: @border-width__base solid @border-color__base;
-                &.shown {
-                    display: table-row;
+                &-details {
+                    border-bottom: @border-width__base solid @border-color__base;
+                    display: none;
+                    &.shown {
+                        display: table-row;
+                    }
                 }
             }
+            .table-wrapper {
+                margin-bottom: 0;
+            }
         }
-        .table-wrapper {
-            margin-bottom: 0;
-        }
-    }
 
-    //  Products table
-    &.table-wrapper {
-        .cart {
-            thead {
-                tr th.col {
-                    border-bottom: @border-width__base solid @border-color__base;
-                    padding-top: 24px;
-                    padding-bottom: 15px;
+        //  Products table
+        &.table-wrapper {
+            .cart {
+                thead {
+                    tr th.col {
+                        border-bottom: @border-width__base solid @border-color__base;
+                        padding-bottom: 15px;
+                        padding-top: 24px;
+                    }
                 }
-            }
-            tbody {
-                td {
-                    border: 0;
+                tbody {
+                    td {
+                        border: 0;
+                    }
+                }
+                > .item {
+                    border-bottom: @border-width__base solid @border-color__base;
+                    position: relative;
                 }
             }
-            > .item {
-                border-bottom: @border-width__base solid @border-color__base;
-                position: relative;
-            }
-        }
-        .col {
-            padding-top: 15px;
-            &.price,
-            &.subtotal,
-            &.msrp {
-                padding: @cart-item-cell-padding-top 11px @indent__s;
-                text-align: center;
-                &:extend(.abs-incl-excl-tax all);
-            }
-            &.qty {
-                padding: 20px 11px @indent__s;
-                text-align: center;
-                .label {
-                    &:extend(.abs-visually-hidden all);
+            .col {
+                padding-top: 15px;
+                &.price,
+                &.subtotal,
+                &.msrp {
+                    padding: @cart-item-cell-padding-top 11px @indent__s;
+                    text-align: center;
+                    &:extend(.abs-incl-excl-tax all);
                 }
-                .input-text {
-                    height: 36px;
-                    width: 45px;
-                    margin-top: -7px;
+                &.qty {
+                    padding: 20px 11px @indent__s;
                     text-align: center;
+                    .label {
+                        &:extend(.abs-visually-hidden all);
+                    }
+                    .input-text {
+                        height: 36px;
+                        margin-top: -7px;
+                        text-align: center;
+                        width: 45px;
+                    }
+                }
+                > .price {
+                    .css(color, @primary__color__lighter);
+                    .font-size(18);
+                    font-weight: @font-weight__bold;
                 }
             }
-            > .price {
-                .css(color, @primary__color__lighter);
-                .font-size(18);
-                font-weight: @font-weight__bold;
-            }
-        }
 
-        .item {
-            &-actions td {
-                padding-bottom: @indent__base;
-                padding-left: @mobile-cart-padding;
-                padding-right: @mobile-cart-padding;
-                white-space: normal;
-                .actions-toolbar {
-                    &:extend(.abs-add-clearfix all);
+            .item-actions {
+                td {
+                    padding-bottom: 0;
+                    padding-left: @mobile-cart-padding;
+                    padding-right: @mobile-cart-padding;
+                    white-space: normal;
                 }
             }
-            .col {
-                &.item {
+            .item {
+                .col.item {
                     display: block;
+                    min-height: 75px;
                     padding: 15px @mobile-cart-padding @indent__s 90px;
                     position: relative;
-                    min-height: 75px;
                 }
             }
-        }
-        .action {
-            margin-right: @indent__m;
-            &:last-child {
-                margin-right: 0;
-            }
-            &.help.map {
-                &:extend(.abs-action-button-as-link all);
-                font-weight: @font-weight__regular;
-            }
-            &.edit {
-                float: left;
+
+            .actions-toolbar {
+                &:extend(.abs-add-clearfix all);
+                min-height: 20px;
+                padding-bottom: 15px;
+                position: relative;
+                > .action-edit,
+                > .action-delete {
+                    position: absolute;
+                    right: 16px;
+                    top: 0;
+                    .icon-font(
+                    @icon-edit,
+                    @_icon-font-size: 18px,
+                    @_icon-font-line-height: 20px,
+                    @_icon-font-text-hide: true,
+                    @_icon-font-color: @minicart-icons-color,
+                    @_icon-font-color-hover: @primary__color,
+                    @_icon-font-color-active: @minicart-icons-color
+                    );
+                }
+                > .action-delete {
+                    right: 0;
+                    .icon-font-symbol(
+                    @_icon-font-content: @icon-trash
+                    );
+                }
             }
-            &.delete {
-                float: right;
-                &:extend(.abs-action-button-as-link all);
+            .action {
+                margin-right: @indent__m;
+                &:last-child {
+                    margin-right: 0;
+                }
+                &.help.map {
+                    &:extend(.abs-action-button-as-link all);
+                    font-weight: @font-weight__regular;
+                }
             }
-        }
-        .product {
-            &-item-photo {
-                display: block;
-                max-width: 65px;
-                left: @mobile-cart-padding;
-                padding: 0;
-                position: absolute;
-                top: 15px;
-                width: 100%;
+
+            .product {
+                &-item-photo {
+                    display: block;
+                    left: @mobile-cart-padding;
+                    max-width: 65px;
+                    padding: 0;
+                    position: absolute;
+                    top: 15px;
+                    width: 100%;
+                }
+                &-item-name {
+                    display: block;
+                    .font-size(18);
+                    margin: -3px 0 @indent__xs;
+                }
             }
-            &-item-name {
-                display: block;
-                .font-size(18);
-                margin: -3px 0 @indent__xs;
+            .gift-registry-name-label {
+                &:after {
+                    content: ':';
+                }
             }
-        }
-        .gift-registry-name-label {
-            &:after {
-                content: ":";
+
+            //  Product options
+            .item-options {
+                margin-bottom: 0;
+                &:extend(.abs-product-options-list all);
+                &:extend(.abs-add-clearfix all);
             }
-        }
-        //  Product options
-        .item-options {
-            margin-bottom: 0;
-            &:extend(.abs-product-options-list all);
-            &:extend(.abs-add-clearfix all);
-        }
 
-        .product-item-name + .item-options {
-            margin-top: @indent__base;
-        }
+            .product-item-name + .item-options {
+                margin-top: @indent__base;
+            }
 
-        .cart-tax-total {
-            &:extend(.abs-tax-total all);
-            &-expanded {
-                &:extend(.abs-tax-total-expanded all);
+            .cart-tax-total {
+                &:extend(.abs-tax-total all);
+                &-expanded {
+                    &:extend(.abs-tax-total-expanded all);
+                }
+            }
+            .product-image-wrapper {
+                &:extend(.abs-reset-image-wrapper all);
+            }
+            .action.configure {
+                display: inline-block;
+                margin: @indent__s 0 0;
+            }
+            .item .message {
+                margin-top: @indent__base;
             }
         }
-        .product-image-wrapper {
-            &:extend(.abs-reset-image-wrapper all);
-        }
-        .action.configure {
-            display: inline-block;
-            margin: @indent__s 0 0;
-        }
-        .item .message {
-            margin-top: @indent__base;
-        }
-    }
 
-    //  Discount
-    &-discount {
-        clear: left;
-        border-bottom: @border-width__base solid @border-color__base;
-        .block {
-            &:extend(.abs-cart-block all);
-        }
-        .fieldset > .field > .label {
-            display: none;
-        }
-        .actions-toolbar .primary {
-            .action {
-                &.primary,
-                &.cancel {
-                    &:extend(.abs-revert-to-action-secondary all);
-                    border-top-left-radius: 0;
-                    border-bottom-left-radius: 0;
+        //  Discount
+        &-discount {
+            border-bottom: @border-width__base solid @border-color__base;
+            clear: left;
+            .block {
+                &:extend(.abs-cart-block all);
+                > .title {
+                    strong {
+                        color: @color-blue1;
+                        font-weight: @font-weight__regular;
+                    }
                 }
             }
-        }
-        .action.check {
-            &:extend(.abs-action-button-as-link all);
-            font-weight: @font-weight__regular;
-        }
-        .fieldset {
-            display: table;
-            width: 100%;
-        }
-        .field {
-            display: table-cell;
-        }
-        .actions-toolbar {
-            display: table-cell;
-            vertical-align: top;
-            width: 1%;
-            .action {
-                &.primary,
-                &.cancel {
-                    border-top-left-radius: 0;
-                    border-bottom-left-radius: 0;
-                    margin: 0 0 0 -1px;
-                    white-space: nowrap;
-                    width: auto;
+            .fieldset > .field > .label {
+                display: none;
+            }
+            .actions-toolbar .primary {
+                .action {
+                    &.primary,
+                    &.cancel {
+                        &:extend(.abs-revert-to-action-secondary all);
+                        border-bottom-left-radius: 0;
+                        border-top-left-radius: 0;
+                    }
                 }
             }
-            .secondary {
-                position: absolute;
-                bottom: 5px;
-                left: @mobile-cart-padding;
+            .action.check {
+                &:extend(.abs-action-button-as-link all);
+                font-weight: @font-weight__regular;
+            }
+            .fieldset {
+                display: table;
+                width: 100%;
+            }
+            .field {
+                display: table-cell;
+            }
+            .actions-toolbar {
+                display: table-cell;
+                vertical-align: top;
+                width: 1%;
+                .action {
+                    &.primary,
+                    &.cancel {
+                        border-bottom-left-radius: 0;
+                        border-top-left-radius: 0;
+                        margin: 0 0 0 -1px;
+                        white-space: nowrap;
+                        width: auto;
+                    }
+                }
+                .secondary {
+                    bottom: 5px;
+                    left: @mobile-cart-padding;
+                    position: absolute;
+                }
             }
         }
-    }
 
-    //  Empty cart
-    &-empty {
-        padding-left: @layout__width-xs-indent;
-        padding-right: @layout__width-xs-indent;
-    }
+        //  Empty cart
+        &-empty {
+            padding-left: @layout__width-xs-indent;
+            padding-right: @layout__width-xs-indent;
+        }
 
-    .cart-tax-info + .cart-tax-total {
-        display: block;
+        .cart-tax-info + .cart-tax-total {
+            display: block;
+        }
     }
 }
 
-}
-
 //
-//    Mobile
-//--------------------------------------
+//  Mobile
+//  _____________________________________________
+
 .media-width(@extremum, @break) when (@extremum = 'max') and (@break = @screen__s) {
     .cart {
         &-totals {
-             .table.totals {
-                 th {
-                     &:extend(.abs-col-no-prefix all);
-                     display: table-cell;
-                 }
-                 td {
-                     &:extend(.abs-col-no-prefix all);
-                     display: table-cell;
-                 }
-                 tbody tr:not(:last-child) td {
-                     &:extend(.abs-no-border-bottom-top all);
-                 }
-                 .amount {
-                     text-align: right;
-                 }
-             }
+            .table.totals {
+                th {
+                    &:extend(.abs-col-no-prefix all);
+                    display: table-cell;
+                }
+                td {
+                    &:extend(.abs-col-no-prefix all);
+                    display: table-cell;
+                }
+                tbody tr:not(:last-child) td {
+                    &:extend(.abs-no-border-bottom-top all);
+                }
+                .amount {
+                    text-align: right;
+                }
+            }
         }
         .table.items {
             .col.item,
@@ -469,7 +503,7 @@
 
 .media-width(@extremum, @break) when (@extremum = 'max') and (@break = @screen__m) {
     .cart {
-        // Cart container
+        //  Cart container
         &-container {
             .form-cart {
                 .actions.main {
@@ -541,27 +575,24 @@
 
 
 //
-//    Common
-//--------------------------------------
+//  Common
+//  _____________________________________________
 
 & when (@media-common = true) {
-
-//
-//    Cross sell
-//--------------------------------------
-.block.crosssell {
-    padding: 0 @mobile-cart-padding;
-    margin-top: 70px;
-    .product-item-info {
-        width: 200px;
+    //  Cross sell
+    .block.crosssell {
+        margin-top: 70px;
+        .css(padding, 0 @mobile-cart-padding);
+        .product-item-info {
+            width: 200px;
+        }
     }
 }
 
-}
-
 //
-//    Desktop
-//--------------------------------------
+//  Desktop
+//  _____________________________________________
+
 .media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) {
     .checkout-cart-index {
         .page-main {
@@ -573,7 +604,7 @@
         }
     }
     .cart {
-        // Cart container
+        //  Cart container
         &-container {
             &:extend(.abs-add-clearfix-desktop all);
             .form-cart {
@@ -589,9 +620,9 @@
 
         //  Summary block
         &-summary {
+            .layout-column(2, 2, @layout-column-checkout__width-left);
             padding: 1px @indent__base @indent__m;
             position: relative;
-            .layout-column(2, 2, @layout-column-checkout__width-left);
             > .title {
                 display: block;
             }
@@ -630,30 +661,23 @@
             }
 
             .item {
-                .col {
-                    &.item {
-                        padding: @cart-item-cell-padding-top 8px 20px 0;
-                    }
-                }
-                &-actions td {
-                    padding: 0;
-                    text-align: left;
-                    .actions-toolbar {
-                        margin-top: -40px;
-                        padding-left: 185px;
-                        position: relative;
-                    }
+                .col.item {
+                    padding: @cart-item-cell-padding-top 8px 20px 0;
                 }
             }
 
+            .item-actions td {
+                padding: 0;
+            }
+
             .product {
                 &-item-photo {
                     display: table-cell;
+                    max-width: 100%;
                     padding-right: 20px;
+                    position: static;
                     vertical-align: top;
                     width: 1%;
-                    position: static;
-                    max-width: 100%;
                 }
                 &-item-details {
                     padding-bottom: 35px;
@@ -670,9 +694,9 @@
         //  Discount
         &-discount {
             border: 0;
+            .layout-column(2, 1, @layout-column-checkout__width-main);
             &:extend(.abs-add-box-sizing-desktop all);
             padding-right: 4%;
-            .layout-column(2, 1, @layout-column-checkout__width-main);
             .block {
                 &:extend(.abs-blocks-2columns all);
                 width: 48%;
@@ -694,9 +718,9 @@
             }
             .actions-toolbar {
                 .secondary {
-                    position: absolute;
                     bottom: -30px;
                     left: 0;
+                    position: absolute;
                 }
             }
         }
diff --git a/app/design/frontend/Magento/luma/Magento_GiftMessage/web/css/source/_module.less b/app/design/frontend/Magento/luma/Magento_GiftMessage/web/css/source/_module.less
index 0d7da96fe37d12776dd0a9759bd975a03ec1541c..0d3b4cd47ec03767fba0a2a1291fccd7235b6d4e 100644
--- a/app/design/frontend/Magento/luma/Magento_GiftMessage/web/css/source/_module.less
+++ b/app/design/frontend/Magento/luma/Magento_GiftMessage/web/css/source/_module.less
@@ -4,199 +4,365 @@
 //  */
 
 //
-//    Common
-//--------------------------------------
+//  Variables
+//  _____________________________________________
 
-& when (@media-common = true) {
+@gift-message-field-label__color: @color-gray40;
 
-.gift-message {
-    margin: 0;
-    .fieldset& {
-        > .legend {
-            &:extend(.abs-methods-shipping-title all);
-            border-bottom: 0;
-            padding-bottom: 0;
-        }
-    }
-    .product-image-wrapper {
-        &:extend(.abs-reset-image-wrapper all);
-    }
-    .activate.message {
-        border-top: @border-width__base solid @border-color__base;
-        border-bottom: @border-width__base solid @border-color__base;
-        .css(color, @primary__color);
-        display: block;
-        font-weight: @font-weight__semibold;
-        line-height: 36px;
-        margin: 0 0 @indent__s;
-        padding: 0 @indent__m 0 0;
-        position: relative;
-        .icon-font(
-            @_icon-font-content: @icon-down,
-            @_icon-font-size: 10px,
-            @_icon-font-position: after,
-            @_icon-font-display: block
-        );
-        &:after {
-            position: absolute;
-            right: 12px;
-            top: 0;
-        }
-        &:hover {
-            .css(color, @filter-link-hover);
+@gift-item-block__border-color: @color-gray-light5;
+@gift-item-block__border-width: @border-width__base;
+
+@gift-item-block-title__color: @color-blue1;
+@gift-item-block-title-icon__content: @icon-down;
+@gift-item-block-title-icon__active__content: @icon-up;
+@gift-item-block-title-icon__color: @color-gray52;
+@gift-item-block-title-icon__font-size: 18px;
+@gift-item-block-title-icon__line-height: 20px;
+@gift-item-block-title-icon__margin: 0 0 0 @indent__s;
+
+//
+//  Common
+//  _____________________________________________
+
+& when (@media-common = true) {
+    .gift-message {
+        .actions-toolbar {
+            .action-cancel {
+                &:extend(.abs-action-button-as-link all);
+                display: none;
+            }
         }
-        &.active {
-            border-bottom: 0;
-            .icon-font-symbol(
-                @_icon-font-content: @icon-up,
-                @_icon-font-position: after
-            );
+        .field {
+            .label {
+                .css(color, @gift-message-field-label__color);
+                .css(font-weight, @font-weight__regular);
+            }
         }
     }
-    .options-items {
-        margin-top: @indent__xl;
-        .order-title {
-            margin: 0 0 15px;
-            > .field.choice {
-                .font-size(18);
-                font-weight: @font-weight__light;
-                border-bottom: @border-width__base solid @border-color__base;
-                padding-bottom: @indent__xs;
+
+    .cart.table-wrapper {
+        .item-gift {
+            &._active {
+                .css(border-top, @gift-item-block__border-width solid @gift-item-block__border-color);
+            }
+            .action {
+                margin-right: 0;
             }
         }
-        .order-options {
+    }
+
+    .gift-options {
+        &:extend(.abs-add-clearfix all);
+    }
+
+    .gift-options-title {
+        .css(font-weight, @font-weight__semibold);
+        margin: 0 0 @indent__base;
+    }
+
+    .gift-options-content {
+        .fieldset {
             margin: 0 0 @indent__base;
         }
-        .fieldset {
-            .field.text {
-                padding-right: 0;
-                width: 100%;
-                .input-text {
-                    height: 90px;
+    }
+
+    .gift-summary {
+        position: relative;
+        .actions-toolbar {
+            > .secondary {
+                .action {
+                    margin: 0 0 0 @indent__base;
+                    width: auto;
                 }
             }
         }
-        .field.to {
-            padding-right: 0;
+        .action-edit,
+        .action-delete {
+            &:extend(.abs-action-button-as-link all);
+            .icon-font(
+            @icon-edit,
+            @_icon-font-size: 18px,
+            @_icon-font-line-height: 20px,
+            @_icon-font-text-hide: true,
+            @_icon-font-color: @minicart-icons-color,
+            @_icon-font-color-hover: @primary__color,
+            @_icon-font-color-active: @minicart-icons-color
+            );
         }
-        .extra-options-container {
-            font-weight: @font-weight__regular;
-            .field.choice {
-                margin: @indent__base 0 15px;
-            }
+        .action-delete {
+            .icon-font-symbol(
+            @_icon-font-content: @icon-trash
+            );
         }
     }
-    .options-order-container,
-    .options-items-container {
-        margin-bottom: @indent__s;
+    .gift-summary,
+    .cart.table-wrapper .gift-summary {
+        .actions-toolbar {
+            padding: 0;
+            position: absolute;
+            right: 0;
+            top: 0;
+        }
     }
-    .gift-messages-order {
-        margin-bottom: 25px;
+
+    //
+    //  In-table block
+    //  ---------------------------------------------
+
+    .cart.table-wrapper {
+        .gift-content {
+            display: none;
+            clear: left;
+            float: left;
+            margin-right: -100%;
+            padding: @indent__base 0;
+            width: 100%;
+            &._active {
+                display: block;
+            }
+        }
     }
-    .items {
-        .list-reset-styles();
-        .item {
-            border-bottom: @border-width__base solid @border-color__base;
-            padding: 0 0 @indent__base;
+
+    //
+    //  Collapsible block
+    //  ---------------------------------------------
+
+    .gift-item-block {
+        .css(border-bottom, @gift-item-block__border-width solid @gift-item-block__border-color);
+        margin: 0;
+        &._active {
+            .title {
+                &:after {
+                    .css(content, @gift-item-block-title-icon__active__content);
+                }
+            }
+        }
+
+        .title {
+            .css(color, @gift-item-block-title__color);
+            cursor: pointer;
+            .icon-font(
+            @gift-item-block-title-icon__content,
+            @_icon-font-size: @gift-item-block-title-icon__font-size,
+            @_icon-font-line-height: @gift-item-block-title-icon__line-height,
+            @_icon-font-color: @gift-item-block-title-icon__color,
+            @_icon-font-color-hover: @primary__color,
+            @_icon-font-margin: @gift-item-block-title-icon__margin,
+            @_icon-font-position: after,
+            @_icon-font-display: block
+            );
+            margin: 0;
+            padding: @indent__s @indent__xl @indent__s 15px;
+            position: relative;
+        }
+
+        .content {
             &:extend(.abs-add-clearfix all);
+            padding: @indent__s 0 @indent__base;
+            position: relative;
         }
-        .product {
-            margin: 0 0 @indent__base;
-            .number {
-                .css(color, @primary__color__light);
-                span {
-                    .css(color, @primary__color);
-                    font-weight: @font-weight__semibold;
+    }
+
+    //
+    //  Account order gift message
+    //  ---------------------------------------------
+
+    .order-details-items {
+        .order-gift-message,
+        .block-order-details-gift-message {
+            &:extend(.abs-add-clearfix all);
+            dt {
+                &:after {
+                    content: '';
                 }
             }
-            .name {
-                .font-size(16);
-                font-weight: @font-weight__regular;
+            .label {
+                &:extend(.abs-colon all);
             }
-            .photo.container {
-                margin: 15px 0;
-                img {
-                    display: block;
+            .item-message {
+                clear: left;
+            }
+            .item-options {
+                dt {
+                    .css(font-weight, @font-weight__regular);
+                    margin: @indent__s 0;
                 }
             }
         }
     }
-    .regular-price,
-    .price-including-tax,
-    .price-excluding-tax {
-        &:before {
-            content: attr(data-label) ": ";
-        }
-        .price {
-            font-weight: @font-weight__bold;
+
+    .order-details-items {
+        .order-items {
+            .order-gift-message {
+                &:not(.expanded-content) {
+                    &:extend(.abs-hidden);
+                }
+                .action.close {
+                    &:extend(.abs-no-display all);
+                }
+            }
         }
     }
-    .price-including-tax {
-        .font-size(14);
+
+    .options-order-container,
+    .options-items-container {
+        margin-bottom: @indent__s;
+    }
+
+    .gift-messages-order {
+        margin-bottom: @indent__m;
     }
 }
 
 //
-//    Account order gift message
-//--------------------------------------
-.order-details-items {
-    .order-gift-message,
-    .block-order-details-gift-message {
-        .item-options {
-            dt {
-                margin: @indent__s 0;
-                font-weight: @font-weight__regular;
+//  Mobile
+//  _____________________________________________
+
+.media-width(@extremum, @break) when (@extremum = 'max') and (@break = @screen__m) {
+    .gift-message {
+        .actions-toolbar {
+            .action-update {
+                .font-size(20);
+                padding: 15px;
+                width: 100%;
             }
         }
-        &:extend(.abs-add-clearfix all);
-        dt:after {
-            content: "";
-        }
-        .label {
-            &:extend(.abs-colon all);
+    }
+
+    .gift-item-block {
+        border-bottom: 0;
+        .css(border-top, @gift-item-block__border-width solid @gift-item-block__border-color);
+        .title {
+            &:after {
+                .font-size(12);
+                position: absolute;
+                right: 20px;
+                top: 10px;
+            }
         }
-        .item-message {
-            clear: left;
+        .content {
+            padding-left: 1.5rem;
+            padding-right: 1.5rem;
         }
     }
-}
 
-.order-details-items .order-items .order-gift-message {
-    &:not(.expanded-content) {
-        &:extend(.abs-hidden);
+    .gift-message-summary {
+        padding-right: 7rem;
     }
-    .action.close {
-        &:extend(.abs-no-display all);
-    }
-}
 
+    .cart.table-wrapper {
+        .action-gift {
+            .icon-font(
+            @icon-present,
+            @_icon-font-size: 18px,
+            @_icon-font-line-height: 20px,
+            @_icon-font-text-hide: true,
+            @_icon-font-color: @minicart-icons-color,
+            @_icon-font-color-hover: @primary__color,
+            @_icon-font-color-active: @minicart-icons-color,
+            @_icon-font-position: after
+            );
+            &._active {
+                border: @border-width__base solid @color-gray-light5;
+                border-bottom-color: @color-white;
+                margin: -@indent__xs 14px -1px -15px;
+                padding: 4px @indent__s 9px 14px;
+                &:after {
+                    color: @primary__color;
+                }
+            }
+        }
+        .gift-content {
+            border-top: @border-width__base solid @color-gray-light5;
+            margin-left: -@mobile-cart-padding;
+            margin-right: -@mobile-cart-padding;
+            padding-left: @mobile-cart-padding;
+            padding-right: @mobile-cart-padding;
+            overflow: hidden;
+        }
+    }
 }
 
 //
-//    Mobile
-//--------------------------------------
+//  Desktop
+//  _____________________________________________
 
 .media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) {
     .gift-message {
-        .items {
-            .item {
-                margin: 0 0 @indent__base;
-                &:extend(.abs-add-clearfix-desktop all);
-            }
-            .product {
-                float: left;
-                margin: 0 @indent__l 0 0;
-                width: 145px;
-                .name {
-                    .font-size(16);
-                    font-weight: @font-weight__regular;
-                    max-width: 145px;
-                    text-overflow: ellipsis;
-                    overflow: hidden;
+        .actions-toolbar {
+            padding: 0;
+            .secondary {
+                float: right;
+                .action {
+                    float: right;
+                    margin-left: @indent__base;
+                    margin-right: 0;
+                }
+                .action-cancel {
+                    display: block;
+                    float: left;
+                    margin-top: 6px;
+                }
+            }
+        }
+        .field {
+            &:extend(.abs-clearfix all);
+            .form-field-type-revert(
+            @_type: inline,
+            @_type-inline-label-align: left
+            );
+        }
+    }
+    .gift-options-title {
+        .css(font-weight, @font-weight__light);
+        .font-size(18);
+    }
+
+    .gift-item-block {
+        .title {
+            padding: @indent__base 0;
+        }
+    }
+
+    .item-gift {
+        td {
+            padding-left: 0;
+            padding-right: 0;
+        }
+    }
+
+    //
+    //  In-table block
+    //  ---------------------------------------------
+
+    .cart.table-wrapper {
+        .action-gift {
+            float: left;
+            .icon-font(
+            @icon-down,
+            @_icon-font-size: 18px,
+            @_icon-font-line-height: 20px,
+            @_icon-font-color: @minicart-icons-color,
+            @_icon-font-color-hover: @primary__color,
+            @_icon-font-color-active: @minicart-icons-color,
+            @_icon-font-margin: 0 0 0 @indent__s,
+            @_icon-font-position: after
+            );
+            &._active {
+                &:after {
+                    content: @icon-up;
                 }
             }
-            .options {
-                overflow: hidden;
+        }
+    }
+
+    .cart-container {
+        .cart-gift-item {
+            &:extend(.abs-shopping-cart-items-desktop all);
+            margin-bottom: @indent__base;
+            .gift-options,
+            .gift-summary {
+                padding-bottom: @indent__base;
             }
         }
     }
diff --git a/app/design/frontend/Magento/luma/Magento_Wishlist/web/css/source/_module.less b/app/design/frontend/Magento/luma/Magento_Wishlist/web/css/source/_module.less
index 8b5f2b983d6659f75888cf8de06183ec9f1d34f3..c1388fd10a0f9dfd7f06f7c17c96d0b87ba272c7 100644
--- a/app/design/frontend/Magento/luma/Magento_Wishlist/web/css/source/_module.less
+++ b/app/design/frontend/Magento/luma/Magento_Wishlist/web/css/source/_module.less
@@ -4,149 +4,148 @@
 //  */
 
 //
-//    Common
-//--------------------------------------
+//  Common
+//  _____________________________________________
 
 & when (@media-common = true) {
-
-.form.wishlist.items {
-    .actions-toolbar {
-        &:extend(.abs-reset-left-margin all);
+    .form.wishlist.items {
+        .actions-toolbar {
+            &:extend(.abs-reset-left-margin all);
+        }
     }
-}
 
-.product-social-links,
-.block-bundle-summary,
-.product-item,
-.table-comparison {
-    .action.towishlist {
-        &:extend(.abs-actions-addto all);
-        .icon-font-symbol(
+    .product-social-links,
+    .block-bundle-summary,
+    .product-item,
+    .table-comparison {
+        .action.towishlist {
+            &:extend(.abs-actions-addto all);
+            .icon-font-symbol(
             @_icon-font-content: @icon-wishlist-full,
             @_icon-font-position: before
-        );
+            );
+        }
     }
-}
 
-.account .table-wrapper .data.table.wishlist {
-    .table-bordered(
+    .account .table-wrapper .data.table.wishlist {
+        .table-bordered(
         @_table_type: horizontal
-    );
-    thead > tr > th {
-        border-bottom: 0;
-    }
-    tbody > tr:last-child > td {
-        border-bottom: 1px solid @table__border-color;
-    }
-    .product.name {
-        display: inline-block;
-        margin-bottom: @indent__s;
-    }
-    .box-tocart {
-        margin: @indent__s 0;
-        .qty {
-            vertical-align: middle;
-            &:extend(.abs-input-qty all);
+        );
+        thead > tr > th {
+            border-bottom: 0;
         }
-    }
-    .col {
-        &.item {
-            width: 50%;
+        tbody > tr:last-child > td {
+            border-bottom: 1px solid @table__border-color;
         }
-        &.photo {
-            max-width: 150px;
+        .product.name {
+            display: inline-block;
+            margin-bottom: @indent__s;
         }
-        &.selector {
-            max-width: 15px;
+        .box-tocart {
+            margin: @indent__s 0;
+            .qty {
+                vertical-align: middle;
+                &:extend(.abs-input-qty all);
+            }
         }
-    }
-    textarea {
-        margin: @indent__s 0;
-    }
-    .input-text.qty {
-        margin-bottom: @indent__s;
-    }
-    .action.primary {
-        vertical-align: top;
-    }
-    .price {
-        font-weight: @font-weight__bold;
-    }
-}
-
-.link.wishlist {
-    .counter {
-        .css(color, @text__color__muted);
-        white-space: nowrap;
-        &:before {
-            content: "(";
+        .col {
+            &.item {
+                width: 50%;
+            }
+            &.photo {
+                max-width: 150px;
+            }
+            &.selector {
+                max-width: 15px;
+            }
+        }
+        textarea {
+            margin: @indent__s 0;
+        }
+        .input-text.qty {
+            margin-bottom: @indent__s;
         }
-        &:after {
-            content: ")";
+        .action.primary {
+            vertical-align: top;
+        }
+        .price {
+            font-weight: @font-weight__bold;
         }
     }
-}
 
-.block-wishlist {
-    .block-title {
-        &:extend(.abs-block-widget-title all);
-    }
-    .counter {
-        &:extend(.abs-block-items-counter all);
+    .link.wishlist {
+        .counter {
+            .css(color, @text__color__muted);
+            white-space: nowrap;
+            &:before {
+                content: '(';
+            }
+            &:after {
+                content: ')';
+            }
+        }
     }
-    .product-item-name {
-        margin-right: @indent__m;
+
+    .block-wishlist {
+        .block-title {
+            &:extend(.abs-block-widget-title all);
+        }
+        .counter {
+            &:extend(.abs-block-items-counter all);
+        }
+        .product-item-name {
+            margin-right: @indent__m;
+        }
     }
-}
 
-.products-grid.wishlist {
-    .product {
-        &-item {
-            &-photo {
-                margin-bottom: @indent__s;
-                display: block;
-            }
-            &-name {
-                margin-top: 0;
-            }
-            .price-box {
-                margin: 0;
-            }
-            .comment-box {
-                .label {
-                    &:extend(.abs-visually-hidden all);
+    .products-grid.wishlist {
+        .product {
+            &-item {
+                &-photo {
+                    display: block;
+                    margin-bottom: @indent__s;
                 }
-            }
-            &-comment {
-                display: block;
-                margin: @indent__s 0;
-                height: 42px;
-            }
-            &-actions {
-                > * {
-                    margin-right: 15px;
-                    &:last-child {
-                        margin-right: 0;
+                &-name {
+                    margin-top: 0;
+                }
+                .price-box {
+                    margin: 0;
+                }
+                .comment-box {
+                    .label {
+                        &:extend(.abs-visually-hidden all);
                     }
                 }
-            }
-            .box-tocart {
-                input.qty {
-                    &:extend(.abs-input-qty all);
+                &-comment {
+                    display: block;
+                    height: 42px;
+                    margin: @indent__s 0;
                 }
-                .tocart {
-                    &:extend(.abs-revert-secondary-size all);
+                &-actions {
+                    > * {
+                        margin-right: 15px;
+                        &:last-child {
+                            margin-right: 0;
+                        }
+                    }
+                }
+                .box-tocart {
+                    input.qty {
+                        &:extend(.abs-input-qty all);
+                    }
+                    .tocart {
+                        &:extend(.abs-revert-secondary-size all);
+                    }
                 }
             }
         }
     }
 }
 
-}
-
 //
-//    Mobile
-//--------------------------------------
+//  Mobile
+//  _____________________________________________
+
 .media-width(@extremum, @break) when (@extremum = 'max') and (@break = @screen__s) {
     .products-grid.wishlist {
         .product-item {
@@ -160,15 +159,15 @@
 
 .media-width(@extremum, @break) when (@extremum = 'max') and (@break = @screen__m) {
     .products-grid.wishlist {
-        margin-right: -@indent__s;
         margin-bottom: @indent__l;
+        margin-right: -@indent__s;
         .product {
             &-item {
                 padding: @indent__base @indent__s @indent__base @indent__base;
                 position: relative;
                 &-photo {
-                    margin-right: @indent__base;
                     float: left;
+                    margin-right: @indent__base;
                 }
                 &-name {
                     .font-size(16);
@@ -226,6 +225,20 @@
             }
         }
     }
+
+    .cart.table-wrapper {
+        .action-towishlist {
+            .icon-font(
+            @icon-wishlist-full,
+            @_icon-font-size: 18px,
+            @_icon-font-line-height: 20px,
+            @_icon-font-text-hide: true,
+            @_icon-font-color: @minicart-icons-color,
+            @_icon-font-color-hover: @primary__color,
+            @_icon-font-color-active: @minicart-icons-color
+            );
+        }
+    }
 }
 
 .media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__s) {
@@ -243,8 +256,9 @@
 }
 
 //
-//    Desktop
-//--------------------------------------
+//  Desktop
+//  _____________________________________________
+
 .media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) {
     .products-grid.wishlist {
         .product {
@@ -263,8 +277,8 @@
                     margin: @indent__s 0 0;
                     > * {
                         display: inline-block;
-                        margin-top: 7px;
                         margin-bottom: 7px;
+                        margin-top: 7px;
                     }
                 }
                 .fieldset {
@@ -292,7 +306,7 @@
             }
         }
     }
-    .wishlist-index-index  {
+    .wishlist-index-index {
         .product-item-info {
             width: auto;
         }
@@ -302,18 +316,19 @@
 .media-width(@extremum, @break) when (@extremum = 'min') and (@break = @screen__m) {
     .wishlist-index-index {
         .product-item-inner {
+            @_shadow: 3px 4px 4px 0 rgba(0, 0, 0, .3);
+
+            .css(background, @color-white);
+            .css(border, @border-width__base solid @color-gray-light2);
+            border-top: none;
+            .css(box-shadow, @_shadow);
             display: none;
-            position: absolute;
             left: 0;
+            margin: 9px 0 0 -1px;
+            padding: 0 9px 9px;
+            position: absolute;
             right: -1px;
             z-index: 2;
-            .css(background, @color-white);
-            padding: 0 9px 9px;
-            margin: 9px 0 0 -1px;
-            border: 1px solid @color-gray-light2;
-            border-top: none;
-            @_shadow: 3px 4px 4px 0 rgba(0, 0, 0, .3);
-            .css(box-shadow, @_shadow);
             .comment-box {
                 margin-top: -18px;
             }
@@ -328,10 +343,10 @@
                 margin: 0;
             }
             .product-item {
-                width: 24.439%;
-                margin-left: calc(~"(100% - 4 * 24%) / 3");
                 margin-bottom: @indent__base;
+                margin-left: calc(~"(100% - 4 * 24%) / 3");
                 padding: 0;
+                width: 24.439%;
                 &:nth-child(4n+1) {
                     margin-left: 0;
                 }
diff --git a/app/design/frontend/Magento/luma/composer.json b/app/design/frontend/Magento/luma/composer.json
index 84cbda7b1c907d6bc7262137162476f6a1d94ca3..011484f9abf79fb35ffa25a064e3debc221029ee 100644
--- a/app/design/frontend/Magento/luma/composer.json
+++ b/app/design/frontend/Magento/luma/composer.json
@@ -3,12 +3,12 @@
     "description": "N/A",
     "require": {
         "php": "~5.5.0|~5.6.0",
-        "magento/theme-frontend-blank": "0.74.0-beta13",
-        "magento/framework": "0.74.0-beta13",
+        "magento/theme-frontend-blank": "0.74.0-beta14",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-theme",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/app/design/frontend/Magento/luma/web/css/source/_extends.less b/app/design/frontend/Magento/luma/web/css/source/_extends.less
index 00d74dcf5d0740f048ab7cd0ce0a9f2eb1b8b8b7..cc4ab06b849cb5eec4233e701e915deedb4285ed 100644
--- a/app/design/frontend/Magento/luma/web/css/source/_extends.less
+++ b/app/design/frontend/Magento/luma/web/css/source/_extends.less
@@ -753,11 +753,8 @@
     margin: 0;
     > .title {
         &:extend(.abs-toggling-title all);
-        .column.main & {
-            strong {
-                .font-size(14);
-                font-weight: @font-weight__semibold;
-            }
+        &:after {
+            color: @color-gray52;
         }
     }
     .content {
diff --git a/app/design/frontend/Magento/luma/web/css/source/_variables.less b/app/design/frontend/Magento/luma/web/css/source/_variables.less
index a6ad436b94df7ea39e07279d315ea795ea8986ce..dbdbeb65ad660dccec8e724925392cf18b254c96 100644
--- a/app/design/frontend/Magento/luma/web/css/source/_variables.less
+++ b/app/design/frontend/Magento/luma/web/css/source/_variables.less
@@ -31,6 +31,8 @@
 @icon-star-empty: '\e625';
 @icon-download: '\e626';
 @icon-private: '\e629';
+@icon-present: '\e62a';
+@icon-gift-registry: '\e62b';
 
 @icon-calendar__font-size: 23px;
 
diff --git a/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.eot b/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.eot
index 9c574aed777d1435ebaecb4511cbbd877aa3e229..4a12dddaf3e4556c2fa7abda0181abd7950043e0 100644
Binary files a/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.eot and b/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.eot differ
diff --git a/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.svg b/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.svg
index 171e99f64616714b0c97a1155fc6498b90d4a147..5e68e79f8e3e44488f98f45b6a4d1408f485d2ec 100644
--- a/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.svg
+++ b/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg"><defs><font horiz-adv-x="512"><font-face units-per-em="512" ascent="480" descent="-32"/><glyph horiz-adv-x="256"/><glyph unicode="" d="M436.608 435.568c-65.68 31.424-144.064 2.832-174.976-63.84-2.16-4.64-4.016-10.448-5.664-17.2-1.648 6.752-3.504 12.56-5.632 17.2-30.944 66.672-109.248 95.264-174.944 63.84-65.6-31.424-93.744-110.96-62.832-177.648C43.488 191.248 255.904.08 255.904.08s.016.224.048.576c.048-.352.064-.576.064-.576s212.512 191.168 243.44 257.84c30.896 66.688 2.832 146.224-62.848 177.648z"/><glyph unicode="" d="M362.533 425.05c-49.81-49.79-20.81-20.77-20.81-20.77l96.403-96.385s-31.067-31.05 20.772 20.773-46.61 146.194-96.365 96.384zm-42.386-41.38L92.16 155.686l.33-.293L38.417 8.868 188.25 59.556l.312-.31.786.804v.02l227.2 227.2-96.403 96.402zm-141.11-279.295l-78.812-33.28 37.047 75.044 38.345 38.36 41.764-41.786-38.34-38.346z"/><glyph unicode="" d="M255.952 480L0 32h512L255.952 480zm31.168-126.192v-65.36l-16.688-128.544h-27.088l-18.032 128.544-.992 65.36h62.8zM224.096 64.112v64.112h64.24V64.112h-64.24z"/><glyph unicode="" d="M363.923 112.02C334.118 83.254 295.26 68.516 255.91 68.48c-35.145.037-70.2 11.758-99.347 35.933-37.03 30.83-56.046 74.97-56.1 119.66 0 7.443.55 14.83 1.59 22.18l-60.67-11.373c-.165-3.602-.293-7.186-.293-10.807-.036-61.495 26.46-122.9 77.55-165.285 40.008-33.335 88.886-49.683 137.25-49.683h.13c56.21 0 112.163 22.217 153.745 64.914L449.61 34.24l.31 124.745-131.808.35 45.805-47.326zm29.42 277.21c-40.045 33.335-88.922 49.664-137.27 49.664-55.808 0-111.397-21.833-152.923-63.945L65.463 409.74l-.677-120.722 130.487-.75-46.336 48.494c29.64 28.252 68.188 42.697 107.154 42.733 35.11-.036 70.22-11.72 99.33-35.93 37.03-30.83 56.05-74.937 56.14-119.7 0-6.437-.456-12.89-1.224-19.365l60.436 11.593c.036 2.613.164 5.21.164 7.77-.036 61.55-26.514 122.9-77.587 165.357z"/><glyph unicode="" d="M95.792-32h320.4v320.08h-320.4V-32zm222.544 260.512c0 9.904 8.032 17.904 17.952 17.904 9.904 0 17.936-8 17.936-17.904V39.776c0-9.888-8.032-17.92-17.936-17.92-9.92 0-17.952 8.032-17.952 17.92v188.736zm-80.288 0c0 9.904 8.032 17.904 17.92 17.904s17.92-8 17.92-17.904V39.776c0-9.888-8.032-17.92-17.92-17.92s-17.92 8.032-17.92 17.92v188.736zm-80.448 0c0 9.904 8 17.904 17.92 17.904 9.888 0 17.92-8 17.92-17.904V39.776c0-9.888-8.032-17.92-17.92-17.92-9.92 0-17.92 8.032-17.92 17.92v188.736zm265.616 188.016h-71.232v10.896c0 29.04-19.76 52.576-48.8 52.576h-94.72c-29.008 0-48.48-23.536-48.48-52.576v-10.896H88.752c-13.696 0-24.768-11.088-24.768-24.752v-71.984h384v71.984c0 13.664-11.04 24.752-24.768 24.752zm-103.28 0H191.744v14.704c.032 9.248 7.488 16.736 16.72 16.768h94.72c9.216-.032 16.704-7.52 16.752-16.768v-14.704z"/><glyph unicode="" d="M511.52 278.496c-1.312 4.096-5.152 6.88-9.44 6.88H321.376L265.424 457.12c-1.344 4.096-5.136 6.88-9.44 6.88-4.272 0-8.096-2.784-9.44-6.88l-56.24-171.744H9.92c-4.256 0-8.096-2.784-9.44-6.88-1.312-4.064.128-8.592 3.584-11.088l145.984-106.32-56.256-172.72c-1.328-4.096.128-8.592 3.616-11.12 3.456-2.496 8.208-2.496 11.664 0L255.968 83.872l146.64-106.624c1.792-1.28 3.76-1.936 5.808-1.936 2.096 0 4.144.656 5.856 1.936 3.568 2.528 4.96 7.008 3.6 11.12l-56.24 172.72 146.288 106.32c3.488 2.496 4.928 6.992 3.6 11.088z"/><glyph unicode="" d="M473.015 200.375v49.37l-7.003 2.27-52.882 17.243-14.116 34.103 27.154 57.387-34.908 34.907-6.583-3.31-49.555-25.197-34.103 14.117-21.4 59.755h-49.37l-2.287-6.986-17.262-52.88-34.047-14.1-57.4 27.136-34.924-34.927 3.31-6.564 25.18-49.59-14.08-34.03-59.76-21.414v-49.39l6.95-2.25 52.9-17.28 14.1-34.066L85.813 87.3l34.925-34.925 6.53 3.328 49.59 25.2 34.063-14.115 21.394-59.76h49.37l2.286 6.986 17.28 52.883 34.03 14.116 57.398-27.137 34.95 34.904-3.346 6.546-25.197 49.572 14.116 34.067 59.813 21.413zM256 154.86c-38.2 0-69.156 30.958-69.156 69.14 0 38.217 30.958 69.156 69.156 69.156 38.163 0 69.156-30.94 69.156-69.156 0-38.18-31.012-69.14-69.156-69.14z"/><glyph unicode="" d="M31.008 351.36L256 111.376 481.04 351.36z"/><glyph unicode="" d="M383.415 226.596l-212.57 218.587-37.286-34.98 178.28-183.278L128.566 38.473l36.48-35.657 205.66 211.456-.202.2z"/><glyph unicode="" d="M52.928 345.2h406.144c11.056 0 20 8.976 20 20.016 0 11.072-8.944 20.032-20 20.032H52.928c-11.056 0-20.016-8.96-20.016-20.032 0-11.04 8.96-20.016 20.016-20.016zm406.144-101.184H52.928c-11.056 0-20.016-8.944-20.016-20.016s8.96-20.016 20.016-20.016h406.144c11.056 0 20 8.944 20 20.016s-8.928 20.016-20 20.016zm0-141.216H52.928c-11.056 0-20.016-8.96-20.016-20.032s8.96-20.016 20.016-20.016h406.144c11.056 0 20 8.944 20 20.016s-8.928 20.032-20 20.032z"/><glyph unicode="" d="M256.144 480C167.024 480 94.8 407.76 94.8 318.624 94.8 229.52 256.144-32 256.144-32S417.52 229.52 417.52 318.624C417.52 407.76 345.328 480 256.144 480zm0-210.384c-27.056 0-49.024 21.952-49.024 49.008 0 27.072 21.984 49.024 49.024 49.024 27.104 0 49.088-21.952 49.088-49.024 0-27.056-21.984-49.008-49.088-49.008z"/><glyph unicode="" d="M0 256.144h224.032v223.808H0V256.144zm288.128 223.808v-95.728h224.176v95.728H288.128zM0-32h224.032v223.808H0V-32zm288.128 288.144h224.176v95.728H288.128v-95.728zm0-160.064h224.176v95.728H288.128V96.08zm0-128.08h224.176v95.712H288.128V-32z"/><glyph unicode="" d="M332.764 119.003c-9.216 0-45.495-56.027-65.243-56.027-5.28 0-7.86 4.644-7.86 9.216 0 10.57 7.24 27.044 11.157 36.937l47.396 128.38c23.77 63.89-6.546 81.02-34.87 81.02-38.218 0-72.45-19.09-98.78-44.123-8.576-8.577-37.523-36.207-37.523-48.09 0-3.934 3.93-8.578 8.575-8.578 11.813 0 43.447 57.307 67.803 57.307 5.285 0 11.19-5.923 6.583-17.754l-46.08-115.97c-4.643-11.153-27.043-65.17-27.043-96.785 0-25.014 16.476-36.187 40.192-36.187 66.52.003 143.54 81.65 143.54 100.76-.02 5.925-4.59 9.892-7.846 9.892zm-13.22 320.658c-28.948 0-54.017-23.68-54.017-52.66 0-27.01 17.792-44.8 44.837-44.8 29.55 0 54.62 22.4 54.62 52.7 0 27.01-19.072 44.767-45.44 44.767z"/><glyph unicode="" d="M0 351.552h128.464V480H0V351.552zm191.76 0h128.528V480H191.76V351.552zM383.568 480V351.552h128.496V480H383.568zM0 159.744h128.464v128.464H0V159.744zm191.76 0h128.528v128.464H191.76V159.744zm191.808 0h128.496v128.464H383.568V159.744zM0-32h128.464V96H0V-32zm191.76 0h128.528V96H191.76V-32zm191.808 0h128.496V96H383.568V-32z"/><glyph unicode="" d="M255.296 450.464c-124.688 0-225.76-101.072-225.76-225.76 0-124.672 101.072-225.76 225.76-225.76 124.672 0 225.76 101.088 225.76 225.76 0 124.688-101.072 225.76-225.76 225.76zm-23.36-355.888L106 222.608l32.208 25.936 72.864-57.088c29.76 35.424 96 106.032 187.312 161.984l7.696-17.792c-83.808-77.088-152.48-185.6-174.144-241.072z"/><glyph unicode="" d="M0 241.12h512v-34.064H0v34.064z"/><glyph unicode="" d="M478.263 426.15c-142.555-87.39-245.98-197.633-292.48-252.948L71.99 262.362l-50.266-40.538L218.387 21.85c33.847 86.675 141.056 256.11 271.872 376.486l-12 27.814z"/><glyph unicode="" d="M220.576 83.248c-26.352 0-47.696-21.376-47.696-47.712s21.344-47.664 47.696-47.664c26.336 0 47.696 21.328 47.696 47.664s-21.36 47.712-47.696 47.712zm164.768 0c-26.4 0-47.76-21.376-47.76-47.712s21.344-47.664 47.76-47.664c26.288 0 47.632 21.328 47.632 47.664s-21.344 47.712-47.632 47.712zm74.512 267.072H140s-19.152 52.608-37.392 84.864c-14.128 24.976-43.344 23.968-43.344 23.968-20.096 0-33.024-12.288-33.024-32.4 0-20.096 15.92-36.16 36.032-36.16l8.496-.08 95.2-262.192 266.832-.208S481.584 327.744 479.072 320c8.944 27.68-2.448 30.32-19.216 30.32zm-293.328-92.976c-14 0-25.36 11.36-25.36 25.376s11.36 25.392 25.36 25.392c14.016 0 25.36-11.376 25.36-25.392s-11.344-25.376-25.36-25.376zm54.24-84.704c-14.016 0-25.376 11.376-25.376 25.392 0 13.984 11.36 25.36 25.376 25.36 14 0 25.36-11.376 25.36-25.36.016-14.016-11.36-25.392-25.36-25.392zm27.888 84.704c-14 0-25.376 11.36-25.376 25.376s11.36 25.392 25.376 25.392c14 0 25.36-11.376 25.36-25.392s-11.36-25.376-25.36-25.376zm54.24-84.704c-14 0-25.36 11.376-25.36 25.392 0 13.984 11.36 25.36 25.36 25.36 14.048 0 25.44-11.376 25.44-25.36 0-14.016-11.392-25.392-25.44-25.392zm27.952 84.704c-14 0-25.408 11.36-25.408 25.376s11.408 25.392 25.408 25.392c14 0 25.328-11.376 25.328-25.392s-11.328-25.376-25.328-25.376zm54.192-84.704c-13.984 0-25.328 11.376-25.328 25.392 0 13.984 11.36 25.36 25.328 25.36 14 0 25.408-11.376 25.408-25.36 0-14.016-11.408-25.392-25.408-25.392zm27.92 84.704c-14.016 0-25.36 11.36-25.36 25.376s11.344 25.392 25.36 25.392c14.048 0 25.376-11.376 25.376-25.392s-11.328-25.376-25.376-25.376z"/><glyph unicode="" d="M142.992 332.768c10.352 0 18.8 8.4 18.8 18.8v67.68c0 10.368-8.432 18.784-18.8 18.784-10.384 0-18.8-8.4-18.8-18.784v-67.68c0-10.4 8.416-18.8 18.8-18.8zm251.392 50.576v-.32c7.776-6.944 12.72-17.008 12.72-28.288 0-20.816-16.88-37.712-37.744-37.712s-37.76 16.912-37.76 37.712c0 11.264 4.976 21.344 12.784 28.288v.32H167.968v-.32c7.824-6.944 12.768-17.008 12.768-28.288 0-20.816-16.896-37.712-37.728-37.712-20.864 0-37.744 16.912-37.744 37.712 0 11.264 4.928 21.344 12.752 28.288v.32H32.48V-.256h447.248v383.6h-85.344zM448.72 32.832H65.568v254.72H448.72V32.832zm-79.36 299.936c10.384 0 18.784 8.4 18.784 18.8v67.68c0 10.368-8.4 18.784-18.784 18.784-10.352 0-18.816-8.4-18.816-18.784v-67.68c0-10.4 8.464-18.8 18.816-18.8zm-20.144-148.64H301.28v-47.872h47.952v47.872zm0 71.984H301.28v-47.824h47.952v47.824zm0-142H301.28V66.24h47.952v47.872zm67.44 142h-47.92v-47.824h47.92v47.824zm0-71.984h-47.92v-47.872h47.92v47.872zm-134.96 71.984h-47.872v-47.824h47.872v47.824zM146.8 184.128H98.944v-47.872H146.8v47.872zm67.488-70.016H166.4V66.24h47.872v47.872zm-67.488 0H98.944V66.24H146.8v47.872zm134.896 70.016h-47.872v-47.872h47.872v47.872zm0-70.016h-47.872V66.24h47.872v47.872zm-67.408 70.016H166.4v-47.872h47.872v47.872zm0 71.984H166.4v-47.824h47.872v47.824z"/><glyph unicode="" d="M256 444.727L55.186 201.437H186.24V3.29h139.575v198.144h131.017z"/><glyph unicode="" d="M325.78 246.583v198.144H186.185V246.583h-131L256.02 3.29l200.81 243.294z"/><glyph unicode="" d="M487.232 35.872s-78.176 80.288-109.328 111.312c-13.552 13.552-22.832 22.752-22.832 22.752 10.56 15.088 18.816 31.616 24.704 49.392 5.84 17.76 8.752 36.496 8.752 56.192 0 25.36-4.816 49.2-14.448 71.552-9.664 22.32-22.784 41.824-39.456 58.432-16.64 16.688-36.144 29.824-58.496 39.472-22.336 9.664-46.176 14.496-71.536 14.496-25.344 0-49.184-4.848-71.552-14.496-22.336-9.648-41.712-22.784-58.192-39.472-16.416-16.608-29.52-36.128-39.152-58.448C26.032 324.72 21.2 300.864 21.2 275.504c0-25.376 4.848-49.216 14.496-71.552 9.632-22.304 22.72-41.792 39.152-58.464 16.464-16.608 35.856-29.776 58.176-39.456 22.368-9.664 46.208-14.448 71.552-14.448 19.68 0 38.416 2.88 56.208 8.768 17.776 5.856 34.288 14.144 49.36 24.72 0 0 8.576-8.512 21.2-21.216C365.856 69.216 441.76-9.536 441.76-9.536c11.456-4.992 29.712.336 38.848 8.064 9.04 7.776 14.096 23.984 6.624 37.344zM327.792 223.28c-7.008-16.192-16.576-30.336-28.624-42.336-12.096-12.048-26.192-21.616-42.336-28.608-16.128-7.024-33.392-10.528-51.68-10.528-18.704 0-36.096 3.504-52.256 10.528-16.16 7.008-30.288 16.56-42.336 28.608-12.048 12.016-21.616 26.16-28.608 42.336-7.008 16.112-10.512 33.568-10.512 52.24 0 18.272 3.504 35.632 10.512 51.984 6.992 16.336 16.56 30.56 28.608 42.592 12.048 12.096 26.176 21.664 42.336 28.608 16.16 7.056 33.552 10.512 52.256 10.512 18.288 0 35.552-3.456 51.68-10.512 16.144-6.96 30.24-16.512 42.336-28.608 12.032-12.032 21.616-26.256 28.624-42.592 7.008-16.352 10.48-33.712 10.48-51.984.016-18.672-3.456-36.128-10.48-52.24z"/><glyph unicode="" d="M483.255 415.177l-36.023 35.968-191.25-191.268-191.25 191.268-35.986-35.968 191.268-191.27L28.89 32.767l35.97-35.93L256 187.94 447.12-3.164l35.932 35.932L291.95 223.89z"/><glyph unicode="" d="M200.21 226.89l178.213 183.314-37.248 34.98-212.608-218.587 218.46-223.78 36.388 35.657z"/><glyph unicode="" d="M256 335.168L31.008 95.184H481.04z"/><glyph unicode="" d="M96.624 451.12V-3.12L409.552 224z"/><glyph unicode="" d="M102.992 224L415.904-3.12v454.24z"/><glyph unicode="" d="M0 .464h63.984V480H0V.464zM512.08 480H96.256V192.112H512.08L373.872 334.144 512.08 480z"/><glyph unicode="" d="M512 241.12H273.488V480h-34.016V241.12H0v-34.064h239.472V-32h34.016v239.056H512z"/><glyph unicode="" d="M255.968 228.064l221.488 155.84c-2.656.528-5.344.848-8.128.848H42.672c-2.8 0-5.504-.32-8.144-.848l221.44-155.84zm.96-59.568l-.96 1.408-.944-1.408L.464 347.632c-.176-1.6-.464-3.2-.464-4.816V75.104C0 51.2 19.104 31.792 42.672 31.792h426.656c23.6 0 42.688 19.408 42.688 43.312v267.712c0 1.632-.288 3.216-.496 4.816L256.928 168.496z"/><glyph unicode="" d="M127.584 31.776v127.632H0V31.776h127.584zM319.248 416.24H192.32V31.792h126.928V416.24zm192.336-128.768H384.208V31.792h127.376v255.68z"/><glyph unicode="" d="M255.296 450.464c-124.688 0-225.76-101.072-225.76-225.76 0-124.672 101.072-225.76 225.76-225.76 124.672 0 225.76 101.088 225.76 225.76 0 124.688-101.072 225.76-225.76 225.76zM372.16 144.832l-37.104-37.104-79.088 79.056-79.056-79.04-37.12 37.136 79.024 79.024-79.136 79.12 37.136 37.136 79.12-79.136 79.184 79.184 37.152-37.152-79.2-79.168 79.088-79.056z"/><glyph unicode="" d="M262.748 418.688c-113.664 2.25-207.214-67.803-208.97-156.435-.584-30.83 9.985-59.813 28.8-84.644l-4.918 4.95c32.384-41.62-31.104-153.31-31.104-153.31l142.28 70.35c22.51-7.094 44.16-11.922 69.725-12.45 113.67-2.232 205.117 78.354 206.85 167.003 1.76 88.63-88.96 162.304-202.66 164.535z"/><glyph unicode="" d="M259.163 285.422L461 89.198l38.546 41.07-240.713 234.02L12.47 123.814l39.26-40.1z"/><glyph unicode="" d="M252.82 162.58L51 358.802l-38.53-41.07 240.68-234.02 246.4 240.476-39.332 40.1z"/><glyph unicode="" d="M256-33.248c-141.408 0-256 114.624-256 256s114.592 256 256 256c141.376 0 256-114.624 256-256s-114.608-256-256-256zm0 481.008c-124.048 0-225.008-100.96-225.008-225.008S131.952-2.272 256-2.272s224.992 100.96 224.992 225.008S380.064 447.76 256 447.76zm64.24-228.608l-15.6-12.128c-8.496-6.624-14.128-14.32-16.912-23.152-1.776-5.6-3.008-12.256-3.168-24h-59.712c.88 24.848 3.504 39.968 7.328 49.472 3.808 9.472 13.632 20.368 29.44 32.72l16.032 12.528c5.28 4 9.536 8.32 12.752 13.024 5.872 8.064 8.784 16.976 8.784 26.656 0 11.152-3.248 21.312-9.776 30.496-6.496 9.184-18.4 13.808-35.712 13.808-17.008 0-29.056-5.68-36.16-17.008s-10.592-21.664-10.592-33.84h-63.68c1.744 41.872 16.32 70.16 43.776 87.632 17.344 11.152 38.656 16.752 63.904 16.752 33.216 0 60.784-7.936 82.752-23.808 21.968-15.84 34.8-48.432 34.8-79.6 0-19.088-6.624-26.096-16.144-39.184-5.584-7.92-16.272-18.048-32.112-30.368zM287.728 64h-63.504v63.68h63.504V64z"/><glyph unicode="" d="M416.656 128v135.696H95.984V128H0v199.344c0 13.76 11.168 24.912 24.944 24.912h462.144c13.744 0 24.912-11.152 24.912-24.912V128h-95.344zm47.648 196.624c-11.024 0-19.92-8.928-19.92-19.936s8.896-19.952 19.92-19.952c10.992 0 19.968 8.96 19.968 19.952 0 11.008-8.992 19.936-19.968 19.936zM127.728 480h256v-96.192h-256V480zm33.248-448.336h191.232V224h31.824V-.08H128.048V224h32.912V31.664z"/><glyph unicode="" d="M502.08 285.376H321.376L265.424 457.12c-1.344 4.096-5.136 6.88-9.44 6.88-4.272 0-8.096-2.784-9.44-6.88l-56.24-171.744H9.92c-4.256 0-8.096-2.784-9.44-6.88-1.312-4.064.128-8.592 3.584-11.088l145.984-106.32-56.256-172.72c-1.328-4.096.128-8.592 3.616-11.12 3.456-2.496 8.208-2.496 11.664 0L255.968 83.872l146.64-106.624c1.792-1.28 3.76-1.936 5.808-1.936 2.096 0 4.144.656 5.856 1.936 3.568 2.528 4.96 7.008 3.6 11.12l-56.24 172.72 146.288 106.32c3.488 2.496 4.928 7.008 3.6 11.088-1.312 4.096-5.168 6.88-9.44 6.88zm-168.656-115.12l48.208-148.064L256 113.552l-125.968-91.44 48.256 148.128L53.12 261.376h154.576l48.256 147.376 48.016-147.376H458.8l-125.376-91.12z"/><glyph unicode="" d="M319.376 223.824v127.76H192.624v-127.76H102.88L256.048 35.216l153.088 188.608zM256.016 480c-141.392 0-256-114.608-256-255.984C.016 82.624 114.624-32 256.016-32c141.376 0 256 114.624 256 256.016 0 141.376-114.624 255.984-256 255.984zm0-480c-123.52 0-224 100.496-224 224.016 0 123.504 100.48 223.984 224 223.984s224-100.48 224-223.984c0-123.52-100.48-224.016-224-224.016z"/><glyph unicode="" d="M255.982 440.594c-119.607 0-216.576-96.97-216.576-216.594S136.376 7.405 255.982 7.405c119.625 0 216.595 96.97 216.595 216.595s-96.95 216.595-216.595 216.595zm0-20.68c108.05 0 195.913-87.882 195.913-195.914 0-45.184-15.507-86.71-41.325-119.9-3.108 1.135-6.217 2.196-9.197 3.457-19.748 8.265-41.71 17.957-61.42 26.094l-16.897 4.61c-6.692 4.59-13.33 19.99-16.914 27.67-3.548.51-7.15 1.005-10.752 1.48.53 11.87 7.88 12.545 10.752 21.54 2.54 7.955.293 18.34 4.28 25.73 2.778 5.12 9.124 5.12 12.232 9.544 2.853 3.95 4.772 10.918 5.668 15.8 1.61 8.905 3.017 21.12-1.207 29.988-2.432 5.066-3.968 5.578-4.644 11.74-.82 7.516 2.218 31.89 2.347 37.175.293 13.68-.055 14.794-3.346 28.124 0 0-4.005 12.087-10.295 15.726l-12.58 2.158-7.77 7.186c-31.306 19.272-64.878 5.76-82.835-1.5-25.91-8.43-42.297-33.79-30.87-87.955 1.96-9.29-5.063-13.42-4.606-18.468 1.042-11.045 1.207-37.614 11.648-44.124.97-.603 8.376-2.47 8.34-1.938 1.006-10.752 2.048-21.522 3.054-32.238 2.616-7.15 8.87-7.954 10.68-18.048l-7.99-1.92c-3.603-7.68-10.186-23.08-16.897-27.668-5.65-1.517-11.284-3.053-16.917-4.59-19.73-8.118-41.654-17.828-61.42-26.093-1.08-.44-2.214-.79-3.29-1.21C74.953 139.154 60.09 179.822 60.09 224c0 108.032 87.88 195.913 195.895 195.913z"/><glyph unicode="" d="M94.8 322.592L1.376 401.056.88 79.088l316.688 56.336-89.216 74.96C410.464 377.904 456.256 202.256 474.624 5.6 540.56 579.664 244.784 450.928 94.8 322.592z"/><glyph unicode="" d="M428.432 224h-20.08v96.176c0 43.36-16.448 83.104-43.632 112.144-27.056 29.056-65.632 47.712-108.16 47.68-42.544.032-81.12-18.624-108.192-47.68-27.184-29.04-43.632-68.784-43.648-112.144V224H83.904c-10.816 0-19.584-8.752-19.584-19.584v-216.8C64.32-23.232 73.088-32 83.904-32h344.528c10.8 0 19.584 8.768 19.584 19.632v216.8c0 10.816-8.784 19.568-19.584 19.568zm-251.616 96.176c0 25.024 9.472 47.168 24.192 62.928 14.848 15.728 34.144 24.784 55.552 24.816 21.376-.032 40.688-9.072 55.536-24.816 14.704-15.744 24.176-37.888 24.176-62.928V224h-159.44v96.176z"/></font></defs></svg>
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg"><defs><font id="Luma-Icons" horiz-adv-x="512"><font-face units-per-em="512" ascent="480" descent="-32"/><missing-glyph horiz-adv-x="512"/><glyph unicode="&#x20;" d="" horiz-adv-x="256"/><glyph unicode="&#xe600;" d="M436.608 435.568c-65.68 31.424-144.064 2.832-174.976-63.84-2.16-4.64-4.016-10.448-5.664-17.2-1.648 6.752-3.504 12.56-5.632 17.2-30.944 66.672-109.248 95.264-174.944 63.84-65.6-31.424-93.744-110.96-62.832-177.648 30.928-66.672 243.344-257.84 243.344-257.84s0.016 0.224 0.048 0.576c0.048-0.352 0.064-0.576 0.064-0.576s212.512 191.168 243.44 257.84c30.896 66.688 2.832 146.224-62.848 177.648z"/><glyph unicode="&#xe601;" d="M362.533 425.051c-49.81-49.792-20.809-20.772-20.809-20.772l96.402-96.384c0 0-31.067-31.049 20.772 20.773s-46.611 146.194-96.365 96.384zM320.147 383.671l-227.987-227.986 0.329-0.293-54.071-146.524 149.833 50.688 0.311-0.311 0.786 0.805v0.019l227.2 227.2-96.403 96.403zM179.036 104.375l-78.811-33.28 37.047 75.044 38.345 38.363 41.764-41.783-38.345-38.345z"/><glyph unicode="&#xe602;" d="M255.952 480l-255.952-448h512l-256.048 448zM287.12 353.808v-65.36l-16.688-128.544h-27.088l-18.032 128.544-0.992 65.36h62.8zM224.096 64.112v64.112h64.24v-64.112h-64.24z"/><glyph unicode="&#xe603;" d="M363.923 112.019c-29.805-28.764-68.663-43.502-108.013-43.538-35.145 0.036-70.199 11.757-99.347 35.932-37.029 30.829-56.046 74.971-56.1 119.661 0 7.442 0.549 14.829 1.591 22.18l-60.672-11.374c-0.164-3.602-0.292-7.186-0.292-10.807-0.036-61.495 26.459-122.899 77.549-165.285 40.009-33.335 88.887-49.683 137.252-49.683h0.128c56.211 0 112.164 22.217 153.746 64.914l39.844-39.772 0.311 124.745-131.803 0.348 45.805-47.324zM393.344 389.23c-40.046 33.335-88.923 49.664-137.271 49.664-55.808 0-111.397-21.833-152.923-63.945l-37.687 34.798-0.677-120.722 130.487-0.75-46.336 48.493c29.641 28.252 68.188 42.697 107.154 42.733 35.108-0.036 70.217-11.721 99.328-35.932 37.029-30.829 56.046-74.935 56.137-119.698 0-6.437-0.457-12.892-1.225-19.365l60.435 11.593c0.036 2.615 0.164 5.212 0.164 7.772-0.036 61.549-26.514 122.899-77.587 165.357z"/><glyph unicode="&#xe604;" d="M95.792-32h320.4v320.080h-320.4v-320.080zM318.336 228.512c0 9.904 8.032 17.904 17.952 17.904 9.904 0 17.936-8 17.936-17.904v-188.736c0-9.888-8.032-17.92-17.936-17.92-9.92 0-17.952 8.032-17.952 17.92v188.736zM238.048 228.512c0 9.904 8.032 17.904 17.92 17.904s17.92-8 17.92-17.904v-188.736c0-9.888-8.032-17.92-17.92-17.92s-17.92 8.032-17.92 17.92v188.736zM157.6 228.512c0 9.904 8 17.904 17.92 17.904 9.888 0 17.92-8 17.92-17.904v-188.736c0-9.888-8.032-17.92-17.92-17.92-9.92 0-17.92 8.032-17.92 17.92v188.736zM423.216 416.528h-71.232v10.896c0 29.040-19.76 52.576-48.8 52.576h-94.72c-29.008 0-48.48-23.536-48.48-52.576v-10.896h-71.232c-13.696 0-24.768-11.088-24.768-24.752v-71.984h384v71.984c0 13.664-11.040 24.752-24.768 24.752zM319.936 416.528h-128.192v14.704c0.032 9.248 7.488 16.736 16.72 16.768h94.72c9.216-0.032 16.704-7.52 16.752-16.768v-14.704z"/><glyph unicode="&#xe605;" d="M511.52 278.496c-1.312 4.096-5.152 6.88-9.44 6.88h-180.704l-55.952 171.744c-1.344 4.096-5.136 6.88-9.44 6.88-4.272 0-8.096-2.784-9.44-6.88l-56.24-171.744h-180.384c-4.256 0-8.096-2.784-9.44-6.88-1.312-4.064 0.128-8.592 3.584-11.088l145.984-106.32-56.256-172.72c-1.328-4.096 0.128-8.592 3.616-11.12 3.456-2.496 8.208-2.496 11.664 0l146.896 106.624 146.64-106.624c1.792-1.28 3.76-1.936 5.808-1.936 2.096 0 4.144 0.656 5.856 1.936 3.568 2.528 4.96 7.008 3.6 11.12l-56.24 172.72 146.288 106.32c3.488 2.496 4.928 6.992 3.6 11.088z"/><glyph unicode="&#xe606;" d="M473.015 200.375v49.371l-7.003 2.268-52.882 17.244-14.116 34.103 27.154 57.381-34.908 34.907-6.583-3.309-49.555-25.198-34.103 14.117-21.394 59.757h-49.371l-2.286-6.985-17.262-52.882-34.048-14.099-57.399 27.136-34.925-34.926 3.309-6.564 25.18-49.591-14.080-34.029-59.758-21.412v-49.39l6.949-2.249 52.901-17.28 14.099-34.067-27.118-57.38 34.925-34.925 6.528 3.328 49.591 25.197 34.066-14.116 21.394-59.757h49.371l2.286 6.985 17.28 52.882 34.029 14.116 57.399-27.136 34.944 34.908-3.346 6.546-25.197 49.572 14.116 34.067 59.813 21.413zM256 154.861c-38.199 0-69.156 30.957-69.156 69.139 0 38.217 30.958 69.156 69.156 69.156 38.163 0 69.156-30.94 69.156-69.156 0-38.18-31.012-69.139-69.156-69.139z"/><glyph unicode="&#xe607;" d="M31.008 351.36l224.992-239.984 225.040 239.984z"/><glyph unicode="&#xe608;" d="M383.415 226.596l-212.571 218.587-37.285-34.981 178.286-183.277-183.278-188.452 36.48-35.657 205.659 211.456-0.201 0.201z"/><glyph unicode="&#xe609;" d="M52.928 345.2h406.144c11.056 0 20 8.976 20 20.016 0 11.072-8.944 20.032-20 20.032h-406.144c-11.056 0-20.016-8.96-20.016-20.032 0-11.040 8.96-20.016 20.016-20.016zM459.072 244.016h-406.144c-11.056 0-20.016-8.944-20.016-20.016s8.96-20.016 20.016-20.016h406.144c11.056 0 20 8.944 20 20.016s-8.928 20.016-20 20.016zM459.072 102.8h-406.144c-11.056 0-20.016-8.96-20.016-20.032s8.96-20.016 20.016-20.016h406.144c11.056 0 20 8.944 20 20.016s-8.928 20.032-20 20.032z"/><glyph unicode="&#xe60a;" d="M256.144 480c-89.12 0-161.344-72.24-161.344-161.376 0-89.104 161.344-350.624 161.344-350.624s161.376 261.52 161.376 350.624c0 89.136-72.192 161.376-161.376 161.376zM256.144 269.616c-27.056 0-49.024 21.952-49.024 49.008 0 27.072 21.984 49.024 49.024 49.024 27.104 0 49.088-21.952 49.088-49.024 0-27.056-21.984-49.008-49.088-49.008z"/><glyph unicode="&#xe60b;" d="M0 256.144h224.032v223.808h-224.032v-223.808zM288.128 479.952v-95.728h224.176v95.728h-224.176zM0-32h224.032v223.808h-224.032v-223.808zM288.128 256.144h224.176v95.728h-224.176v-95.728zM288.128 96.080h224.176v95.728h-224.176v-95.728zM288.128-32h224.176v95.712h-224.176v-95.712z"/><glyph unicode="&#xe60c;" d="M332.764 119.003c-9.216 0-45.495-56.027-65.243-56.027-5.284 0-7.863 4.644-7.863 9.216 0 10.569 7.241 27.044 11.154 36.937l47.397 128.384c23.772 63.891-6.546 81.024-34.871 81.024-38.217 0-72.448-19.091-98.779-44.124-8.576-8.576-37.523-36.206-37.523-48.091 0-3.932 3.931-8.576 8.576-8.576 11.813 0 43.447 57.308 67.803 57.308 5.285 0 11.191-5.924 6.583-17.755l-46.080-115.968c-4.644-11.154-27.044-65.171-27.044-96.786 0-25.015 16.476-36.188 40.192-36.188 66.523 0 143.543 81.645 143.543 100.755-0.019 5.925-4.589 9.892-7.844 9.892zM319.543 439.661c-28.947 0-54.016-23.68-54.016-52.663 0-27.008 17.792-44.8 44.837-44.8 29.55 0 54.62 22.4 54.62 52.7 0 27.008-19.072 44.764-45.44 44.764z"/><glyph unicode="&#xe60d;" d="M0 351.552h128.464v128.448h-128.464v-128.448zM191.76 351.552h128.528v128.448h-128.528v-128.448zM383.568 480v-128.448h128.496v128.448h-128.496zM0 159.744h128.464v128.464h-128.464v-128.464zM191.76 159.744h128.528v128.464h-128.528v-128.464zM383.568 159.744h128.496v128.464h-128.496v-128.464zM0-32h128.464v128h-128.464v-128zM191.76-32h128.528v128h-128.528v-128zM383.568-32h128.496v128h-128.496v-128z"/><glyph unicode="&#xe60e;" d="M255.296 450.464c-124.688 0-225.76-101.072-225.76-225.76 0-124.672 101.072-225.76 225.76-225.76 124.672 0 225.76 101.088 225.76 225.76 0 124.688-101.072 225.76-225.76 225.76zM231.936 94.576l-125.936 128.032 32.208 25.936 72.864-57.088c29.76 35.424 96 106.032 187.312 161.984l7.696-17.792c-83.808-77.088-152.48-185.6-174.144-241.072z"/><glyph unicode="&#xe60f;" d="M0 241.12h512v-34.064h-512v34.064z"/><glyph unicode="&#xe610;" d="M478.263 426.149c-142.555-87.388-245.98-197.632-292.48-252.947l-113.792 89.161-50.267-40.539 196.663-199.973c33.847 86.674 141.056 256.11 271.872 376.485l-11.995 27.813z"/><glyph unicode="&#xe611;" d="M220.576 83.248c-26.352 0-47.696-21.376-47.696-47.712s21.344-47.664 47.696-47.664c26.336 0 47.696 21.328 47.696 47.664s-21.36 47.712-47.696 47.712zM385.344 83.248c-26.4 0-47.76-21.376-47.76-47.712s21.344-47.664 47.76-47.664c26.288 0 47.632 21.328 47.632 47.664s-21.344 47.712-47.632 47.712zM459.856 350.32c-122.384 0-319.856 0-319.856 0s-19.152 52.608-37.392 84.864c-14.128 24.976-43.344 23.968-43.344 23.968-20.096 0-33.024-12.288-33.024-32.4 0-20.096 15.92-36.16 36.032-36.16l8.496-0.080 95.2-262.192 266.832-0.208c0 0 48.784 199.632 46.272 191.888 8.944 27.68-2.448 30.32-19.216 30.32zM166.528 257.344c-14 0-25.36 11.36-25.36 25.376s11.36 25.392 25.36 25.392c14.016 0 25.36-11.376 25.36-25.392s-11.344-25.376-25.36-25.376zM220.768 172.64c-14.016 0-25.376 11.376-25.376 25.392 0 13.984 11.36 25.36 25.376 25.36 14 0 25.36-11.376 25.36-25.36 0.016-14.016-11.36-25.392-25.36-25.392zM248.656 257.344c-14 0-25.376 11.36-25.376 25.376s11.36 25.392 25.376 25.392c14 0 25.36-11.376 25.36-25.392s-11.36-25.376-25.36-25.376zM302.896 172.64c-14 0-25.36 11.376-25.36 25.392 0 13.984 11.36 25.36 25.36 25.36 14.048 0 25.44-11.376 25.44-25.36 0-14.016-11.392-25.392-25.44-25.392zM330.848 257.344c-14 0-25.408 11.36-25.408 25.376s11.408 25.392 25.408 25.392c14 0 25.328-11.376 25.328-25.392s-11.328-25.376-25.328-25.376zM385.040 172.64c-13.984 0-25.328 11.376-25.328 25.392 0 13.984 11.36 25.36 25.328 25.36 14 0 25.408-11.376 25.408-25.36 0-14.016-11.408-25.392-25.408-25.392zM412.96 257.344c-14.016 0-25.36 11.36-25.36 25.376s11.344 25.392 25.36 25.392c14.048 0 25.376-11.376 25.376-25.392s-11.328-25.376-25.376-25.376z"/><glyph unicode="&#xe612;" d="M142.992 332.768c10.352 0 18.8 8.4 18.8 18.8v67.68c0 10.368-8.432 18.784-18.8 18.784-10.384 0-18.8-8.4-18.8-18.784v-67.68c0-10.4 8.416-18.8 18.8-18.8zM394.384 383.344v-0.32c7.776-6.944 12.72-17.008 12.72-28.288 0-20.816-16.88-37.712-37.744-37.712s-37.76 16.912-37.76 37.712c0 11.264 4.976 21.344 12.784 28.288v0.32h-176.416v-0.32c7.824-6.944 12.768-17.008 12.768-28.288 0-20.816-16.896-37.712-37.728-37.712-20.864 0-37.744 16.912-37.744 37.712 0 11.264 4.928 21.344 12.752 28.288v0.32h-85.536v-383.6h447.248v383.6h-85.344zM448.72 32.832h-383.152v254.72h383.152v-254.72zM369.36 332.768c10.384 0 18.784 8.4 18.784 18.8v67.68c0 10.368-8.4 18.784-18.784 18.784-10.352 0-18.816-8.4-18.816-18.784v-67.68c0-10.4 8.464-18.8 18.816-18.8zM349.216 184.128h-47.936v-47.872h47.952v47.872zM349.216 256.112h-47.936v-47.824h47.952v47.824zM349.216 114.112h-47.936v-47.872h47.952v47.872zM416.656 256.112h-47.92v-47.824h47.92v47.824zM416.656 184.128h-47.92v-47.872h47.92v47.872zM281.696 256.112h-47.872v-47.824h47.872v47.824zM146.8 184.128h-47.856v-47.872h47.856v47.872zM214.288 114.112h-47.888v-47.872h47.872v47.872zM146.8 114.112h-47.856v-47.872h47.856v47.872zM281.696 184.128h-47.872v-47.872h47.872v47.872zM281.696 114.112h-47.872v-47.872h47.872v47.872zM214.288 184.128h-47.888v-47.872h47.872v47.872zM214.288 256.112h-47.888v-47.824h47.872v47.824z"/><glyph unicode="&#xe613;" d="M256 444.727l-200.814-243.291h131.054v-198.144h139.575v198.144h131.017z"/><glyph unicode="&#xe614;" d="M325.779 246.583v198.144h-139.593v-198.144h-130.999l200.832-243.292 200.813 243.292z"/><glyph unicode="&#xe615;" d="M487.232 35.872c0 0-78.176 80.288-109.328 111.312-13.552 13.552-22.832 22.752-22.832 22.752 10.56 15.088 18.816 31.616 24.704 49.392 5.84 17.76 8.752 36.496 8.752 56.192 0 25.36-4.816 49.2-14.448 71.552-9.664 22.32-22.784 41.824-39.456 58.432-16.64 16.688-36.144 29.824-58.496 39.472-22.336 9.664-46.176 14.496-71.536 14.496-25.344 0-49.184-4.848-71.552-14.496-22.336-9.648-41.712-22.784-58.192-39.472-16.416-16.608-29.52-36.128-39.152-58.448-9.664-22.336-14.496-46.192-14.496-71.552 0-25.376 4.848-49.216 14.496-71.552 9.632-22.304 22.72-41.792 39.152-58.464 16.464-16.608 35.856-29.776 58.176-39.456 22.368-9.664 46.208-14.448 71.552-14.448 19.68 0 38.416 2.88 56.208 8.768 17.776 5.856 34.288 14.144 49.36 24.72 0 0 8.576-8.512 21.2-21.216 34.512-34.64 110.416-113.392 110.416-113.392 11.456-4.992 29.712 0.336 38.848 8.064 9.040 7.776 14.096 23.984 6.624 37.344zM327.792 223.28c-7.008-16.192-16.576-30.336-28.624-42.336-12.096-12.048-26.192-21.616-42.336-28.608-16.128-7.024-33.392-10.528-51.68-10.528-18.704 0-36.096 3.504-52.256 10.528-16.16 7.008-30.288 16.56-42.336 28.608-12.048 12.016-21.616 26.16-28.608 42.336-7.008 16.112-10.512 33.568-10.512 52.24 0 18.272 3.504 35.632 10.512 51.984 6.992 16.336 16.56 30.56 28.608 42.592 12.048 12.096 26.176 21.664 42.336 28.608 16.16 7.056 33.552 10.512 52.256 10.512 18.288 0 35.552-3.456 51.68-10.512 16.144-6.96 30.24-16.512 42.336-28.608 12.032-12.032 21.616-26.256 28.624-42.592 7.008-16.352 10.48-33.712 10.48-51.984 0.016-18.672-3.456-36.128-10.48-52.24z"/><glyph unicode="&#xe616;" d="M483.255 415.177l-36.023 35.968-191.25-191.268-191.25 191.268-35.986-35.968 191.268-191.269-191.123-191.14 35.968-35.932 191.14 191.104 191.123-191.104 35.932 35.932-191.104 191.123z"/><glyph unicode="&#xe617;" d="M200.21 226.889l178.213 183.315-37.248 34.981-212.608-218.588 218.459-223.78 36.389 35.657z"/><glyph unicode="&#xe618;" d="M256 335.168l-224.992-239.984h450.032z"/><glyph unicode="&#xe619;" d="M96.624 451.12v-454.24l312.928 227.12z"/><glyph unicode="&#xe61a;" d="M102.992 224l312.912-227.12v454.24z"/><glyph unicode="&#xe61b;" d="M0 0.464h63.984v479.536h-63.984v-479.536zM512.080 480h-415.824v-287.888h415.824l-138.208 142.032 138.208 145.856z"/><glyph unicode="&#xe61c;" d="M512 241.12h-238.512v238.88h-34.016v-238.88h-239.472v-34.064h239.472v-239.056h34.016v239.056h238.512z"/><glyph unicode="&#xe61d;" d="M255.968 228.064l221.488 155.84c-2.656 0.528-5.344 0.848-8.128 0.848h-426.656c-2.8 0-5.504-0.32-8.144-0.848l221.44-155.84zM256.928 168.496l-0.96 1.408-0.944-1.408-254.56 179.136c-0.176-1.6-0.464-3.2-0.464-4.816v-267.712c0-23.904 19.104-43.312 42.672-43.312h426.656c23.6 0 42.688 19.408 42.688 43.312v267.712c0 1.632-0.288 3.216-0.496 4.816l-254.592-179.136z"/><glyph unicode="&#xe61e;" d="M127.584 31.776v127.632h-127.584v-127.632h127.584zM319.248 416.24h-126.928v-384.448h126.928v384.448zM511.584 287.472h-127.376v-255.68h127.376v255.68z"/><glyph unicode="&#xe61f;" d="M255.296 450.464c-124.688 0-225.76-101.072-225.76-225.76 0-124.672 101.072-225.76 225.76-225.76 124.672 0 225.76 101.088 225.76 225.76 0 124.688-101.072 225.76-225.76 225.76zM372.16 144.832l-37.104-37.104-79.088 79.056-79.056-79.040-37.12 37.136 79.024 79.024-79.136 79.12 37.136 37.136 79.12-79.136 79.184 79.184 37.152-37.152-79.2-79.168 79.088-79.056z"/><glyph unicode="&#xe620;" d="M262.748 418.688c-113.664 2.249-207.214-67.803-208.969-156.435-0.585-30.829 9.984-59.813 28.8-84.644l-4.919 4.955c32.384-41.618-31.104-153.308-31.104-153.308l142.281 70.345c22.51-7.095 44.16-11.923 69.724-12.452 113.664-2.231 205.111 78.355 206.848 167.004 1.755 88.631-88.96 162.304-202.661 164.535z"/><glyph unicode="&#xe621;" d="M259.163 285.422l201.837-196.224 38.546 41.070-240.713 234.021-246.363-240.476 39.26-40.101z"/><glyph unicode="&#xe622;" d="M252.819 162.579l-201.82 196.224-38.528-41.070 240.677-234.021 246.4 240.476-39.332 40.101z"/><glyph unicode="&#xe623;" d="M256-33.248c-141.408 0-256 114.624-256 256s114.592 256 256 256c141.376 0 256-114.624 256-256s-114.608-256-256-256zM256 447.76c-124.048 0-225.008-100.96-225.008-225.008s100.96-225.024 225.008-225.024 224.992 100.96 224.992 225.008-100.928 225.024-224.992 225.024zM320.24 219.152l-15.6-12.128c-8.496-6.624-14.128-14.32-16.912-23.152-1.776-5.6-3.008-12.256-3.168-24h-59.712c0.88 24.848 3.504 39.968 7.328 49.472 3.808 9.472 13.632 20.368 29.44 32.72l16.032 12.528c5.28 4 9.536 8.32 12.752 13.024 5.872 8.064 8.784 16.976 8.784 26.656 0 11.152-3.248 21.312-9.776 30.496-6.496 9.184-18.4 13.808-35.712 13.808-17.008 0-29.056-5.68-36.16-17.008s-10.592-21.664-10.592-33.84h-63.68c1.744 41.872 16.32 70.16 43.776 87.632 17.344 11.152 38.656 16.752 63.904 16.752 33.216 0 60.784-7.936 82.752-23.808 21.968-15.84 34.8-48.432 34.8-79.6 0-19.088-6.624-26.096-16.144-39.184-5.584-7.92-16.272-18.048-32.112-30.368zM287.728 64h-63.504v63.68h63.504v-63.68z"/><glyph unicode="&#xe624;" d="M416.656 128v135.696h-320.672v-135.696h-95.984v199.344c0 13.76 11.168 24.912 24.944 24.912h462.144c13.744 0 24.912-11.152 24.912-24.912v-199.344h-95.344zM464.304 324.624c-11.024 0-19.92-8.928-19.92-19.936s8.896-19.952 19.92-19.952c10.992 0 19.968 8.96 19.968 19.952 0 11.008-8.992 19.936-19.968 19.936zM127.728 480h256v-96.192h-256v96.192zM160.976 31.664h191.232v192.336h31.824v-224.080h-255.984v224.080h32.912v-192.336z"/><glyph unicode="&#xe625;" d="M502.080 285.376h-180.704l-55.952 171.744c-1.344 4.096-5.136 6.88-9.44 6.88-4.272 0-8.096-2.784-9.44-6.88l-56.24-171.744h-180.384c-4.256 0-8.096-2.784-9.44-6.88-1.312-4.064 0.128-8.592 3.584-11.088l145.984-106.32-56.256-172.72c-1.328-4.096 0.128-8.592 3.616-11.12 3.456-2.496 8.208-2.496 11.664 0l146.896 106.624 146.64-106.624c1.792-1.28 3.76-1.936 5.808-1.936 2.096 0 4.144 0.656 5.856 1.936 3.568 2.528 4.96 7.008 3.6 11.12l-56.24 172.72 146.288 106.32c3.488 2.496 4.928 7.008 3.6 11.088-1.312 4.096-5.168 6.88-9.44 6.88zM333.424 170.256l48.208-148.064-125.632 91.36-125.968-91.44 48.256 148.128-125.168 91.136h154.576l48.256 147.376 48.016-147.376h154.832l-125.376-91.12z"/><glyph unicode="&#xe626;" d="M319.376 223.824v127.76h-126.752v-127.76h-89.744l153.168-188.608 153.088 188.608zM256.016 480c-141.392 0-256-114.608-256-255.984 0-141.392 114.608-256.016 256-256.016 141.376 0 256 114.624 256 256.016 0 141.376-114.624 255.984-256 255.984zM256.016 0c-123.52 0-224 100.496-224 224.016 0 123.504 100.48 223.984 224 223.984s224-100.48 224-223.984c0-123.52-100.48-224.016-224-224.016z"/><glyph unicode="&#xe627;" d="M255.982 440.594c-119.607 0-216.576-96.969-216.576-216.594s96.969-216.595 216.576-216.595c119.625 0 216.595 96.969 216.595 216.595s-96.951 216.595-216.595 216.595zM255.982 419.913c108.051 0 195.913-87.881 195.913-195.913 0-45.184-15.507-86.711-41.325-119.899-3.108 1.134-6.217 2.195-9.197 3.456-19.748 8.265-41.709 17.957-61.421 26.094-5.632 1.536-11.264 3.072-16.896 4.608-6.692 4.589-13.33 19.986-16.914 27.666-3.548 0.512-7.149 1.005-10.752 1.481 0.531 11.868 7.881 12.544 10.752 21.541 2.541 7.954 0.293 18.341 4.279 25.728 2.779 5.12 9.125 5.12 12.233 9.545 2.853 3.95 4.772 10.917 5.668 15.799 1.609 8.905 3.017 21.12-1.207 29.988-2.432 5.065-3.968 5.577-4.644 11.739-0.823 7.516 2.212 31.891 2.341 37.175 0.293 13.678-0.055 14.793-3.346 28.123 0 0-4.005 12.087-10.295 15.726l-12.58 2.158-7.772 7.186c-31.305 19.273-64.877 5.76-82.834-1.499-25.911-8.43-42.295-33.792-30.867-87.955 1.957-9.289-5.065-13.421-4.608-18.468 1.042-11.045 1.207-37.614 11.648-44.124 0.969-0.603 8.375-2.469 8.339-1.938 1.006-10.752 2.048-21.522 3.054-32.238 2.615-7.149 8.869-7.954 10.679-18.048l-7.991-1.92c-3.602-7.68-10.185-23.077-16.896-27.666-5.65-1.517-11.282-3.053-16.915-4.589-19.731-8.119-41.655-17.829-61.422-26.094-1.079-0.439-2.213-0.786-3.291-1.207-24.759 32.786-39.625 73.454-39.625 117.632 0 108.032 87.881 195.913 195.895 195.913z"/><glyph unicode="&#xe628;" d="M94.8 322.592l-93.424 78.464-0.496-321.968 316.688 56.336-89.216 74.96c182.112 167.52 227.904-8.128 246.272-204.784 65.936 574.064-229.84 445.328-379.824 316.992z"/><glyph unicode="&#xe629;" d="M428.432 224h-20.080v96.176c0 43.36-16.448 83.104-43.632 112.144-27.056 29.056-65.632 47.712-108.16 47.68-42.544 0.032-81.12-18.624-108.192-47.68-27.184-29.040-43.632-68.784-43.648-112.144v-96.176h-20.816c-10.816 0-19.584-8.752-19.584-19.584v-216.8c0-10.848 8.768-19.616 19.584-19.616h344.528c10.8 0 19.584 8.768 19.584 19.632v216.8c0 10.816-8.784 19.568-19.584 19.568zM176.816 320.176c0 25.024 9.472 47.168 24.192 62.928 14.848 15.728 34.144 24.784 55.552 24.816 21.376-0.032 40.688-9.072 55.536-24.816 14.704-15.744 24.176-37.888 24.176-62.928v-96.176h-159.44v96.176z"/><glyph unicode="&#xe62a;" d="M150.896 316.944h-112.192c-9.040 0-16.384-7.312-16.384-16.368v-80c0-9.056 7.344-16.368 16.384-16.368h112.192c9.056 0 16.432 7.312 16.432 16.368v80c0 9.056-7.376 16.368-16.432 16.368zM150.896 171.056h-79.376c-9.056 0-16.432-7.312-16.432-16.368v-170.32c-0.016-9.056 7.36-16.368 16.432-16.368h79.376c9.056 0 16.432 7.312 16.432 16.368v170.32c0 9.056-7.376 16.368-16.432 16.368zM473.328 316.944h-244.88c-9.056 0-16.368-7.312-16.368-16.368v-80c0-9.056 7.312-16.368 16.368-16.368h244.88c8.992 0 16.368 7.312 16.368 16.368v80c0 9.056-7.36 16.368-16.368 16.368zM439.52 169.376h-210.56c-9.056 0-16.368-7.344-16.368-16.4v-168.592c0-9.056 7.312-16.368 16.368-16.368h210.56c9.056 0 16.368 7.312 16.368 16.368v168.592c0 9.056-7.312 16.4-16.368 16.4zM251.952 335.68c19.12-3.504 37.568-5.536 54.816-5.536 86.688 0 133.68 46.592 133.936 90.464 0.128 28.256-20.752 58.88-68.368 59.376-63.808 0-103.312-45.056-123.872-78.496-20.944 33.312-60.624 77.472-124.56 77.472-46.256-0.464-67.2-31.088-67.008-59.328 0.176-43.888 47.248-90.512 133.936-90.512v0c18.752 0 38.88 2.128 59.872 6.336l1.248 0.224zM373.264 439.008c8-0.064 26.56-2 26.432-18.192-0.064-20.624-28.992-49.68-92.944-49.68-8.816 0-18 0.56-27.632 1.68 14.576 25.648 45.216 66.192 94.144 66.192zM190.832 370.128v0c-63.936 0-92.88 29.056-92.992 49.68-0.080 16.16 18.496 18.096 27.36 18.192 48.368 0 78.816-40.56 93.184-66.224-9.552-1.088-18.736-1.648-27.552-1.648z"/><glyph unicode="&#xe62b;" d="M182.256 403.408c0-9.248-7.504-16.72-16.688-16.72h-9.776c-9.216 0-16.72 7.472-16.72 16.72v59.872c0 9.216 7.504 16.72 16.72 16.72h9.776c9.184 0 16.688-7.504 16.688-16.72v-59.872zM373.072 403.408c0-9.248-7.504-16.72-16.688-16.72h-9.744c-9.248 0-16.688 7.472-16.688 16.72v59.872c0 9.216 7.424 16.72 16.688 16.72h9.744c9.184 0 16.688-7.504 16.688-16.72v-59.872zM398.816 253.152l-33.936 27.664-133.68-163.872-71.312 56.688-25.28-31.728 105.184-83.648zM471.952 434h-62.432v-26.064c0-27.68-22.56-50.192-50.128-50.192h-9.808c-27.68 0-50.128 22.496-50.128 50.192v26.064h-85.504v-26.064c0-27.68-22.496-50.192-50.128-50.192h-9.76c-27.664 0-50.16 22.496-50.16 50.192v26.064h-63.808c-9.216 0-16.72-7.504-16.72-16.688v-432.592c0-9.216 7.504-16.72 16.72-16.72h431.84c9.184 0 16.688 7.504 16.688 16.72v432.592c0.016 9.184-7.488 16.688-16.672 16.688zM438.512 42.592c0-9.248-7.504-16.72-16.752-16.72h-331.504c-9.248 0-16.752 7.472-16.752 16.72v252.096c0 9.248 7.504 16.688 16.752 16.688h331.504c9.248 0 16.752-7.44 16.752-16.688v-252.096z"/></font></defs></svg>
\ No newline at end of file
diff --git a/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.ttf b/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.ttf
index c096e782506ee3b3b2c4a46dac60529aebd7096e..e2e4864f8b1a9573b3cf18b0bd273bd5b8464f0e 100644
Binary files a/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.ttf and b/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.ttf differ
diff --git a/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.woff b/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.woff
index 1b2c57c533e0e13926c58b542c9f17baeb0705b2..881e639aca422fcc6cc5fdf8ff5bd30c433e3c99 100644
Binary files a/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.woff and b/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.woff differ
diff --git a/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.woff2 b/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.woff2
index cc91480dac868dc0a36bc6ce3d95bc3bcbf8ed27..66faa61a2d24a488aa52dec055ab8f19a30b9811 100644
Binary files a/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.woff2 and b/app/design/frontend/Magento/luma/web/fonts/Luma-Icons.woff2 differ
diff --git a/app/design/frontend/Magento/luma/web/fonts/selection.json b/app/design/frontend/Magento/luma/web/fonts/selection.json
index 11b601ea6493080698a69a0f3f1a1516c2c4b6c7..2c4a03883a15bb5cceee2a24e6e1a0a9b07ae979 100644
--- a/app/design/frontend/Magento/luma/web/fonts/selection.json
+++ b/app/design/frontend/Magento/luma/web/fonts/selection.json
@@ -1,16 +1,123 @@
 {
 	"IcoMoonType": "selection",
 	"icons": [
+		{
+			"icon": {
+				"paths": [
+					"M856.864 512h-40.16v-192.352c0-86.72-32.896-166.208-87.264-224.288-54.112-58.112-131.264-95.424-216.32-95.36-85.088-0.064-162.24 37.248-216.384 95.36-54.368 58.080-87.264 137.568-87.296 224.288v192.352h-41.632c-21.632 0-39.168 17.504-39.168 39.168v433.6c0 21.696 17.536 39.232 39.168 39.232h689.056c21.6 0 39.168-17.536 39.168-39.264v-433.6c0-21.632-17.568-39.136-39.168-39.136zM353.632 319.648c0-50.048 18.944-94.336 48.384-125.856 29.696-31.456 68.288-49.568 111.104-49.632 42.752 0.064 81.376 18.144 111.072 49.632 29.408 31.488 48.352 75.776 48.352 125.856v192.352h-318.88v-192.352z"
+				],
+				"attrs": [
+					{}
+				],
+				"isMulticolor": false,
+				"grid": 32,
+				"tags": [
+					"private"
+				]
+			},
+			"attrs": [
+				{}
+			],
+			"properties": {
+				"order": 40,
+				"id": 37,
+				"prevSize": 16,
+				"code": 58921,
+				"name": "private"
+			},
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 0
+		},
+		{
+			"icon": {
+				"paths": [
+					"M364.512 153.184c0 18.496-15.008 33.44-33.376 33.44h-19.552c-18.432 0-33.44-14.944-33.44-33.44v-119.744c0-18.432 15.008-33.44 33.44-33.44h19.552c18.368 0 33.376 15.008 33.376 33.44v119.744z",
+					"M746.144 153.184c0 18.496-15.008 33.44-33.376 33.44h-19.488c-18.496 0-33.376-14.944-33.376-33.44v-119.744c0-18.432 14.848-33.44 33.376-33.44h19.488c18.368 0 33.376 15.008 33.376 33.44v119.744z",
+					"M797.632 453.696l-67.872-55.328-267.36 327.744-142.624-113.376-50.56 63.456 210.368 167.296z",
+					"M943.904 92h-124.864v52.128c0 55.36-45.12 100.384-100.256 100.384h-19.616c-55.36 0-100.256-44.992-100.256-100.384v-52.128h-171.008v52.128c0 55.36-44.992 100.384-100.256 100.384h-19.52c-55.328 0-100.32-44.992-100.32-100.384v-52.128h-127.616c-18.432 0-33.44 15.008-33.44 33.376v865.184c0 18.432 15.008 33.44 33.44 33.44h863.68c18.368 0 33.376-15.008 33.376-33.44v-865.184c0.032-18.368-14.976-33.376-33.344-33.376zM877.024 874.816c0 18.496-15.008 33.44-33.504 33.44h-663.008c-18.496 0-33.504-14.944-33.504-33.44v-504.192c0-18.496 15.008-33.376 33.504-33.376h663.008c18.496 0 33.504 14.88 33.504 33.376v504.192z"
+				],
+				"attrs": [
+					{},
+					{},
+					{},
+					{}
+				],
+				"isMulticolor": false,
+				"grid": 32,
+				"tags": [
+					"gift-registry"
+				]
+			},
+			"attrs": [
+				{},
+				{},
+				{},
+				{}
+			],
+			"properties": {
+				"order": 39,
+				"id": 36,
+				"prevSize": 16,
+				"code": 58923,
+				"name": "gift-registry"
+			},
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 1
+		},
+		{
+			"icon": {
+				"paths": [
+					"M301.792 326.112h-224.384c-18.080 0-32.768 14.624-32.768 32.736v160c0 18.112 14.688 32.736 32.768 32.736h224.384c18.112 0 32.864-14.624 32.864-32.736v-160c0-18.112-14.752-32.736-32.864-32.736z",
+					"M301.792 617.888h-158.752c-18.112 0-32.864 14.624-32.864 32.736v340.64c-0.032 18.112 14.72 32.736 32.864 32.736h158.752c18.112 0 32.864-14.624 32.864-32.736v-340.64c0-18.112-14.752-32.736-32.864-32.736z",
+					"M946.656 326.112h-489.76c-18.112 0-32.736 14.624-32.736 32.736v160c0 18.112 14.624 32.736 32.736 32.736h489.76c17.984 0 32.736-14.624 32.736-32.736v-160c0-18.112-14.72-32.736-32.736-32.736z",
+					"M879.040 621.248h-421.12c-18.112 0-32.736 14.688-32.736 32.8v337.184c0 18.112 14.624 32.736 32.736 32.736h421.12c18.112 0 32.736-14.624 32.736-32.736v-337.184c0-18.112-14.624-32.8-32.736-32.8z",
+					"M503.904 288.64c38.24 7.008 75.136 11.072 109.632 11.072 173.376 0 267.36-93.184 267.872-180.928 0.256-56.512-41.504-117.76-136.736-118.752-127.616 0-206.624 90.112-247.744 156.992-41.888-66.624-121.248-154.944-249.12-154.944-92.512 0.928-134.4 62.176-134.016 118.656 0.352 87.776 94.496 181.024 267.872 181.024v0c37.504 0 77.76-4.256 119.744-12.672l2.496-0.448zM746.528 81.984c16 0.128 53.12 4 52.864 36.384-0.128 41.248-57.984 99.36-185.888 99.36-17.632 0-36-1.12-55.264-3.36 29.152-51.296 90.432-132.384 188.288-132.384zM381.664 219.744v0c-127.872 0-185.76-58.112-185.984-99.36-0.16-32.32 36.992-36.192 54.72-36.384 96.736 0 157.632 81.12 186.368 132.448-19.104 2.176-37.472 3.296-55.104 3.296z"
+				],
+				"attrs": [
+					{},
+					{},
+					{},
+					{},
+					{}
+				],
+				"isMulticolor": false,
+				"grid": 32,
+				"tags": [
+					"gift-wrapping"
+				]
+			},
+			"attrs": [
+				{},
+				{},
+				{},
+				{},
+				{}
+			],
+			"properties": {
+				"order": 38,
+				"id": 35,
+				"prevSize": 16,
+				"code": 58922,
+				"name": "present"
+			},
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 2
+		},
 		{
 			"icon": {
 				"paths": [
 					"M1004.16 389.248h-361.408l-111.904-343.488c-2.688-8.192-10.272-13.76-18.88-13.76-8.544 0-16.192 5.568-18.88 13.76l-112.48 343.488h-360.768c-8.512 0-16.192 5.568-18.88 13.76-2.624 8.128 0.256 17.184 7.168 22.176l291.968 212.64-112.512 345.44c-2.656 8.192 0.256 17.184 7.232 22.24 6.912 4.992 16.416 4.992 23.328 0l293.792-213.248 293.28 213.248c3.584 2.56 7.52 3.872 11.616 3.872 4.192 0 8.288-1.312 11.712-3.872 7.136-5.056 9.92-14.016 7.2-22.24l-112.48-345.44 292.576-212.64c6.976-4.992 9.856-14.016 7.2-22.176-2.624-8.192-10.336-13.76-18.88-13.76zM666.848 619.488l96.416 296.128-251.264-182.72-251.936 182.88 96.512-296.256-250.336-182.272h309.152l96.512-294.752 96.032 294.752h309.664l-250.752 182.24z"
 				],
-				"grid": 0,
+				"grid": 32,
 				"tags": [
 					"star-empty"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 3,
 				"id": 2,
@@ -20,7 +127,8 @@
 				"ligatures": ""
 			},
 			"setIdx": 0,
-			"iconIdx": 0
+			"setId": 1,
+			"iconIdx": 3
 		},
 		{
 			"icon": {
@@ -28,11 +136,13 @@
 					"M638.752 512.352v-255.52h-253.504v255.52h-179.488l306.336 377.216 306.176-377.216z",
 					"M512.032 0c-282.784 0-512 229.216-512 511.968 0 282.784 229.216 512.032 512 512.032 282.752 0 512-229.248 512-512.032-0-282.752-229.248-511.968-512-511.968zM512.032 960c-247.040 0-448-200.992-448-448.032-0-247.008 200.96-447.968 448-447.968s448 200.96 448 447.968c0 247.040-200.96 448.032-448 448.032z"
 				],
-				"grid": 0,
+				"grid": 32,
 				"tags": [
 					"download"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 2,
 				"id": 1,
@@ -42,18 +152,21 @@
 				"ligatures": ""
 			},
 			"setIdx": 0,
-			"iconIdx": 1
+			"setId": 1,
+			"iconIdx": 4
 		},
 		{
 			"icon": {
 				"paths": [
 					"M189.6 314.816l-186.848-156.928-0.992 643.936 633.376-112.672-178.432-149.92c364.224-335.040 455.808 16.256 492.544 409.568 131.872-1148.128-459.68-890.656-759.648-633.984z"
 				],
-				"grid": 0,
+				"grid": 32,
 				"tags": [
 					"undo"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 1,
 				"id": 0,
@@ -63,7 +176,8 @@
 				"ligatures": ""
 			},
 			"setIdx": 0,
-			"iconIdx": 2
+			"setId": 1,
+			"iconIdx": 5
 		},
 		{
 			"icon": {
@@ -73,8 +187,10 @@
 				"tags": [
 					"print"
 				],
-				"grid": 0
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 2,
 				"id": 0,
@@ -83,8 +199,9 @@
 				"name": "print",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 0
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 6
 		},
 		{
 			"icon": {
@@ -94,8 +211,10 @@
 				"tags": [
 					"help"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 37,
 				"id": 2,
@@ -104,8 +223,9 @@
 				"name": "help",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 1
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 7
 		},
 		{
 			"icon": {
@@ -115,8 +235,10 @@
 				"tags": [
 					"success"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 34,
 				"id": 1,
@@ -125,8 +247,9 @@
 				"name": "success",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 2
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 8
 		},
 		{
 			"icon": {
@@ -136,8 +259,10 @@
 				"tags": [
 					"error"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 35,
 				"id": 0,
@@ -146,8 +271,9 @@
 				"name": "error",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 3
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 9
 		},
 		{
 			"icon": {
@@ -157,8 +283,10 @@
 				"tags": [
 					"account"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 30,
 				"id": 4,
@@ -167,8 +295,9 @@
 				"name": "account",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 4
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 10
 		},
 		{
 			"icon": {
@@ -178,8 +307,10 @@
 				"tags": [
 					"edit"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 32,
 				"id": 5,
@@ -188,8 +319,9 @@
 				"name": "edit",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 5
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 11
 		},
 		{
 			"icon": {
@@ -199,8 +331,10 @@
 				"tags": [
 					"wishlist"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 31,
 				"id": 32,
@@ -209,8 +343,9 @@
 				"name": "wishlist-full",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 6
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 12
 		},
 		{
 			"icon": {
@@ -220,8 +355,10 @@
 				"tags": [
 					"warning"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 33,
 				"id": 30,
@@ -230,8 +367,9 @@
 				"name": "warning",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 7
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 13
 		},
 		{
 			"icon": {
@@ -241,8 +379,10 @@
 				"tags": [
 					"update"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 1,
 				"id": 29,
@@ -251,8 +391,9 @@
 				"name": "update",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 8
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 14
 		},
 		{
 			"icon": {
@@ -262,8 +403,10 @@
 				"tags": [
 					"trash"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 2,
 				"id": 28,
@@ -272,8 +415,9 @@
 				"name": "trash",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 9
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 15
 		},
 		{
 			"icon": {
@@ -283,8 +427,10 @@
 				"tags": [
 					"star"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 36,
 				"id": 27,
@@ -293,8 +439,9 @@
 				"name": "star",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 10
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 16
 		},
 		{
 			"icon": {
@@ -304,8 +451,10 @@
 				"tags": [
 					"settings"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 3,
 				"id": 26,
@@ -314,8 +463,9 @@
 				"name": "settings",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 11
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 17
 		},
 		{
 			"icon": {
@@ -325,8 +475,10 @@
 				"tags": [
 					"pointer down"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 4,
 				"id": 19,
@@ -335,8 +487,9 @@
 				"name": "pointer-down",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 12
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 18
 		},
 		{
 			"icon": {
@@ -346,8 +499,10 @@
 				"tags": [
 					"next"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 5,
 				"id": 18,
@@ -356,8 +511,9 @@
 				"name": "next",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 13
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 19
 		},
 		{
 			"icon": {
@@ -367,8 +523,10 @@
 				"tags": [
 					"menu"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 6,
 				"id": 17,
@@ -377,8 +535,9 @@
 				"name": "menu",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 14
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 20
 		},
 		{
 			"icon": {
@@ -388,8 +547,10 @@
 				"tags": [
 					"location"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 7,
 				"id": 16,
@@ -398,8 +559,9 @@
 				"name": "location",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 15
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 21
 		},
 		{
 			"icon": {
@@ -409,8 +571,10 @@
 				"tags": [
 					"list"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 8,
 				"id": 15,
@@ -419,8 +583,9 @@
 				"name": "list",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 16
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 22
 		},
 		{
 			"icon": {
@@ -430,8 +595,10 @@
 				"tags": [
 					"info"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 9,
 				"id": 14,
@@ -440,8 +607,9 @@
 				"name": "info",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 17
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 23
 		},
 		{
 			"icon": {
@@ -451,8 +619,10 @@
 				"tags": [
 					"grid"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 10,
 				"id": 13,
@@ -461,8 +631,9 @@
 				"name": "grid",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 18
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 24
 		},
 		{
 			"icon": {
@@ -472,8 +643,10 @@
 				"tags": [
 					"minus"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 11,
 				"id": 5,
@@ -482,8 +655,9 @@
 				"name": "minus",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 19
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 25
 		},
 		{
 			"icon": {
@@ -493,8 +667,10 @@
 				"tags": [
 					"checkmark"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 12,
 				"id": 4,
@@ -503,8 +679,9 @@
 				"name": "checkmark",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 20
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 26
 		},
 		{
 			"icon": {
@@ -514,8 +691,10 @@
 				"tags": [
 					"cart"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 13,
 				"id": 3,
@@ -524,8 +703,9 @@
 				"name": "cart",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 21
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 27
 		},
 		{
 			"icon": {
@@ -535,8 +715,10 @@
 				"tags": [
 					"calendar"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 14,
 				"id": 2,
@@ -545,8 +727,9 @@
 				"name": "calendar",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 22
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 28
 		},
 		{
 			"icon": {
@@ -556,8 +739,10 @@
 				"tags": [
 					"arrow up"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 15,
 				"id": 1,
@@ -566,8 +751,9 @@
 				"name": "arrow-up",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 23
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 29
 		},
 		{
 			"icon": {
@@ -577,8 +763,10 @@
 				"tags": [
 					"arrow down"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 16,
 				"id": 0,
@@ -587,8 +775,9 @@
 				"name": "arrow-down",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 24
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 30
 		},
 		{
 			"icon": {
@@ -598,8 +787,10 @@
 				"tags": [
 					"search"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 17,
 				"id": 25,
@@ -608,8 +799,9 @@
 				"name": "search",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 25
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 31
 		},
 		{
 			"icon": {
@@ -619,8 +811,10 @@
 				"tags": [
 					"remove"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 18,
 				"id": 24,
@@ -629,8 +823,9 @@
 				"name": "remove",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 26
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 32
 		},
 		{
 			"icon": {
@@ -640,8 +835,10 @@
 				"tags": [
 					"prev"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 19,
 				"id": 23,
@@ -650,8 +847,9 @@
 				"name": "prev",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 27
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 33
 		},
 		{
 			"icon": {
@@ -661,8 +859,10 @@
 				"tags": [
 					"pointer up"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 20,
 				"id": 22,
@@ -671,8 +871,9 @@
 				"name": "pointer-up",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 28
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 34
 		},
 		{
 			"icon": {
@@ -682,8 +883,10 @@
 				"tags": [
 					"pointer right"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 21,
 				"id": 21,
@@ -692,8 +895,9 @@
 				"name": "pointer-right",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 29
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 35
 		},
 		{
 			"icon": {
@@ -703,8 +907,10 @@
 				"tags": [
 					"pointer left"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 22,
 				"id": 20,
@@ -713,8 +919,9 @@
 				"name": "pointer-left",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 30
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 36
 		},
 		{
 			"icon": {
@@ -724,8 +931,10 @@
 				"tags": [
 					"flag"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 23,
 				"id": 12,
@@ -734,8 +943,9 @@
 				"name": "flag",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 31
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 37
 		},
 		{
 			"icon": {
@@ -745,8 +955,10 @@
 				"tags": [
 					"expand"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 24,
 				"id": 11,
@@ -755,8 +967,9 @@
 				"name": "expand",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 32
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 38
 		},
 		{
 			"icon": {
@@ -767,8 +980,10 @@
 				"tags": [
 					"envelope"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 25,
 				"id": 10,
@@ -777,8 +992,9 @@
 				"name": "envelope",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 33
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 39
 		},
 		{
 			"icon": {
@@ -788,8 +1004,10 @@
 				"tags": [
 					"compare"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 26,
 				"id": 9,
@@ -798,8 +1016,9 @@
 				"name": "compare-full",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 34
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 40
 		},
 		{
 			"icon": {
@@ -809,8 +1028,10 @@
 				"tags": [
 					"comment"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 27,
 				"id": 7,
@@ -819,8 +1040,9 @@
 				"name": "comment",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 35
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 41
 		},
 		{
 			"icon": {
@@ -830,8 +1052,10 @@
 				"tags": [
 					"up"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 28,
 				"id": 34,
@@ -840,8 +1064,9 @@
 				"name": "up",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 36
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 42
 		},
 		{
 			"icon": {
@@ -851,8 +1076,10 @@
 				"tags": [
 					"down"
 				],
-				"grid": 32
+				"grid": 32,
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 29,
 				"id": 33,
@@ -861,8 +1088,9 @@
 				"name": "down",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 37
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 43
 		}
 	],
 	"height": 1024,
@@ -889,6 +1117,8 @@
 		"historySize": 100,
 		"showCodes": true,
 		"search": "",
-		"gridSize": 16
+		"gridSize": 16,
+		"showQuickUse2": true,
+		"showSVGs": true
 	}
 }
\ No newline at end of file
diff --git a/app/i18n/magento/de_de/composer.json b/app/i18n/magento/de_de/composer.json
index 8792a746870334173328153bee80077157349745..752d5584e51535511fc382bd1edfad901affa4fd 100644
--- a/app/i18n/magento/de_de/composer.json
+++ b/app/i18n/magento/de_de/composer.json
@@ -1,13 +1,13 @@
 {
     "name": "magento/language-de_de",
     "description": "German (Germany) language",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
     "require": {
-        "magento/framework": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/en_us/composer.json b/app/i18n/magento/en_us/composer.json
index 12f592f50bc7f6772183dc3e44a42ecb65fbfb05..4feb2ced23f3e909170d222c43410ff08edc5cd7 100644
--- a/app/i18n/magento/en_us/composer.json
+++ b/app/i18n/magento/en_us/composer.json
@@ -1,13 +1,13 @@
 {
     "name": "magento/language-en_us",
     "description": "English (United States) language",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
     "require": {
-        "magento/framework": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/es_es/composer.json b/app/i18n/magento/es_es/composer.json
index eec09e8483fbe8846f06947d7d8fef60d284d0d0..c2a70d39babadc84b11b03652e750d590ffd15fa 100644
--- a/app/i18n/magento/es_es/composer.json
+++ b/app/i18n/magento/es_es/composer.json
@@ -1,13 +1,13 @@
 {
     "name": "magento/language-es_es",
     "description": "Spanish (Spain) language",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
     "require": {
-        "magento/framework": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/fr_fr/composer.json b/app/i18n/magento/fr_fr/composer.json
index 7ff13b7e8f3aa58340613fe97806ecfcc1b174aa..b6c40d9c8fa9be5d193c4f81534ab9cf0bebdd89 100644
--- a/app/i18n/magento/fr_fr/composer.json
+++ b/app/i18n/magento/fr_fr/composer.json
@@ -1,13 +1,13 @@
 {
     "name": "magento/language-fr_fr",
     "description": "French (France) language",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
     "require": {
-        "magento/framework": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/nl_nl/composer.json b/app/i18n/magento/nl_nl/composer.json
index af92cc0e22f2de55041a7b8d0f6973cfa7244e09..c905b708215fd32745c8c1313fca3649c31f4c7c 100644
--- a/app/i18n/magento/nl_nl/composer.json
+++ b/app/i18n/magento/nl_nl/composer.json
@@ -1,13 +1,13 @@
 {
     "name": "magento/language-nl_nl",
     "description": "Dutch (Netherlands) language",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
     "require": {
-        "magento/framework": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/pt_br/composer.json b/app/i18n/magento/pt_br/composer.json
index ea475dfb76206af0453c1d37586d71107d2ea7bb..4f80afff03c0adbfab31185741fdb201c6391b50 100644
--- a/app/i18n/magento/pt_br/composer.json
+++ b/app/i18n/magento/pt_br/composer.json
@@ -1,13 +1,13 @@
 {
     "name": "magento/language-pt_br",
     "description": "Portuguese (Brazil) language",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
     "require": {
-        "magento/framework": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/app/i18n/magento/zh_cn/composer.json b/app/i18n/magento/zh_cn/composer.json
index fe43b44fcdc7f9e7a3f2b31fa64b08e5bee94b3b..63c14d0af900801962fcaa32f179cf375fa451f9 100644
--- a/app/i18n/magento/zh_cn/composer.json
+++ b/app/i18n/magento/zh_cn/composer.json
@@ -1,13 +1,13 @@
 {
     "name": "magento/language-zh_cn",
     "description": "Chinese (China) language",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
     ],
     "require": {
-        "magento/framework": "0.74.0-beta13",
+        "magento/framework": "0.74.0-beta14",
         "magento/magento-composer-installer": "*"
     },
     "type": "magento2-language",
diff --git a/composer.json b/composer.json
index 94549cfd2878cbc97c0476f54c7a7f2d4f1b093f..2fca4d005a36670877caf6253c70e0bb38e92a90 100644
--- a/composer.json
+++ b/composer.json
@@ -2,7 +2,7 @@
     "name": "magento/magento2ce",
     "description": "Magento 2 (Community Edition)",
     "type": "project",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/composer.lock b/composer.lock
index 77a18945169153ccdfd51d970fdd2255c499d42b..4e3421ad6e05957d87c2807e67fe0152cbf10bac 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "hash": "daa84b5d3ea8eabcd1bb1f33c07e08dd",
+    "hash": "32f26595c37e07bb66613d23424788e0",
     "packages": [
         {
             "name": "composer/composer",
@@ -49,7 +49,7 @@
                     "Composer": "src/"
                 }
             },
-            "notification-url": "https://packagist.org/downloads/",
+            "notification-url": "http://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -261,7 +261,7 @@
                 "ZF1",
                 "framework"
             ],
-            "time": "2015-06-02 08:04:41"
+            "time": "2015-02-06 17:25:45"
         },
         {
             "name": "monolog/monolog",
@@ -567,7 +567,7 @@
                     "Symfony\\Component\\Finder\\": ""
                 }
             },
-            "notification-url": "https://packagist.org/downloads/",
+            "notification-url": "http://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -616,7 +616,7 @@
                     "Symfony\\Component\\Process\\": ""
                 }
             },
-            "notification-url": "https://packagist.org/downloads/",
+            "notification-url": "http://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -684,12 +684,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-code.git",
-                "reference": "0ed94f842ba60cdc900c46a61bdbd7ac95a3e140"
+                "reference": "cfd5951ff4348e4430850560416c7ddb755f95d3"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-code/zipball/0ed94f842ba60cdc900c46a61bdbd7ac95a3e140",
-                "reference": "0ed94f842ba60cdc900c46a61bdbd7ac95a3e140",
+                "reference": "cfd5951ff4348e4430850560416c7ddb755f95d3",
                 "shasum": ""
             },
             "require": {
@@ -698,9 +698,6 @@
             },
             "require-dev": {
                 "doctrine/common": ">=2.1",
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-stdlib": "self.version"
             },
             "suggest": {
@@ -716,7 +713,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Code\\": "src/"
+                    "Zend\\Code\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -724,12 +721,12 @@
                 "BSD-3-Clause"
             ],
             "description": "provides facilities to generate arbitrary code using an object oriented interface",
-            "homepage": "https://github.com/zendframework/zend-code",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "code",
                 "zf2"
             ],
-            "time": "2015-03-31 15:39:14"
+            "time": "2015-04-01 17:59:08"
         },
         {
             "name": "zendframework/zend-config",
@@ -737,12 +734,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-config.git",
-                "reference": "95f3a4b3fa85d49e6f060183122de4596fa6d29d"
+                "reference": "8682fe4e2923b383bb6472fc84b5796a07589163"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-config/zipball/95f3a4b3fa85d49e6f060183122de4596fa6d29d",
-                "reference": "95f3a4b3fa85d49e6f060183122de4596fa6d29d",
+                "reference": "8682fe4e2923b383bb6472fc84b5796a07589163",
                 "shasum": ""
             },
             "require": {
@@ -750,9 +747,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-filter": "self.version",
                 "zendframework/zend-i18n": "self.version",
                 "zendframework/zend-json": "self.version",
@@ -773,7 +767,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Config\\": "src/"
+                    "Zend\\Config\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -781,12 +775,12 @@
                 "BSD-3-Clause"
             ],
             "description": "provides a nested object property based user interface for accessing this configuration data within application code",
-            "homepage": "https://github.com/zendframework/zend-config",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "config",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 17:59:31"
         },
         {
             "name": "zendframework/zend-console",
@@ -794,23 +788,18 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-console.git",
-                "reference": "54823d9ba6f8ce39046384ee5a043b5b3d5f56d7"
+                "reference": "94ab6663b07e19f20b3319ecf317bd72b6a72dca"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-console/zipball/54823d9ba6f8ce39046384ee5a043b5b3d5f56d7",
-                "reference": "54823d9ba6f8ce39046384ee5a043b5b3d5f56d7",
+                "reference": "94ab6663b07e19f20b3319ecf317bd72b6a72dca",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23",
                 "zendframework/zend-stdlib": "self.version"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "suggest": {
                 "zendframework/zend-filter": "To support DefaultRouteMatcher usage",
                 "zendframework/zend-validator": "To support DefaultRouteMatcher usage"
@@ -824,19 +813,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Console\\": "src/"
+                    "Zend\\Console\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-console",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "console",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 17:59:48"
         },
         {
             "name": "zendframework/zend-di",
@@ -844,12 +833,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-di.git",
-                "reference": "b9f8de081adecf71a003a569e9ba76c0a4c00bf2"
+                "reference": "0811f2a67ad0b50dfb8d602ed67cde0b82249190"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-di/zipball/b9f8de081adecf71a003a569e9ba76c0a4c00bf2",
-                "reference": "b9f8de081adecf71a003a569e9ba76c0a4c00bf2",
+                "reference": "0811f2a67ad0b50dfb8d602ed67cde0b82249190",
                 "shasum": ""
             },
             "require": {
@@ -858,9 +847,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-servicemanager": "self.version"
             },
             "suggest": {
@@ -875,19 +861,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Di\\": "src/"
+                    "Zend\\Di\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-di",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "di",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:01:30"
         },
         {
             "name": "zendframework/zend-escaper",
@@ -895,22 +881,17 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-escaper.git",
-                "reference": "15e5769e4fcdb4bf07ebd76500810e7070e23a97"
+                "reference": "65b3328627362b0be1d5e9067bc846511d1fbc96"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/15e5769e4fcdb4bf07ebd76500810e7070e23a97",
-                "reference": "15e5769e4fcdb4bf07ebd76500810e7070e23a97",
+                "reference": "65b3328627362b0be1d5e9067bc846511d1fbc96",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -920,19 +901,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Escaper\\": "src/"
+                    "Zend\\Escaper\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-escaper",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "escaper",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:02:07"
         },
         {
             "name": "zendframework/zend-eventmanager",
@@ -940,23 +921,18 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-eventmanager.git",
-                "reference": "58d21c95c7005a527262fd536499195f104e83f9"
+                "reference": "38df5b567d4ff4d22144745c503ba0502d0d5695"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/58d21c95c7005a527262fd536499195f104e83f9",
-                "reference": "58d21c95c7005a527262fd536499195f104e83f9",
+                "reference": "38df5b567d4ff4d22144745c503ba0502d0d5695",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23",
                 "zendframework/zend-stdlib": "self.version"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -966,19 +942,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\EventManager\\": "src/"
+                    "Zend\\EventManager\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-event-manager",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "eventmanager",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:05:26"
         },
         {
             "name": "zendframework/zend-filter",
@@ -986,12 +962,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-filter.git",
-                "reference": "6d8aed2da81b62a04747346c4370562cdbe34595"
+                "reference": "b13741a88553351fc52472de529b57b580b8f6f1"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/6d8aed2da81b62a04747346c4370562cdbe34595",
-                "reference": "6d8aed2da81b62a04747346c4370562cdbe34595",
+                "reference": "b13741a88553351fc52472de529b57b580b8f6f1",
                 "shasum": ""
             },
             "require": {
@@ -999,9 +975,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-crypt": "self.version",
                 "zendframework/zend-servicemanager": "self.version",
                 "zendframework/zend-uri": "self.version"
@@ -1021,7 +994,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Filter\\": "src/"
+                    "Zend\\Filter\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1029,12 +1002,12 @@
                 "BSD-3-Clause"
             ],
             "description": "provides a set of commonly needed data filters",
-            "homepage": "https://github.com/zendframework/zend-filter",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "filter",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:25"
         },
         {
             "name": "zendframework/zend-form",
@@ -1042,12 +1015,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-form.git",
-                "reference": "bca0db55718355d25c2c10fdd41a83561f1c94b3"
+                "reference": "09f5bd46ffbf783df22281898e2175b291bd43a3"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-form/zipball/bca0db55718355d25c2c10fdd41a83561f1c94b3",
-                "reference": "bca0db55718355d25c2c10fdd41a83561f1c94b3",
+                "reference": "09f5bd46ffbf783df22281898e2175b291bd43a3",
                 "shasum": ""
             },
             "require": {
@@ -1056,9 +1029,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-captcha": "self.version",
                 "zendframework/zend-code": "self.version",
                 "zendframework/zend-eventmanager": "self.version",
@@ -1089,19 +1059,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Form\\": "src/"
+                    "Zend\\Form\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-form",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "form",
                 "zf2"
             ],
-            "time": "2015-03-28 20:29:18"
+            "time": "2015-04-01 18:09:25"
         },
         {
             "name": "zendframework/zend-http",
@@ -1109,12 +1079,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-http.git",
-                "reference": "9c6047a0bdb3094d3ea07a215ff929cc47de4deb"
+                "reference": "ee6220609845b32d1b2873c9ac694aef56d508f5"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-http/zipball/9c6047a0bdb3094d3ea07a215ff929cc47de4deb",
-                "reference": "9c6047a0bdb3094d3ea07a215ff929cc47de4deb",
+                "reference": "ee6220609845b32d1b2873c9ac694aef56d508f5",
                 "shasum": ""
             },
             "require": {
@@ -1124,11 +1094,6 @@
                 "zendframework/zend-uri": "self.version",
                 "zendframework/zend-validator": "self.version"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -1138,7 +1103,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Http\\": "src/"
+                    "Zend\\Http\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1146,12 +1111,12 @@
                 "BSD-3-Clause"
             ],
             "description": "provides an easy interface for performing Hyper-Text Transfer Protocol (HTTP) requests",
-            "homepage": "https://github.com/zendframework/zend-http",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "http",
                 "zf2"
             ],
-            "time": "2015-03-27 15:46:30"
+            "time": "2015-04-01 18:09:25"
         },
         {
             "name": "zendframework/zend-i18n",
@@ -1159,12 +1124,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-i18n.git",
-                "reference": "9aebc5287373a802540d75fe5508417f866c2e52"
+                "reference": "33051775d9a8c341fe3b77d1f3daa0e921e2f4bd"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/9aebc5287373a802540d75fe5508417f866c2e52",
-                "reference": "9aebc5287373a802540d75fe5508417f866c2e52",
+                "reference": "33051775d9a8c341fe3b77d1f3daa0e921e2f4bd",
                 "shasum": ""
             },
             "require": {
@@ -1172,9 +1137,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-cache": "self.version",
                 "zendframework/zend-config": "self.version",
                 "zendframework/zend-eventmanager": "self.version",
@@ -1203,19 +1165,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\I18n\\": "src/"
+                    "Zend\\I18n\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-i18n",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "i18n",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:26"
         },
         {
             "name": "zendframework/zend-inputfilter",
@@ -1223,12 +1185,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-inputfilter.git",
-                "reference": "4b1398f3635fae3cc5e873c5bb067274f3d10a93"
+                "reference": "16856fec61f285e41e5492235220a4dec06ab90f"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-inputfilter/zipball/4b1398f3635fae3cc5e873c5bb067274f3d10a93",
-                "reference": "4b1398f3635fae3cc5e873c5bb067274f3d10a93",
+                "reference": "16856fec61f285e41e5492235220a4dec06ab90f",
                 "shasum": ""
             },
             "require": {
@@ -1238,9 +1200,6 @@
                 "zendframework/zend-validator": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-servicemanager": "self.version"
             },
             "suggest": {
@@ -1255,19 +1214,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\InputFilter\\": "src/"
+                    "Zend\\InputFilter\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-input-filter",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "inputfilter",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:09:26"
         },
         {
             "name": "zendframework/zend-json",
@@ -1275,12 +1234,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-json.git",
-                "reference": "2d845e151c1b9a237cf1899ac31e17fb10bd1e3f"
+                "reference": "76aeb27e4baf39799e5ca3cf6f2fdd6748ee930c"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-json/zipball/2d845e151c1b9a237cf1899ac31e17fb10bd1e3f",
-                "reference": "2d845e151c1b9a237cf1899ac31e17fb10bd1e3f",
+                "reference": "76aeb27e4baf39799e5ca3cf6f2fdd6748ee930c",
                 "shasum": ""
             },
             "require": {
@@ -1288,9 +1247,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-http": "self.version",
                 "zendframework/zend-server": "self.version"
             },
@@ -1308,7 +1264,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Json\\": "src/"
+                    "Zend\\Json\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1316,12 +1272,12 @@
                 "BSD-3-Clause"
             ],
             "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP",
-            "homepage": "https://github.com/zendframework/zend-json",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "json",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:26"
         },
         {
             "name": "zendframework/zend-loader",
@@ -1329,22 +1285,17 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-loader.git",
-                "reference": "65de2c7a56f8eee633c6bf1cfab73e45648880d4"
+                "reference": "6868b8a0c346f17fb97724c3a63aa2cbf6b94865"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/65de2c7a56f8eee633c6bf1cfab73e45648880d4",
-                "reference": "65de2c7a56f8eee633c6bf1cfab73e45648880d4",
+                "reference": "6868b8a0c346f17fb97724c3a63aa2cbf6b94865",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -1354,19 +1305,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Loader\\": "src/"
+                    "Zend\\Loader\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-loader",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "loader",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:09:26"
         },
         {
             "name": "zendframework/zend-log",
@@ -1374,12 +1325,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-log.git",
-                "reference": "002e3c810cad7e31e51c9895e9e3cb6fbd312cdd"
+                "reference": "2d5d20fd45470506bdaff727c46dc25fe953146e"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-log/zipball/002e3c810cad7e31e51c9895e9e3cb6fbd312cdd",
-                "reference": "002e3c810cad7e31e51c9895e9e3cb6fbd312cdd",
+                "reference": "2d5d20fd45470506bdaff727c46dc25fe953146e",
                 "shasum": ""
             },
             "require": {
@@ -1388,9 +1339,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-console": "self.version",
                 "zendframework/zend-db": "self.version",
                 "zendframework/zend-escaper": "self.version",
@@ -1414,7 +1362,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Log\\": "src/"
+                    "Zend\\Log\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1422,13 +1370,13 @@
                 "BSD-3-Clause"
             ],
             "description": "component for general purpose logging",
-            "homepage": "https://github.com/zendframework/zend-log",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "log",
                 "logging",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:26"
         },
         {
             "name": "zendframework/zend-math",
@@ -1436,22 +1384,17 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-math.git",
-                "reference": "f41fe4acfd809c14f2a802d1aa45dec8fcd2cc73"
+                "reference": "634123f83ca90b6613f132d0d100e6b5e9890a29"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-math/zipball/f41fe4acfd809c14f2a802d1aa45dec8fcd2cc73",
-                "reference": "f41fe4acfd809c14f2a802d1aa45dec8fcd2cc73",
+                "reference": "634123f83ca90b6613f132d0d100e6b5e9890a29",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "suggest": {
                 "ext-bcmath": "If using the bcmath functionality",
                 "ext-gmp": "If using the gmp functionality",
@@ -1467,19 +1410,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Math\\": "src/"
+                    "Zend\\Math\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-math",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "math",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:09:27"
         },
         {
             "name": "zendframework/zend-modulemanager",
@@ -1487,12 +1430,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-modulemanager.git",
-                "reference": "af7ae3cd29a1efb73cc66ae1081e606039d5c20f"
+                "reference": "cbe16b0eafe734a062ed0182381e64b9c953dccf"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-modulemanager/zipball/af7ae3cd29a1efb73cc66ae1081e606039d5c20f",
-                "reference": "af7ae3cd29a1efb73cc66ae1081e606039d5c20f",
+                "reference": "cbe16b0eafe734a062ed0182381e64b9c953dccf",
                 "shasum": ""
             },
             "require": {
@@ -1501,9 +1444,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-config": "self.version",
                 "zendframework/zend-console": "self.version",
                 "zendframework/zend-loader": "self.version",
@@ -1525,19 +1465,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\ModuleManager\\": "src/"
+                    "Zend\\ModuleManager\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-module-manager",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "modulemanager",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:09:27"
         },
         {
             "name": "zendframework/zend-mvc",
@@ -1545,12 +1485,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-mvc.git",
-                "reference": "0b4a4a829b30be510a3f215c4ff00c703ee8b431"
+                "reference": "bfff0f5f9e4d925ee13b8c159c9d6ae7e0db5412"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-mvc/zipball/0b4a4a829b30be510a3f215c4ff00c703ee8b431",
-                "reference": "0b4a4a829b30be510a3f215c4ff00c703ee8b431",
+                "reference": "bfff0f5f9e4d925ee13b8c159c9d6ae7e0db5412",
                 "shasum": ""
             },
             "require": {
@@ -1561,9 +1501,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-authentication": "self.version",
                 "zendframework/zend-console": "self.version",
                 "zendframework/zend-di": "self.version",
@@ -1612,19 +1549,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Mvc\\": "src/"
+                    "Zend\\Mvc\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-mvc",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "mvc",
                 "zf2"
             ],
-            "time": "2015-03-26 18:55:14"
+            "time": "2015-04-01 18:09:27"
         },
         {
             "name": "zendframework/zend-serializer",
@@ -1632,12 +1569,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-serializer.git",
-                "reference": "3c531789a9882a5deb721356a7bd2642b65d4b09"
+                "reference": "a46960854d6326f0036d98c9abc7a79e36e25928"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/3c531789a9882a5deb721356a7bd2642b65d4b09",
-                "reference": "3c531789a9882a5deb721356a7bd2642b65d4b09",
+                "reference": "a46960854d6326f0036d98c9abc7a79e36e25928",
                 "shasum": ""
             },
             "require": {
@@ -1647,9 +1584,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-servicemanager": "self.version"
             },
             "suggest": {
@@ -1664,7 +1598,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Serializer\\": "src/"
+                    "Zend\\Serializer\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1672,12 +1606,12 @@
                 "BSD-3-Clause"
             ],
             "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover",
-            "homepage": "https://github.com/zendframework/zend-serializer",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "serializer",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:28"
         },
         {
             "name": "zendframework/zend-server",
@@ -1685,12 +1619,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-server.git",
-                "reference": "d11ff0bd529d202022823d4accf5983cbd50fc49"
+                "reference": "fc73c34490908ba143af3c57c7e166b40c4b9f8e"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-server/zipball/d11ff0bd529d202022823d4accf5983cbd50fc49",
-                "reference": "d11ff0bd529d202022823d4accf5983cbd50fc49",
+                "reference": "fc73c34490908ba143af3c57c7e166b40c4b9f8e",
                 "shasum": ""
             },
             "require": {
@@ -1698,11 +1632,6 @@
                 "zendframework/zend-code": "self.version",
                 "zendframework/zend-stdlib": "self.version"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -1712,19 +1641,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Server\\": "src/"
+                    "Zend\\Server\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-server",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "server",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:28"
         },
         {
             "name": "zendframework/zend-servicemanager",
@@ -1732,21 +1661,18 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-servicemanager.git",
-                "reference": "57cf99fa5ac08c05a135a8d0d676c52a5e450083"
+                "reference": "d3c27c708a148a30608f313a5b7a61a531bd9cb9"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/57cf99fa5ac08c05a135a8d0d676c52a5e450083",
-                "reference": "57cf99fa5ac08c05a135a8d0d676c52a5e450083",
+                "reference": "d3c27c708a148a30608f313a5b7a61a531bd9cb9",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-di": "self.version"
             },
             "suggest": {
@@ -1762,19 +1688,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\ServiceManager\\": "src/"
+                    "Zend\\ServiceManager\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-service-manager",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "servicemanager",
                 "zf2"
             ],
-            "time": "2015-03-23 18:29:14"
+            "time": "2015-04-01 18:09:28"
         },
         {
             "name": "zendframework/zend-soap",
@@ -1782,12 +1708,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-soap.git",
-                "reference": "a599463aba97ce247faf3fb443e3c7858b46449b"
+                "reference": "e42b900798ea95a9063fa4922da976d8b3a8ab6f"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-soap/zipball/a599463aba97ce247faf3fb443e3c7858b46449b",
-                "reference": "a599463aba97ce247faf3fb443e3c7858b46449b",
+                "reference": "e42b900798ea95a9063fa4922da976d8b3a8ab6f",
                 "shasum": ""
             },
             "require": {
@@ -1797,9 +1723,6 @@
                 "zendframework/zend-uri": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-http": "self.version"
             },
             "suggest": {
@@ -1814,19 +1737,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Soap\\": "src/"
+                    "Zend\\Soap\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-soap",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "soap",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:29"
         },
         {
             "name": "zendframework/zend-stdlib",
@@ -1834,21 +1757,18 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-stdlib.git",
-                "reference": "cf05c5ba75606e47ffee91cedc72778da46f74c3"
+                "reference": "eab586f4c18af3fa63c977611939f1f4a3cf1030"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cf05c5ba75606e47ffee91cedc72778da46f74c3",
-                "reference": "cf05c5ba75606e47ffee91cedc72778da46f74c3",
+                "reference": "eab586f4c18af3fa63c977611939f1f4a3cf1030",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.23"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-eventmanager": "self.version",
                 "zendframework/zend-filter": "self.version",
                 "zendframework/zend-serializer": "self.version",
@@ -1869,19 +1789,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Stdlib\\": "src/"
+                    "Zend\\Stdlib\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-stdlib",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "stdlib",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:29"
         },
         {
             "name": "zendframework/zend-text",
@@ -1889,12 +1809,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-text.git",
-                "reference": "d962ea25647b20527f3ca34ae225bbc885dabfc7"
+                "reference": "35f519e20e575a331c2ee554e5a555a59ce4b9e2"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-text/zipball/d962ea25647b20527f3ca34ae225bbc885dabfc7",
-                "reference": "d962ea25647b20527f3ca34ae225bbc885dabfc7",
+                "reference": "35f519e20e575a331c2ee554e5a555a59ce4b9e2",
                 "shasum": ""
             },
             "require": {
@@ -1902,11 +1822,6 @@
                 "zendframework/zend-servicemanager": "self.version",
                 "zendframework/zend-stdlib": "self.version"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -1916,19 +1831,19 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Text\\": "src/"
+                    "Zend\\Text\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
-            "homepage": "https://github.com/zendframework/zend-text",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "text",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:29"
         },
         {
             "name": "zendframework/zend-uri",
@@ -1936,12 +1851,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-uri.git",
-                "reference": "bd9e625639415376f6a82551c73328448d7bc7d1"
+                "reference": "53f5b162b293f80de8b951eece8e08be83c4fe16"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/bd9e625639415376f6a82551c73328448d7bc7d1",
-                "reference": "bd9e625639415376f6a82551c73328448d7bc7d1",
+                "reference": "53f5b162b293f80de8b951eece8e08be83c4fe16",
                 "shasum": ""
             },
             "require": {
@@ -1949,11 +1864,6 @@
                 "zendframework/zend-escaper": "self.version",
                 "zendframework/zend-validator": "self.version"
             },
-            "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master"
-            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -1963,7 +1873,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Uri\\": "src/"
+                    "Zend\\Uri\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -1971,12 +1881,12 @@
                 "BSD-3-Clause"
             ],
             "description": "a component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)",
-            "homepage": "https://github.com/zendframework/zend-uri",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "uri",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:29"
         },
         {
             "name": "zendframework/zend-validator",
@@ -1984,12 +1894,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-validator.git",
-                "reference": "45fac2545a0f2eb66d71cb7966feee481e7c475f"
+                "reference": "eb678d20256f120a72ca27276bbb2875841701ab"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/45fac2545a0f2eb66d71cb7966feee481e7c475f",
-                "reference": "45fac2545a0f2eb66d71cb7966feee481e7c475f",
+                "reference": "eb678d20256f120a72ca27276bbb2875841701ab",
                 "shasum": ""
             },
             "require": {
@@ -1997,9 +1907,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-db": "self.version",
                 "zendframework/zend-filter": "self.version",
                 "zendframework/zend-i18n": "self.version",
@@ -2027,7 +1934,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\Validator\\": "src/"
+                    "Zend\\Validator\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2035,12 +1942,12 @@
                 "BSD-3-Clause"
             ],
             "description": "provides a set of commonly needed validators",
-            "homepage": "https://github.com/zendframework/zend-validator",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "validator",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:30"
         },
         {
             "name": "zendframework/zend-view",
@@ -2048,12 +1955,12 @@
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/zend-view.git",
-                "reference": "37beb1ad46e530f627b4b6c3716efd728e976ba9"
+                "reference": "e119b4b5f082af58a96eb206e782b62c193227bf"
             },
             "dist": {
                 "type": "zip",
                 "url": "https://api.github.com/repos/zendframework/zend-view/zipball/37beb1ad46e530f627b4b6c3716efd728e976ba9",
-                "reference": "37beb1ad46e530f627b4b6c3716efd728e976ba9",
+                "reference": "e119b4b5f082af58a96eb206e782b62c193227bf",
                 "shasum": ""
             },
             "require": {
@@ -2063,9 +1970,6 @@
                 "zendframework/zend-stdlib": "self.version"
             },
             "require-dev": {
-                "fabpot/php-cs-fixer": "1.7.*",
-                "phpunit/phpunit": "~4.0",
-                "satooshi/php-coveralls": "dev-master",
                 "zendframework/zend-authentication": "self.version",
                 "zendframework/zend-escaper": "self.version",
                 "zendframework/zend-feed": "self.version",
@@ -2104,7 +2008,7 @@
             },
             "autoload": {
                 "psr-4": {
-                    "Zend\\View\\": "src/"
+                    "Zend\\View\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -2112,12 +2016,12 @@
                 "BSD-3-Clause"
             ],
             "description": "provides a system of helpers, output filters, and variable escaping",
-            "homepage": "https://github.com/zendframework/zend-view",
+            "homepage": "https://github.com/zendframework/zf2",
             "keywords": [
                 "view",
                 "zf2"
             ],
-            "time": "2015-03-25 20:55:48"
+            "time": "2015-04-01 18:09:30"
         }
     ],
     "packages-dev": [
@@ -2789,7 +2693,7 @@
                     "src/"
                 ]
             },
-            "notification-url": "https://packagist.org/downloads/",
+            "notification-url": "http://packagist.org/downloads/",
             "license": [
                 "BSD-3-Clause"
             ],
@@ -3288,7 +3192,7 @@
                     "Symfony\\Component\\Config\\": ""
                 }
             },
-            "notification-url": "https://packagist.org/downloads/",
+            "notification-url": "http://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -3348,7 +3252,7 @@
                     "Symfony\\Component\\DependencyInjection\\": ""
                 }
             },
-            "notification-url": "https://packagist.org/downloads/",
+            "notification-url": "http://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -3406,7 +3310,7 @@
                     "Symfony\\Component\\EventDispatcher\\": ""
                 }
             },
-            "notification-url": "https://packagist.org/downloads/",
+            "notification-url": "http://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -3455,7 +3359,7 @@
                     "Symfony\\Component\\Filesystem\\": ""
                 }
             },
-            "notification-url": "https://packagist.org/downloads/",
+            "notification-url": "http://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -3504,7 +3408,7 @@
                     "Symfony\\Component\\Stopwatch\\": ""
                 }
             },
-            "notification-url": "https://packagist.org/downloads/",
+            "notification-url": "http://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
@@ -3553,7 +3457,7 @@
                     "Symfony\\Component\\Yaml\\": ""
                 }
             },
-            "notification-url": "https://packagist.org/downloads/",
+            "notification-url": "http://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
diff --git a/dev/tests/api-functional/testsuite/Magento/CatalogInventory/Api/StockItemTest.php b/dev/tests/api-functional/testsuite/Magento/CatalogInventory/Api/StockItemTest.php
index f8ef77f8e297b3bdf6a41c501c70adb40d31db99..0f49b8bef0ae3f56dfff91db4c9ae8cc25f371c4 100644
--- a/dev/tests/api-functional/testsuite/Magento/CatalogInventory/Api/StockItemTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/CatalogInventory/Api/StockItemTest.php
@@ -29,7 +29,12 @@ class StockItemTest extends WebapiAbstract
     /**
      * Resource path
      */
-    const RESOURCE_PATH = '/V1/stockItems';
+    const RESOURCE_GET_PATH = '/V1/stockItems';
+
+    /**
+     * Resource path
+     */
+    const RESOURCE_PUT_PATH = '/V1/products/:productSku/stockItems/:itemId';
 
     /** @var \Magento\Catalog\Model\Resource\Product\Collection */
     protected $productCollection;
@@ -73,7 +78,7 @@ class StockItemTest extends WebapiAbstract
         $productSku = 'simple1';
         $serviceInfo = [
             'rest' => [
-                'resourcePath' => self::RESOURCE_PATH . "/$productSku",
+                'resourcePath' => self::RESOURCE_GET_PATH . "/$productSku",
                 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
             ],
             'soap' => [
@@ -100,9 +105,13 @@ class StockItemTest extends WebapiAbstract
     {
         $stockItemOld = $this->getStockItemBySku($fixtureData);
         $productSku = 'simple1';
+        $itemId = $stockItemOld['item_id'];
+
+        $resourcePath = str_replace([':productSku', ':itemId'], [$productSku, $itemId], self::RESOURCE_PUT_PATH);
+
         $serviceInfo = [
             'rest' => [
-                'resourcePath' => self::RESOURCE_PATH . "/$productSku",
+                'resourcePath' => $resourcePath,
                 'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT,
             ],
             'soap' => [
diff --git a/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/CartRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/CartRepositoryTest.php
index 2779a7f88a11bb648a963962033bb28cd7341f74..25731e25eb92fb18463be4388b47a6678f6d4971 100644
--- a/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/CartRepositoryTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/CartRepositoryTest.php
@@ -3,9 +3,10 @@
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
-
 namespace Magento\GiftMessage\Api;
 
+// @codingStandardsIgnoreFile
+
 use Magento\TestFramework\TestCase\WebapiAbstract;
 
 class CartRepositoryTest extends WebapiAbstract
@@ -26,6 +27,8 @@ class CartRepositoryTest extends WebapiAbstract
 
     /**
      * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_message.php
+     * @magentoAppIsolation enabled
+     * @magentoDbIsolation disabled
      */
     public function testGet()
     {
@@ -60,6 +63,42 @@ class CartRepositoryTest extends WebapiAbstract
         $this->assertEquals($expectedMessage, $resultMessage);
     }
 
+    /**
+     * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_customer_and_message.php
+     */
+    public function testGetForMyCart()
+    {
+        $this->_markTestAsRestOnly();
+
+        // get customer ID token
+        /** @var \Magento\Integration\Api\CustomerTokenServiceInterface $customerTokenService */
+        $customerTokenService = $this->objectManager->create(
+            'Magento\Integration\Api\CustomerTokenServiceInterface'
+        );
+        $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password');
+
+        $serviceInfo = [
+            'rest' => [
+                'resourcePath' => self::RESOURCE_PATH . 'mine/gift-message',
+                'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
+                'token' => $token,
+            ],
+        ];
+
+        $expectedMessage = [
+            'recipient' => 'Mercutio',
+            'sender' => 'Romeo',
+            'message' => 'I thought all for the best.',
+        ];
+
+        $requestData = [];
+        $resultMessage = $this->_webApiCall($serviceInfo, $requestData);
+        $this->assertCount(5, $resultMessage);
+        unset($resultMessage['gift_message_id']);
+        unset($resultMessage['customer_id']);
+        $this->assertEquals($expectedMessage, $resultMessage);
+    }
+
     /**
      * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_item_message.php
      */
@@ -102,4 +141,50 @@ class CartRepositoryTest extends WebapiAbstract
         $this->assertEquals('Jane Roe', $message->getSender());
         $this->assertEquals('Gift Message Text New', $message->getMessage());
     }
+
+    /**
+     * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_item_message.php
+     */
+    public function testSaveForMyCart()
+    {
+        $this->_markTestAsRestOnly();
+
+        // get customer ID token
+        /** @var \Magento\Integration\Api\CustomerTokenServiceInterface $customerTokenService */
+        $customerTokenService = $this->objectManager->create(
+            'Magento\Integration\Api\CustomerTokenServiceInterface'
+        );
+        $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password');
+
+        // sales/gift_options/allow_order must be set to 1 in system configuration
+        // @todo remove next statement when \Magento\TestFramework\TestCase\WebapiAbstract::_updateAppConfig is fixed
+        $this->markTestIncomplete('This test relies on system configuration state.');
+
+        $serviceInfo = [
+            'rest' => [
+                'resourcePath' => self::RESOURCE_PATH . 'mine/gift-message',
+                'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST,
+                'token' => $token,
+            ],
+        ];
+
+        $requestData = [
+            'giftMessage' => [
+                'recipient' => 'John Doe',
+                'sender' => 'Jane Roe',
+                'message' => 'Gift Message Text New',
+            ],
+        ];
+        $this->assertTrue($this->_webApiCall($serviceInfo, $requestData));
+
+        /** @var \Magento\Quote\Model\Quote $quote */
+        $quote = $this->objectManager->create('Magento\Quote\Model\Quote');
+        $quote->load('test_order_item_with_message', 'reserved_order_id');
+        $quote->getGiftMessageId();
+        /** @var  \Magento\GiftMessage\Model\Message $message */
+        $message = $this->objectManager->create('Magento\GiftMessage\Model\Message')->load($quote->getGiftMessageId());
+        $this->assertEquals('John Doe', $message->getRecipient());
+        $this->assertEquals('Jane Roe', $message->getSender());
+        $this->assertEquals('Gift Message Text New', $message->getMessage());
+    }
 }
diff --git a/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/GuestCartRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/GuestCartRepositoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..2d2da9d2ff9a6ccc7a139787152be21671897341
--- /dev/null
+++ b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/GuestCartRepositoryTest.php
@@ -0,0 +1,122 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Api;
+
+// @codingStandardsIgnoreFile
+
+use Magento\TestFramework\TestCase\WebapiAbstract;
+
+class GuestCartRepositoryTest extends WebapiAbstract
+{
+    const SERVICE_VERSION = 'V1';
+    const SERVICE_NAME = 'giftMessageGuestCartRepositoryV1';
+    const RESOURCE_PATH = '/V1/guest-carts/';
+
+    /**
+     * @var \Magento\TestFramework\ObjectManager
+     */
+    protected $objectManager;
+
+    protected function setUp()
+    {
+        $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+    }
+
+    /**
+     * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_message.php
+     * @magentoAppIsolation enabled
+     * @magentoDbIsolation disabled
+     */
+    public function testGet()
+    {
+        /** @var \Magento\Quote\Model\Quote $quote */
+        $quote = $this->objectManager->create('Magento\Quote\Model\Quote');
+        $quote->load('message_order_21', 'reserved_order_id');
+        $cartId = $quote->getId();
+        /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
+        $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\Quote\Model\QuoteIdMaskFactory')
+            ->create();
+        $quoteIdMask->load($cartId, 'quote_id');
+        //Use masked cart Id
+        $cartId = $quoteIdMask->getMaskedId();
+
+        $serviceInfo = [
+            'rest' => [
+                'resourcePath' => self::RESOURCE_PATH . $cartId . '/gift-message',
+                'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
+            ],
+            'soap' => [
+                'service' => self::SERVICE_NAME,
+                'serviceVersion' => self::SERVICE_VERSION,
+                'operation' => self::SERVICE_NAME . 'Get',
+            ],
+        ];
+
+        $expectedMessage = [
+            'recipient' => 'Mercutio',
+            'sender' => 'Romeo',
+            'message' => 'I thought all for the best.',
+        ];
+
+        $requestData = ["cartId" => $cartId];
+        $resultMessage = $this->_webApiCall($serviceInfo, $requestData);
+        $this->assertCount(5, $resultMessage);
+        unset($resultMessage['gift_message_id']);
+        unset($resultMessage['customer_id']);
+        $this->assertEquals($expectedMessage, $resultMessage);
+    }
+
+    /**
+     * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_item_message.php
+     */
+    public function testSave()
+    {
+        // sales/gift_options/allow_order must be set to 1 in system configuration
+        // @todo remove next statement when \Magento\TestFramework\TestCase\WebapiAbstract::_updateAppConfig is fixed
+        $this->markTestIncomplete('This test relies on system configuration state.');
+        /** @var \Magento\Quote\Model\Quote $quote */
+        $quote = $this->objectManager->create('Magento\Quote\Model\Quote');
+        $quote->load('test_order_item_with_message', 'reserved_order_id');
+        $cartId = $quote->getId();
+        /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
+        $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\Quote\Model\QuoteIdMaskFactory')
+            ->create();
+        $quoteIdMask->load($cartId, 'quote_id');
+        //Use masked cart Id
+        $cartId = $quoteIdMask->getMaskedId();
+
+        $serviceInfo = [
+            'rest' => [
+                'resourcePath' => self::RESOURCE_PATH . $cartId . '/gift-message',
+                'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST,
+            ],
+            'soap' => [
+                'service' => self::SERVICE_NAME,
+                'serviceVersion' => self::SERVICE_VERSION,
+                'operation' => self::SERVICE_NAME . 'Save',
+            ],
+        ];
+
+        $requestData = [
+            'cartId' => $cartId,
+            'giftMessage' => [
+                'recipient' => 'John Doe',
+                'sender' => 'Jane Roe',
+                'message' => 'Gift Message Text New',
+            ],
+        ];
+        $this->assertTrue($this->_webApiCall($serviceInfo, $requestData));
+        $quote->load('test_order_item_with_message', 'reserved_order_id');
+        $quote->getGiftMessageId();
+        /** @var  \Magento\GiftMessage\Model\Message $message */
+        $message = $this->objectManager->create('Magento\GiftMessage\Model\Message')->load($quote->getGiftMessageId());
+        $this->assertEquals('John Doe', $message->getRecipient());
+        $this->assertEquals('Jane Roe', $message->getSender());
+        $this->assertEquals('Gift Message Text New', $message->getMessage());
+    }
+}
diff --git a/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/GuestItemRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/GuestItemRepositoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c749c3b39eeca5c3858f1b52b7eab71e309067e7
--- /dev/null
+++ b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/GuestItemRepositoryTest.php
@@ -0,0 +1,130 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\GiftMessage\Api;
+
+// @codingStandardsIgnoreFile
+
+use Magento\TestFramework\TestCase\WebapiAbstract;
+
+class GuestItemRepositoryTest extends WebapiAbstract
+{
+    const SERVICE_VERSION = 'V1';
+    const SERVICE_NAME = 'giftMessageGuestItemRepositoryV1';
+    const RESOURCE_PATH = '/V1/guest-carts/';
+
+    /**
+     * @var \Magento\TestFramework\ObjectManager
+     */
+    protected $objectManager;
+
+    protected function setUp()
+    {
+        $this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+    }
+
+    /**
+     * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_item_message.php
+     * @magentoAppIsolation enabled
+     * @magentoDbIsolation disabled
+     */
+    public function testGet()
+    {
+        /** @var \Magento\Quote\Model\Quote $quote */
+        $quote = $this->objectManager->create('Magento\Quote\Model\Quote');
+        $quote->load('test_order_item_with_message', 'reserved_order_id');
+        $product = $this->objectManager->create('Magento\Catalog\Model\Product');
+        $product->load($product->getIdBySku('simple_with_message'));
+        $itemId = $quote->getItemByProduct($product)->getId();
+        /** @var  \Magento\Catalog\Model\Product $product */
+        $cartId = $quote->getId();
+        /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
+        $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\Quote\Model\QuoteIdMaskFactory')
+            ->create();
+        $quoteIdMask->load($cartId, 'quote_id');
+        //Use masked cart Id
+        $cartId = $quoteIdMask->getMaskedId();
+
+        $serviceInfo = [
+            'rest' => [
+                'resourcePath' => self::RESOURCE_PATH . $cartId . '/gift-message/' . $itemId,
+                'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
+            ],
+            'soap' => [
+                'service' => self::SERVICE_NAME,
+                'serviceVersion' => self::SERVICE_VERSION,
+                'operation' => self::SERVICE_NAME . 'Get',
+            ],
+        ];
+
+        $expectedMessage = [
+            'recipient' => 'Jane Roe',
+            'sender' => 'John Doe',
+            'message' => 'Gift Message Text',
+        ];
+
+        $requestData = ["cartId" => $cartId, "itemId" => $itemId];
+        $resultMessage = $this->_webApiCall($serviceInfo, $requestData);
+        $this->assertCount(5, $resultMessage);
+        unset($resultMessage['gift_message_id']);
+        unset($resultMessage['customer_id']);
+        $this->assertEquals($expectedMessage, $resultMessage);
+    }
+
+    /**
+     * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_item_message.php
+     */
+    public function testSave()
+    {
+        // sales/gift_options/allow_items must be set to 1 in system configuration
+        // @todo remove next statement when \Magento\TestFramework\TestCase\WebapiAbstract::_updateAppConfig is fixed
+        $this->markTestIncomplete('This test relies on system configuration state.');
+        /** @var \Magento\Quote\Model\Quote $quote */
+        $quote = $this->objectManager->create('Magento\Quote\Model\Quote');
+        $quote->load('test_order_item_with_message', 'reserved_order_id');
+        $product = $this->objectManager->create('Magento\Catalog\Model\Product');
+        $product->load($product->getIdBySku('simple_with_message'));
+        $itemId = $quote->getItemByProduct($product)->getId();
+        $cartId = $quote->getId();
+        /** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
+        $quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\Quote\Model\QuoteIdMaskFactory')
+            ->create();
+        $quoteIdMask->load($cartId, 'quote_id');
+        //Use masked cart Id
+        $cartId = $quoteIdMask->getMaskedId();
+
+        $serviceInfo = [
+            'rest' => [
+                'resourcePath' => self::RESOURCE_PATH . $cartId . '/gift-message/' .  $itemId,
+                'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST,
+            ],
+            'soap' => [
+                'service' => self::SERVICE_NAME,
+                'serviceVersion' => self::SERVICE_VERSION,
+                'operation' => self::SERVICE_NAME . 'Save',
+            ],
+        ];
+
+        $requestData = [
+            'cartId' => $cartId,
+            'itemId' => $itemId,
+            'giftMessage' => [
+                'recipient' => 'John Doe',
+                'sender' => 'Jane Roe',
+                'message' => 'Gift Message Text New',
+            ],
+        ];
+        $this->assertTrue($this->_webApiCall($serviceInfo, $requestData));
+//        $quote->load('test_order_item_with_message', 'reserved_order_id');
+        $messageId = $quote->getItemByProduct($product)->getGiftMessageId();
+        /** @var  \Magento\GiftMessage\Model\Message $message */
+        $message = $this->objectManager->create('Magento\GiftMessage\Model\Message')->load($messageId);
+        $this->assertEquals('John Doe', $message->getRecipient());
+        $this->assertEquals('Jane Roe', $message->getSender());
+        $this->assertEquals('Gift Message Text New', $message->getMessage());
+    }
+}
diff --git a/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/ItemRepositoryTest.php b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/ItemRepositoryTest.php
index 3673cb930e82da642a39cdbfded396f829bc1b4a..2dbc24cb67a17afde0f586df5ddab0f3a382aba3 100644
--- a/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/ItemRepositoryTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/GiftMessage/Api/ItemRepositoryTest.php
@@ -3,11 +3,10 @@
  * Copyright © 2015 Magento. All rights reserved.
  * See COPYING.txt for license details.
  */
+namespace Magento\GiftMessage\Api;
 
 // @codingStandardsIgnoreFile
 
-namespace Magento\GiftMessage\Api;
-
 use Magento\TestFramework\TestCase\WebapiAbstract;
 
 class ItemRepositoryTest extends WebapiAbstract
@@ -28,6 +27,8 @@ class ItemRepositoryTest extends WebapiAbstract
 
     /**
      * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_item_message.php
+     * @magentoAppIsolation enabled
+     * @magentoDbIsolation disabled
      */
     public function testGet()
     {
@@ -65,6 +66,49 @@ class ItemRepositoryTest extends WebapiAbstract
         $this->assertEquals($expectedMessage, $resultMessage);
     }
 
+    /**
+     * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_item_message.php
+     */
+    public function testGetForMyCart()
+    {
+        $this->_markTestAsRestOnly();
+
+        // get customer ID token
+        /** @var \Magento\Integration\Api\CustomerTokenServiceInterface $customerTokenService */
+        $customerTokenService = $this->objectManager->create(
+            'Magento\Integration\Api\CustomerTokenServiceInterface'
+        );
+        $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password');
+
+        /** @var \Magento\Quote\Model\Quote $quote */
+        $quote = $this->objectManager->create('Magento\Quote\Model\Quote');
+        $quote->load('test_order_item_with_message', 'reserved_order_id');
+        $product = $this->objectManager->create('Magento\Catalog\Model\Product');
+        $product->load($product->getIdBySku('simple_with_message'));
+        $itemId = $quote->getItemByProduct($product)->getId();
+        /** @var  \Magento\Catalog\Model\Product $product */
+        $serviceInfo = [
+            'rest' => [
+                'resourcePath' => self::RESOURCE_PATH . 'mine/gift-message/' . $itemId,
+                'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_GET,
+                'token' => $token,
+            ],
+        ];
+
+        $expectedMessage = [
+            'recipient' => 'Jane Roe',
+            'sender' => 'John Doe',
+            'message' => 'Gift Message Text',
+        ];
+
+        $requestData = ["itemId" => $itemId];
+        $resultMessage = $this->_webApiCall($serviceInfo, $requestData);
+        $this->assertCount(5, $resultMessage);
+        unset($resultMessage['gift_message_id']);
+        unset($resultMessage['customer_id']);
+        $this->assertEquals($expectedMessage, $resultMessage);
+    }
+
     /**
      * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_item_message.php
      */
@@ -102,6 +146,55 @@ class ItemRepositoryTest extends WebapiAbstract
             ],
         ];
         $this->assertTrue($this->_webApiCall($serviceInfo, $requestData));
+//        $quote->load('test_order_item_with_message', 'reserved_order_id');
+        $messageId = $quote->getItemByProduct($product)->getGiftMessageId();
+        /** @var  \Magento\GiftMessage\Model\Message $message */
+        $message = $this->objectManager->create('Magento\GiftMessage\Model\Message')->load($messageId);
+        $this->assertEquals('John Doe', $message->getRecipient());
+        $this->assertEquals('Jane Roe', $message->getSender());
+        $this->assertEquals('Gift Message Text New', $message->getMessage());
+    }
+
+    /**
+     * @magentoApiDataFixture Magento/GiftMessage/_files/quote_with_item_message.php
+     */
+    public function testSaveForMyCart()
+    {
+        $this->_markTestAsRestOnly();
+
+        // get customer ID token
+        /** @var \Magento\Integration\Api\CustomerTokenServiceInterface $customerTokenService */
+        $customerTokenService = $this->objectManager->create(
+            'Magento\Integration\Api\CustomerTokenServiceInterface'
+        );
+        $token = $customerTokenService->createCustomerAccessToken('customer@example.com', 'password');
+
+        // sales/gift_options/allow_items must be set to 1 in system configuration
+        // @todo remove next statement when \Magento\TestFramework\TestCase\WebapiAbstract::_updateAppConfig is fixed
+        $this->markTestIncomplete('This test relies on system configuration state.');
+        /** @var \Magento\Quote\Model\Quote $quote */
+        $quote = $this->objectManager->create('Magento\Quote\Model\Quote');
+        $quote->load('test_order_item_with_message', 'reserved_order_id');
+        $product = $this->objectManager->create('Magento\Catalog\Model\Product');
+        $product->load($product->getIdBySku('simple_with_message'));
+        $itemId = $quote->getItemByProduct($product)->getId();
+        $serviceInfo = [
+            'rest' => [
+                'resourcePath' => self::RESOURCE_PATH . 'mine/gift-message/' .  $itemId,
+                'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_POST,
+                'token' => $token,
+            ],
+        ];
+
+        $requestData = [
+            'itemId' => $itemId,
+            'giftMessage' => [
+                'recipient' => 'John Doe',
+                'sender' => 'Jane Roe',
+                'message' => 'Gift Message Text New',
+            ],
+        ];
+        $this->assertTrue($this->_webApiCall($serviceInfo, $requestData));
 //        $quote->load('test_order_item_with_message', 'reserved_order_id');
         $messageId = $quote->getItemByProduct($product)->getGiftMessageId();
         /** @var  \Magento\GiftMessage\Model\Message $message */
diff --git a/dev/tests/api-functional/testsuite/Magento/Integration/Model/CustomerTokenServiceTest.php b/dev/tests/api-functional/testsuite/Magento/Integration/Model/CustomerTokenServiceTest.php
index 5e31104da1607a3d8da4b3e1dd3f497138b58796..993a369782eca345eb717089573788b800f548e2 100644
--- a/dev/tests/api-functional/testsuite/Magento/Integration/Model/CustomerTokenServiceTest.php
+++ b/dev/tests/api-functional/testsuite/Magento/Integration/Model/CustomerTokenServiceTest.php
@@ -13,6 +13,7 @@ use Magento\TestFramework\Helper\Bootstrap;
 use Magento\TestFramework\TestCase\WebapiAbstract;
 use Magento\User\Model\User as UserModel;
 use Magento\Framework\Webapi\Exception as HTTPExceptionCodes;
+use Magento\Integration\Model\Resource\Oauth\Token\CollectionFactory;
 
 /**
  * api-functional test for \Magento\Integration\Model\CustomerTokenService.
@@ -35,9 +36,9 @@ class CustomerTokenServiceTest extends WebapiAbstract
     private $customerAccountManagement;
 
     /**
-     * @var TokenModel
+     * @var CollectionFactory
      */
-    private $tokenModel;
+    private $tokenCollection;
 
     /**
      * @var UserModel
@@ -54,7 +55,10 @@ class CustomerTokenServiceTest extends WebapiAbstract
         $this->customerAccountManagement = Bootstrap::getObjectManager()->get(
             'Magento\Customer\Api\AccountManagementInterface'
         );
-        $this->tokenModel = Bootstrap::getObjectManager()->get('Magento\Integration\Model\Oauth\Token');
+        $tokenCollectionFactory = Bootstrap::getObjectManager()->get(
+            'Magento\Integration\Model\Resource\Oauth\Token\CollectionFactory'
+        );
+        $this->tokenCollection = $tokenCollectionFactory->create();
         $this->userModel = Bootstrap::getObjectManager()->get('Magento\User\Model\User');
     }
 
@@ -65,6 +69,7 @@ class CustomerTokenServiceTest extends WebapiAbstract
     {
         $customerUserName = 'customer@example.com';
         $password = 'password';
+        $isTokenCorrect = false;
 
         $serviceInfo = [
             'rest' => [
@@ -76,9 +81,17 @@ class CustomerTokenServiceTest extends WebapiAbstract
         $accessToken = $this->_webApiCall($serviceInfo, $requestData);
 
         $customerData = $this->customerAccountManagement->authenticate($customerUserName, $password);
-        /** @var $token TokenModel */
-        $token = $this->tokenModel->loadByCustomerId($customerData->getId())->getToken();
-        $this->assertEquals($accessToken, $token);
+
+        /** @var $this->tokenCollection \Magento\Integration\Model\Resource\Oauth\Token\Collection */
+        $this->tokenCollection->addFilterByCustomerId($customerData->getId());
+
+        foreach ($this->tokenCollection->getItems() as $item) {
+            /** @var $item TokenModel */
+            if ($item->getToken() == $accessToken) {
+                $isTokenCorrect = true;
+            }
+        }
+        $this->assertTrue($isTokenCorrect);
     }
 
     /**
diff --git a/dev/tests/functional/composer.json b/dev/tests/functional/composer.json
index 8ce924bd190d77c558cedd1ff4a7f04b83af3df5..ca4b3bc7f79e43c04109d7162163832f89340ec8 100644
--- a/dev/tests/functional/composer.json
+++ b/dev/tests/functional/composer.json
@@ -1,6 +1,6 @@
 {
     "require": {
-        "magento/mtf": "1.0.0-rc26",
+        "magento/mtf": "1.0.0-rc27",
         "php": "~5.5.0|~5.6.0",
         "phpunit/phpunit": "4.1.0",
         "phpunit/phpunit-selenium": ">=1.2",
diff --git a/dev/tests/functional/lib/Magento/Mtf/Client/Element/GlobalsearchElement.php b/dev/tests/functional/lib/Magento/Mtf/Client/Element/GlobalsearchElement.php
index e1bcbd54580d6daa2bd2eac1a39657b8dd7c8f24..50307147313fa52285d237b6637cb22244f546a6 100644
--- a/dev/tests/functional/lib/Magento/Mtf/Client/Element/GlobalsearchElement.php
+++ b/dev/tests/functional/lib/Magento/Mtf/Client/Element/GlobalsearchElement.php
@@ -14,11 +14,6 @@ use Magento\Mtf\Client\ElementInterface;
  */
 class GlobalsearchElement extends SimpleElement
 {
-    /**
-     * "Backspace" key code.
-     */
-    const BACKSPACE = "\xEE\x80\x83";
-
     /**
      * Search icon selector.
      *
@@ -63,43 +58,14 @@ class GlobalsearchElement extends SimpleElement
     public function setValue($value)
     {
         $this->eventManager->dispatchEvent(['set_value'], [__METHOD__, $this->getAbsoluteSelector()]);
-
         $this->waitInitElement();
-
         if (!$this->find($this->searchInput)->isVisible()) {
             $this->find($this->searchIcon)->click();
         }
-        $this->selectWindow();
-        $this->clear();
-        $this->find($this->searchInput)->setValue($value);
-        $this->selectWindow();
-
+        $this->find($this->searchInput)->keys(str_split($value));
         $this->waitResult();
     }
 
-    /**
-     * Clear value of element.
-     *
-     * @return void
-     */
-    protected function clear()
-    {
-        $element = $this->find($this->searchInput);
-        while ('' != $element->getValue()) {
-            $element->setValue([self::BACKSPACE]);
-        }
-    }
-
-    /**
-     * Select to last window.
-     *
-     * @return void
-     */
-    protected function selectWindow()
-    {
-        $this->driver->selectWindow();
-    }
-
     /**
      * Wait init search suggest container.
      *
@@ -130,12 +96,7 @@ class GlobalsearchElement extends SimpleElement
 
         $this->driver->waitUntil(
             function () use ($browser, $selector) {
-                if ($browser->find($selector)->isVisible()) {
-                    return true;
-                } else {
-                    $browser->selectWindow();
-                    return null;
-                }
+                return $browser->find($selector)->isVisible() ? true : null;
             }
         );
     }
diff --git a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/System/Config/Form/Group.php b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/System/Config/Form/Group.php
index 0d3244802c70260eedce3ed996df9856c77a3057..09123d09767bf838415192989cd1f5f06732360b 100644
--- a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/System/Config/Form/Group.php
+++ b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/System/Config/Form/Group.php
@@ -9,7 +9,7 @@
 namespace Magento\Backend\Test\Block\System\Config\Form;
 
 use Magento\Mtf\Client\Locator;
-use Magento\Backend\Test\Block\Widget\Form;
+use Magento\Mtf\Block\Form;
 
 /**
  * Class Group
diff --git a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/Form.php b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/Form.php
deleted file mode 100644
index d57bd1aa4d78f8f9829b08857a27611793b1d462..0000000000000000000000000000000000000000
--- a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/Form.php
+++ /dev/null
@@ -1,199 +0,0 @@
-<?php
-/**
- * @api
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-namespace Magento\Backend\Test\Block\Widget;
-
-use Magento\Mtf\Block\Form as FormInstance;
-use Magento\Mtf\Client\Locator;
-use Magento\Mtf\Factory\Factory;
-use Magento\Mtf\Fixture\FixtureInterface;
-
-/**
- * Class Form
- * Is used to represent any form on the page
- *
- * @SuppressWarnings(PHPMD.NumberOfChildren)
- */
-class Form extends FormInstance
-{
-    /**
-     * 'Save' button
-     *
-     * @var string
-     */
-    protected $saveButton = '#save';
-
-    /**
-     * 'Save And Continue Edit' button
-     *
-     * @var string
-     */
-    protected $saveAndContinueButton = '#save_and_continue';
-
-    /**
-     * 'Save And Continue Edit' button
-     *
-     * @var string
-     */
-    protected $saveAndContinueEditButton = '#save_and_continue_edit';
-
-    /**
-     * Back button
-     *
-     * @var string
-     */
-    protected $backButton = '#back';
-
-    /**
-     * Reset button
-     *
-     * @var string
-     */
-    protected $resetButton = '#reset';
-
-    /**
-     * 'Delete' button
-     *
-     * @var string
-     */
-    protected $deleteButton = '#delete-button-button';
-
-    /**
-     * Backend abstract block
-     *
-     * @var string
-     */
-    protected $templateBlock = './ancestor::body';
-
-    /**
-     * Selector of element to wait for. If set by child will wait for element after action
-     *
-     * @var string
-     */
-    protected $waitForSelector;
-
-    /**
-     * Locator type of waitForSelector
-     *
-     * @var Locator
-     */
-    protected $waitForSelectorType = Locator::SELECTOR_CSS;
-
-    /**
-     * Wait for should be for visibility or not?
-     *
-     * @var boolean
-     */
-    protected $waitForSelectorVisible = true;
-
-    /**
-     * Update the root form
-     *
-     * @param FixtureInterface $fixture
-     * @return Form
-     */
-    public function update(FixtureInterface $fixture)
-    {
-        $this->fill($fixture);
-        return $this;
-    }
-
-    /**
-     * Get backend abstract block
-     *
-     * @return \Magento\Backend\Test\Block\Template
-     */
-    protected function getTemplateBlock()
-    {
-        return Factory::getBlockFactory()->getMagentoBackendTemplate(
-            $this->_rootElement->find($this->templateBlock, Locator::SELECTOR_XPATH)
-        );
-    }
-
-    /**
-     * Save the form
-     *
-     * @param FixtureInterface $fixture
-     * @return Form
-     *
-     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
-     */
-    public function save(FixtureInterface $fixture = null)
-    {
-        $this->_rootElement->find($this->saveButton, Locator::SELECTOR_CSS)->click();
-        $this->waitForElement();
-        return $this;
-    }
-
-    /**
-     * Method that waits for the configured selector using class attributes.
-     */
-    protected function waitForElement()
-    {
-        if (!empty($this->waitForSelector)) {
-            if ($this->waitForSelectorVisible) {
-                $this->getTemplateBlock()->waitForElementVisible($this->waitForSelector, $this->waitForSelectorType);
-            } else {
-                $this->getTemplateBlock()->waitForElementNotVisible($this->waitForSelector, $this->waitForSelectorType);
-            }
-        }
-    }
-
-    /**
-     * Back action
-     *
-     * @return Form
-     */
-    public function back()
-    {
-        $this->_rootElement->find($this->backButton, Locator::SELECTOR_CSS)->click();
-        return $this;
-    }
-
-    /**
-     * Reset the form
-     *
-     * @return Form
-     */
-    public function reset()
-    {
-        $this->_rootElement->find($this->resetButton, Locator::SELECTOR_CSS)->click();
-        return $this;
-    }
-
-    /**
-     * Delete current form item
-     *
-     * @param FixtureInterface $fixture
-     * @return Form
-     *
-     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
-     */
-    public function delete(FixtureInterface $fixture = null)
-    {
-        $this->_rootElement->find($this->deleteButton, Locator::SELECTOR_CSS)->click();
-        return $this;
-    }
-
-    /**
-     * Click save and continue button on form
-     */
-    public function clickSaveAndContinue()
-    {
-        $this->_rootElement->find($this->saveAndContinueButton, Locator::SELECTOR_CSS)->click();
-        return $this;
-    }
-
-    /**
-     * Click save and continue button on form
-     */
-    public function clickSaveAndContinueEdit()
-    {
-        $this->_rootElement->find($this->saveAndContinueEditButton, Locator::SELECTOR_CSS)->click();
-        return $this;
-    }
-}
diff --git a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/FormTabs.php b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/FormTabs.php
index b11db4365fa2d253ebf571ea4495200274fc74d6..b104c3230510c08d70f30d1d17d49be50cebd18d 100755
--- a/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/FormTabs.php
+++ b/dev/tests/functional/tests/app/Magento/Backend/Test/Block/Widget/FormTabs.php
@@ -7,6 +7,7 @@
 namespace Magento\Backend\Test\Block\Widget;
 
 use Magento\Mtf\Block\BlockFactory;
+use Magento\Mtf\Block\Form;
 use Magento\Mtf\Block\Mapper;
 use Magento\Mtf\Client\Locator;
 use Magento\Mtf\Client\ElementInterface;
@@ -87,8 +88,7 @@ class FormTabs extends Form
         foreach ($tabs as $tabName => $tabFields) {
             $tab = $this->getTab($tabName);
             $this->openTab($tabName);
-            $tab->fillFormTab(array_merge($tabFields, $this->unassignedFields), $context);
-            $this->updateUnassignedFields($tab);
+            $tab->fillFormTab($tabFields, $context);
         }
         if (!empty($this->unassignedFields)) {
             $this->fillMissedFields($tabs);
@@ -97,34 +97,25 @@ class FormTabs extends Form
         return $this;
     }
 
-    /**
-     * Update array with fields which aren't assigned to any tab
-     *
-     * @param Tab $tab
-     */
-    protected function updateUnassignedFields(Tab $tab)
-    {
-        $this->unassignedFields = array_diff_key(
-            $this->unassignedFields,
-            array_intersect_key($this->unassignedFields, $tab->setFields)
-        );
-    }
-
     /**
      * Fill fields which weren't found on filled tabs
      *
-     * @param array $tabs
      * @throws \Exception
-     *
      * @SuppressWarnings(PHPMD.UnusedLocalVariable)
      */
-    protected function fillMissedFields(array $tabs)
+    protected function fillMissedFields()
     {
-        foreach (array_diff_key($this->tabs, $tabs) as $tabName => $tabData) {
+        foreach ($this->tabs as $tabName => $tabData) {
             $tab = $this->getTab($tabName);
-            if ($this->openTab($tabName)) {
-                $tab->fillFormTab($this->unassignedFields, $this->_rootElement);
-                $this->updateUnassignedFields($tab);
+            if ($this->openTab($tabName) && $this->isTabVisible($tabName)) {
+                $mapping = $tab->dataMapping($this->unassignedFields);
+                foreach ($mapping as $fieldName => $data) {
+                    $element = $tab->_rootElement->find($data['selector'], $data['strategy'], $data['input']);
+                    if ($element->isVisible()) {
+                        $element->setValue($data['value']);
+                        unset($this->unassignedFields[$fieldName]);
+                    }
+                }
                 if (empty($this->unassignedFields)) {
                     break;
                 }
diff --git a/dev/tests/functional/tests/app/Magento/Backend/Test/TestCase/GlobalSearchEntityTest.php b/dev/tests/functional/tests/app/Magento/Backend/Test/TestCase/GlobalSearchEntityTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..9624a9398b6ac7c7bb2f25f47b49bfde089978f5
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Backend/Test/TestCase/GlobalSearchEntityTest.php
@@ -0,0 +1,65 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Backend\Test\TestCase;
+
+use Magento\Backend\Test\Fixture\GlobalSearch;
+use Magento\Backend\Test\Page\Adminhtml\Dashboard;
+use Magento\Mtf\TestCase\Injectable;
+
+/**
+ * Preconditions:
+ * 1. Create customer
+ * 2. Create two simple products
+ * 3. Create order with one of created simple product
+ *
+ * Steps:
+ * 1. Login to backend
+ * 2. Click on Search button on the top of page
+ * 3. Fill in data according dataSet
+ * 4. Perform assertions
+ *
+ * @group Search_Core_(MX)
+ * @ZephyrId MAGETWO-28457
+ */
+class GlobalSearchEntityTest extends Injectable
+{
+    /* tags */
+    const MVP = 'no';
+    const DOMAIN = 'MX';
+    /* end tags */
+
+    /**
+     * Backend Dashboard page.
+     *
+     * @var Dashboard
+     */
+    protected $dashboard;
+
+    /**
+     * Preparing pages for test.
+     *
+     * @param Dashboard $dashboard
+     * @return void
+     */
+    public function __inject(Dashboard $dashboard)
+    {
+        $this->dashboard = $dashboard;
+    }
+
+    /**
+     * Run Global Search Entity Test.
+     *
+     * @param GlobalSearch $search
+     * @return void
+     */
+    public function test(GlobalSearch $search)
+    {
+        //Steps:
+        $this->dashboard->open();
+        $this->dashboard->getAdminPanelHeader()->search($search->getQuery());
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Backend/Test/TestCase/GlobalSearchEntityTest.xml b/dev/tests/functional/tests/app/Magento/Backend/Test/TestCase/GlobalSearchEntityTest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7adcf2b0241bad21f32708ea1416b7a9afcf5128
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Backend/Test/TestCase/GlobalSearchEntityTest.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
+    <testCase name="Magento\Backend\Test\TestCase\GlobalSearchEntityTest">
+        <variation name="GlobalSearchEntityTestVariation2">
+            <data name="description" xsi:type="string">search with 2 sign return no results</data>
+            <data name="search/data/query" xsi:type="string">:)</data>
+            <constraint name="Magento\Backend\Test\Constraint\AssertGlobalSearchNoRecordsFound" />
+        </variation>
+        <variation name="GlobalSearchEntityTestVariation3">
+            <data name="description" xsi:type="string">search product by sku</data>
+            <data name="search/data/query" xsi:type="string">orderInjectable::default::product::sku</data>
+            <constraint name="Magento\Backend\Test\Constraint\AssertGlobalSearchProductName" />
+        </variation>
+        <variation name="GlobalSearchEntityTestVariation4">
+            <data name="description" xsi:type="string">search existed customer</data>
+            <data name="search/data/query" xsi:type="string">customer::johndoe_unique::lastname</data>
+            <constraint name="Magento\Backend\Test\Constraint\AssertGlobalSearchCustomerName" />
+        </variation>
+        <variation name="GlobalSearchEntityTestVariation5">
+            <data name="description" xsi:type="string">search order (by order id)</data>
+            <data name="search/data/query" xsi:type="string">orderInjectable::default::id</data>
+            <constraint name="Magento\Backend\Test\Constraint\AssertGlobalSearchOrderId" />
+        </variation>
+    </testCase>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/Backend/Test/TestCase/NavigateMenuTest.php b/dev/tests/functional/tests/app/Magento/Backend/Test/TestCase/NavigateMenuTest.php
index b8d486de23c5b4006f491a3f1fad1532a2a0f928..2e4509a1e66eab3cb43acfd0a9f0407c7bf50ffc 100644
--- a/dev/tests/functional/tests/app/Magento/Backend/Test/TestCase/NavigateMenuTest.php
+++ b/dev/tests/functional/tests/app/Magento/Backend/Test/TestCase/NavigateMenuTest.php
@@ -13,7 +13,7 @@ use Magento\Backend\Test\Page\Adminhtml\Dashboard;
  * Steps:
  * 1. Log in to backend.
  * 2. Navigate throught menu to the page.
- * 6. Perform asserts.
+ * 3. Perform asserts.
  *
  * @ZephyrId MAGETWO-34874
  */
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Constraint/AssertProductCustomOptionsOnBundleProductPage.php b/dev/tests/functional/tests/app/Magento/Bundle/Test/Constraint/AssertProductCustomOptionsOnBundleProductPage.php
index 308ebbe82565e481275b3940ca1f3bece6a11cae..dcb74539acd16a4e77972e99f68f331d328bfc1b 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Constraint/AssertProductCustomOptionsOnBundleProductPage.php
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Constraint/AssertProductCustomOptionsOnBundleProductPage.php
@@ -9,8 +9,7 @@ namespace Magento\Bundle\Test\Constraint;
 use Magento\Catalog\Test\Constraint\AssertProductCustomOptionsOnProductPage;
 
 /**
- * Class AssertProductCustomOptionsOnBundleProductPage
- * Assertion that commodity options are displayed correctly on bundle product page
+ * Assertion that commodity options are displayed correctly on bundle product page.
  */
 class AssertProductCustomOptionsOnBundleProductPage extends AssertProductCustomOptionsOnProductPage
 {
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Constraint/AssertTierPriceOnBundleProductPage.php b/dev/tests/functional/tests/app/Magento/Bundle/Test/Constraint/AssertTierPriceOnBundleProductPage.php
index 3c62ea1c4eac77055ad478c6b28de567657631cf..156e24f75aa75a93d7ca1fb19c39fd69c5888508 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Constraint/AssertTierPriceOnBundleProductPage.php
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Constraint/AssertTierPriceOnBundleProductPage.php
@@ -32,7 +32,7 @@ class AssertTierPriceOnBundleProductPage extends AssertProductTierPriceOnProduct
      *
      * @var int
      */
-    protected $priceFormat = 4;
+    protected $priceFormat = 0;
 
     /**
      * Assertion that tier prices are displayed correctly
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/Price.php b/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/Price.php
index a30b316e1e8901d96241ba11f3a7547a5f4b184e..c4f0aee1ebebec8092b22ef6e821825495669879 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/Price.php
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Fixture/BundleProduct/Price.php
@@ -139,13 +139,13 @@ class Price implements FixtureInterface
                 'price_to' => '120.00',
             ],
             'fixed-115' => [
-                'price_from' => '115.00',
-                'price_to' => '120.00',
+                'price_from' => '317.00',
+                'price_to' => '362.00',
                 'cart_price' => '317.00',
             ],
-            'fixed-159' => [
-                'price_from' => '115.00',
-                'price_to' => '120.00',
+            'fixed-110' => [
+                'price_from' => '159.00',
+                'price_to' => '164.00',
                 'cart_price' => '159.00',
             ],
             'fixed-756' => [
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/Page/Product/CatalogProductView.xml b/dev/tests/functional/tests/app/Magento/Bundle/Test/Page/Product/CatalogProductView.xml
index 2fddc12693d45cf68779b2f75cabcb6b492b47cc..597a6d7f735a93b8a301a9aaff642a95606c0af0 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/Page/Product/CatalogProductView.xml
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/Page/Product/CatalogProductView.xml
@@ -6,10 +6,10 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../vendor/magento/mtf/etc/pages.xsd">
-  <page name="CatalogProductView" area="Product" mca="catalog/product/view">
-    <block name="viewBlock">
-      <render name="bundle" class="Magento\Bundle\Test\Block\Catalog\Product\View"/>
-    </block>
-    <block name="bundleViewBlock" class="Magento\Bundle\Test\Block\Catalog\Product\View" locator="#maincontent" strategy="css selector"/>
-  </page>
+    <page name="CatalogProductView" area="Product" mca="catalog/product/view">
+        <block name="viewBlock">
+            <render name="bundle" class="Magento\Bundle\Test\Block\Catalog\Product\View" />
+        </block>
+        <block name="bundleViewBlock" class="Magento\Bundle\Test\Block\Catalog\Product\View" locator="#maincontent" strategy="css selector" />
+    </page>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Bundle/Test/TestCase/CreateBundleProductEntityTest.xml b/dev/tests/functional/tests/app/Magento/Bundle/Test/TestCase/CreateBundleProductEntityTest.xml
index 51d270f4d41e0230b4b54570806b8faa5e0080f3..ad5b9bfa0c055caf84c363a3dcc9067689628cc6 100644
--- a/dev/tests/functional/tests/app/Magento/Bundle/Test/TestCase/CreateBundleProductEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Bundle/Test/TestCase/CreateBundleProductEntityTest.xml
@@ -228,7 +228,6 @@
             <constraint name="Magento\Bundle\Test\Constraint\AssertBundlePriceType" />
         </variation>
         <variation name="CreateBundleProductEntityTestVariation10">
-            <data name="tag" xsi:type="string">to_maintain:yes</data>
             <data name="description" xsi:type="string">Create dynamic bundle</data>
             <data name="product/data/url_key" xsi:type="string">bundle-product-%isolation%</data>
             <data name="product/data/name" xsi:type="string">Bundle Dynamic %isolation%</data>
@@ -272,7 +271,7 @@
             <data name="product/data/sku" xsi:type="string">sku_bundle_fixed_%isolation%</data>
             <data name="product/data/price_type" xsi:type="string">Fixed</data>
             <data name="product/data/price/value" xsi:type="string">110</data>
-            <data name="product/data/price/preset" xsi:type="string">fixed-159</data>
+            <data name="product/data/price/preset" xsi:type="string">fixed-110</data>
             <data name="product/data/bundle_selections/preset" xsi:type="string">second</data>
             <data name="product/data/bundle_selections/products" xsi:type="string">catalogProductSimple::product_100_dollar,catalogProductSimple::product_40_dollar</data>
             <data name="product/data/checkout_data/preset" xsi:type="string">with_custom_options_2</data>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Attribute/Set/Main/EditForm.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Attribute/Set/Main/EditForm.xml
index 887e1983789462f31d40ec9c2846931bb225abd8..ab116cdecc2f5118629b781c8985557529e882a4 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Attribute/Set/Main/EditForm.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Attribute/Set/Main/EditForm.xml
@@ -5,7 +5,7 @@
  * See COPYING.txt for license details.
  */
 -->
-<mapping strict="0">
+<mapping strict="1">
     <fields>
         <attribute_set_name />
     </fields>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Edit/Action/Attribute.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Edit/Action/Attribute.php
index 39e76e2c98eec4d2d018e8048116199a27c683b7..bd1b633deedd32b670b10b1adf4faae4c2a87e58 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Edit/Action/Attribute.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Edit/Action/Attribute.php
@@ -7,7 +7,7 @@
 namespace Magento\Catalog\Test\Block\Adminhtml\Product\Edit\Action;
 
 use Magento\Mtf\Fixture\FixtureInterface;
-use Magento\Backend\Test\Block\Widget\Form;
+use Magento\Mtf\Block\Form;
 use Magento\Mtf\Client\Element\SimpleElement;
 
 /**
@@ -25,6 +25,7 @@ class Attribute extends Form
     public function fill(FixtureInterface $fixture, SimpleElement $element = null)
     {
         $data = $fixture->getData();
+        $fields = [];
         foreach ($data as $name => $dataValue) {
             $fields['toggle_' . $name] = 'Yes';
             $fields[$name] = $dataValue;
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Edit/Tab/ProductDetails/NewCategoryIds.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Edit/Tab/ProductDetails/NewCategoryIds.php
index c1baad740ef47f6564c703afddebd6d11d772b35..5c44c611d8da52a7080edabd5699d5b5c0582af2 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Edit/Tab/ProductDetails/NewCategoryIds.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Block/Adminhtml/Product/Edit/Tab/ProductDetails/NewCategoryIds.php
@@ -7,7 +7,7 @@
 namespace Magento\Catalog\Test\Block\Adminhtml\Product\Edit\Tab\ProductDetails;
 
 use Magento\Catalog\Test\Fixture\Category;
-use Magento\Backend\Test\Block\Widget\Form;
+use Magento\Mtf\Block\Form;
 
 /**
  * Create new category.
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductInGrid.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductInGrid.php
index edc00d8db75fe91c060c124232eadf815fc4c115..bb1e7cc32bbd8dbecc5bdfe2e8764e3c71a071ae 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductInGrid.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Constraint/AssertProductInGrid.php
@@ -11,7 +11,6 @@ use Magento\Mtf\Constraint\AbstractConstraint;
 use Magento\Mtf\Fixture\FixtureInterface;
 
 /**
- * Class AssertProductInGrid
  * Assert that product is present in products grid.
  */
 class AssertProductInGrid extends AbstractConstraint
@@ -63,7 +62,7 @@ class AssertProductInGrid extends AbstractConstraint
     }
 
     /**
-     * Get product type
+     * Get product type.
      *
      * @return string
      */
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductAttribute.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductAttribute.xml
index 1e99a0752d4e407a6dfac02c519cf83d9f6ded54..1a38dd8158cd63cd9553ba8cde4daaa7e3c76eed 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductAttribute.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Fixture/CatalogProductAttribute.xml
@@ -111,13 +111,13 @@
     <field name="is_wysiwyg_enabled" is_required="">
       <default_value xsi:type="number">0</default_value>
     </field>
-    <field name="is_used_for_promo_rules" is_required="">
+    <field name="is_used_for_promo_rules" is_required="" group="frontend-properties">
       <default_value xsi:type="number">0</default_value>
     </field>
     <field name="search_weight" is_required="">
       <default_value xsi:type="string">1</default_value>
     </field>
-    <field name="options" is_required="" source="Magento\Catalog\Test\Fixture\CatalogProductAttribute\Options">
+    <field name="options" is_required="" group="properties" source="Magento\Catalog\Test\Fixture\CatalogProductAttribute\Options">
       <default_value xsi:type="null"/>
     </field>
     <field name="default_value_text" group="advanced-properties"/>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/CatalogProductVirtual.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/CatalogProductVirtual.xml
index cc82e98b336dbdd13b1088b90762f29d081f212f..2e2903a0cf35267fb62eb27cec89bee8c831baef 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/CatalogProductVirtual.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/Repository/CatalogProductVirtual.xml
@@ -36,6 +36,23 @@
             </field>
         </dataset>
 
+        <dataset name="required_fields">
+            <field name="url_key" xsi:type="string">virtual-product%isolation%</field>
+            <field name="name" xsi:type="string">Virtual product %isolation%</field>
+            <field name="sku" xsi:type="string">sku_virtual_product_%isolation%</field>
+            <field name="is_virtual" xsi:type="string">Yes</field>
+            <field name="price" xsi:type="array">
+                <item name="value" xsi:type="string">10</item>
+                <item name="preset" xsi:type="string">-</item>
+            </field>
+            <field name="tax_class_id" xsi:type="array">
+                <item name="dataSet" xsi:type="string">taxable_goods</item>
+            </field>
+            <field name="website_ids" xsi:type="array">
+                <item name="0" xsi:type="string">Main Website</item>
+            </field>
+        </dataset>
+
         <dataset name="required_fields_with_category">
             <field name="url_key" xsi:type="string">virtual-product%isolation%</field>
             <field name="name" xsi:type="string">Virtual product %isolation%</field>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/CreateSimpleProductEntityTest.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/CreateSimpleProductEntityTest.xml
index e84f0409dada6c372eead7ef608a6adb8544f588..364854e6870bbf6a8b9aa15989b7ccececcb7cbc 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/CreateSimpleProductEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/CreateSimpleProductEntityTest.xml
@@ -257,7 +257,6 @@
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductPage" />
         </variation>
         <variation name="CreateSimpleProductEntityTestVariation15">
-            <data name="tag" xsi:type="string">to_maintain:yes</data>
             <data name="description" xsi:type="string">Create product with tax class and group price</data>
             <data name="product/data/url_key" xsi:type="string">simple-product-%isolation%</data>
             <data name="product/data/name" xsi:type="string">Simple Product %isolation%</data>
@@ -317,7 +316,6 @@
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductTierPriceOnProductPage" />
         </variation>
         <variation name="CreateSimpleProductEntityTestVariation18">
-            <data name="issue" xsi:type="string">Bug: MAGETWO-35342</data>
             <data name="description" xsi:type="string">Create product wit suite of custom options</data>
             <data name="product/data/url_key" xsi:type="string">simple-product-%isolation%</data>
             <data name="product/data/name" xsi:type="string">Simple Product %isolation%</data>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnCreationTest.php b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnCreationTest.php
index 6c297ef596e1f08f89d4d4f578e4945d1a67caa9..1cdff9dbf0ed156e55ea0d5bbc657f7628f7e02d 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnCreationTest.php
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnCreationTest.php
@@ -30,7 +30,6 @@ class ProductTypeSwitchingOnCreationTest extends Injectable
     /* tags */
     const MVP = 'yes';
     const DOMAIN = 'MX';
-    const TO_MAINTAIN = 'yes';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnCreationTest.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnCreationTest.xml
index af77d4f6fd3d4ea47bad0a0bb3cf512ada4ab3f1..d4850eed96207c39e7d3a43265eab36300c2bcf9 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnCreationTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnCreationTest.xml
@@ -27,13 +27,13 @@
         </variation>
         <variation name="ProductTypeSwitchingOnCreationTestVariation3">
             <data name="createProduct" xsi:type="string">configurable</data>
-            <data name="product" xsi:type="string">catalogProductSimple::default</data>
+            <data name="product" xsi:type="string">catalogProductSimple::product_without_category</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductInGrid" />
         </variation>
         <variation name="ProductTypeSwitchingOnCreationTestVariation4">
             <data name="createProduct" xsi:type="string">configurable</data>
-            <data name="product" xsi:type="string">catalogProductVirtual::default</data>
+            <data name="product" xsi:type="string">catalogProductVirtual::required_fields</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductInGrid" />
         </variation>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest.xml
index d477c119f14ec5c992f4f9285a47c94bac67effc..8d1fc4b9e09c4fe2d44ffc29021fa079d9a88191 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/ProductTypeSwitchingOnUpdateTest.xml
@@ -8,7 +8,6 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Catalog\Test\TestCase\Product\ProductTypeSwitchingOnUpdateTest">
         <variation name="ProductTypeSwitchingOnUpdateTestVariation1">
-            <data name="tag" xsi:type="string">stable:no</data>
             <data name="productOrigin" xsi:type="string">catalogProductSimple::default</data>
             <data name="product" xsi:type="string">configurableProduct::default</data>
             <data name="actionName" xsi:type="string">-</data>
@@ -28,17 +27,15 @@
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductInGrid" />
         </variation>
         <variation name="ProductTypeSwitchingOnUpdateTestVariation3">
-            <data name="tag" xsi:type="string">stable:no</data>
             <data name="productOrigin" xsi:type="string">configurableProduct::default</data>
-            <data name="product" xsi:type="string">catalogProductSimple::default</data>
+            <data name="product" xsi:type="string">catalogProductSimple::product_without_category</data>
             <data name="actionName" xsi:type="string">deleteAttributes</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductInGrid" />
         </variation>
         <variation name="ProductTypeSwitchingOnUpdateTestVariation4">
-            <data name="tag" xsi:type="string">stable:no</data>
             <data name="productOrigin" xsi:type="string">configurableProduct::default</data>
-            <data name="product" xsi:type="string">catalogProductVirtual::default</data>
+            <data name="product" xsi:type="string">catalogProductVirtual::required_fields</data>
             <data name="actionName" xsi:type="string">deleteAttributes</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductInGrid" />
@@ -51,7 +48,6 @@
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductInGrid" />
         </variation>
         <variation name="ProductTypeSwitchingOnUpdateTestVariation6">
-            <data name="tag" xsi:type="string">stable:no</data>
             <data name="productOrigin" xsi:type="string">catalogProductVirtual::default</data>
             <data name="product" xsi:type="string">configurableProduct::not_virtual_for_type_switching</data>
             <data name="actionName" xsi:type="string">-</data>
@@ -82,7 +78,6 @@
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductInGrid" />
         </variation>
         <variation name="ProductTypeSwitchingOnUpdateTestVariation9">
-            <data name="tag" xsi:type="string">stable:no</data>
             <data name="productOrigin" xsi:type="string">downloadableProduct::default</data>
             <data name="product" xsi:type="string">configurableProduct::not_virtual_for_type_switching</data>
             <data name="actionName" xsi:type="string">-</data>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/UpdateSimpleProductEntityTest.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/UpdateSimpleProductEntityTest.xml
index 73e20318e00350a5fc21cc5089a833cdc7469cd1..4dde51eae09a370f540fa8e3b2e9970d40c19dc6 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/UpdateSimpleProductEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/UpdateSimpleProductEntityTest.xml
@@ -70,7 +70,6 @@
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductVisibleInCategory" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductPage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSearchableBySku" />
-            <constraint name="Magento\Catalog\Test\Constraint\AssertProductPage" />
         </variation>
         <variation name="UpdateSimpleProductEntityTestVariation5">
             <data name="description" xsi:type="string">Update stock to Out of Stock</data>
@@ -104,7 +103,6 @@
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductIsNotDisplayingOnFrontend" />
         </variation>
         <variation name="UpdateSimpleProductEntityTestVariation7">
-            <data name="tag" xsi:type="string">stable:no</data>
             <data name="description" xsi:type="string">Update category</data>
             <data name="initialProduct/dataSet" xsi:type="string">product_with_category</data>
             <data name="product/data/category_ids/presets" xsi:type="string">default</data>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/UpdateVirtualProductEntityTest.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/UpdateVirtualProductEntityTest.xml
index 0346cc1467f5ee7cf386c0d0f304c5bef9625a62..d6607d67fd40b773f4af4c01f0f6dad154b31237 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/UpdateVirtualProductEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/Product/UpdateVirtualProductEntityTest.xml
@@ -15,11 +15,8 @@
             <data name="product/data/quantity_and_stock_status/qty" xsi:type="string">999</data>
             <data name="product/data/is_virtual" xsi:type="string">Yes</data>
             <data name="product/data/category_ids/presets" xsi:type="string">default_subcategory</data>
-            <data name="product/data/group_price/preset" xsi:type="string">-</data>
-            <data name="product/data/special_price" xsi:type="string">-</data>
             <data name="product/data/tier_price/preset" xsi:type="string">MAGETWO-23002</data>
             <data name="product/data/quantity_and_stock_status/is_in_stock" xsi:type="string">In Stock</data>
-            <data name="product/data/custom_options/preset" xsi:type="string">-</data>
             <data name="product/data/visibility" xsi:type="string">Catalog</data>
             <data name="product/data/url_key" xsi:type="string">virtual-product-%isolation%</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
@@ -38,18 +35,13 @@
             <data name="product/data/tax_class_id/dataSet" xsi:type="string">taxable_goods</data>
             <data name="product/data/quantity_and_stock_status/qty" xsi:type="string">999</data>
             <data name="product/data/is_virtual" xsi:type="string">Yes</data>
-            <data name="product/data/category_ids/presets" xsi:type="string">-</data>
-            <data name="product/data/group_price/preset" xsi:type="string">-</data>
             <data name="product/data/special_price" xsi:type="string">45</data>
-            <data name="product/data/tier_price/preset" xsi:type="string">-</data>
             <data name="product/data/quantity_and_stock_status/is_in_stock" xsi:type="string">In Stock</data>
-            <data name="product/data/custom_options/preset" xsi:type="string">-</data>
             <data name="product/data/visibility" xsi:type="string">Catalog, Search</data>
             <data name="product/data/url_key" xsi:type="string">virtual-product-%isolation%</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductInGrid" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductForm" />
-            <constraint name="Magento\Catalog\Test\Constraint\AssertProductPage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductVisibleInCategory" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductInCategory" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductPage" />
@@ -64,17 +56,13 @@
             <data name="product/data/quantity_and_stock_status/qty" xsi:type="string">999</data>
             <data name="product/data/is_virtual" xsi:type="string">Yes</data>
             <data name="product/data/category_ids/presets" xsi:type="string">default_subcategory</data>
-            <data name="product/data/group_price/preset" xsi:type="string">-</data>
-            <data name="product/data/special_price" xsi:type="string">-</data>
             <data name="product/data/tier_price/preset" xsi:type="string">MAGETWO-23002</data>
             <data name="product/data/quantity_and_stock_status/is_in_stock" xsi:type="string">Out of Stock</data>
-            <data name="product/data/custom_options/preset" xsi:type="string">-</data>
             <data name="product/data/visibility" xsi:type="string">Catalog, Search</data>
             <data name="product/data/url_key" xsi:type="string">virtual-product-%isolation%</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductInGrid" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductForm" />
-            <constraint name="Magento\Catalog\Test\Constraint\AssertProductPage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductVisibleInCategory" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductPage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductOutOfStock" />
@@ -86,14 +74,8 @@
             <data name="product/data/sku" xsi:type="string">virtual_sku_%isolation%</data>
             <data name="product/data/price/value" xsi:type="string">99.99</data>
             <data name="product/data/tax_class_id/dataSet" xsi:type="string">taxable_goods</data>
-            <data name="product/data/quantity_and_stock_status/qty" xsi:type="string">-</data>
             <data name="product/data/is_virtual" xsi:type="string">Yes</data>
-            <data name="product/data/category_ids/presets" xsi:type="string">-</data>
-            <data name="product/data/group_price/preset" xsi:type="string">-</data>
-            <data name="product/data/special_price" xsi:type="string">-</data>
-            <data name="product/data/tier_price/preset" xsi:type="string">-</data>
             <data name="product/data/quantity_and_stock_status/is_in_stock" xsi:type="string">Out of Stock</data>
-            <data name="product/data/custom_options/preset" xsi:type="string">-</data>
             <data name="product/data/visibility" xsi:type="string">Search</data>
             <data name="product/data/url_key" xsi:type="string">virtual-product-%isolation%</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
@@ -108,14 +90,8 @@
             <data name="product/data/sku" xsi:type="string">virtual_sku_%isolation%</data>
             <data name="product/data/price/value" xsi:type="string">5.00</data>
             <data name="product/data/tax_class_id/dataSet" xsi:type="string">None</data>
-            <data name="product/data/quantity_and_stock_status/qty" xsi:type="string">-</data>
             <data name="product/data/is_virtual" xsi:type="string">Yes</data>
-            <data name="product/data/category_ids/presets" xsi:type="string">-</data>
-            <data name="product/data/group_price/preset" xsi:type="string">-</data>
-            <data name="product/data/special_price" xsi:type="string">-</data>
-            <data name="product/data/tier_price/preset" xsi:type="string">-</data>
             <data name="product/data/quantity_and_stock_status/is_in_stock" xsi:type="string">Out of Stock</data>
-            <data name="product/data/custom_options/preset" xsi:type="string">-</data>
             <data name="product/data/visibility" xsi:type="string">Catalog</data>
             <data name="product/data/url_key" xsi:type="string">virtual-product-%isolation%</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
@@ -134,10 +110,8 @@
             <data name="product/data/is_virtual" xsi:type="string">Yes</data>
             <data name="product/data/category_ids/presets" xsi:type="string">default_subcategory</data>
             <data name="product/data/group_price/preset" xsi:type="string">MAGETWO-23055</data>
-            <data name="product/data/special_price" xsi:type="string">-</data>
             <data name="product/data/tier_price/preset" xsi:type="string">MAGETWO-23002</data>
             <data name="product/data/quantity_and_stock_status/is_in_stock" xsi:type="string">In Stock</data>
-            <data name="product/data/custom_options/preset" xsi:type="string">-</data>
             <data name="product/data/visibility" xsi:type="string">Catalog, Search</data>
             <data name="product/data/url_key" xsi:type="string">virtual-product-%isolation%</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
@@ -154,14 +128,10 @@
             <data name="product/data/sku" xsi:type="string">virtual_sku_%isolation%</data>
             <data name="product/data/price/value" xsi:type="string">99.99</data>
             <data name="product/data/tax_class_id/dataSet" xsi:type="string">None</data>
-            <data name="product/data/quantity_and_stock_status/qty" xsi:type="string">-</data>
             <data name="product/data/is_virtual" xsi:type="string">Yes</data>
             <data name="product/data/category_ids/presets" xsi:type="string">default_subcategory</data>
-            <data name="product/data/group_price/preset" xsi:type="string">-</data>
             <data name="product/data/special_price" xsi:type="string">45</data>
-            <data name="product/data/tier_price/preset" xsi:type="string">-</data>
             <data name="product/data/quantity_and_stock_status/is_in_stock" xsi:type="string">Out of Stock</data>
-            <data name="product/data/custom_options/preset" xsi:type="string">-</data>
             <data name="product/data/visibility" xsi:type="string">Catalog, Search</data>
             <data name="product/data/url_key" xsi:type="string">virtual-product-%isolation%</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
@@ -176,14 +146,9 @@
             <data name="product/data/sku" xsi:type="string">virtual_sku_%isolation%</data>
             <data name="product/data/price/value" xsi:type="string">5.00</data>
             <data name="product/data/tax_class_id/dataSet" xsi:type="string">taxable_goods</data>
-            <data name="product/data/quantity_and_stock_status/qty" xsi:type="string">-</data>
             <data name="product/data/is_virtual" xsi:type="string">Yes</data>
-            <data name="product/data/category_ids/presets" xsi:type="string">-</data>
             <data name="product/data/group_price/preset" xsi:type="string">MAGETWO-23055</data>
-            <data name="product/data/special_price" xsi:type="string">-</data>
-            <data name="product/data/tier_price/preset" xsi:type="string">-</data>
             <data name="product/data/quantity_and_stock_status/is_in_stock" xsi:type="string">Out of Stock</data>
-            <data name="product/data/custom_options/preset" xsi:type="string">-</data>
             <data name="product/data/visibility" xsi:type="string">Search</data>
             <data name="product/data/url_key" xsi:type="string">virtual-product-%isolation%</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
@@ -201,9 +166,6 @@
             <data name="product/data/quantity_and_stock_status/qty" xsi:type="string">999</data>
             <data name="product/data/is_virtual" xsi:type="string">Yes</data>
             <data name="product/data/category_ids/presets" xsi:type="string">default_subcategory</data>
-            <data name="product/data/group_price/preset" xsi:type="string">-</data>
-            <data name="product/data/special_price" xsi:type="string">-</data>
-            <data name="product/data/tier_price/preset" xsi:type="string">-</data>
             <data name="product/data/quantity_and_stock_status/is_in_stock" xsi:type="string">In Stock</data>
             <data name="product/data/custom_options/preset" xsi:type="string">options-suite</data>
             <data name="product/data/visibility" xsi:type="string">Search</data>
@@ -221,14 +183,9 @@
             <data name="product/data/sku" xsi:type="string">virtual_sku_%isolation%</data>
             <data name="product/data/price/value" xsi:type="string">99.99</data>
             <data name="product/data/tax_class_id/dataSet" xsi:type="string">taxable_goods</data>
-            <data name="product/data/quantity_and_stock_status/qty" xsi:type="string">-</data>
             <data name="product/data/is_virtual" xsi:type="string">Yes</data>
-            <data name="product/data/category_ids/presets" xsi:type="string">-</data>
             <data name="product/data/group_price/preset" xsi:type="string">MAGETWO-23055</data>
-            <data name="product/data/special_price" xsi:type="string">-</data>
-            <data name="product/data/tier_price/preset" xsi:type="string">-</data>
             <data name="product/data/quantity_and_stock_status/is_in_stock" xsi:type="string">Out of Stock</data>
-            <data name="product/data/custom_options/preset" xsi:type="string">-</data>
             <data name="product/data/visibility" xsi:type="string">Catalog, Search</data>
             <data name="product/data/url_key" xsi:type="string">virtual-product-%isolation%</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
@@ -247,19 +204,15 @@
             <data name="product/data/is_virtual" xsi:type="string">Yes</data>
             <data name="product/data/category_ids/presets" xsi:type="string">default_subcategory</data>
             <data name="product/data/group_price/preset" xsi:type="string">MAGETWO-23055</data>
-            <data name="product/data/special_price" xsi:type="string">-</data>
             <data name="product/data/tier_price/preset" xsi:type="string">MAGETWO-23002</data>
             <data name="product/data/quantity_and_stock_status/is_in_stock" xsi:type="string">In Stock</data>
-            <data name="product/data/custom_options/preset" xsi:type="string">-</data>
             <data name="product/data/visibility" xsi:type="string">Catalog</data>
             <data name="product/data/url_key" xsi:type="string">virtual-product-%isolation%</data>
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSaveMessage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductInGrid" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductForm" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductPage" />
-            <constraint name="Magento\Catalog\Test\Constraint\AssertProductVisibleInCategory" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductSpecialPriceOnProductPage" />
-            <constraint name="Magento\Catalog\Test\Constraint\AssertProductPage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductGroupedPriceOnProductPage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductTierPriceOnProductPage" />
             <constraint name="Magento\Catalog\Test\Constraint\AssertProductInCategory" />
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/ProductAttribute/CreateAttributeSetEntityTest.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/ProductAttribute/CreateAttributeSetEntityTest.xml
index 93ba98c55dd97d03970e3d0ea2d951f3886c634b..320e99b58a4df53b9a155bad31d53748404b84d5 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/ProductAttribute/CreateAttributeSetEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/ProductAttribute/CreateAttributeSetEntityTest.xml
@@ -6,14 +6,14 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../vendor/magento/mtf/etc/variations.xsd">
-  <testCase name="Magento\Catalog\Test\TestCase\ProductAttribute\CreateAttributeSetEntityTest">
-    <variation name="CreateAttributeSetEntityTestVariation1">
-      <data name="attributeSet/data/attribute_set_name" xsi:type="string">ProductTemplate%isolation%</data>
-      <data name="attributeSet/data/skeleton_set/dataSet" xsi:type="string">default</data>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateSuccessSaveMessage"/>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateForm"/>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateInGrid"/>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateOnProductForm"/>
-    </variation>
-  </testCase>
+    <testCase name="Magento\Catalog\Test\TestCase\ProductAttribute\CreateAttributeSetEntityTest">
+        <variation name="CreateAttributeSetEntityTestVariation1">
+            <data name="attributeSet/data/attribute_set_name" xsi:type="string">ProductTemplate%isolation%</data>
+            <data name="attributeSet/data/skeleton_set/dataSet" xsi:type="string">default</data>
+            <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateSuccessSaveMessage" />
+            <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateForm" />
+            <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateInGrid" />
+            <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateOnProductForm" />
+        </variation>
+    </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/ProductAttribute/UpdateAttributeSetTest.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/ProductAttribute/UpdateAttributeSetTest.xml
index f569a5dbbd81d73b74ad961f2d3941e5f78b86f8..7597b2416ba022c4ba0a68073835d2af87313ada 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/ProductAttribute/UpdateAttributeSetTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/ProductAttribute/UpdateAttributeSetTest.xml
@@ -6,17 +6,17 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../vendor/magento/mtf/etc/variations.xsd">
-  <testCase name="Magento\Catalog\Test\TestCase\ProductAttribute\UpdateAttributeSetTest">
-    <variation name="UpdateAttributeSetTestVariation1">
-      <data name="attributeSet/data/attribute_set_name" xsi:type="string">ProductTemplateEdit1%isolation%</data>
-      <data name="attributeSet/data/group" xsi:type="string">Custom-group%isolation%</data>
-      <data name="attributeSetOriginal/dataSet" xsi:type="string">custom_attribute_set</data>
-      <data name="productAttributeOriginal/dataSet" xsi:type="string">attribute_type_text_field</data>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateSuccessSaveMessage"/>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateForm"/>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateInGrid"/>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateOnProductForm"/>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateGroupOnProductForm"/>
-    </variation>
-  </testCase>
+    <testCase name="Magento\Catalog\Test\TestCase\ProductAttribute\UpdateAttributeSetTest">
+        <variation name="UpdateAttributeSetTestVariation1">
+            <data name="attributeSet/data/attribute_set_name" xsi:type="string">ProductTemplateEdit1%isolation%</data>
+            <data name="attributeSet/data/group" xsi:type="string">Custom-group%isolation%</data>
+            <data name="attributeSetOriginal/dataSet" xsi:type="string">custom_attribute_set</data>
+            <data name="productAttributeOriginal/dataSet" xsi:type="string">attribute_type_text_field</data>
+            <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateSuccessSaveMessage" />
+            <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateForm" />
+            <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateInGrid" />
+            <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateOnProductForm" />
+            <constraint name="Magento\Catalog\Test\Constraint\AssertProductTemplateGroupOnProductForm" />
+        </variation>
+    </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/ProductAttribute/UpdateProductAttributeEntityTest.xml b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/ProductAttribute/UpdateProductAttributeEntityTest.xml
index de42ea1eca4ef4ad387c7315f103b0cb0aa75ff0..0e74dfb542a73f312a319c9aef11e02d330176da 100644
--- a/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/ProductAttribute/UpdateProductAttributeEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Catalog/Test/TestCase/ProductAttribute/UpdateProductAttributeEntityTest.xml
@@ -6,58 +6,48 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../vendor/magento/mtf/etc/variations.xsd">
-  <testCase name="Magento\Catalog\Test\TestCase\ProductAttribute\UpdateProductAttributeEntityTest">
-    <variation name="UpdateProductAttributeEntityTestVariation1">
-      <data name="productTemplate/dataSet" xsi:type="string">custom_attribute_set</data>
-      <data name="productAttributeOriginal/dataSet" xsi:type="string">attribute_type_text_field</data>
-      <data name="attribute/data/frontend_label" xsi:type="string">Text_Field_%isolation%</data>
-      <data name="attribute/data/frontend_input" xsi:type="string">-</data>
-      <data name="attribute/data/options/preset" xsi:type="string">-</data>
-      <data name="attribute/data/is_required" xsi:type="string">Yes</data>
-      <data name="attribute/data/attribute_code" xsi:type="string">-</data>
-      <data name="attribute/data/is_global" xsi:type="string">Global</data>
-      <data name="attribute/data/default_value_text" xsi:type="string">attribute_edited%isolation%</data>
-      <data name="attribute/data/is_unique" xsi:type="string">Yes</data>
-      <data name="attribute/data/manage_frontend_label" xsi:type="string">-</data>
-      <data name="attribute/data/is_searchable" xsi:type="string">Yes</data>
-      <data name="attribute/data/is_visible_in_advanced_search" xsi:type="string">Yes</data>
-      <data name="attribute/data/is_comparable" xsi:type="string">Yes</data>
-      <data name="attribute/data/is_filterable" xsi:type="string">-</data>
-      <data name="attribute/data/is_filterable_in_search" xsi:type="string">-</data>
-      <data name="attribute/data/is_used_for_promo_rules" xsi:type="string">Yes</data>
-      <data name="attribute/data/is_html_allowed_on_front" xsi:type="string">Yes</data>
-      <data name="attribute/data/is_visible_on_front" xsi:type="string">Yes</data>
-      <data name="attribute/data/used_in_product_listing" xsi:type="string">Yes</data>
-      <data name="attribute/data/used_for_sort_by" xsi:type="string">Yes</data>
-      <data name="isRequired" xsi:type="string">Yes</data>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertProductAttributeSaveMessage"/>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertAddedProductAttributeOnProductForm"/>
-    </variation>
-    <variation name="UpdateProductAttributeEntityTestVariation2">
-      <data name="productTemplate/dataSet" xsi:type="string">custom_attribute_set</data>
-      <data name="productAttributeOriginal/dataSet" xsi:type="string">attribute_type_dropdown</data>
-      <data name="attribute/data/frontend_label" xsi:type="string">Dropdown_%isolation%</data>
-      <data name="attribute/data/frontend_input" xsi:type="string">-</data>
-      <data name="attribute/data/options/preset" xsi:type="string">default</data>
-      <data name="attribute/data/is_required" xsi:type="string">Yes</data>
-      <data name="attribute/data/attribute_code" xsi:type="string">-</data>
-      <data name="attribute/data/is_global" xsi:type="string">Global</data>
-      <data name="attribute/data/default_value_text" xsi:type="string">-</data>
-      <data name="attribute/data/is_unique" xsi:type="string">Yes</data>
-      <data name="attribute/data/manage_frontend_label" xsi:type="string">-</data>
-      <data name="attribute/data/is_searchable" xsi:type="string">Yes</data>
-      <data name="attribute/data/is_visible_in_advanced_search" xsi:type="string">Yes</data>
-      <data name="attribute/data/is_comparable" xsi:type="string">Yes</data>
-      <data name="attribute/data/is_filterable" xsi:type="string">Filterable (with results)</data>
-      <data name="attribute/data/is_filterable_in_search" xsi:type="string">Yes</data>
-      <data name="attribute/data/is_used_for_promo_rules" xsi:type="string">No</data>
-      <data name="attribute/data/is_html_allowed_on_front" xsi:type="string">Yes</data>
-      <data name="attribute/data/is_visible_on_front" xsi:type="string">Yes</data>
-      <data name="attribute/data/used_in_product_listing" xsi:type="string">Yes</data>
-      <data name="attribute/data/used_for_sort_by" xsi:type="string">Yes</data>
-      <data name="isRequired" xsi:type="string">Yes</data>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertProductAttributeSaveMessage"/>
-      <constraint name="Magento\Catalog\Test\Constraint\AssertAddedProductAttributeOnProductForm"/>
-    </variation>
-  </testCase>
+    <testCase name="Magento\Catalog\Test\TestCase\ProductAttribute\UpdateProductAttributeEntityTest">
+        <variation name="UpdateProductAttributeEntityTestVariation1">
+            <data name="productTemplate/dataSet" xsi:type="string">custom_attribute_set</data>
+            <data name="productAttributeOriginal/dataSet" xsi:type="string">attribute_type_text_field</data>
+            <data name="attribute/data/frontend_label" xsi:type="string">Text_Field_%isolation%</data>
+            <data name="attribute/data/is_required" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_global" xsi:type="string">Global</data>
+            <data name="attribute/data/default_value_text" xsi:type="string">attribute_edited%isolation%</data>
+            <data name="attribute/data/is_unique" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_searchable" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_visible_in_advanced_search" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_comparable" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_used_for_promo_rules" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_html_allowed_on_front" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_visible_on_front" xsi:type="string">Yes</data>
+            <data name="attribute/data/used_in_product_listing" xsi:type="string">Yes</data>
+            <data name="attribute/data/used_for_sort_by" xsi:type="string">Yes</data>
+            <data name="isRequired" xsi:type="string">Yes</data>
+            <constraint name="Magento\Catalog\Test\Constraint\AssertProductAttributeSaveMessage" />
+            <constraint name="Magento\Catalog\Test\Constraint\AssertAddedProductAttributeOnProductForm" />
+        </variation>
+        <variation name="UpdateProductAttributeEntityTestVariation2">
+            <data name="productTemplate/dataSet" xsi:type="string">custom_attribute_set</data>
+            <data name="productAttributeOriginal/dataSet" xsi:type="string">attribute_type_dropdown</data>
+            <data name="attribute/data/frontend_label" xsi:type="string">Dropdown_%isolation%</data>
+            <data name="attribute/data/options/preset" xsi:type="string">default</data>
+            <data name="attribute/data/is_required" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_global" xsi:type="string">Global</data>
+            <data name="attribute/data/is_unique" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_searchable" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_visible_in_advanced_search" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_comparable" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_filterable" xsi:type="string">Filterable (with results)</data>
+            <data name="attribute/data/is_filterable_in_search" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_used_for_promo_rules" xsi:type="string">No</data>
+            <data name="attribute/data/is_html_allowed_on_front" xsi:type="string">Yes</data>
+            <data name="attribute/data/is_visible_on_front" xsi:type="string">Yes</data>
+            <data name="attribute/data/used_in_product_listing" xsi:type="string">Yes</data>
+            <data name="attribute/data/used_for_sort_by" xsi:type="string">Yes</data>
+            <data name="isRequired" xsi:type="string">Yes</data>
+            <constraint name="Magento\Catalog\Test\Constraint\AssertProductAttributeSaveMessage" />
+            <constraint name="Magento\Catalog\Test\Constraint\AssertAddedProductAttributeOnProductForm" />
+        </variation>
+    </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/CatalogSearch/Test/Block/Adminhtml/Edit/SearchTermForm.php b/dev/tests/functional/tests/app/Magento/CatalogSearch/Test/Block/Adminhtml/Edit/SearchTermForm.php
index c3c576a8b7d4cff2100653d3aa4a62b1d7912130..25ca938dde09070eefb4cc191d65d1a75e5d1f79 100644
--- a/dev/tests/functional/tests/app/Magento/CatalogSearch/Test/Block/Adminhtml/Edit/SearchTermForm.php
+++ b/dev/tests/functional/tests/app/Magento/CatalogSearch/Test/Block/Adminhtml/Edit/SearchTermForm.php
@@ -6,11 +6,10 @@
 
 namespace Magento\CatalogSearch\Test\Block\Adminhtml\Edit;
 
-use Magento\Backend\Test\Block\Widget\Form as WidgetForm;
+use Magento\Mtf\Block\Form as WidgetForm;
 
 /**
- * Class Form
- * Form for search term
+ * Form for search term.
  */
 class SearchTermForm extends WidgetForm
 {
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Shipping.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Shipping.php
index 5581bb47ea913a86cb7ba2a4bfaaddffdfe69bb8..c52774c67d3d912b1dd8813e9aacd7a61d89dd57 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Shipping.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Cart/Shipping.php
@@ -11,55 +11,61 @@ use Magento\Mtf\Block\Form;
 use Magento\Mtf\Client\Locator;
 
 /**
- * Class Shipping
- * Cart shipping block
+ * Cart shipping block.
  */
 class Shipping extends Form
 {
     /**
-     * Form wrapper selector
+     * Form wrapper selector.
      *
      * @var string
      */
     protected $formWrapper = '.content';
 
     /**
-     * Open shipping form selector
+     * Open shipping form selector.
      *
      * @var string
      */
     protected $openForm = '.title';
 
     /**
-     * Get quote selector
+     * Get quote selector.
      *
      * @var string
      */
     protected $getQuote = '.action.quote';
 
     /**
-     * Update total selector
+     * Update total selector.
      *
      * @var string
      */
     protected $updateTotalSelector = '.action.update';
 
     /**
-     * Selector to access the shipping carrier method
+     * Selector to access the shipping carrier method.
      *
      * @var string
      */
     protected $shippingMethod = '//span[text()="%s"]/following::*//*[contains(text(), "%s")]';
 
     /**
-     * From with shipping available shipping methods
+     * From with shipping available shipping methods.
      *
      * @var string
      */
     protected $shippingMethodForm = '#co-shipping-method-form';
 
     /**
-     * Open estimate shipping and tax form
+     * Fields that are used in estimation shipping form.
+     *
+     * @var array
+     */
+    protected $estimationFields = ['country_id', 'region_id', 'region', 'postcode'];
+
+    /**
+     * Open estimate shipping and tax form.
      *
      * @return void
      */
@@ -71,7 +77,7 @@ class Shipping extends Form
     }
 
     /**
-     * Click Get quote button
+     * Click Get quote button.
      *
      * @return void
      */
@@ -81,7 +87,7 @@ class Shipping extends Form
     }
 
     /**
-     * Select shipping method
+     * Select shipping method.
      *
      * @param array $shipping
      * @return void
@@ -97,7 +103,7 @@ class Shipping extends Form
     }
 
     /**
-     * Fill shipping and tax form
+     * Fill shipping and tax form.
      *
      * @param Address $address
      * @return void
@@ -105,12 +111,14 @@ class Shipping extends Form
     public function fillEstimateShippingAndTax(Address $address)
     {
         $this->openEstimateShippingAndTax();
-        $this->fill($address);
+        $data = $address->getData();
+        $mapping = $this->dataMapping(array_intersect_key($data, array_flip($this->estimationFields)));
+        $this->_fill($mapping, $this->_rootElement);
         $this->clickGetQuote();
     }
 
     /**
-     * Determines if the specified shipping carrier/method is visible on the cart
+     * Determines if the specified shipping carrier/method is visible on the cart.
      *
      * @param $carrier
      * @param $method
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Billing.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Billing.php
index f4df8ae791b970291e26684656e2199df91d1445..dcc945eaafd750c6d4fcb282c791c3f611e0e8a1 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Billing.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Billing.php
@@ -48,8 +48,6 @@ class Billing extends Form
         $isShippingAddress = false
     ) {
         if ($billingAddress) {
-            //@TODO: MAGETWO-34756
-            sleep(5);
             $this->fill($billingAddress);
         }
         if ($isShippingAddress) {
diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsBlockEntityTest.xml b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsBlockEntityTest.xml
index 2e1583ed1df208668de87b8fc5a3e62edd4b4628..a6fb5bb04526031f8a9e828ea496e769bde0590b 100644
--- a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsBlockEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsBlockEntityTest.xml
@@ -18,7 +18,6 @@
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsBlockOnCategoryPage" />
         </variation>
         <variation name="CreateCmsBlockEntityTestVariation2">
-            <data name="issue" xsi:type="string">Bug: MAGETWO-35059</data>
             <data name="cmsBlock/data/title" xsi:type="string">block_%isolation%</data>
             <data name="cmsBlock/data/identifier" xsi:type="string">identifier_%isolation%</data>
             <data name="cmsBlock/data/stores/dataSet/option_0" xsi:type="string">default</data>
diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.php b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.php
index 60e0ea23b8526546d7ef2dca4f1d92a7c870c99b..7c1cddceb98ec3c10a9706921d161ae55629fec8 100644
--- a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.php
@@ -9,6 +9,7 @@ namespace Magento\Cms\Test\TestCase;
 use Magento\Cms\Test\Fixture\CmsPage as CmsPageFixture;
 use Magento\Cms\Test\Page\Adminhtml\CmsPageIndex;
 use Magento\Cms\Test\Page\Adminhtml\CmsPageNew;
+use Magento\Mtf\Fixture\FixtureFactory;
 use Magento\Mtf\TestCase\Injectable;
 
 /**
@@ -29,7 +30,6 @@ class CreateCmsPageEntityTest extends Injectable
     const MVP = 'yes';
     const DOMAIN = 'PS';
     const TEST_TYPE = 'acceptance_test';
-    const TO_MAINTAIN = 'yes';
     /* end tags */
 
     /**
@@ -46,33 +46,46 @@ class CreateCmsPageEntityTest extends Injectable
      */
     protected $cmsPageNew;
 
+    /**
+     * Fixture factory.
+     *
+     * @var FixtureFactory
+     */
+    protected $fixtureFactory;
+
     /**
      * Inject pages.
      *
      * @param CmsPageIndex $cmsIndex
      * @param CmsPageNew $cmsPageNew
+     * @param FixtureFactory $fixtureFactory
      * @return void
      */
-    public function __inject(CmsPageIndex $cmsIndex, CmsPageNew $cmsPageNew)
+    public function __inject(CmsPageIndex $cmsIndex, CmsPageNew $cmsPageNew, FixtureFactory $fixtureFactory)
     {
         $this->cmsIndex = $cmsIndex;
         $this->cmsPageNew = $cmsPageNew;
+        $this->fixtureFactory = $fixtureFactory;
     }
 
     /**
      * Creating Cms page.
      *
-     * @param CmsPageFixture $cms
-     * @return void
+     * @param array $data
+     * @param string $fixtureType
+     * @return array
      */
-    public function test(CmsPageFixture $cms)
+    public function test(array $data, $fixtureType)
     {
         // Steps
+        $cms = $this->fixtureFactory->createByCode($fixtureType, ['data' => $data]);
         $this->cmsIndex->open();
         $this->cmsIndex->getPageActionsBlock()->addNew();
         //TODO: remove cms page new refresh after resolve issue with static js files publication (MAGETWO-37898)
         $this->cmsPageNew->open();
         $this->cmsPageNew->getPageForm()->fill($cms);
         $this->cmsPageNew->getPageMainActions()->save();
+
+        return ['cms' => $cms];
     }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml
index 21c9773ef8a4518f1ebdd6c466585dd4d2749fd2..a549ca390d66817d3c7a2c64590aaa833bd1ed8a 100644
--- a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageEntityTest.xml
@@ -9,10 +9,11 @@
     <testCase name="Magento\Cms\Test\TestCase\CreateCmsPageEntityTest">
         <variation name="CreateCmsPageEntityTestVariation1">
             <data name="description" xsi:type="string">MAGETWO-12399: Create CMS Content Page</data>
-            <data name="cms/data/title" xsi:type="string">NewCmsPage%isolation%</data>
-            <data name="cms/data/identifier" xsi:type="string">identifier-%isolation%</data>
-            <data name="cms/data/store_id" xsi:type="string">All Store Views</data>
-            <data name="cms/data/content/content" xsi:type="string">cms_page_text_content%isolation%</data>
+            <data name="fixtureType" xsi:type="string">cmsPage</data>
+            <data name="data/title" xsi:type="string">NewCmsPage%isolation%</data>
+            <data name="data/identifier" xsi:type="string">identifier-%isolation%</data>
+            <data name="data/store_id" xsi:type="string">All Store Views</data>
+            <data name="data/content/content" xsi:type="string">cms_page_text_content%isolation%</data>
             <data name="tag" xsi:type="string">test_type:acceptance_test</data>
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" />
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageInGrid" />
@@ -20,20 +21,21 @@
         </variation>
         <variation name="CreateCmsPageEntityTestVariation2">
             <data name="description" xsi:type="string">Create page for default store view</data>
-            <data name="cms/data/title" xsi:type="string">NewCmsPage%isolation%</data>
-            <data name="cms/data/store_id" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
-            <data name="cms/data/content/content" xsi:type="string">cms_page_text_content%isolation%</data>
+            <data name="fixtureType" xsi:type="string">cmsPage</data>
+            <data name="data/title" xsi:type="string">NewCmsPage%isolation%</data>
+            <data name="data/store_id" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
+            <data name="data/content/content" xsi:type="string">cms_page_text_content%isolation%</data>
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" />
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageForm" />
         </variation>
         <variation name="CreateCmsPageEntityTestVariation3">
-            <data name="issue" xsi:type="string">Bug: MAGETWO-34858</data>
             <data name="description" xsi:type="string">Create page with widget and system variable</data>
-            <data name="cms/data/title" xsi:type="string">NewCmsPage%isolation%</data>
-            <data name="cms/data/store_id" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
-            <data name="cms/data/content/content" xsi:type="string">cms_page_text_content%isolation%</data>
-            <data name="cms/data/content/widget/preset" xsi:type="string">default</data>
-            <data name="cms/data/content/variable" xsi:type="string">General Contact Name</data>
+            <data name="fixtureType" xsi:type="string">cmsPage</data>
+            <data name="data/title" xsi:type="string">NewCmsPage%isolation%</data>
+            <data name="data/store_id" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
+            <data name="data/content/content" xsi:type="string">cms_page_text_content%isolation%</data>
+            <data name="data/content/widget/preset" xsi:type="string">default</data>
+            <data name="data/content/variable" xsi:type="string">General Contact Name</data>
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" />
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageForm" />
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageInGrid" />
@@ -41,10 +43,11 @@
         </variation>
         <variation name="CreateCmsPageEntityTestVariation4">
             <data name="description" xsi:type="string">Create disabled page</data>
-            <data name="cms/data/title" xsi:type="string">NewCmsPage%isolation%</data>
-            <data name="cms/data/store_id" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
-            <data name="cms/data/is_active" xsi:type="string">Disabled</data>
-            <data name="cms/data/content/content" xsi:type="string">cms_page_text_content%isolation%</data>
+            <data name="fixtureType" xsi:type="string">cmsPage</data>
+            <data name="data/title" xsi:type="string">NewCmsPage%isolation%</data>
+            <data name="data/store_id" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
+            <data name="data/is_active" xsi:type="string">Disabled</data>
+            <data name="data/content/content" xsi:type="string">cms_page_text_content%isolation%</data>
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageSuccessSaveMessage" />
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageForm" />
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsPageInGrid" />
diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageRewriteEntityTest.php b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageRewriteEntityTest.php
index 5023d9a37f2449be13b0c1153842e92014fa779c..5a0511def48fa2e7ac955637e7132367330113b4 100644
--- a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageRewriteEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/CreateCmsPageRewriteEntityTest.php
@@ -75,7 +75,7 @@ class CreateCmsPageRewriteEntityTest extends Injectable
         //Steps
         $this->urlRewriteIndex->open();
         $this->urlRewriteIndex->getPageActionsBlock()->addNew();
-        $this->urlRewriteEdit->getFormBlock()->fill($urlRewrite);
+        $this->urlRewriteEdit->getUrlRewriteTypeSelectorBlock()->selectType($urlRewrite->getEntityType());
         $cmsPage = $urlRewrite->getDataFieldConfig('target_path')['source']->getEntity();
         $filter = ['title' => $cmsPage->getTitle()];
         $this->urlRewriteEdit->getCmsGridBlock()->searchAndOpen($filter);
diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/UpdateCmsBlockEntityTest.xml b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/UpdateCmsBlockEntityTest.xml
index 472e5a6558643e5ba71f676aa4811e555ff98515..048ff19fc06e9c2126be6cf5113afdaaa5349c9a 100644
--- a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/UpdateCmsBlockEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/UpdateCmsBlockEntityTest.xml
@@ -18,7 +18,6 @@
             <constraint name="Magento\Cms\Test\Constraint\AssertCmsBlockOnCategoryPage" />
         </variation>
         <variation name="UpdateCmsBlockEntityTestVariation2">
-            <data name="issue" xsi:type="string">Bug: MAGETWO-35059</data>
             <data name="cmsBlock/data/title" xsi:type="string">block_updated_%isolation%</data>
             <data name="cmsBlock/data/identifier" xsi:type="string">identifier_updated_%isolation%</data>
             <data name="cmsBlock/data/stores/dataSet/option_0" xsi:type="string">default</data>
diff --git a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/UpdateCmsPageEntityTest.php b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/UpdateCmsPageEntityTest.php
index 8da0baf1779dbb8f1509e4e74ad68bf8fe31d3ea..4c8f8d1cf29e792b75501b2d16471d83671cb0cc 100644
--- a/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/UpdateCmsPageEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Cms/Test/TestCase/UpdateCmsPageEntityTest.php
@@ -32,7 +32,6 @@ class UpdateCmsPageEntityTest extends Injectable
     /* tags */
     const MVP = 'yes';
     const DOMAIN = 'PS';
-    const STABLE = 'no';
     /* end tags */
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/AffectedAttributeSet.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/AffectedAttributeSet.php
index 1385164d592ac0608f057730e41b2897938ae55f..c838565a3d1ade69fe36b7cecf324a8bcd7e5402 100755
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/AffectedAttributeSet.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/AffectedAttributeSet.php
@@ -10,7 +10,7 @@ use Magento\Mtf\Client\Element;
 use Magento\Mtf\Client\Locator;
 use Magento\Mtf\Fixture\FixtureInterface;
 use Magento\Mtf\Client\Element\SimpleElement;
-use Magento\Backend\Test\Block\Widget\Form as ParentForm;
+use Magento\Mtf\Block\Form as ParentForm;
 
 /**
  * Class AffectedAttributeSet
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Attribute.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Attribute.php
index 9008800f6dd2ed58aec9821449f7fbd8ac12cd7f..17dc4b9d01f3141652064cfa61f058c34df4b68c 100644
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Attribute.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Attribute.php
@@ -6,7 +6,7 @@
 
 namespace Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\Edit\Tab\Super\Config;
 
-use Magento\Backend\Test\Block\Widget\Form;
+use Magento\Mtf\Block\Form;
 use Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\Edit\Tab\Super\Config\Attribute\AttributeSelector;
 use Magento\Mtf\Client\Element\SimpleElement;
 use Magento\Mtf\Client\Locator;
@@ -247,7 +247,12 @@ class Attribute extends Form
                 $attributeBlock->find($this->addOption)->click();
             }
             $mapping = $this->dataMapping($option);
-            $this->_fill($mapping, $optionContainer);
+            foreach ($mapping as $field) {
+                $element = $this->getElement($optionContainer, $field);
+                if ($element->isVisible() && !$element->isDisabled()) {
+                    $element->setValue($field['value']);
+                }
+            }
         }
     }
 
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Attribute/AttributeSelector.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Attribute/AttributeSelector.php
index d3c32d608a143ce63212eef08da97c7df4372a93..4d2bf2cb8268168557df928f63a3cb0b8cde12c8 100755
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Attribute/AttributeSelector.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Attribute/AttributeSelector.php
@@ -21,14 +21,16 @@ class AttributeSelector extends SuggestElement
      */
     public function waitResult()
     {
-        $browser = $this;
-        $selector = $this->searchResult;
-        $browser->waitUntil(
-            function () use ($browser, $selector) {
-                $element = $browser->find($selector);
-                return $element->isVisible() ? true : null;
-            }
-        );
+        try {
+            $this->waitUntil(
+                function () {
+                    return $this->find($this->searchResult)->isVisible() ? true : null;
+                }
+            );
+        } catch (\Exception $e) {
+            // In parallel run on windows change the focus is lost on element
+            // that causes disappearing of result suggest list.
+        }
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Matrix.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Matrix.php
index 11db5ed304636b2e2f25019e3c7b08bc5d8ac1f5..8ecdc5aa867ac14b09de37a8dfc480144d468b6f 100755
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Matrix.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/Edit/Tab/Super/Config/Matrix.php
@@ -8,7 +8,7 @@ namespace Magento\ConfigurableProduct\Test\Block\Adminhtml\Product\Edit\Tab\Supe
 
 use Magento\Mtf\Client\Locator;
 use Magento\Backend\Test\Block\Template;
-use Magento\Backend\Test\Block\Widget\Form;
+use Magento\Mtf\Block\Form;
 use Magento\Mtf\Client\Element\SimpleElement;
 
 /**
diff --git a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/ProductForm.php b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/ProductForm.php
index 1fbc66894cebacdfb377b9a2edc64a5e04fa17a1..6b79d3f4378eb68c03306271d9f951fae10259cd 100755
--- a/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/ProductForm.php
+++ b/dev/tests/functional/tests/app/Magento/ConfigurableProduct/Test/Block/Adminhtml/Product/ProductForm.php
@@ -34,6 +34,7 @@ class ProductForm extends \Magento\Catalog\Test\Block\Adminhtml\Product\ProductF
         }
 
         $this->showAdvancedSettings();
+        $this->getTab('variations')->showContent();
         return $this->fillTabs($tabs, $element);
     }
 }
diff --git a/dev/tests/functional/tests/app/Magento/CurrencySymbol/Test/Block/Adminhtml/System/Currency/Rate/CurrencyRateForm.xml b/dev/tests/functional/tests/app/Magento/CurrencySymbol/Test/Block/Adminhtml/System/Currency/Rate/CurrencyRateForm.xml
index 4ffc8f05740d4454c14ded3bdc171699a7d93c1c..333fd02a273cdf57938df7df7fa4e9e801d26537 100644
--- a/dev/tests/functional/tests/app/Magento/CurrencySymbol/Test/Block/Adminhtml/System/Currency/Rate/CurrencyRateForm.xml
+++ b/dev/tests/functional/tests/app/Magento/CurrencySymbol/Test/Block/Adminhtml/System/Currency/Rate/CurrencyRateForm.xml
@@ -5,7 +5,7 @@
  * See COPYING.txt for license details.
  */
 -->
-<mapping strict="0">
+<mapping strict="1">
     <wrapper>rate</wrapper>
     <fields>
         <rate>
diff --git a/dev/tests/functional/tests/app/Magento/CurrencySymbol/Test/Block/Adminhtml/System/CurrencySymbolForm.php b/dev/tests/functional/tests/app/Magento/CurrencySymbol/Test/Block/Adminhtml/System/CurrencySymbolForm.php
index 2f758e545f4821b7f8fc3fc271881099d2c70d82..33e1e795ca940f4dc40ade7b565ba87969a0c54f 100644
--- a/dev/tests/functional/tests/app/Magento/CurrencySymbol/Test/Block/Adminhtml/System/CurrencySymbolForm.php
+++ b/dev/tests/functional/tests/app/Magento/CurrencySymbol/Test/Block/Adminhtml/System/CurrencySymbolForm.php
@@ -34,6 +34,10 @@ class CurrencySymbolForm extends Form
     public function fill(FixtureInterface $fixture, SimpleElement $element = null)
     {
         $element = $this->_rootElement->find(sprintf($this->currencyRow, $fixture->getCode()), Locator::SELECTOR_XPATH);
-        return parent::fill($fixture, $element);
+        $data = $fixture->getData();
+        unset($data['code']);
+        $mapping = $this->dataMapping($data);
+        $this->_fill($mapping, $element);
+        return $this;
     }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Adminhtml/Group/Edit/Form.php b/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Adminhtml/Group/Edit/Form.php
index b262872d048e724c5c3fc5570cb79e82b6030db4..e840b736e06357961ff3446ab37e661e27d93e58 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Adminhtml/Group/Edit/Form.php
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Block/Adminhtml/Group/Edit/Form.php
@@ -6,15 +6,10 @@
 
 namespace Magento\Customer\Test\Block\Adminhtml\Group\Edit;
 
-use Magento\Backend\Test\Block\Widget\Form as AbstractForm;
-
 /**
- * Class Form
- * Customer group edit form
- *
- * @package Magento\Customer\Test\Block\Adminhtml\Group\Edit
+ * Customer group edit form.
  */
-class Form extends AbstractForm
+class Form extends \Magento\Mtf\Block\Form
 {
     //
 }
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Curl/CreateCustomer.php b/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Curl/CreateCustomer.php
deleted file mode 100644
index 744387049f2bc348cc2ea1ad106c6d472e3c885b..0000000000000000000000000000000000000000
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Curl/CreateCustomer.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-namespace Magento\Customer\Test\Handler\Curl;
-
-use Magento\Mtf\Fixture\FixtureInterface;
-use Magento\Mtf\Handler\Curl;
-use Magento\Mtf\Util\Protocol\CurlInterface;
-use Magento\Mtf\Util\Protocol\CurlTransport;
-
-/**
- * Class CreateCustomer.
- * Curl handler for creating customer through registration page.
- *
- */
-class CreateCustomer extends Curl
-{
-    /**
-     * Post request for creating customer
-     *
-     * @param FixtureInterface $fixture [optional]
-     * @return mixed|string
-     */
-    public function persist(FixtureInterface $fixture = null)
-    {
-        $data = $fixture->getData('fields');
-        $fields = [];
-        foreach ($data as $key => $field) {
-            $fields[$key] = $field['value'];
-        }
-        $url = $_ENV['app_frontend_url'] . 'customer/account/createpost/?nocookie=true';
-        $curl = new CurlTransport();
-        $curl->write(CurlInterface::POST, $url, '1.0', [], $fields);
-        $response = $curl->read();
-        $curl->close();
-
-        return $response;
-    }
-}
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Curl/CreateCustomerBackend.php b/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Curl/CreateCustomerBackend.php
deleted file mode 100644
index cad3c992efa4681f8bf0851d50fa211c22aad7cc..0000000000000000000000000000000000000000
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Curl/CreateCustomerBackend.php
+++ /dev/null
@@ -1,75 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-namespace Magento\Customer\Test\Handler\Curl;
-
-use Magento\Mtf\Fixture\FixtureInterface;
-use Magento\Mtf\Handler\Curl;
-use Magento\Mtf\Util\Protocol\CurlInterface;
-use Magento\Mtf\Util\Protocol\CurlTransport;
-use Magento\Mtf\Util\Protocol\CurlTransport\BackendDecorator;
-
-/**
- * Curl handler for creating customer in admin
- *
- */
-class CreateCustomerBackend extends Curl
-{
-    /**
-     * Prepare POST data for creating customer request
-     *
-     * @param FixtureInterface $fixture
-     * @return array
-     */
-    protected function _prepareData(FixtureInterface $fixture)
-    {
-        $data = $fixture->getData('fields');
-        foreach ($data as $key => $values) {
-            $value = $this->_getValue($values);
-            if (null === $value) {
-                continue;
-            }
-            $data[$key] = $value;
-        }
-
-        $curlData['account'] = $data;
-        return $curlData;
-    }
-
-    /**
-     * Retrieve field value or return null if value does not exist
-     *
-     * @param array $values
-     * @return null|mixed
-     */
-    protected function _getValue($values)
-    {
-        if (!isset($values['value'])) {
-            return null;
-        }
-        return isset($values['input_value']) ? $values['input_value'] : $values['value'];
-    }
-
-    /**
-     * Post request for creating customer in backend
-     *
-     * @param FixtureInterface $fixture [optional]
-     * @return mixed|string
-     */
-    public function persist(FixtureInterface $fixture = null)
-    {
-        $params = $this->_prepareData($fixture);
-
-        $url = $_ENV['app_backend_url'] . 'customer/index/save/active_tab/account';
-        $curl = new BackendDecorator(new CurlTransport(), $this->_configuration);
-        $curl->addOption(CURLOPT_HEADER, 1);
-        $curl->write(CurlInterface::POST, $url, '1.0', [], $params);
-        $response = $curl->read();
-        $curl->close();
-
-        return $response;
-    }
-}
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Curl/SaveCustomerWithAddress.php b/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Curl/SaveCustomerWithAddress.php
deleted file mode 100644
index 43456cb34eec54dc87dd5f795753e44e06856fd7..0000000000000000000000000000000000000000
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Curl/SaveCustomerWithAddress.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-namespace Magento\Customer\Test\Handler\Curl;
-
-use Magento\Mtf\Fixture\FixtureInterface;
-use Magento\Mtf\Handler\Curl;
-use Magento\Mtf\Util\Protocol\CurlInterface;
-use Magento\Mtf\Util\Protocol\CurlTransport;
-
-/**
- * Curl handler for saving customer address in admin
- *
- */
-class SaveCustomerWithAddress extends Curl
-{
-    /**
-     * Url for saving data
-     *
-     * @var string
-     */
-    protected $saveUrl = '/customer/address/formPost/?nocookie=true';
-
-    /**
-     * Url for saving customer
-     *
-     * @var string
-     */
-    protected $saveCustomer = 'customer/account/createpost/?nocookie=true';
-
-    /**
-     * Url of new address form
-     *
-     * @var string
-     */
-    protected $addressNew = '/customer/address/new/?nocookie=true';
-
-    /**
-     * Form key
-     *
-     * @var string
-     */
-    protected $formKey;
-
-    /**
-     * Prepare POST data for creating customer request
-     *
-     * @param array $data
-     * @return array
-     */
-    protected function prepareData($data)
-    {
-        $curlData = [];
-        foreach ($data as $key => $values) {
-            $value = $this->getValue($values);
-            if (null === $value) {
-                continue;
-            }
-            $curlData[$key] = $value;
-        }
-        $curlData['success_url'] = '';
-        $curlData['error_url'] = '';
-        $curlData['default_billing'] = 1;
-        $curlData['default_shipping'] = 1;
-
-        return $curlData;
-    }
-
-    /**
-     * Retrieve field value or return null if value does not exist
-     *
-     * @param array $values
-     * @return null|mixed
-     */
-    protected function getValue($values)
-    {
-        if (!isset($values['value'])) {
-            return null;
-        }
-        return isset($values['input_value']) ? $values['input_value'] : $values['value'];
-    }
-
-    /**
-     * Execute handler
-     *
-     * @param FixtureInterface $fixture
-     * @return mixed
-     */
-    public function persist(FixtureInterface $fixture = null)
-    {
-        /** @var \Magento\Customer\Test\Fixture\Customer $fixture */
-        $address = $fixture->getDefaultBilling();
-        $fields = $this->prepareData($address->getData('fields'));
-        $url = $_ENV['app_frontend_url'] . $this->saveUrl;
-        $curl = $this->saveCustomer($fixture);
-        $fields['form_key'] = $this->formKey;
-        $curl->write(CurlInterface::POST, $url, '1.0', [], $fields);
-        $response = $curl->read();
-        $curl->close();
-
-        return $response;
-    }
-
-    /**
-     * Get from key from response
-     *
-     * @param string $response
-     * @return string
-     */
-    protected function getFromKey($response)
-    {
-        preg_match('/input name="form_key" type="hidden" value="(\w+)"/', $response, $matches);
-        $formKey = '';
-        if (!empty($matches[1])) {
-            $formKey = $matches[1];
-        }
-        return $formKey;
-    }
-
-    /**
-     * Save new customer and get form key
-     *
-     * @param \Magento\Customer\Test\Fixture\Customer $fixture
-     * @return CurlTransport
-     */
-    protected function saveCustomer(\Magento\Customer\Test\Fixture\Customer $fixture)
-    {
-        $data = $fixture->getData('fields');
-        $fields = [];
-        foreach ($data as $key => $field) {
-            $fields[$key] = $field['value'];
-        }
-        $url = $_ENV['app_frontend_url'] . $this->saveCustomer;
-        $curl = new CurlTransport();
-        $curl->write(CurlInterface::POST, $url, '1.0', [], $fields);
-        $curl->read();
-        $urlForm = $_ENV['app_frontend_url'] . $this->addressNew;
-        $curl->write(CurlInterface::GET, $urlForm, '1.0', []);
-        $response = $curl->read();
-        $this->formKey = $this->getFromKey($response);
-
-        return $curl;
-    }
-}
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Customer/Curl.php b/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Customer/Curl.php
index a13c263aeab7fe4db7e475dc11ee6f668fbfe4a8..2d8f5faf09f8860b6d20b3e5a08bdc2ca5b21c0f 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Customer/Curl.php
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Customer/Curl.php
@@ -195,23 +195,27 @@ class Curl extends AbstractCurl implements CustomerInterface
      */
     protected function prepareAddressData(array $curlData)
     {
+        $address = [];
         foreach (array_keys($curlData['address']) as $key) {
-            $curlData['address'][$key]['_deleted'] = '';
-            $curlData['address'][$key]['region'] = '';
-            if (!is_array($curlData['address'][$key]['street'])) {
-                $street = $curlData['address'][$key]['street'];
-                $curlData['address'][$key]['street'] = [];
-                $curlData['address'][$key]['street'][] = $street;
+            $addressKey = 'new_' . $key;
+            $address[$addressKey] = $curlData['address'][$key];
+            $address[$addressKey]['_deleted'] = '';
+            $address[$addressKey]['region'] = '';
+            if (!is_array($address[$addressKey]['street'])) {
+                $street = $address[$addressKey]['street'];
+                $address[$addressKey]['street'] = [];
+                $address[$addressKey]['street'][] = $street;
             }
-            if (isset($curlData['address'][$key]['default_billing'])) {
-                $value = $curlData['address'][$key]['default_billing'] === 'Yes' ? 'true' : 'false';
-                $curlData['address'][$key]['default_billing'] = $value;
+            if (isset($address[$addressKey]['default_billing'])) {
+                $value = $address[$addressKey]['default_billing'] === 'Yes' ? 'true' : 'false';
+                $address[$addressKey]['default_billing'] = $value;
             }
-            if (isset($curlData['address'][$key]['default_shipping'])) {
-                $value = $curlData['address'][$key]['default_shipping'] === 'Yes' ? 'true' : 'false';
-                $curlData['address'][$key]['default_shipping'] = $value;
+            if (isset($address[$addressKey]['default_shipping'])) {
+                $value = $address[$addressKey]['default_shipping'] === 'Yes' ? 'true' : 'false';
+                $address[$addressKey]['default_shipping'] = $value;
             }
         }
+        $curlData['address'] = $address;
 
         return $curlData;
     }
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Ui/CreateAddress.php b/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Ui/CreateAddress.php
deleted file mode 100644
index b2e9bdd33d69766478fad90cc5c20634f96f45f6..0000000000000000000000000000000000000000
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Ui/CreateAddress.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-namespace Magento\Customer\Test\Handler\Ui;
-
-use Magento\Mtf\Factory\Factory;
-use Magento\Mtf\Fixture\FixtureInterface;
-
-/**
- * UI handler for creating customer address.
- */
-class CreateAddress extends \Magento\Mtf\Handler\Ui
-{
-    /**
-     * Execute handler
-     *
-     * @param FixtureInterface $fixture [optional]
-     * @return mixed
-     */
-    public function persist(FixtureInterface $fixture = null)
-    {
-        /** @var \Magento\Customer\Test\Fixture\Address $fixture */
-        // Pages
-        $loginPage = Factory::getPageFactory()->getCustomerAccountLogin();
-        $addressPage = Factory::getPageFactory()->getCustomerAddressEdit();
-
-        $loginPage->open();
-        if ($loginPage->getLoginBlock()->isVisible()) {
-            $loginPage->getLoginBlock()->login($fixture->getCustomer());
-        }
-
-        $addressPage->open();
-        $addressPage->getEditForm()->editCustomerAddress($fixture);
-    }
-}
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Webapi/CreateCustomer.php b/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Webapi/CreateCustomer.php
deleted file mode 100644
index af06e68b03ef85b14d92d27f4044803de10e059b..0000000000000000000000000000000000000000
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Handler/Webapi/CreateCustomer.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-
-namespace Magento\Customer\Test\Handler\Webapi;
-
-use Magento\Mtf\Fixture\FixtureInterface;
-use Magento\Mtf\Handler\Webapi;
-use Magento\Mtf\Util\Protocol\SoapTransport;
-
-/**
- * Class CreateCustomer
- *
- */
-class CreateCustomer extends Webapi
-{
-    /**
-     * Create customer through request
-     *
-     * @param FixtureInterface $fixture [optional]
-     * @return mixed
-     */
-    public function persist(FixtureInterface $fixture = null)
-    {
-        $configuration = $this->_configuration->get('handler/0/webapi/0/value');
-
-        $soap = new SoapTransport($configuration['soap']);
-        return $soap->call('customerCustomerList', $fixture->getData());
-    }
-}
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Address.php b/dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Address.php
index 6012db8cdd17d501e64154dfe8892b8c14dcc2f3..ab84bfc693502818ea324506b9ff465771960798 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Address.php
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Address.php
@@ -25,8 +25,8 @@ class Address extends AbstractRepository
             'data' => $defaultData,
         ];
 
-        $this->_data['address_US_1'] = $this->_getUS1();
-        $this->_data['address_US_2'] = $this->_getUS2();
+        $this->_data['US_address_1'] = $this->_getUS1();
+        $this->_data['US_address_2'] = $this->_getUS2();
         $this->_data['address_UK'] = $this->getAddressUK();
         $this->_data['address_UK_2'] = $this->getAddressUK2();
         $this->_data['address_UK_with_VAT'] = $this->getAddressUKWithVAT($this->_data['address_UK']);
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Address.xml b/dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Address.xml
index e379604530bcdc5cbafede7c11370a74e5639b94..b39490b24c48af4d2b10c1ac7e45fdc7d4a367d0 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Address.xml
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Address.xml
@@ -37,21 +37,6 @@
             <field name="default_shipping" xsi:type="string">No</field>
         </dataset>
 
-        <dataset name="US_NY_address_billing">
-            <field name="firstname" xsi:type="string">John</field>
-            <field name="lastname" xsi:type="string">Doe</field>
-            <field name="email" xsi:type="string">John.Doe%isolation%@example.com</field>
-            <field name="company" xsi:type="string">Magento %isolation%</field>
-            <field name="street" xsi:type="string">6262 Fifth Avenue</field>
-            <field name="city" xsi:type="string">New York</field>
-            <field name="region_id" xsi:type="string">New York</field>
-            <field name="postcode" xsi:type="string">90230</field>
-            <field name="country_id" xsi:type="string">United States</field>
-            <field name="telephone" xsi:type="string">555-55-555-55</field>
-            <field name="default_billing" xsi:type="string">No</field>
-            <field name="default_shipping" xsi:type="string">No</field>
-        </dataset>
-
         <dataset name="US_address_default_shipping">
             <field name="firstname" xsi:type="string">John</field>
             <field name="lastname" xsi:type="string">Doe</field>
@@ -67,43 +52,42 @@
             <field name="default_shipping" xsi:type="string">No</field>
         </dataset>
 
-        <dataset name="default_US_address">
+        <dataset name="US_address_1">
+            <field name="firstname" xsi:type="string">John</field>
+            <field name="lastname" xsi:type="string">Doe</field>
             <field name="company" xsi:type="string">Magento %isolation%</field>
-            <field name="street" xsi:type="string">6161 West Centinela Avenue</field>
+            <field name="email" xsi:type="string">John.Doe%isolation%@example.com</field>
             <field name="city" xsi:type="string">Culver City</field>
-            <field name="region_id" xsi:type="string">California</field>
+            <field name="street" xsi:type="string">6161 West Centinela Avenue</field>
             <field name="postcode" xsi:type="string">90230</field>
             <field name="country_id" xsi:type="string">United States</field>
+            <field name="region_id" xsi:type="string">California</field>
             <field name="telephone" xsi:type="string">555-55-555-55</field>
-            <field name="default_billing" xsi:type="string">Yes</field>
-            <field name="default_shipping" xsi:type="string">Yes</field>
         </dataset>
 
-        <dataset name="US_address_without_email">
+        <dataset name="US_address_1_without_email">
             <field name="firstname" xsi:type="string">John</field>
             <field name="lastname" xsi:type="string">Doe</field>
             <field name="company" xsi:type="string">Magento %isolation%</field>
-            <field name="street" xsi:type="string">6161 West Centinela Avenue</field>
             <field name="city" xsi:type="string">Culver City</field>
-            <field name="region_id" xsi:type="string">California</field>
+            <field name="street" xsi:type="string">6161 West Centinela Avenue</field>
             <field name="postcode" xsi:type="string">90230</field>
             <field name="country_id" xsi:type="string">United States</field>
+            <field name="region_id" xsi:type="string">California</field>
             <field name="telephone" xsi:type="string">555-55-555-55</field>
         </dataset>
 
-        <dataset name="US_address_NY">
-            <field name="firstname" xsi:type="string">John</field>
-            <field name="lastname" xsi:type="string">Doe</field>
-            <field name="email" xsi:type="string">John.Doe%isolation%@example.com</field>
+        <dataset name="US_address_2">
+            <field name="firstname" xsi:type="string">Billy</field>
+            <field name="lastname" xsi:type="string">Holiday</field>
             <field name="company" xsi:type="string">Magento %isolation%</field>
-            <field name="street" xsi:type="string">3222 Cliffside Drive</field>
-            <field name="city" xsi:type="string">Binghamton</field>
-            <field name="region_id" xsi:type="string">New York</field>
-            <field name="postcode" xsi:type="string">13901</field>
+            <field name="email" xsi:type="string">b.holliday@example.net</field>
+            <field name="city" xsi:type="string">New York</field>
+            <field name="street" xsi:type="string">727 5th Ave</field>
+            <field name="postcode" xsi:type="string">10022</field>
             <field name="country_id" xsi:type="string">United States</field>
-            <field name="telephone" xsi:type="string">607-481-7802</field>
-            <field name="default_billing" xsi:type="string">Yes</field>
-            <field name="default_shipping" xsi:type="string">Yes</field>
+            <field name="region_id" xsi:type="string">New York</field>
+            <field name="telephone" xsi:type="string">777-77-77-77</field>
         </dataset>
 
         <dataset name="US_address_TX">
@@ -121,21 +105,37 @@
             <field name="default_shipping" xsi:type="string">Yes</field>
         </dataset>
 
-        <dataset name="customer_US">
+        <dataset name="US_address_NY">
             <field name="firstname" xsi:type="string">John</field>
             <field name="lastname" xsi:type="string">Doe</field>
-            <field name="email" xsi:type="string">JohnDoe_%isolation%@example.com</field>
+            <field name="email" xsi:type="string">John.Doe%isolation%@example.com</field>
             <field name="company" xsi:type="string">Magento %isolation%</field>
-            <field name="city" xsi:type="string">Culver City</field>
-            <field name="street" xsi:type="string">6161 West Centinela Avenue</field>
+            <field name="street" xsi:type="string">3222 Cliffside Drive</field>
+            <field name="city" xsi:type="string">Binghamton</field>
+            <field name="region_id" xsi:type="string">New York</field>
+            <field name="postcode" xsi:type="string">13901</field>
+            <field name="country_id" xsi:type="string">United States</field>
+            <field name="telephone" xsi:type="string">607-481-7802</field>
+            <field name="default_billing" xsi:type="string">Yes</field>
+            <field name="default_shipping" xsi:type="string">Yes</field>
+        </dataset>
+
+        <dataset name="US_address_NY_default_no">
+            <field name="firstname" xsi:type="string">John</field>
+            <field name="lastname" xsi:type="string">Doe</field>
+            <field name="email" xsi:type="string">John.Doe%isolation%@example.com</field>
+            <field name="company" xsi:type="string">Magento %isolation%</field>
+            <field name="street" xsi:type="string">6262 Fifth Avenue</field>
+            <field name="city" xsi:type="string">New York</field>
+            <field name="region_id" xsi:type="string">New York</field>
             <field name="postcode" xsi:type="string">90230</field>
             <field name="country_id" xsi:type="string">United States</field>
-            <field name="region_id" xsi:type="string">California</field>
             <field name="telephone" xsi:type="string">555-55-555-55</field>
-            <field name="fax" xsi:type="string">555-55-555-55</field>
+            <field name="default_billing" xsi:type="string">No</field>
+            <field name="default_shipping" xsi:type="string">No</field>
         </dataset>
 
-        <dataset name="customer_UK">
+        <dataset name="UK_address_default_billing">
             <field name="firstname" xsi:type="string">Jane</field>
             <field name="lastname" xsi:type="string">Doe</field>
             <field name="email" xsi:type="string">JaneDoe_%isolation%@example.com</field>
@@ -147,9 +147,11 @@
             <field name="region" xsi:type="string">London</field>
             <field name="telephone" xsi:type="string">444-44-444-44</field>
             <field name="fax" xsi:type="string">444-44-444-44</field>
+            <field name="default_billing" xsi:type="string">Yes</field>
+            <field name="default_shipping" xsi:type="string">Yes</field>
         </dataset>
 
-        <dataset name="address_UK_default_billing_address">
+        <dataset name="UK_address">
             <field name="firstname" xsi:type="string">Jane</field>
             <field name="lastname" xsi:type="string">Doe</field>
             <field name="email" xsi:type="string">JaneDoe_%isolation%@example.com</field>
@@ -161,61 +163,9 @@
             <field name="region" xsi:type="string">London</field>
             <field name="telephone" xsi:type="string">444-44-444-44</field>
             <field name="fax" xsi:type="string">444-44-444-44</field>
-            <field name="default_billing" xsi:type="string">Yes</field>
-            <field name="default_shipping" xsi:type="string">Yes</field>
-        </dataset>
-
-        <dataset name="address_US_1">
-            <field name="firstname" xsi:type="string">John</field>
-            <field name="lastname" xsi:type="string">Doe</field>
-            <field name="company" xsi:type="string">Magento %isolation%</field>
-            <field name="email" xsi:type="string">John.Doe%isolation%@example.com</field>
-            <field name="city" xsi:type="string">Culver City</field>
-            <field name="street" xsi:type="string">6161 West Centinela Avenue</field>
-            <field name="postcode" xsi:type="string">90230</field>
-            <field name="country_id" xsi:type="string">United States</field>
-            <field name="region_id" xsi:type="string">California</field>
-            <field name="telephone" xsi:type="string">555-55-555-55</field>
-        </dataset>
-
-        <dataset name="address_US_2">
-            <field name="firstname" xsi:type="string">Billy</field>
-            <field name="lastname" xsi:type="string">Holiday</field>
-            <field name="company" xsi:type="string">Magento %isolation%</field>
-            <field name="email" xsi:type="string">b.holliday@example.net</field>
-            <field name="city" xsi:type="string">New York</field>
-            <field name="street" xsi:type="string">727 5th Ave</field>
-            <field name="postcode" xsi:type="string">10022</field>
-            <field name="country_id" xsi:type="string">United States</field>
-            <field name="region_id" xsi:type="string">New York</field>
-            <field name="telephone" xsi:type="string">777-77-77-77</field>
-        </dataset>
-
-        <dataset name="address_data_US_1">
-            <field name="firstname" xsi:type="string">John</field>
-            <field name="lastname" xsi:type="string">Doe</field>
-            <field name="company" xsi:type="string">Magento %isolation%</field>
-            <field name="city" xsi:type="string">Culver City</field>
-            <field name="street" xsi:type="string">6161 West Centinela Avenue</field>
-            <field name="postcode" xsi:type="string">90230</field>
-            <field name="country_id" xsi:type="string">United States</field>
-            <field name="region_id" xsi:type="string">California</field>
-            <field name="telephone" xsi:type="string">555-55-555-55</field>
-        </dataset>
-
-        <dataset name="address_DE">
-            <field name="firstname" xsi:type="string">Jan</field>
-            <field name="lastname" xsi:type="string">Jansen</field>
-            <field name="company" xsi:type="string">Magento %isolation%</field>
-            <field name="city" xsi:type="string">Berlin</field>
-            <field name="street" xsi:type="string">Augsburger Strabe 41</field>
-            <field name="postcode" xsi:type="string">10789</field>
-            <field name="country_id" xsi:type="string">Germany</field>
-            <field name="region_id" xsi:type="string">Berlin</field>
-            <field name="telephone" xsi:type="string">333-33-333-33</field>
         </dataset>
 
-        <dataset name="address_UK">
+        <dataset name="UK_address_without_email">
             <field name="firstname" xsi:type="string">Jane</field>
             <field name="lastname" xsi:type="string">Doe</field>
             <field name="company" xsi:type="string">Magento %isolation%</field>
@@ -223,23 +173,12 @@
             <field name="street" xsi:type="string">172, Westminster Bridge Rd</field>
             <field name="postcode" xsi:type="string">SE1 7RW</field>
             <field name="country_id" xsi:type="string">United Kingdom</field>
-            <field name="region_id" xsi:type="string">London</field>
-            <field name="telephone" xsi:type="string">444-44-444-44</field>
-        </dataset>
-
-        <dataset name="address_UK_2">
-            <field name="firstname" xsi:type="string">Jane</field>
-            <field name="lastname" xsi:type="string">Doe</field>
-            <field name="company" xsi:type="string">Magento %isolation%</field>
-            <field name="city" xsi:type="string">Manchester</field>
-            <field name="street" xsi:type="string">42 King Street West</field>
-            <field name="postcode" xsi:type="string">M3 2WY</field>
-            <field name="country_id" xsi:type="string">United Kingdom</field>
-            <field name="region_id" xsi:type="string">Manchester</field>
+            <field name="region" xsi:type="string">London</field>
             <field name="telephone" xsi:type="string">444-44-444-44</field>
+            <field name="fax" xsi:type="string">444-44-444-44</field>
         </dataset>
 
-        <dataset name="address_UK_with_VAT">
+        <dataset name="UK_address_with_VAT">
             <field name="firstname" xsi:type="string">Jane</field>
             <field name="lastname" xsi:type="string">Doe</field>
             <field name="company" xsi:type="string">Magento %isolation%</field>
@@ -253,5 +192,17 @@
             <field name="default_billing" xsi:type="string">Yes</field>
             <field name="default_shipping" xsi:type="string">Yes</field>
         </dataset>
+
+        <dataset name="DE_address">
+            <field name="firstname" xsi:type="string">Jan</field>
+            <field name="lastname" xsi:type="string">Jansen</field>
+            <field name="company" xsi:type="string">Magento %isolation%</field>
+            <field name="city" xsi:type="string">Berlin</field>
+            <field name="street" xsi:type="string">Augsburger Strabe 41</field>
+            <field name="postcode" xsi:type="string">10789</field>
+            <field name="country_id" xsi:type="string">Germany</field>
+            <field name="region_id" xsi:type="string">Berlin</field>
+            <field name="telephone" xsi:type="string">333-33-333-33</field>
+        </dataset>
     </repository>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Customer.xml b/dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Customer.xml
index a3eb0e57b62a60790483e504a2f020e7252744b0..2dc95ab415c6d8bebb759f0726e17366ed87a627 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Customer.xml
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/Repository/Customer.xml
@@ -76,22 +76,6 @@
             </field>
         </dataset>
 
-        <dataset name="customer_US">
-            <field name="firstname" xsi:type="string">John</field>
-            <field name="lastname" xsi:type="string">Doe</field>
-            <field name="email" xsi:type="string">JohnDoe_%isolation%@example.com</field>
-            <field name="password" xsi:type="string">123123q</field>
-            <field name="password_confirmation" xsi:type="string">123123q</field>
-        </dataset>
-
-        <dataset name="customer_UK">
-            <field name="firstname" xsi:type="string">Jane</field>
-            <field name="lastname" xsi:type="string">Doe</field>
-            <field name="email" xsi:type="string">JaneDoe_%isolation%@example.com</field>
-            <field name="password" xsi:type="string">123123q</field>
-            <field name="password_confirmation" xsi:type="string">123123q</field>
-        </dataset>
-
         <dataset name="johndoe_unique">
             <field name="firstname" xsi:type="string">John</field>
             <field name="lastname" xsi:type="string">Doe%isolation%</field>
@@ -144,7 +128,7 @@
             <field name="password" xsi:type="string">123123q</field>
             <field name="password_confirmation" xsi:type="string">123123q</field>
             <field name="address" xsi:type="array">
-                <item name="presets" xsi:type="string">address_US_1</item>
+                <item name="presets" xsi:type="string">US_address_1</item>
             </field>
         </dataset>
 
@@ -158,29 +142,18 @@
             <field name="password" xsi:type="string">123123q</field>
             <field name="password_confirmation" xsi:type="string">123123q</field>
             <field name="address" xsi:type="array">
-                <item name="presets" xsi:type="string">address_US_1</item>
+                <item name="presets" xsi:type="string">US_address_1</item>
             </field>
         </dataset>
 
-        <dataset name="customer_US_1">
-            <field name="firstname" xsi:type="string">John</field>
-            <field name="lastname" xsi:type="string">Doe%isolation%</field>
-            <field name="email" xsi:type="string">John.Doe%isolation%@example.com</field>
-            <field name="password" xsi:type="string">123123q</field>
-            <field name="password_confirmation" xsi:type="string">123123q</field>
-            <field name="address" xsi:type="array">
-                <item name="presets" xsi:type="string">address_US_1</item>
-            </field>
-        </dataset>
-
-        <dataset name="customer_UK_1">
+        <dataset name="customer_US">
             <field name="firstname" xsi:type="string">John</field>
             <field name="lastname" xsi:type="string">Doe%isolation%</field>
             <field name="email" xsi:type="string">John.Doe%isolation%@example.com</field>
             <field name="password" xsi:type="string">123123q</field>
             <field name="password_confirmation" xsi:type="string">123123q</field>
             <field name="address" xsi:type="array">
-                <item name="presets" xsi:type="string">address_UK</item>
+                <item name="presets" xsi:type="string">US_address_1</item>
             </field>
         </dataset>
 
@@ -191,7 +164,7 @@
             <field name="password" xsi:type="string">123123q</field>
             <field name="password_confirmation" xsi:type="string">123123q</field>
             <field name="address" xsi:type="array">
-                <item name="presets" xsi:type="string">address_UK_default_billing_address</item>
+                <item name="presets" xsi:type="string">UK_address_default_billing</item>
             </field>
         </dataset>
 
@@ -202,7 +175,7 @@
             <field name="password" xsi:type="string">123123q</field>
             <field name="password_confirmation" xsi:type="string">123123q</field>
             <field name="address" xsi:type="array">
-                <item name="presets" xsi:type="string">address_UK_with_VAT</item>
+                <item name="presets" xsi:type="string">UK_address_with_VAT</item>
             </field>
         </dataset>
     </repository>
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/CreateExistingCustomerFrontendEntity.php b/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/CreateExistingCustomerFrontendEntity.php
index ca15d9116263c4bf2b2fcf6fe9e9d91bbb27a796..aebcf4f2695ab88ee2d565c5012d4dd9dcbf2766 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/CreateExistingCustomerFrontendEntity.php
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/CreateExistingCustomerFrontendEntity.php
@@ -13,11 +13,9 @@ use Magento\Customer\Test\Page\CustomerAccountLogout;
 use Magento\Mtf\TestCase\Injectable;
 
 /**
- * Test Creation for CreateExistingCustomerFrontendEntity
- *
- * Test Flow:
  * Preconditions:
- *  1.Customer is created
+ *  1.Customer is created.
+ *
  * Steps:
  * 1. Go to frontend.
  * 2. Click Register link.
@@ -36,14 +34,14 @@ class CreateExistingCustomerFrontendEntity extends Injectable
     /* end tags */
 
     /**
-     * Page CustomerAccountCreate
+     * Page CustomerAccountCreate.
      *
      * @var CustomerAccountCreate
      */
     protected $customerAccountCreate;
 
     /**
-     * Page CustomerAccountLogout
+     * Page CustomerAccountLogout.
      *
      * @var CustomerAccountLogout
      */
@@ -57,51 +55,48 @@ class CreateExistingCustomerFrontendEntity extends Injectable
     protected $cmsIndex;
 
     /**
-     * Injection data
+     * Inject pages.
      *
      * @param CustomerAccountCreate $customerAccountCreate
      * @param CustomerAccountLogout $customerAccountLogout
      * @param CmsIndex $cmsIndex
-     * @param Customer $customer
      * @return array
      */
     public function __inject(
         CustomerAccountCreate $customerAccountCreate,
         CustomerAccountLogout $customerAccountLogout,
-        CmsIndex $cmsIndex,
-        Customer $customer
+        CmsIndex $cmsIndex
     ) {
         $this->customerAccountLogout = $customerAccountLogout;
         $this->customerAccountCreate = $customerAccountCreate;
         $this->cmsIndex = $cmsIndex;
-        //Precondition
-        $customer->persist();
-        return [
-            'customer' => $customer,
-        ];
     }
 
     /**
-     * Create Existing Customer account on frontend
+     * Create Existing Customer account on frontend.
      *
      * @param Customer $customer
      * @return void
      */
     public function testCreateExistingCustomer(Customer $customer)
     {
-        //Steps
+        // Precondition
+        $existingCustomer = clone $customer;
+        $customer->persist();
+
+        // Steps
         $this->cmsIndex->open();
         $this->cmsIndex->getLinksBlock()->openLink('Create an Account');
-        $this->customerAccountCreate->getRegisterForm()->registerCustomer($customer);
+        $this->customerAccountCreate->getRegisterForm()->registerCustomer($existingCustomer);
     }
 
     /**
-     * Logout customer from frontend account
+     * Logout customer from frontend account.
      *
      * @return void
      */
     public function tearDown()
     {
-        $this->customerAccountLogout->open();
+        $this->objectManager->create('Magento\Customer\Test\TestStep\LogoutCustomerOnFrontendStep')->run();
     }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/CreateExistingCustomerFrontendEntity.xml b/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/CreateExistingCustomerFrontendEntity.xml
index 7c8b8ff68e45d059212dd8b1403f175a098f7b02..3fbdcf50f62d855f3aba5c3566609a72e0b34c8e 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/CreateExistingCustomerFrontendEntity.xml
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/CreateExistingCustomerFrontendEntity.xml
@@ -6,9 +6,14 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
-  <testCase name="Magento\Customer\Test\TestCase\CreateExistingCustomerFrontendEntity">
-    <variation name="CreateExistingCustomerFrontendEntityVariation1">
-      <constraint name="Magento\Customer\Test\Constraint\AssertCustomerFailRegisterMessage"/>
-    </variation>
-  </testCase>
+    <testCase name="Magento\Customer\Test\TestCase\CreateExistingCustomerFrontendEntity">
+        <variation name="CreateExistingCustomerFrontendEntityVariation1">
+            <data name="customer/data/firstname" xsi:type="string">john</data>
+            <data name="customer/data/lastname" xsi:type="string">doe</data>
+            <data name="customer/data/email" xsi:type="string">johndoe%isolation%@example.com</data>
+            <data name="customer/data/password" xsi:type="string">123123q</data>
+            <data name="customer/data/password_confirmation" xsi:type="string">123123q</data>
+            <constraint name="Magento\Customer\Test\Constraint\AssertCustomerFailRegisterMessage" />
+        </variation>
+    </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/DeleteCustomerAddressTest.xml b/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/DeleteCustomerAddressTest.xml
index f998fde69cd1802f9eb05e63c6ae26622301b614..d4c96eef41e1caf37de7b2357dbfba0dec7e7350 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/DeleteCustomerAddressTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/DeleteCustomerAddressTest.xml
@@ -9,7 +9,7 @@
   <testCase name="Magento\Customer\Test\TestCase\DeleteCustomerAddressTest">
     <variation name="DeleteCustomerAddressTestVariation1">
       <data name="customer/dataSet" xsi:type="string">default</data>
-      <data name="customer/data/address/presets" xsi:type="string">US_address_default_billing,US_NY_address_billing</data>
+      <data name="customer/data/address/presets" xsi:type="string">US_address_default_billing,US_address_NY_default_no</data>
       <constraint name="Magento\Customer\Test\Constraint\AssertAddressDeletedFrontend"/>
       <constraint name="Magento\Customer\Test\Constraint\AssertAddressDeletedBackend"/>
     </variation>
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/ForgotPasswordOnFrontendTest.xml b/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/ForgotPasswordOnFrontendTest.xml
index 28a5aa51e2f9bfb87966e81d9f6e77129c2f070a..42e10059a897b80bc35e7c0bccffb34f56469c75 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/ForgotPasswordOnFrontendTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/ForgotPasswordOnFrontendTest.xml
@@ -8,7 +8,7 @@
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
     <testCase name="Magento\Customer\Test\TestCase\ForgotPasswordOnFrontendTest">
         <variation name="ForgotPasswordOnFrontendTestVariation1">
-            <data name="customer/dataSet" xsi:type="string">customer_US_1</data>
+            <data name="customer/dataSet" xsi:type="string">customer_US</data>
             <constraint name="Magento\Customer\Test\Constraint\AssertCustomerForgotPasswordSuccessMessage" />
         </variation>
     </testCase>
diff --git a/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/UpdateCustomerFrontendEntityTest.php b/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/UpdateCustomerFrontendEntityTest.php
index 2892af943fdd10dde6a8f51e40fa4580fe885047..63308bbea50d1103e598c31a2d40558952ce77d6 100644
--- a/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/UpdateCustomerFrontendEntityTest.php
+++ b/dev/tests/functional/tests/app/Magento/Customer/Test/TestCase/UpdateCustomerFrontendEntityTest.php
@@ -135,14 +135,4 @@ class UpdateCustomerFrontendEntityTest extends Injectable
         $this->customerAddressEdit->getEditForm()->fill($address);
         $this->customerAddressEdit->getEditForm()->saveAddress();
     }
-
-    /**
-     * Customer logout from account
-     *
-     * @return void
-     */
-    public function tearDown()
-    {
-        $this->objectManager->create('Magento\Customer\Test\TestStep\LogoutCustomerOnFrontendStep')->run();
-    }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Directory/Test/TestCase/CreateCurrencyRateTest.php b/dev/tests/functional/tests/app/Magento/Directory/Test/TestCase/CreateCurrencyRateTest.php
index 04aa6c4ca73d61e4ef01e61ac9929d9a225d2b59..22b8d54518de92625349f1aa55fdf5cc7044695b 100644
--- a/dev/tests/functional/tests/app/Magento/Directory/Test/TestCase/CreateCurrencyRateTest.php
+++ b/dev/tests/functional/tests/app/Magento/Directory/Test/TestCase/CreateCurrencyRateTest.php
@@ -25,7 +25,7 @@ use Magento\CurrencySymbol\Test\Page\Adminhtml\SystemCurrencyIndex;
  * 5. Perform assertions.
  *
  * @group Localization_(PS)
- * @ZephyrId MAGETWO-12427, MAGETWO-36824
+ * @ZephyrId MAGETWO-36824
  */
 class CreateCurrencyRateTest extends Injectable
 {
diff --git a/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/UpdateDownloadableProductEntityTest.xml b/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/UpdateDownloadableProductEntityTest.xml
index 69a8cb56138fc5d25a46a3eb72ac00e5dd66be17..10ba00e4d5db1f8c1791e7c96b82c0ddde64d343 100644
--- a/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/UpdateDownloadableProductEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Downloadable/Test/TestCase/UpdateDownloadableProductEntityTest.xml
@@ -114,7 +114,6 @@
             <data name="product/data/quantity_and_stock_status/qty" xsi:type="string">10</data>
             <data name="product/data/quantity_and_stock_status/is_in_stock" xsi:type="string">In Stock</data>
             <data name="product/data/is_virtual" xsi:type="string">Yes</data>
-            <data name="product/data/weight" xsi:type="string">10</data>
             <data name="product/data/special_price" xsi:type="string">40</data>
             <data name="isRequired" xsi:type="string">No</data>
             <data name="product/data/url_key" xsi:type="string">downloadableproduct-%isolation%</data>
diff --git a/dev/tests/functional/tests/app/Magento/Fedex/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Fedex/Test/TestCase/OnePageCheckoutTest.xml
index 5ea75d0854c3181fe54dba66db63c67499935f26..846ea00925857a42c33c6fc80933cf69d7760a19 100644
--- a/dev/tests/functional/tests/app/Magento/Fedex/Test/TestCase/OnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Fedex/Test/TestCase/OnePageCheckoutTest.xml
@@ -11,9 +11,9 @@
             <data name="description" xsi:type="string">Check Out as Guest using FedEx with US shipping origin and UK customer</data>
             <data name="products" xsi:type="string">catalogProductSimple::default, configurableProduct::default, bundleProduct::bundle_fixed_product</data>
             <data name="checkoutMethod" xsi:type="string">guest</data>
-            <data name="customer/dataSet" xsi:type="string">customer_UK</data>
-            <data name="address/dataSet" xsi:type="string">customer_UK</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_UK</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
+            <data name="address/dataSet" xsi:type="string">UK_address</data>
+            <data name="billingAddress/dataSet" xsi:type="string">UK_address</data>
             <data name="shipping/shipping_service" xsi:type="string">Federal Express</data>
             <data name="shipping/shipping_method" xsi:type="string">International Economy</data>
             <data name="cart/data/shipping_method" xsi:type="string">International Economy</data>
diff --git a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CheckoutWithGiftMessagesTest.xml b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CheckoutWithGiftMessagesTest.xml
index 18f90c0f3157a1fc6295e3647311913f2fcf3f84..b6433e7ad8ed1e3a5d3715920b9e4f7cc85f4e47 100644
--- a/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CheckoutWithGiftMessagesTest.xml
+++ b/dev/tests/functional/tests/app/Magento/GiftMessage/Test/TestCase/CheckoutWithGiftMessagesTest.xml
@@ -9,8 +9,8 @@
     <testCase name="Magento\GiftMessage\Test\TestCase\CheckoutWithGiftMessagesTest">
         <variation name="CheckoutWithGiftMessagesTestVariation1">
             <data name="products" xsi:type="string">catalogProductSimple::default, catalogProductVirtual::default</data>
-            <data name="customer/dataSet" xsi:type="string">customer_US</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_US</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
+            <data name="billingAddress/dataSet" xsi:type="string">US_address_1</data>
             <data name="checkoutMethod" xsi:type="string">login</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
             <data name="shipping/shipping_method" xsi:type="string">Fixed</data>
@@ -26,8 +26,8 @@
         </variation>
         <variation name="CheckoutWithGiftMessagesTestVariation2">
             <data name="products" xsi:type="string">catalogProductSimple::default, catalogProductVirtual::default</data>
-            <data name="customer/dataSet" xsi:type="string">customer_US</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_US</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
+            <data name="billingAddress/dataSet" xsi:type="string">US_address_1</data>
             <data name="checkoutMethod" xsi:type="string">login</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
             <data name="shipping/shipping_method" xsi:type="string">Fixed</data>
diff --git a/dev/tests/functional/tests/app/Magento/ImportExport/Test/Fixture/ImportExport.xml b/dev/tests/functional/tests/app/Magento/ImportExport/Test/Fixture/ImportExport.xml
index 01f5463b5f052fac98c49d795f3ac38e4979139f..ac1253f96a0c0d1486389a3bf354b1842e4df1ac 100644
--- a/dev/tests/functional/tests/app/Magento/ImportExport/Test/Fixture/ImportExport.xml
+++ b/dev/tests/functional/tests/app/Magento/ImportExport/Test/Fixture/ImportExport.xml
@@ -6,22 +6,22 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/fixture.xsd">
-  <fixture name="importExport" module="Magento_ImportExport" type="flat" entity_type="importexport_importdata" class="Magento\ImportExport\Test\Fixture\ImportExport">
-    <dataset name="default">
-        <field name="entity" xsi:type="string">Products</field>
-        <field name="behavior" xsi:type="string">CSV</field>
-    </dataset>
-    <field name="id" is_required="1">
-      <default_value xsi:type="null"/>
-    </field>
-    <field name="entity" is_required="">
-      <default_value xsi:type="string">Products</default_value>
-    </field>
-    <field name="behavior" is_required="">
-      <default_value xsi:type="string">CSV</default_value>
-    </field>
-    <field name="data_export" is_required="">
-      <default_value xsi:type="null"/>
-    </field>
-  </fixture>
+    <fixture name="importExport" module="Magento_ImportExport" type="flat" entity_type="importexport_importdata" class="Magento\ImportExport\Test\Fixture\ImportExport">
+        <dataset name="default">
+            <field name="entity" xsi:type="string">Products</field>
+            <field name="behavior" xsi:type="string">CSV</field>
+        </dataset>
+        <field name="id" is_required="1">
+            <default_value xsi:type="null" />
+        </field>
+        <field name="entity" is_required="">
+            <default_value xsi:type="string">Products</default_value>
+        </field>
+        <field name="file_format" is_required="">
+            <default_value xsi:type="string">CSV</default_value>
+        </field>
+        <field name="data_export" is_required="">
+            <default_value xsi:type="null" />
+        </field>
+    </fixture>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Install/Test/Block/CreateAdmin.xml b/dev/tests/functional/tests/app/Magento/Install/Test/Block/CreateAdmin.xml
index 3f1616de3dbd0340573923778b6036b34776df03..b21f140454da51bf0b7428fd6d515c84b52534b6 100644
--- a/dev/tests/functional/tests/app/Magento/Install/Test/Block/CreateAdmin.xml
+++ b/dev/tests/functional/tests/app/Magento/Install/Test/Block/CreateAdmin.xml
@@ -5,7 +5,7 @@
  * See COPYING.txt for license details.
  */
 -->
-<mapping strict="0">
+<mapping strict="1">
     <fields>
         <username>
             <selector>[name='adminUsername']</selector>
diff --git a/dev/tests/functional/tests/app/Magento/Install/Test/Block/CustomizeStore.php b/dev/tests/functional/tests/app/Magento/Install/Test/Block/CustomizeStore.php
index e9e81483fa4943a59bb69b5f31ca0bb2552d954e..efe02fa2148c8c0108b0324d6790ab31df0c78c2 100644
--- a/dev/tests/functional/tests/app/Magento/Install/Test/Block/CustomizeStore.php
+++ b/dev/tests/functional/tests/app/Magento/Install/Test/Block/CustomizeStore.php
@@ -24,11 +24,11 @@ class CustomizeStore extends Form
     protected $next = "[ng-click*='checkModuleConstraints']";
 
     /**
-     * First field selector
+     * Module configuration section.
      *
      * @var string
      */
-    protected $firstField = '[ng-model*="language"]';
+    protected $moduleConfiguration = '.customize-your-store-advanced';
 
     /**
      * Click on 'Next' button.
@@ -49,7 +49,17 @@ class CustomizeStore extends Form
      */
     public function fill(FixtureInterface $fixture, SimpleElement $element = null)
     {
-        $this->waitForElementVisible($this->firstField);
-        return parent::fill($fixture, $element);
+        $this->waitForElementVisible($this->moduleConfiguration);
+        $data = $fixture->getData();
+        $storeData = [];
+        foreach ($data as $key => $value) {
+            if (strpos($key, 'store') === 0) {
+                $storeData[$key] = $value;
+            }
+        }
+        $mapping = $this->dataMapping($storeData);
+        $this->_fill($mapping, $element);
+
+        return $this;
     }
 }
diff --git a/dev/tests/functional/tests/app/Magento/Install/Test/Block/CustomizeStore.xml b/dev/tests/functional/tests/app/Magento/Install/Test/Block/CustomizeStore.xml
index 24eaf10fa6a1ae9b5c06b4b06d41736b6e36f93d..8c99894d4e76836ccdd88c30f6498f6fbaba0c00 100644
--- a/dev/tests/functional/tests/app/Magento/Install/Test/Block/CustomizeStore.xml
+++ b/dev/tests/functional/tests/app/Magento/Install/Test/Block/CustomizeStore.xml
@@ -7,13 +7,13 @@
 -->
 <mapping strict="0">
     <fields>
-        <currency>
-            <selector>[ng-model*='currency']</selector>
+        <storeCurrency>
+            <selector>#storeCurrency</selector>
             <input>select</input>
-        </currency>
-        <language>
-            <selector>[ng-model*='language']</selector>
+        </storeCurrency>
+        <storeLanguage>
+            <selector>#storeLanguage</selector>
             <input>select</input>
-        </language>
+        </storeLanguage>
     </fields>
 </mapping>
diff --git a/dev/tests/functional/tests/app/Magento/Install/Test/Block/Database.php b/dev/tests/functional/tests/app/Magento/Install/Test/Block/Database.php
index e1efe0955d55b1affbec3bd5ecce0045617dad7a..b532f1d1070a6439e06709987196760716415b75 100644
--- a/dev/tests/functional/tests/app/Magento/Install/Test/Block/Database.php
+++ b/dev/tests/functional/tests/app/Magento/Install/Test/Block/Database.php
@@ -8,6 +8,8 @@ namespace Magento\Install\Test\Block;
 
 use Magento\Mtf\Block\Form;
 use Magento\Mtf\Client\Locator;
+use Magento\Mtf\Fixture\FixtureInterface;
+use Magento\Mtf\Client\Element\SimpleElement;
 
 /**
  * Database form.
@@ -28,6 +30,28 @@ class Database extends Form
      */
     protected $next = "[ng-click*='testConnection']";
 
+    /**
+     * Fill database form.
+     *
+     * @param FixtureInterface $fixture
+     * @param SimpleElement|null $element
+     * @return $this
+     */
+    public function fill(FixtureInterface $fixture, SimpleElement $element = null)
+    {
+        $data = $fixture->getData();
+        $dbData = [];
+        foreach ($data as $key => $value) {
+            if (strpos($key, 'db') === 0) {
+                $dbData[$key] = $value;
+            }
+        }
+        $mapping = $this->dataMapping($dbData);
+        $this->_fill($mapping, $element);
+
+        return $this;
+    }
+
     /**
      * Get 'Test connection successful.' message.
      *
diff --git a/dev/tests/functional/tests/app/Magento/Install/Test/Block/WebConfiguration.php b/dev/tests/functional/tests/app/Magento/Install/Test/Block/WebConfiguration.php
index 654dd1ffc8fe3ad117cf1db3a7bb24ee7da00594..64a90917c4c0245490565f507e3def561752cd70 100644
--- a/dev/tests/functional/tests/app/Magento/Install/Test/Block/WebConfiguration.php
+++ b/dev/tests/functional/tests/app/Magento/Install/Test/Block/WebConfiguration.php
@@ -7,6 +7,8 @@
 namespace Magento\Install\Test\Block;
 
 use Magento\Mtf\Block\Form;
+use Magento\Mtf\Fixture\FixtureInterface;
+use Magento\Mtf\Client\Element\SimpleElement;
 
 /**
  * Web configuration block.
@@ -27,6 +29,28 @@ class WebConfiguration extends Form
      */
     protected $advancedOptions = "[ng-click*='advanced']";
 
+    /**
+     * Fill web configuration form.
+     *
+     * @param FixtureInterface $fixture
+     * @param SimpleElement|null $element
+     * @return $this
+     */
+    public function fill(FixtureInterface $fixture, SimpleElement $element = null)
+    {
+        $data = $fixture->getData();
+        $webConfiguration = [];
+        foreach ($data as $key => $value) {
+            if (strpos($key, 'db') !== 0 && strpos($key, 'store') !== 0) {
+                $webConfiguration[$key] = $value;
+            }
+        }
+        $mapping = $this->dataMapping($webConfiguration);
+        $this->_fill($mapping, $element);
+
+        return $this;
+    }
+
     /**
      * Click on 'Next' button.
      *
diff --git a/dev/tests/functional/tests/app/Magento/Install/Test/Block/WebConfiguration.xml b/dev/tests/functional/tests/app/Magento/Install/Test/Block/WebConfiguration.xml
index f88d760c4c9cbd9a7c8d3b81bdb73f12338a9b79..a4b04f205eebf5c1305bda785977155d6449f569 100644
--- a/dev/tests/functional/tests/app/Magento/Install/Test/Block/WebConfiguration.xml
+++ b/dev/tests/functional/tests/app/Magento/Install/Test/Block/WebConfiguration.xml
@@ -7,7 +7,9 @@
 -->
 <mapping strict="0">
     <fields>
-        <web />
+        <baseUrl>
+            <selector>[name="base_url"]</selector>
+        </baseUrl>
         <admin />
         <keyOwn>
             <selector>[value="user"]</selector>
diff --git a/dev/tests/functional/tests/app/Magento/Install/Test/Constraint/AssertSuccessInstall.php b/dev/tests/functional/tests/app/Magento/Install/Test/Constraint/AssertSuccessInstall.php
index 8fffdaaf42871d9174ab8b2df4e280c780e15091..5b9914c6e35b454a88d2556ee074307e1b4b4447 100644
--- a/dev/tests/functional/tests/app/Magento/Install/Test/Constraint/AssertSuccessInstall.php
+++ b/dev/tests/functional/tests/app/Magento/Install/Test/Constraint/AssertSuccessInstall.php
@@ -24,7 +24,7 @@ class AssertSuccessInstall extends AbstractConstraint
     protected $adminFieldsList = [
         ['pageData' => 'username', 'fixture' => 'username'],
         ['pageData' => 'email', 'fixture' => 'email'],
-        ['pageData' => 'your_store_address', 'fixture' => 'web'],
+        ['pageData' => 'your_store_address', 'fixture' => 'baseUrl'],
         ['pageData' => 'magento_admin_address', 'fixture' => 'admin']
     ];
 
@@ -57,8 +57,8 @@ class AssertSuccessInstall extends AbstractConstraint
             $allData[$key] = isset($value['value']) ? $value['value'] : $value;
         }
 
-        $allData['web'] = (isset($allData['https']) ? $allData['https'] : $allData['web']);
-        $allData['admin'] = $allData['web'] . $allData['admin'] . '/';
+        $allData['baseUrl'] = (isset($allData['https']) ? $allData['https'] : $allData['baseUrl']);
+        $allData['admin'] = $allData['baseUrl'] . $allData['admin'] . '/';
 
         foreach ($this->adminFieldsList as $field) {
             \PHPUnit_Framework_Assert::assertEquals(
diff --git a/dev/tests/functional/tests/app/Magento/Install/Test/Fixture/Install.xml b/dev/tests/functional/tests/app/Magento/Install/Test/Fixture/Install.xml
index d846de8f0bd45b0ed71068f8146e171994d682f6..2d83153459204f88755791b178917c92d4c01c79 100644
--- a/dev/tests/functional/tests/app/Magento/Install/Test/Fixture/Install.xml
+++ b/dev/tests/functional/tests/app/Magento/Install/Test/Fixture/Install.xml
@@ -6,25 +6,25 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/fixture.xsd">
-  <fixture name="install" module="Magento_Install" type="virtual" entity_type="install" repository_class="Magento\Install\Test\Repository\Install" handler_interface="Magento\Install\Test\Handler\Install\InstallInterface" class="Magento\Install\Test\Fixture\Install">
-    <field name="dbHost"/>
-    <field name="dbUser"/>
-    <field name="dbPassword"/>
-    <field name="dbName"/>
-    <field name="web"/>
-    <field name="admin"/>
-    <field name="adminUsername"/>
-    <field name="adminEmail"/>
-    <field name="adminPassword"/>
-    <field name="adminConfirm"/>
-    <field name="apacheRewrites"/>
-    <field name="dbTablePrefix"/>
-    <field name="keyOwn"/>
-    <field name="httpsAdmin"/>
-    <field name="https"/>
-    <field name="httpsFront"/>
-    <field name="keyValue"/>
-    <field name="language"/>
-    <field name="currency"/>
-  </fixture>
+    <fixture name="install" module="Magento_Install" type="virtual" entity_type="install" repository_class="Magento\Install\Test\Repository\Install" handler_interface="Magento\Install\Test\Handler\Install\InstallInterface" class="Magento\Install\Test\Fixture\Install">
+        <field name="dbHost" />
+        <field name="dbUser" />
+        <field name="dbPassword" />
+        <field name="dbName" />
+        <field name="dbTablePrefix" />
+        <field name="baseUrl" />
+        <field name="admin" />
+        <field name="adminUsername" />
+        <field name="adminEmail" />
+        <field name="adminPassword" />
+        <field name="adminConfirm" />
+        <field name="apacheRewrites" />
+        <field name="keyOwn" />
+        <field name="httpsAdmin" />
+        <field name="https" />
+        <field name="httpsFront" />
+        <field name="keyValue" />
+        <field name="storeLanguage" />
+        <field name="storeCurrency" />
+    </fixture>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Install/Test/TestCase/InstallTest.php b/dev/tests/functional/tests/app/Magento/Install/Test/TestCase/InstallTest.php
index fbfb262f1206d798a750dcfede4c913b96eed3c5..ccf21709a84ab2f1d5f59eaf62cb5444a49df765 100644
--- a/dev/tests/functional/tests/app/Magento/Install/Test/TestCase/InstallTest.php
+++ b/dev/tests/functional/tests/app/Magento/Install/Test/TestCase/InstallTest.php
@@ -12,17 +12,13 @@ use Magento\Install\Test\Fixture\Install as InstallConfig;
 use Magento\User\Test\Fixture\User;
 use Magento\Mtf\Fixture\FixtureFactory;
 use Magento\Mtf\TestCase\Injectable;
-use Magento\Mtf\Config\DataInterface;
 use Magento\Install\Test\Constraint\AssertAgreementTextPresent;
 use Magento\Install\Test\Constraint\AssertSuccessfulReadinessCheck;
-use Magento\Mtf\ObjectManagerFactory;
 
 /**
  * PLEASE ADD NECESSARY INFO BEFORE RUNNING TEST TO
  * ../dev/tests/functional/config/config.xml
  *
- * Test Flow:
- *
  * Preconditions:
  * 1. Uninstall Magento.
  *
@@ -67,20 +63,20 @@ class InstallTest extends Injectable
      */
     public function __prepare()
     {
-        $config = ObjectManagerFactory::getObjectManager()->get('Magento\Mtf\Config\DataInterface');
+        $config = $this->objectManager->get('Magento\Mtf\Config\DataInterface');
         // Prepare config data
         $configData['dbHost'] = $config->get('install/0/host/0');
         $configData['dbUser'] = $config->get('install/0/user/0');
         $configData['dbPassword'] = $config->get('install/0/password/0');
         $configData['dbName'] = $config->get('install/0/dbName/0');
-        $configData['web'] = $config->get('install/0/baseUrl/0');
+        $configData['baseUrl'] = $config->get('install/0/baseUrl/0');
         $configData['admin'] = $config->get('install/0/backendName/0');
 
         return ['configData' => $configData];
     }
 
     /**
-     * Injection data.
+     * Uninstall Magento.
      *
      * @param CmsIndex $homePage
      * @param Install $installPage
@@ -99,24 +95,24 @@ class InstallTest extends Injectable
      * Install Magento via web interface.
      *
      * @param User $user
-     * @param array $install
      * @param array $configData
      * @param FixtureFactory $fixtureFactory
      * @param AssertAgreementTextPresent $assertLicense
      * @param AssertSuccessfulReadinessCheck $assertReadiness
+     * @param array $install [optional]
      * @return array
      */
     public function test(
         User $user,
-        array $install,
         array $configData,
         FixtureFactory $fixtureFactory,
         AssertAgreementTextPresent $assertLicense,
-        AssertSuccessfulReadinessCheck $assertReadiness
+        AssertSuccessfulReadinessCheck $assertReadiness,
+        array $install = []
     ) {
         $dataConfig = array_merge($install, $configData);
-        if ($dataConfig['httpsFront'] != "-") {
-            $dataConfig['https'] = str_replace('http', 'https', $dataConfig['web']);
+        if (isset($dataConfig['httpsFront'])) {
+            $dataConfig['https'] = str_replace('http', 'https', $dataConfig['baseUrl']);
         }
         /** @var InstallConfig $installConfig */
         $installConfig = $fixtureFactory->create('Magento\Install\Test\Fixture\Install', ['data' => $dataConfig]);
diff --git a/dev/tests/functional/tests/app/Magento/Install/Test/TestCase/InstallTest.xml b/dev/tests/functional/tests/app/Magento/Install/Test/TestCase/InstallTest.xml
index a527c8538f6140ecff520b4f49e72bf3731d49ca..ff6ba2d1f1d7c44aa00109c83150752118a34b5b 100644
--- a/dev/tests/functional/tests/app/Magento/Install/Test/TestCase/InstallTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Install/Test/TestCase/InstallTest.xml
@@ -6,113 +6,59 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
-  <testCase name="Magento\Install\Test\TestCase\InstallTest">
-    <variation name="InstallTestVariation1">
-      <data name="user/dataSet" xsi:type="string">default</data>
-      <data name="install/dbTablePrefix" xsi:type="string">-</data>
-      <data name="install/admin" xsi:type="string">-</data>
-      <data name="install/httpsFront" xsi:type="string">-</data>
-      <data name="install/httpsAdmin" xsi:type="string">-</data>
-      <data name="install/apacheRewrites" xsi:type="string">-</data>
-      <data name="install/keyOwn" xsi:type="string">-</data>
-      <data name="install/keyValue" xsi:type="string">-</data>
-      <data name="install/language" xsi:type="string">-</data>
-      <data name="install/currency" xsi:type="string">-</data>
-      <data name="currencySymbol" xsi:type="string">-</data>
-      <data name="languageTemplate" xsi:type="string">-</data>
-      <data name="description" xsi:type="string">install with default values</data>
-      <constraint name="Magento\Install\Test\Constraint\AssertSuccessInstall"/>
-      <constraint name="Magento\User\Test\Constraint\AssertUserSuccessLogin"/>
-    </variation>
-    <variation name="InstallTestVariation2">
-      <data name="user/dataSet" xsi:type="string">default</data>
-      <data name="install/dbTablePrefix" xsi:type="string">-</data>
-      <data name="install/admin" xsi:type="string">custom</data>
-      <data name="install/httpsFront" xsi:type="string">-</data>
-      <data name="install/httpsAdmin" xsi:type="string">-</data>
-      <data name="install/apacheRewrites" xsi:type="string">-</data>
-      <data name="install/keyOwn" xsi:type="string">-</data>
-      <data name="install/keyValue" xsi:type="string">-</data>
-      <data name="install/language" xsi:type="string">-</data>
-      <data name="install/currency" xsi:type="string">-</data>
-      <data name="currencySymbol" xsi:type="string">-</data>
-      <data name="languageTemplate" xsi:type="string">-</data>
-      <data name="description" xsi:type="string">install with custom admin path</data>
-      <constraint name="Magento\Install\Test\Constraint\AssertSuccessInstall"/>
-      <constraint name="Magento\User\Test\Constraint\AssertUserSuccessLogin"/>
-    </variation>
-    <variation name="InstallTestVariation3">
-      <data name="user/dataSet" xsi:type="string">default</data>
-      <data name="install/dbTablePrefix" xsi:type="string">-</data>
-      <data name="install/admin" xsi:type="string">-</data>
-      <data name="install/httpsFront" xsi:type="string">-</data>
-      <data name="install/httpsAdmin" xsi:type="string">-</data>
-      <data name="install/apacheRewrites" xsi:type="string">-</data>
-      <data name="install/keyOwn" xsi:type="string">Yes</data>
-      <data name="install/keyValue" xsi:type="string">123123qa</data>
-      <data name="install/language" xsi:type="string">German (Germany)</data>
-      <data name="install/currency" xsi:type="string">Euro (EUR)</data>
-      <data name="currencySymbol" xsi:type="string">€</data>
-      <data name="languageTemplate" xsi:type="string">Suchbegriffe</data>
-      <data name="description" xsi:type="string">install with custom encryption key and changed currency and locale</data>
-      <constraint name="Magento\Install\Test\Constraint\AssertSuccessInstall"/>
-      <constraint name="Magento\Install\Test\Constraint\AssertKeyCreated"/>
-      <constraint name="Magento\User\Test\Constraint\AssertUserSuccessLogin"/>
-      <constraint name="Magento\Install\Test\Constraint\AssertCurrencySelected"/>
-      <constraint name="Magento\Install\Test\Constraint\AssertLanguageSelected"/>
-    </variation>
-    <variation name="InstallTestVariation4">
-      <data name="user/dataSet" xsi:type="string">default</data>
-      <data name="install/dbTablePrefix" xsi:type="string">prefix1_</data>
-      <data name="install/admin" xsi:type="string">-</data>
-      <data name="install/httpsFront" xsi:type="string">-</data>
-      <data name="install/httpsAdmin" xsi:type="string">-</data>
-      <data name="install/apacheRewrites" xsi:type="string">-</data>
-      <data name="install/keyOwn" xsi:type="string">-</data>
-      <data name="install/keyValue" xsi:type="string">-</data>
-      <data name="install/language" xsi:type="string">Chinese (China)</data>
-      <data name="install/currency" xsi:type="string">-</data>
-      <data name="currencySymbol" xsi:type="string">-</data>
-      <data name="languageTemplate" xsi:type="string">-</data>
-      <data name="description" xsi:type="string">install with table prefix</data>
-      <constraint name="Magento\Install\Test\Constraint\AssertSuccessInstall"/>
-      <constraint name="Magento\User\Test\Constraint\AssertUserSuccessLogin"/>
-    </variation>
-    <variation name="InstallTestVariation5">
-      <data name="user/dataSet" xsi:type="string">default</data>
-      <data name="install/dbTablePrefix" xsi:type="string">-</data>
-      <data name="install/admin" xsi:type="string">-</data>
-      <data name="install/httpsFront" xsi:type="string">-</data>
-      <data name="install/httpsAdmin" xsi:type="string">-</data>
-      <data name="install/apacheRewrites" xsi:type="string">Yes</data>
-      <data name="install/keyOwn" xsi:type="string">-</data>
-      <data name="install/keyValue" xsi:type="string">-</data>
-      <data name="install/language" xsi:type="string">-</data>
-      <data name="install/currency" xsi:type="string">-</data>
-      <data name="currencySymbol" xsi:type="string">-</data>
-      <data name="languageTemplate" xsi:type="string">-</data>
-      <data name="description" xsi:type="string">install with enabled url rewrites</data>
-      <constraint name="Magento\Install\Test\Constraint\AssertSuccessInstall"/>
-      <constraint name="Magento\User\Test\Constraint\AssertUserSuccessLogin"/>
-      <constraint name="Magento\Install\Test\Constraint\AssertRewritesEnabled"/>
-    </variation>
-    <variation name="InstallTestVariation6">
-      <data name="user/dataSet" xsi:type="string">default</data>
-      <data name="install/dbTablePrefix" xsi:type="string">-</data>
-      <data name="install/admin" xsi:type="string">-</data>
-      <data name="install/httpsFront" xsi:type="string">Yes</data>
-      <data name="install/httpsAdmin" xsi:type="string">Yes</data>
-      <data name="install/apacheRewrites" xsi:type="string">-</data>
-      <data name="install/keyOwn" xsi:type="string">-</data>
-      <data name="install/keyValue" xsi:type="string">-</data>
-      <data name="install/language" xsi:type="string">-</data>
-      <data name="install/currency" xsi:type="string">-</data>
-      <data name="currencySymbol" xsi:type="string">-</data>
-      <data name="languageTemplate" xsi:type="string">-</data>
-      <data name="description" xsi:type="string">install with enabled secure urls</data>
-      <constraint name="Magento\Install\Test\Constraint\AssertSuccessInstall"/>
-      <constraint name="Magento\User\Test\Constraint\AssertUserSuccessLogin"/>
-      <constraint name="Magento\Install\Test\Constraint\AssertSecureUrlEnabled"/>
-    </variation>
-  </testCase>
+    <testCase name="Magento\Install\Test\TestCase\InstallTest">
+        <variation name="InstallTestVariation1">
+            <data name="description" xsi:type="string">Install with default values.</data>
+            <data name="user/dataSet" xsi:type="string">default</data>
+            <constraint name="Magento\Install\Test\Constraint\AssertSuccessInstall" />
+            <constraint name="Magento\User\Test\Constraint\AssertUserSuccessLogin" />
+        </variation>
+        <variation name="InstallTestVariation2">
+            <data name="description" xsi:type="string">Install with custom admin path.</data>
+            <data name="user/dataSet" xsi:type="string">default</data>
+            <data name="install/admin" xsi:type="string">custom</data>
+            <constraint name="Magento\Install\Test\Constraint\AssertSuccessInstall" />
+            <constraint name="Magento\User\Test\Constraint\AssertUserSuccessLogin" />
+        </variation>
+        <variation name="InstallTestVariation3">
+            <data name="description" xsi:type="string">Install with custom encryption key and changed currency and locale.</data>
+            <data name="user/dataSet" xsi:type="string">default</data>
+            <data name="install/keyOwn" xsi:type="string">Yes</data>
+            <data name="install/keyValue" xsi:type="string">123123qa</data>
+            <data name="install/storeLanguage" xsi:type="string">German (Germany)</data>
+            <data name="install/storeCurrency" xsi:type="string">Euro (EUR)</data>
+            <data name="currencySymbol" xsi:type="string">€</data>
+            <data name="languageTemplate" xsi:type="string">Suchbegriffe</data>
+            <constraint name="Magento\Install\Test\Constraint\AssertSuccessInstall" />
+            <constraint name="Magento\Install\Test\Constraint\AssertKeyCreated" />
+            <constraint name="Magento\User\Test\Constraint\AssertUserSuccessLogin" />
+            <constraint name="Magento\Install\Test\Constraint\AssertCurrencySelected" />
+            <constraint name="Magento\Install\Test\Constraint\AssertLanguageSelected" />
+        </variation>
+        <variation name="InstallTestVariation4">
+            <data name="description" xsi:type="string">Install with table prefix.</data>
+            <data name="user/dataSet" xsi:type="string">default</data>
+            <data name="install/dbTablePrefix" xsi:type="string">prefix1_</data>
+            <data name="install/storeLanguage" xsi:type="string">Chinese (China)</data>
+            <constraint name="Magento\Install\Test\Constraint\AssertSuccessInstall" />
+            <constraint name="Magento\User\Test\Constraint\AssertUserSuccessLogin" />
+        </variation>
+        <variation name="InstallTestVariation5">
+            <data name="description" xsi:type="string">Install with enabled url rewrites.</data>
+            <data name="user/dataSet" xsi:type="string">default</data>
+            <data name="install/apacheRewrites" xsi:type="string">Yes</data>
+            <constraint name="Magento\Install\Test\Constraint\AssertSuccessInstall" />
+            <constraint name="Magento\User\Test\Constraint\AssertUserSuccessLogin" />
+            <constraint name="Magento\Install\Test\Constraint\AssertRewritesEnabled" />
+        </variation>
+        <variation name="InstallTestVariation6">
+            <data name="description" xsi:type="string">Install with enabled secure urls.</data>
+            <data name="user/dataSet" xsi:type="string">default</data>
+            <data name="install/httpsFront" xsi:type="string">Yes</data>
+            <data name="install/httpsAdmin" xsi:type="string">Yes</data>
+            <constraint name="Magento\Install\Test\Constraint\AssertSuccessInstall" />
+            <constraint name="Magento\User\Test\Constraint\AssertUserSuccessLogin" />
+            <constraint name="Magento\Install\Test\Constraint\AssertSecureUrlEnabled" />
+        </variation>
+    </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Newsletter/Test/Page/Adminhtml/TemplateEdit.xml b/dev/tests/functional/tests/app/Magento/Newsletter/Test/Page/Adminhtml/TemplateEdit.xml
index c17dbfb6ada9f96177f87d9d17223643041df640..56ee9f7302d96e787e64d4e0cf408d768f65cfab 100644
--- a/dev/tests/functional/tests/app/Magento/Newsletter/Test/Page/Adminhtml/TemplateEdit.xml
+++ b/dev/tests/functional/tests/app/Magento/Newsletter/Test/Page/Adminhtml/TemplateEdit.xml
@@ -6,9 +6,9 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../vendor/magento/mtf/etc/pages.xsd">
-  <page name="TemplateEdit" area="Adminhtml" mca="newsletter/template/edit" module="Magento_Newsletter">
-    <block name="formPageActions" class="Magento\Newsletter\Test\Block\Adminhtml\Template\FormPageActions" locator=".page-main-actions" strategy="css selector"/>
-    <block name="editForm" class="Magento\Backend\Test\Block\Widget\Form" locator="[id='page:main-container']" strategy="css selector"/>
-    <block name="messagesBlock" class="Magento\Backend\Test\Block\Messages" locator="#messages" strategy="css selector"/>
-  </page>
+    <page name="TemplateEdit" area="Adminhtml" mca="newsletter/template/edit" module="Magento_Newsletter">
+        <block name="formPageActions" class="Magento\Newsletter\Test\Block\Adminhtml\Template\FormPageActions" locator=".page-main-actions" strategy="css selector" />
+        <block name="editForm" class="Magento\Mtf\Block\Form" locator="[id='page:main-container']" strategy="css selector" />
+        <block name="messagesBlock" class="Magento\Backend\Test\Block\Messages" locator="#messages" strategy="css selector" />
+    </page>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Newsletter/Test/Page/Adminhtml/TemplateNewIndex.xml b/dev/tests/functional/tests/app/Magento/Newsletter/Test/Page/Adminhtml/TemplateNewIndex.xml
index 968920909e50d99c93a0f21dcc54c7f645a07ddf..b2744b0902e2c80329f8a345cbf953555ca6554c 100644
--- a/dev/tests/functional/tests/app/Magento/Newsletter/Test/Page/Adminhtml/TemplateNewIndex.xml
+++ b/dev/tests/functional/tests/app/Magento/Newsletter/Test/Page/Adminhtml/TemplateNewIndex.xml
@@ -6,9 +6,9 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../vendor/magento/mtf/etc/pages.xsd">
-  <page name="TemplateNewIndex" area="Adminhtml" mca="newsletter/template/new/index" module="Magento_Newsletter">
-    <block name="formPageActions" class="Magento\Newsletter\Test\Block\Adminhtml\Template\FormPageActions" locator=".page-main-actions" strategy="css selector"/>
-    <block name="editForm" class="Magento\Backend\Test\Block\Widget\Form" locator="[id='page:main-container']" strategy="css selector"/>
-    <block name="messagesBlock" class="Magento\Backend\Test\Block\Messages" locator="#messages" strategy="css selector"/>
-  </page>
+    <page name="TemplateNewIndex" area="Adminhtml" mca="newsletter/template/new/index" module="Magento_Newsletter">
+        <block name="formPageActions" class="Magento\Newsletter\Test\Block\Adminhtml\Template\FormPageActions" locator=".page-main-actions" strategy="css selector" />
+        <block name="editForm" class="Magento\Mtf\Block\Form" locator="[id='page:main-container']" strategy="css selector" />
+        <block name="messagesBlock" class="Magento\Backend\Test\Block\Messages" locator="#messages" strategy="css selector" />
+    </page>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Newsletter/Test/Page/Adminhtml/TemplateQueue.xml b/dev/tests/functional/tests/app/Magento/Newsletter/Test/Page/Adminhtml/TemplateQueue.xml
index 8e17bfc6814b8ab37822b55279cb9dbffaaba742..c4840bceae2123bf11213311c8756b1707b48ba7 100644
--- a/dev/tests/functional/tests/app/Magento/Newsletter/Test/Page/Adminhtml/TemplateQueue.xml
+++ b/dev/tests/functional/tests/app/Magento/Newsletter/Test/Page/Adminhtml/TemplateQueue.xml
@@ -6,9 +6,9 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../vendor/magento/mtf/etc/pages.xsd">
-  <page name="TemplateQueue" area="Adminhtml" mca="newsletter/queue/edit" module="Magento_Newsletter">
-    <block name="formPageActions" class="Magento\Newsletter\Test\Block\Adminhtml\Template\FormPageActions" locator=".page-main-actions" strategy="css selector"/>
-    <block name="editForm" class="Magento\Backend\Test\Block\Widget\Form" locator="#queue_edit_form" strategy="css selector"/>
-    <block name="messagesBlock" class="Magento\Backend\Test\Block\Messages" locator="#messages" strategy="css selector"/>
-  </page>
+    <page name="TemplateQueue" area="Adminhtml" mca="newsletter/queue/edit" module="Magento_Newsletter">
+        <block name="formPageActions" class="Magento\Newsletter\Test\Block\Adminhtml\Template\FormPageActions" locator=".page-main-actions" strategy="css selector" />
+        <block name="editForm" class="Magento\Mtf\Block\Form" locator="#queue_edit_form" strategy="css selector" />
+        <block name="messagesBlock" class="Magento\Backend\Test\Block\Messages" locator="#messages" strategy="css selector" />
+    </page>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Reports/Test/TestCase/CustomerReviewReportEntityTest.xml b/dev/tests/functional/tests/app/Magento/Reports/Test/TestCase/CustomerReviewReportEntityTest.xml
index e996602cc41fc49ed5c141addcfd07d71325b91f..26430b8ea9c7233e8734019c057493a2435bbbf3 100644
--- a/dev/tests/functional/tests/app/Magento/Reports/Test/TestCase/CustomerReviewReportEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Reports/Test/TestCase/CustomerReviewReportEntityTest.xml
@@ -6,36 +6,38 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
-  <testCase name="Magento\Reports\Test\TestCase\CustomerReviewReportEntityTest">
-    <variation name="CustomerReviewReportEntityTestVariation1">
-      <data name="customerLogin" xsi:type="string">Yes</data>
-      <data name="product/dataSet" xsi:type="string">default</data>
-      <data name="review/data/nickname" xsi:type="string">name_upd_%isolation%</data>
-      <data name="review/data/title" xsi:type="string">title_upd_%isolation%</data>
-      <data name="review/data/detail" xsi:type="string">review_upd_%isolation%</data>
-      <data name="reviewsCount" xsi:type="string">1</data>
-      <constraint name="Magento\Reports\Test\Constraint\AssertProductReviewsQtyByCustomer"/>
-      <constraint name="Magento\Reports\Test\Constraint\AssertProductReportByCustomerInGrid"/>
-    </variation>
-    <variation name="CustomerReviewReportEntityTestVariation2">
-      <data name="customerLogin" xsi:type="string">Yes</data>
-      <data name="product/dataSet" xsi:type="string">default</data>
-      <data name="review/data/nickname" xsi:type="string">name_upd_%isolation%</data>
-      <data name="review/data/title" xsi:type="string">title_upd_%isolation%</data>
-      <data name="review/data/detail" xsi:type="string">review_upd_%isolation%</data>
-      <data name="reviewsCount" xsi:type="string">2</data>
-      <constraint name="Magento\Reports\Test\Constraint\AssertProductReviewsQtyByCustomer"/>
-      <constraint name="Magento\Reports\Test\Constraint\AssertProductReportByCustomerInGrid"/>
-    </variation>
-    <variation name="CustomerReviewReportEntityTestVariation3">
-      <data name="customerLogin" xsi:type="string">No</data>
-      <data name="product/dataSet" xsi:type="string">default</data>
-      <data name="review/data/nickname" xsi:type="string">name_upd_%isolation%</data>
-      <data name="review/data/title" xsi:type="string">title_upd_%isolation%</data>
-      <data name="review/data/detail" xsi:type="string">review_upd_%isolation%</data>
-      <data name="reviewsCount" xsi:type="string">2</data>
-      <constraint name="Magento\Reports\Test\Constraint\AssertProductReviewsQtyByCustomer"/>
-      <constraint name="Magento\Reports\Test\Constraint\AssertProductReportByCustomerNotInGrid"/>
-    </variation>
-  </testCase>
+    <testCase name="Magento\Reports\Test\TestCase\CustomerReviewReportEntityTest">
+        <variation name="CustomerReviewReportEntityTestVariation1">
+            <data name="customerLogin" xsi:type="string">Yes</data>
+            <data name="product/dataSet" xsi:type="string">default</data>
+            <data name="review/data/type" xsi:type="string">Customer</data>
+            <data name="review/data/nickname" xsi:type="string">name_upd_%isolation%</data>
+            <data name="review/data/title" xsi:type="string">title_upd_%isolation%</data>
+            <data name="review/data/detail" xsi:type="string">review_upd_%isolation%</data>
+            <data name="reviewsCount" xsi:type="string">1</data>
+            <constraint name="Magento\Reports\Test\Constraint\AssertProductReviewsQtyByCustomer" />
+            <constraint name="Magento\Reports\Test\Constraint\AssertProductReportByCustomerInGrid" />
+        </variation>
+        <variation name="CustomerReviewReportEntityTestVariation2">
+            <data name="customerLogin" xsi:type="string">Yes</data>
+            <data name="product/dataSet" xsi:type="string">default</data>
+            <data name="review/data/type" xsi:type="string">Customer</data>
+            <data name="review/data/nickname" xsi:type="string">name_upd_%isolation%</data>
+            <data name="review/data/title" xsi:type="string">title_upd_%isolation%</data>
+            <data name="review/data/detail" xsi:type="string">review_upd_%isolation%</data>
+            <data name="reviewsCount" xsi:type="string">2</data>
+            <constraint name="Magento\Reports\Test\Constraint\AssertProductReviewsQtyByCustomer" />
+            <constraint name="Magento\Reports\Test\Constraint\AssertProductReportByCustomerInGrid" />
+        </variation>
+        <variation name="CustomerReviewReportEntityTestVariation3">
+            <data name="customerLogin" xsi:type="string">No</data>
+            <data name="product/dataSet" xsi:type="string">default</data>
+            <data name="review/data/nickname" xsi:type="string">name_upd_%isolation%</data>
+            <data name="review/data/title" xsi:type="string">title_upd_%isolation%</data>
+            <data name="review/data/detail" xsi:type="string">review_upd_%isolation%</data>
+            <data name="reviewsCount" xsi:type="string">2</data>
+            <constraint name="Magento\Reports\Test\Constraint\AssertProductReviewsQtyByCustomer" />
+            <constraint name="Magento\Reports\Test\Constraint\AssertProductReportByCustomerNotInGrid" />
+        </variation>
+    </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Review/Test/Block/Adminhtml/ReviewForm.php b/dev/tests/functional/tests/app/Magento/Review/Test/Block/Adminhtml/ReviewForm.php
index a9499d608da3f1844151c1b9c81a70f4dcbf9c9a..c3ad0a3ef2d2f631d160e7da69b7de4629296d9f 100755
--- a/dev/tests/functional/tests/app/Magento/Review/Test/Block/Adminhtml/ReviewForm.php
+++ b/dev/tests/functional/tests/app/Magento/Review/Test/Block/Adminhtml/ReviewForm.php
@@ -6,38 +6,58 @@
 
 namespace Magento\Review\Test\Block\Adminhtml;
 
-use Magento\Backend\Test\Block\Widget\Form;
+use Magento\Mtf\Block\Form;
 use Magento\Mtf\Client\Locator;
+use Magento\Mtf\Fixture\FixtureInterface;
+use Magento\Mtf\Client\Element\SimpleElement;
 
 /**
- * Class Edit
- * Review edit form
+ * Review edit form.
  */
 class ReviewForm extends Form
 {
     /**
-     * Posted by field
+     * Posted by field.
      *
      * @var string
      */
     protected $customer = '#customer';
 
     /**
-     * Rating status
+     * Rating status.
      *
      * @var string
      */
     protected $status = '[name=status_id]';
 
     /**
-     * 'Save Review' button
+     * 'Save Review' button.
      *
      * @var string
      */
     protected $saveButton = '[data-ui-id$=save-button-button]';
 
     /**
-     * Get data from 'Posted By' field
+     * Fill the review form.
+     *
+     * @param FixtureInterface $fixture
+     * @param SimpleElement|null $element
+     * @return $this
+     */
+    public function fill(FixtureInterface $fixture, SimpleElement $element = null)
+    {
+        $data = $fixture->getData();
+        if (isset($data['entity_id'])) {
+            unset($data['entity_id']);
+        }
+        $mapping = $this->dataMapping($data);
+        $this->_fill($mapping, $element);
+
+        return $this;
+    }
+
+    /**
+     * Get data from 'Posted By' field.
      *
      * @return string
      */
@@ -47,7 +67,7 @@ class ReviewForm extends Form
     }
 
     /**
-     * Get data from Status field
+     * Get data from Status field.
      *
      * @return string
      */
@@ -57,7 +77,7 @@ class ReviewForm extends Form
     }
 
     /**
-     * Set approve review
+     * Set approve review.
      *
      * @return void
      */
diff --git a/dev/tests/functional/tests/app/Magento/Review/Test/Constraint/AssertProductReviewForm.php b/dev/tests/functional/tests/app/Magento/Review/Test/Constraint/AssertProductReviewForm.php
index eb6cb92c40c0f270b3fab671135d6f00bcc364a2..edf5cb90995549c5ddd0537fbf335002d8304fc3 100644
--- a/dev/tests/functional/tests/app/Magento/Review/Test/Constraint/AssertProductReviewForm.php
+++ b/dev/tests/functional/tests/app/Magento/Review/Test/Constraint/AssertProductReviewForm.php
@@ -48,8 +48,8 @@ class AssertProductReviewForm extends AbstractAssertForm
 
         $fixtureData = $review->getData();
         $formData = $reviewEdit->getReviewForm()->getData();
-        if (isset($fixtureData['customer'])) {
-            $formData['customer'] = $reviewEdit->getReviewForm()->getPostedBy();
+        if (isset($fixtureData['type'])) {
+            $formData['type'] = $reviewEdit->getReviewForm()->getPostedBy();
         }
 
         $error = $this->verifyData($fixtureData, $formData);
diff --git a/dev/tests/functional/tests/app/Magento/Review/Test/Constraint/AssertProductReviewInGrid.php b/dev/tests/functional/tests/app/Magento/Review/Test/Constraint/AssertProductReviewInGrid.php
index b448f3ac837a261457216b46465dc4ce9e719ec6..93e28f758b9eb2408328058ca50d4d93a585b18d 100755
--- a/dev/tests/functional/tests/app/Magento/Review/Test/Constraint/AssertProductReviewInGrid.php
+++ b/dev/tests/functional/tests/app/Magento/Review/Test/Constraint/AssertProductReviewInGrid.php
@@ -12,13 +12,12 @@ use Magento\Mtf\Constraint\AbstractConstraint;
 use Magento\Mtf\Fixture\FixtureInterface;
 
 /**
- * Class AssertProductReviewInGrid
- * Check that review is displayed in grid
+ * Check that review is displayed in grid.
  */
 class AssertProductReviewInGrid extends AbstractConstraint
 {
     /**
-     * Filter params
+     * Filter params.
      *
      * @var array
      */
@@ -35,10 +34,10 @@ class AssertProductReviewInGrid extends AbstractConstraint
     ];
 
     /**
-     * Assert that review is displayed in grid
+     * Assert that review is displayed in grid.
      *
      * @param ReviewIndex $reviewIndex
-     * @param Review $review ,
+     * @param Review $review
      * @param FixtureInterface $product
      * @param string $gridStatus
      * @return void
@@ -61,7 +60,7 @@ class AssertProductReviewInGrid extends AbstractConstraint
     }
 
     /**
-     * Prepare filter for assert
+     * Prepare filter for assert.
      *
      * @param FixtureInterface $product
      * @param array $review
@@ -89,6 +88,9 @@ class AssertProductReviewInGrid extends AbstractConstraint
                 case 'status_id':
                     $value = $gridStatus != '' ? $gridStatus : (isset($review[$param]) ? $review[$param] : null);
                     break;
+                case 'type':
+                    $value = isset($review[$param]) ? $review[$param] : 'Administrator';
+                    break;
                 default:
                     $value = isset($review[$param]) ? $review[$param] : null;
                     break;
@@ -101,7 +103,7 @@ class AssertProductReviewInGrid extends AbstractConstraint
     }
 
     /**
-     * Text success exist review in grid on product reviews tab
+     * Text success exist review in grid on product reviews tab.
      *
      * @return string
      */
diff --git a/dev/tests/functional/tests/app/Magento/Review/Test/TestCase/CreateProductReviewBackendEntityTest.xml b/dev/tests/functional/tests/app/Magento/Review/Test/TestCase/CreateProductReviewBackendEntityTest.xml
index bf97a39b60e0ab692798889c9c0d22d36a1fbd27..ee97d7bb2149563e0583afbb7328d09cf1189a3b 100644
--- a/dev/tests/functional/tests/app/Magento/Review/Test/TestCase/CreateProductReviewBackendEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Review/Test/TestCase/CreateProductReviewBackendEntityTest.xml
@@ -6,48 +6,45 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
-  <testCase name="Magento\Review\Test\TestCase\CreateProductReviewBackendEntityTest">
-    <variation name="CreateProductReviewBackendEntityTestVariation1">
-      <data name="review/data/type" xsi:type="string">Administrator</data>
-      <data name="review/data/entity_id/dataSet" xsi:type="string">catalogProductSimple::default</data>
-      <data name="review/data/status_id" xsi:type="string">Approved</data>
-      <data name="review/data/select_stores/0" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
-      <data name="review/data/ratings/rating_0/dataSet" xsi:type="string">visibleOnDefaultWebsite</data>
-      <data name="review/data/ratings/rating_0/rating" xsi:type="string">3</data>
-      <data name="review/data/nickname" xsi:type="string">John</data>
-      <data name="review/data/title" xsi:type="string">title %isolation%</data>
-      <data name="review/data/detail" xsi:type="string">review detail %isolation%</data>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductReviewBackendSuccessSaveMessage"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductReviewInGrid"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductRatingInProductPage"/>
-    </variation>
-    <variation name="CreateProductReviewBackendEntityTestVariation2">
-      <data name="review/data/type" xsi:type="string">Administrator</data>
-      <data name="review/data/entity_id/dataSet" xsi:type="string">catalogProductSimple::default</data>
-      <data name="review/data/status_id" xsi:type="string">Pending</data>
-      <data name="review/data/select_stores/0" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
-      <data name="review/data/ratings/rating_0/dataSet" xsi:type="string">visibleOnDefaultWebsite</data>
-      <data name="review/data/ratings/rating_0/rating" xsi:type="string">4</data>
-      <data name="review/data/nickname" xsi:type="string">Britney</data>
-      <data name="review/data/title" xsi:type="string">title %isolation%</data>
-      <data name="review/data/detail" xsi:type="string">review detail %isolation%</data>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductReviewBackendSuccessSaveMessage"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductReviewInGrid"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductRatingInProductPage"/>
-    </variation>
-    <variation name="CreateProductReviewBackendEntityTestVariation3">
-      <data name="review/data/type" xsi:type="string">Administrator</data>
-      <data name="review/data/entity_id/dataSet" xsi:type="string">catalogProductSimple::default</data>
-      <data name="review/data/status_id" xsi:type="string">Not Approved</data>
-      <data name="review/data/select_stores/0" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
-      <data name="review/data/ratings/rating_0/dataSet" xsi:type="string">visibleOnDefaultWebsite</data>
-      <data name="review/data/ratings/rating_0/rating" xsi:type="string">5</data>
-      <data name="review/data/nickname" xsi:type="string">Michael</data>
-      <data name="review/data/title" xsi:type="string">title %isolation%</data>
-      <data name="review/data/detail" xsi:type="string">review detail %isolation%</data>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductReviewBackendSuccessSaveMessage"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductReviewInGrid"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductRatingInProductPage"/>
-    </variation>
-  </testCase>
+    <testCase name="Magento\Review\Test\TestCase\CreateProductReviewBackendEntityTest">
+        <variation name="CreateProductReviewBackendEntityTestVariation1">
+            <data name="review/data/entity_id/dataSet" xsi:type="string">catalogProductSimple::default</data>
+            <data name="review/data/status_id" xsi:type="string">Approved</data>
+            <data name="review/data/select_stores/0" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
+            <data name="review/data/ratings/rating_0/dataSet" xsi:type="string">visibleOnDefaultWebsite</data>
+            <data name="review/data/ratings/rating_0/rating" xsi:type="string">3</data>
+            <data name="review/data/nickname" xsi:type="string">John</data>
+            <data name="review/data/title" xsi:type="string">title %isolation%</data>
+            <data name="review/data/detail" xsi:type="string">review detail %isolation%</data>
+            <constraint name="Magento\Review\Test\Constraint\AssertProductReviewBackendSuccessSaveMessage" />
+            <constraint name="Magento\Review\Test\Constraint\AssertProductReviewInGrid" />
+            <constraint name="Magento\Review\Test\Constraint\AssertProductRatingInProductPage" />
+        </variation>
+        <variation name="CreateProductReviewBackendEntityTestVariation2">
+            <data name="review/data/entity_id/dataSet" xsi:type="string">catalogProductSimple::default</data>
+            <data name="review/data/status_id" xsi:type="string">Pending</data>
+            <data name="review/data/select_stores/0" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
+            <data name="review/data/ratings/rating_0/dataSet" xsi:type="string">visibleOnDefaultWebsite</data>
+            <data name="review/data/ratings/rating_0/rating" xsi:type="string">4</data>
+            <data name="review/data/nickname" xsi:type="string">Britney</data>
+            <data name="review/data/title" xsi:type="string">title %isolation%</data>
+            <data name="review/data/detail" xsi:type="string">review detail %isolation%</data>
+            <constraint name="Magento\Review\Test\Constraint\AssertProductReviewBackendSuccessSaveMessage" />
+            <constraint name="Magento\Review\Test\Constraint\AssertProductReviewInGrid" />
+            <constraint name="Magento\Review\Test\Constraint\AssertProductRatingInProductPage" />
+        </variation>
+        <variation name="CreateProductReviewBackendEntityTestVariation3">
+            <data name="review/data/entity_id/dataSet" xsi:type="string">catalogProductSimple::default</data>
+            <data name="review/data/status_id" xsi:type="string">Not Approved</data>
+            <data name="review/data/select_stores/0" xsi:type="string">Main Website/Main Website Store/Default Store View</data>
+            <data name="review/data/ratings/rating_0/dataSet" xsi:type="string">visibleOnDefaultWebsite</data>
+            <data name="review/data/ratings/rating_0/rating" xsi:type="string">5</data>
+            <data name="review/data/nickname" xsi:type="string">Michael</data>
+            <data name="review/data/title" xsi:type="string">title %isolation%</data>
+            <data name="review/data/detail" xsi:type="string">review detail %isolation%</data>
+            <constraint name="Magento\Review\Test\Constraint\AssertProductReviewBackendSuccessSaveMessage" />
+            <constraint name="Magento\Review\Test\Constraint\AssertProductReviewInGrid" />
+            <constraint name="Magento\Review\Test\Constraint\AssertProductRatingInProductPage" />
+        </variation>
+    </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Review/Test/TestCase/CreateProductReviewFrontendEntityTest.xml b/dev/tests/functional/tests/app/Magento/Review/Test/TestCase/CreateProductReviewFrontendEntityTest.xml
index 747044f00e030859b162598332c766a74b5c283c..ee9096bce936c26452574d0d8362293f90933c68 100644
--- a/dev/tests/functional/tests/app/Magento/Review/Test/TestCase/CreateProductReviewFrontendEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Review/Test/TestCase/CreateProductReviewFrontendEntityTest.xml
@@ -6,37 +6,35 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
-  <testCase name="Magento\Review\Test\TestCase\CreateProductReviewFrontendEntityTest">
-    <variation name="CreateProductReviewFrontendEntityTestVariation1">
-      <data name="description" xsi:type="string">Create product review with rating</data>
-      <data name="review/data/customer" xsi:type="string">-</data>
-      <data name="review/data/nickname" xsi:type="string">name_%isolation%</data>
-      <data name="review/data/title" xsi:type="string">title_%isolation%</data>
-      <data name="review/data/detail" xsi:type="string">review_%isolation%</data>
-      <data name="review/data/ratings/1/dataSet" xsi:type="string">visibleOnDefaultWebsite</data>
-      <data name="review/data/ratings/1/rating" xsi:type="string">4</data>
-      <data name="review/data/entity_id/dataSet" xsi:type="string">catalogProductSimple::default</data>
-      <constraint name="Magento\Review\Test\Constraint\AssertReviewCreationSuccessMessage"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductReviewInGrid"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductRatingOnReviewPage"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductRatingInProductPage"/>
-    </variation>
-    <variation name="CreateProductReviewFrontendEntityTestVariation2">
-      <data name="description" xsi:type="string">MAGETWO-12403 - Add Product Review from Customer's Prospective</data>
-      <data name="review/data/customer" xsi:type="string">Guest</data>
-      <data name="review/data/nickname" xsi:type="string">name_%isolation%</data>
-      <data name="review/data/title" xsi:type="string">title_%isolation%</data>
-      <data name="review/data/detail" xsi:type="string">review_%isolation%</data>
-      <data name="review/data/ratings/1/dataSet" xsi:type="string">-</data>
-      <data name="review/data/ratings/1/rating" xsi:type="string">-</data>
-      <data name="review/data/entity_id/dataSet" xsi:type="string">catalogProductSimple::default</data>
-      <data name="tag" xsi:type="string">test_type:acceptance_test</data>
-      <constraint name="Magento\Review\Test\Constraint\AssertReviewCreationSuccessMessage"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductReviewIsAbsentOnProductPage"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductReviewForm"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertSetApprovedProductReview"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertReviewLinksIsPresentOnProductPage"/>
-      <constraint name="Magento\Review\Test\Constraint\AssertProductReviewOnProductPage"/>
-    </variation>
-  </testCase>
+    <testCase name="Magento\Review\Test\TestCase\CreateProductReviewFrontendEntityTest">
+        <variation name="CreateProductReviewFrontendEntityTestVariation1">
+            <data name="description" xsi:type="string">Create product review with rating</data>
+            <data name="review/data/type" xsi:type="string">Guest</data>
+            <data name="review/data/nickname" xsi:type="string">name_%isolation%</data>
+            <data name="review/data/title" xsi:type="string">title_%isolation%</data>
+            <data name="review/data/detail" xsi:type="string">review_%isolation%</data>
+            <data name="review/data/ratings/1/dataSet" xsi:type="string">visibleOnDefaultWebsite</data>
+            <data name="review/data/ratings/1/rating" xsi:type="string">4</data>
+            <data name="review/data/entity_id/dataSet" xsi:type="string">catalogProductSimple::default</data>
+            <constraint name="Magento\Review\Test\Constraint\AssertReviewCreationSuccessMessage" />
+            <constraint name="Magento\Review\Test\Constraint\AssertProductReviewInGrid" />
+            <constraint name="Magento\Review\Test\Constraint\AssertProductRatingOnReviewPage" />
+            <constraint name="Magento\Review\Test\Constraint\AssertProductRatingInProductPage" />
+        </variation>
+        <variation name="CreateProductReviewFrontendEntityTestVariation2">
+            <data name="description" xsi:type="string">MAGETWO-12403 - Add Product Review from Customer's Prospective</data>
+            <data name="review/data/type" xsi:type="string">Guest</data>
+            <data name="review/data/nickname" xsi:type="string">name_%isolation%</data>
+            <data name="review/data/title" xsi:type="string">title_%isolation%</data>
+            <data name="review/data/detail" xsi:type="string">review_%isolation%</data>
+            <data name="review/data/entity_id/dataSet" xsi:type="string">catalogProductSimple::default</data>
+            <data name="tag" xsi:type="string">test_type:acceptance_test</data>
+            <constraint name="Magento\Review\Test\Constraint\AssertReviewCreationSuccessMessage" />
+            <constraint name="Magento\Review\Test\Constraint\AssertProductReviewIsAbsentOnProductPage" />
+            <constraint name="Magento\Review\Test\Constraint\AssertProductReviewForm" />
+            <constraint name="Magento\Review\Test\Constraint\AssertSetApprovedProductReview" />
+            <constraint name="Magento\Review\Test\Constraint\AssertReviewLinksIsPresentOnProductPage" />
+            <constraint name="Magento\Review\Test\Constraint\AssertProductReviewOnProductPage" />
+        </variation>
+    </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Billing/Address.xml b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Billing/Address.xml
index 369d359cf8a55a41421c7228d0b91c6a924e7ac6..2439e6aeac763956de84b836bf817642a915135b 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Billing/Address.xml
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Billing/Address.xml
@@ -23,8 +23,5 @@
         </region_id>
         <postcode />
         <telephone />
-        <save_in_address_book>
-            <input>checkbox</input>
-        </save_in_address_book>
     </fields>
 </mapping>
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Coupons.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Coupons.php
index 0a350725839b9e8833b90dda8003c051b0c7293c..14ec5f4336b64d6429c6c04caa8bf5501666ac09 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Coupons.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Coupons.php
@@ -6,7 +6,7 @@
 
 namespace Magento\Sales\Test\Block\Adminhtml\Order\Create;
 
-use Magento\Backend\Test\Block\Widget\Form;
+use Magento\Mtf\Block\Form;
 use Magento\SalesRule\Test\Fixture\SalesRule;
 use Magento\Mtf\Client\Locator;
 
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Form/Account.xml b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Form/Account.xml
index 768fef18f37797e49cb835efa48e80e45b746f6a..ece7a7be14cf2e6234031368e4bb83310b869e49 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Form/Account.xml
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Form/Account.xml
@@ -5,12 +5,12 @@
  * See COPYING.txt for license details.
  */
 -->
-<mapping strict="0">
+<mapping strict="1">
     <wrapper>order[account]</wrapper>
     <fields>
-        <group>
+        <group_id>
             <input>select</input>>
-        </group>
+        </group_id>
         <email />
     </fields>
 </mapping>
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Items/ItemProduct.php b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Items/ItemProduct.php
index 03ec6f8187c16a1a697a93f64e6a8d861a0130fe..efcf05d2a42144b7ed72c3b2e0a9b0fd5243d911 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Items/ItemProduct.php
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Block/Adminhtml/Order/Create/Items/ItemProduct.php
@@ -8,6 +8,8 @@ namespace Magento\Sales\Test\Block\Adminhtml\Order\Create\Items;
 
 use Magento\Mtf\Block\Form;
 use Magento\Mtf\Client\Locator;
+use Magento\Mtf\Fixture\FixtureInterface;
+use Magento\Mtf\Client\Element\SimpleElement;
 
 /**
  * Class ItemProduct
@@ -76,6 +78,28 @@ class ItemProduct extends Form
         return $result;
     }
 
+    /**
+     * Fill the root form.
+     *
+     * @param FixtureInterface $fixture
+     * @param SimpleElement|null $element
+     * @return $this
+     */
+    public function fill(FixtureInterface $fixture, SimpleElement $element = null)
+    {
+        $data = $fixture->getData();
+        if (isset($data['cartItem'])) {
+            unset($data['cartItem']);
+        }
+        if (isset($data['options'])) {
+            unset($data['options']);
+        }
+        $mapping = $this->dataMapping($data);
+        $this->_fill($mapping, $element);
+
+        return $this;
+    }
+
     /**
      * Click Configure button.
      *
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Page/Adminhtml/OrderStatusEdit.xml b/dev/tests/functional/tests/app/Magento/Sales/Test/Page/Adminhtml/OrderStatusEdit.xml
index c1d712de6a2d0f33e4545ce3a3983a101dd96e11..298289698a18295d355e73f5f66f515e040b2620 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Page/Adminhtml/OrderStatusEdit.xml
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Page/Adminhtml/OrderStatusEdit.xml
@@ -6,9 +6,9 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../vendor/magento/mtf/etc/pages.xsd">
-  <page name="OrderStatusEdit" area="Adminhtml" mca="sales/order_status/edit" module="Magento_Sales">
-    <block name="formPageActions" class="Magento\Backend\Test\Block\FormPageActions" locator=".page-main-actions" strategy="css selector"/>
-    <block name="orderStatusForm" class="Magento\Backend\Test\Block\Widget\Form" locator="#edit_form" strategy="css selector"/>
-    <block name="messagesBlock" class="Magento\Backend\Test\Block\Messages" locator="#messages" strategy="css selector"/>
-  </page>
+    <page name="OrderStatusEdit" area="Adminhtml" mca="sales/order_status/edit" module="Magento_Sales">
+        <block name="formPageActions" class="Magento\Backend\Test\Block\FormPageActions" locator=".page-main-actions" strategy="css selector" />
+        <block name="orderStatusForm" class="Magento\Mtf\Block\Form" locator="#edit_form" strategy="css selector" />
+        <block name="messagesBlock" class="Magento\Backend\Test\Block\Messages" locator="#messages" strategy="css selector" />
+    </page>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/Page/Adminhtml/OrderStatusNew.xml b/dev/tests/functional/tests/app/Magento/Sales/Test/Page/Adminhtml/OrderStatusNew.xml
index 856880560d3ed1eaa69d6746666788ce166ce286..0457f3a4b1899a46bd3b850b7c6349733cd3d515 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/Page/Adminhtml/OrderStatusNew.xml
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/Page/Adminhtml/OrderStatusNew.xml
@@ -6,9 +6,9 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../vendor/magento/mtf/etc/pages.xsd">
-  <page name="OrderStatusNew" area="Adminhtml" mca="sales/order_status/new" module="Magento_Sales">
-    <block name="formPageActions" class="Magento\Backend\Test\Block\FormPageActions" locator=".page-main-actions" strategy="css selector"/>
-    <block name="orderStatusForm" class="Magento\Backend\Test\Block\Widget\Form" locator="#edit_form" strategy="css selector"/>
-    <block name="messagesBlock" class="Magento\Backend\Test\Block\Messages" locator="#messages" strategy="css selector"/>
-  </page>
+    <page name="OrderStatusNew" area="Adminhtml" mca="sales/order_status/new" module="Magento_Sales">
+        <block name="formPageActions" class="Magento\Backend\Test\Block\FormPageActions" locator=".page-main-actions" strategy="css selector" />
+        <block name="orderStatusForm" class="Magento\Mtf\Block\Form" locator="#edit_form" strategy="css selector" />
+        <block name="messagesBlock" class="Magento\Backend\Test\Block\Messages" locator="#messages" strategy="css selector" />
+    </page>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/CreateOrderBackendTest.xml b/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/CreateOrderBackendTest.xml
index 6371ae09b9981d48b42be0a1e9fd1c54897e91cd..ce5a4f0d95671ebaf4caf9ff4a8984b6c0853b57 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/CreateOrderBackendTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/CreateOrderBackendTest.xml
@@ -10,8 +10,8 @@
         <variation name="CreateOrderBackendTestVariation1">
             <data name="description" xsi:type="string">Create order with simple product for registered US customer using Fixed shipping method and Cash on Delivery payment method</data>
             <data name="products" xsi:type="string">catalogProductSimple::default</data>
-            <data name="customer/dataSet" xsi:type="string">customer_US</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_US</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
+            <data name="billingAddress/dataSet" xsi:type="string">US_address_1_without_email</data>
             <data name="saveAddress" xsi:type="string">No</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
             <data name="shipping/shipping_method" xsi:type="string">Fixed</data>
@@ -31,8 +31,8 @@
         <variation name="CreateOrderBackendTestVariation2">
             <data name="description" xsi:type="string">Create order with virtual product for registered UK customer using Check/Money Order payment method</data>
             <data name="products" xsi:type="string">catalogProductVirtual::default</data>
-            <data name="customer/dataSet" xsi:type="string">customer_UK</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_UK</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
+            <data name="billingAddress/dataSet" xsi:type="string">UK_address_without_email</data>
             <data name="prices" xsi:type="array">
                 <item name="grandTotal" xsi:type="string">10.00</item>
             </data>
@@ -49,8 +49,8 @@
         <variation name="CreateOrderBackendTestVariation3">
             <data name="description" xsi:type="string">Create order with simple product for registered US customer using Fixed shipping method and Bank Transfer payment method</data>
             <data name="products" xsi:type="string">catalogProductSimple::default</data>
-            <data name="customer/dataSet" xsi:type="string">customer_US</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_US</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
+            <data name="billingAddress/dataSet" xsi:type="string">US_address_1_without_email</data>
             <data name="saveAddress" xsi:type="string">No</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
             <data name="shipping/shipping_method" xsi:type="string">Fixed</data>
@@ -71,8 +71,8 @@
             <data name="tag" xsi:type="string">to_maintain:yes</data>
             <data name="description" xsi:type="string">Create order with virtual product for registered UK customer using Bank Transfer payment method</data>
             <data name="products" xsi:type="string">catalogProductVirtual::default</data>
-            <data name="customer/dataSet" xsi:type="string">customer_UK</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_UK</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
+            <data name="billingAddress/dataSet" xsi:type="string">UK_address_without_email</data>
             <data name="saveAddress" xsi:type="string">No</data>
             <data name="prices" xsi:type="array">
                 <item name="grandTotal" xsi:type="string">10.00</item>
@@ -91,9 +91,9 @@
             <data name="tag" xsi:type="string">to_maintain:yes</data>
             <data name="description" xsi:type="string">Create order with simple product for registered US customer using Fixed shipping method and Purchase Order payment method</data>
             <data name="products" xsi:type="string">catalogProductSimple::default</data>
-            <data name="customer/dataSet" xsi:type="string">customer_US</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
             <data name="saveAddress" xsi:type="string">No</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_US</data>
+            <data name="billingAddress/dataSet" xsi:type="string">US_address_1_without_email</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
             <data name="shipping/shipping_method" xsi:type="string">Fixed</data>
             <data name="prices" xsi:type="array">
@@ -114,10 +114,10 @@
             <data name="description" xsi:type="string">MAGETWO-12395 - Create Offline Order for Registered Customer in Admin</data>
             <data name="products" xsi:type="string">catalogProductSimple::simple_10_dollar, configurableProduct::with_one_option</data>
             <data name="taxRule" xsi:type="string">us_ca_ny_rule</data>
-            <data name="customer/dataSet" xsi:type="string">customer_US</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
             <data name="saveAddress" xsi:type="string">No</data>
             <data name="checkoutMethod" xsi:type="string">login</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_US</data>
+            <data name="billingAddress/dataSet" xsi:type="string">US_address_1_without_email</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
             <data name="shipping/shipping_method" xsi:type="string">Fixed</data>
             <data name="prices" xsi:type="array">
@@ -132,10 +132,10 @@
             <data name="description" xsi:type="string">MAGETWO-12520 - Create Order for New Customer in Admin with Offline Payment Method</data>
             <data name="products" xsi:type="string">catalogProductSimple::simple_10_dollar, configurableProduct::with_one_option</data>
             <data name="taxRule" xsi:type="string">us_ca_ny_rule</data>
-            <data name="customer/dataSet" xsi:type="string">customer_US</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
             <data name="saveAddress" xsi:type="string">Yes</data>
             <data name="checkoutMethod" xsi:type="string">register</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_US</data>
+            <data name="billingAddress/dataSet" xsi:type="string">US_address_1_without_email</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
             <data name="shipping/shipping_method" xsi:type="string">Fixed</data>
             <data name="prices" xsi:type="array">
diff --git a/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/ReorderOrderEntityTest.xml b/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/ReorderOrderEntityTest.xml
index 200b45de0adb16a93d2c5343434e3038d064973d..20b862a735ee7e9977599fd0c8f82598384d6637 100644
--- a/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/ReorderOrderEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Sales/Test/TestCase/ReorderOrderEntityTest.xml
@@ -11,8 +11,8 @@
             <data name="description" xsi:type="string">Reorder placed order (update products, billing address).</data>
             <data name="order/dataSet" xsi:type="string">two_simple_product</data>
             <data name="salesRule" xsi:type="string">active_sales_rule_with_fixed_price_discount_coupon</data>
-            <data name="customer/dataSet" xsi:type="string">customer_US</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_US</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
+            <data name="billingAddress/dataSet" xsi:type="string">US_address_1</data>
             <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
             <data name="shipping/shipping_method" xsi:type="string">Fixed</data>
             <data name="prices" xsi:type="array">
diff --git a/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form.xml b/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form.xml
index 7e75ac518b8e7a2e66c38e5d9798c220d281e39f..bacb199390c0d3982e726b71db8c8adc51e9e9bd 100644
--- a/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form.xml
+++ b/dev/tests/functional/tests/app/Magento/Shipping/Test/Block/Adminhtml/Form.xml
@@ -6,7 +6,7 @@
  */
 -->
 <mapping strict="0">
-    <wrapper>creditmemo</wrapper>
+    <wrapper>shipment</wrapper>
     <fields>
         <comment_text />
         <shipping_amount />
diff --git a/dev/tests/functional/tests/app/Magento/Sitemap/Test/Page/Adminhtml/SitemapNew.xml b/dev/tests/functional/tests/app/Magento/Sitemap/Test/Page/Adminhtml/SitemapNew.xml
index 4f33714bfae86e6ab15c88cb3b5c500ad429e4ad..6852866408294adf0b9516a3013a41855534e24e 100644
--- a/dev/tests/functional/tests/app/Magento/Sitemap/Test/Page/Adminhtml/SitemapNew.xml
+++ b/dev/tests/functional/tests/app/Magento/Sitemap/Test/Page/Adminhtml/SitemapNew.xml
@@ -6,8 +6,8 @@
  */
  -->
 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../vendor/magento/mtf/etc/pages.xsd">
-  <page name="SitemapNew" area="Adminhtml" mca="sitemap/new/index" module="Magento_Sitemap">
-    <block name="sitemapForm" class="Magento\Backend\Test\Block\Widget\Form" locator="#add_sitemap_form" strategy="css selector"/>
-    <block name="sitemapPageActions" class="Magento\Sitemap\Test\Block\Adminhtml\SitemapPageActions" locator=".page-main-actions" strategy="css selector"/>
-  </page>
+    <page name="SitemapNew" area="Adminhtml" mca="sitemap/new/index" module="Magento_Sitemap">
+        <block name="sitemapForm" class="Magento\Mtf\Block\Form" locator="#add_sitemap_form" strategy="css selector" />
+        <block name="sitemapPageActions" class="Magento\Sitemap\Test\Block\Adminhtml\SitemapPageActions" locator=".page-main-actions" strategy="css selector" />
+    </page>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Tax/Test/Constraint/AssertTaxRateForm.php b/dev/tests/functional/tests/app/Magento/Tax/Test/Constraint/AssertTaxRateForm.php
index 970bede06def9787026240f7fd543488d39ed4a7..43e431fbbea44d9a0d3f6964961747b69f1cb104 100644
--- a/dev/tests/functional/tests/app/Magento/Tax/Test/Constraint/AssertTaxRateForm.php
+++ b/dev/tests/functional/tests/app/Magento/Tax/Test/Constraint/AssertTaxRateForm.php
@@ -31,10 +31,7 @@ class AssertTaxRateForm extends AbstractConstraint
         TaxRate $taxRate,
         TaxRate $initialTaxRate = null
     ) {
-        $data = ($initialTaxRate !== null)
-            ? array_merge($initialTaxRate->getData(), $taxRate->getData())
-            : $taxRate->getData();
-        $data = $this->prepareData($data);
+        $data = $this->prepareData($taxRate, $initialTaxRate);
         $filter = [
             'code' => $data['code'],
         ];
@@ -53,11 +50,20 @@ class AssertTaxRateForm extends AbstractConstraint
     /**
      * Preparing data for verification
      *
-     * @param array $data
+     * @param TaxRate $taxRate
+     * @param TaxRate $initialTaxRate
      * @return array
      */
-    protected function prepareData(array $data)
+    protected function prepareData(TaxRate $taxRate, TaxRate $initialTaxRate = null)
     {
+        if ($initialTaxRate !== null) {
+            $data = array_merge($initialTaxRate->getData(), $taxRate->getData());
+            if ($taxRate->hasData('tax_country_id') && !$taxRate->hasData('tax_region_id')) {
+                unset($data['tax_region_id']);
+            }
+        } else {
+            $data = $taxRate->getData();
+        }
         if ($data['zip_is_range'] === 'Yes') {
             unset($data['tax_postcode']);
         } else {
diff --git a/dev/tests/functional/tests/app/Magento/Tax/Test/TestCase/ApplyTaxBasedOnVatIdTest.xml b/dev/tests/functional/tests/app/Magento/Tax/Test/TestCase/ApplyTaxBasedOnVatIdTest.xml
index ae3c83014c7f0169da523f9e15c065671c69f167..d5407ecf878f38d62433a282d67c5b7e2f7f942a 100644
--- a/dev/tests/functional/tests/app/Magento/Tax/Test/TestCase/ApplyTaxBasedOnVatIdTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Tax/Test/TestCase/ApplyTaxBasedOnVatIdTest.xml
@@ -11,11 +11,11 @@
             <data name="description" xsi:type="string">MAGETWO-13436: Automatic Apply Tax Based on VAT ID.</data>
             <data name="vatConfig/dataSet" xsi:type="string">enable_VAT_on_frontend</data>
             <data name="configData" xsi:type="string">default_tax_configuration, flatrate, checkmo, store_information_DE_with_VAT, enable_VAT_on_frontend</data>
-            <data name="customer/dataSet" xsi:type="string">address_UK_with_VAT</data>
+            <data name="customer/dataSet" xsi:type="string">customer_UK_address_with_VAT</data>
             <data name="order/dataSet" xsi:type="string">default</data>
             <data name="order/data/entity_id/products" xsi:type="string">catalogProductSimple::product_10_dollar</data>
             <data name="order/data/customer_id/dataSet" xsi:type="string">customer_UK_address_with_VAT</data>
-            <data name="order/data/billing_address_id/dataSet" xsi:type="string">address_UK_with_VAT</data>
+            <data name="order/data/billing_address_id/dataSet" xsi:type="string">UK_address_with_VAT</data>
             <data name="taxRule/dataSet" xsi:type="string">retailer_uk_full_tax_rule</data>
             <data name="customerGroup" xsi:type="string">valid_intra_union_group</data>
             <data name="cart/data/subtotal" xsi:type="string">10</data>
diff --git a/dev/tests/functional/tests/app/Magento/Tax/Test/TestCase/CreateTaxRateEntityTest.xml b/dev/tests/functional/tests/app/Magento/Tax/Test/TestCase/CreateTaxRateEntityTest.xml
index bee3fb886b6f598dd767fe1706a967247ea05736..9602d171bf546587b59734b79042e4b42d6618fc 100644
--- a/dev/tests/functional/tests/app/Magento/Tax/Test/TestCase/CreateTaxRateEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Tax/Test/TestCase/CreateTaxRateEntityTest.xml
@@ -14,7 +14,6 @@
             <data name="taxRate/data/zip_to" xsi:type="string">-</data>
             <data name="taxRate/data/tax_postcode" xsi:type="string">*</data>
             <data name="taxRate/data/tax_country_id" xsi:type="string">Australia</data>
-            <data name="taxRate/data/tax_region_id" xsi:type="string">*</data>
             <data name="taxRate/data/rate" xsi:type="string">20</data>
             <constraint name="Magento\Tax\Test\Constraint\AssertTaxRateSuccessSaveMessage" />
             <constraint name="Magento\Tax\Test\Constraint\AssertTaxRateInGrid" />
@@ -55,7 +54,6 @@
             <data name="taxRate/data/zip_to" xsi:type="string">7800935</data>
             <data name="taxRate/data/tax_postcode" xsi:type="string">-</data>
             <data name="taxRate/data/tax_country_id" xsi:type="string">United Kingdom</data>
-            <data name="taxRate/data/tax_region_id" xsi:type="string">*</data>
             <data name="taxRate/data/rate" xsi:type="string">7.75</data>
             <constraint name="Magento\Tax\Test\Constraint\AssertTaxRateSuccessSaveMessage" />
             <constraint name="Magento\Tax\Test\Constraint\AssertTaxRateForm" />
diff --git a/dev/tests/functional/tests/app/Magento/Tax/Test/TestCase/UpdateTaxRateEntityTest.xml b/dev/tests/functional/tests/app/Magento/Tax/Test/TestCase/UpdateTaxRateEntityTest.xml
index 5f3a3e5fba76bad0aa9afb2fa85624cddb1e4beb..c8205ff306c4f0a543f0ab0cea2d619a6df8004a 100644
--- a/dev/tests/functional/tests/app/Magento/Tax/Test/TestCase/UpdateTaxRateEntityTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Tax/Test/TestCase/UpdateTaxRateEntityTest.xml
@@ -11,8 +11,6 @@
             <data name="initialTaxRate/dataSet" xsi:type="string">default</data>
             <data name="taxRate/data/code" xsi:type="string">TaxIdentifier%isolation%</data>
             <data name="taxRate/data/zip_is_range" xsi:type="string">No</data>
-            <data name="taxRate/data/zip_from" xsi:type="string">-</data>
-            <data name="taxRate/data/zip_to" xsi:type="string">-</data>
             <data name="taxRate/data/tax_postcode" xsi:type="string">90001</data>
             <data name="taxRate/data/tax_country_id" xsi:type="string">United States</data>
             <data name="taxRate/data/tax_region_id" xsi:type="string">California</data>
@@ -27,7 +25,6 @@
             <data name="taxRate/data/zip_is_range" xsi:type="string">Yes</data>
             <data name="taxRate/data/zip_from" xsi:type="string">90001</data>
             <data name="taxRate/data/zip_to" xsi:type="string">96162</data>
-            <data name="taxRate/data/tax_postcode" xsi:type="string">-</data>
             <data name="taxRate/data/tax_country_id" xsi:type="string">United States</data>
             <data name="taxRate/data/tax_region_id" xsi:type="string">California</data>
             <data name="taxRate/data/rate" xsi:type="string">15.05</data>
@@ -39,11 +36,8 @@
             <data name="initialTaxRate/dataSet" xsi:type="string">default</data>
             <data name="taxRate/data/code" xsi:type="string">TaxIdentifier%isolation%</data>
             <data name="taxRate/data/zip_is_range" xsi:type="string">No</data>
-            <data name="taxRate/data/zip_from" xsi:type="string">-</data>
-            <data name="taxRate/data/zip_to" xsi:type="string">-</data>
             <data name="taxRate/data/tax_postcode" xsi:type="string">*</data>
             <data name="taxRate/data/tax_country_id" xsi:type="string">United Kingdom</data>
-            <data name="taxRate/data/tax_region_id" xsi:type="string">*</data>
             <data name="taxRate/data/rate" xsi:type="string">777</data>
             <constraint name="Magento\Tax\Test\Constraint\AssertTaxRateSuccessSaveMessage" />
             <constraint name="Magento\Tax\Test\Constraint\AssertTaxRateInGrid" />
@@ -53,8 +47,6 @@
             <data name="initialTaxRate/dataSet" xsi:type="string">withZipRange</data>
             <data name="taxRate/data/code" xsi:type="string">TaxIdentifier%isolation%</data>
             <data name="taxRate/data/zip_is_range" xsi:type="string">No</data>
-            <data name="taxRate/data/zip_from" xsi:type="string">-</data>
-            <data name="taxRate/data/zip_to" xsi:type="string">-</data>
             <data name="taxRate/data/tax_postcode" xsi:type="string">180</data>
             <data name="taxRate/data/tax_country_id" xsi:type="string">Canada</data>
             <data name="taxRate/data/tax_region_id" xsi:type="string">*</data>
@@ -69,9 +61,7 @@
             <data name="taxRate/data/zip_is_range" xsi:type="string">Yes</data>
             <data name="taxRate/data/zip_from" xsi:type="string">1</data>
             <data name="taxRate/data/zip_to" xsi:type="string">7800935</data>
-            <data name="taxRate/data/tax_postcode" xsi:type="string">-</data>
             <data name="taxRate/data/tax_country_id" xsi:type="string">United Kingdom</data>
-            <data name="taxRate/data/tax_region_id" xsi:type="string">*</data>
             <data name="taxRate/data/rate" xsi:type="string">12.99</data>
             <constraint name="Magento\Tax\Test\Constraint\AssertTaxRateSuccessSaveMessage" />
             <constraint name="Magento\Tax\Test\Constraint\AssertTaxRateForm" />
@@ -80,8 +70,6 @@
             <data name="initialTaxRate/dataSet" xsi:type="string">withZipRange</data>
             <data name="taxRate/data/code" xsi:type="string">TaxIdentifier%isolation%</data>
             <data name="taxRate/data/zip_is_range" xsi:type="string">No</data>
-            <data name="taxRate/data/zip_from" xsi:type="string">-</data>
-            <data name="taxRate/data/zip_to" xsi:type="string">-</data>
             <data name="taxRate/data/tax_postcode" xsi:type="string">*</data>
             <data name="taxRate/data/tax_country_id" xsi:type="string">France</data>
             <data name="taxRate/data/tax_region_id" xsi:type="string">Val-d'Oise</data>
diff --git a/dev/tests/functional/tests/app/Magento/Ups/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Ups/Test/TestCase/OnePageCheckoutTest.xml
index e69a07836fa8db70124d108c6e4fbd5d3882a640..6fc10ed38d6c56eaad94467b0d8a1a82b7f242cc 100644
--- a/dev/tests/functional/tests/app/Magento/Ups/Test/TestCase/OnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Ups/Test/TestCase/OnePageCheckoutTest.xml
@@ -11,8 +11,8 @@
             <data name="description" xsi:type="string">MAGETWO-12848 – Use UPS Online Shipping Carrier on Checkout as a Registered Customer</data>
             <data name="products" xsi:type="string">catalogProductSimple::default, configurableProduct::default, bundleProduct::bundle_fixed_product</data>
             <data name="checkoutMethod" xsi:type="string">login</data>
-            <data name="customer/dataSet" xsi:type="string">customer_US</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_US</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
+            <data name="billingAddress/dataSet" xsi:type="string">US_address_1</data>
             <data name="shipping/shipping_service" xsi:type="string">United Parcel Service</data>
             <data name="shipping/shipping_method" xsi:type="string">UPS Ground</data>
             <data name="cart/data/shipping_method" xsi:type="string">UPS Ground</data>
@@ -27,9 +27,9 @@
             <data name="description" xsi:type="string">Check Out as Guest using UPS with US shipping origin and UK customer</data>
             <data name="products" xsi:type="string">catalogProductSimple::default, configurableProduct::default, bundleProduct::bundle_fixed_product</data>
             <data name="checkoutMethod" xsi:type="string">guest</data>
-            <data name="customer/dataSet" xsi:type="string">customer_UK</data>
-            <data name="address/dataSet" xsi:type="string">customer_UK</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_UK</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
+            <data name="address/dataSet" xsi:type="string">UK_address</data>
+            <data name="billingAddress/dataSet" xsi:type="string">UK_address</data>
             <data name="shipping/shipping_service" xsi:type="string">United Parcel Service</data>
             <data name="shipping/shipping_method" xsi:type="string">UPS Worldwide Expedited</data>
             <data name="cart/data/shipping_method" xsi:type="string">UPS Worldwide Expedited</data>
diff --git a/dev/tests/functional/tests/app/Magento/UrlRewrite/Test/Block/Adminhtml/Catalog/Edit/UrlRewriteForm.php b/dev/tests/functional/tests/app/Magento/UrlRewrite/Test/Block/Adminhtml/Catalog/Edit/UrlRewriteForm.php
index 373c6c4cabd7c90d4920667f958868594b4b3946..5fb3fc21d02d69cd99399f7af6741da752448522 100644
--- a/dev/tests/functional/tests/app/Magento/UrlRewrite/Test/Block/Adminhtml/Catalog/Edit/UrlRewriteForm.php
+++ b/dev/tests/functional/tests/app/Magento/UrlRewrite/Test/Block/Adminhtml/Catalog/Edit/UrlRewriteForm.php
@@ -6,7 +6,7 @@
 
 namespace Magento\UrlRewrite\Test\Block\Adminhtml\Catalog\Edit;
 
-use Magento\Backend\Test\Block\Widget\Form;
+use Magento\Mtf\Block\Form;
 use Magento\Mtf\Client\Element\SimpleElement;
 use Magento\Mtf\Client\Element;
 use Magento\Mtf\Fixture\FixtureInterface;
@@ -16,6 +16,42 @@ use Magento\Mtf\Fixture\FixtureInterface;
  */
 class UrlRewriteForm extends Form
 {
+    /**
+     * Prepare data for url rewrite fixture.
+     *
+     * @param FixtureInterface $fixture
+     * @return array
+     */
+    protected function prepareData(FixtureInterface $fixture)
+    {
+        $data = $fixture->getData();
+        if (empty($data['entity_type']) && empty($this->getData()['target_path']) && !isset($data['target_path'])) {
+            $entity = $fixture->getDataFieldConfig('target_path')['source']->getEntity();
+            $data['target_path'] = $entity->hasData('identifier')
+                ? $entity->getIdentifier()
+                : $entity->getUrlKey() . '.html';
+        }
+        return $data;
+    }
+
+    /**
+     * Fill visible fields on the form.
+     *
+     * @param array $data
+     * @param SimpleElement $context
+     * @retun void
+     */
+    protected function fillFields(array $data, SimpleElement $context)
+    {
+        $mapping = $this->dataMapping($data);
+        foreach ($mapping as $field) {
+            $element = $this->getElement($context, $field);
+            if ($element->isVisible() && !$element->isDisabled()) {
+                $element->setValue($field['value']);
+            }
+        }
+    }
+
     /**
      * Fill the root form.
      *
@@ -29,13 +65,8 @@ class UrlRewriteForm extends Form
         SimpleElement $element = null,
         array $replace = []
     ) {
-        $data = $fixture->getData();
-        if (empty($data['entity_type']) && empty($this->getData()['target_path']) && !isset($data['target_path'])) {
-            $entity = $fixture->getDataFieldConfig('target_path')['source']->getEntity();
-            $data['target_path'] = $entity->hasData('identifier')
-                ? $entity->getIdentifier()
-                : $entity->getUrlKey() . '.html';
-        }
+        $context = ($element === null) ? $this->_rootElement : $element;
+        $data = $this->prepareData($fixture);
 
         foreach ($replace as $key => $value) {
             if (isset($data[$key])) {
@@ -43,8 +74,7 @@ class UrlRewriteForm extends Form
             }
         }
 
-        $mapping = $this->dataMapping($data);
-        $this->_fill($mapping, $element);
+        $this->fillFields($data, $context);
 
         return $this;
     }
diff --git a/dev/tests/functional/tests/app/Magento/Usps/Test/TestCase/OnePageCheckoutTest.xml b/dev/tests/functional/tests/app/Magento/Usps/Test/TestCase/OnePageCheckoutTest.xml
index f374414df102e72c249d362c4f7c9ad8dbe36eb4..b930b0fb8abc7e9d60dbde9e80605ae26a629f1a 100644
--- a/dev/tests/functional/tests/app/Magento/Usps/Test/TestCase/OnePageCheckoutTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Usps/Test/TestCase/OnePageCheckoutTest.xml
@@ -11,8 +11,8 @@
             <data name="description" xsi:type="string">MAGETWO-12444 – Use USPS Online Shipping Carrier on Checkout as a Registered Customer</data>
             <data name="products" xsi:type="string">catalogProductSimple::default, configurableProduct::default, bundleProduct::bundle_fixed_product</data>
             <data name="checkoutMethod" xsi:type="string">login</data>
-            <data name="customer/dataSet" xsi:type="string">customer_US</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_US</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
+            <data name="billingAddress/dataSet" xsi:type="string">US_address_1</data>
             <data name="shipping/shipping_service" xsi:type="string">United States Postal Service</data>
             <data name="shipping/shipping_method" xsi:type="string">Priority Mail 1-Day</data>
             <data name="cart/data/shipping_method" xsi:type="string">Priority Mail 1-Day</data>
@@ -27,9 +27,9 @@
             <data name="description" xsi:type="string">Check Out as Guest using USPS with US shipping origin and UK customer</data>
             <data name="products" xsi:type="string">catalogProductSimple::default, configurableProduct::default, bundleProduct::bundle_fixed_product</data>
             <data name="checkoutMethod" xsi:type="string">guest</data>
-            <data name="customer/dataSet" xsi:type="string">customer_UK</data>
-            <data name="address/dataSet" xsi:type="string">customer_UK</data>
-            <data name="billingAddress/dataSet" xsi:type="string">customer_UK</data>
+            <data name="customer/dataSet" xsi:type="string">default</data>
+            <data name="address/dataSet" xsi:type="string">UK_address</data>
+            <data name="billingAddress/dataSet" xsi:type="string">UK_address</data>
             <data name="shipping/shipping_service" xsi:type="string">United States Postal Service</data>
             <data name="shipping/shipping_method" xsi:type="string">Priority Mail International</data>
             <data name="cart/data/shipping_method" xsi:type="string">Priority Mail International</data>
diff --git a/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/AbstractWishlistTest.php b/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/AbstractWishlistTest.php
index 736d2e0e8136600a99ebc424ef73e57fbfdb2a00..b3102c9d7f960e4205fd633bfb10c18008fd10f5 100644
--- a/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/AbstractWishlistTest.php
+++ b/dev/tests/functional/tests/app/Magento/Wishlist/Test/TestCase/AbstractWishlistTest.php
@@ -119,11 +119,9 @@ abstract class AbstractWishlistTest extends Injectable
      */
     protected function addToWishlist(array $products, $configure = false)
     {
-        $addProductsToWishlistStep = $this->objectManager->create(
+        $this->objectManager->create(
             'Magento\Wishlist\Test\TestStep\AddProductsToWishlistStep',
             ['products' => $products, 'configure' => $configure]
-        );
-
-        $addProductsToWishlistStep->run();
+        )->run();
     }
 }
diff --git a/dev/tests/functional/utils/generate/constraint.php b/dev/tests/functional/utils/generate/constraint.php
deleted file mode 100644
index 5dfd019f6c17046591a153cb136e0245dac581a3..0000000000000000000000000000000000000000
--- a/dev/tests/functional/utils/generate/constraint.php
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
-require_once dirname(__DIR__) . '/' . 'bootstrap.php';
-
-$objectManager->create('Magento\Mtf\Util\Generate\Constraint')->launch();
-\Magento\Mtf\Util\Generate\GenerateResult::displayResults();
diff --git a/dev/tests/integration/testsuite/Magento/CatalogInventory/Model/Stock/ItemTest.php b/dev/tests/integration/testsuite/Magento/CatalogInventory/Model/Stock/ItemTest.php
index 6acd799855c98ff4bdfce79c329196a94919fea0..ca4260d5c037668987898fb26a647e0ee85aa113 100644
--- a/dev/tests/integration/testsuite/Magento/CatalogInventory/Model/Stock/ItemTest.php
+++ b/dev/tests/integration/testsuite/Magento/CatalogInventory/Model/Stock/ItemTest.php
@@ -5,6 +5,8 @@
  */
 namespace Magento\CatalogInventory\Model\Stock;
 
+use Magento\Indexer\Model\Indexer\State;
+
 class ItemTest extends \PHPUnit_Framework_TestCase
 {
     /**
@@ -21,6 +23,7 @@ class ItemTest extends \PHPUnit_Framework_TestCase
 
     /**
      * @magentoDataFixture Magento/Catalog/_files/products.php
+     * @magentoAppIsolation enabled
      */
     public function testSaveWithNullQty()
     {
@@ -31,11 +34,11 @@ class ItemTest extends \PHPUnit_Framework_TestCase
         $product->load(1);
 
         /** @var \Magento\CatalogInventory\Model\Stock\StockItemRepository $stockItemRepository */
-        $stockItemRepository = $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+        $stockItemRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
             ->create('Magento\CatalogInventory\Model\Stock\StockItemRepository');
 
         /** @var \Magento\CatalogInventory\Api\StockItemCriteriaInterface $stockItemCriteria */
-        $stockItemCriteria = $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+        $stockItemCriteria = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
             ->create('Magento\CatalogInventory\Api\StockItemCriteriaInterface');
 
         $savedStockItem = current($stockItemRepository->getList($stockItemCriteria)->getItems());
@@ -60,15 +63,49 @@ class ItemTest extends \PHPUnit_Framework_TestCase
 
     /**
      * @magentoDataFixture Magento/Catalog/_files/products.php
+     * @magentoAppIsolation enabled
+     */
+    public function testIndexerInvalidation()
+    {
+        /** @var \Magento\CatalogInventory\Model\Stock\StockItemRepository $stockItemRepository */
+        $stockItemRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\CatalogInventory\Model\Stock\StockItemRepository');
+
+        /** @var \Magento\CatalogInventory\Api\StockItemCriteriaInterface $stockItemCriteria */
+        $stockItemCriteria = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\CatalogInventory\Api\StockItemCriteriaInterface');
+        /** @var \Magento\CatalogInventory\Model\Indexer\Stock\Processor $indexerProcessor */
+        $indexerProcessor = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+            ->create('Magento\CatalogInventory\Model\Indexer\Stock\Processor');
+        $indexer = $indexerProcessor->getIndexer();
+        $indexer->setScheduled(true);
+        $indexer->getState()->setStatus(State::STATUS_VALID)->save();
+
+        /** @var \Magento\CatalogInventory\Api\Data\StockItemInterface $savedStockItem */
+        $savedStockItem = current($stockItemRepository->getList($stockItemCriteria)->getItems());
+        $savedStockItem->setQty(1);
+        $savedStockItem->setIsInStock(false);
+        $savedStockItem->save();
+
+
+        $this->assertEquals('invalid', $indexerProcessor->getIndexer()->getStatus());
+
+        $indexer->setScheduled(false);
+        $indexer->getState()->setStatus(State::STATUS_VALID)->save();
+    }
+
+    /**
+     * @magentoDataFixture Magento/Catalog/_files/products.php
+     * @magentoAppIsolation enabled
      */
     public function testStockStatusChangedAuto()
     {
         /** @var \Magento\CatalogInventory\Model\Stock\StockItemRepository $stockItemRepository */
-        $stockItemRepository = $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+        $stockItemRepository = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
             ->create('Magento\CatalogInventory\Model\Stock\StockItemRepository');
 
         /** @var \Magento\CatalogInventory\Api\StockItemCriteriaInterface $stockItemCriteria */
-        $stockItemCriteria = $product = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+        $stockItemCriteria = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
             ->create('Magento\CatalogInventory\Api\StockItemCriteriaInterface');
 
         $savedStockItem = current($stockItemRepository->getList($stockItemCriteria)->getItems());
diff --git a/dev/tests/integration/testsuite/Magento/Checkout/Block/Cart/Item/RendererTest.php b/dev/tests/integration/testsuite/Magento/Checkout/Block/Cart/Item/RendererTest.php
index a6957a03133f5dbf7030dd568537dca3d102011f..08220dd340ad85bb01a1dffbea9a1490baa0d014 100644
--- a/dev/tests/integration/testsuite/Magento/Checkout/Block/Cart/Item/RendererTest.php
+++ b/dev/tests/integration/testsuite/Magento/Checkout/Block/Cart/Item/RendererTest.php
@@ -62,12 +62,6 @@ class RendererTest extends \PHPUnit_Framework_TestCase
         $this->assertStringEndsWith('magento_image.jpg', $this->_block->getProductThumbnailSidebarUrl());
     }
 
-    public function testGetConfigureUrl()
-    {
-        $testString = 'checkout/cart/configure/id/' . $this->_block->getItem()->getId() . '/product_id/1/';
-        $this->assertStringEndsWith($testString, $this->_block->getConfigureUrl());
-    }
-
     /**
      * Gets \Magento\Quote\Model\Quote\Item from \Magento\Quote\Model\Quote by product id
      *
diff --git a/dev/tests/integration/testsuite/Magento/Email/Model/TemplateTest.php b/dev/tests/integration/testsuite/Magento/Email/Model/TemplateTest.php
index bc462312b6b39882e3e9f89462332a16d997e150..942f3466297e180ce4faf64d5098b53d5df4e925 100755
--- a/dev/tests/integration/testsuite/Magento/Email/Model/TemplateTest.php
+++ b/dev/tests/integration/testsuite/Magento/Email/Model/TemplateTest.php
@@ -32,8 +32,8 @@ class TemplateTest extends \PHPUnit_Framework_TestCase
         )->setConstructorArgs(
             [
                 $objectManager->get('Magento\Framework\Model\Context'),
-                $objectManager->get('Magento\Framework\View\DesignInterface'),
                 $objectManager->get('Magento\Framework\Registry'),
+                $objectManager->get('Magento\Framework\View\DesignInterface'),
                 $objectManager->get('Magento\Store\Model\App\Emulation'),
                 $objectManager->get('Magento\Store\Model\StoreManager'),
                 $objectManager->create('Magento\Framework\Filesystem'),
diff --git a/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_customer_and_message.php b/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_customer_and_message.php
new file mode 100644
index 0000000000000000000000000000000000000000..56674a5ba813b2f929843d3be0bcb3c91d4d618f
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_customer_and_message.php
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+require __DIR__ . '/../../Customer/_files/customer.php';
+
+$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+
+/** @var \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository */
+$customerRepository = $objectManager->create('Magento\Customer\Api\CustomerRepositoryInterface');
+$customer = $customerRepository->getById(1);
+
+/** @var \Magento\GiftMessage\Model\Message $message */
+$message = $objectManager->create('Magento\GiftMessage\Model\Message');
+$message->setSender('Romeo');
+$message->setRecipient('Mercutio');
+$message->setMessage('I thought all for the best.');
+$message->save();
+
+/** @var \Magento\Quote\Model\Quote $quote */
+$quote = $objectManager->create('Magento\Quote\Model\Quote');
+$quote->setData(
+    [
+        'store_id' => 1,
+        'is_active' => 1,
+        'reserved_order_id' => 'message_order_21',
+        'gift_message_id' => $message->getId(),
+    ]
+)->assignCustomer($customer);
+$quote->save();
+
+/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
+$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+    ->create('Magento\Quote\Model\QuoteIdMaskFactory')
+    ->create();
+$quoteIdMask->setQuoteId($quote->getId());
+$quoteIdMask->setDataChanges(true);
+$quoteIdMask->save();
diff --git a/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_customer_and_message_rollback.php b/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_customer_and_message_rollback.php
new file mode 100644
index 0000000000000000000000000000000000000000..42ae5826a8e72e9d515bb6c52f71003b108c720f
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_customer_and_message_rollback.php
@@ -0,0 +1,18 @@
+<?php
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
+
+/** @var \Magento\Quote\Model\Quote $quote */
+$quote = $objectManager->create('Magento\Quote\Model\Quote');
+$quote->load('message_order_21', 'reserved_order_id');
+
+/** @var \Magento\GiftMessage\Model\Message $message */
+$message = $objectManager->create('Magento\GiftMessage\Model\Message');
+$message->load($quote->getGiftMessageId());
+$message->delete();
+
+$quote->delete();
diff --git a/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_item_message.php b/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_item_message.php
index cb590f2ddd2d818b9126340b5c13e4ba366d46f2..cb56c205bad7144ef1dc45d51840c374fdc5e803 100644
--- a/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_item_message.php
+++ b/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_item_message.php
@@ -44,3 +44,11 @@ $message->setRecipient('Jane Roe');
 $message->setMessage('Gift Message Text');
 $message->save();
 $quote->getItemByProduct($quoteProduct)->setGiftMessageId($message->getId())->save();
+
+/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
+$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+    ->create('Magento\Quote\Model\QuoteIdMaskFactory')
+    ->create();
+$quoteIdMask->setQuoteId($quote->getId());
+$quoteIdMask->setDataChanges(true);
+$quoteIdMask->save();
diff --git a/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_message.php b/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_message.php
index 848b8d256241769a30cdd4f1a4eb6ba38e6bf68d..7a575f296fd59deaf631108d7fd0976fd6fece2e 100644
--- a/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_message.php
+++ b/dev/tests/integration/testsuite/Magento/GiftMessage/_files/quote_with_message.php
@@ -24,3 +24,11 @@ $quote->setData(
     ]
 );
 $quote->save();
+
+/** @var \Magento\Quote\Model\QuoteIdMask $quoteIdMask */
+$quoteIdMask = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()
+    ->create('Magento\Quote\Model\QuoteIdMaskFactory')
+    ->create();
+$quoteIdMask->setQuoteId($quote->getId());
+$quoteIdMask->setDataChanges(true);
+$quoteIdMask->save();
diff --git a/dev/tests/static/testsuite/Magento/Test/Integrity/_files/dependency_test/tables_ce.php b/dev/tests/static/testsuite/Magento/Test/Integrity/_files/dependency_test/tables_ce.php
index 1ae037a2b477a3957cc658ecdac90f7e737eef1e..ffd2dd8bb778d3e9c0650350d663d3c1d1dd8b7b 100644
--- a/dev/tests/static/testsuite/Magento/Test/Integrity/_files/dependency_test/tables_ce.php
+++ b/dev/tests/static/testsuite/Magento/Test/Integrity/_files/dependency_test/tables_ce.php
@@ -90,7 +90,6 @@ return [
     'cataloginventory_stock_status'               => 'Magento\CatalogInventory',
     'cataloginventory_stock_status_idx'           => 'Magento\CatalogInventory',
     'cataloginventory_stock_status_tmp'           => 'Magento\CatalogInventory',
-    'catalogrule_affected_product'                => 'Magento\CatalogRule',
     'catalogrule_customer_group'                  => 'Magento\CatalogRule',
     'catalogrule'                                 => 'Magento\CatalogRule',
     'catalogrule_group_website'                   => 'Magento\CatalogRule',
diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
index 638d18c04958565b8638e3bf97df343a8e58cb9d..4cfed53e55352a8a77865f52862073abbf657605 100755
--- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
+++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_classes.php
@@ -3656,5 +3656,6 @@ return [
     ['Magento\Centinel\Test\TestCase\CentinelPaymentsInvalidCcTest'],
     ['Magento\Centinel\Test\TestCase\CentinelPaymentsValidCcTest'],
     ['Magento\Centinel\CreateOrderTest'],
-    ['Magento\Payment\Model\Checks\PaymentMethodChecksInterface', 'Magento\Payment\Model\MethodInterface']
+    ['Magento\Payment\Model\Checks\PaymentMethodChecksInterface', 'Magento\Payment\Model\MethodInterface'],
+    ['Magento\GiftMessage\Model\Plugin\TotalsDataProcessorPlugin'],
 ];
diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_methods.php b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_methods.php
index 6a29c4ccecc5c13c26750ec49375acfe81db6f82..cd660a65eb1223dad2b303f80f1b0eac7e0280d8 100644
--- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_methods.php
+++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/obsolete_methods.php
@@ -2257,5 +2257,10 @@ return [
     ['getOrigData', 'Magento\Framework\Object', 'Moved to Magento\Framework\Model\AbstractModel'],
     ['dataHasChangedFor', 'Magento\Framework\Object', 'Moved to Magento\Framework\Model\AbstractModel'],
     ['setDataChanges', 'Magento\Framework\Object', 'Moved to Magento\Framework\Model\AbstractModel'],
+    [
+        'getConfigureUrl',
+        'Magento\Checkout\Block\Cart\Item\Renderer',
+        '\Magento\Checkout\Block\Cart\Item\Renderer\Actions\Edit::getConfigureUrl'
+    ],
     ['getCurrenCategoryKey', 'Magento\Catalog\Block\Navigation', 'getCurrentCategoryKey'],
 ];
diff --git a/dev/tools/Magento/Tools/Migration/factory_table_names/replace_ce.php b/dev/tools/Magento/Tools/Migration/factory_table_names/replace_ce.php
index b154d0183f2a3583c5bb0c1183e6fc2ffc3c7d6e..f8889d4f2cb4937f0d4a12aefb1c04254a8d78f7 100644
--- a/dev/tools/Magento/Tools/Migration/factory_table_names/replace_ce.php
+++ b/dev/tools/Magento/Tools/Migration/factory_table_names/replace_ce.php
@@ -105,7 +105,6 @@ return [
     'cataloginventory/stock_status' => 'cataloginventory_stock_status',
     'cataloginventory/stock_status_indexer_idx' => 'cataloginventory_stock_status_idx',
     'cataloginventory/stock_status_indexer_tmp' => 'cataloginventory_stock_status_tmp',
-    'catalogrule/affected_product' => 'catalogrule_affected_product',
     'catalogrule/customer_group' => 'catalogrule_customer_group',
     'catalogrule/rule' => 'catalogrule',
     'catalogrule/rule_group_website' => 'catalogrule_group_website',
diff --git a/lib/internal/Magento/Framework/AppInterface.php b/lib/internal/Magento/Framework/AppInterface.php
index b0b03dfcb471f368da7964d27b52ab16cae7f171..fb61d6803b3681c56a7af5ad3a29cc8468484e27 100644
--- a/lib/internal/Magento/Framework/AppInterface.php
+++ b/lib/internal/Magento/Framework/AppInterface.php
@@ -17,7 +17,7 @@ interface AppInterface
     /**
      * Magento version
      */
-    const VERSION = '0.74.0-beta13';
+    const VERSION = '0.74.0-beta14';
 
     /**
      * Launch application
diff --git a/lib/internal/Magento/Framework/DB/Adapter/AdapterInterface.php b/lib/internal/Magento/Framework/DB/Adapter/AdapterInterface.php
index 96eb992ade3f58cd9e3d6860c36fc1310baacd4b..8bee03a383ef497ade430b261df56d493f6790f3 100644
--- a/lib/internal/Magento/Framework/DB/Adapter/AdapterInterface.php
+++ b/lib/internal/Magento/Framework/DB/Adapter/AdapterInterface.php
@@ -129,6 +129,16 @@ interface AdapterInterface
      */
     public function createTemporaryTable(Table $table);
 
+    /**
+     * Create temporary table from other table
+     *
+     * @param string $temporaryTableName
+     * @param string $originTableName
+     * @param bool $ifNotExists
+     * @return \Zend_Db_Statement_Interface
+     */
+    public function createTemporaryTableLike($temporaryTableName, $originTableName, $ifNotExists = false);
+
     /**
      * Drop temporary table from database
      *
diff --git a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php
index 74d74986e0e68fb81a46da87df2e4d8b359cf2d4..94cbf428fd0d3022b596922cbd5196b8da8d9584 100644
--- a/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php
+++ b/lib/internal/Magento/Framework/DB/Adapter/Pdo/Mysql.php
@@ -396,8 +396,9 @@ class Mysql extends \Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface
     protected function _checkDdlTransaction($sql)
     {
         if (is_string($sql) && $this->getTransactionLevel() > 0) {
-            $startSql = strtolower(substr(ltrim($sql), 0, 3));
-            if (in_array($startSql, $this->_ddlRoutines)) {
+            $sqlMessage = explode(' ', $sql, 3);
+            $startSql = strtolower(substr(ltrim($sqlMessage[0]), 0, 3));
+            if (in_array($startSql, $this->_ddlRoutines) && strcasecmp($sqlMessage[1], 'temporary') !== 0) {
                 trigger_error(AdapterInterface::ERROR_DDL_MESSAGE, E_USER_ERROR);
             }
         }
@@ -2002,6 +2003,24 @@ class Mysql extends \Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface
         return $this->query($sql);
     }
 
+    /**
+     * Create temporary table like
+     *
+     * @param string $temporaryTableName
+     * @param string $originTableName
+     * @param bool $ifNotExists
+     * @return \Zend_Db_Statement_Pdo
+     */
+    public function createTemporaryTableLike($temporaryTableName, $originTableName, $ifNotExists = false)
+    {
+        $ifNotExistsSql = ($ifNotExists ? 'IF NOT EXISTS' : '');
+        $temporaryTable = $this->quoteIdentifier($this->_getTableName($temporaryTableName));
+        $originTable = $this->quoteIdentifier($this->_getTableName($originTableName));
+        $sql = sprintf('CREATE TEMPORARY TABLE %s %s LIKE %s', $ifNotExistsSql, $temporaryTable, $originTable);
+
+        return $this->query($sql);
+    }
+
     /**
      * Rename several tables
      *
diff --git a/lib/internal/Magento/Framework/Model/Resource/Db/AbstractDb.php b/lib/internal/Magento/Framework/Model/Resource/Db/AbstractDb.php
index ba80e64a256222d7d02ac7eaae6cd95f7ec3717a..87732d71a0f068818c993fd836d8baa8bb9d9d3a 100644
--- a/lib/internal/Magento/Framework/Model/Resource/Db/AbstractDb.php
+++ b/lib/internal/Magento/Framework/Model/Resource/Db/AbstractDb.php
@@ -625,6 +625,7 @@ abstract class AbstractDb extends \Magento\Framework\Model\Resource\AbstractReso
      * @return $this
      * @throws AlreadyExistsException
      * @SuppressWarnings(PHPMD.CyclomaticComplexity)
+     * @SuppressWarnings(PHPMD.NPathComplexity)
      */
     protected function _checkUnique(\Magento\Framework\Model\AbstractModel $object)
     {
@@ -640,13 +641,13 @@ abstract class AbstractDb extends \Magento\Framework\Model\Resource\AbstractReso
 
             foreach ($fields as $unique) {
                 $select->reset(\Zend_Db_Select::WHERE);
-
-                if (is_array($unique['field'])) {
-                    foreach ($unique['field'] as $field) {
-                        $select->where($field . '=?', trim($data->getData($field)));
+                foreach ((array)$unique['field'] as $field) {
+                    $value = $data->getData($field);
+                    if ($value === null) {
+                        $select->where($field . ' IS NULL');
+                    } else {
+                        $select->where($field . '=?', trim($value));
                     }
-                } else {
-                    $select->where($unique['field'] . '=?', trim($data->getData($unique['field'])));
                 }
 
                 if ($object->getId() || $object->getId() === '0') {
diff --git a/lib/internal/Magento/Framework/composer.json b/lib/internal/Magento/Framework/composer.json
index 1307d01001635ca7553aabcd9dcd94884d01801c..29ca6222b30be7c45122ac19c9f1c48c04c408fc 100644
--- a/lib/internal/Magento/Framework/composer.json
+++ b/lib/internal/Magento/Framework/composer.json
@@ -2,7 +2,7 @@
     "name": "magento/framework",
     "description": "N/A",
     "type": "magento2-library",
-    "version": "0.74.0-beta13",
+    "version": "0.74.0-beta14",
     "license": [
         "OSL-3.0",
         "AFL-3.0"
diff --git a/lib/web/css/docs/docs.css b/lib/web/css/docs/docs.css
index c582689347ea21d675d48262cc12d75868a93be5..bd3fb54a7376ad58e526e199f281a813f7be7d46 100644
--- a/lib/web/css/docs/docs.css
+++ b/lib/web/css/docs/docs.css
@@ -8193,7 +8193,6 @@ pre {
   margin: 0 0 10px;
   line-height: 1.42857143;
   padding: 10px;
-  word-break: break-all;
   word-wrap: break-word;
 }
 pre code {
@@ -8258,8 +8257,6 @@ cite {
   line-height: 3rem;
 }
 .example-word-wrap {
-  word-break: break-all;
-  word-break: break-word;
   word-wrap: break-word;
   -webkit-hyphens: auto;
   -moz-hyphens: auto;
@@ -8562,7 +8559,6 @@ pre {
   margin: 0 0 10px;
   line-height: 1.42857143;
   padding: 10px;
-  word-break: break-all;
   word-wrap: break-word;
 }
 pre code {
@@ -8732,4 +8728,4 @@ body {
   padding: 15px;
   background-image: none;
 }
-/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9saWIvd2ViL2Nzcy9zb3VyY2UvbGliL191dGlsaXRpZXMubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS9hY3Rpb25zLXRvb2xiYXIubGVzcyIsIi9saWIvd2ViL2Nzcy9zb3VyY2UvbGliL19hY3Rpb25zLXRvb2xiYXIubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS9icmVhZGNydW1icy5sZXNzIiwiL2xpYi93ZWIvY3NzL3NvdXJjZS9saWIvX2JyZWFkY3J1bWJzLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fdHlwb2dyYXBoeS5sZXNzIiwiL2xpYi93ZWIvY3NzL3NvdXJjZS9saWIvX2ljb25zLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi92YXJpYWJsZXMvX3R5cG9ncmFwaHkubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS9pY29ucy5sZXNzIiwiL2xpYi93ZWIvY3NzL2RvY3Mvc291cmNlL2J1dHRvbnMubGVzcyIsIi9saWIvd2ViL2Nzcy9zb3VyY2UvbGliL19idXR0b25zLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvZHJvcGRvd25zLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fZHJvcGRvd25zLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvZm9ybXMubGVzcyIsIi9saWIvd2ViL2Nzcy9zb3VyY2UvbGliL19mb3Jtcy5sZXNzIiwiL2xpYi93ZWIvY3NzL2RvY3Mvc291cmNlL2xvYWRlcnMubGVzcyIsIi9saWIvd2ViL2Nzcy9zb3VyY2UvbGliL19sb2FkZXJzLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi92YXJpYWJsZXMvX2xvYWRlcnMubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS9tZXNzYWdlcy5sZXNzIiwiL2xpYi93ZWIvY3NzL3NvdXJjZS9saWIvX21lc3NhZ2VzLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvbGF5b3V0Lmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fbGF5b3V0Lmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fZ3JpZHMubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS9wYWdlcy5sZXNzIiwiL2xpYi93ZWIvY3NzL3NvdXJjZS9saWIvX3BhZ2VzLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvcG9wdXBzLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fcG9wdXBzLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvcmF0aW5nLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fcmF0aW5nLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvcmVzcG9uc2l2ZS5sZXNzIiwiL2xpYi93ZWIvY3NzL2RvY3Mvc291cmNlL3NlY3Rpb25zLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fc2VjdGlvbnMubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS90YWJsZXMubGVzcyIsIi9saWIvd2ViL2Nzcy9zb3VyY2UvbGliL190YWJsZXMubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS90b29sdGlwcy5sZXNzIiwiL2xpYi93ZWIvY3NzL3NvdXJjZS9saWIvX3Rvb2x0aXBzLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvdHlwb2dyYXBoeS5sZXNzIiwiL2xpYi93ZWIvY3NzL2RvY3Mvc291cmNlL3V0aWxpdGllcy5sZXNzIiwiL2xpYi93ZWIvY3NzL2RvY3Mvc291cmNlL2RvY3MubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpREksZ0JBQUM7QUFDRCxnQkFBQztFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7O0FBRUosZ0JBQUM7RUFDRyxXQUFBOztBQ25CUixnQkMyQ0k7RUFDSSxXQUFBOztBRDVDUixnQkM4Q0k7RUFDSSxZQUFBOztBRC9DUixnQkNWSTtBRFVKLGdCQ1RJO0VBQ0ks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 */
\ No newline at end of file
+/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9saWIvd2ViL2Nzcy9zb3VyY2UvbGliL191dGlsaXRpZXMubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS9hY3Rpb25zLXRvb2xiYXIubGVzcyIsIi9saWIvd2ViL2Nzcy9zb3VyY2UvbGliL19hY3Rpb25zLXRvb2xiYXIubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS9icmVhZGNydW1icy5sZXNzIiwiL2xpYi93ZWIvY3NzL3NvdXJjZS9saWIvX2JyZWFkY3J1bWJzLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fdHlwb2dyYXBoeS5sZXNzIiwiL2xpYi93ZWIvY3NzL3NvdXJjZS9saWIvX2ljb25zLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi92YXJpYWJsZXMvX3R5cG9ncmFwaHkubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS9pY29ucy5sZXNzIiwiL2xpYi93ZWIvY3NzL2RvY3Mvc291cmNlL2J1dHRvbnMubGVzcyIsIi9saWIvd2ViL2Nzcy9zb3VyY2UvbGliL19idXR0b25zLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvZHJvcGRvd25zLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fZHJvcGRvd25zLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvZm9ybXMubGVzcyIsIi9saWIvd2ViL2Nzcy9zb3VyY2UvbGliL19mb3Jtcy5sZXNzIiwiL2xpYi93ZWIvY3NzL2RvY3Mvc291cmNlL2xvYWRlcnMubGVzcyIsIi9saWIvd2ViL2Nzcy9zb3VyY2UvbGliL19sb2FkZXJzLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi92YXJpYWJsZXMvX2xvYWRlcnMubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS9tZXNzYWdlcy5sZXNzIiwiL2xpYi93ZWIvY3NzL3NvdXJjZS9saWIvX21lc3NhZ2VzLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvbGF5b3V0Lmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fbGF5b3V0Lmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fZ3JpZHMubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS9wYWdlcy5sZXNzIiwiL2xpYi93ZWIvY3NzL3NvdXJjZS9saWIvX3BhZ2VzLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvcG9wdXBzLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fcG9wdXBzLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvcmF0aW5nLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fcmF0aW5nLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvcmVzcG9uc2l2ZS5sZXNzIiwiL2xpYi93ZWIvY3NzL2RvY3Mvc291cmNlL3NlY3Rpb25zLmxlc3MiLCIvbGliL3dlYi9jc3Mvc291cmNlL2xpYi9fc2VjdGlvbnMubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS90YWJsZXMubGVzcyIsIi9saWIvd2ViL2Nzcy9zb3VyY2UvbGliL190YWJsZXMubGVzcyIsIi9saWIvd2ViL2Nzcy9kb2NzL3NvdXJjZS90b29sdGlwcy5sZXNzIiwiL2xpYi93ZWIvY3NzL3NvdXJjZS9saWIvX3Rvb2x0aXBzLmxlc3MiLCIvbGliL3dlYi9jc3MvZG9jcy9zb3VyY2UvdHlwb2dyYXBoeS5sZXNzIiwiL2xpYi93ZWIvY3NzL2RvY3Mvc291cmNlL3V0aWxpdGllcy5sZXNzIiwiL2xpYi93ZWIvY3NzL2RvY3Mvc291cmNlL2RvY3MubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpREksZ0JBQUM7QUFDRCxnQkFBQztFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7O0FBRUosZ0JBQUM7RUFDRyxXQUFBOztBQ25CUixnQkMyQ0k7RUFDSSxXQUFBOztBRDVDUixnQkM4Q0k7RUFDSSxZQUFBOztBRC9DUixnQkNWSTtBRFVKLGdCQ1RJO0VBQ0kscUJBQUE7O0FEUVIsZ0JDVkksU0FNSSxFQUFDO0FESVQsZ0JDVEksV0FLSSxFQUFDO0VBQ0cscUJBQUE7O0FER1osZ0JDQ0ksU0FDSTtFRjZQSixpQkFBQTs7QUMvUEosZ0JDU0ksV0FJSSxFQUFDO0VGa1BMLGVBQUE7O0FBbFBBLDBCQUFDO0FBQ0QsMEJBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLDBCQUFDO0VBQ0csV0FBQTs7QUNmUiwwQkN1Q0k7RUFDSSxXQUFBOztBRHhDUiwwQkMwQ0k7RUFDSSxZQUFBOztBRDNDUiwwQkNkSTtBRGNKLDBCQ2JJO0VBQ0kscUJBQUE7O0FEWVIsMEJDZEksU0FNSSxFQUFDO0FEUVQsMEJDYkksV0FLSSxFQUFDO0VBQ0cscUJBQUE7O0FET1osMEJDSEksU0FDSTtFRjZQSixpQkFBQTs7QUMzUEosMEJDS0ksV0FJSSxFQUFDO0VGa1BMLGVBQUE7O0FBbFBBLDBCQUFDO0FBQ0QsMEJBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLDBCQUFDO0VBQ0csV0FBQTs7QUNmUiwwQkN1Q0k7RUFDSSxXQUFBOztBRHhDUiwwQkMwQ0k7RUFDSSxZQUFBOztBRDNDUiwwQkNkSTtBRGNKLDBCQ2JJO0VBQ0kscUJBQUE7O0FEWVIsMEJDZEksU0FNSSxFQUFDO0FEUVQsMEJDYkksV0FLSSxFQUFDO0VBQ0cscUJBQUE7O0FET1osMEJDSEksU0FDSTtFRjZQSixpQkFBQTs7QUMzUEosMEJDS0ksV0FJSSxFQUFDO0VGa1BMLGVBQUE7O0FBbFBBLDBCQUFDO0FBQ0QsMEJBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLDBCQUFDO0VBQ0csV0FBQTs7QUNnSVIsMEJDeEdJO0VBQ0ksV0FBQTs7QUR1R1IsMEJDckdJO0VBQ0ksWUFBQTs7QURvR1IsMEJDN0pJO0FENkpKLDBCQzVKSTtFQUNJLHFCQUFBOztBRDJKUiwwQkM3SkksU0FNSSxFQUFDO0FEdUpULDBCQzVKSSxXQUtJLEVBQUM7RUFDRyxxQkFBQTs7QURzSlosMEJDbEpJLFNBQ0k7RUY2UEosaUJBQUE7O0FDNUdKLDBCQzFJSSxXQUlJLEVBQUM7RUZrUEwsZUFBQTs7QUN0R0o7RURzR0ksZ0JBQUE7O0FBbFBBLDBCQUFDO0FBQ0QsMEJBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLDBCQUFDO0VBQ0csV0FBQTs7QUNzSVIsMEJDdEZJO0VBQ0ksV0FBQTs7QURxRlIsMEJDbktJO0FEbUtKLDBCQ2xLSTtFQUNJLHFCQUFBOztBRGlLUiwwQkNuS0ksU0FNSSxFQUFDO0FENkpULDBCQ2xLSSxXQUtJLEVBQUM7RUFDRyxxQkFBQTs7QUQ0SlosMEJDeEpJLFNBQ0k7RUY2UEosaUJBQUE7O0FDdEdKLDBCQ2hKSSxXQUlJLEVBQUM7RUZrUEwsZUFBQTs7QUNoR0o7RURnR0ksaUJBQUE7O0FBbFBBLDBCQUFDO0FBQ0QsMEJBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLDBCQUFDO0VBQ0csV0FBQTs7QUM0SVIsMEJDMUVJO0VBQ0ksWUFBQTs7QUR5RVIsMEJDektJO0FEeUtKLDBCQ3hLSTtFQUNJLHFCQUFBOztBRHVLUiwwQkN6S0ksU0FNSSxFQUFDO0FEbUtULDBCQ3hLSSxXQUtJLEVBQUM7RUFDRyxxQkFBQTs7QURrS1osMEJDOUpJLFNBQ0k7RUY2UEosaUJBQUE7O0FDaEdKLDBCQ3RKSSxXQUlJLEVBQUM7RUZrUEwsZUFBQTs7QUMxRko7RUQwRkksa0JBQUE7O0FBbFBBLDBCQUFDO0FBQ0QsMEJBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLDBCQUFDO0VBQ0csV0FBQTs7QUNrSlIsMEJDOURJO0FEOERKLDBCQzdESTtFQUNJLG1CQUFBOztBRDREUiwwQkMvS0k7QUQrS0osMEJDOUtJO0VBQ0kscUJBQUE7O0FENktSLDBCQy9LSSxTQU1JLEVBQUM7QUR5S1QsMEJDOUtJLFdBS0ksRUFBQztFQUNHLHFCQUFBOztBRHdLWiwwQkNwS0ksU0FDSTtFRjZQSixpQkFBQTs7QUMxRkosMEJDNUpJLFdBSUksRUFBQztFRmtQTCxlQUFBOztBQWxQQSwwQkFBQztBQUNELDBCQUFDO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSiwwQkFBQztFQUNHLFdBQUE7O0FDZ05SLDBCQzVLSTtFQUNJLFlBQUE7O0FEMktSLDBCQ3pLSTtFQUNJLFdBQUE7O0FEd0tSLDBCQzdPSTtBRDZPSiwwQkM1T0k7RUFDSSxxQkFBQTs7QUQyT1IsMEJDN09JLFNBTUksRUFBQztBRHVPVCwwQkM1T0ksV0FLSSxFQUFDO0VBQ0cscUJBQUE7O0FEc09aLDBCQ2xPSSxTQUNJO0VGNlBKLGlCQUFBOztBQzVCSiwwQkMxTkksV0FJSSxFQUFDO0VGa1BMLGVBQUE7O0FDckJKO0VEcUJJLGdCQUFBOztBQWxQQSwwQkFBQztBQUNELDBCQUFDO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSiwwQkFBQztFQUNHLFdBQUE7O0FDdU5SLDBCQzlKSTtFQUNJLFdBQUE7O0FENkpSLDBCQ3BQSTtBRG9QSiwwQkNuUEk7RUFDSSxxQkFBQTs7QURrUFIsMEJDcFBJLFNBTUksRUFBQztBRDhPVCwwQkNuUEksV0FLSSxFQUFDO0VBQ0cscUJBQUE7O0FENk9aLDBCQ3pPSSxTQUNJO0VGNlBKLGlCQUFBOztBQ3JCSiwwQkNqT0ksV0FJSSxFQUFDO0VGa1BMLGVBQUE7O0FDZEo7RURjSSxpQkFBQTs7QUFsUEEsMEJBQUM7QUFDRCwwQkFBQztFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7O0FBRUosMEJBQUM7RUFDRyxXQUFBOztBQzhOUiwwQkNuSkk7RUFDSSxZQUFBOztBRGtKUiwwQkMzUEk7QUQyUEosMEJDMVBJO0VBQ0kscUJBQUE7O0FEeVBSLDBCQzNQSSxTQU1JLEVBQUM7QURxUFQsMEJDMVBJLFdBS0ksRUFBQztFQUNHLHFCQUFBOztBRG9QWiwwQkNoUEksU0FDSTtFRjZQSixpQkFBQTs7QUNkSiwwQkN4T0ksV0FJSSxFQUFDO0VGa1BMLGVBQUE7O0FDd0NKO0VEeENJLFlBQUE7RUFBQSxhQUFBOztBQWxQQSwwQkFBQztBQUNELDBCQUFDO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSiwwQkFBQztFQUNHLFdBQUE7O0FDb1JSLDBCQzVQSTtFQUNJLFdBQUE7O0FEMlBSLDBCQ3pQSTtFQUNJLFlBQUE7O0FEd1BSLDBCQ2pUSTtBRGlUSiwwQkNoVEk7RUFDSSxxQkFBQTs7QUQrU1IsMEJDalRJLFNBTUksRUFBQztBRDJTVCwwQkNoVEksV0FLSSxFQUFDO0VBQ0cscUJBQUE7O0FEMFNaLDBCQ3RTSSxTQUNJO0VGNlBKLGlCQUFBOztBQ3dDSiwwQkM5UkksV0FJSSxFQUFDO0VGa1BMLGVBQUE7O0FDK0NKO0VEL0NJLGdCQUFBOztBQWxQQSwyQkFBQztBQUNELDJCQUFDO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSiwyQkFBQztFQUNHLFdBQUE7O0FDMlJSLDJCQzNPSTtFQUNJLFdBQUE7O0FEME9SLDJCQ3hUSTtBRHdUSiwyQkN2VEk7RUFDSSxxQkFBQTs7QURzVFIsMkJDeFRJLFNBTUksRUFBQztBRGtUVCwyQkN2VEksV0FLSSxFQUFDO0VBQ0cscUJBQUE7O0FEaVRaLDJCQzdTSSxTQUNJO0VGNlBKLGtCQUFBOztBQytDSiwyQkNyU0ksV0FJSSxFQUFDO0VGa1BMLGVBQUE7O0FDc0RKO0VEdERJLGdCQUFBOztBQWxQQSwyQkFBQztBQUNELDJCQUFDO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSiwyQkFBQztFQUNHLFdBQUE7O0FDa1NSLDJCQ2xQSTtFQUNJLFdBQUE7O0FEaVBSLDJCQy9USTtBRCtUSiwyQkM5VEk7RUFDSSxxQkFBQTs7QUQ2VFIsMkJDL1RJLFNBTUksRUFBQztBRHlUVCwyQkM5VEksV0FLSSxFQUFDO0VBQ0cscUJBQUE7O0FEd1RaLDJCQ3BUSSxTQUNJO0VGNlBKLGlCQUFBOztBQ3NESiwyQkM1U0ksV0FDSTtFRnFQSixrQkFBQTs7QUNzREosMkJDNVNJLFdBSUksRUFBQztFRmtQTCxlQUFBOztBQWxQQSwyQkFBQztBQUNELDJCQUFDO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSiwyQkFBQztFQUNHLFdBQUE7O0FDd1RSLDJCQ2hTSTtFQUNJLFdBQUE7O0FEK1JSLDJCQzdSSTtFQUNJLFlBQUE7O0FENFJSLDJCQ3JWSTtBRHFWSiwyQkNwVkk7RUFDSSxxQkFBQTs7QURtVlIsMkJDclZJLFNBTUksRUFBQztBRCtVVCwyQkNwVkksV0FLSSxFQUFDO0VBQ0cscUJBQUE7O0FEOFVaLDJCQzFVSSxTQUNJO0VGNlBKLGlCQUFBOztBQzRFSiwyQkNsVUksV0FJSSxFQUFDO0VGa1BMLGVBQUE7O0FBbFBBLDJCQUFDO0FBQ0QsMkJBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLDJCQUFDO0VBQ0csV0FBQTs7QUN3VFIsMkJDaFNJO0VBQ0ksV0FBQTs7QUQrUlIsMkJDN1JJO0VBQ0ksWUFBQTs7QUQ0UlIsMkJDclZJO0FEcVZKLDJCQ3BWSTtFQUNJLHFCQUFBOztBRG1WUiwyQkNyVkksU0FNSSxFQUFDO0FEK1VULDJCQ3BWSSxXQUtJLEVBQUM7RUFDRyxxQkFBQTs7QUQ4VVosMkJDMVVJLFNBQ0k7RUY2UEosaUJBQUE7O0FDNEVKLDJCQ2xVSSxXQUlJLEVBQUM7RUZrUEwsZUFBQTs7QUNxRkosd0JBTCtDO0VBQzNDLDJCQ3hUQTtFRHdUQSwyQkN2VEE7SUFDSSxjQUFBO0lBQ0EsV0FBQTs7O0FDaENSO0VIb1FJLGdCQUFBOztBR3BRSixzQkM2Q0k7RUNyQ0EsaUJBQUE7RUw0UEEsY0FBQTtFQUFBLFNBQUE7RUFBQSxVQUFBO0VLaE1BLHFCQUFBOztBRnBFSixzQkM2Q0ksT0M0QkE7RUFDSSxxQkFBQTtFQUNBLG1CQUFBOztBRjNFUixzQkNrREk7RUFDSSxTQUFBOztBRG5EUixzQkNxREk7RUorTUEsY0FBQTtFQUFBLHFCQUFBOztBSWxNSSxzQkFiSixFQWFLO0VKa01MLGNBQUE7RUFBQSxxQkFBQTs7QUl0TEksc0JBekJKLEVBeUJLO0VKc0xMLGNBQUE7RUFBQSwwQkFBQTs7QUkxS0ksc0JBckNKLEVBcUNLO0VKMEtMLGNBQUE7RUFBQSxxQkFBQTs7QUdwUUosc0JDdUdJO0VKNkpBLGdCQUFBOztBR3BRSixzQkMrSFEsTUFBSyxJQUFJO0VKcUliLHFCQUFBO0VNOU5BLHFCQUFBOztBQUVBLHNCRnVGSSxNQUFLLElBQUksYUV2Rlo7RU40TkQsYU9qUmUsbUJQaVJmO0VBQUEsU1E2Z0JRLE9SN2dCUjtFQUFBLGVBQUE7RUFBQSxpQkFBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsU0FBQTs7QUcyR0o7RUgzR0ksZ0JBQUE7O0FHMkdKLHNCQ2xVSTtFQ3JDQSxpQkFBQTtFTDRQQSxjQUFBO0VBQUEsU0FBQTtFQUFBLFVBQUE7RUtoTUEscUJBQUE7O0FGMlNKLHNCQ2xVSSxPQzRCQTtFQUNJLHFCQUFBO0VBQ0EsbUJBQUE7O0FGb1NSLHNCQzdUSTtFQUNJLFNBQUE7O0FENFRSLHNCQzFUSTtFSjRESSx5QkFBQTtFQUNBLDJCQUFBO0VBQ0Esa0JBQWtCLHNEQUFsQjtFQUNBLGtCQUFrQixvREFBbEI7RUFDQSxrSEFBQTtFQStJSix5QkFBQTtFQUFBLHFCQUFBO0VBQUEsZ0JBQUE7RUFBQSxjQUFBO0VBQUEscUJBQUE7O0FJbE1JLHNCQWJKLEVBYUs7RUorQ0QsdUJBQUE7RUFDQSwyQkFBQTtFQUNBLGtCQUFrQixrREFBbEI7RUFDQSxrQkFBa0IsZ0RBQWxCO0VBQ0EsOEdBQUE7RUErSUosY0FBQTtFQUFBLHFCQUFBOztBSXRMSSxzQkF6QkosRUF5Qks7RUptQ0QseUJBQUE7RUFDQSwyQkFBQTtFQUNBLGtCQUFrQixzREFBbEI7RUFDQSxrQkFBa0Isb0RBQWxCO0VBQ0Esa0hBQUE7RUErSUosY0FBQTtFQUFBLHFCQUFBOztBSTFLSSxzQkFyQ0osRUFxQ0s7RUp1QkQsdUJBQUE7RUFDQSwyQkFBQTtFQUNBLGtCQUFrQixrREFBbEI7RUFDQSxrQkFBa0IsZ0RBQWxCO0VBQ0EsOEdBQUE7RUErSUosY0FBQTtFQUFBLHFCQUFBOztBRzJHSixzQkN4UUk7RUpVSSx5QkFBQTtFQUNBLDJCQUFBO0VBQ0Esa0JBQWtCLHNEQUFsQjtFQUNBLGtCQUFrQixvREFBbEI7RUFDQSxrSEFBQTtFQStJSix5QkFBQTtFQUFBLHFCQUFBO0VBQUEsZ0JBQUE7RUFBQSxnQkFBQTs7QUcyR0osc0JDaFBRLE1BQUssSUFBSTtFSnFJYixxQkFBQTtFTTlOQSxxQkFBQTs7QUFFQSxzQkZ1RkksTUFBSyxJQUFJLGFFdkZaO0VONE5ELGFPalJlLG1CUGlSZjtFQUFBLFNRNmdCUSxPUjdnQlI7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLG1CQUFBO0VNcURBLGtCQUFBO0VOckRBLFNBQUE7O0FHeUtKO0VIektJLGdCQUFBOztBR3lLSixzQkNoWUk7RUNyQ0EsaUJBQUE7RUw0UEEsY0FBQTtFQUFBLFNBQUE7RUFBQSxVQUFBO0VLaE1BLHFCQUFBOztBRnlXSixzQkNoWUksT0M0QkE7RUFDSSxxQkFBQTtFQUNBLG1CQUFBOztBRmtXUixzQkMzWEk7RUFDSSxTQUFBOztBRDBYUixzQkN4WEk7RUorTUEsbUJBQUE7RUFBQSxxQkFBQTtFQUFBLGdCQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBOztBSWxNSSxzQkFiSixFQWFLO0VKa01MLGNBQUE7RUFBQSxxQkFBQTs7QUl0TEksc0JBekJKLEVBeUJLO0VKc0xMLG1CQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBOztBSTFLSSxzQkFyQ0osRUFxQ0s7RUowS0wsY0FBQTtFQUFBLHFCQUFBOztBR3lLSixzQkN0VUk7RUo2SkEsbUJBQUE7RUFBQSxxQkFBQTtFQUFBLGdCQUFBO0VBQUEsZ0JBQUE7O0FHeUtKLHNCQzlTUSxNQUFLLElBQUk7RUpxSWIscUJBQUE7RU05TkEscUJBQUE7O0FBRUEsc0JGdUZJLE1BQUssSUFBSSxhRXZGWjtFTjRORCxhT2pSZSxtQlBpUmY7RUFBQSxTUTZnQlEsT1I3Z0JSO0VBQUEsZUFBQTtFQUFBLGlCQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBR3lLSixzQkFXSSxNQUFNO0VBQ0Ysa0JBQUE7RUFDQSxrQkFBQTs7QUFDQSxzQkFISixNQUFNLEVBR0Q7RUh6SUwsOEJBQUE7RUFDQSxTQUFBO0VBQ0EsUUFBQTtFQWVBLDBCQUFBO0VHMEhRLFNBQVMsRUFBVDtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLE1BQUE7RUFDQSxZQUFBOztBQUVKLHNCQVhKLE1BQU0sRUFXRCxNQUFNO0VBQ0gsc0RBQUE7O0FNamNaO0VDb0JJLHNCQUFBO0VWNk9BLG1CQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VBQUEseUJBQUE7RUFBQSxlQUFBO0VBQUEscUJBQUE7RUFBQSxhTzlRc0IsOENQOFF0QjtFSzVQQSxpQkFBQTtFTDRQQSxnQkFBQTtFS3RQQSxtQkFBQTtFSzJCQSxzQkFBQTtFVjJOQSxXQUFBO0VVek5BLHNCQUFBO0VEdENBLGtCQUFBOztBQ3FEQSxNQUFDO0FBQ0QsTUFBQztFVnlNRCxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsY0FBQTs7QVU5TEEsTUFBQztFVjhMRCxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsY0FBQTs7QVVuTEEsTUFBQztBQUNELE1BQUM7QUFDRCxRQUFRLFVBQVc7RUFDZixlQUFBO0VBQ0Esb0JBQUE7RVYrS0osWUFBQTs7QVM5UEEsTUFBQztBQUNELE1BQUM7RUFDRywrQ0FBQTs7QUFLSixpQkFBQztFSkNELG1CQUFBO0VMc1BBLGtCQUFBO0VLNVBBLGlCQUFBOztBSVFBLGlCQUFDO0VKRkQsbUJBQUE7RUxzUEEsZ0JBQUE7RUs1UEEsaUJBQUE7RUlVSSxnQkFBQTtFQUNBLFdBQUE7O0FBQ0EsaUJBSkgsaUJBSUk7QUFDRCxpQkFMSCxpQkFLSTtFQUNHLFdBQUE7O0FBcVNaO0VUdkRJLG1CQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VBQUEseUJBQUE7RUFBQSxlQUFBO0VBQUEsYU85UXNCLDhDUDhRdEI7RUs1UEEsaUJBQUE7RUw0UEEsZ0JBQUE7RUt0UEEsbUJBQUE7RUsyQkEsc0JBQUE7RVYyTkEsV0FBQTtFVXpOQSxzQkFBQTtFVnlOQSxxQkFBQTtFVTVEQSxzQkFBQTtFQUNBLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLFNBQUE7RUFDQSxVQUFBO0VBQ0EsNEJBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EscUJBQUE7RUFDQSxvQkFBQTtFVm1EQSxnQkFBQTs7QVN1REosa0JIOUVJO0VOblBBLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0FNREEsa0JBQUM7RU5vUUQsYU9qUmUsbUJQaVJmO0VBQUEsU1FzaEJRLE9SdGhCUjtFQUFBLGVBQUE7RUFBQSxpQkFBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLG1CQUFBO0VNcURBLGtCQUFBO0VOckRBLFNBQUE7O0FNeFBJLGtCQURILE1BQ0k7RU53UEwsY0FBQTs7QU1uUEksa0JBREgsT0FDSTtFTm1QTCxjQUFBOztBVTFNQSxrQkFBQztBQUNELGtCQUFDO0VWeU1ELG1CQUFBO0VBQUEseUJBQUE7RUFBQSxjQUFBOztBVTlMQSxrQkFBQztFVjhMRCxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsY0FBQTs7QVVuTEEsa0JBQUM7QUFDRCxrQkFBQztBQUNELFFBQVEsVUFBVztFQUNmLGVBQUE7RUFDQSxvQkFBQTtFVitLSixZQUFBOztBVWpEQSxrQkFBQztBQUNELGtCQUFDO0VBQ0csZ0JBQUE7RUFDQSxZQUFBOztBQUVKLGtCQUFDO0VBQ0csZ0JBQUE7RUFDQSxZQUFBOztBQUVKLGtCQUFDO0FBQ0Qsa0JBQUM7QUFDRCxRQUFRLFVBQVc7RUFDZixtQkFBQTtFQUNBLG9CQUFBO0VWb0NKLFlBQUE7O0FTNEdKO0VDelZJLHNCQUFBO0VWNk9BLG1CQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VBQUEseUJBQUE7RUFBQSxlQUFBO0VBQUEsYU85UXNCLDhDUDhRdEI7RUs1UEEsaUJBQUE7RUw0UEEsZ0JBQUE7RUt0UEEsbUJBQUE7RUsyQkEsc0JBQUE7RVYyTkEsV0FBQTtFVXpOQSxzQkFBQTtFVnlOQSxxQkFBQTtFTXZRQSxxQkFBQTs7QUFHQSxrQkFBQztFTm9RRCxhT2pSZSxtQlBpUmY7RUFBQSxTUXNoQlEsT1J0aEJSO0VBQUEsZUFBQTtFQUFBLGlCQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsU0FBQTs7QU14UEksa0JBREgsTUFDSTtFTndQTCxjQUFBOztBTW5QSSxrQkFESCxPQUNJO0VObVBMLGNBQUE7O0FVMU1BLGtCQUFDO0FBQ0Qsa0JBQUM7RVZ5TUQsbUJBQUE7RUFBQSx5QkFBQTtFQUFBLGNBQUE7O0FVOUxBLGtCQUFDO0VWOExELG1CQUFBO0VBQUEseUJBQUE7RUFBQSxjQUFBOztBVW5MQSxrQkFBQztBQUNELGtCQUFDO0FBQ0QsUUFBUSxVQUFXO0VBQ2YsZUFBQTtFQUNBLG9CQUFBO0VWK0tKLFlBQUE7O0FTcUhKO0VDbFdJLHNCQUFBO0VWNk9BLG1CQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VBQUEseUJBQUE7RUFBQSxlQUFBO0VBQUEsYU85UXNCLDhDUDhRdEI7RUs1UEEsaUJBQUE7RUw0UEEsZ0JBQUE7RUt0UEEsbUJBQUE7RUsyQkEsc0JBQUE7RVYyTkEsV0FBQTtFVXpOQSxzQkFBQTtFVnlOQSxxQkFBQTtFTTlOQSxxQkFBQTs7QUFFQSxrQkFBQztFTjRORCxhT2pSZSxtQlBpUmY7RUFBQSxTUXNoQlEsT1J0aEJSO0VBQUEsZUFBQTtFQUFBLGlCQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsU0FBQTs7QU1oTkksa0JBREgsTUFDSTtFTmdOTCxjQUFBOztBTTNNSSxrQkFESCxPQUNJO0VOMk1MLGNBQUE7O0FVMU1BLGtCQUFDO0FBQ0Qsa0JBQUM7RVZ5TUQsbUJBQUE7RUFBQSx5QkFBQTtFQUFBLGNBQUE7O0FVOUxBLGtCQUFDO0VWOExELG1CQUFBO0VBQUEseUJBQUE7RUFBQSxjQUFBOztBVW5MQSxrQkFBQztBQUNELGtCQUFDO0FBQ0QsUUFBUSxVQUFXO0VBQ2YsZUFBQTtFQUNBLG9CQUFBO0VWK0tKLFlBQUE7O0FTcUpKO0VDbFlJLHNCQUFBO0VWNk9BLG1CQUFBO0VBQUEsaUJBQUE7RUFBQSxZQUFBO0VBQUEsY0FBQTtFQUFBLHlCQUFBO0VBQUEsZUFBQTtFQUFBLHFCQUFBO0VBQUEsYU85UXNCLDhDUDhRdEI7RUs1UEEsaUJBQUE7RUw0UEEsZ0JBQUE7RUt0UEEsbUJBQUE7RUsyQkEsc0JBQUE7RVYyTkEsV0FBQTtFVXpOQSxzQkFBQTs7QUFlQSxrQkFBQztBQUNELGtCQUFDO0VWeU1ELG1CQUFBO0VBQUEseUJBQUE7RUFBQSxjQUFBOztBVTlMQSxrQkFBQztFVjhMRCxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsY0FBQTs7QVVuTEEsa0JBQUM7QUFDRCxrQkFBQztBQUNELFFBQVEsVUFBVztFQUNmLGVBQUE7RUFDQSxvQkFBQTtFVitLSixZQUFBOztBU3NMSjtFQ25hSSxzQkFBQTtFVjZPQSxtQkFBQTtFQUFBLGlCQUFBO0VBQUEsY0FBQTtFQUFBLHlCQUFBO0VBQUEsZUFBQTtFQUFBLHFCQUFBO0VBQUEsYU85UXNCLDhDUDhRdEI7RUs1UEEsaUJBQUE7RUw0UEEsZ0JBQUE7RVUzTkEsc0JBQUE7RVYyTkEsV0FBQTtFVXpOQSxzQkFBQTs7QUFlQSxpQkFBQztBQUNELGlCQUFDO0VWeU1ELG1CQUFBO0VBQUEseUJBQUE7RUFBQSxjQUFBOztBVTlMQSxpQkFBQztFVjhMRCxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsY0FBQTs7QVVuTEEsaUJBQUM7QUFDRCxpQkFBQztBQUNELFFBQVEsVUFBVztFQUNmLGVBQUE7RUFDQSxvQkFBQTtFVitLSixZQUFBOztBUzBMQSxpQkFBQztFQUNHLCtDQUFBOztBQUVKLGlCQUFDO0VKbmJELG1CQUFBO0VMc1BBLGlCQUFBO0VLNVBBLGlCQUFBOztBSTRiQSxpQkFBQztFSnRiRCxtQkFBQTtFTHNQQSxnQkFBQTtFSzVQQSxpQkFBQTtFSThiSSxXQUFBOztBQUNBLGlCQUhILGlCQUdJO0FBQ0QsaUJBSkgsaUJBSUk7RUFDRyxXQUFBOztBQXFLWjtFQ3ZsQkksc0JBQUE7RVY2T0EsbUJBQUE7RUFuSkkseUJBQUE7RUFDQSwyQkFBQTtFQUNBLGtCQUFrQixzREFBbEI7RUFDQSxrQkFBa0Isb0RBQWxCO0VBQ0Esa0hBQUE7RUErSUosaUJBQUE7RUFBQSxjQUFBO0VBQUEseUJBQUE7RUFBQSxlQUFBO0VBQUEscUJBQUE7RUFBQSxhTzlRc0IsOENQOFF0QjtFSzVQQSxpQkFBQTtFTDRQQSxnQkFBQTtFS3RQQSxtQkFBQTtFSzJCQSxzQkFBQTtFVjJOQSxXQUFBO0VVek5BLHNCQUFBO0VEc2xCQSxrQkFBQTs7QUN2a0JBLGlCQUFDO0FBQ0QsaUJBQUM7RVZ5TUQsbUJBQUE7RUFuSkkseUJBQUE7RUFDQSwyQkFBQTtFQUNBLGtCQUFrQixzREFBbEI7RUFDQSxrQkFBa0Isb0RBQWxCO0VBQ0Esa0hBQUE7RUErSUoseUJBQUE7RUFBQSxjQUFBOztBVTlMQSxpQkFBQztFVjhMRCxtQkFBQTtFQW5KSSx5QkFBQTtFQUNBLDJCQUFBO0VBQ0Esa0JBQWtCLHNEQUFsQjtFQUNBLGtCQUFrQixvREFBbEI7RUFDQSxrSEFBQTtFQStJSix5QkFBQTtFQUFBLGNBQUE7O0FVbkxBLGlCQUFDO0FBQ0QsaUJBQUM7QUFDRCxRQUFRLFVBQVc7RUFDZixlQUFBO0VBQ0Esb0JBQUE7RVYrS0osWUFBQTs7QVM4WEEsaUJBQUM7RUFDRywrQ0FBQTs7QUFpQlI7RUNwZkksZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsZUFBQTtFVmtHQSx1QkFBQTtFQUFBLFNBQUE7RUFBQSxVQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBO0VTa1pBLG1CQUFBOztBSjNqQkEsaUJBQUM7RUx5S0QsY0FBQTtFQUFBLHFCQUFBOztBS3JLQSxpQkFBQztFTHFLRCxjQUFBO0VBQUEsMEJBQUE7O0FLaktBLGlCQUFDO0VMaUtELGNBQUE7RUFBQSwwQkFBQTs7QVU3RkEsaUJBQUM7RVY2RkQsY0FBQTs7QVUxRkEsaUJBQUM7QUFDRCxpQkFBQztBQUNELGlCQUFDO0VBQ0csZ0JBQUE7RUFDQSxTQUFBOztBQUVKLGlCQUFDO0FBQ0QsaUJBQUM7QUFDRCxRQUFRLFVBQVc7RVZrRm5CLGNBQUE7RVVoRkksMEJBQUE7RUFDQSxlQUFBO0VBQ0Esb0JBQUE7RVY4RUosWUFBQTs7QVNtWkEsaUJBQUM7RUFDRyxnQkFBQTs7QUF5RFI7RUNya0JJLHFCQUFBO0VBckhBLHNCQUFBO0VWNk9BLG1CQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VBQUEseUJBQUE7RUFBQSxlQUFBO0VBQUEscUJBQUE7RUFBQSxhTzlRc0IsOENQOFF0QjtFSzVQQSxpQkFBQTtFTDRQQSxnQkFBQTtFS3RQQSxtQkFBQTtFSzJCQSxzQkFBQTtFVjJOQSxTQUFBO0VVek5BLHNCQUFBO0VEeXFCQSxXQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTs7QUN6a0JBLGlCQUFDO0FBQ0QsaUJBQUM7QUFDRCxpQkFBQztFQUNHLHFCQUFBOztBQXRGSixpQkFBQztBQUNELGlCQUFDO0VWeU1ELG1CQUFBO0VBQUEseUJBQUE7RUFBQSxjQUFBOztBVTlMQSxpQkFBQztFVjhMRCxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsY0FBQTs7QVVuTEEsaUJBQUM7QUFDRCxpQkFBQztBQUNELFFBQVEsVUFBVztFQUNmLGVBQUE7RUFDQSxvQkFBQTtFVitLSixZQUFBOztBU21kQSxpQkFBQztFQUNHLCtDQUFBOztBQWFSO0VDN2hCSSxzQkFBQTtFQUNBLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLFNBQUE7RUFDQSxVQUFBO0VBQ0EsNEJBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EscUJBQUE7RUFDQSxvQkFBQTtFVm1EQSxnQkFBQTs7QVVqREEsa0JBQUM7QUFDRCxrQkFBQztFQUNHLGdCQUFBO0VBQ0EsWUFBQTs7QUFFSixrQkFBQztFQUNHLGdCQUFBO0VBQ0EsWUFBQTs7QUFFSixrQkFBQztBQUNELGtCQUFDO0FBQ0QsUUFBUSxVQUFXO0VBQ2YsbUJBQUE7RUFDQSxvQkFBQTtFVm9DSixZQUFBOztBU2dmSjtFQzd0Qkksc0JBQUE7RVY2T0EsbUJBQUE7RUFBQSxpQkFBQTtFQUFBLGNBQUE7RUFBQSx5QkFBQTtFQUFBLGVBQUE7RUFBQSxxQkFBQTtFQUFBLGFPOVFzQiw4Q1A4UXRCO0VLNVBBLGlCQUFBO0VMNFBBLGdCQUFBO0VVM05BLHNCQUFBO0VBRUEsc0JBQUE7RVZ5TkEsbUJBQUE7RUFBQSxjQUFBO0VBQUEseUJBQUE7O0FVMU1BLGtCQUFDO0FBQ0Qsa0JBQUM7RVZ5TUQsbUJBQUE7RUFBQSx5QkFBQTtFQUFBLGNBQUE7O0FVOUxBLGtCQUFDO0VWOExELG1CQUFBO0VBQUEseUJBQUE7RUFBQSxjQUFBOztBVW5MQSxrQkFBQztBQUNELGtCQUFDO0FBQ0QsUUFBUSxVQUFXO0VBQ2YsZUFBQTtFQUNBLG9CQUFBO0VWK0tKLFlBQUE7O0FVeUNBLGtCQUFDO0FBQ0Qsa0JBQUM7RVYxQ0QsbUJBQUE7RUFBQSxjQUFBO0VBQUEseUJBQUE7O0FVK0NBLGtCQUFDO0VWL0NELG1CQUFBO0VBQUEsY0FBQTtFQUFBLHlCQUFBOztBU2trQko7RUp4ekJJLG1CQUFBO0VMc1BBLGtCQUFBO0VLNVBBLGlCQUFBO0VBQUEsaUJBQUE7RUFNQSxtQkFBQTtFTHNQQSxpQkFBQTs7QVNza0JKO0VKbDBCSSxlQUFBO0VBTUEsbUJBQUE7RUxzUEEsaUJBQUE7O0FXL1BKO0VDbUJJLHFCQUFBO0VBQ0Esa0JBQUE7O0FaUEEsbUJBQUM7QUFDRCxtQkFBQztFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7O0FBRUosbUJBQUM7RUFDRyxXQUFBOztBV25CUixtQkNzQkk7RUFFSSxlQUFBO0VadU9KLHFCQUFBO0VNOU5BLHFCQUFBOztBQUVBLG1CTWJBLGVOYUM7RU40TkQsYU9qUmUsbUJQaVJmO0VBQUEsU1E0Z0JnQixPUjVnQmhCO0VBQUEsZUFBQTtFQUFBLGlCQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsU0FBQTs7QU1oTkksbUJNekJKLGVOd0JDLE1BQ0k7RU5nTkwsY0FBQTs7QU0zTUksbUJNOUJKLGVONkJDLE9BQ0k7RU4yTUwsY0FBQTs7QVlpRUEsbUJBMVNBLGVBMFNDO0VaakVELHFCQUFBO0VNOU5BLHFCQUFBOztBQUVBLG1CTWJBLGVBMFNDLE9ON1JBO0VONE5ELGFPalJlLG1CUGlSZjtFQUFBLFNRNmhCYyxPUjdoQmQ7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTWhOSSxtQk16QkosZUEwU0MsT05sUkEsTUFDSTtFTmdOTCxjQUFBOztBTTNNSSxtQk05QkosZUEwU0MsT043UUEsT0FDSTtFTjJNTCxjQUFBOztBVy9QSixtQkMyTUk7RVpvREEsU0FBQTtFQUFBLFVBQUE7RUtoTUEscUJBQUE7RU84SUksc0JBQUE7RVprREosbUJBQUE7RUFBQSx5QkFBQTtFWS9DSSxrQkFBQTtFWitDSixZQUFBO0VBQUEsU0FBQTtFQUFBLGVBQUE7RUFBQSxlQUFBO0VZbkNJLGFBQUE7RVptQ0oseUNBQUE7O0FXL1BKLG1CQzJNSSxZQW1CSTtFWmlDSixTQUFBO0VBQUEsZ0JBQUE7O0FZM0JRLG1CQXpCUixZQW1CSSxHQU1LO0VaMkJULG1CQUFBO0VZekJZLGVBQUE7O0FBd1NaLG1CQW5VQSxZQW1VQztBQUNELG1CQXBVQSxZQW9VQztFQUNHLFNBQVMsRUFBVDtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0EsMEJBQUE7O0FBRUosbUJBNVVBLFlBNFVDO0VBQ0csV0FBQTtFQUNBLGlCQUFBO0VBQ0EseURBQUE7O0FBRUosbUJBalZBLFlBaVZDO0VBQ0csV0FBQTtFQUNBLGlCQUFBO0VBQ0EseURBQUE7O0FBcERKLG1CQWhTQSxZQWdTQztFWjVPRCxVQUFBO0VBQUEsVUFBQTs7QVlnUEEsbUJBcFNBLFlBb1NDO0VaaFBELFVBQUE7RUFBQSxTQUFBOztBWWRBLG1CQUFDO0VBQ0csaUJBQUE7O0FBREosbUJBQUMsT0FFRztFQUNJLGNBQUE7O0FEek5aO0VDUkkscUJBQUE7RUFDQSxrQkFBQTs7QVpQQSxtQkFBQztBQUNELG1CQUFDO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSixtQkFBQztFQUNHLFdBQUE7O0FXUVIsbUJDTEk7RUFFSSxlQUFBO0VadU9KLHFCQUFBO0VNOU5BLHFCQUFBOztBQUVBLG1CTWJBLGVOYUM7RU40TkQsYU9qUmUsbUJQaVJmO0VBQUEsU1E0Z0JnQixPUjVnQmhCO0VBQUEsZUFBQTtFQUFBLGlCQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsU0FBQTs7QU1oTkksbUJNekJKLGVOd0JDLE1BQ0k7RU5nTkwsY0FBQTs7QU0zTUksbUJNOUJKLGVONkJDLE9BQ0k7RU4yTUwsY0FBQTs7QVlpRUEsbUJBMVNBLGVBMFNDO0VaakVELHFCQUFBO0VNOU5BLHFCQUFBOztBQUVBLG1CTWJBLGVBMFNDLE9ON1JBO0VONE5ELGFPalJlLG1CUGlSZjtFQUFBLFNRNmhCYyxPUjdoQmQ7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTWhOSSxtQk16QkosZUEwU0MsT05sUkEsTUFDSTtFTmdOTCxjQUFBOztBTTNNSSxtQk05QkosZUEwU0MsT043UUEsT0FDSTtFTjJNTCxjQUFBOztBV3BPSixtQkNnTEk7RVpvREEsU0FBQTtFQUFBLFVBQUE7RUtoTUEscUJBQUE7RU84SUksc0JBQUE7RVprREosbUJBQUE7RUFBQSx5QkFBQTtFWS9DSSxrQkFBQTtFWitDSixZQUFBO0VBQUEsU0FBQTtFQUFBLGVBQUE7RUFBQSxlQUFBO0VZbkNJLGFBQUE7RVptQ0oseUNBQUE7O0FXcE9KLG1CQ2dMSSxZQW1CSTtFWmlDSixTQUFBO0VBQUEsZ0JBQUE7O0FZM0JRLG1CQXpCUixZQW1CSSxHQU1LO0VaMkJULG1CQUFBO0VZekJZLGVBQUE7O0FBd1NaLG1CQW5VQSxZQW1VQztBQUNELG1CQXBVQSxZQW9VQztFQUNHLFNBQVMsRUFBVDtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0EsMEJBQUE7O0FBRUosbUJBNVVBLFlBNFVDO0VBQ0csV0FBQTtFQUNBLGlCQUFBO0VBQ0EseURBQUE7O0FBRUosbUJBalZBLFlBaVZDO0VBQ0csV0FBQTtFQUNBLGlCQUFBO0VBQ0EseURBQUE7O0FBcERKLG1CQWhTQSxZQWdTQztFWjVPRCxVQUFBO0VBQUEsVUFBQTs7QVlnUEEsbUJBcFNBLFlBb1NDO0VaaFBELFVBQUE7RUFBQSxTQUFBOztBWWRBLG1CQUFDO0VBQ0csaUJBQUE7O0FBREosbUJBQUMsT0FFRztFQUNJLGNBQUE7O0FESlo7RUM3TkkscUJBQUE7RUFDQSxrQkFBQTs7QVpQQSxtQkFBQztBQUNELG1CQUFDO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSixtQkFBQztFQUNHLFdBQUE7O0FXNk5SLG1CQzFOSTtFQUVJLGVBQUE7RVp1T0oscUJBQUE7RU12UUEscUJBQUE7O0FBR0EsbUJNMkJBLGVOM0JDO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRaWlCVSxPUmppQlY7RUFBQSxlQUFBO0VBQUEsY0FBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLG1CQUFBO0VNcURBLGtCQUFBO0VOckRBLFNBQUE7O0FNeFBJLG1CTWVKLGVOaEJDLE1BQ0k7RU53UEwsY0FBQTs7QU1uUEksbUJNVUosZU5YQyxPQUNJO0VObVBMLGNBQUE7O0FZaUVBLG1CQTFTQSxlQTBTQztFWmpFRCxxQkFBQTtFTXZRQSxxQkFBQTs7QUFHQSxtQk0yQkEsZUEwU0MsT05yVUE7RU5vUUQsYU9qUmUsbUJQaVJmO0VBQUEsU1FvaEJZLE9ScGhCWjtFQUFBLGVBQUE7RUFBQSxjQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsU0FBQTs7QU14UEksbUJNZUosZUEwU0MsT04xVEEsTUFDSTtFTndQTCxjQUFBOztBTW5QSSxtQk1VSixlQTBTQyxPTnJUQSxPQUNJO0VObVBMLGNBQUE7O0FXZkosbUJDckNJO0Vab0RBLFNBQUE7RUFBQSxVQUFBO0VLaE1BLHFCQUFBO0VPOElJLHNCQUFBO0Vaa0RKLG1CQUFBO0VBQUEseUJBQUE7RVkvQ0ksa0JBQUE7RVorQ0osWUFBQTtFQUFBLFNBQUE7RUFBQSxlQUFBO0VBQUEsZUFBQTtFWW5DSSxhQUFBO0VabUNKLHlDQUFBOztBV2ZKLG1CQ3JDSSxZQW1CSTtFWmlDSixTQUFBO0VBQUEsZ0JBQUE7O0FZM0JRLG1CQXpCUixZQW1CSSxHQU1LO0VaMkJULG1CQUFBO0VZekJZLGVBQUE7O0FBd1NaLG1CQW5VQSxZQW1VQztBQUNELG1CQXBVQSxZQW9VQztFQUNHLFNBQVMsRUFBVDtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0EsMEJBQUE7O0FBRUosbUJBNVVBLFlBNFVDO0VBQ0csV0FBQTtFQUNBLGlCQUFBO0VBQ0EseURBQUE7O0FBRUosbUJBalZBLFlBaVZDO0VBQ0csV0FBQTtFQUNBLGlCQUFBO0VBQ0EseURBQUE7O0FBcERKLG1CQWhTQSxZQWdTQztFWjVPRCxVQUFBO0VBQUEsVUFBQTs7QVlnUEEsbUJBcFNBLFlBb1NDO0VaaFBELFVBQUE7RUFBQSxTQUFBOztBWWRBLG1CQUFDO0VBQ0csaUJBQUE7O0FBREosbUJBQUMsT0FFRztFQUNJLGNBQUE7O0FEOEJaO0VDL1BJLHFCQUFBO0VBQ0Esa0JBQUE7O0FaUEEsbUJBQUM7QUFDRCxtQkFBQztFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7O0FBRUosbUJBQUM7RUFDRyxXQUFBOztBVytQUixtQkM1UEk7RUFFSSxlQUFBO0VadU9KLHFCQUFBO0VNOU5BLHFCQUFBOztBQUVBLG1CTWJBLGVOYUM7RU40TkQsYU9qUmUsbUJQaVJmO0VBQUEsU1E0Z0JnQixPUjVnQmhCO0VBQUEsZUFBQTtFQUFBLGNBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTWhOSSxtQk16QkosZU53QkMsTUFDSTtFTmdOTCxjQUFBOztBTTNNSSxtQk05QkosZU42QkMsT0FDSTtFTjJNTCxjQUFBOztBWWlFQSxtQkExU0EsZUEwU0M7RVpqRUQscUJBQUE7RU05TkEscUJBQUE7O0FBRUEsbUJNYkEsZUEwU0MsT043UkE7RU40TkQsYU9qUmUsbUJQaVJmO0VBQUEsU1E2aEJjLE9SN2hCZDtFQUFBLGVBQUE7RUFBQSxjQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsU0FBQTs7QU1oTkksbUJNekJKLGVBMFNDLE9ObFJBLE1BQ0k7RU5nTkwsY0FBQTs7QU0zTUksbUJNOUJKLGVBMFNDLE9ON1FBLE9BQ0k7RU4yTUwsY0FBQTs7QVdtQkosbUJDdkVJO0Vab0RBLFNBQUE7RUFBQSxVQUFBO0VLaE1BLHFCQUFBO0VPOElJLHNCQUFBO0Vaa0RKLG1CQUFBO0VBQUEseUJBQUE7RVkvQ0ksa0JBQUE7RVorQ0osWUFBQTtFQUFBLFNBQUE7RUFBQSxlQUFBO0VBQUEsZUFBQTtFWW5DSSxhQUFBOztBRHNEUixtQkN2RUksWUFtQkk7RVppQ0osU0FBQTtFQUFBLGFBQUE7RUFBQSw2QkFBQTs7QVl5U0EsbUJBN1ZBLFlBbUJJLEdBMFVIO0VBQ0csWUFBQTs7QUFyVUksbUJBekJSLFlBbUJJLEdBTUs7RVoyQlQsbUJBQUE7RVl6QlksZUFBQTs7QUFXWixtQkFBQztFQUNHLGlCQUFBOztBQURKLG1CQUFDLE9BRUc7RUFDSSxjQUFBOztBRCtGWjtFQzdOSSxxQkFBQTtFQUNBLGtCQUFBOztBWjFHQSxtQkFBQztBQUNELG1CQUFDO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSixtQkFBQztFQUNHLFdBQUE7O0FXZ1VSLG1CQ3VFSTtFQUNJLFdBQUE7RUFDQSxTQUFBOztBRHpFUixtQkMyRUk7RUFDSSxZQUFBO0VBQ0EsU0FBQTs7QUQ3RVIsbUJDMEZJLE9BQU07RUFDRiwwQkFBQTtFQUNBLDZCQUFBOztBRDVGUixtQkM4RkksT0FBTztFQUNILGNBQUE7RUFDQSx5QkFBQTtFQUNBLDRCQUFBOztBRGpHUixtQkNqTkk7RVo2SEEsZ0JBQUE7RUFBQSxxQkFBQTtFTTlOQSxxQkFBQTs7QUtrVEosbUJDak5JLGVOc0dBO0VOblBBLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0FNdUNBLG1CTStGQSxlTi9GQztFTjRORCxhT2pSZSxtQlBpUmY7RUFBQSxTUTRnQmdCLE9SNWdCaEI7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTWhOSSxtQk1tRkosZU5wRkMsTUFDSTtFTmdOTCxjQUFBOztBTTNNSSxtQk04RUosZU4vRUMsT0FDSTtFTjJNTCxjQUFBOztBWWtIQSxtQkEvT0EsZUErT0M7RVpsSEQscUJBQUE7RU05TkEscUJBQUE7O0FNZ1ZBLG1CQS9PQSxlQStPQyxPTnpJRDtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTXVDQSxtQk0rRkEsZUErT0MsT045VUE7RU40TkQsYU9qUmUsbUJQaVJmO0VBQUEsU1E2aEJjLE9SN2hCZDtFQUFBLGVBQUE7RUFBQSxpQkFBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLG1CQUFBO0VNcURBLGtCQUFBO0VOckRBLFNBQUE7O0FNaE5JLG1CTW1GSixlQStPQyxPTm5VQSxNQUNJO0VOZ05MLGNBQUE7O0FNM01JLG1CTThFSixlQStPQyxPTjlUQSxPQUNJO0VOMk1MLGNBQUE7O0FXb0ZKLG1CQ3hJSTtFWm9EQSxTQUFBO0VBQUEsVUFBQTtFS2hNQSxxQkFBQTtFTzhJSSxzQkFBQTtFWmtESixtQkFBQTtFQUFBLHlCQUFBO0VZL0NJLGtCQUFBO0VaK0NKLFlBQUE7RUFBQSxTQUFBO0VBQUEsZUFBQTtFQUFBLGVBQUE7RVluQ0ksYUFBQTtFWm1DSix5Q0FBQTs7QVdvRkosbUJDeElJLFlBbUJJO0VaaUNKLFNBQUE7RUFBQSxnQkFBQTs7QVkzQlEsbUJBekJSLFlBbUJJLEdBTUs7RVoyQlQsbUJBQUE7RVl6QlksZUFBQTs7QUF3U1osbUJBblVBLFlBbVVDO0FBQ0QsbUJBcFVBLFlBb1VDO0VBQ0csU0FBUyxFQUFUO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSwwQkFBQTs7QUFFSixtQkE1VUEsWUE0VUM7RUFDRyxXQUFBO0VBQ0EsaUJBQUE7RUFDQSx5REFBQTs7QUFFSixtQkFqVkEsWUFpVkM7RUFDRyxXQUFBO0VBQ0EsaUJBQUE7RUFDQSx5REFBQTs7QUEvQkosbUJBclRBLFlBcVRDO0VaalFELFVBQUE7RUFBQSxXQUFBOztBWXFRQSxtQkF6VEEsWUF5VEM7RVpyUUQsVUFBQTtFQUFBLFVBQUE7O0FZZEEsbUJBQUM7RUFDRyxpQkFBQTs7QUFESixtQkFBQyxPQUVHO0VBQ0ksY0FBQTs7QURxR1osTUFBTTtFQ25PRixxQkFBQTtFQUNBLGtCQUFBOztBWjFHQSxNVzRVRSxtQlg1VUQ7QUFDRCxNVzJVRSxtQlgzVUQ7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLE1XdVVFLG1CWHZVRDtFQUNHLFdBQUE7O0FXc1VSLE1BQU0sbUJDaUVGO0VBQ0ksV0FBQTtFQUNBLFNBQUE7O0FEbkVSLE1BQU0sbUJDcUVGO0VBQ0ksWUFBQTtFQUNBLFNBQUE7O0FEdkVSLE1BQU0sbUJDdk5GO0VaNkhBLGdCQUFBO0VBQUEscUJBQUE7RU05TkEscUJBQUE7O0FLd1RKLE1BQU0sbUJDdk5GLGVOc0dBO0VOblBBLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0FNdUNBLE1Lc1RFLG1CQ3ZORixlTi9GQztFTjRORCxhT2pSZSxtQlBpUmY7RUFBQSxTUTRnQmdCLE9SNWdCaEI7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTWhOSSxNSzBTRixtQkN2TkYsZU5wRkMsTUFDSTtFTmdOTCxjQUFBOztBTTNNSSxNS3FTRixtQkN2TkYsZU4vRUMsT0FDSTtFTjJNTCxjQUFBOztBWWtIQSxNRHhCRSxtQkN2TkYsZUErT0M7RVpsSEQscUJBQUE7RU05TkEscUJBQUE7O0FNZ1ZBLE1EeEJFLG1CQ3ZORixlQStPQyxPTnpJRDtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTXVDQSxNS3NURSxtQkN2TkYsZUErT0MsT045VUE7RU40TkQsYU9qUmUsbUJQaVJmO0VBQUEsU1E2aEJjLE9SN2hCZDtFQUFBLGVBQUE7RUFBQSxpQkFBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLG1CQUFBO0VNcURBLGtCQUFBO0VOckRBLFNBQUE7O0FNaE5JLE1LMFNGLG1CQ3ZORixlQStPQyxPTm5VQSxNQUNJO0VOZ05MLGNBQUE7O0FNM01JLE1LcVNGLG1CQ3ZORixlQStPQyxPTjlUQSxPQUNJO0VOMk1MLGNBQUE7O0FXMEZKLE1BQU0sbUJDOUlGO0Vab0RBLFNBQUE7RUFBQSxVQUFBO0VLaE1BLHFCQUFBO0VPOElJLHNCQUFBO0Vaa0RKLG1CQUFBO0VBQUEseUJBQUE7RVkvQ0ksa0JBQUE7RVorQ0osWUFBQTtFQUFBLFNBQUE7RUFBQSxlQUFBO0VBQUEsZUFBQTtFWW5DSSxhQUFBO0VabUNKLHlDQUFBOztBVzBGSixNQUFNLG1CQzlJRixZQW1CSTtFWmlDSixTQUFBO0VBQUEsZ0JBQUE7O0FZM0JRLE1EcUhOLG1CQzlJRixZQW1CSSxHQU1LO0VaMkJULG1CQUFBO0VZekJZLGVBQUE7O0FBd1NaLE1EckxFLG1CQzlJRixZQW1VQztBQUNELE1EdExFLG1CQzlJRixZQW9VQztFQUNHLFNBQVMsRUFBVDtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0EsMEJBQUE7O0FBRUosTUQ5TEUsbUJDOUlGLFlBNFVDO0VBQ0csV0FBQTtFQUNBLGlCQUFBO0VBQ0EseURBQUE7O0FBRUosTURuTUUsbUJDOUlGLFlBaVZDO0VBQ0csV0FBQTtFQUNBLGlCQUFBO0VBQ0EseURBQUE7O0FBL0JKLE1EdktFLG1CQzlJRixZQXFUQztFWmpRRCxVQUFBO0VBQUEsV0FBQTs7QVlxUUEsTUQzS0UsbUJDOUlGLFlBeVRDO0VaclFELFVBQUE7RUFBQSxVQUFBOztBWWRBLE1Ed0dFLG1CQ3hHRDtFQUNHLGlCQUFBOztBQURKLE1Ed0dFLG1CQ3hHRCxPQUVHO0VBQ0ksY0FBQTs7QURzWFo7RUNwZkkscUJBQUE7RUFDQSxrQkFBQTs7QVoxR0EsbUJBQUM7QUFDRCxtQkFBQztFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7O0FBRUosbUJBQUM7RUFDRyxXQUFBOztBV3VsQlIsbUJDaE5JO0VBQ0ksV0FBQTtFQUNBLFNBQUE7O0FEOE1SLG1CQzVNSTtFQUNJLFlBQUE7RUFDQSxTQUFBOztBRDBNUixtQkM3TEksT0FBTTtFQUNGLDBCQUFBO0VBQ0EsNkJBQUE7O0FEMkxSLG1CQ3pMSSxPQUFPO0VBQ0gsY0FBQTtFQUNBLHlCQUFBO0VBQ0EsNEJBQUE7O0FEc0xSLG1CQ3hlSTtFWjZIQSxnQkFBQTtFQUFBLHFCQUFBO0VNOU5BLHFCQUFBOztBS3lrQkosbUJDeGVJLGVOc0dBO0VOblBBLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0FNdUNBLG1CTStGQSxlTi9GQztFTjRORCxhT2pSZSxtQlBpUmY7RUFBQSxTUTRnQmdCLE9SNWdCaEI7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTWhOSSxtQk1tRkosZU5wRkMsTUFDSTtFTmdOTCxjQUFBOztBTTNNSSxtQk04RUosZU4vRUMsT0FDSTtFTjJNTCxjQUFBOztBWWtIQSxtQkEvT0EsZUErT0M7RVpsSEQscUJBQUE7RU05TkEscUJBQUE7O0FNZ1ZBLG1CQS9PQSxlQStPQyxPTnpJRDtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTXVDQSxtQk0rRkEsZUErT0MsT045VUE7RU40TkQsYU9qUmUsbUJQaVJmO0VBQUEsU1E2aEJjLE9SN2hCZDtFQUFBLGVBQUE7RUFBQSxpQkFBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLG1CQUFBO0VNcURBLGtCQUFBO0VOckRBLFNBQUE7O0FNaE5JLG1CTW1GSixlQStPQyxPTm5VQSxNQUNJO0VOZ05MLGNBQUE7O0FNM01JLG1CTThFSixlQStPQyxPTjlUQSxPQUNJO0VOMk1MLGNBQUE7O0FXMldKLG1CQy9aSTtFWm9EQSxTQUFBO0VBQUEsVUFBQTtFS2hNQSxxQkFBQTtFTzhJSSxzQkFBQTtFWmtESixtQkFBQTtFQUFBLHlCQUFBO0VZL0NJLGtCQUFBO0VaK0NKLFlBQUE7RUFBQSxTQUFBO0VBQUEsZUFBQTtFQUFBLGVBQUE7RVluQ0ksYUFBQTtFWm1DSix5Q0FBQTs7QVcyV0osbUJDL1pJLFlBbUJJO0VaaUNKLFNBQUE7RUFBQSxnQkFBQTs7QVkzQlEsbUJBekJSLFlBbUJJLEdBTUs7RVoyQlQsbUJBQUE7RVl6QlksZUFBQTs7QUF3U1osbUJBblVBLFlBbVVDO0FBQ0QsbUJBcFVBLFlBb1VDO0VBQ0csU0FBUyxFQUFUO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSwwQkFBQTs7QUFFSixtQkE1VUEsWUE0VUM7RUFDRyxXQUFBO0VBQ0EsaUJBQUE7RUFDQSx5REFBQTs7QUFFSixtQkFqVkEsWUFpVkM7RUFDRyxXQUFBO0VBQ0EsaUJBQUE7RUFDQSx5REFBQTs7QUEvQkosbUJBclRBLFlBcVRDO0VaalFELFVBQUE7RUFBQSxXQUFBOztBWXFRQSxtQkF6VEEsWUF5VEM7RVpyUUQsVUFBQTtFQUFBLFVBQUE7O0FZZEEsbUJBQUM7RUFDRyxpQkFBQTs7QUFESixtQkFBQyxPQUVHO0VBQ0ksY0FBQTs7QUQwWFo7RUN4ZkkscUJBQUE7RUFDQSxrQkFBQTs7QUR1ZkosbUJBQ0ksUUFBTztBQURYLG1CQUVJLFFBQU87RU52bUJQLG1CQUFBO0VMc1BBLGtCQUFBO0VLNVBBLGlCQUFBOztBTFVBLG1CQUFDO0FBQ0QsbUJBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLG1CQUFDO0VBQ0csV0FBQTs7QVcybEJSLG1CQ3BOSTtFQUNJLFdBQUE7RUFDQSxTQUFBOztBRGtOUixtQkNoTkk7RUFDSSxZQUFBO0VBQ0EsU0FBQTs7QUQ4TVIsbUJDak1JLE9BQU07RUFDRiwwQkFBQTtFQUNBLDZCQUFBOztBRCtMUixtQkM3TEksT0FBTztFQUNILGNBQUE7RUFDQSx5QkFBQTtFQUNBLDRCQUFBOztBRDBMUixtQkM1ZUk7RVo2SEEsZ0JBQUE7RUFBQSxxQkFBQTtFTTlOQSxxQkFBQTs7QUs2a0JKLG1CQzVlSSxlTnNHQTtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTXVDQSxtQk0rRkEsZU4vRkM7RU40TkQsYU9qUmUsbUJQaVJmO0VBQUEsU1E0Z0JnQixPUjVnQmhCO0VBQUEsZUFBQTtFQUFBLGlCQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsU0FBQTs7QU1oTkksbUJNbUZKLGVOcEZDLE1BQ0k7RU5nTkwsY0FBQTs7QU0zTUksbUJNOEVKLGVOL0VDLE9BQ0k7RU4yTUwsY0FBQTs7QVlrSEEsbUJBL09BLGVBK09DO0VabEhELHFCQUFBO0VNOU5BLHFCQUFBOztBTWdWQSxtQkEvT0EsZUErT0MsT056SUQ7RU5uUEEsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QU11Q0EsbUJNK0ZBLGVBK09DLE9OOVVBO0VONE5ELGFPalJlLG1CUGlSZjtFQUFBLFNRNmhCYyxPUjdoQmQ7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTWhOSSxtQk1tRkosZUErT0MsT05uVUEsTUFDSTtFTmdOTCxjQUFBOztBTTNNSSxtQk04RUosZUErT0MsT045VEEsT0FDSTtFTjJNTCxjQUFBOztBVytXSixtQkNuYUk7RVpvREEsU0FBQTtFQUFBLFVBQUE7RUtoTUEscUJBQUE7RU84SUksc0JBQUE7RVprREosbUJBQUE7RUFBQSx5QkFBQTtFWS9DSSxrQkFBQTtFWitDSixZQUFBO0VBQUEsU0FBQTtFQUFBLGVBQUE7RUFBQSxlQUFBO0VZbkNJLGFBQUE7RVptQ0oseUNBQUE7O0FXK1dKLG1CQ25hSSxZQW1CSTtFWmlDSixTQUFBO0VBQUEsZ0JBQUE7O0FZM0JRLG1CQXpCUixZQW1CSSxHQU1LO0VaMkJULG1CQUFBO0VZekJZLGVBQUE7O0FBd1NaLG1CQW5VQSxZQW1VQztBQUNELG1CQXBVQSxZQW9VQztFQUNHLFNBQVMsRUFBVDtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0EsMEJBQUE7O0FBRUosbUJBNVVBLFlBNFVDO0VBQ0csV0FBQTtFQUNBLGlCQUFBO0VBQ0EseURBQUE7O0FBRUosbUJBalZBLFlBaVZDO0VBQ0csV0FBQTtFQUNBLGlCQUFBO0VBQ0EseURBQUE7O0FBL0JKLG1CQXJUQSxZQXFUQztFWmpRRCxVQUFBO0VBQUEsV0FBQTs7QVlxUUEsbUJBelRBLFlBeVRDO0VaclFELFVBQUE7RUFBQSxVQUFBOztBWWRBLG1CQUFDO0VBQ0csaUJBQUE7O0FBREosbUJBQUMsT0FFRztFQUNJLGNBQUE7O0FEa1laO0VDaGdCSSxxQkFBQTtFQUNBLGtCQUFBOztBRCtmSixvQkFDSSxRQUFPO0FBRFgsb0JBRUksUUFBTztFTi9tQlAsbUJBQUE7RUxzUEEsZ0JBQUE7RUs1UEEsaUJBQUE7O0FMVUEsb0JBQUM7QUFDRCxvQkFBQztFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7O0FBRUosb0JBQUM7RUFDRyxXQUFBOztBV21tQlIsb0JDNU5JO0VBQ0ksV0FBQTtFQUNBLFNBQUE7O0FEME5SLG9CQ3hOSTtFQUNJLFlBQUE7RUFDQSxTQUFBOztBRHNOUixvQkN6TUksT0FBTTtFQUNGLDBCQUFBO0VBQ0EsNkJBQUE7O0FEdU1SLG9CQ3JNSSxPQUFPO0VBQ0gsY0FBQTtFQUNBLHlCQUFBO0VBQ0EsNEJBQUE7O0FEa01SLG9CQ3BmSTtFWjZIQSxnQkFBQTtFQUFBLHFCQUFBO0VNOU5BLHFCQUFBOztBS3FsQkosb0JDcGZJLGVOc0dBO0VOblBBLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0FNdUNBLG9CTStGQSxlTi9GQztFTjRORCxhT2pSZSxtQlBpUmY7RUFBQSxTUTRnQmdCLE9SNWdCaEI7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTWhOSSxvQk1tRkosZU5wRkMsTUFDSTtFTmdOTCxjQUFBOztBTTNNSSxvQk04RUosZU4vRUMsT0FDSTtFTjJNTCxjQUFBOztBWWtIQSxvQkEvT0EsZUErT0M7RVpsSEQscUJBQUE7RU05TkEscUJBQUE7O0FNZ1ZBLG9CQS9PQSxlQStPQyxPTnpJRDtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTXVDQSxvQk0rRkEsZUErT0MsT045VUE7RU40TkQsYU9qUmUsbUJQaVJmO0VBQUEsU1E2aEJjLE9SN2hCZDtFQUFBLGVBQUE7RUFBQSxpQkFBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLG1CQUFBO0VNcURBLGtCQUFBO0VOckRBLFNBQUE7O0FNaE5JLG9CTW1GSixlQStPQyxPTm5VQSxNQUNJO0VOZ05MLGNBQUE7O0FNM01JLG9CTThFSixlQStPQyxPTjlUQSxPQUNJO0VOMk1MLGNBQUE7O0FXdVhKLG9CQzNhSTtFWm9EQSxTQUFBO0VBQUEsVUFBQTtFS2hNQSxxQkFBQTtFTzhJSSxzQkFBQTtFWmtESixtQkFBQTtFQUFBLHlCQUFBO0VZL0NJLGtCQUFBO0VaK0NKLFlBQUE7RUFBQSxTQUFBO0VBQUEsZUFBQTtFQUFBLGVBQUE7RVluQ0ksYUFBQTtFWm1DSix5Q0FBQTs7QVd1WEosb0JDM2FJLFlBbUJJO0VaaUNKLFNBQUE7RUFBQSxnQkFBQTs7QVkzQlEsb0JBekJSLFlBbUJJLEdBTUs7RVoyQlQsbUJBQUE7RVl6QlksZUFBQTs7QUF3U1osb0JBblVBLFlBbVVDO0FBQ0Qsb0JBcFVBLFlBb1VDO0VBQ0csU0FBUyxFQUFUO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSwwQkFBQTs7QUFFSixvQkE1VUEsWUE0VUM7RUFDRyxXQUFBO0VBQ0EsaUJBQUE7RUFDQSx5REFBQTs7QUFFSixvQkFqVkEsWUFpVkM7RUFDRyxXQUFBO0VBQ0EsaUJBQUE7RUFDQSx5REFBQTs7QUEvQkosb0JBclRBLFlBcVRDO0VaalFELFVBQUE7RUFBQSxXQUFBOztBWXFRQSxvQkF6VEEsWUF5VEM7RVpyUUQsVUFBQTtFQUFBLFVBQUE7O0FZZEEsb0JBQUM7RUFDRyxpQkFBQTs7QUFESixvQkFBQyxPQUVHO0VBQ0ksY0FBQTs7QURvYVo7RUNsaUJJLHFCQUFBO0VBQ0Esa0JBQUE7O0FaMUdBLG9CQUFDO0FBQ0Qsb0JBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLG9CQUFDO0VBQ0csV0FBQTs7QVdxb0JSLG9CQy9RSTtFQUNJLFlBQUE7RUFDQSxTQUFBOztBRDZRUixvQkMzUUk7RUFDSSxXQUFBO0VBQ0EsU0FBQTs7QUR5UVIsb0JDdk5JLE9BQU07RUFDRix5QkFBQTtFQUNBLDRCQUFBOztBRHFOUixvQkNuTkksT0FBTztFQUNILGVBQUE7RUFDQSwwQkFBQTtFQUNBLDZCQUFBOztBRGdOUixvQkN0aEJJO0VaNkhBLGdCQUFBO0VBQUEscUJBQUE7RU12UUEscUJBQUE7O0FLZ3FCSixvQkN0aEJJLGVOc0dBO0VOblBBLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0FNREEsb0JNdUlBLGVOdklDO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRaWlCVSxPUmppQlY7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTXhQSSxvQk0ySEosZU41SEMsTUFDSTtFTndQTCxjQUFBOztBTW5QSSxvQk1zSEosZU52SEMsT0FDSTtFTm1QTCxjQUFBOztBWWtIQSxvQkEvT0EsZUErT0M7RVpsSEQscUJBQUE7RU12UUEscUJBQUE7O0FNeVhBLG9CQS9PQSxlQStPQyxPTnpJRDtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTURBLG9CTXVJQSxlQStPQyxPTnRYQTtFTm9RRCxhT2pSZSxtQlBpUmY7RUFBQSxTUW9oQlksT1JwaEJaO0VBQUEsZUFBQTtFQUFBLGlCQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsU0FBQTs7QU14UEksb0JNMkhKLGVBK09DLE9OM1dBLE1BQ0k7RU53UEwsY0FBQTs7QU1uUEksb0JNc0hKLGVBK09DLE9OdFdBLE9BQ0k7RU5tUEwsY0FBQTs7QVd5Wkosb0JDN2NJO0Vab0RBLFNBQUE7RUFBQSxVQUFBO0VLaE1BLHFCQUFBO0VPOElJLHNCQUFBO0Vaa0RKLG1CQUFBO0VBQUEseUJBQUE7RVkvQ0ksa0JBQUE7RVorQ0osWUFBQTtFQUFBLFNBQUE7RUFBQSxlQUFBO0VBQUEsZUFBQTtFWW5DSSxhQUFBO0VabUNKLHlDQUFBOztBV3laSixvQkM3Y0ksWUFtQkk7RVppQ0osU0FBQTtFQUFBLGdCQUFBOztBWTNCUSxvQkF6QlIsWUFtQkksR0FNSztFWjJCVCxtQkFBQTtFWXpCWSxlQUFBOztBQXdTWixvQkFuVUEsWUFtVUM7QUFDRCxvQkFwVUEsWUFvVUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxrQkFBQTtFQUNBLGNBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFQUNBLDBCQUFBOztBQUVKLG9CQTVVQSxZQTRVQztFQUNHLFdBQUE7RUFDQSxpQkFBQTtFQUNBLHlEQUFBOztBQUVKLG9CQWpWQSxZQWlWQztFQUNHLFdBQUE7RUFDQSxpQkFBQTtFQUNBLHlEQUFBOztBQS9CSixvQkFyVEEsWUFxVEM7RVpqUUQsVUFBQTtFQUFBLFdBQUE7O0FZcVFBLG9CQXpUQSxZQXlUQztFWnJRRCxVQUFBO0VBQUEsVUFBQTs7QVlkQSxvQkFBQztFQUNHLGlCQUFBOztBQURKLG9CQUFDLE9BRUc7RUFDSSxjQUFBOztBRDBjWjtFQ3hrQkkscUJBQUE7RUFDQSxrQkFBQTs7QVoxR0Esb0JBQUM7QUFDRCxvQkFBQztFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7O0FBRUosb0JBQUM7RUFDRyxXQUFBOztBVzJxQlIsb0JDcFNJO0VBQ0ksV0FBQTtFQUNBLFNBQUE7O0FEa1NSLG9CQ2hTSTtFQUNJLFlBQUE7RUFDQSxTQUFBOztBRDhSUixvQkNqUkksT0FBTTtFQUNGLDBCQUFBO0VBQ0EsNkJBQUE7O0FEK1FSLG9CQzdRSSxPQUFPO0VBQ0gsY0FBQTtFQUNBLHlCQUFBO0VBQ0EsNEJBQUE7O0FEMFFSLG9CQzVqQkk7RVo2SEEsZ0JBQUE7RUFBQSxxQkFBQTtFTTlOQSxxQkFBQTs7QUs2cEJKLG9CQzVqQkksZU5zR0E7RU5uUEEsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QU11Q0Esb0JNK0ZBLGVOL0ZDO0VONE5ELGFPalJlLG1CUGlSZjtFQUFBLFNRNGdCZ0IsT1I1Z0JoQjtFQUFBLGVBQUE7RUFBQSxpQkFBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLG1CQUFBO0VNcURBLGtCQUFBO0VOckRBLFNBQUE7O0FNaE5JLG9CTW1GSixlTnBGQyxNQUNJO0VOZ05MLGNBQUE7O0FNM01JLG9CTThFSixlTi9FQyxPQUNJO0VOMk1MLGNBQUE7O0FZa0hBLG9CQS9PQSxlQStPQztFWmxIRCxxQkFBQTtFTTlOQSxxQkFBQTs7QU1nVkEsb0JBL09BLGVBK09DLE9OeklEO0VOblBBLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0FNdUNBLG9CTStGQSxlQStPQyxPTjlVQTtFTjRORCxhT2pSZSxtQlBpUmY7RUFBQSxTUTZoQmMsT1I3aEJkO0VBQUEsZUFBQTtFQUFBLGlCQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsU0FBQTs7QU1oTkksb0JNbUZKLGVBK09DLE9OblVBLE1BQ0k7RU5nTkwsY0FBQTs7QU0zTUksb0JNOEVKLGVBK09DLE9OOVRBLE9BQ0k7RU4yTUwsY0FBQTs7QVcrYkosb0JDbmZJO0Vab0RBLFNBQUE7RUFBQSxVQUFBO0VLaE1BLHFCQUFBO0VPOElJLHNCQUFBO0Vaa0RKLG1CQUFBO0VBQUEseUJBQUE7RVkvQ0ksa0JBQUE7RVorQ0osWUFBQTtFQUFBLFNBQUE7RUFBQSxlQUFBO0VBQUEsZUFBQTtFWW5DSSxhQUFBOztBRGtlUixvQkNuZkksWUFtQkk7RVppQ0osU0FBQTtFQUFBLGFBQUE7RUFBQSw2QkFBQTs7QVl5U0Esb0JBN1ZBLFlBbUJJLEdBMFVIO0VBQ0csWUFBQTs7QUFyVUksb0JBekJSLFlBbUJJLEdBTUs7RVoyQlQsbUJBQUE7RVl6QlksZUFBQTs7QUFXWixvQkFBQztFQUNHLGlCQUFBOztBQURKLG9CQUFDLE9BRUc7RUFDSSxjQUFBOztBQ25FWixlQUNJO0ViNkVBLFVBQUE7RUFBQSxnQkFBQTtFQUFBLFNBQUE7RWN1S0EsdUJBQUE7O0FEclBKLGVBQ0kseUJDdVBBO0VBQ0ksc0JBQUE7O0FEelBSLGVBQ0kseUJDNFBBO0VkL0tBLGdCQUFBO0VBQUEsVUFBQTtFSzVQQSxlQUFBO0VMNFBBLGdCQUFBO0VjMExJLHNCQUFBO0VBQ0EsV0FBQTs7QUFFQSxlRDFRSix5QkM0UEEsVUFjTTtFQUNFLGNBQUE7RUFDQSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxnQkFBQTtFQUNBLFdBQUE7O0FBc2lCUixlRHJ6QkEseUJDcXpCQztFQTBCRCxTQUFTLHNCQUFUO0VBQ0EsY0FBQTtFVC8vQkEsaUJBQUE7RUw0UEEsY0FBQTtFQUFBLGdCQUFBO0VjZ3hCQSxzQkFBQTtFQUNBLG9CQUFBOztBRC8xQkosZUFDSSx5QkFHSTtFYjBFSixnQkFBQTs7QWE5RUosZUFDSSx5QkFHSSxTQ2lqQko7RUFDSSxxQkFBQTtFZHhlSixlQUFBOztBYytRQSxlRDVWQSx5QkFHSSxTQ3lWSDtFQUNHLGdCQUFBOztBRDlWUixlQUNJLHlCQUdJLFNDbVdKO0VkelJBLGdCQUFBOztBY2tTSSxlRC9XSix5QkFHSSxTQ21XSixTQVNNO0VBQ0UsYUFBQTs7QURqWFosZUFDSSx5QkFHSSxTQ2lYSixRQUNJO0VBQ0ksbUJBQUE7O0FkM2hCUixlYXFLQSx5QkFHSSxTQ3VYSixRQUFPLE1kL2hCTjtBQUNELGVhb0tBLHlCQUdJLFNDdVhKLFFBQU8sTWQ5aEJOO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSixlYWdLQSx5QkFHSSxTQ3VYSixRQUFPLE1kMWhCTjtFQUNHLFdBQUE7O0FhOEpSLGVBQ0kseUJBR0ksU0N1WEosUUFBTyxNQUVIO0VBQ0ksc0JBQUE7RUFDQSxXQUFBOztBQUVKLGVEaFlKLHlCQUdJLFNDdVhKLFFBQU8sTUFNRixRQUFTO0VBQ04scUJBQUE7O0FBRUosZURuWUoseUJBR0ksU0N1WEosUUFBTyxNQVNGLFFBQVM7RUFDTix1QkFBQTs7QUFFSixlRHRZSix5QkFHSSxTQ3VYSixRQUFPLE1BWUYsUUFBUztFQUNOLHFCQUFBOztBQUVKLGVEellKLHlCQUdJLFNDdVhKLFFBQU8sTUFlRixRQUFTO0VBQ04scUJBQUE7O0FEM1laLGVBQ0kseUJBR0ksU0MyWUo7RWRoTkEsNEJBQUE7RUFDQSwyQkFBQTtFQUNBLG9CQUFBO0VBMkJBLHlCQUFBO0VBQ1EsaUJBQUE7RWNxTEosVUFBQTtFQUNBLFdBQUE7O0FEblpSLGVBQ0kseUJBR0ksU0MyWUosT0FLSTtBRHBaUixlQUNJLHlCQUdJLFNDMllKLE9BTUk7QURyWlIsZUFDSSx5QkFHSSxTQzJZSixPQU9JO0VkM0tKLGlCQUFBO0VBQ0MsZ0JBQUE7RUFDUSxRQUFBO0VBeEJULHdCQUFBO0VBQ1EsZ0JBQUE7RWNtTUEscUJBQUE7RUFDQSxTQUFBO0VBQ0EsV0FBQTs7QUQzWlosZUFDSSx5QkFHSSxTQzJZSixPQWNJO0FEN1pSLGVBQ0kseUJBR0ksU0MyWUosT0FlSTtFZG5MSixpQkFBQTtFQUNDLGdCQUFBO0VBQ1EsUUFBQTtFY21MRCxxQkFBQTtFQTNrQlIsc0JBQUE7RWR5UEEsbUJBQUE7RUFBQSx5QkFBQTtFQUFBLGtCQUFBO0VBQUEsWUFBQTtFQUFBLFdBQUE7RUFBQSxjQUFBO0VBQUEsZUFBQTtFQUFBLDJEQUFBO0VBQUEsd0JBQUE7RUFBQSw0QkFBQTtFQUFBLHdCQUFBO0Vjb1ZRLFdBQUE7RUFDQSxtQkFBQTtFQUNBLHNCQUFBOztBQWpQUixlRGxMQSx5QkFHSSxTQzJZSixPQWNJLFdBMU9IO0FBQUQsZURsTEEseUJBR0ksU0MyWUosT0FlSSxVQTNPSDtFZHJHRCxZQUFBOztBY29IQSxlRGpNQSx5QkFHSSxTQzJZSixPQWNJLFdBM05IO0FBQUQsZURqTUEseUJBR0ksU0MyWUosT0FlSSxVQTVOSDtFZHBIRCxjQUFBOztBY3dIQSxlRHJNQSx5QkFHSSxTQzJZSixPQWNJLFdBdk5IO0FBQUQsZURyTUEseUJBR0ksU0MyWUosT0FlSSxVQXhOSDtFZHhIRCxjQUFBOztBYzRIQSxlRHpNQSx5QkFHSSxTQzJZSixPQWNJLFdBbk5IO0FBQUQsZUR6TUEseUJBR0ksU0MyWUosT0FlSSxVQXBOSDtFZDVIRCxjQUFBOztBYTlFSixlQUNJLHlCQUdJLFNDMllKLE9BdUJJO0VBQ0ksV0FBQTtFZDVMUixpQkFBQTtFQUNDLGdCQUFBO0VBQ1EsUUFBQTs7QWE3T2IsZUFDSSx5QkFHSSxTQ3dhSjtFZDlWQSxnQkFBQTs7QWN3ZkEsZURya0JBLHlCQUdJLFNDa2tCSCxTQUFVLFNBQVE7RUFDZixTQUFTLEdBQVQ7RVRydkJKLGlCQUFBO0VMNFBBLGNBQUE7RUFBQSxpQkFBQTs7QWE5RUosZUFDSSx5QkFHSSxTQ3NtQko7RVR4eEJBLGlCQUFBO0VMNFBBLGVBQUE7RUFBQSxVQUFBO0VBQUEscUJBQUE7RU12UUEscUJBQUE7O0FBR0EsZU91TEEseUJBR0ksU0NzbUJKLE1SaHlCQztFTm9RRCxhT2pSZSxtQlBpUmY7RUFBQSxTUTZoQmMsT1I3aEJkO0VBQUEsZUFBQTtFQUFBLGlCQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxzQkFBQTtFTXFEQSxrQkFBQTs7QU96SEosZUFDSTtFYm1FQSxVQUFBO0VBQUEsZ0JBQUE7RUFBQSxTQUFBO0VjdUtBLHVCQUFBOztBRDNPSixlQUNJLHlCQzZPQTtFQUNJLHNCQUFBOztBRC9PUixlQUNJLHlCQ2tQQTtFZC9LQSxnQkFBQTtFQUFBLFVBQUE7RUs1UEEsZUFBQTtFTDRQQSxnQkFBQTtFYzBMSSxzQkFBQTtFQUNBLFdBQUE7O0FBRUEsZURoUUoseUJDa1BBLFVBY007RUFDRSxjQUFBO0VBQ0Esa0JBQUE7RUFDQSxTQUFBO0VBQ0EsZ0JBQUE7RUFDQSxXQUFBOztBRHRRWixlQUNJLHlCQUVJO0ViaUVKLGdCQUFBO0VjcW9CQSxzQkFBQTtFQUVBLHFCQUFBO0Vkdm9CQSxtQkFBQTtFQUFBLFVBQUE7RWMwb0JBLG1CQUFBOztBRDlzQkosZUFDSSx5QkFFSSxTQ3dpQko7RUFDSSxxQkFBQTtFZHhlSixlQUFBOztBYytRQSxlRGxWQSx5QkFFSSxTQ2dWSDtFQUNHLGdCQUFBOztBQTRYSixlRC9zQkEseUJBRUksU0M2c0JGO0VBQ0UsV0FBQTs7QURqdEJSLGVBQ0kseUJBRUksU0MwVko7RWR6UkEsZ0JBQUE7O0Fja1NJLGVEcldKLHlCQUVJLFNDMFZKLFNBU007RUFDRSxhQUFBOztBRHZXWixlQUNJLHlCQUVJLFNDd1dKLFFBQ0k7RUFDSSxtQkFBQTs7QWQzaEJSLGVhK0tBLHlCQUVJLFNDOFdKLFFBQU8sTWQvaEJOO0FBQ0QsZWE4S0EseUJBRUksU0M4V0osUUFBTyxNZDloQk47RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLGVhMEtBLHlCQUVJLFNDOFdKLFFBQU8sTWQxaEJOO0VBQ0csV0FBQTs7QWF3S1IsZUFDSSx5QkFFSSxTQzhXSixRQUFPLE1BRUg7RUFDSSxzQkFBQTtFQUNBLFdBQUE7O0FBRUosZUR0WEoseUJBRUksU0M4V0osUUFBTyxNQU1GLFFBQVM7RUFDTixxQkFBQTs7QUFFSixlRHpYSix5QkFFSSxTQzhXSixRQUFPLE1BU0YsUUFBUztFQUNOLHVCQUFBOztBQUVKLGVENVhKLHlCQUVJLFNDOFdKLFFBQU8sTUFZRixRQUFTO0VBQ04scUJBQUE7O0FBRUosZUQvWEoseUJBRUksU0M4V0osUUFBTyxNQWVGLFFBQVM7RUFDTixxQkFBQTs7QURqWVosZUFDSSx5QkFFSSxTQ2tZSjtFZGhOQSw0QkFBQTtFQUNBLDJCQUFBO0VBQ0Esb0JBQUE7RUEyQkEseUJBQUE7RUFDUSxpQkFBQTtFY3FMSixVQUFBO0VBQ0EsV0FBQTs7QUR6WVIsZUFDSSx5QkFFSSxTQ2tZSixPQUtJO0FEMVlSLGVBQ0kseUJBRUksU0NrWUosT0FNSTtBRDNZUixlQUNJLHlCQUVJLFNDa1lKLE9BT0k7RWQzS0osaUJBQUE7RUFDQyxnQkFBQTtFQUNRLFFBQUE7RUF4QlQsd0JBQUE7RUFDUSxnQkFBQTtFY21NQSxxQkFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBOztBRGpaWixlQUNJLHlCQUVJLFNDa1lKLE9BY0k7QURuWlIsZUFDSSx5QkFFSSxTQ2tZSixPQWVJO0VkbkxKLGlCQUFBO0VBQ0MsZ0JBQUE7RUFDUSxRQUFBO0VjbUxELHFCQUFBO0VBM2tCUixzQkFBQTtFZHlQQSxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsa0JBQUE7RUFBQSxZQUFBO0VBQUEsV0FBQTtFQUFBLGNBQUE7RUFBQSxlQUFBO0VBQUEsMkRBQUE7RUFBQSx3QkFBQTtFQUFBLDRCQUFBO0VBQUEsd0JBQUE7RWNvVlEsV0FBQTtFQUNBLG1CQUFBO0VBQ0Esc0JBQUE7O0FBalBSLGVEeEtBLHlCQUVJLFNDa1lKLE9BY0ksV0ExT0g7QUFBRCxlRHhLQSx5QkFFSSxTQ2tZSixPQWVJLFVBM09IO0VkckdELFlBQUE7O0Fjb0hBLGVEdkxBLHlCQUVJLFNDa1lKLE9BY0ksV0EzTkg7QUFBRCxlRHZMQSx5QkFFSSxTQ2tZSixPQWVJLFVBNU5IO0VkcEhELGNBQUE7O0Fjd0hBLGVEM0xBLHlCQUVJLFNDa1lKLE9BY0ksV0F2Tkg7QUFBRCxlRDNMQSx5QkFFSSxTQ2tZSixPQWVJLFVBeE5IO0VkeEhELGNBQUE7O0FjNEhBLGVEL0xBLHlCQUVJLFNDa1lKLE9BY0ksV0FuTkg7QUFBRCxlRC9MQSx5QkFFSSxTQ2tZSixPQWVJLFVBcE5IO0VkNUhELGNBQUE7O0FhcEVKLGVBQ0kseUJBRUksU0NrWUosT0F1Qkk7RUFDSSxXQUFBO0VkNUxSLGlCQUFBO0VBQ0MsZ0JBQUE7RUFDUSxRQUFBOztBYW5PYixlQUNJLHlCQUVJLFNDK1pKO0VkOVZBLGdCQUFBOztBY3dmQSxlRDNqQkEseUJBRUksU0N5akJILFNBQVUsU0FBUTtFQUNmLFNBQVMsR0FBVDtFVHJ2QkosaUJBQUE7RUw0UEEsY0FBQTtFQUFBLGlCQUFBOztBYXBFSixlQUNJLHlCQUVJLFNDNmxCSjtFVHh4QkEsaUJBQUE7RUw0UEEsZUFBQTtFQUFBLFVBQUE7RUFBQSxxQkFBQTtFTXZRQSxxQkFBQTs7QUFHQSxlT2lNQSx5QkFFSSxTQzZsQkosTVJoeUJDO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRNmhCYyxPUjdoQmQ7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLHNCQUFBO0VNcURBLGtCQUFBOztBTzBXSixLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztFQy9wQkQsc0JBQUE7RWR5UEEsbUJBQUE7RUFBQSx5QkFBQTtFQUFBLGtCQUFBO0VBQUEsWUFBQTtFQUFBLFdBQUE7RUFBQSxjQUFBO0VBQUEsZUFBQTtFQUFBLDJEQUFBO0VBQUEsd0JBQUE7RUFBQSw0QkFBQTtFQUFBLHdCQUFBO0Vhd2FBLG1CQUFBOztBQ25VQSxLRDBUQyxhQzFUQTtBQUFELEtEMlRDLGlCQzNUQTtBQUFELEtENFRDLFlDNVRBO0FBQUQsS0Q2VEMsWUM3VEE7QUFBRCxLRDhUQyxlQzlUQTtBQUFELEtEK1RDLGVDL1RBO0FBQUQsS0RnVUMsaUJDaFVBO0FBQUQsS0RpVUMsY0NqVUE7RWRyR0QsWUFBQTs7QWNvSEEsS0QyU0MsYUMzU0E7QUFBRCxLRDRTQyxpQkM1U0E7QUFBRCxLRDZTQyxZQzdTQTtBQUFELEtEOFNDLFlDOVNBO0FBQUQsS0QrU0MsZUMvU0E7QUFBRCxLRGdUQyxlQ2hUQTtBQUFELEtEaVRDLGlCQ2pUQTtBQUFELEtEa1RDLGNDbFRBO0VkcEhELGNBQUE7O0Fjd0hBLEtEdVNDLGFDdlNBO0FBQUQsS0R3U0MsaUJDeFNBO0FBQUQsS0R5U0MsWUN6U0E7QUFBRCxLRDBTQyxZQzFTQTtBQUFELEtEMlNDLGVDM1NBO0FBQUQsS0Q0U0MsZUM1U0E7QUFBRCxLRDZTQyxpQkM3U0E7QUFBRCxLRDhTQyxjQzlTQTtFZHhIRCxjQUFBOztBYzRIQSxLRG1TQyxhQ25TQTtBQUFELEtEb1NDLGlCQ3BTQTtBQUFELEtEcVNDLFlDclNBO0FBQUQsS0RzU0MsWUN0U0E7QUFBRCxLRHVTQyxlQ3ZTQTtBQUFELEtEd1NDLGVDeFNBO0FBQUQsS0R5U0MsaUJDelNBO0FBQUQsS0QwU0MsY0MxU0E7RWQ1SEQsY0FBQTs7QWEyYUo7RUNwcUJJLHNCQUFBO0VkeVBBLG1CQUFBO0VBQUEseUJBQUE7RUFBQSxrQkFBQTtFQUFBLFlBQUE7RUFBQSxXQUFBO0VBQUEscUJBQUE7RUFBQSxlQUFBO0VBQUEsMkRBQUE7RUFBQSx3QkFBQTtFQUFBLDRCQUFBO0VBQUEsd0JBQUE7RWE2YUEsbUJBQUE7O0FDeFVBLE1BQUM7RWRyR0QsWUFBQTs7QWFnYkosTUFBTTtFYmhiRixZQUFBO0Vha2JBLG1CQUFBOztBQUdKO0VDOXFCSSxzQkFBQTtFZHlQQSxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsa0JBQUE7RUFBQSxZQUFBO0VBQUEsV0FBQTtFQUFBLGFBQUE7RUFBQSxTQUFBO0VBQUEsZUFBQTtFQUFBLDJEQUFBO0VBQUEsd0JBQUE7RUFBQSw0QkFBQTtFQUFBLHdCQUFBO0VBQUEsZ0JBQUE7O0FjcUdBLFFBQUM7RWRyR0QsWUFBQTs7QWNvSEEsUUFBQztFZHBIRCxjQUFBOztBY3dIQSxRQUFDO0VkeEhELGNBQUE7O0FjNEhBLFFBQUM7RWQ1SEQsY0FBQTs7QWE0bkJKLEtBQUs7RWI1bkJELG1CQUFBOztBYy9MQSxLRDJ6QkMsaUJDM3pCQTtFZCtMRCxZQUFBOztBYWdvQkosS0FBSztFYmhvQkQsbUJBQUE7O0FjL0xBLEtEK3pCQyxjQy96QkE7RWQrTEQsWUFBQTs7QWE4ckJKLEtBQUs7QUFDTCxNQUFNO0FBQ04sUUFBUTtFYmhzQkosbUJBQUE7RUFBQSxxQkFBQTtFQUFBLGNBQUE7O0FjcEpBLEtEazFCQyxlQ2wxQkE7QUFBRCxNRG0xQkUsaUJDbjFCRDtBQUFELFFEbzFCSSxtQkNwMUJIO0Vkb0pELHFCQUFBO0VBQUEsY0FBQTs7QWMvSUEsS0Q2MEJDLGVDNzBCQTtBQUFELE1EODBCRSxpQkM5MEJEO0FBQUQsUUQrMEJJLG1CQy8wQkg7RWQrSUQsY0FBQTs7QWMxSUEsS0RxMUJDLGVDcjFCQTtBQUFELFFEczFCSSxtQkN0MUJIO0VkMElELGNBQUE7O0FjdklBLEtEazFCQyxlQ2wxQkE7QUFBRCxRRG0xQkksbUJDbjFCSDtFZHVJRCxjQUFBOztBY3BJQSxLRCswQkMsZUMvMEJBO0FBQUQsUURnMUJJLG1CQ2gxQkg7RWRvSUQsY0FBQTs7QWFzdEJKO0VDMTRCSSwwQkFBQTs7QUFMQSxlQUFDO0FBQ0QsZUFBQztFQUNDLHdCQUFBO0VBQ0EsU0FBQTs7QURvNUJOO0VDOTRCSSx3QkFBQTs7QUFDQSxlQUFDO0FBQ0QsZUFBQztBQUNELGVBQUM7QUFDRCxlQUFDO0VBQ0csd0JBQUE7O0FEMjZCUjtBQUNBO0FBQ0E7RVI5L0JJLGlCQUFBO0VMNFBBLGNBQUE7O0FRL1FKO0VGZ0lJLHFCQUFBOztBQUVBLGVBQUM7RUE0SUQsU0FBUyxFQUFUO0VBQ0EscUJBQUE7RU5BQSxXQUFBO0VBQUEsWUFBQTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RU1PQSxnQkVyUjBCLHNGRnFSMUI7O0FFbFJKO0VGdUpJLHFCQUFBOztBQUVBLGVBQUM7RUFpSEQsU0FBUyxFQUFUO0VBQ0EscUJBQUE7RU5BQSxXQUFBO0VBQUEsWUFBQTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RU1PQSxnQkVoUmtCLDBGRmdSbEI7O0FFelFKO0VGbUhJLHFCQUFBOztBRW5ISixlRjJPSTtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTXNIQSxlQUFDO0VBNElELFNBQVMsRUFBVDtFQUNBLHFCQUFBO0VOQUEsV0FBQTtFQUFBLFlBQUE7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VNT0EsZ0JFdlFrQiwrRkZ1UWxCOztBRWhRSjtFUnlQSSxxQkFBQTtFTXZRQSxxQkFBQTs7QUFHQSxlQUFDO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRMmdCWSxPUjNnQlo7RUFBQSxlQUFBO0VBQUEsb0JBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxzQkFBQTtFTXFEQSxrQkFBQTs7QUV2U0o7RVJrUEkscUJBQUE7RU05TkEscUJBQUE7O0FBRUEsZUFBQztFTjRORCxhT2pSZSxtQlBpUmY7RUFBQSxTUTBnQlEsT1IxZ0JSO0VBQUEsZUFBQTtFQUFBLG9CQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsc0JBQUE7RU1xREEsa0JBQUE7O0FFL1JKO0VSME9JLHFCQUFBO0VNdlFBLHFCQUFBOztBRTZCSixlRm1OSTtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTURBLGVBQUM7RU5vUUQsYU9qUmUsbUJQaVJmO0VBQUEsU1FnaUJRLE9SaGlCUjtFQUFBLGVBQUE7RUFBQSxvQkFBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLHNCQUFBO0VNcURBLGtCQUFBOztBRWhSSjtFRjRFSSxxQkFBQTs7QUFFQSxlQUFDO0VBNElELFNBQVMsRUFBVDtFQUNBLHFCQUFBO0VOQUEsV0FBQTtFQUFBLFlBQUE7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VNT0EsZ0JFak8wQixzRkZpTzFCOztBRW5KSjtFRkhJLHFCQUFBOztBQUVBLGVBQUM7RUE0SUQsU0FBUyxFQUFUO0VBQ0EscUJBQUE7RU5BQSxXQUFBO0VBQUEsWUFBQTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RU1PQSxnQkVsSjBCLHNGRmtKMUI7O0FBdEdBLGVBQUM7RUE4R0QsNkJBQUE7O0FFcEpKO0VGaUJJLHFCQUFBOztBQUVBLGVBQUM7RUFpSEQsU0FBUyxFQUFUO0VBQ0EscUJBQUE7RU5BQSxXQUFBO0VBQUEsWUFBQTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RU1PQSxnQkUzSTBCLHNGRjJJMUI7O0FBekZBLGVBQUM7RUFpR0QsZ0NBQUE7O0FFdEdKO0VGeERJLHFCQUFBOztBQUVBLGdCQUFDO0VBNElELFNBQVMsRUFBVDtFQUNBLHFCQUFBO0VOQUEsV0FBQTtFQUFBLFlBQUE7RUFBQSxpQkFBQTtFQUFBLHNCQUFBO0VNT0EsZ0JFN0YwQixzRkY2RjFCOztBQTNFQSxnQkFBQztFQW1HRCwrQkFBQTs7QUV0RUo7RUZ4R0kscUJBQUE7O0FBRUEsZ0JBQUM7RUE0SUQsU0FBUyxFQUFUO0VBQ0EscUJBQUE7RU5BQSxXQUFBO0VBQUEsWUFBQTtFQUFBLGlCQUFBO0VBQUEsc0JBQUE7RU1PQSxnQkU3QzBCLHNGRjZDMUI7O0FBOUNBLGdCQUFDO0VOdUNELFdBQUE7RUFBQSxZQUFBOztBTTdCQSxnQkFBQztFTjZCRCxXQUFBO0VBQUEsWUFBQTs7QVFwQ0EsZ0JBQUM7RUFDRyx5QkFBQTs7QUEwQ1I7RVJQSSxxQkFBQTtFTXZRQSxxQkFBQTs7QUFHQSxnQkFBQztFTm9RRCxhT2pSZSxtQlBpUmY7RUFBQSxTUXVoQlksT1J2aEJaO0VBQUEsZUFBQTtFQUFBLG9CQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsc0JBQUE7RU1xREEsa0JBQUE7O0FFcURKO0VSMUdJLHFCQUFBO0VNdlFBLHFCQUFBOztBQUdBLGdCQUFDO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRdWhCWSxPUnZoQlo7RUFBQSxrQkFBQTtFQUFBLG9CQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsc0JBQUE7RU1xREEsa0JBQUE7O0FBclBBLGdCQUFDO0VOZ01ELGVBQUE7RUFBQSxvQkFBQTs7QVFzSko7RVJ0SkkscUJBQUE7RU12UUEscUJBQUE7O0FBR0EsZ0JBQUM7RU5vUUQsYU9qUmUsbUJQaVJmO0VBQUEsU1FraUJZLE9SbGlCWjtFQUFBLGVBQUE7RUFBQSxvQkFBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLHNCQUFBO0VNcURBLGtCQUFBOztBRWlHSixnQkY3S0k7RU5uUEEsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QVFtcEJKO0VBQ0ksZ0JBQUE7RUFDQSxVQUFBOztBQUZKLGlCQUdJO0VBQ0ksV0FBQTtFQUNBLFVBQUE7O0FBTFIsaUJBR0ksR0FHSTtFRnJpQkoscUJBQUE7O0FBRUEsaUJFZ2lCQSxHQUdJLE9GbmlCSDtFQTRJRCxTQUFTLEVBQVQ7RUFDQSxxQkFBQTtFTkFBLFdBQUE7RUFBQSxZQUFBO0VBQUEsaUJBQUE7RUFBQSxzQkFBQTtFTU9BLGdCRWdaa0Msc0ZGaFpsQzs7QUEzRUEsaUJFdWRBLEdBTUksYUY3ZEg7RUFtR0QsNEJBQUE7O0FBbkdBLGlCRXVkQSxHQVNJLFdGaGVIO0VBbUdELDhCQUFBOztBQW5HQSxpQkV1ZEEsR0FZSSxpQkZuZUg7RUFtR0QsOEJBQUE7O0FBbkdBLGlCRXVkQSxHQWVJLGVGdGVIO0VBbUdELDhCQUFBOztBQW5HQSxpQkV1ZEEsR0FrQkksV0Z6ZUg7RUFtR0QsK0JBQUE7O0FBbkdBLGlCRXVkQSxHQXFCSSxXRjVlSDtFQW1HRCwrQkFBQTs7QUFuR0EsaUJFdWRBLEdBd0JJLGFGL2VIO0VBbUdELCtCQUFBOztBQW5HQSxpQkV1ZEEsR0EyQkksV0ZsZkg7RUFtR0QsK0JBQUE7O0FBbkdBLGlCRXVkQSxHQThCSSxtQkZyZkg7RUFtR0QsK0JBQUE7O0FBbkdBLGlCRXVkQSxHQWlDSSxpQkZ4Zkg7RUFtR0QsK0JBQUE7O0FBbkdBLGlCRXVkQSxHQW9DSSxtQkYzZkg7RUFtR0QsK0JBQUE7O0FBbkdBLGlCRXVkQSxHQXVDSSxvQkY5Zkg7RUFtR0QsK0JBQUE7O0FBbkdBLGlCRXVkQSxHQTBDSSxvQkZqZ0JIO0VBbUdELDhCQUFBOztBQW5HQSxpQkV1ZEEsR0E2Q0ksbUJGcGdCSDtFQW1HRCxnQ0FBQTs7QUFuR0EsaUJFdWRBLEdBZ0RJLHFCRnZnQkg7RUFtR0QsZ0NBQUE7O0FBbkdBLGlCRXVkQSxHQW1ESSxvQkYxZ0JIO0VBbUdELGdDQUFBOztBQW5HQSxpQkV1ZEEsR0FzREksYUY3Z0JIO0VBbUdELGlDQUFBOztBQW5HQSxpQkV1ZEEsR0F5REksZUZoaEJIO0VBbUdELGlDQUFBOztBQW5HQSxpQkV1ZEEsR0E0REksYUZuaEJIO0VBbUdELGlDQUFBOztBQW5HQSxpQkV1ZEEsR0ErREksV0Z0aEJIO0VBbUdELGlDQUFBOztBQW5HQSxpQkV1ZEEsR0FrRUksV0Z6aEJIO0VBbUdELGlDQUFBOztBQW5HQSxpQkV1ZEEsR0FxRUksV0Y1aEJIO0VBbUdELGlDQUFBOztBQW5HQSxpQkV1ZEEsR0F3RUksZUYvaEJIO0VBbUdELGlDQUFBOztBQW5HQSxpQkV1ZEEsR0EyRUksV0ZsaUJIO0VBbUdELGlDQUFBOztBQW5HQSxpQkV1ZEEsR0E4RUksZ0JGcmlCSDtFQW1HRCw4QkFBQTs7QUFuR0EsaUJFdWRBLEdBaUZJLGVGeGlCSDtFQW1HRCxnQ0FBQTs7QUFuR0EsaUJFdWRBLEdBb0ZJLGNGM2lCSDtFQW1HRCxnQ0FBQTs7QUFuR0EsaUJFdWRBLEdBdUZJLHdCRjlpQkg7RUFtR0QsZ0NBQUE7O0FBbkdBLGlCRXVkQSxHQTBGSSxlRmpqQkg7RUFtR0QsaUNBQUE7O0FBbkdBLGlCRXVkQSxHQTZGSSxjRnBqQkg7RUFtR0QsaUNBQUE7O0FBbkdBLGlCRXVkQSxHQWdHSSxZRnZqQkg7RUFtR0QsaUNBQUE7O0FBbkdBLGlCRXVkQSxHQW1HSSxXRjFqQkg7RUFtR0QsaUNBQUE7O0FBbkdBLGlCRXVkQSxHQXNHSSxlRjdqQkg7RUFtR0QsaUNBQUE7O0FBbkdBLGlCRXVkQSxHQXlHSSxTRmhrQkg7RUFtR0QsaUNBQUE7O0FBbkdBLGlCRXVkQSxHQTRHSSxXRm5rQkg7RUFtR0QsaUNBQUE7O0FFOGdCSjtFQUNJLGdCQUFBO0VBQ0EsVUFBQTs7QUFGSixnQkFHSTtFQUNJLFdBQUE7RUFDQSxVQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTs7QUFQUixnQkFHSSxHQUtJO0VScmpCSixxQkFBQTtFTXZRQSxxQkFBQTs7QUFHQSxnQkVvekJBLEdBS0ksT0Z6ekJIO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLGVBQUE7RUFBQSxvQkFBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLHNCQUFBO0VNcURBLGtCQUFBOztBRWtnQlEsZ0JBUFIsR0FLSSxPQUVLO0VBQ0csU0FBUyxlQUFUO0VBQ0EsY0FBQTtFQUNBLGNBQUE7O0FPcDBCaEI7RUNFSSxlQUFBO0VBQ0EsTUFBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0VBQ0EsT0FBQTtFaEJvUUEsMENBQUE7RUFBQSxhQUFBOztBZ0JqUUEsT0FBQztFaEJpUUQsa0JBQUE7RUFBQSw0QmlCcFJnQyxpRmpCb1JoQztFZ0I5UEksc0JBQUE7RUFDQSxTQUFTLEVBQVQ7RUFDQSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxRQUFBO0VBQ0EsT0FBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VoQnVQSixZQUFBO0VBQUEsYUFBQTs7QWU5SUo7RUM3RUksa0JBQUE7O0FBQ0EsUUFBQztFQUNHLFNBQVMsRUFBVDtFQUNBLGtCQUFBO0VBQ0EsT0FBQTtFQUNBLE1BQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtFaEJvTkoseUNpQnBSZ0MsaUZqQm9SaEM7O0FrQnJRSjtFQ01JLGNBQUE7RW5CK1BBLGdCQUFBO0VBQUEsa0JBQUE7RUs1UEEsaUJBQUE7RUw0UEEsa0JBQUE7RUFBQSxtQkFBQTtFQUFBLGNBQUE7O0FrQnJRSixxQkNnQ0k7RW5CcU9BLGNBQUE7O0FtQm5PSSxxQkFGSixFQUVLO0VuQm1PTCxjQUFBOztBbUJoT0kscUJBTEosRUFLSztFbkJnT0wsY0FBQTs7QWtCclBKO0VDVkksY0FBQTtFbkIrUEEsZ0JBQUE7RUFBQSxrQkFBQTtFSzVQQSxpQkFBQTtFTDRQQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsY0FBQTs7QWtCclBKLHdCQ2dCSTtFbkJxT0EsY0FBQTs7QW1Cbk9JLHdCQUZKLEVBRUs7RW5CbU9MLGNBQUE7O0FtQmhPSSx3QkFMSixFQUtLO0VuQmdPTCxjQUFBOztBa0JyT0o7RUMxQkksY0FBQTtFbkIrUEEsZ0JBQUE7RUFBQSxrQkFBQTtFSzVQQSxpQkFBQTtFTDRQQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsY0FBQTs7QWtCck9KLHNCQ0FJO0VuQnFPQSxjQUFBOztBbUJuT0ksc0JBRkosRUFFSztFbkJtT0wsY0FBQTs7QW1CaE9JLHNCQUxKLEVBS0s7RW5CZ09MLGNBQUE7O0FrQnJOSjtFQzFDSSxjQUFBO0VuQitQQSxnQkFBQTtFQUFBLGtCQUFBO0VLNVBBLGlCQUFBO0VMNFBBLGtCQUFBO0VBQUEsbUJBQUE7RUFBQSxjQUFBOztBa0JyTkosd0JDaEJJO0VuQnFPQSxjQUFBOztBbUJuT0ksd0JBRkosRUFFSztFbkJtT0wsY0FBQTs7QW1CaE9JLHdCQUxKLEVBS0s7RW5CZ09MLGNBQUE7O0FrQnJNSjtFQzFESSxjQUFBO0VuQitQQSxnQkFBQTtFQUFBLGtCQUFBO0VLNVBBLGlCQUFBO0VMNFBBLGtCQUFBO0VBQUEsbUJBQUE7RUFBQSxjQUFBOztBa0JyTUosdUJDaENJO0VuQnFPQSxjQUFBOztBbUJuT0ksdUJBRkosRUFFSztFbkJtT0wsY0FBQTs7QW1CaE9JLHVCQUxKLEVBS0s7RW5CZ09MLGNBQUE7O0FrQnBMSjtFQzNFSSxjQUFBO0VuQitQQSxnQkFBQTtFQUFBLGtCQUFBO0VLNVBBLGlCQUFBO0VMNFBBLGtCQUFBO0VBQUEsbUJBQUE7RUFBQSxjQUFBO0VtQnREQSxrQkFBQTtFbkJzREEsa0JBQUE7O0FrQnBMSixrQkNqREk7RW5CcU9BLGNBQUE7O0FtQm5PSSxrQkFGSixFQUVLO0VuQm1PTCxjQUFBOztBbUJoT0ksa0JBTEosRUFLSztFbkJnT0wsY0FBQTs7QWtCcExKLGtCQ2dJSSxJQUFHLFlBQVk7RW5Cb0RmLGFPalJlLG1CUGlSZjtFQUFBLFNRdWdCVyxPUnZnQlg7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxzQkFBQTtFQUFBLGlCQUFBO0VtQjFDSSxrQkFBQTtFbkIwQ0osU0FBQTtFQUFBLE9BQUE7RW1CckNJLGtCQUFBO0VuQnFDSixXQUFBOztBa0J6Sko7RUN0R0ksY0FBQTtFbkIrUEEsZ0JBQUE7RUFBQSxrQkFBQTtFSzVQQSxpQkFBQTtFTDRQQSxrQkFBQTtFQUFBLG1CQUFBO0VBQUEsY0FBQTtFbUIxSkEsa0JBQUE7RW5CMEpBLG1CQUFBOztBa0J6Skosa0JDNUVJO0VuQnFPQSxjQUFBOztBbUJuT0ksa0JBRkosRUFFSztFbkJtT0wsY0FBQTs7QW1CaE9JLGtCQUxKLEVBS0s7RW5CZ09MLGNBQUE7O0FtQnpKQSxrQkFBQztFQUNHLFNBQVMsRUFBVDtFQUNBLGtCQUFBO0VuQnVKSixXQUFBO0VtQnJKSSxrQkFBQTtFQUNBLE1BQUE7RUFDQSxZQUFBO0VBQ0EsY0FBQTtFQUNBLFVBQUE7RW5CaUpKLG1CQUFBOztBa0J6Skosa0JDV0ksSUFBRyxZQUFZO0VBQ1gsU0FBUyxFQUFUO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLFFBQUE7RW5CMElKLGdCQUFBOztBa0J6Skosa0JDa0JJLElBQUcsWUFBWTtFbkJ1SWYsYU9qUmUsbUJQaVJmO0VBQUEsU1F1Z0JXLE9SdmdCWDtFQUFBLGVBQUE7RUFBQSxpQkFBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLHNCQUFBO0VBQUEsaUJBQUE7RW1CN0hJLGtCQUFBO0VuQjZISixTQUFBO0VBQUEsT0FBQTtFbUJ4SEksa0JBQUE7RW5Cd0hKLFdBQUE7O0FtQjFHQSxrQkFBQztFQUNHLFFBQUE7O0FEaERSLGtCQ21ESSxJQUFHLFlBQVk7RW5Cb0pmLDZCQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7RUFRQSwyQkFBQTtFQXhEQSxXQUFBOztBa0J6Skosa0JDdURJLElBQUcsWUFBWTtFQUNYLFFBQUE7O0FEcERSO0VDMUdJLGNBQUE7RW5CK1BBLGdCQUFBO0VBQUEsa0JBQUE7RUs1UEEsaUJBQUE7RUw0UEEsa0JBQUE7RUFBQSxtQkFBQTtFQUFBLGNBQUE7RW1CMUpBLGtCQUFBO0VuQjBKQSxrQkFBQTs7QWtCckpKLGtCQ2hGSTtFbkJxT0EsY0FBQTs7QW1Cbk9JLGtCQUZKLEVBRUs7RW5CbU9MLGNBQUE7O0FtQmhPSSxrQkFMSixFQUtLO0VuQmdPTCxjQUFBOztBbUJ6SkEsa0JBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxrQkFBQTtFbkJ1SkosV0FBQTtFbUJySkksa0JBQUE7RUFDQSxNQUFBO0VBQ0EsWUFBQTtFQUNBLGNBQUE7RUFDQSxVQUFBO0VuQmlKSixtQkFBQTs7QWtCckpKLGtCQ09JLElBQUcsWUFBWTtFQUNYLFNBQVMsRUFBVDtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxRQUFBO0VuQjBJSixnQkFBQTs7QWtCckpKLGtCQ2NJLElBQUcsWUFBWTtFbkJ1SWYsYU9qUmUsbUJQaVJmO0VBQUEsU1FxaEJhLE9ScmhCYjtFQUFBLGVBQUE7RUFBQSxpQkFBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLHNCQUFBO0VBQUEsaUJBQUE7RW1CN0hJLGtCQUFBO0VuQjZISixTQUFBO0VBQUEsT0FBQTtFbUJ4SEksa0JBQUE7RW5Cd0hKLFdBQUE7O0FtQnhGQSxrQkFBQztFQUNHLE9BQUE7O0FEOURSLGtCQ2lFSSxJQUFHLFlBQVk7RW5Ca0lmLDZCQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7RUFlQSwwQkFBQTtFQS9EQSxVQUFBOztBa0JySkosa0JDcUVJLElBQUcsWUFBWTtFQUNYLE9BQUE7O0FEbEJSO0VDOUpJLGNBQUE7RW5CK1BBLGdCQUFBO0VBQUEsa0JBQUE7RUs1UEEsaUJBQUE7RUw0UEEsa0JBQUE7RUFBQSxtQkFBQTtFQUFBLHFCQUFBO0VBQUEsY0FBQTtFbUIxSkEsa0JBQUE7RW5CMEpBLGtCQUFBO0VrQi9GQSxpQkFBQTtFQUNBLG1CQUFBOztBQUhKLGtCQ3BJSTtFbkJxT0EsY0FBQTs7QW1Cbk9JLGtCQUZKLEVBRUs7RW5CbU9MLGNBQUE7O0FtQmhPSSxrQkFMSixFQUtLO0VuQmdPTCxjQUFBOztBbUJ6SkEsa0JBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxrQkFBQTtFbkJ1SkosV0FBQTtFbUJySkksa0JBQUE7RUFDQSxNQUFBO0VBQ0EsWUFBQTtFQUNBLGNBQUE7RUFDQSxVQUFBO0VuQmlKSixrQkFBQTs7QWtCakdKLGtCQzdDSSxJQUFHLFlBQVk7RUFDWCxTQUFTLEVBQVQ7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsUUFBQTtFbkIwSUosZ0JBQUE7O0FrQmpHSixrQkN0Q0ksSUFBRyxZQUFZO0VuQnVJZixhT2pSZSxtQlBpUmY7RUFBQSxTUTJnQlksT1IzZ0JaO0VBQUEsZUFBQTtFQUFBLGlCQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsc0JBQUE7RUFBQSxpQkFBQTtFbUI3SEksa0JBQUE7RW5CNkhKLFNBQUE7RUFBQSxPQUFBO0VtQnhISSxrQkFBQTtFbkJ3SEosV0FBQTs7QW1CeEZBLGtCQUFDO0VBQ0csT0FBQTs7QURWUixrQkNhSSxJQUFHLFlBQVk7RW5Ca0lmLDZCQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7RUFlQSx5QkFBQTtFQS9EQSxVQUFBOztBa0JqR0osa0JDaUJJLElBQUcsWUFBWTtFQUNYLE9BQUE7O0FDM01SLE1BQU07RUFDRixzQ0FBQTs7QUFFSixPQUFPO0VBQ0gsd0NBQUE7O0FBRUosT0FBTztFQUNILHdDQUFBOztBQUVKLE9BQU87RUFDSCxzQ0FBQTs7QUFFSixNQUFNO0VBQ0Ysb0NBQUE7O0FBNE5KO0VDM01RLHNCQUFBO0VyQjZXSixxQkFBQTtFQUNBLG9CQUFBO0VBQ0EsYUFBQTtFQTJCQSx1QkFBQTtFQUNRLGVBQUE7O0FxQnZZUixRQUFDO0VBQ0csU0FBUyxHQUFUO0VBQ0EsY0FBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTs7QURpTVIsUUFFSTtFcEIrQ0Esb0JBQUE7O0FvQjNCSixRQWQwQjtFQ3RNbEIsQ0FBQyxtQkFBd0IsUUR1TXRCO0lwQndDUCxXQUFBO0lBNkpBLGlCQUFBO0lBQ0MsZ0JBQUE7SUFDUSxRQUFBOztFcUIzWUwsQ0FBQyxvQkFBeUIsUURvTXZCO0lFcENQLG1CQUFBO0lEM0ZBLHFCQUFBO0lyQm9VQSxpQkFBQTtJQUNDLGdCQUFBO0lBQ1EsUUFBQTs7RXFCeFlMLENBQUMseUJBQStCLFFEaU03QjtJRXBDUCxtQkFBQTtJRC9GQSxZQUFBO0lyQndVQSxpQkFBQTtJQUNDLGdCQUFBO0lBQ1EsUUFBQTs7RXFCcllMLENBQUMsMEJBQWdDLFFEOEw5QjtJRXBDUCxtQkFBQTtJRG5HQSxXQUFBO0lyQjRVQSxpQkFBQTtJQUNDLGdCQUFBO0lBQ1EsUUFBQTs7RXFCL1hMLENBQUMsb0JBQXlCLFFENEx2QjtJRXhDUCxtQkFBQTtJRG5HQSxXQUFBO0lyQjRVQSxpQkFBQTtJQUNDLGdCQUFBO0lBQ1EsUUFBQTs7RXFCNVhMLENBQUMseUJBQStCLFFEeUw3QjtJRXhDUCxtQkFBQTtJRG5HQSxXQUFBO0lyQjRVQSxpQkFBQTtJQUNDLGdCQUFBO0lBQ1EsUUFBQTs7RXFCelhMLENBQUMsMEJBQWdDLFFEc0w5QjtJRXhDUCxtQkFBQTtJRG5HQSxXQUFBO0lyQjRVQSxpQkFBQTtJQUNDLGdCQUFBO0lBQ1EsUUFBQTs7RXFCblhMLENBQUMsb0JBQXlCLFFEb0x2QjtJRTVDUCxtQkFBQTtJRC9GQSxZQUFBO0lyQndVQSxpQkFBQTtJQUNDLGdCQUFBO0lBQ1EsUUFBQTs7RXFCaFhMLENBQUMseUJBQStCLFFEaUw3QjtJRTVDUCxtQkFBQTtJRC9GQSxZQUFBO0lyQndVQSxpQkFBQTtJQUNDLGdCQUFBO0lBQ1EsUUFBQTs7RXFCN1dMLENBQUMsMEJBQWdDLFFEOEs5QjtJRTVDUCxtQkFBQTtJRC9GQSxZQUFBO0lyQndVQSxpQkFBQTtJQUNDLGdCQUFBO0lBQ1EsUUFBQTs7O0FvQjdJYixpQkFDSSxRQUFPO0VwQm5CUCxVQUFBO0VxQnZLQSxxQkFBQTtFckJvVUEsaUJBQUE7RUFDQyxnQkFBQTtFQUNRLFFBQUE7O0FvQjdJYixpQkFJSSxRQUFPO0VwQnRCUCxVQUFBO0VxQi9LQSxXQUFBO0VyQjRVQSxpQkFBQTtFQUNDLGdCQUFBO0VBQ1EsUUFBQTs7QW9CN0liLGlCQU9JLFFBQU87RXBCekJQLFVBQUE7RXFCM0tBLFlBQUE7RXJCd1VBLGlCQUFBO0VBQ0MsZ0JBQUE7RUFDUSxRQUFBOztBb0JqSWIsbUJBQ0ksUUFBTztFcEIvQlAsVUFBQTtFcUIvS0EsV0FBQTtFckI0VUEsaUJBQUE7RUFDQyxnQkFBQTtFQUNRLFFBQUE7O0FvQmpJYixtQkFJSSxRQUFPO0VwQmxDUCxVQUFBO0VxQnZLQSxxQkFBQTtFckJvVUEsaUJBQUE7RUFDQyxnQkFBQTtFQUNRLFFBQUE7O0FvQmpJYixtQkFPSSxRQUFPO0VwQnJDUCxVQUFBO0VxQjNLQSxZQUFBO0VyQndVQSxpQkFBQTtFQUNDLGdCQUFBO0VBQ1EsUUFBQTs7QXVCblpiLE1DOFFJO0V4QnBTQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBdUJlSixNQytESTtFeEJ1SUEsWUFBQTtFQUNBLGNBQUE7RUFDQSxvQkFBQTtFd0IrQkEsbUJBQUE7RXhCYUEsU0FBQTtFQUFBLFVBQUE7RUtoTUEscUJBQUE7RUxnTUEscUJBQUE7RUFBQSxnQkFBQTs7QXVCcFBKLE1DcUVJO0VuQjdFQSxpQkFBQTtFTHdOQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxzQkFBQTtFQWtDQSxpQkFBQTtFQUFBLHFCQUFBOztBdUJwUEosTUNxRUksTUFPSTtFeEJsR0osU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QXVCZUosTUNnRkksRUFBQztFeEJvS0QsY0FBQTtFQUFBLHFCQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBOztBd0J2SkksTUFiSixFQUFDLEtBYUk7RXhCdUpMLGNBQUE7O0F3QjVJSSxNQXhCSixFQUFDLEtBd0JJO0V4QjRJTCxjQUFBO0VBQUEscUJBQUE7O0F3QmhJSSxNQXBDSixFQUFDLEtBb0NJO0V4QmdJTCxjQUFBOztBdUJwUEosTUNnSUksT0FBTTtFbkJ4SU4saUJBQUE7RUx3TkEsZUFBQTtFQUNBLGlCQUFBO0VBQ0Esc0JBQUE7RUFrQ0EsY0FBQTtFQUFBLHFCQUFBO0VBQUEsZ0JBQUE7RUFBQSxjQUFBOztBdUJwUEosTUNrSkk7RXhCa0dBLHlCQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBO0VBQUEsVUFBQTtFQUFBLHFCQUFBOztBd0JyRkksTUFiSixRQWFLO0V4QnFGTCxjQUFBOztBd0IxRUksTUF4QkosUUF3Qks7RXhCMEVMLGNBQUE7RUFBQSxxQkFBQTs7QXdCOURJLE1BcENKLFFBb0NLO0V4QjhETCxjQUFBOztBd0JuREksTUEvQ0osUUErQ0s7RXhCbURMLHFCQUFBO0VNdlFBLHFCQUFBOztBa0JnVUEsTUEzSkEsUUErQ0ssS0E0R0osUUFBUTtFeEJ6RFQsY0FBQTs7QXdCNERBLE1BOUpBLFFBK0NLLEtBK0dKLE9BQU87RXhCNURSLGNBQUE7O0F3Qm5ESSxNQS9DSixRQStDSyxLbEI0Qkw7RU5uUEEsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QU1EQSxNa0JrS0EsUUErQ0ssS2xCak5KO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRNmdCUSxPUjdnQlI7RUFBQSxlQUFBO0VBQUEsb0JBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxrQkFBQTs7QU14UEksTWtCc0pKLFFBK0NLLEtsQnRNSixNQUNJO0VOd1BMLGNBQUE7O0FNblBJLE1rQmlKSixRQStDSyxLbEJqTUosT0FDSTtFTm1QTCxjQUFBOztBd0JuQ0ksTUEvREosUUErREs7RXhCbUNMLHFCQUFBO0VNdlFBLHFCQUFBOztBa0JnVUEsTUEzSkEsUUErREssU0E0RkosUUFBUTtFeEJ6RFQsY0FBQTs7QXdCNERBLE1BOUpBLFFBK0RLLFNBK0ZKLE9BQU87RXhCNURSLGNBQUE7O0F3Qm5DSSxNQS9ESixRQStESyxTbEJZTDtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTURBLE1rQmtLQSxRQStESyxTbEJqT0o7RU5vUUQsYU9qUmUsbUJQaVJmO0VBQUEsU1E0aEJRLE9SNWhCUjtFQUFBLGVBQUE7RUFBQSxvQkFBQTtFQUFBLGNBQUE7RU0rQ0EsZ0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VObkRBLG1CQUFBO0VNcURBLGtCQUFBO0VOckRBLGtCQUFBOztBTXhQSSxNa0JzSkosUUErREssU2xCdE5KLE1BQ0k7RU53UEwsY0FBQTs7QU1uUEksTWtCaUpKLFFBK0RLLFNsQmpOSixPQUNJO0VObVBMLGNBQUE7O0F1QitUSixnQkN4VEk7RXhCUEEscUJBQUE7RUFBQSxnQkFBQTtFSzVQQSxpQkFBQTtFTHdOQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxzQkFBQTs7QXdCZ0RJLGdCQVBKLFNBT0s7RUFDRyxTQUFTLElBQVQ7O0FEZ1RaLGdCQ3BmSTtFeEJ1SUEsWUFBQTtFQUNBLGNBQUE7RUFDQSxvQkFBQTtFd0IrQkEsbUJBQUE7RXhCYUEsU0FBQTtFQUFBLFVBQUE7RUtoTUEscUJBQUE7RUxnTUEscUJBQUE7RUFBQSxnQkFBQTs7QXVCK1RKLGdCQzllSTtFbkI3RUEsaUJBQUE7RUx3TkEsZUFBQTtFQUNBLGlCQUFBO0VBQ0Esc0JBQUE7RUFrQ0EsYUFBQTtFQUFBLHFCQUFBOztBdUIrVEosZ0JDOWVJLE1BT0k7RXhCbEdKLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0F1QmtrQkosZ0JDbmVJLEVBQUM7RXhCaUJHLHlCQUFBO0VBQ0EsMkJBQUE7RUFDQSxrQkFBa0Isc0RBQWxCO0VBQ0Esa0JBQWtCLG9EQUFsQjtFQUNBLGtIQUFBO0VBK0lKLHlCQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBOztBd0J2SkksZ0JBYkosRUFBQyxLQWFJO0V4QklELHVCQUFBO0VBQ0EsMkJBQUE7RUFDQSxrQkFBa0Isa0RBQWxCO0VBQ0Esa0JBQWtCLGdEQUFsQjtFQUNBLDhHQUFBO0VBK0lKLGNBQUE7O0F3QjVJSSxnQkF4QkosRUFBQyxLQXdCSTtFeEJQRCx5QkFBQTtFQUNBLDJCQUFBO0VBQ0Esa0JBQWtCLHNEQUFsQjtFQUNBLGtCQUFrQixvREFBbEI7RUFDQSxrSEFBQTtFQStJSix5QkFBQTtFQUFBLGNBQUE7RUFBQSxxQkFBQTs7QXdCaElJLGdCQXBDSixFQUFDLEtBb0NJO0V4Qm5CRCx1QkFBQTtFQUNBLDJCQUFBO0VBQ0Esa0JBQWtCLGtEQUFsQjtFQUNBLGtCQUFrQixnREFBbEI7RUFDQSw4R0FBQTtFQStJSixjQUFBOztBdUIrVEosZ0JDbmJJLE9BQU07RXhCb0hOLG1CQUFBO0VBQUEseUJBQUE7RUs1UEEsaUJBQUE7RUx3TkEsZUFBQTtFQUNBLGlCQUFBO0VBQ0Esc0JBQUE7RUFrQ0EsY0FBQTtFQUFBLHFCQUFBO0VBQUEsZ0JBQUE7RUFBQSxjQUFBOztBdUIrVEosZ0JDamFJO0V4QmtHQSx5QkFBQTtFQUFBLGNBQUE7RUFBQSxxQkFBQTtFQUFBLFVBQUE7RUFBQSxxQkFBQTs7QXdCckZJLGdCQWJKLFFBYUs7RXhCcUZMLGNBQUE7O0F3QjFFSSxnQkF4QkosUUF3Qks7RXhCMEVMLGNBQUE7RUFBQSxxQkFBQTs7QXdCOURJLGdCQXBDSixRQW9DSztFeEI4REwsY0FBQTs7QXdCbkRJLGdCQS9DSixRQStDSztFeEJtREwscUJBQUE7RU12UUEscUJBQUE7O0FrQmdVQSxnQkEzSkEsUUErQ0ssS0E0R0osUUFBUTtFeEJ6RFQsY0FBQTs7QXdCNERBLGdCQTlKQSxRQStDSyxLQStHSixPQUFPO0V4QjVEUixjQUFBOztBd0JuREksZ0JBL0NKLFFBK0NLLEtsQjRCTDtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTURBLGdCa0JrS0EsUUErQ0ssS2xCak5KO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRNmdCUSxPUjdnQlI7RUFBQSxlQUFBO0VBQUEsb0JBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxrQkFBQTs7QU14UEksZ0JrQnNKSixRQStDSyxLbEJ0TUosTUFDSTtFTndQTCxjQUFBOztBTW5QSSxnQmtCaUpKLFFBK0NLLEtsQmpNSixPQUNJO0VObVBMLGNBQUE7O0F3Qm5DSSxnQkEvREosUUErREs7RXhCbUNMLHFCQUFBO0VNdlFBLHFCQUFBOztBa0JnVUEsZ0JBM0pBLFFBK0RLLFNBNEZKLFFBQVE7RXhCekRULGNBQUE7O0F3QjREQSxnQkE5SkEsUUErREssU0ErRkosT0FBTztFeEI1RFIsY0FBQTs7QXdCbkNJLGdCQS9ESixRQStESyxTbEJZTDtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTURBLGdCa0JrS0EsUUErREssU2xCak9KO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRNGhCUSxPUjVoQlI7RUFBQSxlQUFBO0VBQUEsb0JBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxrQkFBQTs7QU14UEksZ0JrQnNKSixRQStESyxTbEJ0TkosTUFDSTtFTndQTCxjQUFBOztBTW5QSSxnQmtCaUpKLFFBK0RLLFNsQmpOSixPQUNJO0VObVBMLGNBQUE7O0F1QjRZSixnQkNyWUk7RXhCUEEscUJBQUE7RUFBQSxnQkFBQTtFSzVQQSxpQkFBQTtFTHdOQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxzQkFBQTs7QXdCZ0RJLGdCQVBKLFNBT0s7RUFDRyxTQUFTLElBQVQ7O0FENlhaLGdCQ2prQkk7RXhCdUlBLFlBQUE7RUFDQSxjQUFBO0VBQ0Esb0JBQUE7RXdCK0JBLG1CQUFBO0V4QmFBLFNBQUE7RUFBQSxVQUFBO0VLaE1BLHFCQUFBO0VMZ01BLHFCQUFBO0VBQUEsZ0JBQUE7O0F1QjRZSixnQkMzakJJO0VuQjdFQSxpQkFBQTtFTHdOQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxzQkFBQTtFQWtDQSxpQkFBQTtFQUFBLHFCQUFBOztBdUI0WUosZ0JDM2pCSSxNQU9JO0V4QmxHSixTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBdUIrb0JKLGdCQ2hqQkksRUFBQztFeEJvS0QsY0FBQTtFQUFBLHFCQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBOztBd0J2SkksZ0JBYkosRUFBQyxLQWFJO0V4QnVKTCxjQUFBOztBd0I1SUksZ0JBeEJKLEVBQUMsS0F3Qkk7RXhCNElMLGNBQUE7RUFBQSxxQkFBQTs7QXdCaElJLGdCQXBDSixFQUFDLEtBb0NJO0V4QmdJTCxjQUFBOztBdUI0WUosZ0JDaGdCSSxPQUFNO0VuQnhJTixpQkFBQTtFTHdOQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxzQkFBQTtFQWtDQSxjQUFBO0VBQUEscUJBQUE7RUFBQSxnQkFBQTtFQUFBLGNBQUE7O0F1QjRZSixnQkM5ZUk7RXhCa0dBLHlCQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBO0VBQUEsVUFBQTtFQUFBLHFCQUFBOztBd0JyRkksZ0JBYkosUUFhSztFeEJxRkwsY0FBQTs7QXdCMUVJLGdCQXhCSixRQXdCSztFeEIwRUwsY0FBQTtFQUFBLHFCQUFBOztBd0I5REksZ0JBcENKLFFBb0NLO0V4QjhETCxjQUFBOztBdUJtZUosZ0JDemNJO0V4QnBTQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBdUJzdUJKLGdCQ3hwQkk7RXhCdUlBLFlBQUE7RUFDQSxjQUFBO0VBQ0Esb0JBQUE7RXdCK0JBLG1CQUFBO0V4QmFBLFNBQUE7RUFBQSxVQUFBO0VLaE1BLHFCQUFBO0VMZ01BLHFCQUFBO0VBQUEsZ0JBQUE7O0F1Qm1lSixnQkNscEJJO0VuQjdFQSxpQkFBQTtFTHdOQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxzQkFBQTtFQWtDQSxpQkFBQTtFQUFBLHFCQUFBOztBdUJtZUosZ0JDbHBCSSxNQU9JO0V4QmxHSixTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBdUJzdUJKLGdCQ3ZvQkksRUFBQztFeEJvS0QsbUJBQUE7RUFBQSxjQUFBO0VBQUEscUJBQUE7RUFBQSxjQUFBO0VBQUEscUJBQUE7O0F3QnZKSSxnQkFiSixFQUFDLEtBYUk7RXhCdUpMLG1CQUFBO0VBQUEsY0FBQTs7QXdCNUlJLGdCQXhCSixFQUFDLEtBd0JJO0V4QjRJTCxtQkFBQTtFQUFBLGNBQUE7RUFBQSxxQkFBQTs7QXdCaElJLGdCQXBDSixFQUFDLEtBb0NJO0V4QmdJTCxtQkFBQTtFQUFBLGNBQUE7O0F1Qm1lSixnQkN2bEJJLE9BQU07RXhCb0hOLG1CQUFBO0VLNVBBLGlCQUFBO0VMd05BLGVBQUE7RUFDQSxpQkFBQTtFQUNBLHNCQUFBO0VBa0NBLGNBQUE7RUFBQSxxQkFBQTtFQUFBLGdCQUFBO0VBQUEsY0FBQTs7QXVCbWVKLGdCQ3JrQkk7RXhCa0dBLG1CQUFBO0VBQUEseUJBQUE7RUFBQSxjQUFBO0VBQUEscUJBQUE7RUFBQSxVQUFBO0VBQUEscUJBQUE7O0F3QnJGSSxnQkFiSixRQWFLO0V4QnFGTCxtQkFBQTtFQUFBLGNBQUE7O0F3QjFFSSxnQkF4QkosUUF3Qks7RXhCMEVMLG1CQUFBO0VBQUEsY0FBQTtFQUFBLHFCQUFBOztBd0I5REksZ0JBcENKLFFBb0NLO0V4QjhETCxtQkFBQTtFQUFBLGNBQUE7O0F3Qm5ESSxnQkEvQ0osUUErQ0s7RXhCbURMLHFCQUFBO0VNdlFBLHFCQUFBOztBa0JnVUEsZ0JBM0pBLFFBK0NLLEtBNEdKLFFBQVE7RXhCekRULGNBQUE7O0F3QjREQSxnQkE5SkEsUUErQ0ssS0ErR0osT0FBTztFeEI1RFIsY0FBQTs7QXdCbkRJLGdCQS9DSixRQStDSyxLbEI0Qkw7RU5uUEEsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QU1EQSxnQmtCa0tBLFFBK0NLLEtsQmpOSjtFTm9RRCxhT2pSZSxtQlBpUmY7RUFBQSxTUTZnQlEsT1I3Z0JSO0VBQUEsZUFBQTtFQUFBLG9CQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsa0JBQUE7O0FNeFBJLGdCa0JzSkosUUErQ0ssS2xCdE1KLE1BQ0k7RU53UEwsY0FBQTs7QU1uUEksZ0JrQmlKSixRQStDSyxLbEJqTUosT0FDSTtFTm1QTCxjQUFBOztBd0JuQ0ksZ0JBL0RKLFFBK0RLO0V4Qm1DTCxxQkFBQTtFTXZRQSxxQkFBQTs7QWtCZ1VBLGdCQTNKQSxRQStESyxTQTRGSixRQUFRO0V4QnpEVCxjQUFBOztBd0I0REEsZ0JBOUpBLFFBK0RLLFNBK0ZKLE9BQU87RXhCNURSLGNBQUE7O0F3Qm5DSSxnQkEvREosUUErREssU2xCWUw7RU5uUEEsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QU1EQSxnQmtCa0tBLFFBK0RLLFNsQmpPSjtFTm9RRCxhT2pSZSxtQlBpUmY7RUFBQSxTUTRoQlEsT1I1aEJSO0VBQUEsZUFBQTtFQUFBLG9CQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsa0JBQUE7O0FNeFBJLGdCa0JzSkosUUErREssU2xCdE5KLE1BQ0k7RU53UEwsY0FBQTs7QU1uUEksZ0JrQmlKSixRQStESyxTbEJqTkosT0FDSTtFTm1QTCxjQUFBOztBeUJ6T0osT0FBTyxNQUFNO0V6QnlPVCxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsYUFBQTtFQUFBLFdBQUE7RUFBQSx5Q0FBQTtFQUFBLE1BQUE7RUFBQSxRQUFBO0VBQUEsU0FBQTtFQUFBLE9BQUE7RTBCcEpBLGFBQUE7RUFDQSxVQUFBO0UxQm1KQSxlQUFBO0VBQUEsYUFBQTtFQUFBLCtCQUFBOztBeUJ6T0osT0FBTyxNQUFNLGNDZ0NUO0UxQnlNQSxnQkFBQTtFQUFBLG1CQUFBOztBeUJ6T0osT0FBTyxNQUFNLGNDZ0NULGNBRUk7RXJCckRKLGlCQUFBO0VMNFBBLGdCQUFBO0VBQUEsZ0JBQUE7RUt4SUksa0JBQUE7RUFJQSxtQkFBQTs7QW9CckdSLE9BQU8sTUFBTSxjQ2lEVCxlQUNJLFFBQU87RTFCdUxYLGtCQUFBO0VBQUEscUJBQUE7RVU1REEsc0JBQUE7RUFDQSxnQkFBQTtFQUNBLFNBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLDRCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLHFCQUFBO0VBQ0Esb0JBQUE7RVZtREEsZ0JBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTs7QXlCek9KLE9BQU8sTUFBTSxjQ2lEVCxlQUNJLFFBQU8sTXBCZ0tYO0VOblBBLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0FNREEsT21CMkJHLE1BQU0sY0NpRFQsZUFDSSxRQUFPLE1wQjdFVjtFTm9RRCxhT2pSZSxtQlBpUmY7RUFBQSxTUTJoQlUsT1IzaEJWO0VBQUEsZUFBQTtFQUFBLGlCQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsU0FBQTs7QU14UEksT21CZUQsTUFBTSxjQ2lEVCxlQUNJLFFBQU8sTXBCbEVWLE1BQ0k7RU53UEwsY0FBQTs7QU1uUEksT21CVUQsTUFBTSxjQ2lEVCxlQUNJLFFBQU8sTXBCN0RWLE9BQ0k7RU5tUEwsY0FBQTs7QVVqREEsT2V4TEcsTUFBTSxjQ2lEVCxlQUNJLFFBQU8sTWhCc0lWO0FBQ0QsT2V6TEcsTUFBTSxjQ2lEVCxlQUNJLFFBQU8sTWhCdUlWO0VBQ0csZ0JBQUE7RUFDQSxZQUFBOztBQUVKLE9lN0xHLE1BQU0sY0NpRFQsZUFDSSxRQUFPLE1oQjJJVjtFQUNHLGdCQUFBO0VBQ0EsWUFBQTs7QUFFSixPZWpNRyxNQUFNLGNDaURULGVBQ0ksUUFBTyxNaEIrSVY7QUFDRCxPZWxNRyxNQUFNLGNDaURULGVBQ0ksUUFBTyxNaEJnSlY7QUFDRCxRQUFRLFVBQVcsUWVuTWhCLE1BQU0sY0NpRFQsZUFDSSxRQUFPO0VoQmtKUCxtQkFBQTtFQUNBLG9CQUFBO0VWb0NKLFlBQUE7O0EwQi9JQSxPRDFGRyxNQUFNLGNDMEZSO0VBQ0csVUFBQTs7QUR2RlIsT0FBTyxNQUFNO0V6QnFPVCxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsYUFBQTtFQUFBLFdBQUE7RUFBQSx5Q0FBQTtFQUFBLE1BQUE7RUFBQSxRQUFBO0VBQUEsU0FBQTtFQUFBLE9BQUE7RTBCcEpBLGFBQUE7RUFDQSxVQUFBO0UxQm1KQSxlQUFBO0VBQUEsYUFBQTtFQUFBLCtCQUFBOztBeUJyT0osT0FBTyxNQUFNLGdCQzRCVDtFMUJ5TUEsZ0JBQUE7RUFBQSxtQkFBQTs7QXlCck9KLE9BQU8sTUFBTSxnQkM0QlQsY0FFSTtFckJyREosaUJBQUE7RUw0UEEsZ0JBQUE7RUFBQSxnQkFBQTtFS3hJSSxrQkFBQTtFQUlBLG1CQUFBOztBb0JqR1IsT0FBTyxNQUFNLGdCQzZDVCxlQUNJLFFBQU87RTFCdUxYLGtCQUFBO0VBQUEscUJBQUE7RVU1REEsc0JBQUE7RUFDQSxnQkFBQTtFQUNBLFNBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLDRCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLHFCQUFBO0VBQ0Esb0JBQUE7RVZtREEsZ0JBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTs7QXlCck9KLE9BQU8sTUFBTSxnQkM2Q1QsZUFDSSxRQUFPLE1wQmdLWDtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTURBLE9tQitCRyxNQUFNLGdCQzZDVCxlQUNJLFFBQU8sTXBCN0VWO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRMmhCVSxPUjNoQlY7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTXhQSSxPbUJtQkQsTUFBTSxnQkM2Q1QsZUFDSSxRQUFPLE1wQmxFVixNQUNJO0VOd1BMLGNBQUE7O0FNblBJLE9tQmNELE1BQU0sZ0JDNkNULGVBQ0ksUUFBTyxNcEI3RFYsT0FDSTtFTm1QTCxjQUFBOztBVWpEQSxPZXBMRyxNQUFNLGdCQzZDVCxlQUNJLFFBQU8sTWhCc0lWO0FBQ0QsT2VyTEcsTUFBTSxnQkM2Q1QsZUFDSSxRQUFPLE1oQnVJVjtFQUNHLGdCQUFBO0VBQ0EsWUFBQTs7QUFFSixPZXpMRyxNQUFNLGdCQzZDVCxlQUNJLFFBQU8sTWhCMklWO0VBQ0csZ0JBQUE7RUFDQSxZQUFBOztBQUVKLE9lN0xHLE1BQU0sZ0JDNkNULGVBQ0ksUUFBTyxNaEIrSVY7QUFDRCxPZTlMRyxNQUFNLGdCQzZDVCxlQUNJLFFBQU8sTWhCZ0pWO0FBQ0QsUUFBUSxVQUFXLFFlL0xoQixNQUFNLGdCQzZDVCxlQUNJLFFBQU87RWhCa0pQLG1CQUFBO0VBQ0Esb0JBQUE7RVZvQ0osWUFBQTs7QTBCL0lBLE9EdEZHLE1BQU0sZ0JDc0ZSO0VBQ0csVUFBQTs7QURuRlIsT0FBTztFekJpT0gsZ0NBQUE7RTBCbElBLGVBQUE7RUFDQSxNQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0UxQjhIQSxtQkFBQTtFQUFBLGFBQUE7RTBCM0hBLFVBQUE7O0FBQ0EsT0R2R0csUUN1R0Y7RUFDRyxZQUFBO0VBQ0EseUJBQUE7O0FEOFNSLE9BQU8sTUFBTTtFekJ0TFQsbUJBQUE7RUFBQSx5QkFBQTtFQUFBLGFBQUE7RUFBQSxXQUFBO0UwQnBHQSxnQkFBQTtFMUJvR0EsaUJBQUE7RUFBQSx5Q0FBQTtFQUFBLE1BQUE7RUFBQSxRQUFBO0VBQUEsU0FBQTtFQUFBLE9BQUE7RTBCcEpBLGFBQUE7RUFDQSxVQUFBO0UxQm1KQSxlQUFBO0VBQUEsYUFBQTtFQUFBLCtCQUFBOztBeUJzTEosT0FBTyxNQUFNLGdCQy9YVDtFMUJ5TUEsZ0JBQUE7RUFBQSxtQkFBQTs7QXlCc0xKLE9BQU8sTUFBTSxnQkMvWFQsY0FFSTtFckJyREosaUJBQUE7RUw0UEEsZ0JBQUE7RUFBQSxnQkFBQTtFS3hJSSxrQkFBQTtFQUlBLG1CQUFBOztBb0IwVFIsT0FBTyxNQUFNLGdCQzlXVCxlQUNJLFFBQU87RTFCdUxYLGtCQUFBO0VBQUEscUJBQUE7RVU1REEsc0JBQUE7RUFDQSxnQkFBQTtFQUNBLFNBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLDRCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLHFCQUFBO0VBQ0Esb0JBQUE7RVZtREEsZ0JBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTs7QXlCc0xKLE9BQU8sTUFBTSxnQkM5V1QsZUFDSSxRQUFPLE1wQmdLWDtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTURBLE9tQjBiRyxNQUFNLGdCQzlXVCxlQUNJLFFBQU8sTXBCN0VWO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRMmhCVSxPUjNoQlY7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTXhQSSxPbUI4YUQsTUFBTSxnQkM5V1QsZUFDSSxRQUFPLE1wQmxFVixNQUNJO0VOd1BMLGNBQUE7O0FNblBJLE9tQnlhRCxNQUFNLGdCQzlXVCxlQUNJLFFBQU8sTXBCN0RWLE9BQ0k7RU5tUEwsY0FBQTs7QVVqREEsT2V1T0csTUFBTSxnQkM5V1QsZUFDSSxRQUFPLE1oQnNJVjtBQUNELE9lc09HLE1BQU0sZ0JDOVdULGVBQ0ksUUFBTyxNaEJ1SVY7RUFDRyxnQkFBQTtFQUNBLFlBQUE7O0FBRUosT2VrT0csTUFBTSxnQkM5V1QsZUFDSSxRQUFPLE1oQjJJVjtFQUNHLGdCQUFBO0VBQ0EsWUFBQTs7QUFFSixPZThORyxNQUFNLGdCQzlXVCxlQUNJLFFBQU8sTWhCK0lWO0FBQ0QsT2U2TkcsTUFBTSxnQkM5V1QsZUFDSSxRQUFPLE1oQmdKVjtBQUNELFFBQVEsVUFBVyxRZTROaEIsTUFBTSxnQkM5V1QsZUFDSSxRQUFPO0VoQmtKUCxtQkFBQTtFQUNBLG9CQUFBO0VWb0NKLFlBQUE7O0EwQi9JQSxPRHFVRyxNQUFNLGdCQ3JVUjtFQUNHLFVBQUE7O0FEK1ZSLE9BQU8sTUFBTTtFekJqTlQsbUJBQUE7RUFBQSx5QkFBQTtFQUFBLGFBQUE7RUFBQSxXQUFBO0VBQUEseUNBQUE7RUFBQSxNQUFBO0VBQUEsUUFBQTtFQUFBLFNBQUE7RUFBQSxPQUFBO0UwQnBKQSxhQUFBO0VBQ0EsVUFBQTtFMUJtSkEsZUFBQTtFQUFBLGFBQUE7RUFBQSwrQkFBQTs7QXlCaU5KLE9BQU8sTUFBTSxnQkMxWlQ7RTFCeU1BLGdCQUFBO0VBQUEsbUJBQUE7O0F5QmlOSixPQUFPLE1BQU0sZ0JDMVpULGNBRUk7RXJCckRKLGlCQUFBO0VMNFBBLGdCQUFBO0VBQUEsZ0JBQUE7RUt4SUksa0JBQUE7RUFJQSxtQkFBQTs7QW9CcVZSLE9BQU8sTUFBTSxnQkNoWlQ7RUEyRkEsZ0JBQUE7RTFCb0dBLGlCQUFBOztBeUJpTkosT0FBTyxNQUFNLGdCQ3pZVCxlQUNJLFFBQU87RTFCdUxYLGtCQUFBO0VBQUEscUJBQUE7RVU1REEsc0JBQUE7RUFDQSxnQkFBQTtFQUNBLFNBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLDRCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLHFCQUFBO0VBQ0Esb0JBQUE7RVZtREEsZ0JBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTs7QXlCaU5KLE9BQU8sTUFBTSxnQkN6WVQsZUFDSSxRQUFPLE1wQmdLWDtFTm5QQSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBTURBLE9tQnFkRyxNQUFNLGdCQ3pZVCxlQUNJLFFBQU8sTXBCN0VWO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRMmhCVSxPUjNoQlY7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTXhQSSxPbUJ5Y0QsTUFBTSxnQkN6WVQsZUFDSSxRQUFPLE1wQmxFVixNQUNJO0VOd1BMLGNBQUE7O0FNblBJLE9tQm9jRCxNQUFNLGdCQ3pZVCxlQUNJLFFBQU8sTXBCN0RWLE9BQ0k7RU5tUEwsY0FBQTs7QVVqREEsT2VrUUcsTUFBTSxnQkN6WVQsZUFDSSxRQUFPLE1oQnNJVjtBQUNELE9laVFHLE1BQU0sZ0JDellULGVBQ0ksUUFBTyxNaEJ1SVY7RUFDRyxnQkFBQTtFQUNBLFlBQUE7O0FBRUosT2U2UEcsTUFBTSxnQkN6WVQsZUFDSSxRQUFPLE1oQjJJVjtFQUNHLGdCQUFBO0VBQ0EsWUFBQTs7QUFFSixPZXlQRyxNQUFNLGdCQ3pZVCxlQUNJLFFBQU8sTWhCK0lWO0FBQ0QsT2V3UEcsTUFBTSxnQkN6WVQsZUFDSSxRQUFPLE1oQmdKVjtBQUNELFFBQVEsVUFBVyxRZXVQaEIsTUFBTSxnQkN6WVQsZUFDSSxRQUFPO0VoQmtKUCxtQkFBQTtFQUNBLG9CQUFBO0VWb0NKLFlBQUE7O0EwQi9JQSxPRGdXRyxNQUFNLGdCQ2hXUjtFQUNHLFVBQUE7O0FEd1lSLE9BQU8sTUFBTTtFekIxUFQsbUJBQUE7RUFBQSx5QkFBQTtFQUFBLGFBQUE7RUFBQSxXQUFBO0VBQUEseUNBQUE7RUFBQSxNQUFBO0VBQUEsUUFBQTtFQUFBLFNBQUE7RUFBQSxPQUFBO0UwQnBKQSxhQUFBO0VBQ0EsVUFBQTtFMUJtSkEsZUFBQTtFQUFBLGFBQUE7RUFBQSwrQkFBQTs7QXlCMFBKLE9BQU8sTUFBTSxnQkNuY1Q7RTFCeU1BLGdCQUFBO0VBQUEsbUJBQUE7O0F5QjBQSixPQUFPLE1BQU0sZ0JDbmNULGNBRUk7RXJCckRKLGlCQUFBO0VMNFBBLGdCQUFBO0VBQUEsZ0JBQUE7RUt4SUksa0JBQUE7RUFJQSxtQkFBQTs7QW9COFhSLE9BQU8sTUFBTSxnQkN6YlQ7RTFCK0xBLGdCQUFBOztBeUIwUEosT0FBTyxNQUFNLGdCQ3JiVDtFMUIyTEEsY0FBQTs7QXlCMFBKLE9BQU8sTUFBTSxnQkNsYlQsZUFDSSxRQUFPO0UxQnVMWCxrQkFBQTtFQUFBLHFCQUFBO0VVNURBLHNCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxTQUFBO0VBQ0EsU0FBQTtFQUNBLFVBQUE7RUFDQSw0QkFBQTtFQUNBLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxxQkFBQTtFQUNBLG9CQUFBO0VWbURBLGdCQUFBO0VBQUEsU0FBQTtFQUFBLFdBQUE7O0F5QjBQSixPQUFPLE1BQU0sZ0JDbGJULGVBQ0ksUUFBTyxNcEJnS1g7RU5uUEEsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QU1EQSxPbUI4ZkcsTUFBTSxnQkNsYlQsZUFDSSxRQUFPLE1wQjdFVjtFTm9RRCxhT2pSZSxtQlBpUmY7RUFBQSxTUTJoQlUsT1IzaEJWO0VBQUEsZUFBQTtFQUFBLGlCQUFBO0VBQUEsY0FBQTtFTStDQSxnQkFBQTtFQUNBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EscUJBQUE7RU5uREEsbUJBQUE7RU1xREEsa0JBQUE7RU5yREEsU0FBQTs7QU14UEksT21Ca2ZELE1BQU0sZ0JDbGJULGVBQ0ksUUFBTyxNcEJsRVYsTUFDSTtFTndQTCxjQUFBOztBTW5QSSxPbUI2ZUQsTUFBTSxnQkNsYlQsZUFDSSxRQUFPLE1wQjdEVixPQUNJO0VObVBMLGNBQUE7O0FVakRBLE9lMlNHLE1BQU0sZ0JDbGJULGVBQ0ksUUFBTyxNaEJzSVY7QUFDRCxPZTBTRyxNQUFNLGdCQ2xiVCxlQUNJLFFBQU8sTWhCdUlWO0VBQ0csZ0JBQUE7RUFDQSxZQUFBOztBQUVKLE9lc1NHLE1BQU0sZ0JDbGJULGVBQ0ksUUFBTyxNaEIySVY7RUFDRyxnQkFBQTtFQUNBLFlBQUE7O0FBRUosT2VrU0csTUFBTSxnQkNsYlQsZUFDSSxRQUFPLE1oQitJVjtBQUNELE9laVNHLE1BQU0sZ0JDbGJULGVBQ0ksUUFBTyxNaEJnSlY7QUFDRCxRQUFRLFVBQVcsUWVnU2hCLE1BQU0sZ0JDbGJULGVBQ0ksUUFBTztFaEJrSlAsbUJBQUE7RUFDQSxvQkFBQTtFVm9DSixZQUFBOztBMEIvSUEsT0R5WUcsTUFBTSxnQkN6WVI7RUFDRyxVQUFBOztBRHFiUixPQUFPLE1BQU07RXpCdlNULG1CQUFBO0VBQUEseUJBQUE7RUFBQSxhQUFBO0VBQUEsV0FBQTtFQUFBLHlDQUFBO0VBQUEsTUFBQTtFQUFBLFFBQUE7RUFBQSxTQUFBO0VBQUEsT0FBQTtFMEJwSkEsYUFBQTtFQUNBLFVBQUE7RTFCbUpBLGVBQUE7RUFBQSxhQUFBO0VBQUEsK0JBQUE7O0F5QnVTSixPQUFPLE1BQU0sZ0JDaGZUO0UxQnlNQSxnQkFBQTtFQUFBLG1CQUFBOztBeUJ1U0osT0FBTyxNQUFNLGdCQ2hmVCxjQUVJO0VyQnJESixpQkFBQTtFTDRQQSxnQkFBQTtFQUFBLGdCQUFBO0VLeElJLGdCQUFBO0VBSUEsbUJBQUE7O0FvQjJhUixPQUFPLE1BQU0sZ0JDL2RULGVBQ0ksUUFBTztFMUJ1TFgsa0JBQUE7RUFBQSxxQkFBQTtFVTVEQSxzQkFBQTtFQUNBLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLFNBQUE7RUFDQSxVQUFBO0VBQ0EsNEJBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EscUJBQUE7RUFDQSxvQkFBQTtFVm1EQSxnQkFBQTtFQUFBLFNBQUE7RUFBQSxXQUFBOztBeUJ1U0osT0FBTyxNQUFNLGdCQy9kVCxlQUNJLFFBQU8sTXBCZ0tYO0VOblBBLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0FNREEsT21CMmlCRyxNQUFNLGdCQy9kVCxlQUNJLFFBQU8sTXBCN0VWO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRMmhCVSxPUjNoQlY7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTXhQSSxPbUIraEJELE1BQU0sZ0JDL2RULGVBQ0ksUUFBTyxNcEJsRVYsTUFDSTtFTndQTCxjQUFBOztBTW5QSSxPbUIwaEJELE1BQU0sZ0JDL2RULGVBQ0ksUUFBTyxNcEI3RFYsT0FDSTtFTm1QTCxjQUFBOztBVWpEQSxPZXdWRyxNQUFNLGdCQy9kVCxlQUNJLFFBQU8sTWhCc0lWO0FBQ0QsT2V1VkcsTUFBTSxnQkMvZFQsZUFDSSxRQUFPLE1oQnVJVjtFQUNHLGdCQUFBO0VBQ0EsWUFBQTs7QUFFSixPZW1WRyxNQUFNLGdCQy9kVCxlQUNJLFFBQU8sTWhCMklWO0VBQ0csZ0JBQUE7RUFDQSxZQUFBOztBQUVKLE9lK1VHLE1BQU0sZ0JDL2RULGVBQ0ksUUFBTyxNaEIrSVY7QUFDRCxPZThVRyxNQUFNLGdCQy9kVCxlQUNJLFFBQU8sTWhCZ0pWO0FBQ0QsUUFBUSxVQUFXLFFlNlVoQixNQUFNLGdCQy9kVCxlQUNJLFFBQU87RWhCa0pQLG1CQUFBO0VBQ0Esb0JBQUE7RVZvQ0osWUFBQTs7QTBCL0lBLE9Ec2JHLE1BQU0sZ0JDdGJSO0VBQ0csVUFBQTs7QURnZVIsT0FBTyxNQUFNO0V6QmxWVCxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsYUFBQTtFQUFBLFdBQUE7RUFBQSx5Q0FBQTtFQUFBLE1BQUE7RUFBQSxRQUFBO0VBQUEsU0FBQTtFQUFBLE9BQUE7RTBCcEpBLGFBQUE7RUFDQSxVQUFBO0UxQm1KQSxlQUFBO0VBQUEsYUFBQTtFQUFBLCtCQUFBOztBeUJrVkosT0FBTyxNQUFNLGdCQ3hYVCxjQUNJLFNBQVE7RTFCcUNaLGdCQUFBOztBQWxQQSxPeUJva0JHLE1BQU0sZ0JDeFhULGNBQ0ksU0FBUSxRMUI3TVg7QUFDRCxPeUJta0JHLE1BQU0sZ0JDeFhULGNBQ0ksU0FBUSxRMUI1TVg7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLE95QitqQkcsTUFBTSxnQkN4WFQsY0FDSSxTQUFRLFExQnhNWDtFQUNHLFdBQUE7O0F5QjhqQlIsT0FBTyxNQUFNLGdCQ3hYVCxjQUNJLFNBQVEsUXhCOUlaO0VBQ0ksV0FBQTs7QXVCb2dCUixPQUFPLE1BQU0sZ0JDeFhULGNBQ0ksU0FBUSxReEJwT1o7QXVCMmxCSixPQUFPLE1BQU0sZ0JDeFhULGNBQ0ksU0FBUSxReEJuT1o7RUFDSSxxQkFBQTs7QXVCeWxCUixPQUFPLE1BQU0sZ0JDeFhULGNBQ0ksU0FBUSxReEJwT1osU0FNSSxFQUFDO0F1QnFsQlQsT0FBTyxNQUFNLGdCQ3hYVCxjQUNJLFNBQVEsUXhCbk9aLFdBS0ksRUFBQztFQUNHLHFCQUFBOztBdUJvbEJaLE9BQU8sTUFBTSxnQkN4WFQsY0FDSSxTQUFRLFF4QnpOWixTQUNJO0VGNlBKLGlCQUFBOztBeUJrVkosT0FBTyxNQUFNLGdCQ3hYVCxjQUNJLFNBQVEsUXhCak5aLFdBSUksRUFBQztFRmtQTCxlQUFBOztBeUJrVkosT0FBTyxNQUFNLGdCQzNoQlQ7RTFCeU1BLGdCQUFBO0VBQUEsbUJBQUE7O0F5QmtWSixPQUFPLE1BQU0sZ0JDM2hCVCxjQUVJO0VyQnJESixpQkFBQTtFTDRQQSxnQkFBQTtFQUFBLGdCQUFBO0VLeElJLGtCQUFBO0VBSUEsbUJBQUE7O0FvQnNkUixPQUFPLE1BQU0sZ0JDMWdCVCxlQUNJLFFBQU87RTFCdUxYLGtCQUFBO0VBQUEscUJBQUE7RVU1REEsc0JBQUE7RUFDQSxnQkFBQTtFQUNBLFNBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLDRCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLHFCQUFBO0VBQ0Esb0JBQUE7RVZtREEsZ0JBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTs7QXlCa1ZKLE9BQU8sTUFBTSxnQkMxZ0JULGVBQ0ksUUFBTyxNcEJnS1g7RU5uUEEsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QU1EQSxPbUJzbEJHLE1BQU0sZ0JDMWdCVCxlQUNJLFFBQU8sTXBCN0VWO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRMmhCVSxPUjNoQlY7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTXhQSSxPbUIwa0JELE1BQU0sZ0JDMWdCVCxlQUNJLFFBQU8sTXBCbEVWLE1BQ0k7RU53UEwsY0FBQTs7QU1uUEksT21CcWtCRCxNQUFNLGdCQzFnQlQsZUFDSSxRQUFPLE1wQjdEVixPQUNJO0VObVBMLGNBQUE7O0FVakRBLE9lbVlHLE1BQU0sZ0JDMWdCVCxlQUNJLFFBQU8sTWhCc0lWO0FBQ0QsT2VrWUcsTUFBTSxnQkMxZ0JULGVBQ0ksUUFBTyxNaEJ1SVY7RUFDRyxnQkFBQTtFQUNBLFlBQUE7O0FBRUosT2U4WEcsTUFBTSxnQkMxZ0JULGVBQ0ksUUFBTyxNaEIySVY7RUFDRyxnQkFBQTtFQUNBLFlBQUE7O0FBRUosT2UwWEcsTUFBTSxnQkMxZ0JULGVBQ0ksUUFBTyxNaEIrSVY7QUFDRCxPZXlYRyxNQUFNLGdCQzFnQlQsZUFDSSxRQUFPLE1oQmdKVjtBQUNELFFBQVEsVUFBVyxRZXdYaEIsTUFBTSxnQkMxZ0JULGVBQ0ksUUFBTztFaEJrSlAsbUJBQUE7RUFDQSxvQkFBQTtFVm9DSixZQUFBOztBMEIvSUEsT0RpZUcsTUFBTSxnQkNqZVI7RUFDRyxVQUFBOztBRHlnQlIsT0FBTyxNQUFNO0V6QjNYVCxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsYUFBQTtFQUFBLFdBQUE7RUFBQSx5Q0FBQTtFQUFBLE1BQUE7RUFBQSxRQUFBO0VBQUEsU0FBQTtFQUFBLE9BQUE7RTBCcEpBLGFBQUE7RUFDQSxVQUFBO0UxQm1KQSxlQUFBO0VBQUEsYUFBQTtFQUFBLCtCQUFBOztBeUIyWEosT0FBTyxNQUFNLGdCQ3BrQlQ7RTFCeU1BLGdCQUFBO0VBQUEsbUJBQUE7O0F5QjJYSixPQUFPLE1BQU0sZ0JDcGtCVCxjQUVJO0VyQnJESixpQkFBQTtFTDRQQSxnQkFBQTtFQUFBLGdCQUFBO0VLeElJLGtCQUFBO0VBSUEsbUJBQUE7O0FvQitmUixPQUFPLE1BQU0sZ0JDbmpCVCxlQUNJLFFBQU87RTFCdUxYLGtCQUFBO0VBQUEsU0FBQTtFQUFBLFdBQUE7O0EwQi9JQSxPRDBnQkcsTUFBTSxnQkMxZ0JSO0VBQ0csVUFBQTs7QUQraUJSLE9BQU8sTUFBTTtFekJqYVQsbUJBQUE7RUFBQSx5QkFBQTtFQUFBLGFBQUE7RUFBQSxXQUFBO0VBQUEseUNBQUE7RUFBQSxNQUFBO0VBQUEsUUFBQTtFQUFBLFNBQUE7RUFBQSxPQUFBO0UwQnBKQSxhQUFBO0VBQ0EsVUFBQTtFMUJtSkEsZUFBQTtFQUFBLGFBQUE7RUFBQSwrQkFBQTs7QXlCaWFKLE9BQU8sTUFBTSxnQkMxbUJUO0UxQnlNQSxnQkFBQTtFQUFBLG1CQUFBOztBeUJpYUosT0FBTyxNQUFNLGdCQzFtQlQsY0FFSTtFckJyREosaUJBQUE7RUw0UEEsZ0JBQUE7RUFBQSxnQkFBQTtFS3hJSSxrQkFBQTtFQUlBLG1CQUFBOztBb0JxaUJSLE9BQU8sTUFBTSxnQkN6bEJULGVBQ0ksUUFBTztFMUJ1TFgsa0JBQUE7RUFBQSxxQkFBQTtFVTVEQSxzQkFBQTtFQUNBLGdCQUFBO0VBQ0EsU0FBQTtFQUNBLFNBQUE7RUFDQSxVQUFBO0VBQ0EsNEJBQUE7RUFDQSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EscUJBQUE7RUFDQSxvQkFBQTtFVm1EQSxnQkFBQTtFQUFBLFNBQUE7RUFBQSxXQUFBOztBTXBRQSxPbUJxcUJHLE1BQU0sZ0JDemxCVCxlQUNJLFFBQU8sTXBCN0VWO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRd2hCWSxPUnhoQlo7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxzQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTXhQSSxPbUJ5cEJELE1BQU0sZ0JDemxCVCxlQUNJLFFBQU8sTXBCbEVWLE1BQ0k7RU53UEwsY0FBQTs7QU1uUEksT21Cb3BCRCxNQUFNLGdCQ3psQlQsZUFDSSxRQUFPLE1wQjdEVixPQUNJO0VObVBMLGNBQUE7O0FVakRBLE9la2RHLE1BQU0sZ0JDemxCVCxlQUNJLFFBQU8sTWhCc0lWO0FBQ0QsT2VpZEcsTUFBTSxnQkN6bEJULGVBQ0ksUUFBTyxNaEJ1SVY7RUFDRyxnQkFBQTtFQUNBLFlBQUE7O0FBRUosT2U2Y0csTUFBTSxnQkN6bEJULGVBQ0ksUUFBTyxNaEIySVY7RUFDRyxnQkFBQTtFQUNBLFlBQUE7O0FBRUosT2V5Y0csTUFBTSxnQkN6bEJULGVBQ0ksUUFBTyxNaEIrSVY7QUFDRCxPZXdjRyxNQUFNLGdCQ3psQlQsZUFDSSxRQUFPLE1oQmdKVjtBQUNELFFBQVEsVUFBVyxRZXVjaEIsTUFBTSxnQkN6bEJULGVBQ0ksUUFBTztFaEJrSlAsbUJBQUE7RUFDQSxvQkFBQTtFVm9DSixZQUFBOztBMEIvSUEsT0RnakJHLE1BQU0sZ0JDaGpCUjtFQUNHLFVBQUE7O0FEMmxCUixPQUFPLE1BQU07RXpCN2NULG1CQUFBO0VBQUEseUJBQUE7RUFBQSxhQUFBO0VBQUEsV0FBQTtFQUFBLHlDQUFBO0VBQUEsTUFBQTtFQUFBLFFBQUE7RUFBQSxTQUFBO0VBQUEsT0FBQTtFMEJwSkEsYUFBQTtFQUNBLFVBQUE7RTFCbUpBLGVBQUE7RUFBQSxhQUFBO0VBQUEsK0JBQUE7O0F5QjZjSixPQUFPLE1BQU0sZ0JDdHBCVDtFMUJ5TUEsZ0JBQUE7RUFBQSxtQkFBQTs7QXlCNmNKLE9BQU8sTUFBTSxnQkN0cEJULGNBRUk7RXJCckRKLGlCQUFBO0VMNFBBLGdCQUFBO0VBQUEsZ0JBQUE7RUt4SUksa0JBQUE7RUFJQSxtQkFBQTs7QW9CaWxCUixPQUFPLE1BQU0sZ0JDcm9CVCxlQUNJLFFBQU87RTFCdUxYLGtCQUFBO0VBQUEscUJBQUE7RVU1REEsc0JBQUE7RUFDQSxnQkFBQTtFQUNBLFNBQUE7RUFDQSxTQUFBO0VBQ0EsVUFBQTtFQUNBLDRCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLHFCQUFBO0VBQ0Esb0JBQUE7RVZtREEsZ0JBQUE7RUFBQSxTQUFBO0VBQUEsV0FBQTs7QXlCNmNKLE9BQU8sTUFBTSxnQkNyb0JULGVBQ0ksUUFBTyxNcEJnS1g7RU5uUEEsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QU1EQSxPbUJpdEJHLE1BQU0sZ0JDcm9CVCxlQUNJLFFBQU8sTXBCN0VWO0VOb1FELGFPalJlLG1CUGlSZjtFQUFBLFNRMmhCVSxPUjNoQlY7RUFBQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VNK0NBLGdCQUFBO0VBQ0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxxQkFBQTtFTm5EQSxtQkFBQTtFTXFEQSxrQkFBQTtFTnJEQSxTQUFBOztBTXhQSSxPbUJxc0JELE1BQU0sZ0JDcm9CVCxlQUNJLFFBQU8sTXBCbEVWLE1BQ0k7RU53UEwsY0FBQTs7QU1uUEksT21CZ3NCRCxNQUFNLGdCQ3JvQlQsZUFDSSxRQUFPLE1wQjdEVixPQUNJO0VObVBMLGNBQUE7O0FVakRBLE9lOGZHLE1BQU0sZ0JDcm9CVCxlQUNJLFFBQU8sTWhCc0lWO0FBQ0QsT2U2ZkcsTUFBTSxnQkNyb0JULGVBQ0ksUUFBTyxNaEJ1SVY7RUFDRyxnQkFBQTtFQUNBLFlBQUE7O0FBRUosT2V5ZkcsTUFBTSxnQkNyb0JULGVBQ0ksUUFBTyxNaEIySVY7RUFDRyxnQkFBQTtFQUNBLFlBQUE7O0FBRUosT2VxZkcsTUFBTSxnQkNyb0JULGVBQ0ksUUFBTyxNaEIrSVY7QUFDRCxPZW9mRyxNQUFNLGdCQ3JvQlQsZUFDSSxRQUFPLE1oQmdKVjtBQUNELFFBQVEsVUFBVyxRZW1maEIsTUFBTSxnQkNyb0JULGVBQ0ksUUFBTztFaEJrSlAsbUJBQUE7RUFDQSxvQkFBQTtFVm9DSixZQUFBOztBMEIvSUEsT0Q0bEJHLE1BQU0sZ0JDNWxCUjtFQUNHLFVBQUE7O0FEK2xCUixPQUFPLFFBQVEsa0JBQWtCO0V6QmpkN0IsZ0NBQUE7RTBCbElBLGVBQUE7RUFDQSxNQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0UxQjhIQSxtQkFBQTtFQUFBLGFBQUE7RTBCM0hBLFVBQUE7O0FBQ0EsT0Qya0JHLFFBQVEsa0JBQWtCLE9DM2tCNUI7RUFDRyxZQUFBO0VBQ0EseUJBQUE7O0FDdkVSO0VDakZJLGdCQUFBOztBQUNBLGtCQUFDO0U1QitRRCxjQUFBO0VBQUEsYU9qUmUsbUJQaVJmO0U0QnBIQSxrQkFBQTtFNUJvSEEsZUFBQTtFQUFBLGlCQUFBO0VBQUEscUJBQUE7RUFBQSxZQUFBO0U0Qi9HQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLG1CQUFBO0VBOEJBLFNwQndsQlEsUUFBQSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSO0VBdExJLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLGNBQUE7O0FEbUVSLGtCQ2pFSSxNQUFLO0U1QlZMLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0E0QlFZLGtCQUxaLE1BQUssY0FFQSxNQUVHLFFBQ0s7QUFBRCxrQkFMWixNQUFLLGNBR0EsUUFDRyxRQUNLO0VBQ0csVUFBQTs7QUQyRHBCLGtCQ3RESTtFQUNJLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLGVBQUE7O0FEbURSLGtCQ3RESSxNQUlJO0U1QnpCSixTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBNEJxQkksa0JBUEosTUFPSztFNUI4T0wsY0FBQTtFQUFBLGFPalJlLG1CUGlSZjtFNEJwSEEsa0JBQUE7RTVCb0hBLGVBQUE7RUFBQSxpQkFBQTtFQUFBLHFCQUFBO0VBQUEsWUFBQTtFNEIvR0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxtQkFBQTtFQTNIUSxVQUFBOztBQUdBLGtCQWpCUixNQWdCSyxNQUNJO0VBQ0csVUFBQTs7QUFHQSxrQkFyQlosTUFnQkssTUFJRyxRQUNLO0VBQ0csVUFBQTs7QURnQ3BCLGtCQ3NEUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxRQUFBLFFBQUEsUUFBQSxRQUFBLE9vQnhsQlI7O0FEakhKLGtCQ3NEUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSOztBRGpISixrQkNzRFEsU0FBUTtFQUNKLFVBQUE7O0FBQ0Esa0JBRkosU0FBUSxDQUVIO0VBeURULFNwQndsQlEsUUFBQSxRQUFBLE9vQnhsQlI7O0FEakhKLGtCQ3NEUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxRQUFBLE9vQnhsQlI7O0FEakhKLGtCQ3NEUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxPb0J4bEJSOztBRHBFSjtFQzlISSxnQkFBQTs7QUFDQSxrQkFBQztFNUIrUUQsY0FBQTtFQUFBLGFPalJlLG1CUGlSZjtFNEJwSEEsa0JBQUE7RTVCb0hBLGVBQUE7RUFBQSxpQkFBQTtFQUFBLHFCQUFBO0VBQUEsWUFBQTtFNEIvR0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxtQkFBQTtFQThCQSxTcEJ3bEJRLFFBQUEsUUFBQSxRQUFBLFFBQUEsUUFBQSxRQUFBLFFBQUEsT29CeGxCUjtFQXRMSSxrQkFBQTtFQUNBLFVBQUE7RUFDQSxjQUFBOztBRGdIUixrQkM5R0ksTUFBSztFNUJWTCxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBNEJRWSxrQkFMWixNQUFLLGNBRUEsTUFFRyxRQUNLO0FBQUQsa0JBTFosTUFBSyxjQUdBLFFBQ0csUUFDSztFQUNHLFVBQUE7O0FEd0dwQixrQkNuR0k7RUFDSSxrQkFBQTtFQUNBLGNBQUE7RUFDQSxlQUFBOztBRGdHUixrQkNuR0ksTUFJSTtFNUJ6QkosU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QTRCcUJJLGtCQVBKLE1BT0s7RTVCOE9MLGNBQUE7RUFBQSxhT2pSZSxtQlBpUmY7RTRCcEhBLGtCQUFBO0U1Qm9IQSxlQUFBO0VBQUEsaUJBQUE7RUFBQSxxQkFBQTtFQUFBLFlBQUE7RTRCL0dBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBO0VBQ0EsbUJBQUE7RUEzSFEsVUFBQTs7QUFHQSxrQkFqQlIsTUFnQkssTUFDSTtFQUNHLFVBQUE7O0FBR0Esa0JBckJaLE1BZ0JLLE1BSUcsUUFDSztFQUNHLFVBQUE7O0FENkVwQixrQkNTUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxRQUFBLFFBQUEsUUFBQSxRQUFBLFFBQUEsUUFBQSxRQUFBLE9vQnhsQlI7O0FEcEVKLGtCQ1NRLFNBQVE7RUFDSixVQUFBOztBQUNBLGtCQUZKLFNBQVEsQ0FFSDtFQXlEVCxTcEJ3bEJRLFFBQUEsUUFBQSxRQUFBLFFBQUEsUUFBQSxRQUFBLE9vQnhsQlI7O0FEcEVKLGtCQ1NRLFNBQVE7RUFDSixVQUFBOztBQUNBLGtCQUZKLFNBQVEsQ0FFSDtFQXlEVCxTcEJ3bEJRLFFBQUEsUUFBQSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSOztBRHBFSixrQkNTUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxRQUFBLFFBQUEsUUFBQSxRQUFBLE9vQnhsQlI7O0FEcEVKLGtCQ1NRLFNBQVE7RUFDSixVQUFBOztBQUNBLGtCQUZKLFNBQVEsQ0FFSDtFQXlEVCxTcEJ3bEJRLFFBQUEsUUFBQSxRQUFBLE9vQnhsQlI7O0FEcEVKLGtCQ1NRLFNBQVE7RUFDSixVQUFBOztBQUNBLGtCQUZKLFNBQVEsQ0FFSDtFQXlEVCxTcEJ3bEJRLFFBQUEsUUFBQSxPb0J4bEJSOztBRHBFSixrQkNTUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxRQUFBLE9vQnhsQlI7O0FEcEVKLGtCQ1NRLFNBQVE7RUFDSixVQUFBOztBQUNBLGtCQUZKLFNBQVEsQ0FFSDtFQXlEVCxTcEJ3bEJRLE9vQnhsQlI7O0FEN0JKO0VDcktJLGdCQUFBOztBQUNBLGtCQUFDO0U1QitRRCxjQUFBO0VBQUEsYU9qUmUsbUJQaVJmO0U0QnBIQSxrQkFBQTtFNUJvSEEsZUFBQTtFQUFBLGlCQUFBO0VBQUEscUJBQUE7RUFBQSxZQUFBO0U0Qi9HQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLG1CQUFBO0VBOEJBLFNwQndsQlEsUUFBQSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSO0VBdExJLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLGNBQUE7O0FEdUpSLGtCQ3JKSSxNQUFLO0U1QlZMLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0E0QlFZLGtCQUxaLE1BQUssY0FFQSxNQUVHLFFBQ0s7QUFBRCxrQkFMWixNQUFLLGNBR0EsUUFDRyxRQUNLO0VBQ0csVUFBQTs7QUQrSXBCLGtCQzFJSTtFQUNJLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLGVBQUE7O0FEdUlSLGtCQzFJSSxNQUlJO0U1QnpCSixTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBNEJxQkksa0JBUEosTUFPSztFNUI4T0wsY0FBQTtFQUFBLGFPalJlLG1CUGlSZjtFNEJwSEEsa0JBQUE7RTVCb0hBLGVBQUE7RUFBQSxpQkFBQTtFQUFBLHFCQUFBO0VBQUEsWUFBQTtFNEIvR0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxtQkFBQTtFQTNIUSxVQUFBOztBQUdBLGtCQWpCUixNQWdCSyxNQUNJO0VBQ0csVUFBQTs7QUFHQSxrQkFyQlosTUFnQkssTUFJRyxRQUNLO0VBQ0csVUFBQTs7QURvSHBCLGtCQzlCUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxRQUFBLFFBQUEsUUFBQSxRQUFBLE9vQnhsQlI7O0FEN0JKLGtCQzlCUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSOztBRDdCSixrQkM5QlEsU0FBUTtFQUNKLFVBQUE7O0FBQ0Esa0JBRkosU0FBUSxDQUVIO0VBeURULFNwQndsQlEsUUFBQSxRQUFBLE9vQnhsQlI7O0FEN0JKLGtCQzlCUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxRQUFBLE9vQnhsQlI7O0FEN0JKLGtCQzlCUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxPb0J4bEJSOztBRE9KO0VDek1JLGdCQUFBOztBQUNBLGtCQUFDO0U1QitRRCxjQUFBO0VBQUEsYU9qUmUsbUJQaVJmO0U0QnBIQSxrQkFBQTtFNUJvSEEsZUFBQTtFQUFBLGlCQUFBO0VBQUEscUJBQUE7RUFBQSxZQUFBO0U0Qi9HQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLG1CQUFBO0VBOEJBLFNwQm1sQmlCLFFBQUEsUUFBQSxRQUFBLFFBQUEsT29CbmxCakI7RUF0TEksa0JBQUE7RUFDQSxVQUFBO0VBQ0EsY0FBQTs7QUQyTFIsa0JDekxJLE1BQUs7RTVCVkwsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QTRCUVksa0JBTFosTUFBSyxjQUVBLE1BRUcsUUFDSztBQUFELGtCQUxaLE1BQUssY0FHQSxRQUNHLFFBQ0s7RUFDRyxVQUFBOztBRG1McEIsa0JDOUtJO0VBQ0ksa0JBQUE7RUFDQSxjQUFBO0VBQ0EsZUFBQTs7QUQyS1Isa0JDOUtJLE1BSUk7RTVCekJKLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0E0QnFCSSxrQkFQSixNQU9LO0U1QjhPTCxjQUFBO0VBQUEsYU9qUmUsbUJQaVJmO0U0QnBIQSxrQkFBQTtFNUJvSEEsZUFBQTtFQUFBLGlCQUFBO0VBQUEscUJBQUE7RUFBQSxZQUFBO0U0Qi9HQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLG1CQUFBO0VBM0hRLFVBQUE7O0FBR0Esa0JBakJSLE1BZ0JLLE1BQ0k7RUFDRyxVQUFBOztBQUdBLGtCQXJCWixNQWdCSyxNQUlHLFFBQ0s7RUFDRyxVQUFBOztBRHdKcEIsa0JDbEVRLFNBQVE7RUFDSixVQUFBOztBQUNBLGtCQUZKLFNBQVEsQ0FFSDtFQXlEVCxTcEJtbEJpQixRQUFBLFFBQUEsUUFBQSxRQUFBLE9vQm5sQmpCOztBRE9KLGtCQ2xFUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCbWxCaUIsUUFBQSxRQUFBLFFBQUEsT29CbmxCakI7O0FET0osa0JDbEVRLFNBQVE7RUFDSixVQUFBOztBQUNBLGtCQUZKLFNBQVEsQ0FFSDtFQXlEVCxTcEJtbEJpQixRQUFBLFFBQUEsT29CbmxCakI7O0FET0osa0JDbEVRLFNBQVE7RUFDSixVQUFBOztBQUNBLGtCQUZKLFNBQVEsQ0FFSDtFQXlEVCxTcEJtbEJpQixRQUFBLE9vQm5sQmpCOztBRE9KLGtCQ2xFUSxTQUFRO0VBQ0osVUFBQTs7QUFDQSxrQkFGSixTQUFRLENBRUg7RUF5RFQsU3BCbWxCaUIsT29CbmxCakI7O0FEK0NKLGtCQUNJLFNBQVEsT0FBTztFQ2xQZixnQkFBQTs7QUFDQSxrQkRpUEEsU0FBUSxPQUFPLEtDalBkO0U1QitRRCxjQUFBO0VBQUEsYU9qUmUsbUJQaVJmO0U0QnBIQSxrQkFBQTtFNUJvSEEsZUFBQTtFQUFBLGlCQUFBO0VBQUEscUJBQUE7RUFBQSxZQUFBO0U0Qi9HQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTtFQUNBLG1CQUFBO0VBOEJBLFNwQndsQlEsUUFBQSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSO0VBdExJLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLGNBQUE7O0FEbU9SLGtCQUNJLFNBQVEsT0FBTyxLQ2xPZixNQUFLO0U1QlZMLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0E0QlFZLGtCRDZOWixTQUFRLE9BQU8sS0NsT2YsTUFBSyxjQUVBLE1BRUcsUUFDSztBQUFELGtCRDZOWixTQUFRLE9BQU8sS0NsT2YsTUFBSyxjQUdBLFFBQ0csUUFDSztFQUNHLFVBQUE7O0FEMk5wQixrQkFDSSxTQUFRLE9BQU8sS0N2TmY7RUFDSSxrQkFBQTtFQUNBLGNBQUE7RUFDQSxlQUFBOztBRG1OUixrQkFDSSxTQUFRLE9BQU8sS0N2TmYsTUFJSTtFNUJ6QkosU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QTRCcUJJLGtCRGdOSixTQUFRLE9BQU8sS0N2TmYsTUFPSztFNUI4T0wsY0FBQTtFQUFBLGFPalJlLG1CUGlSZjtFNEJwSEEsa0JBQUE7RTVCb0hBLGVBQUE7RUFBQSxpQkFBQTtFQUFBLHFCQUFBO0VBQUEsWUFBQTtFNEIvR0EsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7RUFDQSxtQkFBQTtFQTNIUSxVQUFBOztBQUdBLGtCRHNNUixTQUFRLE9BQU8sS0N2TmYsTUFnQkssTUFDSTtFQUNHLFVBQUE7O0FBR0Esa0JEa01aLFNBQVEsT0FBTyxLQ3ZOZixNQWdCSyxNQUlHLFFBQ0s7RUFDRyxVQUFBOztBRGdNcEIsa0JBQ0ksU0FBUSxPQUFPLEtDM0dYLFNBQVE7RUFDSixVQUFBOztBQUNBLGtCRHlHUixTQUFRLE9BQU8sS0MzR1gsU0FBUSxDQUVIO0VBeURULFNwQndsQlEsUUFBQSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSOztBRCtDSixrQkFDSSxTQUFRLE9BQU8sS0MzR1gsU0FBUTtFQUNKLFVBQUE7O0FBQ0Esa0JEeUdSLFNBQVEsT0FBTyxLQzNHWCxTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSOztBRCtDSixrQkFDSSxTQUFRLE9BQU8sS0MzR1gsU0FBUTtFQUNKLFVBQUE7O0FBQ0Esa0JEeUdSLFNBQVEsT0FBTyxLQzNHWCxTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxRQUFBLFFBQUEsT29CeGxCUjs7QUQrQ0osa0JBQ0ksU0FBUSxPQUFPLEtDM0dYLFNBQVE7RUFDSixVQUFBOztBQUNBLGtCRHlHUixTQUFRLE9BQU8sS0MzR1gsU0FBUSxDQUVIO0VBeURULFNwQndsQlEsUUFBQSxPb0J4bEJSOztBRCtDSixrQkFDSSxTQUFRLE9BQU8sS0MzR1gsU0FBUTtFQUNKLFVBQUE7O0FBQ0Esa0JEeUdSLFNBQVEsT0FBTyxLQzNHWCxTQUFRLENBRUg7RUF5RFQsU3BCd2xCUSxPb0J4bEJSOztBRGlFSjtFQzVMSSxtQkFBQTtFQUNBLGdCQUFBOztBRDJMSix5QkN6TEk7RTVCc01BLFlBQUE7RTRCbkxJLHFCQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTs7QUFuQkEseUJBRkosZUFFSztFQUNHLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxXQUFBO0VBQ0EsVUFBQTtFNUIrTFIsY0FBQTtFNEJoR0EsY0FBQTtFNUJnR0EsYU9qUmUsbUJQaVJmO0U0QjlFQSxTcEJ3bEJRLFFBQUEsUUFBQSxRQUFBLFFBQUEsT29CeGxCUjtFQWZBLGtCQUFBO0U1QjZGQSxlQUFBO0VBQUEsWUFBQTtFQUFBLGlCQUFBO0VBQUEscUJBQUE7RTRCeEZBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBOztBRHlFSix5QkN6TEksZUFzQkk7RUFDSSxjQUFBO0VBQ0EsZ0JBQUE7O0FBQ0EseUJBekJSLGVBc0JJLE9BR0s7RUFDRyxrQkFBQTtFQUNBLFVBQUE7RTVCMktaLGNBQUE7RTRCaEdBLGNBQUE7RTVCZ0dBLGFPalJlLG1CUGlSZjtFNEI5RUEsU3BCd2xCUSxRQUFBLFFBQUEsUUFBQSxRQUFBLE9vQnhsQlI7RUFmQSxrQkFBQTtFNUI2RkEsZUFBQTtFQUFBLFlBQUE7RUFBQSxpQkFBQTtFQUFBLHFCQUFBO0U0QnhGQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTs7QUR5RUoseUJDekxJLGVBc0JJLE9BZ0JJO0U1QjFHUixTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBMkIwUUo7RUNoTkksbUJBQUE7RUFDQSxnQkFBQTs7QUQrTUoseUJDN01JO0U1QnNNQSxZQUFBO0U0Qm5MSSxxQkFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7O0FBbkJBLHlCQUZKLGVBRUs7RUFDRyxrQkFBQTtFQUNBLE1BQUE7RUFDQSxPQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7RTVCK0xSLGNBQUE7RTRCaEdBLGNBQUE7RTVCZ0dBLGFPalJlLG1CUGlSZjtFNEI5RUEsU3BCd2xCUSxRQUFBLFFBQUEsUUFBQSxRQUFBLFFBQUEsUUFBQSxRQUFBLE9vQnhsQlI7RUFmQSxrQkFBQTtFNUI2RkEsZUFBQTtFQUFBLFlBQUE7RUFBQSxpQkFBQTtFQUFBLHFCQUFBO0U0QnhGQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTs7QUQ2RkoseUJDN01JLGVBc0JJO0VBQ0ksY0FBQTtFQUNBLGdCQUFBOztBQUNBLHlCQXpCUixlQXNCSSxPQUdLO0VBQ0csa0JBQUE7RUFDQSxVQUFBO0U1QjJLWixjQUFBO0U0QmhHQSxjQUFBO0U1QmdHQSxhT2pSZSxtQlBpUmY7RTRCOUVBLFNwQndsQlEsUUFBQSxRQUFBLFFBQUEsUUFBQSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSO0VBZkEsa0JBQUE7RTVCNkZBLGVBQUE7RUFBQSxZQUFBO0VBQUEsaUJBQUE7RUFBQSxxQkFBQTtFNEJ4RkEsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7O0FENkZKLHlCQzdNSSxlQXNCSSxPQWdCSTtFNUIxR1IsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QTJCaVNKO0VDdk9JLG1CQUFBO0VBQ0EsZ0JBQUE7O0FEc09KLHlCQ3BPSTtFNUJzTUEsWUFBQTtFNEJuTEkscUJBQUE7RUFDQSxzQkFBQTtFQUNBLGtCQUFBOztBQW5CQSx5QkFGSixlQUVLO0VBQ0csa0JBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTtFQUNBLFdBQUE7RUFDQSxVQUFBO0U1QitMUixjQUFBO0U0QmhHQSxjQUFBO0U1QmdHQSxhT2pSZSxtQlBpUmY7RTRCOUVBLFNwQndsQlEsUUFBQSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSO0VBZkEsa0JBQUE7RTVCNkZBLGVBQUE7RUFBQSxZQUFBO0VBQUEsaUJBQUE7RUFBQSxxQkFBQTtFNEJ4RkEsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7O0FEb0hKLHlCQ3BPSSxlQXNCSTtFQUNJLGNBQUE7RUFDQSxnQkFBQTs7QUFDQSx5QkF6QlIsZUFzQkksT0FHSztFQUNHLGtCQUFBO0VBQ0EsVUFBQTtFNUIyS1osY0FBQTtFNEJoR0EsY0FBQTtFNUJnR0EsYU9qUmUsbUJQaVJmO0U0QjlFQSxTcEJ3bEJRLFFBQUEsUUFBQSxRQUFBLFFBQUEsT29CeGxCUjtFQWZBLGtCQUFBO0U1QjZGQSxlQUFBO0VBQUEsWUFBQTtFQUFBLGlCQUFBO0VBQUEscUJBQUE7RTRCeEZBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBOztBRG9ISix5QkNwT0ksZUFzQkksT0FnQkk7RTVCMUdSLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0EyQndUSjtFQzlQSSxtQkFBQTtFQUNBLGdCQUFBOztBRDZQSix5QkMzUEk7RTVCc01BLFlBQUE7RTRCbkxJLHFCQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTs7QUFuQkEseUJBRkosZUFFSztFQUNHLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxXQUFBO0VBQ0EsVUFBQTtFNUIrTFIsY0FBQTtFNEJoR0EsY0FBQTtFNUJnR0EsYU9qUmUsbUJQaVJmO0U0QjlFQSxTcEJtbEJpQixRQUFBLFFBQUEsUUFBQSxRQUFBLE9vQm5sQmpCO0VBZkEsa0JBQUE7RTVCNkZBLGVBQUE7RUFBQSxZQUFBO0VBQUEsaUJBQUE7RUFBQSxxQkFBQTtFNEJ4RkEsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7O0FEMklKLHlCQzNQSSxlQXNCSTtFQUNJLGNBQUE7RUFDQSxnQkFBQTs7QUFDQSx5QkF6QlIsZUFzQkksT0FHSztFQUNHLGtCQUFBO0VBQ0EsVUFBQTtFNUIyS1osY0FBQTtFNEJoR0EsY0FBQTtFNUJnR0EsYU9qUmUsbUJQaVJmO0U0QjlFQSxTcEJtbEJpQixRQUFBLFFBQUEsUUFBQSxRQUFBLE9vQm5sQmpCO0VBZkEsa0JBQUE7RTVCNkZBLGVBQUE7RUFBQSxZQUFBO0VBQUEsaUJBQUE7RUFBQSxxQkFBQTtFNEJ4RkEsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7O0FEMklKLHlCQzNQSSxlQXNCSSxPQWdCSTtFNUIxR1IsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QTJCOFVKO0VDcFJJLG1CQUFBO0VBQ0EsZ0JBQUE7O0FEbVJKLHlCQ25PSTtFNUJsSEEsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QTJCOFVKLHlCQ2pSSTtFNUJzTUEsWUFBQTtFNEJuTEkscUJBQUE7RUFDQSxzQkFBQTtFQUNBLGtCQUFBOztBQW5CQSx5QkFGSixlQUVLO0VBQ0csa0JBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTtFQUNBLFdBQUE7RUFDQSxVQUFBO0U1QitMUixjQUFBO0U0QmhHQSxjQUFBO0U1QmdHQSxhT2pSZSxtQlBpUmY7RTRCOUVBLFNwQndsQlEsUUFBQSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSO0VBZkEsa0JBQUE7RTVCNkZBLGVBQUE7RUFBQSxZQUFBO0VBQUEsaUJBQUE7RUFBQSxxQkFBQTtFNEJ4RkEsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7O0FEaUtKLHlCQ2pSSSxlQXNCSTtFQUNJLGNBQUE7RUFDQSxnQkFBQTs7QUFDQSx5QkF6QlIsZUFzQkksT0FHSztFQUNHLGtCQUFBO0VBQ0EsVUFBQTtFNUIyS1osY0FBQTtFNEJoR0EsY0FBQTtFNUJnR0EsYU9qUmUsbUJQaVJmO0U0QjlFQSxTcEJ3bEJRLFFBQUEsUUFBQSxRQUFBLFFBQUEsT29CeGxCUjtFQWZBLGtCQUFBO0U1QjZGQSxlQUFBO0VBQUEsWUFBQTtFQUFBLGlCQUFBO0VBQUEscUJBQUE7RTRCeEZBLFdBQUE7RUFDQSxtQkFBQTtFQUNBLG1DQUFBOztBRGlLSix5QkNqUkksZUFzQkksT0FnQkk7RTVCMUdSLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0EyQm9YSix5QkFDSTtFQzNUQSxtQkFBQTtFQUNBLGdCQUFBOztBRHlUSix5QkFDSSxnQkN4VEE7RTVCc01BLFlBQUE7RTRCbkxJLHFCQUFBO0VBQ0Esc0JBQUE7RUFDQSxrQkFBQTs7QUFuQkEseUJEc1RKLGdCQ3hUQSxlQUVLO0VBQ0csa0JBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTtFQUNBLFdBQUE7RUFDQSxVQUFBO0U1QitMUixjQUFBO0U0QmhHQSxjQUFBO0U1QmdHQSxhT2pSZSxtQlBpUmY7RTRCOUVBLFNwQndsQlEsUUFBQSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSO0VBZkEsa0JBQUE7RTVCNkZBLGVBQUE7RUFBQSxZQUFBO0VBQUEsaUJBQUE7RUFBQSxxQkFBQTtFNEJ4RkEsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7O0FEdU1KLHlCQUNJLGdCQ3hUQSxlQXNCSTtFQUNJLGNBQUE7RUFDQSxnQkFBQTs7QUFDQSx5QkQrUlIsZ0JDeFRBLGVBc0JJLE9BR0s7RUFDRyxrQkFBQTtFQUNBLFVBQUE7RTVCMktaLGNBQUE7RTRCaEdBLGNBQUE7RTVCZ0dBLGFPalJlLG1CUGlSZjtFNEI5RUEsU3BCd2xCUSxRQUFBLFFBQUEsUUFBQSxRQUFBLE9vQnhsQlI7RUFmQSxrQkFBQTtFNUI2RkEsZUFBQTtFQUFBLFlBQUE7RUFBQSxpQkFBQTtFQUFBLHFCQUFBO0U0QnhGQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTs7QUR1TUoseUJBQ0ksZ0JDeFRBLGVBc0JJLE9BZ0JJO0U1QjFHUixTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBMkJ1WUo7RUM3VUksbUJBQUE7RUFDQSxnQkFBQTs7QUQ0VUoseUJDMVVJO0U1QnNNQSxZQUFBO0U0Qm5MSSxxQkFBQTtFQUNBLHNCQUFBO0VBQ0Esa0JBQUE7O0FBbkJBLHlCQUZKLGVBRUs7RUFDRyxrQkFBQTtFQUNBLE1BQUE7RUFDQSxPQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7RTVCK0xSLGNBQUE7RTRCaEdBLGNBQUE7RTVCZ0dBLGFPalJlLG1CUGlSZjtFNEI5RUEsU3BCd2xCUSxRQUFBLFFBQUEsUUFBQSxRQUFBLE9vQnhsQlI7RUFmQSxrQkFBQTtFNUI2RkEsZUFBQTtFQUFBLFlBQUE7RUFBQSxpQkFBQTtFQUFBLHFCQUFBO0U0QnhGQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQ0FBQTs7QUQwTkoseUJDMVVJLGVBc0JJO0VBQ0ksY0FBQTtFQUNBLGdCQUFBOztBQUNBLHlCQXpCUixlQXNCSSxPQUdLO0VBQ0csa0JBQUE7RUFDQSxVQUFBO0U1QjJLWixjQUFBO0U0QmhHQSxjQUFBO0U1QmdHQSxhT2pSZSxtQlBpUmY7RTRCOUVBLFNwQndsQlEsUUFBQSxRQUFBLFFBQUEsUUFBQSxPb0J4bEJSO0VBZkEsa0JBQUE7RTVCNkZBLGVBQUE7RUFBQSxZQUFBO0VBQUEsaUJBQUE7RUFBQSxxQkFBQTtFNEJ4RkEsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUNBQUE7O0FEME5KLHlCQzFVSSxlQXNCSSxPQWdCSTtFNUIxR1IsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QTJCdVlKLHlCQzVSSTtFNUJsSEEsU0FBQTtFQUNBLE1BQU0sZ0JBQU47RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTs7QTZCakJKO0VBQ0ksYUFBQTs7QUNzQko7RUMzQkksa0JBQUE7RUFDQSxVQUFBOztBL0JxQ0EsbUJBQUM7QUFDRCxtQkFBQztFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7O0FBRUosbUJBQUM7RUFDRyxXQUFBOztBOEJqQlIsbUJDekJJLFFBQU87RUFDSCxXQUFBO0VBQ0EsV0FBQTs7QUR1QlIsbUJDekJJLFFBQU8sTUFHSDtFQUNJLGNBQUE7RS9Ca1JSLFlBQUE7RStCaFJRLGtCQUFBO0VBQ0EsVUFBQTs7QURrQlosbUJDZkksUUFBTztFQUNILHNCQUFBO0VBRUEsWUFBQTtFL0J5UUosZ0JBQUE7RStCdlFJLGtCQUFBO0VBQ0EsV0FBQTs7QS9Cb0JKLG1CK0IxQkEsUUFBTyxRL0IwQk47QUFDRCxtQitCM0JBLFFBQU8sUS9CMkJOO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSixtQitCL0JBLFFBQU8sUS9CK0JOO0VBQ0csV0FBQTs7QStCekJBLG1CQVBKLFFBQU8sUUFPRjtFQUNHLGNBQUE7O0FET1osbUJDMENJLFFBQU87RS9CbU5QLGlCQUFBOztBOEI3UEosbUJDMENJLFFBQU8sTUFFSDtFMUIzQ0osaUJBQUE7RUw0UEEsZ0JBQUE7RUFBQSxpQkFBQTtFQUFBLGNBQUE7RUFBQSxxQkFBQTtFQUFBLG1CQUFBO0VBQUEseUJBQUE7RStCNUxRLG1CQUFBO0UvQjRMUixZQUFBO0VBQUEsMEJBQUE7O0FLektBLG1CMEIxQ0EsUUFBTyxNQUVILFUxQndDSDtFTHlLRCxjQUFBO0VBQUEscUJBQUE7O0FLcktBLG1CMEI5Q0EsUUFBTyxNQUVILFUxQjRDSDtFTHFLRCxjQUFBO0VBQUEscUJBQUE7O0FLaktBLG1CMEJsREEsUUFBTyxNQUVILFUxQmdESDtFTGlLRCxjQUFBO0VBQUEscUJBQUE7O0ErQnhMSSxtQkEzQkosUUFBTyxNQTJCRixJQUFJLFdBQVksVUFBUztBQUMxQixtQkE1QkosUUFBTyxNQTRCRixJQUFJLFdBQVksVUFBUztFL0J1TDlCLG1CQUFBOztBK0JwTEksbUJBL0JKLFFBQU8sTUErQkYsSUFBSSxXQUFZLFVBQVM7QUFDMUIsbUJBaENKLFFBQU8sTUFnQ0YsT0FBUTtBQUNULG1CQWpDSixRQUFPLE1BaUNGLE9BQVEsVUFBUztBQUNsQixtQkFsQ0osUUFBTyxNQWtDRixPQUFRLFVBQVM7RS9CaUx0QixtQkFBQTtFQUFBLGNBQUE7O0ErQjdLSSxtQkF0Q0osUUFBTyxNQXNDRixPQUFRO0FBQ1QsbUJBdkNKLFFBQU8sTUF1Q0YsT0FBUSxVQUFTO0FBQ2xCLG1CQXhDSixRQUFPLE1Bd0NGLE9BQVEsVUFBUztFL0IyS3RCLG1CQUFBOztBOEI3UEosbUJDc0ZJLFFBQU87RS9CdUtQLG1CQUFBO0UrQnJLSSxnQkFBQTtFQUNBLDRCQUFBO0UvQm9LSix5QkFBQTs7QThCL0JKO0VDelBJLGtCQUFBO0VBQ0EsVUFBQTs7QS9CcUNBLG1CQUFDO0FBQ0QsbUJBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLG1CQUFDO0VBQ0csV0FBQTs7QThCNk1SLG1CQ3ZQSSxRQUFPO0VBQ0gsV0FBQTtFQUNBLFdBQUE7O0FEcVBSLG1CQ3ZQSSxRQUFPLE1BR0g7RUFDSSxjQUFBO0UvQmtSUixZQUFBO0UrQmhSUSxrQkFBQTtFQUNBLFVBQUE7O0FEZ1BaLG1CQzdPSSxRQUFPO0VBQ0gsc0JBQUE7RUFFQSxZQUFBO0UvQnlRSixnQkFBQTtFK0J2UUksa0JBQUE7RUFDQSxXQUFBOztBL0JvQkosbUIrQjFCQSxRQUFPLFEvQjBCTjtBQUNELG1CK0IzQkEsUUFBTyxRL0IyQk47RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLG1CK0IvQkEsUUFBTyxRL0IrQk47RUFDRyxXQUFBOztBK0J6QkEsbUJBUEosUUFBTyxRQU9GO0VBQ0csY0FBQTs7QURxT1osbUJDcExJLFFBQU87RS9CbU5QLGlCQUFBOztBOEIvQkosbUJDcExJLFFBQU8sTUFFSDtFMUIzQ0osaUJBQUE7RUw0UEEsZ0JBQUE7RUFBQSxpQkFBQTtFQUFBLGNBQUE7RUFBQSxxQkFBQTtFQUFBLG1CQUFBO0VBQUEseUJBQUE7RStCNUxRLG1CQUFBO0UvQjRMUixZQUFBO0VBQUEsMEJBQUE7O0FLektBLG1CMEIxQ0EsUUFBTyxNQUVILFUxQndDSDtFTHlLRCxjQUFBO0VBQUEscUJBQUE7O0FLcktBLG1CMEI5Q0EsUUFBTyxNQUVILFUxQjRDSDtFTHFLRCxjQUFBO0VBQUEscUJBQUE7O0FLaktBLG1CMEJsREEsUUFBTyxNQUVILFUxQmdESDtFTGlLRCxjQUFBO0VBQUEscUJBQUE7O0ErQnhMSSxtQkEzQkosUUFBTyxNQTJCRixJQUFJLFdBQVksVUFBUztBQUMxQixtQkE1QkosUUFBTyxNQTRCRixJQUFJLFdBQVksVUFBUztFL0J1TDlCLG1CQUFBOztBK0JwTEksbUJBL0JKLFFBQU8sTUErQkYsSUFBSSxXQUFZLFVBQVM7QUFDMUIsbUJBaENKLFFBQU8sTUFnQ0YsT0FBUTtBQUNULG1CQWpDSixRQUFPLE1BaUNGLE9BQVEsVUFBUztBQUNsQixtQkFsQ0osUUFBTyxNQWtDRixPQUFRLFVBQVM7RS9CaUx0QixtQkFBQTtFQUFBLGNBQUE7O0ErQjdLSSxtQkF0Q0osUUFBTyxNQXNDRixPQUFRO0FBQ1QsbUJBdkNKLFFBQU8sTUF1Q0YsT0FBUSxVQUFTO0FBQ2xCLG1CQXhDSixRQUFPLE1Bd0NGLE9BQVEsVUFBUztFL0IyS3RCLG1CQUFBOztBOEIvQkosbUJDeElJLFFBQU87RS9CdUtQLG1CQUFBO0UrQnJLSSxnQkFBQTtFQUNBLDRCQUFBO0VBbUJKLFNBQUE7RS9CaUpBLDZCQUFBOztBOEJHSjtFQy9JSSxTQUFBO0VBQ0EsVUFBQTs7QUQ4SUosbUJDN0lJLFFBQU87RUFDSCxzQkFBQTtFQUNBLFdBQUE7RUFDQSxXQUFBOztBRDBJUixtQkM3SUksUUFBTyxNQUlIO0VBQ0ksY0FBQTs7QUR3SVosbUJDcklJLFFBQU87RUFFSCxzQkFBQTtFQUNBLFdBQUE7RUFDQSxTQUFBO0VBQ0EsY0FBQTs7QS9CckhKLG1CK0JnSEEsUUFBTyxRL0JoSE47QUFDRCxtQitCK0dBLFFBQU8sUS9CL0dOO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSixtQitCMkdBLFFBQU8sUS9CM0dOO0VBQ0csV0FBQTs7QStCZ0hBLG1CQU5KLFFBQU8sUUFNRjtFQUNHLGNBQUE7O0FEOEhaLG1CQ3pFUSxRQUFPO0UvQnNFWCxlQUFBOztBOEJHSixtQkNyRUksUUFBTyxNQUNIO0UvQmlFSixtQkFBQTtFQUFBLDZCQUFBO0VBQUEsK0JBQUE7RUFBQSxnQ0FBQTtFQUFBLDhCQUFBO0VBQUEsWUFBQTtFQUFBLDBCQUFBO0VLNVBBLGlCQUFBO0VMNFBBLGdCQUFBO0VBQUEsaUJBQUE7RUFBQSxjQUFBO0VBQUEscUJBQUE7O0FLektBLG1CMEJ1R0EsUUFBTyxNQUNILFUxQnhHSDtFTHlLRCxjQUFBO0VBQUEscUJBQUE7O0FLcktBLG1CMEJtR0EsUUFBTyxNQUNILFUxQnBHSDtFTHFLRCxjQUFBO0VBQUEscUJBQUE7O0FLaktBLG1CMEIrRkEsUUFBTyxNQUNILFUxQmhHSDtFTGlLRCxjQUFBO0VBQUEscUJBQUE7O0ErQnRDSSxtQkE1QkosUUFBTyxNQTRCRixJQUFJLFdBQVksVUFBUztBQUMxQixtQkE3QkosUUFBTyxNQTZCRixJQUFJLFdBQVksVUFBUztFL0JxQzlCLG1CQUFBOztBK0JsQ0ksbUJBaENKLFFBQU8sTUFnQ0YsSUFBSSxXQUFZLFVBQVM7QUFDMUIsbUJBakNKLFFBQU8sTUFpQ0YsT0FBUTtBQUNULG1CQWxDSixRQUFPLE1Ba0NGLE9BQVEsVUFBUztBQUNsQixtQkFuQ0osUUFBTyxNQW1DRixPQUFRLFVBQVM7RS9CK0J0QixtQkFBQTtFQUFBLG1CQUFBOztBOEJHSixtQkM3QkksUUFBTztFL0IwQlAsbUJBQUE7RUFBQSx5QkFBQTtFQUFBLGVBQUE7RUFBQSw0QkFBQTs7QThCK09KLHdCQU40QztFQUN4QztJQ2xnQkEsa0JBQUE7SUFDQSxVQUFBOztFL0JxQ0EsbUJBQUM7RUFDRCxtQkFBQztJQUNHLFNBQVMsRUFBVDtJQUNBLGNBQUE7O0VBRUosbUJBQUM7SUFDRyxXQUFBOztFOEJzZEosbUJDaGdCQSxRQUFPO0lBQ0gsV0FBQTtJQUNBLFdBQUE7O0VEOGZKLG1CQ2hnQkEsUUFBTyxNQUdIO0lBQ0ksY0FBQTtJL0JrUlIsWUFBQTtJK0JoUlEsa0JBQUE7SUFDQSxVQUFBOztFRHlmUixtQkN0ZkEsUUFBTztJQUNILHNCQUFBO0lBRUEsWUFBQTtJL0J5UUosZ0JBQUE7SStCdlFJLGtCQUFBO0lBQ0EsV0FBQTs7RS9Cb0JKLG1CK0IxQkEsUUFBTyxRL0IwQk47RUFDRCxtQitCM0JBLFFBQU8sUS9CMkJOO0lBQ0csU0FBUyxFQUFUO0lBQ0EsY0FBQTs7RUFFSixtQitCL0JBLFFBQU8sUS9CK0JOO0lBQ0csV0FBQTs7RStCekJBLG1CQVBKLFFBQU8sUUFPRjtJQUNHLGNBQUE7O0VEOGVSLG1CQzdiQSxRQUFPO0kvQm1OUCxpQkFBQTs7RThCME9BLG1CQzdiQSxRQUFPLE1BRUg7STFCM0NKLGlCQUFBO0lMNFBBLGdCQUFBO0lBQUEsaUJBQUE7SUFBQSxjQUFBO0lBQUEscUJBQUE7SUFBQSxtQkFBQTtJQUFBLHlCQUFBO0krQjVMUSxtQkFBQTtJL0I0TFIsWUFBQTtJQUFBLDBCQUFBOztFS3pLQSxtQjBCMUNBLFFBQU8sTUFFSCxVMUJ3Q0g7SUx5S0QsY0FBQTtJQUFBLHFCQUFBOztFS3JLQSxtQjBCOUNBLFFBQU8sTUFFSCxVMUI0Q0g7SUxxS0QsY0FBQTtJQUFBLHFCQUFBOztFS2pLQSxtQjBCbERBLFFBQU8sTUFFSCxVMUJnREg7SUxpS0QsY0FBQTtJQUFBLHFCQUFBOztFK0J4TEksbUJBM0JKLFFBQU8sTUEyQkYsSUFBSSxXQUFZLFVBQVM7RUFDMUIsbUJBNUJKLFFBQU8sTUE0QkYsSUFBSSxXQUFZLFVBQVM7SS9CdUw5QixtQkFBQTs7RStCcExJLG1CQS9CSixRQUFPLE1BK0JGLElBQUksV0FBWSxVQUFTO0VBQzFCLG1CQWhDSixRQUFPLE1BZ0NGLE9BQVE7RUFDVCxtQkFqQ0osUUFBTyxNQWlDRixPQUFRLFVBQVM7RUFDbEIsbUJBbENKLFFBQU8sTUFrQ0YsT0FBUSxVQUFTO0kvQmlMdEIsbUJBQUE7SUFBQSxjQUFBOztFK0I3S0ksbUJBdENKLFFBQU8sTUFzQ0YsT0FBUTtFQUNULG1CQXZDSixRQUFPLE1BdUNGLE9BQVEsVUFBUztFQUNsQixtQkF4Q0osUUFBTyxNQXdDRixPQUFRLFVBQVM7SS9CMkt0QixtQkFBQTs7RThCME9BLG1CQ2paQSxRQUFPO0kvQnVLUCxtQkFBQTtJK0JyS0ksZ0JBQUE7SUFDQSw0QkFBQTtJL0JvS0oseUJBQUE7OztBOEJxUEosd0JBTitDO0VBQzNDO0lDNVhBLFNBQUE7SUFDQSxVQUFBOztFRDJYQSxtQkMxWEEsUUFBTztJQUNILHNCQUFBO0lBQ0EsV0FBQTtJQUNBLFdBQUE7O0VEdVhKLG1CQzFYQSxRQUFPLE1BSUg7SUFDSSxjQUFBOztFRHFYUixtQkNsWEEsUUFBTztJQUVILHNCQUFBO0lBQ0EsV0FBQTtJQUNBLFNBQUE7SUFDQSxjQUFBOztFL0JySEosbUIrQmdIQSxRQUFPLFEvQmhITjtFQUNELG1CK0IrR0EsUUFBTyxRL0IvR047SUFDRyxTQUFTLEVBQVQ7SUFDQSxjQUFBOztFQUVKLG1CK0IyR0EsUUFBTyxRL0IzR047SUFDRyxXQUFBOztFK0JnSEEsbUJBTkosUUFBTyxRQU1GO0lBQ0csY0FBQTs7RUQyV1IsbUJDdFRJLFFBQU87SS9Cc0VYLGVBQUE7O0U4QmdQQSxtQkNsVEEsUUFBTyxNQUNIO0kvQmlFSixtQkFBQTtJQUFBLDZCQUFBO0lBQUEsK0JBQUE7SUFBQSxnQ0FBQTtJQUFBLDhCQUFBO0lBQUEsWUFBQTtJQUFBLDBCQUFBO0lLNVBBLGlCQUFBO0lMNFBBLGdCQUFBO0lBQUEsaUJBQUE7SUFBQSxjQUFBO0lBQUEscUJBQUE7O0VLektBLG1CMEJ1R0EsUUFBTyxNQUNILFUxQnhHSDtJTHlLRCxjQUFBO0lBQUEscUJBQUE7O0VLcktBLG1CMEJtR0EsUUFBTyxNQUNILFUxQnBHSDtJTHFLRCxjQUFBO0lBQUEscUJBQUE7O0VLaktBLG1CMEIrRkEsUUFBTyxNQUNILFUxQmhHSDtJTGlLRCxjQUFBO0lBQUEscUJBQUE7O0UrQnRDSSxtQkE1QkosUUFBTyxNQTRCRixJQUFJLFdBQVksVUFBUztFQUMxQixtQkE3QkosUUFBTyxNQTZCRixJQUFJLFdBQVksVUFBUztJL0JxQzlCLG1CQUFBOztFK0JsQ0ksbUJBaENKLFFBQU8sTUFnQ0YsSUFBSSxXQUFZLFVBQVM7RUFDMUIsbUJBakNKLFFBQU8sTUFpQ0YsT0FBUTtFQUNULG1CQWxDSixRQUFPLE1Ba0NGLE9BQVEsVUFBUztFQUNsQixtQkFuQ0osUUFBTyxNQW1DRixPQUFRLFVBQVM7SS9CK0J0QixtQkFBQTtJQUFBLG1CQUFBOztFOEJnUEEsbUJDMVFBLFFBQU87SS9CMEJQLG1CQUFBO0lBQUEseUJBQUE7SUFBQSxlQUFBO0lBQUEsNEJBQUE7OztBOEJrUko7RUMxaUJJLGtCQUFBO0VBQ0EsVUFBQTs7QS9CcUNBLG1CQUFDO0FBQ0QsbUJBQUM7RUFDRyxTQUFTLEVBQVQ7RUFDQSxjQUFBOztBQUVKLG1CQUFDO0VBQ0csV0FBQTs7QThCOGZSLG1CQ3hpQkksUUFBTztFQUNILFdBQUE7RUFDQSxXQUFBOztBRHNpQlIsbUJDeGlCSSxRQUFPLE1BR0g7RUFDSSxjQUFBO0UvQmtSUixZQUFBO0UrQmhSUSxrQkFBQTtFQUNBLFVBQUE7O0FEaWlCWixtQkM5aEJJLFFBQU87RUFDSCxzQkFBQTtFQUVBLFlBQUE7RS9CeVFKLGdCQUFBO0UrQnZRSSxrQkFBQTtFQUNBLFdBQUE7O0EvQm9CSixtQitCMUJBLFFBQU8sUS9CMEJOO0FBQ0QsbUIrQjNCQSxRQUFPLFEvQjJCTjtFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7O0FBRUosbUIrQi9CQSxRQUFPLFEvQitCTjtFQUNHLFdBQUE7O0ErQnpCQSxtQkFQSixRQUFPLFFBT0Y7RUFDRyxjQUFBOztBRHVqQlo7RUMvYkksU0FBQTtFQUNBLFVBQUE7O0FEOGJKLG1CQzdiSSxRQUFPO0VBQ0gsc0JBQUE7RUFDQSxXQUFBO0VBQ0EsV0FBQTs7QUQwYlIsbUJDN2JJLFFBQU8sTUFJSDtFQUNJLGNBQUE7O0FEd2JaLG1CQ3JiSSxRQUFPO0VBRUgsc0JBQUE7RUFDQSxXQUFBO0VBQ0EsU0FBQTtFQUNBLGNBQUE7O0EvQnJISixtQitCZ0hBLFFBQU8sUS9CaEhOO0FBQ0QsbUIrQitHQSxRQUFPLFEvQi9HTjtFQUNHLFNBQVMsRUFBVDtFQUNBLGNBQUE7O0FBRUosbUIrQjJHQSxRQUFPLFEvQjNHTjtFQUNHLFdBQUE7O0ErQmdIQSxtQkFOSixRQUFPLFFBTUY7RUFDRyxjQUFBOztBQzdGWjtFQzVESSx5QkFBQTtFQUNBLGlCQUFBO0VBRUEsZUFBQTtFakNpUkEsV0FBQTs7QWdDeE5KLGdCQ3ZESTtFQUNJLGdCQUFBOztBRHNEUixnQkNwREksUUFFSSxLQUNJO0FEaURaLGdCQ25ESSxRQUNJLEtBQ0k7QURpRFosZ0JDcERJLFFBRUksS0FFSTtBRGdEWixnQkNuREksUUFDSSxLQUVJO0VBQ0ksbUJBQUE7O0FEK0NoQixnQkMzQ0ksUUFBUSxLQUNKO0FEMENSLGdCQzNDSSxRQUFRLEtBRUo7RUFDSSxzQkFBQTs7QUR3Q1osZ0JDckNJLFFBR0ksS0FDSTtBRGlDWixnQkNwQ0ksUUFFSSxLQUNJO0FEaUNaLGdCQ25DSSxRQUNJLEtBQ0k7QURpQ1osZ0JDckNJLFFBR0ksS0FFSTtBRGdDWixnQkNwQ0ksUUFFSSxLQUVJO0FEZ0NaLGdCQ25DSSxRQUNJLEtBRUk7RWpDd1BSLGlCQUFBOztBZ0MxR0osZ0JDekhJLFFBR0ksS0FXSTtBRDJHWixnQkN4SEksUUFFSSxLQVdJO0FEMkdaLGdCQ3ZISSxRQUNJLEtBV0k7RWpDcU5SLGNBQUE7RUFBQSxnQkFBQTs7QWdDb0RKO0VDeFVJLHlCQUFBO0VBQ0EsaUJBQUE7RUFFQSxlQUFBO0VqQ2lSQSxXQUFBOztBZ0NvREosZ0JDblVJO0VBQ0ksZ0JBQUE7O0FEa1VSLGdCQ2hVSSxRQUVJLEtBQ0k7QUQ2VFosZ0JDL1RJLFFBQ0ksS0FDSTtBRDZUWixnQkNoVUksUUFFSSxLQUVJO0FENFRaLGdCQy9USSxRQUNJLEtBRUk7RUFDSSxtQkFBQTs7QUQyVGhCLGdCQ3ZUSSxRQUFRLEtBQ0o7QURzVFIsZ0JDdlRJLFFBQVEsS0FFSjtFQUNJLHNCQUFBOztBRG9UWixnQkNqVEksUUFHSSxLQUNJO0FENlNaLGdCQ2hUSSxRQUVJLEtBQ0k7QUQ2U1osZ0JDL1NJLFFBQ0ksS0FDSTtBRDZTWixnQkNqVEksUUFHSSxLQUVJO0FENFNaLGdCQ2hUSSxRQUVJLEtBRUk7QUQ0U1osZ0JDL1NJLFFBQ0ksS0FFSTtFakN3UFIsaUJBQUE7O0FnQ29ESixnQkN5SUk7RWpDdmNBLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0FnQzBjSjtFQzNkSSx5QkFBQTtFQUNBLGlCQUFBO0VBRUEsZUFBQTtFakNpUkEsV0FBQTs7QWdDdU1KLGdCQ3RkSTtFQUNJLGdCQUFBOztBRHFkUixnQkNuZEksUUFFSSxLQUNJO0FEZ2RaLGdCQ2xkSSxRQUNJLEtBQ0k7QURnZFosZ0JDbmRJLFFBRUksS0FFSTtBRCtjWixnQkNsZEksUUFDSSxLQUVJO0VBQ0ksbUJBQUE7O0FEOGNoQixnQkMxY0ksUUFBUSxLQUNKO0FEeWNSLGdCQzFjSSxRQUFRLEtBRUo7RUFDSSxzQkFBQTs7QUR1Y1osZ0JDcGNJLFFBR0ksS0FDSTtBRGdjWixnQkNuY0ksUUFFSSxLQUNJO0FEZ2NaLGdCQ2xjSSxRQUNJLEtBQ0k7QURnY1osZ0JDcGNJLFFBR0ksS0FFSTtBRCtiWixnQkNuY0ksUUFFSSxLQUVJO0FEK2JaLGdCQ2xjSSxRQUNJLEtBRUk7RWpDd1BSLGlCQUFBOztBZ0N1TUosZ0JDOVdJLFFBR0ksS0FDSTtBRDBXWixnQkM3V0ksUUFFSSxLQUNJO0FEMFdaLGdCQzVXSSxRQUNJLEtBQ0k7RWpDbUtSLHdCQUFBOztBZ0N1TUosZ0JDOVdJLFFBR0ksS0FJSTtBRHVXWixnQkM3V0ksUUFFSSxLQUlJO0FEdVdaLGdCQzVXSSxRQUNJLEtBSUk7RWpDZ0tSLHlCQUFBOztBZ0N1Vko7RUMzbUJJLHlCQUFBO0VBQ0EsaUJBQUE7RUFFQSxlQUFBO0VqQ2lSQSxXQUFBO0VBQUEsbUJBQUE7O0FnQ3VWSixnQkN0bUJJO0VBQ0ksZ0JBQUE7O0FEcW1CUixnQkNubUJJLFFBRUksS0FDSTtBRGdtQlosZ0JDbG1CSSxRQUNJLEtBQ0k7QURnbUJaLGdCQ25tQkksUUFFSSxLQUVJO0FEK2xCWixnQkNsbUJJLFFBQ0ksS0FFSTtFQUNJLG1CQUFBOztBRDhsQmhCLGdCQzFsQkksUUFBUSxLQUNKO0FEeWxCUixnQkMxbEJJLFFBQVEsS0FFSjtFQUNJLHNCQUFBOztBRHVsQlosZ0JDcGxCSSxRQUdJLEtBQ0k7QURnbEJaLGdCQ25sQkksUUFFSSxLQUNJO0FEZ2xCWixnQkNsbEJJLFFBQ0ksS0FDSTtBRGdsQlosZ0JDcGxCSSxRQUdJLEtBRUk7QUQra0JaLGdCQ25sQkksUUFFSSxLQUVJO0FEK2tCWixnQkNsbEJJLFFBQ0ksS0FFSTtFakN3UFIsaUJBQUE7O0FnQ3VWSixnQkN0aEJJO0VqQytMQSxtQkFBQTs7QWdDdVZKLGdCQ25oQkk7RWpDNExBLG1CQUFBOztBZ0N1VkosZ0JDaGhCSSxRQUFRLEtBQUs7RWpDeUxiLG1CQUFBOztBZ0N1VkosZ0JDN2dCSSxRQUFRLEtBQUs7RWpDc0xiLG1CQUFBOztBZ0MwZEo7RUM5dUJJLHlCQUFBO0VBQ0EsaUJBQUE7RUFFQSxlQUFBO0VqQ2lSQSxXQUFBO0VBQUEseUJBQUE7O0FnQzBkSixnQkN6dUJJO0VBQ0ksZ0JBQUE7O0FEd3VCUixnQkN0dUJJLFFBRUksS0FDSTtBRG11QlosZ0JDcnVCSSxRQUNJLEtBQ0k7QURtdUJaLGdCQ3R1QkksUUFFSSxLQUVJO0FEa3VCWixnQkNydUJJLFFBQ0ksS0FFSTtFQUNJLG1CQUFBOztBRGl1QmhCLGdCQzd0QkksUUFBUSxLQUNKO0FENHRCUixnQkM3dEJJLFFBQVEsS0FFSjtFQUNJLHNCQUFBOztBRDB0QlosZ0JDdnRCSSxRQUdJLEtBQ0k7QURtdEJaLGdCQ3R0QkksUUFFSSxLQUNJO0FEbXRCWixnQkNydEJJLFFBQ0ksS0FDSTtBRG10QlosZ0JDdnRCSSxRQUdJLEtBRUk7QURrdEJaLGdCQ3R0QkksUUFFSSxLQUVJO0FEa3RCWixnQkNydEJJLFFBQ0ksS0FFSTtFakN3UFIsaUJBQUE7O0FnQzBkSixnQkM1bUJJLFFBR0ksS0FDSTtBRHdtQlosZ0JDM21CSSxRQUVJLEtBQ0k7QUR3bUJaLGdCQzFtQkksUUFDSSxLQUNJO0FEd21CWixnQkM1bUJJLFFBR0ksS0FFSTtBRHVtQlosZ0JDM21CSSxRQUVJLEtBRUk7QUR1bUJaLGdCQzFtQkksUUFDSSxLQUVJO0VqQzZJUix5QkFBQTs7QWdDNGtCSjtFQ2gyQkkseUJBQUE7RUFDQSxpQkFBQTtFQUVBLGVBQUE7RWpDaVJBLFdBQUE7O0FnQzRrQkosZ0JDMzFCSTtFQUNJLGdCQUFBOztBRDAxQlIsZ0JDeDFCSSxRQUVJLEtBQ0k7QURxMUJaLGdCQ3YxQkksUUFDSSxLQUNJO0FEcTFCWixnQkN4MUJJLFFBRUksS0FFSTtBRG8xQlosZ0JDdjFCSSxRQUNJLEtBRUk7RUFDSSxtQkFBQTs7QURtMUJoQixnQkMvMEJJLFFBQVEsS0FDSjtBRDgwQlIsZ0JDLzBCSSxRQUFRLEtBRUo7RUFDSSxzQkFBQTs7QUQ0MEJaLGdCQ3owQkksUUFHSSxLQUNJO0FEcTBCWixnQkN4MEJJLFFBRUksS0FDSTtBRHEwQlosZ0JDdjBCSSxRQUNJLEtBQ0k7QURxMEJaLGdCQ3owQkksUUFHSSxLQUVJO0FEbzBCWixnQkN4MEJJLFFBRUksS0FFSTtBRG8wQlosZ0JDdjBCSSxRQUNJLEtBRUk7RWpDd1BSLGlCQUFBOztBZ0M0a0JKLGdCQzVzQkksUUFHSSxLQUNJO0FEd3NCWixnQkMzc0JJLFFBRUksS0FDSTtBRHdzQlosZ0JDMXNCSSxRQUNJLEtBQ0k7QUR3c0JaLGdCQzVzQkksUUFHSSxLQUVJO0FEdXNCWixnQkMzc0JJLFFBRUksS0FFSTtBRHVzQlosZ0JDMXNCSSxRQUNJLEtBRUk7RWpDMkhSLDZCQUFBOztBZ0M0a0JKLGdCQ2xzQkksVUFBVSxRQUdOLEtBQUksWUFDQTtBRDhyQlosZ0JDanNCSSxXQUFXLFFBRVAsS0FBSSxZQUNBO0FEOHJCWixnQkNoc0JJLFFBQU8sWUFDSCxLQUFJLFlBQ0E7QUQ4ckJaLGdCQ2xzQkksVUFBVSxRQUdOLEtBQUksWUFFQTtBRDZyQlosZ0JDanNCSSxXQUFXLFFBRVAsS0FBSSxZQUVBO0FENnJCWixnQkNoc0JJLFFBQU8sWUFDSCxLQUFJLFlBRUE7RUFDSSxhQUFBOztBRDRyQmhCLGdCQ3hyQkksUUFBUTtFakM0R1IsNkJBQUE7O0FnQzRwQko7RUNoN0JJLHlCQUFBO0VBQ0EsaUJBQUE7RUFFQSxlQUFBO0VqQ2lSQSxXQUFBOztBZ0M0cEJKLGdCQzM2Qkk7RUFDSSxnQkFBQTs7QUQwNkJSLGdCQ3g2QkksUUFFSSxLQUNJO0FEcTZCWixnQkN2NkJJLFFBQ0ksS0FDSTtBRHE2QlosZ0JDeDZCSSxRQUVJLEtBRUk7QURvNkJaLGdCQ3Y2QkksUUFDSSxLQUVJO0VBQ0ksbUJBQUE7O0FEbTZCaEIsZ0JDLzVCSSxRQUFRLEtBQ0o7QUQ4NUJSLGdCQy81QkksUUFBUSxLQUVKO0VBQ0ksc0JBQUE7O0FENDVCWixnQkN6NUJJLFFBR0ksS0FDSTtBRHE1QlosZ0JDeDVCSSxRQUVJLEtBQ0k7QURxNUJaLGdCQ3Y1QkksUUFDSSxLQUNJO0FEcTVCWixnQkN6NUJJLFFBR0ksS0FFSTtBRG81QlosZ0JDeDVCSSxRQUVJLEtBRUk7QURvNUJaLGdCQ3Y1QkksUUFDSSxLQUVJO0VqQ3dQUixpQkFBQTs7QWdDNHBCSixnQkMxdUJJLFFBR0ksS0FDSTtBRHN1QlosZ0JDenVCSSxRQUVJLEtBQ0k7QURzdUJaLGdCQ3h1QkksUUFDSSxLQUNJO0FEc3VCWixnQkMxdUJJLFFBR0ksS0FFSTtBRHF1QlosZ0JDenVCSSxRQUVJLEtBRUk7QURxdUJaLGdCQ3h1QkksUUFDSSxLQUVJO0VqQ3lFUiw4QkFBQTs7QWlDdkVZLGdCQVBaLFFBR0ksS0FDSSxLQUdLO0FBQUQsZ0JBTlosUUFFSSxLQUNJLEtBR0s7QUFBRCxnQkFMWixRQUNJLEtBQ0ksS0FHSztBQUFELGdCQVBaLFFBR0ksS0FFSSxLQUVLO0FBQUQsZ0JBTlosUUFFSSxLQUVJLEtBRUs7QUFBRCxnQkFMWixRQUNJLEtBRUksS0FFSztFQUNHLGlCQUFBOztBRGt6QnBCO0VDaGdDSSx5QkFBQTtFQUNBLGlCQUFBO0VBRUEsZUFBQTtFakNpUkEsV0FBQTtFaUN6REEsWUFBQTs7QURxeUJKLGdCQzMvQkk7RUFDSSxnQkFBQTs7QUQwL0JSLGdCQ3gvQkksUUFFSSxLQUNJO0FEcS9CWixnQkN2L0JJLFFBQ0ksS0FDSTtBRHEvQlosZ0JDeC9CSSxRQUVJLEtBRUk7QURvL0JaLGdCQ3YvQkksUUFDSSxLQUVJO0VBQ0ksbUJBQUE7O0FEbS9CaEIsZ0JDLytCSSxRQUFRLEtBQ0o7QUQ4K0JSLGdCQy8rQkksUUFBUSxLQUVKO0VBQ0ksc0JBQUE7O0FENCtCWixnQkN6K0JJLFFBR0ksS0FDSTtBRHErQlosZ0JDeCtCSSxRQUVJLEtBQ0k7QURxK0JaLGdCQ3YrQkksUUFDSSxLQUNJO0FEcStCWixnQkN6K0JJLFFBR0ksS0FFSTtBRG8rQlosZ0JDeCtCSSxRQUVJLEtBRUk7QURvK0JaLGdCQ3YrQkksUUFDSSxLQUVJO0VqQ3dQUixpQkFBQTs7QWdDNHVCSixnQkNweUJJLFFBR0ksS0FDSTtBRGd5QlosZ0JDbnlCSSxRQUVJLEtBQ0k7QURneUJaLGdCQ2x5QkksUUFDSSxLQUNJO0FEZ3lCWixnQkNweUJJLFFBR0ksS0FFSTtBRCt4QlosZ0JDbnlCSSxRQUVJLEtBRUk7QUQreEJaLGdCQ2x5QkksUUFDSSxLQUVJO0VBQ0ksWUFBQTs7QUQ4eEJoQixnQkMxeEJJLFFBQ0ksS0FDSTtBRHd4QlosZ0JDMXhCSSxRQUNJLEtBRUk7RWpDMkNSLGdDQUFBOztBZ0M0ekJKO0VDaGxDSSx5QkFBQTtFQUNBLGlCQUFBO0VBRUEsZUFBQTtFakNpUkEsV0FBQTtFaUM5QkEsWUFBQTs7QUQwMUJKLGlCQzNrQ0k7RUFDSSxnQkFBQTs7QUQwa0NSLGlCQ3hrQ0ksUUFFSSxLQUNJO0FEcWtDWixpQkN2a0NJLFFBQ0ksS0FDSTtBRHFrQ1osaUJDeGtDSSxRQUVJLEtBRUk7QURva0NaLGlCQ3ZrQ0ksUUFDSSxLQUVJO0VBQ0ksbUJBQUE7O0FEbWtDaEIsaUJDL2pDSSxRQUFRLEtBQ0o7QUQ4akNSLGlCQy9qQ0ksUUFBUSxLQUVKO0VBQ0ksc0JBQUE7O0FENGpDWixpQkN6akNJLFFBR0ksS0FDSTtBRHFqQ1osaUJDeGpDSSxRQUVJLEtBQ0k7QURxakNaLGlCQ3ZqQ0ksUUFDSSxLQUNJO0FEcWpDWixpQkN6akNJLFFBR0ksS0FFSTtBRG9qQ1osaUJDeGpDSSxRQUVJLEtBRUk7QURvakNaLGlCQ3ZqQ0ksUUFDSSxLQUVJO0VqQ3dQUixpQkFBQTs7QWdDNHpCSixpQkN6MUJJLFFBR0ksS0FDSTtBRHExQlosaUJDeDFCSSxRQUVJLEtBQ0k7QURxMUJaLGlCQ3YxQkksUUFDSSxLQUNJO0FEcTFCWixpQkN6MUJJLFFBR0ksS0FFSTtBRG8xQlosaUJDeDFCSSxRQUVJLEtBRUk7QURvMUJaLGlCQ3YxQkksUUFDSSxLQUVJO0VBQ0ksWUFBQTs7QURnNkJoQjtFQzdwQ0kseUJBQUE7RUFDQSxpQkFBQTtFQUVBLGVBQUE7RWpDaVJBLFdBQUE7O0FnQ3k0QkosaUJDeHBDSTtFQUNJLGdCQUFBOztBRHVwQ1IsaUJDcnBDSSxRQUVJLEtBQ0k7QURrcENaLGlCQ3BwQ0ksUUFDSSxLQUNJO0FEa3BDWixpQkNycENJLFFBRUksS0FFSTtBRGlwQ1osaUJDcHBDSSxRQUNJLEtBRUk7RUFDSSxtQkFBQTs7QURncENoQixpQkM1b0NJLFFBQVEsS0FDSjtBRDJvQ1IsaUJDNW9DSSxRQUFRLEtBRUo7RUFDSSxzQkFBQTs7QUR5b0NaLGlCQ3RvQ0ksUUFHSSxLQUNJO0FEa29DWixpQkNyb0NJLFFBRUksS0FDSTtBRGtvQ1osaUJDcG9DSSxRQUNJLEtBQ0k7QURrb0NaLGlCQ3RvQ0ksUUFHSSxLQUVJO0FEaW9DWixpQkNyb0NJLFFBRUksS0FFSTtBRGlvQ1osaUJDcG9DSSxRQUNJLEtBRUk7RWpDd1BSLGlCQUFBOztBZ0N5NEJKLGlCQ3I0QkksUUFBUSxLQUFJLFVBQVUsTUFDbEI7QURvNEJSLGlCQ3I0QkksUUFBUSxLQUFJLFVBQVUsTUFFbEI7RWpDTkosbUJBQUE7RUFBQSxjQUFBOztBZ0NrZ0NKO0VDdHhDSSx5QkFBQTtFQUNBLGlCQUFBO0VBRUEsZUFBQTtFakNpUkEsV0FBQTs7QWdDa2dDSixpQkNqeENJO0VBQ0ksZ0JBQUE7O0FEZ3hDUixpQkM5d0NJLFFBRUksS0FDSTtBRDJ3Q1osaUJDN3dDSSxRQUNJLEtBQ0k7QUQyd0NaLGlCQzl3Q0ksUUFFSSxLQUVJO0FEMHdDWixpQkM3d0NJLFFBQ0ksS0FFSTtFQUNJLG1CQUFBOztBRHl3Q2hCLGlCQ3J3Q0ksUUFBUSxLQUNKO0FEb3dDUixpQkNyd0NJLFFBQVEsS0FFSjtFQUNJLHNCQUFBOztBRGt3Q1osaUJDL3ZDSSxRQUdJLEtBQ0k7QUQydkNaLGlCQzl2Q0ksUUFFSSxLQUNJO0FEMnZDWixpQkM3dkNJLFFBQ0ksS0FDSTtBRDJ2Q1osaUJDL3ZDSSxRQUdJLEtBRUk7QUQwdkNaLGlCQzl2Q0ksUUFFSSxLQUVJO0FEMHZDWixpQkM3dkNJLFFBQ0ksS0FFSTtFakN3UFIsaUJBQUE7O0FnQ2tnQ0osaUJDMzhCSSxRQUFRLEtBQUksVUFBVSxNQUFNLE1BQ3hCO0FEMDhCUixpQkMzOEJJLFFBQVEsS0FBSSxVQUFVLE1BQU0sTUFFeEI7RWpDekRKLG1CQUFBOztBZ0NrZ0NKLGlCQ3I4QkksUUFBUSxLQUFJLFVBQVUsS0FBSyxNQUN2QjtBRG84QlIsaUJDcjhCSSxRQUFRLEtBQUksVUFBVSxLQUFLLE1BRXZCO0VqQy9ESixtQkFBQTs7QWdDeW1DSjtFQzczQ0kseUJBQUE7RUFDQSxpQkFBQTtFQUVBLGVBQUE7RWpDaVJBLFdBQUE7RUFBQSx5QkFBQTs7QWdDeW1DSixpQkN4M0NJO0VBQ0ksZ0JBQUE7O0FEdTNDUixpQkNyM0NJLFFBRUksS0FDSTtBRGszQ1osaUJDcDNDSSxRQUNJLEtBQ0k7QURrM0NaLGlCQ3IzQ0ksUUFFSSxLQUVJO0FEaTNDWixpQkNwM0NJLFFBQ0ksS0FFSTtFQUNJLG1CQUFBOztBRGczQ2hCLGlCQzUyQ0ksUUFBUSxLQUNKO0FEMjJDUixpQkM1MkNJLFFBQVEsS0FFSjtFQUNJLHNCQUFBOztBRHkyQ1osaUJDdDJDSSxRQUdJLEtBQ0k7QURrMkNaLGlCQ3IyQ0ksUUFFSSxLQUNJO0FEazJDWixpQkNwMkNJLFFBQ0ksS0FDSTtBRGsyQ1osaUJDdDJDSSxRQUdJLEtBRUk7QURpMkNaLGlCQ3IyQ0ksUUFFSSxLQUVJO0FEaTJDWixpQkNwMkNJLFFBQ0ksS0FFSTtFakN3UFIsaUJBQUE7O0FnQ3ltQ0osaUJDM3ZDSSxRQUdJLEtBQ0k7QUR1dkNaLGlCQzF2Q0ksUUFFSSxLQUNJO0FEdXZDWixpQkN6dkNJLFFBQ0ksS0FDSTtBRHV2Q1osaUJDM3ZDSSxRQUdJLEtBRUk7QURzdkNaLGlCQzF2Q0ksUUFFSSxLQUVJO0FEc3ZDWixpQkN6dkNJLFFBQ0ksS0FFSTtFakM2SVIseUJBQUE7O0FnQ3ltQ0osaUJDcG5DSSxRQUFRLEtBQUksVUFBVSxLQUNsQjtBRG1uQ1IsaUJDcG5DSSxRQUFRLEtBQUksVUFBVSxLQUVsQjtFakNTSixtQkFBQTs7QWdDeW1DSixpQkNsakNJLFFBQVEsS0FBSSxVQUFVLE1BQU0sTUFDeEI7QURpakNSLGlCQ2xqQ0ksUUFBUSxLQUFJLFVBQVUsTUFBTSxNQUV4QjtFakN6REosbUJBQUE7O0FnQ3ltQ0osaUJDNWlDSSxRQUFRLEtBQUksVUFBVSxLQUFLLE1BQ3ZCO0FEMmlDUixpQkM1aUNJLFFBQVEsS0FBSSxVQUFVLEtBQUssTUFFdkI7RWpDL0RKLG1CQUFBOztBZ0NzbkNKLHdCQU4rQztFQUMzQztJQzNpQ0EsV0FBQTtJQUVBLGtCQUFBO0lBQ0EsZ0JBQUE7SUFDQSw0Q0FBQTtJQUNBLGlDQUFBOzs7QUQ0bUNKO0VDMzhDSSx5QkFBQTtFQUNBLGlCQUFBO0VBRUEsZUFBQTtFakNpUkEsV0FBQTtFQUFBLHlCQUFBOztBZ0N1ckNKLGlCQ3Q4Q0k7RUFDSSxnQkFBQTs7QURxOENSLGlCQ244Q0ksUUFFSSxLQUNJO0FEZzhDWixpQkNsOENJLFFBQ0ksS0FDSTtBRGc4Q1osaUJDbjhDSSxRQUVJLEtBRUk7QUQrN0NaLGlCQ2w4Q0ksUUFDSSxLQUVJO0VBQ0ksbUJBQUE7O0FEODdDaEIsaUJDMTdDSSxRQUFRLEtBQ0o7QUR5N0NSLGlCQzE3Q0ksUUFBUSxLQUVKO0VBQ0ksc0JBQUE7O0FEdTdDWixpQkNwN0NJLFFBR0ksS0FDSTtBRGc3Q1osaUJDbjdDSSxRQUVJLEtBQ0k7QURnN0NaLGlCQ2w3Q0ksUUFDSSxLQUNJO0FEZzdDWixpQkNwN0NJLFFBR0ksS0FFSTtBRCs2Q1osaUJDbjdDSSxRQUVJLEtBRUk7QUQrNkNaLGlCQ2w3Q0ksUUFDSSxLQUVJO0VqQ3dQUixpQkFBQTs7QWdDdXJDSixpQkN6MENJLFFBR0ksS0FDSTtBRHEwQ1osaUJDeDBDSSxRQUVJLEtBQ0k7QURxMENaLGlCQ3YwQ0ksUUFDSSxLQUNJO0FEcTBDWixpQkN6MENJLFFBR0ksS0FFSTtBRG8wQ1osaUJDeDBDSSxRQUVJLEtBRUk7QURvMENaLGlCQ3YwQ0ksUUFDSSxLQUVJO0VqQzZJUix5QkFBQTs7QWdDdXJDSixpQkNsc0NJLFFBQVEsS0FBSSxVQUFVLEtBQ2xCO0FEaXNDUixpQkNsc0NJLFFBQVEsS0FBSSxVQUFVLEtBRWxCO0VqQ1NKLG1CQUFBOztBZ0N1ckNKLGlCQ2hvQ0ksUUFBUSxLQUFJLFVBQVUsTUFBTSxNQUN4QjtBRCtuQ1IsaUJDaG9DSSxRQUFRLEtBQUksVUFBVSxNQUFNLE1BRXhCO0VqQ3pESixtQkFBQTs7QWdDdXJDSixpQkMxbkNJLFFBQVEsS0FBSSxVQUFVLEtBQUssTUFDdkI7QUR5bkNSLGlCQzFuQ0ksUUFBUSxLQUFJLFVBQVUsS0FBSyxNQUV2QjtFakMvREosbUJBQUE7O0FnQ3lzQ0osd0JBWCtDO0VBQzNDO0lDei9CQSxZQUFBO0lBQ0EsY0FBQTtJakN2TUEsbUJBQUE7O0VnQytyQ0EsaUJDMXNDQSxRQUFRLEtBQUksVUFBVSxLQUNsQjtFRHlzQ0osaUJDMXNDQSxRQUFRLEtBQUksVUFBVSxLQUVsQjtJakNTSixtQkFBQTs7RWdDK3JDQSxpQkN4b0NBLFFBQVEsS0FBSSxVQUFVLE1BQU0sTUFDeEI7RUR1b0NKLGlCQ3hvQ0EsUUFBUSxLQUFJLFVBQVUsTUFBTSxNQUV4QjtJakN6REosbUJBQUE7O0VnQytyQ0EsaUJDbG9DQSxRQUFRLEtBQUksVUFBVSxLQUFLLE1BQ3ZCO0VEaW9DSixpQkNsb0NBLFFBQVEsS0FBSSxVQUFVLEtBQUssTUFFdkI7SWpDL0RKLG1CQUFBOztFZ0MrckNBLGlCQ3QvQkEsUUFBUSxLQUFLO0lBQ1QsYUFBQTs7RURxL0JKLGlCQ24vQkE7SUFDSSxjQUFBOztFRGsvQkosaUJDbi9CQSxRQUVJO0lBQ0ksY0FBQTs7RURnL0JSLGlCQ24vQkEsUUFFSSxLQUVJO0VEKytCUixpQkNuL0JBLFFBRUksS0FHSTtJQUNJLG1CQUFBO0lBQ0EsY0FBQTtJakNuTlosY0FBQTs7RWlDcU5ZLGlCQVRaLFFBRUksS0FFSSxHQUtLO0VBQUQsaUJBVFosUUFFSSxLQUdJLEdBSUs7SUFDRyxTQUFTLGNBQWEsSUFBdEI7SUFDQSxxQkFBQTtJakN2TmhCLG1CQUFBO0lBQUEsY0FBQTtJQUFBLGdCQUFBOztFZ0MrckNBLGlCQ24vQkEsUUFFSSxLQXFCSTtJakNuT1IsbUJBQUE7O0VnQytyQ0EsaUJDamxDQSxRQUFRLEtBQUs7SUFDVCx5QkFBQTs7O0FDL1hSO0VDYUksa0JBQUE7O0FEYkosdUJDZ0JJO0VuQ2dRQSxZQUFBO0VBQUEsbUJBQUE7RUFBQSxnQkFBQTtFQUFBLGdCQUFBO0VBQUEsa0JBQUE7RW1DeFBJLGFBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VuQ3NQSixjQUFBO0VBQUEsZ0JBQUE7RUFBQSx5QkFBQTtFbUNuRkEsU0FBQTtFQUNBLE9BQUE7RW5Da0ZBLGVBQUE7O0FtQ3RPSSx1QkExQkosaUJBMEJLO0FBQ0QsdUJBM0JKLGlCQTJCSztFQUNHLHlCQUFBO0VBQ0EsU0FBUyxFQUFUO0VBQ0EsU0FBQTtFQUNBLFFBQUE7RUFDQSxrQkFBQTs7QUFHSix1QkFuQ0osaUJBbUNLO0VBQ0cseUJBQUE7RW5DNE5SLGlCQUFBOztBbUN4TkksdUJBeENKLGlCQXdDSztFQUNHLHlCQUFBO0VuQ3VOUixpQkFBQTs7QW1DL0VBLHVCQWpMQSxpQkFpTEM7QUFDRCx1QkFsTEEsaUJBa0xDO0VBQ0csWUFBQTs7QUFFSix1QkFyTEEsaUJBcUxDO0VuQzJFRCw0QkFBQTtFQUFBLGlCQUFBO0VBQUEsVUFBQTs7QW1DdEVBLHVCQTFMQSxpQkEwTEM7RW5Dc0VELDRCQUFBO0VBQUEsaUJBQUE7RUFBQSxVQUFBOztBbUN4TUEsdUJBQUU7RW5Dd01GLFlBQUE7O0FtQ3BNQSx1QkFBRSxnQkFBMkIsTUFBTztBQUNwQyx1QkFBRSxnQkFBMkIsTUFBTztBQUNwQyx1QkFBQyxNQUFPO0VBQ0osY0FBQTs7QUQ1RVI7RUNVSSxrQkFBQTs7QURWSixxQkNhSTtFbkNnUUEsWUFBQTtFQUFBLG1CQUFBO0VBQUEsZ0JBQUE7RUFBQSxnQkFBQTtFQUFBLGtCQUFBO0VtQ3hQSSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFbkNzUEosY0FBQTtFQUFBLGdCQUFBO0VBQUEseUJBQUE7RW1DL0lBLFdBQUE7RUFDQSxNQUFBO0VuQzhJQSxpQkFBQTs7QW1DdE9JLHFCQTFCSixpQkEwQks7QUFDRCxxQkEzQkosaUJBMkJLO0VBQ0cseUJBQUE7RUFDQSxTQUFTLEVBQVQ7RUFDQSxTQUFBO0VBQ0EsUUFBQTtFQUNBLGtCQUFBOztBQUdKLHFCQW5DSixpQkFtQ0s7RUFDRyx5QkFBQTtFbkM0TlIsaUJBQUE7O0FtQ3hOSSxxQkF4Q0osaUJBd0NLO0VBQ0cseUJBQUE7RW5DdU5SLGlCQUFBOztBbUMzSUEscUJBckhBLGlCQXFIQztBQUNELHFCQXRIQSxpQkFzSEM7RUFDRyxVQUFBOztBQUVKLHFCQXpIQSxpQkF5SEM7RW5DdUlELDBCQUFBO0VBQUEsZ0JBQUE7RUFBQSxTQUFBOztBbUNqSUEscUJBL0hBLGlCQStIQztFbkNpSUQsMEJBQUE7RUFBQSxnQkFBQTtFQUFBLFNBQUE7O0FtQ3hNQSxxQkFBRTtFbkN3TUYsWUFBQTs7QW1DcE1BLHFCQUFFLGdCQUEyQixNQUFPO0FBQ3BDLHFCQUFFLGdCQUEyQixNQUFPO0FBQ3BDLHFCQUFDLE1BQU87RUFDSixjQUFBOztBRHpFUjtFQ09JLGtCQUFBOztBRFBKLHNCQ1VJO0VuQ2dRQSxZQUFBO0VBQUEsbUJBQUE7RUFBQSxnQkFBQTtFQUFBLGdCQUFBO0VBQUEsa0JBQUE7RW1DeFBJLGFBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VuQ3NQSixjQUFBO0VBQUEsZ0JBQUE7RUFBQSx5QkFBQTtFbUNqSEEsVUFBQTtFQUNBLE1BQUE7RW5DZ0hBLGdCQUFBOztBbUN0T0ksc0JBMUJKLGlCQTBCSztBQUNELHNCQTNCSixpQkEyQks7RUFDRyx5QkFBQTtFQUNBLFNBQVMsRUFBVDtFQUNBLFNBQUE7RUFDQSxRQUFBO0VBQ0Esa0JBQUE7O0FBR0osc0JBbkNKLGlCQW1DSztFQUNHLHlCQUFBO0VuQzROUixpQkFBQTs7QW1DeE5JLHNCQXhDSixpQkF3Q0s7RUFDRyx5QkFBQTtFbkN1TlIsaUJBQUE7O0FtQzdHQSxzQkFuSkEsaUJBbUpDO0FBQ0Qsc0JBcEpBLGlCQW9KQztFQUNHLFdBQUE7O0FBRUosc0JBdkpBLGlCQXVKQztFbkN5R0QsMkJBQUE7RUFBQSxnQkFBQTtFQUFBLFNBQUE7O0FtQ25HQSxzQkE3SkEsaUJBNkpDO0VuQ21HRCwyQkFBQTtFQUFBLGdCQUFBO0VBQUEsU0FBQTs7QW1DeE1BLHNCQUFFO0VuQ3dNRixZQUFBOztBbUNwTUEsc0JBQUUsZ0JBQTJCLE1BQU87QUFDcEMsc0JBQUUsZ0JBQTJCLE1BQU87QUFDcEMsc0JBQUMsTUFBTztFQUNKLGNBQUE7O0FEdEVSO0VDSUksa0JBQUE7O0FESkosb0JDT0k7RW5DZ1FBLFlBQUE7RUFBQSxtQkFBQTtFQUFBLGdCQUFBO0VBQUEsZ0JBQUE7RUFBQSxrQkFBQTtFbUN4UEksYUFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RW5Dc1BKLGNBQUE7RUFBQSxnQkFBQTtFQUFBLHlCQUFBO0VtQzdLQSxZQUFBO0VBQ0EsT0FBQTtFbkM0S0Esa0JBQUE7O0FtQ3RPSSxvQkExQkosaUJBMEJLO0FBQ0Qsb0JBM0JKLGlCQTJCSztFQUNHLHlCQUFBO0VBQ0EsU0FBUyxFQUFUO0VBQ0EsU0FBQTtFQUNBLFFBQUE7RUFDQSxrQkFBQTs7QUFHSixvQkFuQ0osaUJBbUNLO0VBQ0cseUJBQUE7RW5DNE5SLGlCQUFBOztBbUN4Tkksb0JBeENKLGlCQXdDSztFQUNHLHlCQUFBO0VuQ3VOUixpQkFBQTs7QW1DektBLG9CQXZGQSxpQkF1RkM7QUFDRCxvQkF4RkEsaUJBd0ZDO0VBQ0csU0FBQTs7QUFFSixvQkEzRkEsaUJBMkZDO0VuQ3FLRCx5QkFBQTtFQUFBLGlCQUFBO0VBQUEsVUFBQTs7QW1DL0pBLG9CQWpHQSxpQkFpR0M7RW5DK0pELHlCQUFBO0VBQUEsaUJBQUE7RUFBQSxVQUFBOztBbUN4TUEsb0JBQUU7RW5Dd01GLFlBQUE7O0FtQ3BNQSxvQkFBRSxnQkFBMkIsTUFBTztBQUNwQyxvQkFBRSxnQkFBMkIsTUFBTztBQUNwQyxvQkFBQyxNQUFPO0VBQ0osY0FBQTs7QTlCc0VKO0VMMkhBLGdCQUFBO0VLekhJLDhCQUFBO0VBQ0ksMEJBQUE7RUFDSSxzQkFBQTs7QUFFWjtFQXZJQSxpQkFBQTtFTDRQQSxjQUFBO0VBQUEsYU85UXNCLDhDUDhRdEI7RUFBQSxnQkFBQTtFQUFBLGtCQUFBO0VBQUEsdUJBQUE7O0FLakhBO0VBR1EsZ0JBQUE7RUFJQSxtQkFBQTs7QUFLUixJQUFJO0VBQ0EsWUFBQTtFTG9HSixpQ0FBQTs7QUtoR0E7QUFDQTtFTCtGQSxnQkFBQTs7QUszRkE7QUFDQTtFTDBGQSxrQkFBQTs7QUt0RkE7RUxzRkEsbUJBQUE7RUFBQSxjQUFBOztBS2pGQTtBQUNBO0VMZ0ZBLGVBQUE7O0FLNUVBO0VMNEVBLGdCQUFBO0VBQUEsbUJBQUE7RUt6RUksU0FBQTtFTHlFSiw2QkFBQTs7QUtyRUE7QUFDQTtFTG9FQSx1QkFBQTtFS2xFSSxjQUFBO0VBQ0Esa0JBQUE7RUFDQSx3QkFBQTs7QUFFSjtFQUNJLFdBQUE7O0FBRUo7RUFDSSxlQUFBOztBQUdKO0VMdURBLGtCQUFBOztBSzdDQTtFQS9NQSxpQkFBQTtFTDRQQSxnQkFBQTtFQUFBLGdCQUFBO0VLeElJLGdCQUFBO0VBSUEsbUJBQUE7O0FBMkZKO0VBbk5BLGlCQUFBO0VMNFBBLGdCQUFBO0VBQUEsZ0JBQUE7RUt4SUksa0JBQUE7RUFJQSxtQkFBQTs7QUErRko7RUF2TkEsaUJBQUE7RUw0UEEsZ0JBQUE7RUFBQSxnQkFBQTtFS3hJSSxrQkFBQTtFQUlBLG1CQUFBOztBQW1HSjtFQTNOQSxpQkFBQTtFTDRQQSxnQkFBQTtFQUFBLGdCQUFBO0VLeElJLGdCQUFBO0VBSUEsbUJBQUE7O0FBdUdKO0VBL05BLGlCQUFBO0VMNFBBLGdCQUFBO0VBQUEsZ0JBQUE7RUt4SUksZ0JBQUE7RUFJQSxtQkFBQTs7QUEyR0o7RUFuT0EsZUFBQTtFTDRQQSxnQkFBQTtFQUFBLGdCQUFBO0VLeElJLGdCQUFBO0VBSUEsbUJBQUE7O0FBK0dKLEVBQ0k7QUFEQSxFQUNBO0FBREksRUFDSjtBQURRLEVBQ1I7QUFEWSxFQUNaO0FBRGdCLEVBQ2hCO0FBREosRUFFSTtBQUZBLEVBRUE7QUFGSSxFQUVKO0FBRlEsRUFFUjtBQUZZLEVBRVo7QUFGZ0IsRUFFaEI7RUxtQkosY0FBQTtFQUFBLGFPOVFzQiw4Q1A4UXRCO0VBQUEsZ0JBQUE7RUFBQSxrQkFBQTtFQUFBLGNBQUE7O0FLSkE7QUFDQTtFTEdBLGNBQUE7RUFBQSxxQkFBQTs7QUt6S0EsQ0FBQztBQUFELE1BQUM7RUx5S0QsY0FBQTtFQUFBLHFCQUFBOztBS3JLQSxDQUFDO0FBQUQsTUFBQztFTHFLRCxjQUFBO0VBQUEsMEJBQUE7O0FLaktBLENBQUM7QUFBRCxNQUFDO0VMaUtELGNBQUE7RUFBQSwwQkFBQTs7QUtPQTtBQUNBO0VBR1EsZ0JBQUE7RUFJQSxxQkFBQTs7QUFSUixFQVdJO0FBVkosRUFVSTtFQUdRLGdCQUFBO0VBSUEsbUJBQUE7O0FBbEJaLEVBcUJJO0FBcEJKLEVBb0JJO0FBckJKLEVBc0JJO0FBckJKLEVBcUJJO0VBQ0ksZ0JBQUE7O0FBSVI7RUxsQ0EsYUFBQTtFQUFBLG1CQUFBOztBS3NDQTtFTHRDQSxnQkFBQTtFQUFBLGFBQUE7RUFBQSxrQkFBQTs7QUsyQ0E7RUwzQ0EsYUFBQTtFQUFBLG1CQUFBO0VLOENJLGNBQUE7O0FBU0o7QUFDQTtBQUNBO0FBQ0E7RUwxREEsc0NPNVE4Qyx3QlA0UTlDOztBSytEQTtFTC9EQSxtQkFBQTtFQUFBLGNBQUE7RUs1UEEsaUJBQUE7RUw0UEEsZ0JBQUE7RUtvRUksbUJBQUE7O0FBSUo7RUx4RUEsbUJBQUE7RUFBQSxjQUFBO0VLNVBBLGlCQUFBO0VMNFBBLGdCQUFBOztBS2dGQTtFTGhGQSxtQkFBQTtFQUFBLHlCQUFBO0VBQUEsY0FBQTtFS29GSSxjQUFBO0VBaFZKLGlCQUFBO0VMNFBBLGdCQUFBO0VBQUEsdUJBQUE7RUFBQSxhQUFBO0VLMEZJLHFCQUFBOztBQVZKLEdBV0k7RUFDSSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxjQUFBO0VBQ0EscUJBQUE7RUFDQSw2QkFBQTtFQUNBLGdCQUFBOztBQVVSO0VMM0dBLDRCQUFBO0VBQUEscUJBQUE7RUFBQSxVQUFBO0VLNVBBLGlCQUFBO0VMNFBBLGNBQUE7RUFBQSxhTzlRc0IsOENQOFF0QjtFQUFBLGdCQUFBO0VBQUEsa0JBQUE7RUFBQSx1QkFBQTs7QUt1SFEsVUFISixFQUdLO0FBQUQsVUFGSixHQUVLO0FBQUQsVUFESixHQUNLO0VBQ0csZ0JBQUE7O0FBYlosVUFpQkk7QUFqQkosVUFrQkk7QUFsQkosVUFtQkk7RUw5SEosY0FBQTtFS2dJUSxjQUFBO0VBNVhSLGVBQUE7RUw0UEEsdUJBQUE7O0FLbUlRLFVBUEosT0FPSztBQUFELFVBTkosTUFNSztBQUFELFVBTEosT0FLSztFTG5JVCxTT3pFeUIsYVB5RXpCOztBSzJHQSxVQTZCSTtFTHhJSixrQkFBQTs7QUs4SUEsVUFBVTtBQUNWLFVBQVU7RUFDTixTQUFTLEVBQVQ7O0FBR0o7RUFDSSxZQUFBOztBQUVKLENBQUM7QUFDRCxDQUFDO0VBQ0csU0FBUyxFQUFUO0VBQ0EsYUFBQTs7QUFJSjtFTDdKQSxrQkFBQTs7QW9Dd2xCSjtFL0JwMUJJLGlCQUFBOztBK0I4MkJKO0UvQngyQkksaUJBQUE7O0ErQnMzQko7RS9CMTFCSSxxQkFBQTtFQUNBLHFCQUFBO0VBQ0csa0JBQUE7RUFDQyxpQkFBQTtFQUNJLGFBQUE7RStCdzFCUixnQkFBQTtFQUNBLFlBQUE7O0FBdUNKO0UvQm41QkksZ0JBQUE7RUFDQSx1QkFBQTtFQUNBLG1CQUFBO0UrQm01QkEsZ0JBQUE7RUFDQSxZQUFBOztBQWFKO0UvQjc1QkksNkJBQUE7RUFDQSxTQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7O0ErQms3Qko7RS9CNzZCSSxxQkFBQTtFQUNBLHFCQUFBO0VBQ0csa0JBQUE7RUFDQyxpQkFBQTtFQUNJLGFBQUE7O0ErQjY2Qlo7RS9CajdCSSxxQkFBQTtFQUNBLHFCQUFBO0VBQ0csa0JBQUE7RUFDQyxpQkFBQTtFQUNJLGFBQUE7O0ErQjI3Qlo7RS9CaitCSSxlQUFBO0VMNFBBLGNBQUE7RUFBQSxzQ081UThDLHdCUDRROUM7RUFBQSxnQkFBQTtFQUFBLGtCQUFBO0VBQUEsZ0JBQUE7O0FvQzh5Qko7RXBDOXlCSSxTQUFBO0VBQUEsVUFBQTtFS2hNQSxxQkFBQTs7QStCK2hDSjtFcEMvMUJJLFNBQUE7RUFBQSxVQUFBO0VLaE1BLHFCQUFBOztBK0IraENKLG9CL0IxaENJO0VBQ0kscUJBQUE7RUFDQSxtQkFBQTs7QStCdWlDUjtFcEM5MkJJLGNBQUE7RUFBQSxxQkFBQTs7QUt6S0EscUJBQUM7RUx5S0QsY0FBQTtFQUFBLHFCQUFBOztBS3JLQSxxQkFBQztFTHFLRCxjQUFBO0VBQUEsMEJBQUE7O0FLaktBLHFCQUFDO0VMaUtELGNBQUE7RUFBQSwwQkFBQTs7QW9DazNCSjtFcENsM0JJLGNBQUE7RUFBQSxxQkFBQTs7QUt6S0EsYUFBQztFTHlLRCxjQUFBO0VBQUEscUJBQUE7O0FLcktBLGFBQUM7RUxxS0QsY0FBQTtFQUFBLHFCQUFBOztBS2pLQSxhQUFDO0VMaUtELGNBQUE7RUFBQSwwQkFBQTs7QW9DMjdCSjtFL0J2ckNJLGlCQUFBO0VMNFBBLGdCQUFBO0VBQUEsZ0JBQUE7RUt4SUksZ0JBQUE7RUFJQSxtQkFBQTs7QStCa2tDUjtFL0IxckNJLGlCQUFBO0VMNFBBLGdCQUFBO0VBQUEsZ0JBQUE7RUt4SUksa0JBQUE7RUFJQSxtQkFBQTs7QUFTSjtFTDJIQSxnQkFBQTtFS3pISSw4QkFBQTtFQUNJLDBCQUFBO0VBQ0ksc0JBQUE7O0FBRVo7RUF2SUEsaUJBQUE7RUw0UEEsY0FBQTtFQUFBLGFPOVFzQiw4Q1A4UXRCO0VBQUEsZ0JBQUE7RUFBQSxrQkFBQTtFQUFBLHVCQUFBOztBS2pIQTtFQUdRLGdCQUFBO0VBSUEsbUJBQUE7O0FBS1IsSUFBSTtFQUNBLFlBQUE7RUxvR0osaUNBQUE7O0FLaEdBO0FBQ0E7RUwrRkEsZ0JBQUE7O0FLM0ZBO0FBQ0E7RUwwRkEsa0JBQUE7O0FLdEZBO0VMc0ZBLG1CQUFBO0VBQUEsY0FBQTs7QUtqRkE7QUFDQTtFTGdGQSxlQUFBOztBSzVFQTtFTDRFQSxnQkFBQTtFQUFBLG1CQUFBO0VLekVJLFNBQUE7RUx5RUosNkJBQUE7O0FLckVBO0FBQ0E7RUxvRUEsdUJBQUE7RUtsRUksY0FBQTtFQUNBLGtCQUFBO0VBQ0Esd0JBQUE7O0FBRUo7RUFDSSxXQUFBOztBQUVKO0VBQ0ksZUFBQTs7QUFHSjtFTHVEQSxrQkFBQTs7QUs3Q0E7RUEvTUEsaUJBQUE7RUw0UEEsZ0JBQUE7RUFBQSxnQkFBQTtFS3hJSSxnQkFBQTtFQUlBLG1CQUFBOztBQTJGSjtFQW5OQSxpQkFBQTtFTDRQQSxnQkFBQTtFQUFBLGdCQUFBO0VLeElJLGtCQUFBO0VBSUEsbUJBQUE7O0FBK0ZKO0VBdk5BLGlCQUFBO0VMNFBBLGdCQUFBO0VBQUEsZ0JBQUE7RUt4SUksa0JBQUE7RUFJQSxtQkFBQTs7QUFtR0o7RUEzTkEsaUJBQUE7RUw0UEEsZ0JBQUE7RUFBQSxnQkFBQTtFS3hJSSxnQkFBQTtFQUlBLG1CQUFBOztBQXVHSjtFQS9OQSxpQkFBQTtFTDRQQSxnQkFBQTtFQUFBLGdCQUFBO0VLeElJLGdCQUFBO0VBSUEsbUJBQUE7O0FBMkdKO0VBbk9BLGVBQUE7RUw0UEEsZ0JBQUE7RUFBQSxnQkFBQTtFS3hJSSxnQkFBQTtFQUlBLG1CQUFBOztBQStHSixFQUNJO0FBREEsRUFDQTtBQURJLEVBQ0o7QUFEUSxFQUNSO0FBRFksRUFDWjtBQURnQixFQUNoQjtBQURKLEVBRUk7QUFGQSxFQUVBO0FBRkksRUFFSjtBQUZRLEVBRVI7QUFGWSxFQUVaO0FBRmdCLEVBRWhCO0VMbUJKLGNBQUE7RUFBQSxhTzlRc0IsOENQOFF0QjtFQUFBLGdCQUFBO0VBQUEsa0JBQUE7RUFBQSxjQUFBOztBS0pBO0FBQ0E7RUxHQSxjQUFBO0VBQUEscUJBQUE7O0FLektBLENBQUM7QUFBRCxNQUFDO0VMeUtELGNBQUE7RUFBQSxxQkFBQTs7QUtyS0EsQ0FBQztBQUFELE1BQUM7RUxxS0QsY0FBQTtFQUFBLDBCQUFBOztBS2pLQSxDQUFDO0FBQUQsTUFBQztFTGlLRCxjQUFBO0VBQUEsMEJBQUE7O0FLT0E7QUFDQTtFQUdRLGdCQUFBO0VBSUEscUJBQUE7O0FBUlIsRUFXSTtBQVZKLEVBVUk7RUFHUSxnQkFBQTtFQUlBLG1CQUFBOztBQWxCWixFQXFCSTtBQXBCSixFQW9CSTtBQXJCSixFQXNCSTtBQXJCSixFQXFCSTtFQUNJLGdCQUFBOztBQUlSO0VMbENBLGFBQUE7RUFBQSxtQkFBQTs7QUtzQ0E7RUx0Q0EsZ0JBQUE7RUFBQSxhQUFBO0VBQUEsa0JBQUE7O0FLMkNBO0VMM0NBLGFBQUE7RUFBQSxtQkFBQTtFSzhDSSxjQUFBOztBQVNKO0FBQ0E7QUFDQTtBQUNBO0VMMURBLHNDTzVROEMsd0JQNFE5Qzs7QUsrREE7RUwvREEsbUJBQUE7RUFBQSxjQUFBO0VLNVBBLGlCQUFBO0VMNFBBLGdCQUFBO0VLb0VJLG1CQUFBOztBQUlKO0VMeEVBLG1CQUFBO0VBQUEsY0FBQTtFSzVQQSxpQkFBQTtFTDRQQSxnQkFBQTs7QUtnRkE7RUxoRkEsbUJBQUE7RUFBQSx5QkFBQTtFQUFBLGNBQUE7RUtvRkksY0FBQTtFQWhWSixpQkFBQTtFTDRQQSxnQkFBQTtFQUFBLHVCQUFBO0VBQUEsYUFBQTtFSzBGSSxxQkFBQTs7QUFWSixHQVdJO0VBQ0ksVUFBQTtFQUNBLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLHFCQUFBO0VBQ0EsNkJBQUE7RUFDQSxnQkFBQTs7QUFVUjtFTDNHQSw0QkFBQTtFQUFBLHFCQUFBO0VBQUEsVUFBQTtFSzVQQSxpQkFBQTtFTDRQQSxjQUFBO0VBQUEsYU85UXNCLDhDUDhRdEI7RUFBQSxnQkFBQTtFQUFBLGtCQUFBO0VBQUEsdUJBQUE7O0FLdUhRLFVBSEosRUFHSztBQUFELFVBRkosR0FFSztBQUFELFVBREosR0FDSztFQUNHLGdCQUFBOztBQWJaLFVBaUJJO0FBakJKLFVBa0JJO0FBbEJKLFVBbUJJO0VMOUhKLGNBQUE7RUtnSVEsY0FBQTtFQTVYUixlQUFBO0VMNFBBLHVCQUFBOztBS21JUSxVQVBKLE9BT0s7QUFBRCxVQU5KLE1BTUs7QUFBRCxVQUxKLE9BS0s7RUxuSVQsU096RXlCLGFQeUV6Qjs7QUsyR0EsVUE2Qkk7RUx4SUosa0JBQUE7O0FLOElBLFVBQVU7QUFDVixVQUFVO0VBQ04sU0FBUyxFQUFUOztBQUdKO0VBQ0ksWUFBQTs7QUFFSixDQUFDO0FBQ0QsQ0FBQztFQUNHLFNBQVMsRUFBVDtFQUNBLGFBQUE7O0FBSUo7RUw3SkEsa0JBQUE7O0FxQ3RSSjtFQUNJLHNCQUFBOztBQUdKO0VBRUksc0JBQUE7O0FyQzhCQSw2QkFBQztBQUNELDZCQUFDO0VBQ0csU0FBUyxFQUFUO0VBQ0EsY0FBQTs7QUFFSiw2QkFBQztFQUNHLFdBQUE7O0FxQ2pDUixzQkFBc0I7RUFDbEIsV0FBQTs7QUFFSixzQkFBc0I7RUFDbEIsWUFBQTs7QUFnQ0o7RXJDdENJLFNBQUE7RUFDQSxrQkFBQTs7QXFDMERKO0VyQ3RESSxTQUFBO0VBQ0EsTUFBTSxnQkFBTjtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBOztBcUNvRUo7RUFDSSxtQkFBQTtFQUNBLFlBQUE7RXJDN0VBLFNBQUE7RUFDQSxNQUFNLGdCQUFOO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7O0FxQzBFSjtFckN0RUksVUFBQTtFQUNBLFlBQUE7RUFDQSxTQUFBO0VBQ0EsaUJBQUE7RUFDQSxnQkFBQTtFQUNBLFdBQUE7O0FxQ3NGSjtFckNvS0ksYUFBQTtFQUFBLG1CQUFBOztBcUN0R0o7RUFDSSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RXJDMENBLG1CQUFtQixhQUFuQjtFQUNJLGVBQWUsYUFBZjtFQUNJLFdBQVcsYUFBWDs7QUE4SVIsb0JBQUM7RUFDRyxjQUFBO0VBQ0EsaUJBQUE7O0FBRUosb0JBQUM7RUFDRyxjQUFBO0VBQ0EsaUJBQUE7O0FBRUosb0JBQUM7RUFDRyxjQUFBO0VBQ0EsaUJBQUE7O0FBRUosb0JBQUM7RUFDRyxjQUFBO0VBQ0EsaUJBQUE7O0FxQzdIUjtFckM1SFEseUJBQUE7RUFDQSwyQkFBQTtFQUNBLGtCQUFrQixzREFBbEI7RUFDQSxrQkFBa0Isb0RBQWxCO0VBQ0Esa0hBQUE7O0FxQ2lJUjtFckNuTVEseUJBQUE7RUFDQSwyQkFBQTtFQUNBLGtCQUFrQiw4QkFBOEIsd0JBQTJDLHlCQUEzRjtFQUNBLGtCQUFrQixtREFBbEI7RUFDQSxrSEFBQTs7QXFDd01SO0VBQ0ksZ0JBQUE7RUFDQSxhQUFBOztBQUdKO0VyQ25NUSx3Q0FBQTtFQUNBLDJCQUFBO0VBQ0Esa0JBQWtCLDhCQUE4Qix1Q0FBMkMseUJBQTNGO0VBQ0Esa0JBQWtCLGtFQUFsQjtFQUNBLGlJQUFBOztBc0NoRVI7RUFDSSxhQUFBO0VBQ0Esc0JBQUEifQ== */
\ No newline at end of file
diff --git a/lib/web/css/docs/icons.html b/lib/web/css/docs/icons.html
index c20166dc31e9f29cd1ba8e5d4a9c434d1c5ff13d..7058b1369e74c6a133659d934dbb7ea2b9c0b96c 100644
--- a/lib/web/css/docs/icons.html
+++ b/lib/web/css/docs/icons.html
@@ -1,12 +1,12 @@
-<!--
-/**
- * Copyright © 2015 Magento. All rights reserved.
- * See COPYING.txt for license details.
- */
--->
-
+<!--
+/**
+ * Copyright © 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+
 <!DOCTYPE html><html><head><title>icons | Magento UI Library
-</title><meta charset="utf-8"><style>*{-moz-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;border:0}body{padding:60px 0 40px;background-color:hsl(207,10%,90%);color:hsl(207,5%,30%)}.container{max-width:1300px;margin:0 auto;padding:0 20px}.section{position:relative;margin-bottom:20px}.docs{position:relative;z-index:2;width:68%;min-height:200px;background-color:hsl(207,0%,100%);background-clip:padding-box;border:1px solid hsla(207,5%,5%,.1);border-radius:5px;box-shadow:0 0 3px hsla(207,5%,5%,.1)}.code{position:absolute;top:5px;bottom:5px;right:0;z-index:1;width:33%;padding:10px 10px 10px 20px;border-radius:0 5px 5px 0;border:1px solid hsla(207,20%,10%,.1);background-color:hsla(207,20%,95%,.9);background-clip:padding-box;opacity:.5;-webkit-transition:opacity .4s;-moz-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.code:hover{opacity:1}.preview{background:hsl(207,0%,100%);border-top:1px solid hsl(207,30%,95%);position:relative;z-index:1}.preview-code+.preview{margin-top:0;border-top:0}.preview iframe{display:block;width:100%;height:100%;overflow:hidden}.preview-code{position:relative;z-index:2;display:block;width:100%;color:hsl(207,9%,37%);max-height:200px;padding:10px 20px;overflow-y:auto;background:hsl(207,30%,95%);border:1px solid hsl(207,30%,85%);border-left:0;border-right;box-shadow:inset 0 1px 2px hsla(207,30%,10%,.1);line-height:1.1!important;resize:none}.preview-code:focus{outline:0;background:hsl(207,30%,97%);box-shadow:inset 0 1px 2px hsla(207,30%,10%,.1),0 0 5px hsla(207,75%,75%,.9)}.preview-code:last-child{border-bottom:0;border-radius:0 0 5px 5px}.resizeable{padding:15px;overflow:auto;background:hsl(207,0%,100%);box-shadow:0 0 2px hsla(207,10%,20%,.2);resize:both}.preview-code,pre{white-space:pre-wrap;word-wrap:break-word;overflow-y:auto}.code pre{height:100%;margin-top:0}.bar{position:fixed;left:0;right:0;z-index:1010;min-height:40px;line-height:40px;background-image:-webkit-linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92));background-image:-moz-linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92));background-image:-o-linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92));background-image:linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92))}.bar.top{top:0;box-shadow:0 1px 2px hsla(207,5%,0%,.2)}.bar.bottom{bottom:0;box-shadow:0 -1px 2px hsla(207,5%,0%,.2)}.bar ul{margin:0!important}.bar li{display:block;list-style:none}.bar .icon path{fill:hsla(27,10%,75%,.75)}.docs .icon path{fill:hsla(207,10%,75%,.5)}.docs .permalink:hover .icon path{fill:hsl(207,10%,75%)}.bar button{color:hsla(27,10%,75%,.75)}.bar button:hover .icon path,.bar button.is-active .icon path{fill:hsl(27,10%,85%)}.bar button:hover,.bar button.is-active{color:hsl(27,10%,85%)}.bar .icon{vertical-align:middle;display:inline-block}.bar,.bar a,.bar a:visited{color:hsl(27,10%,85%);text-shadow:1px 1px 0 hsla(27,5%,0%,.5)}.bar a:hover,.bar a.is-active{color:hsl(27,10%,95%);text-shadow:1px 1px 0 hsla(27,5%,0%,1);text-decoration:none}.brand{float:left;margin-right:20px;font-weight:700;font-size:16px;text-decoration:none}.brand,a.brand,a.brand:visited{color:hsl(27,5%,5%);text-shadow:1px 1px 0 hsla(27,5%,100%,.2)}.brand:hover,a.brand:hover{color:hsl(27,5%,0%);text-shadow:1px 1px 0 hsla(27,5%,100%,.3);text-decoration:none}.menu{font-size:12px}.menu>li{float:left;position:relative}.menu a{display:block;margin-right:15px}.dropdown-toggle{position:relative;padding-right:15px}.dropdown-toggle:after{display:block;position:absolute;right:0;top:18px;content:'';border:4px solid;border-left-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.nav-results,.dropdown{position:absolute;z-index:1020;top:32px;left:-16px;width:175px;max-height:500px;padding:10px 0;overflow-y:auto;word-wrap:break-word;font-size:11px;line-height:20px;background-color:hsla(207,10%,25%,.97);border:1px solid hsla(207,5%,70%,.3);border-radius:3px;box-shadow:0 0 3px hsla(207,5%,0%,.2)}.toc-list{width:200px}.nav-results{right:0;width:200px;left:auto;padding:5px 0}.nav-results-filename{display:block;font-size:10px;opacity:.75}.nav-results a{display:block;line-height:15px;padding:5px 10px}.nav-results li:not([hidden])~li a{border-top:1px solid hsla(27,10%,90%,.1)}.dropdown a{padding:0 15px}.dropdown li:hover{background-color:hsl(207,10%,22%)}.nav{float:right;position:relative}.nav input[type="search"]{padding:2px 4px;color:#fff;width:150px;border:1px solid hsla(207,5%,0%,.3);background:hsla(207,12%,40%,.9);box-shadow:inset 1px 1px 3px hsla(207,5%,0%,.05),1px 1px 0 hsla(207,5%,100%,.05);border-radius:10px;-webkit-appearance:textfield}.nav input[type="search"]:focus{outline:0;background:hsla(207,7%,45%,.9)}.settings{text-align:center}.bar button{display:inline-block;vertical-align:middle;padding:0 5px;margin:0 3px;background:transparent}.bar button:first-child{margin-left:0}.settings .auto{line-height:32px;font-size:11px;font-weight:700;letter-spacing:-1px;text-shadow:none;text-transform:uppercase}body{font-family:sans-serif;font-size:14px;line-height:1.618}.docs pre,p,ol,ul,dl,figure,blockquote,table{margin-left:20px;margin-right:20px}.preview,.docs pre,p,ol,ul,dl,figure,blockquote,table{margin-top:10px}ul ul,ol ol,ul ol,ol ul,blockquote p:last-child{margin-top:0}ul,ol{padding-left:1.5em}p:last-child,ol:last-child,ul:last-child,dl:last-child{margin-bottom:20px}hr,h1,h2,h3,h4,h5,h6{margin:1em 20px .5em}h1:first-of-type{margin-top:20px}h1,h2,h3,h4,h5,h6{line-height:1.2;color:hsl(207,10%,50%)}h1 a,h1 a:hover,h1 a:visited{color:inherit;text-decoration:inherit}h1{font-size:3.052em;font-weight:400;color:hsl(207,10%,45%)}h2{font-size:1.953em}h3{font-size:1.536em}h1,h2,h3{letter-spacing:-.025em}h4{font-size:1.25em}h5{font-size:1em;text-transform:uppercase}h6{font-size:1em}.permalink{position:absolute;top:15px;right:15px}a{color:hsl(207,90%,50%);text-decoration:none}a:hover{color:hsl(207,95%,40%);text-decoration:underline}a:visited{color:hsl(207,100%,35%)}.preview-code,pre,code,var{font-style:normal;font-family:"Ubuntu Mono","Andale Mono","DejaVu Sans Mono","Monaco","Bitstream Vera Sans Mono","Consolas","Lucida Console",monospace;font-size:12px}.docs pre,code,var{padding:.1em 3px;background:hsla(207,5%,0%,.025);border:1px solid hsla(207,5%,0%,.05);border-radius:3px}.code pre{line-height:1.1!important}pre code{padding:0;background:transparent;border:0}.cf:before,.cf:after{content:'';display:table}.cf:after{clear:both}[unselectable="on"]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[hidden]{display:none!important}small{font-size:85%;opacity:.9}.docs .vars_list{width:100%}.docs .vars_list th,.docs .vars_list td{width:33%}.docs pre th{text-align:left}.docs pre table{border-collapse:collapse;margin:0}.docs th,.docs td{border:0;padding:9px 10px 9px 0;vertical-align:top}.docs tr th:last-child,.docs tr td:last-child{padding-right:0}.docs pre th{font-weight:400}.docs pre th.vars_head{border-bottom:1px solid #e5e5e5;color:#707070;white-space:nowrap}.docs pre th.vars_section{border-bottom:1px solid #e5e5e5;color:#333;font-size:18px;padding-top:30px}.vars_value{color:#338bb8}.docs li p{margin:0 0 20px}.dropdown a{text-transform:capitalize}#default-button #default-button-big+.preview+.preview-code{display:block}#actions-toolbar-alignment .preview-code,#reverse-primary-and-secondary-blocks .preview-code,#actions-toolbar-indents-customizations .preview-code,#actionstoolbarclearfloats-mixin .preview-code,#responsive-actions-toolbar .preview-code,#button-with-gradient-background .preview-code,#primary-button .preview-code,#button-as-an-icon .preview-code,#button-with-an-icon-on-the-left-or-right-side-of-the-text .preview-code,#button-with-fixed-width .preview-code,#button-as-a-link .preview-code,#link-as-a-button .preview-code,#buttonstyled-breadcrumbs-with-gradient-background-border-and-no-separating-symbol .preview-code,#breadcrumbs-with-solid-background .preview-code,#pagination-without-label-with-solid-background .preview-code,#pagination-with-label-and-text-previousnext-links .preview-code,#pagination-with-label-and-gradient-background-on-links .preview-code,#fixed-height-popup .preview-code,#fixed-content-height-popup .preview-code,#margins-for-header-content-and-footer-block-in-popup .preview-code,#popup-titles-with-styled-as-theme-headings .preview-code,#popup-action-toolbar .preview-code,#popup-close-button-without-an-icon .preview-code,#modify-icon-of-popup-close-button .preview-code,#modify-overlay-styles .preview-code,#rating-summary-multiple-ratings .preview-code,#rating-summary-hide-label .preview-code,#rating-summary-icons-symbol .preview-code,#rating-summary-icons-color .preview-code,#rating-summary-set-number-of-icons .preview-code,#rating-summary .preview-code,#rating-with-vote-icon-symbol .preview-code,#rating-with-vote-setup-icons-colors .preview-code,#rating-with-vote-setup-number-of-icons .preview-code,#tabs-with-content-top-border .preview-code,#accordion-mixin-variables .preview-code,#tabs-base .preview-code,#accordion-base .preview-code,#warning-message .preview-code,#error-message .preview-code,#success-message .preview-code,#notice-message .preview-code,#message-with-inner-icon .preview-code,#message-with-lateral-icon .preview-code,#custom-message-style .preview-code,#modify-dropdown-list-styles .preview-code,#dropdown-with-icon-customization .preview-code,#split-button-button-styling .preview-code,#split-button-icon-customization .preview-code,#split-button-dropdown-list-customization .preview-code,#table-cells-resize .preview-code,#table-caption .preview-code,#table-typography .preview-code,#table-background-customization .preview-code,#table-borders-customization .preview-code,#table-without-borders .preview-code,#table-with-horizontal-borders .preview-code,#table-with-vertical-borders .preview-code,#striped-table .preview-code,#responsive-table-technics-1 .preview-code,#responsive-table-technics-2 .preview-code,#fontsize-mixin .preview-code,#word-breaking-mixin .preview-code,#word-breaking-mixin .preview-code,#text-overflow-mixin .preview-code,#text-hide .preview-code,#hyphens .preview-code,#font-style-and-color .preview-code,#reset-list-styles .preview-code,#inlineblock-list-item-styling .preview-code,#link-styling-mixin .preview-code,#heading-styling-mixin .preview-code,#icon-with-image-or-sprite .preview-code,#change-the-size-of-font-icon .preview-code,#sprite-and-font-icons-for-blank-theme .preview-code,#icon-position-for-an-icon-with-image-or-sprite .preview-code{display:none}article[id$="-variables"] .docs,#resets .docs,#ratings .docs,#tabs-and-accordions .docs,#messages .docs,#dropdown-and-split-buttons-mixins .docs,#font-face-mixin .docs,#layout .docs,#forms-mixins .docs,#including-magento-ui-library-to-your-theme .docs,#global-forms-elements-customization .docs,#mobile-off-canvas-navigation .docs,#desktop-navigation .docs,#layout-width .docs{width:100%}article[id$="-variables"] .code{display:none}article[id$="-variables"] .docs pre{background:#fff;border:0;margin-top:0}</style><script type="text/preview">(function(){"use strict";var a=function(a){return Array.prototype.slice.call(a)},b=document.getElementsByTagName("body")[0],c=["link","visited","hover","active","focus","target","enabled","disabled","checked"],d=new RegExp(":(("+c.join(")|(")+"))","gi"),e=a(document.styleSheets).map(function(b){return a(b.cssRules).filter(function(a){return a.selectorText&&a.selectorText.match(d)}).map(function(a){return a.cssText.replace(d,".\\3A $1")}).join("")}).join("");if(e.length){var f=document.createElement("style");f.innerText=e;var g=document.getElementsByTagName("style")[0];g.parentNode.insertBefore(f,g)}var h=function(){var a=window.getComputedStyle(b,null);return function(){if(b.childElementCount===0)return b.offsetHeight;var c=b.getElementsByTagName("*"),d=[];for(var e=0,f=c.length;e<f;e++)d.push(c[e].offsetTop+c[e].offsetHeight+parseInt(window.getComputedStyle(c[e],null).getPropertyValue("margin-bottom")));var g=Math.max.apply(Math,d);return g+=parseInt(a.getPropertyValue("padding-bottom"),10),Math.max(g,b.offsetHeight)}}(),i={getHeight:function(){window.parent.postMessage({height:h()},"*")}};window.addEventListener("message",function(a){if(a.data==null)return;typeof a.data=="string"&&i[a.data]()},!1)})()</script><style type="text/preview">.actions-toolbar:before,.actions-toolbar:after{content:"";display:table}.actions-toolbar:after{clear:both}.actions-toolbar .primary{float:left}.actions-toolbar .secondary{float:right}.actions-toolbar .primary,.actions-toolbar .secondary{display:inline-block}.actions-toolbar .primary a.action,.actions-toolbar .secondary a.action{display:inline-block}.actions-toolbar .primary .action{margin:0 5px 0 0}.actions-toolbar .secondary a.action{margin-top:6px}.example-actions-toolbar-1:before,.example-actions-toolbar-1:after{content:"";display:table}.example-actions-toolbar-1:after{clear:both}.example-actions-toolbar-1 .primary{float:left}.example-actions-toolbar-1 .secondary{float:right}.example-actions-toolbar-1 .primary,.example-actions-toolbar-1 .secondary{display:inline-block}.example-actions-toolbar-1 .primary a.action,.example-actions-toolbar-1 .secondary a.action{display:inline-block}.example-actions-toolbar-1 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-1 .secondary a.action{margin-top:6px}.example-actions-toolbar-1:before,.example-actions-toolbar-1:after{content:"";display:table}.example-actions-toolbar-1:after{clear:both}.example-actions-toolbar-1 .primary{float:left}.example-actions-toolbar-1 .secondary{float:right}.example-actions-toolbar-1 .primary,.example-actions-toolbar-1 .secondary{display:inline-block}.example-actions-toolbar-1 .primary a.action,.example-actions-toolbar-1 .secondary a.action{display:inline-block}.example-actions-toolbar-1 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-1 .secondary a.action{margin-top:6px}.example-actions-toolbar-2:before,.example-actions-toolbar-2:after{content:"";display:table}.example-actions-toolbar-2:after{clear:both}.example-actions-toolbar-2 .primary{float:left}.example-actions-toolbar-2 .secondary{float:right}.example-actions-toolbar-2 .primary,.example-actions-toolbar-2 .secondary{display:inline-block}.example-actions-toolbar-2 .primary a.action,.example-actions-toolbar-2 .secondary a.action{display:inline-block}.example-actions-toolbar-2 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-2 .secondary a.action{margin-top:6px}.example-actions-toolbar-3{text-align:left}.example-actions-toolbar-3:before,.example-actions-toolbar-3:after{content:"";display:table}.example-actions-toolbar-3:after{clear:both}.example-actions-toolbar-3 .primary{float:left}.example-actions-toolbar-3 .primary,.example-actions-toolbar-3 .secondary{display:inline-block}.example-actions-toolbar-3 .primary a.action,.example-actions-toolbar-3 .secondary a.action{display:inline-block}.example-actions-toolbar-3 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-3 .secondary a.action{margin-top:6px}.example-actions-toolbar-4{text-align:right}.example-actions-toolbar-4:before,.example-actions-toolbar-4:after{content:"";display:table}.example-actions-toolbar-4:after{clear:both}.example-actions-toolbar-4 .secondary{float:right}.example-actions-toolbar-4 .primary,.example-actions-toolbar-4 .secondary{display:inline-block}.example-actions-toolbar-4 .primary a.action,.example-actions-toolbar-4 .secondary a.action{display:inline-block}.example-actions-toolbar-4 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-4 .secondary a.action{margin-top:6px}.example-actions-toolbar-5{text-align:center}.example-actions-toolbar-5:before,.example-actions-toolbar-5:after{content:"";display:table}.example-actions-toolbar-5:after{clear:both}.example-actions-toolbar-5 .primary,.example-actions-toolbar-5 .secondary{vertical-align:top}.example-actions-toolbar-5 .primary,.example-actions-toolbar-5 .secondary{display:inline-block}.example-actions-toolbar-5 .primary a.action,.example-actions-toolbar-5 .secondary a.action{display:inline-block}.example-actions-toolbar-5 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-5 .secondary a.action{margin-top:6px}.example-actions-toolbar-6:before,.example-actions-toolbar-6:after{content:"";display:table}.example-actions-toolbar-6:after{clear:both}.example-actions-toolbar-6 .primary{float:right}.example-actions-toolbar-6 .secondary{float:left}.example-actions-toolbar-6 .primary,.example-actions-toolbar-6 .secondary{display:inline-block}.example-actions-toolbar-6 .primary a.action,.example-actions-toolbar-6 .secondary a.action{display:inline-block}.example-actions-toolbar-6 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-6 .secondary a.action{margin-top:6px}.example-actions-toolbar-7{text-align:left}.example-actions-toolbar-7:before,.example-actions-toolbar-7:after{content:"";display:table}.example-actions-toolbar-7:after{clear:both}.example-actions-toolbar-7 .secondary{float:left}.example-actions-toolbar-7 .primary,.example-actions-toolbar-7 .secondary{display:inline-block}.example-actions-toolbar-7 .primary a.action,.example-actions-toolbar-7 .secondary a.action{display:inline-block}.example-actions-toolbar-7 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-7 .secondary a.action{margin-top:6px}.example-actions-toolbar-8{text-align:right}.example-actions-toolbar-8:before,.example-actions-toolbar-8:after{content:"";display:table}.example-actions-toolbar-8:after{clear:both}.example-actions-toolbar-8 .primary{float:right}.example-actions-toolbar-8 .primary,.example-actions-toolbar-8 .secondary{display:inline-block}.example-actions-toolbar-8 .primary a.action,.example-actions-toolbar-8 .secondary a.action{display:inline-block}.example-actions-toolbar-8 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-8 .secondary a.action{margin-top:6px}.example-actions-toolbar-9{margin:10px;padding:10px}.example-actions-toolbar-9:before,.example-actions-toolbar-9:after{content:"";display:table}.example-actions-toolbar-9:after{clear:both}.example-actions-toolbar-9 .primary{float:left}.example-actions-toolbar-9 .secondary{float:right}.example-actions-toolbar-9 .primary,.example-actions-toolbar-9 .secondary{display:inline-block}.example-actions-toolbar-9 .primary a.action,.example-actions-toolbar-9 .secondary a.action{display:inline-block}.example-actions-toolbar-9 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-9 .secondary a.action{margin-top:6px}.example-actions-toolbar-10{text-align:left}.example-actions-toolbar-10:before,.example-actions-toolbar-10:after{content:"";display:table}.example-actions-toolbar-10:after{clear:both}.example-actions-toolbar-10 .primary{float:left}.example-actions-toolbar-10 .primary,.example-actions-toolbar-10 .secondary{display:inline-block}.example-actions-toolbar-10 .primary a.action,.example-actions-toolbar-10 .secondary a.action{display:inline-block}.example-actions-toolbar-10 .primary .action{margin:0 50px 0 0}.example-actions-toolbar-10 .secondary a.action{margin-top:6px}.example-actions-toolbar-11{text-align:left}.example-actions-toolbar-11:before,.example-actions-toolbar-11:after{content:"";display:table}.example-actions-toolbar-11:after{clear:both}.example-actions-toolbar-11 .primary{float:left}.example-actions-toolbar-11 .primary,.example-actions-toolbar-11 .secondary{display:inline-block}.example-actions-toolbar-11 .primary a.action,.example-actions-toolbar-11 .secondary a.action{display:inline-block}.example-actions-toolbar-11 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-11 .secondary .action{margin:0 50px 0 0}.example-actions-toolbar-11 .secondary a.action{margin-top:6px}.example-actions-toolbar-12:before,.example-actions-toolbar-12:after{content:"";display:table}.example-actions-toolbar-12:after{clear:both}.example-actions-toolbar-12 .primary{float:left}.example-actions-toolbar-12 .secondary{float:right}.example-actions-toolbar-12 .primary,.example-actions-toolbar-12 .secondary{display:inline-block}.example-actions-toolbar-12 .primary a.action,.example-actions-toolbar-12 .secondary a.action{display:inline-block}.example-actions-toolbar-12 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-12 .secondary a.action{margin-top:6px}.example-actions-toolbar-12:before,.example-actions-toolbar-12:after{content:"";display:table}.example-actions-toolbar-12:after{clear:both}.example-actions-toolbar-12 .primary{float:left}.example-actions-toolbar-12 .secondary{float:right}.example-actions-toolbar-12 .primary,.example-actions-toolbar-12 .secondary{display:inline-block}.example-actions-toolbar-12 .primary a.action,.example-actions-toolbar-12 .secondary a.action{display:inline-block}.example-actions-toolbar-12 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-12 .secondary a.action{margin-top:6px}@media only screen and (max-width: 768px){.example-actions-toolbar-12 .primary,.example-actions-toolbar-12 .secondary{ display:block;float:none}}.example-breadcrumbs-1{margin:0 0 20px}.example-breadcrumbs-1 .items{font-size:1.2rem;color:#a3a3a3;margin:0;padding:0;list-style:none none}.example-breadcrumbs-1 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-1 .item{margin:0}.example-breadcrumbs-1 a{color:#333;text-decoration:none}.example-breadcrumbs-1 a:visited{color:#333;text-decoration:none}.example-breadcrumbs-1 a:hover{color:#333;text-decoration:underline}.example-breadcrumbs-1 a:active{color:#333;text-decoration:none}.example-breadcrumbs-1 strong{font-weight:400}.example-breadcrumbs-1 .item:not(:last-child){display:inline-block;text-decoration:none}.example-breadcrumbs-1 .item:not(:last-child):after{font-family:'icons-blank-theme';content:'\e608';font-size:24px;line-height:18px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-breadcrumbs-2{margin:0 0 20px}.example-breadcrumbs-2 .items{font-size:1.2rem;color:#1979c3;margin:0;padding:0;list-style:none none}.example-breadcrumbs-2 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-2 .item{margin:0}.example-breadcrumbs-2 a{background-color:#ccc;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #f4f4f4 0, #ccc 100%);background-image:linear-gradient(to bottom, #f4f4f4 0, #ccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f4f4', endColorstr='#cccccc', GradientType=0);border:1px solid #ccc;display:inline-block;padding:3px 5px;color:#333;text-decoration:none}.example-breadcrumbs-2 a:visited{background-color:false;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,false 0,false 100%);background-image:linear-gradient(to bottom,false 0,false 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='false', endColorstr='false', GradientType=0);color:#333;text-decoration:none}.example-breadcrumbs-2 a:hover{background-color:#f4f4f4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #ccc 0, #f4f4f4 100%);background-image:linear-gradient(to bottom, #ccc 0, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#f4f4f4', GradientType=0);color:#333;text-decoration:none}.example-breadcrumbs-2 a:active{background-color:false;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,false 0,false 100%);background-image:linear-gradient(to bottom,false 0,false 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='false', endColorstr='false', GradientType=0);color:#333;text-decoration:none}.example-breadcrumbs-2 strong{background-color:#ff5501;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #f7b32e 0, #ff5501 100%);background-image:linear-gradient(to bottom, #f7b32e 0, #ff5501 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7b32e', endColorstr='#ff5501', GradientType=0);border:1px solid #d04b0a;display:inline-block;padding:3px 5px;font-weight:400}.example-breadcrumbs-2 .item:not(:last-child){display:inline-block;text-decoration:none}.example-breadcrumbs-2 .item:not(:last-child):after{font-family:'icons-blank-theme';content:'\e608';font-size:24px;line-height:18px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-breadcrumbs-3{margin:0 0 20px}.example-breadcrumbs-3 .items{font-size:1.2rem;color:#333;margin:0;padding:0;list-style:none none}.example-breadcrumbs-3 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-3 .item{margin:0}.example-breadcrumbs-3 a{background:#f4f4f4;display:inline-block;padding:3px 5px;color:#333;text-decoration:none}.example-breadcrumbs-3 a:visited{color:#333;text-decoration:none}.example-breadcrumbs-3 a:hover{background:#ccc;color:#333;text-decoration:none}.example-breadcrumbs-3 a:active{color:#333;text-decoration:none}.example-breadcrumbs-3 strong{background:#e7e7e7;display:inline-block;padding:3px 5px;font-weight:400}.example-breadcrumbs-3 .item:not(:last-child){display:inline-block;text-decoration:none}.example-breadcrumbs-3 .item:not(:last-child):after{font-family:'icons-blank-theme';content:'\e608';font-size:24px;line-height:18px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-breadcrumbs-3 .item a{position:relative;margin:0 11px 0 0}.example-breadcrumbs-3 .item a:after{border:12px solid transparent;height:0;width:0;border-left-color:#f4f4f4;content:"";position:absolute;display:block;top:0;right:-23px}.example-breadcrumbs-3 .item a:hover:after{border-color:transparent transparent transparent #ccc}button{background-image:none;background:#f2f2f2;padding:7px 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:3px;vertical-align:middle;border-radius:3px}button:focus,button:active{background:#e2e2e2;border:1px solid #cdcdcd;color:#333}button:hover{background:#e2e2e2;border:1px solid #cdcdcd;color:#555}button.disabled,button[disabled],fieldset[disabled] button{cursor:default;pointer-events:none;opacity:.5}button:active,button:focus{box-shadow:inset 0 2px 1px rgba(0,0,0,.12)}.example-button-1.example-button-2{line-height:2.2rem;padding:14px 17px;font-size:1.8rem}.example-button-1.example-button-3{line-height:1.2rem;padding:5px 8px;font-size:1.1rem;border-radius:0;color:#000}.example-button-1.example-button-3:hover,.example-button-1.example-button-3.active{color:#000}.example-button-10{background:#f2f2f2;padding:7px 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.example-button-10>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-button-10:before{font-family:'icons-blank-theme';content:'\e611';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-button-10:hover:before{color:inherit}.example-button-10:active:before{color:inherit}.example-button-10:focus,.example-button-10:active{background:#e2e2e2;border:1px solid #cdcdcd;color:#333}.example-button-10:hover{background:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-10.disabled,.example-button-10[disabled],fieldset[disabled] .example-button-10{cursor:default;pointer-events:none;opacity:.5}.example-button-10:focus,.example-button-10:active{background:0;border:0}.example-button-10:hover{background:0;border:0}.example-button-10.disabled,.example-button-10[disabled],fieldset[disabled] .example-button-10{cursor:not-allowed;pointer-events:none;opacity:.5}.example-button-11{background-image:none;background:#f2f2f2;padding:7px 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;text-decoration:none}.example-button-11:before{font-family:'icons-blank-theme';content:'\e611';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-button-11:hover:before{color:inherit}.example-button-11:active:before{color:inherit}.example-button-11:focus,.example-button-11:active{background:#e2e2e2;border:1px solid #cdcdcd;color:#333}.example-button-11:hover{background:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-11.disabled,.example-button-11[disabled],fieldset[disabled] .example-button-11{cursor:default;pointer-events:none;opacity:.5}.example-button-12{background-image:none;background:#f2f2f2;padding:7px 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;text-decoration:none}.example-button-12:after{font-family:'icons-blank-theme';content:'\e611';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-button-12:hover:after{color:inherit}.example-button-12:active:after{color:inherit}.example-button-12:focus,.example-button-12:active{background:#e2e2e2;border:1px solid #cdcdcd;color:#333}.example-button-12:hover{background:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-12.disabled,.example-button-12[disabled],fieldset[disabled] .example-button-12{cursor:default;pointer-events:none;opacity:.5}.example-button-13{background-image:none;background:#f2f2f2;padding:7px 15px;width:100px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:3px;vertical-align:middle}.example-button-13:focus,.example-button-13:active{background:#e2e2e2;border:1px solid #cdcdcd;color:#333}.example-button-13:hover{background:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-13.disabled,.example-button-13[disabled],fieldset[disabled] .example-button-13{cursor:default;pointer-events:none;opacity:.5}.example-button-4{background-image:none;background:#1979c3;padding:7px 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;box-sizing:border-box;margin:3px;vertical-align:middle}.example-button-4:focus,.example-button-4:active{background:#006bb4;border:1px solid #006bb4;color:#fff}.example-button-4:hover{background:#006bb4;border:1px solid #006bb4;color:#fff}.example-button-4.disabled,.example-button-4[disabled],fieldset[disabled] .example-button-4{cursor:default;pointer-events:none;opacity:.5}.example-button-4:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.example-button-4.example-button-5{line-height:2.2rem;padding:7px 35px;font-size:1.8rem}.example-button-4.example-button-6{line-height:1.2rem;padding:5px 8px;font-size:1.1rem;color:#fff}.example-button-4.example-button-6:hover,.example-button-4.example-button-6.active{color:#fff}.example-button-7{background-image:none;background:#f2f2f2;background-color:#006bb4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #1979c3 0, #006bb4 100%);background-image:linear-gradient(to bottom, #1979c3 0, #006bb4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1979c3', endColorstr='#006bb4', GradientType=0);padding:7px 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:3px;vertical-align:middle;border-radius:3px}.example-button-7:focus,.example-button-7:active{background:#e2e2e2;background-color:#006bb4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #006bb4 0, #006bb4 100%);background-image:linear-gradient(to bottom, #006bb4 0, #006bb4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#006bb4', endColorstr='#006bb4', GradientType=0);border:1px solid #006bb4;color:#fff}.example-button-7:hover{background:#e2e2e2;background-color:#1979c3;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #006bb4 0, #1979c3 100%);background-image:linear-gradient(to bottom, #006bb4 0, #1979c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#006bb4', endColorstr='#1979c3', GradientType=0);border:1px solid #006bb4;color:#fff}.example-button-7.disabled,.example-button-7[disabled],fieldset[disabled] .example-button-7{cursor:default;pointer-events:none;opacity:.5}.example-button-7:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.example-button-8{background:0;border:0;display:inline;line-height:1.42857143;margin:0;padding:0;color:#1979c3;text-decoration:none;font-weight:400}.example-button-8:visited{color:#1979c3;text-decoration:none}.example-button-8:hover{color:#006bb4;text-decoration:underline}.example-button-8:active{color:#ff5501;text-decoration:underline}.example-button-8:hover{color:#006bb4}.example-button-8:hover,.example-button-8:active,.example-button-8:focus{background:0;border:0}.example-button-8.disabled,.example-button-8[disabled],fieldset[disabled] .example-button-8{color:#1979c3;text-decoration:underline;cursor:default;pointer-events:none;opacity:.5}.example-button-8:active{box-shadow:none}.example-button-9{text-decoration:none;background-image:none;background:#f2f2f2;padding:7px 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:0;vertical-align:middle;margin:3px;border-radius:3px;font-weight:700}.example-button-9:hover,.example-button-9:active,.example-button-9:focus{text-decoration:none}.example-button-9:focus,.example-button-9:active{background:#e2e2e2;border:1px solid #cdcdcd;color:#333}.example-button-9:hover{background:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-9.disabled,.example-button-9[disabled],fieldset[disabled] .example-button-9{cursor:default;pointer-events:none;opacity:.5}.example-button-9:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.example-button-14{background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.example-button-14:focus,.example-button-14:active{background:0;border:0}.example-button-14:hover{background:0;border:0}.example-button-14.disabled,.example-button-14[disabled],fieldset[disabled] .example-button-14{cursor:not-allowed;pointer-events:none;opacity:.5}.example-button-15{background-image:none;background:#1979c3;padding:7px 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;box-sizing:border-box;vertical-align:middle;background:#f2f2f2;color:#333;border:1px solid #cdcdcd}.example-button-15:focus,.example-button-15:active{background:#006bb4;border:1px solid #006bb4;color:#fff}.example-button-15:hover{background:#006bb4;border:1px solid #006bb4;color:#fff}.example-button-15.disabled,.example-button-15[disabled],fieldset[disabled] .example-button-15{cursor:default;pointer-events:none;opacity:.5}.example-button-15:focus,.example-button-15:active{background:#e2e2e2;color:#333;border:1px solid #cdcdcd}.example-button-15:hover{background:#e2e2e2;color:#555;border:1px solid #cdcdcd}.example-button-17{line-height:2.2rem;padding:14px 17px;font-size:1.8rem;font-size:1.4rem;line-height:1.6rem;padding:7px 15px}.example-button-18{font-size:1rem;line-height:1.2rem;padding:4px 10px}.example-dropdown-1{display:inline-block;position:relative}.example-dropdown-1:before,.example-dropdown-1:after{content:"";display:table}.example-dropdown-1:after{clear:both}.example-dropdown-1 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-1 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-1 .action.toggle:hover:after{color:inherit}.example-dropdown-1 .action.toggle:active:after{color:inherit}.example-dropdown-1 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-1 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-1 .action.toggle.active:hover:after{color:inherit}.example-dropdown-1 .action.toggle.active:active:after{color:inherit}.example-dropdown-1 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-1 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-1 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-1 ul.dropdown:before,.example-dropdown-1 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-1 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-1 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-1 ul.dropdown:before{top:-12px;left:10px}.example-dropdown-1 ul.dropdown:after{top:-14px;left:9px}.example-dropdown-1.active{overflow:visible}.example-dropdown-1.active ul.dropdown{display:block}.example-dropdown-2{display:inline-block;position:relative}.example-dropdown-2:before,.example-dropdown-2:after{content:"";display:table}.example-dropdown-2:after{clear:both}.example-dropdown-2 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-2 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-2 .action.toggle:hover:after{color:inherit}.example-dropdown-2 .action.toggle:active:after{color:inherit}.example-dropdown-2 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-2 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-2 .action.toggle.active:hover:after{color:inherit}.example-dropdown-2 .action.toggle.active:active:after{color:inherit}.example-dropdown-2 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-2 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-2 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-2 ul.dropdown:before,.example-dropdown-2 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-2 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-2 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-2 ul.dropdown:before{top:-12px;left:10px}.example-dropdown-2 ul.dropdown:after{top:-14px;left:9px}.example-dropdown-2.active{overflow:visible}.example-dropdown-2.active ul.dropdown{display:block}.example-dropdown-3{display:inline-block;position:relative}.example-dropdown-3:before,.example-dropdown-3:after{content:"";display:table}.example-dropdown-3:after{clear:both}.example-dropdown-3 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-3 .action.toggle:before{font-family:'icons-blank-theme';content:'\e61c';font-size:22px;line-height:1;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-3 .action.toggle:hover:before{color:red}.example-dropdown-3 .action.toggle:active:before{color:inherit}.example-dropdown-3 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-3 .action.toggle.active:before{font-family:'icons-blank-theme';content:'\e60f';font-size:22px;line-height:1;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-3 .action.toggle.active:hover:before{color:red}.example-dropdown-3 .action.toggle.active:active:before{color:inherit}.example-dropdown-3 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-3 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-3 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-3 ul.dropdown:before,.example-dropdown-3 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-3 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-3 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-3 ul.dropdown:before{top:-12px;left:10px}.example-dropdown-3 ul.dropdown:after{top:-14px;left:9px}.example-dropdown-3.active{overflow:visible}.example-dropdown-3.active ul.dropdown{display:block}.example-dropdown-5{display:inline-block;position:relative}.example-dropdown-5:before,.example-dropdown-5:after{content:"";display:table}.example-dropdown-5:after{clear:both}.example-dropdown-5 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-5 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:1;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-5 .action.toggle:hover:after{color:inherit}.example-dropdown-5 .action.toggle:active:after{color:inherit}.example-dropdown-5 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-5 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:1;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-5 .action.toggle.active:hover:after{color:inherit}.example-dropdown-5 .action.toggle.active:active:after{color:inherit}.example-dropdown-5 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#eef1f3;border:2px solid #ced1d4;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none}.example-dropdown-5 ul.dropdown li{margin:0;padding:10px;border-top:2px solid #e8eaed}.example-dropdown-5 ul.dropdown li:first-child{border:0}.example-dropdown-5 ul.dropdown li:hover{background:#d8e3e3;cursor:pointer}.example-dropdown-5.active{overflow:visible}.example-dropdown-5.active ul.dropdown{display:block}.example-dropdown-6{display:inline-block;position:relative}.example-dropdown-6:before,.example-dropdown-6:after{content:"";display:table}.example-dropdown-6:after{clear:both}.example-dropdown-6 .action.split{float:left;margin:0}.example-dropdown-6 .action.toggle{float:right;margin:0}.example-dropdown-6 button.action.split{border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-6 button+.action.toggle{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-6 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.example-dropdown-6 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-6 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-6 .action.toggle:hover:after{color:inherit}.example-dropdown-6 .action.toggle:active:after{color:inherit}.example-dropdown-6 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-6 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-6 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-6 .action.toggle.active:hover:after{color:inherit}.example-dropdown-6 .action.toggle.active:active:after{color:inherit}.example-dropdown-6 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-6 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-6 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-6 ul.dropdown:before,.example-dropdown-6 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-6 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-6 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-6 ul.dropdown:before{top:-12px;right:10px}.example-dropdown-6 ul.dropdown:after{top:-14px;right:9px}.example-dropdown-6.active{overflow:visible}.example-dropdown-6.active ul.dropdown{display:block}.split.example-dropdown-7{display:inline-block;position:relative}.split.example-dropdown-7:before,.split.example-dropdown-7:after{content:"";display:table}.split.example-dropdown-7:after{clear:both}.split.example-dropdown-7 .action.split{float:left;margin:0}.split.example-dropdown-7 .action.toggle{float:right;margin:0}.split.example-dropdown-7 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.split.example-dropdown-7 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.split.example-dropdown-7 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.split.example-dropdown-7 .action.toggle:hover:after{color:inherit}.split.example-dropdown-7 .action.toggle:active:after{color:inherit}.split.example-dropdown-7 .action.toggle.active{display:inline-block;text-decoration:none}.split.example-dropdown-7 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.split.example-dropdown-7 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.split.example-dropdown-7 .action.toggle.active:hover:after{color:inherit}.split.example-dropdown-7 .action.toggle.active:active:after{color:inherit}.split.example-dropdown-7 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.split.example-dropdown-7 ul.dropdown li{margin:0;padding:3px 5px}.split.example-dropdown-7 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.split.example-dropdown-7 ul.dropdown:before,.split.example-dropdown-7 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.split.example-dropdown-7 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.split.example-dropdown-7 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.split.example-dropdown-7 ul.dropdown:before{top:-12px;right:10px}.split.example-dropdown-7 ul.dropdown:after{top:-14px;right:9px}.split.example-dropdown-7.active{overflow:visible}.split.example-dropdown-7.active ul.dropdown{display:block}.example-dropdown-8{display:inline-block;position:relative}.example-dropdown-8:before,.example-dropdown-8:after{content:"";display:table}.example-dropdown-8:after{clear:both}.example-dropdown-8 .action.split{float:left;margin:0}.example-dropdown-8 .action.toggle{float:right;margin:0}.example-dropdown-8 button.action.split{border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-8 button+.action.toggle{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-8 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.example-dropdown-8 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-8 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-8 .action.toggle:hover:after{color:inherit}.example-dropdown-8 .action.toggle:active:after{color:inherit}.example-dropdown-8 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-8 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-8 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-8 .action.toggle.active:hover:after{color:inherit}.example-dropdown-8 .action.toggle.active:active:after{color:inherit}.example-dropdown-8 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-8 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-8 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-8 ul.dropdown:before,.example-dropdown-8 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-8 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-8 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-8 ul.dropdown:before{top:-12px;right:10px}.example-dropdown-8 ul.dropdown:after{top:-14px;right:9px}.example-dropdown-8.active{overflow:visible}.example-dropdown-8.active ul.dropdown{display:block}.example-dropdown-9{display:inline-block;position:relative}.example-dropdown-9 .action.split,.example-dropdown-9 .action.toggle{line-height:2.2rem;padding:14px 17px;font-size:1.8rem}.example-dropdown-9:before,.example-dropdown-9:after{content:"";display:table}.example-dropdown-9:after{clear:both}.example-dropdown-9 .action.split{float:left;margin:0}.example-dropdown-9 .action.toggle{float:right;margin:0}.example-dropdown-9 button.action.split{border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-9 button+.action.toggle{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-9 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.example-dropdown-9 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-9 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-9 .action.toggle:hover:after{color:inherit}.example-dropdown-9 .action.toggle:active:after{color:inherit}.example-dropdown-9 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-9 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-9 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-9 .action.toggle.active:hover:after{color:inherit}.example-dropdown-9 .action.toggle.active:active:after{color:inherit}.example-dropdown-9 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-9 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-9 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-9 ul.dropdown:before,.example-dropdown-9 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-9 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-9 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-9 ul.dropdown:before{top:-12px;right:10px}.example-dropdown-9 ul.dropdown:after{top:-14px;right:9px}.example-dropdown-9.active{overflow:visible}.example-dropdown-9.active ul.dropdown{display:block}.example-dropdown-10{display:inline-block;position:relative}.example-dropdown-10 .action.split,.example-dropdown-10 .action.toggle{line-height:1.2rem;padding:5px 8px;font-size:1.1rem}.example-dropdown-10:before,.example-dropdown-10:after{content:"";display:table}.example-dropdown-10:after{clear:both}.example-dropdown-10 .action.split{float:left;margin:0}.example-dropdown-10 .action.toggle{float:right;margin:0}.example-dropdown-10 button.action.split{border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-10 button+.action.toggle{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-10 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.example-dropdown-10 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-10 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-10 .action.toggle:hover:after{color:inherit}.example-dropdown-10 .action.toggle:active:after{color:inherit}.example-dropdown-10 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-10 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-10 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-10 .action.toggle.active:hover:after{color:inherit}.example-dropdown-10 .action.toggle.active:active:after{color:inherit}.example-dropdown-10 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-10 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-10 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-10 ul.dropdown:before,.example-dropdown-10 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-10 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-10 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-10 ul.dropdown:before{top:-12px;right:10px}.example-dropdown-10 ul.dropdown:after{top:-14px;right:9px}.example-dropdown-10.active{overflow:visible}.example-dropdown-10.active ul.dropdown{display:block}.example-dropdown-11{display:inline-block;position:relative}.example-dropdown-11:before,.example-dropdown-11:after{content:"";display:table}.example-dropdown-11:after{clear:both}.example-dropdown-11 .action.split{float:right;margin:0}.example-dropdown-11 .action.toggle{float:left;margin:0}.example-dropdown-11 button.action.split{border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-11 button+.action.toggle{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-11 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.example-dropdown-11 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-11 .action.toggle:before{font-family:'icons-blank-theme';content:'\e61c';font-size:22px;line-height:22px;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-11 .action.toggle:hover:before{color:red}.example-dropdown-11 .action.toggle:active:before{color:inherit}.example-dropdown-11 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-11 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-11 .action.toggle.active:before{font-family:'icons-blank-theme';content:'\e60f';font-size:22px;line-height:22px;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-11 .action.toggle.active:hover:before{color:red}.example-dropdown-11 .action.toggle.active:active:before{color:inherit}.example-dropdown-11 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-11 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-11 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-11 ul.dropdown:before,.example-dropdown-11 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-11 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-11 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-11 ul.dropdown:before{top:-12px;right:10px}.example-dropdown-11 ul.dropdown:after{top:-14px;right:9px}.example-dropdown-11.active{overflow:visible}.example-dropdown-11.active ul.dropdown{display:block}.example-dropdown-12{display:inline-block;position:relative}.example-dropdown-12:before,.example-dropdown-12:after{content:"";display:table}.example-dropdown-12:after{clear:both}.example-dropdown-12 .action.split{float:left;margin:0}.example-dropdown-12 .action.toggle{float:right;margin:0}.example-dropdown-12 button.action.split{border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-12 button+.action.toggle{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-12 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.example-dropdown-12 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-12 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-12 .action.toggle:hover:after{color:inherit}.example-dropdown-12 .action.toggle:active:after{color:inherit}.example-dropdown-12 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-12 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-12 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-12 .action.toggle.active:hover:after{color:inherit}.example-dropdown-12 .action.toggle.active:active:after{color:inherit}.example-dropdown-12 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#eef1f3;border:2px solid #ced1d4;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none}.example-dropdown-12 ul.dropdown li{margin:0;padding:10px;border-top:2px solid #e8eaed}.example-dropdown-12 ul.dropdown li:first-child{border:0}.example-dropdown-12 ul.dropdown li:hover{background:#d8e3e3;cursor:pointer}.example-dropdown-12.active{overflow:visible}.example-dropdown-12.active ul.dropdown{display:block}.example-form-1 .example-form-1-fieldset{padding:0;margin:0 0 40px;border:0;letter-spacing:-.31em}.example-form-1 .example-form-1-fieldset>*{letter-spacing:normal}.example-form-1 .example-form-1-fieldset>.legend{margin:0 0 25px;padding:0;font-size:2rem;line-height:1.2;box-sizing:border-box;float:left}.example-form-1 .example-form-1-fieldset>.legend+br{display:block;visibility:hidden;height:0;overflow:hidden;clear:both}.example-form-1 .example-form-1-fieldset:after{content:attr(data-hasrequired);display:block;font-size:1.2rem;color:#e02b27;margin:10px 0 0;letter-spacing:normal;word-spacing:normal}.example-form-1 .example-form-1-fieldset>.field{margin:0 0 20px}.example-form-1 .example-form-1-fieldset>.field>.label{display:inline-block;margin:0 0 5px}.example-form-1 .example-form-1-fieldset>.field:last-child{margin-bottom:0}.example-form-1 .example-form-1-fieldset>.field>.label{font-weight:700}.example-form-1 .example-form-1-fieldset>.field>.label+br{display:none}.example-form-1 .example-form-1-fieldset>.field .choice input{vertical-align:top}.example-form-1 .example-form-1-fieldset>.field .fields.group:before,.example-form-1 .example-form-1-fieldset>.field .fields.group:after{content:"";display:table}.example-form-1 .example-form-1-fieldset>.field .fields.group:after{clear:both}.example-form-1 .example-form-1-fieldset>.field .fields.group .field{box-sizing:border-box;float:left}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-2 .field{width:50%!important}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-3 .field{width:33.3%!important}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-4 .field{width:25%!important}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-5 .field{width:20%!important}.example-form-1 .example-form-1-fieldset>.field .addon{display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;padding:0;width:100%}.example-form-1 .example-form-1-fieldset>.field .addon textarea,.example-form-1 .example-form-1-fieldset>.field .addon select,.example-form-1 .example-form-1-fieldset>.field .addon input{-ms-flex-order:2;-webkit-order:2;order:2;-webkit-flex-basis:100%;flex-basis:100%;box-shadow:none;display:inline-block;margin:0;width:auto}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore,.example-form-1 .example-form-1-fieldset>.field .addon .addafter{-ms-flex-order:3;-webkit-order:3;order:3;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 9px;font-size:14px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.428571429;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore:disabled,.example-form-1 .example-form-1-fieldset>.field .addon .addafter:disabled{opacity:.5}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore::-moz-placeholder,.example-form-1 .example-form-1-fieldset>.field .addon .addafter::-moz-placeholder{color:#c2c2c2}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore::-webkit-input-placeholder,.example-form-1 .example-form-1-fieldset>.field .addon .addafter::-webkit-input-placeholder{color:#c2c2c2}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore:-ms-input-placeholder,.example-form-1 .example-form-1-fieldset>.field .addon .addafter:-ms-input-placeholder{color:#c2c2c2}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore{float:left;-ms-flex-order:1;-webkit-order:1;order:1}.example-form-1 .example-form-1-fieldset>.field .additional{margin-top:10px}.example-form-1 .example-form-1-fieldset>.field.required>.label:after{content:'*';font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.example-form-1 .example-form-1-fieldset>.field .note{font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.example-form-1 .example-form-1-fieldset>.field .note:before{font-family:'icons-blank-theme';content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-form-2 .example-form-2-fieldset{padding:0;margin:0 0 40px;border:0;letter-spacing:-.31em}.example-form-2 .example-form-2-fieldset>*{letter-spacing:normal}.example-form-2 .example-form-2-fieldset>.legend{margin:0 0 25px;padding:0;font-size:2rem;line-height:1.2;box-sizing:border-box;float:left}.example-form-2 .example-form-2-fieldset>.legend+br{display:block;visibility:hidden;height:0;overflow:hidden;clear:both}.example-form-2 .example-form-2-fieldset>.field{margin:0 0 20px;box-sizing:border-box;display:inline-block;padding:0 12px 0 0;width:50%;vertical-align:top}.example-form-2 .example-form-2-fieldset>.field>.label{display:inline-block;margin:0 0 5px}.example-form-2 .example-form-2-fieldset>.field:last-child{margin-bottom:0}.example-form-2 .example-form-2-fieldset>.field+.fieldset{clear:both}.example-form-2 .example-form-2-fieldset>.field>.label{font-weight:700}.example-form-2 .example-form-2-fieldset>.field>.label+br{display:none}.example-form-2 .example-form-2-fieldset>.field .choice input{vertical-align:top}.example-form-2 .example-form-2-fieldset>.field .fields.group:before,.example-form-2 .example-form-2-fieldset>.field .fields.group:after{content:"";display:table}.example-form-2 .example-form-2-fieldset>.field .fields.group:after{clear:both}.example-form-2 .example-form-2-fieldset>.field .fields.group .field{box-sizing:border-box;float:left}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-2 .field{width:50%!important}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-3 .field{width:33.3%!important}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-4 .field{width:25%!important}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-5 .field{width:20%!important}.example-form-2 .example-form-2-fieldset>.field .addon{display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;padding:0;width:100%}.example-form-2 .example-form-2-fieldset>.field .addon textarea,.example-form-2 .example-form-2-fieldset>.field .addon select,.example-form-2 .example-form-2-fieldset>.field .addon input{-ms-flex-order:2;-webkit-order:2;order:2;-webkit-flex-basis:100%;flex-basis:100%;box-shadow:none;display:inline-block;margin:0;width:auto}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore,.example-form-2 .example-form-2-fieldset>.field .addon .addafter{-ms-flex-order:3;-webkit-order:3;order:3;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 9px;font-size:14px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.428571429;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore:disabled,.example-form-2 .example-form-2-fieldset>.field .addon .addafter:disabled{opacity:.5}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore::-moz-placeholder,.example-form-2 .example-form-2-fieldset>.field .addon .addafter::-moz-placeholder{color:#c2c2c2}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore::-webkit-input-placeholder,.example-form-2 .example-form-2-fieldset>.field .addon .addafter::-webkit-input-placeholder{color:#c2c2c2}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore:-ms-input-placeholder,.example-form-2 .example-form-2-fieldset>.field .addon .addafter:-ms-input-placeholder{color:#c2c2c2}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore{float:left;-ms-flex-order:1;-webkit-order:1;order:1}.example-form-2 .example-form-2-fieldset>.field .additional{margin-top:10px}.example-form-2 .example-form-2-fieldset>.field.required>.label:after{content:'*';font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.example-form-2 .example-form-2-fieldset>.field .note{font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.example-form-2 .example-form-2-fieldset>.field .note:before{font-family:'icons-blank-theme';content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}input[type="text"],input[type="password"],input[type="url"],input[type="tel"],input[type="search"],input[type="number"],input[type="datetime"],input[type="email"]{box-sizing:border-box;background:#fff;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 9px;font-size:14px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.428571429;background-clip:padding-box;vertical-align:baseline;margin-bottom:20px}input[type="text"]:disabled,input[type="password"]:disabled,input[type="url"]:disabled,input[type="tel"]:disabled,input[type="search"]:disabled,input[type="number"]:disabled,input[type="datetime"]:disabled,input[type="email"]:disabled{opacity:.5}input[type="text"]::-moz-placeholder,input[type="password"]::-moz-placeholder,input[type="url"]::-moz-placeholder,input[type="tel"]::-moz-placeholder,input[type="search"]::-moz-placeholder,input[type="number"]::-moz-placeholder,input[type="datetime"]::-moz-placeholder,input[type="email"]::-moz-placeholder{color:#c2c2c2}input[type="text"]::-webkit-input-placeholder,input[type="password"]::-webkit-input-placeholder,input[type="url"]::-webkit-input-placeholder,input[type="tel"]::-webkit-input-placeholder,input[type="search"]::-webkit-input-placeholder,input[type="number"]::-webkit-input-placeholder,input[type="datetime"]::-webkit-input-placeholder,input[type="email"]::-webkit-input-placeholder{color:#c2c2c2}input[type="text"]:-ms-input-placeholder,input[type="password"]:-ms-input-placeholder,input[type="url"]:-ms-input-placeholder,input[type="tel"]:-ms-input-placeholder,input[type="search"]:-ms-input-placeholder,input[type="number"]:-ms-input-placeholder,input[type="datetime"]:-ms-input-placeholder,input[type="email"]:-ms-input-placeholder{color:#c2c2c2}select{box-sizing:border-box;background:#fff;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:5px 10px 4px;font-size:14px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.428571429;background-clip:padding-box;vertical-align:baseline;margin-bottom:20px}select:disabled{opacity:.5}select[multiple="multiple"]{height:auto;margin-bottom:20px}textarea{box-sizing:border-box;background:#fff;border:1px solid #c2c2c2;border-radius:1px;height:auto;width:100%;padding:10px;margin:0;font-size:14px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.428571429;background-clip:padding-box;vertical-align:baseline;resize:vertical}textarea:disabled{opacity:.5}textarea::-moz-placeholder{color:#c2c2c2}textarea::-webkit-input-placeholder{color:#c2c2c2}textarea:-ms-input-placeholder{color:#c2c2c2}input[type="checkbox"]{margin:2px 5px 0 0}input[type="checkbox"]:disabled{opacity:.5}input[type="radio"]{margin:2px 5px 0 0}input[type="radio"]:disabled{opacity:.5}input.text-example-1,select.select-example-1,textarea.textarea-example-1{background:#fdf0d5;border-color:#fc0;color:#b30000}input.text-example-1:focus,select.select-example-1:focus,textarea.textarea-example-1:focus{border-color:#cff;color:#060}input.text-example-1:disabled,select.select-example-1:disabled,textarea.textarea-example-1:disabled{color:#fcc}input.text-example-1::-moz-placeholder,textarea.textarea-example-1::-moz-placeholder{color:#ccc}input.text-example-1::-webkit-input-placeholder,textarea.textarea-example-1::-webkit-input-placeholder{color:#ccc}input.text-example-1:-ms-input-placeholder,textarea.textarea-example-1:-ms-input-placeholder{color:#ccc}.number-example{-moz-appearance:textfield}.number-example::-webkit-inner-spin-button,.number-example::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.search-example{-webkit-appearance:none}.search-example::-webkit-search-cancel-button,.search-example::-webkit-search-decoration,.search-example::-webkit-search-results-button,.search-example::-webkit-search-results-decoration{-webkit-appearance:none}input,textarea,select{font-size:1.2rem;color:#e02b27}.example-icon-1{display:inline-block}.example-icon-1:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.example-icon-2{display:inline-block}.example-icon-2:after{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat -26px 0}.example-icon-3{display:inline-block}.example-icon-3>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-icon-3:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat -156px -52px}.example-icon-4{display:inline-block;text-decoration:none}.example-icon-4:before{font-family:'icons-blank-theme';content:'\e606';font-size:24px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-5{display:inline-block;text-decoration:none}.example-icon-5:after{font-family:'icons-blank-theme';content:'\e605';font-size:24px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-6{display:inline-block;text-decoration:none}.example-icon-6>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-icon-6:before{font-family:'icons-blank-theme';content:'\e61b';font-size:24px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-7{display:inline-block}.example-icon-7:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.example-icon-8{display:inline-block}.example-icon-8:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.example-icon-8:before{background-position:-182px 0}.example-icon-9{display:inline-block}.example-icon-9:after{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.example-icon-9:after{background-position:-52px -26px}.example-icon-10{display:inline-block}.example-icon-10:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.example-icon-10:before{background-position:-104px 0}.example-icon-11{display:inline-block}.example-icon-11:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.example-icon-11:before{width:30px;height:30px}.example-icon-11:after{width:30px;height:30px}.example-icon-11:before{background-color:#f1f1f1}.example-icon-12{display:inline-block;text-decoration:none}.example-icon-12:before{font-family:'icons-blank-theme';content:'\e612';font-size:28px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-13{display:inline-block;text-decoration:none}.example-icon-13:before{font-family:'icons-blank-theme';content:'\e612';font-size:inherit;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-13:before{font-size:26px;line-height:inherit}.example-icon-14{display:inline-block;text-decoration:none}.example-icon-14:before{font-family:'icons-blank-theme';content:'\e61d';font-size:26px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-14>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.icons-image-list{list-style:none;padding:0}.icons-image-list li{float:left;width:33%}.icons-image-list li>span{display:inline-block}.icons-image-list li>span:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.icons-image-list li .icon-search:before{background-position:0 0}.icons-image-list li .icon-cart:before{background-position:-26px 0}.icons-image-list li .icon-arrow-down:before{background-position:-52px 0}.icons-image-list li .icon-arrow-up:before{background-position:-78px 0}.icons-image-list li .icon-grid:before{background-position:-104px 0}.icons-image-list li .icon-list:before{background-position:-130px 0}.icons-image-list li .icon-remove:before{background-position:-156px 0}.icons-image-list li .icon-star:before{background-position:-182px 0}.icons-image-list li .icon-pointer-down:before{background-position:-208px 0}.icons-image-list li .icon-pointer-up:before{background-position:-234px 0}.icons-image-list li .icon-pointer-left:before{background-position:-260px 0}.icons-image-list li .icon-pointer-right:before{background-position:-286px 0}.icons-image-list li .icon-compare-empty:before{background-position:0 -26px}.icons-image-list li .icon-compare-full:before{background-position:-26px -26px}.icons-image-list li .icon-wishlist-empty:before{background-position:-52px -26px}.icons-image-list li .icon-wishlist-full:before{background-position:-78px -26px}.icons-image-list li .icon-update:before{background-position:-104px -26px}.icons-image-list li .icon-collapse:before{background-position:-130px -26px}.icons-image-list li .icon-expand:before{background-position:-156px -26px}.icons-image-list li .icon-menu:before{background-position:-182px -26px}.icons-image-list li .icon-prev:before{background-position:-208px -26px}.icons-image-list li .icon-next:before{background-position:-234px -26px}.icons-image-list li .icon-settings:before{background-position:-260px -26px}.icons-image-list li .icon-info:before{background-position:-286px -26px}.icons-image-list li .icon-checkmark:before{background-position:0 -52px}.icons-image-list li .icon-calendar:before{background-position:-26px -52px}.icons-image-list li .icon-comment:before{background-position:-52px -52px}.icons-image-list li .icon-comment-reflected:before{background-position:-78px -52px}.icons-image-list li .icon-envelope:before{background-position:-104px -52px}.icons-image-list li .icon-warning:before{background-position:-130px -52px}.icons-image-list li .icon-trash:before{background-position:-156px -52px}.icons-image-list li .icon-flag:before{background-position:-182px -52px}.icons-image-list li .icon-location:before{background-position:-208px -52px}.icons-image-list li .icon-up:before{background-position:-234px -52px}.icons-image-list li .icon-down:before{background-position:-260px -52px}.icons-font-list{list-style:none;padding:0}.icons-font-list li{float:left;width:25%;margin-bottom:35px;text-align:center}.icons-font-list li>span{display:inline-block;text-decoration:none}.icons-font-list li>span:before{font-family:'icons-blank-theme';font-size:34px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.icons-font-list li>span:before{content:attr(data-icon);margin:0 auto;display:block}.loader{position:fixed;top:0;right:0;bottom:0;left:0;background-color:rgba(255,255,255,.5);z-index:9999}.loader:before{border-radius:5px;background:transparent url('/pub/static/frontend/Magento/blank/en_US/images/loader-2.gif') no-repeat 50% 50%;box-sizing:border-box;content:'';position:absolute;top:0;right:0;left:0;bottom:0;margin:auto;width:160px;height:160px}.loading{position:relative}.loading:before{content:'';position:absolute;left:0;top:0;right:0;bottom:0;background:rgba(255,255,255,.5) url('/pub/static/frontend/Magento/blank/en_US/images/loader-2.gif') no-repeat 50% 50%}.example-message-info{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fdf0d5;color:#6f4400}.example-message-info a{color:#1979c3}.example-message-info a:hover{color:#006bb4}.example-message-info a:active{color:#006bb4}.example-message-warning{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fdf0d5;color:#6f4400}.example-message-warning a{color:#1979c3}.example-message-warning a:hover{color:#006bb4}.example-message-warning a:active{color:#006bb4}.example-message-error{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fae5e5;color:#e02b27}.example-message-error a{color:#1979c3}.example-message-error a:hover{color:#006bb4}.example-message-error a:active{color:#006bb4}.example-message-success{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#e5efe5;color:#006400}.example-message-success a{color:#1979c3}.example-message-success a:hover{color:#006bb4}.example-message-success a:active{color:#006bb4}.example-message-notice{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fdf0d5;color:#6f4400}.example-message-notice a{color:#1979c3}.example-message-notice a:hover{color:#006bb4}.example-message-notice a:active{color:#006bb4}.example-message-1{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fdf0d5;color:#6f4400;position:relative;padding-left:40px}.example-message-1 a{color:#1979c3}.example-message-1 a:hover{color:#006bb4}.example-message-1 a:active{color:#006bb4}.example-message-1>:first-child:before{font-family:'icons-blank-theme';content:'\e602';font-size:28px;line-height:28px;color:#c07600;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:18px;left:0;text-align:center;width:40px}.example-message-2{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fae5e5;color:#e02b27;position:relative;padding-right:40px}.example-message-2 a{color:#1979c3}.example-message-2 a:hover{color:#006bb4}.example-message-2 a:active{color:#006bb4}.example-message-2:before{content:'';position:absolute;width:30px;text-align:center;top:0;height:100%;display:block;padding:0;background:#b30000}.example-message-2>:first-child:before{content:'';position:absolute;overflow:hidden;top:50%;margin-top:-5px}.example-message-2>:first-child:after{font-family:'icons-blank-theme';content:'\e602';font-size:28px;line-height:28px;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:18px;left:0;text-align:center;width:30px}.example-message-2:before{right:0}.example-message-2>:first-child:before{border:5px solid transparent;height:0;width:0;border-right-color:#b30000;right:30px}.example-message-2>:first-child:after{right:0}.example-message-3{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#e5efe5;color:#006400;position:relative;padding-left:40px}.example-message-3 a{color:#1979c3}.example-message-3 a:hover{color:#006bb4}.example-message-3 a:active{color:#006bb4}.example-message-3:before{content:'';position:absolute;width:30px;text-align:center;top:0;height:100%;display:block;padding:0;background:#006400}.example-message-3>:first-child:before{content:'';position:absolute;overflow:hidden;top:50%;margin-top:-5px}.example-message-3>:first-child:after{font-family:'icons-blank-theme';content:'\e610';font-size:28px;line-height:28px;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:18px;left:0;text-align:center;width:30px}.example-message-3:before{left:0}.example-message-3>:first-child:before{border:5px solid transparent;height:0;width:0;border-left-color:#006400;left:30px}.example-message-3>:first-child:after{left:0}.example-message-4{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fc0;border-color:#ffa500;color:#000;position:relative;padding-left:40px;border-width:4px;border-radius:10px}.example-message-4 a{color:#00f}.example-message-4 a:hover{color:#009}.example-message-4 a:active{color:#006}.example-message-4:before{content:'';position:absolute;width:30px;text-align:center;top:0;height:100%;display:block;padding:0;background:#green}.example-message-4>:first-child:before{content:'';position:absolute;overflow:hidden;top:50%;margin-top:-5px}.example-message-4>:first-child:after{font-family:'icons-blank-theme';content:'\e606';font-size:28px;line-height:28px;color:#000;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:15px;left:0;text-align:center;width:30px}.example-message-4:before{left:0}.example-message-4>:first-child:before{border:5px solid transparent;height:0;width:0;border-left-color:#green;left:30px}.example-message-4>:first-child:after{left:0}header.header{background-color:rgba(255,0,0,.2)}.column.main{background-color:rgba(255,255,0,.2)}.column.left{background-color:rgba(0,255,255,.2)}.column.right{background-color:rgba(0,0,255,.2)}footer.footer{background-color:rgba(0,0,0,.2)}.columns{box-sizing:border-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.columns:after{content:" ";display:block;height:0;clear:both;overflow:hidden;visibility:hidden}.columns>.column{padding-bottom:40px}@media (min-width: 600px){.page-layout-1column .column.main{ width:100%;-ms-flex-order:2;-webkit-order:2;order:2}.page-layout-3columns .column.main{width:66.66666667%;display:inline-block;-ms-flex-order:2;-webkit-order:2;order:2}.page-layout-2columns-left .column.main{width:83.33333333%;float:right;-ms-flex-order:2;-webkit-order:2;order:2}.page-layout-2columns-right .column.main{width:83.33333333%;float:left;-ms-flex-order:1;-webkit-order:1;order:1}.page-layout-3columns .column.left{width:16.66666667%;float:left;-ms-flex-order:1;-webkit-order:1;order:1}.page-layout-2columns-left .column.left{width:16.66666667%;float:left;-ms-flex-order:1;-webkit-order:1;order:1}.page-layout-2columns-right .column.left{width:16.66666667%;float:left;-ms-flex-order:1;-webkit-order:1;order:1}.page-layout-3columns .column.right{width:16.66666667%;float:right;-ms-flex-order:3;-webkit-order:3;order:3}.page-layout-2columns-left .column.right{width:16.66666667%;float:right;-ms-flex-order:2;-webkit-order:2;order:2}.page-layout-2columns-right .column.right{width:16.66666667%;float:right;-ms-flex-order:2;-webkit-order:2;order:2}}.layout-example-3 .column.main{width:60%;display:inline-block;-ms-flex-order:2;-webkit-order:2;order:2}.layout-example-3 .column.left{width:20%;float:left;-ms-flex-order:1;-webkit-order:1;order:1}.layout-example-3 .column.right{width:20%;float:right;-ms-flex-order:3;-webkit-order:3;order:3}.layout-example-3-1 .column.main{width:60%;float:left;-ms-flex-order:1;-webkit-order:1;order:1}.layout-example-3-1 .column.left{width:20%;display:inline-block;-ms-flex-order:2;-webkit-order:2;order:2}.layout-example-3-1 .column.right{width:20%;float:right;-ms-flex-order:3;-webkit-order:3;order:3}.pages>.label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.pages .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style:none none;display:inline-block;font-weight:700}.pages .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 2px 0 0;display:inline-block}.pages .item .label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.pages a.page{color:#1979c3;display:inline-block;padding:0 4px;text-decoration:none}.pages a.page:visited{color:#1979c3}.pages a.page:hover{color:#006bb4;text-decoration:none}.pages a.page:active{color:#ff5501}.pages strong.page{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;color:#333;display:inline-block;font-weight:700;padding:0 4px}.pages .action{border:1px solid #d1d1d1;color:#7d7d7d;display:inline-block;padding:0;text-decoration:none}.pages .action:visited{color:#7d7d7d}.pages .action:hover{color:#7d7d7d;text-decoration:none}.pages .action:active{color:#7d7d7d}.pages .action.next{display:inline-block;text-decoration:none}.pages .action.next:visited:before{color:#7d7d7d}.pages .action.next:active:before{color:#7d7d7d}.pages .action.next>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.pages .action.next:before{font-family:'icons-blank-theme';content:'\e608';font-size:46px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0 0 0 -6px}.pages .action.next:hover:before{color:#7d7d7d}.pages .action.next:active:before{color:#7d7d7d}.pages .action.previous{display:inline-block;text-decoration:none}.pages .action.previous:visited:before{color:#7d7d7d}.pages .action.previous:active:before{color:#7d7d7d}.pages .action.previous>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.pages .action.previous:before{font-family:'icons-blank-theme';content:'\e617';font-size:46px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0 0 0 -6px}.pages .action.previous:hover:before{color:#7d7d7d}.pages .action.previous:active:before{color:#7d7d7d}.example-pages-1>.label{display:inline-block;font-weight:700;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal}.example-pages-1>.label:after{content:':'}.example-pages-1 .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style:none none;display:inline-block;font-weight:700}.example-pages-1 .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 3px;display:inline-block}.example-pages-1 .item .label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-1 a.page{background-color:#ccc;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #f4f4f4 0, #ccc 100%);background-image:linear-gradient(to bottom, #f4f4f4 0, #ccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f4f4', endColorstr='#cccccc', GradientType=0);border:1px solid #b3b3b3;color:#333;display:inline-block;padding:0 4px;text-decoration:none}.example-pages-1 a.page:visited{background-color:false;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,false 0,false 100%);background-image:linear-gradient(to bottom,false 0,false 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='false', endColorstr='false', GradientType=0);color:#1979c3}.example-pages-1 a.page:hover{background-color:#f4f4f4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #ccc 0, #f4f4f4 100%);background-image:linear-gradient(to bottom, #ccc 0, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#f4f4f4', GradientType=0);border:1px solid #999;color:#333;text-decoration:none}.example-pages-1 a.page:active{background-color:false;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,false 0,false 100%);background-image:linear-gradient(to bottom,false 0,false 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='false', endColorstr='false', GradientType=0);color:#ff5501}.example-pages-1 strong.page{background:#1979c3;border:1px solid #135d96;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;color:#f7b32e;display:inline-block;font-weight:700;padding:0 4px}.example-pages-1 .action{border:1px solid #d1d1d1;color:#7d7d7d;display:inline-block;padding:0;text-decoration:none}.example-pages-1 .action:visited{color:#7d7d7d}.example-pages-1 .action:hover{color:#ff5501;text-decoration:none}.example-pages-1 .action:active{color:#7d7d7d}.example-pages-1 .action.next{display:inline-block;text-decoration:none}.example-pages-1 .action.next:visited:before{color:#7d7d7d}.example-pages-1 .action.next:active:before{color:#7d7d7d}.example-pages-1 .action.next>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-1 .action.next:before{font-family:'icons-blank-theme';content:'\e608';font-size:30px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0 0 0 -6px}.example-pages-1 .action.next:hover:before{color:#ff5501}.example-pages-1 .action.next:active:before{color:#7d7d7d}.example-pages-1 .action.previous{display:inline-block;text-decoration:none}.example-pages-1 .action.previous:visited:before{color:#7d7d7d}.example-pages-1 .action.previous:active:before{color:#7d7d7d}.example-pages-1 .action.previous>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-1 .action.previous:before{font-family:'icons-blank-theme';content:'\e617';font-size:30px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0 0 0 -6px}.example-pages-1 .action.previous:hover:before{color:#ff5501}.example-pages-1 .action.previous:active:before{color:#7d7d7d}.example-pages-2>.label{display:inline-block;font-weight:700;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal}.example-pages-2>.label:after{content:':'}.example-pages-2 .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style:none none;display:inline-block;font-weight:700}.example-pages-2 .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 2px 0 0;display:inline-block}.example-pages-2 .item .label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-2 a.page{color:#1979c3;display:inline-block;padding:0 4px;text-decoration:none}.example-pages-2 a.page:visited{color:#1979c3}.example-pages-2 a.page:hover{color:#006bb4;text-decoration:none}.example-pages-2 a.page:active{color:#ff5501}.example-pages-2 strong.page{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;color:#333;display:inline-block;font-weight:700;padding:0 4px}.example-pages-2 .action{border:1px solid #d1d1d1;color:#7d7d7d;display:inline-block;padding:0;text-decoration:none}.example-pages-2 .action:visited{color:#7d7d7d}.example-pages-2 .action:hover{color:#7d7d7d;text-decoration:none}.example-pages-2 .action:active{color:#7d7d7d}.example-pages-3>.label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-3 .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style:none none;display:inline-block;font-weight:700}.example-pages-3 .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 2px 0 0;display:inline-block}.example-pages-3 .item .label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-3 a.page{background:#1979c3;color:#fff;display:inline-block;padding:0 4px;text-decoration:none}.example-pages-3 a.page:visited{background:#1979c3;color:#fff}.example-pages-3 a.page:hover{background:#006bb4;color:#fff;text-decoration:none}.example-pages-3 a.page:active{background:#ff5501;color:#fff}.example-pages-3 strong.page{background:#1979c3;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;color:#fff;display:inline-block;font-weight:700;padding:0 4px}.example-pages-3 .action{background:#1979c3;border:1px solid #d1d1d1;color:#fff;display:inline-block;padding:0;text-decoration:none}.example-pages-3 .action:visited{background:#1979c3;color:#7d7d7d}.example-pages-3 .action:hover{background:#006bb4;color:#fff;text-decoration:none}.example-pages-3 .action:active{background:#ff5501;color:#fff}.example-pages-3 .action.next{display:inline-block;text-decoration:none}.example-pages-3 .action.next:visited:before{color:#7d7d7d}.example-pages-3 .action.next:active:before{color:#fff}.example-pages-3 .action.next>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-3 .action.next:before{font-family:'icons-blank-theme';content:'\e608';font-size:46px;line-height:inherit;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0 0 0 -6px}.example-pages-3 .action.next:hover:before{color:#fff}.example-pages-3 .action.next:active:before{color:#fff}.example-pages-3 .action.previous{display:inline-block;text-decoration:none}.example-pages-3 .action.previous:visited:before{color:#7d7d7d}.example-pages-3 .action.previous:active:before{color:#fff}.example-pages-3 .action.previous>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-3 .action.previous:before{font-family:'icons-blank-theme';content:'\e617';font-size:46px;line-height:inherit;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0 0 0 -6px}.example-pages-3 .action.previous:hover:before{color:#fff}.example-pages-3 .action.previous:active:before{color:#fff}.window.popup.popup-example{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example .popup-actions .action.close:focus,.window.popup.popup-example .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example .popup-actions .action.close.disabled,.window.popup.popup-example .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example.active{opacity:1}.window.popup.popup-example-1{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-1 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-1 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-1 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-1 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-1 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-1 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-1 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-1 .popup-actions .action.close:focus,.window.popup.popup-example-1 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-1 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-1 .popup-actions .action.close.disabled,.window.popup.popup-example-1 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-1 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-1.active{opacity:1}.window.overlay{transition:opacity .15s linear;position:fixed;top:0;right:0;bottom:0;left:0;background:#000;z-index:1000;opacity:0}.window.overlay.active{opacity:.5;filter:alpha(opacity=50)}.window.popup.popup-example-2{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;overflow-y:auto;max-height:200px;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-2 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-2 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-2 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-2 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-2 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-2 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-2 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-2 .popup-actions .action.close:focus,.window.popup.popup-example-2 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-2 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-2 .popup-actions .action.close.disabled,.window.popup.popup-example-2 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-2 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-2.active{opacity:1}.window.popup.popup-example-3{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-3 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-3 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-3 .popup-content{overflow-y:auto;max-height:200px}.window.popup.popup-example-3 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-3 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-3 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-3 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-3 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-3 .popup-actions .action.close:focus,.window.popup.popup-example-3 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-3 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-3 .popup-actions .action.close.disabled,.window.popup.popup-example-3 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-3 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-3.active{opacity:1}.window.popup.popup-example-4{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-4 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-4 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-4 .popup-content{margin:0 0 20px}.window.popup.popup-example-4 .popup-footer{margin:0 20px}.window.popup.popup-example-4 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-4 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-4 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-4 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-4 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-4 .popup-actions .action.close:focus,.window.popup.popup-example-4 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-4 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-4 .popup-actions .action.close.disabled,.window.popup.popup-example-4 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-4 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-4.active{opacity:1}.window.popup.popup-example-5{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-5 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-5 .popup-header .title{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:0rem;margin-bottom:2rem}.window.popup.popup-example-5 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-5 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-5 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-5 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-5 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-5 .popup-actions .action.close:focus,.window.popup.popup-example-5 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-5 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-5 .popup-actions .action.close.disabled,.window.popup.popup-example-5 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-5 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-5.active{opacity:1}.window.popup.popup-example-6{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-6 .popup-footer .actions.toolbar{text-align:left}.window.popup.popup-example-6 .popup-footer .actions.toolbar:before,.window.popup.popup-example-6 .popup-footer .actions.toolbar:after{content:"";display:table}.window.popup.popup-example-6 .popup-footer .actions.toolbar:after{clear:both}.window.popup.popup-example-6 .popup-footer .actions.toolbar .secondary{float:left}.window.popup.popup-example-6 .popup-footer .actions.toolbar .primary,.window.popup.popup-example-6 .popup-footer .actions.toolbar .secondary{display:inline-block}.window.popup.popup-example-6 .popup-footer .actions.toolbar .primary a.action,.window.popup.popup-example-6 .popup-footer .actions.toolbar .secondary a.action{display:inline-block}.window.popup.popup-example-6 .popup-footer .actions.toolbar .primary .action{margin:0 5px 0 0}.window.popup.popup-example-6 .popup-footer .actions.toolbar .secondary a.action{margin-top:6px}.window.popup.popup-example-6 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-6 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-6 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-6 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-6 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-6 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-6 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-6 .popup-actions .action.close:focus,.window.popup.popup-example-6 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-6 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-6 .popup-actions .action.close.disabled,.window.popup.popup-example-6 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-6 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-6.active{opacity:1}.window.popup.popup-example-7{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-7 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-7 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-7 .popup-actions .action.close{position:absolute;top:10px;right:10px}.window.popup.popup-example-7.active{opacity:1}.window.popup.popup-example-8{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-8 .popup-header{margin:0 0 25px;padding-right:30px}.window.popup.popup-example-8 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-8 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-8 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e613';font-size:30px;line-height:22px;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center;margin:0}.window.popup.popup-example-8 .popup-actions .action.close:hover:before{color:#090}.window.popup.popup-example-8 .popup-actions .action.close:active:before{color:#00f}.window.popup.popup-example-8 .popup-actions .action.close:focus,.window.popup.popup-example-8 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-8 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-8 .popup-actions .action.close.disabled,.window.popup.popup-example-8 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-8 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-8.active{opacity:1}.window.popup.popup-example-9{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-9 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-9 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-9 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-9 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-9 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-9 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-9 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-9 .popup-actions .action.close:focus,.window.popup.popup-example-9 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-9 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-9 .popup-actions .action.close.disabled,.window.popup.popup-example-9 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-9 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-9.active{opacity:1}.window.overlay.example-overlay-1.active{transition:opacity .15s linear;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f5293;z-index:1000;opacity:0}.window.overlay.example-overlay-1.active.active{opacity:.8;filter:alpha(opacity=80)}.example-ratings-1{overflow:hidden}.example-ratings-1:before{color:#c7c7c7;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.example-ratings-1 input[type="radio"]{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-1 input[type="radio"]:focus+label:before,.example-ratings-1 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-1 label{position:absolute;display:block;cursor:pointer}.example-ratings-1 label span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-1 label:before{color:#ff5601;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;opacity:0}.example-ratings-1 label:hover:before{opacity:1}.example-ratings-1 label:hover~label:before{opacity:0}.example-ratings-1 .rating-5{z-index:2}.example-ratings-1 .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-1 .rating-4{z-index:3}.example-ratings-1 .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.example-ratings-1 .rating-3{z-index:4}.example-ratings-1 .rating-3:before{content:'\e605' '\e605' '\e605'}.example-ratings-1 .rating-2{z-index:5}.example-ratings-1 .rating-2:before{content:'\e605' '\e605'}.example-ratings-1 .rating-1{z-index:6}.example-ratings-1 .rating-1:before{content:'\e605'}.example-ratings-2{overflow:hidden}.example-ratings-2:before{color:#c7c7c7;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.example-ratings-2 input[type="radio"]{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-2 input[type="radio"]:focus+label:before,.example-ratings-2 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-2 label{position:absolute;display:block;cursor:pointer}.example-ratings-2 label span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-2 label:before{color:#ff5601;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;opacity:0}.example-ratings-2 label:hover:before{opacity:1}.example-ratings-2 label:hover~label:before{opacity:0}.example-ratings-2 .rating-8{z-index:2}.example-ratings-2 .rating-8:before{content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-7{z-index:3}.example-ratings-2 .rating-7:before{content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-6{z-index:4}.example-ratings-2 .rating-6:before{content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-5{z-index:5}.example-ratings-2 .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-4{z-index:6}.example-ratings-2 .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-3{z-index:7}.example-ratings-2 .rating-3:before{content:'\e605' '\e605' '\e605'}.example-ratings-2 .rating-2{z-index:8}.example-ratings-2 .rating-2:before{content:'\e605' '\e605'}.example-ratings-2 .rating-1{z-index:9}.example-ratings-2 .rating-1:before{content:'\e605'}.example-ratings-3{overflow:hidden}.example-ratings-3:before{color:#aff5e3;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.example-ratings-3 input[type="radio"]{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-3 input[type="radio"]:focus+label:before,.example-ratings-3 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-3 label{position:absolute;display:block;cursor:pointer}.example-ratings-3 label span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-3 label:before{color:#0a6767;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;opacity:0}.example-ratings-3 label:hover:before{opacity:1}.example-ratings-3 label:hover~label:before{opacity:0}.example-ratings-3 .rating-5{z-index:2}.example-ratings-3 .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-3 .rating-4{z-index:3}.example-ratings-3 .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.example-ratings-3 .rating-3{z-index:4}.example-ratings-3 .rating-3:before{content:'\e605' '\e605' '\e605'}.example-ratings-3 .rating-2{z-index:5}.example-ratings-3 .rating-2:before{content:'\e605' '\e605'}.example-ratings-3 .rating-1{z-index:6}.example-ratings-3 .rating-1:before{content:'\e605'}.example-ratings-4{overflow:hidden}.example-ratings-4:before{color:#c7c7c7;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;content:'\e600' '\e600' '\e600' '\e600' '\e600';position:absolute;z-index:1;display:block}.example-ratings-4 input[type="radio"]{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-4 input[type="radio"]:focus+label:before,.example-ratings-4 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-4 label{position:absolute;display:block;cursor:pointer}.example-ratings-4 label span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-4 label:before{color:#ff5601;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;opacity:0}.example-ratings-4 label:hover:before{opacity:1}.example-ratings-4 label:hover~label:before{opacity:0}.example-ratings-4 .rating-5{z-index:2}.example-ratings-4 .rating-5:before{content:'\e600' '\e600' '\e600' '\e600' '\e600'}.example-ratings-4 .rating-4{z-index:3}.example-ratings-4 .rating-4:before{content:'\e600' '\e600' '\e600' '\e600'}.example-ratings-4 .rating-3{z-index:4}.example-ratings-4 .rating-3:before{content:'\e600' '\e600' '\e600'}.example-ratings-4 .rating-2{z-index:5}.example-ratings-4 .rating-2:before{content:'\e600' '\e600'}.example-ratings-4 .rating-1{z-index:6}.example-ratings-4 .rating-1:before{content:'\e600'}.exapmle-ratings-5 .control.rating.vote{overflow:hidden}.exapmle-ratings-5 .control.rating.vote:before{color:#c7c7c7;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.exapmle-ratings-5 .control.rating.vote input[type="radio"]{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.exapmle-ratings-5 .control.rating.vote input[type="radio"]:focus+label:before,.exapmle-ratings-5 .control.rating.vote input[type="radio"]:checked+label:before{opacity:1}.exapmle-ratings-5 .control.rating.vote label{position:absolute;display:block;cursor:pointer}.exapmle-ratings-5 .control.rating.vote label span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.exapmle-ratings-5 .control.rating.vote label:before{color:#ff5601;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;opacity:0}.exapmle-ratings-5 .control.rating.vote label:hover:before{opacity:1}.exapmle-ratings-5 .control.rating.vote label:hover~label:before{opacity:0}.exapmle-ratings-5 .control.rating.vote .rating-5{z-index:2}.exapmle-ratings-5 .control.rating.vote .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-4{z-index:3}.exapmle-ratings-5 .control.rating.vote .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-3{z-index:4}.exapmle-ratings-5 .control.rating.vote .rating-3:before{content:'\e605' '\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-2{z-index:5}.exapmle-ratings-5 .control.rating.vote .rating-2:before{content:'\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-1{z-index:6}.exapmle-ratings-5 .control.rating.vote .rating-1:before{content:'\e605'}.example-rating-summary-1{white-space:nowrap;overflow:hidden}.example-rating-summary-1 .rating-result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-1 .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#c7c7c7;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-1 .rating-result>span{display:block;overflow:hidden}.example-rating-summary-1 .rating-result>span:before{position:relative;z-index:2;color:#ff5601;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-1 .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-2{white-space:nowrap;overflow:hidden}.example-rating-summary-2 .rating-result{width:154px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-2 .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#c7c7c7;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-2 .rating-result>span{display:block;overflow:hidden}.example-rating-summary-2 .rating-result>span:before{position:relative;z-index:2;color:#ff5601;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-2 .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-3{white-space:nowrap;overflow:hidden}.example-rating-summary-3 .rating-result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-3 .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#aff5e3;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-3 .rating-result>span{display:block;overflow:hidden}.example-rating-summary-3 .rating-result>span:before{position:relative;z-index:2;color:#0a6767;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-3 .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-4{white-space:nowrap;overflow:hidden}.example-rating-summary-4 .rating-result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-4 .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#c7c7c7;display:block;font-family:'icons-blank-theme';content:'\e600' '\e600' '\e600' '\e600' '\e600';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-4 .rating-result>span{display:block;overflow:hidden}.example-rating-summary-4 .rating-result>span:before{position:relative;z-index:2;color:#ff5601;display:block;font-family:'icons-blank-theme';content:'\e600' '\e600' '\e600' '\e600' '\e600';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-4 .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-5{white-space:nowrap;overflow:hidden}.example-rating-summary-5 .label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-5 .rating-result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-5 .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#c7c7c7;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-5 .rating-result>span{display:block;overflow:hidden}.example-rating-summary-5 .rating-result>span:before{position:relative;z-index:2;color:#ff5601;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-5 .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-6 .rating-summary{white-space:nowrap;overflow:hidden}.example-rating-summary-6 .rating-summary .rating-result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-6 .rating-summary .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#c7c7c7;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-6 .rating-summary .rating-result>span{display:block;overflow:hidden}.example-rating-summary-6 .rating-summary .rating-result>span:before{position:relative;z-index:2;color:#ff5601;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-6 .rating-summary .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-7{white-space:nowrap;overflow:hidden}.example-rating-summary-7 .rating-result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-7 .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#c7c7c7;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-7 .rating-result>span{display:block;overflow:hidden}.example-rating-summary-7 .rating-result>span:before{position:relative;z-index:2;color:#ff5601;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-7 .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-7 .label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-responsive-block{padding:10px}.example-sections-1{position:relative;z-index:1}.example-sections-1:before,.example-sections-1:after{content:"";display:table}.example-sections-1:after{clear:both}.example-sections-1>.item.title{float:left;width:auto}.example-sections-1>.item.title>.switch{display:block;height:20px;position:relative;z-index:2}.example-sections-1>.item.content{box-sizing:border-box;float:right;margin-top:20px;margin-left:-100%;width:100%}.example-sections-1>.item.content:before,.example-sections-1>.item.content:after{content:"";display:table}.example-sections-1>.item.content:after{clear:both}.example-sections-1>.item.content.active{display:block}.example-sections-1>.item.title{margin:0 5px 0 0}.example-sections-1>.item.title>.switch{font-size:1.4rem;font-weight:600;line-height:20px;color:#7d7d7d;text-decoration:none;background:#f0f0f0;border:1px solid #d1d1d1;border-bottom:0;height:20px;padding:5px 20px 5px 20px}.example-sections-1>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-1>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-1>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-1>.item.title:not(.disabled)>.switch:focus,.example-sections-1>.item.title:not(.disabled)>.switch:hover{background:#fcfcfc}.example-sections-1>.item.title:not(.disabled)>.switch:active,.example-sections-1>.item.title.active>.switch,.example-sections-1>.item.title.active>.switch:focus,.example-sections-1>.item.title.active>.switch:hover{background:#fff;color:#333}.example-sections-1>.item.title.active>.switch,.example-sections-1>.item.title.active>.switch:focus,.example-sections-1>.item.title.active>.switch:hover{padding-bottom:6px}.example-sections-1>.item.content{background:#fff;margin-top:31px;padding:20px 20px 20px 20px;border:1px solid #d1d1d1}.example-sections-2{position:relative;z-index:1}.example-sections-2:before,.example-sections-2:after{content:"";display:table}.example-sections-2:after{clear:both}.example-sections-2>.item.title{float:left;width:auto}.example-sections-2>.item.title>.switch{display:block;height:20px;position:relative;z-index:2}.example-sections-2>.item.content{box-sizing:border-box;float:right;margin-top:20px;margin-left:-100%;width:100%}.example-sections-2>.item.content:before,.example-sections-2>.item.content:after{content:"";display:table}.example-sections-2>.item.content:after{clear:both}.example-sections-2>.item.content.active{display:block}.example-sections-2>.item.title{margin:0 5px 0 0}.example-sections-2>.item.title>.switch{font-size:1.4rem;font-weight:600;line-height:20px;color:#7d7d7d;text-decoration:none;background:#f0f0f0;border:1px solid #d1d1d1;border-bottom:0;height:20px;padding:5px 20px 5px 20px}.example-sections-2>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-2>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-2>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-2>.item.title:not(.disabled)>.switch:focus,.example-sections-2>.item.title:not(.disabled)>.switch:hover{background:#fcfcfc}.example-sections-2>.item.title:not(.disabled)>.switch:active,.example-sections-2>.item.title.active>.switch,.example-sections-2>.item.title.active>.switch:focus,.example-sections-2>.item.title.active>.switch:hover{background:#fff;color:#333}.example-sections-2>.item.title.active>.switch,.example-sections-2>.item.title.active>.switch:focus,.example-sections-2>.item.title.active>.switch:hover{padding-bottom:6px}.example-sections-2>.item.content{background:#fff;margin-top:31px;padding:20px 20px 20px 20px;border:0;border-top:1px solid #d1d1d1}.example-sections-3{margin:0;padding:0}.example-sections-3>.item.title{box-sizing:border-box;float:none;width:100%}.example-sections-3>.item.title>.switch{display:block}.example-sections-3>.item.content{box-sizing:border-box;float:none;margin:0;display:block}.example-sections-3>.item.content:before,.example-sections-3>.item.content:after{content:"";display:table}.example-sections-3>.item.content:after{clear:both}.example-sections-3>.item.content.active{display:block}.example-sections-3>.item.title{margin:0 0 5px}.example-sections-3>.item.title>.switch{background:#f0f0f0;border-top:1px solid #d1d1d1;border-right:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;border-left:1px solid #d1d1d1;height:40px;padding:5px 20px 5px 20px;font-size:1.8rem;font-weight:600;line-height:40px;color:#7d7d7d;text-decoration:none}.example-sections-3>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-3>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-3>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-3>.item.title:not(.disabled)>.switch:focus,.example-sections-3>.item.title:not(.disabled)>.switch:hover{background:#fcfcfc}.example-sections-3>.item.title:not(.disabled)>.switch:active,.example-sections-3>.item.title.active>.switch,.example-sections-3>.item.title.active>.switch:focus,.example-sections-3>.item.title.active>.switch:hover{background:#fff;padding-bottom:5px}.example-sections-3>.item.content{background:#fff;border:1px solid #d1d1d1;margin:0 0 5px;padding:20px 20px 20px 20px}@media only screen and (max-width: 99999px){.example-sections-4{ position:relative;z-index:1}.example-sections-4:before,.example-sections-4:after{content:"";display:table}.example-sections-4:after{clear:both}.example-sections-4>.item.title{float:left;width:auto}.example-sections-4>.item.title>.switch{display:block;height:20px;position:relative;z-index:2}.example-sections-4>.item.content{box-sizing:border-box;float:right;margin-top:20px;margin-left:-100%;width:100%}.example-sections-4>.item.content:before,.example-sections-4>.item.content:after{content:"";display:table}.example-sections-4>.item.content:after{clear:both}.example-sections-4>.item.content.active{display:block}.example-sections-4>.item.title{margin:0 5px 0 0}.example-sections-4>.item.title>.switch{font-size:1.4rem;font-weight:600;line-height:20px;color:#7d7d7d;text-decoration:none;background:#f0f0f0;border:1px solid #d1d1d1;border-bottom:0;height:20px;padding:5px 20px 5px 20px}.example-sections-4>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-4>.item.title:not(.disabled)>.switch:focus,.example-sections-4>.item.title:not(.disabled)>.switch:hover{background:#fcfcfc}.example-sections-4>.item.title:not(.disabled)>.switch:active,.example-sections-4>.item.title.active>.switch,.example-sections-4>.item.title.active>.switch:focus,.example-sections-4>.item.title.active>.switch:hover{background:#fff;color:#333}.example-sections-4>.item.title.active>.switch,.example-sections-4>.item.title.active>.switch:focus,.example-sections-4>.item.title.active>.switch:hover{padding-bottom:6px}.example-sections-4>.item.content{background:#fff;margin-top:31px;padding:20px 20px 20px 20px;border:1px solid #d1d1d1}}@media only screen and (max-width: 768px){.example-sections-4{ margin:0;padding:0}.example-sections-4>.item.title{box-sizing:border-box;float:none;width:100%}.example-sections-4>.item.title>.switch{display:block}.example-sections-4>.item.content{box-sizing:border-box;float:none;margin:0;display:block}.example-sections-4>.item.content:before,.example-sections-4>.item.content:after{content:"";display:table}.example-sections-4>.item.content:after{clear:both}.example-sections-4>.item.content.active{display:block}.example-sections-4>.item.title{margin:0 0 5px}.example-sections-4>.item.title>.switch{background:#f0f0f0;border-top:1px solid #d1d1d1;border-right:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;border-left:1px solid #d1d1d1;height:40px;padding:5px 20px 5px 20px;font-size:1.8rem;font-weight:600;line-height:40px;color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-4>.item.title:not(.disabled)>.switch:focus,.example-sections-4>.item.title:not(.disabled)>.switch:hover{background:#fcfcfc}.example-sections-4>.item.title:not(.disabled)>.switch:active,.example-sections-4>.item.title.active>.switch,.example-sections-4>.item.title.active>.switch:focus,.example-sections-4>.item.title.active>.switch:hover{background:#fff;padding-bottom:5px}.example-sections-4>.item.content{background:#fff;border:1px solid #d1d1d1;margin:0 0 5px;padding:20px 20px 20px 20px}}.example-sections-5{position:relative;z-index:1}.example-sections-5:before,.example-sections-5:after{content:"";display:table}.example-sections-5:after{clear:both}.example-sections-5>.item.title{float:left;width:auto}.example-sections-5>.item.title>.switch{display:block;height:20px;position:relative;z-index:2}.example-sections-5>.item.content{box-sizing:border-box;float:right;margin-top:20px;margin-left:-100%;width:100%}.example-sections-5>.item.content:before,.example-sections-5>.item.content:after{content:"";display:table}.example-sections-5>.item.content:after{clear:both}.example-sections-5>.item.content.active{display:block}.example-sections-6{margin:0;padding:0}.example-sections-6>.item.title{box-sizing:border-box;float:none;width:100%}.example-sections-6>.item.title>.switch{display:block}.example-sections-6>.item.content{box-sizing:border-box;float:none;margin:0;display:block}.example-sections-6>.item.content:before,.example-sections-6>.item.content:after{content:"";display:table}.example-sections-6>.item.content:after{clear:both}.example-sections-6>.item.content.active{display:block}.example-table-1{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-1 th{text-align:left}.example-table-1>tbody>tr>th,.example-table-1>tfoot>tr>th,.example-table-1>tbody>tr>td,.example-table-1>tfoot>tr>td{vertical-align:top}.example-table-1>thead>tr>th,.example-table-1>thead>tr>td{vertical-align:bottom}.example-table-1>thead>tr>th,.example-table-1>tbody>tr>th,.example-table-1>tfoot>tr>th,.example-table-1>thead>tr>td,.example-table-1>tbody>tr>td,.example-table-1>tfoot>tr>td{padding:8px 10px}.example-table-2>thead>tr>th,.example-table-2>tbody>tr>th,.example-table-2>tfoot>tr>th{color:#111;font-weight:700}.example-table-3{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-3 th{text-align:left}.example-table-3>tbody>tr>th,.example-table-3>tfoot>tr>th,.example-table-3>tbody>tr>td,.example-table-3>tfoot>tr>td{vertical-align:top}.example-table-3>thead>tr>th,.example-table-3>thead>tr>td{vertical-align:bottom}.example-table-3>thead>tr>th,.example-table-3>tbody>tr>th,.example-table-3>tfoot>tr>th,.example-table-3>thead>tr>td,.example-table-3>tbody>tr>td,.example-table-3>tfoot>tr>td{padding:8px 10px}.example-table-3>caption{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-table-4{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-4 th{text-align:left}.example-table-4>tbody>tr>th,.example-table-4>tfoot>tr>th,.example-table-4>tbody>tr>td,.example-table-4>tfoot>tr>td{vertical-align:top}.example-table-4>thead>tr>th,.example-table-4>thead>tr>td{vertical-align:bottom}.example-table-4>thead>tr>th,.example-table-4>tbody>tr>th,.example-table-4>tfoot>tr>th,.example-table-4>thead>tr>td,.example-table-4>tbody>tr>td,.example-table-4>tfoot>tr>td{padding:8px 10px}.example-table-4>thead>tr>td,.example-table-4>tbody>tr>td,.example-table-4>tfoot>tr>td{padding:15px 25px 5px 0}.example-table-4>thead>tr>th,.example-table-4>tbody>tr>th,.example-table-4>tfoot>tr>th{padding:15px 25px 10px 0}.example-table-5{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;background:#fff}.example-table-5 th{text-align:left}.example-table-5>tbody>tr>th,.example-table-5>tfoot>tr>th,.example-table-5>tbody>tr>td,.example-table-5>tfoot>tr>td{vertical-align:top}.example-table-5>thead>tr>th,.example-table-5>thead>tr>td{vertical-align:bottom}.example-table-5>thead>tr>th,.example-table-5>tbody>tr>th,.example-table-5>tfoot>tr>th,.example-table-5>thead>tr>td,.example-table-5>tbody>tr>td,.example-table-5>tfoot>tr>td{padding:8px 10px}.example-table-5>thead{background:#ccf}.example-table-5>tfoot{background:#cff}.example-table-5>tbody>tr>td{background:#fcc}.example-table-5>tbody>tr>th{background:#ffc}.example-table-6{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;border:1px solid #d1d1d1}.example-table-6 th{text-align:left}.example-table-6>tbody>tr>th,.example-table-6>tfoot>tr>th,.example-table-6>tbody>tr>td,.example-table-6>tfoot>tr>td{vertical-align:top}.example-table-6>thead>tr>th,.example-table-6>thead>tr>td{vertical-align:bottom}.example-table-6>thead>tr>th,.example-table-6>tbody>tr>th,.example-table-6>tfoot>tr>th,.example-table-6>thead>tr>td,.example-table-6>tbody>tr>td,.example-table-6>tfoot>tr>td{padding:8px 10px}.example-table-6>thead>tr>th,.example-table-6>tbody>tr>th,.example-table-6>tfoot>tr>th,.example-table-6>thead>tr>td,.example-table-6>tbody>tr>td,.example-table-6>tfoot>tr>td{border:1px solid #d1d1d1}.example-table-7{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-7 th{text-align:left}.example-table-7>tbody>tr>th,.example-table-7>tfoot>tr>th,.example-table-7>tbody>tr>td,.example-table-7>tfoot>tr>td{vertical-align:top}.example-table-7>thead>tr>th,.example-table-7>thead>tr>td{vertical-align:bottom}.example-table-7>thead>tr>th,.example-table-7>tbody>tr>th,.example-table-7>tfoot>tr>th,.example-table-7>thead>tr>td,.example-table-7>tbody>tr>td,.example-table-7>tfoot>tr>td{padding:8px 10px}.example-table-7>thead>tr>th,.example-table-7>tbody>tr>th,.example-table-7>tfoot>tr>th,.example-table-7>thead>tr>td,.example-table-7>tbody>tr>td,.example-table-7>tfoot>tr>td{border-top:1px solid #d1d1d1}.example-table-7>caption+thead>tr:first-child>th,.example-table-7>colgroup+thead>tr:first-child>th,.example-table-7>thead:first-child>tr:first-child>th,.example-table-7>caption+thead>tr:first-child>td,.example-table-7>colgroup+thead>tr:first-child>td,.example-table-7>thead:first-child>tr:first-child>td{border-top:0}.example-table-7>tbody+tbody{border-top:1px solid #d1d1d1}.example-table-8{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-8 th{text-align:left}.example-table-8>tbody>tr>th,.example-table-8>tfoot>tr>th,.example-table-8>tbody>tr>td,.example-table-8>tfoot>tr>td{vertical-align:top}.example-table-8>thead>tr>th,.example-table-8>thead>tr>td{vertical-align:bottom}.example-table-8>thead>tr>th,.example-table-8>tbody>tr>th,.example-table-8>tfoot>tr>th,.example-table-8>thead>tr>td,.example-table-8>tbody>tr>td,.example-table-8>tfoot>tr>td{padding:8px 10px}.example-table-8>thead>tr>th,.example-table-8>tbody>tr>th,.example-table-8>tfoot>tr>th,.example-table-8>thead>tr>td,.example-table-8>tbody>tr>td,.example-table-8>tfoot>tr>td{border-left:1px solid #d1d1d1}.example-table-8>thead>tr>th:first-child,.example-table-8>tbody>tr>th:first-child,.example-table-8>tfoot>tr>th:first-child,.example-table-8>thead>tr>td:first-child,.example-table-8>tbody>tr>td:first-child,.example-table-8>tfoot>tr>td:first-child{border-left:0}.example-table-9{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;border:0}.example-table-9 th{text-align:left}.example-table-9>tbody>tr>th,.example-table-9>tfoot>tr>th,.example-table-9>tbody>tr>td,.example-table-9>tfoot>tr>td{vertical-align:top}.example-table-9>thead>tr>th,.example-table-9>thead>tr>td{vertical-align:bottom}.example-table-9>thead>tr>th,.example-table-9>tbody>tr>th,.example-table-9>tfoot>tr>th,.example-table-9>thead>tr>td,.example-table-9>tbody>tr>td,.example-table-9>tfoot>tr>td{padding:8px 10px}.example-table-9>thead>tr>th,.example-table-9>tbody>tr>th,.example-table-9>tfoot>tr>th,.example-table-9>thead>tr>td,.example-table-9>tbody>tr>td,.example-table-9>tfoot>tr>td{border:0}.example-table-9>thead>tr>th,.example-table-9>thead>tr>td{border-bottom:1px solid #d1d1d1}.example-table-10{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;border:0}.example-table-10 th{text-align:left}.example-table-10>tbody>tr>th,.example-table-10>tfoot>tr>th,.example-table-10>tbody>tr>td,.example-table-10>tfoot>tr>td{vertical-align:top}.example-table-10>thead>tr>th,.example-table-10>thead>tr>td{vertical-align:bottom}.example-table-10>thead>tr>th,.example-table-10>tbody>tr>th,.example-table-10>tfoot>tr>th,.example-table-10>thead>tr>td,.example-table-10>tbody>tr>td,.example-table-10>tfoot>tr>td{padding:8px 10px}.example-table-10>thead>tr>th,.example-table-10>tbody>tr>th,.example-table-10>tfoot>tr>th,.example-table-10>thead>tr>td,.example-table-10>tbody>tr>td,.example-table-10>tfoot>tr>td{border:0}.example-table-11{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-11 th{text-align:left}.example-table-11>tbody>tr>th,.example-table-11>tfoot>tr>th,.example-table-11>tbody>tr>td,.example-table-11>tfoot>tr>td{vertical-align:top}.example-table-11>thead>tr>th,.example-table-11>thead>tr>td{vertical-align:bottom}.example-table-11>thead>tr>th,.example-table-11>tbody>tr>th,.example-table-11>tfoot>tr>th,.example-table-11>thead>tr>td,.example-table-11>tbody>tr>td,.example-table-11>tfoot>tr>td{padding:8px 10px}.example-table-11>tbody>tr:nth-child(even)>td,.example-table-11>tbody>tr:nth-child(even)>th{background:#ffc;color:#000}.example-table-12{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-12 th{text-align:left}.example-table-12>tbody>tr>th,.example-table-12>tfoot>tr>th,.example-table-12>tbody>tr>td,.example-table-12>tfoot>tr>td{vertical-align:top}.example-table-12>thead>tr>th,.example-table-12>thead>tr>td{vertical-align:bottom}.example-table-12>thead>tr>th,.example-table-12>tbody>tr>th,.example-table-12>tfoot>tr>th,.example-table-12>thead>tr>td,.example-table-12>tbody>tr>td,.example-table-12>tfoot>tr>td{padding:8px 10px}.example-table-12>tbody>tr:nth-child(even):hover>td,.example-table-12>tbody>tr:nth-child(even):hover>th{background:#f0f0f0}.example-table-12>tbody>tr:nth-child(odd):hover>td,.example-table-12>tbody>tr:nth-child(odd):hover>th{background:#f0f0f0}.example-table-13{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;border:1px solid #d1d1d1}.example-table-13 th{text-align:left}.example-table-13>tbody>tr>th,.example-table-13>tfoot>tr>th,.example-table-13>tbody>tr>td,.example-table-13>tfoot>tr>td{vertical-align:top}.example-table-13>thead>tr>th,.example-table-13>thead>tr>td{vertical-align:bottom}.example-table-13>thead>tr>th,.example-table-13>tbody>tr>th,.example-table-13>tfoot>tr>th,.example-table-13>thead>tr>td,.example-table-13>tbody>tr>td,.example-table-13>tfoot>tr>td{padding:8px 10px}.example-table-13>thead>tr>th,.example-table-13>tbody>tr>th,.example-table-13>tfoot>tr>th,.example-table-13>thead>tr>td,.example-table-13>tbody>tr>td,.example-table-13>tfoot>tr>td{border:1px solid #d1d1d1}.example-table-13>tbody>tr:nth-child(odd)>td,.example-table-13>tbody>tr:nth-child(odd)>th{background:#fff}.example-table-13>tbody>tr:nth-child(even):hover>td,.example-table-13>tbody>tr:nth-child(even):hover>th{background:#f0f0f0}.example-table-13>tbody>tr:nth-child(odd):hover>td,.example-table-13>tbody>tr:nth-child(odd):hover>th{background:#f0f0f0}@media only screen and (max-width: 768px){.example-table-14{ width:100%;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}}.example-table-15{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;border:1px solid #d1d1d1}.example-table-15 th{text-align:left}.example-table-15>tbody>tr>th,.example-table-15>tfoot>tr>th,.example-table-15>tbody>tr>td,.example-table-15>tfoot>tr>td{vertical-align:top}.example-table-15>thead>tr>th,.example-table-15>thead>tr>td{vertical-align:bottom}.example-table-15>thead>tr>th,.example-table-15>tbody>tr>th,.example-table-15>tfoot>tr>th,.example-table-15>thead>tr>td,.example-table-15>tbody>tr>td,.example-table-15>tfoot>tr>td{padding:8px 10px}.example-table-15>thead>tr>th,.example-table-15>tbody>tr>th,.example-table-15>tfoot>tr>th,.example-table-15>thead>tr>td,.example-table-15>tbody>tr>td,.example-table-15>tfoot>tr>td{border:1px solid #d1d1d1}.example-table-15>tbody>tr:nth-child(odd)>td,.example-table-15>tbody>tr:nth-child(odd)>th{background:#fff}.example-table-15>tbody>tr:nth-child(even):hover>td,.example-table-15>tbody>tr:nth-child(even):hover>th{background:#f0f0f0}.example-table-15>tbody>tr:nth-child(odd):hover>td,.example-table-15>tbody>tr:nth-child(odd):hover>th{background:#f0f0f0}@media only screen and (max-width: 768px){.example-table-15{ border:0;display:block;background:#cff}.example-table-15>tbody>tr:nth-child(odd)>td,.example-table-15>tbody>tr:nth-child(odd)>th{background:#cff}.example-table-15>tbody>tr:nth-child(even):hover>td,.example-table-15>tbody>tr:nth-child(even):hover>th{background:#cff}.example-table-15>tbody>tr:nth-child(odd):hover>td,.example-table-15>tbody>tr:nth-child(odd):hover>th{background:#cff}.example-table-15>thead>tr>th{display:none}.example-table-15>tbody{display:block}.example-table-15>tbody>tr{display:block}.example-table-15>tbody>tr td,.example-table-15>tbody>tr th{border-bottom:0;display:block;padding:5px 0}.example-table-15>tbody>tr td:before,.example-table-15>tbody>tr th:before{content:attr(data-th) ":";display:inline-block;padding-right:10px;color:#111;font-weight:700}.example-table-15>tbody>tr td{background:#cff}.example-table-15>tbody>tr>th{background-color:#ffc!important}}.example-tooltip-bottom{position:relative}.example-tooltip-bottom .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;color:#333;line-height:1.4;border:1px solid #bbb;top:100%;left:0;margin-top:5px}.example-tooltip-bottom .tooltip-content:after,.example-tooltip-bottom .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-bottom .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-bottom .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-bottom .tooltip-content:after,.example-tooltip-bottom .tooltip-content:before{bottom:100%}.example-tooltip-bottom .tooltip-content:after{border-bottom-color:#fff;margin-left:-5px;left:15px}.example-tooltip-bottom .tooltip-content:before{border-bottom-color:#bbb;margin-left:-6px;left:15px}.example-tooltip-bottom .tooltip-toggle{cursor:help}.example-tooltip-bottom .tooltip-toggle:hover+.tooltip-content,.example-tooltip-bottom .tooltip-toggle:focus+.tooltip-content,.example-tooltip-bottom:hover .tooltip-content{display:block}.example-tooltip-left{position:relative}.example-tooltip-left .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;color:#333;line-height:1.4;border:1px solid #bbb;right:100%;top:0;margin-right:5px}.example-tooltip-left .tooltip-content:after,.example-tooltip-left .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-left .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-left .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-left .tooltip-content:after,.example-tooltip-left .tooltip-content:before{left:100%}.example-tooltip-left .tooltip-content:after{border-left-color:#fff;margin-top:-5px;top:15px}.example-tooltip-left .tooltip-content:before{border-left-color:#bbb;margin-top:-6px;top:15px}.example-tooltip-left .tooltip-toggle{cursor:help}.example-tooltip-left .tooltip-toggle:hover+.tooltip-content,.example-tooltip-left .tooltip-toggle:focus+.tooltip-content,.example-tooltip-left:hover .tooltip-content{display:block}.example-tooltip-right{position:relative}.example-tooltip-right .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;color:#333;line-height:1.4;border:1px solid #bbb;left:100%;top:0;margin-left:5px}.example-tooltip-right .tooltip-content:after,.example-tooltip-right .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-right .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-right .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-right .tooltip-content:after,.example-tooltip-right .tooltip-content:before{right:100%}.example-tooltip-right .tooltip-content:after{border-right-color:#fff;margin-top:-5px;top:15px}.example-tooltip-right .tooltip-content:before{border-right-color:#bbb;margin-top:-6px;top:15px}.example-tooltip-right .tooltip-toggle{cursor:help}.example-tooltip-right .tooltip-toggle:hover+.tooltip-content,.example-tooltip-right .tooltip-toggle:focus+.tooltip-content,.example-tooltip-right:hover .tooltip-content{display:block}.example-tooltip-top{position:relative}.example-tooltip-top .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;color:#333;line-height:1.4;border:1px solid #bbb;bottom:100%;left:0;margin-bottom:5px}.example-tooltip-top .tooltip-content:after,.example-tooltip-top .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-top .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-top .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-top .tooltip-content:after,.example-tooltip-top .tooltip-content:before{top:100%}.example-tooltip-top .tooltip-content:after{border-top-color:#fff;margin-left:-5px;left:15px}.example-tooltip-top .tooltip-content:before{border-top-color:#bbb;margin-left:-6px;left:15px}.example-tooltip-top .tooltip-toggle{cursor:help}.example-tooltip-top .tooltip-toggle:hover+.tooltip-content,.example-tooltip-top .tooltip-toggle:focus+.tooltip-content,.example-tooltip-top:hover .tooltip-content{display:block}html{font-size:62.5%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-size-adjust:100%}body{font-size:1.4rem;color:#333;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143}p{margin-top:0rem;margin-bottom:1rem}abbr[title]{cursor:help;border-bottom:1px dotted #d1d1d1}b,strong{font-weight:700}em,i{font-style:italic}mark{background:#f0f0f0;color:#000}small,.small{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #d1d1d1}sub,sup{font-size:71.42857143%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dfn{font-style:italic}h1{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:0rem;margin-bottom:2rem}h2{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:2.5rem;margin-bottom:2rem}h3{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}h4{font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:2rem;margin-bottom:2rem}h5{font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:2rem;margin-bottom:2rem}h6{font-size:1rem;font-weight:700;line-height:1.1;margin-top:2rem;margin-bottom:2rem}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small{font-size:71.42857143%;color:#333;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1}a,.alink{color:#1979c3;text-decoration:none}a:visited,.alink:visited{color:#1979c3;text-decoration:none}a:hover,.alink:hover{color:#006bb4;text-decoration:underline}a:active,.alink:active{color:#ff5501;text-decoration:underline}ul,ol{margin-top:0rem;margin-bottom:2.5rem}ul>li,ol>li{margin-top:0rem;margin-bottom:1rem}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}dl{margin-top:0;margin-bottom:20px}dt{font-weight:700;margin-top:0;margin-bottom:5px}dd{margin-top:0;margin-bottom:10px;margin-left:0}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,'Courier New',monospace}code{background:#f0f0f0;color:#111;font-size:1.2rem;padding:2px 4px;white-space:nowrap}kbd{background:#f0f0f0;color:#111;font-size:1.2rem;padding:2px 4px}pre{background:#f0f0f0;border:1px solid #d1d1d1;color:#111;display:block;font-size:1.2rem;margin:0 0 10px;line-height:1.42857143;padding:10px;word-break:break-all;word-wrap:break-word}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}blockquote{border-left:0 solid #d1d1d1;margin:0 0 20px 40px;padding:0;font-size:1.4rem;color:#333;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:italic;line-height:1.42857143}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{color:#333;display:block;font-size:1rem;line-height:1.42857143}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote cite{font-style:normal}blockquote:before,blockquote:after{content:""}q{quotes:none}q:before,q:after{content:'';content:none}cite{font-style:normal}.example-line-height{line-height:3rem}.example-word-wrap{word-break:break-all;word-break:break-word;word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto;background:#ccc;width:120px}.example-text-overflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#ccc;width:120px}.example-text-hide{background-color:transparent;border:0;font:0/0 a;color:transparent;text-shadow:none}.example-hyphens{word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.example-hyphens-none{word-wrap:break-word;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.example-typography{color:#fc0;font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-weight:500;font-style:italic;line-height:1.2}.example-list-reset-styles{margin:0;padding:0;list-style:none none}.example-list-inline{margin:0;padding:0;list-style:none none}.example-list-inline>li{display:inline-block;vertical-align:top}.example-link-default{color:#1979c3;text-decoration:none}.example-link-default:visited{color:#1979c3;text-decoration:none}.example-link-default:hover{color:#006bb4;text-decoration:underline}.example-link-default:active{color:#ff5501;text-decoration:underline}.example-link{color:#008000;text-decoration:none}.example-link:visited{color:#1979c3;text-decoration:none}.example-link:hover{color:#ffa500;text-decoration:none}.example-link:active{color:#ff5501;text-decoration:underline}.example-heading{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:0rem;margin-bottom:2rem}.example-heading-2{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:2.5rem;margin-bottom:2rem}html{font-size:62.5%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-size-adjust:100%}body{font-size:1.4rem;color:#333;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143}p{margin-top:0rem;margin-bottom:1rem}abbr[title]{cursor:help;border-bottom:1px dotted #d1d1d1}b,strong{font-weight:700}em,i{font-style:italic}mark{background:#f0f0f0;color:#000}small,.small{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #d1d1d1}sub,sup{font-size:71.42857143%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dfn{font-style:italic}h1{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:0rem;margin-bottom:2rem}h2{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:2.5rem;margin-bottom:2rem}h3{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}h4{font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:2rem;margin-bottom:2rem}h5{font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:2rem;margin-bottom:2rem}h6{font-size:1rem;font-weight:700;line-height:1.1;margin-top:2rem;margin-bottom:2rem}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small{font-size:71.42857143%;color:#333;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1}a,.alink{color:#1979c3;text-decoration:none}a:visited,.alink:visited{color:#1979c3;text-decoration:none}a:hover,.alink:hover{color:#006bb4;text-decoration:underline}a:active,.alink:active{color:#ff5501;text-decoration:underline}ul,ol{margin-top:0rem;margin-bottom:2.5rem}ul>li,ol>li{margin-top:0rem;margin-bottom:1rem}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}dl{margin-top:0;margin-bottom:20px}dt{font-weight:700;margin-top:0;margin-bottom:5px}dd{margin-top:0;margin-bottom:10px;margin-left:0}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,'Courier New',monospace}code{background:#f0f0f0;color:#111;font-size:1.2rem;padding:2px 4px;white-space:nowrap}kbd{background:#f0f0f0;color:#111;font-size:1.2rem;padding:2px 4px}pre{background:#f0f0f0;border:1px solid #d1d1d1;color:#111;display:block;font-size:1.2rem;margin:0 0 10px;line-height:1.42857143;padding:10px;word-break:break-all;word-wrap:break-word}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}blockquote{border-left:0 solid #d1d1d1;margin:0 0 20px 40px;padding:0;font-size:1.4rem;color:#333;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:italic;line-height:1.42857143}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{color:#333;display:block;font-size:1rem;line-height:1.42857143}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote cite{font-style:normal}blockquote:before,blockquote:after{content:""}q{quotes:none}q:before,q:after{content:'';content:none}cite{font-style:normal}.example-clearfix-container-1{border:1px solid red}.example-clearfix-container-2{border:1px solid #0f0}.example-clearfix-container-2:before,.example-clearfix-container-2:after{content:"";display:table}.example-clearfix-container-2:after{clear:both}.example-clearfix-item.left{float:left}.example-clearfix-item.right{float:right}.example-visibility-hidden{height:0;visibility:hidden}.example-visually-hidden-1{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-visually-hidden-2{background:#fdf0d5;padding:5px;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-visually-hidden-2{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.example-css-container{padding:20px;background:#e8e8e8}.example-rotate{background:red;position:absolute;height:20px;width:40px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.example-placeholder::-webkit-input-placeholder{color:#808080;font-weight:700}.example-placeholder:-moz-placeholder{color:#808080;font-weight:700}.example-placeholder::-moz-placeholder{color:#808080;font-weight:700}.example-placeholder:-ms-input-placeholder{color:#808080;font-weight:700}.example-background-gradient-1{background-color:#ccf;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #cff 0, #ccf 100%);background-image:linear-gradient(to bottom, #cff 0, #ccf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ccffff', endColorstr='#ccccff', GradientType=0)}.example-background-gradient-2{background-color:#ccf;background-repeat:repeat-x;background-image:-webkit-linear-gradient(left,color-stop( #cff 0),color-stop( #ccf 100%));background-image:linear-gradient(to right, #cff 0, #ccf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ccffff', endColorstr='#ccccff', GradientType=1)}.example-background-gradient-3-wrapper{background:#ffc;padding:10px}.example-background-gradient-3{background-color:rgba(255,255,255,0);background-repeat:repeat-x;background-image:-webkit-linear-gradient(left,color-stop(rgba(255,255,255,0) 0),color-stop( #ccf 100%));background-image:linear-gradient(to right,rgba(255,255,255,0) 0, #ccf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='rgba(255, 255, 255, 0)',endColorstr='#ccccff',GradientType=1)}body{padding:15px;background-image:none}</style></head><body><nav class="bar top cf"><div class="container"><a href="index.html" class="brand">Magento UI Library</a><ul class="menu"><li><a href="#" data-toggle="dropdown-1" unselectable="on" class="dropdown-toggle">files</a><ul id="dropdown-1" hidden class="dropdown"><li><a href="actions-toolbar.html">actions-toolbar</a></li><li><a href="breadcrumbs.html">breadcrumbs</a></li><li><a href="buttons.html">buttons</a></li><li><a href="docs.html">docs</a></li><li><a href="dropdowns.html">dropdowns</a></li><li><a href="forms.html">forms</a></li><li><a href="icons.html">icons</a></li><li><a href="layout.html">layout</a></li><li><a href="lib.html">lib</a></li><li><a href="loaders.html">loaders</a></li><li><a href="messages.html">messages</a></li><li><a href="pages.html">pages</a></li><li><a href="popups.html">popups</a></li><li><a href="rating.html">rating</a></li><li><a href="resets.html">resets</a></li><li><a href="responsive.html">responsive</a></li><li><a href="sections.html">sections</a></li><li><a href="tables.html">tables</a></li><li><a href="tooltips.html">tooltips</a></li><li><a href="typography.html">typography</a></li><li><a href="utilities.html">utilities</a></li><li><a href="variables.html">variables</a></li></ul></li></ul><div class="nav"><button title="Table of Contents" data-toggle="nav-toc"><svg viewBox="0 0 512 512" height="22" width="22" class="icon"><path d="M108.9,403.1V462H50v-58.9H108.9z M108.9,285.4H50v58.9h58.9V285.4zM108.9,50H50v58.9h58.9V50z M108.9,167.7H50v58.9h58.9V167.7z M167.7,344.3H462v-58.9H167.7V344.3zM167.7,50v58.9H462V50H167.7z M167.7,462H462v-58.9H167.7V462z M167.7,226.6H462v-58.9H167.7V226.6z"></path></svg></button><input type="search" placeholder="Search" class="search"></div></div></nav><section class="container"><article id="icons" class="section"><div class="docs"><a href="#icons" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="icons">Icons</h1>
+</title><meta charset="utf-8"><style>*{-moz-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;border:0}body{padding:60px 0 40px;background-color:hsl(207,10%,90%);color:hsl(207,5%,30%)}.container{max-width:1300px;margin:0 auto;padding:0 20px}.section{position:relative;margin-bottom:20px}.docs{position:relative;z-index:2;width:68%;min-height:200px;background-color:hsl(207,0%,100%);background-clip:padding-box;border:1px solid hsla(207,5%,5%,.1);border-radius:5px;box-shadow:0 0 3px hsla(207,5%,5%,.1)}.code{position:absolute;top:5px;bottom:5px;right:0;z-index:1;width:33%;padding:10px 10px 10px 20px;border-radius:0 5px 5px 0;border:1px solid hsla(207,20%,10%,.1);background-color:hsla(207,20%,95%,.9);background-clip:padding-box;opacity:.5;-webkit-transition:opacity .4s;-moz-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.code:hover{opacity:1}.preview{background:hsl(207,0%,100%);border-top:1px solid hsl(207,30%,95%);position:relative;z-index:1}.preview-code+.preview{margin-top:0;border-top:0}.preview iframe{display:block;width:100%;height:100%;overflow:hidden}.preview-code{position:relative;z-index:2;display:block;width:100%;color:hsl(207,9%,37%);max-height:200px;padding:10px 20px;overflow-y:auto;background:hsl(207,30%,95%);border:1px solid hsl(207,30%,85%);border-left:0;border-right;box-shadow:inset 0 1px 2px hsla(207,30%,10%,.1);line-height:1.1!important;resize:none}.preview-code:focus{outline:0;background:hsl(207,30%,97%);box-shadow:inset 0 1px 2px hsla(207,30%,10%,.1),0 0 5px hsla(207,75%,75%,.9)}.preview-code:last-child{border-bottom:0;border-radius:0 0 5px 5px}.resizeable{padding:15px;overflow:auto;background:hsl(207,0%,100%);box-shadow:0 0 2px hsla(207,10%,20%,.2);resize:both}.preview-code,pre{white-space:pre-wrap;word-wrap:break-word;overflow-y:auto}.code pre{height:100%;margin-top:0}.bar{position:fixed;left:0;right:0;z-index:1010;min-height:40px;line-height:40px;background-image:-webkit-linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92));background-image:-moz-linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92));background-image:-o-linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92));background-image:linear-gradient(hsla(207,10%,35%,.97),hsla(207,5%,25%,.92))}.bar.top{top:0;box-shadow:0 1px 2px hsla(207,5%,0%,.2)}.bar.bottom{bottom:0;box-shadow:0 -1px 2px hsla(207,5%,0%,.2)}.bar ul{margin:0!important}.bar li{display:block;list-style:none}.bar .icon path{fill:hsla(27,10%,75%,.75)}.docs .icon path{fill:hsla(207,10%,75%,.5)}.docs .permalink:hover .icon path{fill:hsl(207,10%,75%)}.bar button{color:hsla(27,10%,75%,.75)}.bar button:hover .icon path,.bar button.is-active .icon path{fill:hsl(27,10%,85%)}.bar button:hover,.bar button.is-active{color:hsl(27,10%,85%)}.bar .icon{vertical-align:middle;display:inline-block}.bar,.bar a,.bar a:visited{color:hsl(27,10%,85%);text-shadow:1px 1px 0 hsla(27,5%,0%,.5)}.bar a:hover,.bar a.is-active{color:hsl(27,10%,95%);text-shadow:1px 1px 0 hsla(27,5%,0%,1);text-decoration:none}.brand{float:left;margin-right:20px;font-weight:700;font-size:16px;text-decoration:none}.brand,a.brand,a.brand:visited{color:hsl(27,5%,5%);text-shadow:1px 1px 0 hsla(27,5%,100%,.2)}.brand:hover,a.brand:hover{color:hsl(27,5%,0%);text-shadow:1px 1px 0 hsla(27,5%,100%,.3);text-decoration:none}.menu{font-size:12px}.menu>li{float:left;position:relative}.menu a{display:block;margin-right:15px}.dropdown-toggle{position:relative;padding-right:15px}.dropdown-toggle:after{display:block;position:absolute;right:0;top:18px;content:'';border:4px solid;border-left-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.nav-results,.dropdown{position:absolute;z-index:1020;top:32px;left:-16px;width:175px;max-height:500px;padding:10px 0;overflow-y:auto;word-wrap:break-word;font-size:11px;line-height:20px;background-color:hsla(207,10%,25%,.97);border:1px solid hsla(207,5%,70%,.3);border-radius:3px;box-shadow:0 0 3px hsla(207,5%,0%,.2)}.toc-list{width:200px}.nav-results{right:0;width:200px;left:auto;padding:5px 0}.nav-results-filename{display:block;font-size:10px;opacity:.75}.nav-results a{display:block;line-height:15px;padding:5px 10px}.nav-results li:not([hidden])~li a{border-top:1px solid hsla(27,10%,90%,.1)}.dropdown a{padding:0 15px}.dropdown li:hover{background-color:hsl(207,10%,22%)}.nav{float:right;position:relative}.nav input[type="search"]{padding:2px 4px;color:#fff;width:150px;border:1px solid hsla(207,5%,0%,.3);background:hsla(207,12%,40%,.9);box-shadow:inset 1px 1px 3px hsla(207,5%,0%,.05),1px 1px 0 hsla(207,5%,100%,.05);border-radius:10px;-webkit-appearance:textfield}.nav input[type="search"]:focus{outline:0;background:hsla(207,7%,45%,.9)}.settings{text-align:center}.bar button{display:inline-block;vertical-align:middle;padding:0 5px;margin:0 3px;background:transparent}.bar button:first-child{margin-left:0}.settings .auto{line-height:32px;font-size:11px;font-weight:700;letter-spacing:-1px;text-shadow:none;text-transform:uppercase}body{font-family:sans-serif;font-size:14px;line-height:1.618}.docs pre,p,ol,ul,dl,figure,blockquote,table{margin-left:20px;margin-right:20px}.preview,.docs pre,p,ol,ul,dl,figure,blockquote,table{margin-top:10px}ul ul,ol ol,ul ol,ol ul,blockquote p:last-child{margin-top:0}ul,ol{padding-left:1.5em}p:last-child,ol:last-child,ul:last-child,dl:last-child{margin-bottom:20px}hr,h1,h2,h3,h4,h5,h6{margin:1em 20px .5em}h1:first-of-type{margin-top:20px}h1,h2,h3,h4,h5,h6{line-height:1.2;color:hsl(207,10%,50%)}h1 a,h1 a:hover,h1 a:visited{color:inherit;text-decoration:inherit}h1{font-size:3.052em;font-weight:400;color:hsl(207,10%,45%)}h2{font-size:1.953em}h3{font-size:1.536em}h1,h2,h3{letter-spacing:-.025em}h4{font-size:1.25em}h5{font-size:1em;text-transform:uppercase}h6{font-size:1em}.permalink{position:absolute;top:15px;right:15px}a{color:hsl(207,90%,50%);text-decoration:none}a:hover{color:hsl(207,95%,40%);text-decoration:underline}a:visited{color:hsl(207,100%,35%)}.preview-code,pre,code,var{font-style:normal;font-family:"Ubuntu Mono","Andale Mono","DejaVu Sans Mono","Monaco","Bitstream Vera Sans Mono","Consolas","Lucida Console",monospace;font-size:12px}.docs pre,code,var{padding:.1em 3px;background:hsla(207,5%,0%,.025);border:1px solid hsla(207,5%,0%,.05);border-radius:3px}.code pre{line-height:1.1!important}pre code{padding:0;background:transparent;border:0}.cf:before,.cf:after{content:'';display:table}.cf:after{clear:both}[unselectable="on"]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[hidden]{display:none!important}small{font-size:85%;opacity:.9}.docs .vars_list{width:100%}.docs .vars_list th,.docs .vars_list td{width:33%}.docs pre th{text-align:left}.docs pre table{border-collapse:collapse;margin:0}.docs th,.docs td{border:0;padding:9px 10px 9px 0;vertical-align:top}.docs tr th:last-child,.docs tr td:last-child{padding-right:0}.docs pre th{font-weight:400}.docs pre th.vars_head{border-bottom:1px solid #e5e5e5;color:#707070;white-space:nowrap}.docs pre th.vars_section{border-bottom:1px solid #e5e5e5;color:#333;font-size:18px;padding-top:30px}.vars_value{color:#338bb8}.docs li p{margin:0 0 20px}.dropdown a{text-transform:capitalize}#default-button #default-button-big+.preview+.preview-code{display:block}#actions-toolbar-alignment .preview-code,#reverse-primary-and-secondary-blocks .preview-code,#actions-toolbar-indents-customizations .preview-code,#actionstoolbarclearfloats-mixin .preview-code,#responsive-actions-toolbar .preview-code,#button-with-gradient-background .preview-code,#primary-button .preview-code,#button-as-an-icon .preview-code,#button-with-an-icon-on-the-left-or-right-side-of-the-text .preview-code,#button-with-fixed-width .preview-code,#button-as-a-link .preview-code,#link-as-a-button .preview-code,#buttonstyled-breadcrumbs-with-gradient-background-border-and-no-separating-symbol .preview-code,#breadcrumbs-with-solid-background .preview-code,#pagination-without-label-with-solid-background .preview-code,#pagination-with-label-and-text-previousnext-links .preview-code,#pagination-with-label-and-gradient-background-on-links .preview-code,#fixed-height-popup .preview-code,#fixed-content-height-popup .preview-code,#margins-for-header-content-and-footer-block-in-popup .preview-code,#popup-titles-with-styled-as-theme-headings .preview-code,#popup-action-toolbar .preview-code,#popup-close-button-without-an-icon .preview-code,#modify-icon-of-popup-close-button .preview-code,#modify-overlay-styles .preview-code,#rating-summary-multiple-ratings .preview-code,#rating-summary-hide-label .preview-code,#rating-summary-icons-symbol .preview-code,#rating-summary-icons-color .preview-code,#rating-summary-set-number-of-icons .preview-code,#rating-summary .preview-code,#rating-with-vote-icon-symbol .preview-code,#rating-with-vote-setup-icons-colors .preview-code,#rating-with-vote-setup-number-of-icons .preview-code,#tabs-with-content-top-border .preview-code,#accordion-mixin-variables .preview-code,#tabs-base .preview-code,#accordion-base .preview-code,#warning-message .preview-code,#error-message .preview-code,#success-message .preview-code,#notice-message .preview-code,#message-with-inner-icon .preview-code,#message-with-lateral-icon .preview-code,#custom-message-style .preview-code,#modify-dropdown-list-styles .preview-code,#dropdown-with-icon-customization .preview-code,#split-button-button-styling .preview-code,#split-button-icon-customization .preview-code,#split-button-dropdown-list-customization .preview-code,#table-cells-resize .preview-code,#table-caption .preview-code,#table-typography .preview-code,#table-background-customization .preview-code,#table-borders-customization .preview-code,#table-without-borders .preview-code,#table-with-horizontal-borders .preview-code,#table-with-vertical-borders .preview-code,#striped-table .preview-code,#responsive-table-technics-1 .preview-code,#responsive-table-technics-2 .preview-code,#fontsize-mixin .preview-code,#word-breaking-mixin .preview-code,#word-breaking-mixin .preview-code,#text-overflow-mixin .preview-code,#text-hide .preview-code,#hyphens .preview-code,#font-style-and-color .preview-code,#reset-list-styles .preview-code,#inlineblock-list-item-styling .preview-code,#link-styling-mixin .preview-code,#heading-styling-mixin .preview-code,#icon-with-image-or-sprite .preview-code,#change-the-size-of-font-icon .preview-code,#sprite-and-font-icons-for-blank-theme .preview-code,#icon-position-for-an-icon-with-image-or-sprite .preview-code{display:none}article[id$="-variables"] .docs,#resets .docs,#ratings .docs,#tabs-and-accordions .docs,#messages .docs,#dropdown-and-split-buttons-mixins .docs,#font-face-mixin .docs,#layout .docs,#forms-mixins .docs,#including-magento-ui-library-to-your-theme .docs,#global-forms-elements-customization .docs,#mobile-off-canvas-navigation .docs,#desktop-navigation .docs,#utilities .docs,#layout-width .docs,#responsive-breakpoints .docs,#responsive-mixins-usage .docs{width:100%}article[id$="-variables"] .code{display:none}article[id$="-variables"] .docs pre{background:#fff;border:0;margin-top:0}</style><script type="text/preview">(function(){"use strict";var a=function(a){return Array.prototype.slice.call(a)},b=document.getElementsByTagName("body")[0],c=["link","visited","hover","active","focus","target","enabled","disabled","checked"],d=new RegExp(":(("+c.join(")|(")+"))","gi"),e=a(document.styleSheets).map(function(b){return a(b.cssRules).filter(function(a){return a.selectorText&&a.selectorText.match(d)}).map(function(a){return a.cssText.replace(d,".\\3A $1")}).join("")}).join("");if(e.length){var f=document.createElement("style");f.innerText=e;var g=document.getElementsByTagName("style")[0];g.parentNode.insertBefore(f,g)}var h=function(){var a=window.getComputedStyle(b,null);return function(){if(b.childElementCount===0)return b.offsetHeight;var c=b.getElementsByTagName("*"),d=[];for(var e=0,f=c.length;e<f;e++)d.push(c[e].offsetTop+c[e].offsetHeight+parseInt(window.getComputedStyle(c[e],null).getPropertyValue("margin-bottom")));var g=Math.max.apply(Math,d);return g+=parseInt(a.getPropertyValue("padding-bottom"),10),Math.max(g,b.offsetHeight)}}(),i={getHeight:function(){window.parent.postMessage({height:h()},"*")}};window.addEventListener("message",function(a){if(a.data==null)return;typeof a.data=="string"&&i[a.data]()},!1)})()</script><style type="text/preview">.actions-toolbar:before,.actions-toolbar:after{content:"";display:table}.actions-toolbar:after{clear:both}.actions-toolbar .primary{float:left}.actions-toolbar .secondary{float:right}.actions-toolbar .primary,.actions-toolbar .secondary{display:inline-block}.actions-toolbar .primary a.action,.actions-toolbar .secondary a.action{display:inline-block}.actions-toolbar .primary .action{margin:0 5px 0 0}.actions-toolbar .secondary a.action{margin-top:6px}.example-actions-toolbar-1:before,.example-actions-toolbar-1:after{content:"";display:table}.example-actions-toolbar-1:after{clear:both}.example-actions-toolbar-1 .primary{float:left}.example-actions-toolbar-1 .secondary{float:right}.example-actions-toolbar-1 .primary,.example-actions-toolbar-1 .secondary{display:inline-block}.example-actions-toolbar-1 .primary a.action,.example-actions-toolbar-1 .secondary a.action{display:inline-block}.example-actions-toolbar-1 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-1 .secondary a.action{margin-top:6px}.example-actions-toolbar-1:before,.example-actions-toolbar-1:after{content:"";display:table}.example-actions-toolbar-1:after{clear:both}.example-actions-toolbar-1 .primary{float:left}.example-actions-toolbar-1 .secondary{float:right}.example-actions-toolbar-1 .primary,.example-actions-toolbar-1 .secondary{display:inline-block}.example-actions-toolbar-1 .primary a.action,.example-actions-toolbar-1 .secondary a.action{display:inline-block}.example-actions-toolbar-1 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-1 .secondary a.action{margin-top:6px}.example-actions-toolbar-2:before,.example-actions-toolbar-2:after{content:"";display:table}.example-actions-toolbar-2:after{clear:both}.example-actions-toolbar-2 .primary{float:left}.example-actions-toolbar-2 .secondary{float:right}.example-actions-toolbar-2 .primary,.example-actions-toolbar-2 .secondary{display:inline-block}.example-actions-toolbar-2 .primary a.action,.example-actions-toolbar-2 .secondary a.action{display:inline-block}.example-actions-toolbar-2 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-2 .secondary a.action{margin-top:6px}.example-actions-toolbar-3{text-align:left}.example-actions-toolbar-3:before,.example-actions-toolbar-3:after{content:"";display:table}.example-actions-toolbar-3:after{clear:both}.example-actions-toolbar-3 .primary{float:left}.example-actions-toolbar-3 .primary,.example-actions-toolbar-3 .secondary{display:inline-block}.example-actions-toolbar-3 .primary a.action,.example-actions-toolbar-3 .secondary a.action{display:inline-block}.example-actions-toolbar-3 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-3 .secondary a.action{margin-top:6px}.example-actions-toolbar-4{text-align:right}.example-actions-toolbar-4:before,.example-actions-toolbar-4:after{content:"";display:table}.example-actions-toolbar-4:after{clear:both}.example-actions-toolbar-4 .secondary{float:right}.example-actions-toolbar-4 .primary,.example-actions-toolbar-4 .secondary{display:inline-block}.example-actions-toolbar-4 .primary a.action,.example-actions-toolbar-4 .secondary a.action{display:inline-block}.example-actions-toolbar-4 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-4 .secondary a.action{margin-top:6px}.example-actions-toolbar-5{text-align:center}.example-actions-toolbar-5:before,.example-actions-toolbar-5:after{content:"";display:table}.example-actions-toolbar-5:after{clear:both}.example-actions-toolbar-5 .primary,.example-actions-toolbar-5 .secondary{vertical-align:top}.example-actions-toolbar-5 .primary,.example-actions-toolbar-5 .secondary{display:inline-block}.example-actions-toolbar-5 .primary a.action,.example-actions-toolbar-5 .secondary a.action{display:inline-block}.example-actions-toolbar-5 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-5 .secondary a.action{margin-top:6px}.example-actions-toolbar-6:before,.example-actions-toolbar-6:after{content:"";display:table}.example-actions-toolbar-6:after{clear:both}.example-actions-toolbar-6 .primary{float:right}.example-actions-toolbar-6 .secondary{float:left}.example-actions-toolbar-6 .primary,.example-actions-toolbar-6 .secondary{display:inline-block}.example-actions-toolbar-6 .primary a.action,.example-actions-toolbar-6 .secondary a.action{display:inline-block}.example-actions-toolbar-6 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-6 .secondary a.action{margin-top:6px}.example-actions-toolbar-7{text-align:left}.example-actions-toolbar-7:before,.example-actions-toolbar-7:after{content:"";display:table}.example-actions-toolbar-7:after{clear:both}.example-actions-toolbar-7 .secondary{float:left}.example-actions-toolbar-7 .primary,.example-actions-toolbar-7 .secondary{display:inline-block}.example-actions-toolbar-7 .primary a.action,.example-actions-toolbar-7 .secondary a.action{display:inline-block}.example-actions-toolbar-7 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-7 .secondary a.action{margin-top:6px}.example-actions-toolbar-8{text-align:right}.example-actions-toolbar-8:before,.example-actions-toolbar-8:after{content:"";display:table}.example-actions-toolbar-8:after{clear:both}.example-actions-toolbar-8 .primary{float:right}.example-actions-toolbar-8 .primary,.example-actions-toolbar-8 .secondary{display:inline-block}.example-actions-toolbar-8 .primary a.action,.example-actions-toolbar-8 .secondary a.action{display:inline-block}.example-actions-toolbar-8 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-8 .secondary a.action{margin-top:6px}.example-actions-toolbar-9{margin:10px;padding:10px}.example-actions-toolbar-9:before,.example-actions-toolbar-9:after{content:"";display:table}.example-actions-toolbar-9:after{clear:both}.example-actions-toolbar-9 .primary{float:left}.example-actions-toolbar-9 .secondary{float:right}.example-actions-toolbar-9 .primary,.example-actions-toolbar-9 .secondary{display:inline-block}.example-actions-toolbar-9 .primary a.action,.example-actions-toolbar-9 .secondary a.action{display:inline-block}.example-actions-toolbar-9 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-9 .secondary a.action{margin-top:6px}.example-actions-toolbar-10{text-align:left}.example-actions-toolbar-10:before,.example-actions-toolbar-10:after{content:"";display:table}.example-actions-toolbar-10:after{clear:both}.example-actions-toolbar-10 .primary{float:left}.example-actions-toolbar-10 .primary,.example-actions-toolbar-10 .secondary{display:inline-block}.example-actions-toolbar-10 .primary a.action,.example-actions-toolbar-10 .secondary a.action{display:inline-block}.example-actions-toolbar-10 .primary .action{margin:0 50px 0 0}.example-actions-toolbar-10 .secondary a.action{margin-top:6px}.example-actions-toolbar-11{text-align:left}.example-actions-toolbar-11:before,.example-actions-toolbar-11:after{content:"";display:table}.example-actions-toolbar-11:after{clear:both}.example-actions-toolbar-11 .primary{float:left}.example-actions-toolbar-11 .primary,.example-actions-toolbar-11 .secondary{display:inline-block}.example-actions-toolbar-11 .primary a.action,.example-actions-toolbar-11 .secondary a.action{display:inline-block}.example-actions-toolbar-11 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-11 .secondary .action{margin:0 50px 0 0}.example-actions-toolbar-11 .secondary a.action{margin-top:6px}.example-actions-toolbar-12:before,.example-actions-toolbar-12:after{content:"";display:table}.example-actions-toolbar-12:after{clear:both}.example-actions-toolbar-12 .primary{float:left}.example-actions-toolbar-12 .secondary{float:right}.example-actions-toolbar-12 .primary,.example-actions-toolbar-12 .secondary{display:inline-block}.example-actions-toolbar-12 .primary a.action,.example-actions-toolbar-12 .secondary a.action{display:inline-block}.example-actions-toolbar-12 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-12 .secondary a.action{margin-top:6px}.example-actions-toolbar-12:before,.example-actions-toolbar-12:after{content:"";display:table}.example-actions-toolbar-12:after{clear:both}.example-actions-toolbar-12 .primary{float:left}.example-actions-toolbar-12 .secondary{float:right}.example-actions-toolbar-12 .primary,.example-actions-toolbar-12 .secondary{display:inline-block}.example-actions-toolbar-12 .primary a.action,.example-actions-toolbar-12 .secondary a.action{display:inline-block}.example-actions-toolbar-12 .primary .action{margin:0 5px 0 0}.example-actions-toolbar-12 .secondary a.action{margin-top:6px}@media only screen and (max-width: 768px){.example-actions-toolbar-12 .primary,.example-actions-toolbar-12 .secondary{ display:block;float:none}}.example-breadcrumbs-1{margin:0 0 20px}.example-breadcrumbs-1 .items{font-size:1.2rem;color:#a3a3a3;margin:0;padding:0;list-style:none none}.example-breadcrumbs-1 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-1 .item{margin:0}.example-breadcrumbs-1 a{color:#333;text-decoration:none}.example-breadcrumbs-1 a:visited{color:#333;text-decoration:none}.example-breadcrumbs-1 a:hover{color:#333;text-decoration:underline}.example-breadcrumbs-1 a:active{color:#333;text-decoration:none}.example-breadcrumbs-1 strong{font-weight:400}.example-breadcrumbs-1 .item:not(:last-child){display:inline-block;text-decoration:none}.example-breadcrumbs-1 .item:not(:last-child):after{font-family:'icons-blank-theme';content:'\e608';font-size:24px;line-height:18px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-breadcrumbs-2{margin:0 0 20px}.example-breadcrumbs-2 .items{font-size:1.2rem;color:#1979c3;margin:0;padding:0;list-style:none none}.example-breadcrumbs-2 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-2 .item{margin:0}.example-breadcrumbs-2 a{background-color:#ccc;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #f4f4f4 0, #ccc 100%);background-image:linear-gradient(to bottom, #f4f4f4 0, #ccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f4f4', endColorstr='#cccccc', GradientType=0);border:1px solid #ccc;display:inline-block;padding:3px 5px;color:#333;text-decoration:none}.example-breadcrumbs-2 a:visited{background-color:false;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,false 0,false 100%);background-image:linear-gradient(to bottom,false 0,false 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='false', endColorstr='false', GradientType=0);color:#333;text-decoration:none}.example-breadcrumbs-2 a:hover{background-color:#f4f4f4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #ccc 0, #f4f4f4 100%);background-image:linear-gradient(to bottom, #ccc 0, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#f4f4f4', GradientType=0);color:#333;text-decoration:none}.example-breadcrumbs-2 a:active{background-color:false;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,false 0,false 100%);background-image:linear-gradient(to bottom,false 0,false 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='false', endColorstr='false', GradientType=0);color:#333;text-decoration:none}.example-breadcrumbs-2 strong{background-color:#ff5501;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #f7b32e 0, #ff5501 100%);background-image:linear-gradient(to bottom, #f7b32e 0, #ff5501 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7b32e', endColorstr='#ff5501', GradientType=0);border:1px solid #d04b0a;display:inline-block;padding:3px 5px;font-weight:400}.example-breadcrumbs-2 .item:not(:last-child){display:inline-block;text-decoration:none}.example-breadcrumbs-2 .item:not(:last-child):after{font-family:'icons-blank-theme';content:'\e608';font-size:24px;line-height:18px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-breadcrumbs-3{margin:0 0 20px}.example-breadcrumbs-3 .items{font-size:1.2rem;color:#333;margin:0;padding:0;list-style:none none}.example-breadcrumbs-3 .items>li{display:inline-block;vertical-align:top}.example-breadcrumbs-3 .item{margin:0}.example-breadcrumbs-3 a{background:#f4f4f4;display:inline-block;padding:3px 5px;color:#333;text-decoration:none}.example-breadcrumbs-3 a:visited{color:#333;text-decoration:none}.example-breadcrumbs-3 a:hover{background:#ccc;color:#333;text-decoration:none}.example-breadcrumbs-3 a:active{color:#333;text-decoration:none}.example-breadcrumbs-3 strong{background:#e7e7e7;display:inline-block;padding:3px 5px;font-weight:400}.example-breadcrumbs-3 .item:not(:last-child){display:inline-block;text-decoration:none}.example-breadcrumbs-3 .item:not(:last-child):after{font-family:'icons-blank-theme';content:'\e608';font-size:24px;line-height:18px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-breadcrumbs-3 .item a{position:relative;margin:0 11px 0 0}.example-breadcrumbs-3 .item a:after{border:12px solid transparent;height:0;width:0;border-left-color:#f4f4f4;content:"";position:absolute;display:block;top:0;right:-23px}.example-breadcrumbs-3 .item a:hover:after{border-color:transparent transparent transparent #ccc}button{background-image:none;background:#f2f2f2;padding:7px 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:3px;vertical-align:middle;border-radius:3px}button:focus,button:active{background:#e2e2e2;border:1px solid #cdcdcd;color:#333}button:hover{background:#e2e2e2;border:1px solid #cdcdcd;color:#555}button.disabled,button[disabled],fieldset[disabled] button{cursor:default;pointer-events:none;opacity:.5}button:active,button:focus{box-shadow:inset 0 2px 1px rgba(0,0,0,.12)}.example-button-1.example-button-2{line-height:2.2rem;padding:14px 17px;font-size:1.8rem}.example-button-1.example-button-3{line-height:1.2rem;padding:5px 8px;font-size:1.1rem;border-radius:0;color:#000}.example-button-1.example-button-3:hover,.example-button-1.example-button-3.active{color:#000}.example-button-10{background:#f2f2f2;padding:7px 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.example-button-10>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-button-10:before{font-family:'icons-blank-theme';content:'\e611';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-button-10:hover:before{color:inherit}.example-button-10:active:before{color:inherit}.example-button-10:focus,.example-button-10:active{background:#e2e2e2;border:1px solid #cdcdcd;color:#333}.example-button-10:hover{background:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-10.disabled,.example-button-10[disabled],fieldset[disabled] .example-button-10{cursor:default;pointer-events:none;opacity:.5}.example-button-10:focus,.example-button-10:active{background:0;border:0}.example-button-10:hover{background:0;border:0}.example-button-10.disabled,.example-button-10[disabled],fieldset[disabled] .example-button-10{cursor:not-allowed;pointer-events:none;opacity:.5}.example-button-11{background-image:none;background:#f2f2f2;padding:7px 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;text-decoration:none}.example-button-11:before{font-family:'icons-blank-theme';content:'\e611';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-button-11:hover:before{color:inherit}.example-button-11:active:before{color:inherit}.example-button-11:focus,.example-button-11:active{background:#e2e2e2;border:1px solid #cdcdcd;color:#333}.example-button-11:hover{background:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-11.disabled,.example-button-11[disabled],fieldset[disabled] .example-button-11{cursor:default;pointer-events:none;opacity:.5}.example-button-12{background-image:none;background:#f2f2f2;padding:7px 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:3px;vertical-align:middle;display:inline-block;text-decoration:none}.example-button-12:after{font-family:'icons-blank-theme';content:'\e611';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-button-12:hover:after{color:inherit}.example-button-12:active:after{color:inherit}.example-button-12:focus,.example-button-12:active{background:#e2e2e2;border:1px solid #cdcdcd;color:#333}.example-button-12:hover{background:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-12.disabled,.example-button-12[disabled],fieldset[disabled] .example-button-12{cursor:default;pointer-events:none;opacity:.5}.example-button-13{background-image:none;background:#f2f2f2;padding:7px 15px;width:100px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:3px;vertical-align:middle}.example-button-13:focus,.example-button-13:active{background:#e2e2e2;border:1px solid #cdcdcd;color:#333}.example-button-13:hover{background:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-13.disabled,.example-button-13[disabled],fieldset[disabled] .example-button-13{cursor:default;pointer-events:none;opacity:.5}.example-button-4{background-image:none;background:#1979c3;padding:7px 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;box-sizing:border-box;margin:3px;vertical-align:middle}.example-button-4:focus,.example-button-4:active{background:#006bb4;border:1px solid #006bb4;color:#fff}.example-button-4:hover{background:#006bb4;border:1px solid #006bb4;color:#fff}.example-button-4.disabled,.example-button-4[disabled],fieldset[disabled] .example-button-4{cursor:default;pointer-events:none;opacity:.5}.example-button-4:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.example-button-4.example-button-5{line-height:2.2rem;padding:7px 35px;font-size:1.8rem}.example-button-4.example-button-6{line-height:1.2rem;padding:5px 8px;font-size:1.1rem;color:#fff}.example-button-4.example-button-6:hover,.example-button-4.example-button-6.active{color:#fff}.example-button-7{background-image:none;background:#f2f2f2;background-color:#006bb4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #1979c3 0, #006bb4 100%);background-image:linear-gradient(to bottom, #1979c3 0, #006bb4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1979c3', endColorstr='#006bb4', GradientType=0);padding:7px 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:3px;vertical-align:middle;border-radius:3px}.example-button-7:focus,.example-button-7:active{background:#e2e2e2;background-color:#006bb4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #006bb4 0, #006bb4 100%);background-image:linear-gradient(to bottom, #006bb4 0, #006bb4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#006bb4', endColorstr='#006bb4', GradientType=0);border:1px solid #006bb4;color:#fff}.example-button-7:hover{background:#e2e2e2;background-color:#1979c3;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #006bb4 0, #1979c3 100%);background-image:linear-gradient(to bottom, #006bb4 0, #1979c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#006bb4', endColorstr='#1979c3', GradientType=0);border:1px solid #006bb4;color:#fff}.example-button-7.disabled,.example-button-7[disabled],fieldset[disabled] .example-button-7{cursor:default;pointer-events:none;opacity:.5}.example-button-7:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.example-button-8{background:0;border:0;display:inline;line-height:1.42857143;margin:0;padding:0;color:#1979c3;text-decoration:none;font-weight:400}.example-button-8:visited{color:#1979c3;text-decoration:none}.example-button-8:hover{color:#006bb4;text-decoration:underline}.example-button-8:active{color:#ff5501;text-decoration:underline}.example-button-8:hover{color:#006bb4}.example-button-8:hover,.example-button-8:active,.example-button-8:focus{background:0;border:0}.example-button-8.disabled,.example-button-8[disabled],fieldset[disabled] .example-button-8{color:#1979c3;text-decoration:underline;cursor:default;pointer-events:none;opacity:.5}.example-button-8:active{box-shadow:none}.example-button-9{text-decoration:none;background-image:none;background:#f2f2f2;padding:7px 15px;color:#333;border:1px solid #cdcdcd;cursor:pointer;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;line-height:1.6rem;box-sizing:border-box;margin:0;vertical-align:middle;margin:3px;border-radius:3px;font-weight:700}.example-button-9:hover,.example-button-9:active,.example-button-9:focus{text-decoration:none}.example-button-9:focus,.example-button-9:active{background:#e2e2e2;border:1px solid #cdcdcd;color:#333}.example-button-9:hover{background:#e2e2e2;border:1px solid #cdcdcd;color:#555}.example-button-9.disabled,.example-button-9[disabled],fieldset[disabled] .example-button-9{cursor:default;pointer-events:none;opacity:.5}.example-button-9:active{box-shadow:inset 0 3px 1px rgba(0,0,0,.29)}.example-button-14{background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400}.example-button-14:focus,.example-button-14:active{background:0;border:0}.example-button-14:hover{background:0;border:0}.example-button-14.disabled,.example-button-14[disabled],fieldset[disabled] .example-button-14{cursor:not-allowed;pointer-events:none;opacity:.5}.example-button-15{background-image:none;background:#1979c3;padding:7px 15px;color:#fff;border:1px solid #1979c3;cursor:pointer;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:1.4rem;font-weight:700;box-sizing:border-box;vertical-align:middle;background:#f2f2f2;color:#333;border:1px solid #cdcdcd}.example-button-15:focus,.example-button-15:active{background:#006bb4;border:1px solid #006bb4;color:#fff}.example-button-15:hover{background:#006bb4;border:1px solid #006bb4;color:#fff}.example-button-15.disabled,.example-button-15[disabled],fieldset[disabled] .example-button-15{cursor:default;pointer-events:none;opacity:.5}.example-button-15:focus,.example-button-15:active{background:#e2e2e2;color:#333;border:1px solid #cdcdcd}.example-button-15:hover{background:#e2e2e2;color:#555;border:1px solid #cdcdcd}.example-button-17{line-height:2.2rem;padding:14px 17px;font-size:1.8rem;font-size:1.4rem;line-height:1.6rem;padding:7px 15px}.example-button-18{font-size:1rem;line-height:1.2rem;padding:4px 10px}.example-dropdown-1{display:inline-block;position:relative}.example-dropdown-1:before,.example-dropdown-1:after{content:"";display:table}.example-dropdown-1:after{clear:both}.example-dropdown-1 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-1 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-1 .action.toggle:hover:after{color:inherit}.example-dropdown-1 .action.toggle:active:after{color:inherit}.example-dropdown-1 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-1 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-1 .action.toggle.active:hover:after{color:inherit}.example-dropdown-1 .action.toggle.active:active:after{color:inherit}.example-dropdown-1 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-1 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-1 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-1 ul.dropdown:before,.example-dropdown-1 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-1 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-1 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-1 ul.dropdown:before{top:-12px;left:10px}.example-dropdown-1 ul.dropdown:after{top:-14px;left:9px}.example-dropdown-1.active{overflow:visible}.example-dropdown-1.active ul.dropdown{display:block}.example-dropdown-2{display:inline-block;position:relative}.example-dropdown-2:before,.example-dropdown-2:after{content:"";display:table}.example-dropdown-2:after{clear:both}.example-dropdown-2 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-2 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-2 .action.toggle:hover:after{color:inherit}.example-dropdown-2 .action.toggle:active:after{color:inherit}.example-dropdown-2 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-2 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-2 .action.toggle.active:hover:after{color:inherit}.example-dropdown-2 .action.toggle.active:active:after{color:inherit}.example-dropdown-2 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-2 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-2 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-2 ul.dropdown:before,.example-dropdown-2 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-2 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-2 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-2 ul.dropdown:before{top:-12px;left:10px}.example-dropdown-2 ul.dropdown:after{top:-14px;left:9px}.example-dropdown-2.active{overflow:visible}.example-dropdown-2.active ul.dropdown{display:block}.example-dropdown-3{display:inline-block;position:relative}.example-dropdown-3:before,.example-dropdown-3:after{content:"";display:table}.example-dropdown-3:after{clear:both}.example-dropdown-3 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-3 .action.toggle:before{font-family:'icons-blank-theme';content:'\e61c';font-size:22px;line-height:1;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-3 .action.toggle:hover:before{color:red}.example-dropdown-3 .action.toggle:active:before{color:inherit}.example-dropdown-3 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-3 .action.toggle.active:before{font-family:'icons-blank-theme';content:'\e60f';font-size:22px;line-height:1;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-3 .action.toggle.active:hover:before{color:red}.example-dropdown-3 .action.toggle.active:active:before{color:inherit}.example-dropdown-3 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-3 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-3 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-3 ul.dropdown:before,.example-dropdown-3 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-3 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-3 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-3 ul.dropdown:before{top:-12px;left:10px}.example-dropdown-3 ul.dropdown:after{top:-14px;left:9px}.example-dropdown-3.active{overflow:visible}.example-dropdown-3.active ul.dropdown{display:block}.example-dropdown-5{display:inline-block;position:relative}.example-dropdown-5:before,.example-dropdown-5:after{content:"";display:table}.example-dropdown-5:after{clear:both}.example-dropdown-5 .action.toggle{cursor:pointer;display:inline-block;text-decoration:none}.example-dropdown-5 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:1;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-5 .action.toggle:hover:after{color:inherit}.example-dropdown-5 .action.toggle:active:after{color:inherit}.example-dropdown-5 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-5 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:1;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-5 .action.toggle.active:hover:after{color:inherit}.example-dropdown-5 .action.toggle.active:active:after{color:inherit}.example-dropdown-5 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#eef1f3;border:2px solid #ced1d4;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none}.example-dropdown-5 ul.dropdown li{margin:0;padding:10px;border-top:2px solid #e8eaed}.example-dropdown-5 ul.dropdown li:first-child{border:0}.example-dropdown-5 ul.dropdown li:hover{background:#d8e3e3;cursor:pointer}.example-dropdown-5.active{overflow:visible}.example-dropdown-5.active ul.dropdown{display:block}.example-dropdown-6{display:inline-block;position:relative}.example-dropdown-6:before,.example-dropdown-6:after{content:"";display:table}.example-dropdown-6:after{clear:both}.example-dropdown-6 .action.split{float:left;margin:0}.example-dropdown-6 .action.toggle{float:right;margin:0}.example-dropdown-6 button.action.split{border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-6 button+.action.toggle{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-6 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.example-dropdown-6 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-6 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-6 .action.toggle:hover:after{color:inherit}.example-dropdown-6 .action.toggle:active:after{color:inherit}.example-dropdown-6 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-6 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-6 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-6 .action.toggle.active:hover:after{color:inherit}.example-dropdown-6 .action.toggle.active:active:after{color:inherit}.example-dropdown-6 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-6 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-6 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-6 ul.dropdown:before,.example-dropdown-6 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-6 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-6 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-6 ul.dropdown:before{top:-12px;right:10px}.example-dropdown-6 ul.dropdown:after{top:-14px;right:9px}.example-dropdown-6.active{overflow:visible}.example-dropdown-6.active ul.dropdown{display:block}.split.example-dropdown-7{display:inline-block;position:relative}.split.example-dropdown-7:before,.split.example-dropdown-7:after{content:"";display:table}.split.example-dropdown-7:after{clear:both}.split.example-dropdown-7 .action.split{float:left;margin:0}.split.example-dropdown-7 .action.toggle{float:right;margin:0}.split.example-dropdown-7 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.split.example-dropdown-7 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.split.example-dropdown-7 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.split.example-dropdown-7 .action.toggle:hover:after{color:inherit}.split.example-dropdown-7 .action.toggle:active:after{color:inherit}.split.example-dropdown-7 .action.toggle.active{display:inline-block;text-decoration:none}.split.example-dropdown-7 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.split.example-dropdown-7 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.split.example-dropdown-7 .action.toggle.active:hover:after{color:inherit}.split.example-dropdown-7 .action.toggle.active:active:after{color:inherit}.split.example-dropdown-7 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.split.example-dropdown-7 ul.dropdown li{margin:0;padding:3px 5px}.split.example-dropdown-7 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.split.example-dropdown-7 ul.dropdown:before,.split.example-dropdown-7 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.split.example-dropdown-7 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.split.example-dropdown-7 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.split.example-dropdown-7 ul.dropdown:before{top:-12px;right:10px}.split.example-dropdown-7 ul.dropdown:after{top:-14px;right:9px}.split.example-dropdown-7.active{overflow:visible}.split.example-dropdown-7.active ul.dropdown{display:block}.example-dropdown-8{display:inline-block;position:relative}.example-dropdown-8:before,.example-dropdown-8:after{content:"";display:table}.example-dropdown-8:after{clear:both}.example-dropdown-8 .action.split{float:left;margin:0}.example-dropdown-8 .action.toggle{float:right;margin:0}.example-dropdown-8 button.action.split{border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-8 button+.action.toggle{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-8 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.example-dropdown-8 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-8 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-8 .action.toggle:hover:after{color:inherit}.example-dropdown-8 .action.toggle:active:after{color:inherit}.example-dropdown-8 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-8 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-8 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-8 .action.toggle.active:hover:after{color:inherit}.example-dropdown-8 .action.toggle.active:active:after{color:inherit}.example-dropdown-8 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-8 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-8 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-8 ul.dropdown:before,.example-dropdown-8 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-8 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-8 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-8 ul.dropdown:before{top:-12px;right:10px}.example-dropdown-8 ul.dropdown:after{top:-14px;right:9px}.example-dropdown-8.active{overflow:visible}.example-dropdown-8.active ul.dropdown{display:block}.example-dropdown-9{display:inline-block;position:relative}.example-dropdown-9 .action.split,.example-dropdown-9 .action.toggle{line-height:2.2rem;padding:14px 17px;font-size:1.8rem}.example-dropdown-9:before,.example-dropdown-9:after{content:"";display:table}.example-dropdown-9:after{clear:both}.example-dropdown-9 .action.split{float:left;margin:0}.example-dropdown-9 .action.toggle{float:right;margin:0}.example-dropdown-9 button.action.split{border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-9 button+.action.toggle{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-9 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.example-dropdown-9 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-9 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-9 .action.toggle:hover:after{color:inherit}.example-dropdown-9 .action.toggle:active:after{color:inherit}.example-dropdown-9 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-9 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-9 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-9 .action.toggle.active:hover:after{color:inherit}.example-dropdown-9 .action.toggle.active:active:after{color:inherit}.example-dropdown-9 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-9 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-9 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-9 ul.dropdown:before,.example-dropdown-9 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-9 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-9 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-9 ul.dropdown:before{top:-12px;right:10px}.example-dropdown-9 ul.dropdown:after{top:-14px;right:9px}.example-dropdown-9.active{overflow:visible}.example-dropdown-9.active ul.dropdown{display:block}.example-dropdown-10{display:inline-block;position:relative}.example-dropdown-10 .action.split,.example-dropdown-10 .action.toggle{line-height:1.2rem;padding:5px 8px;font-size:1.1rem}.example-dropdown-10:before,.example-dropdown-10:after{content:"";display:table}.example-dropdown-10:after{clear:both}.example-dropdown-10 .action.split{float:left;margin:0}.example-dropdown-10 .action.toggle{float:right;margin:0}.example-dropdown-10 button.action.split{border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-10 button+.action.toggle{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-10 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.example-dropdown-10 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-10 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-10 .action.toggle:hover:after{color:inherit}.example-dropdown-10 .action.toggle:active:after{color:inherit}.example-dropdown-10 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-10 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-10 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-10 .action.toggle.active:hover:after{color:inherit}.example-dropdown-10 .action.toggle.active:active:after{color:inherit}.example-dropdown-10 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-10 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-10 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-10 ul.dropdown:before,.example-dropdown-10 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-10 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-10 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-10 ul.dropdown:before{top:-12px;right:10px}.example-dropdown-10 ul.dropdown:after{top:-14px;right:9px}.example-dropdown-10.active{overflow:visible}.example-dropdown-10.active ul.dropdown{display:block}.example-dropdown-11{display:inline-block;position:relative}.example-dropdown-11:before,.example-dropdown-11:after{content:"";display:table}.example-dropdown-11:after{clear:both}.example-dropdown-11 .action.split{float:right;margin:0}.example-dropdown-11 .action.toggle{float:left;margin:0}.example-dropdown-11 button.action.split{border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-11 button+.action.toggle{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-11 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.example-dropdown-11 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-11 .action.toggle:before{font-family:'icons-blank-theme';content:'\e61c';font-size:22px;line-height:22px;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-11 .action.toggle:hover:before{color:red}.example-dropdown-11 .action.toggle:active:before{color:inherit}.example-dropdown-11 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-11 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-11 .action.toggle.active:before{font-family:'icons-blank-theme';content:'\e60f';font-size:22px;line-height:22px;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-11 .action.toggle.active:hover:before{color:red}.example-dropdown-11 .action.toggle.active:active:before{color:inherit}.example-dropdown-11 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#fff;border:1px solid #bbb;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none;box-shadow:0 3px 3px rgba(0,0,0,.15)}.example-dropdown-11 ul.dropdown li{margin:0;padding:3px 5px}.example-dropdown-11 ul.dropdown li:hover{background:#e8e8e8;cursor:pointer}.example-dropdown-11 ul.dropdown:before,.example-dropdown-11 ul.dropdown:after{content:"";position:absolute;display:block;width:0;height:0;border-bottom-style:solid}.example-dropdown-11 ul.dropdown:before{z-index:99;border:solid 6px;border-color:transparent transparent #fff transparent}.example-dropdown-11 ul.dropdown:after{z-index:98;border:solid 7px;border-color:transparent transparent #bbb transparent}.example-dropdown-11 ul.dropdown:before{top:-12px;right:10px}.example-dropdown-11 ul.dropdown:after{top:-14px;right:9px}.example-dropdown-11.active{overflow:visible}.example-dropdown-11.active ul.dropdown{display:block}.example-dropdown-12{display:inline-block;position:relative}.example-dropdown-12:before,.example-dropdown-12:after{content:"";display:table}.example-dropdown-12:after{clear:both}.example-dropdown-12 .action.split{float:left;margin:0}.example-dropdown-12 .action.toggle{float:right;margin:0}.example-dropdown-12 button.action.split{border-top-right-radius:0;border-bottom-right-radius:0}.example-dropdown-12 button+.action.toggle{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.example-dropdown-12 .action.toggle{padding:4px 5px;display:inline-block;text-decoration:none}.example-dropdown-12 .action.toggle>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-12 .action.toggle:after{font-family:'icons-blank-theme';content:'\e607';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-12 .action.toggle:hover:after{color:inherit}.example-dropdown-12 .action.toggle:active:after{color:inherit}.example-dropdown-12 .action.toggle.active{display:inline-block;text-decoration:none}.example-dropdown-12 .action.toggle.active>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-dropdown-12 .action.toggle.active:after{font-family:'icons-blank-theme';content:'\e618';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.example-dropdown-12 .action.toggle.active:hover:after{color:inherit}.example-dropdown-12 .action.toggle.active:active:after{color:inherit}.example-dropdown-12 ul.dropdown{margin:0;padding:0;list-style:none none;box-sizing:border-box;background:#eef1f3;border:2px solid #ced1d4;position:absolute;z-index:100;top:100%;min-width:100%;margin-top:4px;display:none}.example-dropdown-12 ul.dropdown li{margin:0;padding:10px;border-top:2px solid #e8eaed}.example-dropdown-12 ul.dropdown li:first-child{border:0}.example-dropdown-12 ul.dropdown li:hover{background:#d8e3e3;cursor:pointer}.example-dropdown-12.active{overflow:visible}.example-dropdown-12.active ul.dropdown{display:block}.example-form-1 .example-form-1-fieldset{padding:0;margin:0 0 40px;border:0;letter-spacing:-.31em}.example-form-1 .example-form-1-fieldset>*{letter-spacing:normal}.example-form-1 .example-form-1-fieldset>.legend{margin:0 0 25px;padding:0;font-size:2rem;line-height:1.2;box-sizing:border-box;float:left}.example-form-1 .example-form-1-fieldset>.legend+br{display:block;visibility:hidden;height:0;overflow:hidden;clear:both}.example-form-1 .example-form-1-fieldset:after{content:attr(data-hasrequired);display:block;font-size:1.2rem;color:#e02b27;margin:10px 0 0;letter-spacing:normal;word-spacing:normal}.example-form-1 .example-form-1-fieldset>.field{margin:0 0 20px}.example-form-1 .example-form-1-fieldset>.field>.label{display:inline-block;margin:0 0 5px}.example-form-1 .example-form-1-fieldset>.field:last-child{margin-bottom:0}.example-form-1 .example-form-1-fieldset>.field>.label{font-weight:700}.example-form-1 .example-form-1-fieldset>.field>.label+br{display:none}.example-form-1 .example-form-1-fieldset>.field .choice input{vertical-align:top}.example-form-1 .example-form-1-fieldset>.field .fields.group:before,.example-form-1 .example-form-1-fieldset>.field .fields.group:after{content:"";display:table}.example-form-1 .example-form-1-fieldset>.field .fields.group:after{clear:both}.example-form-1 .example-form-1-fieldset>.field .fields.group .field{box-sizing:border-box;float:left}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-2 .field{width:50%!important}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-3 .field{width:33.3%!important}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-4 .field{width:25%!important}.example-form-1 .example-form-1-fieldset>.field .fields.group.group-5 .field{width:20%!important}.example-form-1 .example-form-1-fieldset>.field .addon{display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;padding:0;width:100%}.example-form-1 .example-form-1-fieldset>.field .addon textarea,.example-form-1 .example-form-1-fieldset>.field .addon select,.example-form-1 .example-form-1-fieldset>.field .addon input{-ms-flex-order:2;-webkit-order:2;order:2;-webkit-flex-basis:100%;flex-basis:100%;display:inline-block;margin:0;width:auto}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore,.example-form-1 .example-form-1-fieldset>.field .addon .addafter{-ms-flex-order:3;-webkit-order:3;order:3;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 9px;font-size:14px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.428571429;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore:disabled,.example-form-1 .example-form-1-fieldset>.field .addon .addafter:disabled{opacity:.5}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore::-moz-placeholder,.example-form-1 .example-form-1-fieldset>.field .addon .addafter::-moz-placeholder{color:#c2c2c2}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore::-webkit-input-placeholder,.example-form-1 .example-form-1-fieldset>.field .addon .addafter::-webkit-input-placeholder{color:#c2c2c2}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore:-ms-input-placeholder,.example-form-1 .example-form-1-fieldset>.field .addon .addafter:-ms-input-placeholder{color:#c2c2c2}.example-form-1 .example-form-1-fieldset>.field .addon .addbefore{float:left;-ms-flex-order:1;-webkit-order:1;order:1}.example-form-1 .example-form-1-fieldset>.field .additional{margin-top:10px}.example-form-1 .example-form-1-fieldset>.field.required>.label:after{content:'*';font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.example-form-1 .example-form-1-fieldset>.field .note{font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.example-form-1 .example-form-1-fieldset>.field .note:before{font-family:'icons-blank-theme';content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-form-2 .example-form-2-fieldset{padding:0;margin:0 0 40px;border:0;letter-spacing:-.31em}.example-form-2 .example-form-2-fieldset>*{letter-spacing:normal}.example-form-2 .example-form-2-fieldset>.legend{margin:0 0 25px;padding:0;font-size:2rem;line-height:1.2;box-sizing:border-box;float:left}.example-form-2 .example-form-2-fieldset>.legend+br{display:block;visibility:hidden;height:0;overflow:hidden;clear:both}.example-form-2 .example-form-2-fieldset>.field{margin:0 0 20px;box-sizing:border-box;display:inline-block;padding:0 12px 0 0;width:50%;vertical-align:top}.example-form-2 .example-form-2-fieldset>.field>.label{display:inline-block;margin:0 0 5px}.example-form-2 .example-form-2-fieldset>.field:last-child{margin-bottom:0}.example-form-2 .example-form-2-fieldset>.field+.fieldset{clear:both}.example-form-2 .example-form-2-fieldset>.field>.label{font-weight:700}.example-form-2 .example-form-2-fieldset>.field>.label+br{display:none}.example-form-2 .example-form-2-fieldset>.field .choice input{vertical-align:top}.example-form-2 .example-form-2-fieldset>.field .fields.group:before,.example-form-2 .example-form-2-fieldset>.field .fields.group:after{content:"";display:table}.example-form-2 .example-form-2-fieldset>.field .fields.group:after{clear:both}.example-form-2 .example-form-2-fieldset>.field .fields.group .field{box-sizing:border-box;float:left}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-2 .field{width:50%!important}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-3 .field{width:33.3%!important}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-4 .field{width:25%!important}.example-form-2 .example-form-2-fieldset>.field .fields.group.group-5 .field{width:20%!important}.example-form-2 .example-form-2-fieldset>.field .addon{display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;padding:0;width:100%}.example-form-2 .example-form-2-fieldset>.field .addon textarea,.example-form-2 .example-form-2-fieldset>.field .addon select,.example-form-2 .example-form-2-fieldset>.field .addon input{-ms-flex-order:2;-webkit-order:2;order:2;-webkit-flex-basis:100%;flex-basis:100%;display:inline-block;margin:0;width:auto}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore,.example-form-2 .example-form-2-fieldset>.field .addon .addafter{-ms-flex-order:3;-webkit-order:3;order:3;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 9px;font-size:14px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.428571429;background-clip:padding-box;vertical-align:baseline;width:auto;white-space:nowrap;vertical-align:middle}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore:disabled,.example-form-2 .example-form-2-fieldset>.field .addon .addafter:disabled{opacity:.5}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore::-moz-placeholder,.example-form-2 .example-form-2-fieldset>.field .addon .addafter::-moz-placeholder{color:#c2c2c2}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore::-webkit-input-placeholder,.example-form-2 .example-form-2-fieldset>.field .addon .addafter::-webkit-input-placeholder{color:#c2c2c2}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore:-ms-input-placeholder,.example-form-2 .example-form-2-fieldset>.field .addon .addafter:-ms-input-placeholder{color:#c2c2c2}.example-form-2 .example-form-2-fieldset>.field .addon .addbefore{float:left;-ms-flex-order:1;-webkit-order:1;order:1}.example-form-2 .example-form-2-fieldset>.field .additional{margin-top:10px}.example-form-2 .example-form-2-fieldset>.field.required>.label:after{content:'*';font-size:1.2rem;color:#e02b27;margin:0 0 0 5px}.example-form-2 .example-form-2-fieldset>.field .note{font-size:1.2rem;margin:3px 0 0;padding:0;display:inline-block;text-decoration:none}.example-form-2 .example-form-2-fieldset>.field .note:before{font-family:'icons-blank-theme';content:'\e618';font-size:24px;line-height:12px;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}input[type="text"],input[type="password"],input[type="url"],input[type="tel"],input[type="search"],input[type="number"],input[type="datetime"],input[type="email"]{box-sizing:border-box;background:#fff;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:0 9px;font-size:14px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.428571429;background-clip:padding-box;vertical-align:baseline;margin-bottom:20px}input[type="text"]:disabled,input[type="password"]:disabled,input[type="url"]:disabled,input[type="tel"]:disabled,input[type="search"]:disabled,input[type="number"]:disabled,input[type="datetime"]:disabled,input[type="email"]:disabled{opacity:.5}input[type="text"]::-moz-placeholder,input[type="password"]::-moz-placeholder,input[type="url"]::-moz-placeholder,input[type="tel"]::-moz-placeholder,input[type="search"]::-moz-placeholder,input[type="number"]::-moz-placeholder,input[type="datetime"]::-moz-placeholder,input[type="email"]::-moz-placeholder{color:#c2c2c2}input[type="text"]::-webkit-input-placeholder,input[type="password"]::-webkit-input-placeholder,input[type="url"]::-webkit-input-placeholder,input[type="tel"]::-webkit-input-placeholder,input[type="search"]::-webkit-input-placeholder,input[type="number"]::-webkit-input-placeholder,input[type="datetime"]::-webkit-input-placeholder,input[type="email"]::-webkit-input-placeholder{color:#c2c2c2}input[type="text"]:-ms-input-placeholder,input[type="password"]:-ms-input-placeholder,input[type="url"]:-ms-input-placeholder,input[type="tel"]:-ms-input-placeholder,input[type="search"]:-ms-input-placeholder,input[type="number"]:-ms-input-placeholder,input[type="datetime"]:-ms-input-placeholder,input[type="email"]:-ms-input-placeholder{color:#c2c2c2}select{box-sizing:border-box;background:#fff;border:1px solid #c2c2c2;border-radius:1px;height:32px;width:100%;padding:5px 10px 4px;font-size:14px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.428571429;background-clip:padding-box;vertical-align:baseline;margin-bottom:20px}select:disabled{opacity:.5}select[multiple="multiple"]{height:auto;margin-bottom:20px}textarea{box-sizing:border-box;background:#fff;border:1px solid #c2c2c2;border-radius:1px;height:auto;width:100%;padding:10px;margin:0;font-size:14px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:1.428571429;background-clip:padding-box;vertical-align:baseline;resize:vertical}textarea:disabled{opacity:.5}textarea::-moz-placeholder{color:#c2c2c2}textarea::-webkit-input-placeholder{color:#c2c2c2}textarea:-ms-input-placeholder{color:#c2c2c2}input[type="checkbox"]{margin:2px 5px 0 0}input[type="checkbox"]:disabled{opacity:.5}input[type="radio"]{margin:2px 5px 0 0}input[type="radio"]:disabled{opacity:.5}input.text-example-1,select.select-example-1,textarea.textarea-example-1{background:#fdf0d5;border-color:#fc0;color:#b30000}input.text-example-1:focus,select.select-example-1:focus,textarea.textarea-example-1:focus{border-color:#cff;color:#060}input.text-example-1:disabled,select.select-example-1:disabled,textarea.textarea-example-1:disabled{color:#fcc}input.text-example-1::-moz-placeholder,textarea.textarea-example-1::-moz-placeholder{color:#ccc}input.text-example-1::-webkit-input-placeholder,textarea.textarea-example-1::-webkit-input-placeholder{color:#ccc}input.text-example-1:-ms-input-placeholder,textarea.textarea-example-1:-ms-input-placeholder{color:#ccc}.number-example{-moz-appearance:textfield}.number-example::-webkit-inner-spin-button,.number-example::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.search-example{-webkit-appearance:none}.search-example::-webkit-search-cancel-button,.search-example::-webkit-search-decoration,.search-example::-webkit-search-results-button,.search-example::-webkit-search-results-decoration{-webkit-appearance:none}input,textarea,select{font-size:1.2rem;color:#e02b27}.example-icon-1{display:inline-block}.example-icon-1:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.example-icon-2{display:inline-block}.example-icon-2:after{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat -26px 0}.example-icon-3{display:inline-block}.example-icon-3>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-icon-3:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat -156px -52px}.example-icon-4{display:inline-block;text-decoration:none}.example-icon-4:before{font-family:'icons-blank-theme';content:'\e606';font-size:24px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-5{display:inline-block;text-decoration:none}.example-icon-5:after{font-family:'icons-blank-theme';content:'\e605';font-size:24px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-6{display:inline-block;text-decoration:none}.example-icon-6>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-icon-6:before{font-family:'icons-blank-theme';content:'\e61b';font-size:24px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-7{display:inline-block}.example-icon-7:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.example-icon-8{display:inline-block}.example-icon-8:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.example-icon-8:before{background-position:-182px 0}.example-icon-9{display:inline-block}.example-icon-9:after{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.example-icon-9:after{background-position:-52px -26px}.example-icon-10{display:inline-block}.example-icon-10:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.example-icon-10:before{background-position:-104px 0}.example-icon-11{display:inline-block}.example-icon-11:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.example-icon-11:before{width:30px;height:30px}.example-icon-11:after{width:30px;height:30px}.example-icon-11:before{background-color:#f1f1f1}.example-icon-12{display:inline-block;text-decoration:none}.example-icon-12:before{font-family:'icons-blank-theme';content:'\e612';font-size:28px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-13{display:inline-block;text-decoration:none}.example-icon-13:before{font-family:'icons-blank-theme';content:'\e612';font-size:inherit;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-13:before{font-size:26px;line-height:inherit}.example-icon-14{display:inline-block;text-decoration:none}.example-icon-14:before{font-family:'icons-blank-theme';content:'\e61d';font-size:26px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.example-icon-14>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.icons-image-list{list-style:none;padding:0}.icons-image-list li{float:left;width:33%}.icons-image-list li>span{display:inline-block}.icons-image-list li>span:before{content:'';display:inline-block;width:26px;height:26px;line-height:26px;vertical-align:middle;background:url('/pub/static/frontend/Magento/blank/en_US/images/blank-theme-icons.png') no-repeat 0 0}.icons-image-list li .icon-search:before{background-position:0 0}.icons-image-list li .icon-cart:before{background-position:-26px 0}.icons-image-list li .icon-arrow-down:before{background-position:-52px 0}.icons-image-list li .icon-arrow-up:before{background-position:-78px 0}.icons-image-list li .icon-grid:before{background-position:-104px 0}.icons-image-list li .icon-list:before{background-position:-130px 0}.icons-image-list li .icon-remove:before{background-position:-156px 0}.icons-image-list li .icon-star:before{background-position:-182px 0}.icons-image-list li .icon-pointer-down:before{background-position:-208px 0}.icons-image-list li .icon-pointer-up:before{background-position:-234px 0}.icons-image-list li .icon-pointer-left:before{background-position:-260px 0}.icons-image-list li .icon-pointer-right:before{background-position:-286px 0}.icons-image-list li .icon-compare-empty:before{background-position:0 -26px}.icons-image-list li .icon-compare-full:before{background-position:-26px -26px}.icons-image-list li .icon-wishlist-empty:before{background-position:-52px -26px}.icons-image-list li .icon-wishlist-full:before{background-position:-78px -26px}.icons-image-list li .icon-update:before{background-position:-104px -26px}.icons-image-list li .icon-collapse:before{background-position:-130px -26px}.icons-image-list li .icon-expand:before{background-position:-156px -26px}.icons-image-list li .icon-menu:before{background-position:-182px -26px}.icons-image-list li .icon-prev:before{background-position:-208px -26px}.icons-image-list li .icon-next:before{background-position:-234px -26px}.icons-image-list li .icon-settings:before{background-position:-260px -26px}.icons-image-list li .icon-info:before{background-position:-286px -26px}.icons-image-list li .icon-checkmark:before{background-position:0 -52px}.icons-image-list li .icon-calendar:before{background-position:-26px -52px}.icons-image-list li .icon-comment:before{background-position:-52px -52px}.icons-image-list li .icon-comment-reflected:before{background-position:-78px -52px}.icons-image-list li .icon-envelope:before{background-position:-104px -52px}.icons-image-list li .icon-warning:before{background-position:-130px -52px}.icons-image-list li .icon-trash:before{background-position:-156px -52px}.icons-image-list li .icon-flag:before{background-position:-182px -52px}.icons-image-list li .icon-location:before{background-position:-208px -52px}.icons-image-list li .icon-up:before{background-position:-234px -52px}.icons-image-list li .icon-down:before{background-position:-260px -52px}.icons-font-list{list-style:none;padding:0}.icons-font-list li{float:left;width:25%;margin-bottom:35px;text-align:center}.icons-font-list li>span{display:inline-block;text-decoration:none}.icons-font-list li>span:before{font-family:'icons-blank-theme';font-size:34px;line-height:inherit;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center}.icons-font-list li>span:before{content:attr(data-icon);margin:0 auto;display:block}.loader{position:fixed;top:0;right:0;bottom:0;left:0;background-color:rgba(255,255,255,.5);z-index:9999}.loader:before{border-radius:5px;background:transparent url('/pub/static/frontend/Magento/blank/en_US/images/loader-2.gif') no-repeat 50% 50%;box-sizing:border-box;content:'';position:absolute;top:0;right:0;left:0;bottom:0;margin:auto;width:160px;height:160px}.loading{position:relative}.loading:before{content:'';position:absolute;left:0;top:0;right:0;bottom:0;background:rgba(255,255,255,.5) url('/pub/static/frontend/Magento/blank/en_US/images/loader-2.gif') no-repeat 50% 50%}.example-message-info{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fdf0d5;color:#6f4400}.example-message-info a{color:#1979c3}.example-message-info a:hover{color:#006bb4}.example-message-info a:active{color:#006bb4}.example-message-warning{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fdf0d5;color:#6f4400}.example-message-warning a{color:#1979c3}.example-message-warning a:hover{color:#006bb4}.example-message-warning a:active{color:#006bb4}.example-message-error{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fae5e5;color:#e02b27}.example-message-error a{color:#1979c3}.example-message-error a:hover{color:#006bb4}.example-message-error a:active{color:#006bb4}.example-message-success{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#e5efe5;color:#006400}.example-message-success a{color:#1979c3}.example-message-success a:hover{color:#006bb4}.example-message-success a:active{color:#006bb4}.example-message-notice{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fdf0d5;color:#6f4400}.example-message-notice a{color:#1979c3}.example-message-notice a:hover{color:#006bb4}.example-message-notice a:active{color:#006bb4}.example-message-1{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fdf0d5;color:#6f4400;position:relative;padding-left:40px}.example-message-1 a{color:#1979c3}.example-message-1 a:hover{color:#006bb4}.example-message-1 a:active{color:#006bb4}.example-message-1>:first-child:before{font-family:'icons-blank-theme';content:'\e602';font-size:28px;line-height:28px;color:#c07600;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:18px;left:0;text-align:center;width:40px}.example-message-2{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fae5e5;color:#e02b27;position:relative;padding-right:40px}.example-message-2 a{color:#1979c3}.example-message-2 a:hover{color:#006bb4}.example-message-2 a:active{color:#006bb4}.example-message-2:before{content:'';position:absolute;width:30px;text-align:center;top:0;height:100%;display:block;padding:0;background:#b30000}.example-message-2>:first-child:before{content:'';position:absolute;overflow:hidden;top:50%;margin-top:-5px}.example-message-2>:first-child:after{font-family:'icons-blank-theme';content:'\e602';font-size:28px;line-height:28px;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:18px;left:0;text-align:center;width:30px}.example-message-2:before{right:0}.example-message-2>:first-child:before{border:5px solid transparent;height:0;width:0;border-right-color:#b30000;right:30px}.example-message-2>:first-child:after{right:0}.example-message-3{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#e5efe5;color:#006400;position:relative;padding-left:40px}.example-message-3 a{color:#1979c3}.example-message-3 a:hover{color:#006bb4}.example-message-3 a:active{color:#006bb4}.example-message-3:before{content:'';position:absolute;width:30px;text-align:center;top:0;height:100%;display:block;padding:0;background:#006400}.example-message-3>:first-child:before{content:'';position:absolute;overflow:hidden;top:50%;margin-top:-5px}.example-message-3>:first-child:after{font-family:'icons-blank-theme';content:'\e610';font-size:28px;line-height:28px;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:18px;left:0;text-align:center;width:30px}.example-message-3:before{left:0}.example-message-3>:first-child:before{border:5px solid transparent;height:0;width:0;border-left-color:#006400;left:30px}.example-message-3>:first-child:after{left:0}.example-message-4{display:block;margin:0 0 10px;padding:10px 20px;font-size:1.3rem;line-height:1.2em;background:#fc0;border-color:#ffa500;color:#000;position:relative;padding-left:40px;border-width:4px;border-radius:10px}.example-message-4 a{color:#00f}.example-message-4 a:hover{color:#009}.example-message-4 a:active{color:#006}.example-message-4:before{content:'';position:absolute;width:30px;text-align:center;top:0;height:100%;display:block;padding:0;background:#green}.example-message-4>:first-child:before{content:'';position:absolute;overflow:hidden;top:50%;margin-top:-5px}.example-message-4>:first-child:after{font-family:'icons-blank-theme';content:'\e606';font-size:28px;line-height:28px;color:#000;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;margin:-14px 0 0;position:absolute;top:15px;left:0;text-align:center;width:30px}.example-message-4:before{left:0}.example-message-4>:first-child:before{border:5px solid transparent;height:0;width:0;border-left-color:#green;left:30px}.example-message-4>:first-child:after{left:0}header.header{background-color:rgba(255,0,0,.2)}.column.main{background-color:rgba(255,255,0,.2)}.column.left{background-color:rgba(0,255,255,.2)}.column.right{background-color:rgba(0,0,255,.2)}footer.footer{background-color:rgba(0,0,0,.2)}.columns{box-sizing:border-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.columns:after{content:" ";display:block;height:0;clear:both;overflow:hidden;visibility:hidden}.columns>.column{padding-bottom:40px}@media (min-width: 600px){.page-layout-1column .column.main{ width:100%;-ms-flex-order:2;-webkit-order:2;order:2}.page-layout-3columns .column.main{width:66.66666667%;display:inline-block;-ms-flex-order:2;-webkit-order:2;order:2}.page-layout-2columns-left .column.main{width:83.33333333%;float:right;-ms-flex-order:2;-webkit-order:2;order:2}.page-layout-2columns-right .column.main{width:83.33333333%;float:left;-ms-flex-order:1;-webkit-order:1;order:1}.page-layout-3columns .column.left{width:16.66666667%;float:left;-ms-flex-order:1;-webkit-order:1;order:1}.page-layout-2columns-left .column.left{width:16.66666667%;float:left;-ms-flex-order:1;-webkit-order:1;order:1}.page-layout-2columns-right .column.left{width:16.66666667%;float:left;-ms-flex-order:1;-webkit-order:1;order:1}.page-layout-3columns .column.right{width:16.66666667%;float:right;-ms-flex-order:3;-webkit-order:3;order:3}.page-layout-2columns-left .column.right{width:16.66666667%;float:right;-ms-flex-order:2;-webkit-order:2;order:2}.page-layout-2columns-right .column.right{width:16.66666667%;float:right;-ms-flex-order:2;-webkit-order:2;order:2}}.layout-example-3 .column.main{width:60%;display:inline-block;-ms-flex-order:2;-webkit-order:2;order:2}.layout-example-3 .column.left{width:20%;float:left;-ms-flex-order:1;-webkit-order:1;order:1}.layout-example-3 .column.right{width:20%;float:right;-ms-flex-order:3;-webkit-order:3;order:3}.layout-example-3-1 .column.main{width:60%;float:left;-ms-flex-order:1;-webkit-order:1;order:1}.layout-example-3-1 .column.left{width:20%;display:inline-block;-ms-flex-order:2;-webkit-order:2;order:2}.layout-example-3-1 .column.right{width:20%;float:right;-ms-flex-order:3;-webkit-order:3;order:3}.pages>.label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.pages .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style:none none;display:inline-block;font-weight:700}.pages .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 2px 0 0;display:inline-block}.pages .item .label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.pages a.page{color:#1979c3;display:inline-block;padding:0 4px;text-decoration:none}.pages a.page:visited{color:#1979c3}.pages a.page:hover{color:#006bb4;text-decoration:none}.pages a.page:active{color:#ff5501}.pages strong.page{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;color:#333;display:inline-block;font-weight:700;padding:0 4px}.pages .action{border:1px solid #d1d1d1;color:#7d7d7d;display:inline-block;padding:0;text-decoration:none}.pages .action:visited{color:#7d7d7d}.pages .action:hover{color:#7d7d7d;text-decoration:none}.pages .action:active{color:#7d7d7d}.pages .action.next{display:inline-block;text-decoration:none}.pages .action.next:visited:before{color:#7d7d7d}.pages .action.next:active:before{color:#7d7d7d}.pages .action.next>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.pages .action.next:before{font-family:'icons-blank-theme';content:'\e608';font-size:46px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0 0 0 -6px}.pages .action.next:hover:before{color:#7d7d7d}.pages .action.next:active:before{color:#7d7d7d}.pages .action.previous{display:inline-block;text-decoration:none}.pages .action.previous:visited:before{color:#7d7d7d}.pages .action.previous:active:before{color:#7d7d7d}.pages .action.previous>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.pages .action.previous:before{font-family:'icons-blank-theme';content:'\e617';font-size:46px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0 0 0 -6px}.pages .action.previous:hover:before{color:#7d7d7d}.pages .action.previous:active:before{color:#7d7d7d}.example-pages-1>.label{display:inline-block;font-weight:700;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal}.example-pages-1>.label:after{content:':'}.example-pages-1 .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style:none none;display:inline-block;font-weight:700}.example-pages-1 .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 3px;display:inline-block}.example-pages-1 .item .label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-1 a.page{background-color:#ccc;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #f4f4f4 0, #ccc 100%);background-image:linear-gradient(to bottom, #f4f4f4 0, #ccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4f4f4', endColorstr='#cccccc', GradientType=0);border:1px solid #b3b3b3;color:#333;display:inline-block;padding:0 4px;text-decoration:none}.example-pages-1 a.page:visited{background-color:false;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,false 0,false 100%);background-image:linear-gradient(to bottom,false 0,false 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='false', endColorstr='false', GradientType=0);color:#1979c3}.example-pages-1 a.page:hover{background-color:#f4f4f4;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #ccc 0, #f4f4f4 100%);background-image:linear-gradient(to bottom, #ccc 0, #f4f4f4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#f4f4f4', GradientType=0);border:1px solid #999;color:#333;text-decoration:none}.example-pages-1 a.page:active{background-color:false;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top,false 0,false 100%);background-image:linear-gradient(to bottom,false 0,false 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='false', endColorstr='false', GradientType=0);color:#ff5501}.example-pages-1 strong.page{background:#1979c3;border:1px solid #135d96;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;color:#f7b32e;display:inline-block;font-weight:700;padding:0 4px}.example-pages-1 .action{border:1px solid #d1d1d1;color:#7d7d7d;display:inline-block;padding:0;text-decoration:none}.example-pages-1 .action:visited{color:#7d7d7d}.example-pages-1 .action:hover{color:#ff5501;text-decoration:none}.example-pages-1 .action:active{color:#7d7d7d}.example-pages-1 .action.next{display:inline-block;text-decoration:none}.example-pages-1 .action.next:visited:before{color:#7d7d7d}.example-pages-1 .action.next:active:before{color:#7d7d7d}.example-pages-1 .action.next>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-1 .action.next:before{font-family:'icons-blank-theme';content:'\e608';font-size:30px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0 0 0 -6px}.example-pages-1 .action.next:hover:before{color:#ff5501}.example-pages-1 .action.next:active:before{color:#7d7d7d}.example-pages-1 .action.previous{display:inline-block;text-decoration:none}.example-pages-1 .action.previous:visited:before{color:#7d7d7d}.example-pages-1 .action.previous:active:before{color:#7d7d7d}.example-pages-1 .action.previous>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-1 .action.previous:before{font-family:'icons-blank-theme';content:'\e617';font-size:30px;line-height:inherit;color:#7d7d7d;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0 0 0 -6px}.example-pages-1 .action.previous:hover:before{color:#ff5501}.example-pages-1 .action.previous:active:before{color:#7d7d7d}.example-pages-2>.label{display:inline-block;font-weight:700;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal}.example-pages-2>.label:after{content:':'}.example-pages-2 .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style:none none;display:inline-block;font-weight:700}.example-pages-2 .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 2px 0 0;display:inline-block}.example-pages-2 .item .label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-2 a.page{color:#1979c3;display:inline-block;padding:0 4px;text-decoration:none}.example-pages-2 a.page:visited{color:#1979c3}.example-pages-2 a.page:hover{color:#006bb4;text-decoration:none}.example-pages-2 a.page:active{color:#ff5501}.example-pages-2 strong.page{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;color:#333;display:inline-block;font-weight:700;padding:0 4px}.example-pages-2 .action{border:1px solid #d1d1d1;color:#7d7d7d;display:inline-block;padding:0;text-decoration:none}.example-pages-2 .action:visited{color:#7d7d7d}.example-pages-2 .action:hover{color:#7d7d7d;text-decoration:none}.example-pages-2 .action:active{color:#7d7d7d}.example-pages-3>.label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-3 .items{font-size:0;line-height:0;letter-spacing:-1px;white-space:nowrap;margin:0;padding:0;list-style:none none;display:inline-block;font-weight:700}.example-pages-3 .item{font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;margin:0 2px 0 0;display:inline-block}.example-pages-3 .item .label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-3 a.page{background:#1979c3;color:#fff;display:inline-block;padding:0 4px;text-decoration:none}.example-pages-3 a.page:visited{background:#1979c3;color:#fff}.example-pages-3 a.page:hover{background:#006bb4;color:#fff;text-decoration:none}.example-pages-3 a.page:active{background:#ff5501;color:#fff}.example-pages-3 strong.page{background:#1979c3;font-size:1.2rem;font-size:12px;line-height:32px;letter-spacing:normal;color:#fff;display:inline-block;font-weight:700;padding:0 4px}.example-pages-3 .action{background:#1979c3;border:1px solid #d1d1d1;color:#fff;display:inline-block;padding:0;text-decoration:none}.example-pages-3 .action:visited{background:#1979c3;color:#7d7d7d}.example-pages-3 .action:hover{background:#006bb4;color:#fff;text-decoration:none}.example-pages-3 .action:active{background:#ff5501;color:#fff}.example-pages-3 .action.next{display:inline-block;text-decoration:none}.example-pages-3 .action.next:visited:before{color:#7d7d7d}.example-pages-3 .action.next:active:before{color:#fff}.example-pages-3 .action.next>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-3 .action.next:before{font-family:'icons-blank-theme';content:'\e608';font-size:46px;line-height:inherit;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0 0 0 -6px}.example-pages-3 .action.next:hover:before{color:#fff}.example-pages-3 .action.next:active:before{color:#fff}.example-pages-3 .action.previous{display:inline-block;text-decoration:none}.example-pages-3 .action.previous:visited:before{color:#7d7d7d}.example-pages-3 .action.previous:active:before{color:#fff}.example-pages-3 .action.previous>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-pages-3 .action.previous:before{font-family:'icons-blank-theme';content:'\e617';font-size:46px;line-height:inherit;color:#fff;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0 0 0 -6px}.example-pages-3 .action.previous:hover:before{color:#fff}.example-pages-3 .action.previous:active:before{color:#fff}.window.popup.popup-example{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example .popup-actions .action.close:focus,.window.popup.popup-example .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example .popup-actions .action.close.disabled,.window.popup.popup-example .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example.active{opacity:1}.window.popup.popup-example-1{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-1 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-1 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-1 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-1 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-1 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-1 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-1 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-1 .popup-actions .action.close:focus,.window.popup.popup-example-1 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-1 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-1 .popup-actions .action.close.disabled,.window.popup.popup-example-1 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-1 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-1.active{opacity:1}.window.overlay{transition:opacity .15s linear;position:fixed;top:0;right:0;bottom:0;left:0;background:#000;z-index:1000;opacity:0}.window.overlay.active{opacity:.5;filter:alpha(opacity=50)}.window.popup.popup-example-2{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;overflow-y:auto;max-height:200px;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-2 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-2 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-2 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-2 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-2 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-2 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-2 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-2 .popup-actions .action.close:focus,.window.popup.popup-example-2 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-2 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-2 .popup-actions .action.close.disabled,.window.popup.popup-example-2 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-2 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-2.active{opacity:1}.window.popup.popup-example-3{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-3 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-3 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-3 .popup-content{overflow-y:auto;max-height:200px}.window.popup.popup-example-3 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-3 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-3 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-3 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-3 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-3 .popup-actions .action.close:focus,.window.popup.popup-example-3 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-3 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-3 .popup-actions .action.close.disabled,.window.popup.popup-example-3 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-3 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-3.active{opacity:1}.window.popup.popup-example-4{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-4 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-4 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-4 .popup-content{margin:0 0 20px}.window.popup.popup-example-4 .popup-footer{margin:0 20px}.window.popup.popup-example-4 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-4 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-4 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-4 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-4 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-4 .popup-actions .action.close:focus,.window.popup.popup-example-4 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-4 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-4 .popup-actions .action.close.disabled,.window.popup.popup-example-4 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-4 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-4.active{opacity:1}.window.popup.popup-example-5{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-5 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-5 .popup-header .title{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:0rem;margin-bottom:2rem}.window.popup.popup-example-5 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-5 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-5 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-5 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-5 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-5 .popup-actions .action.close:focus,.window.popup.popup-example-5 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-5 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-5 .popup-actions .action.close.disabled,.window.popup.popup-example-5 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-5 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-5.active{opacity:1}.window.popup.popup-example-6{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-6 .popup-footer .actions.toolbar{text-align:left}.window.popup.popup-example-6 .popup-footer .actions.toolbar:before,.window.popup.popup-example-6 .popup-footer .actions.toolbar:after{content:"";display:table}.window.popup.popup-example-6 .popup-footer .actions.toolbar:after{clear:both}.window.popup.popup-example-6 .popup-footer .actions.toolbar .secondary{float:left}.window.popup.popup-example-6 .popup-footer .actions.toolbar .primary,.window.popup.popup-example-6 .popup-footer .actions.toolbar .secondary{display:inline-block}.window.popup.popup-example-6 .popup-footer .actions.toolbar .primary a.action,.window.popup.popup-example-6 .popup-footer .actions.toolbar .secondary a.action{display:inline-block}.window.popup.popup-example-6 .popup-footer .actions.toolbar .primary .action{margin:0 5px 0 0}.window.popup.popup-example-6 .popup-footer .actions.toolbar .secondary a.action{margin-top:6px}.window.popup.popup-example-6 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-6 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-6 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-6 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-6 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-6 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-6 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-6 .popup-actions .action.close:focus,.window.popup.popup-example-6 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-6 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-6 .popup-actions .action.close.disabled,.window.popup.popup-example-6 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-6 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-6.active{opacity:1}.window.popup.popup-example-7{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-7 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-7 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-7 .popup-actions .action.close{position:absolute;top:10px;right:10px}.window.popup.popup-example-7.active{opacity:1}.window.popup.popup-example-8{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-8 .popup-header{margin:0 0 25px;padding-right:30px}.window.popup.popup-example-8 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-8 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-8 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e613';font-size:30px;line-height:22px;color:red;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:middle;text-align:center;margin:0}.window.popup.popup-example-8 .popup-actions .action.close:hover:before{color:#090}.window.popup.popup-example-8 .popup-actions .action.close:active:before{color:#00f}.window.popup.popup-example-8 .popup-actions .action.close:focus,.window.popup.popup-example-8 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-8 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-8 .popup-actions .action.close.disabled,.window.popup.popup-example-8 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-8 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-8.active{opacity:1}.window.popup.popup-example-9{background:#fff;border:1px solid #aeaeae;padding:22px;width:auto;box-shadow:0 3px 3px rgba(0,0,0,.15);top:0;right:0;bottom:0;left:0;display:none;opacity:0;position:fixed;z-index:1001;transition:opacity .3s linear}.window.popup.popup-example-9 .popup-header{margin:0 0 25px;padding-right:22px}.window.popup.popup-example-9 .popup-header .title{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}.window.popup.popup-example-9 .popup-actions .action.close{position:absolute;display:inline-block;background-image:none;background:0;border:0;margin:0;padding:0;-moz-box-sizing:content-box;box-shadow:none;text-shadow:none;text-decoration:none;line-height:inherit;font-weight:400;top:10px;right:10px}.window.popup.popup-example-9 .popup-actions .action.close>span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.window.popup.popup-example-9 .popup-actions .action.close:before{font-family:'icons-blank-theme';content:'\e616';font-size:22px;line-height:22px;color:inherit;overflow:hidden;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;display:inline-block;vertical-align:top;text-align:center;margin:0}.window.popup.popup-example-9 .popup-actions .action.close:hover:before{color:inherit}.window.popup.popup-example-9 .popup-actions .action.close:active:before{color:inherit}.window.popup.popup-example-9 .popup-actions .action.close:focus,.window.popup.popup-example-9 .popup-actions .action.close:active{background:0;border:0}.window.popup.popup-example-9 .popup-actions .action.close:hover{background:0;border:0}.window.popup.popup-example-9 .popup-actions .action.close.disabled,.window.popup.popup-example-9 .popup-actions .action.close[disabled],fieldset[disabled] .window.popup.popup-example-9 .popup-actions .action.close{cursor:not-allowed;pointer-events:none;opacity:.5}.window.popup.popup-example-9.active{opacity:1}.window.overlay.example-overlay-1.active{transition:opacity .15s linear;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f5293;z-index:1000;opacity:0}.window.overlay.example-overlay-1.active.active{opacity:.8;filter:alpha(opacity=80)}.example-ratings-1{overflow:hidden}.example-ratings-1:before{color:#c7c7c7;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.example-ratings-1 input[type="radio"]{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-1 input[type="radio"]:focus+label:before,.example-ratings-1 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-1 label{position:absolute;display:block;cursor:pointer}.example-ratings-1 label span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-1 label:before{color:#ff5601;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;opacity:0}.example-ratings-1 label:hover:before{opacity:1}.example-ratings-1 label:hover~label:before{opacity:0}.example-ratings-1 .rating-5{z-index:2}.example-ratings-1 .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-1 .rating-4{z-index:3}.example-ratings-1 .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.example-ratings-1 .rating-3{z-index:4}.example-ratings-1 .rating-3:before{content:'\e605' '\e605' '\e605'}.example-ratings-1 .rating-2{z-index:5}.example-ratings-1 .rating-2:before{content:'\e605' '\e605'}.example-ratings-1 .rating-1{z-index:6}.example-ratings-1 .rating-1:before{content:'\e605'}.example-ratings-2{overflow:hidden}.example-ratings-2:before{color:#c7c7c7;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.example-ratings-2 input[type="radio"]{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-2 input[type="radio"]:focus+label:before,.example-ratings-2 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-2 label{position:absolute;display:block;cursor:pointer}.example-ratings-2 label span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-2 label:before{color:#ff5601;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;opacity:0}.example-ratings-2 label:hover:before{opacity:1}.example-ratings-2 label:hover~label:before{opacity:0}.example-ratings-2 .rating-8{z-index:2}.example-ratings-2 .rating-8:before{content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-7{z-index:3}.example-ratings-2 .rating-7:before{content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-6{z-index:4}.example-ratings-2 .rating-6:before{content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-5{z-index:5}.example-ratings-2 .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-4{z-index:6}.example-ratings-2 .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.example-ratings-2 .rating-3{z-index:7}.example-ratings-2 .rating-3:before{content:'\e605' '\e605' '\e605'}.example-ratings-2 .rating-2{z-index:8}.example-ratings-2 .rating-2:before{content:'\e605' '\e605'}.example-ratings-2 .rating-1{z-index:9}.example-ratings-2 .rating-1:before{content:'\e605'}.example-ratings-3{overflow:hidden}.example-ratings-3:before{color:#aff5e3;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.example-ratings-3 input[type="radio"]{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-3 input[type="radio"]:focus+label:before,.example-ratings-3 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-3 label{position:absolute;display:block;cursor:pointer}.example-ratings-3 label span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-3 label:before{color:#0a6767;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;opacity:0}.example-ratings-3 label:hover:before{opacity:1}.example-ratings-3 label:hover~label:before{opacity:0}.example-ratings-3 .rating-5{z-index:2}.example-ratings-3 .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.example-ratings-3 .rating-4{z-index:3}.example-ratings-3 .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.example-ratings-3 .rating-3{z-index:4}.example-ratings-3 .rating-3:before{content:'\e605' '\e605' '\e605'}.example-ratings-3 .rating-2{z-index:5}.example-ratings-3 .rating-2:before{content:'\e605' '\e605'}.example-ratings-3 .rating-1{z-index:6}.example-ratings-3 .rating-1:before{content:'\e605'}.example-ratings-4{overflow:hidden}.example-ratings-4:before{color:#c7c7c7;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;content:'\e600' '\e600' '\e600' '\e600' '\e600';position:absolute;z-index:1;display:block}.example-ratings-4 input[type="radio"]{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-4 input[type="radio"]:focus+label:before,.example-ratings-4 input[type="radio"]:checked+label:before{opacity:1}.example-ratings-4 label{position:absolute;display:block;cursor:pointer}.example-ratings-4 label span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-ratings-4 label:before{color:#ff5601;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;opacity:0}.example-ratings-4 label:hover:before{opacity:1}.example-ratings-4 label:hover~label:before{opacity:0}.example-ratings-4 .rating-5{z-index:2}.example-ratings-4 .rating-5:before{content:'\e600' '\e600' '\e600' '\e600' '\e600'}.example-ratings-4 .rating-4{z-index:3}.example-ratings-4 .rating-4:before{content:'\e600' '\e600' '\e600' '\e600'}.example-ratings-4 .rating-3{z-index:4}.example-ratings-4 .rating-3:before{content:'\e600' '\e600' '\e600'}.example-ratings-4 .rating-2{z-index:5}.example-ratings-4 .rating-2:before{content:'\e600' '\e600'}.example-ratings-4 .rating-1{z-index:6}.example-ratings-4 .rating-1:before{content:'\e600'}.exapmle-ratings-5 .control.rating.vote{overflow:hidden}.exapmle-ratings-5 .control.rating.vote:before{color:#c7c7c7;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;content:'\e605' '\e605' '\e605' '\e605' '\e605';position:absolute;z-index:1;display:block}.exapmle-ratings-5 .control.rating.vote input[type="radio"]{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.exapmle-ratings-5 .control.rating.vote input[type="radio"]:focus+label:before,.exapmle-ratings-5 .control.rating.vote input[type="radio"]:checked+label:before{opacity:1}.exapmle-ratings-5 .control.rating.vote label{position:absolute;display:block;cursor:pointer}.exapmle-ratings-5 .control.rating.vote label span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.exapmle-ratings-5 .control.rating.vote label:before{color:#ff5601;font-family:'icons-blank-theme';font-style:normal;font-size:28px;line-height:28px;letter-spacing:-10px;height:28px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased;vertical-align:top;opacity:0}.exapmle-ratings-5 .control.rating.vote label:hover:before{opacity:1}.exapmle-ratings-5 .control.rating.vote label:hover~label:before{opacity:0}.exapmle-ratings-5 .control.rating.vote .rating-5{z-index:2}.exapmle-ratings-5 .control.rating.vote .rating-5:before{content:'\e605' '\e605' '\e605' '\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-4{z-index:3}.exapmle-ratings-5 .control.rating.vote .rating-4:before{content:'\e605' '\e605' '\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-3{z-index:4}.exapmle-ratings-5 .control.rating.vote .rating-3:before{content:'\e605' '\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-2{z-index:5}.exapmle-ratings-5 .control.rating.vote .rating-2:before{content:'\e605' '\e605'}.exapmle-ratings-5 .control.rating.vote .rating-1{z-index:6}.exapmle-ratings-5 .control.rating.vote .rating-1:before{content:'\e605'}.example-rating-summary-1{white-space:nowrap;overflow:hidden}.example-rating-summary-1 .rating-result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-1 .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#c7c7c7;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-1 .rating-result>span{display:block;overflow:hidden}.example-rating-summary-1 .rating-result>span:before{position:relative;z-index:2;color:#ff5601;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-1 .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-2{white-space:nowrap;overflow:hidden}.example-rating-summary-2 .rating-result{width:154px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-2 .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#c7c7c7;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-2 .rating-result>span{display:block;overflow:hidden}.example-rating-summary-2 .rating-result>span:before{position:relative;z-index:2;color:#ff5601;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-2 .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-3{white-space:nowrap;overflow:hidden}.example-rating-summary-3 .rating-result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-3 .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#aff5e3;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-3 .rating-result>span{display:block;overflow:hidden}.example-rating-summary-3 .rating-result>span:before{position:relative;z-index:2;color:#0a6767;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-3 .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-4{white-space:nowrap;overflow:hidden}.example-rating-summary-4 .rating-result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-4 .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#c7c7c7;display:block;font-family:'icons-blank-theme';content:'\e600' '\e600' '\e600' '\e600' '\e600';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-4 .rating-result>span{display:block;overflow:hidden}.example-rating-summary-4 .rating-result>span:before{position:relative;z-index:2;color:#ff5601;display:block;font-family:'icons-blank-theme';content:'\e600' '\e600' '\e600' '\e600' '\e600';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-4 .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-5{white-space:nowrap;overflow:hidden}.example-rating-summary-5 .label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-5 .rating-result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-5 .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#c7c7c7;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-5 .rating-result>span{display:block;overflow:hidden}.example-rating-summary-5 .rating-result>span:before{position:relative;z-index:2;color:#ff5601;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-5 .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-6 .rating-summary{white-space:nowrap;overflow:hidden}.example-rating-summary-6 .rating-summary .rating-result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-6 .rating-summary .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#c7c7c7;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-6 .rating-summary .rating-result>span{display:block;overflow:hidden}.example-rating-summary-6 .rating-summary .rating-result>span:before{position:relative;z-index:2;color:#ff5601;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-6 .rating-summary .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-7{white-space:nowrap;overflow:hidden}.example-rating-summary-7 .rating-result{width:100px;display:inline-block;vertical-align:middle;position:relative}.example-rating-summary-7 .rating-result:before{position:absolute;top:0;left:0;width:100%;z-index:1;color:#c7c7c7;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-7 .rating-result>span{display:block;overflow:hidden}.example-rating-summary-7 .rating-result>span:before{position:relative;z-index:2;color:#ff5601;display:block;font-family:'icons-blank-theme';content:'\e605' '\e605' '\e605' '\e605' '\e605';font-style:normal;font-size:28px;height:28px;line-height:28px;letter-spacing:-10px;speak:none;font-weight:400;-webkit-font-smoothing:antialiased}.example-rating-summary-7 .rating-result>span span{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-rating-summary-7 .label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-responsive-block{padding:10px}.example-sections-1{position:relative;z-index:1}.example-sections-1:before,.example-sections-1:after{content:"";display:table}.example-sections-1:after{clear:both}.example-sections-1>.item.title{float:left;width:auto}.example-sections-1>.item.title>.switch{display:block;height:20px;position:relative;z-index:2}.example-sections-1>.item.content{box-sizing:border-box;float:right;margin-top:20px;margin-left:-100%;width:100%}.example-sections-1>.item.content:before,.example-sections-1>.item.content:after{content:"";display:table}.example-sections-1>.item.content:after{clear:both}.example-sections-1>.item.content.active{display:block}.example-sections-1>.item.title{margin:0 5px 0 0}.example-sections-1>.item.title>.switch{font-size:1.4rem;font-weight:600;line-height:20px;color:#7d7d7d;text-decoration:none;background:#f0f0f0;border:1px solid #d1d1d1;border-bottom:0;height:20px;padding:5px 20px 5px 20px}.example-sections-1>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-1>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-1>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-1>.item.title:not(.disabled)>.switch:focus,.example-sections-1>.item.title:not(.disabled)>.switch:hover{background:#fcfcfc}.example-sections-1>.item.title:not(.disabled)>.switch:active,.example-sections-1>.item.title.active>.switch,.example-sections-1>.item.title.active>.switch:focus,.example-sections-1>.item.title.active>.switch:hover{background:#fff;color:#333}.example-sections-1>.item.title.active>.switch,.example-sections-1>.item.title.active>.switch:focus,.example-sections-1>.item.title.active>.switch:hover{padding-bottom:6px}.example-sections-1>.item.content{background:#fff;margin-top:31px;padding:20px 20px 20px 20px;border:1px solid #d1d1d1}.example-sections-2{position:relative;z-index:1}.example-sections-2:before,.example-sections-2:after{content:"";display:table}.example-sections-2:after{clear:both}.example-sections-2>.item.title{float:left;width:auto}.example-sections-2>.item.title>.switch{display:block;height:20px;position:relative;z-index:2}.example-sections-2>.item.content{box-sizing:border-box;float:right;margin-top:20px;margin-left:-100%;width:100%}.example-sections-2>.item.content:before,.example-sections-2>.item.content:after{content:"";display:table}.example-sections-2>.item.content:after{clear:both}.example-sections-2>.item.content.active{display:block}.example-sections-2>.item.title{margin:0 5px 0 0}.example-sections-2>.item.title>.switch{font-size:1.4rem;font-weight:600;line-height:20px;color:#7d7d7d;text-decoration:none;background:#f0f0f0;border:1px solid #d1d1d1;border-bottom:0;height:20px;padding:5px 20px 5px 20px}.example-sections-2>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-2>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-2>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-2>.item.title:not(.disabled)>.switch:focus,.example-sections-2>.item.title:not(.disabled)>.switch:hover{background:#fcfcfc}.example-sections-2>.item.title:not(.disabled)>.switch:active,.example-sections-2>.item.title.active>.switch,.example-sections-2>.item.title.active>.switch:focus,.example-sections-2>.item.title.active>.switch:hover{background:#fff;color:#333}.example-sections-2>.item.title.active>.switch,.example-sections-2>.item.title.active>.switch:focus,.example-sections-2>.item.title.active>.switch:hover{padding-bottom:6px}.example-sections-2>.item.content{background:#fff;margin-top:31px;padding:20px 20px 20px 20px;border:0;border-top:1px solid #d1d1d1}.example-sections-3{margin:0;padding:0}.example-sections-3>.item.title{box-sizing:border-box;float:none;width:100%}.example-sections-3>.item.title>.switch{display:block}.example-sections-3>.item.content{box-sizing:border-box;float:none;margin:0;display:block}.example-sections-3>.item.content:before,.example-sections-3>.item.content:after{content:"";display:table}.example-sections-3>.item.content:after{clear:both}.example-sections-3>.item.content.active{display:block}.example-sections-3>.item.title{margin:0 0 5px}.example-sections-3>.item.title>.switch{background:#f0f0f0;border-top:1px solid #d1d1d1;border-right:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;border-left:1px solid #d1d1d1;height:40px;padding:5px 20px 5px 20px;font-size:1.8rem;font-weight:600;line-height:40px;color:#7d7d7d;text-decoration:none}.example-sections-3>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-3>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-3>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-3>.item.title:not(.disabled)>.switch:focus,.example-sections-3>.item.title:not(.disabled)>.switch:hover{background:#fcfcfc}.example-sections-3>.item.title:not(.disabled)>.switch:active,.example-sections-3>.item.title.active>.switch,.example-sections-3>.item.title.active>.switch:focus,.example-sections-3>.item.title.active>.switch:hover{background:#fff;padding-bottom:5px}.example-sections-3>.item.content{background:#fff;border:1px solid #d1d1d1;margin:0 0 5px;padding:20px 20px 20px 20px}@media only screen and (max-width: 99999px){.example-sections-4{ position:relative;z-index:1}.example-sections-4:before,.example-sections-4:after{content:"";display:table}.example-sections-4:after{clear:both}.example-sections-4>.item.title{float:left;width:auto}.example-sections-4>.item.title>.switch{display:block;height:20px;position:relative;z-index:2}.example-sections-4>.item.content{box-sizing:border-box;float:right;margin-top:20px;margin-left:-100%;width:100%}.example-sections-4>.item.content:before,.example-sections-4>.item.content:after{content:"";display:table}.example-sections-4>.item.content:after{clear:both}.example-sections-4>.item.content.active{display:block}.example-sections-4>.item.title{margin:0 5px 0 0}.example-sections-4>.item.title>.switch{font-size:1.4rem;font-weight:600;line-height:20px;color:#7d7d7d;text-decoration:none;background:#f0f0f0;border:1px solid #d1d1d1;border-bottom:0;height:20px;padding:5px 20px 5px 20px}.example-sections-4>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-4>.item.title:not(.disabled)>.switch:focus,.example-sections-4>.item.title:not(.disabled)>.switch:hover{background:#fcfcfc}.example-sections-4>.item.title:not(.disabled)>.switch:active,.example-sections-4>.item.title.active>.switch,.example-sections-4>.item.title.active>.switch:focus,.example-sections-4>.item.title.active>.switch:hover{background:#fff;color:#333}.example-sections-4>.item.title.active>.switch,.example-sections-4>.item.title.active>.switch:focus,.example-sections-4>.item.title.active>.switch:hover{padding-bottom:6px}.example-sections-4>.item.content{background:#fff;margin-top:31px;padding:20px 20px 20px 20px;border:1px solid #d1d1d1}}@media only screen and (max-width: 768px){.example-sections-4{ margin:0;padding:0}.example-sections-4>.item.title{box-sizing:border-box;float:none;width:100%}.example-sections-4>.item.title>.switch{display:block}.example-sections-4>.item.content{box-sizing:border-box;float:none;margin:0;display:block}.example-sections-4>.item.content:before,.example-sections-4>.item.content:after{content:"";display:table}.example-sections-4>.item.content:after{clear:both}.example-sections-4>.item.content.active{display:block}.example-sections-4>.item.title{margin:0 0 5px}.example-sections-4>.item.title>.switch{background:#f0f0f0;border-top:1px solid #d1d1d1;border-right:1px solid #d1d1d1;border-bottom:1px solid #d1d1d1;border-left:1px solid #d1d1d1;height:40px;padding:5px 20px 5px 20px;font-size:1.8rem;font-weight:600;line-height:40px;color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:visited{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:hover{color:#7d7d7d;text-decoration:none}.example-sections-4>.item.title>.switch:active{color:#333;text-decoration:none}.example-sections-4>.item.title:not(.disabled)>.switch:focus,.example-sections-4>.item.title:not(.disabled)>.switch:hover{background:#fcfcfc}.example-sections-4>.item.title:not(.disabled)>.switch:active,.example-sections-4>.item.title.active>.switch,.example-sections-4>.item.title.active>.switch:focus,.example-sections-4>.item.title.active>.switch:hover{background:#fff;padding-bottom:5px}.example-sections-4>.item.content{background:#fff;border:1px solid #d1d1d1;margin:0 0 5px;padding:20px 20px 20px 20px}}.example-sections-5{position:relative;z-index:1}.example-sections-5:before,.example-sections-5:after{content:"";display:table}.example-sections-5:after{clear:both}.example-sections-5>.item.title{float:left;width:auto}.example-sections-5>.item.title>.switch{display:block;height:20px;position:relative;z-index:2}.example-sections-5>.item.content{box-sizing:border-box;float:right;margin-top:20px;margin-left:-100%;width:100%}.example-sections-5>.item.content:before,.example-sections-5>.item.content:after{content:"";display:table}.example-sections-5>.item.content:after{clear:both}.example-sections-5>.item.content.active{display:block}.example-sections-6{margin:0;padding:0}.example-sections-6>.item.title{box-sizing:border-box;float:none;width:100%}.example-sections-6>.item.title>.switch{display:block}.example-sections-6>.item.content{box-sizing:border-box;float:none;margin:0;display:block}.example-sections-6>.item.content:before,.example-sections-6>.item.content:after{content:"";display:table}.example-sections-6>.item.content:after{clear:both}.example-sections-6>.item.content.active{display:block}.example-table-1{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-1 th{text-align:left}.example-table-1>tbody>tr>th,.example-table-1>tfoot>tr>th,.example-table-1>tbody>tr>td,.example-table-1>tfoot>tr>td{vertical-align:top}.example-table-1>thead>tr>th,.example-table-1>thead>tr>td{vertical-align:bottom}.example-table-1>thead>tr>th,.example-table-1>tbody>tr>th,.example-table-1>tfoot>tr>th,.example-table-1>thead>tr>td,.example-table-1>tbody>tr>td,.example-table-1>tfoot>tr>td{padding:8px 10px}.example-table-2>thead>tr>th,.example-table-2>tbody>tr>th,.example-table-2>tfoot>tr>th{color:#111;font-weight:700}.example-table-3{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-3 th{text-align:left}.example-table-3>tbody>tr>th,.example-table-3>tfoot>tr>th,.example-table-3>tbody>tr>td,.example-table-3>tfoot>tr>td{vertical-align:top}.example-table-3>thead>tr>th,.example-table-3>thead>tr>td{vertical-align:bottom}.example-table-3>thead>tr>th,.example-table-3>tbody>tr>th,.example-table-3>tfoot>tr>th,.example-table-3>thead>tr>td,.example-table-3>tbody>tr>td,.example-table-3>tfoot>tr>td{padding:8px 10px}.example-table-3>caption{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-table-4{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-4 th{text-align:left}.example-table-4>tbody>tr>th,.example-table-4>tfoot>tr>th,.example-table-4>tbody>tr>td,.example-table-4>tfoot>tr>td{vertical-align:top}.example-table-4>thead>tr>th,.example-table-4>thead>tr>td{vertical-align:bottom}.example-table-4>thead>tr>th,.example-table-4>tbody>tr>th,.example-table-4>tfoot>tr>th,.example-table-4>thead>tr>td,.example-table-4>tbody>tr>td,.example-table-4>tfoot>tr>td{padding:8px 10px}.example-table-4>thead>tr>td,.example-table-4>tbody>tr>td,.example-table-4>tfoot>tr>td{padding:15px 25px 5px 0}.example-table-4>thead>tr>th,.example-table-4>tbody>tr>th,.example-table-4>tfoot>tr>th{padding:15px 25px 10px 0}.example-table-5{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;background:#fff}.example-table-5 th{text-align:left}.example-table-5>tbody>tr>th,.example-table-5>tfoot>tr>th,.example-table-5>tbody>tr>td,.example-table-5>tfoot>tr>td{vertical-align:top}.example-table-5>thead>tr>th,.example-table-5>thead>tr>td{vertical-align:bottom}.example-table-5>thead>tr>th,.example-table-5>tbody>tr>th,.example-table-5>tfoot>tr>th,.example-table-5>thead>tr>td,.example-table-5>tbody>tr>td,.example-table-5>tfoot>tr>td{padding:8px 10px}.example-table-5>thead{background:#ccf}.example-table-5>tfoot{background:#cff}.example-table-5>tbody>tr>td{background:#fcc}.example-table-5>tbody>tr>th{background:#ffc}.example-table-6{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;border:1px solid #d1d1d1}.example-table-6 th{text-align:left}.example-table-6>tbody>tr>th,.example-table-6>tfoot>tr>th,.example-table-6>tbody>tr>td,.example-table-6>tfoot>tr>td{vertical-align:top}.example-table-6>thead>tr>th,.example-table-6>thead>tr>td{vertical-align:bottom}.example-table-6>thead>tr>th,.example-table-6>tbody>tr>th,.example-table-6>tfoot>tr>th,.example-table-6>thead>tr>td,.example-table-6>tbody>tr>td,.example-table-6>tfoot>tr>td{padding:8px 10px}.example-table-6>thead>tr>th,.example-table-6>tbody>tr>th,.example-table-6>tfoot>tr>th,.example-table-6>thead>tr>td,.example-table-6>tbody>tr>td,.example-table-6>tfoot>tr>td{border:1px solid #d1d1d1}.example-table-7{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-7 th{text-align:left}.example-table-7>tbody>tr>th,.example-table-7>tfoot>tr>th,.example-table-7>tbody>tr>td,.example-table-7>tfoot>tr>td{vertical-align:top}.example-table-7>thead>tr>th,.example-table-7>thead>tr>td{vertical-align:bottom}.example-table-7>thead>tr>th,.example-table-7>tbody>tr>th,.example-table-7>tfoot>tr>th,.example-table-7>thead>tr>td,.example-table-7>tbody>tr>td,.example-table-7>tfoot>tr>td{padding:8px 10px}.example-table-7>thead>tr>th,.example-table-7>tbody>tr>th,.example-table-7>tfoot>tr>th,.example-table-7>thead>tr>td,.example-table-7>tbody>tr>td,.example-table-7>tfoot>tr>td{border-top:1px solid #d1d1d1}.example-table-7>caption+thead>tr:first-child>th,.example-table-7>colgroup+thead>tr:first-child>th,.example-table-7>thead:first-child>tr:first-child>th,.example-table-7>caption+thead>tr:first-child>td,.example-table-7>colgroup+thead>tr:first-child>td,.example-table-7>thead:first-child>tr:first-child>td{border-top:0}.example-table-7>tbody+tbody{border-top:1px solid #d1d1d1}.example-table-8{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-8 th{text-align:left}.example-table-8>tbody>tr>th,.example-table-8>tfoot>tr>th,.example-table-8>tbody>tr>td,.example-table-8>tfoot>tr>td{vertical-align:top}.example-table-8>thead>tr>th,.example-table-8>thead>tr>td{vertical-align:bottom}.example-table-8>thead>tr>th,.example-table-8>tbody>tr>th,.example-table-8>tfoot>tr>th,.example-table-8>thead>tr>td,.example-table-8>tbody>tr>td,.example-table-8>tfoot>tr>td{padding:8px 10px}.example-table-8>thead>tr>th,.example-table-8>tbody>tr>th,.example-table-8>tfoot>tr>th,.example-table-8>thead>tr>td,.example-table-8>tbody>tr>td,.example-table-8>tfoot>tr>td{border-left:1px solid #d1d1d1}.example-table-8>thead>tr>th:first-child,.example-table-8>tbody>tr>th:first-child,.example-table-8>tfoot>tr>th:first-child,.example-table-8>thead>tr>td:first-child,.example-table-8>tbody>tr>td:first-child,.example-table-8>tfoot>tr>td:first-child{border-left:0}.example-table-9{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;border:0}.example-table-9 th{text-align:left}.example-table-9>tbody>tr>th,.example-table-9>tfoot>tr>th,.example-table-9>tbody>tr>td,.example-table-9>tfoot>tr>td{vertical-align:top}.example-table-9>thead>tr>th,.example-table-9>thead>tr>td{vertical-align:bottom}.example-table-9>thead>tr>th,.example-table-9>tbody>tr>th,.example-table-9>tfoot>tr>th,.example-table-9>thead>tr>td,.example-table-9>tbody>tr>td,.example-table-9>tfoot>tr>td{padding:8px 10px}.example-table-9>thead>tr>th,.example-table-9>tbody>tr>th,.example-table-9>tfoot>tr>th,.example-table-9>thead>tr>td,.example-table-9>tbody>tr>td,.example-table-9>tfoot>tr>td{border:0}.example-table-9>thead>tr>th,.example-table-9>thead>tr>td{border-bottom:1px solid #d1d1d1}.example-table-10{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;border:0}.example-table-10 th{text-align:left}.example-table-10>tbody>tr>th,.example-table-10>tfoot>tr>th,.example-table-10>tbody>tr>td,.example-table-10>tfoot>tr>td{vertical-align:top}.example-table-10>thead>tr>th,.example-table-10>thead>tr>td{vertical-align:bottom}.example-table-10>thead>tr>th,.example-table-10>tbody>tr>th,.example-table-10>tfoot>tr>th,.example-table-10>thead>tr>td,.example-table-10>tbody>tr>td,.example-table-10>tfoot>tr>td{padding:8px 10px}.example-table-10>thead>tr>th,.example-table-10>tbody>tr>th,.example-table-10>tfoot>tr>th,.example-table-10>thead>tr>td,.example-table-10>tbody>tr>td,.example-table-10>tfoot>tr>td{border:0}.example-table-11{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-11 th{text-align:left}.example-table-11>tbody>tr>th,.example-table-11>tfoot>tr>th,.example-table-11>tbody>tr>td,.example-table-11>tfoot>tr>td{vertical-align:top}.example-table-11>thead>tr>th,.example-table-11>thead>tr>td{vertical-align:bottom}.example-table-11>thead>tr>th,.example-table-11>tbody>tr>th,.example-table-11>tfoot>tr>th,.example-table-11>thead>tr>td,.example-table-11>tbody>tr>td,.example-table-11>tfoot>tr>td{padding:8px 10px}.example-table-11>tbody>tr:nth-child(even)>td,.example-table-11>tbody>tr:nth-child(even)>th{background:#ffc;color:#000}.example-table-12{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%}.example-table-12 th{text-align:left}.example-table-12>tbody>tr>th,.example-table-12>tfoot>tr>th,.example-table-12>tbody>tr>td,.example-table-12>tfoot>tr>td{vertical-align:top}.example-table-12>thead>tr>th,.example-table-12>thead>tr>td{vertical-align:bottom}.example-table-12>thead>tr>th,.example-table-12>tbody>tr>th,.example-table-12>tfoot>tr>th,.example-table-12>thead>tr>td,.example-table-12>tbody>tr>td,.example-table-12>tfoot>tr>td{padding:8px 10px}.example-table-12>tbody>tr:nth-child(even):hover>td,.example-table-12>tbody>tr:nth-child(even):hover>th{background:#f0f0f0}.example-table-12>tbody>tr:nth-child(odd):hover>td,.example-table-12>tbody>tr:nth-child(odd):hover>th{background:#f0f0f0}.example-table-13{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;border:1px solid #d1d1d1}.example-table-13 th{text-align:left}.example-table-13>tbody>tr>th,.example-table-13>tfoot>tr>th,.example-table-13>tbody>tr>td,.example-table-13>tfoot>tr>td{vertical-align:top}.example-table-13>thead>tr>th,.example-table-13>thead>tr>td{vertical-align:bottom}.example-table-13>thead>tr>th,.example-table-13>tbody>tr>th,.example-table-13>tfoot>tr>th,.example-table-13>thead>tr>td,.example-table-13>tbody>tr>td,.example-table-13>tfoot>tr>td{padding:8px 10px}.example-table-13>thead>tr>th,.example-table-13>tbody>tr>th,.example-table-13>tfoot>tr>th,.example-table-13>thead>tr>td,.example-table-13>tbody>tr>td,.example-table-13>tfoot>tr>td{border:1px solid #d1d1d1}.example-table-13>tbody>tr:nth-child(odd)>td,.example-table-13>tbody>tr:nth-child(odd)>th{background:#fff}.example-table-13>tbody>tr:nth-child(even):hover>td,.example-table-13>tbody>tr:nth-child(even):hover>th{background:#f0f0f0}.example-table-13>tbody>tr:nth-child(odd):hover>td,.example-table-13>tbody>tr:nth-child(odd):hover>th{background:#f0f0f0}@media only screen and (max-width: 768px){.example-table-14{ width:100%;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}}.example-table-15{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;border:1px solid #d1d1d1}.example-table-15 th{text-align:left}.example-table-15>tbody>tr>th,.example-table-15>tfoot>tr>th,.example-table-15>tbody>tr>td,.example-table-15>tfoot>tr>td{vertical-align:top}.example-table-15>thead>tr>th,.example-table-15>thead>tr>td{vertical-align:bottom}.example-table-15>thead>tr>th,.example-table-15>tbody>tr>th,.example-table-15>tfoot>tr>th,.example-table-15>thead>tr>td,.example-table-15>tbody>tr>td,.example-table-15>tfoot>tr>td{padding:8px 10px}.example-table-15>thead>tr>th,.example-table-15>tbody>tr>th,.example-table-15>tfoot>tr>th,.example-table-15>thead>tr>td,.example-table-15>tbody>tr>td,.example-table-15>tfoot>tr>td{border:1px solid #d1d1d1}.example-table-15>tbody>tr:nth-child(odd)>td,.example-table-15>tbody>tr:nth-child(odd)>th{background:#fff}.example-table-15>tbody>tr:nth-child(even):hover>td,.example-table-15>tbody>tr:nth-child(even):hover>th{background:#f0f0f0}.example-table-15>tbody>tr:nth-child(odd):hover>td,.example-table-15>tbody>tr:nth-child(odd):hover>th{background:#f0f0f0}@media only screen and (max-width: 768px){.example-table-15{ border:0;display:block;background:#cff}.example-table-15>tbody>tr:nth-child(odd)>td,.example-table-15>tbody>tr:nth-child(odd)>th{background:#cff}.example-table-15>tbody>tr:nth-child(even):hover>td,.example-table-15>tbody>tr:nth-child(even):hover>th{background:#cff}.example-table-15>tbody>tr:nth-child(odd):hover>td,.example-table-15>tbody>tr:nth-child(odd):hover>th{background:#cff}.example-table-15>thead>tr>th{display:none}.example-table-15>tbody{display:block}.example-table-15>tbody>tr{display:block}.example-table-15>tbody>tr td,.example-table-15>tbody>tr th{border-bottom:0;display:block;padding:5px 0}.example-table-15>tbody>tr td:before,.example-table-15>tbody>tr th:before{content:attr(data-th) ":";display:inline-block;padding-right:10px;color:#111;font-weight:700}.example-table-15>tbody>tr td{background:#cff}.example-table-15>tbody>tr>th{background-color:#ffc!important}}.example-tooltip-bottom{position:relative}.example-tooltip-bottom .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;color:#333;line-height:1.4;border:1px solid #bbb;top:100%;left:0;margin-top:5px}.example-tooltip-bottom .tooltip-content:after,.example-tooltip-bottom .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-bottom .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-bottom .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-bottom .tooltip-content:after,.example-tooltip-bottom .tooltip-content:before{bottom:100%}.example-tooltip-bottom .tooltip-content:after{border-bottom-color:#fff;margin-left:-5px;left:15px}.example-tooltip-bottom .tooltip-content:before{border-bottom-color:#bbb;margin-left:-6px;left:15px}.example-tooltip-bottom .tooltip-toggle{cursor:help}.example-tooltip-bottom .tooltip-toggle:hover+.tooltip-content,.example-tooltip-bottom .tooltip-toggle:focus+.tooltip-content,.example-tooltip-bottom:hover .tooltip-content{display:block}.example-tooltip-left{position:relative}.example-tooltip-left .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;color:#333;line-height:1.4;border:1px solid #bbb;right:100%;top:0;margin-right:5px}.example-tooltip-left .tooltip-content:after,.example-tooltip-left .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-left .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-left .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-left .tooltip-content:after,.example-tooltip-left .tooltip-content:before{left:100%}.example-tooltip-left .tooltip-content:after{border-left-color:#fff;margin-top:-5px;top:15px}.example-tooltip-left .tooltip-content:before{border-left-color:#bbb;margin-top:-6px;top:15px}.example-tooltip-left .tooltip-toggle{cursor:help}.example-tooltip-left .tooltip-toggle:hover+.tooltip-content,.example-tooltip-left .tooltip-toggle:focus+.tooltip-content,.example-tooltip-left:hover .tooltip-content{display:block}.example-tooltip-right{position:relative}.example-tooltip-right .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;color:#333;line-height:1.4;border:1px solid #bbb;left:100%;top:0;margin-left:5px}.example-tooltip-right .tooltip-content:after,.example-tooltip-right .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-right .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-right .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-right .tooltip-content:after,.example-tooltip-right .tooltip-content:before{right:100%}.example-tooltip-right .tooltip-content:after{border-right-color:#fff;margin-top:-5px;top:15px}.example-tooltip-right .tooltip-content:before{border-right-color:#bbb;margin-top:-6px;top:15px}.example-tooltip-right .tooltip-toggle{cursor:help}.example-tooltip-right .tooltip-toggle:hover+.tooltip-content,.example-tooltip-right .tooltip-toggle:focus+.tooltip-content,.example-tooltip-right:hover .tooltip-content{display:block}.example-tooltip-top{position:relative}.example-tooltip-top .tooltip-content{z-index:100;background:#fff;min-width:210px;max-width:360px;padding:12px 16px;display:none;position:absolute;text-align:left;color:#333;line-height:1.4;border:1px solid #bbb;bottom:100%;left:0;margin-bottom:5px}.example-tooltip-top .tooltip-content:after,.example-tooltip-top .tooltip-content:before{border:solid transparent;content:'';height:0;width:0;position:absolute}.example-tooltip-top .tooltip-content:after{border-color:transparent;border-width:5px}.example-tooltip-top .tooltip-content:before{border-color:transparent;border-width:6px}.example-tooltip-top .tooltip-content:after,.example-tooltip-top .tooltip-content:before{top:100%}.example-tooltip-top .tooltip-content:after{border-top-color:#fff;margin-left:-5px;left:15px}.example-tooltip-top .tooltip-content:before{border-top-color:#bbb;margin-left:-6px;left:15px}.example-tooltip-top .tooltip-toggle{cursor:help}.example-tooltip-top .tooltip-toggle:hover+.tooltip-content,.example-tooltip-top .tooltip-toggle:focus+.tooltip-content,.example-tooltip-top:hover .tooltip-content{display:block}html{font-size:62.5%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-size-adjust:100%}body{font-size:1.4rem;color:#333;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143}p{margin-top:0rem;margin-bottom:1rem}abbr[title]{cursor:help;border-bottom:1px dotted #d1d1d1}b,strong{font-weight:700}em,i{font-style:italic}mark{background:#f0f0f0;color:#000}small,.small{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #d1d1d1}sub,sup{font-size:71.42857143%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dfn{font-style:italic}h1{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:0rem;margin-bottom:2rem}h2{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:2.5rem;margin-bottom:2rem}h3{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}h4{font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:2rem;margin-bottom:2rem}h5{font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:2rem;margin-bottom:2rem}h6{font-size:1rem;font-weight:700;line-height:1.1;margin-top:2rem;margin-bottom:2rem}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small{color:#333;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1}a,.alink{color:#1979c3;text-decoration:none}a:visited,.alink:visited{color:#1979c3;text-decoration:none}a:hover,.alink:hover{color:#006bb4;text-decoration:underline}a:active,.alink:active{color:#ff5501;text-decoration:underline}ul,ol{margin-top:0rem;margin-bottom:2.5rem}ul>li,ol>li{margin-top:0rem;margin-bottom:1rem}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}dl{margin-top:0;margin-bottom:20px}dt{font-weight:700;margin-top:0;margin-bottom:5px}dd{margin-top:0;margin-bottom:10px;margin-left:0}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,'Courier New',monospace}code{background:#f0f0f0;color:#111;font-size:1.2rem;padding:2px 4px;white-space:nowrap}kbd{background:#f0f0f0;color:#111;font-size:1.2rem;padding:2px 4px}pre{background:#f0f0f0;border:1px solid #d1d1d1;color:#111;display:block;font-size:1.2rem;margin:0 0 10px;line-height:1.42857143;padding:10px;word-wrap:break-word}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}blockquote{border-left:0 solid #d1d1d1;margin:0 0 20px 40px;padding:0;font-size:1.4rem;color:#333;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:italic;line-height:1.42857143}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{color:#333;display:block;font-size:1rem;line-height:1.42857143}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote cite{font-style:normal}blockquote:before,blockquote:after{content:""}q{quotes:none}q:before,q:after{content:'';content:none}cite{font-style:normal}.example{font-size:2.5rem}.example-line-height{line-height:3rem}.example-word-wrap{word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto;background:#ccc;width:120px}.example-text-overflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#ccc;width:120px}.example-text-hide{background-color:transparent;border:0;font:0/0 a;color:transparent;text-shadow:none}.example-hyphens{word-wrap:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.example-hyphens-none{word-wrap:break-word;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.example-typography{font-size:3rem;color:#fc0;font-family:Menlo,Monaco,Consolas,'Courier New',monospace;font-weight:500;font-style:italic;line-height:1.2}.example-list-reset-styles{margin:0;padding:0;list-style:none none}.example-list-inline{margin:0;padding:0;list-style:none none}.example-list-inline>li{display:inline-block;vertical-align:top}.example-link-default{color:#1979c3;text-decoration:none}.example-link-default:visited{color:#1979c3;text-decoration:none}.example-link-default:hover{color:#006bb4;text-decoration:underline}.example-link-default:active{color:#ff5501;text-decoration:underline}.example-link{color:#008000;text-decoration:none}.example-link:visited{color:#1979c3;text-decoration:none}.example-link:hover{color:#ffa500;text-decoration:none}.example-link:active{color:#ff5501;text-decoration:underline}.example-heading{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:0rem;margin-bottom:2rem}.example-heading-2{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:2.5rem;margin-bottom:2rem}html{font-size:62.5%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-size-adjust:100%}body{font-size:1.4rem;color:#333;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1.42857143}p{margin-top:0rem;margin-bottom:1rem}abbr[title]{cursor:help;border-bottom:1px dotted #d1d1d1}b,strong{font-weight:700}em,i{font-style:italic}mark{background:#f0f0f0;color:#000}small,.small{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #d1d1d1}sub,sup{font-size:71.42857143%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}dfn{font-style:italic}h1{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:0rem;margin-bottom:2rem}h2{font-size:2.6rem;font-weight:300;line-height:1.1;margin-top:2.5rem;margin-bottom:2rem}h3{font-size:1.8rem;font-weight:300;line-height:1.1;margin-top:1.5rem;margin-bottom:1rem}h4{font-size:1.4rem;font-weight:700;line-height:1.1;margin-top:2rem;margin-bottom:2rem}h5{font-size:1.2rem;font-weight:700;line-height:1.1;margin-top:2rem;margin-bottom:2rem}h6{font-size:1rem;font-weight:700;line-height:1.1;margin-top:2rem;margin-bottom:2rem}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small{color:#333;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:normal;line-height:1}a,.alink{color:#1979c3;text-decoration:none}a:visited,.alink:visited{color:#1979c3;text-decoration:none}a:hover,.alink:hover{color:#006bb4;text-decoration:underline}a:active,.alink:active{color:#ff5501;text-decoration:underline}ul,ol{margin-top:0rem;margin-bottom:2.5rem}ul>li,ol>li{margin-top:0rem;margin-bottom:1rem}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}dl{margin-top:0;margin-bottom:20px}dt{font-weight:700;margin-top:0;margin-bottom:5px}dd{margin-top:0;margin-bottom:10px;margin-left:0}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,'Courier New',monospace}code{background:#f0f0f0;color:#111;font-size:1.2rem;padding:2px 4px;white-space:nowrap}kbd{background:#f0f0f0;color:#111;font-size:1.2rem;padding:2px 4px}pre{background:#f0f0f0;border:1px solid #d1d1d1;color:#111;display:block;font-size:1.2rem;margin:0 0 10px;line-height:1.42857143;padding:10px;word-wrap:break-word}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}blockquote{border-left:0 solid #d1d1d1;margin:0 0 20px 40px;padding:0;font-size:1.4rem;color:#333;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;font-style:italic;line-height:1.42857143}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{color:#333;display:block;font-size:1rem;line-height:1.42857143}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote cite{font-style:normal}blockquote:before,blockquote:after{content:""}q{quotes:none}q:before,q:after{content:'';content:none}cite{font-style:normal}.example-clearfix-container-1{border:1px solid red}.example-clearfix-container-2{border:1px solid #0f0}.example-clearfix-container-2:before,.example-clearfix-container-2:after{content:"";display:table}.example-clearfix-container-2:after{clear:both}.example-clearfix-item.left{float:left}.example-clearfix-item.right{float:right}.example-visibility-hidden{height:0;visibility:hidden}.example-visually-hidden-1{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-visually-hidden-2{background:#fdf0d5;padding:5px;border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.example-visually-hidden-2{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.example-css-container{padding:20px;background:#e8e8e8}.example-rotate{background:red;position:absolute;height:20px;width:40px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.example-placeholder::-webkit-input-placeholder{color:#808080;font-weight:700}.example-placeholder:-moz-placeholder{color:#808080;font-weight:700}.example-placeholder::-moz-placeholder{color:#808080;font-weight:700}.example-placeholder:-ms-input-placeholder{color:#808080;font-weight:700}.example-background-gradient-1{background-color:#ccf;background-repeat:repeat-x;background-image:-webkit-linear-gradient(top, #cff 0, #ccf 100%);background-image:linear-gradient(to bottom, #cff 0, #ccf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ccffff', endColorstr='#ccccff', GradientType=0)}.example-background-gradient-2{background-color:#ccf;background-repeat:repeat-x;background-image:-webkit-linear-gradient(left,color-stop( #cff 0),color-stop( #ccf 100%));background-image:linear-gradient(to right, #cff 0, #ccf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ccffff', endColorstr='#ccccff', GradientType=1)}.example-background-gradient-3-wrapper{background:#ffc;padding:10px}.example-background-gradient-3{background-color:rgba(255,255,255,0);background-repeat:repeat-x;background-image:-webkit-linear-gradient(left,color-stop(rgba(255,255,255,0) 0),color-stop( #ccf 100%));background-image:linear-gradient(to right,rgba(255,255,255,0) 0, #ccf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='rgba(255, 255, 255, 0)',endColorstr='#ccccff',GradientType=1)}body{padding:15px;background-image:none}</style></head><body><nav class="bar top cf"><div class="container"><a href="index.html" class="brand">Magento UI Library</a><ul class="menu"><li><a href="#" data-toggle="dropdown-1" unselectable="on" class="dropdown-toggle">files</a><ul id="dropdown-1" hidden class="dropdown"><li><a href="actions-toolbar.html">actions-toolbar</a></li><li><a href="breadcrumbs.html">breadcrumbs</a></li><li><a href="buttons.html">buttons</a></li><li><a href="docs.html">docs</a></li><li><a href="dropdowns.html">dropdowns</a></li><li><a href="forms.html">forms</a></li><li><a href="icons.html">icons</a></li><li><a href="layout.html">layout</a></li><li><a href="lib.html">lib</a></li><li><a href="loaders.html">loaders</a></li><li><a href="messages.html">messages</a></li><li><a href="pages.html">pages</a></li><li><a href="popups.html">popups</a></li><li><a href="rating.html">rating</a></li><li><a href="resets.html">resets</a></li><li><a href="responsive.html">responsive</a></li><li><a href="sections.html">sections</a></li><li><a href="tables.html">tables</a></li><li><a href="tooltips.html">tooltips</a></li><li><a href="typography.html">typography</a></li><li><a href="utilities.html">utilities</a></li><li><a href="variables.html">variables</a></li></ul></li></ul><div class="nav"><button title="Table of Contents" data-toggle="nav-toc"><svg viewBox="0 0 512 512" height="22" width="22" class="icon"><path d="M108.9,403.1V462H50v-58.9H108.9z M108.9,285.4H50v58.9h58.9V285.4zM108.9,50H50v58.9h58.9V50z M108.9,167.7H50v58.9h58.9V167.7z M167.7,344.3H462v-58.9H167.7V344.3zM167.7,50v58.9H462V50H167.7z M167.7,462H462v-58.9H167.7V462z M167.7,226.6H462v-58.9H167.7V226.6z"></path></svg></button><input type="search" placeholder="Search" class="search"></div></div></nav><section class="container"><article id="icons" class="section"><div class="docs"><a href="#icons" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="icons">Icons</h1>
 <p>  Icons can be represented by using the fonts, images, or sprites.</p>
 <p>  An icon can be added to any HTML tag. For this purpose you need to use additional <code>&lt;span&gt;</code> tag within your tag. This additional tag serves for displaying an icon without visible text, thus following the <strong>accessibility requirements</strong>. Then you need to apply appropriate <code>icon</code> mixin for this tag&#39;s class. Icon can be added both before and after element&#39;s text. Also, icon can be displayed instead of element&#39;s text (in this case the text is hidden).</p>
 <p>  There are two ways to insert icon: first you can use <strong>sprite or image</strong>, second you can use <strong>an icon font</strong>. Magento UI library provides mixins for both of them.</p>
@@ -21,59 +21,55 @@
   &lt;a href="#" class="example-icon-5"&gt;&lt;span&gt;font icon after the text&lt;/span&gt;&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="#" class="example-icon-6" title="font icon instead of the text"&gt;&lt;span&gt;icon instead of the text&lt;/span&gt;&lt;/a&gt;</textarea>
-</div><div class="code"><pre><code>
-.example-icon-1 {
-    .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png');
-}
-
-.example-icon-2 {
-    .icon-image(
-        @_icon-image: '@{baseDir}images/blank-theme-icons.png',
-        @_icon-image-position-x: -26px,
-        @_icon-image-position-y: 0,
-        @_icon-image-position: after
-   );
-}
-
-.example-icon-3 {
-    .icon-image(
-        @_icon-image: '@{baseDir}images/blank-theme-icons.png',
-        @_icon-image-position-x: -156px,
-        @_icon-image-position-y: -52px,
-        @_icon-image-text-hide: true
-   );
-}
-
-.example-icon-4 {
-    .icon-font(
-        @_icon-font-content: @icon-settings,
-        @_icon-font-size: 24px
-   );
-}
-
-.example-icon-5 {
-    .icon-font(
-        @_icon-font-content: @icon-star,
-        @_icon-font-size: 24px,
-        @_icon-font-position: after
-   );
-}
-
-.example-icon-6 {
-    .icon-font(
-        @_icon-font-content: @icon-flag,
-        @_icon-font-size: 24px,
-        @_icon-font-text-hide: true
-   );
-}
-
</code></pre></div></article><article id="icon-with-image-or-sprite" class="section"><div class="docs"><a href="#icon-with-image-or-sprite" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="icon-with-image-or-sprite">Icon with image or sprite</h1>
+</div><div class="code"><pre><code>.example-icon-1 {
+    .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png');
+}
+
+.example-icon-2 {
+    .icon-image(
+        @_icon-image: '@{baseDir}images/blank-theme-icons.png',
+        @_icon-image-position-x: -26px,
+        @_icon-image-position-y: 0,
+        @_icon-image-position: after
+   );
+}
+
+.example-icon-3 {
+    .icon-image(
+        @_icon-image: '@{baseDir}images/blank-theme-icons.png',
+        @_icon-image-position-x: -156px,
+        @_icon-image-position-y: -52px,
+        @_icon-image-text-hide: true
+   );
+}
+
+.example-icon-4 {
+    .icon-font(
+        @_icon-font-content: @icon-settings,
+        @_icon-font-size: 24px
+   );
+}
+
+.example-icon-5 {
+    .icon-font(
+        @_icon-font-content: @icon-star,
+        @_icon-font-size: 24px,
+        @_icon-font-position: after
+   );
+}
+
+.example-icon-6 {
+    .icon-font(
+        @_icon-font-content: @icon-flag,
+        @_icon-font-size: 24px,
+        @_icon-font-text-hide: true
+   );
+}</code></pre></div></article><article id="icon-with-image-or-sprite" class="section"><div class="docs"><a href="#icon-with-image-or-sprite" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="icon-with-image-or-sprite">Icon with image or sprite</h1>
 <p>  the <code>.icon-image()</code> mixin is used to create icons using single image or sprite. It has one mandatory parameter - <code>@_icon-image</code>. This parameter accepts the path to an image or sprite.</p>
 <textarea class="preview-code" spellcheck="false">  &lt;a href="#" class="example-icon-7"&gt;&lt;span&gt;icon-search&lt;/span&gt;&lt;/a&gt;</textarea>
-</div><div class="code"><pre><code>
-.example-icon-7 {
-    .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png');
-}
-
</code></pre></div></article><article id="icon-with-image-or-sprite-variables" class="section"><div class="docs"><a href="#icon-with-image-or-sprite-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="icon-with-image-or-sprite-variables">Icon with image or sprite variables</h1>
+</div><div class="code"><pre><code>.example-icon-7 {
+    .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png');
+}</code></pre></div></article><article id="icon-with-image-or-sprite-variables" class="section"><div class="docs"><a href="#icon-with-image-or-sprite-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="icon-with-image-or-sprite-variables">Icon with image or sprite variables</h1>
   <pre>
     <table>
       <tr>
@@ -138,28 +134,26 @@
       </tr>
     </table>
   </pre>
-</div><div class="code"><pre><code>
</code></pre></div></article><article id="icon-position-for-an-icon-with-image-or-sprite" class="section"><div class="docs"><a href="#icon-position-for-an-icon-with-image-or-sprite" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="icon-position-for-an-icon-with-image-or-sprite">Icon position for an icon with image or sprite</h1>
+</div></article><article id="icon-position-for-an-icon-with-image-or-sprite" class="section"><div class="docs"><a href="#icon-position-for-an-icon-with-image-or-sprite" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="icon-position-for-an-icon-with-image-or-sprite">Icon position for an icon with image or sprite</h1>
 <p>  To change the position for icons with image the <code>.icon-image-position()</code> mixin is used. By managing its <code>@_icon-image-position-x</code> and <code>@_icon-image-position-y</code> variables you can move the image on element&#39;s background. The <code>@_icon-image-position</code> variable is used to define the position of icon (before or after the element).</p>
 <textarea class="preview-code" spellcheck="false">  &lt;a href="#" class="example-icon-8"&gt;&lt;span&gt;icon-star&lt;/span&gt;&lt;/a&gt;
   &lt;br&gt;
   &lt;a href="#" class="example-icon-9"&gt;&lt;span&gt;icon-heart&lt;/span&gt;&lt;/a&gt;</textarea>
-</div><div class="code"><pre><code>
-.example-icon-8 {
-    .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png');
-    .icon-image-position(
-        @_icon-image-position-x: -182px
-   );
-}
-
-.example-icon-9 {
-    .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png', @_icon-image-position: after);
-    .icon-image-position(
-        @_icon-image-position-x: -52px,
-        @_icon-image-position-y: -26px,
-        @_icon-image-position: after
-   );
-}
-
</code></pre></div></article><article id="position-for-icon-with-image-or-sprite-mixin-variables" class="section"><div class="docs"><a href="#position-for-icon-with-image-or-sprite-mixin-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="position-for-icon-with-image-or-sprite-mixin-variables">Position for icon with image or sprite mixin variables</h1>
+</div><div class="code"><pre><code>.example-icon-8 {
+    .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png');
+    .icon-image-position(
+        @_icon-image-position-x: -182px
+   );
+}
+
+.example-icon-9 {
+    .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png', @_icon-image-position: after);
+    .icon-image-position(
+        @_icon-image-position-x: -52px,
+        @_icon-image-position-y: -26px,
+        @_icon-image-position: after
+   );
+}</code></pre></div></article><article id="position-for-icon-with-image-or-sprite-mixin-variables" class="section"><div class="docs"><a href="#position-for-icon-with-image-or-sprite-mixin-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="position-for-icon-with-image-or-sprite-mixin-variables">Position for icon with image or sprite mixin variables</h1>
   <pre>
     <table>
       <tr>
@@ -188,15 +182,13 @@
       </tr>
     </table>
   </pre>
-</div><div class="code"><pre><code>
</code></pre></div></article><article id="icon-sprite-position-with-grid" class="section"><div class="docs"><a href="#icon-sprite-position-with-grid" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="icon-sprite-position-with-grid">Icon sprite position (with grid)</h1>
+</div></article><article id="icon-sprite-position-with-grid" class="section"><div class="docs"><a href="#icon-sprite-position-with-grid" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="icon-sprite-position-with-grid">Icon sprite position (with grid)</h1>
 <p>  Mixin <code>.icon-sprite-position()</code> is used to manage the position of sprite background image. It assumes the use of a single sprite image with individual images <strong>placed on a regular grid</strong>.</p>
 <textarea class="preview-code" spellcheck="false">  &lt;a href="#" class="example-icon-10"&gt;&lt;span&gt;icon text&lt;/span&gt;&lt;/a&gt;</textarea>
-</div><div class="code"><pre><code>
-.example-icon-10 {
-    .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png');
-    .icon-sprite-position(4, 0);
-}
-
</code></pre></div></article><article id="icon-sprite-position-variables" class="section"><div class="docs"><a href="#icon-sprite-position-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="icon-sprite-position-variables">Icon sprite position variables</h1>
+</div><div class="code"><pre><code>.example-icon-10 {
+    .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png');
+    .icon-sprite-position(4, 0);
+}</code></pre></div></article><article id="icon-sprite-position-variables" class="section"><div class="docs"><a href="#icon-sprite-position-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="icon-sprite-position-variables">Icon sprite position variables</h1>
   <pre>
     <table>
     <tr>
@@ -231,18 +223,16 @@
       </tr>
     </table>
   </pre>
-</div><div class="code"><pre><code>
</code></pre></div></article><article id="imagesprite-icon-size" class="section"><div class="docs"><a href="#imagesprite-icon-size" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="imagesprite-icon-size">Image/sprite icon size</h1>
+</div></article><article id="imagesprite-icon-size" class="section"><div class="docs"><a href="#imagesprite-icon-size" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="imagesprite-icon-size">Image/sprite icon size</h1>
 <p>  Mixin <code>.icon-image-size()</code> is used to change the image/sprite icon size</p>
 <textarea class="preview-code" spellcheck="false">  &lt;a href="#" class="example-icon-11"&gt;&lt;span&gt;icon-search&lt;/span&gt;&lt;/a&gt;</textarea>
-</div><div class="code"><pre><code>
-.example-icon-11 {
-    .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png');
-    .icon-image-size(30px, 30px);
-    &:before {
-        background-color: #f1f1f1;
-    }
-}
-
</code></pre></div></article><article id="imagesprite-icon-size-variables" class="section"><div class="docs"><a href="#imagesprite-icon-size-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="imagesprite-icon-size-variables">Image/sprite icon size variables</h1>
+</div><div class="code"><pre><code>.example-icon-11 {
+    .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png');
+    .icon-image-size(30px, 30px);
+    &:before {
+        background-color: #f1f1f1;
+    }
+}</code></pre></div></article><article id="imagesprite-icon-size-variables" class="section"><div class="docs"><a href="#imagesprite-icon-size-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="imagesprite-icon-size-variables">Image/sprite icon size variables</h1>
   <pre>
     <table>
       <tr>
@@ -274,14 +264,12 @@
 </div></article><article id="font-icon" class="section"><div class="docs"><a href="#font-icon" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="font-icon">Font icon</h1>
 <p>  The <code>.icon-font()</code> mixin is used to create icons using font icons. It has one mandatory parameter - <code>@_icon-font-content</code>. This parameter accepts the font icon code.</p>
 <textarea class="preview-code" spellcheck="false">  &lt;a href="#" class="example-icon-12"&gt;&lt;span&gt;icon-calendar&lt;/span&gt;&lt;/a&gt;</textarea>
-</div><div class="code"><pre><code>
-.example-icon-12 {
-    .icon-font(
-        @icon-calendar,
-        @_icon-font-size: 28px
-   );
-}
-
</code></pre></div></article><article id="font-icon-variables" class="section"><div class="docs"><a href="#font-icon-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="font-icon-variables">Font icon variables</h1>
+</div><div class="code"><pre><code>.example-icon-12 {
+    .icon-font(
+        @icon-calendar,
+        @_icon-font-size: 28px
+   );
+}</code></pre></div></article><article id="font-icon-variables" class="section"><div class="docs"><a href="#font-icon-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="font-icon-variables">Font icon variables</h1>
   <pre>
     <table>
       <tr>
@@ -364,17 +352,15 @@
       </tr>
     </table>
   </pre>
-</div><div class="code"><pre><code>
</code></pre></div></article><article id="change-the-size-of-font-icon" class="section"><div class="docs"><a href="#change-the-size-of-font-icon" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="change-the-size-of-font-icon">Change the size of font icon</h1>
+</div></article><article id="change-the-size-of-font-icon" class="section"><div class="docs"><a href="#change-the-size-of-font-icon" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="change-the-size-of-font-icon">Change the size of font icon</h1>
 <p>  The <code>.icon-font-size()</code> mixin is used to change size of the font icon which is already defined. The mixin generates only new font size and line height without any other options. @_icon-font-position variable is used to define the position of icon (before or after the element) which we want to set font size of.</p>
 <textarea class="preview-code" spellcheck="false">  &lt;a href="#" class="example-icon-13"&gt;&lt;span&gt;icon-calendar&lt;/span&gt;&lt;/a&gt;</textarea>
-</div><div class="code"><pre><code>
-.example-icon-13 {
-    .icon-font(@icon-calendar);
-    .icon-font-size(
-        @_icon-font-size: 26px
-   );
-}
-
</code></pre></div></article><article id="change-the-size-of-font-icon-variables" class="section"><div class="docs"><a href="#change-the-size-of-font-icon-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="change-the-size-of-font-icon-variables">Change the size of font icon variables</h1>
+</div><div class="code"><pre><code>.example-icon-13 {
+    .icon-font(@icon-calendar);
+    .icon-font-size(
+        @_icon-font-size: 26px
+   );
+}</code></pre></div></article><article id="change-the-size-of-font-icon-variables" class="section"><div class="docs"><a href="#change-the-size-of-font-icon-variables" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="change-the-size-of-font-icon-variables">Change the size of font icon variables</h1>
   <pre>
     <table>
       <tr>
@@ -406,15 +392,13 @@
 </div></article><article id="hide-icon-text" class="section"><div class="docs"><a href="#hide-icon-text" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="hide-icon-text">Hide icon text</h1>
 <p>  The <code>.icon-text-hide()</code> mixin can be used separately to hide text of an element that has an icon text. This mixin accepts no variables.</p>
 <textarea class="preview-code" spellcheck="false">  &lt;a href="#" class="example-icon-14"&gt;&lt;span&gt;icon-calendar&lt;/span&gt;&lt;/a&gt;</textarea>
-</div><div class="code"><pre><code>
-.example-icon-14 {
-    .icon-font(
-        @icon-envelope,
-        @_icon-font-size: 26px
-   );
-    .icon-text-hide();
-}
-
</code></pre></div></article><article id="sprite-and-font-icons-for-blank-theme" class="section"><div class="docs"><a href="#sprite-and-font-icons-for-blank-theme" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="sprite-and-font-icons-for-blank-theme">Sprite and font icons for Blank theme</h1>
+</div><div class="code"><pre><code>.example-icon-14 {
+    .icon-font(
+        @icon-envelope,
+        @_icon-font-size: 26px
+   );
+    .icon-text-hide();
+}</code></pre></div></article><article id="sprite-and-font-icons-for-blank-theme" class="section"><div class="docs"><a href="#sprite-and-font-icons-for-blank-theme" class="permalink"><svg viewBox="0 0 512 512" height="32" width="32" class="icon"><path d="M156.2,199.7c7.5-7.5,15.9-13.8,24.8-18.7c49.6-27.3,113.1-12.8,145,35.5l-38.5,38.5c-11.1-25.2-38.5-39.6-65.8-33.5c-10.3,2.3-20.1,7.4-28,15.4l-73.9,73.9c-22.4,22.4-22.4,58.9,0,81.4c22.4,22.4,58.9,22.4,81.4,0l22.8-22.8c20.7,8.2,42.9,11.5,64.9,9.9l-50.3,50.3c-43.1,43.1-113,43.1-156.1,0c-43.1-43.1-43.1-113-0-156.1L156.2,199.7z M273.6,82.3l-50.3,50.3c21.9-1.6,44.2,1.6,64.9,9.9l22.8-22.8c22.4-22.4,58.9-22.4,81.4,0c22.4,22.4,22.4,58.9,0,81.4l-73.9,73.9c-22.5,22.5-59.1,22.3-81.4,0c-5.2-5.2-9.7-11.7-12.5-18l-38.5,38.5c4,6.1,8.3,11.5,13.7,16.9c13.9,13.9,31.7,24.3,52.1,29.3c26.5,6.4,54.8,2.8,79.2-10.6c8.9-4.9,17.3-11.1,24.8-18.7l73.9-73.9c43.1-43.1,43.1-113,0-156.1C386.6,39.2,316.7,39.2,273.6,82.3z"></path></svg></a><h1 id="sprite-and-font-icons-for-blank-theme">Sprite and font icons for Blank theme</h1>
 <p>  You can use the icons designed to our Blank theme, which are also available in two variants: sprite and font</p>
 <h2 id="icons-using-sprite">Icons using sprite</h2>
 <textarea class="preview-code" spellcheck="false"> &lt;ul class="icons-image-list"&gt;
@@ -642,180 +626,185 @@
      &lt;li&gt;
          &lt;span class="icon-arrow-down-thin" data-icon="&#xe626"&gt;&lt;span&gt;@icon-arrow-down-thin&lt;/span&gt;&lt;/span&gt;
      &lt;/li&gt;
+     &lt;li&gt;
+         &lt;span class="icon-arrow-left-thin" data-icon="&#xe628"&gt;&lt;span&gt;@icon-gift-registry&lt;/span&gt;&lt;/span&gt;
+     &lt;/li&gt;
+     &lt;li&gt;
+         &lt;span class="icon-arrow-down-thin" data-icon="&#xe629"&gt;&lt;span&gt;@icon-present&lt;/span&gt;&lt;/span&gt;
+     &lt;/li&gt;
  &lt;/ul&gt;</textarea>
-</div><div class="code"><pre><code>
-.icons-image-list {
-    list-style: none;
-    padding: 0;
-    li {
-        float: left;
-        width: 33%;
-        > span {
-            .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png');
-        }
-        .icon-search {
-            .icon-sprite-position(0, 0);
-        }
-        .icon-cart {
-            .icon-sprite-position(1, 0);
-        }
-        .icon-arrow-down {
-            .icon-sprite-position(2, 0);
-        }
-        .icon-arrow-up {
-            .icon-sprite-position(3, 0);
-        }
-        .icon-grid {
-            .icon-sprite-position(4, 0);
-        }
-        .icon-list {
-            .icon-sprite-position(5, 0);
-        }
-        .icon-remove {
-            .icon-sprite-position(6, 0);
-        }
-        .icon-star {
-            .icon-sprite-position(7, 0);
-        }
-        .icon-pointer-down {
-            .icon-sprite-position(8, 0);
-        }
-        .icon-pointer-up {
-            .icon-sprite-position(9, 0);
-        }
-        .icon-pointer-left {
-            .icon-sprite-position(10, 0);
-        }
-        .icon-pointer-right {
-            .icon-sprite-position(11, 0);
-        }
-        .icon-compare-empty {
-            .icon-sprite-position(0, 1);
-        }
-        .icon-compare-full {
-            .icon-sprite-position(1, 1);
-        }
-        .icon-wishlist-empty {
-            .icon-sprite-position(2, 1);
-        }
-        .icon-wishlist-full {
-            .icon-sprite-position(3, 1);
-        }
-        .icon-update {
-            .icon-sprite-position(4, 1);
-        }
-        .icon-collapse {
-            .icon-sprite-position(5, 1);
-        }
-        .icon-expand {
-            .icon-sprite-position(6, 1);
-        }
-        .icon-menu {
-            .icon-sprite-position(7, 1);
-        }
-        .icon-prev {
-            .icon-sprite-position(8, 1);
-        }
-        .icon-next {
-            .icon-sprite-position(9, 1);
-        }
-        .icon-settings {
-            .icon-sprite-position(10, 1);
-        }
-        .icon-info {
-            .icon-sprite-position(11, 1);
-        }
-        .icon-checkmark {
-            .icon-sprite-position(0, 2);
-        }
-        .icon-calendar {
-            .icon-sprite-position(1, 2);
-        }
-        .icon-comment {
-            .icon-sprite-position(2, 2);
-        }
-        .icon-comment-reflected {
-            .icon-sprite-position(3, 2);
-        }
-        .icon-envelope {
-            .icon-sprite-position(4, 2);
-        }
-        .icon-warning {
-            .icon-sprite-position(5, 2);
-        }
-        .icon-trash {
-            .icon-sprite-position(6, 2);
-        }
-        .icon-flag {
-            .icon-sprite-position(7, 2);
-        }
-        .icon-location {
-            .icon-sprite-position(8, 2);
-        }
-        .icon-up {
-            .icon-sprite-position(9, 2);
-        }
-        .icon-down {
-            .icon-sprite-position(10, 2);
-        }
-    }
-}
-
-@icon-wishlist-full: '\e600';
-@icon-wishlist-empty: '\e601';
-@icon-warning: '\e602';
-@icon-update: '\e603';
-@icon-trash: '\e604';
-@icon-star: '\e605';
-@icon-settings: '\e606';
-@icon-pointer-down: '\e607';
-@icon-next: '\e608';
-@icon-menu: '\e609';
-@icon-location: '\e60a';
-@icon-list: '\e60b';
-@icon-info: '\e60c';
-@icon-grid: '\e60d';
-@icon-comment-reflected: '\e60e';
-@icon-collapse: '\e60f';
-@icon-checkmark: '\e610';
-@icon-cart: '\e611';
-@icon-calendar: '\e612';
-@icon-arrow-up: '\e613';
-@icon-arrow-down: '\e614';
-@icon-search: '\e615';
-@icon-remove: '\e616';
-@icon-prev: '\e617';
-@icon-pointer-up: '\e618';
-@icon-pointer-right: '\e619';
-@icon-pointer-left: '\e61a';
-@icon-flag: '\e61b';
-@icon-expand: '\e61c';
-@icon-envelope: '\e61d';
-@icon-compare-full: '\e61e';
-@icon-compare-empty: '\e61f';
-@icon-comment: '\e620';
-@icon-up: '\e621';
-@icon-down: '\e622';
-@icon-arrow-up-thin: '\e623';
-@icon-arrow-right-thin: '\e624';
-@icon-arrow-left-thin: '\e625';
-@icon-arrow-down-thin: '\e626';
-
-.icons-font-list {
-    list-style: none;
-    padding: 0;
-    li {
-        float: left;
-        width: 25%;
-        margin-bottom: 35px;
-        text-align: center;
-        > span {
-            .icon-font('', @_icon-font-size: 34px);
-            &:before {
-                content: attr(data-icon);
-                margin: 0 auto;
-                display: block;
-            }
-        }
-    }
-}
</code></pre></div></article></section><div class="bar bottom"><div hidden class="settings container"><!-- Icons from http://iconmonstr.com--><button title="Desktop (1280)" data-width='1280'><svg viewBox="0 0 412 386" height="24" width="26" class="icon"><path d="m147.6,343.9c-4.5,15.9-26.2,37.6-42.1,42.1h201c-15.3,-4-38.1,-26.8-42.1,-42.1H147.6zM387,0.5H25c-13.8,0-25,11.2-25,25V294c0,13.8 11.2,25 25,25h362c13.8,0 25,-11.2 25,-25V25.5C412,11.7 400.8,0.5 387,0.5zM369.9,238.2H42.1L42.1,42.6 369.9,42.6V238.2z"></path></svg></button><button title="Laptop (1024)" data-width='1024'><svg viewBox="0 0 384 312" height="23" width="28" class="icon"><path d="m349.2,20.5c0,-11-9,-20-20,-20H53.6c-11,0-20,9-20,20v194H349.2v-194zm-27,167H60.6V27.5H322.2v160zm28,42H32.6L2.6,282.1c-3.5,6.2-3.5,13.8 0.1,19.9 3.6,6.2 10.2,9.9 17.3,9.9H363.1c7.1,0 13.7,-3.8 17.3,-10 3.6,-6.2 3.6,-13.8 0,-20l-30.2,-52.5zm-196.9,54 8,-23.5h60.5l8,23.5h-76.5z"></path></svg></button><button title="Tablet (768)" data-width='768'><svg viewBox="0 0 317 412" height="24" width="18" class="icon"><path d="M 316.5,380 V 32 c 0,-17.7 -14.3,-32 -32,-32 H 32 C 14.3,0 0,14.3 0,32 v 348 c 0,17.7 14.3,32 32,32 h 252.5 c 17.7,0 32,-14.3 32,-32 z M 40,367 V 45 H 276.5 V 367 H 40 z m 109.8,22.7 c 0,-4.7 3.8,-8.5 8.5,-8.5 4.7,0 8.5,3.8 8.5,8.5 0,4.7 -3.8,8.5 -8.5,8.5 -4.7,0 -8.5,-3.8 -8.5,-8.5 z"></path></svg></button><button title="Smart phone (320)" data-width='320'><svg viewBox="0 0 224 412" height="24" width="13" class="icon"><path d="M 190.7,0 H 33 C 14.8,0 0,14.8 0,33 v 346 c 0,18.2 14.8,33 33,33 h 157.7 c 18.2,0 33,-14.8 33,-33 V 33 c 0,-18.2 -14.8,-33 -33,-33 z M 94.3,30.2 h 37 c 2.2,0 4,1.8 4,4 0,2.2 -1.8,4 -4,4 h -37 c -2.2,0 -4,-1.8 -4,-4 0,-2.2 1.8,-4 4,-4 z m 18.5,362.8 c -8.8,0 -16,-7.2 -16,-16 0,-8.8 7.2,-16 16,-16 8.8,0 16,7.2 16,16 0,8.8 -7.2,16 -16,16 z M 198.6,343.8 H 25.1 V 68.2 h 173.5 v 275.5 z"></path></svg></button><button title="Feature phone (240)" data-width='240'><svg viewBox="0 0 201 412" height="24" width="12" class="icon"><path d="M 165.5,0.2 V 45 H 25 c -13.8,0 -25,11.2 -25,25 V 387 c 0,13.8 11.2,25 25,25 h 150.5 c 13.8,0 25,-11.2 25,-25 V 0.2 h -35 z M 65.2,366.5 H 34.2 v -24.5 h 31 v 24.5 z m 0,-44.3 H 34.2 v -24.5 h 31 v 24.5 z m 50.5,44.3 H 84.7 v -24.5 h 31 v 24.5 z m 0,-44.3 H 84.7 v -24.5 h 31 v 24.5 z m 50.5,44.3 h -31 v -24.5 h 31 v 24.5 z m 0,-44.3 h -31 v -24.5 h 31 v 24.5 z m 0,-59.3 h -132 V 95.4 h 132 V 262.9 z"></path></svg></button><button title="Auto (100%)" data-width="auto" class="auto is-active">Auto</button></div></div><script>(function(){var a=[{title:"actions-toolbar",filename:"actions-toolbar",url:"actions-toolbar.html"},{title:"Actions toolbar",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar"},{title:"Actions toolbar mixin variables",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar-mixin-variables"},{title:"Actions toolbar alignment",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar-alignment"},{title:"Reverse primary and secondary blocks",filename:"actions-toolbar",url:"actions-toolbar.html#reverse-primary-and-secondary-blocks"},{title:"Actions toolbar indents customizations",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar-indents-customizations"},{title:"Responsive actions toolbar",filename:"actions-toolbar",url:"actions-toolbar.html#responsive-actions-toolbar"},{title:"breadcrumbs",filename:"breadcrumbs",url:"breadcrumbs.html"},{title:"Breadcrumbs",filename:"breadcrumbs",url:"breadcrumbs.html#breadcrumbs"},{title:"Breadcrumbs variables",filename:"breadcrumbs",url:"breadcrumbs.html#breadcrumbs-variables"},{title:"Button-styled breadcrumbs with gradient background, border, and no separating symbol",filename:"breadcrumbs",url:"breadcrumbs.html#buttonstyled-breadcrumbs-with-gradient-background-border-and-no-separating-symbol"},{title:"Breadcrumbs with solid background",filename:"breadcrumbs",url:"breadcrumbs.html#breadcrumbs-with-solid-background"},{title:"buttons",filename:"buttons",url:"buttons.html"},{title:"Default button",filename:"buttons",url:"buttons.html#default-button"},{title:"Button variables",filename:"buttons",url:"buttons.html#button-variables"},{title:"Button as an icon",filename:"buttons",url:"buttons.html#button-as-an-icon"},{title:"Button with an icon on the left or right side of the text",filename:"buttons",url:"buttons.html#button-with-an-icon-on-the-left-or-right-side-of-the-text"},{title:"Button with fixed width",filename:"buttons",url:"buttons.html#button-with-fixed-width"},{title:"Primary button",filename:"buttons",url:"buttons.html#primary-button"},{title:"Primary button variables",filename:"buttons",url:"buttons.html#primary-button-variables"},{title:"Button with gradient background",filename:"buttons",url:"buttons.html#button-with-gradient-background"},{title:"Button as a link",filename:"buttons",url:"buttons.html#button-as-a-link"},{title:"Link as a button",filename:"buttons",url:"buttons.html#link-as-a-button"},{title:"Button reset",filename:"buttons",url:"buttons.html#button-reset"},{title:"Button revert secondary color",filename:"buttons",url:"buttons.html#button-revert-secondary-color"},{title:"Button revert secondary color variables",filename:"buttons",url:"buttons.html#button-revert-secondary-color-variables"},{title:"Button revert secondary size",filename:"buttons",url:"buttons.html#button-revert-secondary-size"},{title:"Button revert secondary size variables",filename:"buttons",url:"buttons.html#button-revert-secondary-size-variables"},{title:"docs",filename:"docs",url:"docs.html"},{title:"Documentation",filename:"docs",url:"docs.html#documentation"},{title:"dropdowns",filename:"dropdowns",url:"dropdowns.html"},{title:"Drop-down and split buttons mixins",filename:"dropdowns",url:"dropdowns.html#dropdown-and-split-buttons-mixins"},{title:"Drop-down",filename:"dropdowns",url:"dropdowns.html#dropdown"},{title:"Drop-down variables",filename:"dropdowns",url:"dropdowns.html#dropdown-variables"},{title:"Drop-down with icon customization",filename:"dropdowns",url:"dropdowns.html#dropdown-with-icon-customization"},{title:"Modify dropdown list styles",filename:"dropdowns",url:"dropdowns.html#modify-dropdown-list-styles"},{title:"Split button",filename:"dropdowns",url:"dropdowns.html#split-button"},{title:"Split button variables",filename:"dropdowns",url:"dropdowns.html#split-button-variables"},{title:"Split button - button styling",filename:"dropdowns",url:"dropdowns.html#split-button-button-styling"},{title:"Split button icon customization",filename:"dropdowns",url:"dropdowns.html#split-button-icon-customization"},{title:"Split button drop-down list customization",filename:"dropdowns",url:"dropdowns.html#split-button-dropdown-list-customization"},{title:"forms",filename:"forms",url:"forms.html"},{title:"Forms mixins",filename:"forms",url:"forms.html#forms-mixins"},{title:"Global forms elements customization",filename:"forms",url:"forms.html#global-forms-elements-customization"},{title:"Fieldsets & fields customization",filename:"forms",url:"forms.html#fieldsets-fields-customization"},{title:"Fieldset and legend customization variables",filename:"forms",url:"forms.html#fieldset-and-legend-customization-variables"},{title:"Fields customization variables",filename:"forms",url:"forms.html#fields-customization-variables"},{title:"Required fields message customization variables",filename:"forms",url:"forms.html#required-fields-message-customization-variables"},{title:"Form element inputs customization",filename:"forms",url:"forms.html#form-element-inputs-customization"},{title:"Form element inputs customization variables",filename:"forms",url:"forms.html#form-element-inputs-customization-variables"},{title:"Form element choice",filename:"forms",url:"forms.html#form-element-choice"},{title:"Form element choice variables",filename:"forms",url:"forms.html#form-element-choice-variables"},{title:"Custom color",filename:"forms",url:"forms.html#custom-color"},{title:"Input number - input-text view",filename:"forms",url:"forms.html#input-number-inputtext-view"},{title:"Input search - input-text view",filename:"forms",url:"forms.html#input-search-inputtext-view"},{title:"Form validation",filename:"forms",url:"forms.html#form-validation"},{title:"Form validation variables//  <pre>",filename:"forms",url:"forms.html#form-validation-variables-pre"},{title:"icons",filename:"icons",url:"icons.html"},{title:"Icons",filename:"icons",url:"icons.html#icons"},{title:"Icon with image or sprite",filename:"icons",url:"icons.html#icon-with-image-or-sprite"},{title:"Icon with image or sprite variables",filename:"icons",url:"icons.html#icon-with-image-or-sprite-variables"},{title:"Icon position for an icon with image or sprite",filename:"icons",url:"icons.html#icon-position-for-an-icon-with-image-or-sprite"},{title:"Position for icon with image or sprite mixin variables",filename:"icons",url:"icons.html#position-for-icon-with-image-or-sprite-mixin-variables"},{title:"Icon sprite position (with grid)",filename:"icons",url:"icons.html#icon-sprite-position-with-grid"},{title:"Icon sprite position variables",filename:"icons",url:"icons.html#icon-sprite-position-variables"},{title:"Image/sprite icon size",filename:"icons",url:"icons.html#imagesprite-icon-size"},{title:"Image/sprite icon size variables",filename:"icons",url:"icons.html#imagesprite-icon-size-variables"},{title:"Font icon",filename:"icons",url:"icons.html#font-icon"},{title:"Font icon variables",filename:"icons",url:"icons.html#font-icon-variables"},{title:"Change the size of font icon",filename:"icons",url:"icons.html#change-the-size-of-font-icon"},{title:"Change the size of font icon variables",filename:"icons",url:"icons.html#change-the-size-of-font-icon-variables"},{title:"Hide icon text",filename:"icons",url:"icons.html#hide-icon-text"},{title:"Sprite and font icons for Blank theme",filename:"icons",url:"icons.html#sprite-and-font-icons-for-blank-theme"},{title:"layout",filename:"layout",url:"layout.html"},{title:"Layout",filename:"layout",url:"layout.html#layout"},{title:"Layout global variables",filename:"layout",url:"layout.html#layout-global-variables"},{title:"Page layouts",filename:"layout",url:"layout.html#page-layouts"},{title:"Layout column",filename:"layout",url:"layout.html#layout-column"},{title:"Layout column variables",filename:"layout",url:"layout.html#layout-column-variables"},{title:"Layout width",filename:"layout",url:"layout.html#layout-width"},{title:"Layout width variables",filename:"layout",url:"layout.html#layout-width-variables"},{title:"lib",filename:"lib",url:"lib.html"},{title:"Including Magento UI library to your theme",filename:"lib",url:"lib.html#including-magento-ui-library-to-your-theme"},{title:"loaders",filename:"loaders",url:"loaders.html"},{title:"Loaders",filename:"loaders",url:"loaders.html#loaders"},{title:"Default loader variables",filename:"loaders",url:"loaders.html#default-loader-variables"},{title:"Loading",filename:"loaders",url:"loaders.html#loading"},{title:"Loading default variables",filename:"loaders",url:"loaders.html#loading-default-variables"},{title:"messages",filename:"messages",url:"messages.html"},{title:"Messages",filename:"messages",url:"messages.html#messages"},{title:"Information message",filename:"messages",url:"messages.html#information-message"},{title:"Warning message",filename:"messages",url:"messages.html#warning-message"},{title:"Error message",filename:"messages",url:"messages.html#error-message"},{title:"Success message",filename:"messages",url:"messages.html#success-message"},{title:"Notice message",filename:"messages",url:"messages.html#notice-message"},{title:"Message with inner icon",filename:"messages",url:"messages.html#message-with-inner-icon"},{title:"Message with lateral icon",filename:"messages",url:"messages.html#message-with-lateral-icon"},{title:"Custom message style",filename:"messages",url:"messages.html#custom-message-style"},{title:"Messages global variables",filename:"messages",url:"messages.html#messages-global-variables"},{title:"pages",filename:"pages",url:"pages.html"},{title:"Pagination HTML markup",filename:"pages",url:"pages.html#pagination-html-markup"},{title:"Pagination variables",filename:"pages",url:"pages.html#pagination-variables"},{title:"Pagination with label and gradient background on links",filename:"pages",url:"pages.html#pagination-with-label-and-gradient-background-on-links"},{title:'Pagination with "previous"..."next" text links and label',filename:"pages",url:"pages.html#pagination-with-previousnext-text-links-and-label"},{title:"Pagination without label, with solid background",filename:"pages",url:"pages.html#pagination-without-label-with-solid-background"},{title:"popups",filename:"popups",url:"popups.html"},{title:"Popups",filename:"popups",url:"popups.html#popups"},{title:"Popup variables",filename:"popups",url:"popups.html#popup-variables"},{title:"Window overlay mixin variables",filename:"popups",url:"popups.html#window-overlay-mixin-variables"},{title:"Fixed height popup",filename:"popups",url:"popups.html#fixed-height-popup"},{title:"Fixed content height popup",filename:"popups",url:"popups.html#fixed-content-height-popup"},{title:"Margins for header, content and footer block in popup",filename:"popups",url:"popups.html#margins-for-header-content-and-footer-block-in-popup"},{title:"Popup titles styled as theme headings",filename:"popups",url:"popups.html#popup-titles-styled-as-theme-headings"},{title:"Popup action toolbar",filename:"popups",url:"popups.html#popup-action-toolbar"},{title:"Popup Close button without an icon",filename:"popups",url:"popups.html#popup-close-button-without-an-icon"},{title:"Modify the icon of popup Close button",filename:"popups",url:"popups.html#modify-the-icon-of-popup-close-button"},{title:"Modify overlay styles",filename:"popups",url:"popups.html#modify-overlay-styles"},{title:"rating",filename:"rating",url:"rating.html"},{title:"Ratings",filename:"rating",url:"rating.html#ratings"},{title:"Global rating variables",filename:"rating",url:"rating.html#global-rating-variables"},{title:"Rating with vote",filename:"rating",url:"rating.html#rating-with-vote"},{title:"Rating with vote icons number customization",filename:"rating",url:"rating.html#rating-with-vote-icons-number-customization"},{title:"Rating with vote icons colors customization",filename:"rating",url:"rating.html#rating-with-vote-icons-colors-customization"},{title:"Rating with vote icons symbol customization",filename:"rating",url:"rating.html#rating-with-vote-icons-symbol-customization"},{title:"Accessible rating with vote",filename:"rating",url:"rating.html#accessible-rating-with-vote"},{title:"Rating summary",filename:"rating",url:"rating.html#rating-summary"},{title:"Rating summary icons number customization",filename:"rating",url:"rating.html#rating-summary-icons-number-customization"},{title:"Rating summary icons color customization",filename:"rating",url:"rating.html#rating-summary-icons-color-customization"},{title:"Rating summary icons symbol customization",filename:"rating",url:"rating.html#rating-summary-icons-symbol-customization"},{title:"Rating summary hide label",filename:"rating",url:"rating.html#rating-summary-hide-label"},{title:"Rating summary multiple ratings",filename:"rating",url:"rating.html#rating-summary-multiple-ratings"},{title:"Rating hide label mixin",filename:"rating",url:"rating.html#rating-hide-label-mixin"},{title:"resets",filename:"resets",url:"resets.html"},{title:"Resets",filename:"resets",url:"resets.html#resets"},{title:"responsive",filename:"responsive",url:"responsive.html"},{title:"Responsive",filename:"responsive",url:"responsive.html#responsive"},{title:"Responsive mixins usage",filename:"responsive",url:"responsive.html#responsive-mixins-usage"},{title:"Media query style groups separation variables",filename:"responsive",url:"responsive.html#media-query-style-groups-separation-variables"},{title:"Responsive breakpoints",filename:"responsive",url:"responsive.html#responsive-breakpoints"},{title:"sections",filename:"sections",url:"sections.html"},{title:"Tabs and accordions",filename:"sections",url:"sections.html#tabs-and-accordions"},{title:"Tabs",filename:"sections",url:"sections.html#tabs"},{title:"Tabs mixin variables",filename:"sections",url:"sections.html#tabs-mixin-variables"},{title:"Tabs with content top border",filename:"sections",url:"sections.html#tabs-with-content-top-border"},{title:"Accordion",filename:"sections",url:"sections.html#accordion"},{title:"Accordion mixin variables",filename:"sections",url:"sections.html#accordion-mixin-variables"},{title:"Responsive tabs",filename:"sections",url:"sections.html#responsive-tabs"},{title:"Tabs Base",filename:"sections",url:"sections.html#tabs-base"},{title:"Accordion Base",filename:"sections",url:"sections.html#accordion-base"},{title:"tables",filename:"tables",url:"tables.html"},{title:"Tables",filename:"tables",url:"tables.html#tables"},{title:"Table mixin variables",filename:"tables",url:"tables.html#table-mixin-variables"},{title:"Table typography",filename:"tables",url:"tables.html#table-typography"},{title:"Table typography mixin variables",filename:"tables",url:"tables.html#table-typography-mixin-variables"},{title:"Table caption",filename:"tables",url:"tables.html#table-caption"},{title:"Table caption mixin variables",filename:"tables",url:"tables.html#table-caption-mixin-variables"},{title:"Table cells resize",filename:"tables",url:"tables.html#table-cells-resize"},{title:"Table cells resize variables",filename:"tables",url:"tables.html#table-cells-resize-variables"},{title:"Table background customization",filename:"tables",url:"tables.html#table-background-customization"},{title:"Table background mixin variables",filename:"tables",url:"tables.html#table-background-mixin-variables"},{title:"Table borders customization",filename:"tables",url:"tables.html#table-borders-customization"},{title:"Table borders mixin variables",filename:"tables",url:"tables.html#table-borders-mixin-variables"},{title:"Table with horizontal borders",filename:"tables",url:"tables.html#table-with-horizontal-borders"},{title:"Table with vertical borders",filename:"tables",url:"tables.html#table-with-vertical-borders"},{title:"Table with light borders",filename:"tables",url:"tables.html#table-with-light-borders"},{title:"Table without borders",filename:"tables",url:"tables.html#table-without-borders"},{title:"Striped table",filename:"tables",url:"tables.html#striped-table"},{title:"Striped table mixin variables",filename:"tables",url:"tables.html#striped-table-mixin-variables"},{title:"Table with rows hover",filename:"tables",url:"tables.html#table-with-rows-hover"},{title:"Table with rows hover mixin variables",filename:"tables",url:"tables.html#table-with-rows-hover-mixin-variables"},{title:"Responsive table technics #1",filename:"tables",url:"tables.html#responsive-table-technics-1"},{title:"Responsive table technics #2",filename:"tables",url:"tables.html#responsive-table-technics-2"},{title:"Responsive table technics #2 mixin variables",filename:"tables",url:"tables.html#responsive-table-technics-2-mixin-variables"},{title:"tooltips",filename:"tooltips",url:"tooltips.html"},{title:"Tooltips",filename:"tooltips",url:"tooltips.html#tooltips"},{title:"Tooltips variables",filename:"tooltips",url:"tooltips.html#tooltips-variables"},{title:"typography",filename:"typography",url:"typography.html"},{title:"Typogrphy",filename:"typography",url:"typography.html#typogrphy"},{title:"Typography variables",filename:"typography",url:"typography.html#typography-variables"},{title:"Font-size mixin",filename:"typography",url:"typography.html#fontsize-mixin"},{title:"Line-height mixin",filename:"typography",url:"typography.html#lineheight-mixin"},{title:"Word breaking mixin",filename:"typography",url:"typography.html#word-breaking-mixin"},{title:"Font face mixin",filename:"typography",url:"typography.html#font-face-mixin"},{title:"Text overflow mixin",filename:"typography",url:"typography.html#text-overflow-mixin"},{title:"Text hide",filename:"typography",url:"typography.html#text-hide"},{title:"Hyphens",filename:"typography",url:"typography.html#hyphens"},{title:"Font style and color",filename:"typography",url:"typography.html#font-style-and-color"},{title:"Font style mixin variables",filename:"typography",url:"typography.html#font-style-mixin-variables"},{title:"Reset list styles",filename:"typography",url:"typography.html#reset-list-styles"},{title:"Reset list styles variables",filename:"typography",url:"typography.html#reset-list-styles-variables"},{title:"Inline-block list item styling",filename:"typography",url:"typography.html#inlineblock-list-item-styling"},{title:"Link styling mixin",filename:"typography",url:"typography.html#link-styling-mixin"},{title:"Link styling mixin variables",filename:"typography",url:"typography.html#link-styling-mixin-variables"},{title:"Heading styling mixin",filename:"typography",url:"typography.html#heading-styling-mixin"},{title:"Base typography mixins",filename:"typography",url:"typography.html#base-typography-mixins"},{title:"Headings typography mixin",filename:"typography",url:"typography.html#headings-typography-mixin"},{title:"Typography links mixin",filename:"typography",url:"typography.html#typography-links-mixin"},{title:"Typography lists mixin",filename:"typography",url:"typography.html#typography-lists-mixin"},{title:"Typography code elements mixin",filename:"typography",url:"typography.html#typography-code-elements-mixin"},{title:"Typography blockquote",filename:"typography",url:"typography.html#typography-blockquote"},{title:"utilities",filename:"utilities",url:"utilities.html"},{title:"Utilities",filename:"utilities",url:"utilities.html#utilities"},{title:".clearfix()",filename:"utilities",url:"utilities.html#clearfix"},{title:".visibility-hidden()",filename:"utilities",url:"utilities.html#visibilityhidden"},{title:".visually-hidden()",filename:"utilities",url:"utilities.html#visuallyhidden"},{title:".visually-hidden-reset()",filename:"utilities",url:"utilities.html#visuallyhiddenreset"},{title:".css()",filename:"utilities",url:"utilities.html#css"},{title:".css() variables",filename:"utilities",url:"utilities.html#css-variables"},{title:".rotate()",filename:"utilities",url:"utilities.html#rotate"},{title:".rotate() variables",filename:"utilities",url:"utilities.html#rotate-variables"},{title:".input-placeholder()",filename:"utilities",url:"utilities.html#inputplaceholder"},{title:".input-placeholder() variables",filename:"utilities",url:"utilities.html#inputplaceholder-variables"},{title:".background-gradient()",filename:"utilities",url:"utilities.html#backgroundgradient"},{title:".background-gradient() variables",filename:"utilities",url:"utilities.html#backgroundgradient-variables"},{title:"variables",filename:"variables",url:"variables.html"},{title:"List of Global Variables",filename:"variables",url:"variables.html#list-of-global-variables"},{title:"Table with rows hover mixin variables",filename:"variables",url:"variables.html#table-with-rows-hover-mixin-variables"}];(function(){"use strict";var b=function(a,b){return Array.prototype.indexOf.call(a,b)!==-1},c=function(a,b){return Array.prototype.filter.call(a,b)},d=function(a,b){return Array.prototype.forEach.call(a,b)},e=document.getElementsByTagName("body")[0];e.addEventListener("click",function(a){var b=a.target;b.tagName.toLowerCase()==="svg"&&(b=b.parentNode);var c=!1;b.dataset.toggle!=null&&(a.preventDefault(),b.classList.contains("is-active")||(c=!0)),d(e.querySelectorAll("[data-toggle]"),function(a){a.classList.remove("is-active"),document.getElementById(a.dataset.toggle).hidden=!0}),c&&(b.classList.add("is-active"),document.getElementById(b.dataset.toggle).hidden=!1)}),function(){var f=e.getElementsByClassName("nav")[0];if(!f)return;var g=document.createElement("ul");g.className="nav-results",g.id="nav-search",g.hidden=!0,d(a,function(a){var b,c,d;b=document.createElement("li"),b._title=a.title.toLowerCase(),b.hidden=!0,b.appendChild(c=document.createElement("a")),c.href=a.url,c.innerHTML=a.title,c.appendChild(d=document.createElement("span")),d.innerHTML=a.filename,d.className="nav-results-filename",g.appendChild(b)}),f.appendChild(g);var h=g.children,i=function(a){d(h,function(a){a.hidden=!0});var b=this.value.toLowerCase(),e=[];b!==""&&(e=c(h,function(a){return a._title.indexOf(b)!==-1})),e.length>0?(d(e,function(a){a.hidden=!1}),g.hidden=!1):g.hidden=!0},j=f.querySelector('input[type="search"]');j.addEventListener("keyup",i),j.addEventListener("focus",i),e.addEventListener("click",function(a){if(a.target.classList&&a.target.classList.contains("search"))return;g.hidden=!0}),g.addEventListener("click",function(a){j.value=""});var k=document.createElement("ul");k.id="nav-toc",k.hidden=!0,k.className="nav-results toc-list",c(e.getElementsByTagName("*"),function(a){return b(["h1","h2","h3"],a.tagName.toLowerCase())}).map(function(a){var b=document.createElement("li"),c=document.createElement("a"),d=a.tagName.toLowerCase()[1];c.classList.add("level-"+d),b.appendChild(c),c.href="#"+a.id,c.innerHTML=a.innerHTML,k.appendChild(b)}),f.appendChild(k)}()})(),function(){"use strict";if(location.hash==="#__preview__"||location.protocol==="data:")return;var a=function(a,b){return Array.prototype.forEach.call(a,b)},b=function(a,b){var e=Array.prototype.slice.call(arguments,2);return d(a,function(a){return(c(b)?b||a:a[b]).apply(a,e)})},c=function(a){return Object.prototype.toString.call(a)==="[object Function]"},d=function(a,b){return Array.prototype.map.call(a,b)},e=function(a,b){return d(a,function(a){return a[b]})},f=function(a){var b={},c=a.split(";");for(var d=0;c.length>d;d++){var e=c[d].trim().split("=");b[e[0]]=e[1]}return b},g=function(a,c){return b(e(a,"classList"),"remove",c)},h=function(a,b){a.contentDocument.defaultView.postMessage(b,"*")},i=document.getElementsByTagName("head")[0],j=document.getElementsByTagName("body")[0],k=e(i.querySelectorAll('style[type="text/preview"]'),"innerHTML").join(""),l=e(i.querySelectorAll('script[type="text/preview"]'),"innerHTML").join(""),m=location.href.split("#")[0]+"#__preview__",n=document.createElement("iframe");n.src="data:text/html,",j.appendChild(n),n.addEventListener("load",function(){var b={sameOriginDataUri:!0};try{this.contentDocument,this.contentDocument||(b.sameOriginDataUri=!1)}catch(c){b.sameOriginDataUri=!1}this.parentNode.removeChild(this),a(j.getElementsByTagName("textarea"),function(a,c){o(a,b,c),q(),p(a)})});var o=function(a,b,c){var d,e,f;d=document.createElement("div"),d.appendChild(e=document.createElement("div")),d.className="preview",e.appendChild(f=document.createElement("iframe")),e.className="resizeable",f.setAttribute("scrolling","no"),f.name="iframe"+c++,f.addEventListener("load",function(){var c,d,e,f,g,i,j;j=this.contentDocument;if(!b.sameOriginDataUri&&this.src!==m)return;this.src===m&&(c=j.createElement("html"),c.appendChild(j.createElement("head")),c.appendChild(d=j.createElement("body")),d.innerHTML=a.textContent,j.replaceChild(c,j.documentElement)),g=j.createElement("head"),g.appendChild(f=j.createElement("style")),g.appendChild(e=j.createElement("script")),e.textContent=l,f.textContent=k,i=j.getElementsByTagName("head")[0],i.parentNode.replaceChild(g,i),h(this,"getHeight")});var g;b.sameOriginDataUri?g="data:text/html;charset=utf-8,"+encodeURIComponent("<!doctype html><html><head></head></body>"+a.textContent):g=m,f.setAttribute("src",g);var i=function(){f.contentDocument.body.innerHTML=this.value,h(f,"getHeight")};a.addEventListener("keypress",i),a.addEventListener("keyup",i),a.parentNode.insertBefore(d,a)},p=function(a){var b=document.createElement("div");b.className="preview-code",b.style.position="absolute",b.style.left="-9999px",j.appendChild(b);var c=parseInt(window.getComputedStyle(a).getPropertyValue("max-height"),10),d=function(a){b.textContent=this.value+"\n";var d=b.offsetHeight+2;d>=c?this.style.overflow="auto":this.style.overflow="hidden",this.style.height=b.offsetHeight+2+"px"};a.addEventListener("keypress",d),a.addEventListener("keyup",d),d.call(a)},q=function(){var b=j.getElementsByClassName("settings")[0],c=j.getElementsByClassName("resizeable"),d=30,e=function(b){document.cookie="preview-width="+b,a(c,function(a){b==="auto"&&(b=a.parentNode.offsetWidth),a.style.width=b+"px",h(a.getElementsByTagName("iframe")[0],"getHeight")})},i=f(document.cookie)["preview-width"];if(i){e(i),g(b.getElementsByClassName("is-active"),"is-active");var k=b.querySelector('button[data-width="'+i+'"]');k&&k.classList.add("is-active")}window.addEventListener("message",function(a){if(a.data==null||!a.source)return;var b=a.data,c=document.getElementsByName(a.source.name)[0];b.height!=null&&c&&(c.parentNode.style.height=b.height+d+"px")},!1),b&&c.length>0&&(b.hidden=!1,b.addEventListener("click",function(a){var c=a.target.tagName.toLowerCase(),d;if(c==="button")d=a.target;else{if(c!=="svg")return;d=a.target.parentNode}a.preventDefault(),g(b.getElementsByClassName("is-active"),"is-active"),d.classList.add("is-active");var f=d.dataset.width;e(f)}))}}()})()</script></body></html><!-- Generated with StyleDocco (http://jacobrask.github.com/styledocco). -->
+</div><div class="code"><pre><code>.icons-image-list {
+    list-style: none;
+    padding: 0;
+    li {
+        float: left;
+        width: 33%;
+        > span {
+            .icon-image(@_icon-image: '@{baseDir}images/blank-theme-icons.png');
+        }
+        .icon-search {
+            .icon-sprite-position(0, 0);
+        }
+        .icon-cart {
+            .icon-sprite-position(1, 0);
+        }
+        .icon-arrow-down {
+            .icon-sprite-position(2, 0);
+        }
+        .icon-arrow-up {
+            .icon-sprite-position(3, 0);
+        }
+        .icon-grid {
+            .icon-sprite-position(4, 0);
+        }
+        .icon-list {
+            .icon-sprite-position(5, 0);
+        }
+        .icon-remove {
+            .icon-sprite-position(6, 0);
+        }
+        .icon-star {
+            .icon-sprite-position(7, 0);
+        }
+        .icon-pointer-down {
+            .icon-sprite-position(8, 0);
+        }
+        .icon-pointer-up {
+            .icon-sprite-position(9, 0);
+        }
+        .icon-pointer-left {
+            .icon-sprite-position(10, 0);
+        }
+        .icon-pointer-right {
+            .icon-sprite-position(11, 0);
+        }
+        .icon-compare-empty {
+            .icon-sprite-position(0, 1);
+        }
+        .icon-compare-full {
+            .icon-sprite-position(1, 1);
+        }
+        .icon-wishlist-empty {
+            .icon-sprite-position(2, 1);
+        }
+        .icon-wishlist-full {
+            .icon-sprite-position(3, 1);
+        }
+        .icon-update {
+            .icon-sprite-position(4, 1);
+        }
+        .icon-collapse {
+            .icon-sprite-position(5, 1);
+        }
+        .icon-expand {
+            .icon-sprite-position(6, 1);
+        }
+        .icon-menu {
+            .icon-sprite-position(7, 1);
+        }
+        .icon-prev {
+            .icon-sprite-position(8, 1);
+        }
+        .icon-next {
+            .icon-sprite-position(9, 1);
+        }
+        .icon-settings {
+            .icon-sprite-position(10, 1);
+        }
+        .icon-info {
+            .icon-sprite-position(11, 1);
+        }
+        .icon-checkmark {
+            .icon-sprite-position(0, 2);
+        }
+        .icon-calendar {
+            .icon-sprite-position(1, 2);
+        }
+        .icon-comment {
+            .icon-sprite-position(2, 2);
+        }
+        .icon-comment-reflected {
+            .icon-sprite-position(3, 2);
+        }
+        .icon-envelope {
+            .icon-sprite-position(4, 2);
+        }
+        .icon-warning {
+            .icon-sprite-position(5, 2);
+        }
+        .icon-trash {
+            .icon-sprite-position(6, 2);
+        }
+        .icon-flag {
+            .icon-sprite-position(7, 2);
+        }
+        .icon-location {
+            .icon-sprite-position(8, 2);
+        }
+        .icon-up {
+            .icon-sprite-position(9, 2);
+        }
+        .icon-down {
+            .icon-sprite-position(10, 2);
+        }
+    }
+}
+
+@icon-wishlist-full: '\e600';
+@icon-wishlist-empty: '\e601';
+@icon-warning: '\e602';
+@icon-update: '\e603';
+@icon-trash: '\e604';
+@icon-star: '\e605';
+@icon-settings: '\e606';
+@icon-pointer-down: '\e607';
+@icon-next: '\e608';
+@icon-menu: '\e609';
+@icon-location: '\e60a';
+@icon-list: '\e60b';
+@icon-info: '\e60c';
+@icon-grid: '\e60d';
+@icon-comment-reflected: '\e60e';
+@icon-collapse: '\e60f';
+@icon-checkmark: '\e610';
+@icon-cart: '\e611';
+@icon-calendar: '\e612';
+@icon-arrow-up: '\e613';
+@icon-arrow-down: '\e614';
+@icon-search: '\e615';
+@icon-remove: '\e616';
+@icon-prev: '\e617';
+@icon-pointer-up: '\e618';
+@icon-pointer-right: '\e619';
+@icon-pointer-left: '\e61a';
+@icon-flag: '\e61b';
+@icon-expand: '\e61c';
+@icon-envelope: '\e61d';
+@icon-compare-full: '\e61e';
+@icon-compare-empty: '\e61f';
+@icon-comment: '\e620';
+@icon-up: '\e621';
+@icon-down: '\e622';
+@icon-arrow-up-thin: '\e623';
+@icon-arrow-right-thin: '\e624';
+@icon-arrow-left-thin: '\e625';
+@icon-arrow-down-thin: '\e626';
+
+.icons-font-list {
+    list-style: none;
+    padding: 0;
+    li {
+        float: left;
+        width: 25%;
+        margin-bottom: 35px;
+        text-align: center;
+        > span {
+            .icon-font('', @_icon-font-size: 34px);
+            &:before {
+                content: attr(data-icon);
+                margin: 0 auto;
+                display: block;
+            }
+        }
+    }
+}</code></pre></div></article></section><div class="bar bottom"><div hidden class="settings container"><!-- Icons from http://iconmonstr.com--><button title="Desktop (1280)" data-width='1280'><svg viewBox="0 0 412 386" height="24" width="26" class="icon"><path d="m147.6,343.9c-4.5,15.9-26.2,37.6-42.1,42.1h201c-15.3,-4-38.1,-26.8-42.1,-42.1H147.6zM387,0.5H25c-13.8,0-25,11.2-25,25V294c0,13.8 11.2,25 25,25h362c13.8,0 25,-11.2 25,-25V25.5C412,11.7 400.8,0.5 387,0.5zM369.9,238.2H42.1L42.1,42.6 369.9,42.6V238.2z"></path></svg></button><button title="Laptop (1024)" data-width='1024'><svg viewBox="0 0 384 312" height="23" width="28" class="icon"><path d="m349.2,20.5c0,-11-9,-20-20,-20H53.6c-11,0-20,9-20,20v194H349.2v-194zm-27,167H60.6V27.5H322.2v160zm28,42H32.6L2.6,282.1c-3.5,6.2-3.5,13.8 0.1,19.9 3.6,6.2 10.2,9.9 17.3,9.9H363.1c7.1,0 13.7,-3.8 17.3,-10 3.6,-6.2 3.6,-13.8 0,-20l-30.2,-52.5zm-196.9,54 8,-23.5h60.5l8,23.5h-76.5z"></path></svg></button><button title="Tablet (768)" data-width='768'><svg viewBox="0 0 317 412" height="24" width="18" class="icon"><path d="M 316.5,380 V 32 c 0,-17.7 -14.3,-32 -32,-32 H 32 C 14.3,0 0,14.3 0,32 v 348 c 0,17.7 14.3,32 32,32 h 252.5 c 17.7,0 32,-14.3 32,-32 z M 40,367 V 45 H 276.5 V 367 H 40 z m 109.8,22.7 c 0,-4.7 3.8,-8.5 8.5,-8.5 4.7,0 8.5,3.8 8.5,8.5 0,4.7 -3.8,8.5 -8.5,8.5 -4.7,0 -8.5,-3.8 -8.5,-8.5 z"></path></svg></button><button title="Smart phone (320)" data-width='320'><svg viewBox="0 0 224 412" height="24" width="13" class="icon"><path d="M 190.7,0 H 33 C 14.8,0 0,14.8 0,33 v 346 c 0,18.2 14.8,33 33,33 h 157.7 c 18.2,0 33,-14.8 33,-33 V 33 c 0,-18.2 -14.8,-33 -33,-33 z M 94.3,30.2 h 37 c 2.2,0 4,1.8 4,4 0,2.2 -1.8,4 -4,4 h -37 c -2.2,0 -4,-1.8 -4,-4 0,-2.2 1.8,-4 4,-4 z m 18.5,362.8 c -8.8,0 -16,-7.2 -16,-16 0,-8.8 7.2,-16 16,-16 8.8,0 16,7.2 16,16 0,8.8 -7.2,16 -16,16 z M 198.6,343.8 H 25.1 V 68.2 h 173.5 v 275.5 z"></path></svg></button><button title="Feature phone (240)" data-width='240'><svg viewBox="0 0 201 412" height="24" width="12" class="icon"><path d="M 165.5,0.2 V 45 H 25 c -13.8,0 -25,11.2 -25,25 V 387 c 0,13.8 11.2,25 25,25 h 150.5 c 13.8,0 25,-11.2 25,-25 V 0.2 h -35 z M 65.2,366.5 H 34.2 v -24.5 h 31 v 24.5 z m 0,-44.3 H 34.2 v -24.5 h 31 v 24.5 z m 50.5,44.3 H 84.7 v -24.5 h 31 v 24.5 z m 0,-44.3 H 84.7 v -24.5 h 31 v 24.5 z m 50.5,44.3 h -31 v -24.5 h 31 v 24.5 z m 0,-44.3 h -31 v -24.5 h 31 v 24.5 z m 0,-59.3 h -132 V 95.4 h 132 V 262.9 z"></path></svg></button><button title="Auto (100%)" data-width="auto" class="auto is-active">Auto</button></div></div><script>(function(){var a=[{title:"actions-toolbar",filename:"actions-toolbar",url:"actions-toolbar.html"},{title:"",filename:"actions-toolbar",url:"actions-toolbar.html#"},{title:"Actions toolbar",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar"},{title:"Actions toolbar mixin variables",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar-mixin-variables"},{title:"Actions toolbar alignment",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar-alignment"},{title:"Reverse primary and secondary blocks",filename:"actions-toolbar",url:"actions-toolbar.html#reverse-primary-and-secondary-blocks"},{title:"Actions toolbar indents customizations",filename:"actions-toolbar",url:"actions-toolbar.html#actions-toolbar-indents-customizations"},{title:"Responsive actions toolbar",filename:"actions-toolbar",url:"actions-toolbar.html#responsive-actions-toolbar"},{title:"breadcrumbs",filename:"breadcrumbs",url:"breadcrumbs.html"},{title:"",filename:"breadcrumbs",url:"breadcrumbs.html#"},{title:"Breadcrumbs",filename:"breadcrumbs",url:"breadcrumbs.html#breadcrumbs"},{title:"Breadcrumbs variables",filename:"breadcrumbs",url:"breadcrumbs.html#breadcrumbs-variables"},{title:"Button-styled breadcrumbs with gradient background, border, and no separating symbol",filename:"breadcrumbs",url:"breadcrumbs.html#buttonstyled-breadcrumbs-with-gradient-background-border-and-no-separating-symbol"},{title:"Breadcrumbs with solid background",filename:"breadcrumbs",url:"breadcrumbs.html#breadcrumbs-with-solid-background"},{title:"buttons",filename:"buttons",url:"buttons.html"},{title:"",filename:"buttons",url:"buttons.html#"},{title:"Default button",filename:"buttons",url:"buttons.html#default-button"},{title:"Button variables",filename:"buttons",url:"buttons.html#button-variables"},{title:"Button as an icon",filename:"buttons",url:"buttons.html#button-as-an-icon"},{title:"Button with an icon on the left or right side of the text",filename:"buttons",url:"buttons.html#button-with-an-icon-on-the-left-or-right-side-of-the-text"},{title:"Button with fixed width",filename:"buttons",url:"buttons.html#button-with-fixed-width"},{title:"Primary button",filename:"buttons",url:"buttons.html#primary-button"},{title:"Primary button variables",filename:"buttons",url:"buttons.html#primary-button-variables"},{title:"Button with gradient background",filename:"buttons",url:"buttons.html#button-with-gradient-background"},{title:"Button as a link",filename:"buttons",url:"buttons.html#button-as-a-link"},{title:"Button as a link variables",filename:"buttons",url:"buttons.html#button-as-a-link-variables"},{title:"Link as a button",filename:"buttons",url:"buttons.html#link-as-a-button"},{title:"Button reset",filename:"buttons",url:"buttons.html#button-reset"},{title:"Button revert secondary color",filename:"buttons",url:"buttons.html#button-revert-secondary-color"},{title:"Button revert secondary color variables",filename:"buttons",url:"buttons.html#button-revert-secondary-color-variables"},{title:"Button revert secondary size",filename:"buttons",url:"buttons.html#button-revert-secondary-size"},{title:"Button revert secondary size variables",filename:"buttons",url:"buttons.html#button-revert-secondary-size-variables"},{title:"docs",filename:"docs",url:"docs.html"},{title:"",filename:"docs",url:"docs.html#"},{title:"Documentation",filename:"docs",url:"docs.html#documentation"},{title:"dropdowns",filename:"dropdowns",url:"dropdowns.html"},{title:"",filename:"dropdowns",url:"dropdowns.html#"},{title:"Drop-down and split buttons mixins",filename:"dropdowns",url:"dropdowns.html#dropdown-and-split-buttons-mixins"},{title:"Drop-down",filename:"dropdowns",url:"dropdowns.html#dropdown"},{title:"Drop-down variables",filename:"dropdowns",url:"dropdowns.html#dropdown-variables"},{title:"Drop-down with icon customization",filename:"dropdowns",url:"dropdowns.html#dropdown-with-icon-customization"},{title:"Modify dropdown list styles",filename:"dropdowns",url:"dropdowns.html#modify-dropdown-list-styles"},{title:"Split button",filename:"dropdowns",url:"dropdowns.html#split-button"},{title:"Split button variables",filename:"dropdowns",url:"dropdowns.html#split-button-variables"},{title:"Split button - button styling",filename:"dropdowns",url:"dropdowns.html#split-button-button-styling"},{title:"Split button icon customization",filename:"dropdowns",url:"dropdowns.html#split-button-icon-customization"},{title:"Split button drop-down list customization",filename:"dropdowns",url:"dropdowns.html#split-button-dropdown-list-customization"},{title:"forms",filename:"forms",url:"forms.html"},{title:"",filename:"forms",url:"forms.html#"},{title:"Forms mixins",filename:"forms",url:"forms.html#forms-mixins"},{title:"Global forms elements customization",filename:"forms",url:"forms.html#global-forms-elements-customization"},{title:"Fieldsets & fields customization",filename:"forms",url:"forms.html#fieldsets-fields-customization"},{title:"Fieldset and legend customization variables",filename:"forms",url:"forms.html#fieldset-and-legend-customization-variables"},{title:"Fields customization variables",filename:"forms",url:"forms.html#fields-customization-variables"},{title:"Required fields message customization variables",filename:"forms",url:"forms.html#required-fields-message-customization-variables"},{title:"Form element inputs customization",filename:"forms",url:"forms.html#form-element-inputs-customization"},{title:"Form element inputs customization variables",filename:"forms",url:"forms.html#form-element-inputs-customization-variables"},{title:"Form element choice",filename:"forms",url:"forms.html#form-element-choice"},{title:"Form element choice variables",filename:"forms",url:"forms.html#form-element-choice-variables"},{title:"Custom color",filename:"forms",url:"forms.html#custom-color"},{title:"Input number - input-text view",filename:"forms",url:"forms.html#input-number-inputtext-view"},{title:"Input search - input-text view",filename:"forms",url:"forms.html#input-search-inputtext-view"},{title:"Form validation",filename:"forms",url:"forms.html#form-validation"},{title:"Form validation variables//  <pre>",filename:"forms",url:"forms.html#form-validation-variables-pre"},{title:"icons",filename:"icons",url:"icons.html"},{title:"Icons",filename:"icons",url:"icons.html#icons"},{title:"Icon with image or sprite",filename:"icons",url:"icons.html#icon-with-image-or-sprite"},{title:"Icon with image or sprite variables",filename:"icons",url:"icons.html#icon-with-image-or-sprite-variables"},{title:"Icon position for an icon with image or sprite",filename:"icons",url:"icons.html#icon-position-for-an-icon-with-image-or-sprite"},{title:"Position for icon with image or sprite mixin variables",filename:"icons",url:"icons.html#position-for-icon-with-image-or-sprite-mixin-variables"},{title:"Icon sprite position (with grid)",filename:"icons",url:"icons.html#icon-sprite-position-with-grid"},{title:"Icon sprite position variables",filename:"icons",url:"icons.html#icon-sprite-position-variables"},{title:"Image/sprite icon size",filename:"icons",url:"icons.html#imagesprite-icon-size"},{title:"Image/sprite icon size variables",filename:"icons",url:"icons.html#imagesprite-icon-size-variables"},{title:"Font icon",filename:"icons",url:"icons.html#font-icon"},{title:"Font icon variables",filename:"icons",url:"icons.html#font-icon-variables"},{title:"Change the size of font icon",filename:"icons",url:"icons.html#change-the-size-of-font-icon"},{title:"Change the size of font icon variables",filename:"icons",url:"icons.html#change-the-size-of-font-icon-variables"},{title:"Hide icon text",filename:"icons",url:"icons.html#hide-icon-text"},{title:"Sprite and font icons for Blank theme",filename:"icons",url:"icons.html#sprite-and-font-icons-for-blank-theme"},{title:"layout",filename:"layout",url:"layout.html"},{title:"",filename:"layout",url:"layout.html#"},{title:"Layout",filename:"layout",url:"layout.html#layout"},{title:"Layout global variables",filename:"layout",url:"layout.html#layout-global-variables"},{title:"Page layouts",filename:"layout",url:"layout.html#page-layouts"},{title:"Layout column",filename:"layout",url:"layout.html#layout-column"},{title:"Layout column variables",filename:"layout",url:"layout.html#layout-column-variables"},{title:"Layout width",filename:"layout",url:"layout.html#layout-width"},{title:"Layout width variables",filename:"layout",url:"layout.html#layout-width-variables"},{title:"lib",filename:"lib",url:"lib.html"},{title:"",filename:"lib",url:"lib.html#"},{title:"Including Magento UI library to your theme",filename:"lib",url:"lib.html#including-magento-ui-library-to-your-theme"},{title:"loaders",filename:"loaders",url:"loaders.html"},{title:"",filename:"loaders",url:"loaders.html#"},{title:"Loaders",filename:"loaders",url:"loaders.html#loaders"},{title:"Default loader variables",filename:"loaders",url:"loaders.html#default-loader-variables"},{title:"Loading",filename:"loaders",url:"loaders.html#loading"},{title:"Loading default variables",filename:"loaders",url:"loaders.html#loading-default-variables"},{title:"messages",filename:"messages",url:"messages.html"},{title:"",filename:"messages",url:"messages.html#"},{title:"Messages",filename:"messages",url:"messages.html#messages"},{title:"Information message",filename:"messages",url:"messages.html#information-message"},{title:"Warning message",filename:"messages",url:"messages.html#warning-message"},{title:"Error message",filename:"messages",url:"messages.html#error-message"},{title:"Success message",filename:"messages",url:"messages.html#success-message"},{title:"Notice message",filename:"messages",url:"messages.html#notice-message"},{title:"Message with inner icon",filename:"messages",url:"messages.html#message-with-inner-icon"},{title:"Message with lateral icon",filename:"messages",url:"messages.html#message-with-lateral-icon"},{title:"Custom message style",filename:"messages",url:"messages.html#custom-message-style"},{title:"Messages global variables",filename:"messages",url:"messages.html#messages-global-variables"},{title:"pages",filename:"pages",url:"pages.html"},{title:"",filename:"pages",url:"pages.html#"},{title:"Pagination HTML markup",filename:"pages",url:"pages.html#pagination-html-markup"},{title:"Pagination variables",filename:"pages",url:"pages.html#pagination-variables"},{title:"Pagination with label and gradient background on links",filename:"pages",url:"pages.html#pagination-with-label-and-gradient-background-on-links"},{title:'Pagination with "previous"..."next" text links and label',filename:"pages",url:"pages.html#pagination-with-previousnext-text-links-and-label"},{title:"Pagination without label, with solid background",filename:"pages",url:"pages.html#pagination-without-label-with-solid-background"},{title:"popups",filename:"popups",url:"popups.html"},{title:"",filename:"popups",url:"popups.html#"},{title:"Popups",filename:"popups",url:"popups.html#popups"},{title:"Popup variables",filename:"popups",url:"popups.html#popup-variables"},{title:"Window overlay mixin variables",filename:"popups",url:"popups.html#window-overlay-mixin-variables"},{title:"Fixed height popup",filename:"popups",url:"popups.html#fixed-height-popup"},{title:"Fixed content height popup",filename:"popups",url:"popups.html#fixed-content-height-popup"},{title:"Margins for header, content and footer block in popup",filename:"popups",url:"popups.html#margins-for-header-content-and-footer-block-in-popup"},{title:"Popup titles styled as theme headings",filename:"popups",url:"popups.html#popup-titles-styled-as-theme-headings"},{title:"Popup action toolbar",filename:"popups",url:"popups.html#popup-action-toolbar"},{title:"Popup Close button without an icon",filename:"popups",url:"popups.html#popup-close-button-without-an-icon"},{title:"Modify the icon of popup Close button",filename:"popups",url:"popups.html#modify-the-icon-of-popup-close-button"},{title:"Modify overlay styles",filename:"popups",url:"popups.html#modify-overlay-styles"},{title:"rating",filename:"rating",url:"rating.html"},{title:"",filename:"rating",url:"rating.html#"},{title:"Ratings",filename:"rating",url:"rating.html#ratings"},{title:"Global rating variables",filename:"rating",url:"rating.html#global-rating-variables"},{title:"Rating with vote",filename:"rating",url:"rating.html#rating-with-vote"},{title:"Rating with vote icons number customization",filename:"rating",url:"rating.html#rating-with-vote-icons-number-customization"},{title:"Rating with vote icons colors customization",filename:"rating",url:"rating.html#rating-with-vote-icons-colors-customization"},{title:"Rating with vote icons symbol customization",filename:"rating",url:"rating.html#rating-with-vote-icons-symbol-customization"},{title:"Accessible rating with vote",filename:"rating",url:"rating.html#accessible-rating-with-vote"},{title:"Rating summary",filename:"rating",url:"rating.html#rating-summary"},{title:"Rating summary icons number customization",filename:"rating",url:"rating.html#rating-summary-icons-number-customization"},{title:"Rating summary icons color customization",filename:"rating",url:"rating.html#rating-summary-icons-color-customization"},{title:"Rating summary icons symbol customization",filename:"rating",url:"rating.html#rating-summary-icons-symbol-customization"},{title:"Rating summary hide label",filename:"rating",url:"rating.html#rating-summary-hide-label"},{title:"Rating summary multiple ratings",filename:"rating",url:"rating.html#rating-summary-multiple-ratings"},{title:"Rating hide label mixin",filename:"rating",url:"rating.html#rating-hide-label-mixin"},{title:"resets",filename:"resets",url:"resets.html"},{title:"",filename:"resets",url:"resets.html#"},{title:"Resets",filename:"resets",url:"resets.html#resets"},{title:"responsive",filename:"responsive",url:"responsive.html"},{title:"",filename:"responsive",url:"responsive.html#"},{title:"Responsive",filename:"responsive",url:"responsive.html#responsive"},{title:"Responsive mixins usage",filename:"responsive",url:"responsive.html#responsive-mixins-usage"},{title:"Media query style groups separation variables",filename:"responsive",url:"responsive.html#media-query-style-groups-separation-variables"},{title:"Responsive breakpoints",filename:"responsive",url:"responsive.html#responsive-breakpoints"},{title:"sections",filename:"sections",url:"sections.html"},{title:"",filename:"sections",url:"sections.html#"},{title:"Tabs and accordions",filename:"sections",url:"sections.html#tabs-and-accordions"},{title:"Tabs",filename:"sections",url:"sections.html#tabs"},{title:"Tabs mixin variables",filename:"sections",url:"sections.html#tabs-mixin-variables"},{title:"Tabs with content top border",filename:"sections",url:"sections.html#tabs-with-content-top-border"},{title:"Accordion",filename:"sections",url:"sections.html#accordion"},{title:"Accordion mixin variables",filename:"sections",url:"sections.html#accordion-mixin-variables"},{title:"Responsive tabs",filename:"sections",url:"sections.html#responsive-tabs"},{title:"Tabs Base",filename:"sections",url:"sections.html#tabs-base"},{title:"Accordion Base",filename:"sections",url:"sections.html#accordion-base"},{title:"tables",filename:"tables",url:"tables.html"},{title:"",filename:"tables",url:"tables.html#"},{title:"Tables",filename:"tables",url:"tables.html#tables"},{title:"Table mixin variables",filename:"tables",url:"tables.html#table-mixin-variables"},{title:"Table typography",filename:"tables",url:"tables.html#table-typography"},{title:"Table typography mixin variables",filename:"tables",url:"tables.html#table-typography-mixin-variables"},{title:"Table caption",filename:"tables",url:"tables.html#table-caption"},{title:"Table caption mixin variables",filename:"tables",url:"tables.html#table-caption-mixin-variables"},{title:"Table cells resize",filename:"tables",url:"tables.html#table-cells-resize"},{title:"Table cells resize variables",filename:"tables",url:"tables.html#table-cells-resize-variables"},{title:"Table background customization",filename:"tables",url:"tables.html#table-background-customization"},{title:"Table background mixin variables",filename:"tables",url:"tables.html#table-background-mixin-variables"},{title:"Table borders customization",filename:"tables",url:"tables.html#table-borders-customization"},{title:"Table borders mixin variables",filename:"tables",url:"tables.html#table-borders-mixin-variables"},{title:"Table with horizontal borders",filename:"tables",url:"tables.html#table-with-horizontal-borders"},{title:"Table with vertical borders",filename:"tables",url:"tables.html#table-with-vertical-borders"},{title:"Table with light borders",filename:"tables",url:"tables.html#table-with-light-borders"},{title:"Table without borders",filename:"tables",url:"tables.html#table-without-borders"},{title:"Striped table",filename:"tables",url:"tables.html#striped-table"},{title:"Striped table mixin variables",filename:"tables",url:"tables.html#striped-table-mixin-variables"},{title:"Table with rows hover",filename:"tables",url:"tables.html#table-with-rows-hover"},{title:"Table with rows hover mixin variables",filename:"tables",url:"tables.html#table-with-rows-hover-mixin-variables"},{title:"Responsive table technics #1",filename:"tables",url:"tables.html#responsive-table-technics-1"},{title:"Responsive table technics #2",filename:"tables",url:"tables.html#responsive-table-technics-2"},{title:"Responsive table technics #2 mixin variables",filename:"tables",url:"tables.html#responsive-table-technics-2-mixin-variables"},{title:"tooltips",filename:"tooltips",url:"tooltips.html"},{title:"",filename:"tooltips",url:"tooltips.html#"},{title:"Tooltips",filename:"tooltips",url:"tooltips.html#tooltips"},{title:"Tooltips variables",filename:"tooltips",url:"tooltips.html#tooltips-variables"},{title:"typography",filename:"typography",url:"typography.html"},{title:"",filename:"typography",url:"typography.html#"},{title:"Typogrphy",filename:"typography",url:"typography.html#typogrphy"},{title:"Typography variables",filename:"typography",url:"typography.html#typography-variables"},{title:"Font-size mixin",filename:"typography",url:"typography.html#fontsize-mixin"},{title:"Line-height mixin",filename:"typography",url:"typography.html#lineheight-mixin"},{title:"Word breaking mixin",filename:"typography",url:"typography.html#word-breaking-mixin"},{title:"Font face mixin",filename:"typography",url:"typography.html#font-face-mixin"},{title:"Text overflow mixin",filename:"typography",url:"typography.html#text-overflow-mixin"},{title:"Text hide",filename:"typography",url:"typography.html#text-hide"},{title:"Hyphens",filename:"typography",url:"typography.html#hyphens"},{title:"Font style and color",filename:"typography",url:"typography.html#font-style-and-color"},{title:"Font style mixin variables",filename:"typography",url:"typography.html#font-style-mixin-variables"},{title:"Reset list styles",filename:"typography",url:"typography.html#reset-list-styles"},{title:"Reset list styles variables",filename:"typography",url:"typography.html#reset-list-styles-variables"},{title:"Inline-block list item styling",filename:"typography",url:"typography.html#inlineblock-list-item-styling"},{title:"Link styling mixin",filename:"typography",url:"typography.html#link-styling-mixin"},{title:"Link styling mixin variables",filename:"typography",url:"typography.html#link-styling-mixin-variables"},{title:"Heading styling mixin",filename:"typography",url:"typography.html#heading-styling-mixin"},{title:"Base typography mixins",filename:"typography",url:"typography.html#base-typography-mixins"},{title:"Headings typography mixin",filename:"typography",url:"typography.html#headings-typography-mixin"},{title:"Typography links mixin",filename:"typography",url:"typography.html#typography-links-mixin"},{title:"Typography lists mixin",filename:"typography",url:"typography.html#typography-lists-mixin"},{title:"Typography code elements mixin",filename:"typography",url:"typography.html#typography-code-elements-mixin"},{title:"Typography blockquote",filename:"typography",url:"typography.html#typography-blockquote"},{title:"utilities",filename:"utilities",url:"utilities.html"},{title:"",filename:"utilities",url:"utilities.html#"},{title:"Utilities",filename:"utilities",url:"utilities.html#utilities"},{title:".clearfix()",filename:"utilities",url:"utilities.html#clearfix"},{title:".visibility-hidden()",filename:"utilities",url:"utilities.html#visibilityhidden"},{title:".visually-hidden()",filename:"utilities",url:"utilities.html#visuallyhidden"},{title:".visually-hidden-reset()",filename:"utilities",url:"utilities.html#visuallyhiddenreset"},{title:".css()",filename:"utilities",url:"utilities.html#css"},{title:".css() variables",filename:"utilities",url:"utilities.html#css-variables"},{title:".rotate()",filename:"utilities",url:"utilities.html#rotate"},{title:".rotate() variables",filename:"utilities",url:"utilities.html#rotate-variables"},{title:".input-placeholder()",filename:"utilities",url:"utilities.html#inputplaceholder"},{title:".input-placeholder() variables",filename:"utilities",url:"utilities.html#inputplaceholder-variables"},{title:".background-gradient()",filename:"utilities",url:"utilities.html#backgroundgradient"},{title:".background-gradient() variables",filename:"utilities",url:"utilities.html#backgroundgradient-variables"},{title:"variables",filename:"variables",url:"variables.html"},{title:"",filename:"variables",url:"variables.html#"},{title:"List of Global Variables",filename:"variables",url:"variables.html#list-of-global-variables"},{title:"Table with rows hover mixin variables",filename:"variables",url:"variables.html#table-with-rows-hover-mixin-variables"}];(function(){"use strict";var b=function(a,b){return Array.prototype.indexOf.call(a,b)!==-1},c=function(a,b){return Array.prototype.filter.call(a,b)},d=function(a,b){return Array.prototype.forEach.call(a,b)},e=document.getElementsByTagName("body")[0];e.addEventListener("click",function(a){var b=a.target;b.tagName.toLowerCase()==="svg"&&(b=b.parentNode);var c=!1;b.dataset.toggle!=null&&(a.preventDefault(),b.classList.contains("is-active")||(c=!0)),d(e.querySelectorAll("[data-toggle]"),function(a){a.classList.remove("is-active"),document.getElementById(a.dataset.toggle).hidden=!0}),c&&(b.classList.add("is-active"),document.getElementById(b.dataset.toggle).hidden=!1)}),function(){var f=e.getElementsByClassName("nav")[0];if(!f)return;var g=document.createElement("ul");g.className="nav-results",g.id="nav-search",g.hidden=!0,d(a,function(a){var b,c,d;b=document.createElement("li"),b._title=a.title.toLowerCase(),b.hidden=!0,b.appendChild(c=document.createElement("a")),c.href=a.url,c.innerHTML=a.title,c.appendChild(d=document.createElement("span")),d.innerHTML=a.filename,d.className="nav-results-filename",g.appendChild(b)}),f.appendChild(g);var h=g.children,i=function(a){d(h,function(a){a.hidden=!0});var b=this.value.toLowerCase(),e=[];b!==""&&(e=c(h,function(a){return a._title.indexOf(b)!==-1})),e.length>0?(d(e,function(a){a.hidden=!1}),g.hidden=!1):g.hidden=!0},j=f.querySelector('input[type="search"]');j.addEventListener("keyup",i),j.addEventListener("focus",i),e.addEventListener("click",function(a){if(a.target.classList&&a.target.classList.contains("search"))return;g.hidden=!0}),g.addEventListener("click",function(a){j.value=""});var k=document.createElement("ul");k.id="nav-toc",k.hidden=!0,k.className="nav-results toc-list",c(e.getElementsByTagName("*"),function(a){return b(["h1","h2","h3"],a.tagName.toLowerCase())}).map(function(a){var b=document.createElement("li"),c=document.createElement("a"),d=a.tagName.toLowerCase()[1];c.classList.add("level-"+d),b.appendChild(c),c.href="#"+a.id,c.innerHTML=a.innerHTML,k.appendChild(b)}),f.appendChild(k)}()})(),function(){"use strict";if(location.hash==="#__preview__"||location.protocol==="data:")return;var a=function(a,b){return Array.prototype.forEach.call(a,b)},b=function(a,b){var e=Array.prototype.slice.call(arguments,2);return d(a,function(a){return(c(b)?b||a:a[b]).apply(a,e)})},c=function(a){return Object.prototype.toString.call(a)==="[object Function]"},d=function(a,b){return Array.prototype.map.call(a,b)},e=function(a,b){return d(a,function(a){return a[b]})},f=function(a){var b={},c=a.split(";");for(var d=0;c.length>d;d++){var e=c[d].trim().split("=");b[e[0]]=e[1]}return b},g=function(a,c){return b(e(a,"classList"),"remove",c)},h=function(a,b){a.contentDocument.defaultView.postMessage(b,"*")},i=document.getElementsByTagName("head")[0],j=document.getElementsByTagName("body")[0],k=e(i.querySelectorAll('style[type="text/preview"]'),"innerHTML").join(""),l=e(i.querySelectorAll('script[type="text/preview"]'),"innerHTML").join(""),m=location.href.split("#")[0]+"#__preview__",n=document.createElement("iframe");n.src="data:text/html,",j.appendChild(n),n.addEventListener("load",function(){var b={sameOriginDataUri:!0};try{this.contentDocument,this.contentDocument||(b.sameOriginDataUri=!1)}catch(c){b.sameOriginDataUri=!1}this.parentNode.removeChild(this),a(j.getElementsByTagName("textarea"),function(a,c){o(a,b,c),q(),p(a)})});var o=function(a,b,c){var d,e,f;d=document.createElement("div"),d.appendChild(e=document.createElement("div")),d.className="preview",e.appendChild(f=document.createElement("iframe")),e.className="resizeable",f.setAttribute("scrolling","no"),f.name="iframe"+c++,f.addEventListener("load",function(){var c,d,e,f,g,i,j;j=this.contentDocument;if(!b.sameOriginDataUri&&this.src!==m)return;this.src===m&&(c=j.createElement("html"),c.appendChild(j.createElement("head")),c.appendChild(d=j.createElement("body")),d.innerHTML=a.textContent,j.replaceChild(c,j.documentElement)),g=j.createElement("head"),g.appendChild(f=j.createElement("style")),g.appendChild(e=j.createElement("script")),e.textContent=l,f.textContent=k,i=j.getElementsByTagName("head")[0],i.parentNode.replaceChild(g,i),h(this,"getHeight")});var g;b.sameOriginDataUri?g="data:text/html;charset=utf-8,"+encodeURIComponent("<!doctype html><html><head></head></body>"+a.textContent):g=m,f.setAttribute("src",g);var i=function(){f.contentDocument.body.innerHTML=this.value,h(f,"getHeight")};a.addEventListener("keypress",i),a.addEventListener("keyup",i),a.parentNode.insertBefore(d,a)},p=function(a){var b=document.createElement("div");b.className="preview-code",b.style.position="absolute",b.style.left="-9999px",j.appendChild(b);var c=parseInt(window.getComputedStyle(a).getPropertyValue("max-height"),10),d=function(a){b.textContent=this.value+"\n";var d=b.offsetHeight+2;d>=c?this.style.overflow="auto":this.style.overflow="hidden",this.style.height=b.offsetHeight+2+"px"};a.addEventListener("keypress",d),a.addEventListener("keyup",d),d.call(a)},q=function(){var b=j.getElementsByClassName("settings")[0],c=j.getElementsByClassName("resizeable"),d=30,e=function(b){document.cookie="preview-width="+b,a(c,function(a){b==="auto"&&(b=a.parentNode.offsetWidth),a.style.width=b+"px",h(a.getElementsByTagName("iframe")[0],"getHeight")})},i=f(document.cookie)["preview-width"];if(i){e(i),g(b.getElementsByClassName("is-active"),"is-active");var k=b.querySelector('button[data-width="'+i+'"]');k&&k.classList.add("is-active")}window.addEventListener("message",function(a){if(a.data==null||!a.source)return;var b=a.data,c=document.getElementsByName(a.source.name)[0];b.height!=null&&c&&(c.parentNode.style.height=b.height+d+"px")},!1),b&&c.length>0&&(b.hidden=!1,b.addEventListener("click",function(a){var c=a.target.tagName.toLowerCase(),d;if(c==="button")d=a.target;else{if(c!=="svg")return;d=a.target.parentNode}a.preventDefault(),g(b.getElementsByClassName("is-active"),"is-active"),d.classList.add("is-active");var f=d.dataset.width;e(f)}))}}()})()</script></body></html><!-- Generated with StyleDocco (http://jacobrask.github.com/styledocco). -->
diff --git a/lib/web/css/docs/source/icons.less b/lib/web/css/docs/source/icons.less
index 97f05c59a017f916960128dceb9314f94e8dd93f..355ece1b150e82fd16b0534c4ed34ddb63bf10aa 100644
--- a/lib/web/css/docs/source/icons.less
+++ b/lib/web/css/docs/source/icons.less
@@ -685,6 +685,12 @@
 //     <li>
 //         <span class="icon-arrow-down-thin" data-icon="&#xe626"><span>@icon-arrow-down-thin</span></span>
 //     </li>
+//     <li>
+//         <span class="icon-arrow-left-thin" data-icon="&#xe628"><span>@icon-gift-registry</span></span>
+//     </li>
+//     <li>
+//         <span class="icon-arrow-down-thin" data-icon="&#xe629"><span>@icon-present</span></span>
+//     </li>
 // </ul>
 //  ```
 
diff --git a/lib/web/css/source/lib/variables/_icons.less b/lib/web/css/source/lib/variables/_icons.less
index 443228833b6d87e93c4030cac230ad50f2c55ad6..999e9c2cf7922b5a9acb500e499ba271a116e992 100644
--- a/lib/web/css/source/lib/variables/_icons.less
+++ b/lib/web/css/source/lib/variables/_icons.less
@@ -80,3 +80,5 @@
 @icon-arrow-left-thin: '\e625';
 @icon-arrow-down-thin: '\e626';
 @icon-account: '\e627';
+@icon-gift-registry: '\e628';
+@icon-present: '\e629';
diff --git a/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.eot b/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.eot
index 62bdd2789b80e4759cfb379c307f2186aafce389..9bc3197afaa63854e2a13d3f79f31488bf1fe4db 100644
Binary files a/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.eot and b/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.eot differ
diff --git a/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.svg b/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.svg
index d92883dcfa582968714e1932df979ab965effc2f..85f6bf6ddeca82ba961382a061b92c7b6da011b7 100644
--- a/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.svg
+++ b/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg"><defs><font horiz-adv-x="1024"><font-face units-per-em="1024" ascent="960" descent="-64"/><glyph horiz-adv-x="512"/><glyph unicode="" d="M676.57 637.696c-59.866 28.197-131.254 2.523-159.414-57.307-1.975-4.14-3.657-9.368-5.157-15.4-1.5 6.03-3.188 11.26-5.16 15.394-28.2 59.83-99.55 85.503-159.418 57.306-59.83-28.196-85.504-99.546-57.27-159.377 28.197-59.865 221.805-231.42 221.805-231.42s0 .22.036.584c.036-.37.036-.588.036-.588s193.65 171.555 221.81 231.423c28.23 59.83 2.595 131.182-57.27 159.378z"/><glyph unicode="" d="M676.57 637.696c-59.83 28.197-131.217 2.523-159.45-57.307-1.938-4.14-3.657-9.368-5.157-15.4-1.463 6.03-3.182 11.26-5.157 15.394-28.16 59.83-99.547 85.503-159.378 57.306-59.83-28.196-85.467-99.546-57.27-159.377S511.963 246.89 511.963 246.89s0 .22.037.586v-.623s193.646 171.56 221.842 231.426c28.233 59.864 2.597 131.22-57.27 159.412zm13.643-158.464C664.796 435.456 516.206 294.51 516.206 294.51l-1.573 3S359.168 437.906 333.423 481.5c-30.61 51.822-7.754 108.946 38.948 128.44 43.52 18.175 101.89-27.32 123.508-73.144 1.5-3.182 17.627-1.463 18.798-6.107 1.135 4.64 12.728 2.92 14.227 6.1 21.577 45.825 81.04 93.99 128 72.41 46.007-21.136 66.926-72.153 33.317-129.973z"/><glyph unicode="" d="M512 704.11L215.15 191.854h593.7L512 704.11zm32.22-449.975h-62.76v49.92h62.757v-49.92zm-15.507 89.234h-31.27l-20.808 140.65-1.207 72.7h72.52v-72.7l-19.235-140.65z"/><glyph unicode="" d="M628.846 588.544c-34.085 28.343-75.63 42.24-116.773 42.24-47.47 0-94.757-18.578-130.085-54.382l-32.073 29.586-.585-102.693 110.994-.658L420.9 543.89c25.198 24.027 58.002 36.315 91.136 36.352 29.842-.037 59.72-9.947 84.517-30.574 31.488-26.222 47.69-63.744 47.726-101.815 0-5.45-.37-10.97-1.03-16.457l51.383 9.874c.073 2.23.146 4.425.146 6.62.037 52.37-22.49 104.52-65.938 140.653zm-25.052-235.776c-25.307-24.466-58.405-37.01-91.867-37.047-29.88.04-59.72 9.99-84.517 30.58-31.488 26.22-47.69 63.744-47.726 101.778 0 6.327.475 12.617 1.353 18.87l-51.602-9.69c-.146-3.072-.256-6.107-.256-9.18-.04-52.333 22.49-104.52 65.97-140.616 34.05-28.343 75.592-42.24 116.735-42.24h.11c47.8 0 95.377 18.907 130.742 55.223l33.937-33.83.22 106.096-112.054.29 38.95-40.23z"/><glyph unicode="" d="M696.942 624.933l-19.273 6.107h-74.5v38.583l-12.547 21.03-22.712 13.494H456.77l-23.333-13.495-12.58-21.03v-38.618H347.09l-18.76-6.656-17.19-14.153v-88.87h19.018v-.072h17.555V191.818h36.57v.293H639.7v-.29h36.57V521.26h18.287v.073h18.285v86.6l-15.91 17.007zm-239.507 42.642h109.13v-36.57h-109.13v36.57zm182.272-438.857H384.292v292.57h255.415V228.72zm36.572 329.216H347.72v36.498h328.56v-36.498zM457.43 483.51h-36.57V264.925h36.57V483.51zm73.143 0h-36.57V264.925h36.57V483.51zm73.143 0h-36.57V264.925h36.57V483.51z"/><glyph unicode="" d="M804.645 515.4c-1.5 4.682-5.888 7.9-10.79 7.9H586.9l-64.073 196.754c-1.536 4.645-5.888 7.826-10.825 7.826-4.9 0-9.29-3.182-10.825-7.863l-64.44-196.754h-206.59c-4.902 0-9.29-3.218-10.826-7.863-1.5-4.68.15-9.874 4.1-12.763l167.2-121.783-64.44-197.85c-1.534-4.682.148-9.84 4.135-12.728 3.95-2.89 9.4-2.89 13.35 0L512 292.46l167.937-122.148c2.01-1.463 4.315-2.23 6.693-2.23s4.68.767 6.693 2.23c4.023 2.89 5.67 8.01 4.133 12.727l-64.44 197.85 167.57 121.78c3.95 2.89 5.633 8.044 4.06 12.725z"/><glyph unicode="" d="M807.24 415.854V483l-9.508 3.144-71.936 23.442-19.2 46.373 36.937 78.08-47.506 47.5-8.923-4.498-67.438-34.304-46.373 19.2-29.11 81.3H477l-26.624-81.446-46.336-19.163-78.043 36.9-47.506-47.505 4.5-8.96 34.27-67.438-19.2-46.338-81.3-29.075V413l9.47-3.07 71.977-23.516 19.163-46.373-36.9-78.08 47.504-47.502 8.888 4.498 67.475 34.304 46.373-19.2 29.11-81.3H547l3.072 9.51 23.515 71.935 46.373 19.2 78.08-36.937 47.506 47.506-4.498 8.923-34.304 67.438 19.2 46.373 81.298 29.147zM512 353.938c-51.968 0-94.062 42.13-94.062 94.062 0 52.005 42.094 94.062 94.062 94.062 51.93 0 94.098-42.057 94.098-94.062-.037-51.93-42.167-94.062-94.098-94.062z"/><glyph unicode="" d="M339.602 539.94L512 356.06l172.398 183.88z"/><glyph unicode="" d="M606.94 449.938L448.547 612.79l-27.794-26.074L553.58 450.158l-136.52-140.36 27.173-26.588L597.43 440.76l-.145.146z"/><glyph unicode="" d="M127.634 740.57v-73.14h768.73v73.143h-768.73zm0-329.14h768.73v73.142h-768.73V411.43zm0-256h768.73v73.142h-768.73V155.43z"/><glyph unicode="" d="M512 742.217c-102.437 0-185.417-83.054-185.417-185.454C326.583 454.326 512 153.746 512 153.746s185.454 300.58 185.454 403.017C697.417 659.2 614.437 742.217 512 742.217zm0-241.774c-31.122 0-56.357 25.198-56.357 56.357 0 31.086 25.234 56.357 56.357 56.357 31.16 0 56.393-25.27 56.393-56.357-.037-31.16-25.27-56.357-56.393-56.357z"/><glyph unicode="" d="M219.43 485.595h255.926v254.793H219.43V485.595zM548.57 740.39V631.04h256v109.35h-256zM219.43 156.452h255.926v254.793H219.43V156.453zm329.14 328.3h256v109.35h-256v-109.35zm0-182.856h256v109.35h-256v-109.35zm0-146.286h256v109.35h-256V155.61z"/><glyph unicode="" d="M579.51 677.01c-30.792 0-57.38-25.16-57.38-55.954 0-28.635 18.907-47.58 47.58-47.58 31.414 0 58 23.772 58 55.992 0 28.71-20.223 47.543-48.2 47.543zm14.008-340.516c-9.8 0-48.31-59.502-69.266-59.502-5.595 0-8.375 4.937-8.375 9.8 0 11.228 7.68 28.71 11.85 39.206l50.32 136.375c25.2 67.84-6.984 86.016-37.046 86.016-40.552 0-76.94-20.3-104.88-46.85-9.107-9.07-39.864-38.44-39.864-51.058 0-4.133 4.17-9.07 9.107-9.07 12.544 0 46.153 60.855 72.01 60.855 5.594 0 11.885-6.29 6.984-18.87L435.46 360.225c-4.938-11.85-28.71-69.23-28.71-102.802 0-26.587 17.52-38.437 42.68-38.437 70.655 0 152.43 86.71 152.43 107.007 0 6.29-4.865 10.496-8.34 10.496z"/><glyph unicode="" d="M219.063 593.92H366.08v147.017H219.063V593.92zm219.428 0h147.02v147.017H438.49V593.92zm219.43 147.017V593.92h147.02v147.017H657.92zM219.068 374.49H366.08v147.02H219.063V374.49zm219.428 0h147.02v147.02H438.49V374.49zm219.43 0H804.94v147.02H657.92V374.49zm-438.86-219.426H366.08V302.08H219.063V155.063zm219.43 0h147.02V302.08H438.49V155.063zm219.43 0H804.94V302.08H657.92V155.063z"/><glyph unicode="" d="M711.607 401.59l-5.486-5.52c21.07 27.793 32.88 60.196 32.22 94.72-1.97 99.217-106.68 177.626-233.87 175.14-127.23-2.487-228.79-84.992-226.815-184.21 1.94-99.182 106.68-177.554 233.91-175.067 28.637.585 50.434-5.815 75.63 2.12l159.234-78.7c-.038-.038-71.06 124.964-34.817 171.52z"/><glyph unicode="" d="M236.946 466.286h550.107v-36.57H236.946v36.57z"/><glyph unicode="" d="M749.13 663.698C597.027 570.44 486.655 452.79 437.064 393.764l-121.417 95.16-53.65-43.265 209.847-213.4c36.096 92.49 150.49 273.3 290.158 401.736l-12.873 29.696z"/><glyph unicode="" d="M434.87 259.95c-35.217 0-63.706-28.526-63.706-63.744 0-35.182 28.49-63.67 63.707-63.67 35.188 0 63.71 28.488 63.71 63.67 0 35.218-28.523 63.744-63.704 63.744zm219.978 0c-35.218 0-63.707-28.526-63.707-63.744 0-35.182 28.49-63.67 63.71-63.67 35.148 0 63.71 28.488 63.71 63.67 0 35.218-28.562 63.744-63.707 63.744zm129.426 356.79H357.047s-25.93 70.072-49.957 113.372c-24.027 43.227-57.893 32.037-57.893 32.037-26.843 0-39.314-16.06-39.314-42.977 0-26.843 16.457-48.64 43.337-48.64l16.603-14.848 121.93-330.534 356.424-.255s65.17 261.706 61.806 251.356c11.96 36.975-3.255 40.486-25.71 40.486zm-391.79-124.196c-18.724 0-33.9 15.177-33.9 33.902s15.176 33.902 33.9 33.902 33.903-15.177 33.903-33.902-15.177-33.902-33.902-33.902zm72.45-113.152c-18.726 0-33.903 15.177-33.903 33.902s15.18 33.902 33.908 33.902 33.902-15.177 33.902-33.902-15.178-33.902-33.903-33.902zM502.2 492.544c-18.727 0-33.904 15.177-33.904 33.902s15.177 33.902 33.902 33.902 33.9-15.177 33.9-33.902-15.176-33.902-33.9-33.902zm72.446-113.152c-18.725 0-33.865 15.177-33.865 33.902s15.18 33.902 33.87 33.902 33.938-15.177 33.938-33.902-15.214-33.902-33.938-33.902zm37.266 113.152c-18.725 0-33.938 15.177-33.938 33.902s15.214 33.902 33.938 33.902 33.865-15.177 33.865-33.902-15.14-33.902-33.865-33.902zm72.448-113.152c-18.724 0-33.864 15.177-33.864 33.902s15.14 33.902 33.865 33.902 33.94-15.177 33.94-33.902-15.21-33.902-33.94-33.902zm37.267 113.152c-18.725 0-33.938 15.177-33.938 33.902s15.21 33.902 33.932 33.902 33.865-15.177 33.865-33.902-15.14-33.902-33.865-33.902z"/><glyph unicode="" d="M642.487 578.304c11.96 0 21.65 9.69 21.65 21.65v77.934c0 11.96-9.69 21.65-21.65 21.65-11.922 0-21.65-9.69-21.65-21.65v-77.934c.037-11.96 9.728-21.65 21.65-21.65zm-260.645 0c11.922 0 21.65 9.69 21.65 21.65v77.934c0 11.96-9.728 21.65-21.65 21.65-11.96 0-21.65-9.69-21.65-21.65v-77.934c.037-11.96 9.69-21.65 21.65-21.65zm289.427 58.258v-.402c8.99-7.973 14.7-19.566 14.7-32.55 0-23.99-19.46-43.446-43.487-43.446-23.99 0-43.447 19.456-43.447 43.447 0 12.95 5.705 24.58 14.702 32.55v.407H410.59v-.402c8.996-7.972 14.7-19.565 14.7-32.55 0-23.99-19.455-43.445-43.446-43.445-24.027 0-43.447 19.455-43.447 43.446 0 12.947 5.67 24.577 14.665 32.55v.402h-96.84v-440.1h511.56v440.1H671.27zM732.08 234.57h-437.76v291.69h437.76V234.57zM619.3 407.11h-55.15V352h55.15v55.113zm0 82.908h-55.15v-55.11h55.15v55.113zm0-163.51h-55.15v-55.15h55.15v55.15zm77.642 163.51h-55.15v-55.11h55.15v55.113zm0-82.907h-55.15V352h55.15v55.113zm-310.675-80.6h-55.113v-55.15h55.113v55.15zm77.715 0h-55.15v-55.15h55.15v55.15zm0 80.606h-55.15V352h55.15v55.113zm-77.715 0h-55.113V352h55.113v55.113zm155.32 0h-55.114V352h55.113v55.113zm0 82.908h-55.114v-55.11h55.113v55.114zm-77.605 0h-55.15v-55.11h55.15v55.114zm77.604-163.51h-55.113v-55.15h55.113v55.15z"/><glyph unicode="" d="M512 677.742L302.994 424.485h136.338v-206.19H584.63v206.19h136.375z"/><glyph unicode="" d="M584.63 471.515V677.74H439.334V471.516h-136.34L512 218.296l209.007 253.22z"/><glyph unicode="" d="M836.462 183.918s-109.64 112.677-153.38 156.233c-19.055 19.02-32.074 31.93-32.074 31.93 14.848 21.21 26.405 44.36 34.633 69.34s12.367 51.24 12.367 78.85c0 35.62-6.802 69.083-20.334 100.46-13.57 31.306-32 58.698-55.406 82.03-23.37 23.44-50.725 41.875-82.066 55.407-31.304 13.605-64.767 20.37-100.39 20.37-35.582 0-69.045-6.802-100.423-20.37-31.305-13.53-58.55-31.963-81.664-55.406-23.08-23.297-41.437-50.69-54.97-81.994-13.566-31.378-20.332-64.84-20.332-100.462s6.8-69.083 20.334-100.39c13.534-31.304 31.89-58.66 54.97-82.102 23.114-23.33 50.323-41.8 81.665-55.37 31.377-13.564 64.84-20.293 100.424-20.293 27.647 0 53.942 4.022 78.884 12.287s48.09 19.858 69.303 34.706c0 0 11.923-11.96 29.697-29.805 48.422-48.603 155.027-159.16 155.027-159.16 16.02-6.984 41.73.44 54.456 11.338s19.857 33.683 9.29 52.408zM612.718 447.013c-9.838-22.747-23.223-42.57-40.155-59.43-16.933-16.932-36.718-30.353-59.43-40.19-22.637-9.875-46.847-14.776-72.52-14.776-26.258 0-50.688 4.937-73.362 14.775-22.67 9.838-42.49 23.26-59.423 40.192-16.896 16.86-30.354 36.68-40.155 59.43-9.84 22.6-14.74 47.103-14.74 73.288 0 25.673 4.9 50.03 14.74 72.997 9.837 22.93 23.26 42.892 40.154 59.79 16.933 16.97 36.754 30.352 59.43 40.153 22.673 9.91 47.103 14.738 73.36 14.738 25.674 0 49.884-4.863 72.522-14.737 22.674-9.8 42.496-23.186 59.43-40.155 16.932-16.933 30.317-36.9 40.154-59.83 9.872-22.968 14.736-47.324 14.736-72.998 0-26.15-4.9-50.65-14.738-73.253z"/><glyph unicode="" d="M695.845 602.66l-29.147 29.112L512 477.038 357.268 631.772l-29.11-29.11L482.89 447.926 328.266 293.303l29.11-29.074L512 418.81l154.664-154.58 29.038 29.073-154.586 154.624z"/><glyph unicode="" d="M470.418 450.158l132.79 136.558-27.793 26.075L417.06 449.94l9.62-9.033-.11-.146 153.233-157.55 27.137 26.59z"/><glyph unicode="" d="M512 539.94L339.602 356.06h344.795z"/><glyph unicode="" d="M392.12 622.043V273.956L631.844 448z"/><glyph unicode="" d="M392.12 448l239.725-174.043v348.087z"/><glyph unicode="" d="M237.714 191.16h73.728v513.68h-73.728V191.16zm548.572 511.926H346.003v-292.17h440.283l-148.078 144.13 148.078 148.04z"/><glyph unicode="" d="M787.054 466.36h-256.22v256.694h-36.57V466.36H236.947v-36.572h257.317v-256.84h36.57v256.84h256.22z"/><glyph unicode="" d="M769.134 594.286v36.57h-513.17v-25.27l-1.097-1.097 1.097-1.1v-9.11h.622V301.71h-.622v-8.56l-1.097-1.095 1.097-1.098v-25.82h513.17v36.57h-.585v292.57h.58zM703.89 301.714H316.233l119.88 119.88-25.855 25.857L293.12 330.32v236.36L513.134 349.59l25.856 25.855-1.39 1.353 194.377 194.34v-245.87l-122.15 122.15-25.855-25.856L703.89 301.714zM317.22 594.286h386.16l-191.782-191.78-194.377 191.78z"/><glyph unicode="" d="M310.747 210.36h109.166v328.484H310.747V210.36zM604.05 355.583V210.36h109.202v145.224H604.05zM457.4 210.36h109.2v475.318H457.4v-475.32z"/><glyph unicode="" d="M310.747 210.36h109.166v328.484H310.747V210.36zm37.194 293.265h36.87V246.857h-36.87v256.768zm256.11-148.04V210.358h109.207v145.224H604.05zm73.29-108.874h-36.83v71.87h36.83v-71.87zM457.4 210.36h109.2v475.318H457.4v-475.32zm36.863 439.478h36.827V247.004h-36.827v402.834z"/><glyph unicode="" d="M519.57 665.893c-127.232 2.487-231.936-75.922-233.91-175.14-.696-34.488 11.153-66.927 32.218-94.72l-5.486 5.52c36.242-46.518-34.816-171.52-34.816-171.52l159.232 78.703c25.16-7.936 46.994-1.536 75.63-2.12 127.232-2.49 231.972 75.884 233.91 175.064 2.012 99.255-99.51 181.723-226.778 184.21z"/><glyph unicode="" d="M514.158 489.582l136.558-132.79 26.075 27.793L513.94 542.94 347.21 380.196l26.588-27.136z"/><glyph unicode="" d="M509.842 406.418l-136.558 132.79-26.075-27.793L510.06 353.06l166.73 162.744-26.588 27.136z"/><glyph unicode="" d="M938.824 426.028l-.504 106.238L512 958.588 85.678 532.266l-.504-106.238L474.618 815.47V-64.536h74.764V815.47z"/><glyph unicode="" d="M1.994 518.75h748.928L467.644 809.956h200.254L1022.006 446 667.898 82.044H467.644l283.278 291.174H1.994V518.75z"/><glyph unicode="" d="M1022.006 375.25H273.078L556.356 84.044H356.102L1.994 448l354.108 363.956h200.254L273.078 520.782h748.928V375.25z"/><glyph unicode="" d="M85.174 468.026l.504-106.238L512-64.536l426.32 426.324.504 106.238L549.38 78.582l.002 880.006h-74.764V78.584z"/><glyph unicode="" d="M511.963 831.086c-211.53 0-383.05-171.52-383.05-383.086S300.398 64.914 511.963 64.914C723.566 64.914 895.05 236.397 895.05 448S723.565 831.086 511.962 831.086zm0-36.572c191.086 0 346.514-155.43 346.514-346.514 0-79.91-27.43-153.344-73.07-212.04-5.486 1.974-11.008 3.84-16.274 6.106-34.926 14.63-73.8 31.78-108.654 46.153-9.917 2.7-19.937 5.41-29.848 8.15-11.85 8.154-23.59 35.364-29.915 48.932-6.29.914-12.654 1.792-19.017 2.633.915 20.99 13.935 22.125 19.018 38.07 4.5 14.08.514 32.44 7.57 45.495 4.94 9.07 16.13 9.07 21.65 16.934 5.085 6.984 8.41 19.272 9.986 27.94 2.853 15.8 5.34 37.34-2.158 53.03-4.28 8.96-6.985 9.873-8.23 20.735-1.425 13.274 3.914 56.43 4.134 65.754.513 24.21-.072 26.15-5.924 49.737 0 0-7.058 21.36-18.213 27.83l-22.272 3.805L573.55 710c-55.37 34.085-114.76 10.167-146.505-2.67-45.824-14.885-74.79-59.758-54.565-155.538 3.474-16.42-8.96-23.698-8.155-32.658 1.83-19.566 2.158-66.487 20.59-78.08 1.72-1.06 14.81-4.352 14.738-3.438 1.794-19.017 3.623-38.07 5.378-57.015 4.61-12.65 15.69-14.08 18.91-31.923l-14.152-3.438c-6.362-13.57-17.992-40.778-29.878-48.934-9.948-2.705-19.93-5.412-29.88-8.154-34.89-14.373-73.69-31.49-108.654-46.153-1.902-.77-3.877-1.39-5.815-2.16-43.775 58.11-70.07 130.01-70.07 208.165 0 191.086 155.43 346.514 346.478 346.514z"/></font></defs></svg>
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg"><defs><font id="Blank-Theme-Icons" horiz-adv-x="1024"><font-face units-per-em="1024" ascent="960" descent="-64"/><missing-glyph horiz-adv-x="1024"/><glyph unicode="&#x20;" d="" horiz-adv-x="512"/><glyph unicode="&#xe600;" d="M676.571 637.696c-59.867 28.197-131.255 2.523-159.415-57.307-1.975-4.133-3.657-9.362-5.157-15.397-1.499 6.034-3.182 11.264-5.157 15.397-28.197 59.831-99.547 85.504-159.415 57.307-59.831-28.197-85.504-99.547-57.271-159.378 28.197-59.867 221.806-231.424 221.806-231.424s0 0.219 0.037 0.585c0.037-0.366 0.037-0.585 0.037-0.585s193.646 171.557 221.806 231.424c28.233 59.831 2.597 131.182-57.271 159.378z"/><glyph unicode="&#xe601;" d="M676.571 637.696c-59.831 28.197-131.218 2.523-159.451-57.307-1.938-4.133-3.657-9.362-5.157-15.397-1.463 6.034-3.182 11.264-5.157 15.397-28.16 59.831-99.547 85.504-159.378 57.307s-85.467-99.547-57.271-159.378 221.806-231.424 221.806-231.424 0 0.219 0.037 0.585c0-0.402 0-0.622 0-0.622s193.646 171.557 221.842 231.424c28.233 59.867 2.597 131.218-57.271 159.415zM690.213 479.232c-25.417-43.776-174.007-184.722-174.007-184.722l-1.573 2.999c0 0-155.465 140.398-181.211 183.991-30.61 51.822-7.753 108.946 38.949 128.439 43.52 18.176 101.888-27.319 123.502-73.143 1.499-3.182 17.627-1.463 18.798-6.107 1.134 4.645 12.727 2.926 14.226 6.107 21.577 45.824 81.042 93.989 128 72.411 46.007-21.138 66.926-72.155 33.317-129.975z"/><glyph unicode="&#xe602;" d="M512 704.11l-296.85-512.256h593.701l-296.85 512.256zM544.219 254.135h-62.757v49.92h62.757v-49.92zM528.713 343.369h-31.269l-20.809 140.654-1.207 72.704h72.521v-72.704l-19.237-140.654z"/><glyph unicode="&#xe603;" d="M628.846 588.544c-34.085 28.343-75.63 42.24-116.773 42.24-47.47 0-94.757-18.578-130.085-54.382l-32.073 29.586-0.585-102.693 110.994-0.658-39.424 41.253c25.198 24.027 58.002 36.315 91.136 36.352 29.842-0.037 59.721-9.947 84.517-30.574 31.488-26.222 47.689-63.744 47.726-101.815 0-5.449-0.366-10.971-1.024-16.457l51.383 9.874c0.073 2.231 0.146 4.425 0.146 6.619 0.037 52.37-22.491 104.521-65.938 140.654zM603.794 352.768c-25.307-24.466-58.405-37.010-91.867-37.047-29.879 0.037-59.721 9.984-84.517 30.574-31.488 26.222-47.689 63.744-47.726 101.778 0 6.327 0.475 12.617 1.353 18.871l-51.602-9.691c-0.146-3.072-0.256-6.107-0.256-9.179-0.037-52.334 22.491-104.521 65.975-140.617 34.048-28.343 75.593-42.24 116.736-42.24h0.11c47.799 0 95.378 18.907 130.743 55.223l33.938-33.829 0.219 106.094-112.055 0.293 38.949-40.229z"/><glyph unicode="&#xe604;" d="M696.942 624.933l-19.273 6.107h-74.496v38.583l-12.544 21.029-22.711 13.495h-111.141l-23.333-13.495-12.581-21.029v-38.619h-73.765l-18.761-6.656-17.189-14.153v-88.869h19.017v-0.073h17.554v-329.435h36.571v0.293h255.415v-0.293h36.571v329.435h18.286v0.073h18.286v86.601l-15.909 17.006zM457.435 667.575h109.129v-36.571h-109.129v36.571zM639.707 228.718h-255.415v292.571h255.415v-292.571zM676.279 557.934h-328.558v36.498h328.558v-36.498zM457.435 483.511h-36.571v-218.587h36.571v218.587zM530.578 483.511h-36.571v-218.587h36.571v218.587zM603.721 483.511h-36.571v-218.587h36.571v218.587z"/><glyph unicode="&#xe605;" d="M804.645 515.401c-1.499 4.681-5.888 7.899-10.789 7.899h-206.958l-64.073 196.754c-1.536 4.645-5.888 7.826-10.825 7.826-4.901 0-9.289-3.182-10.825-7.863l-64.439-196.754h-206.592c-4.901 0-9.289-3.218-10.825-7.863-1.499-4.681 0.146-9.874 4.096-12.763l167.205-121.783-64.439-197.851c-1.536-4.681 0.146-9.838 4.133-12.727 3.95-2.889 9.399-2.889 13.349 0l168.338 122.185 167.936-122.149c2.011-1.463 4.315-2.231 6.693-2.231s4.681 0.768 6.693 2.231c4.023 2.889 5.669 8.009 4.133 12.727l-64.439 197.851 167.57 121.783c3.95 2.889 5.632 8.046 4.059 12.727z"/><glyph unicode="&#xe606;" d="M807.241 415.854v67.145l-9.509 3.145-71.936 23.442-19.2 46.373 36.937 78.080-47.506 47.506-8.923-4.498-67.438-34.304-46.373 19.2-29.111 81.298h-67.182l-26.624-81.445-46.336-19.163-78.043 36.901-47.506-47.506 4.498-8.96 34.267-67.438-19.2-46.336-81.298-29.074v-67.218l9.472-3.072 71.973-23.515 19.163-46.373-36.901-78.080 47.506-47.506 8.887 4.498 67.474 34.304 46.373-19.2 29.111-81.298h67.182l3.072 9.509 23.515 71.936 46.373 19.2 78.080-36.937 47.506 47.506-4.498 8.923-34.304 67.438 19.2 46.373 81.298 29.147zM512 353.938c-51.968 0-94.062 42.13-94.062 94.062 0 52.005 42.094 94.062 94.062 94.062 51.931 0 94.098-42.057 94.098-94.062-0.037-51.931-42.167-94.062-94.098-94.062z"/><glyph unicode="&#xe607;" d="M339.602 539.941l172.398-183.881 172.398 183.881z"/><glyph unicode="&#xe608;" d="M606.939 449.938l-158.391 162.853-27.794-26.075 132.827-136.558-136.521-140.361 27.173-26.587 153.198 157.55-0.146 0.146z"/><glyph unicode="&#xe609;" d="M127.634 740.571v-73.143h768.731v73.143h-768.731zM127.634 411.429h768.731v73.143h-768.731v-73.143zM127.634 155.429h768.731v73.143h-768.731v-73.143z"/><glyph unicode="&#xe60a;" d="M512 742.217c-102.437 0-185.417-83.054-185.417-185.454 0-102.437 185.417-403.017 185.417-403.017s185.454 300.581 185.454 403.017c-0.037 102.437-83.017 185.454-185.454 185.454zM512 500.443c-31.122 0-56.357 25.198-56.357 56.357 0 31.086 25.234 56.357 56.357 56.357 31.159 0 56.393-25.271 56.393-56.357-0.037-31.159-25.271-56.357-56.393-56.357z"/><glyph unicode="&#xe60b;" d="M219.429 485.595h255.927v254.793h-255.927v-254.793zM548.571 740.389v-109.349h256v109.349h-256zM219.429 156.453h255.927v254.793h-255.927v-254.793zM548.571 484.754h256v109.349h-256v-109.349zM548.571 301.897h256v109.349h-256v-109.349zM548.571 155.611h256v109.349h-256v-109.349z"/><glyph unicode="&#xe60c;" d="M579.511 677.010c-30.793 0-57.381-25.161-57.381-55.954 0-28.635 18.907-47.579 47.579-47.579 31.415 0 58.002 23.771 58.002 55.991 0 28.709-20.224 47.543-48.201 47.543zM593.518 336.494c-9.801 0-48.311-59.502-69.266-59.502-5.595 0-8.375 4.937-8.375 9.801 0 11.227 7.68 28.709 11.849 39.205l50.322 136.375c25.198 67.84-6.985 86.016-37.047 86.016-40.558 0-76.946-20.297-104.887-46.848-9.106-9.070-39.863-38.437-39.863-51.054 0-4.133 4.169-9.070 9.106-9.070 12.544 0 46.153 60.855 72.009 60.855 5.595 0 11.886-6.29 6.985-18.871l-48.896-123.173c-4.937-11.849-28.709-69.23-28.709-102.802 0-26.587 17.518-38.437 42.679-38.437 70.656 0 152.43 86.711 152.43 107.008 0 6.29-4.864 10.496-8.338 10.496z"/><glyph unicode="&#xe60d;" d="M219.063 593.92h147.017v147.017h-147.017v-147.017zM438.491 593.92h147.017v147.017h-147.017v-147.017zM657.92 740.937v-147.017h147.017v147.017h-147.017zM219.063 374.491h147.017v147.017h-147.017v-147.017zM438.491 374.491h147.017v147.017h-147.017v-147.017zM657.92 374.491h147.017v147.017h-147.017v-147.017zM219.063 155.063h147.017v147.017h-147.017v-147.017zM438.491 155.063h147.017v147.017h-147.017v-147.017zM657.92 155.063h147.017v147.017h-147.017v-147.017z"/><glyph unicode="&#xe60e;" d="M711.607 401.591l-5.486-5.522c21.065 27.794 32.878 60.197 32.219 94.72-1.975 99.218-106.679 177.627-233.874 175.141-127.232-2.487-228.791-84.992-226.816-184.21 1.938-99.182 106.679-177.554 233.911-175.067 28.635 0.585 50.432-5.815 75.63 2.121l159.232-78.702c-0.037-0.037-71.058 124.965-34.816 171.52z"/><glyph unicode="&#xe60f;" d="M236.946 466.286h550.107v-36.571h-550.107v36.571z"/><glyph unicode="&#xe610;" d="M749.129 663.698c-152.101-93.257-262.473-210.907-312.064-269.934l-121.417 95.159-53.65-43.264 209.847-213.394c36.096 92.489 150.491 273.298 290.158 401.737l-12.873 29.696z"/><glyph unicode="&#xe611;" d="M434.871 259.95c-35.218 0-63.707-28.526-63.707-63.744 0-35.182 28.489-63.671 63.707-63.671 35.182 0 63.707 28.489 63.707 63.671 0 35.218-28.526 63.744-63.707 63.744zM654.848 259.95c-35.218 0-63.707-28.526-63.707-63.744 0-35.182 28.489-63.671 63.707-63.671 35.145 0 63.707 28.489 63.707 63.671 0 35.218-28.562 63.744-63.707 63.744zM784.274 616.741c-163.511 0-427.227 0-427.227 0s-25.929 70.071-49.957 113.371c-24.027 43.227-57.893 32.037-57.893 32.037-26.843 0-39.314-16.055-39.314-42.971 0-26.843 16.457-48.64 43.337-48.64l16.603-14.848 121.929-330.533 356.425-0.256c0 0 65.17 261.705 61.806 251.355 11.959 36.974-3.255 40.485-25.71 40.485zM392.485 492.544c-18.725 0-33.902 15.177-33.902 33.902s15.177 33.902 33.902 33.902 33.902-15.177 33.902-33.902-15.177-33.902-33.902-33.902zM464.933 379.392c-18.725 0-33.902 15.177-33.902 33.902s15.177 33.902 33.902 33.902 33.902-15.177 33.902-33.902-15.177-33.902-33.902-33.902zM502.199 492.544c-18.725 0-33.902 15.177-33.902 33.902s15.177 33.902 33.902 33.902 33.902-15.177 33.902-33.902-15.177-33.902-33.902-33.902zM574.647 379.392c-18.725 0-33.865 15.177-33.865 33.902s15.177 33.902 33.865 33.902 33.938-15.177 33.938-33.902-15.214-33.902-33.938-33.902zM611.913 492.544c-18.725 0-33.938 15.177-33.938 33.902s15.214 33.902 33.938 33.902 33.865-15.177 33.865-33.902-15.141-33.902-33.865-33.902zM684.361 379.392c-18.725 0-33.865 15.177-33.865 33.902s15.141 33.902 33.865 33.902 33.938-15.177 33.938-33.902-15.214-33.902-33.938-33.902zM721.627 492.544c-18.725 0-33.938 15.177-33.938 33.902s15.214 33.902 33.938 33.902 33.865-15.177 33.865-33.902-15.141-33.902-33.865-33.902z"/><glyph unicode="&#xe612;" d="M642.487 578.304c11.959 0 21.65 9.691 21.65 21.65v77.934c0 11.959-9.691 21.65-21.65 21.65-11.922 0-21.65-9.691-21.65-21.65v-77.934c0.037-11.959 9.728-21.65 21.65-21.65zM381.842 578.304c11.922 0 21.65 9.691 21.65 21.65v77.934c0 11.959-9.728 21.65-21.65 21.65-11.959 0-21.65-9.691-21.65-21.65v-77.934c0.037-11.959 9.691-21.65 21.65-21.65zM671.269 636.562v-0.402c8.997-7.973 14.702-19.566 14.702-32.549 0-23.991-19.456-43.447-43.483-43.447-23.991 0-43.447 19.456-43.447 43.447 0 12.946 5.705 24.576 14.702 32.549v0.402h-203.154v-0.402c8.997-7.973 14.702-19.566 14.702-32.549 0-23.991-19.456-43.447-43.447-43.447-24.027 0-43.447 19.456-43.447 43.447 0 12.946 5.669 24.576 14.665 32.549v0.402h-96.841v-440.101h511.561v440.101h-96.512zM732.087 234.569h-437.76v291.694h437.76v-291.694zM619.301 407.113h-55.15v-55.113h55.15v55.113zM619.301 490.021h-55.15v-55.113h55.15v55.113zM619.301 326.51h-55.15v-55.15h55.15v55.15zM696.942 490.021h-55.15v-55.113h55.15v55.113zM696.942 407.113h-55.15v-55.113h55.15v55.113zM386.267 326.51h-55.113v-55.15h55.113v55.15zM463.982 326.51h-55.15v-55.15h55.15v55.15zM463.982 407.113h-55.15v-55.113h55.15v55.113zM386.267 407.113h-55.113v-55.113h55.113v55.113zM541.586 407.113h-55.113v-55.113h55.113v55.113zM541.586 490.021h-55.113v-55.113h55.113v55.113zM463.982 490.021h-55.15v-55.113h55.15v55.113zM541.586 326.51h-55.113v-55.15h55.113v55.15z"/><glyph unicode="&#xe613;" d="M512 677.742l-209.006-253.257h136.338v-206.19h145.298v206.19h136.375z"/><glyph unicode="&#xe614;" d="M584.631 471.515v206.226h-145.298v-206.226h-136.338l209.006-253.221 209.006 253.221z"/><glyph unicode="&#xe615;" d="M836.462 183.918c0 0-109.641 112.677-153.381 156.233-19.054 19.017-32.073 31.927-32.073 31.927 14.848 21.211 26.405 44.361 34.633 69.339s12.361 51.237 12.361 78.848c0 35.621-6.802 69.083-20.334 100.462-13.568 31.305-32 58.697-55.406 82.030-23.369 23.442-50.725 41.874-82.066 55.406-31.305 13.605-64.768 20.37-100.389 20.37-35.584 0-69.047-6.802-100.425-20.37-31.305-13.531-58.551-31.963-81.664-55.406-23.077-23.296-41.435-50.688-54.967-81.993-13.568-31.378-20.334-64.841-20.334-100.462s6.802-69.083 20.334-100.389c13.531-31.305 31.89-58.661 54.967-82.103 23.113-23.333 50.322-41.801 81.664-55.369 31.378-13.568 64.841-20.297 100.425-20.297 27.648 0 53.943 4.023 78.885 12.288s48.091 19.858 69.303 34.706c0 0 11.922-11.959 29.696-29.806 48.421-48.603 155.026-159.159 155.026-159.159 16.018-6.985 41.728 0.439 54.455 11.337s19.858 33.682 9.289 52.407zM612.718 447.013c-9.838-22.747-23.223-42.569-40.155-59.429-16.933-16.933-36.718-30.354-59.429-40.192-22.638-9.874-46.848-14.775-72.521-14.775-26.258 0-50.688 4.937-73.362 14.775s-42.496 23.259-59.429 40.192c-16.896 16.859-30.354 36.681-40.155 59.429-9.838 22.601-14.738 47.104-14.738 73.289 0 25.673 4.901 50.030 14.738 72.997 9.838 22.93 23.259 42.898 40.155 59.794 16.933 16.969 36.754 30.354 59.429 40.155 22.674 9.911 47.104 14.738 73.362 14.738 25.673 0 49.883-4.864 72.521-14.738 22.674-9.801 42.496-23.186 59.429-40.155 16.933-16.933 30.318-36.901 40.155-59.831 9.874-22.967 14.738-47.323 14.738-72.997 0-26.149-4.901-50.651-14.738-73.253z"/><glyph unicode="&#xe616;" d="M695.845 602.661l-29.147 29.111-154.697-154.734-154.734 154.734-29.111-29.111 154.734-154.734-154.624-154.624 29.111-29.074 154.624 154.587 154.661-154.587 29.038 29.074-154.587 154.624z"/><glyph unicode="&#xe617;" d="M470.418 450.158l132.791 136.558-27.794 26.075-158.354-162.853 9.618-9.033-0.11-0.146 153.234-157.55 27.136 26.587z"/><glyph unicode="&#xe618;" d="M512 539.941l-172.398-183.881h344.795z"/><glyph unicode="&#xe619;" d="M392.119 622.043v-348.087l239.726 174.043z"/><glyph unicode="&#xe61a;" d="M392.119 448l239.726-174.043v348.087z"/><glyph unicode="&#xe61b;" d="M237.714 191.159h73.728v513.682h-73.728v-513.682zM786.286 703.086h-440.283v-292.169h440.283l-148.078 144.128 148.078 148.041z"/><glyph unicode="&#xe61c;" d="M787.054 466.359h-256.219v256.695h-36.571v-256.695h-257.317v-36.571h257.317v-256.841h36.571v256.841h256.219z"/><glyph unicode="&#xe61d;" d="M769.134 594.286v36.571h-513.17v-25.271l-1.097-1.097 1.097-1.097v-9.106h0.622v-292.571h-0.622v-8.558l-1.097-1.097 1.097-1.097v-25.819h513.17v36.571h-0.585v292.571h0.585zM703.89 301.714h-387.657l119.881 119.881-25.856 25.856-117.138-117.138v236.361l220.014-217.088 25.856 25.856-1.39 1.353 194.377 194.341v-245.87l-122.149 122.149-25.856-25.856 119.918-119.845zM317.221 594.286h386.158l-191.781-191.781-194.377 191.781z"/><glyph unicode="&#xe61e;" d="M310.747 210.359h109.166v328.485h-109.166v-328.485zM604.050 355.584v-145.225h109.202v145.225h-109.202zM457.399 210.359h109.202v475.319h-109.202v-475.319z"/><glyph unicode="&#xe61f;" d="M310.747 210.359h109.166v328.485h-109.166v-328.485zM347.941 503.625h36.864v-256.768h-36.864v256.768zM604.050 355.584v-145.225h109.202v145.225h-109.202zM677.339 246.711h-36.827v71.863h36.827v-71.863zM457.399 210.359h109.202v475.319h-109.202v-475.319zM494.263 649.838h36.827v-402.834h-36.827v402.834z"/><glyph unicode="&#xe620;" d="M519.57 665.893c-127.232 2.487-231.936-75.922-233.911-175.141-0.695-34.487 11.154-66.926 32.219-94.72l-5.486 5.522c36.242-46.519-34.816-171.52-34.816-171.52l159.232 78.702c25.161-7.936 46.994-1.536 75.63-2.121 127.232-2.487 231.973 75.886 233.911 175.067 2.011 99.255-99.511 181.723-226.779 184.21z"/><glyph unicode="&#xe621;" d="M514.158 489.582l136.558-132.791 26.075 27.794-162.853 158.354-166.729-162.743 26.587-27.136z"/><glyph unicode="&#xe622;" d="M509.842 406.418l-136.558 132.791-26.075-27.794 162.853-158.354 166.729 162.743-26.587 27.136z"/><glyph unicode="&#xe623;" d="M938.824 426.028l-0.504 106.238-426.32 426.322-426.322-426.322-0.504-106.238 389.444 389.442v-880.006h74.764v880.006z"/><glyph unicode="&#xe624;" d="M1.994 518.75h748.928l-283.278 291.206h200.254l354.108-363.956-354.108-363.956h-200.254l283.278 291.174h-748.928v145.532z"/><glyph unicode="&#xe625;" d="M1022.006 375.25h-748.928l283.278-291.206h-200.254l-354.108 363.956 354.108 363.956h200.254l-283.278-291.174h748.928v-145.532z"/><glyph unicode="&#xe626;" d="M85.174 468.026l0.504-106.238 426.322-426.324 426.32 426.324 0.504 106.238-389.444-389.444 0.002 880.006h-74.764v-880.004z"/><glyph unicode="&#xe627;" d="M511.963 831.086c-211.529 0-383.049-171.52-383.049-383.086s171.483-383.086 383.049-383.086c211.602 0 383.086 171.483 383.086 383.086s-171.483 383.086-383.086 383.086zM511.963 794.514c191.086 0 346.514-155.429 346.514-346.514 0-79.909-27.429-153.344-73.070-212.041-5.486 1.975-11.008 3.84-16.274 6.107-34.926 14.629-73.801 31.781-108.654 46.153-9.911 2.706-19.931 5.413-29.842 8.155-11.849 8.155-23.589 35.365-29.915 48.933-6.29 0.914-12.654 1.792-19.017 2.633 0.914 20.992 13.934 22.126 19.017 38.071 4.498 14.080 0.512 32.439 7.57 45.495 4.937 9.070 16.128 9.070 21.65 16.933 5.083 6.985 8.411 19.273 9.984 27.941 2.853 15.799 5.339 37.339-2.158 53.029-4.279 8.96-6.985 9.874-8.229 20.736-1.426 13.275 3.913 56.43 4.133 65.755 0.512 24.21-0.073 26.149-5.925 49.737 0 0-7.058 21.358-18.213 27.831l-22.272 3.803-13.714 12.727c-55.369 34.085-114.761 10.167-146.505-2.67-45.824-14.885-74.789-59.758-54.565-155.538 3.474-16.421-8.96-23.698-8.155-32.658 1.829-19.566 2.158-66.487 20.59-78.080 1.719-1.061 14.811-4.352 14.738-3.438 1.792-19.017 3.621-38.071 5.376-57.015 4.608-12.654 15.689-14.080 18.907-31.927l-14.153-3.438c-6.363-13.568-17.993-40.777-29.879-48.933-9.947-2.706-19.931-5.413-29.879-8.155-34.889-14.373-73.691-31.488-108.654-46.153-1.902-0.768-3.877-1.39-5.815-2.158-43.776 58.112-70.071 130.011-70.071 208.165 0 191.086 155.429 346.514 346.478 346.514z"/><glyph unicode="&#xe628;" d="M427.703 653.019c0-10.569-8.558-19.090-19.090-19.090h-11.154c-10.533 0-19.090 8.521-19.090 19.090v68.462c0 10.533 8.594 19.090 19.090 19.090h11.154c10.533 0 19.090-8.558 19.090-19.090v-68.462zM645.778 653.019c0-10.569-8.521-19.090-19.054-19.090h-11.154c-10.533 0-19.054 8.521-19.054 19.090v68.462c-0.037 10.533 8.485 19.090 19.054 19.090h11.154c10.533 0 19.054-8.558 19.054-19.090v-68.462zM675.182 481.317l-38.729 31.598-152.795-187.282-81.518 64.805-28.891-36.242 120.21-95.634zM758.784 687.982h-71.351v-29.769c0-31.634-25.746-57.344-57.271-57.344h-11.227c-31.598 0-57.271 25.71-57.271 57.344v29.769h-97.682v-29.769c0-31.634-25.71-57.344-57.307-57.344h-11.154c-31.598 0-57.307 25.71-57.307 57.344v29.769h-72.96c-10.533 0-19.090-8.521-19.090-19.054v-494.373c-0.037-10.569 8.558-19.127 19.090-19.127h493.531c10.533 0 19.054 8.558 19.054 19.090v494.409c0 10.533-8.521 19.054-19.054 19.054zM720.567 240.677c0-10.569-8.558-19.090-19.090-19.090h-378.917c-10.569 0-19.090 8.521-19.090 19.090v288.11c0 10.569 8.521 19.054 19.090 19.054h378.88c10.533 0 19.090-8.485 19.090-19.054v-288.11z"/><glyph unicode="&#xe629;" d="M391.863 554.203h-128.219c-10.35 0-18.761-8.375-18.761-18.725v-91.429c0-10.35 8.375-18.725 18.761-18.725h128.219c10.35 0 18.761 8.375 18.761 18.725v91.429c0 10.386-8.375 18.725-18.761 18.725zM391.863 387.511h-90.734c-10.35 0-18.761-8.375-18.761-18.725v-194.633c0-10.35 8.411-18.725 18.761-18.725h90.734c10.35 0 18.761 8.375 18.761 18.725v194.633c0 10.35-8.375 18.725-18.761 18.725zM760.357 554.203h-279.845c-10.35 0-18.725-8.375-18.725-18.725v-91.429c0-10.35 8.375-18.725 18.725-18.725h279.845c10.313 0 18.725 8.375 18.725 18.725v91.429c-0.037 10.386-8.411 18.725-18.725 18.725zM721.701 385.573h-240.64c-10.313 0-18.725-8.375-18.725-18.761v-192.695c0-10.35 8.375-18.725 18.725-18.725h240.64c10.35 0 18.725 8.375 18.725 18.725v192.695c0 10.35-8.375 18.761-18.725 18.761zM507.355 575.634c21.87-3.986 42.971-6.327 62.647-6.327 99.072 0 152.832 53.248 153.088 103.387 0.183 32.293-23.698 67.291-78.117 67.84-72.923 0-118.089-51.493-141.605-89.71-23.918 38.107-69.266 88.576-142.373 88.576-52.882-0.549-76.763-35.547-76.581-67.84 0.256-50.139 54.016-103.424 153.088-103.424 0.037 0 0.037 0 0.037 0 21.394 0 44.398 2.414 68.425 7.241l1.39 0.256zM645.998 693.723c9.143-0.073 30.354-2.304 30.245-20.773-0.11-23.589-33.17-56.795-106.24-56.795-10.057 0-20.553 0.658-31.525 1.938 16.567 29.294 51.566 75.63 107.52 75.63zM437.504 614.985v0c-73.106 0-106.167 33.207-106.277 56.795-0.11 18.469 21.102 20.699 31.305 20.809 55.259 0 90.039-46.373 106.496-75.666-10.935-1.28-21.467-1.938-31.525-1.938z"/></font></defs></svg>
diff --git a/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.ttf b/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.ttf
index 67e7a7f1588bfaee162257fda8b9526699071887..eaec02d1df42b6b0208db02f1da2a3fb3bcae7fd 100644
Binary files a/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.ttf and b/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.ttf differ
diff --git a/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.woff b/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.woff
index 809752bf8e5bb222801a256a45bcdcea3b03d190..e9e8395b2574bc6cfbb3c2606213ca204179bf51 100644
Binary files a/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.woff and b/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.woff differ
diff --git a/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.woff2 b/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.woff2
index 438e128ae281b026f6fa1309ca2e78b17cf18a8b..1d60f2f95c0facb689b7a0079cfb2b2312bcab17 100644
Binary files a/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.woff2 and b/lib/web/fonts/Blank-Theme-Icons/Blank-Theme-Icons.woff2 differ
diff --git a/lib/web/fonts/Blank-Theme-Icons/selection.json b/lib/web/fonts/Blank-Theme-Icons/selection.json
index 307b07ce972e4209487d81adfe63a86024ae2012..e3a71a30c6ae96426ed01b4041c20ae392e1e909 100644
--- a/lib/web/fonts/Blank-Theme-Icons/selection.json
+++ b/lib/web/fonts/Blank-Theme-Icons/selection.json
@@ -1,6 +1,83 @@
 {
 	"IcoMoonType": "selection",
 	"icons": [
+		{
+			"icon": {
+				"paths": [
+					"M427.703 306.981c0 10.569-8.558 19.090-19.090 19.090h-11.154c-10.533 0-19.090-8.521-19.090-19.090v-68.462c0-10.533 8.594-19.090 19.090-19.090h11.154c10.533 0 19.090 8.558 19.090 19.090v68.462z",
+					"M645.778 306.981c0 10.569-8.521 19.090-19.054 19.090h-11.154c-10.533 0-19.054-8.521-19.054-19.090v-68.462c-0.037-10.533 8.485-19.090 19.054-19.090h11.154c10.533 0 19.054 8.558 19.054 19.090v68.462z",
+					"M675.182 478.683l-38.729-31.598-152.795 187.282-81.518-64.805-28.891 36.242 120.21 95.634z",
+					"M758.784 272.018h-71.351v29.769c0 31.634-25.746 57.344-57.271 57.344h-11.227c-31.598 0-57.271-25.71-57.271-57.344v-29.769h-97.682v29.769c0 31.634-25.71 57.344-57.307 57.344h-11.154c-31.598 0-57.307-25.71-57.307-57.344v-29.769h-72.96c-10.533 0-19.090 8.521-19.090 19.054v494.373c-0.037 10.569 8.558 19.127 19.090 19.127h493.531c10.533 0 19.054-8.558 19.054-19.090v-494.409c0-10.533-8.521-19.054-19.054-19.054zM720.567 719.323c0 10.569-8.558 19.090-19.090 19.090h-378.917c-10.569 0-19.090-8.521-19.090-19.090v-288.11c0-10.569 8.521-19.054 19.090-19.054h378.88c10.533 0 19.090 8.485 19.090 19.054v288.11z"
+				],
+				"attrs": [
+					{},
+					{},
+					{},
+					{}
+				],
+				"isMulticolor": false,
+				"grid": 0,
+				"tags": [
+					"gift-registry"
+				]
+			},
+			"attrs": [
+				{},
+				{},
+				{},
+				{}
+			],
+			"properties": {
+				"order": 41,
+				"id": 36,
+				"prevSize": 32,
+				"code": 58920,
+				"name": "gift-registry"
+			},
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 0
+		},
+		{
+			"icon": {
+				"paths": [
+					"M391.863 405.797h-128.219c-10.35 0-18.761 8.375-18.761 18.725v91.429c0 10.35 8.375 18.725 18.761 18.725h128.219c10.35 0 18.761-8.375 18.761-18.725v-91.429c0-10.386-8.375-18.725-18.761-18.725z",
+					"M391.863 572.489h-90.734c-10.35 0-18.761 8.375-18.761 18.725v194.633c0 10.35 8.411 18.725 18.761 18.725h90.734c10.35 0 18.761-8.375 18.761-18.725v-194.633c0-10.35-8.375-18.725-18.761-18.725z",
+					"M760.357 405.797h-279.845c-10.35 0-18.725 8.375-18.725 18.725v91.429c0 10.35 8.375 18.725 18.725 18.725h279.845c10.313 0 18.725-8.375 18.725-18.725v-91.429c-0.037-10.386-8.411-18.725-18.725-18.725z",
+					"M721.701 574.427h-240.64c-10.313 0-18.725 8.375-18.725 18.761v192.695c0 10.35 8.375 18.725 18.725 18.725h240.64c10.35 0 18.725-8.375 18.725-18.725v-192.695c-0-10.35-8.375-18.761-18.725-18.761z",
+					"M507.355 384.366c21.87 3.986 42.971 6.327 62.647 6.327 99.072 0 152.832-53.248 153.088-103.387 0.183-32.293-23.698-67.291-78.117-67.84-72.923 0-118.089 51.493-141.605 89.71-23.918-38.107-69.266-88.576-142.373-88.576-52.882 0.549-76.763 35.547-76.581 67.84 0.256 50.139 54.016 103.424 153.088 103.424 0.037 0 0.037 0 0.037 0 21.394 0 44.398-2.414 68.425-7.241l1.39-0.256zM645.998 266.277c9.143 0.073 30.354 2.304 30.245 20.773-0.11 23.589-33.17 56.795-106.24 56.795-10.057 0-20.553-0.658-31.525-1.938 16.567-29.294 51.566-75.63 107.52-75.63zM437.504 345.015v0c-73.106 0-106.167-33.207-106.277-56.795-0.11-18.469 21.102-20.699 31.305-20.809 55.259 0 90.039 46.373 106.496 75.666-10.935 1.28-21.467 1.938-31.525 1.938z"
+				],
+				"attrs": [
+					{},
+					{},
+					{},
+					{},
+					{}
+				],
+				"isMulticolor": false,
+				"grid": 0,
+				"tags": [
+					"present"
+				]
+			},
+			"attrs": [
+				{},
+				{},
+				{},
+				{},
+				{}
+			],
+			"properties": {
+				"order": 43,
+				"id": 35,
+				"prevSize": 32,
+				"code": 58921,
+				"name": "present"
+			},
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 1
+		},
 		{
 			"icon": {
 				"paths": [
@@ -9,8 +86,10 @@
 				"grid": 0,
 				"tags": [
 					"account"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 40,
 				"id": 4,
@@ -20,7 +99,8 @@
 				"ligatures": ""
 			},
 			"setIdx": 0,
-			"iconIdx": 0
+			"setId": 1,
+			"iconIdx": 2
 		},
 		{
 			"icon": {
@@ -30,8 +110,10 @@
 				"grid": 0,
 				"tags": [
 					"arrow-up-thin"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 36,
 				"id": 3,
@@ -41,7 +123,8 @@
 				"ligatures": ""
 			},
 			"setIdx": 0,
-			"iconIdx": 1
+			"setId": 1,
+			"iconIdx": 3
 		},
 		{
 			"icon": {
@@ -51,8 +134,10 @@
 				"grid": 0,
 				"tags": [
 					"arrow-right-thin"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 37,
 				"id": 2,
@@ -62,7 +147,8 @@
 				"ligatures": ""
 			},
 			"setIdx": 0,
-			"iconIdx": 2
+			"setId": 1,
+			"iconIdx": 4
 		},
 		{
 			"icon": {
@@ -72,8 +158,10 @@
 				"grid": 0,
 				"tags": [
 					"arrow-left-thin"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 38,
 				"id": 1,
@@ -83,7 +171,8 @@
 				"ligatures": ""
 			},
 			"setIdx": 0,
-			"iconIdx": 3
+			"setId": 1,
+			"iconIdx": 5
 		},
 		{
 			"icon": {
@@ -93,8 +182,10 @@
 				"grid": 0,
 				"tags": [
 					"arrow-down-thin"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 39,
 				"id": 0,
@@ -104,7 +195,8 @@
 				"ligatures": ""
 			},
 			"setIdx": 0,
-			"iconIdx": 4
+			"setId": 1,
+			"iconIdx": 6
 		},
 		{
 			"icon": {
@@ -114,8 +206,10 @@
 				"grid": 0,
 				"tags": [
 					"wishlist full"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 1,
 				"id": 32,
@@ -124,8 +218,9 @@
 				"name": "wishlist-full",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 0
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 7
 		},
 		{
 			"icon": {
@@ -135,8 +230,10 @@
 				"grid": 0,
 				"tags": [
 					"wishlist empty"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 2,
 				"id": 31,
@@ -145,8 +242,9 @@
 				"name": "wishlist-empty",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 1
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 8
 		},
 		{
 			"icon": {
@@ -156,8 +254,10 @@
 				"grid": 0,
 				"tags": [
 					"warning"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 3,
 				"id": 30,
@@ -166,8 +266,9 @@
 				"name": "warning",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 2
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 9
 		},
 		{
 			"icon": {
@@ -177,8 +278,10 @@
 				"grid": 0,
 				"tags": [
 					"update"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 4,
 				"id": 29,
@@ -187,8 +290,9 @@
 				"name": "update",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 3
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 10
 		},
 		{
 			"icon": {
@@ -198,8 +302,10 @@
 				"grid": 0,
 				"tags": [
 					"trash"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 5,
 				"id": 28,
@@ -208,8 +314,9 @@
 				"name": "trash",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 4
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 11
 		},
 		{
 			"icon": {
@@ -219,8 +326,10 @@
 				"grid": 0,
 				"tags": [
 					"star"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 6,
 				"id": 27,
@@ -229,8 +338,9 @@
 				"name": "star",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 5
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 12
 		},
 		{
 			"icon": {
@@ -240,8 +350,10 @@
 				"grid": 0,
 				"tags": [
 					"settings"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 7,
 				"id": 26,
@@ -250,8 +362,9 @@
 				"name": "settings",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 6
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 13
 		},
 		{
 			"icon": {
@@ -261,8 +374,10 @@
 				"grid": 0,
 				"tags": [
 					"pointer down"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 8,
 				"id": 19,
@@ -271,8 +386,9 @@
 				"name": "pointer-down",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 7
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 14
 		},
 		{
 			"icon": {
@@ -282,8 +398,10 @@
 				"grid": 0,
 				"tags": [
 					"next"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 9,
 				"id": 18,
@@ -292,8 +410,9 @@
 				"name": "next",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 8
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 15
 		},
 		{
 			"icon": {
@@ -303,8 +422,10 @@
 				"grid": 0,
 				"tags": [
 					"menu"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 10,
 				"id": 17,
@@ -313,8 +434,9 @@
 				"name": "menu",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 9
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 16
 		},
 		{
 			"icon": {
@@ -324,8 +446,10 @@
 				"grid": 0,
 				"tags": [
 					"location"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 11,
 				"id": 16,
@@ -334,8 +458,9 @@
 				"name": "location",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 10
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 17
 		},
 		{
 			"icon": {
@@ -345,8 +470,10 @@
 				"grid": 0,
 				"tags": [
 					"list"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 12,
 				"id": 15,
@@ -355,8 +482,9 @@
 				"name": "list",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 11
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 18
 		},
 		{
 			"icon": {
@@ -366,8 +494,10 @@
 				"grid": 0,
 				"tags": [
 					"info"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 13,
 				"id": 14,
@@ -376,8 +506,9 @@
 				"name": "info",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 12
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 19
 		},
 		{
 			"icon": {
@@ -387,8 +518,10 @@
 				"grid": 0,
 				"tags": [
 					"grid"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 14,
 				"id": 13,
@@ -397,8 +530,9 @@
 				"name": "grid",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 13
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 20
 		},
 		{
 			"icon": {
@@ -408,8 +542,10 @@
 				"grid": 0,
 				"tags": [
 					"comment reflected"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 15,
 				"id": 6,
@@ -418,8 +554,9 @@
 				"name": "comment-reflected",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 14
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 21
 		},
 		{
 			"icon": {
@@ -429,8 +566,10 @@
 				"grid": 0,
 				"tags": [
 					"collapse"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 16,
 				"id": 5,
@@ -439,8 +578,9 @@
 				"name": "collapse",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 15
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 22
 		},
 		{
 			"icon": {
@@ -450,8 +590,10 @@
 				"grid": 0,
 				"tags": [
 					"checkmark"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 17,
 				"id": 4,
@@ -460,8 +602,9 @@
 				"name": "checkmark",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 16
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 23
 		},
 		{
 			"icon": {
@@ -471,8 +614,10 @@
 				"grid": 0,
 				"tags": [
 					"cart"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 18,
 				"id": 3,
@@ -481,8 +626,9 @@
 				"name": "cart",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 17
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 24
 		},
 		{
 			"icon": {
@@ -492,8 +638,10 @@
 				"grid": 0,
 				"tags": [
 					"calendar"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 19,
 				"id": 2,
@@ -502,8 +650,9 @@
 				"name": "calendar",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 18
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 25
 		},
 		{
 			"icon": {
@@ -513,8 +662,10 @@
 				"grid": 0,
 				"tags": [
 					"arrow up"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 20,
 				"id": 1,
@@ -523,8 +674,9 @@
 				"name": "arrow-up",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 19
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 26
 		},
 		{
 			"icon": {
@@ -534,8 +686,10 @@
 				"grid": 0,
 				"tags": [
 					"arrow down"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 21,
 				"id": 0,
@@ -544,8 +698,9 @@
 				"name": "arrow-down",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 20
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 27
 		},
 		{
 			"icon": {
@@ -555,8 +710,10 @@
 				"grid": 0,
 				"tags": [
 					"search"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 22,
 				"id": 25,
@@ -565,8 +722,9 @@
 				"name": "search",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 21
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 28
 		},
 		{
 			"icon": {
@@ -576,8 +734,10 @@
 				"grid": 0,
 				"tags": [
 					"remove"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 23,
 				"id": 24,
@@ -586,8 +746,9 @@
 				"name": "remove",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 22
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 29
 		},
 		{
 			"icon": {
@@ -597,8 +758,10 @@
 				"grid": 0,
 				"tags": [
 					"prev"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 24,
 				"id": 23,
@@ -607,8 +770,9 @@
 				"name": "prev",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 23
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 30
 		},
 		{
 			"icon": {
@@ -618,8 +782,10 @@
 				"grid": 0,
 				"tags": [
 					"pointer up"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 25,
 				"id": 22,
@@ -628,8 +794,9 @@
 				"name": "pointer-up",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 24
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 31
 		},
 		{
 			"icon": {
@@ -639,8 +806,10 @@
 				"grid": 0,
 				"tags": [
 					"pointer right"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 26,
 				"id": 21,
@@ -649,8 +818,9 @@
 				"name": "pointer-right",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 25
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 32
 		},
 		{
 			"icon": {
@@ -660,8 +830,10 @@
 				"grid": 0,
 				"tags": [
 					"pointer left"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 27,
 				"id": 20,
@@ -670,8 +842,9 @@
 				"name": "pointer-left",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 26
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 33
 		},
 		{
 			"icon": {
@@ -681,8 +854,10 @@
 				"grid": 0,
 				"tags": [
 					"flag"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 28,
 				"id": 12,
@@ -691,8 +866,9 @@
 				"name": "flag",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 27
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 34
 		},
 		{
 			"icon": {
@@ -702,8 +878,10 @@
 				"grid": 0,
 				"tags": [
 					"expand"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 29,
 				"id": 11,
@@ -712,8 +890,9 @@
 				"name": "expand",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 28
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 35
 		},
 		{
 			"icon": {
@@ -723,8 +902,10 @@
 				"grid": 0,
 				"tags": [
 					"envelope"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 30,
 				"id": 10,
@@ -733,8 +914,9 @@
 				"name": "envelope",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 29
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 36
 		},
 		{
 			"icon": {
@@ -744,8 +926,10 @@
 				"grid": 0,
 				"tags": [
 					"compare full"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 31,
 				"id": 9,
@@ -754,8 +938,9 @@
 				"name": "compare-full",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 30
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 37
 		},
 		{
 			"icon": {
@@ -765,8 +950,10 @@
 				"grid": 0,
 				"tags": [
 					"compare empty"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 32,
 				"id": 8,
@@ -775,8 +962,9 @@
 				"name": "compare-empty",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 31
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 38
 		},
 		{
 			"icon": {
@@ -786,8 +974,10 @@
 				"grid": 0,
 				"tags": [
 					"comment"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 33,
 				"id": 7,
@@ -796,8 +986,9 @@
 				"name": "comment",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 32
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 39
 		},
 		{
 			"icon": {
@@ -807,8 +998,10 @@
 				"grid": 0,
 				"tags": [
 					"up"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 34,
 				"id": 34,
@@ -817,8 +1010,9 @@
 				"name": "up",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 33
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 40
 		},
 		{
 			"icon": {
@@ -828,8 +1022,10 @@
 				"grid": 0,
 				"tags": [
 					"down"
-				]
+				],
+				"attrs": []
 			},
+			"attrs": [],
 			"properties": {
 				"order": 35,
 				"id": 33,
@@ -838,8 +1034,9 @@
 				"name": "down",
 				"ligatures": ""
 			},
-			"setIdx": 1,
-			"iconIdx": 34
+			"setIdx": 0,
+			"setId": 1,
+			"iconIdx": 41
 		}
 	],
 	"height": 1024,
@@ -870,6 +1067,8 @@
 		"gridSize": 16,
 		"showLiga": false,
 		"search": "",
-		"showGrid": false
+		"showGrid": false,
+		"showQuickUse2": true,
+		"showSVGs": true
 	}
 }
\ No newline at end of file
diff --git a/setup/src/Magento/Setup/Test/Unit/Module/Di/Code/Scanner/ServiceDataAttributesScannerTest.php b/setup/src/Magento/Setup/Test/Unit/Module/Di/Code/Scanner/ServiceDataAttributesScannerTest.php
index b7697813590c90cd3845ef83ad5936ce5fb5a110..e0550e1f37097054d8d5d9ccc4d113665f9a6055 100644
--- a/setup/src/Magento/Setup/Test/Unit/Module/Di/Code/Scanner/ServiceDataAttributesScannerTest.php
+++ b/setup/src/Magento/Setup/Test/Unit/Module/Di/Code/Scanner/ServiceDataAttributesScannerTest.php
@@ -34,12 +34,7 @@ class ServiceDataAttributesScannerTest extends \PHPUnit_Framework_TestCase
             'Magento\Sales\Api\Data\OrderExtension',
             'Magento\Sales\Api\Data\OrderItemExtensionInterface',
             'Magento\Sales\Api\Data\OrderItemExtension',
-            'Magento\GiftMessage\Api\Data\MessageExtensionInterface',
-            'Magento\GiftMessage\Api\Data\MessageExtension',
-            'Magento\Quote\Api\Data\TotalsAdditionalDataExtensionInterface',
-            'Magento\Quote\Api\Data\TotalsAdditionalDataExtension'
         ];
-
         $this->assertSame($expectedResult, $this->model->collectEntities($files));
     }
 }
diff --git a/setup/src/Magento/Setup/Test/Unit/Module/Di/_files/extension_attributes.xml b/setup/src/Magento/Setup/Test/Unit/Module/Di/_files/extension_attributes.xml
index 604ebb9dc9ab6850e9e98729f20a2ac9b9bfb5e1..336d89dd4ecc727b5a382ecb0e03878fef50dfaa 100644
--- a/setup/src/Magento/Setup/Test/Unit/Module/Di/_files/extension_attributes.xml
+++ b/setup/src/Magento/Setup/Test/Unit/Module/Di/_files/extension_attributes.xml
@@ -12,11 +12,4 @@
     <extension_attributes for="Magento\Sales\Api\Data\OrderItemInterface">
         <attribute code="gift_message" type="Magento\GiftMessage\Api\Data\MessageInterface" />
     </extension_attributes>
-    <extension_attributes for="Magento\GiftMessage\Api\Data\MessageInterface">
-        <attribute code="entity_id" type="string" />
-        <attribute code="entity_type" type="string" />
-    </extension_attributes>
-    <extension_attributes for="Magento\Quote\Api\Data\TotalsAdditionalDataInterface">
-        <attribute code="gift_messages" type="Magento\GiftMessage\Api\Data\MessageInterface[]" />
-    </extension_attributes>
 </config>