You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by ts...@apache.org on 2015/05/17 08:51:27 UTC

[07/26] drill git commit: spotfire server doc

spotfire server doc


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/6244940a
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/6244940a
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/6244940a

Branch: refs/heads/gh-pages
Commit: 6244940acf6163c255417c911fdc07dc3f33f9b8
Parents: 10e158f
Author: Bob Rumsby <br...@mapr.com>
Authored: Thu May 14 17:31:54 2015 -0700
Committer: Bob Rumsby <br...@mapr.com>
Committed: Thu May 14 17:31:54 2015 -0700

----------------------------------------------------------------------
 _data/docs.json                                 |  75 ++++++++++++++++---
 _docs/img/spotfire-server-client.png            | Bin 0 -> 48430 bytes
 _docs/img/spotfire-server-configtab.png         | Bin 0 -> 76152 bytes
 _docs/img/spotfire-server-connectionURL.png     | Bin 0 -> 47664 bytes
 _docs/img/spotfire-server-database.png          | Bin 0 -> 36204 bytes
 _docs/img/spotfire-server-datasources-tab.png   | Bin 0 -> 49236 bytes
 _docs/img/spotfire-server-deployment.png        | Bin 0 -> 22058 bytes
 _docs/img/spotfire-server-hiveorders.png        | Bin 0 -> 62537 bytes
 _docs/img/spotfire-server-importconfig.png      | Bin 0 -> 32739 bytes
 _docs/img/spotfire-server-infodesigner.png      | Bin 0 -> 69950 bytes
 _docs/img/spotfire-server-infodesigner2.png     | Bin 0 -> 36991 bytes
 _docs/img/spotfire-server-infolink.png          | Bin 0 -> 126884 bytes
 _docs/img/spotfire-server-new.png               | Bin 0 -> 23290 bytes
 _docs/img/spotfire-server-saveconfig.png        | Bin 0 -> 188740 bytes
 _docs/img/spotfire-server-saveconfig2.png       | Bin 0 -> 32622 bytes
 _docs/img/spotfire-server-start.png             | Bin 0 -> 54541 bytes
 _docs/img/spotfire-server-template.png          | Bin 0 -> 155705 bytes
 _docs/img/spotfire-server-tss.png               | Bin 0 -> 43564 bytes
 .../065-configuring-spotfire-server.md          |  61 +++++++++++++++
 19 files changed, 124 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_data/docs.json
----------------------------------------------------------------------
diff --git a/_data/docs.json b/_data/docs.json
index 28fb349..ec323dc 100644
--- a/_data/docs.json
+++ b/_data/docs.json
@@ -1226,6 +1226,23 @@
             "title": "Configuring Resources for a Shared Drillbit", 
             "url": "/docs/configuring-resources-for-a-shared-drillbit/"
         }, 
+        "Configuring Tibco Spotfire Server with Drill": {
+            "breadcrumbs": [
+                {
+                    "title": "ODBC/JDBC Interfaces", 
+                    "url": "/docs/odbc-jdbc-interfaces/"
+                }
+            ], 
+            "children": [], 
+            "next_title": "Using Apache Drill with Tableau 9 Desktop", 
+            "next_url": "/docs/using-apache-drill-with-tableau-9-desktop/", 
+            "parent": "ODBC/JDBC Interfaces", 
+            "previous_title": "Using Tibco Spotfire with Drill", 
+            "previous_url": "/docs/using-tibco-spotfire-with-drill/", 
+            "relative_path": "_docs/odbc-jdbc-interfaces/065-configuring-spotfire-server.md", 
+            "title": "Configuring Tibco Spotfire Server with Drill", 
+            "url": "/docs/configuring-tibco-spotfire-server-with-drill/"
+        }, 
         "Configuring User Authentication": {
             "breadcrumbs": [
                 {
@@ -4578,8 +4595,8 @@
                         }
                     ], 
                     "children": [], 
-                    "next_title": "Using Apache Drill with Tableau 9 Desktop", 
-                    "next_url": "/docs/using-apache-drill-with-tableau-9-desktop/", 
+                    "next_title": "Configuring Tibco Spotfire Server with Drill", 
+                    "next_url": "/docs/configuring-tibco-spotfire-server-with-drill/", 
                     "parent": "ODBC/JDBC Interfaces", 
                     "previous_title": "Using MicroStrategy Analytics with Apache Drill", 
                     "previous_url": "/docs/using-microstrategy-analytics-with-apache-drill/", 
@@ -4595,11 +4612,28 @@
                         }
                     ], 
                     "children": [], 
