From 57c3efc6f6a628c940caf2ba2d8c9988b40d2d3f Mon Sep 17 00:00:00 2001 From: Arthur Vuillard Date: Fri, 17 Jan 2025 16:14:44 +0100 Subject: [PATCH] [MIG] product_usability: v17.0 --- product_usability/README.rst | 138 ++++++ product_usability/__init__.py | 0 product_usability/__manifest__.py | 22 + product_usability/i18n/fr.po | 99 ++++ product_usability/i18n/it.po | 99 ++++ product_usability/i18n/product_usability.pot | 96 ++++ product_usability/readme/CONTRIBUTORS.rst | 1 + product_usability/readme/DESCRIPTION.rst | 48 ++ product_usability/readme/ROADMAP.rst | 3 + .../security/ir.model.access.csv | 12 + product_usability/security/res_groups.xml | 40 ++ product_usability/static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 468 ++++++++++++++++++ .../static/description/main_menu.png | Bin 0 -> 37241 bytes .../static/description/product_menu_icon.png | Bin 0 -> 3699 bytes .../static/description/product_menu_icon.svg | 1 + product_usability/views/menu.xml | 111 +++++ 17 files changed, 1138 insertions(+) create mode 100644 product_usability/README.rst create mode 100644 product_usability/__init__.py create mode 100644 product_usability/__manifest__.py create mode 100644 product_usability/i18n/fr.po create mode 100644 product_usability/i18n/it.po create mode 100644 product_usability/i18n/product_usability.pot create mode 100644 product_usability/readme/CONTRIBUTORS.rst create mode 100644 product_usability/readme/DESCRIPTION.rst create mode 100644 product_usability/readme/ROADMAP.rst create mode 100644 product_usability/security/ir.model.access.csv create mode 100644 product_usability/security/res_groups.xml create mode 100644 product_usability/static/description/icon.png create mode 100644 product_usability/static/description/index.html create mode 100644 product_usability/static/description/main_menu.png create mode 100644 product_usability/static/description/product_menu_icon.png create mode 100644 product_usability/static/description/product_menu_icon.svg create mode 100644 product_usability/views/menu.xml diff --git a/product_usability/README.rst b/product_usability/README.rst new file mode 100644 index 00000000000..24eb1ee488d --- /dev/null +++ b/product_usability/README.rst @@ -0,0 +1,138 @@ +================================== +Product - Missing Menus and Groups +================================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:64a8e7b379948b20aa36731edfa5ec5bb82ec2915e3fd28ccb44d81b6861e2c3 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproduct--attribute-lightgray.png?logo=github + :target: https://github.com/OCA/product-attribute/tree/16.0/product_usability + :alt: OCA/product-attribute +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/product-attribute-16-0/product-attribute-16-0-product_usability + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/product-attribute&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the Odoo CE product module to fill gaps present in the module. + +New Menu items +~~~~~~~~~~~~~~ +By default, when installing ``product`` module, a lot of menu items +are not created and are available only if other module are installed. +For exemple: + +* Manage product categories requires to install ``stock`` module, + that creates the menu entry + _"Inventory / Configuration / Product / Product Categories"_. +* Manage product tags requires to install ``sale_management`` module, + that creates the menu entry + _"Sale / Configuration / Products / Tags"_. + +This module so creates a new main menu item named 'Product' that provides +all menu entries to see and manage product, attributes, pricelists, +Units of Measure, etc. So that all the product configuration is available +in a unique place. + +.. figure:: https://raw.githubusercontent.com/OCA/product-attribute/16.0/product_usability/static/description/main_menu.png + +New Access Rights +~~~~~~~~~~~~~~~~~ + +By default, to create product, attributes, pricelist, categories, +User should be member of a group that adds a lot of rights, like +'Inventory / Manager' or 'Sale / Manager'. + +This module adds new Access rules to fine-tune access rights, +creating the following rules: + +* _"Product Creation"_: Allow to create Products (``product.template``), + Variants (``product.product``), Product Template Attribute Lines + (``product.template.attribute.line``) and Product Template Attribute Values + (``product.template.attribute.value``) + +* _"Product Attribute Creation"_: Allow to create Attributes (``product.attribute``) + and Values (``product.attribute.value``). + +* _"Product Tag Creation"_: Allow to create Tags (``product.tag``) + +* _"Product Category Creation"_: Allow to create Categories (``product.category``) + +* _"Product Supplier Pricelist Creation"_: Allow to create Supplier Pricelists (``product.supplierinfo``) + +* _"Unit of Measure Creation"_: Allow to create Unit of Measures + (``uom.uom``) and Unit of Measures Categories (``uom.category``) + +**Table of contents** + +.. contents:: + :local: + +Known issues / Roadmap +====================== + +In V18, replace the group ``product_usability.group_product_creation`` by ``product.group_product_manager``. + +see : https://github.com/OCA/product-attribute/pull/1657#issuecomment-2449388317 + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* GRAP + +Contributors +~~~~~~~~~~~~ + +* Sylvain LE GAL + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-legalsylvain| image:: https://github.com/legalsylvain.png?size=40px + :target: https://github.com/legalsylvain + :alt: legalsylvain + +Current `maintainer `__: + +|maintainer-legalsylvain| + +This module is part of the `OCA/product-attribute `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_usability/__init__.py b/product_usability/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/product_usability/__manifest__.py b/product_usability/__manifest__.py new file mode 100644 index 00000000000..747fd135254 --- /dev/null +++ b/product_usability/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright (C) 2024 - Today: GRAP (http://www.grap.coop) +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Product - Missing Menus and Groups", + "version": "17.0.1.0.0", + "category": "Product", + "license": "AGPL-3", + "summary": "Adds missing menu entries for Product module and" + " adds extra groups to fine-tune access rights", + "author": "GRAP, Odoo Community Association (OCA)", + "maintainers": ["legalsylvain"], + "website": "https://github.com/OCA/product-attribute", + "depends": ["product"], + "data": [ + "security/res_groups.xml", + "security/ir.model.access.csv", + "views/menu.xml", + ], + "installable": True, +} diff --git a/product_usability/i18n/fr.po b/product_usability/i18n/fr.po new file mode 100644 index 00000000000..cd71055f325 --- /dev/null +++ b/product_usability/i18n/fr.po @@ -0,0 +1,99 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_usability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-06-16 20:40+0000\n" +"PO-Revision-Date: 2024-06-16 20:40+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_attribute +msgid "Attributes" +msgstr "Attributs de produits" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_configuration +msgid "Configuration" +msgstr "" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_pricelist +msgid "Pricelists" +msgstr "Listes de prix" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_attribute_creation +msgid "Product Attribute Creation" +msgstr "Création d'attribut de produit" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_category +msgid "Product Categories" +msgstr "Catégories de produits" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_category_creation +msgid "Product Category Creation" +msgstr "Création de catégorie de produit" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_creation +msgid "Product Creation" +msgstr "Création de produit" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_packaging +msgid "Product Packagings" +msgstr "Conditionnements de produit" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_supplierinfo_creation +msgid "Product Supplier Pricelist Creation" +msgstr "Création de tarification fournisseur de produit" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_tag_creation +msgid "Product Tag Creation" +msgstr "Création d'étiquette de produit" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_tag +msgid "Product Tags" +msgstr "Étiquettes de produit" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_product +msgid "Product Variants" +msgstr "Variantes de produit" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product +#: model:ir.ui.menu,name:product_usability.menu_product_main +#: model:ir.ui.menu,name:product_usability.menu_product_template +msgid "Products" +msgstr "Produits" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_uom_uom +msgid "Units of Measure" +msgstr "Unités de mesure" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_uom_category +msgid "Units of Measure Categories" +msgstr "Catégories d'unité de mesure" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_uom_creation +msgid "Units of Measure Creation" +msgstr "Création d'unité de mesure" diff --git a/product_usability/i18n/it.po b/product_usability/i18n/it.po new file mode 100644 index 00000000000..7be6c1e48b3 --- /dev/null +++ b/product_usability/i18n/it.po @@ -0,0 +1,99 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_usability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"PO-Revision-Date: 2024-11-08 11:06+0000\n" +"Last-Translator: mymage \n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.6.2\n" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_attribute +msgid "Attributes" +msgstr "Attributi" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_configuration +msgid "Configuration" +msgstr "Configurazione" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_pricelist +msgid "Pricelists" +msgstr "Listini" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_attribute_creation +msgid "Product Attribute Creation" +msgstr "Creazione attributo prodotto" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_category +msgid "Product Categories" +msgstr "Categorie prodotto" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_category_creation +msgid "Product Category Creation" +msgstr "Creazione categoria prodotto" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_creation +msgid "Product Creation" +msgstr "Creazione prodotto" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_packaging +msgid "Product Packagings" +msgstr "Imballaggi prodotto" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_supplierinfo_creation +msgid "Product Supplier Pricelist Creation" +msgstr "Creazione listino fornitore prodotto" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_tag_creation +msgid "Product Tag Creation" +msgstr "Creazione etichetta prodotto" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_tag +msgid "Product Tags" +msgstr "Etichette prodotto" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_product +msgid "Product Variants" +msgstr "Varianti prodotto" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product +#: model:ir.ui.menu,name:product_usability.menu_product_main +#: model:ir.ui.menu,name:product_usability.menu_product_template +msgid "Products" +msgstr "Prodotti" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_uom_uom +msgid "Units of Measure" +msgstr "Unità di misura" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_uom_category +msgid "Units of Measure Categories" +msgstr "Categorie unità di misura" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_uom_creation +msgid "Units of Measure Creation" +msgstr "Creazione unità di misura" diff --git a/product_usability/i18n/product_usability.pot b/product_usability/i18n/product_usability.pot new file mode 100644 index 00000000000..86a4ab73a0a --- /dev/null +++ b/product_usability/i18n/product_usability.pot @@ -0,0 +1,96 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_usability +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_attribute +msgid "Attributes" +msgstr "" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_configuration +msgid "Configuration" +msgstr "" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_pricelist +msgid "Pricelists" +msgstr "" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_attribute_creation +msgid "Product Attribute Creation" +msgstr "" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_category +msgid "Product Categories" +msgstr "" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_category_creation +msgid "Product Category Creation" +msgstr "" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_creation +msgid "Product Creation" +msgstr "" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_packaging +msgid "Product Packagings" +msgstr "" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_supplierinfo_creation +msgid "Product Supplier Pricelist Creation" +msgstr "" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_product_tag_creation +msgid "Product Tag Creation" +msgstr "" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_tag +msgid "Product Tags" +msgstr "" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product_product +msgid "Product Variants" +msgstr "" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_product +#: model:ir.ui.menu,name:product_usability.menu_product_main +#: model:ir.ui.menu,name:product_usability.menu_product_template +msgid "Products" +msgstr "" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_uom_uom +msgid "Units of Measure" +msgstr "" + +#. module: product_usability +#: model:ir.ui.menu,name:product_usability.menu_uom_category +msgid "Units of Measure Categories" +msgstr "" + +#. module: product_usability +#: model:res.groups,name:product_usability.group_uom_creation +msgid "Units of Measure Creation" +msgstr "" diff --git a/product_usability/readme/CONTRIBUTORS.rst b/product_usability/readme/CONTRIBUTORS.rst new file mode 100644 index 00000000000..9f76a75bc18 --- /dev/null +++ b/product_usability/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Sylvain LE GAL diff --git a/product_usability/readme/DESCRIPTION.rst b/product_usability/readme/DESCRIPTION.rst new file mode 100644 index 00000000000..367b7f79301 --- /dev/null +++ b/product_usability/readme/DESCRIPTION.rst @@ -0,0 +1,48 @@ +This module extends the Odoo CE product module to fill gaps present in the module. + +New Menu items +~~~~~~~~~~~~~~ +By default, when installing ``product`` module, a lot of menu items +are not created and are available only if other module are installed. +For exemple: + +* Manage product categories requires to install ``stock`` module, + that creates the menu entry + _"Inventory / Configuration / Product / Product Categories"_. +* Manage product tags requires to install ``sale_management`` module, + that creates the menu entry + _"Sale / Configuration / Products / Tags"_. + +This module so creates a new main menu item named 'Product' that provides +all menu entries to see and manage product, attributes, pricelists, +Units of Measure, etc. So that all the product configuration is available +in a unique place. + +.. figure:: ../static/description/main_menu.png + +New Access Rights +~~~~~~~~~~~~~~~~~ + +By default, to create product, attributes, pricelist, categories, +User should be member of a group that adds a lot of rights, like +'Inventory / Manager' or 'Sale / Manager'. + +This module adds new Access rules to fine-tune access rights, +creating the following rules: + +* _"Product Creation"_: Allow to create Products (``product.template``), + Variants (``product.product``), Product Template Attribute Lines + (``product.template.attribute.line``) and Product Template Attribute Values + (``product.template.attribute.value``) + +* _"Product Attribute Creation"_: Allow to create Attributes (``product.attribute``) + and Values (``product.attribute.value``). + +* _"Product Tag Creation"_: Allow to create Tags (``product.tag``) + +* _"Product Category Creation"_: Allow to create Categories (``product.category``) + +* _"Product Supplier Pricelist Creation"_: Allow to create Supplier Pricelists (``product.supplierinfo``) + +* _"Unit of Measure Creation"_: Allow to create Unit of Measures + (``uom.uom``) and Unit of Measures Categories (``uom.category``) diff --git a/product_usability/readme/ROADMAP.rst b/product_usability/readme/ROADMAP.rst new file mode 100644 index 00000000000..804c641453c --- /dev/null +++ b/product_usability/readme/ROADMAP.rst @@ -0,0 +1,3 @@ +In V18, replace the group ``product_usability.group_product_creation`` by ``product.group_product_manager``. + +see : https://github.com/OCA/product-attribute/pull/1657#issuecomment-2449388317 \ No newline at end of file diff --git a/product_usability/security/ir.model.access.csv b/product_usability/security/ir.model.access.csv new file mode 100644 index 00000000000..e9b0c9ce0d6 --- /dev/null +++ b/product_usability/security/ir.model.access.csv @@ -0,0 +1,12 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_product_template_manager,product.template manager,product.model_product_template,group_product_creation,1,1,1,1 +access_product_product_manager,product.product manager,product.model_product_product,group_product_creation,1,1,1,1 +access_product_attribute_manager,product.attribute manager,product.model_product_attribute,group_product_attribute_creation,1,1,1,1 +access_product_attribute_value_manager,product.attribute.value manager,product.model_product_attribute_value,group_product_attribute_creation,1,1,1,1 +access_product_template_attribute_line_manager,product.template.attribute.line manager,product.model_product_template_attribute_line,group_product_creation,1,1,1,1 +access_product_template_attribute_value_manager,product.template.attribute.value manager,product.model_product_template_attribute_value,group_product_creation,1,1,1,1 +access_product_tag_manager,product.tag manager,product.model_product_tag,group_product_tag_creation,1,1,1,1 +access_product_category_manager,product.category manager,product.model_product_category,group_product_category_creation,1,1,1,1 +access_product_supplierinfo_manager,product.supplierinfo manager,product.model_product_supplierinfo,group_product_supplierinfo_creation,1,1,1,1 +access_uom_uom_manager,uom.uom manager,uom.model_uom_uom,group_uom_creation,1,1,1,1 +access_uom_category_manager,uom.category manager,uom.model_uom_category,group_uom_creation,1,1,1,1 diff --git a/product_usability/security/res_groups.xml b/product_usability/security/res_groups.xml new file mode 100644 index 00000000000..c01b5bdd6a6 --- /dev/null +++ b/product_usability/security/res_groups.xml @@ -0,0 +1,40 @@ + + + + + + Product Creation + + + + + Product Attribute Creation + + + + + Product Tag Creation + + + + + Product Category Creation + + + + + Product Supplier Pricelist Creation + + + + + Units of Measure Creation + + + + + diff --git a/product_usability/static/description/icon.png b/product_usability/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/product_usability/static/description/index.html b/product_usability/static/description/index.html new file mode 100644 index 00000000000..d0b5c42a15d --- /dev/null +++ b/product_usability/static/description/index.html @@ -0,0 +1,468 @@ + + + + + +Product - Missing Menus and Groups + + + +
+

