diff --git a/Klausuren/Sd1/2023summer/Exam/Readme.md b/Klausuren/Sd1/2023summer/Exam/Readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..117f68a50982b7bac1d18665ab27fe313eeb5b99
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/Readme.md
@@ -0,0 +1,55 @@
+# Generate ond open class/method javadoc for browsing
+
+Grab a terminal in this IDE (By lower left icon or Alt+F12) and issue the following command:
+
+<pre>Exam> mvn javadoc:javadoc
+...
+[<span style="color:blue;font-weight:bold;">INFO</span>] Executing tasks
+[<span style="color:orange;font-weight:bold;">WARNING</span>]     [echo] Javadoc root at <span style="color:blue;">file:///home/.../Downloads/Exam/target/site/apidocs/index.html</span>
+[<span style="color:blue;font-weight:bold;">INFO</span>] Executed tasks
+...</pre>
+
+Click the <span style="color:blue;">file:///.../index.html</span> link opening your project's  `index.html` Javadoc root
+in your system's default web browser.
+
+# Implementation tasks
+
+Your project's following packages do contain implementation tasks:
+
+- `de.hdm_stuttgart.mi.sd1.task1` (50 Points)
+
+- `de.hdm_stuttgart.mi.sd1.task2` (20 points, more difficult)
+
+Read the generated documentation and implement the skeleton methods and classes.
+
+Your project's  `test` branch does contain corresponding unit tests for verifying your solutions' correctness.
+
+# Hints
+
+- Your score solely depends on the number of successfully executing unit tests. A »nearly correct« implementation failing
+with respect to a given unit tests will not contribute any points at all.
+
+- General advice: Implement less but correctly.
+
+- Mind special cases i.e. `null` variable values or null values being contained in arrays.
+
+- In case of test failures both the IDEA debugger and logging statements are your friend.
+
+Executing `de.hdm_stuttgart.mi.sd1.ShowReachedPoints` in your project's test branch as a Java application
+(not as Junit test!) shows your number of points reached so far.
+
+Do not model your implementations along unit test definitions i.e. avoid cheating this way! Such behaviour will be
+regarded as an attempt at deception (Täuschungsversuch).
+
+# Exam system upload
+
+After finishing implementing:
+
+1. Export this project by hitting **»File ➔ Export ➔ Project to Zip File«**.
+1. Use a self-explanatory file name like e.g. `solution1.zip`.
+1. Go to your exam browser window and upload `solution1.zip` .
+1. Complete by  **clicking the »<span style="background: #527A35;color:white;">Speichern + weiter ➞ </span>«** button.
+1. Hit **<span style="background: #446684;color:white;"> 🠬 Speichern + zurück</span>** and check if your
+   upload is visible.
+1. If you advance on implementing: Repeat steps 1. to 5.: Only the least uploaded `.zip` archive will become subject to
+    marking.
diff --git a/Klausuren/Sd1/2023summer/Exam/pom.xml b/Klausuren/Sd1/2023summer/Exam/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..626795694e758e36f7dc97459833ba00ee8b6422
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/pom.xml
@@ -0,0 +1,133 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>de.hdm_stuttgart.mi.sd1</groupId>
+    <artifactId>sd1_2023summer_exam</artifactId>
+    <version>0.9</version>
+    <packaging>jar</packaging>
+
+    <name>sd1_2023summer_exam</name>
+
+    <url>https://freedocs.mi.hdm-stuttgart.de/sd1_sect_mavenCli.html</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+        <maven.compiler.release>17</maven.compiler.release>
+
+        <freedocs.url>https://freedocs.mi.hdm-stuttgart.de</freedocs.url>
+        <jdk.api_17.url>${freedocs.url}/doc/openjdk-17-doc/api/</jdk.api_17.url>
+        <mathjax.url>${freedocs.url}/lib/MathJax/es5/tex-chtml.js</mathjax.url>
+        <libhighlight.url>${freedocs.url}/lib/highlight.js</libhighlight.url>
+    </properties>
+
+    <repositories>
+        <repository>
+            <id>hdm-mi-internal-maven-repo</id>
+            <url>https://maven.mi.hdm-stuttgart.de/nexus/repository/mi-maven</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>de.hdm_stuttgart.mi.exam</groupId>
+            <artifactId>unitmarking</artifactId>
+            <version>1.2</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.11.0</version>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>3.1.0</version>
+                <executions>
+                    <execution>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <target>
+                                <echo>Javadoc root at file://${project.basedir}/target/site/apidocs/index.html</echo>
+                            </target>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+		        <artifactId>maven-javadoc-plugin</artifactId>
+		        <version>3.5.0</version>
+                <configuration>
+                    <release>17</release>
+                    <doclint>all</doclint>
+                    <show>public</show>
+                    <docfilessubdirs>true</docfilessubdirs>
+                    <addStylesheets>
+                        <stylesheet>resources/jdocSupplement.css</stylesheet>
+                    </addStylesheets>
+
+                    <windowtitle>Exam documentation</windowtitle>
+
+                    <links>
+                        <link>${freedocs.url}/doc/openjdk-17-doc/api/</link>
+                    </links>
+
+                    <additionalOptions>
+                        <additionalOption>-html5 --allow-script-in-comments</additionalOption>
+                    </additionalOptions>
+                    <nohelp>true</nohelp>
+
+                    <header><![CDATA[
+            <script type="text/javascript" src="${mathjax.url}"></script>
+            <script type="text/javascript" src="{@docRoot}/resources/jdocSupplement.js"></script>
+	    
+            <link rel="stylesheet" href="${libhighlight.url}/styles/idea.min.css">
+            <script src="${libhighlight.url}/highlight.min.js"></script>
+            <script type="text/javascript">hljs.highlightAll();</script>]]>
+                    </header>
+                    <bottom><![CDATA[Copyright © 2023 Stuttgart Media University / MI. Licensed under
+        <a style="font-weight:bold;" href="https://creativecommons.org/licenses/by/4.0/legalcode" target="_blank"
+          >Creative Commons Attribution 4.0 International Public License</a>.]]></bottom>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>3.6.0</version>
+                <configuration>
+                    <descriptors>
+                        <descriptor>src/main/assembly/assembly.xml</descriptor>
+                    </descriptors>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <archive>
+                                <manifest>
+                                    <mainClass>de.hdm_stuttgart.mi.sd1.ShowReachedPoints</mainClass>
+                                </manifest>
+                            </archive>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/Klausuren/Sd1/2023summer/Exam/src/main/assembly/assembly.xml b/Klausuren/Sd1/2023summer/Exam/src/main/assembly/assembly.xml
new file mode 100644
index 0000000000000000000000000000000000000000..85268e2965620878373d76337f524d8785fd0e1f
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/main/assembly/assembly.xml
@@ -0,0 +1,36 @@
+<assembly
+    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
+    <id>fat-tests</id>
+    <formats>
+        <format>jar</format>
+    </formats>
+    <includeBaseDirectory>false</includeBaseDirectory>
+    <dependencySets>
+        <dependencySet>
+            <outputDirectory/>
+            <useProjectArtifact>true</useProjectArtifact>
+            <unpack>true</unpack>
+            <scope>test</scope>
+        </dependencySet>
+    </dependencySets>
+    <fileSets>
+        <fileSet>
+            <directory>${project.build.directory}/test-classes</directory>
+            <outputDirectory/>
+            <includes>
+                <include>**/*.class</include>
+            </includes>
+            <useDefaultExcludes>true</useDefaultExcludes>
+        </fileSet>
+        <fileSet>
+            <directory>${project.build.directory}/classes</directory>
+            <outputDirectory/>
+            <includes>
+                <include>**/*.class</include>
+            </includes>
+            <useDefaultExcludes>true</useDefaultExcludes>
+        </fileSet>
+    </fileSets>
+</assembly>
\ No newline at end of file
diff --git a/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/A_Payment.java b/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/A_Payment.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf910f0585b4c94fcf55e431a3aa42012cb77166
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/A_Payment.java
@@ -0,0 +1,51 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+/**
+ * Payment rules for customer orders.
+ */
+public class A_Payment {
+
+    /**
+     * <p>Calculate order related end customer billing amounts.</p>
+     *
+     * <p>Due payments are being calculated by the following two rules:</p>
+     *
+     * <ol>
+     *     <li>
+     *         <p>For order amounts below 50€ an additional 6.50€ shipping fee applies.</p>
+     *     </li>
+     *
+     *     <li>
+     *         <p>Customers paying within two days receive an early payment discount of 2% being applied
+     *          to order costs excluding shipping fee.</p>
+     *
+     *         <p>Examples:</p>
+     *          <ul>
+     *              <li>
+     *                  <p>An order worth of 50.00€ being paid within two days will be reduced by 2% resulting in
+     *                     49.00€. The regular costs exceeding 50€ the customer still enjoys a free delivery.</p>
+     *              </li>
+     *
+     *              <li>
+     *                  <p>An order worth of 40.00€ being paid within two days will be reduced by 2% resulting in
+     *                     39.20€. The regular costs of 40€ not exceeding the 50€ limit adding 6.50€ shipping results in
+     *                     a due amount of 45.70€.</p>
+     *              </li>
+     *          </ul>
+     *
+     *     </li>
+     * </ol>
+     *
+     * @param orderAmount The order's sum of all costs
+     * @param paymentDelayInDays Period until payment occurs.
+     * @return <p>The total due amount a customer is obliged to pay.</p>
+     *
+     * <img src="doc-files/euros.svg" alt="Five euros" style="width: 20em; height: auto;">
+     *
+     */
+    static public double getBillingAmount(final double orderAmount, final int paymentDelayInDays) {
+        return 123.456; // TODO: Implement me correctly
+    }
+
+    private A_Payment(){/* Suppressing constructor Javadoc HTML generation */}
+}
diff --git a/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/B_Irrigation.java b/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/B_Irrigation.java
new file mode 100644
index 0000000000000000000000000000000000000000..01537e78e72c56128e0d959963e4be749936f895
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/B_Irrigation.java
@@ -0,0 +1,38 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+/**
+ * <p>Irrigation scheduling</p>
+ */
+public class B_Irrigation {
+
+    /**
+     *
+     * <p>Controlling irrigation times.</p>
+     *
+     * <p>A farmer intends to start irrigating her plants within two periods in the morning and afternoon:</p>
+     *
+     * <ul>
+     *     <li>from 5:00 to 6:30 (inclusive)</li>
+     *     <li>from 21:30 to 22:30 (inclusive)</li>
+     * </ul>
+     *
+     * <section class="implementationHints">
+     *     <h4 class="implementationHints">Hint:</h4>
+     *
+     * <p>A full day has got \( 24 \cdot 60 = 1440 \) minutes. You may convert all time data like e.g.
+     * <span style="color:red;">21</span>:<span style="color:blue;">47</span> to minutes
+     * using \( \textcolor{red}{21} \cdot 60 + \textcolor{blue}{47} = 1307 \) minutes making decisions based on the
+     * above described time periods easier.</p>
+     *
+     * </section>
+     *
+     * @param hour Current hour e.g. <span style="color:red;">22</span> in <span style="color:red;">22</span>:35.
+     * @param minute Current minute e.g. <span style="color:red;">35</span> in 22:<span style="color:red;">35</span>.
+     * @return <code>true</code> if irrigation is intended to be active, <code>false</code> otherwise.
+     */
+    public static boolean irrigationIsActive(final int hour, final int minute) {
+        return false; // TODO: Implement me correctly
+    }
+
+    private B_Irrigation(){/* Suppressing constructor Javadoc HTML generation */}
+}
diff --git a/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/C_Switch.java b/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/C_Switch.java
new file mode 100644
index 0000000000000000000000000000000000000000..8c94ed1f8f45e9207fc927f5735a644bcd78caa0
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/C_Switch.java
@@ -0,0 +1,119 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+/**
+ * <p>Handling first name and surname.</p>
+ */
+public class C_Switch {
+    /**
+     * <p>Switch  first name and surname.</p>
+     *
+     * <p>This method expects person names in reverse government agency style:
+     * <span style="color:red;">First name</span> and <code style="color:blue;">surname</code> are being switched and
+     * separated by a comma. These will be transformed back to their »regular« form. Examples:</p>
+     *
+     * <table class="goikTableDefaults">
+     *     <caption>Switching Back to Regular</caption>
+     *     <tbody>
+     *         <tr>
+     *             <th>Agency style</th>
+     *             <th>Regular style</th>
+     *         </tr>
+     *         <tr>
+     *             <td><code style="color:blue;">Davis</code>,<code style="color:red;">Miles</code></td>
+     *             <td><code style="color:red;">Miles</code> <code style="color:blue;">Davis</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td><code style="color:blue;">Tolkien</code>,<code style="color:red;">John Ronald Reuel</code></td>
+     *             <td><code style="color:red;">John Ronald Reuel</code> <code style="color:blue;">Tolkien</code></td>
+     *         </tr>
+     *     </tbody>
+     * </table>
+     *
+     * <p>Whitespace shall be ignored. In the following examples the "<code style="color:red;">␣</code>" character
+     * denotes whitespace:</p>
+     *
+     * <table class="goikTableDefaults">
+     *     <caption>Whitespace handling</caption>
+     *     <tbody>
+     *         <tr>
+     *             <th>Agency style</th>
+     *             <th>Regular style</th>
+     *         </tr>
+     *         <tr>
+     *             <td><code>Noether,<span style="color:red;">␣</span>Emmy</code></td>
+     *             <td rowspan="3">Emmy Noether</td>
+     *         </tr>
+     *         <tr>
+     *             <td><code>Noether,<span style="color:red;">␣␣␣</span>Emmy</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td><code><span style="color:red;">␣␣</span>Noether,<span style="color:red;">␣</span
+     *               >Emmy<span style="color:red;">␣␣␣</span></code></td>
+     *         </tr>
+     *     </tbody>
+     * </table>
+     *
+     * <p>Erroneous or completely absent input yields a <code>null</code> return value:</p>
+     *
+     * <table class="goikTableDefaults">
+     *     <caption>Erroneous cases</caption>
+     *     <tbody>
+     *         <tr>
+     *             <th>Agency Style</th>
+     *             <th>Remark</th>
+     *             <th>Result</th>
+     *         </tr>
+     *         <tr>
+     *             <td><code>Rutherford John</code></td>
+     *             <td><code>Missing comma</code></td>
+     *             <td rowspan="7"><code>null</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td><code>Ronald Reuel,Tolkien,John</code></td>
+     *             <td rowspan="2">Two commas</td>
+     *         </tr>
+     *         <tr>
+     *             <td><code>Ronald Reuel<span style="color:red;">␣␣␣</span>,Tolkien,<span style="color:red;">␣</span>John</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td>,<code style="color:red;">John</code></td>
+     *             <td rowspan ="2">Comma at start, no <code style="color:blue;">surname</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td>␣␣␣,␣<code style="color:red;">John</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td><code style="color:blue;">Updike</code>,</td>
+     *             <td>Comma at end, no <code style="color:red;">first name</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td><code>null</code></td>
+     *             <td>No input - no output</td>
+     *         </tr>
+     *     </tbody>
+     * </table>
+     *
+     * <section class="implementationHints">
+     *     <h4 class="implementationHints">Useful methods:</h4>
+     *
+     *     <ul>
+     *         <li>{@link String#charAt(int)} retrieving character at given index.</li>
+     *
+     *         <li>{@link String#toCharArray()} converting a {@link String} into <code>char[]</code>.</li>
+     *
+     *         <li>{@link String#trim()} stripping off whitespace at beginning and end.</li>
+     *
+     *         <li>{@link String#split(String)} using <code>","</code> for regexp parameter.</li>
+     *     </ul>
+     * </section>
+     *
+     * @param agencyStyleName A person's name written as <code style="color:red">surname, first name</code>.
+     * @return A regular person's name <code style="color:red">first name surname</code> or <code>null</code> in case of
+     * error or complete lack of input.
+     */
+    static public String switchFirstAndSurname(final String agencyStyleName) {
+        return "Nonsense"; // TODO: Implement me correctly
+    }
+
+    private C_Switch() {/* Suppressing constructor Javadoc HTML generation */}
+}
diff --git a/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/D_ArrayHelper.java b/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/D_ArrayHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..77d7eb52a6bad6c564b3a4bd4fc978e56378ecaf
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/D_ArrayHelper.java
@@ -0,0 +1,74 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+/** <p>Array helper method.</p>
+ *
+ */
+public class D_ArrayHelper {
+
+    /**
+     * <p>Gather information about an <code>int</code> array's negative, zero and positive values.</p>
+     *
+     * <p>An <code>int</code> array may contain negative, zero and positive values. This information is being
+     * provided by a {@link String}:</p>
+     *
+     * <table class="goikTableDefaults">
+     *   <caption>Filtering {@link String} instances</caption>
+     *   <tr>
+     *     <th>Values</th>
+     *     <th>Result String</th>
+     *   </tr>
+     *   <tr>
+     *       <td><code>{1, 7, 5,20}</code></td>
+     *       <td><code>"positives"</code></td>
+     *   </tr>
+     *   <tr>
+     *       <td><code>{-1, -20, 0, -33}</code></td>
+     *       <td><code>"negatives,zeroes"</code></td>
+     *   </tr>
+     *   <tr>
+     *       <td><code>{1, 7, -4, 5, 20, 0}</code></td>
+     *       <td><code>"negatives,zeroes,positives"</code></td>
+     *   </tr>
+     *   <tr>
+     *       <td><code>{0}</code></td>
+     *       <td><code>"zeroes"</code></td>
+     *   </tr>
+     *   <tr>
+     *       <td><code>{-4}</code></td>
+     *       <td><code>"negatives"</code></td>
+     *   </tr>
+     *   <tr>
+     *       <td><code>{}</code></td>
+     *       <td rowspan="2"><code>""</code></td>
+     *   </tr>
+     *   <tr>
+     *       <td><code>null</code></td>
+     *   </tr>
+     *
+     * </table>
+     *
+     * <p>The exact names and their order matters:</p>
+     * <ol>
+     *     <li><code>"negatives"</code></li>
+     *     <li><code>"zeroes"</code></li>
+     *     <li><code>"positives"</code></li>
+     * </ol>
+     *
+     * <p>Thus we will see e.g. <code>"negatives,positives"</code> but never <code>"positives,negatives"</code>.</p>
+     *
+     * <section class="implementationHints">
+     *     <h4 class="implementationHints">Hint:</h4>
+     *     <p>Mind whitespace: <code>"negatives,<span style="color:red;">␣</span>zeroes"</code> differs from
+     *     <code>"negatives,zeroes"</code> by an additional space character "<span style="color:red;">␣</span>"
+     *     following the comma.</p>
+     * </section>
+     *
+     * @param values Integer values
+     * @return String Categorization of signs as being stated above or an empty string if no values being present.
+     */
+    public static String getSigns(final int[] values) {
+        return "Nonsense"; // TODO: Implement me correctly
+    }
+
+    private D_ArrayHelper(){/* Suppressing constructor Javadoc HTML generation */}
+}
diff --git a/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/package-info.java b/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..fb7bb58c281c72e0241b31061906c3bf633172d2
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task1/package-info.java
@@ -0,0 +1,17 @@
+/**
+ * <p>This package mostly (if not completely) contains static methods.</p>
+ *
+ * <p>The ordering being implied by class names reflects the author's opinion with respect to ascending implementation
+ * difficulty. Hints:</p>
+ *
+ * <ul>
+ *     <li>Run <code>mvn javadoc:javadoc</code> and open the generated
+ *     <code>/home/.../target/site/apidocs/index.html</code> file in your browser of choice.</li>
+ *
+ *     <li>Use the corresponding unit tests to check your implementation's consistency and class
+ *     <code>de.hdm_stuttgart.mi.sd1.test.ShowReachedPoints</code> from your project's “unit test” branch.</li>
+ *
+ * </ul>
+ *
+ */
+package de.hdm_stuttgart.mi.sd1.task1;
\ No newline at end of file
diff --git a/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task2/StringHelper.java b/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task2/StringHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..62b36facc4210576c0c4c68827f0d112c10ca50f
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task2/StringHelper.java
@@ -0,0 +1,113 @@
+package de.hdm_stuttgart.mi.sd1.task2;
+
+import java.util.Arrays;
+
+/**
+ * <p>String related helper methods.</p>
+ */
+public class StringHelper {
+
+    /**
+     *
+     * <p>Restrict an array of arbitrary type objects to a given list of types and converting them to {@link String}
+     *  instances.</p>
+     *
+     * <table class="goikTableDefaults">
+     *     <caption>Classes to be filtered</caption>
+     *     <tr>
+     *         <th colspan="4">Class</th>
+     *     </tr>
+     *     <tr>
+     *         <td>{@link String}</td>
+     *         <td>{@link StringBuilder}</td>
+     *         <td>{@link StringBuffer}</td>
+     *         <td>{@link Boolean}</td>
+     *     </tr>
+     *     <tr>
+     *         <td>{@link Integer}</td>
+     *         <td>{@link Long}</td>
+     *         <td>{@link Float}</td>
+     *         <td>{@link Double}</td>
+     *     </tr>
+     * </table>
+     *
+     * <p>Consider the following example list of objects:</p>
+     *
+     * <pre><code class="java"> Object[] collection = {"Foo", null, new StringBuffer("Eve"), 42, new StringBuilder("Adam"), new Scanner(System.in), 3.7f, true};
+     * //            Array index: 0     1                        2   3                          4                       5     6     7</code></pre>
+     *
+     * <p>By virtue of boxing the <code>collection</code> array references:</p>
+     *
+     * <table class="goikTableDefaults">
+     *     <caption>Objects being contained in variable <code>collection</code></caption>
+     *     <tr>
+     *         <th>Array index</th>
+     *         <th>Class</th>
+     *         <th>Array index</th>
+     *         <th>Class</th>
+     *         <th>Array index</th>
+     *         <th>Class</th>
+     *         <th>Array index</th>
+     *         <th>Class</th>
+     *     </tr>
+     *     <tr>
+     *         <td>0</td>
+     *         <td>{@link String}</td>
+     *         <td>1</td>
+     *         <td><code>null</code> (empty reference)</td>
+     *         <td>2</td>
+     *         <td>{@link StringBuffer}</td>
+     *         <td>3</td>
+     *         <td>{@link Integer}</td>
+     *     </tr>
+     *     <tr>
+     *         <td>4</td>
+     *         <td>{@link StringBuilder}</td>
+     *         <td>5</td>
+     *         <td>{@link java.util.Scanner}</td>
+     *         <td>6</td>
+     *         <td>{@link Float}</td>
+     *         <td>7</td>
+     *         <td>{@link Boolean}</td>
+     *     </tr>
+     * </table>
+     *
+     * <p>Since {@link java.util.Scanner} is not among the to be filtered classes list it will be ignored as
+     *     well as the <code>null</code> value. On execution we get:</p>
+     *
+     * <table class="goikTableDefaults">
+     *   <caption>Filtering {@link String} instances</caption>
+     *   <tr>
+     *     <th>Code</th>
+     *     <th>Result</th>
+     *   </tr>
+     *   <tr>
+     *       <td>
+     *          <pre><code class="java"> final Object[] collection = {"Foo", null, ...
+     *
+     * final String[] results = StringHelper.filterStrings(collection);
+     *
+     * for (final String r: results) {
+     *     System.out.println('"' + r + '"');
+     * }</code></pre>
+     *       </td>
+     *       <td>
+     *           <pre><code class="nohighlight"> "Foo"
+     * "Eve"
+     * "42"
+     * "Adam"
+     * "3.7"
+     * "true"</code></pre>
+     *       </td>
+     *   </tr>
+     * </table>
+     *
+     * @param objects Either <code>null</code> or a list of instances possibly containing <code>null</code> values.
+     * @return A filtered list of {@link String} instances.
+     */
+    static public String[] filterStrings(final Object[] objects) {
+        return new String[]{"Nonsense"}; // TODO: Implement me correctly
+    }
+
+    private StringHelper(){ /* Suppressing constructor Javadoc HTML generation */}
+}
diff --git a/Klausuren/Sd1/2023summer/Exam/src/main/javadoc/de/hdm_stuttgart/mi/sd1/task1/doc-files/euros.svg b/Klausuren/Sd1/2023summer/Exam/src/main/javadoc/de/hdm_stuttgart/mi/sd1/task1/doc-files/euros.svg
new file mode 100644
index 0000000000000000000000000000000000000000..52b438c426ac23f2d8a99af520cda060fa8a4acd
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/main/javadoc/de/hdm_stuttgart/mi/sd1/task1/doc-files/euros.svg
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#"
+     xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:svg="http://www.w3.org/2000/svg" id="svg2997"
+     viewBox="0 0 2000 1100" version="1.1">
+  <defs id="defs2999">
+    <linearGradient id="linearGradient4687" y2="129.08" gradientUnits="userSpaceOnUse" y1="129.08" x2="1012.4" x1="-224.48">
+      <stop id="stop8780" stop-color="#e6e6e6" offset="0"/>
+      <stop id="stop8782" stop-color="#ccc" stop-opacity=".7459" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient4689" x1="-224.48" gradientUnits="userSpaceOnUse" y1="129.08" gradientTransform="matrix(.41639 0 0 .69851 208.46 295.68)" x2="1012.4" y2="129.08">
+      <stop id="stop8780-1" stop-color="#e6e6e6" offset="0"/>
+      <stop id="stop8782-6" stop-color="#ccc" stop-opacity=".7459" offset="1"/>
+    </linearGradient>
+  </defs>
+  <defs>
+    <g id="euro" transform="translate(-13.377 -26.164)">
+      <g id="g4633">
+        <path id="path3165" d="m977.83 472.53c0 324.69-268.64 587.91-600.03 587.91s-600.03-263.22-600.03-587.91 268.64-587.91 600.03-587.91 600.03 263.22 600.03 587.91z" fill-opacity=".99317" transform="matrix(.59444 0 0 .61007 146.36 97.467)" stroke="#000" stroke-width="3" fill="#b9a464"/>
+        <path id="path3167" d="m945.71 459.51c0 8.6788-251.36 15.714-561.43 15.714s-561.43-7.0355-561.43-15.714c0-8.6788 251.36-15.714 561.43-15.714s561.43 7.0355 561.43 15.714z" transform="matrix(.60547 0 0 21.788 140.76 -9628.2)" stroke="#000" stroke-width=".34757" fill="#d0c27b"/>
+        <path id="path7998" d="m1012.2 129.08c0 205.3-276.78 371.74-618.21 371.74s-618.21-166.43-618.21-371.74c0-205.3 276.78-371.74 618.21-371.74s618.21 166.43 618.21 371.74z" transform="matrix(.41639 0 0 .69851 208.46 295.68)" stroke="#000" stroke-width="1.1147" fill="url(#linearGradient4687)"/>
+        <path id="path7998-6" fill="url(#linearGradient4689)" d="m629.58 399.3c-2.1732 4.4732-3.5743 9.4908-4.0202 14.935-0.24162 4.9984 0.1331 9.5675 0.99564 13.695 1.516-9.3833 2.534-18.937 3.0245-28.63z"/>
+        <path id="path9175" stroke-width=".60115px" stroke="#000" fill-opacity=".31373" d="m665.03 377.65c-21.09 0.007-37.704 15.022-39.469 36.576-1.2251 25.344 13.112 39.821 29.137 40.089 17.67-0.17315 31.455-9.4152 37.816-35.843-1.1444-0.51609 5.0751-34.637-27.484-40.822zm-4.734 4.3207c1.2278-0.037 2.496 0.0298 3.8135 0.22543 20.514 9.5788 17.346 17.649 17.17 34.923-3.1539 15.151-9.3242 34.6-27.033 31.729 0 0-23.378-1.0035-18.222-36.444 4.6698-19.008 12.403-30.075 24.271-30.433z"/>
+        <path id="path7759" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m403.48 375.55c5.1369 0.13767 10.004-2.3586 15.029-3.4351 2.1409-0.45867 4.31-0.78514 6.4408-1.2882 1.5883-0.37494 3.0914-1.2708 4.7233-1.2882 2.3604-0.0251 4.6799 0.83746 6.8702 1.7176 1.0708 0.43024 2.0077 2.2968 3.0057 1.7176 1.1142-0.64657 0.0536-2.5774 0-3.8645-0.0716-1.722-1.4778-3.7847-0.4294-5.1527 0.97341-1.2702 3.2223-0.3041 4.7233-0.85878 1.8652-0.68923 4.4232-1.156 5.1527-3.0057 0.54821-1.3901 1.2882-4.2939-1.2882-4.2939-2.5763 0-6.249 0.34696-9.0172-0.85877-1.5801-0.68827-3.3643-1.7858-3.8645-3.4351-0.98747-3.2557 3.3763-6.5692 2.5763-9.876-0.85804-3.5468-5.8845-4.7948-7.2996-8.1584-0.83441-1.9833 0.17137-4.3747-0.42938-6.4408-0.50072-1.7221-1.6615-3.1808-2.5764-4.7233-1.2152-2.0489-3.7587-3.6316-3.8645-6.0115-0.15065-3.3898 3.0057-8.5878 4.7233-9.0172 1.7176-0.42939 4.2111-1.7468 3.8645-3.4351-0.54603-2.6602-5.014-2.5173-7.729-2.5763-1.0418-0.0226-2.0949 1.3648-3.0057 0.85877-0.91087-0.50603-1.0982-1.9916-0.85878-3.0057 0.53532-2.2677 5.0965-2.8528 4.7233-5.1527-0.23605-1.4546-2.3938-2.0537-3.8645-2.147-1.5385-0.0975-3.0433 0.8162-4.2939 1.7176-1.9773 1.4252-3.2265 3.6584-4.7233 5.5821-0.75612 0.97173-2.1928 1.7753-2.147 3.0057 0.0416 1.1171 2.1976 1.4596 2.147 2.5763-0.0825 1.8199-2.7587 2.4168-3.8645 3.8645-0.70043 0.91705-2.1094 1.9203-1.7176 3.0057 0.41523 1.1502 2.4331 0.58713 3.4351 1.2882 1.0812 0.75646 2.3227 1.7108 2.5763 3.0057 0.26102 1.3325-1.0707 2.5242-1.2882 3.8645-0.11463 0.7064-0.37624 1.5382 0 2.1469 0.50478 0.81675 2.2521 0.38443 2.5763 1.2882 0.47603 1.3269-2.7734 2.9304-1.7176 3.8645 1.8752 1.659 4.0279-3.1962 6.4408-3.8645 0.68969-0.19104 1.5887-0.4478 2.147 0 1.0293 0.8257 0.71479 2.5528 0.85878 3.8645 0.14056 1.2805 0 2.147 0 3.8645 0 1.7176-0.21865 4.0196 0 6.0114 0.14399 1.3117 1.1275 2.5726 0.85878 3.8645-0.39642 1.906-1.8329 3.6174-3.4351 4.7233-1.3431 0.92701-3.1704 0.78643-4.7233 1.2882-1.1637 0.37598-2.9492 0.16595-3.4351 1.2882-0.73932 1.7075 2.508 3.3274 2.147 5.1527-0.35354 1.7871-2.1814 3.1674-3.8645 3.8645-1.719 0.71206-4.4941-1.5095-5.5821 0-0.5293 0.73437 0.11142 2.0656 0.85878 2.5764 2.3663 1.6173 5.7375-0.73071 8.5878-0.4294 2.2097 0.23359 5.0871-0.0444 6.4408 1.7176 0.6976 0.90801 0.18342 2.3049 0 3.4351-0.145 0.89354-0.16529 1.9945-0.85878 2.5763-2.9929 2.511-8.0741 0.0218-11.594 1.7176-2.6457 1.2748-7.1284 3.1563-6.4408 6.0114 0.24396 1.013 1.9641 0.83086 3.0057 0.85878z"/>
+        <path id="path4129" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m571.61 161.96c-1.025 0.0733-2.1227 0.39038-3.0245 0.61994-1.997 0.50834-3.7321 1.6787-5.4291 2.9118l0.39451 0.0752-5.3352 4.6964 0.93929 6.9883-6.2181-3.5317-2.7803 1.2962c-2.0719 1.601-4.135 3.201-6.2557 4.734-2.6229 1.8961-5.5856 3.3655-7.9464 5.5794-5.7575 5.3992-10.426 11.911-14.822 18.466-2.1404 3.1914-4.619 6.3672-5.5794 10.088-0.48359 1.8735 0.89256 4.088 0 5.8048-0.80457 1.5475-3.8772 1.3094-4.2832 3.0057-0.28234 1.1797 1.7095 2.1389 1.7095 3.2124s0.86415 3.6498 0.86415 4.5086c0 0.85878-2.6818 0.3327-3.4378 1.2962-0.3543 0.45159-0.25076 1.1372-0.20664 1.7095 0.08 1.0377 1.4738 2.1761 0.84536 3.0057-1.0776 1.4226-3.788-0.85608-5.354 0-2.9111 1.5915-3.136 5.9281-5.3727 8.3785-2.7496 3.0122-6.4895 4.9438-9.6559 7.5143-4.7327 3.8421-11.789 6.1192-13.958 11.816-0.54007 1.4185 1.4403 3.2196 0.63872 4.5086-0.47685 0.76679-1.9818 0.16344-2.5736 0.84536-1.3342 1.5371-0.89163 3.984-1.0708 6.0114-0.15158 1.7154-1.2177 3.9484 0 5.1661 1.2619 1.2619 4.2315-1.3875 5.354 0 0.4148 0.51275-0.23819 1.2991-0.41329 1.9349-0.3002 1.0901-0.4926 2.2521-1.0896 3.2124-0.2665 0.42869-0.69032 0.73906-1.0708 1.0708-0.53901 0.46997-1.573 0.59426-1.7095 1.2962-0.1587 0.81593 0.60937 1.647 1.2774 2.1416 0.71531 0.52954 2.1062-0.10668 2.5924 0.63871 0.91349 1.4003-0.93089 3.2701-0.86415 4.9407 0.0679 1.6997-0.20071 4.0988 1.2774 4.9407 2.0114 1.1455 4.7378-0.65882 6.669-1.9349 0.85021-0.56183 1.2865-1.5808 1.9349-2.367 0.71011-0.86099 1.3399-1.7972 2.1416-2.5736 1.7564-1.701 4.2081-2.6409 5.786-4.5086 1.3633-1.6137 0.89552-5.6777 3.0057-5.5794 1.4743 0.0687 1.2202 2.6908 1.7283 4.0765 0.41321 1.1268 0.43295 2.4211 1.0708 3.4378 0.7793 1.2422 2.3925 1.7899 3.2124 3.0057 2.2288 3.3052 2.895 7.4289 4.302 11.159 0.72789 1.9297 1.377 3.8893 2.1416 5.8048 1.0107 2.5323 2.8018 6.0114 3.2312 7.5143s2.267 2.5139 2.7803 4.0765c0.64916 1.9764 0.22543 5.3781 0.22543 6.2369 0 0.85877 0.23677 1.5258 0.84536 1.7095 0.95626 0.28859 1.9825-0.71185 2.5924-1.5029 1.3126-1.7023 0.72298-4.3082 1.7095-6.2181 0.46769-0.90542 1.2054-1.6554 1.9349-2.367 1.1692-1.1405 2.9381-1.6642 3.8699-3.0057 0.81231-1.1696 1.062-2.6689 1.2774-4.0765 0.50862-3.324 0.12489-6.7276 0-10.088-0.072-1.939-1.2139-4.029-0.43207-5.8048 0.51385-1.1672 2.0359-1.5389 3.0057-2.367 1.0379-0.88628 1.976-1.8846 3.0057-2.7803 0.76891-0.6688 1.668-1.1934 2.367-1.9349 1.092-1.1585 2.3087-2.3552 2.7991-3.8699 0.32981-1.0187 0.69875-2.401 0-3.2124-0.33056-0.38383-1.2041 0.18366-1.5029-0.22543-0.2544-0.34834 0.14658-0.85029 0.20664-1.2774 0.0808-0.57455 0.24993-1.1497 0.20664-1.7283-0.0388-0.51811-0.0232-1.1597-0.41328-1.5029-1.1396-1.0027-3.24 0.19476-4.5086-0.63871-1.2638-0.83032-1.8326-2.4553-2.367-3.8699-0.43587-1.1537-0.65138-2.4112-0.63871-3.6444 0.015-1.4613 0.67055-2.851 0.84536-4.302 0.19645-1.6306-0.17231-3.3284 0.22543-4.9219 0.40293-1.6143 1.5673-2.947 2.1416-4.5086 0.3848-1.0464 0.4471-2.1972 0.86415-3.2312 0.55148-1.3673 1.3404-2.6322 2.1416-3.8699 0.96976-1.4982 2.2304-2.793 3.2124-4.2832 0.63594-0.96503 1.3025-1.9313 1.7283-3.0057 0.45999-1.1607 0.34465-2.5092 0.86415-3.6444 0.40497-0.88501 1.1054-1.604 1.7095-2.367 0.88454-1.1172 2.36-1.8755 2.7991-3.2312 0.26537-0.81926 0.19559-1.8224-0.22543-2.5736-0.17512-0.31247-0.67228-0.33625-0.86415-0.63872-0.5848-0.92192-0.78423-2.1304-0.63872-3.2124 0.12878-0.95752 0.78503-1.7726 1.2962-2.5924 0.99997-1.6037 2.594-2.8175 3.4378-4.5086 0.46467-0.9313 0.42394-2.0541 0.84536-3.0057 0.27225-0.61481 0.7795-1.1035 1.0708-1.7095 0.75583-1.5725 0.3637-3.8534 1.7283-4.9407 1.0152-0.80881 2.5992-0.16723 3.8699-0.43207 0.7058-0.14711 1.3791-0.8563 2.0664-0.63872 2.1578 0.68303 2.9227 3.4722 4.1517 5.3727 1.3219 2.0443 2.9466 4.0592 3.4378 6.4435 0.34744 1.6864-0.0465 3.4692-0.43207 5.1473-0.89272 3.8852-2.6953 7.5104-4.302 11.159-1.1614 2.6372-2.2123 5.3695-3.8511 7.7398-1.5548 2.2488-4.4403 3.5262-5.5794 6.0115-1.6198 3.5342-1.9351 7.756-1.2962 11.591 0.93676 5.6228 2.7986 11.973 7.3077 15.461 2.42 1.8716 6.0791 2.562 9.0172 1.7095 2.8167-0.8173 4.002-4.3586 6.4247-6.0114 3.0148-2.0568 6.3218-3.9095 9.8813-4.7152 1.8139-0.41061 3.736-0.24655 5.5794 0 3.2357 0.43277 6.9681 0.4521 9.4493 2.5736 1.0694 0.91442 1.4337 2.4752 1.7283 3.8511 0.30022 1.4022 0.7174 3.0603 0 4.302-2.1515 3.7237-7.1207 5.0162-11.178 6.4435-1.7753 0.62459-3.7055 0.68964-5.5794 0.86414-4.2794 0.39853-10.299-3.018-12.887 0.41329-0.71153 0.94333 0.32869 2.3845 0.86415 3.4378 1.0155 1.9976 3.5395 3.0589 4.302 5.1661 0.68181 1.8842-0.42939 3.8645 0 6.0114 0.42939 2.147 2.4249 1.5621 3.4378 2.5736 2.0222 2.0196 6.4249 4.3003 5.1473 6.8568-0.57664 1.1539-2.6144 0.29637-3.8699 0-1.5535-0.36674-2.7539-1.6841-4.2832-2.1416-2.35-0.70299-4.8553-0.91315-7.3077-0.86415-2.7513 0.055-6.3117-0.74877-8.153 1.2962-1.821 2.0225-0.66303 5.4414-0.43207 8.153 0.27407 3.218 0.62755 6.5965 2.1416 9.4492 1.4725 2.7745 5.6159 3.8456 6.4435 6.8756 0.34826 1.275-0.29213 2.6783-0.86415 3.8699-1.1876 2.4738-3.1092 4.5873-5.1473 6.4247-1.77 1.5957-3.6645 3.456-6.0114 3.8699-3.1806 0.56087-6.2674-1.5884-9.4493-2.1416-4.6862-0.81477-9.4171-2.0232-14.164-1.7283-5.889 0.36582-15.453 4.302-17.17 4.302-1.7176 0-7.2996 2.1416-9.0172 2.1416s-3.8376 2.0508-5.5982 1.2962c-3.362-1.4411-4.2896-6.0264-5.5794-9.4493-1.0787-2.8628-1.9705-5.9691-1.7095-9.0172 0.20875-2.4382 1.8785-4.5292 2.5736-6.8756 0.7488-2.5274 2.0724-5.1101 1.7095-7.721-0.29086-2.0924-1.1208-4.6255-3.0057-5.5794-1.8055-0.91368-4.3942-0.3709-6.0114 0.84536-2.5112 1.8886-3.5328 5.4779-3.8511 8.6039-0.26704 2.6224 1.2066 5.1334 1.7095 7.721 0.66504 3.4217 0.64888 6.999 1.7283 10.313 1.2878 3.9542 6.649 7.14 5.5794 11.159-0.39846 1.497-2.812 1.4419-3.8699 2.5736-1.5763 1.6863-1.4839 4.7823-3.4378 6.0115-1.7005 1.0698-4.0038 0.36001-6.0115 0.43207-1.2891 0.0463-2.6146 0.29706-3.8699 0-2.4881-0.58879-5.1936-5.3797-6.8568-3.4378-1.6005 1.8687 4.6773 3.5828 4.2832 6.0114-0.31157 1.92-3.1429 2.2926-4.7152 3.4378-3.1487 2.2934-6.024 5.0206-9.4493 6.8756-1.9948 1.0803-4.8774 2.1667-8.1155 3.2312 11.751 0.004 23.267 0.14339 23.257 0.67629l-0.11272 6.5562 0.0564 8.9984c-1.3464 0.79004-2.6925 1.5115-4.039 0.33814l-0.82657-7.9276-1.5216-3.6444-5.4667-0.30057h-8.8105l-7.89 1.2211-4.5462 27.315 2.1228 0.61993h4.5462l7.9088-0.92051 2.7239-1.2023 2.1228-2.7427 2.7427-4.5462h1.2023l1.5216 2.7239-3.945 8.51 0.60114 11.534-2.1228 2.1228-2.1228-2.1228v-8.2094l-1.2211-1.2023h-14.559l-3.0433 1.2023-3.3439 19.443-1.2023 6.9883 2.4234 3.0245 2.4234 1.2211h11.854l8.4912-1.2211 3.945-1.8222s3.0409-1.4036 3.945-2.7239c1.4701-2.147-0.22116-5.9785 1.8222-7.5895 0.47687-0.37596 1.3057-0.31925 1.8222 0 0.96255 0.59489 1.3904 1.9006 1.5216 3.0245 0.20507 1.7556-0.76912 3.4573-1.2211 5.1661-0.45858 1.7338-1.5029 5.1661-1.5029 5.1661l-5.4667 3.6444-8.2094 0.60115-11.835-0.60115h-10.332s-7.0744-0.12802-10.614-0.30057c-2.9385-0.14325-8.2036 2.2588-8.8105-0.61993-0.44833-2.1263 3.8992-1.9143 5.7672-3.0245 0.94107-0.55931 1.9769-1.0399 2.7427-1.8222 0.92312-0.94296 1.669-2.1047 2.1228-3.3439 6.573-17.951 7.8415-56.168 7.89-57.71-0.0389 0.0304-0.11064 0.0673-0.22543 0.11271-2.449 0.96944-6.5118 2.205-8.8293 3.4566-2.8976 1.5648-5.1327 4.267-8.153 5.5794-1.2122 0.52675-2.5653 1.0763-3.8699 0.86415-2.4676-0.40132-4.016-3.2004-6.4247-3.8699-1.5204-0.42252-3.1714-0.22016-4.734 0-1.0323 0.14545-2.2041 0.19771-3.0057 0.86415-1.4751 1.2263-2.6912 3.2326-2.5736 5.1473 0.0631 1.028 1.0246 1.8045 1.7095 2.5736 1.6253 1.825 3.7006 3.194 5.5982 4.734 2.5326 2.0554 5.587 3.5447 7.721 6.0115 0.7541 0.8717 1.2401 1.953 1.7095 3.0057 1.2903 2.8937 2.6142 5.8732 3.0057 9.0172 0.23048 1.8506-0.41329 3.8618-0.41329 5.5794s-0.11004 4.6923-0.86414 6.8756c-1.0893 3.1538-3.052 5.9884-5.1473 8.5851-1.9725 2.4444-3.8624 5.5568-6.8756 6.4435-1.5388 0.45286-3.2001-0.39496-4.734-0.86415-2.3864-0.72995-4.5554-2.0408-6.8568-3.0057-2.8429-1.1919-5.6678-2.4419-8.5851-3.4378-1.9716-0.67304-4.001-1.1635-6.0114-1.7095-3.8577-1.0477-7.6316-2.6118-11.61-3.0057-2.5651-0.25405-5.1634 0.11078-7.721 0.43207-1.45 0.18215-3.6577-0.46636-4.302 0.84536-0.98768 2.0109 2.9395 3.7721 3.0057 6.0114 0.0644 2.1788-1.2281 4.2966-2.5737 6.0115-1.3251 1.6888-4.0703 2.013-5.1473 3.8699-0.57945 0.99907-0.18737 2.3091-0.43207 3.4378-0.50859 2.346-0.80732 4.8801-2.1416 6.8756-0.62033 0.92776-1.6978 1.4499-2.5736 2.1416-1.6885 1.3335-3.9754 2.0778-5.1661 3.8699-1.9574 2.9462-1.8922 6.8237-2.5736 10.295-0.19502 0.99324-0.27764 2.0054-0.43208 3.0057-0.39895 2.5842-0.945 5.1462-1.2774 7.7398-0.20066 1.5655-1.1128 3.2912-0.43207 4.7152 2.0021 4.1884 10.732 6.0034 11.591 7.721 0.85878 1.7176 3.9648 4.4353 6.4435 6.0114 1.3041 0.8292 2.8004 1.3628 4.302 1.7283 2.9338 0.71415 6.0011 0.71995 9.0172 0.86414 3.8592 0.1845 7.7276-0.0516 11.591 0 5.1549 0.0689 10.507 1.8412 15.461 0.41329 2.4732-0.71288 4.1614-3.0576 6.4247-4.2832 1.9168-1.0379 4.1569-1.4283 6.0114-2.5737 2.0793-1.2841 3.4512-4.3046 5.5982-4.734 2.147-0.42938 0.396-3.4261 0.41329-5.1473 0.023-2.2959-0.93347-4.6393-0.41329-6.8756 0.52227-2.2453 2.1423-4.0921 3.419-6.0114 1.3007-1.9554 2.2879-4.3717 4.302-5.5794 1.4921-0.8947 3.0004-0.005 5.1473-0.86415 2.147-0.85878 4.4816-3.0343 6.8756-4.2832 1.9326-1.0081 3.9855-1.7694 6.0115-2.5736 1.5559-0.61769 3.8043-0.32386 4.7152-1.7283 1.093-1.6851-0.55451-4.0079-0.41329-6.0114 0.14404-2.0435-0.25259-4.6492 1.2774-6.0115 2.2548-2.0075 5.9987-0.79488 9.0172-0.84536 2.2957-0.0384 4.5975 0.69948 6.8756 0.41329 4.1754-0.52455 8.5444-1.4828 12.023-3.8511 1.6848-1.147 2.4568-3.2653 3.8699-4.734 2.2484-2.3369 4.138-5.6764 7.2889-6.4435 2.2961-0.55903 5.4225-0.1353 6.8756 1.7283 1.494 1.916-0.9257 5.0425 0 7.2889 0.46394 1.1258 1.7142 1.7298 2.5737 2.5924 0.85632 0.85944 1.7147 1.7168 2.5736 2.5736 1.2884 1.2853 2.6864 2.4686 3.8699 3.8511 1.2682 1.4816 2.2541 3.1841 3.4378 4.734 1.1112 1.455 2.0149 3.1313 3.4378 4.2832 1.4932 1.2087 3.6673 1.3676 5.1473 2.5924 1.8063 1.4948 2.4036 4.1778 4.2832 5.5794 1.6017 1.1943 3.7474 1.3889 5.5982 2.1416 1.0107 0.41105 2.1029 0.6835 3.0057 1.2962 0.83533 0.56693 1.3936 1.4636 2.1416 2.1416 1.5066 1.3655 3.0329 2.7279 4.7152 3.8699 2.4397 1.656 5.3443 2.5639 7.7397 4.2832 1.7285 1.2406 3.8562 2.3555 4.7152 4.3019 0.51828 1.1744 0.15521 2.5768 0 3.8511-0.21448 1.7609-0.90447 3.4318-1.2774 5.1661-0.33596 1.5622-1.8872 3.4877-0.86414 4.7152 0.54922 0.65903 1.7158 0 2.5736 0 2.147 0 2.1705-1.2383 3.0057-2.1416 1.701-1.8395 3.4034-3.9819 3.8699-6.4435 0.32389-1.7094-0.0671-3.6008-0.86414-5.1473-0.55579-1.0784-2.0589-1.475-2.5737-2.5736-0.67236-1.4348-1.2977-3.4068-0.43207-4.734 0.49436-0.75799 1.6768-0.98479 2.5736-0.86415 1.0242 0.13777 1.6024 1.3756 2.5737 1.7283 2.5746 0.93502 6.0153 2.553 8.1718 0.86414 0.79621-0.62357 0.86814-2.1024 0.41328-3.0057-1.612-3.2013-6.1812-3.6531-9.4305-5.1661-2.509-1.1683-5.5694-1.2884-7.7398-3.0057-2.1752-1.7212-2.4299-5.2847-4.7152-6.8568-3.0357-2.0883-7.5317-0.79028-10.745-2.5924-2.8193-1.581-5.3298-4.0079-6.8568-6.8568-1.379-2.5728-0.26392-6.0599-1.7283-8.5851-0.091-0.15694-0.17679-0.3057-0.28179-0.45086-2.8774 0.43261-5.7452 0.53679-8.6227 0.11271-4.5452-0.48189-8.181-2.3237-11.591-4.5086-2.3326-2.0522-4.0048-5.2068-5.4855-8.679 0.2477-8.2428 0.72018-16.426 1.8222-24.384l4.1892-27.578c0.62845-2.6709 0.19169-4.1276-1.1835-4.5086l-5.4667-0.31936-0.11272-1.5029 1.4089-1.2962 10.727 0.31936 9.1299-0.0939h4.828l0.63872 1.2774-0.31936 1.2962s-0.85341 0.0939-1.3902 0.0939h-2.0476l-3.3251 0.6575-1.9349 1.2774-0.31936 0.75143-0.63872 3.8699-6.0114 40.371-0.43208 5.786 0.20665 4.828 1.7283 3.5505 5.786 3.6444 2.4046 0.18786c-0.21109-0.22458-0.40611-0.45911-0.58236-0.71386-1.3924-2.0124-2.7446-4.4344-2.5737-6.8756 0.12544-1.7917 1.8012-3.1125 2.5737-4.734 1.1302-2.3727 0.73463-5.9664 3.0057-7.2889 1.9961-1.1624 4.6919 0.1111 6.8756 0.86415 1.5797 0.54477 2.7831 1.877 4.3019 2.5736 2.0573 0.94354 4.6864 0.71493 6.4435 2.1416 0.55453 0.45024 1.035 0.96581 1.4653 1.5216l1.2023-3.1372 2.0477-11.159 2.4609-15.348 1.4089-7.5143c0.0716-3.6554 0.0224-3.8476 0.0939-5.8987l0.22543-3.7572-0.11272-2.367-0.20664-2.0476-1.5029-0.63872h-3.1184l-1.7095-0.54479-0.33815-1.5029 0.11272-1.1647 1.6156-0.22543 6.5374 0.11271 7.627 0.11272 3.7572 0.0939 0.11272 1.8222-0.43207 1.0896c-1.1808-0.11858-2.3697-0.0734-3.5505 0.0939-2.2364 0.57254-2.2475 2.9188-3.2124 4.5086l-3.1184 13.638-5.786 32.424-2.0852 4.9782c0.80736 1.7635 1.5297 3.603 2.5173 5.2224 0.97046 1.5914 1.6403 3.4465 3.0057 4.7152 1.5475 1.438 3.7781 1.9021 5.5794 3.0057 3.8568 2.3631 7.5315 5.0187 11.159 7.721 2.9401 2.1903 7.4105 3.4025 8.5851 6.8756 0.56637 1.6746-1.3617 3.3815-1.2774 5.1473 0.12309 2.5796 1.6819 4.884 2.5737 7.3077 0.68786 1.8696 1.3382 3.7564 2.1416 5.5794 0.90343 2.0501 1.75 4.1561 3.0057 6.0115 1.9342 2.8579 6.4462 6.0222 6.8756 7.7398 0.42939 1.7176-1.1259 1.9966-0.86415 3.0057 0.50811 1.9587 3.5255 2.4145 4.302 4.2832 0.65833 1.5844-0.65516 3.5616 0 5.1473 0.92821 2.2467 2.8562 4.3536 5.1473 5.1661 2.5757 0.91347 5.7561 0.44869 8.153-0.86415 1.6099-0.8818 2.7349-2.6062 3.4378-4.302 0.49465-1.1933 0.35995-2.5614 0.43207-3.8511 0.0962-1.7193 0.4821-3.5129 0-5.1661-0.52182-1.7894-2.2048-3.0322-3.0057-4.7152-0.97263-2.0437-1.3064-4.3399-2.1416-6.4435-0.7567-1.906-2.3809-3.5396-2.5924-5.5794-0.19698-1.8991-0.46113-4.8329 1.2962-5.5794 1.538-0.65333 2.6384 2.7318 4.3019 2.5737 1.713-0.16291 2.4272-2.4716 3.8511-3.4378 2.1203-1.4388 4.9285-1.772 6.8756-3.4378 0.93479-0.79974 0.96472-2.6474 2.1416-3.0057 1.1716-0.35674 2.3262 0.78234 3.4378 1.2962 1.3382 0.61862 2.4326 1.813 3.8699 2.1416 2.5128 0.57453 5.4289 0.74721 7.721-0.43207 1.6279-0.83755 1.984-3.1704 3.4378-4.2832 1.9862-1.5203 5.3231-1.0446 6.8756-3.0057 0.99562-1.2577 1.3978-3.2213 0.86415-4.734-1.3841-3.9231-7.7171-4.3707-9.4493-8.153-1.4314-3.1256-0.2133-6.8822 0-10.313 0.19142-3.0792 0.0483-6.3518-0.15028-9.6747-2.0923-5.5843-3.1508-12.248-2.7803-19.913 1.6256-19.847 15.84-34.148 34.547-36.294-0.63151-10.719-2.1184-21.392-3.7196-32.011-1.9334-12.821-4.0189-25.663-7.2889-38.21-1.3698-5.2561-3.3504-10.335-5.1473-15.461-2.8766-8.2057-5.5626-16.498-9.0172-24.478-1.1763-2.7172-2.5312-5.3414-3.9074-7.9652l-5.5042 2.5737 1.5029-6.8944-4.9407-5.1097 4.0577-0.41328c-2.2965-5.1238-4.3549-10.362-7.101-15.254-1.8151-3.2336-3.7536-6.3988-5.786-9.5056l0.24422 1.841-6.2181-3.5317-6.4623 3.0245 1.4841-6.8944-4.9219-5.1097 7.1386-0.73265 0.28178-0.526c-0.11885-0.15604-0.2377-0.31393-0.35693-0.46965-3.6987-4.8306-7.3643-9.8194-12.023-13.732-1.9431-1.6321-3.993-3.775-6.1054-5.9363l0.46965 3.5317-6.2181-3.5129-6.4811 3.0245 1.5029-6.8944-4.9219-5.1097 3.1372-0.31936c-1.0829-0.25987-2.1671-0.33032-3.2499-0.1315 0.93628-1.4892 2.1844-2.6086 3.8323-2.4797 2.8827 0.2255 1.2823-0.82961 1.5029-1.5029 0.44963-1.3727-0.13646-2.936-0.6575-4.2832-0.8376-2.1657-3.9195-3.4838-3.8511-5.8048 0.0316-1.0728 1.4979-1.5934 1.9349-2.5736 0.59504-1.3348 1.7527-3.1564 0.84536-4.302-0.57775-0.72945-1.5299-0.89989-2.5549-0.82658z"/>
+        <path id="path4125" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m660.29 381.98c-10.177 0.30667-17.302 8.4959-22.073 22.806 0.9331 0.0179 1.8685 0.0554 2.7239-0.0376 2.7052-0.29411 5.4853 0.12317 8.153-0.41329 3.7265-0.74937 8.5082-0.78332 10.727-3.8699 3.5984-5.0063 1.1026-12.19 0.526-18.485-0.0188 0.00052-0.0376-0.00056-0.0563 0z"/>
+        <path id="path3067" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m437.01 383.72-4.8655 0.28179c-0.0892 0.0302-0.19571 0.0642-0.28179 0.0939-1.5396 0.53158 4.6847-0.3915 5.1473-0.16907 0.00053-0.0171 0-0.20665 0-0.20665z"/>
+        <path id="path7761" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m372.57 349.36c-1.607-2.4371-0.40317-6.5816 1.7176-8.5878 2.2057-2.0866 6.119-0.38286 9.0172-1.2882 1.222-0.38171 3.23-0.4539 3.4351-1.7176 0.16211-0.99901-1.2417-1.6943-2.147-2.1469-1.8105-0.90524-4.86 0.80596-6.0115-0.85879-1.5013-2.1706-0.34111-6.0776 1.7176-7.729 1.3398-1.0747 3.5973-0.72851 5.1527 0 1.0124 0.47415 1.0632 2.3022 2.147 2.5763 1.4945 0.37806 3.4297-0.44105 4.2939-1.7176 1.1234-1.6593-1.4169-4.5945 0-6.0115 1.3157-1.3157 3.7647-0.39916 5.5821 0 2.0016 0.43963 4.4776 0.85014 5.5821 2.5764 1.1571 1.8084 0.94326 4.5122 0 6.4408-0.717 1.466-3.1475 1.5397-3.8645 3.0057-1.069 2.1858 0.081 4.8678 0 7.2996-0.0716 2.1505 0.96194 4.7995-0.42939 6.4408-1.6163 1.9068-4.8473 1.2335-7.2996 1.7176-3.5552 0.70171-7.1121 1.806-10.735 1.7176-2.7782-0.0679-6.6285 0.60253-8.1584-1.7176z"/>
+        <path id="path7745" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m437.84 488.48c-0.95951 0.035-1.8719 0.6358-2.5763 1.2882-0.61235 0.56706-1.2958 1.3124-1.2882 2.147 0.0123 1.3502 1.1479 2.5267 2.147 3.4351 1.6576 1.5072 3.8861 3.7142 6.0114 3.0057 1.5181-0.50604 1.5346-2.8155 2.147-4.2939 0.34642-0.83633 1.2355-1.7532 0.85878-2.5764-1.0951-2.3927-4.67-3.1018-7.2996-3.0057z"/>
+        <path id="path7747" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m490.22 473.45c1.52-1.3745 0.99422-3.9833 1.2882-6.0114 0.26768-1.8469 1.0768-3.8318 0.42939-5.5821-0.21068-0.56953-0.72714-1.0558-1.2882-1.2882-1.5868-0.65728-3.7236-0.95273-5.1527 0-1.5482 1.0321-1.843 3.317-2.147 5.1527-0.35153 2.1228-0.64847 4.5786 0.4294 6.4408 0.51702 0.89329 1.5735 1.4736 2.5763 1.7176 1.2594 0.30642 2.9032 0.43993 3.8645-0.42939z"/>
+        <path id="path7749" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m493.23 484.19c0.0962 0.91141-1.4142 1.2821-1.7176 2.147-0.52115 1.4857 0.19236 3.1606 0 4.7233-0.14421 1.1714-0.85878 1.7176-0.85878 3.4351 0 1.7176 0.27003 3.3685-0.85878 4.2939-1.1069 0.90743-2.8626 0-4.2939 0-1.0019 0-3.0057 2.147-3.0057 0s-0.0663-3.7226 0-5.5821c0.0716-2.0076-0.0444-4.0592 0.42939-6.0114 0.51419-2.1186 0.94036-4.5705 2.5763-6.0115 0.78194-0.68872 1.9853-1.0696 3.0057-0.85878 1.9922 0.41155 4.5098 1.8415 4.7233 3.8645z"/>
+        <path id="path7755" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m537.88 510.81c1.8743 1.9756-0.0899 5.4564-0.42939 8.1584-0.18197 1.4483 0.19617 3.2851-0.85878 4.2939-1.3606 1.3011-3.6996 0.87952-5.5821 0.85879-2.4707-0.0272-4.9162-0.63694-7.2996-1.2882-2.3593-0.64465-5.0831-0.90656-6.8702-2.5763-1.2637-1.1807-1.6879-3.0559-2.147-4.7233-0.34401-1.2496-0.97684-2.6897-0.42939-3.8645 0.43595-0.93554 1.2882-1.7176 2.5763-1.7176 1.2882 0-2.147-0.85878 5.1527 0 7.2996 0.85878 5.4277 0.71545 8.1584 0.85878 2.5728 0.13503 5.9558-1.869 7.729 0z"/>
+        <path id="path7757" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m642.23 494.92c-0.0621 2.9361-3.318 5.2704-6.0115 6.4408-2.2316 0.96975-4.8664 0-7.2996 0-2.2901 0-5.1527 2.147-6.8702 0-1.7176-2.1469-4.4127-2.448-3.8645-4.2939 0.63258-2.13 4.2794-1.2022 6.4408-1.7176 2.7033-0.64452 6.0114-0.85878 8.1584-1.7176 2.147-0.85878 4.6212-2.4345 6.8702-1.7176 1.2573 0.40079 2.6043 1.6864 2.5764 3.0057z"/>
+        <path id="path7763" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m542.18 307.28c-1.3545 2.1916-0.68771 5.2462 0 7.729 0.22277 0.8043 0.4569 2.0726 1.2882 2.147 1.5154 0.13555 2.3484-2.063 3.0057-3.4351 1.0675-2.2283 1.375-4.8303 1.2882-7.2996-0.0207-0.58978 0.10676-1.471-0.42939-1.7176-1.7446-0.8024-4.1431 0.94285-5.1527 2.5763z"/>
+        <path id="path7765" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m507.83 330.47c-0.58522 0.62851 0 1.7176 0 2.5763 0 1.0019-0.55154 2.1693 0 3.0057 0.60005 0.91002 1.944 1.5352 3.0057 1.2882 1.2852-0.29908 2.0574-1.7924 2.5763-3.0057 0.56564-1.3226 1.432-3.2624 0.42939-4.2939-1.4002-1.4405-4.6425-1.0409-6.0114 0.42939z"/>
+        <path id="path7769" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m498.38 332.61c-0.7844 1.7114-0.44229 4.2214 0.85878 5.5821 0.50438 0.52748 1.4484 0.64088 2.147 0.42939 0.96865-0.29328 1.7596-1.2119 2.147-2.1469 0.49296-1.1901 0.42639-2.649 0-3.8645-0.30336-0.86481-0.8141-1.993-1.7176-2.147-1.3311-0.22675-2.8725 0.91946-3.4351 2.147z"/>
+        <path id="path3019-4" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".32463" transform="matrix(.53895 0 0 .52918 239.03 142.08)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-1" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 266.66 161.51)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 293.38 191.87)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-2" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 318.08 227.72)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3017" stroke-width=".60115px" stroke="#000" fill-opacity=".31373" d="m129.13 518.23 199.48 2.7326 2.7326-10.93-34.006-6.0725c-21.85-4.92-33.29-18.77-32.48-43.12l79.853-293.91h-8.1979c-37.738 21.419-78.798 37.616-127.83 41.293l-1.8218 6.6797 46.758 3.3399c5.8248 0.41606 17.44 3.7972 13.359 19.128l-56.17 211.02c-6.3345 28.464-18.795 53.298-68.315 56.17l-10.627 1.8217z"/>
+        <path id="path7994-4" stroke-width=".60115px" stroke="#000" fill-opacity=".31373" d="m477.59 393.97-0.0521-9.0045 0.11945-6.5508c0.0198-1.089-48.04-0.53674-48.04-0.53674s-1.6445 1.4326-1.8217 2.429c-0.18503 1.0403 0.15436 2.2986 0.91088 3.0362 0.82618 0.80562 3.3399 0.91087 3.3399 0.91087l5.1616-0.30362s-1.1861 39.673-7.8942 57.992c-0.45374 1.2391-1.2022 2.3969-2.1254 3.3399-0.76582 0.78228-1.7916 1.2624-2.7326 1.8217-1.868 1.1102-6.2172 0.90997-5.7689 3.0362 0.60699 2.8787 5.8666 0.464 8.8051 0.60724 3.5395 0.17255 10.627 0.30363 10.627 0.30363h10.323l11.841 0.60725 8.1979-0.60725 5.4652-3.6435s1.0595-3.4278 1.5181-5.1616c0.45195-1.7088 1.4196-3.406 1.2145-5.1616-0.13128-1.1239-0.55558-2.4414-1.5181-3.0362-0.51656-0.31925-1.3449-0.37596-1.8218 0-2.0434 1.611-0.35167 5.4436-1.8218 7.5906-0.90409 1.3204-3.9471 2.7326-3.9471 2.7326l-3.9471 1.8218-8.5015 1.2145h-11.841l-2.429-1.2145-2.429-3.0362 1.2145-6.9834 3.3399-19.432 3.0362-1.2145h14.574l1.2145 1.2145v8.1978l2.1254 2.1254 2.1254-2.1254-0.60726-11.538 3.9471-8.5015-1.5181-2.7326h-1.2145l-2.7326 4.5544-2.1254 2.7326-2.7326 1.2145-7.8942 0.91088h-4.5544l-2.1254-0.60725 4.5544-27.326 7.8942-1.2145h8.8051l5.4652 0.30363 1.5181 3.6435 0.81879 7.9158c1.3464 1.1734 2.6928 0.46484 4.0392-0.3252z"/>
+        <path id="path7996" stroke-width=".60115px" stroke="#000" fill-opacity=".31373" d="m493.66 379.31 10.735 0.32204 9.1245-0.10735h4.8306l0.64409 1.2882-0.32205 1.2882s-0.85878 0.10735-1.3955 0.10735h-2.0396l-3.3278 0.64408-1.9322 1.2882-0.32204 0.75143-0.64409 3.8645-6.0114 40.363-0.42939 5.7968 0.2147 4.8306 1.7176 3.5425 5.7968 3.6498 8.2658 0.64409 6.7629-1.6102 4.0792-3.5425 3.4351-4.2939 2.5763-6.6555 2.0396-11.164 2.469-15.351 1.3955-7.5143c0.0716-3.6554 0.0358-3.8529 0.10735-5.9041l0.2147-3.7572-0.10735-2.3616-0.2147-2.0396-1.5029-0.64409h-3.1131l-1.7176-0.53673-0.32204-1.5029 0.10734-1.1808 1.6102-0.21469 6.5482 0.10735 7.6217 0.10734 3.7572 0.10735 0.10735 1.8249-0.42939 1.0735c-1.1808-0.11858-2.3616-0.0599-3.5425 0.10735-2.2364 0.57254-2.2556 2.9188-3.2204 4.5086l-3.1131 13.633-5.7968 32.419-4.8306 11.594c-3.1864 3.7124-6.7629 5.4746-10.52 6.3335-4.2939 1.0799-8.5878 1.599-12.882 0.96613-4.5452-0.48189-8.1837-2.3237-11.594-4.5086-2.3326-2.0522-3.9941-5.2229-5.4747-8.6951 0.2477-8.2428 0.72287-16.41 1.8249-24.368l4.1866-27.588c0.62845-2.6709 0.19438-4.1276-1.1808-4.5086l-5.4747-0.32204-0.10735-1.5029z"/>
+        <path id="path9170" stroke-width=".60115px" stroke="#000" fill-opacity=".31373" d="m565.75 379.16c-1.0783 0.77655-1.7529 1.7623-1.2211 3.3439l6.2181 1.8222-8.5663 59.344c-0.0738 0.51 0.0816 1.1266-0.22543 1.5404-0.28271 0.3811-0.52507 0.23037-1.2962 0.60115-1.6004 0.76946-4.2807 2.1224-5.6921 3.2312-0.46808 0.3677 0.33594 1.8228 0.9205 1.9349 10.657 2.0452 24.3 0.0834 24.76 0.526l0.43207-2.4985-7.89-1.6719c-1.0127-0.21422-2.0746-1.7934-1.8222-2.893 2.2661-9.8747 4.1433-29.286 6.2181-29.588l3.4942 1.5029c1.8808 1.0184 2.3093 1.7532 2.7239 1.6719 0 0 6.5633 25.094 16.4 31.88 3.7307 2.5734 9.2025 2.9397 13.507 1.5216 0.91824-0.30251 2.3086-1.0202 2.1416-1.9725-0.19163-1.0929-2.0594-0.86288-3.0809-1.2962l-6.9507-2.9494-14.409-29.456c19.88-10.106 20.592-26.953 5.2976-35.374l-30.959-1.2211zm14.897 72.344-0.0188 0.0752c0.0432-0.0342 0.0414-0.0534 0.0188-0.0752zm5.8612-68.549c1.2066 0.0191 2.4337 0.14188 3.2312 0.16908 2.1894 0.0747 4.4415 0.0709 6.2181 1.3526 2.038 1.4702 3.0222 3.7687 3.4942 6.2369 0.48555 2.5393 0.0189 5.1975-0.45086 7.7398-0.57868 3.1318-1.0554 6.5099-2.893 9.1111-1.5008 2.1244-3.8016 3.734-6.2181 4.6964-2.1286 0.84778-4.5509 0.90599-6.838 0.77022-1.5562-0.0924-4.6889 0.48156-4.5462-1.0708 1.0323-11.224 4.2472-24.773 4.0953-27.484-0.0744-1.3278 1.8965-1.5535 3.9074-1.5216z"/>
+        <path id="path3019" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 187.55 105.67)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-5" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 213.52 123.26)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-7" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 316.8 494.8)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-23" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 290.6 527)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-70" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 266.56 556.2)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-8" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 239.51 578.96)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-76" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 213.74 599.57)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-73" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 187.55 615.03)" stroke="#000" stroke-width="1.9136"/>
+        <rect id="rect3882" fill-opacity=".31373" rx="1.5215" height="17.914" width="3.6435" stroke="#000" y="93.759" x="500.77" stroke-width="1.0219"/>
+        <rect id="rect3882-6" fill-opacity=".31373" rx="1.5215" height="17.914" width="3.6435" stroke="#000" y="108.49" x="525.97" stroke-width="1.0219"/>
+        <rect id="rect3882-5" fill-opacity=".31373" rx="1.5215" height="17.914" width="3.6435" stroke="#000" y="123.06" x="551.78" stroke-width="1.0219"/>
+        <rect id="rect3882-63" fill-opacity=".31373" rx="1.5215" height="17.914" width="3.6435" stroke="#000" y="144.31" x="578.8" stroke-width="1.0219"/>
+        <rect id="rect3882-0" fill-opacity=".31373" rx="1.5215" height="24.721" width="3.6435" stroke="#000" y="169.21" x="604.3" stroke-width="1.0219"/>
+        <rect id="rect3882-2" fill-opacity=".31373" rx="1.5215" height="29.933" width="3.6435" stroke="#000" y="199.88" x="631.02" stroke-width="1.0219"/>
+        <rect id="rect3882-67" fill-opacity=".31373" rx="1.5215" height="93.709" width="3.6435" stroke="#000" y="150.69" x="499.25" stroke-width="1.0219"/>
+        <rect id="rect3882-07" fill-opacity=".31373" rx="1.5215" height="23.51" width="3.6435" stroke="#000" y="164.35" x="526.57" stroke-width="1.0219"/>
+        <rect id="rect3882-3" fill-opacity=".31373" rx="1.5215" height="17.914" width="3.6435" stroke="#000" y="657.13" x="499.55" stroke-width="1.0219"/>
+        <rect id="rect3882-03" fill-opacity=".31373" rx="1.5215" height="17.914" width="3.6435" stroke="#000" y="643.17" x="527.18" stroke-width="1.0219"/>
+        <rect id="rect3882-673" fill-opacity=".31373" rx="1.5215" height="24.477" width="3.6435" stroke="#000" y="621.91" x="551.78" stroke-width="1.0219"/>
+        <rect id="rect3882-1" fill-opacity=".31373" rx="1.5215" height="26.64" width="3.6435" stroke="#000" y="598.53" x="579.1" stroke-width="1.0219"/>
+        <rect id="rect3882-53" fill-opacity=".31373" rx="1.5215" height="27.508" width="3.6435" stroke="#000" y="570.3" x="603.09" stroke-width="1.0219"/>
+        <rect id="rect3882-38" fill-opacity=".31373" rx="1.5215" height="29.977" width="3.6435" stroke="#000" y="537.2" x="629.81" stroke-width="1.0219"/>
+        <rect id="rect3882-28" fill-opacity=".31373" rx="1.5215" ry="1.2023" height="94.05" width="3.6435" stroke="#000" y="521.41" x="500.16" stroke-width="1.0219"/>
+        <rect id="rect3882-64" fill-opacity=".31373" rx="1.5215" height="54.649" width="3.6435" stroke="#000" y="548.13" x="526.88" stroke-width="1.0219"/>
+        <rect id="rect3882-9" fill-opacity=".31373" rx="1.5215" height="61.936" width="3.6435" stroke="#000" y="522.93" x="550.56" stroke-width="1.0219"/>
+        <rect id="rect3882-57" fill-opacity=".31373" rx="1.5215" height="38.598" width="3.6435" stroke="#000" y="522.93" x="579.1" stroke-width="1.0219"/>
+      </g>
+    </g>
+  </defs>
+
+  <use xlink:href="#euro" />
+  <use xlink:href="#euro" transform="translate(800 50)" />
+  <use xlink:href="#euro" transform="translate(200 300)" />
+  <use xlink:href="#euro" transform="translate(1000 200)" />
+  <use xlink:href="#euro" transform="translate(1200 0)" />
+  <use xlink:href="#euro" transform="translate(400 50)" />
+
+</svg>
diff --git a/Klausuren/Sd1/2023summer/Exam/src/main/javadoc/resources/fonts/dejavu.css b/Klausuren/Sd1/2023summer/Exam/src/main/javadoc/resources/fonts/dejavu.css
new file mode 100644
index 0000000000000000000000000000000000000000..4fec2b593cdcc719fd7edd6744a33a3395ca8401
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/main/javadoc/resources/fonts/dejavu.css
@@ -0,0 +1,3 @@
+/* shame on you, javadoc! Still providing
+@import url('resources/fonts/dejavu.css') line in stylesheet.css
+*/
\ No newline at end of file
diff --git a/Klausuren/Sd1/2023summer/Exam/src/main/javadoc/resources/jdocSupplement.css b/Klausuren/Sd1/2023summer/Exam/src/main/javadoc/resources/jdocSupplement.css
new file mode 100644
index 0000000000000000000000000000000000000000..08840cdbf55d1f43368245d0a965659c4411b2ee
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/main/javadoc/resources/jdocSupplement.css
@@ -0,0 +1,72 @@
+/* Javadoc extensions: */
+
+ul > li > ul {
+    list-style-type: circle;
+}
+
+table.goikTableDefaults,
+table.goikTableDefaults>caption,
+table.goikTableDefaults>tr>th,
+table.goikTableDefaults>tr>td,
+table.goikTableDefaults>tbody>tr>th,
+table.goikTableDefaults>tbody>tr>td {
+    border: 2px solid black;
+    border-collapse: collapse;
+    padding: 1ex;
+    vertical-align: top;
+}
+
+table.goikTableDefaults>caption {
+    /* border-top-style: solid; border-left-style: solid; border-right-style: solid' */
+    border-bottom-style: none;
+    font-weight: bold;
+    background:#dee3e9;
+    text-align:left;
+    padding:8px 3px 3px 7px;
+}
+
+table.goikTableDefaults>tbody>tr>td {
+    vertical-align:top;
+}
+table.goikTableDefaults {
+    border-spacing: 0px !important;
+}
+
+table.indexTable {
+    border-collapse: collapse;
+    border-style: hidden;
+}
+
+table.indexTable caption {
+    text-align: left;
+}
+
+table.indexTable td, table.indexTable th {
+    border: 1px solid black;
+    padding: 0.5ex;
+}
+
+em {
+    font-weight: bold;
+    font-style: normal;
+}
+section.implementationHints>h3 {
+    font-weight: bold;
+    background-color: rgb(222, 227, 233);
+}
+
+code {
+    white-space: pre;
+}
+
+.implementationHints {
+    background-color: hsl(120, 100%, 95%) !important;
+}
+
+.myRed {
+    color: red;
+}
+
+.myGreen {
+    color: limegreen;
+}
diff --git a/Klausuren/Sd1/2023summer/Exam/src/main/javadoc/resources/jdocSupplement.js b/Klausuren/Sd1/2023summer/Exam/src/main/javadoc/resources/jdocSupplement.js
new file mode 100644
index 0000000000000000000000000000000000000000..97911e5581090aac5e37323427450f8c8c8a3f94
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/main/javadoc/resources/jdocSupplement.js
@@ -0,0 +1,7 @@
+for(var i in document.links) {
+   var link = document.links[i];
+   if (link.href && link.href.indexOf('http') === 0) { 
+       link.target = '_blank';
+   }
+}
+
diff --git a/Klausuren/Sd1/2023summer/Exam/src/main/resources/log4j2.xml b/Klausuren/Sd1/2023summer/Exam/src/main/resources/log4j2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..130f87a144c4eb0107a846e580c8fa7f5e819fc1
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/main/resources/log4j2.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <File name="A1" fileName="A1.log" append="false">
+            <PatternLayout pattern="%t %-5p %c{2} - %m%n"/>
+        </File>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+
+        <!-- You my want to define class or package level per-logger rules -->
+        <Logger name="de.hdm_stuttgart.mi.sd1.App" level="debug">
+            <AppenderRef ref="A1"/>
+        </Logger>
+        <Root level="info">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file
diff --git a/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/ShowReachedPoints.java b/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/ShowReachedPoints.java
new file mode 100644
index 0000000000000000000000000000000000000000..c497c5aeae393b00da76253145cbda5021349372
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/ShowReachedPoints.java
@@ -0,0 +1,22 @@
+package de.hdm_stuttgart.mi.sd1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+
+import de.hdm_stuttgart.mi.sd1.task1.*;
+import de.hdm_stuttgart.mi.sd1.task2.StringHelperTest;
+
+public class ShowReachedPoints {
+
+    /**
+     * Revealing total number of reached points from all tasks.
+     *
+     * @param args Unused
+     */
+    public static void main(String[] args) {
+        RunTests.exec(
+                "Task 1"
+                , A_PaymentTest.class, B_IrrigationTest.class, C_SwitchTest.class, D_ArrayHelperTest.class
+        );
+        RunTests.exec("Task 2", StringHelperTest.class);
+    }
+}
diff --git a/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task1/A_PaymentTest.java b/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task1/A_PaymentTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..2b26ec179b0561e983707f389ae65a16381eee2a
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task1/A_PaymentTest.java
@@ -0,0 +1,50 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class A_PaymentTest extends ExaminationTestDefaults {
+
+    static final private double EPS = 1.E-13;
+    @Test
+    @Marking(points = 8)
+    public void testFreeShippingPayment () {
+
+        for (int orderSum = 5000; orderSum < 10000; orderSum++) {
+            for (int day = 3; day < 100; day++) {
+                test(orderSum / 100., orderSum / 100., day);
+            }
+            for (int day = 0; day <= 2; day++) {
+                test(orderSum * 98 / 10000., orderSum / 100., day);
+            }
+        }
+    }
+
+    @Test
+    @Marking(points = 8)
+    public void testNonfreeShippingPayment () {
+
+        for (int orderSum = 1; orderSum < 5000; orderSum++) {
+            for (int day = 3; day < 100; day++) {
+                test(orderSum / 100. + 6.50, orderSum / 100., day);
+            }
+            for (int day = 0; day <= 2; day++) {
+                test(orderSum * 98 / 10000. + 6.50, orderSum / 100., day);
+            }
+        }
+    }
+
+    static private void test(final double expectedCosts, final double amount, int paymentDelay) {
+
+        final String message = "An order worth of " + amount + "€ and payment at day " + paymentDelay +
+                " results in  total costs of " + expectedCosts + "€";
+
+        Assert.assertEquals(
+                message,
+                expectedCosts,
+                A_Payment.getBillingAmount(amount, paymentDelay),
+                EPS);
+    }
+}
diff --git a/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task1/B_IrrigationTest.java b/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task1/B_IrrigationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..efb8d9e35ea585c52c16b62ced833328b9e1b70f
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task1/B_IrrigationTest.java
@@ -0,0 +1,84 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import org.junit.Assert;
+import org.junit.Test;
+import static de.hdm_stuttgart.mi.sd1.task1.B_Irrigation.irrigationIsActive;
+public class B_IrrigationTest  extends ExaminationTestDefaults {
+
+    @Test
+    @Marking(points = 13)
+    public void testIrrigation () {
+
+        boolean expectedIrrigationState = false;  // 0:00 till 4:59
+        for (int hour = 0; hour <= 4; hour++) {
+            for (int minute = 0; minute <= 59; minute++) {
+                final String errMmsg = getErrorMessage(expectedIrrigationState, hour, minute);
+                Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(hour, minute));
+            }
+        }
+
+        expectedIrrigationState = true;  // 5:00 till 5:59
+        for (int minute = 0; minute <= 59; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 5, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(5, minute));
+        }
+
+        expectedIrrigationState = true; // 6:00 till 6:30
+        for (int minute = 0; minute <= 30; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 6, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(6, minute));
+        }
+
+        expectedIrrigationState = false; // 6:31 till 6:59
+        for (int minute = 31; minute <= 59; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 6, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(6, minute));
+        }
+
+        expectedIrrigationState = false;  // 7:00 till 20:59
+        for (int hour = 7; hour <= 20; hour++) {
+            for (int minute = 0; minute < 60; minute++) {
+                final String errMmsg = getErrorMessage(expectedIrrigationState, hour, minute);
+                Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(hour, minute));
+            }
+        }
+
+        expectedIrrigationState = false; // 21:00 till 21:29
+        for (int minute = 0; minute <= 29; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 21, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(21, minute));
+        }
+
+        expectedIrrigationState = true; // 21:30 till 21:59
+        for (int minute = 30; minute <= 59; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 21, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(21, minute));
+        }
+
+        expectedIrrigationState = true; // 22:00 till 22:30
+        for (int minute = 0; minute <= 30; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 22, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(22, minute));
+        }
+
+        // 22:31 till 22:59
+        expectedIrrigationState = false; // 22:31 till 22:59
+        for (int minute = 31; minute <= 59; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 22, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(22, minute));
+        }
+
+        expectedIrrigationState = false; // 23:00 till 23:59
+        for (int minute = 0; minute <= 59; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 23, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(23, minute));
+        }
+    }
+
+    private String getErrorMessage(final boolean expectedIrrigationState, final int hour, final int minute) {
+        return "At " + hour + ":" + minute + " Irrigation is supposed to be "+
+                (expectedIrrigationState ? "active" : "inactive");
+    }
+}
diff --git a/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task1/C_SwitchTest.java b/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task1/C_SwitchTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..cbb173f1d3b080fa6bd5ed0b770d3d6c878de9a3
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task1/C_SwitchTest.java
@@ -0,0 +1,72 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+import static de.hdm_stuttgart.mi.sd1.task1.C_Switch.switchFirstAndSurname;
+
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class
+C_SwitchTest extends ExaminationTestDefaults {
+
+    @Test
+    @Marking(points = 2)
+    public void test_050_null() {
+        Assert.assertNull(switchFirstAndSurname(null));
+    }
+
+    @Test
+    @Marking(points = 2)
+    public void test_100_error() {
+        Assert.assertNull(switchFirstAndSurname(""));
+        Assert.assertNull(switchFirstAndSurname(" "));
+        Assert.assertNull(switchFirstAndSurname(" test "));
+        Assert.assertNull(switchFirstAndSurname("Tucholski;Kurt"));
+        Assert.assertNull(switchFirstAndSurname("Macdonald Amy"));
+        Assert.assertNull(switchFirstAndSurname("Keynes, John, Maynard"));
+        Assert.assertNull(switchFirstAndSurname(",Hauser Kaspar"));
+        Assert.assertNull(switchFirstAndSurname("Hauser Kaspar,"));
+        Assert.assertNull(switchFirstAndSurname("Hauser, Kaspar,"));
+        Assert.assertNull(switchFirstAndSurname(",Hauser, Kaspar"));
+        Assert.assertNull(switchFirstAndSurname(",Hauser  , Kaspar"));
+        Assert.assertNull(switchFirstAndSurname(",,,,,,,"));
+    }
+
+    @Test
+    @Marking(points = 2)
+    public void test_200_minNoWhite() {
+        Assert.assertEquals("R D", switchFirstAndSurname("D,R"));
+        Assert.assertEquals("Y X", switchFirstAndSurname("X,Y"));
+    }
+
+    @Test
+    @Marking(points = 2)
+    public void test_210_minWhite() {
+        Assert.assertEquals("q P", switchFirstAndSurname("P, q"));
+        Assert.assertEquals("z l", switchFirstAndSurname("l,   z"));
+        Assert.assertEquals("T d", switchFirstAndSurname("d,   T  "));
+        Assert.assertEquals("k p", switchFirstAndSurname("    p,k"));
+        Assert.assertEquals("u l  J", switchFirstAndSurname(" l  J   ,    u "));
+    }
+
+    @Test
+    @Marking(points = 2)
+    public void test_300_regularNoWhite() {
+        Assert.assertEquals("Miles Davis", switchFirstAndSurname("Davis,Miles"));
+        Assert.assertEquals("Hannah Arendt", switchFirstAndSurname("Arendt,Hannah"));
+        Assert.assertEquals("Simone de Beauvoir", switchFirstAndSurname("de Beauvoir,Simone"));
+    }
+
+    @Test
+    @Marking(points = 2)
+    public void test_300_regularWhite() {
+        Assert.assertEquals("Martin Luther King", switchFirstAndSurname("   King, Martin Luther"));
+        Assert.assertEquals("Janis Joplin", switchFirstAndSurname("  Joplin   ,Janis "));
+        Assert.assertEquals("John von Neumann", switchFirstAndSurname("von Neumann ,   John   "));
+    }
+}
diff --git a/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task1/D_ArrayHelperTest.java b/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task1/D_ArrayHelperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c72ec39c5e351f75fff02b5e6840a130531db63a
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task1/D_ArrayHelperTest.java
@@ -0,0 +1,68 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import org.junit.Assert;
+import org.junit.Test;
+import static de.hdm_stuttgart.mi.sd1.task1.D_ArrayHelper.getSigns;
+public class D_ArrayHelperTest extends ExaminationTestDefaults {
+
+    @Test
+    public void test_100_null() {
+        Assert.assertEquals("", getSigns(null));
+    }
+
+    @Test
+    public void test_110_empty() {
+        Assert.assertEquals("", getSigns(new int[]{}));
+    }
+
+    @Test
+    public void test_200_positivesSingle() {
+        Assert.assertEquals("positives", getSigns(new int[]{1}));
+        Assert.assertEquals("positives", getSigns(new int[]{70}));
+        Assert.assertEquals("positives", getSigns(new int[]{3000}));
+    }
+
+    @Test
+    public void test_210_positivesMultiple() {
+        Assert.assertEquals("positives", getSigns(new int[]{9, 1, 200, 50}));
+        Assert.assertEquals("positives", getSigns(new int[]{10000000, 1000, 999, 8}));
+        Assert.assertEquals("positives", getSigns(new int[]{100, 99}));
+    }
+
+    @Test
+    public void test_300_NegativesSingle() {
+        Assert.assertEquals("negatives", getSigns(new int[]{-5}));
+        Assert.assertEquals("negatives", getSigns(new int[]{-300}));
+        Assert.assertEquals("negatives", getSigns(new int[]{-99999}));
+    }
+
+    @Test
+    public void test_310_NegativesMultiple() {
+        Assert.assertEquals("negatives", getSigns(new int[]{-100, -9}));
+        Assert.assertEquals("negatives", getSigns(new int[]{-1, -3, -5, -7}));
+    }
+
+    @Test
+    public void test_400_justZero() {
+        Assert.assertEquals("zeroes", getSigns(new int[]{0}));
+    }
+
+    @Test
+    public void test_410_justZeroMultiple() {
+        Assert.assertEquals("zeroes", getSigns(new int[]{0, 0}));
+        Assert.assertEquals("zeroes", getSigns(new int[]{0, 0, 0}));
+        Assert.assertEquals("zeroes", getSigns(new int[]{0, 0, 0, 0}));
+        Assert.assertEquals("zeroes", getSigns(new int[]{0, 0, 0, 0, 0}));
+    }
+
+    @Test
+    public void test_500_mixed() {
+        Assert.assertEquals("negatives,zeroes,positives", getSigns(new int[]{3, -1, 0}));
+        Assert.assertEquals("zeroes,positives", getSigns(new int[]{55, 9, 0}));
+        Assert.assertEquals("negatives,zeroes,positives", getSigns(new int[]{0, -19, 300}));
+        Assert.assertEquals("negatives,positives", getSigns(new int[]{42, 9, -17}));
+        Assert.assertEquals("negatives,positives", getSigns(new int[]{55, 9, -33, 27, 88, -1000, 9}));
+        Assert.assertEquals("negatives,zeroes,positives", getSigns(new int[]{0, -3, 0, 55, 9, 0, 1111}));
+    }
+}
diff --git a/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task2/StringHelperTest.java b/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task2/StringHelperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b2e0d309098b1d2635bc25674c9141ed76cd35ea
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/task2/StringHelperTest.java
@@ -0,0 +1,39 @@
+package de.hdm_stuttgart.mi.sd1.task2;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+import java.io.File;
+import java.util.Scanner;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+
+public class StringHelperTest extends ExaminationTestDefaults {
+    @Test
+    @Marking(points = 4)
+    public void test_100_void() {
+        final Object[] input = {null, new File[0], null, new Scanner(System.in)};
+        final String[] expected = {};
+        Assert.assertArrayEquals(expected, StringHelper.filterStrings(input));
+    }
+    @Test
+    @Marking(points = 8)
+    public void test_200_StringResemblingClasses() {
+        final Object[] input = {null, "Eve", new StringBuffer("Adam"), null, new StringBuilder("Hello")};
+        final String[] expected = {"Eve", "Adam", "Hello"};
+        Assert.assertArrayEquals(expected, StringHelper.filterStrings(input));
+    }
+
+    @Test
+    @Marking(points = 8)
+    public void test_200_mixedClasses() {
+        final Object[] input = {null, null, "Eve", -13, false, null, new File("a"), 47.11, null};
+        final String[] expected = {"Eve", "-13", "false", "47.11"};
+        Assert.assertArrayEquals(expected, StringHelper.filterStrings(input));
+    }
+
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/Docs/.gitignore b/Klausuren/Sd1/2023summer/Solve/Docs/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..2d19fc766d98a08d9d1437896bfb008a7b15f340
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/Docs/.gitignore
@@ -0,0 +1 @@
+*.html
diff --git a/Klausuren/Sd1/2023summer/Solve/Docs/exam.xml b/Klausuren/Sd1/2023summer/Solve/Docs/exam.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f8e04de04c3961cd2b63e05b6ded01442f30014d
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/Docs/exam.xml
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<section version="5.0" xml:id="sd1_exam_2023_summer" xml:lang="en"
+         xmlns="http://docbook.org/ns/docbook"
+         xmlns:xlink="http://www.w3.org/1999/xlink"
+         xmlns:xila="http://www.w3.org/2001/XInclude/local-attributes"
+         xmlns:xi="http://www.w3.org/2001/XInclude"
+         xmlns:trans="http://docbook.org/ns/transclusion"
+         xmlns:svg="http://www.w3.org/2000/svg"
+         xmlns:m="http://www.w3.org/1998/Math/MathML"
+         xmlns:html="http://www.w3.org/1999/xhtml"
+         xmlns:db="http://docbook.org/ns/docbook">
+  <title>SD1 examination summer 2023</title>
+
+  <section xml:id="sd1_exam_2023_summer_task1">
+    <title>Implementing tasks</title>
+
+    <section xml:id="sd1_exam_2023_summer_task1_preparation">
+      <title>Preparation</title>
+
+      <orderedlist>
+        <listitem>
+          <para>Download and unzip the above file
+          <filename>exam.zip</filename>. You should see a directory
+          »<filename>Exam</filename>« containing a
+          <filename>pom.xml</filename> file.</para>
+        </listitem>
+
+        <listitem>
+          <para>Open this project in your <productname>IDEA</productname> IDE
+          by selecting the <filename>Exam/pom.xml</filename> file.</para>
+        </listitem>
+      </orderedlist>
+    </section>
+
+    <section xml:id="sd1_exam_2023_summer_task1_task">
+      <title>Task</title>
+
+      <qandaset defaultlabel="qanda" xml:id="sd1_exam_2023_summer_task1Qanda">
+        <qandadiv>
+          <qandaentry>
+            <question>
+              <para>Open the <filename>Readme.md</filename> file in your
+              project's root. It contains all necessary instructions for
+              solving the implementation tasks.</para>
+            </question>
+
+            <answer>
+              <para>Solution see <link
+              xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/-/tree/master/Klausuren/Sd1/2023summer/Solve">summer
+              2023 exam</link>.</para>
+            </answer>
+          </qandaentry>
+        </qandadiv>
+      </qandaset>
+    </section>
+
+    <section xml:id="sd1_exam_2023_summer_task1Caveats">
+      <title>Caveats</title>
+
+      <itemizedlist>
+        <listitem>
+          <para>When approaching end of examination check your input for
+          completeness prior to being automatically logged out by the system.
+          Remember: There is 120 minutes for the examination and another 5
+          minutes to check for completeness.</para>
+        </listitem>
+
+        <listitem>
+          <para>Projects residing just on your local workstation's file system
+          cannot be recovered after finishing the exam.</para>
+        </listitem>
+      </itemizedlist>
+    </section>
+  </section>
+
+  <section xml:id="sd1_exam_2023_summer_task2">
+    <title>switch versus if ... else if ... else</title>
+
+    <qandaset defaultlabel="qanda" xml:id="sd1_exam_2023_summer_task3Qanda">
+      <qandadiv>
+        <qandaentry>
+          <question>
+            <para>Consider a method
+            <methodname>computeItemCount()</methodname> of following
+            signature:</para>
+
+            <programlisting language="none">static int computeItemCount() {...}</programlisting>
+
+            <para>This method will be called by two different implementations
+            of another method <methodname>getScore()</methodname>:</para>
+
+            <informaltable border="1">
+              <tr>
+                <th>Implementation by <code>switch</code></th>
+
+                <th>Implementation by <code>if ... else if ...
+                else</code></th>
+              </tr>
+
+              <tr>
+                <td valign="top"><programlisting language="java">public static int getScore() {
+
+   switch (computeItemCount()){
+      case 1: return 20;
+      case 3: return 50;
+      default: return 0;
+   }
+}</programlisting></td>
+
+                <td valign="top"><programlisting language="java">public static int getScore() {
+
+   if (1 == computeItemCount()) {
+      return 20;
+   } else if (3 == computeItemCount()) {
+      return 50;
+   } else {
+      return 0;
+   }
+}</programlisting></td>
+              </tr>
+            </informaltable>
+
+            <para>An experienced programmer claims these two implementations
+            possibly return different results when executing
+            <methodname>getScore()</methodname>. Is she right? <emphasis
+            role="red">Explain</emphasis> your answer.</para>
+
+            <tip>
+              <para>Consider possible side effects of calling
+              <methodname>computeItemCount()</methodname> and provide an
+              example.</para>
+            </tip>
+          </question>
+
+          <answer>
+            <para>Consider:</para>
+
+            <programlisting language="java">public class X {
+   private static int itemCount = 2;
+
+    static int computeItemCount() {return itemCount++;}
+  ...
+}</programlisting>
+
+            <para>On a fresh start calling
+            <methodname>computeItemCount()</methodname> for the first time
+            will return the current value 2 of our variable <code
+            language="java">itemCount</code>.</para>
+
+            <para>The <code language="java">switch</code> implementation will
+            match its default and thus return 0.</para>
+
+            <para>On contrary the <code>if ... else if ... else</code>
+            implementation will call
+            <methodname>computeItemCount()</methodname> two times:</para>
+
+            <orderedlist>
+              <listitem>
+                <para>The first if <code>(1 == computeItemCount())</code>
+                fails since 1 != 2. This results in incrementing <code
+                language="java">itemCount</code> by 1 to the new value
+                3.</para>
+              </listitem>
+
+              <listitem>
+                <para>Now the else if <code language="java">(3 ==
+                computeItemCount())</code> clause succeeds. Thus
+                <methodname>getScore()</methodname> returns 50.</para>
+              </listitem>
+            </orderedlist>
+
+            <para>So the <code language="java">switch</code> statement
+            implementing a jump table differs from <code>if ... else if</code>
+            in definitely calling <code
+            language="java">computeItemCount()</code> only once.</para>
+          </answer>
+        </qandaentry>
+      </qandadiv>
+    </qandaset>
+  </section>
+
+  <section xml:id="sd1_exam_2023_summer_task3">
+    <title>Exception handling</title>
+
+    <qandaset defaultlabel="qanda" xml:id="sd1_exam_2023_summer_task2Qanda">
+      <qandadiv>
+        <qandaentry>
+          <question>
+            <para>Consider the following snippet:</para>
+
+            <programlisting language="java">Object o = ...;
+int a = ...;
+...
+try {
+    String  s = (String) o;           // May throw a <link
+                xlink:href="https://freedocs.mi.hdm-stuttgart.de/doc/openjdk-17-doc/api/java.base/java/lang/ClassCastException.html">ClassCastException</link>
+    int c = 4 / a;                    // May throw an <link
+                xlink:href="https://freedocs.mi.hdm-stuttgart.de/doc/openjdk-17-doc/api/java.base/java/lang/ArithmeticException.html">ArithmeticException</link>
+} catch (<link xlink:href="https://freedocs.mi.hdm-stuttgart.de/doc/openjdk-17-doc/api/java.base/java/lang/ClassCastException.html">ClassCastException</link> e) {
+    System.err.println(e.getMessage());
+} catch (<link xlink:href="https://freedocs.mi.hdm-stuttgart.de/doc/openjdk-17-doc/api/java.base/java/lang/ArithmeticException.html">ArithmeticException</link> e) {
+    System.err.println(e.getMessage());
+}</programlisting>
+
+            <para>Facilitate the above code and <emphasis
+            role="red">explain</emphasis> why your simpler implementation
+            always and under all circumstances produces an identical runtime
+            result.</para>
+
+            <tip>
+              <itemizedlist>
+                <listitem>
+                  <para>Both <code language="java">catch</code> clauses
+                  contain the same text.</para>
+                </listitem>
+
+                <listitem>
+                  <para>Search the inheritance hierarchy for a common ancestor
+                  class and consider the <methodname>getMessage()</methodname>
+                  method. Where is it actually being defined?</para>
+                </listitem>
+              </itemizedlist>
+            </tip>
+          </question>
+
+          <answer>
+            <para>Both <link
+            xlink:href="https://freedocs.mi.hdm-stuttgart.de/doc/openjdk-17-doc/api/java.base/java/lang/ClassCastException.html">ClassCastException</link>
+            and <link
+            xlink:href="https://freedocs.mi.hdm-stuttgart.de/doc/openjdk-17-doc/api/java.base/java/lang/ArithmeticException.html">ArithmeticException</link>
+            are being derived from their common parent <link
+            xlink:href="https://freedocs.mi.hdm-stuttgart.de/doc/openjdk-17-doc/api/java.base/java/lang/RuntimeException.html">RuntimeException</link>.
+            All three classes share the common <link
+            xlink:href="https://freedocs.mi.hdm-stuttgart.de/doc/openjdk-17-doc/api/java.base/java/lang/Throwable.html">Throwable</link>#<link
+            xlink:href="https://freedocs.mi.hdm-stuttgart.de/doc/openjdk-17-doc/api/java.base/java/lang/Throwable.html#getMessage()">getMessage()</link>
+            method by inheritance without redefining it.</para>
+
+            <para>Our two <code>catch</code> clauses may thus be combined into
+            one:</para>
+
+            <programlisting language="java">...
+try {
+    String  s = (String) o;         // May throw a <link
+                xlink:href="https://freedocs.mi.hdm-stuttgart.de/doc/openjdk-17-doc/api/java.base/java/lang/ClassCastException.html">ClassCastException</link>
+    int c = 4 / a;                  // May throw an <link
+                xlink:href="https://freedocs.mi.hdm-stuttgart.de/doc/openjdk-17-doc/api/java.base/java/lang/ArithmeticException.html">ArithmeticException</link>
+} catch (<link xlink:href="https://freedocs.mi.hdm-stuttgart.de/doc/openjdk-17-doc/api/java.base/java/lang/RuntimeException.html">RuntimeException</link> e) {      // Common parent class
+    System.err.println(e.getMessage());
+}</programlisting>
+          </answer>
+        </qandaentry>
+      </qandadiv>
+    </qandaset>
+  </section>
+</section>
diff --git a/Klausuren/Sd1/2023summer/Solve/Readme.md b/Klausuren/Sd1/2023summer/Solve/Readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..117f68a50982b7bac1d18665ab27fe313eeb5b99
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/Readme.md
@@ -0,0 +1,55 @@
+# Generate ond open class/method javadoc for browsing
+
+Grab a terminal in this IDE (By lower left icon or Alt+F12) and issue the following command:
+
+<pre>Exam> mvn javadoc:javadoc
+...
+[<span style="color:blue;font-weight:bold;">INFO</span>] Executing tasks
+[<span style="color:orange;font-weight:bold;">WARNING</span>]     [echo] Javadoc root at <span style="color:blue;">file:///home/.../Downloads/Exam/target/site/apidocs/index.html</span>
+[<span style="color:blue;font-weight:bold;">INFO</span>] Executed tasks
+...</pre>
+
+Click the <span style="color:blue;">file:///.../index.html</span> link opening your project's  `index.html` Javadoc root
+in your system's default web browser.
+
+# Implementation tasks
+
+Your project's following packages do contain implementation tasks:
+
+- `de.hdm_stuttgart.mi.sd1.task1` (50 Points)
+
+- `de.hdm_stuttgart.mi.sd1.task2` (20 points, more difficult)
+
+Read the generated documentation and implement the skeleton methods and classes.
+
+Your project's  `test` branch does contain corresponding unit tests for verifying your solutions' correctness.
+
+# Hints
+
+- Your score solely depends on the number of successfully executing unit tests. A »nearly correct« implementation failing
+with respect to a given unit tests will not contribute any points at all.
+
+- General advice: Implement less but correctly.
+
+- Mind special cases i.e. `null` variable values or null values being contained in arrays.
+
+- In case of test failures both the IDEA debugger and logging statements are your friend.
+
+Executing `de.hdm_stuttgart.mi.sd1.ShowReachedPoints` in your project's test branch as a Java application
+(not as Junit test!) shows your number of points reached so far.
+
+Do not model your implementations along unit test definitions i.e. avoid cheating this way! Such behaviour will be
+regarded as an attempt at deception (Täuschungsversuch).
+
+# Exam system upload
+
+After finishing implementing:
+
+1. Export this project by hitting **»File ➔ Export ➔ Project to Zip File«**.
+1. Use a self-explanatory file name like e.g. `solution1.zip`.
+1. Go to your exam browser window and upload `solution1.zip` .
+1. Complete by  **clicking the »<span style="background: #527A35;color:white;">Speichern + weiter ➞ </span>«** button.
+1. Hit **<span style="background: #446684;color:white;"> 🠬 Speichern + zurück</span>** and check if your
+   upload is visible.
+1. If you advance on implementing: Repeat steps 1. to 5.: Only the least uploaded `.zip` archive will become subject to
+    marking.
diff --git a/Klausuren/Sd1/2023summer/Solve/pom.xml b/Klausuren/Sd1/2023summer/Solve/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7edc7209eeb20fad161fb00c42760b4d65118656
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/pom.xml
@@ -0,0 +1,133 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>de.hdm_stuttgart.mi.sd1</groupId>
+    <artifactId>sd1_2023summer_solve</artifactId>
+    <version>0.9</version>
+    <packaging>jar</packaging>
+
+    <name>sd1_2023summer_solve</name>
+
+    <url>https://freedocs.mi.hdm-stuttgart.de/sd1_sect_mavenCli.html</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+        <maven.compiler.release>17</maven.compiler.release>
+
+        <freedocs.url>https://freedocs.mi.hdm-stuttgart.de</freedocs.url>
+        <jdk.api_17.url>${freedocs.url}/doc/openjdk-17-doc/api/</jdk.api_17.url>
+        <mathjax.url>${freedocs.url}/lib/MathJax/es5/tex-chtml.js</mathjax.url>
+        <libhighlight.url>${freedocs.url}/lib/highlight.js</libhighlight.url>
+    </properties>
+
+    <repositories>
+        <repository>
+            <id>hdm-mi-internal-maven-repo</id>
+            <url>https://maven.mi.hdm-stuttgart.de/nexus/repository/mi-maven</url>
+        </repository>
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>de.hdm_stuttgart.mi.exam</groupId>
+            <artifactId>unitmarking</artifactId>
+            <version>1.2</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.11.0</version>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>3.1.0</version>
+                <executions>
+                    <execution>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <target>
+                                <echo>Javadoc root at file://${project.basedir}/target/site/apidocs/index.html</echo>
+                            </target>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+		        <artifactId>maven-javadoc-plugin</artifactId>
+		        <version>3.5.0</version>
+                <configuration>
+                    <release>17</release>
+                    <doclint>all</doclint>
+                    <show>public</show>
+                    <docfilessubdirs>true</docfilessubdirs>
+                    <addStylesheets>
+                        <stylesheet>resources/jdocSupplement.css</stylesheet>
+                    </addStylesheets>
+
+                    <windowtitle>Exam documentation</windowtitle>
+
+                    <links>
+                        <link>${freedocs.url}/doc/openjdk-17-doc/api/</link>
+                    </links>
+
+                    <additionalOptions>
+                        <additionalOption>-html5 --allow-script-in-comments</additionalOption>
+                    </additionalOptions>
+                    <nohelp>true</nohelp>
+
+                    <header><![CDATA[
+            <script type="text/javascript" src="${mathjax.url}"></script>
+            <script type="text/javascript" src="{@docRoot}/resources/jdocSupplement.js"></script>
+	    
+            <link rel="stylesheet" href="${libhighlight.url}/styles/idea.min.css">
+            <script src="${libhighlight.url}/highlight.min.js"></script>
+            <script type="text/javascript">hljs.highlightAll();</script>]]>
+                    </header>
+                    <bottom><![CDATA[Copyright © 2023 Stuttgart Media University / MI. Licensed under
+        <a style="font-weight:bold;" href="https://creativecommons.org/licenses/by/4.0/legalcode" target="_blank"
+          >Creative Commons Attribution 4.0 International Public License</a>.]]></bottom>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>3.6.0</version>
+                <configuration>
+                    <descriptors>
+                        <descriptor>src/main/assembly/assembly.xml</descriptor>
+                    </descriptors>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <archive>
+                                <manifest>
+                                    <mainClass>de.hdm_stuttgart.mi.sd1.ShowReachedPoints</mainClass>
+                                </manifest>
+                            </archive>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/assembly/assembly.xml b/Klausuren/Sd1/2023summer/Solve/src/main/assembly/assembly.xml
new file mode 100644
index 0000000000000000000000000000000000000000..85268e2965620878373d76337f524d8785fd0e1f
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/assembly/assembly.xml
@@ -0,0 +1,36 @@
+<assembly
+    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
+    <id>fat-tests</id>
+    <formats>
+        <format>jar</format>
+    </formats>
+    <includeBaseDirectory>false</includeBaseDirectory>
+    <dependencySets>
+        <dependencySet>
+            <outputDirectory/>
+            <useProjectArtifact>true</useProjectArtifact>
+            <unpack>true</unpack>
+            <scope>test</scope>
+        </dependencySet>
+    </dependencySets>
+    <fileSets>
+        <fileSet>
+            <directory>${project.build.directory}/test-classes</directory>
+            <outputDirectory/>
+            <includes>
+                <include>**/*.class</include>
+            </includes>
+            <useDefaultExcludes>true</useDefaultExcludes>
+        </fileSet>
+        <fileSet>
+            <directory>${project.build.directory}/classes</directory>
+            <outputDirectory/>
+            <includes>
+                <include>**/*.class</include>
+            </includes>
+            <useDefaultExcludes>true</useDefaultExcludes>
+        </fileSet>
+    </fileSets>
+</assembly>
\ No newline at end of file
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/only_in_solve/StringObjects.java b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/only_in_solve/StringObjects.java
new file mode 100644
index 0000000000000000000000000000000000000000..1e8c68ba197f7932142c6d29e18d72ba15220a19
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/only_in_solve/StringObjects.java
@@ -0,0 +1,31 @@
+package de.hdm_stuttgart.mi.sd1.only_in_solve;
+
+import de.hdm_stuttgart.mi.sd1.task2.StringHelper;
+
+import java.util.Scanner;
+
+/**
+ * Demo usage
+ */
+public class StringObjects {
+
+    /**
+     * Demo usage
+     * @param args Unused
+     */
+    public static void main(String[] args) {
+
+        Object[] collection = {"Foo", null, new StringBuffer("Eve"), 42, new StringBuilder("Adam"), new Scanner(System.in), 3.7f, true};
+              //  Array index: 0      1     2                        3   4                          5                       6</code></pre>
+
+String[] results = StringHelper.filterStrings(collection);
+
+for (final String r: results) {
+    System.out.println('"' + r + '"');
+}
+
+    }
+
+
+
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/A_Payment.java b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/A_Payment.java
new file mode 100644
index 0000000000000000000000000000000000000000..acb47be234f4d9c3ee7ecba9b08fe9302eb1e207
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/A_Payment.java
@@ -0,0 +1,58 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+/**
+ * Payment rules for customer orders.
+ */
+public class A_Payment {
+
+    /**
+     * <p>Calculate order related end customer billing amounts.</p>
+     *
+     * <p>Due payments are being calculated by the following two rules:</p>
+     *
+     * <ol>
+     *     <li>
+     *         <p>For order amounts below 50€ an additional 6.50€ shipping fee applies.</p>
+     *     </li>
+     *
+     *     <li>
+     *         <p>Customers paying within two days receive an early payment discount of 2% being applied
+     *          to order costs excluding shipping fee.</p>
+     *
+     *         <p>Examples:</p>
+     *          <ul>
+     *              <li>
+     *                  <p>An order worth of 50.00€ being paid within two days will be reduced by 2% resulting in
+     *                     49.00€. The regular costs exceeding 50€ the customer still enjoys a free delivery.</p>
+     *              </li>
+     *
+     *              <li>
+     *                  <p>An order worth of 40.00€ being paid within two days will be reduced by 2% resulting in
+     *                     39.20€. The regular costs of 40€ not exceeding the 50€ limit adding 6.50€ shipping results in
+     *                     a due amount of 45.70€.</p>
+     *              </li>
+     *          </ul>
+     *
+     *     </li>
+     * </ol>
+     *
+     * @param orderAmount The order's sum of all costs
+     * @param paymentDelayInDays Period until payment occurs.
+     * @return <p>The total due amount a customer is obliged to pay.</p>
+     *
+     * <img src="doc-files/euros.svg" alt="Five euros" style="width: 20em; height: auto;">
+     *
+     */
+    static public double getBillingAmount(final double orderAmount, final int paymentDelayInDays) {
+
+        final double shippingFee = orderAmount < 50 ? 6.50: 0;
+
+        if (paymentDelayInDays <= 2) {
+            return orderAmount * 98 / 100 + shippingFee;
+        } else {
+            return orderAmount + shippingFee;
+        }
+    }
+
+    private A_Payment(){/* Suppressing constructor Javadoc HTML generation */}
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/B_Irrigation.java b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/B_Irrigation.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb490e38bcd1da78ada5d6abe50abf0aff7e9fe8
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/B_Irrigation.java
@@ -0,0 +1,44 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+/**
+ * <p>Irrigation scheduling</p>
+ */
+public class B_Irrigation {
+
+    /**
+     *
+     * <p>Controlling irrigation times.</p>
+     *
+     * <p>A farmer intends to start irrigating her plants within two periods in the morning and afternoon:</p>
+     *
+     * <ul>
+     *     <li>from 5:00 to 6:30 (inclusive)</li>
+     *     <li>from 21:30 to 22:30 (inclusive)</li>
+     * </ul>
+     *
+     * <section class="implementationHints">
+     *     <h4 class="implementationHints">Hint:</h4>
+     *
+     * <p>A full day has got \( 24 \cdot 60 = 1440 \) minutes. You may convert all time data like e.g.
+     * <span style="color:red;">21</span>:<span style="color:blue;">47</span> to minutes
+     * using \( \textcolor{red}{21} \cdot 60 + \textcolor{blue}{47} = 1307 \) minutes making decisions based on the
+     * above described time periods easier.</p>
+     *
+     * </section>
+     *
+     * @param hour Current hour e.g. <span style="color:red;">22</span> in <span style="color:red;">22</span>:35.
+     * @param minute Current minute e.g. <span style="color:red;">35</span> in 22:<span style="color:red;">35</span>.
+     * @return <code>true</code> if irrigation is intended to be active, <code>false</code> otherwise.
+     */
+    public static boolean irrigationIsActive(final int hour, final int minute) {
+
+        final int fullTimeInMinutes = 60 * hour + minute;
+
+        return (5 * 60 <= fullTimeInMinutes && fullTimeInMinutes <= 6 * 60 + 30) ||
+                //5:00                                                     6:30
+               (21 * 60 + 30 <= fullTimeInMinutes && fullTimeInMinutes <= 22 * 60 + 30);
+                //     21:30                                                     22:30
+    }
+
+    private B_Irrigation(){/* Suppressing constructor Javadoc HTML generation */}
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/C_Switch.java b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/C_Switch.java
new file mode 100644
index 0000000000000000000000000000000000000000..f4f6ed75ac1d8e41d2f6e99cbeaae4f9d589340e
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/C_Switch.java
@@ -0,0 +1,144 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+/**
+ * <p>Handling first name and surname.</p>
+ */
+public class C_Switch {
+    /**
+     * <p>Switch  first name and surname.</p>
+     *
+     * <p>This method expects person names in reverse government agency style:
+     * <span style="color:red;">First name</span> and <code style="color:blue;">surname</code> are being switched and
+     * separated by a comma. These will be transformed back to their »regular« form. Examples:</p>
+     *
+     * <table class="goikTableDefaults">
+     *     <caption>Switching Back to Regular</caption>
+     *     <tbody>
+     *         <tr>
+     *             <th>Agency style</th>
+     *             <th>Regular style</th>
+     *         </tr>
+     *         <tr>
+     *             <td><code style="color:blue;">Davis</code>,<code style="color:red;">Miles</code></td>
+     *             <td><code style="color:red;">Miles</code> <code style="color:blue;">Davis</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td><code style="color:blue;">Tolkien</code>,<code style="color:red;">John Ronald Reuel</code></td>
+     *             <td><code style="color:red;">John Ronald Reuel</code> <code style="color:blue;">Tolkien</code></td>
+     *         </tr>
+     *     </tbody>
+     * </table>
+     *
+     * <p>Whitespace shall be ignored. In the following examples the "<code style="color:red;">␣</code>" character
+     * denotes whitespace:</p>
+     *
+     * <table class="goikTableDefaults">
+     *     <caption>Whitespace handling</caption>
+     *     <tbody>
+     *         <tr>
+     *             <th>Agency style</th>
+     *             <th>Regular style</th>
+     *         </tr>
+     *         <tr>
+     *             <td><code>Noether,<span style="color:red;">␣</span>Emmy</code></td>
+     *             <td rowspan="3">Emmy Noether</td>
+     *         </tr>
+     *         <tr>
+     *             <td><code>Noether,<span style="color:red;">␣␣␣</span>Emmy</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td><code><span style="color:red;">␣␣</span>Noether,<span style="color:red;">␣</span
+     *               >Emmy<span style="color:red;">␣␣␣</span></code></td>
+     *         </tr>
+     *     </tbody>
+     * </table>
+     *
+     * <p>Erroneous or completely absent input yields a <code>null</code> return value:</p>
+     *
+     * <table class="goikTableDefaults">
+     *     <caption>Erroneous cases</caption>
+     *     <tbody>
+     *         <tr>
+     *             <th>Agency Style</th>
+     *             <th>Remark</th>
+     *             <th>Result</th>
+     *         </tr>
+     *         <tr>
+     *             <td><code>Rutherford John</code></td>
+     *             <td><code>Missing comma</code></td>
+     *             <td rowspan="7"><code>null</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td><code>Ronald Reuel,Tolkien,John</code></td>
+     *             <td rowspan="2">Two commas</td>
+     *         </tr>
+     *         <tr>
+     *             <td><code>Ronald Reuel<span style="color:red;">␣␣␣</span>,Tolkien,<span style="color:red;">␣</span>John</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td>,<code style="color:red;">John</code></td>
+     *             <td rowspan ="2">Comma at start, no <code style="color:blue;">surname</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td>␣␣␣,␣<code style="color:red;">John</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td><code style="color:blue;">Updike</code>,</td>
+     *             <td>Comma at end, no <code style="color:red;">first name</code></td>
+     *         </tr>
+     *         <tr>
+     *             <td><code>null</code></td>
+     *             <td>No input - no output</td>
+     *         </tr>
+     *     </tbody>
+     * </table>
+     *
+     * <section class="implementationHints">
+     *     <h4 class="implementationHints">Useful methods:</h4>
+     *
+     *     <ul>
+     *         <li>{@link String#charAt(int)} retrieving character at given index.</li>
+     *
+     *         <li>{@link String#toCharArray()} converting a {@link String} into <code>char[]</code>.</li>
+     *
+     *         <li>{@link String#trim()} stripping off whitespace at beginning and end.</li>
+     *
+     *         <li>{@link String#split(String)} using <code>","</code> for regexp parameter.</li>
+     *     </ul>
+     * </section>
+     *
+     * @param agencyStyleName A person's name written as <code style="color:red">surname, first name</code>.
+     * @return A regular person's name <code style="color:red">first name surname</code> or <code>null</code> in case of
+     * error or complete lack of input.
+     */
+    static public String switchFirstAndSurname(final String agencyStyleName) {
+        if (null == agencyStyleName || agencyStyleName.trim().equals("")) {
+            return null;
+        } else {
+            final char[] stringCharacter = agencyStyleName.toCharArray();
+            int commaCount = 0; // How many ',' chars are present?
+            for (final char c: stringCharacter) {
+                if (',' == c) {
+                    commaCount++;
+                }
+            }
+            if (1 != commaCount || // Not exactly one comma
+                    ',' == stringCharacter[0] || // Comma at beginning
+                    ',' == stringCharacter[agencyStyleName.length() -1]// comma at end
+            ) {
+                return null;
+            } else {
+                final String[] nameComponents = agencyStyleName.split(",");
+                if (nameComponents[0].trim().equals("") ||    // Surname just whitespace
+                        nameComponents[1].trim().equals(""))  // First name just whitespace
+                {
+                    return null;
+                } else {
+                    return nameComponents[1].trim().concat(" ").concat(nameComponents[0].trim());
+                }
+            }
+        }
+    }
+
+    private C_Switch() {/* Suppressing constructor Javadoc HTML generation */}
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/D_ArrayHelper.java b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/D_ArrayHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..5fdfc39eb275fcf981266ae0323b4561c4c04745
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/D_ArrayHelper.java
@@ -0,0 +1,123 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+/** <p>Array helper method.</p>
+ *
+ */
+public class D_ArrayHelper {
+
+    /**
+     * <p>Gather information about an <code>int</code> array's negative, zero and positive values.</p>
+     *
+     * <p>An <code>int</code> array may contain negative, zero and positive values. This information is being
+     * provided by a {@link String}:</p>
+     *
+     * <table class="goikTableDefaults">
+     *   <caption>Filtering {@link String} instances</caption>
+     *   <tr>
+     *     <th>Values</th>
+     *     <th>Result String</th>
+     *   </tr>
+     *   <tr>
+     *       <td><code>{1, 7, 5,20}</code></td>
+     *       <td><code>"positives"</code></td>
+     *   </tr>
+     *   <tr>
+     *       <td><code>{-1, -20, 0, -33}</code></td>
+     *       <td><code>"negatives,zeroes"</code></td>
+     *   </tr>
+     *   <tr>
+     *       <td><code>{1, 7, -4, 5, 20, 0}</code></td>
+     *       <td><code>"negatives,zeroes,positives"</code></td>
+     *   </tr>
+     *   <tr>
+     *       <td><code>{0}</code></td>
+     *       <td><code>"zeroes"</code></td>
+     *   </tr>
+     *   <tr>
+     *       <td><code>{-4}</code></td>
+     *       <td><code>"negatives"</code></td>
+     *   </tr>
+     *   <tr>
+     *       <td><code>{}</code></td>
+     *       <td rowspan="2"><code>""</code></td>
+     *   </tr>
+     *   <tr>
+     *       <td><code>null</code></td>
+     *   </tr>
+     *
+     * </table>
+     *
+     * <p>The exact names and their order matters:</p>
+     * <ol>
+     *     <li><code>"negatives"</code></li>
+     *     <li><code>"zeroes"</code></li>
+     *     <li><code>"positives"</code></li>
+     * </ol>
+     *
+     * <p>Thus we will see e.g. <code>"negatives,positives"</code> but never <code>"positives,negatives"</code>.</p>
+     *
+     * <section class="implementationHints">
+     *     <h4 class="implementationHints">Hint:</h4>
+     *     <p>Mind whitespace: <code>"negatives,<span style="color:red;">␣</span>zeroes"</code> differs from
+     *     <code>"negatives,zeroes"</code> by an additional space character "<span style="color:red;">␣</span>"
+     *     following the comma.</p>
+     * </section>
+     *
+     * @param values Integer values
+     * @return String Categorization of signs as being stated above or an empty string if no values being present.
+     */
+    public static String getSigns(final int[] values) {
+
+        // Handle trivial cases
+        //
+        if (null == values || 0 == values.length) {
+            return "";
+        }
+
+        // Step one: See whether negatives, zeroes or positives do show up among our values.
+        //
+        boolean hasNegatives = false, hasZeroes = false, hasPositives = false;
+
+        for (final int value: values) {
+            if (value < 0 ) {
+                hasNegatives = true;
+            } else if (0 == value) {
+                hasZeroes = true;
+            } else {
+                hasPositives = true;
+            }
+
+            if (hasNegatives && hasZeroes && hasPositives) { // Minor optimization
+                break;
+            }
+        }
+
+        // Step 2: Assemble a possibly true subset of {"negatives", "zeroes", "positives"}
+        //
+        final String[] signs = new String[3];
+        int signCount = 0;
+
+        if (hasNegatives) {
+            signs[signCount++] = "negatives";
+        }
+
+        if (hasZeroes) {
+            signs[signCount++] = "zeroes";
+        }
+
+        if (hasPositives) {
+            signs[signCount++] = "positives";
+        }
+
+        // Step 3: Assemble retrieved signs into a result string
+        //
+        final StringBuilder ret = new StringBuilder(signs[0]);// At least one must exist
+
+        for (int i = 1; i < signCount; i++) {
+            ret.append(',').append(signs[i]);
+        }
+        return ret.toString();
+    }
+
+    private D_ArrayHelper(){/* Suppressing constructor Javadoc HTML generation */}
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/package-info.java b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..fb7bb58c281c72e0241b31061906c3bf633172d2
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task1/package-info.java
@@ -0,0 +1,17 @@
+/**
+ * <p>This package mostly (if not completely) contains static methods.</p>
+ *
+ * <p>The ordering being implied by class names reflects the author's opinion with respect to ascending implementation
+ * difficulty. Hints:</p>
+ *
+ * <ul>
+ *     <li>Run <code>mvn javadoc:javadoc</code> and open the generated
+ *     <code>/home/.../target/site/apidocs/index.html</code> file in your browser of choice.</li>
+ *
+ *     <li>Use the corresponding unit tests to check your implementation's consistency and class
+ *     <code>de.hdm_stuttgart.mi.sd1.test.ShowReachedPoints</code> from your project's “unit test” branch.</li>
+ *
+ * </ul>
+ *
+ */
+package de.hdm_stuttgart.mi.sd1.task1;
\ No newline at end of file
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task2/StringHelper.java b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task2/StringHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..4d6aa0824b05ce588a16ee41d3db494e53d1dcb2
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task2/StringHelper.java
@@ -0,0 +1,133 @@
+package de.hdm_stuttgart.mi.sd1.task2;
+
+import java.util.Arrays;
+
+/**
+ * <p>String related helper methods.</p>
+ */
+public class StringHelper {
+
+    /**
+     *
+     * <p>Restrict an array of arbitrary type objects to a given list of types and converting them to {@link String}
+     *  instances.</p>
+     *
+     * <table class="goikTableDefaults">
+     *     <caption>Classes to be filtered</caption>
+     *     <tr>
+     *         <th colspan="4">Class</th>
+     *     </tr>
+     *     <tr>
+     *         <td>{@link String}</td>
+     *         <td>{@link StringBuilder}</td>
+     *         <td>{@link StringBuffer}</td>
+     *         <td>{@link Boolean}</td>
+     *     </tr>
+     *     <tr>
+     *         <td>{@link Integer}</td>
+     *         <td>{@link Long}</td>
+     *         <td>{@link Float}</td>
+     *         <td>{@link Double}</td>
+     *     </tr>
+     * </table>
+     *
+     * <p>Consider the following example list of objects:</p>
+     *
+     * <pre><code class="java"> Object[] collection = {"Foo", null, new StringBuffer("Eve"), 42, new StringBuilder("Adam"), new Scanner(System.in), 3.7f, true};
+     * //            Array index: 0     1                        2   3                          4                       5     6     7</code></pre>
+     *
+     * <p>By virtue of boxing the <code>collection</code> array references:</p>
+     *
+     * <table class="goikTableDefaults">
+     *     <caption>Objects being contained in variable <code>collection</code></caption>
+     *     <tr>
+     *         <th>Array index</th>
+     *         <th>Class</th>
+     *         <th>Array index</th>
+     *         <th>Class</th>
+     *         <th>Array index</th>
+     *         <th>Class</th>
+     *         <th>Array index</th>
+     *         <th>Class</th>
+     *     </tr>
+     *     <tr>
+     *         <td>0</td>
+     *         <td>{@link String}</td>
+     *         <td>1</td>
+     *         <td><code>null</code> (empty reference)</td>
+     *         <td>2</td>
+     *         <td>{@link StringBuffer}</td>
+     *         <td>3</td>
+     *         <td>{@link Integer}</td>
+     *     </tr>
+     *     <tr>
+     *         <td>4</td>
+     *         <td>{@link StringBuilder}</td>
+     *         <td>5</td>
+     *         <td>{@link java.util.Scanner}</td>
+     *         <td>6</td>
+     *         <td>{@link Float}</td>
+     *         <td>7</td>
+     *         <td>{@link Boolean}</td>
+     *     </tr>
+     * </table>
+     *
+     * <p>Since {@link java.util.Scanner} is not among the to be filtered classes list it will be ignored as
+     *     well as the <code>null</code> value. On execution we get:</p>
+     *
+     * <table class="goikTableDefaults">
+     *   <caption>Filtering {@link String} instances</caption>
+     *   <tr>
+     *     <th>Code</th>
+     *     <th>Result</th>
+     *   </tr>
+     *   <tr>
+     *       <td>
+     *          <pre><code class="java"> final Object[] collection = {"Foo", null, ...
+     *
+     * final String[] results = StringHelper.filterStrings(collection);
+     *
+     * for (final String r: results) {
+     *     System.out.println('"' + r + '"');
+     * }</code></pre>
+     *       </td>
+     *       <td>
+     *           <pre><code class="nohighlight"> "Foo"
+     * "Eve"
+     * "42"
+     * "Adam"
+     * "3.7"
+     * "true"</code></pre>
+     *       </td>
+     *   </tr>
+     * </table>
+     *
+     * @param objects Either <code>null</code> or a list of instances possibly containing <code>null</code> values.
+     * @return A filtered list of {@link String} instances.
+     */
+    static public String[] filterStrings(final Object[] objects) {
+
+        if (null == objects || 0 == objects.length) {
+            return new String[0];
+        } else {
+            final String[] retrievedStrings = new String[objects.length];
+            int count = 0;
+            for (final Object o: objects) {
+                if (o instanceof String ||
+                    o instanceof StringBuilder ||
+                        o instanceof StringBuffer ||
+                        o instanceof Boolean ||
+                    o instanceof Number) {
+                    retrievedStrings[count++] =  o.toString();
+                }
+            }
+            if (0 == count) {
+                return new String[0];
+            } else {
+                return Arrays.copyOf(retrievedStrings, count);
+            }
+        }
+    }
+
+    private StringHelper(){ /* Suppressing constructor Javadoc HTML generation */}
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/javadoc/de/hdm_stuttgart/mi/sd1/task1/doc-files/euros.svg b/Klausuren/Sd1/2023summer/Solve/src/main/javadoc/de/hdm_stuttgart/mi/sd1/task1/doc-files/euros.svg
new file mode 100644
index 0000000000000000000000000000000000000000..52b438c426ac23f2d8a99af520cda060fa8a4acd
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/javadoc/de/hdm_stuttgart/mi/sd1/task1/doc-files/euros.svg
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#"
+     xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:svg="http://www.w3.org/2000/svg" id="svg2997"
+     viewBox="0 0 2000 1100" version="1.1">
+  <defs id="defs2999">
+    <linearGradient id="linearGradient4687" y2="129.08" gradientUnits="userSpaceOnUse" y1="129.08" x2="1012.4" x1="-224.48">
+      <stop id="stop8780" stop-color="#e6e6e6" offset="0"/>
+      <stop id="stop8782" stop-color="#ccc" stop-opacity=".7459" offset="1"/>
+    </linearGradient>
+    <linearGradient id="linearGradient4689" x1="-224.48" gradientUnits="userSpaceOnUse" y1="129.08" gradientTransform="matrix(.41639 0 0 .69851 208.46 295.68)" x2="1012.4" y2="129.08">
+      <stop id="stop8780-1" stop-color="#e6e6e6" offset="0"/>
+      <stop id="stop8782-6" stop-color="#ccc" stop-opacity=".7459" offset="1"/>
+    </linearGradient>
+  </defs>
+  <defs>
+    <g id="euro" transform="translate(-13.377 -26.164)">
+      <g id="g4633">
+        <path id="path3165" d="m977.83 472.53c0 324.69-268.64 587.91-600.03 587.91s-600.03-263.22-600.03-587.91 268.64-587.91 600.03-587.91 600.03 263.22 600.03 587.91z" fill-opacity=".99317" transform="matrix(.59444 0 0 .61007 146.36 97.467)" stroke="#000" stroke-width="3" fill="#b9a464"/>
+        <path id="path3167" d="m945.71 459.51c0 8.6788-251.36 15.714-561.43 15.714s-561.43-7.0355-561.43-15.714c0-8.6788 251.36-15.714 561.43-15.714s561.43 7.0355 561.43 15.714z" transform="matrix(.60547 0 0 21.788 140.76 -9628.2)" stroke="#000" stroke-width=".34757" fill="#d0c27b"/>
+        <path id="path7998" d="m1012.2 129.08c0 205.3-276.78 371.74-618.21 371.74s-618.21-166.43-618.21-371.74c0-205.3 276.78-371.74 618.21-371.74s618.21 166.43 618.21 371.74z" transform="matrix(.41639 0 0 .69851 208.46 295.68)" stroke="#000" stroke-width="1.1147" fill="url(#linearGradient4687)"/>
+        <path id="path7998-6" fill="url(#linearGradient4689)" d="m629.58 399.3c-2.1732 4.4732-3.5743 9.4908-4.0202 14.935-0.24162 4.9984 0.1331 9.5675 0.99564 13.695 1.516-9.3833 2.534-18.937 3.0245-28.63z"/>
+        <path id="path9175" stroke-width=".60115px" stroke="#000" fill-opacity=".31373" d="m665.03 377.65c-21.09 0.007-37.704 15.022-39.469 36.576-1.2251 25.344 13.112 39.821 29.137 40.089 17.67-0.17315 31.455-9.4152 37.816-35.843-1.1444-0.51609 5.0751-34.637-27.484-40.822zm-4.734 4.3207c1.2278-0.037 2.496 0.0298 3.8135 0.22543 20.514 9.5788 17.346 17.649 17.17 34.923-3.1539 15.151-9.3242 34.6-27.033 31.729 0 0-23.378-1.0035-18.222-36.444 4.6698-19.008 12.403-30.075 24.271-30.433z"/>
+        <path id="path7759" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m403.48 375.55c5.1369 0.13767 10.004-2.3586 15.029-3.4351 2.1409-0.45867 4.31-0.78514 6.4408-1.2882 1.5883-0.37494 3.0914-1.2708 4.7233-1.2882 2.3604-0.0251 4.6799 0.83746 6.8702 1.7176 1.0708 0.43024 2.0077 2.2968 3.0057 1.7176 1.1142-0.64657 0.0536-2.5774 0-3.8645-0.0716-1.722-1.4778-3.7847-0.4294-5.1527 0.97341-1.2702 3.2223-0.3041 4.7233-0.85878 1.8652-0.68923 4.4232-1.156 5.1527-3.0057 0.54821-1.3901 1.2882-4.2939-1.2882-4.2939-2.5763 0-6.249 0.34696-9.0172-0.85877-1.5801-0.68827-3.3643-1.7858-3.8645-3.4351-0.98747-3.2557 3.3763-6.5692 2.5763-9.876-0.85804-3.5468-5.8845-4.7948-7.2996-8.1584-0.83441-1.9833 0.17137-4.3747-0.42938-6.4408-0.50072-1.7221-1.6615-3.1808-2.5764-4.7233-1.2152-2.0489-3.7587-3.6316-3.8645-6.0115-0.15065-3.3898 3.0057-8.5878 4.7233-9.0172 1.7176-0.42939 4.2111-1.7468 3.8645-3.4351-0.54603-2.6602-5.014-2.5173-7.729-2.5763-1.0418-0.0226-2.0949 1.3648-3.0057 0.85877-0.91087-0.50603-1.0982-1.9916-0.85878-3.0057 0.53532-2.2677 5.0965-2.8528 4.7233-5.1527-0.23605-1.4546-2.3938-2.0537-3.8645-2.147-1.5385-0.0975-3.0433 0.8162-4.2939 1.7176-1.9773 1.4252-3.2265 3.6584-4.7233 5.5821-0.75612 0.97173-2.1928 1.7753-2.147 3.0057 0.0416 1.1171 2.1976 1.4596 2.147 2.5763-0.0825 1.8199-2.7587 2.4168-3.8645 3.8645-0.70043 0.91705-2.1094 1.9203-1.7176 3.0057 0.41523 1.1502 2.4331 0.58713 3.4351 1.2882 1.0812 0.75646 2.3227 1.7108 2.5763 3.0057 0.26102 1.3325-1.0707 2.5242-1.2882 3.8645-0.11463 0.7064-0.37624 1.5382 0 2.1469 0.50478 0.81675 2.2521 0.38443 2.5763 1.2882 0.47603 1.3269-2.7734 2.9304-1.7176 3.8645 1.8752 1.659 4.0279-3.1962 6.4408-3.8645 0.68969-0.19104 1.5887-0.4478 2.147 0 1.0293 0.8257 0.71479 2.5528 0.85878 3.8645 0.14056 1.2805 0 2.147 0 3.8645 0 1.7176-0.21865 4.0196 0 6.0114 0.14399 1.3117 1.1275 2.5726 0.85878 3.8645-0.39642 1.906-1.8329 3.6174-3.4351 4.7233-1.3431 0.92701-3.1704 0.78643-4.7233 1.2882-1.1637 0.37598-2.9492 0.16595-3.4351 1.2882-0.73932 1.7075 2.508 3.3274 2.147 5.1527-0.35354 1.7871-2.1814 3.1674-3.8645 3.8645-1.719 0.71206-4.4941-1.5095-5.5821 0-0.5293 0.73437 0.11142 2.0656 0.85878 2.5764 2.3663 1.6173 5.7375-0.73071 8.5878-0.4294 2.2097 0.23359 5.0871-0.0444 6.4408 1.7176 0.6976 0.90801 0.18342 2.3049 0 3.4351-0.145 0.89354-0.16529 1.9945-0.85878 2.5763-2.9929 2.511-8.0741 0.0218-11.594 1.7176-2.6457 1.2748-7.1284 3.1563-6.4408 6.0114 0.24396 1.013 1.9641 0.83086 3.0057 0.85878z"/>
+        <path id="path4129" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m571.61 161.96c-1.025 0.0733-2.1227 0.39038-3.0245 0.61994-1.997 0.50834-3.7321 1.6787-5.4291 2.9118l0.39451 0.0752-5.3352 4.6964 0.93929 6.9883-6.2181-3.5317-2.7803 1.2962c-2.0719 1.601-4.135 3.201-6.2557 4.734-2.6229 1.8961-5.5856 3.3655-7.9464 5.5794-5.7575 5.3992-10.426 11.911-14.822 18.466-2.1404 3.1914-4.619 6.3672-5.5794 10.088-0.48359 1.8735 0.89256 4.088 0 5.8048-0.80457 1.5475-3.8772 1.3094-4.2832 3.0057-0.28234 1.1797 1.7095 2.1389 1.7095 3.2124s0.86415 3.6498 0.86415 4.5086c0 0.85878-2.6818 0.3327-3.4378 1.2962-0.3543 0.45159-0.25076 1.1372-0.20664 1.7095 0.08 1.0377 1.4738 2.1761 0.84536 3.0057-1.0776 1.4226-3.788-0.85608-5.354 0-2.9111 1.5915-3.136 5.9281-5.3727 8.3785-2.7496 3.0122-6.4895 4.9438-9.6559 7.5143-4.7327 3.8421-11.789 6.1192-13.958 11.816-0.54007 1.4185 1.4403 3.2196 0.63872 4.5086-0.47685 0.76679-1.9818 0.16344-2.5736 0.84536-1.3342 1.5371-0.89163 3.984-1.0708 6.0114-0.15158 1.7154-1.2177 3.9484 0 5.1661 1.2619 1.2619 4.2315-1.3875 5.354 0 0.4148 0.51275-0.23819 1.2991-0.41329 1.9349-0.3002 1.0901-0.4926 2.2521-1.0896 3.2124-0.2665 0.42869-0.69032 0.73906-1.0708 1.0708-0.53901 0.46997-1.573 0.59426-1.7095 1.2962-0.1587 0.81593 0.60937 1.647 1.2774 2.1416 0.71531 0.52954 2.1062-0.10668 2.5924 0.63871 0.91349 1.4003-0.93089 3.2701-0.86415 4.9407 0.0679 1.6997-0.20071 4.0988 1.2774 4.9407 2.0114 1.1455 4.7378-0.65882 6.669-1.9349 0.85021-0.56183 1.2865-1.5808 1.9349-2.367 0.71011-0.86099 1.3399-1.7972 2.1416-2.5736 1.7564-1.701 4.2081-2.6409 5.786-4.5086 1.3633-1.6137 0.89552-5.6777 3.0057-5.5794 1.4743 0.0687 1.2202 2.6908 1.7283 4.0765 0.41321 1.1268 0.43295 2.4211 1.0708 3.4378 0.7793 1.2422 2.3925 1.7899 3.2124 3.0057 2.2288 3.3052 2.895 7.4289 4.302 11.159 0.72789 1.9297 1.377 3.8893 2.1416 5.8048 1.0107 2.5323 2.8018 6.0114 3.2312 7.5143s2.267 2.5139 2.7803 4.0765c0.64916 1.9764 0.22543 5.3781 0.22543 6.2369 0 0.85877 0.23677 1.5258 0.84536 1.7095 0.95626 0.28859 1.9825-0.71185 2.5924-1.5029 1.3126-1.7023 0.72298-4.3082 1.7095-6.2181 0.46769-0.90542 1.2054-1.6554 1.9349-2.367 1.1692-1.1405 2.9381-1.6642 3.8699-3.0057 0.81231-1.1696 1.062-2.6689 1.2774-4.0765 0.50862-3.324 0.12489-6.7276 0-10.088-0.072-1.939-1.2139-4.029-0.43207-5.8048 0.51385-1.1672 2.0359-1.5389 3.0057-2.367 1.0379-0.88628 1.976-1.8846 3.0057-2.7803 0.76891-0.6688 1.668-1.1934 2.367-1.9349 1.092-1.1585 2.3087-2.3552 2.7991-3.8699 0.32981-1.0187 0.69875-2.401 0-3.2124-0.33056-0.38383-1.2041 0.18366-1.5029-0.22543-0.2544-0.34834 0.14658-0.85029 0.20664-1.2774 0.0808-0.57455 0.24993-1.1497 0.20664-1.7283-0.0388-0.51811-0.0232-1.1597-0.41328-1.5029-1.1396-1.0027-3.24 0.19476-4.5086-0.63871-1.2638-0.83032-1.8326-2.4553-2.367-3.8699-0.43587-1.1537-0.65138-2.4112-0.63871-3.6444 0.015-1.4613 0.67055-2.851 0.84536-4.302 0.19645-1.6306-0.17231-3.3284 0.22543-4.9219 0.40293-1.6143 1.5673-2.947 2.1416-4.5086 0.3848-1.0464 0.4471-2.1972 0.86415-3.2312 0.55148-1.3673 1.3404-2.6322 2.1416-3.8699 0.96976-1.4982 2.2304-2.793 3.2124-4.2832 0.63594-0.96503 1.3025-1.9313 1.7283-3.0057 0.45999-1.1607 0.34465-2.5092 0.86415-3.6444 0.40497-0.88501 1.1054-1.604 1.7095-2.367 0.88454-1.1172 2.36-1.8755 2.7991-3.2312 0.26537-0.81926 0.19559-1.8224-0.22543-2.5736-0.17512-0.31247-0.67228-0.33625-0.86415-0.63872-0.5848-0.92192-0.78423-2.1304-0.63872-3.2124 0.12878-0.95752 0.78503-1.7726 1.2962-2.5924 0.99997-1.6037 2.594-2.8175 3.4378-4.5086 0.46467-0.9313 0.42394-2.0541 0.84536-3.0057 0.27225-0.61481 0.7795-1.1035 1.0708-1.7095 0.75583-1.5725 0.3637-3.8534 1.7283-4.9407 1.0152-0.80881 2.5992-0.16723 3.8699-0.43207 0.7058-0.14711 1.3791-0.8563 2.0664-0.63872 2.1578 0.68303 2.9227 3.4722 4.1517 5.3727 1.3219 2.0443 2.9466 4.0592 3.4378 6.4435 0.34744 1.6864-0.0465 3.4692-0.43207 5.1473-0.89272 3.8852-2.6953 7.5104-4.302 11.159-1.1614 2.6372-2.2123 5.3695-3.8511 7.7398-1.5548 2.2488-4.4403 3.5262-5.5794 6.0115-1.6198 3.5342-1.9351 7.756-1.2962 11.591 0.93676 5.6228 2.7986 11.973 7.3077 15.461 2.42 1.8716 6.0791 2.562 9.0172 1.7095 2.8167-0.8173 4.002-4.3586 6.4247-6.0114 3.0148-2.0568 6.3218-3.9095 9.8813-4.7152 1.8139-0.41061 3.736-0.24655 5.5794 0 3.2357 0.43277 6.9681 0.4521 9.4493 2.5736 1.0694 0.91442 1.4337 2.4752 1.7283 3.8511 0.30022 1.4022 0.7174 3.0603 0 4.302-2.1515 3.7237-7.1207 5.0162-11.178 6.4435-1.7753 0.62459-3.7055 0.68964-5.5794 0.86414-4.2794 0.39853-10.299-3.018-12.887 0.41329-0.71153 0.94333 0.32869 2.3845 0.86415 3.4378 1.0155 1.9976 3.5395 3.0589 4.302 5.1661 0.68181 1.8842-0.42939 3.8645 0 6.0114 0.42939 2.147 2.4249 1.5621 3.4378 2.5736 2.0222 2.0196 6.4249 4.3003 5.1473 6.8568-0.57664 1.1539-2.6144 0.29637-3.8699 0-1.5535-0.36674-2.7539-1.6841-4.2832-2.1416-2.35-0.70299-4.8553-0.91315-7.3077-0.86415-2.7513 0.055-6.3117-0.74877-8.153 1.2962-1.821 2.0225-0.66303 5.4414-0.43207 8.153 0.27407 3.218 0.62755 6.5965 2.1416 9.4492 1.4725 2.7745 5.6159 3.8456 6.4435 6.8756 0.34826 1.275-0.29213 2.6783-0.86415 3.8699-1.1876 2.4738-3.1092 4.5873-5.1473 6.4247-1.77 1.5957-3.6645 3.456-6.0114 3.8699-3.1806 0.56087-6.2674-1.5884-9.4493-2.1416-4.6862-0.81477-9.4171-2.0232-14.164-1.7283-5.889 0.36582-15.453 4.302-17.17 4.302-1.7176 0-7.2996 2.1416-9.0172 2.1416s-3.8376 2.0508-5.5982 1.2962c-3.362-1.4411-4.2896-6.0264-5.5794-9.4493-1.0787-2.8628-1.9705-5.9691-1.7095-9.0172 0.20875-2.4382 1.8785-4.5292 2.5736-6.8756 0.7488-2.5274 2.0724-5.1101 1.7095-7.721-0.29086-2.0924-1.1208-4.6255-3.0057-5.5794-1.8055-0.91368-4.3942-0.3709-6.0114 0.84536-2.5112 1.8886-3.5328 5.4779-3.8511 8.6039-0.26704 2.6224 1.2066 5.1334 1.7095 7.721 0.66504 3.4217 0.64888 6.999 1.7283 10.313 1.2878 3.9542 6.649 7.14 5.5794 11.159-0.39846 1.497-2.812 1.4419-3.8699 2.5736-1.5763 1.6863-1.4839 4.7823-3.4378 6.0115-1.7005 1.0698-4.0038 0.36001-6.0115 0.43207-1.2891 0.0463-2.6146 0.29706-3.8699 0-2.4881-0.58879-5.1936-5.3797-6.8568-3.4378-1.6005 1.8687 4.6773 3.5828 4.2832 6.0114-0.31157 1.92-3.1429 2.2926-4.7152 3.4378-3.1487 2.2934-6.024 5.0206-9.4493 6.8756-1.9948 1.0803-4.8774 2.1667-8.1155 3.2312 11.751 0.004 23.267 0.14339 23.257 0.67629l-0.11272 6.5562 0.0564 8.9984c-1.3464 0.79004-2.6925 1.5115-4.039 0.33814l-0.82657-7.9276-1.5216-3.6444-5.4667-0.30057h-8.8105l-7.89 1.2211-4.5462 27.315 2.1228 0.61993h4.5462l7.9088-0.92051 2.7239-1.2023 2.1228-2.7427 2.7427-4.5462h1.2023l1.5216 2.7239-3.945 8.51 0.60114 11.534-2.1228 2.1228-2.1228-2.1228v-8.2094l-1.2211-1.2023h-14.559l-3.0433 1.2023-3.3439 19.443-1.2023 6.9883 2.4234 3.0245 2.4234 1.2211h11.854l8.4912-1.2211 3.945-1.8222s3.0409-1.4036 3.945-2.7239c1.4701-2.147-0.22116-5.9785 1.8222-7.5895 0.47687-0.37596 1.3057-0.31925 1.8222 0 0.96255 0.59489 1.3904 1.9006 1.5216 3.0245 0.20507 1.7556-0.76912 3.4573-1.2211 5.1661-0.45858 1.7338-1.5029 5.1661-1.5029 5.1661l-5.4667 3.6444-8.2094 0.60115-11.835-0.60115h-10.332s-7.0744-0.12802-10.614-0.30057c-2.9385-0.14325-8.2036 2.2588-8.8105-0.61993-0.44833-2.1263 3.8992-1.9143 5.7672-3.0245 0.94107-0.55931 1.9769-1.0399 2.7427-1.8222 0.92312-0.94296 1.669-2.1047 2.1228-3.3439 6.573-17.951 7.8415-56.168 7.89-57.71-0.0389 0.0304-0.11064 0.0673-0.22543 0.11271-2.449 0.96944-6.5118 2.205-8.8293 3.4566-2.8976 1.5648-5.1327 4.267-8.153 5.5794-1.2122 0.52675-2.5653 1.0763-3.8699 0.86415-2.4676-0.40132-4.016-3.2004-6.4247-3.8699-1.5204-0.42252-3.1714-0.22016-4.734 0-1.0323 0.14545-2.2041 0.19771-3.0057 0.86415-1.4751 1.2263-2.6912 3.2326-2.5736 5.1473 0.0631 1.028 1.0246 1.8045 1.7095 2.5736 1.6253 1.825 3.7006 3.194 5.5982 4.734 2.5326 2.0554 5.587 3.5447 7.721 6.0115 0.7541 0.8717 1.2401 1.953 1.7095 3.0057 1.2903 2.8937 2.6142 5.8732 3.0057 9.0172 0.23048 1.8506-0.41329 3.8618-0.41329 5.5794s-0.11004 4.6923-0.86414 6.8756c-1.0893 3.1538-3.052 5.9884-5.1473 8.5851-1.9725 2.4444-3.8624 5.5568-6.8756 6.4435-1.5388 0.45286-3.2001-0.39496-4.734-0.86415-2.3864-0.72995-4.5554-2.0408-6.8568-3.0057-2.8429-1.1919-5.6678-2.4419-8.5851-3.4378-1.9716-0.67304-4.001-1.1635-6.0114-1.7095-3.8577-1.0477-7.6316-2.6118-11.61-3.0057-2.5651-0.25405-5.1634 0.11078-7.721 0.43207-1.45 0.18215-3.6577-0.46636-4.302 0.84536-0.98768 2.0109 2.9395 3.7721 3.0057 6.0114 0.0644 2.1788-1.2281 4.2966-2.5737 6.0115-1.3251 1.6888-4.0703 2.013-5.1473 3.8699-0.57945 0.99907-0.18737 2.3091-0.43207 3.4378-0.50859 2.346-0.80732 4.8801-2.1416 6.8756-0.62033 0.92776-1.6978 1.4499-2.5736 2.1416-1.6885 1.3335-3.9754 2.0778-5.1661 3.8699-1.9574 2.9462-1.8922 6.8237-2.5736 10.295-0.19502 0.99324-0.27764 2.0054-0.43208 3.0057-0.39895 2.5842-0.945 5.1462-1.2774 7.7398-0.20066 1.5655-1.1128 3.2912-0.43207 4.7152 2.0021 4.1884 10.732 6.0034 11.591 7.721 0.85878 1.7176 3.9648 4.4353 6.4435 6.0114 1.3041 0.8292 2.8004 1.3628 4.302 1.7283 2.9338 0.71415 6.0011 0.71995 9.0172 0.86414 3.8592 0.1845 7.7276-0.0516 11.591 0 5.1549 0.0689 10.507 1.8412 15.461 0.41329 2.4732-0.71288 4.1614-3.0576 6.4247-4.2832 1.9168-1.0379 4.1569-1.4283 6.0114-2.5737 2.0793-1.2841 3.4512-4.3046 5.5982-4.734 2.147-0.42938 0.396-3.4261 0.41329-5.1473 0.023-2.2959-0.93347-4.6393-0.41329-6.8756 0.52227-2.2453 2.1423-4.0921 3.419-6.0114 1.3007-1.9554 2.2879-4.3717 4.302-5.5794 1.4921-0.8947 3.0004-0.005 5.1473-0.86415 2.147-0.85878 4.4816-3.0343 6.8756-4.2832 1.9326-1.0081 3.9855-1.7694 6.0115-2.5736 1.5559-0.61769 3.8043-0.32386 4.7152-1.7283 1.093-1.6851-0.55451-4.0079-0.41329-6.0114 0.14404-2.0435-0.25259-4.6492 1.2774-6.0115 2.2548-2.0075 5.9987-0.79488 9.0172-0.84536 2.2957-0.0384 4.5975 0.69948 6.8756 0.41329 4.1754-0.52455 8.5444-1.4828 12.023-3.8511 1.6848-1.147 2.4568-3.2653 3.8699-4.734 2.2484-2.3369 4.138-5.6764 7.2889-6.4435 2.2961-0.55903 5.4225-0.1353 6.8756 1.7283 1.494 1.916-0.9257 5.0425 0 7.2889 0.46394 1.1258 1.7142 1.7298 2.5737 2.5924 0.85632 0.85944 1.7147 1.7168 2.5736 2.5736 1.2884 1.2853 2.6864 2.4686 3.8699 3.8511 1.2682 1.4816 2.2541 3.1841 3.4378 4.734 1.1112 1.455 2.0149 3.1313 3.4378 4.2832 1.4932 1.2087 3.6673 1.3676 5.1473 2.5924 1.8063 1.4948 2.4036 4.1778 4.2832 5.5794 1.6017 1.1943 3.7474 1.3889 5.5982 2.1416 1.0107 0.41105 2.1029 0.6835 3.0057 1.2962 0.83533 0.56693 1.3936 1.4636 2.1416 2.1416 1.5066 1.3655 3.0329 2.7279 4.7152 3.8699 2.4397 1.656 5.3443 2.5639 7.7397 4.2832 1.7285 1.2406 3.8562 2.3555 4.7152 4.3019 0.51828 1.1744 0.15521 2.5768 0 3.8511-0.21448 1.7609-0.90447 3.4318-1.2774 5.1661-0.33596 1.5622-1.8872 3.4877-0.86414 4.7152 0.54922 0.65903 1.7158 0 2.5736 0 2.147 0 2.1705-1.2383 3.0057-2.1416 1.701-1.8395 3.4034-3.9819 3.8699-6.4435 0.32389-1.7094-0.0671-3.6008-0.86414-5.1473-0.55579-1.0784-2.0589-1.475-2.5737-2.5736-0.67236-1.4348-1.2977-3.4068-0.43207-4.734 0.49436-0.75799 1.6768-0.98479 2.5736-0.86415 1.0242 0.13777 1.6024 1.3756 2.5737 1.7283 2.5746 0.93502 6.0153 2.553 8.1718 0.86414 0.79621-0.62357 0.86814-2.1024 0.41328-3.0057-1.612-3.2013-6.1812-3.6531-9.4305-5.1661-2.509-1.1683-5.5694-1.2884-7.7398-3.0057-2.1752-1.7212-2.4299-5.2847-4.7152-6.8568-3.0357-2.0883-7.5317-0.79028-10.745-2.5924-2.8193-1.581-5.3298-4.0079-6.8568-6.8568-1.379-2.5728-0.26392-6.0599-1.7283-8.5851-0.091-0.15694-0.17679-0.3057-0.28179-0.45086-2.8774 0.43261-5.7452 0.53679-8.6227 0.11271-4.5452-0.48189-8.181-2.3237-11.591-4.5086-2.3326-2.0522-4.0048-5.2068-5.4855-8.679 0.2477-8.2428 0.72018-16.426 1.8222-24.384l4.1892-27.578c0.62845-2.6709 0.19169-4.1276-1.1835-4.5086l-5.4667-0.31936-0.11272-1.5029 1.4089-1.2962 10.727 0.31936 9.1299-0.0939h4.828l0.63872 1.2774-0.31936 1.2962s-0.85341 0.0939-1.3902 0.0939h-2.0476l-3.3251 0.6575-1.9349 1.2774-0.31936 0.75143-0.63872 3.8699-6.0114 40.371-0.43208 5.786 0.20665 4.828 1.7283 3.5505 5.786 3.6444 2.4046 0.18786c-0.21109-0.22458-0.40611-0.45911-0.58236-0.71386-1.3924-2.0124-2.7446-4.4344-2.5737-6.8756 0.12544-1.7917 1.8012-3.1125 2.5737-4.734 1.1302-2.3727 0.73463-5.9664 3.0057-7.2889 1.9961-1.1624 4.6919 0.1111 6.8756 0.86415 1.5797 0.54477 2.7831 1.877 4.3019 2.5736 2.0573 0.94354 4.6864 0.71493 6.4435 2.1416 0.55453 0.45024 1.035 0.96581 1.4653 1.5216l1.2023-3.1372 2.0477-11.159 2.4609-15.348 1.4089-7.5143c0.0716-3.6554 0.0224-3.8476 0.0939-5.8987l0.22543-3.7572-0.11272-2.367-0.20664-2.0476-1.5029-0.63872h-3.1184l-1.7095-0.54479-0.33815-1.5029 0.11272-1.1647 1.6156-0.22543 6.5374 0.11271 7.627 0.11272 3.7572 0.0939 0.11272 1.8222-0.43207 1.0896c-1.1808-0.11858-2.3697-0.0734-3.5505 0.0939-2.2364 0.57254-2.2475 2.9188-3.2124 4.5086l-3.1184 13.638-5.786 32.424-2.0852 4.9782c0.80736 1.7635 1.5297 3.603 2.5173 5.2224 0.97046 1.5914 1.6403 3.4465 3.0057 4.7152 1.5475 1.438 3.7781 1.9021 5.5794 3.0057 3.8568 2.3631 7.5315 5.0187 11.159 7.721 2.9401 2.1903 7.4105 3.4025 8.5851 6.8756 0.56637 1.6746-1.3617 3.3815-1.2774 5.1473 0.12309 2.5796 1.6819 4.884 2.5737 7.3077 0.68786 1.8696 1.3382 3.7564 2.1416 5.5794 0.90343 2.0501 1.75 4.1561 3.0057 6.0115 1.9342 2.8579 6.4462 6.0222 6.8756 7.7398 0.42939 1.7176-1.1259 1.9966-0.86415 3.0057 0.50811 1.9587 3.5255 2.4145 4.302 4.2832 0.65833 1.5844-0.65516 3.5616 0 5.1473 0.92821 2.2467 2.8562 4.3536 5.1473 5.1661 2.5757 0.91347 5.7561 0.44869 8.153-0.86415 1.6099-0.8818 2.7349-2.6062 3.4378-4.302 0.49465-1.1933 0.35995-2.5614 0.43207-3.8511 0.0962-1.7193 0.4821-3.5129 0-5.1661-0.52182-1.7894-2.2048-3.0322-3.0057-4.7152-0.97263-2.0437-1.3064-4.3399-2.1416-6.4435-0.7567-1.906-2.3809-3.5396-2.5924-5.5794-0.19698-1.8991-0.46113-4.8329 1.2962-5.5794 1.538-0.65333 2.6384 2.7318 4.3019 2.5737 1.713-0.16291 2.4272-2.4716 3.8511-3.4378 2.1203-1.4388 4.9285-1.772 6.8756-3.4378 0.93479-0.79974 0.96472-2.6474 2.1416-3.0057 1.1716-0.35674 2.3262 0.78234 3.4378 1.2962 1.3382 0.61862 2.4326 1.813 3.8699 2.1416 2.5128 0.57453 5.4289 0.74721 7.721-0.43207 1.6279-0.83755 1.984-3.1704 3.4378-4.2832 1.9862-1.5203 5.3231-1.0446 6.8756-3.0057 0.99562-1.2577 1.3978-3.2213 0.86415-4.734-1.3841-3.9231-7.7171-4.3707-9.4493-8.153-1.4314-3.1256-0.2133-6.8822 0-10.313 0.19142-3.0792 0.0483-6.3518-0.15028-9.6747-2.0923-5.5843-3.1508-12.248-2.7803-19.913 1.6256-19.847 15.84-34.148 34.547-36.294-0.63151-10.719-2.1184-21.392-3.7196-32.011-1.9334-12.821-4.0189-25.663-7.2889-38.21-1.3698-5.2561-3.3504-10.335-5.1473-15.461-2.8766-8.2057-5.5626-16.498-9.0172-24.478-1.1763-2.7172-2.5312-5.3414-3.9074-7.9652l-5.5042 2.5737 1.5029-6.8944-4.9407-5.1097 4.0577-0.41328c-2.2965-5.1238-4.3549-10.362-7.101-15.254-1.8151-3.2336-3.7536-6.3988-5.786-9.5056l0.24422 1.841-6.2181-3.5317-6.4623 3.0245 1.4841-6.8944-4.9219-5.1097 7.1386-0.73265 0.28178-0.526c-0.11885-0.15604-0.2377-0.31393-0.35693-0.46965-3.6987-4.8306-7.3643-9.8194-12.023-13.732-1.9431-1.6321-3.993-3.775-6.1054-5.9363l0.46965 3.5317-6.2181-3.5129-6.4811 3.0245 1.5029-6.8944-4.9219-5.1097 3.1372-0.31936c-1.0829-0.25987-2.1671-0.33032-3.2499-0.1315 0.93628-1.4892 2.1844-2.6086 3.8323-2.4797 2.8827 0.2255 1.2823-0.82961 1.5029-1.5029 0.44963-1.3727-0.13646-2.936-0.6575-4.2832-0.8376-2.1657-3.9195-3.4838-3.8511-5.8048 0.0316-1.0728 1.4979-1.5934 1.9349-2.5736 0.59504-1.3348 1.7527-3.1564 0.84536-4.302-0.57775-0.72945-1.5299-0.89989-2.5549-0.82658z"/>
+        <path id="path4125" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m660.29 381.98c-10.177 0.30667-17.302 8.4959-22.073 22.806 0.9331 0.0179 1.8685 0.0554 2.7239-0.0376 2.7052-0.29411 5.4853 0.12317 8.153-0.41329 3.7265-0.74937 8.5082-0.78332 10.727-3.8699 3.5984-5.0063 1.1026-12.19 0.526-18.485-0.0188 0.00052-0.0376-0.00056-0.0563 0z"/>
+        <path id="path3067" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m437.01 383.72-4.8655 0.28179c-0.0892 0.0302-0.19571 0.0642-0.28179 0.0939-1.5396 0.53158 4.6847-0.3915 5.1473-0.16907 0.00053-0.0171 0-0.20665 0-0.20665z"/>
+        <path id="path7761" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m372.57 349.36c-1.607-2.4371-0.40317-6.5816 1.7176-8.5878 2.2057-2.0866 6.119-0.38286 9.0172-1.2882 1.222-0.38171 3.23-0.4539 3.4351-1.7176 0.16211-0.99901-1.2417-1.6943-2.147-2.1469-1.8105-0.90524-4.86 0.80596-6.0115-0.85879-1.5013-2.1706-0.34111-6.0776 1.7176-7.729 1.3398-1.0747 3.5973-0.72851 5.1527 0 1.0124 0.47415 1.0632 2.3022 2.147 2.5763 1.4945 0.37806 3.4297-0.44105 4.2939-1.7176 1.1234-1.6593-1.4169-4.5945 0-6.0115 1.3157-1.3157 3.7647-0.39916 5.5821 0 2.0016 0.43963 4.4776 0.85014 5.5821 2.5764 1.1571 1.8084 0.94326 4.5122 0 6.4408-0.717 1.466-3.1475 1.5397-3.8645 3.0057-1.069 2.1858 0.081 4.8678 0 7.2996-0.0716 2.1505 0.96194 4.7995-0.42939 6.4408-1.6163 1.9068-4.8473 1.2335-7.2996 1.7176-3.5552 0.70171-7.1121 1.806-10.735 1.7176-2.7782-0.0679-6.6285 0.60253-8.1584-1.7176z"/>
+        <path id="path7745" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m437.84 488.48c-0.95951 0.035-1.8719 0.6358-2.5763 1.2882-0.61235 0.56706-1.2958 1.3124-1.2882 2.147 0.0123 1.3502 1.1479 2.5267 2.147 3.4351 1.6576 1.5072 3.8861 3.7142 6.0114 3.0057 1.5181-0.50604 1.5346-2.8155 2.147-4.2939 0.34642-0.83633 1.2355-1.7532 0.85878-2.5764-1.0951-2.3927-4.67-3.1018-7.2996-3.0057z"/>
+        <path id="path7747" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m490.22 473.45c1.52-1.3745 0.99422-3.9833 1.2882-6.0114 0.26768-1.8469 1.0768-3.8318 0.42939-5.5821-0.21068-0.56953-0.72714-1.0558-1.2882-1.2882-1.5868-0.65728-3.7236-0.95273-5.1527 0-1.5482 1.0321-1.843 3.317-2.147 5.1527-0.35153 2.1228-0.64847 4.5786 0.4294 6.4408 0.51702 0.89329 1.5735 1.4736 2.5763 1.7176 1.2594 0.30642 2.9032 0.43993 3.8645-0.42939z"/>
+        <path id="path7749" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m493.23 484.19c0.0962 0.91141-1.4142 1.2821-1.7176 2.147-0.52115 1.4857 0.19236 3.1606 0 4.7233-0.14421 1.1714-0.85878 1.7176-0.85878 3.4351 0 1.7176 0.27003 3.3685-0.85878 4.2939-1.1069 0.90743-2.8626 0-4.2939 0-1.0019 0-3.0057 2.147-3.0057 0s-0.0663-3.7226 0-5.5821c0.0716-2.0076-0.0444-4.0592 0.42939-6.0114 0.51419-2.1186 0.94036-4.5705 2.5763-6.0115 0.78194-0.68872 1.9853-1.0696 3.0057-0.85878 1.9922 0.41155 4.5098 1.8415 4.7233 3.8645z"/>
+        <path id="path7755" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m537.88 510.81c1.8743 1.9756-0.0899 5.4564-0.42939 8.1584-0.18197 1.4483 0.19617 3.2851-0.85878 4.2939-1.3606 1.3011-3.6996 0.87952-5.5821 0.85879-2.4707-0.0272-4.9162-0.63694-7.2996-1.2882-2.3593-0.64465-5.0831-0.90656-6.8702-2.5763-1.2637-1.1807-1.6879-3.0559-2.147-4.7233-0.34401-1.2496-0.97684-2.6897-0.42939-3.8645 0.43595-0.93554 1.2882-1.7176 2.5763-1.7176 1.2882 0-2.147-0.85878 5.1527 0 7.2996 0.85878 5.4277 0.71545 8.1584 0.85878 2.5728 0.13503 5.9558-1.869 7.729 0z"/>
+        <path id="path7757" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m642.23 494.92c-0.0621 2.9361-3.318 5.2704-6.0115 6.4408-2.2316 0.96975-4.8664 0-7.2996 0-2.2901 0-5.1527 2.147-6.8702 0-1.7176-2.1469-4.4127-2.448-3.8645-4.2939 0.63258-2.13 4.2794-1.2022 6.4408-1.7176 2.7033-0.64452 6.0114-0.85878 8.1584-1.7176 2.147-0.85878 4.6212-2.4345 6.8702-1.7176 1.2573 0.40079 2.6043 1.6864 2.5764 3.0057z"/>
+        <path id="path7763" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m542.18 307.28c-1.3545 2.1916-0.68771 5.2462 0 7.729 0.22277 0.8043 0.4569 2.0726 1.2882 2.147 1.5154 0.13555 2.3484-2.063 3.0057-3.4351 1.0675-2.2283 1.375-4.8303 1.2882-7.2996-0.0207-0.58978 0.10676-1.471-0.42939-1.7176-1.7446-0.8024-4.1431 0.94285-5.1527 2.5763z"/>
+        <path id="path7765" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m507.83 330.47c-0.58522 0.62851 0 1.7176 0 2.5763 0 1.0019-0.55154 2.1693 0 3.0057 0.60005 0.91002 1.944 1.5352 3.0057 1.2882 1.2852-0.29908 2.0574-1.7924 2.5763-3.0057 0.56564-1.3226 1.432-3.2624 0.42939-4.2939-1.4002-1.4405-4.6425-1.0409-6.0114 0.42939z"/>
+        <path id="path7769" stroke-width=".60115px" stroke="#000" fill-opacity=".12941" d="m498.38 332.61c-0.7844 1.7114-0.44229 4.2214 0.85878 5.5821 0.50438 0.52748 1.4484 0.64088 2.147 0.42939 0.96865-0.29328 1.7596-1.2119 2.147-2.1469 0.49296-1.1901 0.42639-2.649 0-3.8645-0.30336-0.86481-0.8141-1.993-1.7176-2.147-1.3311-0.22675-2.8725 0.91946-3.4351 2.147z"/>
+        <path id="path3019-4" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".32463" transform="matrix(.53895 0 0 .52918 239.03 142.08)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-1" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 266.66 161.51)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 293.38 191.87)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-2" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 318.08 227.72)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3017" stroke-width=".60115px" stroke="#000" fill-opacity=".31373" d="m129.13 518.23 199.48 2.7326 2.7326-10.93-34.006-6.0725c-21.85-4.92-33.29-18.77-32.48-43.12l79.853-293.91h-8.1979c-37.738 21.419-78.798 37.616-127.83 41.293l-1.8218 6.6797 46.758 3.3399c5.8248 0.41606 17.44 3.7972 13.359 19.128l-56.17 211.02c-6.3345 28.464-18.795 53.298-68.315 56.17l-10.627 1.8217z"/>
+        <path id="path7994-4" stroke-width=".60115px" stroke="#000" fill-opacity=".31373" d="m477.59 393.97-0.0521-9.0045 0.11945-6.5508c0.0198-1.089-48.04-0.53674-48.04-0.53674s-1.6445 1.4326-1.8217 2.429c-0.18503 1.0403 0.15436 2.2986 0.91088 3.0362 0.82618 0.80562 3.3399 0.91087 3.3399 0.91087l5.1616-0.30362s-1.1861 39.673-7.8942 57.992c-0.45374 1.2391-1.2022 2.3969-2.1254 3.3399-0.76582 0.78228-1.7916 1.2624-2.7326 1.8217-1.868 1.1102-6.2172 0.90997-5.7689 3.0362 0.60699 2.8787 5.8666 0.464 8.8051 0.60724 3.5395 0.17255 10.627 0.30363 10.627 0.30363h10.323l11.841 0.60725 8.1979-0.60725 5.4652-3.6435s1.0595-3.4278 1.5181-5.1616c0.45195-1.7088 1.4196-3.406 1.2145-5.1616-0.13128-1.1239-0.55558-2.4414-1.5181-3.0362-0.51656-0.31925-1.3449-0.37596-1.8218 0-2.0434 1.611-0.35167 5.4436-1.8218 7.5906-0.90409 1.3204-3.9471 2.7326-3.9471 2.7326l-3.9471 1.8218-8.5015 1.2145h-11.841l-2.429-1.2145-2.429-3.0362 1.2145-6.9834 3.3399-19.432 3.0362-1.2145h14.574l1.2145 1.2145v8.1978l2.1254 2.1254 2.1254-2.1254-0.60726-11.538 3.9471-8.5015-1.5181-2.7326h-1.2145l-2.7326 4.5544-2.1254 2.7326-2.7326 1.2145-7.8942 0.91088h-4.5544l-2.1254-0.60725 4.5544-27.326 7.8942-1.2145h8.8051l5.4652 0.30363 1.5181 3.6435 0.81879 7.9158c1.3464 1.1734 2.6928 0.46484 4.0392-0.3252z"/>
+        <path id="path7996" stroke-width=".60115px" stroke="#000" fill-opacity=".31373" d="m493.66 379.31 10.735 0.32204 9.1245-0.10735h4.8306l0.64409 1.2882-0.32205 1.2882s-0.85878 0.10735-1.3955 0.10735h-2.0396l-3.3278 0.64408-1.9322 1.2882-0.32204 0.75143-0.64409 3.8645-6.0114 40.363-0.42939 5.7968 0.2147 4.8306 1.7176 3.5425 5.7968 3.6498 8.2658 0.64409 6.7629-1.6102 4.0792-3.5425 3.4351-4.2939 2.5763-6.6555 2.0396-11.164 2.469-15.351 1.3955-7.5143c0.0716-3.6554 0.0358-3.8529 0.10735-5.9041l0.2147-3.7572-0.10735-2.3616-0.2147-2.0396-1.5029-0.64409h-3.1131l-1.7176-0.53673-0.32204-1.5029 0.10734-1.1808 1.6102-0.21469 6.5482 0.10735 7.6217 0.10734 3.7572 0.10735 0.10735 1.8249-0.42939 1.0735c-1.1808-0.11858-2.3616-0.0599-3.5425 0.10735-2.2364 0.57254-2.2556 2.9188-3.2204 4.5086l-3.1131 13.633-5.7968 32.419-4.8306 11.594c-3.1864 3.7124-6.7629 5.4746-10.52 6.3335-4.2939 1.0799-8.5878 1.599-12.882 0.96613-4.5452-0.48189-8.1837-2.3237-11.594-4.5086-2.3326-2.0522-3.9941-5.2229-5.4747-8.6951 0.2477-8.2428 0.72287-16.41 1.8249-24.368l4.1866-27.588c0.62845-2.6709 0.19438-4.1276-1.1808-4.5086l-5.4747-0.32204-0.10735-1.5029z"/>
+        <path id="path9170" stroke-width=".60115px" stroke="#000" fill-opacity=".31373" d="m565.75 379.16c-1.0783 0.77655-1.7529 1.7623-1.2211 3.3439l6.2181 1.8222-8.5663 59.344c-0.0738 0.51 0.0816 1.1266-0.22543 1.5404-0.28271 0.3811-0.52507 0.23037-1.2962 0.60115-1.6004 0.76946-4.2807 2.1224-5.6921 3.2312-0.46808 0.3677 0.33594 1.8228 0.9205 1.9349 10.657 2.0452 24.3 0.0834 24.76 0.526l0.43207-2.4985-7.89-1.6719c-1.0127-0.21422-2.0746-1.7934-1.8222-2.893 2.2661-9.8747 4.1433-29.286 6.2181-29.588l3.4942 1.5029c1.8808 1.0184 2.3093 1.7532 2.7239 1.6719 0 0 6.5633 25.094 16.4 31.88 3.7307 2.5734 9.2025 2.9397 13.507 1.5216 0.91824-0.30251 2.3086-1.0202 2.1416-1.9725-0.19163-1.0929-2.0594-0.86288-3.0809-1.2962l-6.9507-2.9494-14.409-29.456c19.88-10.106 20.592-26.953 5.2976-35.374l-30.959-1.2211zm14.897 72.344-0.0188 0.0752c0.0432-0.0342 0.0414-0.0534 0.0188-0.0752zm5.8612-68.549c1.2066 0.0191 2.4337 0.14188 3.2312 0.16908 2.1894 0.0747 4.4415 0.0709 6.2181 1.3526 2.038 1.4702 3.0222 3.7687 3.4942 6.2369 0.48555 2.5393 0.0189 5.1975-0.45086 7.7398-0.57868 3.1318-1.0554 6.5099-2.893 9.1111-1.5008 2.1244-3.8016 3.734-6.2181 4.6964-2.1286 0.84778-4.5509 0.90599-6.838 0.77022-1.5562-0.0924-4.6889 0.48156-4.5462-1.0708 1.0323-11.224 4.2472-24.773 4.0953-27.484-0.0744-1.3278 1.8965-1.5535 3.9074-1.5216z"/>
+        <path id="path3019" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 187.55 105.67)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-5" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 213.52 123.26)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-7" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 316.8 494.8)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-23" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 290.6 527)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-70" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 266.56 556.2)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-8" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 239.51 578.96)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-76" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 213.74 599.57)" stroke="#000" stroke-width="1.9136"/>
+        <path id="path3019-56-73" d="m593.97 66.453-11.515-6.6597-12.014 5.7106 2.7753-13.01-9.1437-9.6617 13.231-1.3807 6.3632-11.682 5.4016 12.156 13.076 2.4419-9.8922 8.8938z" fill-opacity=".31373" transform="matrix(.53895 0 0 .52918 187.55 615.03)" stroke="#000" stroke-width="1.9136"/>
+        <rect id="rect3882" fill-opacity=".31373" rx="1.5215" height="17.914" width="3.6435" stroke="#000" y="93.759" x="500.77" stroke-width="1.0219"/>
+        <rect id="rect3882-6" fill-opacity=".31373" rx="1.5215" height="17.914" width="3.6435" stroke="#000" y="108.49" x="525.97" stroke-width="1.0219"/>
+        <rect id="rect3882-5" fill-opacity=".31373" rx="1.5215" height="17.914" width="3.6435" stroke="#000" y="123.06" x="551.78" stroke-width="1.0219"/>
+        <rect id="rect3882-63" fill-opacity=".31373" rx="1.5215" height="17.914" width="3.6435" stroke="#000" y="144.31" x="578.8" stroke-width="1.0219"/>
+        <rect id="rect3882-0" fill-opacity=".31373" rx="1.5215" height="24.721" width="3.6435" stroke="#000" y="169.21" x="604.3" stroke-width="1.0219"/>
+        <rect id="rect3882-2" fill-opacity=".31373" rx="1.5215" height="29.933" width="3.6435" stroke="#000" y="199.88" x="631.02" stroke-width="1.0219"/>
+        <rect id="rect3882-67" fill-opacity=".31373" rx="1.5215" height="93.709" width="3.6435" stroke="#000" y="150.69" x="499.25" stroke-width="1.0219"/>
+        <rect id="rect3882-07" fill-opacity=".31373" rx="1.5215" height="23.51" width="3.6435" stroke="#000" y="164.35" x="526.57" stroke-width="1.0219"/>
+        <rect id="rect3882-3" fill-opacity=".31373" rx="1.5215" height="17.914" width="3.6435" stroke="#000" y="657.13" x="499.55" stroke-width="1.0219"/>
+        <rect id="rect3882-03" fill-opacity=".31373" rx="1.5215" height="17.914" width="3.6435" stroke="#000" y="643.17" x="527.18" stroke-width="1.0219"/>
+        <rect id="rect3882-673" fill-opacity=".31373" rx="1.5215" height="24.477" width="3.6435" stroke="#000" y="621.91" x="551.78" stroke-width="1.0219"/>
+        <rect id="rect3882-1" fill-opacity=".31373" rx="1.5215" height="26.64" width="3.6435" stroke="#000" y="598.53" x="579.1" stroke-width="1.0219"/>
+        <rect id="rect3882-53" fill-opacity=".31373" rx="1.5215" height="27.508" width="3.6435" stroke="#000" y="570.3" x="603.09" stroke-width="1.0219"/>
+        <rect id="rect3882-38" fill-opacity=".31373" rx="1.5215" height="29.977" width="3.6435" stroke="#000" y="537.2" x="629.81" stroke-width="1.0219"/>
+        <rect id="rect3882-28" fill-opacity=".31373" rx="1.5215" ry="1.2023" height="94.05" width="3.6435" stroke="#000" y="521.41" x="500.16" stroke-width="1.0219"/>
+        <rect id="rect3882-64" fill-opacity=".31373" rx="1.5215" height="54.649" width="3.6435" stroke="#000" y="548.13" x="526.88" stroke-width="1.0219"/>
+        <rect id="rect3882-9" fill-opacity=".31373" rx="1.5215" height="61.936" width="3.6435" stroke="#000" y="522.93" x="550.56" stroke-width="1.0219"/>
+        <rect id="rect3882-57" fill-opacity=".31373" rx="1.5215" height="38.598" width="3.6435" stroke="#000" y="522.93" x="579.1" stroke-width="1.0219"/>
+      </g>
+    </g>
+  </defs>
+
+  <use xlink:href="#euro" />
+  <use xlink:href="#euro" transform="translate(800 50)" />
+  <use xlink:href="#euro" transform="translate(200 300)" />
+  <use xlink:href="#euro" transform="translate(1000 200)" />
+  <use xlink:href="#euro" transform="translate(1200 0)" />
+  <use xlink:href="#euro" transform="translate(400 50)" />
+
+</svg>
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/javadoc/resources/fonts/dejavu.css b/Klausuren/Sd1/2023summer/Solve/src/main/javadoc/resources/fonts/dejavu.css
new file mode 100644
index 0000000000000000000000000000000000000000..4fec2b593cdcc719fd7edd6744a33a3395ca8401
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/javadoc/resources/fonts/dejavu.css
@@ -0,0 +1,3 @@
+/* shame on you, javadoc! Still providing
+@import url('resources/fonts/dejavu.css') line in stylesheet.css
+*/
\ No newline at end of file
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/javadoc/resources/jdocSupplement.css b/Klausuren/Sd1/2023summer/Solve/src/main/javadoc/resources/jdocSupplement.css
new file mode 100644
index 0000000000000000000000000000000000000000..08840cdbf55d1f43368245d0a965659c4411b2ee
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/javadoc/resources/jdocSupplement.css
@@ -0,0 +1,72 @@
+/* Javadoc extensions: */
+
+ul > li > ul {
+    list-style-type: circle;
+}
+
+table.goikTableDefaults,
+table.goikTableDefaults>caption,
+table.goikTableDefaults>tr>th,
+table.goikTableDefaults>tr>td,
+table.goikTableDefaults>tbody>tr>th,
+table.goikTableDefaults>tbody>tr>td {
+    border: 2px solid black;
+    border-collapse: collapse;
+    padding: 1ex;
+    vertical-align: top;
+}
+
+table.goikTableDefaults>caption {
+    /* border-top-style: solid; border-left-style: solid; border-right-style: solid' */
+    border-bottom-style: none;
+    font-weight: bold;
+    background:#dee3e9;
+    text-align:left;
+    padding:8px 3px 3px 7px;
+}
+
+table.goikTableDefaults>tbody>tr>td {
+    vertical-align:top;
+}
+table.goikTableDefaults {
+    border-spacing: 0px !important;
+}
+
+table.indexTable {
+    border-collapse: collapse;
+    border-style: hidden;
+}
+
+table.indexTable caption {
+    text-align: left;
+}
+
+table.indexTable td, table.indexTable th {
+    border: 1px solid black;
+    padding: 0.5ex;
+}
+
+em {
+    font-weight: bold;
+    font-style: normal;
+}
+section.implementationHints>h3 {
+    font-weight: bold;
+    background-color: rgb(222, 227, 233);
+}
+
+code {
+    white-space: pre;
+}
+
+.implementationHints {
+    background-color: hsl(120, 100%, 95%) !important;
+}
+
+.myRed {
+    color: red;
+}
+
+.myGreen {
+    color: limegreen;
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/javadoc/resources/jdocSupplement.js b/Klausuren/Sd1/2023summer/Solve/src/main/javadoc/resources/jdocSupplement.js
new file mode 100644
index 0000000000000000000000000000000000000000..97911e5581090aac5e37323427450f8c8c8a3f94
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/javadoc/resources/jdocSupplement.js
@@ -0,0 +1,7 @@
+for(var i in document.links) {
+   var link = document.links[i];
+   if (link.href && link.href.indexOf('http') === 0) { 
+       link.target = '_blank';
+   }
+}
+
diff --git a/Klausuren/Sd1/2023summer/Solve/src/main/resources/log4j2.xml b/Klausuren/Sd1/2023summer/Solve/src/main/resources/log4j2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..130f87a144c4eb0107a846e580c8fa7f5e819fc1
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/main/resources/log4j2.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <File name="A1" fileName="A1.log" append="false">
+            <PatternLayout pattern="%t %-5p %c{2} - %m%n"/>
+        </File>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+
+        <!-- You my want to define class or package level per-logger rules -->
+        <Logger name="de.hdm_stuttgart.mi.sd1.App" level="debug">
+            <AppenderRef ref="A1"/>
+        </Logger>
+        <Root level="info">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file
diff --git a/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/ShowReachedPoints.java b/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/ShowReachedPoints.java
new file mode 100644
index 0000000000000000000000000000000000000000..c497c5aeae393b00da76253145cbda5021349372
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/ShowReachedPoints.java
@@ -0,0 +1,22 @@
+package de.hdm_stuttgart.mi.sd1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+
+import de.hdm_stuttgart.mi.sd1.task1.*;
+import de.hdm_stuttgart.mi.sd1.task2.StringHelperTest;
+
+public class ShowReachedPoints {
+
+    /**
+     * Revealing total number of reached points from all tasks.
+     *
+     * @param args Unused
+     */
+    public static void main(String[] args) {
+        RunTests.exec(
+                "Task 1"
+                , A_PaymentTest.class, B_IrrigationTest.class, C_SwitchTest.class, D_ArrayHelperTest.class
+        );
+        RunTests.exec("Task 2", StringHelperTest.class);
+    }
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task1/A_PaymentTest.java b/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task1/A_PaymentTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..2b26ec179b0561e983707f389ae65a16381eee2a
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task1/A_PaymentTest.java
@@ -0,0 +1,50 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class A_PaymentTest extends ExaminationTestDefaults {
+
+    static final private double EPS = 1.E-13;
+    @Test
+    @Marking(points = 8)
+    public void testFreeShippingPayment () {
+
+        for (int orderSum = 5000; orderSum < 10000; orderSum++) {
+            for (int day = 3; day < 100; day++) {
+                test(orderSum / 100., orderSum / 100., day);
+            }
+            for (int day = 0; day <= 2; day++) {
+                test(orderSum * 98 / 10000., orderSum / 100., day);
+            }
+        }
+    }
+
+    @Test
+    @Marking(points = 8)
+    public void testNonfreeShippingPayment () {
+
+        for (int orderSum = 1; orderSum < 5000; orderSum++) {
+            for (int day = 3; day < 100; day++) {
+                test(orderSum / 100. + 6.50, orderSum / 100., day);
+            }
+            for (int day = 0; day <= 2; day++) {
+                test(orderSum * 98 / 10000. + 6.50, orderSum / 100., day);
+            }
+        }
+    }
+
+    static private void test(final double expectedCosts, final double amount, int paymentDelay) {
+
+        final String message = "An order worth of " + amount + "€ and payment at day " + paymentDelay +
+                " results in  total costs of " + expectedCosts + "€";
+
+        Assert.assertEquals(
+                message,
+                expectedCosts,
+                A_Payment.getBillingAmount(amount, paymentDelay),
+                EPS);
+    }
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task1/B_IrrigationTest.java b/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task1/B_IrrigationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..efb8d9e35ea585c52c16b62ced833328b9e1b70f
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task1/B_IrrigationTest.java
@@ -0,0 +1,84 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import org.junit.Assert;
+import org.junit.Test;
+import static de.hdm_stuttgart.mi.sd1.task1.B_Irrigation.irrigationIsActive;
+public class B_IrrigationTest  extends ExaminationTestDefaults {
+
+    @Test
+    @Marking(points = 13)
+    public void testIrrigation () {
+
+        boolean expectedIrrigationState = false;  // 0:00 till 4:59
+        for (int hour = 0; hour <= 4; hour++) {
+            for (int minute = 0; minute <= 59; minute++) {
+                final String errMmsg = getErrorMessage(expectedIrrigationState, hour, minute);
+                Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(hour, minute));
+            }
+        }
+
+        expectedIrrigationState = true;  // 5:00 till 5:59
+        for (int minute = 0; minute <= 59; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 5, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(5, minute));
+        }
+
+        expectedIrrigationState = true; // 6:00 till 6:30
+        for (int minute = 0; minute <= 30; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 6, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(6, minute));
+        }
+
+        expectedIrrigationState = false; // 6:31 till 6:59
+        for (int minute = 31; minute <= 59; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 6, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(6, minute));
+        }
+
+        expectedIrrigationState = false;  // 7:00 till 20:59
+        for (int hour = 7; hour <= 20; hour++) {
+            for (int minute = 0; minute < 60; minute++) {
+                final String errMmsg = getErrorMessage(expectedIrrigationState, hour, minute);
+                Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(hour, minute));
+            }
+        }
+
+        expectedIrrigationState = false; // 21:00 till 21:29
+        for (int minute = 0; minute <= 29; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 21, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(21, minute));
+        }
+
+        expectedIrrigationState = true; // 21:30 till 21:59
+        for (int minute = 30; minute <= 59; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 21, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(21, minute));
+        }
+
+        expectedIrrigationState = true; // 22:00 till 22:30
+        for (int minute = 0; minute <= 30; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 22, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(22, minute));
+        }
+
+        // 22:31 till 22:59
+        expectedIrrigationState = false; // 22:31 till 22:59
+        for (int minute = 31; minute <= 59; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 22, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(22, minute));
+        }
+
+        expectedIrrigationState = false; // 23:00 till 23:59
+        for (int minute = 0; minute <= 59; minute++) {
+            final String errMmsg = getErrorMessage(expectedIrrigationState, 23, minute);
+            Assert.assertEquals(errMmsg, expectedIrrigationState, irrigationIsActive(23, minute));
+        }
+    }
+
+    private String getErrorMessage(final boolean expectedIrrigationState, final int hour, final int minute) {
+        return "At " + hour + ":" + minute + " Irrigation is supposed to be "+
+                (expectedIrrigationState ? "active" : "inactive");
+    }
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task1/C_SwitchTest.java b/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task1/C_SwitchTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..cbb173f1d3b080fa6bd5ed0b770d3d6c878de9a3
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task1/C_SwitchTest.java
@@ -0,0 +1,72 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+import static de.hdm_stuttgart.mi.sd1.task1.C_Switch.switchFirstAndSurname;
+
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class
+C_SwitchTest extends ExaminationTestDefaults {
+
+    @Test
+    @Marking(points = 2)
+    public void test_050_null() {
+        Assert.assertNull(switchFirstAndSurname(null));
+    }
+
+    @Test
+    @Marking(points = 2)
+    public void test_100_error() {
+        Assert.assertNull(switchFirstAndSurname(""));
+        Assert.assertNull(switchFirstAndSurname(" "));
+        Assert.assertNull(switchFirstAndSurname(" test "));
+        Assert.assertNull(switchFirstAndSurname("Tucholski;Kurt"));
+        Assert.assertNull(switchFirstAndSurname("Macdonald Amy"));
+        Assert.assertNull(switchFirstAndSurname("Keynes, John, Maynard"));
+        Assert.assertNull(switchFirstAndSurname(",Hauser Kaspar"));
+        Assert.assertNull(switchFirstAndSurname("Hauser Kaspar,"));
+        Assert.assertNull(switchFirstAndSurname("Hauser, Kaspar,"));
+        Assert.assertNull(switchFirstAndSurname(",Hauser, Kaspar"));
+        Assert.assertNull(switchFirstAndSurname(",Hauser  , Kaspar"));
+        Assert.assertNull(switchFirstAndSurname(",,,,,,,"));
+    }
+
+    @Test
+    @Marking(points = 2)
+    public void test_200_minNoWhite() {
+        Assert.assertEquals("R D", switchFirstAndSurname("D,R"));
+        Assert.assertEquals("Y X", switchFirstAndSurname("X,Y"));
+    }
+
+    @Test
+    @Marking(points = 2)
+    public void test_210_minWhite() {
+        Assert.assertEquals("q P", switchFirstAndSurname("P, q"));
+        Assert.assertEquals("z l", switchFirstAndSurname("l,   z"));
+        Assert.assertEquals("T d", switchFirstAndSurname("d,   T  "));
+        Assert.assertEquals("k p", switchFirstAndSurname("    p,k"));
+        Assert.assertEquals("u l  J", switchFirstAndSurname(" l  J   ,    u "));
+    }
+
+    @Test
+    @Marking(points = 2)
+    public void test_300_regularNoWhite() {
+        Assert.assertEquals("Miles Davis", switchFirstAndSurname("Davis,Miles"));
+        Assert.assertEquals("Hannah Arendt", switchFirstAndSurname("Arendt,Hannah"));
+        Assert.assertEquals("Simone de Beauvoir", switchFirstAndSurname("de Beauvoir,Simone"));
+    }
+
+    @Test
+    @Marking(points = 2)
+    public void test_300_regularWhite() {
+        Assert.assertEquals("Martin Luther King", switchFirstAndSurname("   King, Martin Luther"));
+        Assert.assertEquals("Janis Joplin", switchFirstAndSurname("  Joplin   ,Janis "));
+        Assert.assertEquals("John von Neumann", switchFirstAndSurname("von Neumann ,   John   "));
+    }
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task1/D_ArrayHelperTest.java b/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task1/D_ArrayHelperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c72ec39c5e351f75fff02b5e6840a130531db63a
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task1/D_ArrayHelperTest.java
@@ -0,0 +1,68 @@
+package de.hdm_stuttgart.mi.sd1.task1;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import org.junit.Assert;
+import org.junit.Test;
+import static de.hdm_stuttgart.mi.sd1.task1.D_ArrayHelper.getSigns;
+public class D_ArrayHelperTest extends ExaminationTestDefaults {
+
+    @Test
+    public void test_100_null() {
+        Assert.assertEquals("", getSigns(null));
+    }
+
+    @Test
+    public void test_110_empty() {
+        Assert.assertEquals("", getSigns(new int[]{}));
+    }
+
+    @Test
+    public void test_200_positivesSingle() {
+        Assert.assertEquals("positives", getSigns(new int[]{1}));
+        Assert.assertEquals("positives", getSigns(new int[]{70}));
+        Assert.assertEquals("positives", getSigns(new int[]{3000}));
+    }
+
+    @Test
+    public void test_210_positivesMultiple() {
+        Assert.assertEquals("positives", getSigns(new int[]{9, 1, 200, 50}));
+        Assert.assertEquals("positives", getSigns(new int[]{10000000, 1000, 999, 8}));
+        Assert.assertEquals("positives", getSigns(new int[]{100, 99}));
+    }
+
+    @Test
+    public void test_300_NegativesSingle() {
+        Assert.assertEquals("negatives", getSigns(new int[]{-5}));
+        Assert.assertEquals("negatives", getSigns(new int[]{-300}));
+        Assert.assertEquals("negatives", getSigns(new int[]{-99999}));
+    }
+
+    @Test
+    public void test_310_NegativesMultiple() {
+        Assert.assertEquals("negatives", getSigns(new int[]{-100, -9}));
+        Assert.assertEquals("negatives", getSigns(new int[]{-1, -3, -5, -7}));
+    }
+
+    @Test
+    public void test_400_justZero() {
+        Assert.assertEquals("zeroes", getSigns(new int[]{0}));
+    }
+
+    @Test
+    public void test_410_justZeroMultiple() {
+        Assert.assertEquals("zeroes", getSigns(new int[]{0, 0}));
+        Assert.assertEquals("zeroes", getSigns(new int[]{0, 0, 0}));
+        Assert.assertEquals("zeroes", getSigns(new int[]{0, 0, 0, 0}));
+        Assert.assertEquals("zeroes", getSigns(new int[]{0, 0, 0, 0, 0}));
+    }
+
+    @Test
+    public void test_500_mixed() {
+        Assert.assertEquals("negatives,zeroes,positives", getSigns(new int[]{3, -1, 0}));
+        Assert.assertEquals("zeroes,positives", getSigns(new int[]{55, 9, 0}));
+        Assert.assertEquals("negatives,zeroes,positives", getSigns(new int[]{0, -19, 300}));
+        Assert.assertEquals("negatives,positives", getSigns(new int[]{42, 9, -17}));
+        Assert.assertEquals("negatives,positives", getSigns(new int[]{55, 9, -33, 27, 88, -1000, 9}));
+        Assert.assertEquals("negatives,zeroes,positives", getSigns(new int[]{0, -3, 0, 55, 9, 0, 1111}));
+    }
+}
diff --git a/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task2/StringHelperTest.java b/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task2/StringHelperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b2e0d309098b1d2635bc25674c9141ed76cd35ea
--- /dev/null
+++ b/Klausuren/Sd1/2023summer/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task2/StringHelperTest.java
@@ -0,0 +1,39 @@
+package de.hdm_stuttgart.mi.sd1.task2;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+import java.io.File;
+import java.util.Scanner;
+
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+
+public class StringHelperTest extends ExaminationTestDefaults {
+    @Test
+    @Marking(points = 4)
+    public void test_100_void() {
+        final Object[] input = {null, new File[0], null, new Scanner(System.in)};
+        final String[] expected = {};
+        Assert.assertArrayEquals(expected, StringHelper.filterStrings(input));
+    }
+    @Test
+    @Marking(points = 8)
+    public void test_200_StringResemblingClasses() {
+        final Object[] input = {null, "Eve", new StringBuffer("Adam"), null, new StringBuilder("Hello")};
+        final String[] expected = {"Eve", "Adam", "Hello"};
+        Assert.assertArrayEquals(expected, StringHelper.filterStrings(input));
+    }
+
+    @Test
+    @Marking(points = 8)
+    public void test_200_mixedClasses() {
+        final Object[] input = {null, null, "Eve", -13, false, null, new File("a"), 47.11, null};
+        final String[] expected = {"Eve", "-13", "false", "47.11"};
+        Assert.assertArrayEquals(expected, StringHelper.filterStrings(input));
+    }
+
+}