You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/01/21 17:39:35 UTC

[plc4x-build-tools] branch develop updated: - Added some asciidoctor themes and styles - Added some more content

This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x-build-tools.git


The following commit(s) were added to refs/heads/develop by this push:
     new 856692c  - Added some asciidoctor themes and styles - Added some more content
856692c is described below

commit 856692c2716fcde0db11842c900922744e92a0a6
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Jan 21 18:39:28 2020 +0100

    - Added some asciidoctor themes and styles
    - Added some more content
---
 plc4x-site-skin/src/it/plc4x-website/pom.xml       |  91 ++----
 .../it/plc4x-website/src/site/asciidoc/index.adoc  |  13 -
 .../src/site/asciidoc/users/gettingstarted.adoc    |   2 +-
 .../src/site/asciidoc/users/index.adoc             |  14 +
 .../asciidoc/users/integrations/eclipse-ditto.adoc |   2 +-
 .../site/asciidoc/users/plc4j/gettingstarted.adoc  | 178 +++++++++++
 .../site/resources/images/apache_calcite_logo.svg  | 346 +++++++++++++++++++++
 .../site/resources/images/apache_iotdb_logo.png    | Bin 0 -> 22055 bytes
 .../resources/images/apache_streampipes_logo.png   | Bin 0 -> 16928 bytes
 .../site/resources/images/eclipse_ditto_logo.svg   | 183 +++++++++++
 .../resources/images/elastic_logstash_logo.svg     |   1 +
 .../src/it/plc4x-website/src/site/site.xml         |   4 +-
 .../src/main/resources/META-INF/maven/site.vm      |   4 +-
 13 files changed, 752 insertions(+), 86 deletions(-)

diff --git a/plc4x-site-skin/src/it/plc4x-website/pom.xml b/plc4x-site-skin/src/it/plc4x-website/pom.xml
index 4b74451..d212da9 100644
--- a/plc4x-site-skin/src/it/plc4x-website/pom.xml
+++ b/plc4x-site-skin/src/it/plc4x-website/pom.xml
@@ -93,80 +93,15 @@
       At least 3.3.3 required for camel-package-maven-plugin
     -->
     <maven.version>3.3.3</maven.version>
-
     <java.version>1.8</java.version>
 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.reporting.outputencoding>UTF-8</project.reporting.outputencoding>
 
-    <!-- Timestamp for the reproducible builds -->
-    <project.build.outputTimestamp>2019-11-01T10:30:00Z</project.build.outputTimestamp>
-
-    <!-- URL of the ASF SonarQube server -->
-    <sonar.host.url>https://builds.apache.org/analysis</sonar.host.url>
-    <!-- Exclude all generated code -->
-    <sonar.exclusions>**/generated-sources</sonar.exclusions>
-
-    <plc4x-code-generation.version>1.1.0</plc4x-code-generation.version>
-
-    <antlr.version>4.7.2</antlr.version>
-    <asm.version>5.0.4</asm.version>
-    <assertj.version>3.11.1</assertj.version>
-    <bouncycastle.version>1.60</bouncycastle.version>
-    <boost.version>1.71.0</boost.version>
-    <boost.version.underline-short>1_71</boost.version.underline-short>
-    <boost.version.underline>${boost.version.underline-short}_0</boost.version.underline>
-    <byte-buddy.version>1.9.10</byte-buddy.version>
-    <cmake-version>3.16.0</cmake-version>
-    <commons-beanutils.version>1.9.4</commons-beanutils.version>
-    <commons-codec.version>1.12</commons-codec.version>
-    <commons-collections4.version>4.1</commons-collections4.version>
-    <commons-configuration2.version>2.6</commons-configuration2.version>
-    <commons-io.version>2.6</commons-io.version>
-    <commons-lang.version>2.6</commons-lang.version>
-    <commons-lang3.version>3.9</commons-lang3.version>
-    <commons-logging.version>1.2</commons-logging.version>
-    <commons-math3.version>3.6.1</commons-math3.version>
-    <commons-pool2.version>2.8.0</commons-pool2.version>
-    <commons-text.version>1.8</commons-text.version>
-    <crc.version>1.0.1</crc.version>
-    <elasticsearch.version>7.4.0</elasticsearch.version>
-    <equalsverifier.version>3.0.2</equalsverifier.version>
-    <findbugs.version>3.0.1</findbugs.version>
-    <freemarker.version>2.3.28</freemarker.version>
-    <groovy.version>2.5.8</groovy.version>
-    <gson.version>2.8.5</gson.version>
-    <guava.version>27.0.1-jre</guava.version>
-    <hamcrest.version>1.3</hamcrest.version>
-    <httpclient.version>4.5.10</httpclient.version>
-    <jackson.version>2.10.0</jackson.version>
-    <jmh.version>1.21</jmh.version>
-    <jna.version>5.3.1</jna.version>
-    <joda-time.version>2.10.5</joda-time.version>
-    <jopt-simple.version>5.0.2</jopt-simple.version>
-    <jserialcom.version>2.5.1</jserialcom.version>
-    <junit.jupiter.version>5.5.0</junit.jupiter.version>
-    <junit.platform.version>1.3.2</junit.platform.version>
-    <junit.version>4.12</junit.version>
-    <log4j.version>2.11.1</log4j.version>
-    <logback.version>1.2.3</logback.version>
-    <logstash.version>7.4.0</logstash.version>
-    <lucene.version>8.2.0</lucene.version>
-    <metrics-core.version>3.1.2</metrics-core.version>
-    <mockito.version>2.24.5</mockito.version>
-    <netty.version>4.1.39.Final</netty.version>
-    <owasp-dependency-check.version>5.0.0-M1</owasp-dependency-check.version>
-    <pcap4j.version>1.8.2</pcap4j.version>
-    <scala.version>2.12.6</scala.version>
-    <slf4j.version>1.7.25</slf4j.version>
-    <snakeyaml.version>1.23</snakeyaml.version>
-    <spock-reports.version>1.6.1</spock-reports.version>
-    <spock.version>1.2-groovy-2.5</spock.version>
-    <t-digest.version>3.2</t-digest.version>
-    <thrift.version>0.13.0</thrift.version>
-    <xmlunit.version>2.6.3</xmlunit.version>
-
     <!-- Site properties -->
+    <!-- Please check out these default skins: https://github.com/darshandsoni/asciidoctor-skins/tree/gh-pages/css -->
+    <asciidoctor-theme>asciidoctor</asciidoctor-theme>
+    <!--asciidoctor-theme>boot-cyborg</asciidoctor-theme-->
     <asciidoctor.maven.plugin.version>2.0.0-RC.1</asciidoctor.maven.plugin.version>
     <asciidoctorj.version>2.0.0</asciidoctorj.version>
     <asciidoctorj.diagram.version>1.5.16</asciidoctorj.diagram.version>