-                    "next_title": "Using Apache Drill with Tableau 9 Server", 
-                    "next_url": "/docs/using-apache-drill-with-tableau-9-server/", 
+                    "next_title": "Using Apache Drill with Tableau 9 Desktop", 
+                    "next_url": "/docs/using-apache-drill-with-tableau-9-desktop/", 
                     "parent": "ODBC/JDBC Interfaces", 
                     "previous_title": "Using Tibco Spotfire with Drill", 
                     "previous_url": "/docs/using-tibco-spotfire-with-drill/", 
+                    "relative_path": "_docs/odbc-jdbc-interfaces/065-configuring-spotfire-server.md", 
+                    "title": "Configuring Tibco Spotfire Server with Drill", 
+                    "url": "/docs/configuring-tibco-spotfire-server-with-drill/"
+                }, 
+                {
+                    "breadcrumbs": [
+                        {
+                            "title": "ODBC/JDBC Interfaces", 
+                            "url": "/docs/odbc-jdbc-interfaces/"
+                        }
+                    ], 
+                    "children": [], 
+                    "next_title": "Using Apache Drill with Tableau 9 Server", 
+                    "next_url": "/docs/using-apache-drill-with-tableau-9-server/", 
+                    "parent": "ODBC/JDBC Interfaces", 
+                    "previous_title": "Configuring Tibco Spotfire Server with Drill", 
+                    "previous_url": "/docs/configuring-tibco-spotfire-server-with-drill/", 
                     "relative_path": "_docs/odbc-jdbc-interfaces/070-using-apache-drill-with-tableau-9-desktop.md", 
                     "title": "Using Apache Drill with Tableau 9 Desktop", 
                     "url": "/docs/using-apache-drill-with-tableau-9-desktop/"
@@ -8172,8 +8206,8 @@
             "next_title": "Using Apache Drill with Tableau 9 Server", 
             "next_url": "/docs/using-apache-drill-with-tableau-9-server/", 
             "parent": "ODBC/JDBC Interfaces", 
-            "previous_title": "Using Tibco Spotfire with Drill", 
-            "previous_url": "/docs/using-tibco-spotfire-with-drill/", 
+            "previous_title": "Configuring Tibco Spotfire Server with Drill", 
+            "previous_url": "/docs/configuring-tibco-spotfire-server-with-drill/", 
             "relative_path": "_docs/odbc-jdbc-interfaces/070-using-apache-drill-with-tableau-9-desktop.md", 
             "title": "Using Apache Drill with Tableau 9 Desktop", 
             "url": "/docs/using-apache-drill-with-tableau-9-desktop/"
@@ -8605,8 +8639,8 @@
                 }
             ], 
             "children": [], 
-            "next_title": "Using Apache Drill with Tableau 9 Desktop", 
-            "next_url": "/docs/using-apache-drill-with-tableau-9-desktop/", 
+            "next_title": "Configuring Tibco Spotfire Server with Drill", 
+            "next_url": "/docs/configuring-tibco-spotfire-server-with-drill/", 
             "parent": "ODBC/JDBC Interfaces", 
             "previous_title": "Using MicroStrategy Analytics with Apache Drill", 
             "previous_url": "/docs/using-microstrategy-analytics-with-apache-drill/", 
@@ -10258,8 +10292,8 @@
                         }
                     ], 
                     "children": [], 
-                    "next_title": "Using Apache Drill with Tableau 9 Desktop", 
-                    "next_url": "/docs/using-apache-drill-with-tableau-9-desktop/", 
+                    "next_title": "Configuring Tibco Spotfire Server with Drill", 
+                    "next_url": "/docs/configuring-tibco-spotfire-server-with-drill/", 
                     "parent": "ODBC/JDBC Interfaces", 
                     "previous_title": "Using MicroStrategy Analytics with Apache Drill", 
                     "previous_url": "/docs/using-microstrategy-analytics-with-apache-drill/", 
@@ -10275,11 +10309,28 @@
                         }
                     ], 
                     "children": [], 
