diff --git a/src/main/java/com/nis/web/controller/dashboard/ConfigStatisticsController.java b/src/main/java/com/nis/web/controller/dashboard/ConfigStatisticsController.java
index edecb93cb..2b5bd6aa9 100644
--- a/src/main/java/com/nis/web/controller/dashboard/ConfigStatisticsController.java
+++ b/src/main/java/com/nis/web/controller/dashboard/ConfigStatisticsController.java
@@ -80,7 +80,11 @@ public class ConfigStatisticsController extends BaseController {
model.addAttribute("endDate", now);
}
}
- model.addAttribute("concent", concent);
+ if(StringUtil.isEmpty(concent)){
+ model.addAttribute("concent", "3");
+ }else{
+ model.addAttribute("concent", concent);
+ }
model.addAttribute("detail", detail);
model.addAttribute("dimension", dimension);
model.addAttribute("area", area);
diff --git a/src/main/resources/messages/message_en.properties b/src/main/resources/messages/message_en.properties
index d695f6893..97b6e622a 100644
--- a/src/main/resources/messages/message_en.properties
+++ b/src/main/resources/messages/message_en.properties
@@ -1603,7 +1603,7 @@ hour=Hour
year=Year
chart_type=Chart Type
line_chart=Line Chart
-bar_chart=Bar Chart
+column_chart=Bar Chart
pie_chart=Pie Chart
statistical_content=Statistical Content
statistical_detail=Statistical Detail
diff --git a/src/main/resources/messages/message_ru.properties b/src/main/resources/messages/message_ru.properties
index 2f7f87345..685264f9e 100644
--- a/src/main/resources/messages/message_ru.properties
+++ b/src/main/resources/messages/message_ru.properties
@@ -1605,7 +1605,7 @@ hour=Hour
year=Year
chart_type=Chart Type
line_chart=Line Chart
-bar_chart=Bar Chart
+column_chart=Bar Chart
pie_chart=Pie Chart
statistical_content=Statistical Content
statistical_detail=Statistical Detail
diff --git a/src/main/resources/messages/message_zh_CN.properties b/src/main/resources/messages/message_zh_CN.properties
index fb875e50a..c258c6010 100644
--- a/src/main/resources/messages/message_zh_CN.properties
+++ b/src/main/resources/messages/message_zh_CN.properties
@@ -1548,7 +1548,7 @@ format=\u683c\u5f0f
file_is_used=\u7b56\u7565\u88ab\u5f15\u7528
none_profile_tip=\u8bf7\u9009\u62e9\u6587\u4ef6!
#---------------------------pxy intercept------------------------------------
-min_should_less_than_max=\u6700\u5c0fSSL\u7248\u672c\u5e94\u5c0f\u4e8e\u6216\u7B49\u4E8E\u6700\u5927SSL\u7248\u672c
+min_should_less_than_max=\u6700\u5c0fSSL\u7248\u672c\u5e94\u5c0f\u4e8e\u6216\u7b49\u4e8e\u6700\u5927SSL\u7248\u672c
exclusions_ev_cert=\u6392\u9664EV\u8bc1\u4e66
exclusions_cert_transparency=\u6392\u9664\u8bc1\u4e66\u900f\u660e
exclusions_client_cert_req=\u6392\u9664\u5ba2\u6237\u7aef\u8bc1\u4e66\u8bf7\u6c42
@@ -1603,7 +1603,7 @@ hour=\u5c0f\u65f6
year=\u5e74
chart_type=\u56fe\u8868\u7c7b\u578b
line_chart=\u6298\u7ebf\u56fe
-bar_chart=\u6761\u5f62\u56fe
+column_chart=\u67f1\u72b6\u56fe
pie_chart=\u997c\u56fe
statistical_content=\u7edf\u8ba1\u5185\u5bb9
statistical_detail=\u7edf\u8ba1\u660e\u7ec6
@@ -1626,12 +1626,12 @@ ssl_client_side_version=\u5ba2\u6237\u7aef\u4fa7SSL\u7248\u672c
ssl_cert_verify=\u8bc1\u4e66\u6821\u9a8c\u7ed3\u679c
stream_trace_id=\u6d41\u7684\u8ffd\u8e2aID
ssl_error=SSL\u9519\u8bef\u4fe1\u606f
-import_built_cert_file=\u5BFC\u5165\u5185\u7F6E\u8BC1\u4E66
-built_in=\u5185\u7F6E\u8BC1\u4E66
+import_built_cert_file=\u5bfc\u5165\u5185\u7f6e\u8bc1\u4e66
+built_in=\u5185\u7f6e\u8bc1\u4e66
#---------------------------Object List Group Manage------------------------------------
ip_group_configuration=IP \u5206\u7ec4\u914d\u7f6e
-domain_group_configuration=\u57DF\u540D\u5206\u7ec4\u914d\u7f6e
-scriberid_group_configuration=\u8D26\u53F7\u5206\u7ec4\u914d\u7f6e
-common_group_manage=\u516C\u5171\u5206\u7EC4\u7BA1\u7406
-can_not_delete_issued_group=\u4E0D\u80FD\u5220\u9664\u5DF2\u7ECF\u88AB\u5F15\u7528\u7684\u5206\u7EC4
+domain_group_configuration=\u57df\u540d\u5206\u7ec4\u914d\u7f6e
+scriberid_group_configuration=\u8d26\u53f7\u5206\u7ec4\u914d\u7f6e
+common_group_manage=\u516c\u5171\u5206\u7ec4\u7ba1\u7406
+can_not_delete_issued_group=\u4e0d\u80fd\u5220\u9664\u5df2\u7ecf\u88ab\u5f15\u7528\u7684\u5206\u7ec4
#---------------------------Object List Group Manage------------------------------------
\ No newline at end of file
diff --git a/src/main/webapp/WEB-INF/views/dashboard/commonNew.jsp b/src/main/webapp/WEB-INF/views/dashboard/commonNew.jsp
index 31f3f1c8e..b14d8407a 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/commonNew.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/commonNew.jsp
@@ -14,7 +14,6 @@
-
-
+
+
+ <%--
+
@@ -193,16 +257,16 @@
--%>
-
-
-
+
-->
+ <%-- --%>
-
-
+
--%>
diff --git a/src/main/webapp/WEB-INF/views/dashboard/configStatisticTrans.jsp b/src/main/webapp/WEB-INF/views/dashboard/configStatisticTrans.jsp
index 43a707984..bd6d5b686 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/configStatisticTrans.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/configStatisticTrans.jsp
@@ -28,14 +28,13 @@
-
+
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newActionList.jsp b/src/main/webapp/WEB-INF/views/dashboard/newActionList.jsp
index 759af3d08..b53fd9638 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newActionList.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newActionList.jsp
@@ -143,7 +143,33 @@ function showActionTransChart(chartType,xData,series){
}
},
showInLegend: true
- }
+ },
+ column: {
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ },
+ line: {
+ allowPointSelect: true,
+ cursor: 'pointer',
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ }
},
series: series,
}
@@ -182,6 +208,11 @@ function showActionTransChart(chartType,xData,series){
chart.tooltip.pointFormat = "{point.y}| {point.percentage:.1f}%";
}else{
chart.tooltip.pointFormat = "\u25CF {series.name}: {point.y}
";
+ /* var a=JSON.parse($("#total").val())[0];
+ chart.tooltip.pointFormat =function(){
+ var b=this.y/a*100;
+ return "\u25CF {series.name}: "+b.toFixed(2)+"%
";
+ } */
}
}
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newActiveClientIPList.jsp b/src/main/webapp/WEB-INF/views/dashboard/newActiveClientIPList.jsp
index 85f160636..899bf9b92 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newActiveClientIPList.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newActiveClientIPList.jsp
@@ -459,7 +459,7 @@ function clientIPChart(rs,chartType){
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
}
},
- },
+ }/* ,
pie:{
allowPointSelect: true,
showInLegend: true,
@@ -478,7 +478,7 @@ function clientIPChart(rs,chartType){
}
},
},
- }
+ } */
},
credits:{//是否有水印
enabled:false
@@ -497,6 +497,53 @@ function clientIPChart(rs,chartType){
year: '%Y-%m-%d %H:%M:%S'
}
},
+ plotOptions: {
+ pie:{
+ allowPointSelect: true,
+ showInLegend: true,
+ point: {
+ events: {
+ mouseOver: function(e) {
+ this.slice();
+ },
+ // 鼠标移出时,收回突出显示
+ mouseOut: function() {
+ this.slice();
+ },
+ // 默认是点击突出,这里屏蔽掉
+ click: function() {
+ return false;
+ }
+ },
+ },
+ },
+ column: {
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ },
+ line: {
+ allowPointSelect: true,
+ cursor: 'pointer',
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ }
+ },
series: data
}
if(typeof chartType != "undefined"){
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newActiveClientIPTrans.jsp b/src/main/webapp/WEB-INF/views/dashboard/newActiveClientIPTrans.jsp
index 3a59c9bdd..bae667647 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newActiveClientIPTrans.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newActiveClientIPTrans.jsp
@@ -30,14 +30,13 @@
-
+
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newActiveServerIPList.jsp b/src/main/webapp/WEB-INF/views/dashboard/newActiveServerIPList.jsp
index 3ea075b36..736be9a31 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newActiveServerIPList.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newActiveServerIPList.jsp
@@ -459,7 +459,7 @@ function serverIPChart(rs,chartType){
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
}
},
- },
+ }/* ,
pie:{
allowPointSelect: true,
showInLegend: true,
@@ -478,7 +478,7 @@ function serverIPChart(rs,chartType){
}
},
},
- }
+ } */
},
credits:{//是否有水印
enabled:false
@@ -497,6 +497,53 @@ function serverIPChart(rs,chartType){
year: '%Y-%m-%d %H:%M:%S'
}
},
+ plotOptions: {
+ pie:{
+ allowPointSelect: true,
+ showInLegend: true,
+ point: {
+ events: {
+ mouseOver: function(e) {
+ this.slice();
+ },
+ // 鼠标移出时,收回突出显示
+ mouseOut: function() {
+ this.slice();
+ },
+ // 默认是点击突出,这里屏蔽掉
+ click: function() {
+ return false;
+ }
+ },
+ },
+ },
+ column: {
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ },
+ line: {
+ allowPointSelect: true,
+ cursor: 'pointer',
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ }
+ },
series: data
}
if(typeof chartType != "undefined"){
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newActiveServerIPTrans.jsp b/src/main/webapp/WEB-INF/views/dashboard/newActiveServerIPTrans.jsp
index 135acb7e9..1122edb42 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newActiveServerIPTrans.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newActiveServerIPTrans.jsp
@@ -30,14 +30,13 @@
-
+
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newAppTrans.jsp b/src/main/webapp/WEB-INF/views/dashboard/newAppTrans.jsp
index 578779c4c..03619941b 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newAppTrans.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newAppTrans.jsp
@@ -31,14 +31,13 @@
-
+
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newAppTypeList.jsp b/src/main/webapp/WEB-INF/views/dashboard/newAppTypeList.jsp
index c112c2cbc..ec1d8e6d4 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newAppTypeList.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newAppTypeList.jsp
@@ -515,7 +515,7 @@ function appTypeChart(rs,chartType){
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
}
},
- },
+ }/* ,
pie:{
allowPointSelect: true,
showInLegend: true,
@@ -534,7 +534,7 @@ function appTypeChart(rs,chartType){
}
},
},
- }
+ } */
},
credits:{//是否有水印
enabled:false
@@ -553,6 +553,53 @@ function appTypeChart(rs,chartType){
year: '%Y-%m-%d %H:%M:%S'
}
},
+ plotOptions: {
+ pie:{
+ allowPointSelect: true,
+ showInLegend: true,
+ point: {
+ events: {
+ mouseOver: function(e) {
+ this.slice();
+ },
+ // 鼠标移出时,收回突出显示
+ mouseOut: function() {
+ this.slice();
+ },
+ // 默认是点击突出,这里屏蔽掉
+ click: function() {
+ return false;
+ }
+ },
+ },
+ },
+ column: {
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ },
+ line: {
+ allowPointSelect: true,
+ cursor: 'pointer',
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ }
+ },
series: data
}
if(typeof chartType != "undefined"){
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newConfigStatistic.jsp b/src/main/webapp/WEB-INF/views/dashboard/newConfigStatistic.jsp
index 51bb2fe4e..3f30f300a 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newConfigStatistic.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newConfigStatistic.jsp
@@ -8,6 +8,7 @@
+ |
|
|
|
@@ -16,7 +17,8 @@
- | ${log.cfgId} |
+ |
+ ${log.cfgId} |
${log.cfgDesc } |
${log.sum } |
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newDomainTrans.jsp b/src/main/webapp/WEB-INF/views/dashboard/newDomainTrans.jsp
index 5dbb0067b..fd799a350 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newDomainTrans.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newDomainTrans.jsp
@@ -29,14 +29,13 @@
-
+
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newDomainsList.jsp b/src/main/webapp/WEB-INF/views/dashboard/newDomainsList.jsp
index bdcf4da5f..39f5e5abe 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newDomainsList.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newDomainsList.jsp
@@ -507,7 +507,7 @@ function webTypeChart(rs,chartType){
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
}
},
- },
+ }/* ,
pie:{
allowPointSelect: true,
showInLegend: true,
@@ -526,7 +526,7 @@ function webTypeChart(rs,chartType){
}
},
},
- }
+ } */
},
credits:{//是否有highcharts水印
enabled:false
@@ -545,6 +545,53 @@ function webTypeChart(rs,chartType){
year: '%Y-%m-%d %H:%M:%S'
}
},
+ plotOptions: {
+ pie:{
+ allowPointSelect: true,
+ showInLegend: true,
+ point: {
+ events: {
+ mouseOver: function(e) {
+ this.slice();
+ },
+ // 鼠标移出时,收回突出显示
+ mouseOut: function() {
+ this.slice();
+ },
+ // 默认是点击突出,这里屏蔽掉
+ click: function() {
+ return false;
+ }
+ },
+ },
+ },
+ column: {
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ },
+ line: {
+ allowPointSelect: true,
+ cursor: 'pointer',
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ }
+ },
series: data
}
if(typeof chartType != "undefined"){
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newProtocolTypeList.jsp b/src/main/webapp/WEB-INF/views/dashboard/newProtocolTypeList.jsp
index e644d3b60..00b0e9461 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newProtocolTypeList.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newProtocolTypeList.jsp
@@ -511,25 +511,7 @@ function protocolTypeChart(rs,chartType){
}
},
},
- pie:{
- allowPointSelect: true,
- showInLegend: true,
- point: {
- events: {
- mouseOver: function(e) {
- this.slice();
- },
- // 鼠标移出时,收回突出显示
- mouseOut: function() {
- this.slice();
- },
- // 默认是点击突出,这里屏蔽掉
- click: function() {
- return false;
- }
- },
- },
- }
+
},
credits:{//是否有水印
enabled:false
@@ -549,6 +531,53 @@ function protocolTypeChart(rs,chartType){
year: '%Y-%m-%d %H:%M:%S'
}
},
+ plotOptions: {
+ pie:{
+ allowPointSelect: true,
+ showInLegend: true,
+ point: {
+ events: {
+ mouseOver: function(e) {
+ this.slice();
+ },
+ // 鼠标移出时,收回突出显示
+ mouseOut: function() {
+ this.slice();
+ },
+ // 默认是点击突出,这里屏蔽掉
+ click: function() {
+ return false;
+ }
+ },
+ },
+ },
+ column: {
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ },
+ line: {
+ allowPointSelect: true,
+ cursor: 'pointer',
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ }
+ },
series:data
}
if(typeof chartType != "undefined"){
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newProtocolsTrans.jsp b/src/main/webapp/WEB-INF/views/dashboard/newProtocolsTrans.jsp
index 7a8cd5645..a05e07419 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newProtocolsTrans.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newProtocolsTrans.jsp
@@ -31,14 +31,13 @@
-
+
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newSubscriberIDList.jsp b/src/main/webapp/WEB-INF/views/dashboard/newSubscriberIDList.jsp
index 2c8873799..2d733994f 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newSubscriberIDList.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newSubscriberIDList.jsp
@@ -459,7 +459,7 @@ function subscriberIDChart(rs,chartType){
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
}
},
- },
+ }/* ,
pie:{
allowPointSelect: true,
showInLegend: true,
@@ -478,7 +478,7 @@ function subscriberIDChart(rs,chartType){
}
},
},
- }
+ } */
},
credits:{//是否有水印
enabled:false
@@ -497,6 +497,53 @@ function subscriberIDChart(rs,chartType){
year: '%Y-%m-%d %H:%M:%S'
}
},
+ plotOptions: {
+ pie:{
+ allowPointSelect: true,
+ showInLegend: true,
+ point: {
+ events: {
+ mouseOver: function(e) {
+ this.slice();
+ },
+ // 鼠标移出时,收回突出显示
+ mouseOut: function() {
+ this.slice();
+ },
+ // 默认是点击突出,这里屏蔽掉
+ click: function() {
+ return false;
+ }
+ },
+ },
+ },
+ column: {
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ },
+ line: {
+ allowPointSelect: true,
+ cursor: 'pointer',
+ dataLabels:{
+ enabled:true,
+ color: '#5B5B5B',
+ formatter:function () {
+ var total=JSON.parse($("#total").val())[0];
+ a = this.y/total*100;
+ return a.toFixed(2) + "%"
+ }
+ }
+ // colorByPoint: true
+ }
+ },
series: data
}
if(typeof chartType != "undefined"){
diff --git a/src/main/webapp/WEB-INF/views/dashboard/newSubscriberIDTrans.jsp b/src/main/webapp/WEB-INF/views/dashboard/newSubscriberIDTrans.jsp
index 6643872c4..42aef4851 100644
--- a/src/main/webapp/WEB-INF/views/dashboard/newSubscriberIDTrans.jsp
+++ b/src/main/webapp/WEB-INF/views/dashboard/newSubscriberIDTrans.jsp
@@ -30,14 +30,13 @@
-
+