From 4a5e708ef160863d6b93ade78a849010162e82b1 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Tue, 19 May 2026 17:13:45 +0300 Subject: [PATCH] feat(iot-hub): gate widget Add-from-IoT-Hub action by tenant, refresh widget JSON - Move the widget-types table add-action descriptors from the constructor into resolve() and gate "Add from IoT Hub" so it only appears for TENANT_ADMIN; sys-admins keep just the create-new / import options. - Swap the iot_hub system widget JSON to its own dedicated image resource (iot_hub_system_widget_image.png) instead of reusing the dashboards placeholder, with the matching link / title / fileName / publicResourceKey / base64 data and reformatted tags block. --- .../json/system/widget_types/iot_hub.json | 30 ++++++------- .../widget-types-table-config.resolver.ts | 45 ++++++++++--------- 2 files changed, 39 insertions(+), 36 deletions(-) diff --git a/application/src/main/data/json/system/widget_types/iot_hub.json b/application/src/main/data/json/system/widget_types/iot_hub.json index 3ba7c9825a..b6cfb28f60 100644 --- a/application/src/main/data/json/system/widget_types/iot_hub.json +++ b/application/src/main/data/json/system/widget_types/iot_hub.json @@ -2,7 +2,7 @@ "fqn": "home_page_widgets.iot_hub", "name": "IoT Hub", "deprecated": false, - "image": "tb-image;/api/images/system/dashboards_system_widget_image.png", + "image": "tb-image;/api/images/system/iot_hub_system_widget_image.png", "description": "Display featured solution templates and device library from IoT Hub.", "descriptor": { "type": "static", @@ -14,26 +14,26 @@ "controllerScript": "self.onInit = function() {\n}", "settingsDirective": "", "defaultConfig": "{\"showTitle\":false,\"backgroundColor\":\"rgb(255, 255, 255)\",\"color\":\"rgba(0, 0, 0, 0.87)\",\"padding\":\"8px\",\"settings\":{},\"title\":\"IoT Hub\",\"dropShadow\":true,\"enableFullscreen\":false,\"widgetStyle\":{},\"widgetCss\":\"\",\"pageSize\":1024,\"noDataDisplayMessage\":\"\",\"showLegend\":false}" - }, - "scada": false, - "tags": [ - "iot hub", - "widgets", - "solution templates", - "device library", - "marketplace" - ], + }, "resources": [ { - "link": "/api/images/system/dashboards_system_widget_image.png", - "title": "\"Dashboards\" system widget image", + "link": "/api/images/system/iot_hub_system_widget_image.png", + "title": "\"IoT Hub\" system widget image", "type": "IMAGE", "subType": "IMAGE", - "fileName": "dashboards_system_widget_image.png", - "publicResourceKey": "GoKYeghXwrpNNyy3oli0Z9wrApC0EeSY", + "fileName": "iot_hub_system_widget_image.png", + "publicResourceKey": "XqwXyzWV9EsIEzcq7967Xrru0fycYRlS", "mediaType": "image/png", - "data": "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", + "data": "iVBORw0KGgoAAAANSUhEUgAAAMgAAACgCAYAAABJ/yOpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAARGpJREFUeAHtfQmcZUV57//ue/ftfZmtZx+QZQYEBBkBWQTcUFmSXxJlsjyT58MlL76Ixpeo0cTkZwzRl2cWJclTo0ISRZRNAR1kh5kBBhhm7+npvfv27bvv7//VPdV95tLL7b49THfP+c+v5vY5p06dc6rqq2+tKhvKcDI1MbmZ7LBwqhBgSsDCqUaSKcKUlwMhjlVMYVjEcaoRgoVTDaGBOpRpwulAmXPIqBVlKsHCqYSHKQsLpxJCAxmUCSUk//mZ4rBgwYIZ40xuLVIVYcGCBTOEJuyWzmHBwgywCMSChRlgEYgFCzPAIhALFmaARSAWLMwAZxV5vEzbmdYx9TE9yJSuyNPA9PtMfzHN/T6UPZOS51+muH86vJnp/IpzPzDKmi9uZ/rGFGXIezYy9WLu2DHN+Ttx8rCe6SqU63Iv07NV3CPt8GGmv0X1eLPxq8uXtr7aOJbff8DC4lTU5bSohkCEOKRSpCJuRrnCHmPqRLnCD1bkX2+cazCOLzXy3cP0ECaJo9P4lQ6piUhSCpOd9yWjrHczPc903LhmfnblvZJWVFyTjj+K1xOFuZwLmNYy/XiKZwDTf6/A3HjyrCuZgji5kPqVunsO5TqWb33M+JXvl++VutCDU4Nx/JhxvzmfrpepvrGh4rkp45kw3aPbTP+t85nL7zS9D4x312Wb2+VU1OW0EE+6hJhEZ8gjH3Qxyh/xKFM3yiPHVqYWlEf411AmHBnJPoRyI2jCkkoKGXn0NfmVCttsXJOKeI/xvPdgshElFiZt5JPn9hrPudwoW8qoq7g3ZORvNa7dbJQh1541vkV+bzHKeAvKjtJ1xj3ynlcYx0LsLuNvSauNZx7C1NAN+nOmLUy7MTfMxZPeabzbHpQ74TVM+5h+w7gubSRtdh3KHfoTRl75bqnfT6LsNZbrIhloKUF/s+ak641f/c2rjbIPGfdI3b7bKON6lPvDENOtxnu938j7HuPamHHuWeM3buSvRK11uRAIV6ODSKcXkeRNTB9HuWHkb+EGIu4IAXinuVezf6kgPUr4jDLk3nuMsvRzHjL+bsD0eLNRVgST7L/XdK80/k5TGYeMazIqrjeV85Dp7w6UG6zXSJca5cuId6aRRxPGTkwNc4OO4tTgrIpjqX95L3l3M6dYZxwLtxTJQDjzVN88G3S9CwF2GOfuRbktpX2lDWyY5BpyTepZ2mKFcX3vFOUuhrpUqEbE0qPFD4y/pUObdQgfqtcpNLwVv3NB0ngfqWSp3M4q75Nnmd9TuNg3MPW7R4yytbggz5DOJN8uHOnfKvKf6gbdgMkRX95dOuFe413kb3lnM2FLHt1pfaZz5m+uBr4Zzt+Esq4z1WCnOfhU4uqiIQ5BNQQilSYsVBRCeXnpVL3GORkdKite2LZ0PqkYGc3lI4Ww+ow8Wg7+sFGecBEfqsfPjGcL9ziAMsueCTJainFAxJeDFe/6HuM9Dxrvtd4od6fxDfKdLxnvJ9+Qxusb9VQ2qLyrEK28uwxg8n4fw+R3SVtpZdosFkaMY91O/4rXf/NzFc9ZZ/xtPu+rKKOSg91i3PdyxflDxr3PVZxfVMShsabKfN4qz011fi73Votq7peGvRnVP8s7x2OBzKFpxMJgocLd5/u9c7m3mvzTXROO/OEpzi9kXS4E1kz8t0who9f5WDo4XeaDyKC1Dosfy55AlhqsCVOLC2ssT7oFCzPAIhALFmaARSAWLMwAi0AsWJgBFoFYsDADqnEUoq+vr8vhcEgQ2dZSqRSGhbnih8Vi8RMdHR1HsACIRCIT7YFyLJ2FueGHhULhEw0NDUdmyyiecDHzHp0ug0Ecu1wuV5gJNpsNFqoHBxTk83lkMpkxEsm2WYhEzLyxmcoziGOXx+Ox2mMe0O2RTqfHSCTbZiGS2c28drv9q263O8xkNcY8IHUmHVnq0Bj1awLL+KrX67XaY56Ya3tUo4Pc4HRWJYlZmAHSKBy9tqJ2WO2xAJABBmURdUZUVdMzjVRkUyC7xxsNiixIZtIYz2fgJZm3BBtQRAmFYh5xXvPKopE2B1wOp/BV5AtpOB0+pNIJ9b5OuxM5nnfZHUrOLKkYSxuS2TgcHDeKpfJSYW6XF7l8Vl33ewIsJ49kOoY6fwP0QpR8Ku9kefkCpuu8Rh0uiL6wWDnH0e5B3Hvvc3jn9VvR1dWBxYxq26PmoUgIZGBgAH6/H01NTTiZkGdRdhSxD/v27YO9PoDVre3YfehJ2Fdsgf/wcSTSKRRKdhy0F5Hu6MCqYADIRZAplNAebILd5iYRpdmpHZRFnciSwKRc6gdobKyHz+3Bwb6XkcmlVSV6nF6sbFqHRC6FXCGDfUeeQ1N9K9wkQDev2W1FFPLjcLrqmd+B0xVHukdw7jkfwoYNq/GLJw/jr778u+jqcGOpY95mXlF2pLPKiElFR50bHR1Ff3//CXlGRkZU5xNks1lRMlWSvzUSiYQ6F4vNqJ+K/I1AIACfz4fzzjtPlR8OhNCXsmFP7wEcxijyh7pJDGnUtQbQlIwjGemG3xWGx1YgIRQRG4+hkOOH28gl8mkSSBopEonDWUIymSBx2ZDNZZDLZZk/j9H4EEZiQxiIx0lUNjSEmpHOpnF0YD/6I8f4kTlyJi/LHOffMy9Qaf7m5Yav/f3P8KlPfRDPPfsPuOwtrfjN2x7FcsC8CUREHOnUuVwOVBpRV1enOm9ra6siCEnSgevr6yeOZeSXzh0MBtXf+ryIPMKBpBx9rpokxPnInmeQZ1kDGeDVjA3+p57B8YIT+SzLDZbg9tgxFD3C5zaoZ9vtNsUx4qkon+dEuC6E5oZ6BPhOHo8bLnINr8uHeHIMGRJCnoSSysbgJ9fpG3qN9zuwtmMLgr46DI71KG6UJ8XlSiLSzSz6SH0tV6xa14rbP/Xr6u/h4SR+9cBOHDkWw1LHvAlElBwhCBnV4xxdNTeRjq+TLZmEg1xBn5eOKSY2OTbnlfNCaKLImu83Jxl9hSjlV0Q6OVcSQmEHRrGg3mncF8Zrv3crBvheRZmKULAjlcijo34tsrEExseG4AvIFhwk3lxRlSf6RYLvlEhHEYkPsJOX0FzfRq5AIuO1oK+e3+gkJ+mHw+ZBR/MaBLxBng/zsQXqQUn0jvZjOCrTqmcmkFBo+QbrNjdOrqswMkLxNB/Fgf39WOqYN4FIBxWuIQQiXEJzBeEaOkE6I6/pY01UAnM+fd58rjJpQ4D8hsNl3UrEoY2r15GbMA91DHeRnb2UgtfnxTEbrUYF+gmKbrh53NgUVqLX2PgRlMgFCgV2ZopZ0VQEtixFPopTLuoUwjVC7PxtjasQouIfIoH4nD5FFF6PD/miXYlgNn5rfV0ruoeOo4U6yYoWcSfNvHuEcMnliGw2j/1HJ7mFw8GBjm06Np7HUseChJqI7iH6gyi15gTK9EXTeeEyY2Njr8uXJKcRDlJ5XichEOEykgRDQ+VFMEouD+598TleL3MTOzmJWJ9WuZJopjVrLF1EIBSk5WqcPMOBzraNaKxbQUXcRuJuwNBgD/KJIXb4NAJuL+ppmfLwV46b2Pk3rTgbq9vWw85BwOcNKfEqnhxieUm+S476Dy1nVDtEXMuQkxRP091Vjh2P4unHX5k4vvW3L8O//+v7ceEFrVjqWBACaWxsVOJD5agPfwB2chl9LDqGjP6V+WRkNfwEUyYhEq2gC1atWlV+MM/7G8jF3DTMuoQrlDDIHhsI+uBzjKM1EEQmVkBP77GyeMdO7Q+EKQi5MZ7sRzDgIFcIYYS6wVhsjPpEkdds8NGcG6KO4aBVSohPOIrD7lKmXjHzOvksv7tOqRydTasVJzvcvw+pzOm5zUqR3//444c4+JW5SFODC5s3hMi9k6/Lm07ncPd9r+CZ5w5zUF389bUgBDLdyH8yk0bONmlKLBkizug4LU/xXqRLowjUUxGvbyJB0HpGi5RYr0oQBd8H8iyKTLR4+Z1wFEQpj1EMyxlE6VQEUCzmSAAlRTjCneKZBC1fWfpHXEoPicSHEWXZ2XxK+VZOR3g8Toynw3jo56+qY6/Xh4Ywxe7Q69d7+9XjL+PG687ABeevxR9/6htY7Fjy0bw5Ox15NlnnrMxpxNDan8pRL2inOTaJkUQfRSQq83TiFWnmjcRG0RvpQy7D0Y5iWIlJfm20QiXjg7CX8kgXsuQUGeX3EH+Jz+NHHcUpoRhR6o8NH6VlrJf+j7JIl6WhwE7iKJ2mO9iF69ysvwJGRssrKPX1R/DsroN0HA6/Lu+P7y0T0T//62P47vf2YLFjyROIjO0pRwhZu4eOc5pwaZ2KwofD42kMJQvIpJ1k6+PIZdnh6SXvHX2NXOCwErHo/KBo54aD3MDl9ZOQ/Ogf6EEqGcVwYoTOwhTLz8JJruNx++BxuNWWQyUSxTB9I8X8uHqDZJqigl2I9PSMjQoFPcqS+MorA+p4ZLiIm3/3cTzzwol+oR/c9Ssc74njqWeP449ufxTve9/bsNixbOaD2A1dRZzZ4gOJUc8YpUl4MFdAfbAV1ECoc9TR+03rV56WKNApmIuT44gZmR2fzr56WqP89JU4yZH8zqDiDtE0zcPULcYpSmVySbjtItJJSEtBIljQUhemHiMdJIvTdQ9UqXfxN716uMxBlI/L3Yq860Sr3b337qI4WsRvfvRRNIaK+NPPvheLHctGaNZdU/lNPEIERQmk4sDuougU5QkHhmJ9FJec9Hnk6eMoYSwXQYebvhw6BkviQSeHCQbDiEbTNAoU4RLHYYmNTvNwhh73KBV5j4uGB4pdQjwSfuIj15KQk0Ixg9MZq9evxWiuHGrk93MQcbrR0HjieoDP9G/C/udfo/GjF//8d9eia83it3ItGw5SsJ1I63baXD20Cq9we1BHJd3nEQsVHZJ5IQ6x1ZOKHDQFU8GWEJRiMUVTbUyJYQ20jAVDdcrvIT4QH4nITdu+KPSpQpxKu+geJQzQOZhhYT6nXRHN6YxVq5sRjZQXQ+xoD9G83421Ha4T8vjyCRUXd9P1HfitX7sISwELQiAzOfhOVqpEjmyjZNIBiuJ9txXg95YQy4wjSgdg2NvIewNoqGvHyBj1EnKRZCGGaKKf4lZaKebZXIJEEqOYNqZ8HTa7+G/G6CisRzjUorzrYt0i44DX7ecznegp1tGx2E5T8Okbhn7GSsCV7VeREitWNMJVHEJrMHdCnsjxV7F2bSP+/HPvx1LBgrToXMOvJcTDXrHBro6t0jFa4rcQD7sOTZFj8YXoGK/KZ5ZI66Koe4rpiTMF6hJjaXbo4pgaCZzuetTb2eld4vCLYiDSTynMCWeDhybeLInJR10zi3h8hMp7IxKRIXi8HopeaTS3NsBLmVo86h7+8g2VnyTD91nr57uQuByn8abBH//IZnz8ts0YHh5Ge3s7LrxwleLYGk/vGcCR7sN44Mcfp2jVjKWCmglER+rOBdLRpcNrL7kca4LRfg49r0L/Sh6BDmfRXnUzMnY/nBR/HKWcEThow7FkDqt8ZcIboaLdRC5QoM+irXk1zbh5NT+kztdJaYv2Knrz7eJ8DHbA5XSgLtyILIlZdBEbn9kUaqXpOKEIwcF/QR+tZ9RDvPY8+sdG4POtJmHhtIWtJL6icru893pZU3tywPjRw9249YNbcc2V1e6ssDhQE4EIccgIL6EmpwL2KThXgiZfDz24LlBppm6Roi7STXPvJtrq7VTcs5kU0pkkve1htDWtolNxEHk2qtfnQi5N8c2WQSLeQ2dXCPZCkFwjoAS3ZDJOgioh4G6kgzGJBlrGPC4v/SpD8NMb3xkQHjYzJ53PYLJUEK4Po5scomtNeSnk3/vgdtzxzT34wA1+pKPDePg/v49///ansNQwbwIRMUkIQ0JMJMJWwkUk5ORkQp4zPj6uwtZ3794Nz8qVxhWzTmJTnCRr99F0SwdgTuTgLA7G89gW9sNHa1aO3CE2HqUy3gx/c0B5w0eSKaxrOwOpRIp6RwoBP/WNgkQQp8kVxBRcULFX+YIfI+M5eJwejNEzX6BOEqe33W5wxJkgc2OWA4SDVxK7iMNNTS3qb+HuoZAf576pGbd96mE02Lrx91//6JISrTTmTSAi8oj4o+OkJFhRrxghEbcSdyVpISGN0NxcruSLL74Yzx87pv4OFqJKBBKkHQEVfiIKu+ggYurNZwtIUWs4Go9gU70LjeF2DCdHlSc8SGI7SgJZ07lFhaEEggEq8FGkbRFyoQI5TgyJ4RiaGrsM/mCjcu4zRD0q8Hl62+lw9FbhJDTmQS95RKPRE0RcmfAmfiE51z/QT+tfud23X9CCS86TOL2r1KC2FDFvAhHiaGlpmRhNtCKtFWsNOScVKB1KQuKFC0h+TTypVErll2vyK8cSRj8X2BQ5TO+kK9ESVaR4Nchcb2lZraJy26lo51NxmmmT8NHSxRdFlASUL8aVfiEildMfRMjXxHvpI6HYFktD3VvnDyNOncXFb3bw2EGbv43iXGkKvcgMmRawHCBtuvOlY/j+47J/UXlGv/7VR4KtXc344OWb2N4FLFUsiBVLd3Ydkau5ivwthKGvy7EQkhCJNtXKPVoBl/sk71Rm3FpQdLhRzGWQIYe4Z99LePva9Wj01yMrczzsddi8sk0FI+YKSVqxfCTSGOzpOPzuEEp0AIo1Jp/PkSNJQKIDXqdXWa2cKvTETs97ET52frtzeXCI2SDt1D2SwPd+ddgUXWOb+BHVXJowGs/ity7bhKWMBSEQGVGkU+vFG6TTSKcXtirnRVeR0VO4i+QVLqGJJjNYntvh7uxQnEXmhphHWi3Xa9Ow5lhmcSVlD06MWsUpPklErhw5QYkcKkbu8EDPEN7SYScXYVOKOFYoE7XLwXdy2OkZ9yuH4fhYH8IUxzx0GKYT1F3oFwkEQiRyN+roOJTJVW28HksM8r1yp1cklrSLSuVDMVA4HDLIFDGhnTjKVqzSEo7AWRAC0dxizZqp9+Lp7Czvsyl5ZGKUdHaZOCVilb+jfeKannorBCVcpq2tbaIMIQiz/8PMZfK26myrNnKvUjaHaMmBp3p6cHV7I828opQ7kaAzce2KDeQKbOSSEEIbLVoljEUicLjIKVwltT+YhL8LNQrHcTpkjkgekUQa/nrb0u4Jc4SN/iOcQ+7Q0YxbfSnc1FnAcPcB9AQ24/P/+QIyuQLsyyA2bcE4iOgPMWP+uXReY/U61eGFKwg30dNq9fx1NZuwtw+ugB9uYyKVKIBiDZP8WrcR5HJlr6z2oWixbK6wUWkX86+DnT8GD30gJG4HxzxyjeHogBoVU/Rt1PuCNOnWqVD5VCpC7lVSI6TT1UDFPasih+Xd0okIOuucZaeY7fQgEGmn88/oRKe9mYYN4DMbCtjz0H+gvTiOrWdfglfHt+CHB6L4wGVbsNSxIAQiVitJesbfCQ9gJ9IWDD2rUNbP0ktn+js7Jq5Jp+/o6FDEJQSnOZMux1xmTXoKG3UkT1GrdxCXt9VjXYgE6fbTbDtKfcKBNHUQmSciYSdBT5imXYeaWlssZmmhCWIk2svR0Q0/aS2VGON3l9fIlTynQ0SWfGuny4Z7NrqxO0GDjK2Aw0d6cGazHUP9/bju0k34jbe7sVZY7hKXOxeEQGRVE9EPNAfR3nDRR4QLCMeQTi8+E+EmIl7ppYKKkTE1qnvJNfQidJJXCE6ISBOG5lJyXsSvmpbfFK+9cCSW4XU56J8YQo7tnMyNw+62o7O5C/HEMN/djgy97bG8LOjAAcDZrL5LPOhOugtLRSrzMstwhGZPOiTr2tpxOkFWtLyY3POeyCi+dfm1OJvG9EM0XPy/AAcwMbi4bUt+BsCCcRAzp6jUE7RCLsQieVasWDF5c2vLxDUhMvFz6Pnt+rwuUwhHi121WrpsxpKjY4kMNtSxw3toXcsF0D18ED3DhxCiKddL/0b34GtqFqKT3GxNx2aEsjRB50ZVlJFM3S3m1Sp0VOztKrDxdIDZISrNsJrWwEZvCC/mfXhvfaMoewh5Wb8lMffbFtwq+UZiQQhElG5JYp0yr20lHEB+xfstRCIimFpTN5lUHEGUdGeaSnCwkXXqURxCdBDhSJJPlH4doyVcQ+sfC7IeMEf+EsWpfJbiFMUlWfPKVspgZdMaDI8PKXFLYq7iFLcctMZ4XD5aqyTo0aWWHUVBwk0CSEpYC6+HwsHThkBgiqgWYjnTF8A/dtHAwaaSgcLtsCm/1HJY5WVBCERzDrNPQxOJdHpRus1rYJn3tSg5mii4uyZ8JnLNbL0y+0vM5S4M6AkvUdGmR92Wz1IhdyNOa1ZDsElxDCUelMqdQOa3y2IN8lsoudgZ6FuxU3fx8lpGHI4UKU6XaHcTBxGi8LlsapAQlC2NKpPiLks9wHlBmlSHmOgwdS0GaVFIYpBEH5Ek+ohwCLkmHMWeHAP8tBa5vIq4hBCE44jVSpYIqrRiaY99rUQiMrJ4z19K2jGSGyaN5pCln8NLs227hz6PPB2cdAbW+RrR1tKO0Wg/77EjHGxFnGboTHwcBwZfpvWN4mOJhBPLosPdcVpNm3KJJY+GC5djMozkRPG6dMK5pYgFIRAhDqkE6bgiGon4I+ElIkJpx56exyEQjqNXGUzGcnBkE/A0eyaig+U+HW6i79FilX5WrbCJhUxCYpj6KF6VMgmUqKnbvR4cS+dRkqVTi05skZizkYiad+50upA8chChfUcR4nlPehS9W7voSymv79Rcv5b5AjgdIJohjXcc7LKsQtfrph9oR+5Sdw0tCIGY525o/4W2YAlXkM5untchHESSeMy9ra1qlRB9v3AQWeRZiEBEM32fVLgmPnOsVy0QIvGUqEPkExC3Vsbp5YhYnnBVlMWoOQK+mqKRoZhBOJ2gMzGtvOmd4QD8xwYwcv5WeOQb+U42W0HFaZ0ucDugFgL3GZETai1m05plZZEaSx7zJhDtGBSLk3b8SaevVNKFSISbaCVdlG0ZbaTzS97sGE2kOZptW1qUGCWKflCttO6ZMBkL5Jp2PC6UDmITyxlJI2RPq0UeWj1FxEiEW1rbMUgRKpZNI03J7uVSA3wUnhrpCMwWbBi3Z7FhaEgt1uD1+GUCvNouweWY2XAgouNyQJkQgAi5hyjiTSHnxHlztINm9KeliKU3sxGOofcHmS68Xc8T0cGKAuksQlwucheXDRMVK0kISpJM3dTQSrr+XQjToSxincx7qWyTc7HTr6SWLaso9o6NIlYoIUlPu+TJ8u8MxbBxO8VAjpquYAahd23ERn6XDBKin/pD7lmjVoUDLhc8/MJx/M43HlMEctbqRnzo8k3YvqWNVsDARNvsPjSM8za0YSlj3gQiI7xYm6RDS8PrKN3KiF7hNHrEl2PhAPKriSYrofBi1eI5uV+uiy9kupXQzev11gyJtaNekcqQM7jr8HI8hSyCdPoZgXiGRaZkBOYVRLQTnYrfmsymMDA4DF9DSFVihHpKyD/zhCA9l2WpQw1imbxaVV/qcO/RUXzy355UK71csKEFKxr8ODIQw9Y1DacvgQh0dK3mHFN5tysnCWnFXfwdWgwrGZ1PrglXESLRSr5wKSlfx19pP4hrASZ/y5RdtdCCv2yFKeT9yufhmCC+8uyGoljQRByTRSPEguZ04yh1kR6hm2gCb/a5aXGrmzU+bCmLGpW4Zutq/OpL1B+LZV2joIwx5Xk5GVmTjL8toXK/sC9hW2/NSrpwj+mW4pkJujMJAZjLMlem3pJNm3jNkPvaKd5d1jr/xce89hyJwq24RMFWJna3eMfZ+R08FoIoUfwqGCNlee338gQtRzGPPD3GIlQ5pHPYSmp1+dMBIla3StRDw+xz7M0D6FLErATCUW+MHxmebvSr9ePnG5WrxDRykcZgEEsBCxhuMWN7vBEQrr/Upw9X2x7V8L7dU43gFuYG0cXYKD9C7di9nDcDfaMgfZoW1lnbY1YCoby/g4WNSYFLOejsVEHqTDo0k4z8H0eNkPaQsszTli1UD6kzEeUpolfVHsKnZRrg0Zky9fX1dVE3+Cr/vAEW5gQRUTlS7WZj7Ojo6DgyS3bZ5XPWrWHpSO2iiGm1xzzAdhhjm+yWgYbuiSOzZF8z8Z+FRYHluw3u0sSa03cxWQsWqoBFIBYszACLQCxYmAEWgViwMAPESxdmilaR9yYm2VTuOibZHkiWI3kZbxw2MNWyjLx+f0F3RbnyPQdM+eQ5c9nEW7yVv8G0G7VBwoHn4uSQd70S5feXb5rqnXXEp7lc/b6S31yn1xllbkfZYHAAM+N2I0+1dXWp8Vx5xjYjPY3qMdfn1QqhjTlbse4w/S0VvRWTjbDBSFtnuVZ5PyryoCKvlPEt41y7cR+myVv5DI0vVvxqSN4dpuPbjWdM9Zz2ineofPdaMRcrljz7dky+l24Xc70HjfOXVtx7G8r1UFlPO0znpOyp6tf8DF1XOk+76Z7K9jfD3IfacWJ9V96zoeKddL6p3k2fX4i2ENRsxZJKlpe63fj9Esovd90U16RR5ENkdJIRpN107YumY33/dcbfOzBZKUHjvO64t1WUs9243o4TO72g33jOfVN8R7vxbubG2THFc8zveaPxfvraTXhjIaOv/hb5tr8w3uM249ynMfn+lfE4X8P03GEjygQlZclILd9V2Ra6bXXHlGdux9Rteztmxg7jnqCp3NtwYp/ZZrwDTGXGcWI/0ZxPP3dBUAuB6MqRCpWXlZeThrof5YYTceMx41zQ+L0b5caRe68z7pP7NQEcMO7faeTfaOTdbRxPJ8IcMJ6lR8oO4300zCPbAUxWtkYQk6PYTHjM9E33G9+zUKNVrejHZB3Jt7dXnLsWJ3KF6aAHon7j+D7j721GmfJ7F8r1oNtD6vtO47xgo+lX1+1M0AR7p1G++b67jXJ3GXlvN477jW+SPiScV7f93ahd1J1ALdG88mLykveZjq+r4j7dAJJfPmQXXj+q7zDOSUXcgblhZ8V7CXSjSiPcPsV1TZg671KAHkB0Z5A6k++QTiUdrpIQ7sfkN86EXUaZEmUhdSEDlHTcnZjkypWiYHCK493GPZrAZoMeNDUnrCxXn7vLeI+PodyHdpp+N2KBUQuBSGPIh+tK+9os+YNGXmk4+UipQC2ySLrTlLcPkyKLriQJwZBRQhpQWG8cr1fW7jKuHTDKuNs4v9N4ln7naliwfk41jQvTu+4wPV83+MmAdDwhdi3i6Y54o+mc5gQ75vAev43yu8u90qYBTIqbuiNKXZpl/V/iRFFK59Fc4GuYXbHWxH2bqdydmBSZdP/YbZQl+aS9bzKO5Z0TOAmoNdSkWnnv9mnyt8+h3OAM12a7d6ZnzbWck4X5hJoEqzhX63fM9owNmFSQb5vlvrk+q5oyTlY7vaGxWNWIX6c7lmosljaKaOV6ucAKVlxksIIVFxesYEULFmaCRSAWLMwAi0AsWJgBFoFYsDADLAKxYGEGWARiwcIMqMqTLos2OBwO8WRulTWZYGGu+GGxWPxEFYs2VAVj0QbVHjBCsi3MCT8sFAqfqGLRhtlXNTGIY5fL5Qqbd4ayUB305kKZTEZWN9k2C5HMuqqJQRy7PB6P1R7zgG4PWfaHRLJtFiKZ3Q8iy/243e6w3rbZwtygNx+VOjRG/Zogy/14vV6rPeaJubZHNTrIDTVtuWxBwVj1fitqh9UeCwBj6dRZ26Oqmp5ppNIbc9YCWbWxltXa9VbRtawiXus76DKmg1GHC6IvWJyjdlTbHjUPRbKI9AOvlnBZV2Zigxg5p/csbGpqmvH+gYEBhBsb8IuxXbgkcJba9kD2HhHCkxXcpdNLGdN1flmCU23Nls+gmEkh7g6ovHpvEr17rt7kZyrIZj6yYvlIbxayxWA6V94JSvYokftl22rZz8S8UPd4OoZ/euoH+MHun+DYWB9WhTtwwYqz8dG3fggr6+caNGxhsWLeBKLXOJVOs7nNzQ42ue2aQDpuNZxFNuHJZDMIO0MT+6oLR5BfIZTKLREqofYXkY1uUEQpmz5hS2q9saTmMDOVoX69Tj7TDm8gPLH3iZQheymaV6EXgrjxXz+ifs3nJD3d8wK+fctXpiQSa9HppYd5E4h0XNlsU0bWrgaX2kTFTBD676pWhue95wY3qA4pHdHcGWUUr6aMotsLhy9wglKly9E7W00HzW1Cjbo6nK8rw/wtlcShIVzk2s1vwx/f91f4zq/9zeuuS31ZWFqYN4EIAcimnIeOHcK9j/wUe1/eg97R4wiyo2Zy5B4+N+Kj43D6ffCojWhsGI8kFCHd+IFfw4qO1WrDzv37XsKKFV2or2ukWFZSe979x3/9G7LpFJKpLGxOG+wuikhhv2wqiAw7cqFYQDyeItcQjuXADVe+Dx/+rf+O3t5exZHmsmeJed9AEelE3BJC7ezsnJJzPXHk+WmJ4+4P/R8lcj11bI9KF60694Q8snuWhaWFeROIdB7Z3rl36DiO9RzGwNAAfSa9qCdB5NiJPSSQXL4Aey6BYraAVIHiSi4Ph9uFA/v2IxlJUZxxoX+wH06vB8lMUo3Q2XgOfaNDSI/HkUxT9GoOAgnZBi0Jr9ODsfEEbBSFYtEYfI1+6iw2jIxG1fZva9bMfWqLiHECebaIZ0FjQ57pFOHHSSCC33vLLbj/1V9O6B+aOL7yi2+q668MHHgdgUy376KFxYva7YUklF8+90u47U7UBb3wuGSn2AKPHSg6yvtX2Bx2uGRfQZ8XiVgaD/3iftSH/IoTSI5n9z6t9rdLJdJwOVzwBTzI2qiHBO3I5grwuZ3webwo5kssw8XfIlw857a5EJHdchv8SkQSEUYIV28QKsq1nBdCrgZiIBA9QXQWMQyMjIwoQhFOKYQkx65SucrqvCFFFJ/44Z/jqzf8yQnEIRjPvFFrm1k4maiZQGScLeSoIJMYnC4HYvEMHE478oUiAi4P0rYCO10aJV4rkqP4632y4yOS4zH+2NUGnvTRw16yobE1jNhIQinLThJAEUWlUyTTWYpUw6qjUlij+OZBgM8YG6P1KeRGdCSmOrImDK2Ua1FrOiVd75YropXoGpJfuEhJbUhZVISldRA5DofDOG/NWer4K4/+s/q9+9b/o/42E4fgotUL4fJYfjhw4AAeffRBtLauwDvf+a55b8H3RqH2YEX2PRs7fJbiUySaInE41VbJeYpVY9E48kkSDDs//b7kAhS7eOyhhamhoQ71TUFyCzfSwykUUjnEh5k/m0OOf+dIaCD3CHh9CJHz+Ou8FMNSiKaTiJFrxMfTsk0tctkigo2BiZ1z1UfZ7RPWsNHR0RPOmZNwHLmvv79fHQuhSBmiG8mxcBRzfrl+TvMmXNxVXhlICOMDVNgriWMFLViV4tXpjsHBAXzve9/B5z7/OVx88Vuxa/fT+PZ3v4PFjpo5SLFUVIq3i4q0IyBbOvNc3qaUaxd1DDcJZjyWgstZ3uo5EPCqh7rJXchT1G6yWRKTncq2h2KZr96rdot1+p0IUx9IkaAKJIJ0gj4KmpIzJIq0M4+g1w9HXm3STOKzKx1ERn8RkbReISZaOSf6xVQmZ/GNaJFMCEXu01tN691ZzducCbeR9Lfv/eyEJesJQyfREOL4Ds28Fso4ePAg7r33Hry2/xXWZwDnnHs2vnXndzA6NowX9u5XdXzLTTdjsaJ2RyE7tYhZDi9H2FiGhMJuT5Gr4LYr4kmV6KFmp6K6ATt1EbfTgbM2bkYjKytPXWXvoaOIUvfweWje5b90mgp+nQdF8raBwYiybKUSKVq56pBg5w+KnuP3IEUl3skOnYjSUZgu758ohCBimIbmItMp3JoQtKglx5Jfs/1KK5YQoeg0K+racNcHv644x5NHdylCEb/H+990DW49/wPUT5bTwh7zQ09PD372swfwqyceRyjgQ1t7B95y0UXYsuUM7Nz5c9zzkyOqbX9w111o4gB11ZVXYTGiZgIRhbzED83G88pZ56BeYSeReMVRZxdveBYlEgWVDHYuXucT6+qpNPOeC855K9ZtTCJdysLOjnnvz/4TidQYLVjCLVxq7/FwEx2ILrfquAFygVyCxFBUrhOUqOeIJazEayL+iFIu0ObUeDyukhCN1k/MEHFKzotpV6xXQiAiVkk5YhGT883NzRP55ViIRAhndUMn7rjhs+qcEKacFw40m1NyuaO7uxs//elPcd99PyK32IqL3nIR2lpb8daLL2FdS13a8eu/fqtEiePp5/aAXQLfvPNOEkkTtm1bfIta1kwgLvZ4p4RdS8fg3+G6kNI3QrQ6jRWob7DjiLWKZEIzrQN+Fy1ZmRwaaKnqWn8G1mwUZbyEFvpBnnvqEaQojhUpbuXISYIhL+wUvzzkLnn66NxOEogtrwgkmxM9h4TlFGXcp1i15h5aLBKlWpL5nBliqRLO0dLSoq6LOKY98XIs18336bAZ8zntDzqdveRSH+KD+slPfozXDuxXovQ7rn0nzjhjC8477zwaO+o5cOQ5kIio7afq6MTv/7fbkPrbv8YeillZDjB/c8cd+Pyf/SnWdq3FYkLNBCKV46I4lebI7uUI2tbUio5QIyukgA1BmnKplOSLOYhB18OOfM6W8yAMJUelPhYZwWvJPjjpM+n7yUH09A0hSAJqbKxDnJavyFhCiWY5JT5RXEMSTSzTTX/IaKIIr8+p9J90quxD0dxCBx0KVxGOYCYeM4SDCLcZHByks3IFYrHYhKgmnGNoaEgRj8bY2Ji6JlzHbH0RLiLcR/tQTieIKPXwIw/jkUd+jq61XehiB7/g/POwetVqtLa3KI4qfcFud3EQSShHsMcd4OAXxsc/9kf49Gc/jd7+YSSScfz5l76EL/zZ55STdrFgAcy8NmSTeY4KNirVtDhRefBQxCpQgY5Fxikm2ZSi7uVIu76jE5e/9WoSTBHJRJz6SRLHE3vR2rgKpbYcR5tN5CDUA6jXhNkBm5uzyjMvIpT4UnzpcQzQABBLpdE7PCIWApRInCWHTY3k2qyrR3gRebTCPhUHkRgrwapVq1RDmj3dkl+IxHyfzj/VM/R+6KcLenqO4/77foLdL7yguO7l1CFaWxpw0QUX4eihw2huaebgVg7NkarKc2Bx2KUt6DAuyt8uhOoa8Kef/Sw+85lPYySa4IA4hs/9+Rfwl1/80ozBpW8kardiiTZAHdhPkaqZI4OHYpC71Y/ODZ3Kcy76cdFrg6ehHs2BZgzGjrGy6PdwFFmxNqz2+PHanhdxBs27tkQeQ5FhRJvakKWcX8+iz6RS3tbciA5awUZybdj58mvYQ7nK5rEjR73GToeiw1UezecbBi7cQAhEwk6EiwixCTGILmL2fgs3qiQk4T6aY2nxbLlCBoHDhw/jqaeexH0//QnCzS1Y3dUFGzv788/vof6ZxGj/IVxz7c0UpbwUneLkHOTywjZEQy3lWddOxUk8KurahabmTvyvT/4x/uxzn0ciXVBc+zN/8hl84fNfmDUS/I1A7Z509kkx6UpsFKgHB0M+uBv9WLeqk5XkVJ7ws7qupmrmM8QXmm0LWezv2Yczm7pw89k3kgqoHA/1Y3/uR9iwZQvIM0AnOvzt7ciTAFLxMd7vYPEevLkrjb37D6lKd1JW8wY9JLaFcTZVchztNNTQxGI+ZxbBzHFdyw3HjvXgzn/5JsXMqOIGZ597Pt1URRpeSmgM2ykhOLHr2ReRGn4Z5519Jlpa2znQBJDLp40S7OwPHkUwTjuJJx+n8cXOQc2B9Ru24LN/8r/w2f/9BWSoWx47dgz/9K1v4o8+8Yc41ZPDanq6jKaFfEGxUC/1iGw6g76BEbR31bMSqZjTgjXadwidwQsR8NtYiQ46ExN44JlHEY7sw2r/O6mjRGGnA7DE0SXc6J2Q7YU5j8aGSSolZbGy0VoGWrv6qAw2umW+iR3DQ2PwJzxU6BdGtDnZE5GWmoUrTYLf9+oruP+BB/D8rufQ2taGjezMKRKILXaUljzqZbYVHPVHsG7dGrR3tNDZexj33vNdrFz/JopQHYoohGPY7WU/VIGGGzu5iMMug2dCKe3PPn4f7vnRf9BBm6Hp3odVq9dgz54X8Ddf/Qr+8BP/85QSSU3h7uKlFqVV+m7BRUtGOoGG+mbQzoSMiEzUJVwjWYw88l282Ho9YuzHqRceRMvWN2ODpxexPbuRPnoUQXKCRHsT8p6CMhvbnSKCSczVZIi6OCCVw4XXC6msIpvm9jD81Hvc/hN1j/lA+0NOJiSWaylAfD0vv/Iq7nvgQex67hmli117/btp1IhjNBLBOEXNTl8Cb94Yx78/lsO2C66Cj76pPS+8iIbW9dj73CP4v3/7p/jI//xrGkfq2MF9LDOtBiDRPUqlstLef/wI/un/fgX79+3DitXrsHHzJg6SHRRlx/Hed70LDz54LwllN84//804VZg3gchIL5StYrH4z+1wI0N2O5hPIkxvd9EmptmShF0hlrMjRU4zOE5lvW0jevpHWVlOnOsrm/729UZQ39QADyvQ7uY9JIyCmTjYccdjVOL6hzAwOg6bm6IQpZl6EpEnZUewUB75p+IAMmqLdUvEJdEV9EQuPRlKvkGIXHvJp4KxCsYJIpYkuVdP7qpmzkqtU5NPNsTa9OgvfoGnn92F/oFBKtNFrKKOURduxPHjvbj+HddwYEzgO9/5Hh4/FEFvXx6bz92EYz3HsG7tStTRiheNjuOs86/As08+hH/5xhfx3//wS2WxyikREjTmsJ/0HH0V3/23v8cTTz6DjvaVOP+iq7Buy9kYHI7QIplCdHSQBPoKmlub0EofyqnEvAlEOofI3yPjI2Ull4SQpEc8Ek+oeCk7nXwulj5OL7gzRQvP2ONIOuvhqQ/Ay44YyYeRdsaRX78W9uYOHB2ms47KdjOv+wIy9aOkfCuZSBRHoykq7S4k6qm8bwgiRdNi1lVA7/gYAgUPBqMx1fGnm3moHXhaRzDrCnrWofaiTwchrkoi0Peaj2cS08xWsMWIr3397xAdi3BwsmHdmlUSZoe8hOuw/np6j+PRRx/Ciy++SJNsEvHxKEZDq9BLQlqxcjV1E7Yl9cvGxgZKFmO48C2X47UXH8Mzv/wvXPC2GylNOGmhjODHP/0W/uPu76M+3IQrr34vWjtWcxAtKoNIT/cRDA70kYhsWLniQlxzza00nZ/aOTQ1C3d2NfKyc2TzKvLRT7Os9FMbyuEbJeoKkqfVEcVYsI0juQt1oTqOyD5EvBKnNYqRLB2KoSCSzJdlBa2gPuNsbUG0QNGrsQvBdh9GqBz2dh9Ha0MYW7po0RofwnESDyQKN1C2Hh2luCbmQbPifLKhJ1gJd9DWsKWK1pY2vPWS7Vi5ciW+/vWv4ZZbbsZTTz9NbnKcRFPEQz9/mAq2TQV3Clf+/Q9/GINDEXKCJ9ixh/A/PvIHeOGFXWhr62Sb01TftBL3UrcINrTi0P79+O63v0ODjpOcYQ22v/16JOkwdnr9OPzKy3jp5RfR2EAxm1zmkosuxfvfvzjis2omkDxFp1Q0DQf9EQWKWKP0fXTSvPvsS/tRHwygycfRu+TC8MA4ckGnmn8u4ev+hlUY6utGU30ISW9OWTRSmSy8Gzcj7fdRQcxSfg2iu7sP59G2Hk6m6HXfxuN9GDowgmQ8o0aefIamZHuZGGU2oUTiiqwvYpFwORGLTqb5VUy+aiAw5ugvZWzf/jZ87/vfxgXbzoJYrr/85S+jY2UXzjrrHOyikt57bIDE045r33Etz52tFO8XX3oFz1Mku+76d+GFF/dh/fpNrPschoejCLduwBO/ehif+7O/pBuAFs76Vlq/LoSXA+Tx/sGJ+TZHDx+Cz+vhfRm8/3034frr34nFgto5CNmFi1Yll9eFDB1AiVQc2SGacfsOY9Omtagv2BX7PZKiojbUDSdNwB31VMLHnkFdY1ApZMJePQ11dCwVcehID9weNxrC9crk98rRw7j+3b9Z1hdo/ThwcC9+/szTkOAVmTNiE726aJvonBJaIuKQjOQiEmmz7cmCFqmWw1I8wjnOPXcbfk495LHHnsB7b3gfNm2gztg3gLFoBO9+97twzdVvp6VyGAdoao/ExunHaMbbLrtChYv0DfTTrJvBJRdfiAMHDnNg8iNQ34H+noO47tr3o3PdJopoL8FGcfhFOhglxm5opI9ilF9ZtT7/+b9UYuhiqsvaQ034zyFRs+QeYZnZl86j97Uj6GrrQPLQKB4+HoGLHT7MkXZNyIk1jezUxTH0jQzCTuehxO0kOerni+KNt6vJVknqMVl2+Aw5Q5bWjzv+4a9x3pkX03v7Gn7+BNk8HY+pCF31fjqhsiVlFZEwj+Hh8qQqcegJQUnSBKLnm8uILxxFRAQhpEoCEg4kSSZLCfHLPebwleWOKy6/Eke6j+H3z9lKg2EG73jH1ezUL7NOY3DZ0tj10ovoOT7EwUwmwuVUqInP60YAIYxHR5XVS/QWv9erOEK4sYmWxnpEZXrP4aOIRaP45fPPob4xhKHRPvrL1pKgLsUHbrq5pnXNThYWINzdDqerbKUaGKROwA6bpoiVISdJtK4mZ6GIRa9GKOhipdHSRZ8HGQ2OD/biVZr5VnDEV5agjJ2kli8vt8N0PDqGdD6rnICxaNk8+jwbZ1CifcfSCFGZH8+kaVb2I1cqy/3S+UUPEGLR1iURtfQSQuKZlfMiDlUGNmpIuIrElMEYxfTSRjPZ4oUQF/vMuGoh33nLjTfye2Q9sIxy5J177jkYHhnA4796ku2RQYIDWJIEc/x4t7JCSp6NG87EEBX2t158MQfDoBpgxsfj9GnUqYlpx3u6mb+HAyJFZzqTUyzjA++5EZdf8XasXr14t8ms3QMjHYxOioCHzh8eOoK0GpEQkqkiDg8dp4OwDm9as5JKewEvHDyAM1Z10WEofpIiHEUHBkZiKiLYVSyvf+Wk6StBh6BMxZVVS+KjEeTpRPzJvd/Frv2vIJbKob45iJKEr9jcKpjR5Sx3TmORaBWEKISgJ0CJAi0+G+Ei8rfY9UX+FcuXdG5pTGlEIYQGmpDT/Ltu3dqJZYjkPuE4Up4OMxEuoydj6QWRlwvq6sIkgAgNHuVoZ6nL9es28Juz2HfgILq6gnjsF49S/8uIdMt2LODokYO46qpryE2cigPlunuwZuUqvLT3ebQ0NNI7fliZ/G0czIK+enz56/+oxOHFLprWHqxIZ6AQiQ8e2Cny5JXfIUnLkh+FXBbDgwNIt7XAW09b+tAoGlkpnU1t9KgPY5zm4AJNenVZdvZCWUzL0eFYdNtoLXGWzaYs3kkTr8tdnlrrgayUSJ2DVjMJccmJ4zBfNrfK6CcEING2elVGvbqiEIEQgJ4kJR1drmkFXnf8IonGK8sUGb4OEa3UXHiDQ2iOY6y1O+E/kePlFGri84fpIe/hNxWoiO/B4YMH8f27/wtbz7sITeEANm/egldefgljNPfmqJR7aI3q7R9UE+bWrdtIgujGa6+9giSv96eiyCQT5ETnK33lirdfiaWCBQh3LyplOUJFu6hG/RItR95yrJRHlGWKU8Njam55c1NI6Rs5DiUZWqXEV+InYdgL5ajgAv1oZCocZWzw2p1qMk3BbliIJDK0WF5MweayKyJJx9NqWq9MxNIdVzqrcAbp0NJptWikO7x21umRsXJNXsUQDVOtCqUhQcnyqHKviG6Vvgxtwar0iSx1yHcJJ3npxd340V3fxsHuXnR0dCku2trSgU0bAypwkdo7Vq5ah44VnVi3fh36e3vw0AP3IcgBMkLR2MkBMDKUwB985GO45NLtp9zxN1csAAcpByuKEySbENMsRZRkjooZxR8RPaiBRBMj2He8hJXN7ZC5tDkqIUU1T7csRtENSE4indOm7Odiay8qwrNzBMvSeViPFw8eRYi2wuRYjEo6fS0U6Ty8O5fMlmO1DMKQBtQKuIzoQih6CVMtgpnX/hVRSTr9BOEUEnyHvCpPe8jb29tfp2OYp+m+EWEqpwJebwjnnHsRxpI2/Ppv/C7FrHUUmT1qlZr7HnwIm7dsoPgLbDpjMzrot3rphedp8n0aDc1htb5xjn6OjV2b8KVv/RUappjRuRRQux+EptkkfRsl1lSw3kvlPK86fpqs2SMLMbDjCcGMjx1XIQnXb79MzZcVu7f0KWHPSTtNtrJUUKYIL4nEQSIRRdlG3aLAjvkqlbtBmhRXBJuQSxcovlH04bOLEg3qcai5Iloc0jMEzRBOYA5bl2PhLOZpuNrBZ/OFydHyE9xDyhP9Rf6W/JojmZ2Ceh3g5cZFBMroUVcPL0VfsSwePPAKjTGD/O1Gmu1+7rln01ASwg//8wfU40ZRT3N9iSLvxfSkX375FbjkrZee8ojcWlD7mxegOrSbJlwVXuL2kUiyalqs6M6RCH0c9JEI0XhIFAePHUJqaJjWL474VO7qnD40+gJqedKRwjicJLQQ2bPoK71jo+QW1CvYAVvr/BzdizhzfQds5Cw9VN5FFHIXZf57eZ64+FOkMYQzCKfQeoXoGXIs1/UUWT0LUPJrK5Tkz8VkqaIkfG2tqsysWigiqAhMcxWBjumS+6Xs5WoGlnq55cYPIDV2DA8/eC8e+eXjJIwCzbTNSt944P4Hse3cTdRZnOT6dbRWhnHDe27ArTt+Z1n4hmqfk85KsskccVqXZI2rcXYuW94ON4lCiEBWPbRTBMvEJI6ppBZ4sPG8OPgcvC9DcebsTedjc9da7NnzDG3jYzh09DiGc3GsaGvCqNjfxQgg4SQ2J0I2D/wUrsZ9aQxH2eF9DrU+lnAQsYpoRd0MrXvo81pJr4QKQKT3X5IWmbSCrleZ16OhWUnXMxmXkyXLjKuvfgdu//Qf4/FnXsBV/Hs/LVmHjx5DhGb2lpY6jJJz+Lz1uOnG38SFF5ZXLlkumDeBSGeQ2XeihZ9NBe3Y8CgiCTrYgj5lDgyEPGptXRntS1TEXQF6z0kQDd4gFfpxOhQLSNIm7mAH27NvL554/hl0rViJgz29MikT68KtSkHvjg6R0KjMh/wqyHGEolauPgia4+kLoc+CYpbPUR7VT8YovpBTP4VrLUXIILCDHCFKv8YXvvAF7N69Gx/+gz/AFZddgt/7nd9BKpnGCpp0JVBRvOfLCfMmEBFLlH+Ao8iTe2kbb2nCxmbK/j47R/ZydK2NinQqnVIWjTz1EFmJpMkdxNHoOOK0YtWFqLNQFpPgN9H2n937AnX4IkWuOsR5Xx/FqCi94i2djRiJxtFGWdjmsqlrwjVCJeocySLKGv/ix1I2A2/etBlXXnEZPvnJj9NwkcU//+M3cA697dqKt1x3vZo3gYglSIIDY+lxhNoDGCah7Nvbi01rOrGqpQHHRkeQprXKT7FG1lDMyJpYNN0Ok+sMkIDCEoJOohA9oqOlHhE67kS8l5XeQ0F6rmkWtjf6UB9PYSgRRRO5hk/mM9NLn6PJVxaZs+dopqVDsm+wvO/GQlmSzMr2QnrIzWtsLUXceOMtuOCCC2nmbaXOMblKzHLeEq4mHURkcj8dROe/6W3suDSpnllQXnRZxGrbinV0CoaoQ9Dvkc6prRAcPifWNbbhnOI2RNNxxKIJbFq7GsPDEbStphIvliafRy10LcQkazYm+/qRJEF4iuVwEVm4OkMOImHRXjoQj49EsG1beaHo+TaUjOx60pTevk30FYnpEh1EruntEfRoqVdg1Ap+NSuaLIeOtGbN4lq36mSjZiW9pakVn/ztj9LUaisvd2gXXwaUd1uib+Vvia0SE6Hb7VHm3BJHfrFoqUUdxNPtMGbz6Q4knEBHycqic+QabodT3e9WMwCzSLE8yVagn6UuWKd0ovmaWeXZZsW+aKzUaO74euahGebJVvo+C8sLsxIIO88YR83wdKOfh512w7oNeCMhwSGVO36cLB/EQnX6BXQkztgeFqpDte1RTXzx7qr2GbQwI4yYsB+hduy2NgOtHdKnOfjN2h6zEghH5h0sbExHrVqYG/SKi0wy8n8cNULaQ8qSMq32mDv0zE+K0FW1h/BpCcY/OlOmvr6+LiqvX+WfN8DCnCAiKkeq3WyMHR0dHUdmyS7ey9gseSQ0v4v6kdUe8wDbYYxtslsGGvq4jsySfc3EfxYWBaxtcBcX1iy+OY4WLCwiWARiwcIMsAjEgoUZYBGIBQszQAKNZI+yaBV5ZQO5HUyPmc7dxiTr5shGDu1M/age4l38MNN1TN1MWeP4aaOseBX3mt9F3i1klDUbthnpQBXPEtxkvN8oTi48xnOqgby/1P9FTNtRrnuZAWauU3nfL1bkMX+DXJMJ4m9ienkOz4bx7KeNv3X9vJdpN8p1Csxc3lbjPXdj8ULt31etFUs+5qdMep+xduP4OuNcuyltxWQlBSuONf5uir83GOkO41ef21px71bj2VtNz9DvMtUzN5jOwfS+lzLdXpHP/N4bTOeCpl/z+5ifVesebHOxYl2Hye/V+Jbp7x8Yv3cYv8GK6+Zr8u5fNJ0318MG0/3tU9y7w0g6b9C4dqkpr7ludNk3Mn0JixtztmLtRHm0EEil3Gf8LaOTjGjSYNeiXAm3Gdek4oPGsbkDlYyypLI+avzeZMoTxGQn2IDJRtC4z3iufv5O428p53bjfv27wyh7u6m8bcY1/bzbjPPXmfLeZpR3namcG03v0276vi+idgKZK/RgpAm2z3hXOV+5uK1wyek8i/3Gdd1O+vu2YrLedblm7DDuudM4NrexuS62Y5J4bjKedzeq8PmcasyVQIQdmkeUA9PkkY+XCtcNt9H4NQdtfQzlBjWPQPr+fuP3WqMcGVm3VzxHzuuRSUYrTazSkHehLH49ZjxT8koj7sSJjbzb+AZd1v1GPv3e9+NEMU7wL8Y5yb/NlGequjjZ0Bxbd8bPoEwElaP67Ua6c4ay9GAhddlhnNNiqCbC3dM834x+TLafhh7MzAPZksB8onnlw6Wy5UNni5iTjieVJRUUxKSOIn9vN85L5/oWJjt45f07jd+prgshyKgljdhhugem51QD8z0LISq9UZC2uN/421ynck7qVAhC6uYvZilHE4fu3Lqudb3cjqn1SylXOOoOzEx85sFstndZVJiPFUsqT0al+6vIK40jFSts1cwldIVJxUsH31Vxn9YP7sSkeLR1ivKlg+hOYX6/HZgUj2ZSAuOYFA8PmN7na6gOQrzXGvdsxRsP4ZaaO2idSX9DNSP1Rrz+m6W+dJ1r7itl3zVNGXfj9XrZfkyK2BrT3b/o8UaEmgTncS1YRZ75PnOhnqM75ULpIAsValLreywEB10qXHgmWLFYCwDNQS5F7bBisRYXLAJZZLAIZHHBCla0YGEmWARiwcIMsAjEgoUZYBGIBQszwCIQCxZmgEUgFizMACGQIixCsWChEnb9n8TsW/Z3CxZOhEQCJIVAZI9lWahQiMTiJBZOdwgN1BspoqNxJapXZqP5YOFUQpZMT8DCqYSoHCJVCePI/38dFJWAHLr/9wAAAABJRU5ErkJggg==", "public": true } + ], + "scada": false, + "tags": [ + "iot hub", + "widgets", + "solution templates", + "device library", + "marketplace" ] } \ No newline at end of file diff --git a/ui-ngx/src/app/modules/home/pages/widget/widget-types-table-config.resolver.ts b/ui-ngx/src/app/modules/home/pages/widget/widget-types-table-config.resolver.ts index c4152106df..dfca3ed83c 100644 --- a/ui-ngx/src/app/modules/home/pages/widget/widget-types-table-config.resolver.ts +++ b/ui-ngx/src/app/modules/home/pages/widget/widget-types-table-config.resolver.ts @@ -90,27 +90,6 @@ export class WidgetTypesTableConfigResolver { entity => checkBoxCell(entity.deprecated)) ); - this.config.addActionDescriptors.push( - { - name: this.translate.instant('dashboard.create-new-widget'), - icon: 'insert_drive_file', - isEnabled: () => true, - onAction: ($event) => this.addWidgetType($event) - }, - { - name: this.translate.instant('widget.import'), - icon: 'file_upload', - isEnabled: () => true, - onAction: ($event) => this.importWidgetType($event) - }, - { - name: this.translate.instant('iot-hub.add-from-iot-hub'), - icon: 'store', - isEnabled: () => true, - onAction: (_$event) => this.addWidgetFromIotHub() - } - ); - this.config.cellActionDescriptors.push( { name: this.translate.instant('widget.export'), @@ -160,6 +139,30 @@ export class WidgetTypesTableConfigResolver { resolve(): EntityTableConfig { this.config.tableTitle = this.translate.instant('widget.widgets'); const authUser = getCurrentAuthUser(this.store); + this.config.addActionDescriptors = [ + { + name: this.translate.instant('dashboard.create-new-widget'), + icon: 'insert_drive_file', + isEnabled: () => true, + onAction: ($event) => this.addWidgetType($event) + }, + { + name: this.translate.instant('widget.import'), + icon: 'file_upload', + isEnabled: () => true, + onAction: ($event) => this.importWidgetType($event) + } + ]; + if (authUser.authority === Authority.TENANT_ADMIN) { + this.config.addActionDescriptors.push( + { + name: this.translate.instant('iot-hub.add-from-iot-hub'), + icon: 'store', + isEnabled: () => true, + onAction: (_$event) => this.addWidgetFromIotHub() + } + ); + } this.config.deleteEnabled = (widgetType) => this.isWidgetTypeEditable(widgetType, authUser.authority); this.config.entitySelectionEnabled = (widgetType) => this.isWidgetTypeEditable(widgetType, authUser.authority); this.config.detailsReadonly = (widgetType) => !this.isWidgetTypeEditable(widgetType, authUser.authority);