@@ -253,6 +188,26 @@
         </executions>
       </plugin>
 
+      <plugin>
+        <groupId>com.googlecode.maven-download-plugin</groupId>
+        <artifactId>download-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>get-fontawesome</id>
+            <!-- Only execute this for the parent module -->
+            <inherited>false</inherited>
+            <phase>pre-site</phase>
+            <goals>
+              <goal>wget</goal>
+            </goals>
+            <configuration>
+              <url>https://github.com/darshandsoni/asciidoctor-skins/raw/gh-pages/css/${asciidoctor-theme}.css</url>
+              <outputDirectory>${project.build.directory}/site/css</outputDirectory>
+              <outputFileName>site.css</outputFileName>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
 
     <pluginManagement>
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/index.adoc b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/index.adoc
index 76492b2..aee7d19 100644
--- a/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/index.adoc
+++ b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/index.adoc
@@ -70,19 +70,6 @@ We are planning on providing support for the following programming languages:
 - icon:check[role=green] link:plc4j/index.html[Java]
 - icon:wrench[role=yellow] Python
 
-Beyond implementing the pure adapters we have already implemented some of the planned integration modules to popular projects in the Apache IoT world such as:
-
-[width=100%]
-|===
-a|image::apache_edgent_logo.png[width=80%,link=https://edgent.apache.org] a|image::apache_camel_logo.png[width=80%,link=https://camel.apache.org] a|image::apache_kafka_logo.png[width=80%,link=https://kafka.apache.org]
-|icon:check[role=green] https://edgent.apache.org[Apache Edgent™ (Incubating)] |icon:check[role=green] https://camel.apache.org[Apache Camel™] |icon:check[role=green] https://kafka.apache.org[Apache Kafka™]
-
-a|image::apache_nifi_logo.svg[width=80%,link=https://nifi.apache.org] a|image::apache_brooklyn_logo.png[width=80%,link=https://brooklyn.apache.org] a|image::apache_mynewt_logo.png[width=80%,link=https://mynewt.apache.org]
-|icon:wrench[role=yellow] https://nifi.apache.org[Apache Nifi™] |icon:pause-circle[role=light-gray] https://brooklyn.apache.org[Apache Brooklyn™] |icon:pause-circle[role=light-gray] https://mynewt.apache.org[Apache Mynewt™]
-|===
-
-This greatly reduces the barriers and the learning curve for creating industrial IoT applications.
-
 === Upcoming Conferences & Meetups
 
 On this page we are listing options to attend talks and events around PLC4X.
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/gettingstarted.adoc b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/gettingstarted.adoc
index 6de1c67..e1771d4 100644
--- a/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/gettingstarted.adoc
+++ b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/gettingstarted.adoc
@@ -21,4 +21,4 @@ Depending on the programming language, the usage will differ, therefore please g
 
 === Java
 
-For guides on how to write PLC4X applications with Java, please go to the link:../plc4j/users/gettingstarted.html[Java Getting Started]
\ No newline at end of file
+For guides on how to write PLC4X applications with Java, please go to the link:plc4j/gettingstarted.html[Java Getting Started]
\ No newline at end of file
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/index.adoc b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/index.adoc
index 6d518fc..4bdafbe 100644
--- a/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/index.adoc
+++ b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/index.adoc
@@ -18,3 +18,17 @@
 :icons: font
 
 == Users
+
+This part of the PLC4X website is dedicated to people wanting to use Apache PLC4X.
+
+It will provide information on the features and how to use them as well as documentation on how to use the different integration modules.
+
+[width=100%,cols="^.^,^.^,^.^"]
+|===
+a|image::apache_calcite_logo.svg[width=80%,link=https://calcite.apache.org] a|image::apache_camel_logo.png[width=80%,link=https://camel.apache.org] a|image::apache_edgent_logo.png[width=80%,link=https://edgent.apache.org]
+|icon:check[role=green] https://calcite.apache.org[Apache Calcite™]         |icon:check[role=green] https://camel.apache.org[Apache Camel™]         |icon:check[role=green] https://edgent.apache.org[Apache Edgent™ (retired)]
+a|image::apache_iotdb_logo.png[width=80%,link=https://iotdb.apache.org]     a|image::apache_kafka_logo.png[width=80%,link=https://kafka.apache.org] a|image::apache_nifi_logo.svg[width=80%,link=https://nifi.apache.org]
+|icon:check[role=green] https://iotdb.apache.org[Apache IoTDB™ (incubating)]|icon:check[role=green] https://kafka.apache.org[Apache Kafka™]         |icon:wrench[role=green] https://nifi.apache.org[Apache Nifi™]
+a|image::apache_streampipes_logo.png[width=80%,link=https://streampipes.apache.org]     a|image::eclipse_ditto_logo.svg[link=https://www.eclipse.org/ditto/] a|image::elastic_logstash_logo.svg[width=80%,link=https://www.elastic.co/de/products/logstash]
+|icon:wrench[role=yellow] https://mynewt.apache.org[Apache StreamPipes™ (incubating)]   |icon:wrench[role=yellow] https://kafka.apache.org[Apache Kafka™]              |icon:wrench[role=green] https://www.elastic.co/de/products/logstash[Elastic Logstash™]
+|===
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/integrations/eclipse-ditto.adoc b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/integrations/eclipse-ditto.adoc
index 798b3c7..a9a709e 100644
--- a/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/integrations/eclipse-ditto.adoc
+++ b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/integrations/eclipse-ditto.adoc
@@ -17,4 +17,4 @@
 :imagesdir: ../../images/
 :icons: font
 
-== Apache NiFi
+== Eclipse Ditto
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/plc4j/gettingstarted.adoc b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/plc4j/gettingstarted.adoc
new file mode 100644
index 0000000..c2a692d
--- /dev/null
+++ b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/plc4j/gettingstarted.adoc
@@ -0,0 +1,178 @@
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+
+== Getting Started
+
+=== Using the PLC4X API directly
+
+In order to write a valid PLC4X Java application, all you need, is to add a dependency to the `api module`.
+When using Maven, all you need to do is add this dependency:
+
+[subs=attributes+]
+----
+    <dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4j-api</artifactId>
+      <version>{project-version}</version>
+    </dependency>
+----
+
+This will allow you to write a valid application, that compiles fine.
+However in order to actually connect to a device using a given protocol, you need to add this protocol implementation to the classpath.
+
+For example in order to communicate with an `S7 device` using the `S7 Protocol`, you would need to add the following dependency:
+
+[subs=attributes+]
+----
+    <dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4j-driver-s7</artifactId>
+      <version>{project-version}</version>
+      <scope>runtime</scope>
+    </dependency>
+----
+
+So as soon as your project has the API and a driver implementation available, you first need to get a `PlcConnection` instance.
+This is done via the `PlcDriverManager` by asking this to create an instance for a given `PLC4X connection string`.
+
+----
+String connectionString = "s7://10.10.64.20/1/1";
+
+try (PlcConnection plcConnection = new PlcDriverManager().getConnection(connectionString)) {
+
+  ... do something with the connection here ...
+
+}
+----
+
+PLC4X generally supports a very limited set of functions, which is not due to the fact, that we didn't implement things, but that PLCs generally support a very limited set of functions.
+
+The basic functions supported by PLCs and therefore supported by PLC4X are:
+
+* Read data
+* Write data
+* Subscribe for data
+* Execute functions in the PLC
+* List resources in the PLC
+
+In general we will try to offer as many features as possible.
+So if a protocol doesn't support subscription based communication it is our goal to simulate this by polling in the background so it is transparent for the users.
+
+But there are some cases in which we can't simulate or features are simply disabled intentionally:
+
+* If a PLC and/or protocol don't support executing of functions, we simply can't provide this functionality.
+* We will be providing stripped down versions of drivers, that for example intentionally don't support any writing of data and executing of functions.
+
+Therefore we use metadata to check programmatically, if a given feature is available:
+
+----
+// Check if this connection support reading of data.
+if (!plcConnection.getMetadata().canRead()) {
+  logger.error("This connection doesn't support reading.");
+  return;
+}
+----
+
+As soon as you have ensured that a feature is available, you are ready to build a first request.
+This is done by getting a `PlcRequestBuilder`:
+
+----
+// Create a new read request:
+// - Give the single item requested the alias name "value"
+PlcReadRequest.Builder builder = plcConnection.readRequestBuilder();
+builder.addItem("value-1", "%Q0.4:BOOL");
+builder.addItem("value-2", "%Q0:BYTE");
+builder.addItem("value-3", "%I0.2:BOOL");
+builder.addItem("value-4", "%DB.DB1.4:INT");
+PlcReadRequest readRequest = builder.build();
+----
+
+
+So, as you can see, you prepare a request, by adding items to the request and in the end by calling the `build` method.
+
+The request is sent to the PLC by issuing the `execute` method on the request object:
+
+----
+CompletableFuture<? extends PlcReadResponse> asyncResponse = readRequest.execute();
+asyncResponse.whenComplete((response, throwable) -> {
+  ... process the response ...
+});
+----
+
+In general all requests are executed asynchronously.
+So as soon as the request is fully processed, the callback gets called and will contain a `readResponse`, if everything went right or a `throwable` if there were problems.
+
+However if you want to write your code in a more synchronous fashion, the following alternative will provide this:
+
+----
+PlcReadResponse response = readRequest.execute().get();
+----
+
+Processing of the responses is identical in both cases.
+The following example will demonstrate some of the options you have:
+
+----
+for (String fieldName : response.getFieldNames()) {
+    if(response.getResponseCode(fieldName) == PlcResponseCode.OK) {
+        int numValues = response.getNumberOfValues(fieldName);
+        // If it's just one element, output just one single line.
+        if(numValues == 1) {
+            logger.info("Value[" + fieldName + "]: " + response.getObject(fieldName));
+        }
+        // If it's more than one element, output each in a single row.
+        else {
+            logger.info("Value[" + fieldName + "]:");
+            for(int i = 0; i < numValues; i++) {
+                logger.info(" - " + response.getObject(fieldName, i));
+            }
+        }
+    }
+    // Something went wrong, to output an error message instead.
+    else {
+        logger.error("Error[" + fieldName + "]: " + response.getResponseCode(fieldName).name());
+    }
+}
+----
+
+In the for loop, we are demonstrating how the user can iterate over the address aliases in the response.
+In case of an ordinary read request, this will be predefined by the items in the request, however in case of a subscription response, the response might only contain some of the items that were subscribed.
+
+Before accessing the data, it is advisable to check if an item was correctly returned.
+This is done by the `getResponseCode` method for a given alias.
+If this is `PlcResponseCode.OK`, everything is ok, however it could be one of the following:
+
+- NOT_FOUND
+- ACCESS_DENIED
+- INVALID_ADDRESS
+- INVALID_DATATYPE
+- INTERNAL_ERROR
+- RESPONSE_PENDING
+
+Assuming the return code was `OK`, we can continue accessing the data.
+
+As some addresses support reading arrays, with the method `getNumberOfValues` the user can check how many items of a given type are returned.
+For convenience the response object has single-argument methods for accessing the data, which default to returning the first element.
+
+    response.getObject(fieldName)
+
+If you want to access a given element number, please use the two-argument version instead:
+
+    response.getObject(fieldName, 42)
+
+PLC4X provides getters and setters for a wide variety of Java types and automatically handles the type conversion.
+However when for example trying to get a long-value as a byte and the long-value exceeds the range supported by the smaller type, a `RuntimeException` of type `PlcIncompatibleDatatypeException`.
+In order to avoid causing this exception to be thrown, however there are `isValid{TypeName}` methods that you can use to check if the value is compatible.
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/apache_calcite_logo.svg b/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/apache_calcite_logo.svg
new file mode 100644
index 0000000..ce489a1
--- /dev/null
+++ b/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/apache_calcite_logo.svg
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to you under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="113.5789mm"
+   height="29.350201mm"
+   viewBox="0 0 113.5789 29.350201"
+   version="1.1"
+   id="svg7816"
+   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+   sodipodi:docname="logo.svg"
+   inkscape:export-filename="/Users/zabetak/Workspaces/apache-projects/zabetak-calcite/site/img/logo.png"
+   inkscape:export-xdpi="187.72"
+   inkscape:export-ydpi="187.72">
+  <defs
+     id="defs7810" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.2196532"
+     inkscape:cx="80.314352"
+     inkscape:cy="40.959351"
+     inkscape:document-units="mm"
+     inkscape:current-layer="g8447"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="2560"
+     inkscape:window-height="1395"
+     inkscape:window-x="58"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata7813">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-20.497197,-143.73874)">
+    <g
+       id="g8447"
+       transform="matrix(0.29907012,0,0,0.29907012,121.31421,121.32321)">
+      <g
+         aria-label="calcite"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.43524169999999884px;line-height:125%;font-family:Montserrat;-inkscape-font-specification:Montserrat;letter-spacing:0px;word-spacing:0px;fill:#dddddd;fill-opacity:1;stroke:#000000;stroke-width:1.54478822;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.00196078;stroke-miterlimit:4;stroke-dasharray:none"
+         id="text8416"
+         transform="translate(-141.53577,6.3098891)">
+        <path
+           d="m -96.396518,152.72675 q -9.789582,0 -16.845142,-6.61458 -7.05555,-6.70278 -7.05555,-17.4625 0,-10.75972 7.32014,-17.4625 7.40833,-6.79097 17.991663,-6.79097 10.583333,0 17.903472,7.32013 l -5.820833,7.14375 q -6.085417,-5.29166 -12.259028,-5.29166 -6.173614,0 -10.759724,4.14514 -4.49791,4.05694 -4.49791,10.58333 0,6.43819 4.49791,10.93611 4.49792,4.49792 11.024307,4.49792 6.614584,0 12.435417,-5.99723 l 5.820833,6.35 q -8.554861,8.64306 -19.755555,8.64306 z"
+           style="font-size:88.19444274999997901px;fill:#dddddd;fill-opacity:1;stroke-width:1.54478822;stroke:#000000;stroke-opacity:0.00196078;stroke-miterlimit:4;stroke-dasharray:none"
+           id="path8481"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m -28.727952,152.02119 h -8.995833 v -6.2618 q -5.820833,6.96736 -15.610417,6.96736 -7.320138,0 -12.170833,-4.14514 -4.7625,-4.14514 -4.7625,-11.0243 0,-6.96737 5.115278,-10.40695 5.115278,-3.43958 13.846528,-3.43958 h 12.788194 v -1.76389 q 0,-9.34861 -10.406944,-9.34861 -6.526389,0 -13.581945,4.7625 l -4.409722,-6.17361 q 8.554861,-6.79097 19.402778,-6.79097 8.290277,0 13.493749,4.23333 5.291667,4.14514 5.291667,13.14097 z m -9.877778,-17.4625 v -3.96875 h -11.112499 q -1 [...]
+           style="font-size:88.19444274999997901px;fill:#dddddd;fill-opacity:1;stroke-width:1.54478822;stroke:#000000;stroke-opacity:0.00196078;stroke-miterlimit:4;stroke-dasharray:none"
+           id="path8483"
+           inkscape:connector-curvature="0" />
+        <path
+           d="M -5.0132931,152.02119 H -14.891071 V 86.580918 h 9.8777779 z"
+           style="font-size:88.19444274999997901px;fill:#dddddd;fill-opacity:1;stroke-width:1.54478822;stroke:#000000;stroke-opacity:0.00196078;stroke-miterlimit:4;stroke-dasharray:none"
+           id="path8485"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 30.038487,152.72675 q -9.789583,0 -16.845139,-6.61458 -7.0555549,-6.70278 -7.0555549,-17.4625 0,-10.75972 7.3201389,-17.4625 7.408333,-6.79097 17.991666,-6.79097 10.583333,0 17.903472,7.32013 l -5.820833,7.14375 q -6.085417,-5.29166 -12.259028,-5.29166 -6.173611,0 -10.759722,4.14514 -4.497916,4.05694 -4.497916,10.58333 0,6.43819 4.497916,10.93611 4.497917,4.49792 11.024306,4.49792 6.614583,0 12.435416,-5.99723 l 5.820833,6.35 q -8.554861,8.64306 -19.755555,8.64306 z"
+           style="font-size:88.19444274999997901px;fill:#dddddd;fill-opacity:1;stroke-width:1.54478822;stroke:#000000;stroke-opacity:0.00196078;stroke-miterlimit:4;stroke-dasharray:none"
+           id="path8487"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 69.917539,152.02119 h -9.877778 v -46.91944 h 9.877778 z M 60.657122,95.75314 q -1.852083,-1.852083 -1.852083,-4.409722 0,-2.557639 1.852083,-4.409722 1.852084,-1.852084 4.409722,-1.852084 2.557639,0 4.409723,1.852084 1.852083,1.852083 1.852083,4.409722 0,2.557639 -1.852083,4.409722 -1.852084,1.852083 -4.409723,1.852083 -2.557638,0 -4.409722,-1.852083 z"
+           style="font-size:88.19444274999997901px;fill:#dddddd;fill-opacity:1;stroke-width:1.54478822;stroke:#000000;stroke-opacity:0.00196078;stroke-miterlimit:4;stroke-dasharray:none"
+           id="path8489"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 96.326256,113.03925 v 23.8125 q 0,3.35139 1.763889,5.37986 1.763889,1.94028 4.938885,1.94028 3.175,0 6.08542,-3.08681 l 4.05694,6.96736 q -5.20347,4.67431 -11.55347,4.67431 -6.261803,0 -10.75972,-4.32153 -4.409722,-4.40972 -4.409722,-11.81805 v -23.54792 h -5.909027 v -7.9375 h 5.909027 V 90.373279 h 9.877778 v 14.728471 h 12.347224 v 7.9375 z"
+           style="font-size:88.19444274999997901px;fill:#dddddd;fill-opacity:1;stroke-width:1.54478822;stroke:#000000;stroke-opacity:0.00196078;stroke-miterlimit:4;stroke-dasharray:none"
+           id="path8491"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 164.67419,132.883 h -36.77708 q 0.35278,5.11528 4.6743,8.29028 4.32153,3.0868 9.87778,3.0868 8.81945,0 13.40556,-5.55625 l 5.64444,6.17361 q -7.58472,7.84931 -19.75555,7.84931 -9.87778,0 -16.84514,-6.52639 -6.87917,-6.61458 -6.87917,-17.63889 0,-11.1125 7.05556,-17.63889 7.05555,-6.52638 16.58055,-6.52638 9.6132,0 16.31597,5.82083 6.70278,5.73264 6.70278,15.875 z m -36.77708,-7.76111 h 26.8993 q 0,-5.90903 -3.70416,-9.08403 -3.70417,-3.175 -9.17223,-3.175 -5.37986,0 -9.70 [...]
+           style="font-size:88.19444274999997901px;fill:#dddddd;fill-opacity:1;stroke-width:1.54478822;stroke:#000000;stroke-opacity:0.00196078;stroke-miterlimit:4;stroke-dasharray:none"
+           id="path8493"
+           inkscape:connector-curvature="0" />
+      </g>
+      <g
+         aria-label="APACHE"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.51913642999999965px;line-height:125%;font-family:Montserrat;-inkscape-font-specification:Montserrat;letter-spacing:0px;word-spacing:0px;fill:#dddddd;fill-opacity:1;stroke:#000000;stroke-width:0.66873949;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.00196078;stroke-miterlimit:4;stroke-dasharray:none"
+         id="text8424"
+         transform="translate(-141.53577,6.3098891)">
+        <path
+           d="m -99.951444,95.826721 -1.463016,-3.314925 h -7.05579 l -1.44449,3.314925 h -1.57413 l 5.81501,-12.963395 h 1.53709 l 5.796491,12.963395 z m -7.907676,-4.685341 h 5.85205 l -2.94454,-6.666889 z"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:'Montserrat Light';stroke-width:0.66873949;fill:#dddddd;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:0.00196078"
+           id="path8468"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m -91.418752,82.863326 q 2.407487,0 3.722346,1.148186 1.333378,1.129667 1.333378,3.203811 0,2.1297 -1.333378,3.314925 -1.314859,1.185225 -3.722346,1.185225 h -3.389002 v 4.111248 h -1.481531 V 82.863326 Z m -0.05556,7.481731 q 1.759318,0 2.722313,-0.777804 0.962995,-0.796323 0.962995,-2.314892 0,-1.481531 -0.962995,-2.240815 -0.962995,-0.777804 -2.722313,-0.777804 h -3.333444 v 6.111315 z"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:'Montserrat Light';stroke-width:0.66873949;fill:#dddddd;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:0.00196078"
+           id="path8470"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m -74.957845,95.826721 -1.463012,-3.314925 h -7.055791 l -1.444492,3.314925 h -1.574127 l 5.815009,-12.963395 h 1.537088 l 5.79649,12.963395 z m -7.907671,-4.685341 h 5.852047 l -2.944543,-6.666889 z"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:'Montserrat Light';stroke-width:0.66873949;fill:#dddddd;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:0.00196078"
+           id="path8472"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m -62.232013,85.733792 q -0.759285,-0.759285 -1.777837,-1.185225 -1.000034,-0.444459 -2.055624,-0.444459 -1.444493,0 -2.666756,0.703727 -1.203744,0.685208 -1.907471,1.888952 -0.703727,1.203744 -0.703727,2.629717 0,1.407455 0.703727,2.611199 0.703727,1.203743 1.907471,1.907471 1.222263,0.703727 2.666756,0.703727 1.05559,0 2.055624,-0.407421 1.000033,-0.42594 1.777837,-1.166706 l 0.907438,0.981514 q -0.981515,0.925957 -2.240816,1.463012 -1.240782,0.518536 -2.57416,0.518536 -1 [...]
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:'Montserrat Light';stroke-width:0.66873949;fill:#dddddd;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:0.00196078"
+           id="path8474"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m -58.672286,82.863326 h 1.48153 v 5.870566 h 7.815076 v -5.870566 h 1.481531 v 12.963395 h -1.481531 v -5.740932 h -7.815076 v 5.740932 h -1.48153 z"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:'Montserrat Light';stroke-width:0.66873949;fill:#dddddd;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:0.00196078"
+           id="path8476"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m -43.951019,82.863326 h 8.79659 v 1.370416 h -7.315059 v 4.351997 h 6.537255 v 1.351897 h -6.537255 v 4.518669 h 7.555808 v 1.370416 h -9.037339 z"
+           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Montserrat;-inkscape-font-specification:'Montserrat Light';stroke-width:0.66873949;fill:#dddddd;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:0.00196078"
+           id="path8478"
+           inkscape:connector-curvature="0" />
+      </g>
+      <g
+         aria-label="TM"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.56146717000000024px;line-height:125%;font-family:Montserrat;-inkscape-font-specification:Montserrat;letter-spacing:0px;word-spacing:0px;fill:#dddddd;fill-opacity:1;stroke:#000000;stroke-width:0.66873949;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.00196078;stroke-miterlimit:4;stroke-dasharray:none"
+         id="text8428"
+         transform="translate(-141.53577,6.3098891)"
+         inkscape:export-xdpi="187.72"
+         inkscape:export-ydpi="187.72">
+        <path
+           d="m 160.02881,90.541646 v 6.832828 h -1.36426 v -6.832828 h -2.45103 v -1.248638 h 6.26632 v 1.248638 z"
+           style="stroke-width:0.66873949;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:0.00196078;fill:#dddddd;fill-opacity:1"
+           id="path8496"
+           inkscape:connector-curvature="0" />
+        <path
+           d="m 165.31836,97.374474 h -1.36425 v -8.081466 h 2.12731 l 2.43947,5.075484 2.43947,-5.075484 h 2.11574 v 8.081466 h -1.36425 v -6.312562 l -2.821,5.607312 h -0.76305 l -2.80944,-5.607312 z"
+           style="stroke-width:0.66873949;stroke-miterlimit:4;stroke-dasharray:none;stroke:#000000;stroke-opacity:0.00196078;fill:#dddddd;fill-opacity:1"
+           id="path8498"
+           inkscape:connector-curvature="0" />
+      </g>
+      <flowRoot
+         xml:space="preserve"
+         id="flowRoot842"
+         style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+         transform="matrix(0.88468662,0,0,0.88468662,-337.10159,24.795289)"><flowRegion
+           id="flowRegion844"><rect
+             id="rect846"
+             width="58.92857"
+             height="107.14286"
+             x="262.85715"
+             y="95.83709" /></flowRegion><flowPara
+           id="flowPara848" /></flowRoot>      <g
+         transform="matrix(3.3436975,0,0,3.3436975,-435.48068,-601.60016)"
+         id="layer1-9"
+         inkscape:label="Layer 1">
+        <g
+           transform="matrix(0.21374972,0.11443934,-0.11443934,0.21374972,57.818989,161.95022)"
+           id="g2277">
+          <path
+             sodipodi:nodetypes="ccccccccc"
+             inkscape:connector-curvature="0"
+             id="path1365"
+             d="m 72.769296,278.65947 -11.010793,6.74091 -11.010792,-0.006 -11.010792,-0.006 -11.010793,-6.75414 -13.399267,-19.40016 35.761967,-87.93272 35.50138,87.97544 z"
+             inkscape:transform-center-y="-5.6594751"
+             inkscape:transform-center-x="-0.058269836"
+             style="opacity:1;fill:#aaccff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.31299999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <path
+             style="opacity:1;fill:#2a7fff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.31299999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             inkscape:transform-center-x="-0.058269836"
+             inkscape:transform-center-y="-5.6594751"
+             d="m 72.769296,278.65947 -11.010793,6.74091 -11.010792,-0.006 -11.010792,-0.006 -11.010793,-6.75414 44.04317,0.0252 z"
+             id="path1367"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="ccccccc" />
+          <path
+             style="opacity:1;fill:#aaccff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.68314427;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             inkscape:transform-center-x="-0.054836836"
+             inkscape:transform-center-y="-5.3264051"
+             d="m 71.480906,276.02902 -10.362104,6.34377 -10.362104,-0.006 -10.362103,-0.006 -10.362104,-6.35622 -12.609864,-18.25722 33.65509,-82.75226 33.409855,82.79246 z"
+             id="path1308"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="ccccccccc" />
+          <path
+             sodipodi:nodetypes="ccccccccc"
+             inkscape:connector-curvature="0"
+             id="path1313"
+             d="m 71.480906,276.02902 -10.362104,-5.82706 -10.362104,-0.006 -10.362103,-0.006 -10.362104,5.81461 -12.609864,-18.25722 33.65509,-82.75226 33.409855,82.79246 z"
+             inkscape:transform-center-y="-5.3264051"
+             inkscape:transform-center-x="-0.054836836"
+             style="opacity:1;fill:#5599ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.68314427;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <path
+             style="opacity:1;fill:#2a7fff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.68314427;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             inkscape:transform-center-x="-0.054836836"
+             inkscape:transform-center-y="-5.3264051"
+             d="m 61.118802,247.44779 -10.362104,-0.006 -10.362103,-0.006 -22.971968,10.31156 33.65509,-82.75226 33.409855,82.79246 z"
+             id="path1315"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="ccccccc" />
+          <path
+             style="opacity:1;fill:#80b3ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.68314427;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             inkscape:transform-center-x="-0.054836836"
+             inkscape:transform-center-y="-5.3264051"
+             d="m 61.118802,270.20196 -20.724207,-0.012 v -22.75417 l 10.683122,-72.4407 10.041085,72.4527 z"
+             id="path1319"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cccccc" />
+          <path
+             inkscape:connector-curvature="0"
+             style="opacity:1;fill:#5599ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58196259;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             d="m 193.04883,71.792969 -40.37695,273.791011 39.16406,0.0234 39.16406,0.0215 z"
+             transform="matrix(0.26458333,0,0,0.26458333,0,156)"
+             id="path1321" />
+          <path
+             sodipodi:nodetypes="cccc"
+             inkscape:connector-curvature="0"
+             id="path1345"
+             d="m 61.118802,282.37279 -20.724207,-0.012 10.683122,-5.23653 z"
+             inkscape:transform-center-y="-5.3264051"
+             inkscape:transform-center-x="-0.054836836"
+             style="opacity:1;fill:#d5e5ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.68314427;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <path
+             style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             d="m 30.032491,276.00457 8.601319,-7.16142 1.760624,-21.40739 1.232795,20.93967 18.428234,-0.28063 1.063339,-20.64701 1.836535,20.8341 8.525567,7.74713 -10.362102,-5.82706 -20.724207,-0.012 z"
+             id="path1351"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="ccccccccccc" />
+          <path
+             style="fill:#ffffff;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             d="m 19.803877,256.55672 19.883622,-11.81193 c 0,0 10.993128,-67.23603 11.390003,-69.74957 l -8.744169,69.88187 17.197916,-0.52918 -8.056872,-67.10373 10.967289,67.89749 c 0,0 19.664656,11.19067 22.045906,12.64588 l -23.368823,-10.3399 -20.724315,-0.0119 z"
+             id="path1353"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="ccccccccccc" />
+          <path
+             style="fill:#5599ff;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             d="m 19.976041,254.93125 28.575,-72.36354 -22.886458,68.52708 z"
+             id="path1355"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cccc" />
+          <path
+             style="fill:#80b3ff;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+             d="m 71.569791,273.58437 10.451041,-15.21354 -5.291666,-2.91041 z"
+             id="path1357"
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cccc" />
+          <ellipse
+             style="opacity:1;fill:#80b3ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.75499988;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path1359"
+             cx="37.636978"
+             cy="229.79584"
+             rx="3.6380208"
+             ry="3.4395833" />
+          <ellipse
+             ry="2.1828125"
+             rx="2.1828127"
+             cy="235.94742"
+             cx="34.991146"
+             id="ellipse1361"
+             style="opacity:1;fill:#80b3ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.46588403;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <path
+             d="m 39.952082,199.10417 -18.724799,2.56477 -1.11895,18.86648 -2.564769,-18.7248 -18.86648,-1.11895 18.724799,-2.56477 1.11895,-18.86648 2.564769,18.7248 z"
+             inkscape:randomized="0"
+             inkscape:rounded="0"
+             inkscape:flatsided="false"
+             sodipodi:arg2="0.74695557"
+             sodipodi:arg1="-0.03844259"
+             sodipodi:r2="2.6067085"
+             sodipodi:r1="20.652758"
+             sodipodi:cy="199.89792"
+             sodipodi:cx="19.314583"
+             sodipodi:sides="4"
+             id="path2189"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.31299999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             sodipodi:type="star"
+             transform="matrix(0.31567098,0.2059889,-0.2059889,0.31567098,69.118887,182.12209)" />
+          <path
+             transform="matrix(0.06411971,0.30496028,-0.30496028,0.06411971,93.761668,230.49508)"
+             sodipodi:type="star"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.31299999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2193"
+             sodipodi:sides="4"
+             sodipodi:cx="19.314583"
+             sodipodi:cy="199.89792"
+             sodipodi:r1="20.652758"
+             sodipodi:r2="2.6067085"
+             sodipodi:arg1="-0.03844259"
+             sodipodi:arg2="0.74695557"
+             inkscape:flatsided="false"
+             inkscape:rounded="0"
+             inkscape:randomized="0"
+             d="m 39.952082,199.10417 -18.724799,2.56477 -1.11895,18.86648 -2.564769,-18.7248 -18.86648,-1.11895 18.724799,-2.56477 1.11895,-18.86648 2.564769,18.7248 z" />
+          <path
+             sodipodi:type="star"
+             style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.31299999;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+             id="path2219"
+             sodipodi:sides="4"
+             sodipodi:cx="19.314583"
+             sodipodi:cy="199.89792"
+             sodipodi:r1="20.652758"
+             sodipodi:r2="2.6067085"
+             sodipodi:arg1="-0.03844259"
+             sodipodi:arg2="0.74695557"
+             inkscape:flatsided="false"
+             inkscape:rounded="0"
+             inkscape:randomized="0"
+             d="m 39.952082,199.10417 -18.724799,2.56477 -1.11895,18.86648 -2.564769,-18.7248 -18.86648,-1.11895 18.724799,-2.56477 1.11895,-18.86648 2.564769,18.7248 z"
+             transform="matrix(0.18824279,0.22026662,-0.22026662,0.18824279,94.807114,154.26999)" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/apache_iotdb_logo.png b/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/apache_iotdb_logo.png
new file mode 100644
index 0000000..123c1e2
Binary files /dev/null and b/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/apache_iotdb_logo.png differ
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/apache_streampipes_logo.png b/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/apache_streampipes_logo.png
new file mode 100644
index 0000000..a428789
Binary files /dev/null and b/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/apache_streampipes_logo.png differ
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/eclipse_ditto_logo.svg b/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/eclipse_ditto_logo.svg
new file mode 100644
index 0000000..b950f67
--- /dev/null
+++ b/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/eclipse_ditto_logo.svg
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:i="&amp;ns_ai;"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="20.146963mm"
+   height="24.962379mm"
+   viewBox="0 0 20.146963 24.962379"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+   sodipodi:docname="ditto2.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.8"
+     inkscape:cx="9.6705704"
+     inkscape:cy="31.365963"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1137"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-79.884852,-10.108096)">
+    <switch
+       id="switch3753"
+       transform="matrix(0.26458333,0,0,0.26458333,-21.416697,-56.161297)">
+      <foreignObject
+         height="1"
+         width="1"
+         y="0"
+         x="0"
+         requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/">
+        <i:pgfRef
+           xlink:href="#adobe_illustrator_pgf" />
+      </foreignObject>
+      <g
+         id="g3751"
+         i:extraneous="self">
+        <g
+           id="g3749">
+          <g
+             id="g3733">
+            <polygon
+               id="polygon3699"
+               points="432.84,257.514 438.936,261.058 432.838,264.533 432.838,257.514 "
+               style="opacity:0.45;fill:#3a8c9a" />
+            <polygon
+               id="polygon3701"
+               points="420.526,264.668 420.557,271.74 432.898,264.566 426.74,261.058 "
+               style="opacity:0.8;fill:#3a8c9a" />
+            <polygon
+               id="polygon3703"
+               points="420.5,257.516 420.526,264.668 426.74,261.058 "
+               style="opacity:0.7;fill:#3a8c9a" />
+            <polygon
+               id="polygon3705"
+               points="426.74,261.058 432.838,264.533 432.84,257.514 "
+               style="opacity:0.6;fill:#3a8c9a" />
+            <polygon
+               id="polygon3707"
+               points="432.838,257.514 432.838,250.467 420.5,257.516 426.74,261.058 "
+               style="opacity:0.5;fill:#3a8c9a" />
+            <g
+               id="g3713">
+              <polygon
+                 id="polygon3709"
+                 points="420.526,293.258 420.557,286.187 432.838,293.394 426.74,296.869 "
+                 style="opacity:0.8;fill:#3a8c9a" />
+              <polygon
+                 id="polygon3711"
+                 points="420.5,300.412 420.526,293.258 426.74,296.869 "
+                 style="opacity:0.7;fill:#3a8c9a" />
+            </g>
+            <path
+               id="path3715"
+               d="m 408.188,250.467 -12.471,6.795 -12.84,7.302 v 0.131 l -0.005,-0.004 v 14.228 0.091 14.226 l 0.005,-0.002 v 0.13 l 12.84,7.302 12.473,6.795 12.333,-7.048 0.034,-6.877 v -7.348 l -12.431,7.174 -12.47,-7.555 v -0.129 -13.43 l 0.002,-0.124 12.468,-7.557 12.431,7.174 -0.03,-7.072 v -7.154 z m -25.189,28.477 0.039,0.02 -0.039,0.02 -0.037,-0.02 z"
+               inkscape:connector-curvature="0"
+               style="fill:#3a8c9a" />
+            <polygon
+               id="polygon3717"
+               points="432.84,257.514 432.838,257.514 432.838,250.467 445.176,257.516 438.936,261.058 "
+               style="opacity:0.25;fill:#3a8c9a" />
+            <polygon
+               id="polygon3719"
+               points="445.193,264.668 445.162,271.74 432.818,264.566 438.977,261.058 "
+               style="opacity:0.25;fill:#3a8c9a" />
+            <polygon
+               id="polygon3721"
+               points="432.84,300.412 438.936,296.869 432.838,293.394 432.838,300.412 "
+               style="opacity:0.45;fill:#3a8c9a" />
+            <polygon
+               id="polygon3723"
+               points="426.74,296.869 432.838,293.394 432.84,300.412 "
+               style="opacity:0.6;fill:#3a8c9a" />
+            <polygon
+               id="polygon3725"
+               points="432.838,300.412 432.838,307.46 420.5,300.408 426.74,296.869 "
+               style="opacity:0.5;fill:#3a8c9a" />
+            <polygon
+               id="polygon3727"
+               points="432.84,300.412 432.838,300.412 432.838,307.46 445.176,300.408 438.936,296.869 "
+               style="opacity:0.25;fill:#3a8c9a" />
+            <polygon
+               id="polygon3729"
+               points="445.193,293.256 445.162,286.187 432.838,293.394 438.977,296.869 "
+               style="opacity:0.25;fill:#3a8c9a" />
+            <path
+               id="path3731"
+               d="m 438.088,296.902 c 0,0.47 0.381,0.849 0.848,0.849 0.299,0 0.547,-0.163 0.699,-0.396 l 4.766,2.779 c -0.031,0.087 -0.057,0.181 -0.057,0.278 0,0.471 0.379,0.85 0.85,0.85 0.471,0 0.85,-0.379 0.85,-0.85 0,-0.092 -0.027,-0.174 -0.053,-0.257 l 11.508,-6.244 c 0.16,0.185 0.385,0.312 0.652,0.312 0.479,0 0.867,-0.386 0.867,-0.865 0,-0.424 -0.309,-0.76 -0.713,-0.834 l -0.002,-12.727 c 0.406,-0.074 0.715,-0.409 0.715,-0.834 0,-0.425 -0.309,-0.76 -0.715,-0.834 l 0.002,-12.727 c 0. [...]
+               inkscape:connector-curvature="0"
+               style="fill:#3a8c9a" />
+          </g>
+          <g
+             id="g3747">
+            <path
+               id="path3735"
+               d="m 406.486,330.292 c -2.058,-2.827 -2.058,-2.827 -2.058,-2.827 h 4.02 c 1.562,0 2.226,0.697 2.226,2.261 v 10.401 c 0,0.466 0.266,0.731 0.732,0.731 h 1.328 v 3.554 h -4.021 c -1.563,0 -2.228,-0.662 -2.228,-2.26 v -11.86 z"
+               inkscape:connector-curvature="0"
+               style="fill:#0f262b" />
+            <polygon
+               id="polygon3737"
+               points="410.343,320.818 410.343,324.708 406.687,320.818 "
+               style="fill:#3a8c9a" />
+            <path
+               id="path3739"
+               d="m 416.356,330.82 -2.193,-3.355 h 2.293 v -4.621 h 4.123 v 4.621 h 3.854 v 3.355 h -3.854 v 6.85 c 0,2.787 2.19,3.188 3.354,3.188 0.465,0 0.766,-0.065 0.766,-0.065 v 3.689 c 0,0 -0.531,0.1 -1.293,0.1 -2.366,0 -7.05,-0.701 -7.05,-6.385 z"
+               inkscape:connector-curvature="0"
+               style="fill:#0f262b" />
+            <path
+               id="path3741"
+               d="m 428.652,330.82 -2.193,-3.355 h 2.293 v -4.621 h 4.123 v 4.621 h 3.855 v 3.355 h -3.855 v 6.85 c 0,2.787 2.191,3.188 3.355,3.188 0.465,0 0.768,-0.065 0.768,-0.065 v 3.689 c 0,0 -0.533,0.1 -1.301,0.1 -2.357,0 -7.045,-0.701 -7.045,-6.385 z"
+               inkscape:connector-curvature="0"
+               style="fill:#0f262b" />
+            <path
+               id="path3743"
+               d="m 448.193,327.064 c 5.184,0 9.309,3.691 9.309,8.877 0,5.218 -4.125,8.872 -9.309,8.872 -5.15,0 -9.27,-3.654 -9.27,-8.872 10e-4,-5.185 4.12,-8.877 9.27,-8.877 z m 0,14.161 c 2.762,0 5.053,-2.126 5.053,-5.283 0,-3.123 -2.291,-5.283 -5.053,-5.283 -2.727,0 -5.018,2.16 -5.018,5.283 10e-4,3.157 2.292,5.283 5.018,5.283 z"
+               inkscape:connector-curvature="0"
+               style="fill:#0f262b" />
+            <path
+               id="path3745"
+               d="m 391.214,327.082 c 3.685,0 4.878,2.061 4.878,2.061 h 0.069 c 0,0 -0.035,-0.434 -0.035,-0.998 v -4.596 l -2.06,-2.709 h 4.021 c 1.559,0 2.256,0.697 2.256,2.256 v 17.035 c 0,0.467 0.266,0.732 0.729,0.732 h 1.296 v 3.549 h -3.885 c -1.529,0 -2.091,-0.727 -2.091,-1.725 0,-0.365 0,-0.631 0,-0.631 h -0.065 c 0,0 -1.398,2.757 -5.281,2.757 -4.584,0 -7.537,-3.62 -7.537,-8.864 0,-5.381 3.219,-8.867 7.705,-8.867 z m 5.011,8.833 c 0,-2.622 -1.361,-5.214 -4.184,-5.214 -2.323,0 -4.2 [...]
+               inkscape:connector-curvature="0"
+               style="fill:#0f262b" />
+          </g>
+        </g>
+      </g>
+    </switch>
+  </g>
+</svg>
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/elastic_logstash_logo.svg b/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/elastic_logstash_logo.svg
new file mode 100644
index 0000000..5a285d8
--- /dev/null
+++ b/plc4x-site-skin/src/it/plc4x-website/src/site/resources/images/elastic_logstash_logo.svg
@@ -0,0 +1 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 236 80"><defs><style>.cls-1{fill:#00bfb3;}.cls-2{fill:#fec514;}.cls-3{fill:#343741;}</style></defs><title>Logstash Color Lockup</title><rect class="cls-1" x="40" y="48" width="22" height="24"/><path class="cls-2" d="M10,8H8V48H34V32A24,24,0,0,0,10,8Z"/><path class="cls-3" d="M8,48H8A24,24,0,0,0,32,72h2V48Z"/><path d="M83.89,49.18H79.48V20h4.41Z"/><path d="M108.58,38.78c0,3.38-.87,6-2.6,7.93a9.35,9.35,0, [...]
\ No newline at end of file
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/site.xml b/plc4x-site-skin/src/it/plc4x-website/src/site/site.xml
index 8300e26..03803cb 100644
--- a/plc4x-site-skin/src/it/plc4x-website/src/site/site.xml
+++ b/plc4x-site-skin/src/it/plc4x-website/src/site/site.xml
@@ -49,7 +49,9 @@
     <menu name="Users">
       <item name="Section Home" href="users/index.html"/>
       <item name="Download" href="users/download.html"/>
-      <item name="Getting Started" href="users/gettingstarted.html"/>
+      <item name="Getting Started" href="users/gettingstarted.html">
+        <item name="Java" href="users/plc4j/gettingstarted.html"/>
+      </item>
       <item name="Integrations" href="users/integrations/index.html">
         <item name="Apache Calcite" href="users/integrations/apache-calcite.html"/>
         <item name="Apache Camel" href="users/integrations/apache-camel.html"/>
diff --git a/plc4x-site-skin/src/main/resources/META-INF/maven/site.vm b/plc4x-site-skin/src/main/resources/META-INF/maven/site.vm
index f2e0155..e8b598c 100644
--- a/plc4x-site-skin/src/main/resources/META-INF/maven/site.vm
+++ b/plc4x-site-skin/src/main/resources/META-INF/maven/site.vm
@@ -20,7 +20,7 @@
     <script src="$relativePath/js/bootstrap.bundle.min.js" type="javascript"></script>
     <link rel="stylesheet" href="$relativePath/css/all.min.css" type="text/css"/>
     <link rel="stylesheet" href="$relativePath/css/bootstrap.min.css" type="text/css"/>
-    <link rel="stylesheet" href="$relativePath/css/amaven-base.css" type="text/css"/>
+    <link rel="stylesheet" href="$relativePath/css/maven-base.css" type="text/css"/>
     <link rel="stylesheet" href="$relativePath/css/maven-theme.css" type="text/css"/>
     <link rel="stylesheet" href="$relativePath/css/site.css" type="text/css"/>
     <link rel="stylesheet" href="$relativePath/css/print.css" type="text/css" media="print"/>
@@ -84,7 +84,7 @@
         #else
             #set ( $mainStyles = "")
         #end
-        <main role="main" class="ml-sm-auto px-4 pt-3 $mainStyles">
+        <main role="main" class="ml-sm-auto px-4 $mainStyles">
             $bodyContent
         </main>
         <footer class="pt-4 my-md-5 pt-md-5 w-100 border-top">