Product - Missing Menus and Groups

+ + +

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runboat

+

This module extends the Odoo CE product module to fill gaps present in the module.

+
+

New Menu items

+

By default, when installing product module, a lot of menu items +are not created and are available only if other module are installed. +For exemple:

+
    +
  • Manage product categories requires to install stock module, +that creates the menu entry +_”Inventory / Configuration / Product / Product Categories”_.
  • +
  • Manage product tags requires to install sale_management module, +that creates the menu entry +_”Sale / Configuration / Products / Tags”_.
  • +
+

This module so creates a new main menu item named ‘Product’ that provides +all menu entries to see and manage product, attributes, pricelists, +Units of Measure, etc. So that all the product configuration is available +in a unique place.

+
+https://raw.githubusercontent.com/OCA/product-attribute/16.0/product_usability/static/description/main_menu.png +
+
+
+

New Access Rights

+

By default, to create product, attributes, pricelist, categories, +User should be member of a group that adds a lot of rights, like +‘Inventory / Manager’ or ‘Sale / Manager’.

+

This module adds new Access rules to fine-tune access rights, +creating the following rules:

+
    +
  • _”Product Creation”_: Allow to create Products (product.template), +Variants (product.product), Product Template Attribute Lines +(product.template.attribute.line) and Product Template Attribute Values +(product.template.attribute.value)
  • +
  • _”Product Attribute Creation”_: Allow to create Attributes (product.attribute) +and Values (product.attribute.value).
  • +
  • _”Product Tag Creation”_: Allow to create Tags (product.tag)
  • +
  • _”Product Category Creation”_: Allow to create Categories (product.category)
  • +
  • _”Product Supplier Pricelist Creation”_: Allow to create Supplier Pricelists (product.supplierinfo)
  • +
  • _”Unit of Measure Creation”_: Allow to create Unit of Measures +(uom.uom) and Unit of Measures Categories (uom.category)
  • +
+

Table of contents

+ +
+

Known issues / Roadmap

+

In V18, replace the group product_usability.group_product_creation by product.group_product_manager.

+

see : https://github.com/OCA/product-attribute/pull/1657#issuecomment-2449388317

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+ +
+
+

Authors

+
    +
  • GRAP
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainer:

+

legalsylvain

+