-                    "next_title": "Using Apache Drill with Tableau 9 Server", 
-                    "next_url": "/docs/using-apache-drill-with-tableau-9-server/", 
+                    "next_title": "Using Apache Drill with Tableau 9 Desktop", 
+                    "next_url": "/docs/using-apache-drill-with-tableau-9-desktop/", 
                     "parent": "ODBC/JDBC Interfaces", 
                     "previous_title": "Using Tibco Spotfire with Drill", 
                     "previous_url": "/docs/using-tibco-spotfire-with-drill/", 
+                    "relative_path": "_docs/odbc-jdbc-interfaces/065-configuring-spotfire-server.md", 
+                    "title": "Configuring Tibco Spotfire Server with Drill", 
+                    "url": "/docs/configuring-tibco-spotfire-server-with-drill/"
+                }, 
+                {
+                    "breadcrumbs": [
+                        {
+                            "title": "ODBC/JDBC Interfaces", 
+                            "url": "/docs/odbc-jdbc-interfaces/"
+                        }
+                    ], 
+                    "children": [], 
+                    "next_title": "Using Apache Drill with Tableau 9 Server", 
+                    "next_url": "/docs/using-apache-drill-with-tableau-9-server/", 
+                    "parent": "ODBC/JDBC Interfaces", 
+                    "previous_title": "Configuring Tibco Spotfire Server with Drill", 
+                    "previous_url": "/docs/configuring-tibco-spotfire-server-with-drill/", 
                     "relative_path": "_docs/odbc-jdbc-interfaces/070-using-apache-drill-with-tableau-9-desktop.md", 
                     "title": "Using Apache Drill with Tableau 9 Desktop", 
                     "url": "/docs/using-apache-drill-with-tableau-9-desktop/"

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-client.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-client.png b/_docs/img/spotfire-server-client.png
new file mode 100644
index 0000000..183488c
Binary files /dev/null and b/_docs/img/spotfire-server-client.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-configtab.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-configtab.png b/_docs/img/spotfire-server-configtab.png
new file mode 100644
index 0000000..9dbcfcb
Binary files /dev/null and b/_docs/img/spotfire-server-configtab.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-connectionURL.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-connectionURL.png b/_docs/img/spotfire-server-connectionURL.png
new file mode 100644
index 0000000..950d8cc
Binary files /dev/null and b/_docs/img/spotfire-server-connectionURL.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-database.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-database.png b/_docs/img/spotfire-server-database.png
new file mode 100644
index 0000000..e572596
Binary files /dev/null and b/_docs/img/spotfire-server-database.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-datasources-tab.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-datasources-tab.png b/_docs/img/spotfire-server-datasources-tab.png
new file mode 100644
index 0000000..9fbaa87
Binary files /dev/null and b/_docs/img/spotfire-server-datasources-tab.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-deployment.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-deployment.png b/_docs/img/spotfire-server-deployment.png
new file mode 100644
index 0000000..f537f40
Binary files /dev/null and b/_docs/img/spotfire-server-deployment.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-hiveorders.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-hiveorders.png b/_docs/img/spotfire-server-hiveorders.png
new file mode 100644
index 0000000..53ff7ed
Binary files /dev/null and b/_docs/img/spotfire-server-hiveorders.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-importconfig.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-importconfig.png b/_docs/img/spotfire-server-importconfig.png
new file mode 100644
index 0000000..cc42c1d
Binary files /dev/null and b/_docs/img/spotfire-server-importconfig.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-infodesigner.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-infodesigner.png b/_docs/img/spotfire-server-infodesigner.png
new file mode 100644
index 0000000..ab7f04f
Binary files /dev/null and b/_docs/img/spotfire-server-infodesigner.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-infodesigner2.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-infodesigner2.png b/_docs/img/spotfire-server-infodesigner2.png
new file mode 100644
index 0000000..5534aa2
Binary files /dev/null and b/_docs/img/spotfire-server-infodesigner2.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-infolink.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-infolink.png b/_docs/img/spotfire-server-infolink.png
new file mode 100644
index 0000000..7d4e2b7
Binary files /dev/null and b/_docs/img/spotfire-server-infolink.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-new.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-new.png b/_docs/img/spotfire-server-new.png
new file mode 100644
index 0000000..a52d39d
Binary files /dev/null and b/_docs/img/spotfire-server-new.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-saveconfig.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-saveconfig.png b/_docs/img/spotfire-server-saveconfig.png
new file mode 100644
index 0000000..466c2c8
Binary files /dev/null and b/_docs/img/spotfire-server-saveconfig.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-saveconfig2.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-saveconfig2.png b/_docs/img/spotfire-server-saveconfig2.png
new file mode 100644
index 0000000..563b973
Binary files /dev/null and b/_docs/img/spotfire-server-saveconfig2.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-start.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-start.png b/_docs/img/spotfire-server-start.png
new file mode 100644
index 0000000..cdb4075
Binary files /dev/null and b/_docs/img/spotfire-server-start.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-template.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-template.png b/_docs/img/spotfire-server-template.png
new file mode 100644
index 0000000..3ddd482
Binary files /dev/null and b/_docs/img/spotfire-server-template.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/img/spotfire-server-tss.png
----------------------------------------------------------------------
diff --git a/_docs/img/spotfire-server-tss.png b/_docs/img/spotfire-server-tss.png
new file mode 100644
index 0000000..d79ea2e
Binary files /dev/null and b/_docs/img/spotfire-server-tss.png differ

http://git-wip-us.apache.org/repos/asf/drill/blob/6244940a/_docs/odbc-jdbc-interfaces/065-configuring-spotfire-server.md
----------------------------------------------------------------------
diff --git a/_docs/odbc-jdbc-interfaces/065-configuring-spotfire-server.md b/_docs/odbc-jdbc-interfaces/065-configuring-spotfire-server.md
new file mode 100644
index 0000000..674929c
--- /dev/null
+++ b/_docs/odbc-jdbc-interfaces/065-configuring-spotfire-server.md
@@ -0,0 +1,61 @@
+---
+title: "Configuring Tibco Spotfire Server with Drill"
+parent: "ODBC/JDBC Interfaces"
+---
+This document describes how to configure Tibco Spotfire Server (TSS) to integrate with Apache Drill and explore multiple data formats instantly on Hadoop. Users can combine these powerful platforms to rapidly gain analytical access to a wide variety of data types. 

Complete the following steps to configure and use Apache Drill with TSS: 

1. Install the Drill JDBC driver with TSS.
2. Configure the Drill Data Source Template in TSS with the TSS configuration tool.
3. Configure Drill data sources with Tibco Spotfire Desktop and Information Designer.
4. Query and analyze various data formats with Tibco Spotfire and Drill.
+
+
+----------
+
+
+### Step 1: Install and Configure the Drill JDBC Driver 
+
+
+Drill provides standard JDBC connectivity, making it easy to integrate data exploration capabilities on complex, schema-less data sets. Tibco Spotfire Server (TSS) requires Drill 1.0 or later, which incudes the JDBC driver. The JDBC driver is bundled with the Drill configuration files, and it is recommended that you use the JDBC driver that is shipped with the specific Drill version.

For general instructions to install the Drill JDBC driver, see [Using JDBC](http://drill.apache.org/docs/using-jdbc/).
+
Complete the following steps to install and configure the JDBC driver for TSS:

1. Locate the JDBC driver in the Drill installation directory:  
   `<drill-home>/jars/jdbc-driver/drill-jdbc-all-<drill-version>.jar`  
   For example, on a MapR cluster:  
   `/opt/mapr/drill/drill-1.0.0/jars/jdbc-driver/drill-jdbc-all-1.0.0-SNAPSHOT.jar`

2. Locate the TSS library directory and copy the JDBC driver file to that directory: 
+   `<TSS-home-directory>/tomcat/lib`  
   For example, on a Linux server:  
+   `/usr/local/bin/tibco/tss/6.0.3/tomcat/lib`  
+   For example, on a Windows server:  
+   `C:\Program Files\apache-tomcat\lib`

3. Restart TSS to load the JDBC driver.
4. Verify that the TSS system can resolve the hostnames of the ZooKeeper nodes for the Drill cluster. You can do this by validating that DNS is properly configured for the TSS system and all the ZooKeeper nodes. Alternatively, you can add the hostnames and IP addresses of the ZooKeeper nodes to the TSS system hosts file.  
+   For Linux systems, the hosts file is located here: 
+   `/etc/hosts`  
+   For Windows systems, the hosts file is located here: 
+   `%WINDIR%\system32\drivers\etc\hosts`
+----------
+
+### Step 2: Configure the Drill Data Source Template in TSS
+
+The Drill Data Source template can now be configured with the TSS Configuration Tool. The Windows-based TSS Configuration Tool is recommended. If TSS is installed on a Linux system, you also need to install TSS on a small Windows-based system so you can utilize the Configuration Tool. In this case, it is also recommended that you install the Drill JDBC driver on the TSS Windows system.
+
+1. Click **Start > All Programs > TIBCO Spotfire Server > Configure TIBCO Spotfire Server**.
+2. Enter the Configuration Tool password that was specified when TSS was initially installed.
3. Once the Configuration Tool has connected to TSS, click the **Configuration** tab, then **Data Source Templates**.
4. In the Data Source Templates window, click the **New** button at the bottom of the window.
5. Provide a name for the data source template, then copy the following XML template into the **Data Source Template** box. When complete, click **OK**.
6. The new entry will now be available in the data source template. Check the box next to the new entry, then click **Save Configuration**.
+   
+#### XML Template
+
+Make sure that you enter the correct ZooKeeper node name instead of `<zk-node>`, as well as the correct Drill cluster name instead of `<drill-cluster-name>` in the example below. This is just a template that will appear whenever a data source is configured. The hostnames of ZooKeeper nodes and the Drill cluster name can be found in the `$DRILL_HOME/conf/drill-override.conf` file on any of the Drill nodes in the cluster.
+     
+    <jdbc-type-settings>
    <type-name>drill</type-name>
    <driver>org.apache.drill.jdbc.Driver</driver> 
    <connection-url-pattern>jdbc:drill:zk=<zk-node>:5181/drill/<drill-cluster-name>-drillbits</connection-url-pattern> 
    <ping-command>SELECT 1 FROM sys.version</ping-command>
    <supports-catalogs>true</supports-catalogs>
    <supports-schemas>true</supports-schemas>
    <supports-procedures>false</supports-procedures>
    <table-expression-pattern>[$$schema$$.]$$table$$</table-expression-pattern>
 
    <column-name-pattern>`$$name$$`</column-name-pattern>
    <table-name-pattern>`$$name$$`</table-name-pattern>
    <schema-name-pattern>`$$name$$`</schema-name-pattern>
    <catalog-name-pattern>`$$name$$`</catalog-name-pattern>
    <procedure-name-pattern>`$$name$$`</procedure-name-pattern>
    <column-alias-pattern>`$$name$$`</column-alias-pattern>

    <java-to-sql-type-conversions>
     <type-mapping>
      <from max-length="32672">String</from>
      <to>VARCHAR($$val
 ue$$)</to>
     </type-mapping>
     <type-mapping>
      <from>String</from>
      <to>VARCHAR(32672)</to>
     </type-mapping>
     <type-mapping>
      <from>Integer</from>
      <to>INTEGER</to>
     </type-mapping>
    </java-to-sql-type-conversions>
+    </jdbc-type-settings>
+----------
+
+### Step 3: Configure Drill Data Sources with Tibco Spotfire Desktop 
+
+To configure Drill data sources in TSS, you need to use the Tibco Spotfire Desktop client.
+
+1. Open Tibco Spotfire Desktop.
+2. Log into TSS.
+3. Select the deployment area in TSS to be used.
+4. Click **Tools > Information Designer**.
+5. In the Information Designer, click **New > Data Source**.
+6. In the Data Source window, enter the name for the data source. Select the Drill Data Source template created in Step 2 as the type. Update the connection URL with the correct hostname of the ZooKeeper node(s) and the Drill cluster name. Note: The Zookeeper node(s) hostname(s) and Drill cluster name can be found in the `$DRILL_HOME/conf/drill-override.conf` file on any of the Drill nodes in the cluster. Enter the username and password used to connect to Drill. When completed, click **Save**. 
+7. In the Save As window, verify the name and the folder where you want to save the new data source in TSS. Click **Save** when done. TSS will now validate the information and save the new data source in TSS.
8. When the data source is saved, it will appear in the **Data Sources** tab, and you will be able to navigate the schema.
+
+
+----------
+
+### Step 4: Query and Analyze the Data
+
+After the Drill data source has been configured in the Information Designer, the information elements can be defined. 

1.	In this example all the columns of a Hive table have been defined, using the Drill data source, and added to an information link.
+2.	The SQL syntax to retrieve the data can be validated by clicking the **SQL** button. Many other operations can be performed in Information Link,  including joins, filters, and so on. See the Tibco Spotfire documentation for details.
3.	You can now import the data of this table into TSS by clicking the **Open Data** button. 
+
The data is now available in Tibco Spotfire Desktop to create various reports and tables as needed, and to be shared. For more information about creating charts, tables and reports, see the Tibco Spotfire documentation.


...
+