This module is part of the OCA/product-attribute project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+ + diff --git a/product_usability/static/description/main_menu.png b/product_usability/static/description/main_menu.png new file mode 100644 index 0000000000000000000000000000000000000000..e554eb69aca21704da9b6f96cf7e1e4a95e0bfbd GIT binary patch literal 37241 zcmZ_#Wk8hA_dgEP-MMs0*McA=4GV&#bS@>`-Q7zgAR!&nB8_xPhk!IlH`2|2!T0y` zyPw=o7WSHJW=_23%z2%ejZ{{Y!9*iPgMop;d?zcV3IhWVg8tuuf&~4frgs*De!{$y z5?AvuILJZ{pipmp@^|+>&QPc-(4@}7k(E&M!pFH06|=l0AjJKaLrpExS&aSVR7~0n z7cLhG1=TVnBm_rQ_IR#Vq5i7n@aZm#+xes0<m#hWj$UvIx|U%8=J zq2PNcgY_^$)PmIrAOs^ys0H5M3YOTHU{6dse*5oXb2MC=kljb%9!Jd23-I%+IV~(5 z4!`tuQ}%n&s^QATc9>T0n1fYzYLQYyprbs$@eXlse}BSBtsm_hTsaJD2lPFPJeXjW z@PWa|ntxARLf|lDC~{efe?AWa!zzXb1UQPmbPpgzVMPSQc9k|YR=@NPiGjla8BM9_ zDZj|61zQ2rjeCXo?@QpNMnGptE8*t(e-aBy!-nN6CVYNv^dd_?Qvmp!Cw%{iYh;Ab z?B$U+GgN`r`6TP^7X>s~R_}J%F+lorFqwQW!j_9I5Pkr{QDlD7SI{t4fkK; zZ`KY6f=h*g|Fj(y6b(pT z_dO?*{H4E9Wx&{Wuq@BKRQ_LvV-K1xl_^3iVxZiRtP}taDGzweujlh(o#tSum6vh} zo3LICSz85%AlrtLT}{qg2c5Ez4lq6a{Zol=M%;)0P+(C3hk4TEJR~cRlND)U!bXXIR8E^7FdHz%JGc z-LAz2^tJUqK9v7V2g5pU1l7bftu_<*Pm`}=jw;eH(YV1XT5nj0)Bl;2njh-_psC0> z;}?H1GIfA|;p=?fANbE21yHRP1^%JhoG%U!Al!jP`(+{)hJ-aR4zH75 z_R>jg>KR|h|KSUas0XR7dz-PqB;HBc0+!Pw-4Iwh(_!oOQs06Gr>FGoby{rVWJ7%0yaB?Ckwx*#d z`t7;Aea(zC;^xWmwn*TQ_1?o`jN+dEtdLI#=HHtb8T(`owK`>qm~60$jUJEB74jK1 ztB^F0g18?pn_)eYBKc78`7lqK?bi#0UFNKi?rcJ4R0UaF!B$CYH1R5MMUR=jB3>REosSZi5n z2aJAxt$+WxVJJf29M|Pb#%D>LoTAp*>Fc>>K*%BbPxvY^eP8xf2^k|p?8<);s2qxc z5H1{)0&OS>66zg>Pc!*J|cbBcLr&~yH%yQCHBkKry0TD)mz|BEJ2)7<=I-B2X>4Kw?w!P}-plv3#Y+cUoI<9+D@XY8{xt-7CbTrL zk|EjrI=_lsbe*_^RpfvDF?m7d4mlK*f->f#p)Z)JRHg<3e5)w*c2#xx`Yn2{c^Yq< zZzPhQ{8n8{*s8Eg#+I=4uqGx{st@wVz!#H}wv*hig-H4o0Wf7E%dubZW7ws*zNt9O z4~WEnNnqN7q4=F)F5NRU`Yv<|bOB0jM=9y3OSwGYN7C7tSih6B(#eCV$m??YecCI| z=KP9s1(``{aBuuE$>F+#nHnf37b~MFL6VV4dvrMG`6Hn>icMEiaUYTE+r*#7pbv$s zRh6L!nFI-L;(jCtzr7Il_6qz6Htl~$EXSu2Aa8C?SCb8ChRp!y`?5t){Ns90r6W(a zk-xFYU=v69N-7SC?`!keEM&5_6`M13?l?ZIP7w`nERlfVHC_zW*NJD4 z#w&e%i5T#NCD!1EW~}7Yq<;^F2vD?va{JRTqW8Pg5^0E>l|dA`v3$&`?XV;#6c7WM z1^KZy^t<|@KtF3fxG3h=;rVxZhzBc4$YzD=u?33R+z6$mR^a2xbre!mv5vEwbYbHO z?H~rUbY;z1nBWOQPC8apkvr1{e*c-w2{8P$?WWqyK&QlH>ta2?D0d=y@JHp=H$L^)gWnzlJ7mT1DDO6JAC&d= zgHu{8O2l^l#Ju3;s1&AK#oboBk{G%=&P@>|h#*n&XRD7gb`q@8-TGjTzWagpg+ZKKzZ-SjJluK)H64yjXlwlm2d4>_A{+ zBcS#-xg7%Nv-Zzw%Wl}ecjIfObCH2nZ+@;1BucvGo*`k3;%Q`!%^ncmS*$I7-;Nc( zo?~6@*Kd1Wgc-WNBOhw|#|H!Qd3B@L*0 zb_=z7T+iwSKC7pqOFq1WCE9jJ3gGiAupouQOdpesZe*bE?_4$FY3RdR@xA}ee0?=# z-3xAOZLs_v){R@6Nno^W%603~R15c6m!NrdU` zn$QT}(g2)|dyeo?&k=rGAK(*68nCr!v+y0s?=T1};Y!Ni{KEp_JHmseLbtkoaU z!33|r^@cT703R~Ef(o7-HG`>mUsB%$RL*B0F!>IiY}= zg3}r+T!$c@{2aU=FNrYD5gHD;C*nTpm6zkqzqtMmZTxrb*OA$2uoPlhMMa=(%j{aZ zgtkLxuk(Z#51KeV;##gM+kNx(1L4UoBiY)h;Ub*#m{6JiYD7m+xe7s3j9xbrpev#K z#sMQ3Fb)df!pNV*1-^^_+YPGi8khWL|AevTCDV`dTO~e>bM}yUhMp7XR4nc6#gwQo z6M*|EYYQHC{1ttF6qASP+F zLnZp`pAM!P>r*904?45R#N z_EU@0@Zs7^6noCjcAk?nK}oaG;Fq`-t3qwlQPQ+G%lE4rDXb>LqP0A(s2^Fq!MstTd=3eIi(HnMUDB=-~|K|Qn1Owof zupkm*A2|M_3^1(J(A?@z?6Wb-#jc_GEP;q^FZ~N0fyyHZRjR9cqHzG)dz_9C1qI|D zuB_HfIVY%R36=LbtG3I9M(_p;P$dFXJ{M<1xZnwYk!aSXTHAbA=l{pyyqe)$FB(zU z9^?4_>o^XjE=)WNq4Fe zwtgvrwkp}UR=)nPm6&B5#`VJWKw~zPy+ix^a{{zl2osEZh5m0gDEFIs9^U1rfaJ@Q zbQLIZYWZ()=;ZXz*?;6gCiBaH3QXf`;N&!NjE;lzq$1opi}P%psA^= z2emiv(i8f$TOb2VFEzzLAS5YJ&2-7O3wz~13ChKWo|E3s20lD55*-$c`T7cPY;Q~2 zyf>aA%D;rk_k#TRpso+QyK9LJTQ@H{*}wD}KZ=gaamf2NxxEY6hw2S~AuXN)BI`1~VE;?RNz;TRX11cS(b1rMl1 zR?j$SM&$Q@7H=6!HeHV|H|PKJqRVqVqgmbA$?RGA0s=4)?d#TR*NbG&Az|b>)?`Zj z$bMPsGtlv;VC4s>llE)3GodzrF2R8RUkL`P-pI3hTbRSs&*~{Y zS45H!w-5f;`BF6}Hy0LKl*xg8>i?H1z0^2>|35Vj=qQEHtMlu9<}usUa_A8O&`2Qk9;(wpU;UGUX#770rmL`O=F? z3LCVD+>08-Uu)m@#vpxai$J-hK9;x^@{P(l-uo^x<9IVABA7Z^d!*23zBmg$NV*y1 zQ3u89zFS}T@_Gr>K)HW8^Xp-dpK4$80~M?~repQG6g)XQ#@BxF0oOII^?dMfBU41= zg^9BYSu|zflNyy3@QZq_ys+Db%yd=x$_}xW`&@qypWFwYKszBptx9F7_JMpUbApv~ z#~Fds;P>*!ykGL0U6(A!Ej38gNt2^oe+-NrDPdlSlw9(OX}^1Av#5-AcXjH_vLVPy z907HzPNA4=;Ka!=AdT_^>hw*ovZev*1#jI*cLJjg03MF7ys;lmp-T=QNJK5F#BXKf z*H$7M0f`PAxYmkLPzoeu+%tM&_S-?&TVnpYJMKR2!0&hfI1u%~IaMO6-!n$pPE!4l zm}~gdHqKg1{EC6TGq-giH}3~eX4x+zv*Xl*a2j0XwO_fC%IXHNn67nB$~!@X-oKfn z^JrwTSrm4-!fW7aAd^C)Q|-FcAW41UarIzB*S0%%eI)%EkSD2w*(VjrR24sUk_3CH zSIhP%(h^Qyf<2}mJNy2y@pn0F%v~vx;ljQ)|0MD5uVYDRm*13f@w|3ItOQ;~Rah2? z^IENYu2t#_=c?3$dX~he;G87{;(Kk!T0}X}GTv&8Fp=agdCbFJuGy8QFR=5=$R6pC zi#RP#2_0=d4Kp*LPXhDFM7V3UKelMG;6YI@Ds%@GD`v(~1@nl0!^1mM)Pl#6M_i9d zy*c=H)w0vAz+{9ZvsF^c_MMnbB+Q=9(^@sKEm)>&JKHwk&mTMuRKgvh94ZK@Cn>p5 zZN|lkG8lY=6tM1{(_D{b5wMLwydYShW7F>PG2?3t_hiT`ml?B3Ilq8 zo~L(U5~A6WiGp>qEt0YZ3U~6fq_GdVS^;(lr*)W9`(I`7%mH0|x)(W1nH5bUTV#p? zs4K+pfFImzfy~&0<7zP!Yqauhxqpsx%STqeo@VfIsfK8-iR>*sjcia#5JmUiIuHL> zlj-hhzbo@64iRl3p0~MK7_DS@`0F&BoPaxMzO2|O7)vieK;?72f!|vl2DsAP%j4(@wr-tCI-&PpQx`=tx)Xxz0 zxr5Wj3gugGG5#7m+fqf!0Fa&DeAZC-MO92h;K`8OZZzOEkbck_zLPmOP zdVbqE?X8)$jHo#8Ma_StvTk4At>MzCbW%*^pG6mw>&@e`l&Fa^6_1}fVh)rQeR63Z z|B?y16=Y8+KXccnXfdsAZ=Od!{xQe5n4UZ|^s@2LA^Ke1zjE0E=S^6ZIv z!y1yb{oP-|sk5N>D2^Cb7u1^Yu>v@*hxn2*SAMe(?+%K6rkncs7f3gBI=0gH3#N#H z;djGpRjAq;lnUb6q+;^?d3e`gliRmPe3WRzck|mNSfk=}Y_tu0Jfx^g7~}D_JNVyY z-%G~u7QYu>_Ti}-aPXLV7(4Qgsd$?=V%9yxYPU#6kH zGSJ$u&4OnwT@v;}Z9im#uhAeT_4_`dfRB3c2j`Bj{plYa5T*pDP{bgerSO$%eX%eY zR?4iWCvdd*jl(dQcC0C|0=JYTIIC)HTfpBK*VM=hgHBT5WJiPFmp8F&*FUN%J`@pF ze3~8z3ab4J5^j>BnyTK-yfD$Rd9{Y(&KEBI?o!UWGM>K|qhz&)($ZMvgceis+7R*m zslZ-6C5dvSk$k2xO#J!P_cG&-cs4$XCKSM0@GJ>Lu;$JYnnAISL#q)0z+q}P1a#$d zg{?zz(PG{3pd&BZSe_gAFkFLRmzjNa10rP~7`v%fvqW%h%UbEuLCP1Kg%3_>5X1m2 zH*XyHkO+urM-cF6xf7UeafescmWkh3}3IG0>D&FnU>W}axt80ijpamIYA(-?gY{8t}>PjfeeaRi}wa*s1CU; zB$M3u)LRX-c)0|##$N@ogWe82b0WK3v4|kt?gVn1pCa|uZ(4L+>SIe0f}sZ(^0yjQ zS)9x%-wcz`(XpHGNvI2!V}=^8DwTgTWCBvH)?L&)$%&{rS5?}dRpZVeqEJD?#T@ao z|Ai7!i$kEOjnSLczt`*$NKm*Eux&dCj!w|@Pv`Tm2tu-Sowza|!W^}-jugA(GO%+S zybcMMMgbLL_voXUsTuxS_PD&2ZbtF?lAv=ZyOzK$#hjLU!pR;!Z(LygQR4HVo6J$6 zhGqkXBvx|G{$WrPp8?tL#G&}O7Ya)KiV%ez$Re&O7)}hQ8!L+q^~@~Ri%v(Cb0{EE zulH26n4)&933(KEGp3D$miuu5glouV&75<=TGs89uB6q4YyGf>^ZKJOWJ9*^S_Ya} zY>}MDIb7h}Ot)%ANgvgkZ(BI1D9+5bW_4)I;{@D}JW)V{5+-Y*xy9@ues*(Ww)2*z z-ei|_n@=C-vUXscbG2;OaoeYU2IWZ67D*2r4W0T}nsS$G?^&Qe39`$@4u17l3!P$Z z)A1}r{$4kp$QG;^2E4yOg!g)HxEcjLW)!L_$vQsq8I%_M%Mex z=kqDdk6T-b?|UFwx0dFZfR0u_QNCCz_47hIklU_^t_S?|mNBu8N2Q)mBp6VSE$3%Y z`@9>~aKYoDLBwn;;3S#+M$AGsQFqCz1D95?4Tw0k^x>5M6X!5 zwv|O(!L?>iW>B7?@xu@!m>iA#YMz>NdyziEV(BDR59#Z>1>1#ze+Z zO|YtHc>XcZnAk+iBF>`%HkN#00^HEReO zBFPQ7k?%#QnTOM9@~UgI=>bc85x0N6@R=PrLB1 zc7WMtLD%$bR%qEAqu9}!kJkAN(txP;Bx0&jzv)l#Mujy)P(qvgj;GK}jykp@AyXs_ z>Mb8{zf4Q9%mcDs;4H5OTOFSdmceUh^M zzqz<}w(VI2>j`hJyrbowa3hU@f*Z{FB6 zIM~i%>GTboEU|)@0W&Fg&cKaL(vgi5Lz;lOEFa{pU{DUIyruBXgr?Lxgpi*KpDQ80 zZU#=22`0WAu%3Tp$f6;BW!)b8X;hcDAf$5UeZ0-Ht^McG1@2j)v@RqGE*BYeYH;ks z!k@i2ui4qSEwqxDeuVyqde-h(K(bGKWMg*DId<7*hfvYCbZTf`6`0QB$uunJj`8*} z^(v=r^fY+)+{xV~47$UhncI2ielwHCWaTXxxC;}08bAjvj&G2M4EmXA7pZyu!Ip+} z`@7cFDeG!8+bOC1{fk3FVGEl$sL@EKVo}|EW9AEYrT(Sb*(4S{nfJ z<8CCgDf^Aro1Y)6$A4Kd*1h^<^?I82516F7Lr~`Rr|Dq?*6XoNSWQFCVBdVjOe$R5 zm~g2mHB!>O+_qeef_LpQpuXSEaZ<#!h73A4^I6)$R)zbSOVhs=X*ttgQy}vCl$~+| zJg>+eKS2}aF8RQ51iFVsU}O<;H+0uojV`4J6A0)zP(N-ljHWi%{cG5`OsrE|CXlUr*krcDg z+6H9#@8`^wRg_^=xVUgg$gEdxenm{PrK*=Pl*=;oXa{W8Pz!8YtUMnfmtrnTqRnc77@P{5a|pa3i6_x1aTSj7Mo z1Zu&Gwl*XyYnGf+ZmK~!EXj8?p8CH71q&ty!{{tuIdNRF+}3d96?|-oCIOqxOC36u z0?GtiM5#Pvm9th4dOwM+H#G;)R=>#54NaLMFM6cF>^;1b9Yg zh=X7C`ES9D-z+V1A~&)O1i?zjekNilXk6TJQ4S@o#hO47^j#I>Kg@InpWolaCnwPj zs`~8_9B9=bTvq6zh9YA{h+%L!I(9V|NCxR99IBD1(X)An)+6ld7QX>0lg>za(?@#y zB_Ywtt+OK0jm0{1XhYcSfbawWFiqSz3%Vw6;5dVWmIi}o8qcfGDHIeB>~QS!(>NLY za780+t+12W1wR z*RU(l<6qAe`)keTq6sIW1UdxmN^n_YZVWI>#wTyGu8?-q!MD)i+rXD7N6CegD1#Ap z4cki1ErNyj%g`PF_AENLIR~&~znSosX~`GB;-myn;$4Tp+>j`#-yy8i?0OjtBD1wd znrJo$XsXMzfl>{H;Op%KQCb@6*c0{n^|qi3sv=pj(xvZ2ovLvALF*2~ArW3{h=*Dv zV;`$&nt;J`<602T%phAxmz^7t`{+1GC2s$T6tAXd{1D>Rc3M@gOR%r&c?z8QuUD@!UkZs z{#LaGWyz;@t-0>!WG)^!VBs~*YfmXHYOqlJ=tSTzG^ImNc+{UBYLm?CExAIZDD`h- z@H@&>DyftHE8U2Y+kOL_bapmX6Lg;P?ZNs6ZsABj@^sM?t~XIrLm(iU?)cKm2tIEV zIH^N#W8A`@_=d1VbUywU0mM>%b*aGF`4xYknp;kyo~<0?M~>*iCO5l&GbPI&dDFsY zUtJBIdzlJ$R#CF{_8X*NmBve3j^{gB0QbI?FdTq>dFQ}IwT2Syey*wiEMYSdEKX-Q@gm{(WA*7{#5IO2l`Hf37BLxMjPK zlg32Iw*1dBfJS{7->P^xl^TB^8q{OR#ZvZ)SJhH#-=vF~F1oVGCq9nU0strG)9TZn zWV(>IcOwD_AS;dpRDQdFcs-Ww8~#)j)iGw?LfLb+I=4?@`nP0+B(T!Ge*8YQc%`gE z;NKCACyZ~?rnjm{HW@`it4;9ES?YNRVcnY<a=?Q7%m@}=SYXcLNtj$>)BWX~EaA8%lqsNYL zsGZz#MVl8WJl1@T-qpx(%-|H^{y;3v)>em724WNWj-5Q#;;xBBpX)!bT^0_u$bu8x z;jMw(x&5TeYr_3Qv?hqUz+?HoW{|O{bb7a^6bYS7*Jk^Za8GeT1RR_Hovp`3B;zWK zPSgP0r-T%w-N?vzSt4rQfkGhlCLlQ%X04>UQA-OU42ud&)A!ih;WCss%H@8?tKs_b zE|i{`bZP&5kxm#{4kK3oO5q`c@`um?+1{g76GG|n!kqCh9>4_Up*8dl!DvQn0LGAo zd42fx1d>irQuDkV@ZR!n|Bj}VD+jNbjnt)S>p_gk)-EH4UbTTwgt{NMu{hs1tW z^^H#wD6%u(8=x|bKus+CY+@W8aB^Iw3kQ)EJ2^eZKw#%e6T&v8Ya7{oq*-?Nw=2zc z>aX+XV~(APdth;`SO8=m8=?w4=~8&|q`cqEZD@WV90mWv0PM;uV;UT~ukb8?x0lk8 z;x~zB?SuRQS~})+niGr?3PvhVQL&5gy*+^e37<#bNZz?01ehKFfH$nrhUW#C(!egQ z8RO$g9Zh1QRm^*k!^#nkGMDz8<#8D=0crtR?!AOSiyjoC(7f7|hh3#=^kANz;v${x zsH=yMp00Jg*Ed z?xkk3bu2Bud>=5J`3>;S4m&w@Q(R9EPECWi}mz7&3z=%V)4lE!J+ zt!9s|B@tC-uf><9V*x$fDfNHFC1IfIm2P+qdo6ikHWwb!iicydR%H4f?1n+ZaW;A` z={D`$m|QAvD5NchTLU*gz8lr(Ozqa5q}t1^H$N{{gE=zKC~B1q*+M(lwU{IYq))kdo9da z1^D9S#7yvo&Gzp|Sm%Il%`f&b9iR!O0k0HOS+w7j;-M9Llx0AuSr+aUE7f=@H;?t9 zgAolRLzv9YYlntQQ!0F?sJnE6wAS**Nvqw1i(INqi2@D>7ViQPtw#)&6e*Sh{ey$Z z1gU64Z%i+201UqQXb8RkHT;2Y9onCyBt(Efz`&0C*apcW%qNskarjv6tkOt^B12_7=>gW#L>&c7Y-fj7BAg zaQr{)Q4dzWqtze3MdJF#4BXGOHaZCLOj*dRM?q{xP3w<$-Tl4B>j1v;R{o$LL?g5ZL_=5J^ro;K0V3m$78)krt zaem)bxV=6fx<@}SV>)`2NObl; zRo{rx(Rq_tUzPNwcI?3+_KR@Aya|AJ2mP_9M*)UjH^W2osj=7&dTpz1CfQU(v9NFSr%WxjGt76^35b zf<=@cz1*fGf(w3?m+-YlXNJQ!n+Hag{EwjGmFowZ^d>7RX>Tw_(|OSzZmicXG-p<&w%=d>q(}`_qq@CfWnG=#h6c4Vl>uYZ z_B)N4w^@w~dwDrsHL!p?OJ!N*467 z5Ivx>yZ#o;ghPOcE_GBR2>TP##(Y;%FC`78B-~^)nriN^=Db0Sm|)2B*>8iUocXn= zl0>hJIlb=K>j8Dw3?q!tb9FK3HC!+7E6P7Q#j8uBig$+!@o$)1kb`8n0NvlD%glOp zwAvf;0T4KSfkRl33BzTu_0tNQ$I%@2YKCSuCaXqysL=7fovdCp2Iz1B<7dYBC&li- zFr>2@HRZJ*Y8A}qc|e4Bh$vDU62w6){IaQE>X{1Rj}J7>&9ADD+HiRkoT-ps(zc_+4W<)|lqb|~1E`3(_eX;P4On0~MjtDUT#Z!P{~sGjl+tz2}FHGv5@7P7qEsl9zKL&r4P zLEDn=H0#n5*Koo;?i{zNlJ+&)DdkX%`_lq`0Ga%BGOQKuP~+}37se3fL&{%y zY<%0NVP{8G%w!4>eYz@hm{$L8G*`pxFgs>%RZn&Q@Ke+1Fg<33vKX7+{fMXW@pg6T zLI)kRK4-i!$AAF($i!vDt~#435V!=ZWYylrf*LhAz^>R*fUB0ns*l(_sX!gA0t1{3 zwd&wO@lm7!2s^CD-~_L%Tf%C#7U2~}!tb$!R16ImheWq0_F8Z@PpU9Ez_EI#w`Won z>>Fu!KyH*{#V`lEHmc*ldXI8IIlP}F_*G!11QL3btc;PFqjvI+Io!u|d$(%~c0I3) zV2|uw`gtwRU-KRYiLbq<=1U}trKw9E(N_g_7OhRFBceS3dDAT5`1n;DlCUor1dc~{|+cof7Sdb zrtQyP_RTvYLpptgQw*zHi3(fP>l_<)NDRG$(!(gh7s~kZgGnH8hFrF=`2#z$jaOGI zA>Ywtv`w9XO(|8|*_y;0UZ);*>ECb?Fo`iSSNgzQf zEG6(sC=iROq+h!l>x7U%KTQq`o}KAVRK+#whM*v3iz^N(T?c&Peyxd-NyOk~p3 zYyr;Vhb0DYBmphD5WY)^zmp(yOBH@+)14O{=U-`6O2&WEwsQ^ZmG54ud?ZFL zG*J?Y=#UKxAY9ZD7@czyVm+zjZjb^=cl`aqG9avqp{aMq3gGvk{Tg>~jl60xYAi(r z2(p{UI#_|#eN!Pm4&$>xVg!X}}=%;s=b<^K7(M9|8=W@IQ$18I6x z1-P$ee$?IQxK&Vg2%uz$Q7-w*8H4RuxYFqJFa|)LlSJatjn$89!zlE|5{k3#b2?Xa zS@}41_!GI72vRgkiRJ$E=aiw)`(Of*|D7OeW#fUKtZXf@mP@v>`fhkoP-0F7^rtX{ z#>RQUB40Y0EWQQ_#&--LP~%51!3vwpGJ@bWy{P=r=*HC7auV32k6g{9P7s|6yFFi- zIJD;KQh7?1n@HX4h*z{Y6!q@-+qDu}IeZl9{N(Um^-4U-MN>l!AvKS6X)e_e>v+Xq zlw7No6mN1Wx2*`o@RePY)G0)sxb-5H2;n>BmbqYGD+r&W{U7)Ry_+sK#C2L2 z67LfdaFw+-!nW&AYl16p_v1obJfi8g@s!HLk)lEFpFSaZMibf#s74ahi}1Elf9_8 zt9RniWr);&zj<=u?T-N8H`HLZR!yOQ9*NO~^XgtDYdO*gi1w>qx6R5^t+^*z%i{nQ z<9Fa$)Q>l$@o%5lnuTxkR{zL<6!Y?uOLeW%2%h*ojtQDHGdAu+HM}39wld{FDy-%W|?&1q+lEy+$ z)7D%!U`1-Oif=OqTa?4ke)8>MJ^qdZ8O9-JAduBIYo|7ilmIhVl?Oi{4@E>eXtq|9 zD}46j%Jg4rKpc)R5za&1`$4}7gF_&EyCND)vC!6W5#wcqa)l5PLzDAYysjNdE{b*S zRhSzU?-s`O->f(k{zRZji&^>w*I9Xad4N(%JFE;AdpK_Qg^JNBxdCPh zc>`gXC!KdDWIy{H2&`JuhMq4cjxggigEvU4Bce+F%39iD9`sIk?S6GU3+m4(Gm$+M zz1#)y-%c897g4W8bTT>M*CRnH+b?Vy&$(|dXIdvp&#^^L5DE(Zh~;wNakTm%VUW$# z@}B%;H0WGKH$++*8_jx+Y1jD8QvQ<=4N`tiA?993PmGdKtaCuLqyA)d4U$Y+u|t4P z{x*T7JMSi~=KfVM)fzo)FwOX%^4Akfwrm_TR(8g@npNVZY3(%I0Ly6HKt*;~qN0q% zuD3cnw1|mula!F_Fd4wC1agBYm@|*k7h)*lyXTBC!j( z6)A9x>l|ny!v)}8q}?{N%gi^c>Mp?CVI|WvDla5$a==~YSs#5{XZ&lxjl|J(-{R2s zc{}Px=4cf)xdp36>|u-Q=}Jg1;?@?x>jWtHgHG|8^0Q6BW({S9OfS9P?{6lYnZkE? zjhlDvjv-Ne*7;NP(bIjHtVX>xsktY=`~YuD_#k9LVmf&QxRLQ|gWMZh*Ya&EZiZU7SL(d81tBb7$`-{G(%Ms54uDRTG7@I@AzxL*)$2x$!f_Z4bc6xyV6 z3{c8BqUQDjUuCDr(1Yfjf??KiF4h{?_jW?YL9qFkLXSVsbzuz5JM5rP?=R`WYH6v+ zPr*d_HE=$2!Tnnpc0EU#xwR-$1V;LL31Y_>lvq3NP?Qi4S2BWP0@@9 zze5SR+>lj>P!^Vxa`?F8o|?c0hP&2~e@s z=f(0kTkB0d4u%Z#jG4w!3Zc##p5*|l$1gj&8#;zb@YC74M))3y4_3&22(9e=m0Ycg zd*ay<8Tyw90F)|S_GHmxF)VV{KJq@&G38O_t;#YIcYk_cPk4Y&V6ON;EMUk|FN{cKcksVv_~i~>O^9}sl8 zU2KBuu=w_S6I$kzpK!ICovG-GN)GUh$$m>Rn$I&PYAB|OiDdh`$%f>>pqW7NaG8Da zHV+@~Kv1=aG)V7?)Lqu;c9e+j*v@69+^mE-C|0XN)~a-AWP^kta5Q}N18gzcJx*bc zY)~mij@Z-SU};W4IptB?w&BiY$`%Pwd`#TyET$OzFh2`E>1gY+jqQ-KPkd*Jx+834 zV}n7???F)X{*FPfr;1vPX56P zmQK|1MwiBKStBm*V54Ty>8~GPNvq1}f`^V3) zXH}J@mMSNq!{y0DNQPQSRl@CUO&rS>PY7R3HolSsCM=f^>0t6RS4+^x;+)||^$2-7 zX{sXQhd{*nn!cjEn%A$y*>=OhVD~*!_#LN=7YV=e9s?2|1y+sKDEtum$#`|~|Ly{W zuF5Fyih2MugEb198i^(XawVms1cLyuCQaT~U4IbKSCg@KM-lH4=xCB|tI+(x(jV!f<(I#*@H>%jN6}DQmL(pU2gpjm3+3g=91W(e+skG>n;hrUxg6E&zx!M_SCAQBqgM9!3lqAFGTA2 zgKgukqy#ISz3m#CJ{ji!`~&E5Wth$#X`y8s;?&))bs-2I|5{07J?W(;p@5#q&Z?zo z6Kr2Lg@=*4;8D1_{&=Gs)^AHx@~a6{$pc|Af|NZ-A`>B(4XT)8MCRwlT zb@Bb23;PHAR@Q3&@jn$?B2Fs#0}iQAC*da-WOg{kDXUl8Pp8BlPt%&Y7@Z8f?3gv< zw8@YYJjpYVS|1PJR}6MxM347epz`R>hu5P**pKUsqJfW+VY0J==~W^9R1(!*r1^6d zhTq_~kWJZg6PFeJk(Bjdswc`C>kHi< ztE8=G&PRD$O?9FAig z>@l0dUhVbQ`1j3jv9jwPLC>GeS_|l1BduVR`W;&l2}ODxuRTZT@7?pn>|DS9#Ka1W zj?IrjD&Ht-Alk;O(5*p;wOv5M1%%L0vMVK|acD=lBnz>yBKnkcmbiYKn*+jabB%PJ zhsE{&Jl?bx%4w4e%3*fx88R$h2|BgtVp zI07l>+o06cSI73|f}I69)+=vwNVbMNmNy*j@f;CkXDJ zpRVdGW;G1tN1)>pmE|eGDxz7sm2zW2(^q#Dc%Oa2o+ff8=lJ8xO3~Der~3a#)HR03 z6>aUtwvCBx8xz~M(v$4@MPA0b5*hynIP8y@J@lEf2zUTg$`E}0OUVFV*I%)kj z6J!!D*9I^+ZpFXINe%{dt*f5oQu{ocQnZVP$hiKt7fkfI40>7ryPs=;iO(B261X7H zxVfcJJH6}_i(jR*i{)onVvWm%0Gs$wV@X(8CYg(L zlDgw0n|$8qG@>-SrRs|fZ_;g8OwXI85@w*1I7YDy+F{b3Pal@b=Cb1lg1eYPC~MpN z2`?YXq0n2w7?W`TLf=uicF-)}1+Q`8aLq@=c}EeGbTMBflQzainAT9_Zy-gh0y|rO zT+a)MV$Ts}ndD5Agzl^XzkW!!*hBL)oBH}rj^NNcA2eYmmXvDhY$vax(1T${)J=pB zBX5T=pN%a}$GFkgo5{owZPJJSY?)b~ri-@+Gfw>kM0R_UeHphbciF%1U?dbfte_lT zFUdB%@EqXY!zj+%$;dXDgP&@4Jb)%iS?yJ{9pmI?o?o+ZjNB?GEF#-wmDu$bd*#z%@7z}3$8=}VCkJ=TrT##^Q@U?;Jyq8}jk7DMm z7v6RC?PWl-iA_l|C`!hQ_xBQIonPdqMhL)IQt{5}{saZgjDM9a zDS%pDGmOMVI&LVGWC$Ad)~+(aFzv65c1_4;7lqUVa>#H=83s1PmS{1XN!dn5hC`@= zmX(p$cZQ=hPW+O|pNPst{7QQ6*+^G&Kdjp>(6-)8R$lipWfdiYw3kFTatk*u1EK%o z>`Svb?S8$yLkdJ^GvviUFLpZ_wB~F2D@n)5AA)gg4%2k}RkdGm3fg950uu4pHZp_? zZ9r3-m8q1K4IknjQb^1cqPxaFgso))F8=qm1H*P*kEZ{Pry$5yz;_&J`<*uz;rPhi zl3CyH??><8X6Phs$!v9|=Re@b@9t}`8k=g7M)m#o-i@Ai43=(NVd+3HoFYi+7~_N?ptRM%AUX84=Nx*QQu|uyG5Uk2t&#ndRj&j4?@l?_uzImEc{V zfeK%`)ggGJPlUo?#_GCHr~dXsg4H42*H5O{2mM%d!T95pNJ zRA|_T3!ouZ(y0tr_H6!r%2%e1jx3YyMK~Osq09RaQ3LQATj~-`GX84}I{d>|x0}@Tx zPmm>%kG~B|;HvDqi}?1k348#Ao)H%;;4d&*@4*WKTH4+?iF|YI&TnZ_?-3wk2`(LCNfs`q>~Z+-1!Uh>3QnLlNeu zJu-^f42z`cO-#0a}adUN?>Tii^Vxo=&PFa3=> zbw(`o1BvB{J{DhCvZ>iKr-^)V@xfhmCP+ig7?Sb3FjQwtt#}NzkE(92vxuQHGcGVT z6QS|YIKgf1?8u|TBr}cu~DlXb|T?F_^wL@HBdxx91eua72nkV{FWyS7#_!%{R=o7)j zbtOjvUaSVKi0jKKH(7-+?gX&P4J&NV%T5vQERgX~53BqHA- zLxS%k4fk+#shHavSp-l}`zp=Mva3%4$(W(I_YLq_t-Q86c%tSR2bqvVPS4Hplik9h z;dMqILHu4e2(@P83XpG2xKMstC@-#%5fAk;pgDsu_*CrPgpYd{)l)(bZAlitM`suBC!dTJn?wv86;YLtP|ySTP~usp z!SO3#R;A*|=N2hs+#V~v2sImkgqu66dY60>dN_l-TBQdH>3-P`jbj2D6C6dFSAN-?)_7QlT7{?ODl9Q88V&6r?8nlJ z4T#4DSvH+OyOz)0D3xUgw(p^?#N2%6&{TyvcRiFu(!%)$O~z{zU+0*_xPb|H4DlXg zh5S^;9i!PrWB|?P$QPPq)ANI84`4=8QEnIH4>vJn^31Zf&{8DJ%ljOD84}<3BzlC( z>vF`@cK`9F-WwCJh6f+LevzhGRub<#R-YPwrhyqmcfDJYKn551WE~l!FuX>tpF9Xz zJLfy)(4EAFU;b6LAzehbqwNkC!0b(;zchL>{$D|{QL)%)@GL?gziJWxbTt8=fMzzD zn^Pz1fguT@TAJ}wt<277!yOw#C+qESRAanO%r3pnn~ZjA)H6FiOt%nx>~Cag1|&l4 zLE5GMp4=zl+l!P%t>xl0XRwdey8rT?s>^yisT>=O1>3bYz4JNNeKsW_)$UP(gz3EL zG)8_9Y#{bH(FYD_DDvQ<&FJ{2EBR4DyZ9-(vT@sAkx0o2^gc|ZO&?Q*8qF&{)}xD0 zxPY7%7*XB$z}MHqI*Uod$RW48PswxC-k@;v@S(_F_=4D8*|5_RwrRxCpG+3dEr54( z(ukF`sm47;S{;Eisuwh!ZHWq79I1&U80p{r=Fm*&rAIRD^c=~$3`mVm*L&J zf)Eglv6!ZR%Wjxb-rGN$=|MN4 zqvokaxK=2ZC^K$Kxj#=?Ab`+XKBkp;QPm8Lp;xx-g>}1YV0gC19U3TW#qc|WF&Q7l zW3nAs(H-%vo-s$Kb4n~m?V_H6j;<=H4;LO=GYFOcFA$Cry`RB1si|}@pJ=}?RK~Rb z7;nI1`9m{^1EQ6GWc2f$-KpEEu=8Zj_iv48oBoj33AO0ju7S-a_XuhMzD9s^d%LSV zbXjE{Ojg{>o8*MwPV93XoW#wKp40!K5eU+Q5s{ihB1*%UiDr%8%*xhBQ(CIhBGZ$> z`dBX5DH)%ZML!O457%;O9gUlDjlGYi(KWQ-IG<59(kXRNnZrO2$>2?-d3Iby)L}8Z z(0VNgcNWnaBsWUZL_KIDp{OZQscr+-XPp1Zq$L(~hqvC@Evb?@5SEoH2H!^Ei8vD7{V%dkGd5;3*oxHNc8@F7%YW(C4rqOnV?72%=n(w8y5?+E@g&A&;4 z`rLnTfhb$B6BT<4g_!W+}I+a^oy$va!;!JS|`2Oi6${BA}9I~!JJXXArsH*|T>-_1M-&QY%4=XKqJ>1%e)knzA@ zIS`G3-jbbZrPK)LPp(KzJ}1;GU0*l{fxy16P(X1{^Jqf*mB1=4gHJMlsl%uIzNg#H z>5bGpx+~dOEtWqG4wZ-*D%w}xSc3bSMa3X?A)5$->Y(8Hx8}>(v!to}Y2X{4;`{IA z{2EwhSX+phP{l9ZUxXdlo{_70`v1*KOZK@?qd+a31x=lS-dWHNT!JtSc?4|sf&Yr) zG&HCOG-OK@oFuPdkoTHFy8q=~OQ+AObqm#(E%xDsk2bn+POZ&}M7NJ{g#mv~waf_K z&MgJoJw4g!U%9=|f*9{?JRLnkWlpk)>O> ziC5%%_8vQ~?$+Vp3qASDUW8-iWUU~^ABw-% zW1Zt>7c^86^VI4?Ip8tlh)E5}#i<0fzX8P=sx{2gR74#OVURGvoK(n%-3xf2B{ijk zngI`(H+OffEy{8*mq?U~znvMX@yb#KG^eBEg#@`a4I4&c9I$k0u^@P;i_S?;3|l5;Vctn3I&P`Qq$;{o(4CRhKorjzl>~n4a7G) z429IEl0snUWdp%-6;9SJ>~G46F^)BU2LvmzOJ%yhh>#d=RGmLyW_ENO(5vQ_LJh&8 zYd}i&l|Yp3`2sFw6pFeDf^5a1ZJVl(Lic6g0kiK;*77^_RL{0R6XjxlF)ZHe@aO3Z z<~r9W1DDO^n&GlgfY5-?gkv_YJuCT~lTQTdMM$v%Zts~J%Qv&qIJ~EY9d-Pqq}j{k zieV!(H&Ve8wDVv}4 zz+M_JjfaGkSCeXVj{dEzUR@m?n;F6rWw{vh&K-oqMqIUH_DsHaO1ihxcmpxY|;kVF5?-n2@}v!((|DD(3TF&{82o@Q%R>h zwcCB&zVASU{5Nd8Dqc{avPfMpHSYb;b ze}?(`_42*vgSpq?Jxxc#S~>o41F0iy2q6K)56qe+#Eub@j_Fd)6vQjZ4eV~dJWZb# z!9wc6bzJ!*2|t=y7u|k{J9Z-9TE4!s-TVgF8`lZtcX3L}9Qdv+LkRrF;(OrsU! z#^p=rT9?t$XmaCGIT&`p%c6iaT0b)R(IZc7TB;BvwRSmwRh^kc5{wp%{yFuVAKSQS z(&G{nw+IFYrb`?qG)UKw*x6D&U3XxxzIoR5)|dl)ba$wCVBya~#*9Vr^L?^=nLq?j zZDYwA_kMlLpoE__pV8-*aB?7x=3($P_tEld7r=h9q5-K!(o%UoU<84|FRy>+8u;u5=bIq)Bvr#Ls`d_F?q5TZX*xJSEO2NKz2Vq-x2n|8&t=XSpM>5{%SCLzxi=v^`Opz0~}} zZiI#uY3RWlDB54+o=ZY29h8KqTwN`u9SJkQ_{mOOvcxJ0+mHeRz`=ltN<12REg!@= zl?@}<;vBZV{sv}ShZk&U>_{0?VB=Yk$02Bh-`So$+TjCI1_#hR}KK-wh%CVaM_C`*%ZM zqFv5Ge1>7%7@+Cd`bu2pkRjX2)t>>vnxH#+oIYx#2Q|`CmoH1^uit~x^P}cV2mGLm z?BGS}y+uB!l8P($&4Lm`V>;*3zh@ySpx34MJdhIqZbbtWOZSbQIUXgX7kWc;dH^u* z8l6RJJYrKNtOpxF;Pm4euiUY7cG!gp&P_~<;WXg(7vAIF&ZAe|w!{!_9_R5t8 zr1A6pRM_n;bZi&_0@(SOSX3?KWp61ksuG6)!|n z==LH9#@}tu#YuzezQ>2pqk{Mv3GvIOIWscp9MN#xa9NspL*j(+v@67dZjrSne}Il! z7s|wG1GP=lUHanL6SB;t{2<&vIw%oNZ<+gaRGB+-oZtMgpRmf`#<<={p1t#|uSIL; z$PfOfWN6~*o+Y31*Ef83Mr-`*?Dk7l^`cpvGLZX_!Y62A;*Ul4n1ay8D`um^M%I?7 z^pG16F_33z=3E{XSIRA=X~jOE52c=fnJt*{xW#otbgF>{-5tKrCbH4f!+p$m_4lhZ zO55NFTAuVns$=e0b)p}DXyP);ZFhv($}DpNHcX1m=nUR^g{QZ&Egu_cm)VDx{{c@0 zhJaLblZHW++1>X@%DG|G@RAB!0Yvxbzo`wcIoO4~1R&A-Vseor)J_?`bju}$urSQm zB>`aEb9`r|6BkPpv|!I!TAhXv>BJu8`R70DoZF z>})+g(j9FuqJj-oDTJ9(B_jcBJIXKh_PMaKkWKb(4Wb9ENJ|acuXEsa_mfo&4lMGCnl}p)Cs*#|FpS>X@FkC^4%|de% zs)m?=dwg1fZ;$*HKgO*InBPp7yq>rIjnXTiItV09e~rTKyou-z$0i@C5Rq||UaN&& zrUFhRSGxIe*H}=&#wep>f{X@2iVl@^-QwL{cLV4**5GX!*y&G^D~W^S${cujKd1h8-_WvwSuM`!(VZ`%&4GUGwFOEaZQOWy?iVvlXtW zV2aoQOozwRKGwt6E1}_g(K#akEoWncyl~%H&sLiuDd;ea{?HLpT=Z{XwBeuEiPI;h zN-f!jaNr~kG&v+?Wn00d6b$dX3*N2z5myE<-eZmKY*~?c{T!0zMH;{`Df}0|s3Asz zF?1eM@SwanzN~0XAMDt!jTv5o$VBwqc4y<_ssy2>?}fk%D;avn5t>>VPKgJct_wrsRzxosQf<_uqPosq; zn!u?O^bmq)8RzH9nT@#hGemS-_oF?{umZ)VKU4+Ow8^l!?o}apzQ|QoIN!U&c zJC;rvlIz3o({>Ikv^__Z1!%#z7RC>M+N?s`XOtMk?=3nVF#WUPoUCq=^0~a4VceeT zIT8Y!hix?-Bz8)?>PLlV(%iK~$*ylmeS0hjQPZ{KCB8vy9B?7R7vRpwLP|_qt@`*8 z{Dw8#fzOyf>Vs-msP^{jV!wflhup3KYv&=1S@BlO3L(YG)AiJmtxyO|`#8b%LkHg& zo5Ua>fbM>DVP{T`>~q{|t()kfAX`5-UIu!DUy_&xaDD$I@}wj+rr5_Z;>)$x8JVk)X3PjL4kBo2DBfo~%+M)Mc`^@3Cxsm~0} zOwAP@jl3vdIP|lOG%SYWQ3R8`LQ;tBl`V zl=TqxQTL>HtB2d`_xGt?PX4H^G};hprjvyj>(N7oj7G2aI8y@iVz6r5a2KMcSUJD@ zD{9M7Bz=Brs3? ze;ATM`J|U4rr2#Z;Q)L!-3uz@38g?m`+q69`<05G3I$~p)Jevry#P~v-<-c9nIcg+mkoWCgH_8U-7zuo z)6yg-=fbWrI5?${Qg>C=dYz=`&fW5@r3h(yG&bZ}x&HUVCU zaR$4}U4+;QNRKB_`Ex2F&*-&fV79P{LY&8DT8L@AHxiayE~?9A1^^=QTo?vhk1z!% z5u*$AmCPDRbrvS2!6q!b?0wCSq_LKwakHwP#(1hAhl?A}&mU@H!?=y~Tl|zMqOo#e zNsMo^C(2J^^0|#wB2BApW>&P37%VR|JKwuYH0<1(-NO18f$>GzvL_>(Rx-r-a2?9r zV?@EvVFCgQEEfF$1qlpXPzHEeTj5jMMmOkmLA(;E^S=0d6 zhkB`YJV!p~8U@0r2*DASz&R|lbuouN#m}fvt5SntuZ8a!+1WDY!(Ym`<~KjN5#GGb z+V^TxE5F^(FkGT^=IWgLdY1*AX;H*1)K4A1tpfKCXxGO%Ht`sTJolNZ> zpaqMR!z|aNkozdE8&?$WFw{`fh=1JAPW<)G@co}RrhZ`%4A8aEdE}P|e2W+=8%Hi6 zZu+kTUw=f9OF@hTo`A(CbJ2(2WdBK~^ayEj?J83OP%Ldetx*ol6ga*`P{06%4fpP894W3dXZ|b#;86gIY91UU@ zJ8aVl3!uWPVGDG5K>p_t!|#WQEu=J;t_zQk6gw1rEX9GTn&wC z8(hr=Q)d11ky#ySnZ8?6k=`dIMLs#>&OhZz)%>DS>xY;wJ^K=+NF2uTWYPg!H&^ai$InZdMRd2Wns4x>}oc5|@|&`x=ItO6nLiOXv}FTX}B9&x6#! z{3w?>bDDR?jS~r&Sg=vG&E;r2*tJ~?f++Ur9vB+JvhL%o7u{~)Wp&6o(rB22Bs0sW z7C`k)JKptlp%1)5h7(yF(`KdxhVdf z#r_!>_O7>zrTUp!zqdoj%z+C_TSPE`<0e%Q=sBBxdY;`V5_f9z92A4C<@(nKdB2-T zELar|6xQbM2g+JF{yb{>hxzLTB4W3gHXaVYqKWbY)r3*CMgEkzL$EgNS1y$`^GW>GFFJC=4zFSSmziFK!IzV-ueHP?q+-tSqIhYX z;2>rr50#HlZ-AYlv|C2Pe#<&ODG`g(ZZDKJ1RZyJPH*lU0w_fyC96iuuIwxiF;WzWq zWrS6vECqzDRX?O;6{0XG)~z~EHLaXoei_X@A-;Qbgl58^Z7WC zf|WT|mV77CwCIOph+(CW-7gpEI~{hXCy5(lCM@BD!1?SB()e$KrIHNN1)QYX*A^oK zv$GZQD+_^+-uE@i40jDUmBo#|k)M;g@#~F~mc`mYF(-&e8&5xz4DP?B$jn<3Pv0cN_+igd09paqg4Qs@_QBxY%B#{y+N zxT=CC2$^ebsvC4CkAt5y7A_Z`xL_2XdD-!Chhd>XU%)ZR$qIrTX6&C#vHK3`_(Mnn z52*xoX6oN70h+oA$bB+%f*9(VWQgRaD&#oD@Qqk#IN83j+D9 z9-oF;^UI2eg;T&*7PgLDrn1T>asKT$6PjD9F@SZB452T6wvia-#e5AXAA{>q9b03q zdvo&4-x@D`6JXKJV8t9&olm%5Gj2TG2@m*ItN~~`{2F*U-3)MPbU7i+ZImMB`f3kW33almu|e;cW$C2Nf|Oaj6u36 zbPl;o4o_MNrZ@^lHJFx8$zSAZIRZtx4;F1OWG;(~LKg3M&R6Mg)}Nk-tei<}EO;8C z2BM3f5s7ENcsUO{1>L5*4mX`KR#CM4e!wfeKLoWLBtGTz7DWU!7~<< zN%`Rrqey`7Cg{9D!%a7-*~^+otLauwN2leK;hA~p@B2$$B&A4 zOTl80_(sR&%^mYjqrkx>Ew7*a=_f1trzBG0>6=Neud$g4m81+X0alZFhu`*^om;hd zMif(-MrNnY?qb>6Co5JZ(0L8&l3$MT%;mPZLTr9lO;wwy1m|T%7Ua%d=HD1`AN1<# zM5>9WpYL|V8|Q|habl6E#>A?U&Q)~DRZ%(cdfy+`L(B_~??N&i#y3h*^pQp)KTsx@ zbSW!lk1%-KQ1Vrnh3sz}{S|BM%h)uc!L(|w{ZXao57mSW(Bl!`IX;eWJkG zA+}AhlONe06SZMdZwRgx2*2(GeT@l_hLvx%^13g78x?rrZP36(>XiV=62q41~Vu#rY)NhgQ(#iQ|*H%T-aTkr{Xfclk`4^Hdn2G367VT^)o(f1pE z!){LkJNk0!K(uh#2d7rQsg$MV>zfA|e$l{GG&BI*RO26Zml;lC{SRtnemR#f9vYJ< z-Wos1-86+ChJSJ6GAQJi$4|OBQ0Q?k8)u+$V_{<1splDBmO;v5`qn9i3AIC!@EXiW zJ_}scQwlSzEsq>71SI)7VG%S?DZV=6QA*1l+wnOSDM}4=qY5-q`>x8Bi&AoN zX;_tTKj~jQrCMd+iB4v5E(lK8Wz3Tm=gi}rm53{nRU~jTYJ70Oy&cgy4Up(gk>F5v zHDB|&RVOQdzUe08wlBddHH1w&e86SZtOgZ$sw_>{u0KZdPRWXS4$6G0b^SJ%w;=I|LVq-SA-PGMaMq(5TR9y`Kxq2=n2(? z?pkHPg^Q)bg^}W(xIYLsnEZM&lZShnk-4B)?W?OE! zjp9{f+BkbORZ>nmq~kQ3w@AR%wxZnb5Wc2wh+UPPW~1a`K`B)pp`@*Z5n5+hT@Ks$ zV;@G$|4VZ$91*gW1fnul?YQ-<`y7500R}>RJ6>}8b!Y3#{v)bo(V$umFny^_ED6JH zRA@Q4=?wS##5Y&=#_@F*A}eZVMsmiYY{Ta+D`VpuIqrx>bzGYti|m5MCG3+USq@%5QWnq4@;Q&tTDdRG~HPKLt`q^S-fAm7Y_!pO{E#VjiQd#%0=M zYEbv^)T`16(!`Z4%B%fe!M!i^_(@*bNUnk#o54K5MF+>+jCDj%{AzLfL^HpI3%#y* zqQuJOk$EQcdxA;}7D@m?!YVxA7apR~b7~8PyShYyD$BaV8Yu&=cNf*71 z8k)+&U4d;(IV1?Y+TbC}m{MY+Y6u~Wl1PxKVL|iQjPyAz0V>BWXP)G*f7HRl@SpcUi031dlm970RxDf( zAy-v|zQzEMs_1*-VQKLj{_lH;QNb@m<+XC{3kg!fpd+`SV($DLU58Bb-*)}`9@NmF zL_ow3hIUo)-UE2q;n9P{@u2@TeR~uhp5OJ)YKj9MbaZ^seCpNLHIEzBsiw@<{oOEW zGUIq`=nG9)fJmc53l_bm(y*_6p-p z$lqQy3H*)efD3&@L&HI{H0SVh3>R0={zv+R?U%0(^`{A-%lm7!7VQOQ@=>^e0Ap~4 zfkJ48Xv9Kd+JB!e#*P6V5XDdXF5=ZDx?;;6GJ?D~sjtr|2F`qdFEY-0}Zbw?(zMIeIoKrNzLy?R26qrKN^nS25>(R}sbD!8xa3>V-DykT!~_yX zQi1Jk2gEqc^KRwz_np@t-usHyHZ~Oe)WM?~gy)B#cX)PJF3z{Z(?KS=w ztpge^CiL0!EJ{AEPh_vY5b7z7J0}MDSnSWwF+(f$=WHS4;W#n)9_Nejn<5vF ze>-n5w(+1=#0lPmQ(?>M=PS4D(xVgKc%- z#z&#o7!=+wckM1-ocTW0omZn+)$HfZ?QA87`TZL^wp+yz{Q#&Wr5|AyGSg-|ygl@^ z>3`er-_kBWS!KLVJdxA0<1hw9_3gabT+Q`7o73|DB+~v{%oLV2&KC&6=S`?dn*;yN~LkYdv( zrYGT*Y2r+Vrua53%k*Le;Hi4TLLpolhN^Y|5sxhi32kT%f7$$AxpQz4<%0qmMYZo^ z?G0l5zFX%y#*-}&5T1?3n`Yxmh6j9f){ySfzHqR^R}rrxxV0x51;0C0@%pV8dDDmVbQTREVV7xs08-e89~vLWpBtdTh2GD0MSnhWZInyIq- z+;px<)>FM1ANrEex3(RHWK&DQKO6Za1iNq<( zDohSPj;Ua(#W2qV45d3d%Y0Z4`k*j^v^qOn9$Ww+Kk-MrnH{d~jW?^xxz-gkQR-y^LuZb5lZrC;iqH&P_9 z49L~BPUPgAPf8_DU{VJ@5<+7CNUpa0w?Q^Mjvs}H*#Wj^25oVYveFbA zuqLrND`*D1A5l+ROlqub0rX!qw^9mSSXF$Gi2~Qee?Wg2(jOAcb=>OOUvZg0QTG4cHBt~C$W zfB_?h{vf|-l=$8p&x-eb|0lX0dp1?pjoOsxAXB;Hd;v?vQk59hDi(|8i|5Wdca?Dm ziH(Yh#?6Jqbb<(!zUp}q8M27+EfXmAKFLk@>68a?N_C?MX>n-wLtkoH`_2uPkd}gl zAO_E=Ft#{7E!C-TD0{@5c=IvXKC-0u_sz7j46s8j3A<}4?c@A>A4$borODpld#)tT z7>i+9`#4OMF0rIXJ&?O+x@(;z;Jv+Jb-ze=rR8ZGg>#golUI6?Fe&5ez|Z@ucV&=r z+DXzl&-%Jty9tHzrOb_l z;7~#PLHJzT`5Fqjq|EKnf|SQl4&f10BdYcgqH!5mvr)GkcDG@#RAzyK=tJRSs}lFk zR5|bWG*Uu#b*W!cu{2qcvrABA8m+LTfgMobsyP^qc4Y6reWN+lmE{p<>-2Dv|8h@x zDIX{5xNf1+02d=~b)9r-2hFa~PSG2!5~4dq)=T4D88XVC6QLZ)U5SmmiE{}Sxf4k0 zH0JZ=aNN(IJ{jXb)l6uodd&rT?;BENC*H%GW(F{I*#Rk z9FMhu@fD=Oq;HvfCKjUPdeyu%N<_+TA2>B8avFo_hqq$|=X4!;vHLwvl%=aEaaoJv zU9jBj4hLv$-YmffYe70RcLUGOf^{~B5R|(Cwp--{Ry1#y7q@?pW)I?DPEttj?d3Pn zboLga8sQO9d-YuHIp=dU--@~v@||H6WHt_S87PiK=?IYynManC0+SlZWhde2PZnNM zqox5+1{haY!>pp!rN}M}KDTi|Wlz*a__wlLQP!WokvcukMk;VD0obMrO5FYQBXRK# zG6a@T*8WlimWT((1b-rYTeYX#c}+ef=n1~{%s@rSIa(0mfOU}@@LH8yaduce`Mu<0 zQ7GUF7f&qi;LQLas2Hgtm2%)QQ}^X_>{q96KB!%f_FIPGP*#OZS~$sRQ_ad0GV#w! zX{Wf*PVr(t06@b=_M=r#`ME*V3U2n@(as1j)J$PjIJB0E1UDO23zp_^ROR+t8OD)QkB$fC zRI~(XmeU)8f?NDXMnb>TOxZQpD0>G-=O=I)MU8^8iD~Uy66KO+Ev4PNx{#^9Fv(ap zQ>+yDTfC0gceiUZbFHI=%6JaLS;DO|2qtFHsZzba52wv071jgbRHP$Vs%NTg6k>g> z3HiGq7PJKu4`zQ@I=#syOfSlP`hgyLrOW->CF9 z*C)bm8uMRn+}ZXdd**xWe;Fye0{R$yg=}pNh+ke(DW?_P`Lo!rivw<%c4&x@=(aH> zn781z8xwj)?lb)D$ylAy6f;Fqi_(2%hdYrz3vvyIqAdpAPUO_Oirg3APDCpr3&49f=n`Z`)d6=@W z2zVFCc%Fi9m@sj1+2U_HUkTe(d9c`Jk!EiAw5fJ!7G>7*tPv57pPeUc}o2 z_9$FqN8dK4Uf89i#&ZA-Z&K`jiP`IO^pC$-{CcFlym~<@OQ*}Fd{@zEx<_L&Q1nos ziO_`$?A_+6@U&g}CCy+l7#~T^zAHc*e^gpR0~n!)s#Wq&x8(M%a~g8mr~C4ja>w89 zMk+Xfx!>Fs1-{>La+_puD7dk$1XGo&eV1+ETrKf8N=`|gmW&+@?2EzjVLTk1L-iIi z31l5-nWVZlAOaYl#i-c4C*Znw71~2oMX9-{;>!u-sjlX4@t$dTD0^v9(&xai6W;r= zro6f;i8sU-Vah{8WRCAD-2prnKhjqnP`8!Is9`3pFF!5`z`#O9x~GLY^< z$M`sY(2$Cs`|i zZOkHg}O+%63@$woCNx7yBst?wRL;5?Q5!Dk*csMSSlRnxDld86(PHzB_$( zd0)TtJ5-FERF!_BRH=L8m8Jz&JV7QIUMP;BemjV@W$rL&uFOfmuXod^RimcX*}L%2 zVWBDD;pdObTpX17J3SEWKN1NKWAQ2Jyo@10{i^Y8ySH1T zOex+&B^s0U(FtZTsR%$tC5z+2>!4OC_JU*3(1o&b5?NioBhi@tfZO&`_)%R%I0(3W zKp9LK5Tq;h=xeQvJo{FWFYAB8fV)xOJudYvLfZUVa2kBklxlXMP2J!~`g?Z-#pQ`> zmDa5_%@y6Fnogcgl@nL)$%2j4trrK1U@3b}?C;3kI1wHTkd_RB!u#=qAey|`rbwN{ zLXeWQnf>c46PKfU#Gg*)%jZWl(;^y1!11DH?;y^dZwhq_=Xn9L7bxDedNV*if>I(h`buI^QXtvc*$%|76SJ zk0c0q{%0ANv8j+CBY@c8kzl&m;o8dAKk!9ePAUnG35lx4+lzY5BVEArdbBgqcy7iP zIszyg1l`Ty=hOGl-{|a_;;f`(LY#%PZNBJaBh{K;18Z*JFVWOdaO{_RVme~D#Z*;4 zSq08rt!3t{bX*0w{$Eq~9?oR@2LN2CNJL~9Ic!OiP^(uCv1TlDY-kR#*(i-1UbJWq z9c;{DC7M$X5qp#KA+I@=Mv97Qt4WR{rw}Q>^n1M5_4|3BzwhgQp6h$x*Y&-h@8^1+ zuVYpN%QEGXS7J5!F4E-8bS3D>`La_?>1Y->T>CG?QMHqG_owtjBS4gf94ICZ`q#9r z*B6^0mo{VRKXZXi#J;yed2DR;F${APcE2#cN#XSp`l)@V^-D=&_6SI|hZ`_RgBA*G zxRIU()OjGUoy^oqokDcZ6qWjzPkv|fzIxDEhXzbi>*jb0_vUFD%mI+@ z%t-6Cwkag=0z5wzmdMs>L zskqPhREus~_3ys1$t*Z!TiA(g7l~)qk(~C{6sHn$d9^aTCnv*FrUc#h*mQFn@u+Xv zOMG5em6zR0mElx>tC?9%07GH<`n4D0=Vgm_Am}BB)+PkB5uRh^sjHU7bLt$M@hiPo^v>qe;@P6)1s0li8?g?#YeElULP zTmvnv$3kIQC-C zY0bqZ_XH~Hc%US_5TR_jGUI{AdbMw7eYQO!83kMDvp2LZ+8s*Zb#2$Fu@v*46`dvTwNdDGP}%|=NZtEW)GvY5B1L?`LV;6lc>1# zmlp-iJ6hJpcg_kZX-x-_x`&3|J{y=P{|eeQp!DWjyL;nIo&oyWL@VO)F~`>S>jAH8 zXWZmJPmaLDuOtUgkGj128O+!vGIhc;J&NI*m|!vV^Sg!tFF}-;IjzPh8|=7j&qTO= zF+WN9wwtBA%yFzvpmzBX#TMW9b3K1y=uh*CG-0;X=f7L9mdgv}ih*W}->vTW zxgPgVlOHoG4a3P2nGT-|WL8S0)ZU{4+SRm?9BTB@T8&`{RVmOp`37EA83nT&Q!jX- zCaj{Y1YMK)(cffSr?ad?XE-<%s1z+7_mltffy`8pVLoI@6dll0IfSYp6iYSi(X_th z3yqQxT?MMPwK4m03`eCJ{PE9WCbK*vEKcagMU<)RP2n|VudM1Nt6*k5hE-T@^W)KDY5uC=^Uw_bcJ;JKgLoUYu`_mjgI9^?^!rl zPf&N|*R*CV;*9m>@m%V&0TIpY3>hV}f}^W*W^k|ZLEN`S&Ls*N6-W9)Q9`S=->DiG zO7p78nOg7K+i?SJV}@L|kwKR?@o?V*Hav95yG-r-c9)(P;fIgxXPps#bH>iJrsfrF zTEyQ%^n?;fL8Nle!46Tsmipd?TcUI&7Kji}ViUBG!xMf7tm&Hg+6xe*AY8v1uffQ@t!tZ`gO0Okvajbb&XnZCq2=W# zn!()RNf(z&g;bY)g~2+4lpohSdTw8Qdyc=!v~OjD&*R50TJ)@Jmf-n79^Ahu`Cb9* zg0&6}T2VO>k@iPX7xwi0mz8&o+jO%|3zrw}k=(p9solFl9pLEbQpXl`VvJ&G#*)DD zZnvTQkqcs+gw+v|-KpJ7n<7Ti8g1>IL6?Ox@=1{|Uf*L{qiq}T9sZG|$2;MT8gwz0 zfQ|HPZ75=bO9_*daKlek0>_M;|4(R!u`7{|9cklKi^ku8l8w6d4-DKO-K_bjDuG}3 zjY8%7=H_}1^yLgqE-!{O>uvv?(g1yluaOQBnHu>N=-7(0Ln|%ENJ!H#mdxkR|9D6o zcXOe3j0}=&yWWNbGQA=0zef;uN9RqN3zaR<{k=f<4x z%F*MDxGQKQYsw~V7S0|_#wNzss)j+t0b0nvyr7Mdny@9j+FmsftK-*W{`h=7LovO$ zlZ6W4@X>tIrT~5XtWyNwlzdz^aOhn?N1DXl2?N3h*q5sKyHew%x>wzyroB5tATmK4 zKp$OlvNF&}EL+0|BL3}#5vqFtLCtEKlBPB~$@UnsZL$s~iGP$J^&0>QEa?$lTO$3q zD4c#)1*h!&4^F`?>MTmG?aAPV6tF+NvD#@}m+0V7G@pTDbtilY_751>5ZNVKZxNgO z=YZ@GnJXTbo}6q|{KQY`a>#cwL@OJU4v zZUI@mMb&04l_WtFvCK!v>7*;6dgk|bdhY;jp`D2YFh%4WLQnZARnc2}A(!}b!C|@} zy{%ay=s=K7@>HMJnyAEe&=|F|Ek)9ZpbJ}%K}y|R247vsF40aa3#wCyT>97+_gTp5 zh>F5f5=F99fgXdvZ-(|l%o}QF_1l%x3bsalPO*vweR|#7>nt_@aufNAlVbY;2fp%t z4)OlrVO-`sw41**JbzXTFvQv3asks<^Yb@9&F3~o$P`#XXx+a6@aiT2HXGkPtRE!- zoJ`#=F1fl#WU^_QCVT%MfNkq=3jm2;CwRWjO=vqJ2L#}{Q2Dl?>R)R?5x=QAM0qtq zkB?1>m4#Go|DR-Tg66CQ(9Ny7RPzQ2xO1?F+*%B5C`Zax36V7-BuP?=vL!93 zWV@xkBqYl%LW-;9N`>ExuIkslzuzD4yz@NYbH3+1-{+h&pGhR!TdfdZBMtz-3L9&4 zC+KZC_lSu?pS!hQ!~%ebJHy3;>tSb0pt1tBC^VKIs3iythHwBdG7$t*sJlQe!Ve5! z1QC(rb@fODgGNNU>)K)Mg3UlW!#a!&I)~Z2P{Vdn4QWUdV{sz^0U`(lxfFyTkQu}w z2#CmeUIO%eZX1I{%$sm`5s@BtWP}-u4I*^4bhWTZV{wELo90h&GPnHZ46TSrI+q(v zz+m`%z7}6wi^UGW;0z57F<3kXk4HlmXijJlmm)w1aZqy<3moPkhstIIa~Z54#2hEZ zkHzB>kw^$fd?Tk(7rBFZZ00;Ojfw%8U?3R8KV3R;9f>Y?U^o706rW(Yv0hdBchl>^-d5vh;;FVOQ} zKr_6{C6&o z?-)de$NUh+^BhN7AuBu(9lM)m_L<-O}(4WF%a*@UiDk}&b%x2Me46YGo zu63A0U0^7J%=2S1ICPMWz$5U`=vdHy(Tz_BAJ${Ze8|{ zelI&>>Z8i4+>)$YpXGKI3>mR@svQZh8;Tg4%;(fjZvXT5s@$OVzxL&8=A;MTGO4c| zcK0C{x2U^0>fXsov~MmZ7>`XD%v|ayaV3uRJvwN;ZH?e{oRx0VCNT$bhl*8_@%-5C z>Xck*W4SThU`!)F70#b(`J?*I4ymK(Z@~m!vC|{ssqU58I36X`a0#*QY}VMztEX^B zjwUCKXSPRM#A4TfwZ+|snMq=iAqhS)A6ip4PEFTOT^LYxm)ljD+A7Y#%MZ)&T+gbv zoH2K}eYa}t!z^n@*%RM~WxcSN+JNrJ(WRi$_2f&_p|tM4o8zx1J+;hn6J--g5VD>NVzW zjd=fV!@*H*IeX}UmG{BQ6BH9lLb0G zB4678Er9qE+KbtnAW$!4AlW}!(lVWT@W9|1xPtJBukQw*eRkgKKBBZ{ja;1p?MY&q zwq8&Ak=QnEtU`Rh<)vzE;mcs0yeLcvT`3HuM4SLSAEW`I17$59hQ-c{r0MCA(IYf9g*A@ zooo(ozi}H)x6`BCKD8z1MX1XxN5t#8iCBD-Vk^@-X%p_`*yTTF!a0>Q$=+AU&dMXU zXE#^nTn+z>m>e?}1a$d}#W*BFdyjQ3Pg1ZGi4mn97s|Z0E>TI^aO-U{@ykq1_gmME zX*&<9sG*3dP$(; zs*L8Z)uXT^_}XHZ)voJHl-oK7Zq!Kda=tXeB5En><(HrLwyDMz2)4sZH>iJUW)y(PjEagPSC_M<^POUz)vA?xUKaZ3o}0Bw2-va5 zIokA+?WSClC3PDed>`~4qF?HxAHwenlYxf|at08jheP(7_Qz`ys_uPJIh>`dV(>XY zcQs~ORHW&%-~GF|;2Pqm&)p>27RtQe zv1ZwY)`U<_(!|VdyBwoGOgDMWDEfqhVP^(SJiStHUyC=t?5?xZ;IzG>f<4VKR&_t9 zc=z~ktNjnj0KRrM%`ZgSDkIv}Bp)b6P1nOsO=k`sMLVYxQJVlhK<^Wr6iue?A=f3@DW!L9@py8wBdrwXBZWX5QX_ikNj-Q~$FMFQd zgOTXwuf5UVptrp~Qpl)6Vw*#2QYih(#>k}33|dB>t5j8Uv!dbMTw}s;$ngj9!g4Dc zBn-UE5BhNl=&&Nsfo8J2r(b@q$HNfsk%SJ-{^!1=Lncu^0e=;Z@XW$Ap-M2HvhH z!oGW}k3G6Z$N8j5q`o4E#YClbM8sK01c*Gxpmi1R9KN2Q%!hA|43e@OSSjwwY9%og z`c5_Xp8y2-xgTKgJp<7N-FrxDanYwf z)$}&@f7CZ=RzKI5(O#)sqR^Mh{L1#S#^J9Ck5BE-SPEp~4cMikszpZ!Eaao#0OMtsNX1I&mmaM8nf?<;9Qh0^pB-8(C}l#-(;c zk^KjbWZC^#)$#H;Lu0A9$w87-K?mp7?P`*idcK%Z+C*4SnUkJMx^ z{A6OMwV4?zvI||IdBf72q!~-@^n#@v`-H51Q>K44HJ)3rt23~V_qCG}ULdjS%bw>! z${B6Ues1)#t0#O>sx2#vBn|ew3%qP2TM8_%Rb|Si*gV`B>IrsPlWIgnW+}Mg4--{I zK+lIVyRz(fd*xnoQFkK6Q!32tlS$2MH$M%~7poR+-mf#J=O?xv+pM~etcLu^Q^JX! z6p=)63JE~Z7D<*haBjJ=-1_(&g{F}g1%s#f{RGtM7P?N@a44wO@8>4jL~l@%lPPpq zw;H!$zmw>G0|_xlt;oBH>k(KOxgd8L^O>Gk<(xNkKg+!RzJJE5`4fMoLnDwT!3Qblce%n+&32Fa56_fz+BFLV#%eXn1ufq-_g~S*!rr`mi*L+-06t;hDgXcg literal 0 HcmV?d00001 diff --git a/product_usability/static/description/product_menu_icon.svg b/product_usability/static/description/product_menu_icon.svg new file mode 100644 index 00000000000..efd14db6ac0 --- /dev/null +++ b/product_usability/static/description/product_menu_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/product_usability/views/menu.xml b/product_usability/views/menu.xml new file mode 100644 index 00000000000..c7873c85673 --- /dev/null +++ b/product_usability/views/menu.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +