diff --git a/README.md b/README.md
index 6c3aa64ca7586d30042582bd735ee12edef45dd7..1608c452e0dc9563b79e20b1e7949d7656d32ce0 100644
--- a/README.md
+++ b/README.md
@@ -1,132 +1,243 @@
-# ROSNoeticStandardContainer
+# ROS Noetic Standard Container with Preinstalled Learn Environment Plugin
 
-This is a visual studio code development container with ros noetic installed to control a Franka Panda Robot in a simulation and real environment. 
+> **⚠️ WARNING:** This is the README for setting up the container with all functionalities. For the Learn Environment Plugin itself, refer to [GETTING_STARTED.md](./catkin_ws/src/learn_environment/tasks/GETTING_STARTED.md) or for contributing to it the [CONTRIBUTE.md](./catkin_ws/src/learn_environment/developer_docs/CONTRIBUTE.md) files.
 
-Install Visual studio code with the remote container extension, clone this repository and enjoy a container with everything for ROS and Panda installed. 
 
-## Version
+This repository provides a Visual Studio Code development container with ROS Noetic installed to control a Franka Panda Robot in both simulation and real environments. It also has the Learn Environment plugin for RViz preinstalled so you can start learning how to work with the robot immediatly.
 
-ROS: noetic
-
-
-Robots: 
- - Panda
-
- Features:
-
- - ROS Noetic
- - Ros für Franka Panda
- - MoveIt vorkompiliert
 
+## Features
 
+- ROS Noetic
+- Support for Franka Panda
+- Precompiled MoveIt
+- Preinstalled Learn Environment plugin for RViz
 
 ## Installation
 
-### local Windows installation
-1. [Visual Studio Code](https://code.visualstudio.com/docs/remote/containers)
-    
-    1.1. Install the DevContainer extension in VSC (ID: ms-vscode-remote.remote-containers)
-2. [WSL2](https://learn.microsoft.com/de-de/windows/wsl/install) (it needs wsl2 instead of 1)
-3. [Docker](https://docs.docker.com/desktop/install/windows-install/)
-    
-    (sometimes you have to install with `pip install docker-compose` [docker-compose](https://docs.docker.com/compose/) as well)
-    
-4. Create a fork of this repository.
-5. Clone the Repository in your WSL environment (`git clone ...`)
-
-    5.1. You need to create a ssh key in your wsl (or linux) environment and copy this key to your git.ssc.kit.edu ssh-keys [Explanation](https://git.scc.kit.edu/help/user/ssh.md)
-6. Open the repository with `code .` in the repository folder.
-7. Use `ctrl + shift + p` *Dev-Containers: Open in Container* to open the container in a docker environment. You have now all the necessary Tools installed.
-
-### on a linux computer (or the computer connected to the real robot)
-
-1. [Visual Studio Code](https://code.visualstudio.com/docs/remote/containers)
-2. [Docker](https://docs.docker.com/engine/install/ubuntu/)
-3. Create a fork of this repository.
-4. Clone the Repository in your environment `git clone ...`
-    
-    4.1. You need to create a ssh key in your wsl (or linux) environment and copy this key to your git.ssc.kit.edu ssh-keys [Explanation](https://git.scc.kit.edu/help/user/ssh.md)
-5. Open the repository with `code .` in the repository folder.
-6. Use `ctrl + shift + p` *Dev-Containers: Open in Container* to open the container in a docker environment. You have now all the necessary Tools installed.
-
-
-### Functions:
-
-#### Desktop Environment
-Go to: [http://localhost:6080/](http://localhost:6080/) in your browser. The Password: "vscode" opens a desktop environment of the container in your browser. All windows you open in the container are shown here.
-
-<img src="/screenshots/webdesktopenvironment.png"  width="300" height="300">
-
-
-#### Control the real Panda
-Remember to activate the panda FCI in the DESK environment with "Activate FCI" and the robot leds should be blue.
-
-##### MoveIt Position Controller
-execute: 
-
-    roslaunch panda_moveit_config franka_control.launch robot_ip:=172.16.0.2
-
-This opens the control node of the panda. You can now use the main functions of the panda with access to moveit and the ability to send the robot to x,y,z coordinates. In the [desktop environment](#### Desktop Environment) you can use RVIZ and MoveIT to send the robot to coordinates.
-
-If you move the robot with your hand or the robot was reaching a difficult edge position and won't move further you can recover the robot with: 
-
-
-    rostopic pub -1 /franka_control/error_recovery/goal franka_msgs/ErrorRecoveryActionGoal "{}"
-
-
-##### cartesian impedance controller
-
-
-    roslaunch franka_example_controllers cartesian_impedance_example_controller.launch robot_ip:=172.16.0.2
-
-opens the robot control with RVIZ and a cartesian impedance controller. You can move the robot in RVIZ in the [desktop environment](#### Desktop Environment). 
-
-#### Panda Gazebo (Simulation)
-
-##### cartesian impedance controller
-
-
-    roslaunch franka_gazebo panda.launch x:=-0.5 \
-    world:=$(rospack find franka_gazebo)/world/stone.sdf \
-    controller:=cartesian_impedance_example_controller \
-    rviz:=true
-
-opens RVIZ and gazebo with a simulation of the panda robot with a cartesian impedance controller. All ROSTopics are loaded to control the virtual robot.
-
-![Gazebo RVIZ Sim](/screenshots/gazebocartesianrvizsim.png "Gazebo RVIZ Sim")
-
-##### moveit position controller
-
-    roslaunch panda_moveit_config demo_gazebo.launch rviz_tutorial:=true
+When to Use Devcontainers:
+
+**Benefits of Devcontainers:**
+- Easier setup
+- No worries about connecting the display due to Web Desktop Environment
+
+**Benefits of Not Using Devcontainers:**
+- Still very easy setup
+- Less overhead
+- Faster build
+- Display forwarding already implemented
+- Easier to enable GPU support on non-NVIDIA graphic cards
+
+### Local Windows Installation
+
+<details>
+<summary>Using Devcontainer</summary>
+
+1. Install [Visual Studio Code](https://code.visualstudio.com/)
+    - Install the DevContainer extension (ID: ms-vscode-remote.remote-containers)
+2. Install [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install)
+3. Install [Docker](https://docs.docker.com/desktop/install/windows-install/)
+    - You may need to install [docker-compose](https://docs.docker.com/compose/) with `pip install docker-compose`
+4. Fork this repository.
+5. Clone the repository in your WSL environment:
+    ```bash
+    git clone <repository-url>
+    ```
+    - Create an SSH key in your WSL environment and add it to your git.ssc.kit.edu SSH keys. [Explanation](https://docs.gitlab.kit.edu/en/getting_started/#1-ssh-connection-using-ssh-keys)
+6. Open the repository folder in VS Code:
+    ```bash
+    code .
+    ```
+7. Open the container in a Docker environment:
+    ```bash
+    ctrl + shift + p
+    ```
+    Select *Dev-Containers: Open in Container*. All necessary tools will be installed.
+
+</details>
+
+<details>
+<summary>Without Devcontainer</summary>
+
+1. Install [Visual Studio Code](https://code.visualstudio.com/)
+    - Install the Docker extension (ID: ms-azuretools.vscode-docker)
+2. Install [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install)
+3. Install [Docker](https://docs.docker.com/desktop/install/windows-install/)
+    - You may need to install [docker-compose](https://docs.docker.com/compose/) with `pip install docker-compose`
+4. Fork this repository.
+5. Clone the repository in your WSL environment:
+    ```bash
+    git clone <repository-url>
+    ```
+    - Create an SSH key in your WSL environment and add it to your git.ssc.kit.edu SSH keys. [Explanation](https://docs.gitlab.kit.edu/en/getting_started/#1-ssh-connection-using-ssh-keys)
+6. Open the repository folder in VS Code:
+    ```bash
+    code .
+    ```
+7. Build the container:
+    ```bash
+    ./build.ps1
+    ```
+8. Start the container:
+    ```bash
+    ./run.ps1
+    ```
+9. Attach VS Code to the container:
+    - Click on the Docker extension (left sidebar in VS Code).
+    - Find the running container and click on `Attach VS Code`. This opens a new VS Code window inside the container.
+10. Make the display available for the container:
+    - Install [VcXsrv](https://sourceforge.net/projects/vcxsrv/). 
+    - Start the `XLaunch` Application (e.g. from Windows Start Menu)
+    - Select `Multiple windows` and set `Display number` to `0`. Click `next`.
+    - Select `Start no client`. Click `next`.
+    - Also check the `Disable accesss control` box. Click `next` and `finish`.
+
+</details>
+
+### Local Linux Installation
+
+<details>
+<summary>Using Devcontainer</summary>
+
+1. Install [Visual Studio Code](https://code.visualstudio.com/)
+2. Install [Docker](https://docs.docker.com/engine/install/ubuntu/)
+3. Fork this repository.
+4. Clone the repository in your environment:
+    ```bash
+    git clone <repository-url>
+    ```
+    - Create an SSH key in your environment and add it to your git.ssc.kit.edu SSH keys. [Explanation](https://docs.gitlab.kit.edu/en/getting_started/#1-ssh-connection-using-ssh-keys)
+5. Open the repository folder in VS Code:
+    ```bash
+    code .
+    ```
+6. Open the container in a Docker environment:
+    ```bash
+    ctrl + shift + p
+    ```
+    Select *Dev-Containers: Open in Container*. All necessary tools will be installed.
+
+</details>
+
+<details>
+<summary>Without Devcontainer</summary>
+
+1. Install [Visual Studio Code](https://code.visualstudio.com/)
+    - Install the Docker extension (ID: ms-azuretools.vscode-docker)
+2. Install [Docker](https://docs.docker.com/engine/install/ubuntu/)
+    - You may need to install [docker-compose](https://docs.docker.com/compose/) with `pip install docker-compose`
+3. Fork this repository.
+4. Clone the repository in your environment:
+    ```bash
+    git clone <repository-url>
+    ```
+    - Create an SSH key in your environment and add it to your git.ssc.kit.edu SSH keys. [Explanation](https://docs.gitlab.kit.edu/en/getting_started/#1-ssh-connection-using-ssh-keys)
+5. Open the repository folder in VS Code:
+    ```bash
+    code .
+    ```
+6. Build the container:
+    ```bash
+    ./build.sh
+    ```
+7. Start the container:
+    ```bash
+    ./run.sh
+    ```
+8. Attach VS Code to the container:
+    - Click on the Docker extension (left sidebar in VS Code).
+    - Find the running container and click on `Attach VS Code`. This opens a new VS Code window inside the container.
+
+</details>
+
+## Functions
+
+### Desktop Environment (Devcontainer setup only)
+
+Access the desktop environment of the container in your browser at [http://localhost:6080/](http://localhost:6080/). All windows you open in the container will be shown here.
+
+### Start the Learn Environment tutorial 
+
+How to get started with the plugin is described [here](./catkin_ws/src/learn_environment/tasks/GETTING_STARTED.md)
+
+### Control the Real Panda
+
+Activate the Panda FCI in the DESK environment with "Activate FCI". The robot LEDs should turn blue.
+
+#### MoveIt Position Controller
+
+To control the Panda with MoveIt, execute:
+```bash
+roslaunch panda_moveit_config franka_control.launch robot_ip:=172.16.0.2
+```
+You can use RVIZ and MoveIt to send the robot to coordinates in the desktop environment.
+
+If the robot gets stuck or you move it by hand, recover it with:
+```bash
+rostopic pub -1 /franka_control/error_recovery/goal franka_msgs/ErrorRecoveryActionGoal "{}"
+```
+
+#### Cartesian Impedance Controller
+
+To control the Panda with a Cartesian impedance controller, execute:
+```bash
+roslaunch franka_example_controllers cartesian_impedance_example_controller.launch robot_ip:=172.16.0.2
+```
+You can move the robot in RVIZ in the desktop environment.
+
+### Panda Gazebo (Simulation)
 
-opens RVIZ and gazebo with a simulation of the panda robot with a moveit position controller. You can now add a motion planner in RVIZ if you want. But all move_group topics to control the robot are now started.
+#### Cartesian Impedance Controller
 
+To simulate the Panda with a Cartesian impedance controller, execute:
+```bash
+roslaunch franka_gazebo panda.launch x:=-0.5 \
+world:=$(rospack find franka_gazebo)/world/stone.sdf \
+controller:=cartesian_impedance_example_controller \
+rviz:=true
+```
+This opens RVIZ and Gazebo with a simulation of the Panda robot.
+
+![Gazebo RVIZ Sim](/screenshots/gazebocartesianrvizsim.png)
+
+#### MoveIt Position Controller
+
+To simulate the Panda with a MoveIt position controller, execute:
+```bash
+roslaunch panda_moveit_config demo_gazebo.launch rviz_tutorial:=true
+```
+This opens RVIZ and Gazebo with a simulation of the Panda robot. You can add a motion planner in RVIZ if needed.
 
-### Create a own package/node: 
+### Create Your Own Package/Node
 
-to create a own ROS Package you create a catkin package in /workspace/catkin_ws/src. You can also clone another ROS package in and work with this. [create a ROS Package](http://wiki.ros.org/ROS/Tutorials/CreatingPackage)
+To create your own ROS package, create a catkin package in `/workspace/catkin_ws/src`. You can also clone another ROS package and work with it. [Create a ROS Package](http://wiki.ros.org/ROS/Tutorials/CreatingPackage)
 
-You compile the workspace With `catkin_make` in /workspace/catkin_ws. To use the compiled functions source the workspace setup.bash with `source /workspace/catkin_ws/devel/setup.bash`.
+Compile the workspace with `catkin_make` in `/workspace/catkin_ws`. To use the compiled functions, source the workspace setup.bash with:
+```bash
+source /workspace/catkin_ws/devel/setup.bash
+```
 
+## Error Handling
 
-## Errorhandling:
+### Problems Cloning the Development Container on a Remote PC
 
-### problems while cloning the development container in a remote pc
-try if you can clone it in another folder. 
+Try cloning the repository in another folder.
 
-### problem container doesn't start on linux (MIT-Magic Cookie)
-Activating cpu-virtualization might help. 
+### Container Doesn't Start on Linux (MIT-Magic Cookie)
 
-### GPU not found
-You can give the container GPU ability with
+Activating CPU virtualization might help.
 
-    deploy:
-      resources:
-        reservations:
-          devices:
-            - capabilities: ["gpu"]
+### GPU Not Found
 
+Enable GPU support for the container with:
+```yaml
+deploy:
+  resources:
+    reservations:
+      devices:
+        - capabilities: ["gpu"]
+```
 
-### No realtime kernel
+### No Realtime Kernel
 
-To work the franka panda needs a realtime kernel. Either you already have one installed and need to reboot to choose a kernel in the advanced settings. If you don't have a real time kernel you need to install one [explanation](https://frankaemika.github.io/docs/installation_linux.html#setting-up-the-real-time-kernel)
+The Franka Panda requires a realtime kernel. If you don't have one, install it following [this explanation](https://frankaemika.github.io/docs/installation_linux.html#setting-up-the-real-time-kernel). Reboot and choose the realtime kernel in the advanced settings.
diff --git a/build.ps1 b/build.ps1
new file mode 100644
index 0000000000000000000000000000000000000000..6f00fcf5425cd31fff6a2f288ba3f0edab6c1dcc
--- /dev/null
+++ b/build.ps1
@@ -0,0 +1,2 @@
+# Build the Docker container using the specified Dockerfile
+docker build -f "$(Join-Path $PSScriptRoot '.devcontainer/Dockerfile')" -t container-ros-noetic-moveit-panda .
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/CONTRIBUTE.md b/catkin_ws/src/learn_environment/developer_docs/CONTRIBUTE.md
new file mode 100644
index 0000000000000000000000000000000000000000..3d3b35e4ae6cbc1ef9f9b559f3c13e00dc68b852
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/CONTRIBUTE.md
@@ -0,0 +1,9 @@
+# Contribute to the plugin:
+
+### Creating tasks:
+
+If you want to create new tasks for the learn environment, follow [this tutorial](./define_tasks.md).
+
+### Extending the plugin:
+
+For an overview of the plugins architecture, have a look at [this documentation](./codebase_overview.md).
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/codebase_overview.md b/catkin_ws/src/learn_environment/developer_docs/codebase_overview.md
new file mode 100644
index 0000000000000000000000000000000000000000..ab3f277a580fa1843b1f248e3c940acef2298c04
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/codebase_overview.md
@@ -0,0 +1,37 @@
+
+# Codebase Overview
+
+## Introduction
+This document provides an overview of the codebase for the `Learn Environment` project for the Franka Panda robot. It includes descriptions of the main components, their interactions, and instructions for setting up and contributing to the project.
+
+## Architecture
+The `learn_environment` project is structured into several key components, each responsible for different aspects of the system. The main components are:
+
+- **Task Management**:  
+    Handles the creation, execution, and management of tasks.
+- **UI Components**:  
+    Manages the user interface elements for interacting with tasks.
+- **Script Execution**:  
+    Converts and executes Jupyter notebooks and other scripts.
+
+### Simplified class diagram:
+![class diagram](./images/class_diagram.png)
+
+## Doxygen Documentation
+For further insights, view the [Doxygen documentation `index.html`](./doxygen_documentation/html/index.html) for a more in-depth overview.
+
+To generate new Doxygen documentation after making changes, install `Doxygen` and `Graphviz`. Then, navigate to `docs/for_developers/doxygen_documentation` and run:
+
+```bash
+doxygen Doxyfile
+```
+
+The Doxyfile is preconfigured, but you can adjust it as needed.
+
+## Known Issues
+- **Rendering issues with local setups:**  
+    RViz has issues rendering content changes. This problem does not occur in noVNC setups but is common in most local setups. Dragging the plugin out of RViz usually resolves the issue.
+- **Rendering issues with CPU virtualization:**  
+    Black, non-rounded boxes appear behind some rounded borders (e.g. the Help Menu).
+- **Logging the `converted.py` file instead of the Jupyter Notebook:**  
+    When Jupyter Notebooks are converted to Python files for execution, log messages reference the lines in the converted file. This can make it difficult for users to pinpoint where an error occurred in the original notebook. However, with only 2 or 3 code cells per subtask, this issue is generally manageable. Addressing this would require mapping the lines in the converted file back to the cells in the Jupyter Notebook and adjusting the console output accordingly.
diff --git a/catkin_ws/src/learn_environment/docs/for_developers/define_difficulty_levels.md b/catkin_ws/src/learn_environment/developer_docs/define_difficulty_levels.md
similarity index 96%
rename from catkin_ws/src/learn_environment/docs/for_developers/define_difficulty_levels.md
rename to catkin_ws/src/learn_environment/developer_docs/define_difficulty_levels.md
index cd889b60815e2b13890010a3b36593274488cb1c..726cb22e00eac0303e8ac067ab48f460557a5d20 100644
--- a/catkin_ws/src/learn_environment/docs/for_developers/define_difficulty_levels.md
+++ b/catkin_ws/src/learn_environment/developer_docs/define_difficulty_levels.md
@@ -35,7 +35,7 @@ In this example, three difficulties are defined: `beginner`, `intermediate`, and
 
 The hex-colors are used for the color of the difficulty label:
 
-![Difficulty Labels](./../images/difficulty_label.png)
+![Difficulty Labels](./images/difficulty_label.png)
 
 ### Using Difficulties in Task Definitions
 
diff --git a/catkin_ws/src/learn_environment/docs/for_developers/define_tasks.md b/catkin_ws/src/learn_environment/developer_docs/define_tasks.md
similarity index 98%
rename from catkin_ws/src/learn_environment/docs/for_developers/define_tasks.md
rename to catkin_ws/src/learn_environment/developer_docs/define_tasks.md
index afe5de95d36f6efb76c250b44854a9cb76b72cec..8b8f2801c7a2472e4d27e186cd5f3c34e0a77540 100644
--- a/catkin_ws/src/learn_environment/docs/for_developers/define_tasks.md
+++ b/catkin_ws/src/learn_environment/developer_docs/define_tasks.md
@@ -5,7 +5,7 @@ You can easily create and integrate new Tasks for the Learning Environment. This
 Every task has **at least one subtask**, represented by a Jupyter Notebook and the corresponding evaluation script.
 
 ## 1. Create a Jupyter Notebook
-Start by creating a Jupyter Notebook. It is strongly recommended to use [this template](./../../task_pool/solution_template.ipynb) as a starting point.
+Start by creating a Jupyter Notebook. It is strongly recommended to use [this template](./../task_pool/solution_template.ipynb) as a starting point.
 
 ### Guidelines
 - Use markdown cells to explain the tasks to the user clearly.
@@ -190,7 +190,7 @@ As tasks are divided into tasks and subtasks, you need to define some fields in
 
 The configuration will be displayed like this:
 
-![Difficulty Labels](./../images/task_demo.png)
+![Difficulty Labels](./images/task_demo.png)
 
 ### Fields for tasks
 | Field          | Description                                          | Optional/Required | Default Value |
diff --git a/catkin_ws/src/learn_environment/docs/for_developers/define_topics.md b/catkin_ws/src/learn_environment/developer_docs/define_topics.md
similarity index 100%
rename from catkin_ws/src/learn_environment/docs/for_developers/define_topics.md
rename to catkin_ws/src/learn_environment/developer_docs/define_topics.md
diff --git a/catkin_ws/src/learn_environment/Doxyfile b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/Doxyfile
similarity index 99%
rename from catkin_ws/src/learn_environment/Doxyfile
rename to catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/Doxyfile
index 2fc1151558d2dea78d52638279f3bfacc8cbcdfa..08566c045d37ad17a8a2c1546136e9e4e6602e1e 100644
--- a/catkin_ws/src/learn_environment/Doxyfile
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/Doxyfile
@@ -32,7 +32,7 @@ DOXYFILE_ENCODING      = UTF-8
 # title of most generated pages and in a few other places.
 # The default value is: My Project.
 
-PROJECT_NAME           = "My Project"
+PROJECT_NAME           = "Learn Environment"
 
 # The PROJECT_NUMBER tag can be used to enter a project or revision number. This
 # could be handy for archiving the generated documentation or if some version
@@ -158,7 +158,7 @@ INLINE_INHERITED_MEMB  = NO
 # shortest path that makes the file name unique will be used
 # The default value is: YES.
 
-FULL_PATH_NAMES        = YES
+FULL_PATH_NAMES        = NO
 
 # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
 # Stripping is only done if one of the specified strings matches the left-hand
@@ -829,7 +829,7 @@ WARN_LOGFILE           =
 # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
 # Note: If this tag is empty the current directory is searched.
 
-INPUT = include src
+INPUT = ../../../src ../../../include
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -2506,7 +2506,7 @@ DIAFILE_DIRS           =
 # generate a warning when it encounters a \startuml command in this case and
 # will not generate output for the diagram.
 
-PLANTUML_JAR_PATH      = ~/Desktop/plantuml-1.2024.8.jar
+PLANTUML_JAR_PATH      = 
 
 # When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
 # configuration file for plantuml.
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/class_diagram.puml b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/class_diagram.puml
new file mode 100644
index 0000000000000000000000000000000000000000..32aa3b7d42a39feaade1f5816d6ebf9b08e6b566
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/class_diagram.puml
@@ -0,0 +1,63 @@
+@startuml
+top to bottom direction
+
+/' Objects '/
+class LearnEnvironment
+
+package "Task Management" {
+    class TaskManager
+    class Task
+    class Subtask
+    enum SubtaskStatus
+    class TaskParser
+}
+
+package "Script Execution" {
+    class TaskExecutor
+    class ScriptWorker
+    class ProcessRunner
+}
+
+package "UI Components" {
+	class SubtaskItem
+    class TaskUI
+    class ExecuteFrame
+    class Sidebar
+    class CustomListWidget
+}
+
+package "Utility" {
+    class NotebookConverter
+    class FolderStructureConstants
+}
+
+/' Relationships '/
+LearnEnvironment o-- NotebookConverter
+LearnEnvironment o-- TaskManager
+LearnEnvironment o-- TaskUI
+ScriptWorker *-- NotebookConverter
+ScriptWorker o-- ProcessRunner
+Sidebar o-- CustomListWidget
+Subtask *-- SubtaskStatus
+Subtask *-- Task
+SubtaskItem o-- ExecuteFrame
+SubtaskItem o-- Subtask
+SubtaskItem o-- TaskManager
+Task *-- Subtask
+TaskExecutor o-- ScriptWorker
+TaskManager o-- Subtask
+TaskManager *-- Task
+TaskManager o-- TaskExecutor
+TaskManager o-- TaskUI
+TaskUI o-- ExecuteFrame
+TaskUI o-- Sidebar
+TaskUI *-- Task
+TaskUI o-- TaskManager
+
+/' Uses relationships '/
+TaskManager ..> TaskParser : uses
+
+/' Layout hints '/
+TaskUI -[hidden]-> SubtaskItem
+
+@enduml
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/annotated.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/annotated.html
new file mode 100644
index 0000000000000000000000000000000000000000..79e1228cfdb91cf5994b732cb1d726d33adee415
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/annotated.html
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Class List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Class List</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classCustomListWidget.html" target="_self">CustomListWidget</a></td><td class="desc">A custom <a class="el" href="classQListWidget.html">QListWidget</a> with enhanced mouse interaction </td></tr>
+<tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classExecuteFrame.html" target="_self">ExecuteFrame</a></td><td class="desc">A custom <a class="el" href="classQFrame.html">QFrame</a> that displays an image and text. For logging and task execution </td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classLearnEnvironment.html" target="_self">LearnEnvironment</a></td><td class="desc">A custom RViz panel for managing the learning environment </td></tr>
+<tr id="row_3_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classNotebookConverter.html" target="_self">NotebookConverter</a></td><td class="desc">A class for converting Jupyter notebooks to Python scripts and processing task pools </td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classProcessRunner.html" target="_self">ProcessRunner</a></td><td class="desc">Manages the execution of an external process with a timeout </td></tr>
+<tr id="row_5_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classQFrame.html" target="_self">QFrame</a></td><td class="desc"></td></tr>
+<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classQListWidget.html" target="_self">QListWidget</a></td><td class="desc"></td></tr>
+<tr id="row_7_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classQObject.html" target="_self">QObject</a></td><td class="desc"></td></tr>
+<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classQWidget.html" target="_self">QWidget</a></td><td class="desc"></td></tr>
+<tr id="row_9_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classScriptWorker.html" target="_self">ScriptWorker</a></td><td class="desc">Manages the execution of scripts for tasks </td></tr>
+<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classSidebar.html" target="_self">Sidebar</a></td><td class="desc">Represents the sidebar UI component for displaying tasks </td></tr>
+<tr id="row_11_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSubtask.html" target="_self">Subtask</a></td><td class="desc">Represents a subtask within a task </td></tr>
+<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classSubtaskItem.html" target="_self">SubtaskItem</a></td><td class="desc">Represents a UI item for a subtask </td></tr>
+<tr id="row_13_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structTask.html" target="_self">Task</a></td><td class="desc">Represents a task containing multiple subtasks </td></tr>
+<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTaskExecutor.html" target="_self">TaskExecutor</a></td><td class="desc">Executes tasks and manages their execution state </td></tr>
+<tr id="row_15_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTaskManager.html" target="_self">TaskManager</a></td><td class="desc">Manages tasks and their execution within the application </td></tr>
+<tr id="row_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTaskParser.html" target="_self">TaskParser</a></td><td class="desc">Parses tasks and subtasks from a JSON file </td></tr>
+<tr id="row_17_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTaskUI.html" target="_self">TaskUI</a></td><td class="desc">Manages the user interface for tasks and subtasks </td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/bc_s.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/bc_s.png
new file mode 100644
index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/bc_s.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/bc_sd.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/bc_sd.png
new file mode 100644
index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/bc_sd.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..a553384aebc20f1d1c622c5ad307477bfbd74d3a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget-members.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">CustomListWidget Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classCustomListWidget.html">CustomListWidget</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classCustomListWidget.html#ab37ab040c9872e60767fff8d1525ccad">CustomListWidget</a>(QWidget *parent=nullptr)</td><td class="entry"><a class="el" href="classCustomListWidget.html">CustomListWidget</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classCustomListWidget.html#a5d487b35f9dc9cd601b962e68b142e0b">leaveEvent</a>(QEvent *event) override</td><td class="entry"><a class="el" href="classCustomListWidget.html">CustomListWidget</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classCustomListWidget.html#adc3f7462d5db3e7c9fe4c5fd59076331">mouseMoveEvent</a>(QMouseEvent *event) override</td><td class="entry"><a class="el" href="classCustomListWidget.html">CustomListWidget</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget.html
new file mode 100644
index 0000000000000000000000000000000000000000..2e6bc04ddc3718844e2f75c8d87f23a615aadb5b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget.html
@@ -0,0 +1,250 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: CustomListWidget Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> &#124;
+<a href="classCustomListWidget-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">CustomListWidget Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>A custom <a class="el" href="classQListWidget.html">QListWidget</a> with enhanced mouse interaction.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="custom__list__widget_8hpp_source.html">custom_list_widget.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for CustomListWidget:</div>
+<div class="dyncontent">
+<div class="center"><img src="classCustomListWidget__inherit__graph.png" border="0" usemap="#aCustomListWidget_inherit__map" alt="Inheritance graph"/></div>
+<map name="aCustomListWidget_inherit__map" id="aCustomListWidget_inherit__map">
+<area shape="rect" title="A custom QListWidget with enhanced mouse interaction." alt="" coords="5,123,145,235"/>
+<area shape="rect" href="classQListWidget.html" title=" " alt="" coords="34,5,117,75"/>
+<area shape="poly" title=" " alt="" coords="78,90,78,123,73,123,73,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for CustomListWidget:</div>
+<div class="dyncontent">
+<div class="center"><img src="classCustomListWidget__coll__graph.png" border="0" usemap="#aCustomListWidget_coll__map" alt="Collaboration graph"/></div>
+<map name="aCustomListWidget_coll__map" id="aCustomListWidget_coll__map">
+<area shape="rect" title="A custom QListWidget with enhanced mouse interaction." alt="" coords="5,123,145,235"/>
+<area shape="rect" href="classQListWidget.html" title=" " alt="" coords="34,5,117,75"/>
+<area shape="poly" title=" " alt="" coords="78,90,78,123,73,123,73,90"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ab37ab040c9872e60767fff8d1525ccad" id="r_ab37ab040c9872e60767fff8d1525ccad"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab37ab040c9872e60767fff8d1525ccad">CustomListWidget</a> (<a class="el" href="classQWidget.html">QWidget</a> *parent=nullptr)</td></tr>
+<tr class="memdesc:ab37ab040c9872e60767fff8d1525ccad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a <a class="el" href="classCustomListWidget.html" title="A custom QListWidget with enhanced mouse interaction.">CustomListWidget</a> object and formats it correctly.  <br /></td></tr>
+<tr class="separator:ab37ab040c9872e60767fff8d1525ccad"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:adc3f7462d5db3e7c9fe4c5fd59076331" id="r_adc3f7462d5db3e7c9fe4c5fd59076331"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adc3f7462d5db3e7c9fe4c5fd59076331">mouseMoveEvent</a> (QMouseEvent *event) override</td></tr>
+<tr class="memdesc:adc3f7462d5db3e7c9fe4c5fd59076331"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles the mouse move event.  <br /></td></tr>
+<tr class="separator:adc3f7462d5db3e7c9fe4c5fd59076331"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5d487b35f9dc9cd601b962e68b142e0b" id="r_a5d487b35f9dc9cd601b962e68b142e0b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5d487b35f9dc9cd601b962e68b142e0b">leaveEvent</a> (QEvent *event) override</td></tr>
+<tr class="memdesc:a5d487b35f9dc9cd601b962e68b142e0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Handles the leave event.  <br /></td></tr>
+<tr class="separator:a5d487b35f9dc9cd601b962e68b142e0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A custom <a class="el" href="classQListWidget.html">QListWidget</a> with enhanced mouse interaction. </p>
+<p>The <a class="el" href="classCustomListWidget.html" title="A custom QListWidget with enhanced mouse interaction.">CustomListWidget</a> class provides a custom implementation of <a class="el" href="classQListWidget.html">QListWidget</a> with additional functionalities such as custom mouse cursor handling and specific styling. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="ab37ab040c9872e60767fff8d1525ccad" name="ab37ab040c9872e60767fff8d1525ccad"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab37ab040c9872e60767fff8d1525ccad">&#9670;&#160;</a></span>CustomListWidget()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">CustomListWidget::CustomListWidget </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classQWidget.html">QWidget</a> *</td>          <td class="paramname"><span class="paramname"><em>parent</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Constructs a <a class="el" href="classCustomListWidget.html" title="A custom QListWidget with enhanced mouse interaction.">CustomListWidget</a> object and formats it correctly. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">parent</td><td>Pointer to the parent widget. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a5d487b35f9dc9cd601b962e68b142e0b" name="a5d487b35f9dc9cd601b962e68b142e0b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5d487b35f9dc9cd601b962e68b142e0b">&#9670;&#160;</a></span>leaveEvent()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void CustomListWidget::leaveEvent </td>
+          <td>(</td>
+          <td class="paramtype">QEvent *</td>          <td class="paramname"><span class="paramname"><em>event</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">protected</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Handles the leave event. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">event</td><td>Pointer to the QEvent object. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="adc3f7462d5db3e7c9fe4c5fd59076331" name="adc3f7462d5db3e7c9fe4c5fd59076331"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adc3f7462d5db3e7c9fe4c5fd59076331">&#9670;&#160;</a></span>mouseMoveEvent()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void CustomListWidget::mouseMoveEvent </td>
+          <td>(</td>
+          <td class="paramtype">QMouseEvent *</td>          <td class="paramname"><span class="paramname"><em>event</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">protected</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Handles the mouse move event. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">event</td><td>Pointer to the QMouseEvent object. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="custom__list__widget_8hpp_source.html">custom_list_widget.hpp</a></li>
+<li><a class="el" href="custom__list__widget_8cpp.html">custom_list_widget.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..e1ea49bcd047f0478030969b407917f3ed9b4710
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__coll__graph.map
@@ -0,0 +1,5 @@
+<map id="CustomListWidget" name="CustomListWidget">
+<area shape="rect" id="Node000001" title="A custom QListWidget with enhanced mouse interaction." alt="" coords="5,123,145,235"/>
+<area shape="rect" id="Node000002" href="$classQListWidget.html" title=" " alt="" coords="34,5,117,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="78,90,78,123,73,123,73,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..4c16378b246180a4e901e858f8268a22d21c56e3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__coll__graph.md5
@@ -0,0 +1 @@
+4bf47706e92bfe868f2dd6e37706d4d2
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..0010296350f548c3b7ef34926151888497291acd
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..e1ea49bcd047f0478030969b407917f3ed9b4710
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="CustomListWidget" name="CustomListWidget">
+<area shape="rect" id="Node000001" title="A custom QListWidget with enhanced mouse interaction." alt="" coords="5,123,145,235"/>
+<area shape="rect" id="Node000002" href="$classQListWidget.html" title=" " alt="" coords="34,5,117,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="78,90,78,123,73,123,73,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..4c16378b246180a4e901e858f8268a22d21c56e3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__inherit__graph.md5
@@ -0,0 +1 @@
+4bf47706e92bfe868f2dd6e37706d4d2
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..0010296350f548c3b7ef34926151888497291acd
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classCustomListWidget__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..ff87e09e56f1bf2ec9dc1eff081c08b7010a82c1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame-members.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">ExecuteFrame Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classExecuteFrame.html">ExecuteFrame</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classExecuteFrame.html#a9a3ca41869860aee87ee8198fd629f8b">ExecuteFrame</a>(QWidget *parent=nullptr)</td><td class="entry"><a class="el" href="classExecuteFrame.html">ExecuteFrame</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classExecuteFrame.html#a3ddc917ee39ffc1c54c491aab9ba7404">getText</a>()</td><td class="entry"><a class="el" href="classExecuteFrame.html">ExecuteFrame</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classExecuteFrame.html#a796e8a79e0bc372c47421617bc7c9100">setImage</a>(const QString &amp;path)</td><td class="entry"><a class="el" href="classExecuteFrame.html">ExecuteFrame</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classExecuteFrame.html#a659f12e489dcddf89818a116c1e7f742">setText</a>(const QString &amp;text)</td><td class="entry"><a class="el" href="classExecuteFrame.html">ExecuteFrame</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classExecuteFrame.html#a0f49e809cf1c14026958bf26d3cf399b">~ExecuteFrame</a>()</td><td class="entry"><a class="el" href="classExecuteFrame.html">ExecuteFrame</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame.html
new file mode 100644
index 0000000000000000000000000000000000000000..bab8f1bd09dd96fef3768a33bfd163587d556541
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame.html
@@ -0,0 +1,274 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: ExecuteFrame Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classExecuteFrame-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">ExecuteFrame Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>A custom <a class="el" href="classQFrame.html">QFrame</a> that displays an image and text. For logging and task execution.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="execute__frame_8hpp_source.html">execute_frame.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for ExecuteFrame:</div>
+<div class="dyncontent">
+<div class="center"><img src="classExecuteFrame__inherit__graph.png" border="0" usemap="#aExecuteFrame_inherit__map" alt="Inheritance graph"/></div>
+<map name="aExecuteFrame_inherit__map" id="aExecuteFrame_inherit__map">
+<area shape="rect" title="A custom QFrame that displays an image and text. For logging and task execution." alt="" coords="5,123,130,277"/>
+<area shape="rect" href="classQFrame.html" title=" " alt="" coords="39,5,97,75"/>
+<area shape="poly" title=" " alt="" coords="70,90,70,123,65,123,65,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for ExecuteFrame:</div>
+<div class="dyncontent">
+<div class="center"><img src="classExecuteFrame__coll__graph.png" border="0" usemap="#aExecuteFrame_coll__map" alt="Collaboration graph"/></div>
+<map name="aExecuteFrame_coll__map" id="aExecuteFrame_coll__map">
+<area shape="rect" title="A custom QFrame that displays an image and text. For logging and task execution." alt="" coords="5,123,130,277"/>
+<area shape="rect" href="classQFrame.html" title=" " alt="" coords="39,5,97,75"/>
+<area shape="poly" title=" " alt="" coords="70,90,70,123,65,123,65,90"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a9a3ca41869860aee87ee8198fd629f8b" id="r_a9a3ca41869860aee87ee8198fd629f8b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9a3ca41869860aee87ee8198fd629f8b">ExecuteFrame</a> (<a class="el" href="classQWidget.html">QWidget</a> *parent=nullptr)</td></tr>
+<tr class="memdesc:a9a3ca41869860aee87ee8198fd629f8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for <a class="el" href="classExecuteFrame.html" title="A custom QFrame that displays an image and text. For logging and task execution.">ExecuteFrame</a>.  <br /></td></tr>
+<tr class="separator:a9a3ca41869860aee87ee8198fd629f8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0f49e809cf1c14026958bf26d3cf399b" id="r_a0f49e809cf1c14026958bf26d3cf399b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0f49e809cf1c14026958bf26d3cf399b">~ExecuteFrame</a> ()</td></tr>
+<tr class="memdesc:a0f49e809cf1c14026958bf26d3cf399b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor for <a class="el" href="classExecuteFrame.html" title="A custom QFrame that displays an image and text. For logging and task execution.">ExecuteFrame</a>.  <br /></td></tr>
+<tr class="separator:a0f49e809cf1c14026958bf26d3cf399b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a796e8a79e0bc372c47421617bc7c9100" id="r_a796e8a79e0bc372c47421617bc7c9100"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a796e8a79e0bc372c47421617bc7c9100">setImage</a> (const QString &amp;path)</td></tr>
+<tr class="memdesc:a796e8a79e0bc372c47421617bc7c9100"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the image to be displayed.  <br /></td></tr>
+<tr class="separator:a796e8a79e0bc372c47421617bc7c9100"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a659f12e489dcddf89818a116c1e7f742" id="r_a659f12e489dcddf89818a116c1e7f742"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a659f12e489dcddf89818a116c1e7f742">setText</a> (const QString &amp;text)</td></tr>
+<tr class="memdesc:a659f12e489dcddf89818a116c1e7f742"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the text to be displayed.  <br /></td></tr>
+<tr class="separator:a659f12e489dcddf89818a116c1e7f742"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3ddc917ee39ffc1c54c491aab9ba7404" id="r_a3ddc917ee39ffc1c54c491aab9ba7404"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3ddc917ee39ffc1c54c491aab9ba7404">getText</a> ()</td></tr>
+<tr class="memdesc:a3ddc917ee39ffc1c54c491aab9ba7404"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the current text being displayed.  <br /></td></tr>
+<tr class="separator:a3ddc917ee39ffc1c54c491aab9ba7404"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A custom <a class="el" href="classQFrame.html">QFrame</a> that displays an image and text. For logging and task execution. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a9a3ca41869860aee87ee8198fd629f8b" name="a9a3ca41869860aee87ee8198fd629f8b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9a3ca41869860aee87ee8198fd629f8b">&#9670;&#160;</a></span>ExecuteFrame()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">ExecuteFrame::ExecuteFrame </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classQWidget.html">QWidget</a> *</td>          <td class="paramname"><span class="paramname"><em>parent</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Constructor for <a class="el" href="classExecuteFrame.html" title="A custom QFrame that displays an image and text. For logging and task execution.">ExecuteFrame</a>. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">parent</td><td>The parent widget. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a0f49e809cf1c14026958bf26d3cf399b" name="a0f49e809cf1c14026958bf26d3cf399b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0f49e809cf1c14026958bf26d3cf399b">&#9670;&#160;</a></span>~ExecuteFrame()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ExecuteFrame::~ExecuteFrame </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Destructor for <a class="el" href="classExecuteFrame.html" title="A custom QFrame that displays an image and text. For logging and task execution.">ExecuteFrame</a>. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a3ddc917ee39ffc1c54c491aab9ba7404" name="a3ddc917ee39ffc1c54c491aab9ba7404"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3ddc917ee39ffc1c54c491aab9ba7404">&#9670;&#160;</a></span>getText()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString ExecuteFrame::getText </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Gets the current text being displayed. </p>
+<dl class="section return"><dt>Returns</dt><dd>The current text. </dd></dl>
+
+</div>
+</div>
+<a id="a796e8a79e0bc372c47421617bc7c9100" name="a796e8a79e0bc372c47421617bc7c9100"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a796e8a79e0bc372c47421617bc7c9100">&#9670;&#160;</a></span>setImage()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ExecuteFrame::setImage </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>path</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sets the image to be displayed. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">path</td><td>The path to the image file. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a659f12e489dcddf89818a116c1e7f742" name="a659f12e489dcddf89818a116c1e7f742"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a659f12e489dcddf89818a116c1e7f742">&#9670;&#160;</a></span>setText()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ExecuteFrame::setText </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>text</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sets the text to be displayed. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">text</td><td>The text to display. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="execute__frame_8hpp_source.html">execute_frame.hpp</a></li>
+<li><a class="el" href="execute__frame_8cpp.html">execute_frame.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..b63278463c7c33e0c447a7deca77756733bec63b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__coll__graph.map
@@ -0,0 +1,5 @@
+<map id="ExecuteFrame" name="ExecuteFrame">
+<area shape="rect" id="Node000001" title="A custom QFrame that displays an image and text. For logging and task execution." alt="" coords="5,123,130,277"/>
+<area shape="rect" id="Node000002" href="$classQFrame.html" title=" " alt="" coords="39,5,97,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="70,90,70,123,65,123,65,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8eb5ca9d355f332f92a6d6b8d5d3443bc48a469a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__coll__graph.md5
@@ -0,0 +1 @@
+3800badf1b2eb6a62af2403ed9322489
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f71d011bb7756597570ba396954d726e77695ab
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..b63278463c7c33e0c447a7deca77756733bec63b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="ExecuteFrame" name="ExecuteFrame">
+<area shape="rect" id="Node000001" title="A custom QFrame that displays an image and text. For logging and task execution." alt="" coords="5,123,130,277"/>
+<area shape="rect" id="Node000002" href="$classQFrame.html" title=" " alt="" coords="39,5,97,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="70,90,70,123,65,123,65,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8eb5ca9d355f332f92a6d6b8d5d3443bc48a469a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__inherit__graph.md5
@@ -0,0 +1 @@
+3800badf1b2eb6a62af2403ed9322489
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..3f71d011bb7756597570ba396954d726e77695ab
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classExecuteFrame__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..23fcbb85d9d9334304b8c290b0be871ff882d0eb
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment-members.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">LearnEnvironment Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classLearnEnvironment.html">LearnEnvironment</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classLearnEnvironment.html#a25d7b0bd7b4270c7c2feeab3a9450d39">LearnEnvironment</a>(QWidget *parent=0)</td><td class="entry"><a class="el" href="classLearnEnvironment.html">LearnEnvironment</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classLearnEnvironment.html#af0c2b95f5853116a09c795d33eb47d52">load</a>(const rviz::Config &amp;config) override</td><td class="entry"><a class="el" href="classLearnEnvironment.html">LearnEnvironment</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classLearnEnvironment.html#aa684f56e6ba08652e1ddfa47304eb449">save</a>(rviz::Config config) const override</td><td class="entry"><a class="el" href="classLearnEnvironment.html">LearnEnvironment</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classLearnEnvironment.html#ad2086d08e20cef426a861e1093cfc987">~LearnEnvironment</a>()</td><td class="entry"><a class="el" href="classLearnEnvironment.html">LearnEnvironment</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment.html
new file mode 100644
index 0000000000000000000000000000000000000000..df27ca362373d0cacb8f13122fdb5ac2904fc86e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: LearnEnvironment Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classLearnEnvironment-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">LearnEnvironment Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>A custom RViz panel for managing the learning environment.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="learn__environment_8hpp_source.html">learn_environment.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for LearnEnvironment:</div>
+<div class="dyncontent">
+<div class="center"><img src="classLearnEnvironment__inherit__graph.png" border="0" usemap="#aLearnEnvironment_inherit__map" alt="Inheritance graph"/></div>
+<map name="aLearnEnvironment_inherit__map" id="aLearnEnvironment_inherit__map">
+<area shape="rect" title="A custom RViz panel for managing the learning environment." alt="" coords="5,123,150,256"/>
+<area shape="rect" title=" " alt="" coords="42,5,114,75"/>
+<area shape="poly" title=" " alt="" coords="80,90,80,123,75,123,75,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for LearnEnvironment:</div>
+<div class="dyncontent">
+<div class="center"><img src="classLearnEnvironment__coll__graph.png" border="0" usemap="#aLearnEnvironment_coll__map" alt="Collaboration graph"/></div>
+<map name="aLearnEnvironment_coll__map" id="aLearnEnvironment_coll__map">
+<area shape="rect" title="A custom RViz panel for managing the learning environment." alt="" coords="5,123,150,256"/>
+<area shape="rect" title=" " alt="" coords="42,5,114,75"/>
+<area shape="poly" title=" " alt="" coords="80,90,80,123,75,123,75,90"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a25d7b0bd7b4270c7c2feeab3a9450d39" id="r_a25d7b0bd7b4270c7c2feeab3a9450d39"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a25d7b0bd7b4270c7c2feeab3a9450d39">LearnEnvironment</a> (<a class="el" href="classQWidget.html">QWidget</a> *parent=0)</td></tr>
+<tr class="memdesc:a25d7b0bd7b4270c7c2feeab3a9450d39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a <a class="el" href="classLearnEnvironment.html" title="A custom RViz panel for managing the learning environment.">LearnEnvironment</a> object.  <br /></td></tr>
+<tr class="separator:a25d7b0bd7b4270c7c2feeab3a9450d39"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad2086d08e20cef426a861e1093cfc987" id="r_ad2086d08e20cef426a861e1093cfc987"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad2086d08e20cef426a861e1093cfc987">~LearnEnvironment</a> ()</td></tr>
+<tr class="memdesc:ad2086d08e20cef426a861e1093cfc987"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the <a class="el" href="classLearnEnvironment.html" title="A custom RViz panel for managing the learning environment.">LearnEnvironment</a> object.  <br /></td></tr>
+<tr class="separator:ad2086d08e20cef426a861e1093cfc987"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af0c2b95f5853116a09c795d33eb47d52" id="r_af0c2b95f5853116a09c795d33eb47d52"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af0c2b95f5853116a09c795d33eb47d52">load</a> (const rviz::Config &amp;config) override</td></tr>
+<tr class="memdesc:af0c2b95f5853116a09c795d33eb47d52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads user-specific settings.  <br /></td></tr>
+<tr class="separator:af0c2b95f5853116a09c795d33eb47d52"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa684f56e6ba08652e1ddfa47304eb449" id="r_aa684f56e6ba08652e1ddfa47304eb449"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa684f56e6ba08652e1ddfa47304eb449">save</a> (rviz::Config config) const override</td></tr>
+<tr class="memdesc:aa684f56e6ba08652e1ddfa47304eb449"><td class="mdescLeft">&#160;</td><td class="mdescRight">Saves user-specific settings.  <br /></td></tr>
+<tr class="separator:aa684f56e6ba08652e1ddfa47304eb449"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A custom RViz panel for managing the learning environment. </p>
+<p>The <a class="el" href="classLearnEnvironment.html" title="A custom RViz panel for managing the learning environment.">LearnEnvironment</a> class provides a user interface for managing tasks and their execution and evaluation within the learning environment. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a25d7b0bd7b4270c7c2feeab3a9450d39" name="a25d7b0bd7b4270c7c2feeab3a9450d39"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a25d7b0bd7b4270c7c2feeab3a9450d39">&#9670;&#160;</a></span>LearnEnvironment()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">LearnEnvironment::LearnEnvironment </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classQWidget.html">QWidget</a> *</td>          <td class="paramname"><span class="paramname"><em>parent</em></span><span class="paramdefsep"> = </span><span class="paramdefval">0</span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Constructs a <a class="el" href="classLearnEnvironment.html" title="A custom RViz panel for managing the learning environment.">LearnEnvironment</a> object. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">parent</td><td>Pointer to the parent widget. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ad2086d08e20cef426a861e1093cfc987" name="ad2086d08e20cef426a861e1093cfc987"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad2086d08e20cef426a861e1093cfc987">&#9670;&#160;</a></span>~LearnEnvironment()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">LearnEnvironment::~LearnEnvironment </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Destroys the <a class="el" href="classLearnEnvironment.html" title="A custom RViz panel for managing the learning environment.">LearnEnvironment</a> object. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="af0c2b95f5853116a09c795d33eb47d52" name="af0c2b95f5853116a09c795d33eb47d52"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af0c2b95f5853116a09c795d33eb47d52">&#9670;&#160;</a></span>load()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void LearnEnvironment::load </td>
+          <td>(</td>
+          <td class="paramtype">const rviz::Config &amp;</td>          <td class="paramname"><span class="paramname"><em>config</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Loads user-specific settings. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">config</td><td>The RViz configuration object. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="aa684f56e6ba08652e1ddfa47304eb449" name="aa684f56e6ba08652e1ddfa47304eb449"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa684f56e6ba08652e1ddfa47304eb449">&#9670;&#160;</a></span>save()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void LearnEnvironment::save </td>
+          <td>(</td>
+          <td class="paramtype">rviz::Config</td>          <td class="paramname"><span class="paramname"><em>config</em></span></td><td>)</td>
+          <td> const</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">override</span><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Saves user-specific settings. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">config</td><td>The RViz configuration object. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="learn__environment_8hpp_source.html">learn_environment.hpp</a></li>
+<li><a class="el" href="learn__environment_8cpp.html">learn_environment.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..e4b03251b9a23692e15f59cd5d82fafe405f48aa
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__coll__graph.map
@@ -0,0 +1,5 @@
+<map id="LearnEnvironment" name="LearnEnvironment">
+<area shape="rect" id="Node000001" title="A custom RViz panel for managing the learning environment." alt="" coords="5,123,150,256"/>
+<area shape="rect" id="Node000002" title=" " alt="" coords="42,5,114,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="80,90,80,123,75,123,75,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..54c1d307bf7ef5a74d1ca6851cd4d20960c807ac
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__coll__graph.md5
@@ -0,0 +1 @@
+9a849b5d744a3119c5eee22495e3c150
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..ff2bf7d6e967b336daedcb49a3234c49752828b6
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..e4b03251b9a23692e15f59cd5d82fafe405f48aa
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="LearnEnvironment" name="LearnEnvironment">
+<area shape="rect" id="Node000001" title="A custom RViz panel for managing the learning environment." alt="" coords="5,123,150,256"/>
+<area shape="rect" id="Node000002" title=" " alt="" coords="42,5,114,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="80,90,80,123,75,123,75,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..54c1d307bf7ef5a74d1ca6851cd4d20960c807ac
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__inherit__graph.md5
@@ -0,0 +1 @@
+9a849b5d744a3119c5eee22495e3c150
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..ff2bf7d6e967b336daedcb49a3234c49752828b6
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classLearnEnvironment__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..cf775998c5f91db98542f16cecb3242694356a72
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter-members.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">NotebookConverter Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classNotebookConverter.html">NotebookConverter</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classNotebookConverter.html#a8b06d3bc01057ddd936977bded4297f4">convertNotebook</a>(const QString &amp;notebookPath)</td><td class="entry"><a class="el" href="classNotebookConverter.html">NotebookConverter</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classNotebookConverter.html#af64e43c667b96ba0926a715316002665">hasSolutionCells</a>(const QString &amp;notebookPath)</td><td class="entry"><a class="el" href="classNotebookConverter.html">NotebookConverter</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classNotebookConverter.html#a11c8ed4604d4c29acd45d6225d80c464">NotebookConverter</a>(QObject *parent=nullptr)</td><td class="entry"><a class="el" href="classNotebookConverter.html">NotebookConverter</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classNotebookConverter.html#a66b007e49cfe58d279c3ac279ced7213">processTaskPool</a>()</td><td class="entry"><a class="el" href="classNotebookConverter.html">NotebookConverter</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classNotebookConverter.html#aa14fbd73e3cc21866decd2e02572207d">resetNotebook</a>(const QString &amp;notebookPath, const QString &amp;notebookSolutionPath)</td><td class="entry"><a class="el" href="classNotebookConverter.html">NotebookConverter</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classNotebookConverter.html#a665ba1030d993bd9e165fca123d92032">toggleSolution</a>(const QString &amp;filePath, const QString &amp;solutionFilePath)</td><td class="entry"><a class="el" href="classNotebookConverter.html">NotebookConverter</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter.html
new file mode 100644
index 0000000000000000000000000000000000000000..752f3f5043ba941f5de020d5c15bc7dc9cd42d4d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter.html
@@ -0,0 +1,345 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: NotebookConverter Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
+<a href="classNotebookConverter-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">NotebookConverter Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>A class for converting Jupyter notebooks to Python scripts and processing task pools.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="notebook__converter_8hpp_source.html">notebook_converter.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for NotebookConverter:</div>
+<div class="dyncontent">
+<div class="center"><img src="classNotebookConverter__inherit__graph.png" border="0" usemap="#aNotebookConverter_inherit__map" alt="Inheritance graph"/></div>
+<map name="aNotebookConverter_inherit__map" id="aNotebookConverter_inherit__map">
+<area shape="rect" title="A class for converting Jupyter notebooks to Python scripts and processing task pools." alt="" coords="5,123,150,299"/>
+<area shape="rect" href="classQObject.html" title=" " alt="" coords="48,5,107,75"/>
+<area shape="poly" title=" " alt="" coords="80,90,80,123,75,123,75,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for NotebookConverter:</div>
+<div class="dyncontent">
+<div class="center"><img src="classNotebookConverter__coll__graph.png" border="0" usemap="#aNotebookConverter_coll__map" alt="Collaboration graph"/></div>
+<map name="aNotebookConverter_coll__map" id="aNotebookConverter_coll__map">
+<area shape="rect" title="A class for converting Jupyter notebooks to Python scripts and processing task pools." alt="" coords="5,123,150,299"/>
+<area shape="rect" href="classQObject.html" title=" " alt="" coords="48,5,107,75"/>
+<area shape="poly" title=" " alt="" coords="80,90,80,123,75,123,75,90"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a11c8ed4604d4c29acd45d6225d80c464" id="r_a11c8ed4604d4c29acd45d6225d80c464"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a11c8ed4604d4c29acd45d6225d80c464">NotebookConverter</a> (<a class="el" href="classQObject.html">QObject</a> *parent=nullptr)</td></tr>
+<tr class="separator:a11c8ed4604d4c29acd45d6225d80c464"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8b06d3bc01057ddd936977bded4297f4" id="r_a8b06d3bc01057ddd936977bded4297f4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8b06d3bc01057ddd936977bded4297f4">convertNotebook</a> (const QString &amp;notebookPath)</td></tr>
+<tr class="memdesc:a8b06d3bc01057ddd936977bded4297f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Converts a Jupyter notebook to a Python script. Ignoring code cells with "solution" tag.  <br /></td></tr>
+<tr class="separator:a8b06d3bc01057ddd936977bded4297f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a66b007e49cfe58d279c3ac279ced7213" id="r_a66b007e49cfe58d279c3ac279ced7213"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a66b007e49cfe58d279c3ac279ced7213">processTaskPool</a> ()</td></tr>
+<tr class="memdesc:a66b007e49cfe58d279c3ac279ced7213"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modifies and copies all notebooks from task_pool to users workspace.  <br /></td></tr>
+<tr class="separator:a66b007e49cfe58d279c3ac279ced7213"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a665ba1030d993bd9e165fca123d92032" id="r_a665ba1030d993bd9e165fca123d92032"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a665ba1030d993bd9e165fca123d92032">toggleSolution</a> (const QString &amp;filePath, const QString &amp;solutionFilePath)</td></tr>
+<tr class="memdesc:a665ba1030d993bd9e165fca123d92032"><td class="mdescLeft">&#160;</td><td class="mdescRight">Toggles the solution code in a Jupyter notebook.  <br /></td></tr>
+<tr class="separator:a665ba1030d993bd9e165fca123d92032"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa14fbd73e3cc21866decd2e02572207d" id="r_aa14fbd73e3cc21866decd2e02572207d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa14fbd73e3cc21866decd2e02572207d">resetNotebook</a> (const QString &amp;notebookPath, const QString &amp;notebookSolutionPath)</td></tr>
+<tr class="memdesc:aa14fbd73e3cc21866decd2e02572207d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes solution code from a Jupyter notebook.  <br /></td></tr>
+<tr class="separator:aa14fbd73e3cc21866decd2e02572207d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-static-methods" name="pub-static-methods"></a>
+Static Public Member Functions</h2></td></tr>
+<tr class="memitem:af64e43c667b96ba0926a715316002665" id="r_af64e43c667b96ba0926a715316002665"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af64e43c667b96ba0926a715316002665">hasSolutionCells</a> (const QString &amp;notebookPath)</td></tr>
+<tr class="memdesc:af64e43c667b96ba0926a715316002665"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if the notebook contains any solution cells.  <br /></td></tr>
+<tr class="separator:af64e43c667b96ba0926a715316002665"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>A class for converting Jupyter notebooks to Python scripts and processing task pools. </p>
+<p>The <a class="el" href="classNotebookConverter.html" title="A class for converting Jupyter notebooks to Python scripts and processing task pools.">NotebookConverter</a> class provides functionality to convert Jupyter notebooks into Python scripts, ignoring code cells with a "solution" tag. It also processes and modifies notebooks from a task pool, removing solution code and adding metadata tags to indicate modified cells.</p>
+<p>The class includes methods for reading and writing files, parsing JSON content, and processing notebook cells. It ensures that the structure of the notebook is preserved while removing solution code and adding necessary metadata. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a11c8ed4604d4c29acd45d6225d80c464" name="a11c8ed4604d4c29acd45d6225d80c464"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a11c8ed4604d4c29acd45d6225d80c464">&#9670;&#160;</a></span>NotebookConverter()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">NotebookConverter::NotebookConverter </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classQObject.html">QObject</a> *</td>          <td class="paramname"><span class="paramname"><em>parent</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a8b06d3bc01057ddd936977bded4297f4" name="a8b06d3bc01057ddd936977bded4297f4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8b06d3bc01057ddd936977bded4297f4">&#9670;&#160;</a></span>convertNotebook()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool NotebookConverter::convertNotebook </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>notebookPath</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Converts a Jupyter notebook to a Python script. Ignoring code cells with "solution" tag. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">notebookPath</td><td>Path to the notebook file. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>True if conversion is successful, else False. </dd></dl>
+
+</div>
+</div>
+<a id="af64e43c667b96ba0926a715316002665" name="af64e43c667b96ba0926a715316002665"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af64e43c667b96ba0926a715316002665">&#9670;&#160;</a></span>hasSolutionCells()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool NotebookConverter::hasSolutionCells </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>notebookPath</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Checks if the notebook contains any solution cells. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">notebookPath</td><td>Path to the notebook file. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>True if solution cells are present, else False. </dd></dl>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.png" border="0" usemap="#aclassNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph" alt=""/></div>
+<map name="aclassNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph" id="aclassNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph">
+<area shape="rect" title="Checks if the notebook contains any solution cells." alt="" coords="435,5,577,48"/>
+<area shape="rect" href="classSubtaskItem.html#a005df51b50001f3e9c95652e845cf424" title="Updates the UI elements based on the subtask&#39;s status." alt="" coords="231,13,387,40"/>
+<area shape="poly" title=" " alt="" coords="419,29,388,29,388,24,419,24"/>
+<area shape="rect" href="classSubtaskItem.html#a63e6bb32b434cf04705924c3e2cdd0db" title="Constructs a SubtaskItem object." alt="" coords="5,13,183,40"/>
+<area shape="poly" title=" " alt="" coords="215,29,183,29,183,24,215,24"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="a66b007e49cfe58d279c3ac279ced7213" name="a66b007e49cfe58d279c3ac279ced7213"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a66b007e49cfe58d279c3ac279ced7213">&#9670;&#160;</a></span>processTaskPool()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void NotebookConverter::processTaskPool </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Modifies and copies all notebooks from task_pool to users workspace. </p>
+
+</div>
+</div>
+<a id="aa14fbd73e3cc21866decd2e02572207d" name="aa14fbd73e3cc21866decd2e02572207d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa14fbd73e3cc21866decd2e02572207d">&#9670;&#160;</a></span>resetNotebook()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void NotebookConverter::resetNotebook </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>notebookPath</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>notebookSolutionPath</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Removes solution code from a Jupyter notebook. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">notebookPath</td><td>Path to the notebook file. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a665ba1030d993bd9e165fca123d92032" name="a665ba1030d993bd9e165fca123d92032"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a665ba1030d993bd9e165fca123d92032">&#9670;&#160;</a></span>toggleSolution()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void NotebookConverter::toggleSolution </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>filePath</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>solutionFilePath</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Toggles the solution code in a Jupyter notebook. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">filePath</td><td>Path to the notebook file. </td></tr>
+    <tr><td class="paramname">solutionFilePath</td><td>Path to the solution notebook file. </td></tr>
+  </table>
+  </dd>
+</dl>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.png" border="0" usemap="#aclassNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph" alt=""/></div>
+<map name="aclassNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph" id="aclassNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph">
+<area shape="rect" title="Toggles the solution code in a Jupyter notebook." alt="" coords="243,5,385,48"/>
+<area shape="rect" href="classTaskManager.html#a9f3de937346f77e565d555a59a8a0da0" title="Show or hide the solution of a subtask." alt="" coords="5,13,195,40"/>
+<area shape="poly" title=" " alt="" coords="227,29,195,29,195,24,227,24"/>
+</map>
+</div>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="notebook__converter_8hpp_source.html">notebook_converter.hpp</a></li>
+<li><a class="el" href="notebook__converter_8cpp.html">notebook_converter.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..13e556e09446ea2094705d8492570ab1a1524dae
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__coll__graph.map
@@ -0,0 +1,5 @@
+<map id="NotebookConverter" name="NotebookConverter">
+<area shape="rect" id="Node000001" title="A class for converting Jupyter notebooks to Python scripts and processing task pools." alt="" coords="5,123,150,299"/>
+<area shape="rect" id="Node000002" href="$classQObject.html" title=" " alt="" coords="48,5,107,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="80,90,80,123,75,123,75,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..d1d04bad69278326445847ed28a9cf1fe47de5f4
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__coll__graph.md5
@@ -0,0 +1 @@
+096124c4d494e847b78b6f6e9ba39ca1
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc20e000b2851f116b1978ca1ed485d1e7bf641b
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..13e556e09446ea2094705d8492570ab1a1524dae
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="NotebookConverter" name="NotebookConverter">
+<area shape="rect" id="Node000001" title="A class for converting Jupyter notebooks to Python scripts and processing task pools." alt="" coords="5,123,150,299"/>
+<area shape="rect" id="Node000002" href="$classQObject.html" title=" " alt="" coords="48,5,107,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="80,90,80,123,75,123,75,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..d1d04bad69278326445847ed28a9cf1fe47de5f4
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__inherit__graph.md5
@@ -0,0 +1 @@
+096124c4d494e847b78b6f6e9ba39ca1
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..fc20e000b2851f116b1978ca1ed485d1e7bf641b
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..315d79437003f4e134a794679a478bcafacbd5a5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.map
@@ -0,0 +1,5 @@
+<map id="NotebookConverter::toggleSolution" name="NotebookConverter::toggleSolution">
+<area shape="rect" id="Node000001" title="Toggles the solution code in a Jupyter notebook." alt="" coords="243,5,385,48"/>
+<area shape="rect" id="Node000002" href="$classTaskManager.html#a9f3de937346f77e565d555a59a8a0da0" title="Show or hide the solution of a subtask." alt="" coords="5,13,195,40"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="227,29,195,29,195,24,227,24"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..4db43d96639765b4a84fa51fee8ee989c7e40bf1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.md5
@@ -0,0 +1 @@
+f53c90a6df406c60bae8c7d41f7b99fe
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..b463bfd9f1049adb536e17a45bae80c2853b4831
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..36e63fbfd3b84ed062614794dc6a5d41eeaf2631
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.map
@@ -0,0 +1,7 @@
+<map id="NotebookConverter::hasSolutionCells" name="NotebookConverter::hasSolutionCells">
+<area shape="rect" id="Node000001" title="Checks if the notebook contains any solution cells." alt="" coords="435,5,577,48"/>
+<area shape="rect" id="Node000002" href="$classSubtaskItem.html#a005df51b50001f3e9c95652e845cf424" title="Updates the UI elements based on the subtask&#39;s status." alt="" coords="231,13,387,40"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="419,29,388,29,388,24,419,24"/>
+<area shape="rect" id="Node000003" href="$classSubtaskItem.html#a63e6bb32b434cf04705924c3e2cdd0db" title="Constructs a SubtaskItem object." alt="" coords="5,13,183,40"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="215,29,183,29,183,24,215,24"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..6b81bdf25616c40ec98b0e273b1742422838f89f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.md5
@@ -0,0 +1 @@
+d6afc1b15eac4c7b75c1175be3852b6a
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c5cc483c4bedc2fa82cac30e215ac222bb21403
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..1abc9c515e1c6860f4e598a9499607597d2ee61f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner-members.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">ProcessRunner Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classProcessRunner.html">ProcessRunner</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classProcessRunner.html#a9ad2c856469a7129c905721309620e05">errorReady</a>(const QString &amp;error)</td><td class="entry"><a class="el" href="classProcessRunner.html">ProcessRunner</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classProcessRunner.html#a76c6897c0cf00b9034e6deb9662debbf">finished</a>(int exitCode, QProcess::ExitStatus exitStatus)</td><td class="entry"><a class="el" href="classProcessRunner.html">ProcessRunner</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classProcessRunner.html#abb4be6a4283702e38a9eb7d51438efb6">forceStop</a>()</td><td class="entry"><a class="el" href="classProcessRunner.html">ProcessRunner</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classProcessRunner.html#ad6840bbd9e54b7c6a0678dc9c5c792d7">outputReady</a>(const QString &amp;output)</td><td class="entry"><a class="el" href="classProcessRunner.html">ProcessRunner</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classProcessRunner.html#a8d3ba848e57c03660af7c68dcfd7e904">ProcessRunner</a>(const QString &amp;program, const QStringList &amp;arguments, int timeoutSeconds, QObject *parent=nullptr, QString processName=&quot;process&quot;)</td><td class="entry"><a class="el" href="classProcessRunner.html">ProcessRunner</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classProcessRunner.html#ae69a94ddf835cec0a63fe7f4fdb61934">start</a>()</td><td class="entry"><a class="el" href="classProcessRunner.html">ProcessRunner</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classProcessRunner.html#ae42c9c4e04890fffa674e06eedf631b3">timeout</a>()</td><td class="entry"><a class="el" href="classProcessRunner.html">ProcessRunner</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner.html
new file mode 100644
index 0000000000000000000000000000000000000000..feb8a4eb148667b86aac6401587097bec5ee4af3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner.html
@@ -0,0 +1,444 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: ProcessRunner Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#pub-slots">Public Slots</a> &#124;
+<a href="#signals">Signals</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classProcessRunner-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">ProcessRunner Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Manages the execution of an external process with a timeout.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="process__runner_8hpp_source.html">process_runner.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for ProcessRunner:</div>
+<div class="dyncontent">
+<div class="center"><img src="classProcessRunner__inherit__graph.png" border="0" usemap="#aProcessRunner_inherit__map" alt="Inheritance graph"/></div>
+<map name="aProcessRunner_inherit__map" id="aProcessRunner_inherit__map">
+<area shape="rect" title="Manages the execution of an external process with a timeout." alt="" coords="5,123,127,235"/>
+<area shape="rect" href="classQObject.html" title=" " alt="" coords="37,5,96,75"/>
+<area shape="poly" title=" " alt="" coords="69,90,69,123,64,123,64,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for ProcessRunner:</div>
+<div class="dyncontent">
+<div class="center"><img src="classProcessRunner__coll__graph.png" border="0" usemap="#aProcessRunner_coll__map" alt="Collaboration graph"/></div>
+<map name="aProcessRunner_coll__map" id="aProcessRunner_coll__map">
+<area shape="rect" title="Manages the execution of an external process with a timeout." alt="" coords="5,123,127,235"/>
+<area shape="rect" href="classQObject.html" title=" " alt="" coords="37,5,96,75"/>
+<area shape="poly" title=" " alt="" coords="69,90,69,123,64,123,64,90"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-slots" name="pub-slots"></a>
+Public Slots</h2></td></tr>
+<tr class="memitem:abb4be6a4283702e38a9eb7d51438efb6" id="r_abb4be6a4283702e38a9eb7d51438efb6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abb4be6a4283702e38a9eb7d51438efb6">forceStop</a> ()</td></tr>
+<tr class="memdesc:abb4be6a4283702e38a9eb7d51438efb6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forces the stop of the running process.  <br /></td></tr>
+<tr class="separator:abb4be6a4283702e38a9eb7d51438efb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="signals" name="signals"></a>
+Signals</h2></td></tr>
+<tr class="memitem:a76c6897c0cf00b9034e6deb9662debbf" id="r_a76c6897c0cf00b9034e6deb9662debbf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a76c6897c0cf00b9034e6deb9662debbf">finished</a> (int exitCode, QProcess::ExitStatus exitStatus)</td></tr>
+<tr class="memdesc:a76c6897c0cf00b9034e6deb9662debbf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when the process finishes.  <br /></td></tr>
+<tr class="separator:a76c6897c0cf00b9034e6deb9662debbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad6840bbd9e54b7c6a0678dc9c5c792d7" id="r_ad6840bbd9e54b7c6a0678dc9c5c792d7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad6840bbd9e54b7c6a0678dc9c5c792d7">outputReady</a> (const QString &amp;output)</td></tr>
+<tr class="memdesc:ad6840bbd9e54b7c6a0678dc9c5c792d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when the process produces output.  <br /></td></tr>
+<tr class="separator:ad6840bbd9e54b7c6a0678dc9c5c792d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9ad2c856469a7129c905721309620e05" id="r_a9ad2c856469a7129c905721309620e05"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9ad2c856469a7129c905721309620e05">errorReady</a> (const QString &amp;error)</td></tr>
+<tr class="memdesc:a9ad2c856469a7129c905721309620e05"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when the process produces an error.  <br /></td></tr>
+<tr class="separator:a9ad2c856469a7129c905721309620e05"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae42c9c4e04890fffa674e06eedf631b3" id="r_ae42c9c4e04890fffa674e06eedf631b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae42c9c4e04890fffa674e06eedf631b3">timeout</a> ()</td></tr>
+<tr class="memdesc:ae42c9c4e04890fffa674e06eedf631b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when the process times out.  <br /></td></tr>
+<tr class="separator:ae42c9c4e04890fffa674e06eedf631b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a8d3ba848e57c03660af7c68dcfd7e904" id="r_a8d3ba848e57c03660af7c68dcfd7e904"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8d3ba848e57c03660af7c68dcfd7e904">ProcessRunner</a> (const QString &amp;program, const QStringList &amp;arguments, int timeoutSeconds, <a class="el" href="classQObject.html">QObject</a> *parent=nullptr, QString processName=&quot;process&quot;)</td></tr>
+<tr class="memdesc:a8d3ba848e57c03660af7c68dcfd7e904"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a <a class="el" href="classProcessRunner.html" title="Manages the execution of an external process with a timeout.">ProcessRunner</a> object.  <br /></td></tr>
+<tr class="separator:a8d3ba848e57c03660af7c68dcfd7e904"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae69a94ddf835cec0a63fe7f4fdb61934" id="r_ae69a94ddf835cec0a63fe7f4fdb61934"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae69a94ddf835cec0a63fe7f4fdb61934">start</a> ()</td></tr>
+<tr class="memdesc:ae69a94ddf835cec0a63fe7f4fdb61934"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts the execution of the process.  <br /></td></tr>
+<tr class="separator:ae69a94ddf835cec0a63fe7f4fdb61934"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Manages the execution of an external process with a timeout. </p>
+<p>The <a class="el" href="classProcessRunner.html" title="Manages the execution of an external process with a timeout.">ProcessRunner</a> class is responsible for starting an external process, capturing its output and errors, and enforcing a timeout for its execution. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a8d3ba848e57c03660af7c68dcfd7e904" name="a8d3ba848e57c03660af7c68dcfd7e904"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8d3ba848e57c03660af7c68dcfd7e904">&#9670;&#160;</a></span>ProcessRunner()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ProcessRunner::ProcessRunner </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>program</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QStringList &amp;</td>          <td class="paramname"><span class="paramname"><em>arguments</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>timeoutSeconds</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classQObject.html">QObject</a> *</td>          <td class="paramname"><span class="paramname"><em>parent</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">QString</td>          <td class="paramname"><span class="paramname"><em>processName</em></span><span class="paramdefsep"> = </span><span class="paramdefval">&quot;process&quot;</span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Constructs a <a class="el" href="classProcessRunner.html" title="Manages the execution of an external process with a timeout.">ProcessRunner</a> object. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">program</td><td>The program to be executed. </td></tr>
+    <tr><td class="paramname">arguments</td><td>The arguments to be passed to the program. </td></tr>
+    <tr><td class="paramname">timeoutSeconds</td><td>The timeout for the process execution in seconds. </td></tr>
+    <tr><td class="paramname">parent</td><td>Pointer to the parent <a class="el" href="classQObject.html">QObject</a>. </td></tr>
+    <tr><td class="paramname">processName</td><td>The name of the process (for logging purposes). </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a9ad2c856469a7129c905721309620e05" name="a9ad2c856469a7129c905721309620e05"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9ad2c856469a7129c905721309620e05">&#9670;&#160;</a></span>errorReady</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ProcessRunner::errorReady </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>error</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when the process produces an error. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">error</td><td>The error produced by the process. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a76c6897c0cf00b9034e6deb9662debbf" name="a76c6897c0cf00b9034e6deb9662debbf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a76c6897c0cf00b9034e6deb9662debbf">&#9670;&#160;</a></span>finished</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ProcessRunner::finished </td>
+          <td>(</td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>exitCode</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">QProcess::ExitStatus</td>          <td class="paramname"><span class="paramname"><em>exitStatus</em></span>&#160;)</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when the process finishes. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">exitCode</td><td>The exit code of the process. </td></tr>
+    <tr><td class="paramname">exitStatus</td><td>The exit status of the process. </td></tr>
+  </table>
+  </dd>
+</dl>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.png" border="0" usemap="#aclassProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph" alt=""/></div>
+<map name="aclassProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph" id="aclassProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph">
+<area shape="rect" title="Signal emitted when the process finishes." alt="" coords="720,13,885,40"/>
+<area shape="rect" href="classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523" title="Executes a given Python script." alt="" coords="481,5,672,48"/>
+<area shape="poly" title=" " alt="" coords="705,29,673,29,673,24,705,24"/>
+<area shape="rect" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="260,13,433,40"/>
+<area shape="poly" title=" " alt="" coords="466,29,434,29,434,24,466,24"/>
+<area shape="rect" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,13,212,40"/>
+<area shape="poly" title=" " alt="" coords="244,29,212,29,212,24,244,24"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="abb4be6a4283702e38a9eb7d51438efb6" name="abb4be6a4283702e38a9eb7d51438efb6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abb4be6a4283702e38a9eb7d51438efb6">&#9670;&#160;</a></span>forceStop</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ProcessRunner::forceStop </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Forces the stop of the running process. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.png" border="0" usemap="#aclassProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph" alt=""/></div>
+<map name="aclassProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph" id="aclassProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph">
+<area shape="rect" title="Forces the stop of the running process." alt="" coords="214,5,389,32"/>
+<area shape="rect" href="classScriptWorker.html#aafadef7996317ca83dcb2605777affe2" title="Forces the stop of all running scripts." alt="" coords="5,5,166,32"/>
+<area shape="poly" title=" " alt="" coords="198,21,166,21,166,16,198,16"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="ad6840bbd9e54b7c6a0678dc9c5c792d7" name="ad6840bbd9e54b7c6a0678dc9c5c792d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad6840bbd9e54b7c6a0678dc9c5c792d7">&#9670;&#160;</a></span>outputReady</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ProcessRunner::outputReady </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>output</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when the process produces output. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">output</td><td>The output produced by the process. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ae69a94ddf835cec0a63fe7f4fdb61934" name="ae69a94ddf835cec0a63fe7f4fdb61934"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae69a94ddf835cec0a63fe7f4fdb61934">&#9670;&#160;</a></span>start()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ProcessRunner::start </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Starts the execution of the process. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.png" border="0" usemap="#aclassProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph" alt=""/></div>
+<map name="aclassProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph" id="aclassProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph">
+<area shape="rect" title="Starts the execution of the process." alt="" coords="720,13,866,40"/>
+<area shape="rect" href="classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523" title="Executes a given Python script." alt="" coords="481,5,672,48"/>
+<area shape="poly" title=" " alt="" coords="705,29,673,29,673,24,705,24"/>
+<area shape="rect" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="260,13,433,40"/>
+<area shape="poly" title=" " alt="" coords="466,29,434,29,434,24,466,24"/>
+<area shape="rect" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,13,212,40"/>
+<area shape="poly" title=" " alt="" coords="244,29,212,29,212,24,244,24"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="ae42c9c4e04890fffa674e06eedf631b3" name="ae42c9c4e04890fffa674e06eedf631b3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae42c9c4e04890fffa674e06eedf631b3">&#9670;&#160;</a></span>timeout</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ProcessRunner::timeout </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when the process times out. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.png" border="0" usemap="#aclassProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph" alt=""/></div>
+<map name="aclassProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph" id="aclassProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph">
+<area shape="rect" title="Signal emitted when the process times out." alt="" coords="720,13,883,40"/>
+<area shape="rect" href="classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523" title="Executes a given Python script." alt="" coords="481,5,672,48"/>
+<area shape="poly" title=" " alt="" coords="705,29,673,29,673,24,705,24"/>
+<area shape="rect" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="260,13,433,40"/>
+<area shape="poly" title=" " alt="" coords="466,29,434,29,434,24,466,24"/>
+<area shape="rect" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,13,212,40"/>
+<area shape="poly" title=" " alt="" coords="244,29,212,29,212,24,244,24"/>
+</map>
+</div>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="process__runner_8hpp_source.html">process_runner.hpp</a></li>
+<li><a class="el" href="process__runner_8cpp.html">process_runner.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..bb3332bca589bddc0468f93ba40c1129a7bcfea4
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__coll__graph.map
@@ -0,0 +1,5 @@
+<map id="ProcessRunner" name="ProcessRunner">
+<area shape="rect" id="Node000001" title="Manages the execution of an external process with a timeout." alt="" coords="5,123,127,235"/>
+<area shape="rect" id="Node000002" href="$classQObject.html" title=" " alt="" coords="37,5,96,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="69,90,69,123,64,123,64,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..29e1480e3bff5456c7ffb12e84fa4bacf9c77ebb
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__coll__graph.md5
@@ -0,0 +1 @@
+5c17410ed3d57358ee6cc9be707f9410
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..918a64b54559f4776dc533da7263a913c92b93dc
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..bb3332bca589bddc0468f93ba40c1129a7bcfea4
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="ProcessRunner" name="ProcessRunner">
+<area shape="rect" id="Node000001" title="Manages the execution of an external process with a timeout." alt="" coords="5,123,127,235"/>
+<area shape="rect" id="Node000002" href="$classQObject.html" title=" " alt="" coords="37,5,96,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="69,90,69,123,64,123,64,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..29e1480e3bff5456c7ffb12e84fa4bacf9c77ebb
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__inherit__graph.md5
@@ -0,0 +1 @@
+5c17410ed3d57358ee6cc9be707f9410
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..918a64b54559f4776dc533da7263a913c92b93dc
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..9a53a7425e9d7da8e34ffe6c1a5e126731a5589f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.map
@@ -0,0 +1,9 @@
+<map id="ProcessRunner::finished" name="ProcessRunner::finished">
+<area shape="rect" id="Node000001" title="Signal emitted when the process finishes." alt="" coords="720,13,885,40"/>
+<area shape="rect" id="Node000002" href="$classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523" title="Executes a given Python script." alt="" coords="481,5,672,48"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="705,29,673,29,673,24,705,24"/>
+<area shape="rect" id="Node000003" href="$classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="260,13,433,40"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="466,29,434,29,434,24,466,24"/>
+<area shape="rect" id="Node000004" href="$classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,13,212,40"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="244,29,212,29,212,24,244,24"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..60ccb004ede40cefed86d9fc232710595f7539d1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.md5
@@ -0,0 +1 @@
+6182e95af34360863e462e0692017776
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..20dd280f4992ed702e642a092ef432e2816f7d1f
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..3059d9c3c468a98c5f9f7a6fcd2d40eb33e21353
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.map
@@ -0,0 +1,5 @@
+<map id="ProcessRunner::forceStop" name="ProcessRunner::forceStop">
+<area shape="rect" id="Node000001" title="Forces the stop of the running process." alt="" coords="214,5,389,32"/>
+<area shape="rect" id="Node000002" href="$classScriptWorker.html#aafadef7996317ca83dcb2605777affe2" title="Forces the stop of all running scripts." alt="" coords="5,5,166,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="198,21,166,21,166,16,198,16"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..7517ac3e5c26037486ac4742d5447d80559d2627
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.md5
@@ -0,0 +1 @@
+91f9263563fa01073eacb4b5aa313448
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..56cd7f86938d45a313f5917115e34c22a049e63a
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..366e64f18dc4bc0a3a779168c823e2720a29cf4d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.map
@@ -0,0 +1,9 @@
+<map id="ProcessRunner::timeout" name="ProcessRunner::timeout">
+<area shape="rect" id="Node000001" title="Signal emitted when the process times out." alt="" coords="720,13,883,40"/>
+<area shape="rect" id="Node000002" href="$classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523" title="Executes a given Python script." alt="" coords="481,5,672,48"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="705,29,673,29,673,24,705,24"/>
+<area shape="rect" id="Node000003" href="$classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="260,13,433,40"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="466,29,434,29,434,24,466,24"/>
+<area shape="rect" id="Node000004" href="$classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,13,212,40"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="244,29,212,29,212,24,244,24"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..bbf52c52ac1cdcd8728e62dd23b4411cce402e75
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.md5
@@ -0,0 +1 @@
+3902565b5d2a26b97df3acc24df14eae
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..b05e8f8952a4e91c2e5b3d47b5bb30bee3950222
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..c64ecea88d67a8f68635c57724d252547de600c3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.map
@@ -0,0 +1,9 @@
+<map id="ProcessRunner::start" name="ProcessRunner::start">
+<area shape="rect" id="Node000001" title="Starts the execution of the process." alt="" coords="720,13,866,40"/>
+<area shape="rect" id="Node000002" href="$classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523" title="Executes a given Python script." alt="" coords="481,5,672,48"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="705,29,673,29,673,24,705,24"/>
+<area shape="rect" id="Node000003" href="$classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="260,13,433,40"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="466,29,434,29,434,24,466,24"/>
+<area shape="rect" id="Node000004" href="$classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,13,212,40"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="244,29,212,29,212,24,244,24"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..bcf5a250c52254bbe49307ed57231c862b3201b5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.md5
@@ -0,0 +1 @@
+d42e2db84937d78b1f05e916e80c5f6b
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..5138a24b166a55df56975134f60c0300cf51beed
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame.html
new file mode 100644
index 0000000000000000000000000000000000000000..8d258bd4a1c588f7a060958a00949fc02a12eb71
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: QFrame Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">QFrame Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for QFrame:</div>
+<div class="dyncontent">
+<div class="center"><img src="classQFrame__inherit__graph.png" border="0" usemap="#aQFrame_inherit__map" alt="Inheritance graph"/></div>
+<map name="aQFrame_inherit__map" id="aQFrame_inherit__map">
+<area shape="rect" title=" " alt="" coords="39,5,97,75"/>
+<area shape="rect" href="classExecuteFrame.html" title="A custom QFrame that displays an image and text. For logging and task execution." alt="" coords="5,123,130,277"/>
+<area shape="poly" title=" " alt="" coords="70,90,70,123,65,123,65,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for QFrame:</div>
+<div class="dyncontent">
+<div class="center"><img src="classQFrame__coll__graph.png" border="0" usemap="#aQFrame_coll__map" alt="Collaboration graph"/></div>
+<map name="aQFrame_coll__map" id="aQFrame_coll__map">
+<area shape="rect" title=" " alt="" coords="5,5,63,75"/>
+</map>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="execute__frame_8hpp_source.html">execute_frame.hpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..830b79702102a7984b308b1b03394f3222c58d2b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__coll__graph.map
@@ -0,0 +1,3 @@
+<map id="QFrame" name="QFrame">
+<area shape="rect" id="Node000001" title=" " alt="" coords="5,5,63,75"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..28ddd84a302ad3616b3280e535dfb77f89fffdec
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__coll__graph.md5
@@ -0,0 +1 @@
+88e3ffb97a0279696e7d21c1dbe1cbe7
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..f56ed50d10bb0196613f6c137413583c25ad4a7a
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..c48f1357f798863d646255e223f3e51a698dbab1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="QFrame" name="QFrame">
+<area shape="rect" id="Node000001" title=" " alt="" coords="39,5,97,75"/>
+<area shape="rect" id="Node000002" href="$classExecuteFrame.html" title="A custom QFrame that displays an image and text. For logging and task execution." alt="" coords="5,123,130,277"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="70,90,70,123,65,123,65,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..d533d565833d575c67142ce5a26520cc9a2bcad8
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__inherit__graph.md5
@@ -0,0 +1 @@
+84e1710e263e4205692950e026d7f7e5
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..cbd43676a720fff1576abcba072303eaf0ec7d69
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQFrame__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget.html
new file mode 100644
index 0000000000000000000000000000000000000000..e5d032b86457fdd536c4f06b7d3cbf195cdff469
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: QListWidget Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">QListWidget Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for QListWidget:</div>
+<div class="dyncontent">
+<div class="center"><img src="classQListWidget__inherit__graph.png" border="0" usemap="#aQListWidget_inherit__map" alt="Inheritance graph"/></div>
+<map name="aQListWidget_inherit__map" id="aQListWidget_inherit__map">
+<area shape="rect" title=" " alt="" coords="34,5,117,75"/>
+<area shape="rect" href="classCustomListWidget.html" title="A custom QListWidget with enhanced mouse interaction." alt="" coords="5,123,145,235"/>
+<area shape="poly" title=" " alt="" coords="78,90,78,123,73,123,73,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for QListWidget:</div>
+<div class="dyncontent">
+<div class="center"><img src="classQListWidget__coll__graph.png" border="0" usemap="#aQListWidget_coll__map" alt="Collaboration graph"/></div>
+<map name="aQListWidget_coll__map" id="aQListWidget_coll__map">
+<area shape="rect" title=" " alt="" coords="5,5,88,75"/>
+</map>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="custom__list__widget_8hpp_source.html">custom_list_widget.hpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..300dad1836e1ba73f8f79144ac15ce60a811d0d9
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__coll__graph.map
@@ -0,0 +1,3 @@
+<map id="QListWidget" name="QListWidget">
+<area shape="rect" id="Node000001" title=" " alt="" coords="5,5,88,75"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..d0e09c6a4dca8f4395f4a5cd9eb842c60c24a9b8
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__coll__graph.md5
@@ -0,0 +1 @@
+11f6a474f77772651b2c8bcc79be5b66
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b1218aff3e1aa87380d500e9b1640431d36aae1
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..2afd717d456c0c30cb077f55967c013d68199b71
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="QListWidget" name="QListWidget">
+<area shape="rect" id="Node000001" title=" " alt="" coords="34,5,117,75"/>
+<area shape="rect" id="Node000002" href="$classCustomListWidget.html" title="A custom QListWidget with enhanced mouse interaction." alt="" coords="5,123,145,235"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="78,90,78,123,73,123,73,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..d1f2066aabcddfe9d85e47487723ee8a1cadf234
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__inherit__graph.md5
@@ -0,0 +1 @@
+5272ab57d963b3b94d5470f28cdc2652
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..eec2c1be8378807186fc3782095a6d658f6db8cd
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQListWidget__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject.html
new file mode 100644
index 0000000000000000000000000000000000000000..79c6c312e5b07fd1b803d24c7c437ac7a7ec2297
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: QObject Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">QObject Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for QObject:</div>
+<div class="dyncontent">
+<div class="center"><img src="classQObject__inherit__graph.png" border="0" usemap="#aQObject_inherit__map" alt="Inheritance graph"/></div>
+<map name="aQObject_inherit__map" id="aQObject_inherit__map">
+<area shape="rect" title=" " alt="" coords="367,5,426,75"/>
+<area shape="rect" href="classNotebookConverter.html" title="A class for converting Jupyter notebooks to Python scripts and processing task pools." alt="" coords="5,144,150,320"/>
+<area shape="poly" title=" " alt="" coords="353,51,261,76,210,97,163,125,139,146,135,142,160,121,208,92,259,71,352,46"/>
+<area shape="rect" href="classProcessRunner.html" title="Manages the execution of an external process with a timeout." alt="" coords="174,176,296,288"/>
+<area shape="poly" title=" " alt="" coords="358,77,311,124,271,178,267,175,306,121,354,74"/>
+<area shape="rect" href="classScriptWorker.html" title="Manages the execution of scripts for tasks." alt="" coords="320,165,473,299"/>
+<area shape="poly" title=" " alt="" coords="399,89,399,166,394,166,394,89"/>
+<area shape="rect" href="classTaskExecutor.html" title="Executes tasks and manages their execution state." alt="" coords="496,165,608,299"/>
+<area shape="poly" title=" " alt="" coords="439,73,487,121,517,164,513,167,482,124,435,77"/>
+<area shape="rect" href="classTaskManager.html" title="Manages tasks and their execution within the application." alt="" coords="633,123,766,341"/>
+<area shape="poly" title=" " alt="" coords="441,47,529,72,577,93,622,121,635,131,631,135,619,125,575,98,527,77,439,52"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for QObject:</div>
+<div class="dyncontent">
+<div class="center"><img src="classQObject__coll__graph.png" border="0" usemap="#aQObject_coll__map" alt="Collaboration graph"/></div>
+<map name="aQObject_coll__map" id="aQObject_coll__map">
+<area shape="rect" title=" " alt="" coords="5,5,64,75"/>
+</map>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="notebook__converter_8hpp_source.html">notebook_converter.hpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..acd74455dd6d28d9eb897456ec129b245f6f9caf
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__coll__graph.map
@@ -0,0 +1,3 @@
+<map id="QObject" name="QObject">
+<area shape="rect" id="Node000001" title=" " alt="" coords="5,5,64,75"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..df3b3c20cf725062c155f7a58d7fd03e18df4ebc
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__coll__graph.md5
@@ -0,0 +1 @@
+4b9701d76c858c6cd926ca252736ae98
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb279adb0f1c04b0fbe66a4f71f86bf62143d5e3
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..955dab6642a23a1b8e5e66050ca1a3e4b692255a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__inherit__graph.map
@@ -0,0 +1,13 @@
+<map id="QObject" name="QObject">
+<area shape="rect" id="Node000001" title=" " alt="" coords="367,5,426,75"/>
+<area shape="rect" id="Node000002" href="$classNotebookConverter.html" title="A class for converting Jupyter notebooks to Python scripts and processing task pools." alt="" coords="5,144,150,320"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="353,51,261,76,210,97,163,125,139,146,135,142,160,121,208,92,259,71,352,46"/>
+<area shape="rect" id="Node000003" href="$classProcessRunner.html" title="Manages the execution of an external process with a timeout." alt="" coords="174,176,296,288"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="358,77,311,124,271,178,267,175,306,121,354,74"/>
+<area shape="rect" id="Node000004" href="$classScriptWorker.html" title="Manages the execution of scripts for tasks." alt="" coords="320,165,473,299"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="399,89,399,166,394,166,394,89"/>
+<area shape="rect" id="Node000005" href="$classTaskExecutor.html" title="Executes tasks and manages their execution state." alt="" coords="496,165,608,299"/>
+<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="439,73,487,121,517,164,513,167,482,124,435,77"/>
+<area shape="rect" id="Node000006" href="$classTaskManager.html" title="Manages tasks and their execution within the application." alt="" coords="633,123,766,341"/>
+<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="441,47,529,72,577,93,622,121,635,131,631,135,619,125,575,98,527,77,439,52"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..c3175e90eb1ec2559ca5f03faedcb4b32cbf774c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__inherit__graph.md5
@@ -0,0 +1 @@
+a20bb643aa173272ed224e5647f921eb
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..e494720788f92b43847c69768db1d92eee78abf3
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQObject__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget.html
new file mode 100644
index 0000000000000000000000000000000000000000..a230ed4ebe2bc56472e53a4d50dbd0e5b36eac46
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: QWidget Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">QWidget Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Inheritance diagram for QWidget:</div>
+<div class="dyncontent">
+<div class="center"><img src="classQWidget__inherit__graph.png" border="0" usemap="#aQWidget_inherit__map" alt="Inheritance graph"/></div>
+<map name="aQWidget_inherit__map" id="aQWidget_inherit__map">
+<area shape="rect" title=" " alt="" coords="214,5,276,75"/>
+<area shape="rect" href="classSidebar.html" title="Represents the sidebar UI component for displaying tasks." alt="" coords="5,176,156,288"/>
+<area shape="poly" title=" " alt="" coords="206,86,171,124,126,178,122,175,167,121,202,82"/>
+<area shape="rect" href="classSubtaskItem.html" title="Represents a UI item for a subtask." alt="" coords="181,176,309,288"/>
+<area shape="poly" title=" " alt="" coords="248,89,248,176,242,176,242,89"/>
+<area shape="rect" href="classTaskUI.html" title="Manages the user interface for tasks and subtasks." alt="" coords="332,123,498,341"/>
+<area shape="poly" title=" " alt="" coords="288,83,323,121,335,134,331,137,319,124,284,86"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for QWidget:</div>
+<div class="dyncontent">
+<div class="center"><img src="classQWidget__coll__graph.png" border="0" usemap="#aQWidget_coll__map" alt="Collaboration graph"/></div>
+<map name="aQWidget_coll__map" id="aQWidget_coll__map">
+<area shape="rect" title=" " alt="" coords="5,5,67,75"/>
+</map>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="sidebar_8hpp_source.html">sidebar.hpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..67c9860f4ddcf73cd71d2db201da02cc7ed4e237
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__coll__graph.map
@@ -0,0 +1,3 @@
+<map id="QWidget" name="QWidget">
+<area shape="rect" id="Node000001" title=" " alt="" coords="5,5,67,75"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..14668a0e207f8f08a9f40c10a203972371f826fe
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__coll__graph.md5
@@ -0,0 +1 @@
+114d46afc5526c7744767d24e6a138ad
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..20f6075a3000c99b85d72759029fe3380832450a
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..cf70592c44bdfc3d6b9b4345451f86f05b4a67e3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__inherit__graph.map
@@ -0,0 +1,9 @@
+<map id="QWidget" name="QWidget">
+<area shape="rect" id="Node000001" title=" " alt="" coords="214,5,276,75"/>
+<area shape="rect" id="Node000002" href="$classSidebar.html" title="Represents the sidebar UI component for displaying tasks." alt="" coords="5,176,156,288"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="206,86,171,124,126,178,122,175,167,121,202,82"/>
+<area shape="rect" id="Node000003" href="$classSubtaskItem.html" title="Represents a UI item for a subtask." alt="" coords="181,176,309,288"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="248,89,248,176,242,176,242,89"/>
+<area shape="rect" id="Node000004" href="$classTaskUI.html" title="Manages the user interface for tasks and subtasks." alt="" coords="332,123,498,341"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="288,83,323,121,335,134,331,137,319,124,284,86"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..b423def2992a566ce4387b32a79236218d2ae7f4
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__inherit__graph.md5
@@ -0,0 +1 @@
+2be8f99a377d0ca61154ea79a534028d
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..f63514b81091eae11f38c8f480d4d18d89329030
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classQWidget__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..744e333a5d64a345815c6a86a4a15a74378977a1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker-members.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">ScriptWorker Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classScriptWorker.html">ScriptWorker</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523">executePythonScript</a>(const QString &amp;scriptPath, const QString &amp;name)</td><td class="entry"><a class="el" href="classScriptWorker.html">ScriptWorker</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classScriptWorker.html#a5f0a6e5095c8e55559045d7d9d2e2e1a">failed</a>(const QString &amp;error)</td><td class="entry"><a class="el" href="classScriptWorker.html">ScriptWorker</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classScriptWorker.html#ac33ab3bb0d1e7e9e0070ac3b7f33b633">finished</a>()</td><td class="entry"><a class="el" href="classScriptWorker.html">ScriptWorker</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classScriptWorker.html#aafadef7996317ca83dcb2605777affe2">forceStop</a>()</td><td class="entry"><a class="el" href="classScriptWorker.html">ScriptWorker</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classScriptWorker.html#a1eb9773d50b730f913bb60149515aef5">ScriptWorker</a>(const QString &amp;notebookPath, const QString &amp;convertedScriptPath, const QString &amp;evalScriptPath, bool parallelizedEvaluation, int timeoutSeconds)</td><td class="entry"><a class="el" href="classScriptWorker.html">ScriptWorker</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classScriptWorker.html#a501653e756b40c33f4bd37957b398de3">startExecution</a>()</td><td class="entry"><a class="el" href="classScriptWorker.html">ScriptWorker</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker.html
new file mode 100644
index 0000000000000000000000000000000000000000..3f9482949d8be9495275ddf0d09172b241398dd3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker.html
@@ -0,0 +1,419 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: ScriptWorker Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#pub-slots">Public Slots</a> &#124;
+<a href="#signals">Signals</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classScriptWorker-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">ScriptWorker Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Manages the execution of scripts for tasks.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="script__worker_8hpp_source.html">script_worker.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for ScriptWorker:</div>
+<div class="dyncontent">
+<div class="center"><img src="classScriptWorker__inherit__graph.png" border="0" usemap="#aScriptWorker_inherit__map" alt="Inheritance graph"/></div>
+<map name="aScriptWorker_inherit__map" id="aScriptWorker_inherit__map">
+<area shape="rect" title="Manages the execution of scripts for tasks." alt="" coords="5,123,158,256"/>
+<area shape="rect" href="classQObject.html" title=" " alt="" coords="52,5,111,75"/>
+<area shape="poly" title=" " alt="" coords="84,90,84,123,79,123,79,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for ScriptWorker:</div>
+<div class="dyncontent">
+<div class="center"><img src="classScriptWorker__coll__graph.png" border="0" usemap="#aScriptWorker_coll__map" alt="Collaboration graph"/></div>
+<map name="aScriptWorker_coll__map" id="aScriptWorker_coll__map">
+<area shape="rect" title="Manages the execution of scripts for tasks." alt="" coords="5,123,158,256"/>
+<area shape="rect" href="classQObject.html" title=" " alt="" coords="52,5,111,75"/>
+<area shape="poly" title=" " alt="" coords="84,90,84,123,79,123,79,90"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-slots" name="pub-slots"></a>
+Public Slots</h2></td></tr>
+<tr class="memitem:a501653e756b40c33f4bd37957b398de3" id="r_a501653e756b40c33f4bd37957b398de3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a501653e756b40c33f4bd37957b398de3">startExecution</a> ()</td></tr>
+<tr class="memdesc:a501653e756b40c33f4bd37957b398de3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts the execution of the scripts.  <br /></td></tr>
+<tr class="separator:a501653e756b40c33f4bd37957b398de3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aafadef7996317ca83dcb2605777affe2" id="r_aafadef7996317ca83dcb2605777affe2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aafadef7996317ca83dcb2605777affe2">forceStop</a> ()</td></tr>
+<tr class="memdesc:aafadef7996317ca83dcb2605777affe2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forces the stop of all running scripts.  <br /></td></tr>
+<tr class="separator:aafadef7996317ca83dcb2605777affe2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aebb9b3a7fe906be08a8ced46d1a5f523" id="r_aebb9b3a7fe906be08a8ced46d1a5f523"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aebb9b3a7fe906be08a8ced46d1a5f523">executePythonScript</a> (const QString &amp;scriptPath, const QString &amp;name)</td></tr>
+<tr class="memdesc:aebb9b3a7fe906be08a8ced46d1a5f523"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes a given Python script.  <br /></td></tr>
+<tr class="separator:aebb9b3a7fe906be08a8ced46d1a5f523"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="signals" name="signals"></a>
+Signals</h2></td></tr>
+<tr class="memitem:ac33ab3bb0d1e7e9e0070ac3b7f33b633" id="r_ac33ab3bb0d1e7e9e0070ac3b7f33b633"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac33ab3bb0d1e7e9e0070ac3b7f33b633">finished</a> ()</td></tr>
+<tr class="memdesc:ac33ab3bb0d1e7e9e0070ac3b7f33b633"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when the script execution finishes.  <br /></td></tr>
+<tr class="separator:ac33ab3bb0d1e7e9e0070ac3b7f33b633"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5f0a6e5095c8e55559045d7d9d2e2e1a" id="r_a5f0a6e5095c8e55559045d7d9d2e2e1a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5f0a6e5095c8e55559045d7d9d2e2e1a">failed</a> (const QString &amp;error)</td></tr>
+<tr class="memdesc:a5f0a6e5095c8e55559045d7d9d2e2e1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when the script execution fails.  <br /></td></tr>
+<tr class="separator:a5f0a6e5095c8e55559045d7d9d2e2e1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a1eb9773d50b730f913bb60149515aef5" id="r_a1eb9773d50b730f913bb60149515aef5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1eb9773d50b730f913bb60149515aef5">ScriptWorker</a> (const QString &amp;notebookPath, const QString &amp;convertedScriptPath, const QString &amp;evalScriptPath, bool parallelizedEvaluation, int timeoutSeconds)</td></tr>
+<tr class="memdesc:a1eb9773d50b730f913bb60149515aef5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a <a class="el" href="classScriptWorker.html" title="Manages the execution of scripts for tasks.">ScriptWorker</a> object.  <br /></td></tr>
+<tr class="separator:a1eb9773d50b730f913bb60149515aef5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Manages the execution of scripts for tasks. </p>
+<p>The <a class="el" href="classScriptWorker.html" title="Manages the execution of scripts for tasks.">ScriptWorker</a> class is responsible for converting and executing Jupyter notebooks, as well as evaluating the results. It handles the execution state and emits signals based on the success or failure of the scripts. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a1eb9773d50b730f913bb60149515aef5" name="a1eb9773d50b730f913bb60149515aef5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1eb9773d50b730f913bb60149515aef5">&#9670;&#160;</a></span>ScriptWorker()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">ScriptWorker::ScriptWorker </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>notebookPath</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>convertedScriptPath</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>evalScriptPath</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool</td>          <td class="paramname"><span class="paramname"><em>parallelizedEvaluation</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>timeoutSeconds</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Constructs a <a class="el" href="classScriptWorker.html" title="Manages the execution of scripts for tasks.">ScriptWorker</a> object. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">notebookPath</td><td>Path to the Jupyter notebook file. </td></tr>
+    <tr><td class="paramname">convertedScriptPath</td><td>Path to the converted script. </td></tr>
+    <tr><td class="paramname">evalScriptPath</td><td>Path to the evaluation script. </td></tr>
+    <tr><td class="paramname">parallelizedEvaluation</td><td>Whether the evaluation should run in parallel to the main script. </td></tr>
+    <tr><td class="paramname">timeoutSeconds</td><td>Timeout for script execution in seconds. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="aebb9b3a7fe906be08a8ced46d1a5f523" name="aebb9b3a7fe906be08a8ced46d1a5f523"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aebb9b3a7fe906be08a8ced46d1a5f523">&#9670;&#160;</a></span>executePythonScript</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ScriptWorker::executePythonScript </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>scriptPath</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>name</em></span>&#160;)</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Executes a given Python script. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.png" border="0" usemap="#aclassScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph" alt=""/></div>
+<map name="aclassScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph" id="aclassScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph">
+<area shape="rect" title="Executes a given Python script." alt="" coords="481,5,672,48"/>
+<area shape="rect" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="260,13,433,40"/>
+<area shape="poly" title=" " alt="" coords="466,29,434,29,434,24,466,24"/>
+<area shape="rect" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,13,212,40"/>
+<area shape="poly" title=" " alt="" coords="244,29,212,29,212,24,244,24"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="a5f0a6e5095c8e55559045d7d9d2e2e1a" name="a5f0a6e5095c8e55559045d7d9d2e2e1a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5f0a6e5095c8e55559045d7d9d2e2e1a">&#9670;&#160;</a></span>failed</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ScriptWorker::failed </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>error</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when the script execution fails. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">error</td><td>The error message. </td></tr>
+  </table>
+  </dd>
+</dl>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.png" border="0" usemap="#aclassScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph" alt=""/></div>
+<map name="aclassScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph" id="aclassScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph">
+<area shape="rect" title="Signal emitted when the script execution fails." alt="" coords="730,97,866,124"/>
+<area shape="rect" href="classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523" title="Executes a given Python script." alt="" coords="491,5,682,48"/>
+<area shape="poly" title=" " alt="" coords="747,94,642,51,644,46,749,89"/>
+<area shape="rect" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="265,60,438,87"/>
+<area shape="poly" title=" " alt="" coords="714,106,438,83,439,78,715,101"/>
+<area shape="rect" href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="260,136,443,163"/>
+<area shape="poly" title=" " alt="" coords="715,120,444,144,443,139,715,115"/>
+<area shape="rect" href="classScriptWorker.html#a501653e756b40c33f4bd37957b398de3" title="Starts the execution of the scripts." alt="" coords="492,173,681,200"/>
+<area shape="poly" title=" " alt="" coords="749,132,683,157,631,175,630,170,681,152,747,127"/>
+<area shape="poly" title=" " alt="" coords="476,51,423,62,422,57,475,46"/>
+<area shape="rect" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,60,212,87"/>
+<area shape="poly" title=" " alt="" coords="249,76,212,76,212,71,249,71"/>
+<area shape="poly" title=" " alt="" coords="483,173,439,166,440,161,484,168"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="ac33ab3bb0d1e7e9e0070ac3b7f33b633" name="ac33ab3bb0d1e7e9e0070ac3b7f33b633"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac33ab3bb0d1e7e9e0070ac3b7f33b633">&#9670;&#160;</a></span>finished</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ScriptWorker::finished </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when the script execution finishes. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.png" border="0" usemap="#aclassScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph" alt=""/></div>
+<map name="aclassScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph" id="aclassScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph">
+<area shape="rect" title="Signal emitted when the script execution finishes." alt="" coords="730,97,880,124"/>
+<area shape="rect" href="classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523" title="Executes a given Python script." alt="" coords="491,5,682,48"/>
+<area shape="poly" title=" " alt="" coords="753,94,643,51,645,46,755,89"/>
+<area shape="rect" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="265,60,438,87"/>
+<area shape="poly" title=" " alt="" coords="714,106,438,83,439,78,715,101"/>
+<area shape="rect" href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="260,136,443,163"/>
+<area shape="poly" title=" " alt="" coords="715,121,444,144,443,139,714,116"/>
+<area shape="rect" href="classScriptWorker.html#a501653e756b40c33f4bd37957b398de3" title="Starts the execution of the scripts." alt="" coords="492,173,681,200"/>
+<area shape="poly" title=" " alt="" coords="753,132,683,157,631,175,629,170,681,152,751,127"/>
+<area shape="poly" title=" " alt="" coords="476,51,423,62,422,57,475,46"/>
+<area shape="rect" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,60,212,87"/>
+<area shape="poly" title=" " alt="" coords="249,76,212,76,212,71,249,71"/>
+<area shape="poly" title=" " alt="" coords="483,173,439,166,440,161,484,168"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="aafadef7996317ca83dcb2605777affe2" name="aafadef7996317ca83dcb2605777affe2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aafadef7996317ca83dcb2605777affe2">&#9670;&#160;</a></span>forceStop</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ScriptWorker::forceStop </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Forces the stop of all running scripts. </p>
+
+</div>
+</div>
+<a id="a501653e756b40c33f4bd37957b398de3" name="a501653e756b40c33f4bd37957b398de3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a501653e756b40c33f4bd37957b398de3">&#9670;&#160;</a></span>startExecution</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void ScriptWorker::startExecution </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Starts the execution of the scripts. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.png" border="0" usemap="#aclassScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph" alt=""/></div>
+<map name="aclassScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph" id="aclassScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph">
+<area shape="rect" title="Starts the execution of the scripts." alt="" coords="237,5,425,32"/>
+<area shape="rect" href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="5,5,189,32"/>
+<area shape="poly" title=" " alt="" coords="221,21,189,21,189,16,221,16"/>
+</map>
+</div>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="script__worker_8hpp_source.html">script_worker.hpp</a></li>
+<li><a class="el" href="script__worker_8cpp.html">script_worker.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..d4df914721b0fa78e5409267217e98c43225bea2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__coll__graph.map
@@ -0,0 +1,5 @@
+<map id="ScriptWorker" name="ScriptWorker">
+<area shape="rect" id="Node000001" title="Manages the execution of scripts for tasks." alt="" coords="5,123,158,256"/>
+<area shape="rect" id="Node000002" href="$classQObject.html" title=" " alt="" coords="52,5,111,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="84,90,84,123,79,123,79,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..0d441478aeaeb8e63bed743dd74fda042adc8b9c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__coll__graph.md5
@@ -0,0 +1 @@
+af704e427c699effc0a4d657ca7d6491
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..54b8686fa4474054b8f1fd821e84b692372556b2
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..d4df914721b0fa78e5409267217e98c43225bea2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="ScriptWorker" name="ScriptWorker">
+<area shape="rect" id="Node000001" title="Manages the execution of scripts for tasks." alt="" coords="5,123,158,256"/>
+<area shape="rect" id="Node000002" href="$classQObject.html" title=" " alt="" coords="52,5,111,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="84,90,84,123,79,123,79,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..0d441478aeaeb8e63bed743dd74fda042adc8b9c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__inherit__graph.md5
@@ -0,0 +1 @@
+af704e427c699effc0a4d657ca7d6491
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..54b8686fa4474054b8f1fd821e84b692372556b2
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..df2e56adb39b3a2379df38d6a013ae720d20aa19
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.map
@@ -0,0 +1,5 @@
+<map id="ScriptWorker::startExecution" name="ScriptWorker::startExecution">
+<area shape="rect" id="Node000001" title="Starts the execution of the scripts." alt="" coords="237,5,425,32"/>
+<area shape="rect" id="Node000002" href="$classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="5,5,189,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="221,21,189,21,189,16,221,16"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..6a1c9b83c90c90fa79680c776a38027f1dd846b8
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.md5
@@ -0,0 +1 @@
+6de5fd1da32876ea23aefa3267231d6e
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..c913ba42d3fba2ed9083eb0abe5f4e8189a5f89c
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..b647cbf33120f1b2ecc6ecd8d70403f91cf9d69f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.map
@@ -0,0 +1,15 @@
+<map id="ScriptWorker::failed" name="ScriptWorker::failed">
+<area shape="rect" id="Node000001" title="Signal emitted when the script execution fails." alt="" coords="730,97,866,124"/>
+<area shape="rect" id="Node000002" href="$classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523" title="Executes a given Python script." alt="" coords="491,5,682,48"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="747,94,642,51,644,46,749,89"/>
+<area shape="rect" id="Node000003" href="$classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="265,60,438,87"/>
+<area shape="poly" id="edge5_Node000001_Node000003" title=" " alt="" coords="714,106,438,83,439,78,715,101"/>
+<area shape="rect" id="Node000005" href="$classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="260,136,443,163"/>
+<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="715,120,444,144,443,139,715,115"/>
+<area shape="rect" id="Node000006" href="$classScriptWorker.html#a501653e756b40c33f4bd37957b398de3" title="Starts the execution of the scripts." alt="" coords="492,173,681,200"/>
+<area shape="poly" id="edge6_Node000001_Node000006" title=" " alt="" coords="749,132,683,157,631,175,630,170,681,152,747,127"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="476,51,423,62,422,57,475,46"/>
+<area shape="rect" id="Node000004" href="$classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,60,212,87"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="249,76,212,76,212,71,249,71"/>
+<area shape="poly" id="edge7_Node000006_Node000005" title=" " alt="" coords="483,173,439,166,440,161,484,168"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..791feea7d87b878e9c18b9f055d4fae69d772615
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.md5
@@ -0,0 +1 @@
+a00f17b3e0a9c5b74ab1ec2c91a3956f
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..93f61647a4e7b1e4e2101a43dc898fb669e3c5bf
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..77462dec91e9b5b461b6de48366603289bed7186
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.map
@@ -0,0 +1,15 @@
+<map id="ScriptWorker::finished" name="ScriptWorker::finished">
+<area shape="rect" id="Node000001" title="Signal emitted when the script execution finishes." alt="" coords="730,97,880,124"/>
+<area shape="rect" id="Node000002" href="$classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523" title="Executes a given Python script." alt="" coords="491,5,682,48"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="753,94,643,51,645,46,755,89"/>
+<area shape="rect" id="Node000003" href="$classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="265,60,438,87"/>
+<area shape="poly" id="edge5_Node000001_Node000003" title=" " alt="" coords="714,106,438,83,439,78,715,101"/>
+<area shape="rect" id="Node000005" href="$classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="260,136,443,163"/>
+<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="715,121,444,144,443,139,714,116"/>
+<area shape="rect" id="Node000006" href="$classScriptWorker.html#a501653e756b40c33f4bd37957b398de3" title="Starts the execution of the scripts." alt="" coords="492,173,681,200"/>
+<area shape="poly" id="edge6_Node000001_Node000006" title=" " alt="" coords="753,132,683,157,631,175,629,170,681,152,751,127"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="476,51,423,62,422,57,475,46"/>
+<area shape="rect" id="Node000004" href="$classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,60,212,87"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="249,76,212,76,212,71,249,71"/>
+<area shape="poly" id="edge7_Node000006_Node000005" title=" " alt="" coords="483,173,439,166,440,161,484,168"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..63a2f0479eed67a1d92842e385858907144920b1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.md5
@@ -0,0 +1 @@
+c8653dd34543b9a64277b9739f439550
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..92401acf6fd3da8ec7b25a3d81ceb8ecbb35551b
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..efbdf4d0087777b869ccf00d0dd72f714d225c33
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.map
@@ -0,0 +1,7 @@
+<map id="ScriptWorker::executePythonScript" name="ScriptWorker::executePythonScript">
+<area shape="rect" id="Node000001" title="Executes a given Python script." alt="" coords="481,5,672,48"/>
+<area shape="rect" id="Node000002" href="$classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="260,13,433,40"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="466,29,434,29,434,24,466,24"/>
+<area shape="rect" id="Node000003" href="$classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,13,212,40"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="244,29,212,29,212,24,244,24"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..b9722c5078954b38ef9f1d53a1e7a82a0c707355
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.md5
@@ -0,0 +1 @@
+9522caa674e30d23ede5e767cd903062
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..6564aa08a38bf12d89c4080422de072b6d172f89
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..5ded71e397003094572ff21d5495e93ce1652bd7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar-members.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">Sidebar Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classSidebar.html">Sidebar</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classSidebar.html#abf817c38465f3382b90d409e9cf87777">fillSidebarWithTasks</a>(const QVector&lt; QSharedPointer&lt; Task &gt; &gt; &amp;tasks)</td><td class="entry"><a class="el" href="classSidebar.html">Sidebar</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classSidebar.html#a9b621329888b135c42333a7ce8a4cad4">selectTask</a>(int index)</td><td class="entry"><a class="el" href="classSidebar.html">Sidebar</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classSidebar.html#a874f7f7907a44517ee9cf9ac2c1888d7">Sidebar</a>(QWidget *parent=nullptr)</td><td class="entry"><a class="el" href="classSidebar.html">Sidebar</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classSidebar.html#ad4d587292c62ad30ac9f1feac5d39499">taskSelected</a>(int index)</td><td class="entry"><a class="el" href="classSidebar.html">Sidebar</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar.html
new file mode 100644
index 0000000000000000000000000000000000000000..968f74e034793eead5cb1282add83201ac8fad01
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar.html
@@ -0,0 +1,270 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Sidebar Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#signals">Signals</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classSidebar-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">Sidebar Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Represents the sidebar UI component for displaying tasks.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="sidebar_8hpp_source.html">sidebar.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for Sidebar:</div>
+<div class="dyncontent">
+<div class="center"><img src="classSidebar__inherit__graph.png" border="0" usemap="#aSidebar_inherit__map" alt="Inheritance graph"/></div>
+<map name="aSidebar_inherit__map" id="aSidebar_inherit__map">
+<area shape="rect" title="Represents the sidebar UI component for displaying tasks." alt="" coords="5,123,156,235"/>
+<area shape="rect" href="classQWidget.html" title=" " alt="" coords="50,5,112,75"/>
+<area shape="poly" title=" " alt="" coords="84,90,84,123,78,123,78,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for Sidebar:</div>
+<div class="dyncontent">
+<div class="center"><img src="classSidebar__coll__graph.png" border="0" usemap="#aSidebar_coll__map" alt="Collaboration graph"/></div>
+<map name="aSidebar_coll__map" id="aSidebar_coll__map">
+<area shape="rect" title="Represents the sidebar UI component for displaying tasks." alt="" coords="5,123,156,235"/>
+<area shape="rect" href="classQWidget.html" title=" " alt="" coords="50,5,112,75"/>
+<area shape="poly" title=" " alt="" coords="84,90,84,123,78,123,78,90"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="signals" name="signals"></a>
+Signals</h2></td></tr>
+<tr class="memitem:ad4d587292c62ad30ac9f1feac5d39499" id="r_ad4d587292c62ad30ac9f1feac5d39499"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad4d587292c62ad30ac9f1feac5d39499">taskSelected</a> (int index)</td></tr>
+<tr class="memdesc:ad4d587292c62ad30ac9f1feac5d39499"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when a task is selected.  <br /></td></tr>
+<tr class="separator:ad4d587292c62ad30ac9f1feac5d39499"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a874f7f7907a44517ee9cf9ac2c1888d7" id="r_a874f7f7907a44517ee9cf9ac2c1888d7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a874f7f7907a44517ee9cf9ac2c1888d7">Sidebar</a> (<a class="el" href="classQWidget.html">QWidget</a> *parent=nullptr)</td></tr>
+<tr class="memdesc:a874f7f7907a44517ee9cf9ac2c1888d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a <a class="el" href="classSidebar.html" title="Represents the sidebar UI component for displaying tasks.">Sidebar</a> object.  <br /></td></tr>
+<tr class="separator:a874f7f7907a44517ee9cf9ac2c1888d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abf817c38465f3382b90d409e9cf87777" id="r_abf817c38465f3382b90d409e9cf87777"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abf817c38465f3382b90d409e9cf87777">fillSidebarWithTasks</a> (const QVector&lt; QSharedPointer&lt; <a class="el" href="structTask.html">Task</a> &gt; &gt; &amp;tasks)</td></tr>
+<tr class="memdesc:abf817c38465f3382b90d409e9cf87777"><td class="mdescLeft">&#160;</td><td class="mdescRight">Populates the sidebar with tasks.  <br /></td></tr>
+<tr class="separator:abf817c38465f3382b90d409e9cf87777"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9b621329888b135c42333a7ce8a4cad4" id="r_a9b621329888b135c42333a7ce8a4cad4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9b621329888b135c42333a7ce8a4cad4">selectTask</a> (int index)</td></tr>
+<tr class="memdesc:a9b621329888b135c42333a7ce8a4cad4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Selects a task in the sidebar by its index.  <br /></td></tr>
+<tr class="separator:a9b621329888b135c42333a7ce8a4cad4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Represents the sidebar UI component for displaying tasks. </p>
+<p>The <a class="el" href="classSidebar.html" title="Represents the sidebar UI component for displaying tasks.">Sidebar</a> class is responsible for displaying a list of tasks in a sidebar. It provides functionalities to populate the sidebar with tasks, handle user interactions, and select tasks programmatically. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a874f7f7907a44517ee9cf9ac2c1888d7" name="a874f7f7907a44517ee9cf9ac2c1888d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a874f7f7907a44517ee9cf9ac2c1888d7">&#9670;&#160;</a></span>Sidebar()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">Sidebar::Sidebar </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classQWidget.html">QWidget</a> *</td>          <td class="paramname"><span class="paramname"><em>parent</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Constructs a <a class="el" href="classSidebar.html" title="Represents the sidebar UI component for displaying tasks.">Sidebar</a> object. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">parent</td><td>Pointer to the parent widget. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="abf817c38465f3382b90d409e9cf87777" name="abf817c38465f3382b90d409e9cf87777"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abf817c38465f3382b90d409e9cf87777">&#9670;&#160;</a></span>fillSidebarWithTasks()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void Sidebar::fillSidebarWithTasks </td>
+          <td>(</td>
+          <td class="paramtype">const QVector&lt; QSharedPointer&lt; <a class="el" href="structTask.html">Task</a> &gt; &gt; &amp;</td>          <td class="paramname"><span class="paramname"><em>tasks</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Populates the sidebar with tasks. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">tasks</td><td>Vector of shared pointers to the tasks to be displayed. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a9b621329888b135c42333a7ce8a4cad4" name="a9b621329888b135c42333a7ce8a4cad4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9b621329888b135c42333a7ce8a4cad4">&#9670;&#160;</a></span>selectTask()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void Sidebar::selectTask </td>
+          <td>(</td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>index</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Selects a task in the sidebar by its index. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>The index of the task to be selected. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ad4d587292c62ad30ac9f1feac5d39499" name="ad4d587292c62ad30ac9f1feac5d39499"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad4d587292c62ad30ac9f1feac5d39499">&#9670;&#160;</a></span>taskSelected</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void Sidebar::taskSelected </td>
+          <td>(</td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>index</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when a task is selected. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>The index of the selected task. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="sidebar_8hpp_source.html">sidebar.hpp</a></li>
+<li><a class="el" href="sidebar_8cpp.html">sidebar.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..d0f4b8180831f93a97cd7e4a1d38c08cc396f346
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__coll__graph.map
@@ -0,0 +1,5 @@
+<map id="Sidebar" name="Sidebar">
+<area shape="rect" id="Node000001" title="Represents the sidebar UI component for displaying tasks." alt="" coords="5,123,156,235"/>
+<area shape="rect" id="Node000002" href="$classQWidget.html" title=" " alt="" coords="50,5,112,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="84,90,84,123,78,123,78,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..61ed1d539b1dca0f30f2d3ff4f984b60e2f53448
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__coll__graph.md5
@@ -0,0 +1 @@
+e463b4257f7c5e8fc3a5fdac0e435807
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb5b2796ae4bfd9c4753e128457b8a7b6fd78222
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..d0f4b8180831f93a97cd7e4a1d38c08cc396f346
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="Sidebar" name="Sidebar">
+<area shape="rect" id="Node000001" title="Represents the sidebar UI component for displaying tasks." alt="" coords="5,123,156,235"/>
+<area shape="rect" id="Node000002" href="$classQWidget.html" title=" " alt="" coords="50,5,112,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="84,90,84,123,78,123,78,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..61ed1d539b1dca0f30f2d3ff4f984b60e2f53448
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__inherit__graph.md5
@@ -0,0 +1 @@
+e463b4257f7c5e8fc3a5fdac0e435807
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb5b2796ae4bfd9c4753e128457b8a7b6fd78222
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSidebar__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..f35e356a63075421d493e99533e090e2c286e2cc
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem-members.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">SubtaskItem Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classSubtaskItem.html">SubtaskItem</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classSubtaskItem.html#aebba84aaef3c06a0c3079cea7fcd4ba6">setTaskManager</a>(TaskManager *manager)</td><td class="entry"><a class="el" href="classSubtaskItem.html">SubtaskItem</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classSubtaskItem.html#a63e6bb32b434cf04705924c3e2cdd0db">SubtaskItem</a>(QWidget *parent, Subtask *subtask)</td><td class="entry"><a class="el" href="classSubtaskItem.html">SubtaskItem</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classSubtaskItem.html#a9a41e7bf314df5a4297c68509d531423">subtaskStartStopRequested</a>(const Subtask &amp;subtask)</td><td class="entry"><a class="el" href="classSubtaskItem.html">SubtaskItem</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classSubtaskItem.html#a005df51b50001f3e9c95652e845cf424">updateUI</a>(bool constructorCall=false)</td><td class="entry"><a class="el" href="classSubtaskItem.html">SubtaskItem</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem.html
new file mode 100644
index 0000000000000000000000000000000000000000..96c04c3c6ab08336f4c4418eeafc7cf54795ae55
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem.html
@@ -0,0 +1,271 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: SubtaskItem Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#signals">Signals</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classSubtaskItem-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">SubtaskItem Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Represents a UI item for a subtask.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="subtask__item_8hpp_source.html">subtask_item.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for SubtaskItem:</div>
+<div class="dyncontent">
+<div class="center"><img src="classSubtaskItem__inherit__graph.png" border="0" usemap="#aSubtaskItem_inherit__map" alt="Inheritance graph"/></div>
+<map name="aSubtaskItem_inherit__map" id="aSubtaskItem_inherit__map">
+<area shape="rect" title="Represents a UI item for a subtask." alt="" coords="5,123,133,235"/>
+<area shape="rect" href="classQWidget.html" title=" " alt="" coords="38,5,100,75"/>
+<area shape="poly" title=" " alt="" coords="72,90,72,123,67,123,67,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for SubtaskItem:</div>
+<div class="dyncontent">
+<div class="center"><img src="classSubtaskItem__coll__graph.png" border="0" usemap="#aSubtaskItem_coll__map" alt="Collaboration graph"/></div>
+<map name="aSubtaskItem_coll__map" id="aSubtaskItem_coll__map">
+<area shape="rect" title="Represents a UI item for a subtask." alt="" coords="5,123,133,235"/>
+<area shape="rect" href="classQWidget.html" title=" " alt="" coords="38,5,100,75"/>
+<area shape="poly" title=" " alt="" coords="72,90,72,123,67,123,67,90"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="signals" name="signals"></a>
+Signals</h2></td></tr>
+<tr class="memitem:a9a41e7bf314df5a4297c68509d531423" id="r_a9a41e7bf314df5a4297c68509d531423"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9a41e7bf314df5a4297c68509d531423">subtaskStartStopRequested</a> (const <a class="el" href="structSubtask.html">Subtask</a> &amp;subtask)</td></tr>
+<tr class="memdesc:a9a41e7bf314df5a4297c68509d531423"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when a start/stop request is made for the subtask.  <br /></td></tr>
+<tr class="separator:a9a41e7bf314df5a4297c68509d531423"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a63e6bb32b434cf04705924c3e2cdd0db" id="r_a63e6bb32b434cf04705924c3e2cdd0db"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a63e6bb32b434cf04705924c3e2cdd0db">SubtaskItem</a> (<a class="el" href="classQWidget.html">QWidget</a> *parent, <a class="el" href="structSubtask.html">Subtask</a> *subtask)</td></tr>
+<tr class="memdesc:a63e6bb32b434cf04705924c3e2cdd0db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a <a class="el" href="classSubtaskItem.html" title="Represents a UI item for a subtask.">SubtaskItem</a> object.  <br /></td></tr>
+<tr class="separator:a63e6bb32b434cf04705924c3e2cdd0db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a005df51b50001f3e9c95652e845cf424" id="r_a005df51b50001f3e9c95652e845cf424"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a005df51b50001f3e9c95652e845cf424">updateUI</a> (bool constructorCall=false)</td></tr>
+<tr class="memdesc:a005df51b50001f3e9c95652e845cf424"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the UI elements based on the subtask's status.  <br /></td></tr>
+<tr class="separator:a005df51b50001f3e9c95652e845cf424"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aebba84aaef3c06a0c3079cea7fcd4ba6" id="r_aebba84aaef3c06a0c3079cea7fcd4ba6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aebba84aaef3c06a0c3079cea7fcd4ba6">setTaskManager</a> (<a class="el" href="classTaskManager.html">TaskManager</a> *manager)</td></tr>
+<tr class="memdesc:aebba84aaef3c06a0c3079cea7fcd4ba6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <a class="el" href="classTaskManager.html" title="Manages tasks and their execution within the application.">TaskManager</a> object.  <br /></td></tr>
+<tr class="separator:aebba84aaef3c06a0c3079cea7fcd4ba6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Represents a UI item for a subtask. </p>
+<p>The <a class="el" href="classSubtaskItem.html" title="Represents a UI item for a subtask.">SubtaskItem</a> class is responsible for displaying and managing the UI elements related to a subtask. It provides functionalities to update the UI based on the subtask's status and to handle user interactions. This is a <a class="el" href="classQWidget.html">QWidget</a> designed to function as a List Item. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a63e6bb32b434cf04705924c3e2cdd0db" name="a63e6bb32b434cf04705924c3e2cdd0db"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a63e6bb32b434cf04705924c3e2cdd0db">&#9670;&#160;</a></span>SubtaskItem()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">SubtaskItem::SubtaskItem </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classQWidget.html">QWidget</a> *</td>          <td class="paramname"><span class="paramname"><em>parent</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="structSubtask.html">Subtask</a> *</td>          <td class="paramname"><span class="paramname"><em>subtask</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Constructs a <a class="el" href="classSubtaskItem.html" title="Represents a UI item for a subtask.">SubtaskItem</a> object. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">parent</td><td>Pointer to the parent widget. </td></tr>
+    <tr><td class="paramname">subtask</td><td>Pointer to the subtask object. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="aebba84aaef3c06a0c3079cea7fcd4ba6" name="aebba84aaef3c06a0c3079cea7fcd4ba6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aebba84aaef3c06a0c3079cea7fcd4ba6">&#9670;&#160;</a></span>setTaskManager()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void SubtaskItem::setTaskManager </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classTaskManager.html">TaskManager</a> *</td>          <td class="paramname"><span class="paramname"><em>manager</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sets the <a class="el" href="classTaskManager.html" title="Manages tasks and their execution within the application.">TaskManager</a> object. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">manager</td><td>Pointer to the <a class="el" href="classTaskManager.html" title="Manages tasks and their execution within the application.">TaskManager</a> object. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a9a41e7bf314df5a4297c68509d531423" name="a9a41e7bf314df5a4297c68509d531423"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9a41e7bf314df5a4297c68509d531423">&#9670;&#160;</a></span>subtaskStartStopRequested</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void SubtaskItem::subtaskStartStopRequested </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structSubtask.html">Subtask</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>subtask</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when a start/stop request is made for the subtask. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">subtask</td><td>The subtask for which the request is made. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a005df51b50001f3e9c95652e845cf424" name="a005df51b50001f3e9c95652e845cf424"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a005df51b50001f3e9c95652e845cf424">&#9670;&#160;</a></span>updateUI()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void SubtaskItem::updateUI </td>
+          <td>(</td>
+          <td class="paramtype">bool</td>          <td class="paramname"><span class="paramname"><em>constructorCall</em></span><span class="paramdefsep"> = </span><span class="paramdefval">false</span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Updates the UI elements based on the subtask's status. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.png" border="0" usemap="#aclassSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph" alt=""/></div>
+<map name="aclassSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph" id="aclassSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph">
+<area shape="rect" title="Updates the UI elements based on the subtask&#39;s status." alt="" coords="231,5,387,32"/>
+<area shape="rect" href="classSubtaskItem.html#a63e6bb32b434cf04705924c3e2cdd0db" title="Constructs a SubtaskItem object." alt="" coords="5,5,183,32"/>
+<area shape="poly" title=" " alt="" coords="215,21,183,21,183,16,215,16"/>
+</map>
+</div>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="subtask__item_8hpp_source.html">subtask_item.hpp</a></li>
+<li><a class="el" href="subtask__item_8cpp.html">subtask_item.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..744d202aba1383bbf9468fd6c9bc4a67f8da23b6
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__coll__graph.map
@@ -0,0 +1,5 @@
+<map id="SubtaskItem" name="SubtaskItem">
+<area shape="rect" id="Node000001" title="Represents a UI item for a subtask." alt="" coords="5,123,133,235"/>
+<area shape="rect" id="Node000002" href="$classQWidget.html" title=" " alt="" coords="38,5,100,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="72,90,72,123,67,123,67,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..14c7c5b93b57ab1625d57b94e4c052f0e3a6e9dd
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__coll__graph.md5
@@ -0,0 +1 @@
+bb2240c2b74b0f6a2836493d8a12bdc0
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b5dc527ec9dca02a3d744f5629f71debffcecd8
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..744d202aba1383bbf9468fd6c9bc4a67f8da23b6
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="SubtaskItem" name="SubtaskItem">
+<area shape="rect" id="Node000001" title="Represents a UI item for a subtask." alt="" coords="5,123,133,235"/>
+<area shape="rect" id="Node000002" href="$classQWidget.html" title=" " alt="" coords="38,5,100,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="72,90,72,123,67,123,67,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..14c7c5b93b57ab1625d57b94e4c052f0e3a6e9dd
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__inherit__graph.md5
@@ -0,0 +1 @@
+bb2240c2b74b0f6a2836493d8a12bdc0
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b5dc527ec9dca02a3d744f5629f71debffcecd8
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..89939d1a54f7a2e871d1a995f8fdb642d63d3fa6
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.map
@@ -0,0 +1,5 @@
+<map id="SubtaskItem::updateUI" name="SubtaskItem::updateUI">
+<area shape="rect" id="Node000001" title="Updates the UI elements based on the subtask&#39;s status." alt="" coords="231,5,387,32"/>
+<area shape="rect" id="Node000002" href="$classSubtaskItem.html#a63e6bb32b434cf04705924c3e2cdd0db" title="Constructs a SubtaskItem object." alt="" coords="5,5,183,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="215,21,183,21,183,16,215,16"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..4af813f0dba4cee7ec0c6c9c36fafa01738a2e7a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.md5
@@ -0,0 +1 @@
+2afd429077fa0d8f5c3e6d0878ab3b3c
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..2aa2b61ec2fc092508642fe02eddad391326b970
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..0c582b235c5c6fa3ec1a84e114af11d2a7b59735
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor-members.html
@@ -0,0 +1,110 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">TaskExecutor Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classTaskExecutor.html">TaskExecutor</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d">executeTask</a>(const Subtask &amp;subtask, bool startSolution=false)</td><td class="entry"><a class="el" href="classTaskExecutor.html">TaskExecutor</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskExecutor.html#a0a0c76bf999aea855cb83a6051864e09">forceStop</a>()</td><td class="entry"><a class="el" href="classTaskExecutor.html">TaskExecutor</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc">resetRobot</a>()</td><td class="entry"><a class="el" href="classTaskExecutor.html">TaskExecutor</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskExecutor.html#a782117a9e19eff6a87255c7358e87857">resetRobotFailed</a>(const QString &amp;error)</td><td class="entry"><a class="el" href="classTaskExecutor.html">TaskExecutor</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classTaskExecutor.html#a7fb6bb2e760b08c4816f5c48902d6498">resetRobotFinished</a>()</td><td class="entry"><a class="el" href="classTaskExecutor.html">TaskExecutor</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskExecutor.html#a9d92d24d74615c594a578eafb6d48799">resetRobotStarted</a>()</td><td class="entry"><a class="el" href="classTaskExecutor.html">TaskExecutor</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classTaskExecutor.html#adeffddd301a31fe1891712d30096a468">taskExecutionFailed</a>(const QString &amp;error)</td><td class="entry"><a class="el" href="classTaskExecutor.html">TaskExecutor</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskExecutor.html#ad2f2dd7e0d22d7b3bb2ec532f158bddc">taskExecutionFinished</a>()</td><td class="entry"><a class="el" href="classTaskExecutor.html">TaskExecutor</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classTaskExecutor.html#a2b22d6b9fa450f3471de4359b6f3b131">taskExecutionStarted</a>()</td><td class="entry"><a class="el" href="classTaskExecutor.html">TaskExecutor</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskExecutor.html#ac6783ed16b392507bfaabd21422ee140">TaskExecutor</a>(QObject *parent=nullptr)</td><td class="entry"><a class="el" href="classTaskExecutor.html">TaskExecutor</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor.html
new file mode 100644
index 0000000000000000000000000000000000000000..ed7e0dded03b0ee22470da79680d18b404a950a2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor.html
@@ -0,0 +1,534 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: TaskExecutor Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#signals">Signals</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classTaskExecutor-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">TaskExecutor Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Executes tasks and manages their execution state.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="task__executor_8hpp_source.html">task_executor.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for TaskExecutor:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskExecutor__inherit__graph.png" border="0" usemap="#aTaskExecutor_inherit__map" alt="Inheritance graph"/></div>
+<map name="aTaskExecutor_inherit__map" id="aTaskExecutor_inherit__map">
+<area shape="rect" title="Executes tasks and manages their execution state." alt="" coords="5,123,117,256"/>
+<area shape="rect" href="classQObject.html" title=" " alt="" coords="32,5,91,75"/>
+<area shape="poly" title=" " alt="" coords="64,90,64,123,59,123,59,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for TaskExecutor:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskExecutor__coll__graph.png" border="0" usemap="#aTaskExecutor_coll__map" alt="Collaboration graph"/></div>
+<map name="aTaskExecutor_coll__map" id="aTaskExecutor_coll__map">
+<area shape="rect" title="Executes tasks and manages their execution state." alt="" coords="5,123,117,256"/>
+<area shape="rect" href="classQObject.html" title=" " alt="" coords="32,5,91,75"/>
+<area shape="poly" title=" " alt="" coords="64,90,64,123,59,123,59,90"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="signals" name="signals"></a>
+Signals</h2></td></tr>
+<tr class="memitem:a2b22d6b9fa450f3471de4359b6f3b131" id="r_a2b22d6b9fa450f3471de4359b6f3b131"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2b22d6b9fa450f3471de4359b6f3b131">taskExecutionStarted</a> ()</td></tr>
+<tr class="memdesc:a2b22d6b9fa450f3471de4359b6f3b131"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when task execution starts.  <br /></td></tr>
+<tr class="separator:a2b22d6b9fa450f3471de4359b6f3b131"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad2f2dd7e0d22d7b3bb2ec532f158bddc" id="r_ad2f2dd7e0d22d7b3bb2ec532f158bddc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad2f2dd7e0d22d7b3bb2ec532f158bddc">taskExecutionFinished</a> ()</td></tr>
+<tr class="memdesc:ad2f2dd7e0d22d7b3bb2ec532f158bddc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when task execution finishes.  <br /></td></tr>
+<tr class="separator:ad2f2dd7e0d22d7b3bb2ec532f158bddc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adeffddd301a31fe1891712d30096a468" id="r_adeffddd301a31fe1891712d30096a468"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adeffddd301a31fe1891712d30096a468">taskExecutionFailed</a> (const QString &amp;error)</td></tr>
+<tr class="memdesc:adeffddd301a31fe1891712d30096a468"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when task execution fails.  <br /></td></tr>
+<tr class="separator:adeffddd301a31fe1891712d30096a468"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9d92d24d74615c594a578eafb6d48799" id="r_a9d92d24d74615c594a578eafb6d48799"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9d92d24d74615c594a578eafb6d48799">resetRobotStarted</a> ()</td></tr>
+<tr class="memdesc:a9d92d24d74615c594a578eafb6d48799"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when robot reset starts.  <br /></td></tr>
+<tr class="separator:a9d92d24d74615c594a578eafb6d48799"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7fb6bb2e760b08c4816f5c48902d6498" id="r_a7fb6bb2e760b08c4816f5c48902d6498"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7fb6bb2e760b08c4816f5c48902d6498">resetRobotFinished</a> ()</td></tr>
+<tr class="memdesc:a7fb6bb2e760b08c4816f5c48902d6498"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when robot reset finishes.  <br /></td></tr>
+<tr class="separator:a7fb6bb2e760b08c4816f5c48902d6498"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a782117a9e19eff6a87255c7358e87857" id="r_a782117a9e19eff6a87255c7358e87857"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a782117a9e19eff6a87255c7358e87857">resetRobotFailed</a> (const QString &amp;error)</td></tr>
+<tr class="memdesc:a782117a9e19eff6a87255c7358e87857"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when robot reset fails.  <br /></td></tr>
+<tr class="separator:a782117a9e19eff6a87255c7358e87857"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ac6783ed16b392507bfaabd21422ee140" id="r_ac6783ed16b392507bfaabd21422ee140"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac6783ed16b392507bfaabd21422ee140">TaskExecutor</a> (<a class="el" href="classQObject.html">QObject</a> *parent=nullptr)</td></tr>
+<tr class="memdesc:ac6783ed16b392507bfaabd21422ee140"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a <a class="el" href="classTaskExecutor.html" title="Executes tasks and manages their execution state.">TaskExecutor</a> object.  <br /></td></tr>
+<tr class="separator:ac6783ed16b392507bfaabd21422ee140"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac8eb8ba8a66de4a3ed3ead3ad7abab5d" id="r_ac8eb8ba8a66de4a3ed3ead3ad7abab5d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac8eb8ba8a66de4a3ed3ead3ad7abab5d">executeTask</a> (const <a class="el" href="structSubtask.html">Subtask</a> &amp;subtask, bool startSolution=false)</td></tr>
+<tr class="memdesc:ac8eb8ba8a66de4a3ed3ead3ad7abab5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes a given subtask.  <br /></td></tr>
+<tr class="separator:ac8eb8ba8a66de4a3ed3ead3ad7abab5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0a0c76bf999aea855cb83a6051864e09" id="r_a0a0c76bf999aea855cb83a6051864e09"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0a0c76bf999aea855cb83a6051864e09">forceStop</a> ()</td></tr>
+<tr class="memdesc:a0a0c76bf999aea855cb83a6051864e09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forces the stop of all currently running tasks.  <br /></td></tr>
+<tr class="separator:a0a0c76bf999aea855cb83a6051864e09"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad117a059ab0c1f6d85e318f0cf4709bc" id="r_ad117a059ab0c1f6d85e318f0cf4709bc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad117a059ab0c1f6d85e318f0cf4709bc">resetRobot</a> ()</td></tr>
+<tr class="memdesc:ad117a059ab0c1f6d85e318f0cf4709bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Triggers python script to reset the robot to its initial state and removes all objects from the scene.  <br /></td></tr>
+<tr class="separator:ad117a059ab0c1f6d85e318f0cf4709bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Executes tasks and manages their execution state. </p>
+<p>The <a class="el" href="classTaskExecutor.html" title="Executes tasks and manages their execution state.">TaskExecutor</a> class is responsible for executing tasks and managing their execution state. It interacts with <a class="el" href="classScriptWorker.html" title="Manages the execution of scripts for tasks.">ScriptWorker</a> objects to perform the actual execution of tasks. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="ac6783ed16b392507bfaabd21422ee140" name="ac6783ed16b392507bfaabd21422ee140"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac6783ed16b392507bfaabd21422ee140">&#9670;&#160;</a></span>TaskExecutor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">TaskExecutor::TaskExecutor </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classQObject.html">QObject</a> *</td>          <td class="paramname"><span class="paramname"><em>parent</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Constructs a <a class="el" href="classTaskExecutor.html" title="Executes tasks and manages their execution state.">TaskExecutor</a> object. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">parent</td><td>Pointer to the parent <a class="el" href="classQObject.html">QObject</a>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="ac8eb8ba8a66de4a3ed3ead3ad7abab5d" name="ac8eb8ba8a66de4a3ed3ead3ad7abab5d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac8eb8ba8a66de4a3ed3ead3ad7abab5d">&#9670;&#160;</a></span>executeTask()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskExecutor::executeTask </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structSubtask.html">Subtask</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>subtask</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool</td>          <td class="paramname"><span class="paramname"><em>startSolution</em></span><span class="paramdefsep"> = </span><span class="paramdefval">false</span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Executes a given subtask. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">subtask</td><td>The subtask to be executed. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a0a0c76bf999aea855cb83a6051864e09" name="a0a0c76bf999aea855cb83a6051864e09"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0a0c76bf999aea855cb83a6051864e09">&#9670;&#160;</a></span>forceStop()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskExecutor::forceStop </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Forces the stop of all currently running tasks. </p>
+
+</div>
+</div>
+<a id="ad117a059ab0c1f6d85e318f0cf4709bc" name="ad117a059ab0c1f6d85e318f0cf4709bc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad117a059ab0c1f6d85e318f0cf4709bc">&#9670;&#160;</a></span>resetRobot()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskExecutor::resetRobot </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Triggers python script to reset the robot to its initial state and removes all objects from the scene. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.png" border="0" usemap="#aclassTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph" alt=""/></div>
+<map name="aclassTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph" id="aclassTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph">
+<area shape="rect" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="260,5,433,32"/>
+<area shape="rect" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,5,212,32"/>
+<area shape="poly" title=" " alt="" coords="244,21,212,21,212,16,244,16"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="a782117a9e19eff6a87255c7358e87857" name="a782117a9e19eff6a87255c7358e87857"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a782117a9e19eff6a87255c7358e87857">&#9670;&#160;</a></span>resetRobotFailed</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskExecutor::resetRobotFailed </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>error</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when robot reset fails. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">error</td><td>The error message. </td></tr>
+  </table>
+  </dd>
+</dl>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.png" border="0" usemap="#aclassTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph" alt=""/></div>
+<map name="aclassTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph" id="aclassTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph">
+<area shape="rect" title="Signal emitted when robot reset fails." alt="" coords="493,23,666,65"/>
+<area shape="rect" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="266,5,439,32"/>
+<area shape="poly" title=" " alt="" coords="478,35,439,31,440,26,478,30"/>
+<area shape="rect" href="classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="260,56,445,83"/>
+<area shape="poly" title=" " alt="" coords="478,58,446,62,445,56,477,53"/>
+<area shape="rect" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,5,212,32"/>
+<area shape="poly" title=" " alt="" coords="250,21,212,21,212,16,250,16"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="a7fb6bb2e760b08c4816f5c48902d6498" name="a7fb6bb2e760b08c4816f5c48902d6498"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7fb6bb2e760b08c4816f5c48902d6498">&#9670;&#160;</a></span>resetRobotFinished</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskExecutor::resetRobotFinished </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when robot reset finishes. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.png" border="0" usemap="#aclassTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph" alt=""/></div>
+<map name="aclassTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph" id="aclassTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph">
+<area shape="rect" title="Signal emitted when robot reset finishes." alt="" coords="493,23,666,65"/>
+<area shape="rect" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="266,5,439,32"/>
+<area shape="poly" title=" " alt="" coords="478,35,439,31,440,26,478,30"/>
+<area shape="rect" href="classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="260,56,445,83"/>
+<area shape="poly" title=" " alt="" coords="478,58,446,62,445,56,477,53"/>
+<area shape="rect" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,5,212,32"/>
+<area shape="poly" title=" " alt="" coords="250,21,212,21,212,16,250,16"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="a9d92d24d74615c594a578eafb6d48799" name="a9d92d24d74615c594a578eafb6d48799"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9d92d24d74615c594a578eafb6d48799">&#9670;&#160;</a></span>resetRobotStarted</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskExecutor::resetRobotStarted </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when robot reset starts. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.png" border="0" usemap="#aclassTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph" alt=""/></div>
+<map name="aclassTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph" id="aclassTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph">
+<area shape="rect" title="Signal emitted when robot reset starts." alt="" coords="493,23,666,65"/>
+<area shape="rect" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="266,5,439,32"/>
+<area shape="poly" title=" " alt="" coords="478,35,439,31,440,26,478,30"/>
+<area shape="rect" href="classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="260,56,445,83"/>
+<area shape="poly" title=" " alt="" coords="478,58,446,62,445,56,477,53"/>
+<area shape="rect" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,5,212,32"/>
+<area shape="poly" title=" " alt="" coords="250,21,212,21,212,16,250,16"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="adeffddd301a31fe1891712d30096a468" name="adeffddd301a31fe1891712d30096a468"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adeffddd301a31fe1891712d30096a468">&#9670;&#160;</a></span>taskExecutionFailed</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskExecutor::taskExecutionFailed </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>error</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when task execution fails. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">error</td><td>The error message. </td></tr>
+  </table>
+  </dd>
+</dl>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.png" border="0" usemap="#aclassTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph" alt=""/></div>
+<map name="aclassTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph" id="aclassTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph">
+<area shape="rect" title="Signal emitted when task execution fails." alt="" coords="239,23,431,65"/>
+<area shape="rect" href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="6,5,190,32"/>
+<area shape="poly" title=" " alt="" coords="223,35,190,31,191,26,224,29"/>
+<area shape="rect" href="classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,56,191,83"/>
+<area shape="poly" title=" " alt="" coords="223,59,191,62,191,57,223,53"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="ad2f2dd7e0d22d7b3bb2ec532f158bddc" name="ad2f2dd7e0d22d7b3bb2ec532f158bddc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad2f2dd7e0d22d7b3bb2ec532f158bddc">&#9670;&#160;</a></span>taskExecutionFinished</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskExecutor::taskExecutionFinished </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when task execution finishes. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.png" border="0" usemap="#aclassTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph" alt=""/></div>
+<map name="aclassTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph" id="aclassTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph">
+<area shape="rect" title="Signal emitted when task execution finishes." alt="" coords="239,23,431,65"/>
+<area shape="rect" href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="6,5,190,32"/>
+<area shape="poly" title=" " alt="" coords="223,35,190,31,191,26,224,29"/>
+<area shape="rect" href="classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,56,191,83"/>
+<area shape="poly" title=" " alt="" coords="223,59,191,62,191,57,223,53"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="a2b22d6b9fa450f3471de4359b6f3b131" name="a2b22d6b9fa450f3471de4359b6f3b131"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2b22d6b9fa450f3471de4359b6f3b131">&#9670;&#160;</a></span>taskExecutionStarted</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskExecutor::taskExecutionStarted </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when task execution starts. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.png" border="0" usemap="#aclassTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph" alt=""/></div>
+<map name="aclassTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph" id="aclassTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph">
+<area shape="rect" title="Signal emitted when task execution starts." alt="" coords="239,23,431,65"/>
+<area shape="rect" href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="6,5,190,32"/>
+<area shape="poly" title=" " alt="" coords="223,35,190,31,191,26,224,29"/>
+<area shape="rect" href="classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,56,191,83"/>
+<area shape="poly" title=" " alt="" coords="223,59,191,62,191,57,223,53"/>
+</map>
+</div>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="task__executor_8hpp_source.html">task_executor.hpp</a></li>
+<li><a class="el" href="task__executor_8cpp.html">task_executor.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..03dcfcb8de24360ea939f9d67728aee744f1f5c7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__coll__graph.map
@@ -0,0 +1,5 @@
+<map id="TaskExecutor" name="TaskExecutor">
+<area shape="rect" id="Node000001" title="Executes tasks and manages their execution state." alt="" coords="5,123,117,256"/>
+<area shape="rect" id="Node000002" href="$classQObject.html" title=" " alt="" coords="32,5,91,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="64,90,64,123,59,123,59,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..fd2afe237e7c6b100ca7ab847fd8cedc6d6a51ab
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__coll__graph.md5
@@ -0,0 +1 @@
+e5ca23ae1aed75a347fbc15e8ae0cff6
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b6768cbf849efc3c6a241f2396355f3d8aa3f1d
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..03dcfcb8de24360ea939f9d67728aee744f1f5c7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="TaskExecutor" name="TaskExecutor">
+<area shape="rect" id="Node000001" title="Executes tasks and manages their execution state." alt="" coords="5,123,117,256"/>
+<area shape="rect" id="Node000002" href="$classQObject.html" title=" " alt="" coords="32,5,91,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="64,90,64,123,59,123,59,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..fd2afe237e7c6b100ca7ab847fd8cedc6d6a51ab
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__inherit__graph.md5
@@ -0,0 +1 @@
+e5ca23ae1aed75a347fbc15e8ae0cff6
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b6768cbf849efc3c6a241f2396355f3d8aa3f1d
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..6edea99bea9ff1bdbaee224bd7ad051f89c41939
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.map
@@ -0,0 +1,7 @@
+<map id="TaskExecutor::taskExecutionStarted" name="TaskExecutor::taskExecutionStarted">
+<area shape="rect" id="Node000001" title="Signal emitted when task execution starts." alt="" coords="239,23,431,65"/>
+<area shape="rect" id="Node000002" href="$classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="6,5,190,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="223,35,190,31,191,26,224,29"/>
+<area shape="rect" id="Node000003" href="$classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,56,191,83"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="223,59,191,62,191,57,223,53"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..730c72e550f507b175c014aa192f7764d2e83b7a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.md5
@@ -0,0 +1 @@
+6c1873b9717b387626c2296050608911
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..05ba9773d5098858b5222af0eb0c2df1193b3193
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..953c300fb24be674dc8d25107c31997adc76a8dc
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.map
@@ -0,0 +1,9 @@
+<map id="TaskExecutor::resetRobotFailed" name="TaskExecutor::resetRobotFailed">
+<area shape="rect" id="Node000001" title="Signal emitted when robot reset fails." alt="" coords="493,23,666,65"/>
+<area shape="rect" id="Node000002" href="$classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="266,5,439,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="478,35,439,31,440,26,478,30"/>
+<area shape="rect" id="Node000004" href="$classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="260,56,445,83"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="478,58,446,62,445,56,477,53"/>
+<area shape="rect" id="Node000003" href="$classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,5,212,32"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="250,21,212,21,212,16,250,16"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..e6ac4ffb508b6b5cb1985ff79dbd6af8e180297a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.md5
@@ -0,0 +1 @@
+5202b05d15eebda33d9bfe247ca1e994
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a15c975d21e73cb19622cd107637fe0cf40138f
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..bd356bc00e33ff92e7be37986ab6fd60d978ae44
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.map
@@ -0,0 +1,9 @@
+<map id="TaskExecutor::resetRobotFinished" name="TaskExecutor::resetRobotFinished">
+<area shape="rect" id="Node000001" title="Signal emitted when robot reset finishes." alt="" coords="493,23,666,65"/>
+<area shape="rect" id="Node000002" href="$classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="266,5,439,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="478,35,439,31,440,26,478,30"/>
+<area shape="rect" id="Node000004" href="$classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="260,56,445,83"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="478,58,446,62,445,56,477,53"/>
+<area shape="rect" id="Node000003" href="$classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,5,212,32"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="250,21,212,21,212,16,250,16"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..6047db218b4abd1867bfd0b8111c9767b066684b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.md5
@@ -0,0 +1 @@
+ce9fa43fb410b76e20e2ce321c85a2d3
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b9c2843a152a3c8841ebcb7343adc02fccddc1e
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..e91d3d0c5cf41ab47487cfc8f1f3b0371119d7d9
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.map
@@ -0,0 +1,9 @@
+<map id="TaskExecutor::resetRobotStarted" name="TaskExecutor::resetRobotStarted">
+<area shape="rect" id="Node000001" title="Signal emitted when robot reset starts." alt="" coords="493,23,666,65"/>
+<area shape="rect" id="Node000002" href="$classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="266,5,439,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="478,35,439,31,440,26,478,30"/>
+<area shape="rect" id="Node000004" href="$classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="260,56,445,83"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="478,58,446,62,445,56,477,53"/>
+<area shape="rect" id="Node000003" href="$classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,5,212,32"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="250,21,212,21,212,16,250,16"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..88b4c89148f08de3a4ddda195cc8e83ebe460e3b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.md5
@@ -0,0 +1 @@
+5b6aadcf2cd6cf4a7d014e4df71a20c8
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..5be46cc503908290df2ae10ffd0c154baac4ee8e
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..7121d8c49294ce1f217388afe424b03904fe1188
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.map
@@ -0,0 +1,5 @@
+<map id="TaskExecutor::resetRobot" name="TaskExecutor::resetRobot">
+<area shape="rect" id="Node000001" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="260,5,433,32"/>
+<area shape="rect" id="Node000002" href="$classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,5,212,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="244,21,212,21,212,16,244,16"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8d4d34c69789122ae79386dc74fb97016877a82b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.md5
@@ -0,0 +1 @@
+2bd6dee9d6d0b6f77bf2534ec2b903bf
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..5ffb30b9ee928d59637816614e4d094a65fa1c92
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..eb38c9717399cb6b24df32e035314b67371d9791
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.map
@@ -0,0 +1,7 @@
+<map id="TaskExecutor::taskExecutionFinished" name="TaskExecutor::taskExecutionFinished">
+<area shape="rect" id="Node000001" title="Signal emitted when task execution finishes." alt="" coords="239,23,431,65"/>
+<area shape="rect" id="Node000002" href="$classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="6,5,190,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="223,35,190,31,191,26,224,29"/>
+<area shape="rect" id="Node000003" href="$classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,56,191,83"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="223,59,191,62,191,57,223,53"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..09abb7270e14520270cafd88e7fb33f116b33d12
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.md5
@@ -0,0 +1 @@
+04faeaa937d2539314fc17c0402d65e1
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..135422953efacf146316389d6ed8bc510687d6e9
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..839c8c4e2baa2fc698190d4359e32faa1aa64a23
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.map
@@ -0,0 +1,7 @@
+<map id="TaskExecutor::taskExecutionFailed" name="TaskExecutor::taskExecutionFailed">
+<area shape="rect" id="Node000001" title="Signal emitted when task execution fails." alt="" coords="239,23,431,65"/>
+<area shape="rect" id="Node000002" href="$classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="6,5,190,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="223,35,190,31,191,26,224,29"/>
+<area shape="rect" id="Node000003" href="$classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,56,191,83"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="223,59,191,62,191,57,223,53"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..e291785a5b3f73d5a254e4d13031a89374b7265e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.md5
@@ -0,0 +1 @@
+8e56c266f9d24068834357a37fefd74e
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..a1d73375910049f0d9cdfe9ae1a996de7ccf593f
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..1d892ad8a3e43b6dcbb1e15b9bc73eab26134863
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager-members.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">TaskManager Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classTaskManager.html">TaskManager</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e">forceResetRobot</a>()</td><td class="entry"><a class="el" href="classTaskManager.html">TaskManager</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskManager.html#a327677e3a17f1a707095119328a96179">nextTask</a>()</td><td class="entry"><a class="el" href="classTaskManager.html">TaskManager</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e">previousTask</a>()</td><td class="entry"><a class="el" href="classTaskManager.html">TaskManager</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskManager.html#a51989e6fb895fd817286153750f07d75">selectTask</a>(int index)</td><td class="entry"><a class="el" href="classTaskManager.html">TaskManager</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classTaskManager.html#ac4c5170435b505415f49e40906888743">startStopSubtask</a>(Subtask &amp;subtask, bool startSolution=false)</td><td class="entry"><a class="el" href="classTaskManager.html">TaskManager</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskManager.html#a36aa4b88ce92147fc2bfe7b222e8d984">startStopSubtask</a>(const Subtask &amp;subtask)</td><td class="entry"><a class="el" href="classTaskManager.html">TaskManager</a></td><td class="entry"><span class="mlabel">slot</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classTaskManager.html#a9c906455542360f6760169599f2640a3">TaskManager</a>(TaskUI *taskUI, QObject *parent=nullptr)</td><td class="entry"><a class="el" href="classTaskManager.html">TaskManager</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskManager.html#a9f3de937346f77e565d555a59a8a0da0">toggleSolution</a>(Subtask &amp;subtask)</td><td class="entry"><a class="el" href="classTaskManager.html">TaskManager</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager.html
new file mode 100644
index 0000000000000000000000000000000000000000..0474238b8a065fa172e54e7a925cc8d2148c8b05
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager.html
@@ -0,0 +1,412 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: TaskManager Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#pub-slots">Public Slots</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classTaskManager-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">TaskManager Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Manages tasks and their execution within the application.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="task__manager_8hpp_source.html">task_manager.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for TaskManager:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskManager__inherit__graph.png" border="0" usemap="#aTaskManager_inherit__map" alt="Inheritance graph"/></div>
+<map name="aTaskManager_inherit__map" id="aTaskManager_inherit__map">
+<area shape="rect" title="Manages tasks and their execution within the application." alt="" coords="5,123,138,341"/>
+<area shape="rect" href="classQObject.html" title=" " alt="" coords="42,5,101,75"/>
+<area shape="poly" title=" " alt="" coords="74,90,74,123,69,123,69,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for TaskManager:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskManager__coll__graph.png" border="0" usemap="#aTaskManager_coll__map" alt="Collaboration graph"/></div>
+<map name="aTaskManager_coll__map" id="aTaskManager_coll__map">
+<area shape="rect" title="Manages tasks and their execution within the application." alt="" coords="5,123,138,341"/>
+<area shape="rect" href="classQObject.html" title=" " alt="" coords="42,5,101,75"/>
+<area shape="poly" title=" " alt="" coords="74,90,74,123,69,123,69,90"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-slots" name="pub-slots"></a>
+Public Slots</h2></td></tr>
+<tr class="memitem:a327677e3a17f1a707095119328a96179" id="r_a327677e3a17f1a707095119328a96179"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a327677e3a17f1a707095119328a96179">nextTask</a> ()</td></tr>
+<tr class="memdesc:a327677e3a17f1a707095119328a96179"><td class="mdescLeft">&#160;</td><td class="mdescRight">Slot for changing to the next task.  <br /></td></tr>
+<tr class="separator:a327677e3a17f1a707095119328a96179"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a844a6313afed60e7def0f79eaeae7b9e" id="r_a844a6313afed60e7def0f79eaeae7b9e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a844a6313afed60e7def0f79eaeae7b9e">previousTask</a> ()</td></tr>
+<tr class="memdesc:a844a6313afed60e7def0f79eaeae7b9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Slot for changing to the previous task.  <br /></td></tr>
+<tr class="separator:a844a6313afed60e7def0f79eaeae7b9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a51989e6fb895fd817286153750f07d75" id="r_a51989e6fb895fd817286153750f07d75"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a51989e6fb895fd817286153750f07d75">selectTask</a> (int index)</td></tr>
+<tr class="memdesc:a51989e6fb895fd817286153750f07d75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Selects a task by its index.  <br /></td></tr>
+<tr class="separator:a51989e6fb895fd817286153750f07d75"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a36aa4b88ce92147fc2bfe7b222e8d984" id="r_a36aa4b88ce92147fc2bfe7b222e8d984"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a36aa4b88ce92147fc2bfe7b222e8d984">startStopSubtask</a> (const <a class="el" href="structSubtask.html">Subtask</a> &amp;subtask)</td></tr>
+<tr class="memdesc:a36aa4b88ce92147fc2bfe7b222e8d984"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts or stops a subtask.  <br /></td></tr>
+<tr class="separator:a36aa4b88ce92147fc2bfe7b222e8d984"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9a858cb5aae71b691204c8561322677e" id="r_a9a858cb5aae71b691204c8561322677e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9a858cb5aae71b691204c8561322677e">forceResetRobot</a> ()</td></tr>
+<tr class="memdesc:a9a858cb5aae71b691204c8561322677e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forces the reset of the robot to its initial state.  <br /></td></tr>
+<tr class="separator:a9a858cb5aae71b691204c8561322677e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a9c906455542360f6760169599f2640a3" id="r_a9c906455542360f6760169599f2640a3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9c906455542360f6760169599f2640a3">TaskManager</a> (<a class="el" href="classTaskUI.html">TaskUI</a> *taskUI, <a class="el" href="classQObject.html">QObject</a> *parent=nullptr)</td></tr>
+<tr class="memdesc:a9c906455542360f6760169599f2640a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a <a class="el" href="classTaskManager.html" title="Manages tasks and their execution within the application.">TaskManager</a> object.  <br /></td></tr>
+<tr class="separator:a9c906455542360f6760169599f2640a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac4c5170435b505415f49e40906888743" id="r_ac4c5170435b505415f49e40906888743"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac4c5170435b505415f49e40906888743">startStopSubtask</a> (<a class="el" href="structSubtask.html">Subtask</a> &amp;subtask, bool startSolution=false)</td></tr>
+<tr class="memdesc:ac4c5170435b505415f49e40906888743"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts or stops a subtask.  <br /></td></tr>
+<tr class="separator:ac4c5170435b505415f49e40906888743"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9f3de937346f77e565d555a59a8a0da0" id="r_a9f3de937346f77e565d555a59a8a0da0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9f3de937346f77e565d555a59a8a0da0">toggleSolution</a> (<a class="el" href="structSubtask.html">Subtask</a> &amp;subtask)</td></tr>
+<tr class="memdesc:a9f3de937346f77e565d555a59a8a0da0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Show or hide the solution of a subtask.  <br /></td></tr>
+<tr class="separator:a9f3de937346f77e565d555a59a8a0da0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Manages tasks and their execution within the application. </p>
+<p>The <a class="el" href="classTaskManager.html" title="Manages tasks and their execution within the application.">TaskManager</a> class is responsible for loading tasks, managing their execution, and handling user interactions through the UI. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a9c906455542360f6760169599f2640a3" name="a9c906455542360f6760169599f2640a3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9c906455542360f6760169599f2640a3">&#9670;&#160;</a></span>TaskManager()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">TaskManager::TaskManager </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classTaskUI.html">TaskUI</a> *</td>          <td class="paramname"><span class="paramname"><em>taskUI</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classQObject.html">QObject</a> *</td>          <td class="paramname"><span class="paramname"><em>parent</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Constructs a <a class="el" href="classTaskManager.html" title="Manages tasks and their execution within the application.">TaskManager</a> object. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">taskUI</td><td>Pointer to the <a class="el" href="classTaskUI.html" title="Manages the user interface for tasks and subtasks.">TaskUI</a> object. </td></tr>
+    <tr><td class="paramname">parent</td><td>Pointer to the parent <a class="el" href="classQObject.html">QObject</a>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a9a858cb5aae71b691204c8561322677e" name="a9a858cb5aae71b691204c8561322677e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9a858cb5aae71b691204c8561322677e">&#9670;&#160;</a></span>forceResetRobot</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskManager::forceResetRobot </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Forces the reset of the robot to its initial state. </p>
+
+</div>
+</div>
+<a id="a327677e3a17f1a707095119328a96179" name="a327677e3a17f1a707095119328a96179"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a327677e3a17f1a707095119328a96179">&#9670;&#160;</a></span>nextTask</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskManager::nextTask </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Slot for changing to the next task. </p>
+
+</div>
+</div>
+<a id="a844a6313afed60e7def0f79eaeae7b9e" name="a844a6313afed60e7def0f79eaeae7b9e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a844a6313afed60e7def0f79eaeae7b9e">&#9670;&#160;</a></span>previousTask</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskManager::previousTask </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Slot for changing to the previous task. </p>
+
+</div>
+</div>
+<a id="a51989e6fb895fd817286153750f07d75" name="a51989e6fb895fd817286153750f07d75"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a51989e6fb895fd817286153750f07d75">&#9670;&#160;</a></span>selectTask</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskManager::selectTask </td>
+          <td>(</td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>index</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Selects a task by its index. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>The index of the task to be selected. </td></tr>
+  </table>
+  </dd>
+</dl>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.png" border="0" usemap="#aclassTaskManager_a51989e6fb895fd817286153750f07d75_icgraph" alt=""/></div>
+<map name="aclassTaskManager_a51989e6fb895fd817286153750f07d75_icgraph" id="aclassTaskManager_a51989e6fb895fd817286153750f07d75_icgraph">
+<area shape="rect" title="Selects a task by its index." alt="" coords="239,56,409,83"/>
+<area shape="rect" href="classTaskManager.html#a327677e3a17f1a707095119328a96179" title="Slot for changing to the next task." alt="" coords="18,5,178,32"/>
+<area shape="poly" title=" " alt="" coords="246,55,160,35,161,30,247,49"/>
+<area shape="rect" href="classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e" title="Slot for changing to the previous task." alt="" coords="6,56,190,83"/>
+<area shape="poly" title=" " alt="" coords="223,72,191,72,191,67,223,67"/>
+<area shape="rect" href="classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,107,191,133"/>
+<area shape="poly" title=" " alt="" coords="247,89,161,109,160,103,246,84"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="a36aa4b88ce92147fc2bfe7b222e8d984" name="a36aa4b88ce92147fc2bfe7b222e8d984"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a36aa4b88ce92147fc2bfe7b222e8d984">&#9670;&#160;</a></span>startStopSubtask <span class="overload">[1/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskManager::startStopSubtask </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="structSubtask.html">Subtask</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>subtask</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">slot</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Starts or stops a subtask. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">subtask</td><td>Reference to the subtask to be started or stopped. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="ac4c5170435b505415f49e40906888743" name="ac4c5170435b505415f49e40906888743"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac4c5170435b505415f49e40906888743">&#9670;&#160;</a></span>startStopSubtask() <span class="overload">[2/2]</span></h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskManager::startStopSubtask </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structSubtask.html">Subtask</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>subtask</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">bool</td>          <td class="paramname"><span class="paramname"><em>startSolution</em></span><span class="paramdefsep"> = </span><span class="paramdefval">false</span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Starts or stops a subtask. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">subtask</td><td>Reference to the subtask to be started or stopped. </td></tr>
+    <tr><td class="paramname">startSolution</td><td>Flag indicating whether to start the solution or the users script. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a9f3de937346f77e565d555a59a8a0da0" name="a9f3de937346f77e565d555a59a8a0da0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9f3de937346f77e565d555a59a8a0da0">&#9670;&#160;</a></span>toggleSolution()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskManager::toggleSolution </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="structSubtask.html">Subtask</a> &amp;</td>          <td class="paramname"><span class="paramname"><em>subtask</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Show or hide the solution of a subtask. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">subtask</td><td>Reference to the subtask. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="task__manager_8hpp_source.html">task_manager.hpp</a></li>
+<li><a class="el" href="task__manager_8cpp.html">task_manager.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..e68817744a35152a1331edae9ced6b13923524ce
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__coll__graph.map
@@ -0,0 +1,5 @@
+<map id="TaskManager" name="TaskManager">
+<area shape="rect" id="Node000001" title="Manages tasks and their execution within the application." alt="" coords="5,123,138,341"/>
+<area shape="rect" id="Node000002" href="$classQObject.html" title=" " alt="" coords="42,5,101,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="74,90,74,123,69,123,69,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..1aff5eca0276544e4187ef4e3b1e4161af55121f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__coll__graph.md5
@@ -0,0 +1 @@
+0acc12c0f0be6fe6987b41be14cfba24
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..52b30041c0be5fd6d35951737e2fa4df91121df6
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..e68817744a35152a1331edae9ced6b13923524ce
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="TaskManager" name="TaskManager">
+<area shape="rect" id="Node000001" title="Manages tasks and their execution within the application." alt="" coords="5,123,138,341"/>
+<area shape="rect" id="Node000002" href="$classQObject.html" title=" " alt="" coords="42,5,101,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="74,90,74,123,69,123,69,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..1aff5eca0276544e4187ef4e3b1e4161af55121f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__inherit__graph.md5
@@ -0,0 +1 @@
+0acc12c0f0be6fe6987b41be14cfba24
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..52b30041c0be5fd6d35951737e2fa4df91121df6
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..0e9d10bef1ccafc68e391d5fb8d3170cba8db03b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.map
@@ -0,0 +1,9 @@
+<map id="TaskManager::selectTask" name="TaskManager::selectTask">
+<area shape="rect" id="Node000001" title="Selects a task by its index." alt="" coords="239,56,409,83"/>
+<area shape="rect" id="Node000002" href="$classTaskManager.html#a327677e3a17f1a707095119328a96179" title="Slot for changing to the next task." alt="" coords="18,5,178,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="246,55,160,35,161,30,247,49"/>
+<area shape="rect" id="Node000003" href="$classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e" title="Slot for changing to the previous task." alt="" coords="6,56,190,83"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="223,72,191,72,191,67,223,67"/>
+<area shape="rect" id="Node000004" href="$classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,107,191,133"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="247,89,161,109,160,103,246,84"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..d06d79930d73511a8ab2baec241f32a9d2bf4271
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.md5
@@ -0,0 +1 @@
+242ba54c1e224d6414e5574dfab9fb49
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..3919693966de7b30ca5ca633a8786eef2ef9b840
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..358f20d2728086134a844b23e3edabeab9ae3d44
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser-members.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">TaskParser Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classTaskParser.html">TaskParser</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classTaskParser.html#a86f40497d6666a02307886ed3a4056f3">loadTasks</a>(const QString &amp;taskPath, const QString &amp;difficultyPath, const QString &amp;topicPath)</td><td class="entry"><a class="el" href="classTaskParser.html">TaskParser</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser.html
new file mode 100644
index 0000000000000000000000000000000000000000..c67c711015c42d04e87de75f6bd9f8276096c364
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser.html
@@ -0,0 +1,176 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: TaskParser Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classTaskParser-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">TaskParser Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Parses tasks and subtasks from a JSON file.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="task__parser_8hpp_source.html">task_parser.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Collaboration diagram for TaskParser:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskParser__coll__graph.png" border="0" usemap="#aTaskParser_coll__map" alt="Collaboration graph"/></div>
+<map name="aTaskParser_coll__map" id="aTaskParser_coll__map">
+<area shape="rect" title="Parses tasks and subtasks from a JSON file." alt="" coords="5,5,96,75"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a86f40497d6666a02307886ed3a4056f3" id="r_a86f40497d6666a02307886ed3a4056f3"><td class="memItemLeft" align="right" valign="top">QVector&lt; QSharedPointer&lt; <a class="el" href="structTask.html">Task</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a86f40497d6666a02307886ed3a4056f3">loadTasks</a> (const QString &amp;taskPath, const QString &amp;difficultyPath, const QString &amp;topicPath)</td></tr>
+<tr class="memdesc:a86f40497d6666a02307886ed3a4056f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads tasks with all configuration JSON files.  <br /></td></tr>
+<tr class="separator:a86f40497d6666a02307886ed3a4056f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Parses tasks and subtasks from a JSON file. </p>
+<p>The <a class="el" href="classTaskParser.html" title="Parses tasks and subtasks from a JSON file.">TaskParser</a> class is responsible for loading tasks and their subtasks from a JSON file. It provides methods to parse the JSON data and convert it into <a class="el" href="structTask.html" title="Represents a task containing multiple subtasks.">Task</a> and <a class="el" href="structSubtask.html" title="Represents a subtask within a task.">Subtask</a> objects. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a id="a86f40497d6666a02307886ed3a4056f3" name="a86f40497d6666a02307886ed3a4056f3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a86f40497d6666a02307886ed3a4056f3">&#9670;&#160;</a></span>loadTasks()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QVector&lt; QSharedPointer&lt; <a class="el" href="structTask.html">Task</a> &gt; &gt; TaskParser::loadTasks </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>taskPath</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>difficultyPath</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>topicPath</em></span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Loads tasks with all configuration JSON files. </p>
+<p>This function reads the tasks, difficulty levels, and topic definitions from the specified JSON files. It parses the JSON data and constructs a vector of shared pointers to <a class="el" href="structTask.html" title="Represents a task containing multiple subtasks.">Task</a> objects. The tasks are sorted based on the defined topic order from the topic definition JSON file. If any of the files cannot be opened or if there is a JSON parsing error, an empty vector is returned.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">taskPath</td><td>The path to the JSON file containing the tasks. </td></tr>
+    <tr><td class="paramname">difficultyPath</td><td>The path to the JSON file containing the difficulty levels. </td></tr>
+    <tr><td class="paramname">topicPath</td><td>The path to the JSON file containing the topic definitions. </td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A vector of shared pointers to the loaded tasks. </dd></dl>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.png" border="0" usemap="#aclassTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph" alt=""/></div>
+<map name="aclassTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph" id="aclassTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph">
+<area shape="rect" title="Loads tasks with all configuration JSON files." alt="" coords="239,5,393,32"/>
+<area shape="rect" href="classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,5,191,32"/>
+<area shape="poly" title=" " alt="" coords="223,21,191,21,191,16,223,16"/>
+</map>
+</div>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="task__parser_8hpp_source.html">task_parser.hpp</a></li>
+<li><a class="el" href="task__parser_8cpp.html">task_parser.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..aa83af0c8e97c604b574d96f1120d040d8022c1e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser__coll__graph.map
@@ -0,0 +1,3 @@
+<map id="TaskParser" name="TaskParser">
+<area shape="rect" id="Node000001" title="Parses tasks and subtasks from a JSON file." alt="" coords="5,5,96,75"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..da5ff7edbc08679334bcba510f421788eda1af56
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser__coll__graph.md5
@@ -0,0 +1 @@
+96c3593d5afa7dc51ef07c7cb8d9ce28
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a63db1ce3bb4db61cd35c85a01e41c91c12bf66
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..197b75d1c1f6d5685298ca605ba815495f384fc6
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.map
@@ -0,0 +1,5 @@
+<map id="TaskParser::loadTasks" name="TaskParser::loadTasks">
+<area shape="rect" id="Node000001" title="Loads tasks with all configuration JSON files." alt="" coords="239,5,393,32"/>
+<area shape="rect" id="Node000002" href="$classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,5,191,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="223,21,191,21,191,16,223,16"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..482e437bdef25248dfea5beec0abf76983b705b1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.md5
@@ -0,0 +1 @@
+46e87e99f85c49d1816c18bec5a49527
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..db6dca2a55df25fa2e8402dac4c11b5f6ad8f8a6
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..35f5ce142780122c25d3148db037098f539d3157
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI-members.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">TaskUI Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="classTaskUI.html">TaskUI</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="classTaskUI.html#a8cb2994522ad6b1b59383515edddead3">failedRobotResetUI</a>(const QString &amp;error)</td><td class="entry"><a class="el" href="classTaskUI.html">TaskUI</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskUI.html#a6c2ca067880d519ab255a7608a268c8f">finishedRobotResetUI</a>()</td><td class="entry"><a class="el" href="classTaskUI.html">TaskUI</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classTaskUI.html#a62690c3b7147c20980da5c2323314025">initializeUI</a>(const QVector&lt; QSharedPointer&lt; Task &gt; &gt; &amp;tasks)</td><td class="entry"><a class="el" href="classTaskUI.html">TaskUI</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskUI.html#a53f64716c6328b25e37d822e687886cf">setTaskManager</a>(TaskManager *manager)</td><td class="entry"><a class="el" href="classTaskUI.html">TaskUI</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classTaskUI.html#ab6f629b7a42a49b94250768fbed7f4f4">setTaskUI</a>(int currentTaskIndex)</td><td class="entry"><a class="el" href="classTaskUI.html">TaskUI</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskUI.html#a11f88e4482442899fa19adf1f66fa030">startedRobotResetUI</a>(bool noSubtasksLeft)</td><td class="entry"><a class="el" href="classTaskUI.html">TaskUI</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classTaskUI.html#af43308f1438155bd927357ac93c7b9db">taskSelected</a>(int index)</td><td class="entry"><a class="el" href="classTaskUI.html">TaskUI</a></td><td class="entry"><span class="mlabel">signal</span></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="classTaskUI.html#a86f09b07fe3b4fd956f8c4ab02b8fae2">TaskUI</a>(QVBoxLayout *subtaskListLayout, QLabel *mainTitleLabel, QLabel *difficultyLabel, QLabel *folderLabel, QLabel *topicLabel, QPushButton *nextButton, QPushButton *previousButton, QToolButton *menuButton, QToolButton *resetRobotStartButton, QFrame *resetRobotFrame, QWidget *centralwidget, QWidget *parent=nullptr)</td><td class="entry"><a class="el" href="classTaskUI.html">TaskUI</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classTaskUI.html#a9f8872c2393d36d7c3e57cf7501c745e">updateSubtaskItemsUI</a>()</td><td class="entry"><a class="el" href="classTaskUI.html">TaskUI</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI.html
new file mode 100644
index 0000000000000000000000000000000000000000..898aed95f043da53aa9ab7af495832ac4e657852
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI.html
@@ -0,0 +1,507 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: TaskUI Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#signals">Signals</a> &#124;
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="classTaskUI-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">TaskUI Class Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Manages the user interface for tasks and subtasks.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="task__ui_8hpp_source.html">task_ui.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for TaskUI:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskUI__inherit__graph.png" border="0" usemap="#aTaskUI_inherit__map" alt="Inheritance graph"/></div>
+<map name="aTaskUI_inherit__map" id="aTaskUI_inherit__map">
+<area shape="rect" title="Manages the user interface for tasks and subtasks." alt="" coords="5,123,171,341"/>
+<area shape="rect" href="classQWidget.html" title=" " alt="" coords="58,5,119,75"/>
+<area shape="poly" title=" " alt="" coords="91,90,91,123,86,123,86,90"/>
+</map>
+</div>
+<div class="dynheader">
+Collaboration diagram for TaskUI:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskUI__coll__graph.png" border="0" usemap="#aTaskUI_coll__map" alt="Collaboration graph"/></div>
+<map name="aTaskUI_coll__map" id="aTaskUI_coll__map">
+<area shape="rect" title="Manages the user interface for tasks and subtasks." alt="" coords="5,123,171,341"/>
+<area shape="rect" href="classQWidget.html" title=" " alt="" coords="58,5,119,75"/>
+<area shape="poly" title=" " alt="" coords="91,90,91,123,86,123,86,90"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="signals" name="signals"></a>
+Signals</h2></td></tr>
+<tr class="memitem:af43308f1438155bd927357ac93c7b9db" id="r_af43308f1438155bd927357ac93c7b9db"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af43308f1438155bd927357ac93c7b9db">taskSelected</a> (int index)</td></tr>
+<tr class="memdesc:af43308f1438155bd927357ac93c7b9db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signal emitted when a task is selected.  <br /></td></tr>
+<tr class="separator:af43308f1438155bd927357ac93c7b9db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a86f09b07fe3b4fd956f8c4ab02b8fae2" id="r_a86f09b07fe3b4fd956f8c4ab02b8fae2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a86f09b07fe3b4fd956f8c4ab02b8fae2">TaskUI</a> (QVBoxLayout *subtaskListLayout, QLabel *mainTitleLabel, QLabel *difficultyLabel, QLabel *folderLabel, QLabel *topicLabel, QPushButton *nextButton, QPushButton *previousButton, QToolButton *menuButton, QToolButton *resetRobotStartButton, <a class="el" href="classQFrame.html">QFrame</a> *resetRobotFrame, <a class="el" href="classQWidget.html">QWidget</a> *centralwidget, <a class="el" href="classQWidget.html">QWidget</a> *parent=nullptr)</td></tr>
+<tr class="memdesc:a86f09b07fe3b4fd956f8c4ab02b8fae2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructs a <a class="el" href="classTaskUI.html" title="Manages the user interface for tasks and subtasks.">TaskUI</a> object.  <br /></td></tr>
+<tr class="separator:a86f09b07fe3b4fd956f8c4ab02b8fae2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a62690c3b7147c20980da5c2323314025" id="r_a62690c3b7147c20980da5c2323314025"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a62690c3b7147c20980da5c2323314025">initializeUI</a> (const QVector&lt; QSharedPointer&lt; <a class="el" href="structTask.html">Task</a> &gt; &gt; &amp;tasks)</td></tr>
+<tr class="memdesc:a62690c3b7147c20980da5c2323314025"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the UI with the loaded tasks.  <br /></td></tr>
+<tr class="separator:a62690c3b7147c20980da5c2323314025"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab6f629b7a42a49b94250768fbed7f4f4" id="r_ab6f629b7a42a49b94250768fbed7f4f4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab6f629b7a42a49b94250768fbed7f4f4">setTaskUI</a> (int currentTaskIndex)</td></tr>
+<tr class="memdesc:ab6f629b7a42a49b94250768fbed7f4f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the UI elements for the current task.  <br /></td></tr>
+<tr class="separator:ab6f629b7a42a49b94250768fbed7f4f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9f8872c2393d36d7c3e57cf7501c745e" id="r_a9f8872c2393d36d7c3e57cf7501c745e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9f8872c2393d36d7c3e57cf7501c745e">updateSubtaskItemsUI</a> ()</td></tr>
+<tr class="memdesc:a9f8872c2393d36d7c3e57cf7501c745e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the UI elements for the subtasks.  <br /></td></tr>
+<tr class="separator:a9f8872c2393d36d7c3e57cf7501c745e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a53f64716c6328b25e37d822e687886cf" id="r_a53f64716c6328b25e37d822e687886cf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a53f64716c6328b25e37d822e687886cf">setTaskManager</a> (<a class="el" href="classTaskManager.html">TaskManager</a> *manager)</td></tr>
+<tr class="memdesc:a53f64716c6328b25e37d822e687886cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the <a class="el" href="classTaskManager.html" title="Manages tasks and their execution within the application.">TaskManager</a> object.  <br /></td></tr>
+<tr class="separator:a53f64716c6328b25e37d822e687886cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a11f88e4482442899fa19adf1f66fa030" id="r_a11f88e4482442899fa19adf1f66fa030"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a11f88e4482442899fa19adf1f66fa030">startedRobotResetUI</a> (bool noSubtasksLeft)</td></tr>
+<tr class="memdesc:a11f88e4482442899fa19adf1f66fa030"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update the UI to show that the robot reset has been started.  <br /></td></tr>
+<tr class="separator:a11f88e4482442899fa19adf1f66fa030"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6c2ca067880d519ab255a7608a268c8f" id="r_a6c2ca067880d519ab255a7608a268c8f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6c2ca067880d519ab255a7608a268c8f">finishedRobotResetUI</a> ()</td></tr>
+<tr class="memdesc:a6c2ca067880d519ab255a7608a268c8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update the UI to show that the robot reset has finished.  <br /></td></tr>
+<tr class="separator:a6c2ca067880d519ab255a7608a268c8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8cb2994522ad6b1b59383515edddead3" id="r_a8cb2994522ad6b1b59383515edddead3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8cb2994522ad6b1b59383515edddead3">failedRobotResetUI</a> (const QString &amp;error)</td></tr>
+<tr class="memdesc:a8cb2994522ad6b1b59383515edddead3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update the UI to show that the robot reset has failed.  <br /></td></tr>
+<tr class="separator:a8cb2994522ad6b1b59383515edddead3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Manages the user interface for tasks and subtasks. </p>
+<p>The <a class="el" href="classTaskUI.html" title="Manages the user interface for tasks and subtasks.">TaskUI</a> class is responsible for initializing and updating the UI elements related to tasks and subtasks. It interacts with the <a class="el" href="classTaskManager.html" title="Manages tasks and their execution within the application.">TaskManager</a> and <a class="el" href="classSidebar.html" title="Represents the sidebar UI component for displaying tasks.">Sidebar</a> to provide a cohesive user experience. </p>
+</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a id="a86f09b07fe3b4fd956f8c4ab02b8fae2" name="a86f09b07fe3b4fd956f8c4ab02b8fae2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a86f09b07fe3b4fd956f8c4ab02b8fae2">&#9670;&#160;</a></span>TaskUI()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">TaskUI::TaskUI </td>
+          <td>(</td>
+          <td class="paramtype">QVBoxLayout *</td>          <td class="paramname"><span class="paramname"><em>subtaskListLayout</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">QLabel *</td>          <td class="paramname"><span class="paramname"><em>mainTitleLabel</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">QLabel *</td>          <td class="paramname"><span class="paramname"><em>difficultyLabel</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">QLabel *</td>          <td class="paramname"><span class="paramname"><em>folderLabel</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">QLabel *</td>          <td class="paramname"><span class="paramname"><em>topicLabel</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">QPushButton *</td>          <td class="paramname"><span class="paramname"><em>nextButton</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">QPushButton *</td>          <td class="paramname"><span class="paramname"><em>previousButton</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">QToolButton *</td>          <td class="paramname"><span class="paramname"><em>menuButton</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">QToolButton *</td>          <td class="paramname"><span class="paramname"><em>resetRobotStartButton</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classQFrame.html">QFrame</a> *</td>          <td class="paramname"><span class="paramname"><em>resetRobotFrame</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classQWidget.html">QWidget</a> *</td>          <td class="paramname"><span class="paramname"><em>centralwidget</em></span>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="classQWidget.html">QWidget</a> *</td>          <td class="paramname"><span class="paramname"><em>parent</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span>&#160;)</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Constructs a <a class="el" href="classTaskUI.html" title="Manages the user interface for tasks and subtasks.">TaskUI</a> object. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">subtaskListLayout</td><td>Pointer to the vertical layout for displaying subtasks. </td></tr>
+    <tr><td class="paramname">mainTitleLabel</td><td>Pointer to the QLabel for displaying the main title. </td></tr>
+    <tr><td class="paramname">difficultyLabel</td><td>Pointer to the QLabel for displaying the difficulty level. </td></tr>
+    <tr><td class="paramname">folderLabel</td><td>Pointer to the QLabel for displaying the folder information. </td></tr>
+    <tr><td class="paramname">nextButton</td><td>Pointer to the QPushButton for navigating to the next task. </td></tr>
+    <tr><td class="paramname">previousButton</td><td>Pointer to the QPushButton for navigating to the previous task. </td></tr>
+    <tr><td class="paramname">menuButton</td><td>Pointer to the QToolButton for opening the sidebar. </td></tr>
+    <tr><td class="paramname">resetRobotStartButton</td><td>Pointer to the QToolButton for resetting the robot. </td></tr>
+    <tr><td class="paramname">resetRobotFrame</td><td>Pointer to the <a class="el" href="classQFrame.html">QFrame</a> displaying the reset of the robot. </td></tr>
+    <tr><td class="paramname">centralWidget</td><td>Pointer to the central <a class="el" href="classQWidget.html">QWidget</a> for the plugin. </td></tr>
+    <tr><td class="paramname">parent</td><td>Pointer to the parent <a class="el" href="classQObject.html">QObject</a>. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a id="a8cb2994522ad6b1b59383515edddead3" name="a8cb2994522ad6b1b59383515edddead3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8cb2994522ad6b1b59383515edddead3">&#9670;&#160;</a></span>failedRobotResetUI()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskUI::failedRobotResetUI </td>
+          <td>(</td>
+          <td class="paramtype">const QString &amp;</td>          <td class="paramname"><span class="paramname"><em>error</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Update the UI to show that the robot reset has failed. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">error</td><td>the error that occured while resetting the robot. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a6c2ca067880d519ab255a7608a268c8f" name="a6c2ca067880d519ab255a7608a268c8f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6c2ca067880d519ab255a7608a268c8f">&#9670;&#160;</a></span>finishedRobotResetUI()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskUI::finishedRobotResetUI </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Update the UI to show that the robot reset has finished. </p>
+
+</div>
+</div>
+<a id="a62690c3b7147c20980da5c2323314025" name="a62690c3b7147c20980da5c2323314025"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a62690c3b7147c20980da5c2323314025">&#9670;&#160;</a></span>initializeUI()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskUI::initializeUI </td>
+          <td>(</td>
+          <td class="paramtype">const QVector&lt; QSharedPointer&lt; <a class="el" href="structTask.html">Task</a> &gt; &gt; &amp;</td>          <td class="paramname"><span class="paramname"><em>tasks</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Initializes the UI with the loaded tasks. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">tasks</td><td>Vector of loaded tasks. </td></tr>
+  </table>
+  </dd>
+</dl>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.png" border="0" usemap="#aclassTaskUI_a62690c3b7147c20980da5c2323314025_icgraph" alt=""/></div>
+<map name="aclassTaskUI_a62690c3b7147c20980da5c2323314025_icgraph" id="aclassTaskUI_a62690c3b7147c20980da5c2323314025_icgraph">
+<area shape="rect" title="Initializes the UI with the loaded tasks." alt="" coords="239,5,371,32"/>
+<area shape="rect" href="classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,5,191,32"/>
+<area shape="poly" title=" " alt="" coords="223,21,191,21,191,16,223,16"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="a53f64716c6328b25e37d822e687886cf" name="a53f64716c6328b25e37d822e687886cf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a53f64716c6328b25e37d822e687886cf">&#9670;&#160;</a></span>setTaskManager()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskUI::setTaskManager </td>
+          <td>(</td>
+          <td class="paramtype"><a class="el" href="classTaskManager.html">TaskManager</a> *</td>          <td class="paramname"><span class="paramname"><em>manager</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sets the <a class="el" href="classTaskManager.html" title="Manages tasks and their execution within the application.">TaskManager</a> object. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">manager</td><td>Pointer to the <a class="el" href="classTaskManager.html" title="Manages tasks and their execution within the application.">TaskManager</a> object. </td></tr>
+  </table>
+  </dd>
+</dl>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.png" border="0" usemap="#aclassTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph" alt=""/></div>
+<map name="aclassTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph" id="aclassTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph">
+<area shape="rect" title="Sets the TaskManager object." alt="" coords="239,5,406,32"/>
+<area shape="rect" href="classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,5,191,32"/>
+<area shape="poly" title=" " alt="" coords="223,21,191,21,191,16,223,16"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="ab6f629b7a42a49b94250768fbed7f4f4" name="ab6f629b7a42a49b94250768fbed7f4f4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab6f629b7a42a49b94250768fbed7f4f4">&#9670;&#160;</a></span>setTaskUI()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskUI::setTaskUI </td>
+          <td>(</td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>currentTaskIndex</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Sets the UI elements for the current task. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">currentTaskIndex</td><td>Index of the current task. </td></tr>
+  </table>
+  </dd>
+</dl>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.png" border="0" usemap="#aclassTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph" alt=""/></div>
+<map name="aclassTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph" id="aclassTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph">
+<area shape="rect" title="Sets the UI elements for the current task." alt="" coords="457,56,588,83"/>
+<area shape="rect" href="classTaskManager.html#a51989e6fb895fd817286153750f07d75" title="Selects a task by its index." alt="" coords="239,56,409,83"/>
+<area shape="poly" title=" " alt="" coords="441,72,409,72,409,67,441,67"/>
+<area shape="rect" href="classTaskManager.html#a327677e3a17f1a707095119328a96179" title="Slot for changing to the next task." alt="" coords="18,5,178,32"/>
+<area shape="poly" title=" " alt="" coords="246,55,160,35,161,30,247,49"/>
+<area shape="rect" href="classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e" title="Slot for changing to the previous task." alt="" coords="6,56,190,83"/>
+<area shape="poly" title=" " alt="" coords="223,72,191,72,191,67,223,67"/>
+<area shape="rect" href="classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,107,191,133"/>
+<area shape="poly" title=" " alt="" coords="247,89,161,109,160,103,246,84"/>
+</map>
+</div>
+
+</div>
+</div>
+<a id="a11f88e4482442899fa19adf1f66fa030" name="a11f88e4482442899fa19adf1f66fa030"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a11f88e4482442899fa19adf1f66fa030">&#9670;&#160;</a></span>startedRobotResetUI()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskUI::startedRobotResetUI </td>
+          <td>(</td>
+          <td class="paramtype">bool</td>          <td class="paramname"><span class="paramname"><em>noSubtasksLeft</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Update the UI to show that the robot reset has been started. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">noSubtasksLeft</td><td>indicator, if subtasks are running after the rest or not. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="af43308f1438155bd927357ac93c7b9db" name="af43308f1438155bd927357ac93c7b9db"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af43308f1438155bd927357ac93c7b9db">&#9670;&#160;</a></span>taskSelected</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskUI::taskSelected </td>
+          <td>(</td>
+          <td class="paramtype">int</td>          <td class="paramname"><span class="paramname"><em>index</em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">signal</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Signal emitted when a task is selected. </p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">index</td><td>Index of the selected task. </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a id="a9f8872c2393d36d7c3e57cf7501c745e" name="a9f8872c2393d36d7c3e57cf7501c745e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9f8872c2393d36d7c3e57cf7501c745e">&#9670;&#160;</a></span>updateSubtaskItemsUI()</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void TaskUI::updateSubtaskItemsUI </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Updates the UI elements for the subtasks. </p>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.png" border="0" usemap="#aclassTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph" alt=""/></div>
+<map name="aclassTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph" id="aclassTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph">
+<area shape="rect" title="Updates the UI elements for the subtasks." alt="" coords="476,81,681,108"/>
+<area shape="rect" href="classTaskManager.html#a51989e6fb895fd817286153750f07d75" title="Selects a task by its index." alt="" coords="248,56,418,83"/>
+<area shape="poly" title=" " alt="" coords="460,85,419,81,419,75,461,80"/>
+<area shape="rect" href="classTaskManager.html#a9f3de937346f77e565d555a59a8a0da0" title="Show or hide the solution of a subtask." alt="" coords="239,107,428,133"/>
+<area shape="poly" title=" " alt="" coords="461,110,429,113,428,108,460,104"/>
+<area shape="rect" href="classTaskManager.html#a327677e3a17f1a707095119328a96179" title="Slot for changing to the next task." alt="" coords="18,5,178,32"/>
+<area shape="poly" title=" " alt="" coords="252,55,163,35,164,30,253,50"/>
+<area shape="rect" href="classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e" title="Slot for changing to the previous task." alt="" coords="6,56,190,83"/>
+<area shape="poly" title=" " alt="" coords="233,72,191,72,191,67,233,67"/>
+<area shape="rect" href="classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,107,191,133"/>
+<area shape="poly" title=" " alt="" coords="253,89,164,109,163,103,252,84"/>
+</map>
+</div>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="task__ui_8hpp_source.html">task_ui.hpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..01af04bcc651295676ee5942c60b3dee86cfa8f3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__coll__graph.map
@@ -0,0 +1,5 @@
+<map id="TaskUI" name="TaskUI">
+<area shape="rect" id="Node000001" title="Manages the user interface for tasks and subtasks." alt="" coords="5,123,171,341"/>
+<area shape="rect" id="Node000002" href="$classQWidget.html" title=" " alt="" coords="58,5,119,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="91,90,91,123,86,123,86,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f5fe737fc196ef3f33b9e1fdc7fe0695907620a3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__coll__graph.md5
@@ -0,0 +1 @@
+d8a8bd412d1b8f927e0d41125a01f593
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c6fcbec717747af5eec82490609feb21de87697
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__inherit__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__inherit__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..01af04bcc651295676ee5942c60b3dee86cfa8f3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__inherit__graph.map
@@ -0,0 +1,5 @@
+<map id="TaskUI" name="TaskUI">
+<area shape="rect" id="Node000001" title="Manages the user interface for tasks and subtasks." alt="" coords="5,123,171,341"/>
+<area shape="rect" id="Node000002" href="$classQWidget.html" title=" " alt="" coords="58,5,119,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="91,90,91,123,86,123,86,90"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f5fe737fc196ef3f33b9e1fdc7fe0695907620a3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__inherit__graph.md5
@@ -0,0 +1 @@
+d8a8bd412d1b8f927e0d41125a01f593
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__inherit__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__inherit__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..3c6fcbec717747af5eec82490609feb21de87697
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI__inherit__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..72f3df9037b64af0c3fb0dc5165bb3848c3a55c3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.map
@@ -0,0 +1,5 @@
+<map id="TaskUI::setTaskManager" name="TaskUI::setTaskManager">
+<area shape="rect" id="Node000001" title="Sets the TaskManager object." alt="" coords="239,5,406,32"/>
+<area shape="rect" id="Node000002" href="$classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,5,191,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="223,21,191,21,191,16,223,16"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..19b4b3bbe6eb03a3bafaba0f888687f00761b2ff
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.md5
@@ -0,0 +1 @@
+a431037c886be0bd403c466a6677aac3
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..d89978112affe316a32ddb29ac975c912624c08f
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..1b500f0dacae30855c94067e839ea98604398be5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.map
@@ -0,0 +1,5 @@
+<map id="TaskUI::initializeUI" name="TaskUI::initializeUI">
+<area shape="rect" id="Node000001" title="Initializes the UI with the loaded tasks." alt="" coords="239,5,371,32"/>
+<area shape="rect" id="Node000002" href="$classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,5,191,32"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="223,21,191,21,191,16,223,16"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..61acd8cd4a6b6f8fc5eb146494df1d8518be5115
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.md5
@@ -0,0 +1 @@
+91a35ef632c4a4b4f2513844417f3312
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..6a550bb8a69b410eb2523637bf1e822a56a9a300
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..a4eaee2efe820a227c6cb48fb475ac60ed1b9e68
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.map
@@ -0,0 +1,13 @@
+<map id="TaskUI::updateSubtaskItemsUI" name="TaskUI::updateSubtaskItemsUI">
+<area shape="rect" id="Node000001" title="Updates the UI elements for the subtasks." alt="" coords="476,81,681,108"/>
+<area shape="rect" id="Node000002" href="$classTaskManager.html#a51989e6fb895fd817286153750f07d75" title="Selects a task by its index." alt="" coords="248,56,418,83"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="460,85,419,81,419,75,461,80"/>
+<area shape="rect" id="Node000006" href="$classTaskManager.html#a9f3de937346f77e565d555a59a8a0da0" title="Show or hide the solution of a subtask." alt="" coords="239,107,428,133"/>
+<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="461,110,429,113,428,108,460,104"/>
+<area shape="rect" id="Node000003" href="$classTaskManager.html#a327677e3a17f1a707095119328a96179" title="Slot for changing to the next task." alt="" coords="18,5,178,32"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="252,55,163,35,164,30,253,50"/>
+<area shape="rect" id="Node000004" href="$classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e" title="Slot for changing to the previous task." alt="" coords="6,56,190,83"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="233,72,191,72,191,67,233,67"/>
+<area shape="rect" id="Node000005" href="$classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,107,191,133"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="253,89,164,109,163,103,252,84"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..882ae93d1a56b09015aa8216bcfd5ebebae2f011
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.md5
@@ -0,0 +1 @@
+bc398c4c54c36ab30d69eda22ff301a0
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..68f46b97a6e027f531035fcdf4699adfa7b41a94
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..aac797872a5c0d05ac6b039902db9af3e5bbac19
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.map
@@ -0,0 +1,11 @@
+<map id="TaskUI::setTaskUI" name="TaskUI::setTaskUI">
+<area shape="rect" id="Node000001" title="Sets the UI elements for the current task." alt="" coords="457,56,588,83"/>
+<area shape="rect" id="Node000002" href="$classTaskManager.html#a51989e6fb895fd817286153750f07d75" title="Selects a task by its index." alt="" coords="239,56,409,83"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="441,72,409,72,409,67,441,67"/>
+<area shape="rect" id="Node000003" href="$classTaskManager.html#a327677e3a17f1a707095119328a96179" title="Slot for changing to the next task." alt="" coords="18,5,178,32"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="246,55,160,35,161,30,247,49"/>
+<area shape="rect" id="Node000004" href="$classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e" title="Slot for changing to the previous task." alt="" coords="6,56,190,83"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="223,72,191,72,191,67,223,67"/>
+<area shape="rect" id="Node000005" href="$classTaskManager.html#a9c906455542360f6760169599f2640a3" title="Constructs a TaskManager object." alt="" coords="5,107,191,133"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="247,89,161,109,160,103,246,84"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..e3a43db7c0b60a8a18281f9385fc12735c77b632
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.md5
@@ -0,0 +1 @@
+cc833ed0cb3087e923b0d0ff6b7dff71
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..dcedca243488eca39a8549b4a688a8571b4c724d
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classes.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classes.html
new file mode 100644
index 0000000000000000000000000000000000000000..416ca560b51bb482e90b4952bb3f3e6cc0c46523
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/classes.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Class Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Class Index</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="qindex"><a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_N">N</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_Q">Q</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a></div>
+<div class="classindex">
+<dl class="classindex even">
+<dt class="alphachar"><a id="letter_C" name="letter_C">C</a></dt>
+<dd><a class="el" href="classCustomListWidget.html">CustomListWidget</a></dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a id="letter_E" name="letter_E">E</a></dt>
+<dd><a class="el" href="classExecuteFrame.html">ExecuteFrame</a></dd></dl>
+<dl class="classindex even">
+<dt class="alphachar"><a id="letter_L" name="letter_L">L</a></dt>
+<dd><a class="el" href="classLearnEnvironment.html">LearnEnvironment</a></dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a id="letter_N" name="letter_N">N</a></dt>
+<dd><a class="el" href="classNotebookConverter.html">NotebookConverter</a></dd></dl>
+<dl class="classindex even">
+<dt class="alphachar"><a id="letter_P" name="letter_P">P</a></dt>
+<dd><a class="el" href="classProcessRunner.html">ProcessRunner</a></dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a id="letter_Q" name="letter_Q">Q</a></dt>
+<dd><a class="el" href="classQFrame.html">QFrame</a></dd><dd><a class="el" href="classQListWidget.html">QListWidget</a></dd><dd><a class="el" href="classQObject.html">QObject</a></dd><dd><a class="el" href="classQWidget.html">QWidget</a></dd></dl>
+<dl class="classindex even">
+<dt class="alphachar"><a id="letter_S" name="letter_S">S</a></dt>
+<dd><a class="el" href="classScriptWorker.html">ScriptWorker</a></dd><dd><a class="el" href="classSidebar.html">Sidebar</a></dd><dd><a class="el" href="structSubtask.html">Subtask</a></dd><dd><a class="el" href="classSubtaskItem.html">SubtaskItem</a></dd></dl>
+<dl class="classindex odd">
+<dt class="alphachar"><a id="letter_T" name="letter_T">T</a></dt>
+<dd><a class="el" href="structTask.html">Task</a></dd><dd><a class="el" href="classTaskExecutor.html">TaskExecutor</a></dd><dd><a class="el" href="classTaskManager.html">TaskManager</a></dd><dd><a class="el" href="classTaskParser.html">TaskParser</a></dd><dd><a class="el" href="classTaskUI.html">TaskUI</a></dd></dl>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/clipboard.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/clipboard.js
new file mode 100644
index 0000000000000000000000000000000000000000..42c1fb0e02dce9ce8635e0a8d42e613a86640e7b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/clipboard.js
@@ -0,0 +1,61 @@
+/**
+
+The code below is based on the Doxygen Awesome project, see
+https://github.com/jothepro/doxygen-awesome-css
+
+MIT License
+
+Copyright (c) 2021 - 2022 jothepro
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*/
+
+let clipboard_title = "Copy to clipboard"
+let clipboard_icon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>`
+let clipboard_successIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>`
+let clipboard_successDuration = 1000
+
+$(function() {
+  if(navigator.clipboard) {
+    const fragments = document.getElementsByClassName("fragment")
+    for(const fragment of fragments) {
+      const clipboard_div = document.createElement("div")
+      clipboard_div.classList.add("clipboard")
+      clipboard_div.innerHTML = clipboard_icon
+      clipboard_div.title = clipboard_title
+      $(clipboard_div).click(function() {
+        const content = this.parentNode.cloneNode(true)
+        // filter out line number and folded fragments from file listings
+        content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() })
+        let text = content.textContent
+        // remove trailing newlines and trailing spaces from empty lines
+        text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'')
+        navigator.clipboard.writeText(text);
+        this.classList.add("success")
+        this.innerHTML = clipboard_successIcon
+        window.setTimeout(() => { // switch back to normal icon after timeout
+            this.classList.remove("success")
+            this.innerHTML = clipboard_icon
+        }, clipboard_successDuration);
+      })
+      fragment.insertBefore(clipboard_div, fragment.firstChild)
+    }
+  }
+})
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/closed.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/closed.png
new file mode 100644
index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/closed.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/cookie.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/cookie.js
new file mode 100644
index 0000000000000000000000000000000000000000..53ad21d98119a04bd7f6e558e6a4a04364e2a1cb
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/cookie.js
@@ -0,0 +1,58 @@
+/*!
+ Cookie helper functions
+ Copyright (c) 2023 Dimitri van Heesch
+ Released under MIT license.
+*/
+let Cookie = {
+  cookie_namespace: 'doxygen_',
+
+  readSetting(cookie,defVal) {
+    if (window.chrome) {
+      const val = localStorage.getItem(this.cookie_namespace+cookie) ||
+                  sessionStorage.getItem(this.cookie_namespace+cookie);
+      if (val) return val;
+    } else {
+      let myCookie = this.cookie_namespace+cookie+"=";
+      if (document.cookie) {
+        const index = document.cookie.indexOf(myCookie);
+        if (index != -1) {
+          const valStart = index + myCookie.length;
+          let valEnd = document.cookie.indexOf(";", valStart);
+          if (valEnd == -1) {
+            valEnd = document.cookie.length;
+          }
+          return document.cookie.substring(valStart, valEnd);
+        }
+      }
+    }
+    return defVal;
+  },
+
+  writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete
+    if (window.chrome) {
+      if (days==0) {
+        sessionStorage.setItem(this.cookie_namespace+cookie,val);
+      } else {
+        localStorage.setItem(this.cookie_namespace+cookie,val);
+      }
+    } else {
+      let date = new Date();
+      date.setTime(date.getTime()+(days*24*60*60*1000));
+      const expiration = days!=0 ? "expires="+date.toGMTString()+";" : "";
+      document.cookie = this.cookie_namespace + cookie + "=" +
+                        val + "; SameSite=Lax;" + expiration + "path=/";
+    }
+  },
+
+  eraseSetting(cookie) {
+    if (window.chrome) {
+      if (localStorage.getItem(this.cookie_namespace+cookie)) {
+        localStorage.removeItem(this.cookie_namespace+cookie);
+      } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) {
+        sessionStorage.removeItem(this.cookie_namespace+cookie);
+      }
+    } else {
+      this.writeSetting(cookie,'',-1);
+    }
+  },
+}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8cpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..74426368dcb1fe8dc2f9577c61b2c271c6dc377a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8cpp.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: custom_list_widget.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">custom_list_widget.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="custom__list__widget_8hpp_source.html">learn_environment/custom_list_widget.hpp</a>&quot;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for custom_list_widget.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="custom__list__widget_8cpp__incl.png" border="0" usemap="#acustom__list__widget_8cpp" alt=""/></div>
+<map name="acustom__list__widget_8cpp" id="acustom__list__widget_8cpp">
+<area shape="rect" title=" " alt="" coords="96,5,254,32"/>
+<area shape="rect" href="custom__list__widget_8hpp.html" title=" " alt="" coords="88,80,262,123"/>
+<area shape="poly" title=" " alt="" coords="177,32,177,65,172,65,172,32"/>
+<area shape="rect" title=" " alt="" coords="5,171,99,197"/>
+<area shape="poly" title=" " alt="" coords="145,126,85,164,82,160,142,121"/>
+<area shape="rect" title=" " alt="" coords="122,171,227,197"/>
+<area shape="poly" title=" " alt="" coords="177,123,177,155,172,155,172,123"/>
+<area shape="rect" title=" " alt="" coords="251,171,346,197"/>
+<area shape="poly" title=" " alt="" coords="208,121,268,160,265,164,205,126"/>
+</map>
+</div>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8cpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8cpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..a0ffc8ff453099e2f1f78bf79f5fd46bb3c92569
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8cpp__incl.map
@@ -0,0 +1,11 @@
+<map id="custom_list_widget.cpp" name="custom_list_widget.cpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="96,5,254,32"/>
+<area shape="rect" id="Node000002" href="$custom__list__widget_8hpp.html" title=" " alt="" coords="88,80,262,123"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="177,32,177,65,172,65,172,32"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="5,171,99,197"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="145,126,85,164,82,160,142,121"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="122,171,227,197"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="177,123,177,155,172,155,172,123"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="251,171,346,197"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="208,121,268,160,265,164,205,126"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..c7d28445d727370939596a6b455e3233dd9dd967
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8cpp__incl.md5
@@ -0,0 +1 @@
+0e616bddb24c80cb08770059db8982c4
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8cpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8cpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..27d2b94fa45fe2ae5a80e5b6cce08b12351aff43
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8cpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..fd6a7d5f715ad1589b462d10f1ca32e4cfaa664e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: custom_list_widget.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">custom_list_widget.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QListWidget&gt;</code><br />
+<code>#include &lt;QMouseEvent&gt;</code><br />
+<code>#include &lt;QApplication&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for custom_list_widget.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="custom__list__widget_8hpp__incl.png" border="0" usemap="#acustom__list__widget_8hpp" alt=""/></div>
+<map name="acustom__list__widget_8hpp" id="acustom__list__widget_8hpp">
+<area shape="rect" title=" " alt="" coords="96,5,254,32"/>
+<area shape="rect" title=" " alt="" coords="5,80,99,107"/>
+<area shape="poly" title=" " alt="" coords="155,35,88,74,85,69,152,30"/>
+<area shape="rect" title=" " alt="" coords="122,80,227,107"/>
+<area shape="poly" title=" " alt="" coords="177,33,177,64,172,64,172,33"/>
+<area shape="rect" title=" " alt="" coords="251,80,346,107"/>
+<area shape="poly" title=" " alt="" coords="198,30,266,70,263,74,195,35"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="custom__list__widget_8hpp__dep__incl.png" border="0" usemap="#acustom__list__widget_8hppdep" alt=""/></div>
+<map name="acustom__list__widget_8hppdep" id="acustom__list__widget_8hppdep">
+<area shape="rect" title=" " alt="" coords="121,5,280,32"/>
+<area shape="rect" href="custom__list__widget_8cpp.html" title=" " alt="" coords="5,80,164,107"/>
+<area shape="poly" title=" " alt="" coords="169,43,106,82,103,77,166,38"/>
+<area shape="rect" href="sidebar_8cpp.html" title=" " alt="" coords="156,155,245,181"/>
+<area shape="poly" title=" " alt="" coords="203,48,203,154,198,154,198,48"/>
+<area shape="rect" href="sidebar_8hpp.html" title=" " alt="" coords="238,80,326,107"/>
+<area shape="poly" title=" " alt="" coords="228,41,270,78,266,82,224,44"/>
+<area shape="poly" title=" " alt="" coords="258,119,216,156,213,152,255,115"/>
+<area shape="rect" href="task__ui_8hpp.html" title=" " alt="" coords="268,155,357,181"/>
+<area shape="poly" title=" " alt="" coords="296,120,310,153,305,155,291,122"/>
+<area shape="rect" href="learn__environment_8cpp.html" title=" " alt="" coords="98,304,250,331"/>
+<area shape="poly" title=" " alt="" coords="254,185,188,206,161,218,145,231,140,249,144,268,165,302,161,305,139,270,135,248,141,228,158,213,186,201,252,180"/>
+<area shape="rect" href="learn__environment_8hpp.html" title=" " alt="" coords="155,229,307,256"/>
+<area shape="poly" title=" " alt="" coords="289,194,247,231,243,227,285,190"/>
+<area shape="rect" href="task__manager_8cpp.html" title=" " alt="" coords="331,229,459,256"/>
+<area shape="poly" title=" " alt="" coords="340,190,383,227,379,231,337,194"/>
+<area shape="rect" href="task__ui_8cpp.html" title=" " alt="" coords="483,229,571,256"/>
+<area shape="poly" title=" " alt="" coords="365,184,490,226,489,231,363,189"/>
+<area shape="poly" title=" " alt="" coords="214,270,186,305,182,302,210,267"/>
+</map>
+</div>
+</div>
+<p><a href="custom__list__widget_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCustomListWidget.html">CustomListWidget</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A custom <a class="el" href="classQListWidget.html">QListWidget</a> with enhanced mouse interaction.  <a href="classCustomListWidget.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..fcc76a5f0bc02ddb7587f1f2f7716b26afab6b76
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__dep__incl.map
@@ -0,0 +1,21 @@
+<map id="custom_list_widget.hpp" name="custom_list_widget.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="121,5,280,32"/>
+<area shape="rect" id="Node000002" href="$custom__list__widget_8cpp.html" title=" " alt="" coords="5,80,164,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="169,43,106,82,103,77,166,38"/>
+<area shape="rect" id="Node000003" href="$sidebar_8cpp.html" title=" " alt="" coords="156,155,245,181"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="203,48,203,154,198,154,198,48"/>
+<area shape="rect" id="Node000004" href="$sidebar_8hpp.html" title=" " alt="" coords="238,80,326,107"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="228,41,270,78,266,82,224,44"/>
+<area shape="poly" id="edge4_Node000004_Node000003" title=" " alt="" coords="258,119,216,156,213,152,255,115"/>
+<area shape="rect" id="Node000005" href="$task__ui_8hpp.html" title=" " alt="" coords="268,155,357,181"/>
+<area shape="poly" id="edge5_Node000004_Node000005" title=" " alt="" coords="296,120,310,153,305,155,291,122"/>
+<area shape="rect" id="Node000006" href="$learn__environment_8cpp.html" title=" " alt="" coords="98,304,250,331"/>
+<area shape="poly" id="edge6_Node000005_Node000006" title=" " alt="" coords="254,185,188,206,161,218,145,231,140,249,144,268,165,302,161,305,139,270,135,248,141,228,158,213,186,201,252,180"/>
+<area shape="rect" id="Node000007" href="$learn__environment_8hpp.html" title=" " alt="" coords="155,229,307,256"/>
+<area shape="poly" id="edge7_Node000005_Node000007" title=" " alt="" coords="289,194,247,231,243,227,285,190"/>
+<area shape="rect" id="Node000008" href="$task__manager_8cpp.html" title=" " alt="" coords="331,229,459,256"/>
+<area shape="poly" id="edge9_Node000005_Node000008" title=" " alt="" coords="340,190,383,227,379,231,337,194"/>
+<area shape="rect" id="Node000009" href="$task__ui_8cpp.html" title=" " alt="" coords="483,229,571,256"/>
+<area shape="poly" id="edge10_Node000005_Node000009" title=" " alt="" coords="365,184,490,226,489,231,363,189"/>
+<area shape="poly" id="edge8_Node000007_Node000006" title=" " alt="" coords="214,270,186,305,182,302,210,267"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..fbd0893d30fa2ee3c82fe1a130d641c32814f45f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+14ae4177eb656861588d219bed0e6a55
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea6043d46f30ae50fb76656bd140f73d02f4db9f
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..b769fb357090b91bb5de3ff730467f0cfd14af2d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__incl.map
@@ -0,0 +1,9 @@
+<map id="custom_list_widget.hpp" name="custom_list_widget.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="96,5,254,32"/>
+<area shape="rect" id="Node000002" title=" " alt="" coords="5,80,99,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="155,35,88,74,85,69,152,30"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="122,80,227,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="177,33,177,64,172,64,172,33"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="251,80,346,107"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="198,30,266,70,263,74,195,35"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..32a96d83faf46dde40620794899f87a3253123cf
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__incl.md5
@@ -0,0 +1 @@
+c932e0b5f9f2b5bb1de457aae293a9b8
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..7b6fb1570c5177a9837c67d94022621ba7762d90
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..4728824ee951a20b29a0f2a8ca0a8416220d0c21
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/custom__list__widget_8hpp_source.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: custom_list_widget.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">custom_list_widget.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="custom__list__widget_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef CUSTOM_LIST_WIDGET_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define CUSTOM_LIST_WIDGET_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &lt;QListWidget&gt;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include &lt;QMouseEvent&gt;</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="preprocessor">#include &lt;QApplication&gt;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span> </div>
+<div class="foldopen" id="foldopen00016" data-start="{" data-end="};">
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"><a class="line" href="classCustomListWidget.html">   16</a></span><span class="keyword">class </span><a class="code hl_class" href="classCustomListWidget.html">CustomListWidget</a> : <span class="keyword">public</span> <a class="code hl_class" href="classQListWidget.html">QListWidget</a> {</div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span>    Q_OBJECT</div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span> </div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span>    <span class="keyword">explicit</span> <a class="code hl_function" href="classCustomListWidget.html#ab37ab040c9872e60767fff8d1525ccad">CustomListWidget</a>(<a class="code hl_class" href="classQWidget.html">QWidget</a> *parent = <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="keyword">protected</span>:</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classCustomListWidget.html#adc3f7462d5db3e7c9fe4c5fd59076331">mouseMoveEvent</a>(QMouseEvent *event) <span class="keyword">override</span>;</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classCustomListWidget.html#a5d487b35f9dc9cd601b962e68b142e0b">leaveEvent</a>(QEvent *event) <span class="keyword">override</span>;</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span>    <span class="keywordtype">void</span> formatListWidget();</div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span> </div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span>};</div>
+</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span><span class="preprocessor">#endif </span><span class="comment">// CUSTOM_LIST_WIDGET_HPP</span></div>
+<div class="ttc" id="aclassCustomListWidget_html"><div class="ttname"><a href="classCustomListWidget.html">CustomListWidget</a></div><div class="ttdoc">A custom QListWidget with enhanced mouse interaction.</div><div class="ttdef"><b>Definition</b> custom_list_widget.hpp:16</div></div>
+<div class="ttc" id="aclassCustomListWidget_html_a5d487b35f9dc9cd601b962e68b142e0b"><div class="ttname"><a href="classCustomListWidget.html#a5d487b35f9dc9cd601b962e68b142e0b">CustomListWidget::leaveEvent</a></div><div class="ttdeci">void leaveEvent(QEvent *event) override</div><div class="ttdoc">Handles the leave event.</div><div class="ttdef"><b>Definition</b> custom_list_widget.cpp:42</div></div>
+<div class="ttc" id="aclassCustomListWidget_html_ab37ab040c9872e60767fff8d1525ccad"><div class="ttname"><a href="classCustomListWidget.html#ab37ab040c9872e60767fff8d1525ccad">CustomListWidget::CustomListWidget</a></div><div class="ttdeci">CustomListWidget(QWidget *parent=nullptr)</div><div class="ttdoc">Constructs a CustomListWidget object and formats it correctly.</div><div class="ttdef"><b>Definition</b> custom_list_widget.cpp:3</div></div>
+<div class="ttc" id="aclassCustomListWidget_html_adc3f7462d5db3e7c9fe4c5fd59076331"><div class="ttname"><a href="classCustomListWidget.html#adc3f7462d5db3e7c9fe4c5fd59076331">CustomListWidget::mouseMoveEvent</a></div><div class="ttdeci">void mouseMoveEvent(QMouseEvent *event) override</div><div class="ttdoc">Handles the mouse move event.</div><div class="ttdef"><b>Definition</b> custom_list_widget.cpp:31</div></div>
+<div class="ttc" id="aclassQListWidget_html"><div class="ttname"><a href="classQListWidget.html">QListWidget</a></div></div>
+<div class="ttc" id="aclassQWidget_html"><div class="ttname"><a href="classQWidget.html">QWidget</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_000002_000000.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_000002_000000.html
new file mode 100644
index 0000000000000000000000000000000000000000..d86151a1715ff5edf0e5771499ce1a4de2a1b5ff
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_000002_000000.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: src -&gt; include Relation</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="contents">
+<h3>src &rarr; include Relation</h3><table class="dirtab"><tr class="dirtab"><th class="dirtab">File in src</th><th class="dirtab">Includes file in include</th></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="custom__list__widget_8cpp.html">custom_list_widget.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="custom__list__widget_8hpp.html">custom_list_widget.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="execute__frame_8cpp.html">execute_frame.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="execute__frame_8hpp.html">execute_frame.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="learn__environment_8cpp.html">learn_environment.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="learn__environment_8hpp.html">learn_environment.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="learn__environment_8cpp.html">learn_environment.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="task__manager_8hpp.html">task_manager.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="learn__environment_8cpp.html">learn_environment.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="task__ui_8hpp.html">task_ui.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="notebook__converter_8cpp.html">notebook_converter.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="folder__structure__constants_8hpp.html">folder_structure_constants.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="notebook__converter_8cpp.html">notebook_converter.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="notebook__converter_8hpp.html">notebook_converter.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="process__runner_8cpp.html">process_runner.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="process__runner_8hpp.html">process_runner.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="script__worker_8cpp.html">script_worker.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="process__runner_8hpp.html">process_runner.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="script__worker_8cpp.html">script_worker.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="script__worker_8hpp.html">script_worker.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="sidebar_8cpp.html">sidebar.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="custom__list__widget_8hpp.html">custom_list_widget.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="sidebar_8cpp.html">sidebar.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="sidebar_8hpp.html">sidebar.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="sidebar_8cpp.html">sidebar.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="task_8hpp.html">task.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="subtask__item_8cpp.html">subtask_item.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="notebook__converter_8hpp.html">notebook_converter.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="subtask__item_8cpp.html">subtask_item.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="subtask__item_8hpp.html">subtask_item.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="subtask__item_8cpp.html">subtask_item.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="task__manager_8hpp.html">task_manager.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__executor_8cpp.html">task_executor.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="folder__structure__constants_8hpp.html">folder_structure_constants.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__executor_8cpp.html">task_executor.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="script__worker_8hpp.html">script_worker.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__executor_8cpp.html">task_executor.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="task__executor_8hpp.html">task_executor.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__manager_8cpp.html">task_manager.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="folder__structure__constants_8hpp.html">folder_structure_constants.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__manager_8cpp.html">task_manager.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="notebook__converter_8hpp.html">notebook_converter.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__manager_8cpp.html">task_manager.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="task__executor_8hpp.html">task_executor.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__manager_8cpp.html">task_manager.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="task__manager_8hpp.html">task_manager.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__manager_8cpp.html">task_manager.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="task__parser_8hpp.html">task_parser.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__manager_8cpp.html">task_manager.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="task__ui_8hpp.html">task_ui.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__parser_8cpp.html">task_parser.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="folder__structure__constants_8hpp.html">folder_structure_constants.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__parser_8cpp.html">task_parser.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="task__parser_8hpp.html">task_parser.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__ui_8cpp.html">task_ui.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="subtask__item_8hpp.html">subtask_item.hpp</a></td></tr><tr class="dirtab"><td class="dirtab"><a class="el" href="task__ui_8cpp.html">task_ui.cpp</a></td><td class="dirtab"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a>&#160;/&#160;<a class="el" href="task__ui_8hpp.html">task_ui.hpp</a></td></tr></table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
new file mode 100644
index 0000000000000000000000000000000000000000..dd26d764e8cc62e7d0e05d0ad1d6c02409263937
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: src Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">src Directory Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Directory dependency graph for src:</div>
+<div class="dyncontent">
+<div class="center"><img src="dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png" border="0" usemap="#adir__68267d1309a1af8e8297ef4c3efbcdba__dep" alt="src"/></div>
+<map name="adir__68267d1309a1af8e8297ef4c3efbcdba__dep" id="adir__68267d1309a1af8e8297ef4c3efbcdba__dep">
+<area shape="rect" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="17,5,56,32"/>
+<area shape="rect" href="dir_d44c64559bbebec7f509842c48db8b23.html" title="include" alt="" coords="5,80,68,107"/>
+<area shape="poly" href="dir_000002_000000.html" alt="" coords="39,33,39,64,34,64,34,33"/>
+<area shape="rect" href="dir_000002_000000.html" title="29" alt="" coords="38,53,52,69"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="custom__list__widget_8cpp.html">custom_list_widget.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute__frame_8cpp.html">execute_frame.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="learn__environment_8cpp.html">learn_environment.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="notebook__converter_8cpp.html">notebook_converter.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="process__runner_8cpp.html">process_runner.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="script__worker_8cpp.html">script_worker.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="sidebar_8cpp.html">sidebar.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="subtask__item_8cpp.html">subtask_item.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="task__executor_8cpp.html">task_executor.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="task__manager_8cpp.html">task_manager.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="task__parser_8cpp.html">task_parser.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="icondoc"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="task__ui_8cpp.html">task_ui.cpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map
new file mode 100644
index 0000000000000000000000000000000000000000..c2b7f7e95583f574a641dd7a3673bf2305be338e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map
@@ -0,0 +1,6 @@
+<map id="src" name="src">
+<area shape="rect" id="node1" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" title="src" alt="" coords="17,5,56,32"/>
+<area shape="rect" id="node2" href="dir_d44c64559bbebec7f509842c48db8b23.html" title="include" alt="" coords="5,80,68,107"/>
+<area shape="poly" id="edge1" href="dir_000002_000000.html" alt="" coords="39,33,39,64,34,64,34,33"/>
+<area shape="rect" id="edge1-headlabel" href="dir_000002_000000.html" title="29" alt="" coords="38,53,52,69"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8bbb24d2515d14953483c21423055743a6f2fa95
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5
@@ -0,0 +1 @@
+d9edd2b9a9e8508e36934769376f17fb
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png
new file mode 100644
index 0000000000000000000000000000000000000000..842caec89e28358a16c08c83ee15ecb68e8361fe
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_7d465071c5c63f34a2628cf83e1b693a.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_7d465071c5c63f34a2628cf83e1b693a.html
new file mode 100644
index 0000000000000000000000000000000000000000..6a2826841668e768e4cc660b9e66f5ce2f07de21
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_7d465071c5c63f34a2628cf83e1b693a.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: learn_environment Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">learn_environment Directory Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="dynheader">
+Directory dependency graph for learn_environment:</div>
+<div class="dyncontent">
+<div class="center"><img src="dir_7d465071c5c63f34a2628cf83e1b693a_dep.png" border="0" usemap="#adir__7d465071c5c63f34a2628cf83e1b693a__dep" alt="learn_environment"/></div>
+<map name="adir__7d465071c5c63f34a2628cf83e1b693a__dep" id="adir__7d465071c5c63f34a2628cf83e1b693a__dep">
+<area shape="rect" href="dir_7d465071c5c63f34a2628cf83e1b693a.html" title="learn_environment" alt="" coords="27,53,154,80"/>
+<area shape="rect" href="dir_d44c64559bbebec7f509842c48db8b23.html" title="include" alt="" coords="16,16,165,91"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="custom__list__widget_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="custom__list__widget_8hpp.html">custom_list_widget.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="execute__frame_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="execute__frame_8hpp.html">execute_frame.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="folder__structure__constants_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="folder__structure__constants_8hpp.html">folder_structure_constants.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="learn__environment_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="learn__environment_8hpp.html">learn_environment.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="notebook__converter_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="notebook__converter_8hpp.html">notebook_converter.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="process__runner_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="process__runner_8hpp.html">process_runner.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="script__worker_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="script__worker_8hpp.html">script_worker.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="sidebar_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="sidebar_8hpp.html">sidebar.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="subtask__item_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="subtask__item_8hpp.html">subtask_item.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="task_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="task_8hpp.html">task.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="task__executor_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="task__executor_8hpp.html">task_executor.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="task__manager_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="task__manager_8hpp.html">task_manager.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="task__parser_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="task__parser_8hpp.html">task_parser.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><a href="task__ui_8hpp_source.html"><span class="icondoc"></span></a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="task__ui_8hpp.html">task_ui.hpp</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_7d465071c5c63f34a2628cf83e1b693a_dep.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_7d465071c5c63f34a2628cf83e1b693a_dep.map
new file mode 100644
index 0000000000000000000000000000000000000000..f38e8e08bb8325eea3a19c87dc5b0026d94511c1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_7d465071c5c63f34a2628cf83e1b693a_dep.map
@@ -0,0 +1,4 @@
+<map id="learn_environment" name="learn_environment">
+<area shape="rect" id="node1" href="dir_7d465071c5c63f34a2628cf83e1b693a.html" title="learn_environment" alt="" coords="27,53,154,80"/>
+<area shape="rect" id="clust1" href="dir_d44c64559bbebec7f509842c48db8b23.html" title="include" alt="" coords="16,16,165,91"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_7d465071c5c63f34a2628cf83e1b693a_dep.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_7d465071c5c63f34a2628cf83e1b693a_dep.md5
new file mode 100644
index 0000000000000000000000000000000000000000..fe3c943f5dd33baf9dd7c51d46097e12f12ec608
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_7d465071c5c63f34a2628cf83e1b693a_dep.md5
@@ -0,0 +1 @@
+3ec16c6d13b0413995f4ebe2a56d635e
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_7d465071c5c63f34a2628cf83e1b693a_dep.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_7d465071c5c63f34a2628cf83e1b693a_dep.png
new file mode 100644
index 0000000000000000000000000000000000000000..a4ef7e1e7b93db9d578fc5a377ac85e609339ffc
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_7d465071c5c63f34a2628cf83e1b693a_dep.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_d44c64559bbebec7f509842c48db8b23.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_d44c64559bbebec7f509842c48db8b23.html
new file mode 100644
index 0000000000000000000000000000000000000000..937cb295033eaff1c79d39180a6010c6f5242358
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dir_d44c64559bbebec7f509842c48db8b23.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: include Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">include Directory Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/doc.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/doc.svg
new file mode 100644
index 0000000000000000000000000000000000000000..0b928a531713b063e737da937bb85a53365a8ec2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/doc.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
+<g style="fill:#4665A2">
+<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
+</g>
+<g style="fill:#D8DFEE;stroke-width:0">
+<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
+<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
+</g>
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/docd.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/docd.svg
new file mode 100644
index 0000000000000000000000000000000000000000..ac18b27552268ce7e82797636da773a6c5bbc4b8
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/docd.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" width="16" height="24" viewBox="0 0 80 60" id="doc" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
+<g style="fill:#C4CFE5">
+<path d="m 14,-1.1445312 c -2.824372,0 -5.1445313,2.320159 -5.1445312,5.1445312 v 72 c 0,2.824372 2.3201592,5.144531 5.1445312,5.144531 h 52 c 2.824372,0 5.144531,-2.320159 5.144531,-5.144531 V 23.699219 a 1.1447968,1.1447968 0 0 0 -0.01563,-0.1875 C 70.977847,22.605363 70.406495,21.99048 70.007812,21.591797 L 48.208984,-0.20898438 C 47.606104,-0.81186474 46.804652,-1.1445313 46,-1.1445312 Z m 1.144531,6.2890624 H 42.855469 V 24 c 0,1.724372 1.420159,3.144531 3.144531,3.144531 H 64.855469 V 74.855469 H 15.144531 Z m 34,4.4179688 L 60.4375,20.855469 H 49.144531 Z"/>
+</g>
+<g style="fill:#4665A2;stroke-width:0">
+<path d="M 3.0307167,13.993174 V 7.0307167 h 2.7576792 2.7576792 v 1.8826151 c 0,1.2578262 0.0099,1.9287572 0.029818,2.0216512 0.03884,0.181105 0.168631,0.348218 0.33827,0.43554 l 0.1355017,0.06975 1.9598092,0.0079 1.959809,0.0078 v 4.749829 4.749829 H 8 3.0307167 Z" transform="matrix(5,0,0,5,0,-30)" />
+<path d="M 9.8293515,9.0581469 V 7.9456453 l 1.1058025,1.1055492 c 0.608191,0.6080521 1.105802,1.1086775 1.105802,1.1125015 0,0.0038 -0.497611,0.007 -1.105802,0.007 H 9.8293515 Z" transform="matrix(5,0,0,5,0,-30)" />
+</g>
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/doxygen.css b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/doxygen.css
new file mode 100644
index 0000000000000000000000000000000000000000..574b333572816062259669f13f1e3d66923b7129
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/doxygen.css
@@ -0,0 +1,2247 @@
+/* The standard CSS for doxygen 1.12.0*/
+
+html {
+/* page base colors */
+--page-background-color: white;
+--page-foreground-color: black;
+--page-link-color: #3D578C;
+--page-visited-link-color: #4665A2;
+
+/* index */
+--index-odd-item-bg-color: #F8F9FC;
+--index-even-item-bg-color: white;
+--index-header-color: black;
+--index-separator-color: #A0A0A0;
+
+/* header */
+--header-background-color: #F9FAFC;
+--header-separator-color: #C4CFE5;
+--header-gradient-image: url('nav_h.png');
+--group-header-separator-color: #879ECB;
+--group-header-color: #354C7B;
+--inherit-header-color: gray;
+
+--footer-foreground-color: #2A3D61;
+--footer-logo-width: 104px;
+--citation-label-color: #334975;
+--glow-color: cyan;
+
+--title-background-color: white;
+--title-separator-color: #5373B4;
+--directory-separator-color: #9CAFD4;
+--separator-color: #4A6AAA;
+
+--blockquote-background-color: #F7F8FB;
+--blockquote-border-color: #9CAFD4;
+
+--scrollbar-thumb-color: #9CAFD4;
+--scrollbar-background-color: #F9FAFC;
+
+--icon-background-color: #728DC1;
+--icon-foreground-color: white;
+--icon-doc-image: url('doc.svg');
+--icon-folder-open-image: url('folderopen.svg');
+--icon-folder-closed-image: url('folderclosed.svg');
+
+/* brief member declaration list */
+--memdecl-background-color: #F9FAFC;
+--memdecl-separator-color: #DEE4F0;
+--memdecl-foreground-color: #555;
+--memdecl-template-color: #4665A2;
+
+/* detailed member list */
+--memdef-border-color: #A8B8D9;
+--memdef-title-background-color: #E2E8F2;
+--memdef-title-gradient-image: url('nav_f.png');
+--memdef-proto-background-color: #DFE5F1;
+--memdef-proto-text-color: #253555;
+--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+--memdef-doc-background-color: white;
+--memdef-param-name-color: #602020;
+--memdef-template-color: #4665A2;
+
+/* tables */
+--table-cell-border-color: #2D4068;
+--table-header-background-color: #374F7F;
+--table-header-foreground-color: #FFFFFF;
+
+/* labels */
+--label-background-color: #728DC1;
+--label-left-top-border-color: #5373B4;
+--label-right-bottom-border-color: #C4CFE5;
+--label-foreground-color: white;
+
+/** navigation bar/tree/menu */
+--nav-background-color: #F9FAFC;
+--nav-foreground-color: #364D7C;
+--nav-gradient-image: url('tab_b.png');
+--nav-gradient-hover-image: url('tab_h.png');
+--nav-gradient-active-image: url('tab_a.png');
+--nav-gradient-active-image-parent: url("../tab_a.png");
+--nav-separator-image: url('tab_s.png');
+--nav-breadcrumb-image: url('bc_s.png');
+--nav-breadcrumb-border-color: #C2CDE4;
+--nav-splitbar-image: url('splitbar.png');
+--nav-font-size-level1: 13px;
+--nav-font-size-level2: 10px;
+--nav-font-size-level3: 9px;
+--nav-text-normal-color: #283A5D;
+--nav-text-hover-color: white;
+--nav-text-active-color: white;
+--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+--nav-menu-button-color: #364D7C;
+--nav-menu-background-color: white;
+--nav-menu-foreground-color: #555555;
+--nav-menu-toggle-color: rgba(255, 255, 255, 0.5);
+--nav-arrow-color: #9CAFD4;
+--nav-arrow-selected-color: #9CAFD4;
+
+/* table of contents */
+--toc-background-color: #F4F6FA;
+--toc-border-color: #D8DFEE;
+--toc-header-color: #4665A2;
+--toc-down-arrow-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='10px' width='5px' fill='grey'><text x='0' y='5' font-size='10'>&%238595;</text></svg>");
+
+/** search field */
+--search-background-color: white;
+--search-foreground-color: #909090;
+--search-magnification-image: url('mag.svg');
+--search-magnification-select-image: url('mag_sel.svg');
+--search-active-color: black;
+--search-filter-background-color: #F9FAFC;
+--search-filter-foreground-color: black;
+--search-filter-border-color: #90A5CE;
+--search-filter-highlight-text-color: white;
+--search-filter-highlight-bg-color: #3D578C;
+--search-results-foreground-color: #425E97;
+--search-results-background-color: #EEF1F7;
+--search-results-border-color: black;
+--search-box-shadow: inset 0.5px 0.5px 3px 0px #555;
+
+/** code fragments */
+--code-keyword-color: #008000;
+--code-type-keyword-color: #604020;
+--code-flow-keyword-color: #E08000;
+--code-comment-color: #800000;
+--code-preprocessor-color: #806020;
+--code-string-literal-color: #002080;
+--code-char-literal-color: #008080;
+--code-xml-cdata-color: black;
+--code-vhdl-digit-color: #FF00FF;
+--code-vhdl-char-color: #000000;
+--code-vhdl-keyword-color: #700070;
+--code-vhdl-logic-color: #FF0000;
+--code-link-color: #4665A2;
+--code-external-link-color: #4665A2;
+--fragment-foreground-color: black;
+--fragment-background-color: #FBFCFD;
+--fragment-border-color: #C4CFE5;
+--fragment-lineno-border-color: #00FF00;
+--fragment-lineno-background-color: #E8E8E8;
+--fragment-lineno-foreground-color: black;
+--fragment-lineno-link-fg-color: #4665A2;
+--fragment-lineno-link-bg-color: #D8D8D8;
+--fragment-lineno-link-hover-fg-color: #4665A2;
+--fragment-lineno-link-hover-bg-color: #C8C8C8;
+--fragment-copy-ok-color: #2EC82E;
+--tooltip-foreground-color: black;
+--tooltip-background-color: white;
+--tooltip-border-color: gray;
+--tooltip-doc-color: grey;
+--tooltip-declaration-color: #006318;
+--tooltip-link-color: #4665A2;
+--tooltip-shadow: 1px 1px 7px gray;
+--fold-line-color: #808080;
+--fold-minus-image: url('minus.svg');
+--fold-plus-image: url('plus.svg');
+--fold-minus-image-relpath: url('../../minus.svg');
+--fold-plus-image-relpath: url('../../plus.svg');
+
+/** font-family */
+--font-family-normal: Roboto,sans-serif;
+--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed;
+--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+--font-family-title: Tahoma,Arial,sans-serif;
+--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif;
+--font-family-search: Arial,Verdana,sans-serif;
+--font-family-icon: Arial,Helvetica;
+--font-family-tooltip: Roboto,sans-serif;
+
+/** special sections */
+--warning-color-bg: #f8d1cc;
+--warning-color-hl: #b61825;
+--warning-color-text: #75070f;
+--note-color-bg: #faf3d8;
+--note-color-hl: #f3a600;
+--note-color-text: #5f4204;
+--todo-color-bg: #e4f3ff;
+--todo-color-hl: #1879C4;
+--todo-color-text: #274a5c;
+--test-color-bg: #e8e8ff;
+--test-color-hl: #3939C4;
+--test-color-text: #1a1a5c;
+--deprecated-color-bg: #ecf0f3;
+--deprecated-color-hl: #5b6269;
+--deprecated-color-text: #43454a;
+--bug-color-bg: #e4dafd;
+--bug-color-hl: #5b2bdd;
+--bug-color-text: #2a0d72;
+--invariant-color-bg: #d8f1e3;
+--invariant-color-hl: #44b86f;
+--invariant-color-text: #265532;
+}
+
+@media (prefers-color-scheme: dark) {
+  html:not(.dark-mode) {
+    color-scheme: dark;
+
+/* page base colors */
+--page-background-color: black;
+--page-foreground-color: #C9D1D9;
+--page-link-color: #90A5CE;
+--page-visited-link-color: #A3B4D7;
+
+/* index */
+--index-odd-item-bg-color: #0B101A;
+--index-even-item-bg-color: black;
+--index-header-color: #C4CFE5;
+--index-separator-color: #334975;
+
+/* header */
+--header-background-color: #070B11;
+--header-separator-color: #141C2E;
+--header-gradient-image: url('nav_hd.png');
+--group-header-separator-color: #283A5D;
+--group-header-color: #90A5CE;
+--inherit-header-color: #A0A0A0;
+
+--footer-foreground-color: #5B7AB7;
+--footer-logo-width: 60px;
+--citation-label-color: #90A5CE;
+--glow-color: cyan;
+
+--title-background-color: #090D16;
+--title-separator-color: #354C79;
+--directory-separator-color: #283A5D;
+--separator-color: #283A5D;
+
+--blockquote-background-color: #101826;
+--blockquote-border-color: #283A5D;
+
+--scrollbar-thumb-color: #283A5D;
+--scrollbar-background-color: #070B11;
+
+--icon-background-color: #334975;
+--icon-foreground-color: #C4CFE5;
+--icon-doc-image: url('docd.svg');
+--icon-folder-open-image: url('folderopend.svg');
+--icon-folder-closed-image: url('folderclosedd.svg');
+
+/* brief member declaration list */
+--memdecl-background-color: #0B101A;
+--memdecl-separator-color: #2C3F65;
+--memdecl-foreground-color: #BBB;
+--memdecl-template-color: #7C95C6;
+
+/* detailed member list */
+--memdef-border-color: #233250;
+--memdef-title-background-color: #1B2840;
+--memdef-title-gradient-image: url('nav_fd.png');
+--memdef-proto-background-color: #19243A;
+--memdef-proto-text-color: #9DB0D4;
+--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9);
+--memdef-doc-background-color: black;
+--memdef-param-name-color: #D28757;
+--memdef-template-color: #7C95C6;
+
+/* tables */
+--table-cell-border-color: #283A5D;
+--table-header-background-color: #283A5D;
+--table-header-foreground-color: #C4CFE5;
+
+/* labels */
+--label-background-color: #354C7B;
+--label-left-top-border-color: #4665A2;
+--label-right-bottom-border-color: #283A5D;
+--label-foreground-color: #CCCCCC;
+
+/** navigation bar/tree/menu */
+--nav-background-color: #101826;
+--nav-foreground-color: #364D7C;
+--nav-gradient-image: url('tab_bd.png');
+--nav-gradient-hover-image: url('tab_hd.png');
+--nav-gradient-active-image: url('tab_ad.png');
+--nav-gradient-active-image-parent: url("../tab_ad.png");
+--nav-separator-image: url('tab_sd.png');
+--nav-breadcrumb-image: url('bc_sd.png');
+--nav-breadcrumb-border-color: #2A3D61;
+--nav-splitbar-image: url('splitbard.png');
+--nav-font-size-level1: 13px;
+--nav-font-size-level2: 10px;
+--nav-font-size-level3: 9px;
+--nav-text-normal-color: #B6C4DF;
+--nav-text-hover-color: #DCE2EF;
+--nav-text-active-color: #DCE2EF;
+--nav-text-normal-shadow: 0px 1px 1px black;
+--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+--nav-menu-button-color: #B6C4DF;
+--nav-menu-background-color: #05070C;
+--nav-menu-foreground-color: #BBBBBB;
+--nav-menu-toggle-color: rgba(255, 255, 255, 0.2);
+--nav-arrow-color: #334975;
+--nav-arrow-selected-color: #90A5CE;
+
+/* table of contents */
+--toc-background-color: #151E30;
+--toc-border-color: #202E4A;
+--toc-header-color: #A3B4D7;
+--toc-down-arrow-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='10px' width='5px'><text x='0' y='5' font-size='10' fill='grey'>&%238595;</text></svg>");
+
+/** search field */
+--search-background-color: black;
+--search-foreground-color: #C5C5C5;
+--search-magnification-image: url('mag_d.svg');
+--search-magnification-select-image: url('mag_seld.svg');
+--search-active-color: #C5C5C5;
+--search-filter-background-color: #101826;
+--search-filter-foreground-color: #90A5CE;
+--search-filter-border-color: #7C95C6;
+--search-filter-highlight-text-color: #BCC9E2;
+--search-filter-highlight-bg-color: #283A5D;
+--search-results-background-color: #101826;
+--search-results-foreground-color: #90A5CE;
+--search-results-border-color: #7C95C6;
+--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C;
+
+/** code fragments */
+--code-keyword-color: #CC99CD;
+--code-type-keyword-color: #AB99CD;
+--code-flow-keyword-color: #E08000;
+--code-comment-color: #717790;
+--code-preprocessor-color: #65CABE;
+--code-string-literal-color: #7EC699;
+--code-char-literal-color: #00E0F0;
+--code-xml-cdata-color: #C9D1D9;
+--code-vhdl-digit-color: #FF00FF;
+--code-vhdl-char-color: #C0C0C0;
+--code-vhdl-keyword-color: #CF53C9;
+--code-vhdl-logic-color: #FF0000;
+--code-link-color: #79C0FF;
+--code-external-link-color: #79C0FF;
+--fragment-foreground-color: #C9D1D9;
+--fragment-background-color: #090D16;
+--fragment-border-color: #30363D;
+--fragment-lineno-border-color: #30363D;
+--fragment-lineno-background-color: black;
+--fragment-lineno-foreground-color: #6E7681;
+--fragment-lineno-link-fg-color: #6E7681;
+--fragment-lineno-link-bg-color: #303030;
+--fragment-lineno-link-hover-fg-color: #8E96A1;
+--fragment-lineno-link-hover-bg-color: #505050;
+--fragment-copy-ok-color: #0EA80E;
+--tooltip-foreground-color: #C9D1D9;
+--tooltip-background-color: #202020;
+--tooltip-border-color: #C9D1D9;
+--tooltip-doc-color: #D9E1E9;
+--tooltip-declaration-color: #20C348;
+--tooltip-link-color: #79C0FF;
+--tooltip-shadow: none;
+--fold-line-color: #808080;
+--fold-minus-image: url('minusd.svg');
+--fold-plus-image: url('plusd.svg');
+--fold-minus-image-relpath: url('../../minusd.svg');
+--fold-plus-image-relpath: url('../../plusd.svg');
+
+/** font-family */
+--font-family-normal: Roboto,sans-serif;
+--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed;
+--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+--font-family-title: Tahoma,Arial,sans-serif;
+--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif;
+--font-family-search: Arial,Verdana,sans-serif;
+--font-family-icon: Arial,Helvetica;
+--font-family-tooltip: Roboto,sans-serif;
+
+/** special sections */
+--warning-color-bg: #2e1917;
+--warning-color-hl: #ad2617;
+--warning-color-text: #f5b1aa;
+--note-color-bg: #3b2e04;
+--note-color-hl: #f1b602;
+--note-color-text: #ceb670;
+--todo-color-bg: #163750;
+--todo-color-hl: #1982D2;
+--todo-color-text: #dcf0fa;
+--test-color-bg: #121258;
+--test-color-hl: #4242cf;
+--test-color-text: #c0c0da;
+--deprecated-color-bg: #2e323b;
+--deprecated-color-hl: #738396;
+--deprecated-color-text: #abb0bd;
+--bug-color-bg: #2a2536;
+--bug-color-hl: #7661b3;
+--bug-color-text: #ae9ed6;
+--invariant-color-bg: #303a35;
+--invariant-color-hl: #76ce96;
+--invariant-color-text: #cceed5;
+}}
+body {
+    background-color: var(--page-background-color);
+    color: var(--page-foreground-color);
+}
+
+body, table, div, p, dl {
+	font-weight: 400;
+	font-size: 14px;
+	font-family: var(--font-family-normal);
+	line-height: 22px;
+}
+
+/* @group Heading Levels */
+
+.title {
+	font-family: var(--font-family-normal);
+	line-height: 28px;
+	font-size: 150%;
+	font-weight: bold;
+	margin: 10px 2px;
+}
+
+h1.groupheader {
+	font-size: 150%;
+}
+
+h2.groupheader {
+	border-bottom: 1px solid var(--group-header-separator-color);
+	color: var(--group-header-color);
+	font-size: 150%;
+	font-weight: normal;
+	margin-top: 1.75em;
+	padding-top: 8px;
+	padding-bottom: 4px;
+	width: 100%;
+}
+
+h3.groupheader {
+	font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+	-webkit-transition: text-shadow 0.5s linear;
+	-moz-transition: text-shadow 0.5s linear;
+	-ms-transition: text-shadow 0.5s linear;
+	-o-transition: text-shadow 0.5s linear;
+	transition: text-shadow 0.5s linear;
+	margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+	text-shadow: 0 0 15px var(--glow-color);
+}
+
+dt {
+	font-weight: bold;
+}
+
+p.startli, p.startdd {
+	margin-top: 2px;
+}
+
+th p.starttd, th p.intertd, th p.endtd {
+        font-size: 100%;
+        font-weight: 700;
+}
+
+p.starttd {
+	margin-top: 0px;
+}
+
+p.endli {
+	margin-bottom: 0px;
+}
+
+p.enddd {
+	margin-bottom: 4px;
+}
+
+p.endtd {
+	margin-bottom: 2px;
+}
+
+p.interli {
+}
+
+p.interdd {
+}
+
+p.intertd {
+}
+
+/* @end */
+
+caption {
+	font-weight: bold;
+}
+
+span.legend {
+	font-size: 70%;
+	text-align: center;
+}
+
+h3.version {
+	font-size: 90%;
+	text-align: center;
+}
+
+div.navtab {
+	padding-right: 15px;
+	text-align: right;
+	line-height: 110%;
+}
+
+div.navtab table {
+	border-spacing: 0;
+}
+
+td.navtab {
+	padding-right: 6px;
+	padding-left: 6px;
+}
+
+td.navtabHL {
+	background-image: var(--nav-gradient-active-image);
+	background-repeat:repeat-x;
+	padding-right: 6px;
+	padding-left: 6px;
+}
+
+td.navtabHL a, td.navtabHL a:visited {
+	color: var(--nav-text-hover-color);
+	text-shadow: var(--nav-text-hover-shadow);
+}
+
+a.navtab {
+	font-weight: bold;
+}
+
+div.qindex{
+	text-align: center;
+	width: 100%;
+	line-height: 140%;
+	font-size: 130%;
+	color: var(--index-separator-color);
+}
+
+#main-menu a:focus {
+	outline: auto;
+	z-index: 10;
+	position: relative;
+}
+
+dt.alphachar{
+	font-size: 180%;
+	font-weight: bold;
+}
+
+.alphachar a{
+	color: var(--index-header-color);
+}
+
+.alphachar a:hover, .alphachar a:visited{
+	text-decoration: none;
+}
+
+.classindex dl {
+	padding: 25px;
+	column-count:1
+}
+
+.classindex dd {
+	display:inline-block;
+	margin-left: 50px;
+	width: 90%;
+	line-height: 1.15em;
+}
+
+.classindex dl.even {
+	background-color: var(--index-even-item-bg-color);
+}
+
+.classindex dl.odd {
+	background-color: var(--index-odd-item-bg-color);
+}
+
+@media(min-width: 1120px) {
+	.classindex dl {
+		column-count:2
+	}
+}
+
+@media(min-width: 1320px) {
+	.classindex dl {
+		column-count:3
+	}
+}
+
+
+/* @group Link Styling */
+
+a {
+	color: var(--page-link-color);
+	font-weight: normal;
+	text-decoration: none;
+}
+
+.contents a:visited {
+	color: var(--page-visited-link-color);
+}
+
+a:hover {
+	text-decoration: none;
+	background:   linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%);
+}
+
+a:hover > span.arrow {
+        text-decoration: none;
+        background : var(--nav-background-color);
+}
+
+a.el {
+	font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+	color: var(--code-link-color);
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+	color: var(--code-external-link-color);
+}
+
+a.code.hl_class { /* style for links to class names in code snippets */ }
+a.code.hl_struct { /* style for links to struct names in code snippets */ }
+a.code.hl_union { /* style for links to union names in code snippets */ }
+a.code.hl_interface { /* style for links to interface names in code snippets */ }
+a.code.hl_protocol { /* style for links to protocol names in code snippets */ }
+a.code.hl_category { /* style for links to category names in code snippets */ }
+a.code.hl_exception { /* style for links to exception names in code snippets */ }
+a.code.hl_service { /* style for links to service names in code snippets */ }
+a.code.hl_singleton { /* style for links to singleton names in code snippets */ }
+a.code.hl_concept { /* style for links to concept names in code snippets */ }
+a.code.hl_namespace { /* style for links to namespace names in code snippets */ }
+a.code.hl_package { /* style for links to package names in code snippets */ }
+a.code.hl_define { /* style for links to macro names in code snippets */ }
+a.code.hl_function { /* style for links to function names in code snippets */ }
+a.code.hl_variable { /* style for links to variable names in code snippets */ }
+a.code.hl_typedef { /* style for links to typedef names in code snippets */ }
+a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ }
+a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ }
+a.code.hl_signal { /* style for links to Qt signal names in code snippets */ }
+a.code.hl_slot { /* style for links to Qt slot names in code snippets */ }
+a.code.hl_friend { /* style for links to friend names in code snippets */ }
+a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ }
+a.code.hl_property { /* style for links to property names in code snippets */ }
+a.code.hl_event { /* style for links to event names in code snippets */ }
+a.code.hl_sequence { /* style for links to sequence names in code snippets */ }
+a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ }
+
+/* @end */
+
+dl.el {
+	margin-left: -1cm;
+}
+
+ul.check {
+  list-style:none;
+  text-indent: -16px;
+  padding-left: 38px;
+}
+li.unchecked:before {
+  content: "\2610\A0";
+}
+li.checked:before {
+  content: "\2611\A0";
+}
+
+ol {
+  text-indent: 0px;
+}
+
+ul {
+  text-indent: 0px;
+  overflow: visible;
+}
+
+ul.multicol {
+        -moz-column-gap: 1em;
+        -webkit-column-gap: 1em;
+        column-gap: 1em;
+        -moz-column-count: 3;
+        -webkit-column-count: 3;
+        column-count: 3;
+        list-style-type: none;
+}
+
+#side-nav ul {
+  overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
+}
+
+#main-nav ul {
+  overflow: visible; /* reset ul rule for the navigation bar drop down lists */
+}
+
+.fragment {
+  text-align: left;
+  direction: ltr;
+  overflow-x: auto;
+  overflow-y: hidden;
+  position: relative;
+  min-height: 12px;
+  margin: 10px 0px;
+  padding: 10px 10px;
+  border: 1px solid var(--fragment-border-color);
+  border-radius: 4px;
+  background-color: var(--fragment-background-color);
+  color: var(--fragment-foreground-color);
+}
+
+pre.fragment {
+  word-wrap: break-word;
+  font-size:  10pt;
+  line-height: 125%;
+  font-family: var(--font-family-monospace);
+}
+
+.clipboard {
+        width: 24px;
+        height: 24px;
+        right: 5px;
+        top: 5px;
+        opacity: 0;
+        position: absolute;
+        display: inline;
+        overflow: auto;
+        fill: var(--fragment-foreground-color);
+        justify-content: center;
+        align-items: center;
+        cursor: pointer;
+}
+
+.clipboard.success {
+        border: 1px solid var(--fragment-foreground-color);
+        border-radius: 4px;
+}
+
+.fragment:hover .clipboard, .clipboard.success {
+        opacity: .28;
+}
+
+.clipboard:hover, .clipboard.success {
+        opacity: 1 !important;
+}
+
+.clipboard:active:not([class~=success]) svg {
+        transform: scale(.91);
+}
+
+.clipboard.success svg {
+        fill: var(--fragment-copy-ok-color);
+}
+
+.clipboard.success {
+        border-color: var(--fragment-copy-ok-color);
+}
+
+div.line {
+	font-family: var(--font-family-monospace);
+        font-size: 13px;
+	min-height: 13px;
+	line-height: 1.2;
+	text-wrap: unrestricted;
+	white-space: -moz-pre-wrap; /* Moz */
+	white-space: -pre-wrap;     /* Opera 4-6 */
+	white-space: -o-pre-wrap;   /* Opera 7 */
+	white-space: pre-wrap;      /* CSS3  */
+	word-wrap: break-word;      /* IE 5.5+ */
+	text-indent: -53px;
+	padding-left: 53px;
+	padding-bottom: 0px;
+	margin: 0px;
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+div.line:after {
+    content:"\000A";
+    white-space: pre;
+}
+
+div.line.glow {
+	background-color: var(--glow-color);
+	box-shadow: 0 0 10px var(--glow-color);
+}
+
+span.fold {
+        margin-left: 5px;
+        margin-right: 1px;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+	display: inline-block;
+	width: 12px;
+	height: 12px;
+	background-repeat:no-repeat;
+        background-position:center;
+}
+
+span.lineno {
+	padding-right: 4px;
+        margin-right: 9px;
+	text-align: right;
+	border-right: 2px solid var(--fragment-lineno-border-color);
+	color: var(--fragment-lineno-foreground-color);
+	background-color: var(--fragment-lineno-background-color);
+        white-space: pre;
+}
+span.lineno a, span.lineno a:visited {
+	color: var(--fragment-lineno-link-fg-color);
+	background-color: var(--fragment-lineno-link-bg-color);
+}
+
+span.lineno a:hover {
+	color: var(--fragment-lineno-link-hover-fg-color);
+	background-color: var(--fragment-lineno-link-hover-bg-color);
+}
+
+.lineno {
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+div.classindex ul {
+        list-style: none;
+        padding-left: 0;
+}
+
+div.classindex span.ai {
+        display: inline-block;
+}
+
+div.groupHeader {
+	margin-left: 16px;
+	margin-top: 12px;
+	font-weight: bold;
+}
+
+div.groupText {
+	margin-left: 16px;
+	font-style: italic;
+}
+
+body {
+	color: var(--page-foreground-color);
+        margin: 0;
+}
+
+div.contents {
+	margin-top: 10px;
+	margin-left: 12px;
+	margin-right: 8px;
+}
+
+p.formulaDsp {
+	text-align: center;
+}
+
+img.dark-mode-visible {
+	display: none;
+}
+img.light-mode-visible {
+	display: none;
+}
+
+img.formulaInl, img.inline {
+	vertical-align: middle;
+}
+
+div.center {
+	text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+	border: 0px;
+}
+
+address.footer {
+	text-align: right;
+	padding-right: 12px;
+}
+
+img.footer {
+	border: 0px;
+	vertical-align: middle;
+	width: var(--footer-logo-width);
+}
+
+.compoundTemplParams {
+	color: var(--memdecl-template-color);
+	font-size: 80%;
+	line-height: 120%;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+	color: var(--code-keyword-color);
+}
+
+span.keywordtype {
+	color: var(--code-type-keyword-color);
+}
+
+span.keywordflow {
+	color: var(--code-flow-keyword-color);
+}
+
+span.comment {
+	color: var(--code-comment-color);
+}
+
+span.preprocessor {
+	color: var(--code-preprocessor-color);
+}
+
+span.stringliteral {
+	color: var(--code-string-literal-color);
+}
+
+span.charliteral {
+	color: var(--code-char-literal-color);
+}
+
+span.xmlcdata {
+	color: var(--code-xml-cdata-color);
+}
+
+span.vhdldigit { 
+	color: var(--code-vhdl-digit-color);
+}
+
+span.vhdlchar { 
+	color: var(--code-vhdl-char-color);
+}
+
+span.vhdlkeyword { 
+	color: var(--code-vhdl-keyword-color);
+}
+
+span.vhdllogic { 
+	color: var(--code-vhdl-logic-color);
+}
+
+blockquote {
+        background-color: var(--blockquote-background-color);
+        border-left: 2px solid var(--blockquote-border-color);
+        margin: 0 24px 0 4px;
+        padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+td.tiny {
+	font-size: 75%;
+}
+
+.dirtab {
+	padding: 4px;
+	border-collapse: collapse;
+	border: 1px solid var(--table-cell-border-color);
+}
+
+th.dirtab {
+	background-color: var(--table-header-background-color);
+	color: var(--table-header-foreground-color);
+	font-weight: bold;
+}
+
+hr {
+	height: 0px;
+	border: none;
+	border-top: 1px solid var(--separator-color);
+}
+
+hr.footer {
+	height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+	border-spacing: 0px;
+	padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+	background-color: var(--glow-color);
+	box-shadow: 0 0 15px var(--glow-color);
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+	background-color: var(--memdecl-background-color);
+	border: none;
+	margin: 4px;
+	padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+	padding: 0px 8px 4px 8px;
+	color: var(--memdecl-foreground-color);
+}
+
+.memSeparator {
+        border-bottom: 1px solid var(--memdecl-separator-color);
+        line-height: 1px;
+        margin: 0px;
+        padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memItemRight, .memTemplItemRight {
+	width: 100%;
+}
+
+.memTemplParams {
+	color: var(--memdecl-template-color);
+        white-space: nowrap;
+	font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtitle {
+	padding: 8px;
+	border-top: 1px solid var(--memdef-border-color);
+	border-left: 1px solid var(--memdef-border-color);
+	border-right: 1px solid var(--memdef-border-color);
+	border-top-right-radius: 4px;
+	border-top-left-radius: 4px;
+	margin-bottom: -1px;
+	background-image: var(--memdef-title-gradient-image);
+	background-repeat: repeat-x;
+	background-color: var(--memdef-title-background-color);
+	line-height: 1.25;
+	font-weight: 300;
+	float:left;
+}
+
+.permalink
+{
+        font-size: 65%;
+        display: inline-block;
+        vertical-align: middle;
+}
+
+.memtemplate {
+	font-size: 80%;
+	color: var(--memdef-template-color);
+	font-weight: normal;
+	margin-left: 9px;
+}
+
+.mempage {
+	width: 100%;
+}
+
+.memitem {
+	padding: 0;
+	margin-bottom: 10px;
+	margin-right: 5px;
+        -webkit-transition: box-shadow 0.5s linear;
+        -moz-transition: box-shadow 0.5s linear;
+        -ms-transition: box-shadow 0.5s linear;
+        -o-transition: box-shadow 0.5s linear;
+        transition: box-shadow 0.5s linear;
+        display: table !important;
+        width: 100%;
+}
+
+.memitem.glow {
+         box-shadow: 0 0 15px var(--glow-color);
+}
+
+.memname {
+        font-weight: 400;
+        margin-left: 6px;
+}
+
+.memname td {
+	vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+        border-top: 1px solid var(--memdef-border-color);
+        border-left: 1px solid var(--memdef-border-color);
+        border-right: 1px solid var(--memdef-border-color);
+        padding: 6px 0px 6px 0px;
+        color: var(--memdef-proto-text-color);
+        font-weight: bold;
+        text-shadow: var(--memdef-proto-text-shadow);
+        background-color: var(--memdef-proto-background-color);
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        border-top-right-radius: 4px;
+}
+
+.overload {
+        font-family: var(--font-family-monospace);
+	font-size: 65%;
+}
+
+.memdoc, dl.reflist dd {
+        border-bottom: 1px solid var(--memdef-border-color);
+        border-left: 1px solid var(--memdef-border-color);
+        border-right: 1px solid var(--memdef-border-color);
+        padding: 6px 10px 2px 10px;
+        border-top-width: 0;
+        background-image:url('nav_g.png');
+        background-repeat:repeat-x;
+        background-color: var(--memdef-doc-background-color);
+        /* opera specific markup */
+        border-bottom-left-radius: 4px;
+        border-bottom-right-radius: 4px;
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 4px;
+        -moz-border-radius-bottomright: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 4px;
+        -webkit-border-bottom-right-radius: 4px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+        padding: 5px;
+}
+
+dl.reflist dd {
+        margin: 0px 0px 10px 0px;
+        padding: 5px;
+}
+
+.paramkey {
+	text-align: right;
+}
+
+.paramtype {
+	white-space: nowrap;
+	padding: 0px;
+	padding-bottom: 1px;
+}
+
+.paramname {
+	white-space: nowrap;
+        padding: 0px;
+        padding-bottom: 1px;
+        margin-left: 2px;
+}
+
+.paramname em {
+	color: var(--memdef-param-name-color);
+	font-style: normal;
+	margin-right: 1px;
+}
+
+.paramname .paramdefval {
+	font-family: var(--font-family-monospace);
+}
+
+.params, .retval, .exception, .tparams {
+        margin-left: 0px;
+        padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
+        font-weight: bold;
+        vertical-align: top;
+}
+
+.params .paramtype, .tparams .paramtype {
+        font-style: italic;
+        vertical-align: top;
+}
+
+.params .paramdir, .tparams .paramdir {
+        font-family: var(--font-family-monospace);
+        vertical-align: top;
+}
+
+table.mlabels {
+	border-spacing: 0px;
+}
+
+td.mlabels-left {
+	width: 100%;
+	padding: 0px;
+}
+
+td.mlabels-right {
+	vertical-align: bottom;
+	padding: 0px;
+	white-space: nowrap;
+}
+
+span.mlabels {
+        margin-left: 8px;
+}
+
+span.mlabel {
+        background-color: var(--label-background-color);
+        border-top:1px solid var(--label-left-top-border-color);
+        border-left:1px solid var(--label-left-top-border-color);
+        border-right:1px solid var(--label-right-bottom-border-color);
+        border-bottom:1px solid var(--label-right-bottom-border-color);
+	text-shadow: none;
+	color: var(--label-foreground-color);
+	margin-right: 4px;
+	padding: 2px 3px;
+	border-radius: 3px;
+	font-size: 7pt;
+	white-space: nowrap;
+	vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+        margin: 10px 0px;
+        border-top: 1px solid var(--directory-separator-color);
+        border-bottom: 1px solid var(--directory-separator-color);
+        width: 100%;
+}
+
+.directory table {
+        border-collapse:collapse;
+}
+
+.directory td {
+        margin: 0px;
+        padding: 0px;
+	vertical-align: top;
+}
+
+.directory td.entry {
+        white-space: nowrap;
+        padding-right: 6px;
+	padding-top: 3px;
+}
+
+.directory td.entry a {
+        outline:none;
+}
+
+.directory td.entry a img {
+        border: none;
+}
+
+.directory td.desc {
+        width: 100%;
+        padding-left: 6px;
+	padding-right: 6px;
+	padding-top: 3px;
+	border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.odd {
+	padding-left: 6px;
+	background-color: var(--index-odd-item-bg-color);
+}
+
+.directory tr.even {
+	padding-left: 6px;
+	background-color: var(--index-even-item-bg-color);
+}
+
+.directory img {
+	vertical-align: -30%;
+}
+
+.directory .levels {
+        white-space: nowrap;
+        width: 100%;
+        text-align: right;
+        font-size: 9pt;
+}
+
+.directory .levels span {
+        cursor: pointer;
+        padding-left: 2px;
+        padding-right: 2px;
+	color: var(--page-link-color);
+}
+
+.arrow {
+    color: var(--nav-arrow-color);
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    cursor: pointer;
+    font-size: 80%;
+    display: inline-block;
+    width: 16px;
+    height: 22px;
+}
+
+.icon {
+    font-family: var(--font-family-icon);
+    line-height: normal;
+    font-weight: bold;
+    font-size: 12px;
+    height: 14px;
+    width: 16px;
+    display: inline-block;
+    background-color: var(--icon-background-color);
+    color: var(--icon-foreground-color);
+    text-align: center;
+    border-radius: 4px;
+    margin-left: 2px;
+    margin-right: 2px;
+}
+
+.icona {
+    width: 24px;
+    height: 22px;
+    display: inline-block;
+}
+
+.iconfopen {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:var(--icon-folder-open-image);
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+.iconfclosed {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:var(--icon-folder-closed-image);
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+.icondoc {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:var(--icon-doc-image);
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+address {
+	font-style: normal;
+	color: var(--footer-foreground-color);
+}
+
+table.doxtable caption {
+	caption-side: top;
+}
+
+table.doxtable {
+	border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+	border: 1px solid var(--table-cell-border-color);
+	padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+	background-color: var(--table-header-background-color);
+	color: var(--table-header-foreground-color);
+	font-size: 110%;
+	padding-bottom: 4px;
+	padding-top: 5px;
+}
+
+table.fieldtable {
+        margin-bottom: 10px;
+        border: 1px solid var(--memdef-border-color);
+        border-spacing: 0px;
+        border-radius: 4px;
+        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+        padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit {
+        white-space: nowrap;
+        border-right: 1px solid var(--memdef-border-color);
+        border-bottom: 1px solid var(--memdef-border-color);
+        vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+        padding-top: 3px;
+}
+
+.fieldtable td.fieldinit {
+        padding-top: 3px;
+        text-align: right;
+}
+
+
+.fieldtable td.fielddoc {
+        border-bottom: 1px solid var(--memdef-border-color);
+}
+
+.fieldtable td.fielddoc p:first-child {
+        margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+        margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+        border-bottom: none;
+}
+
+.fieldtable th {
+        background-image: var(--memdef-title-gradient-image);
+        background-repeat:repeat-x;
+        background-color: var(--memdef-title-background-color);
+        font-size: 90%;
+        color: var(--memdef-proto-text-color);
+        padding-bottom: 4px;
+        padding-top: 5px;
+        text-align:left;
+        font-weight: 400;
+        border-top-left-radius: 4px;
+        border-top-right-radius: 4px;
+        border-bottom: 1px solid var(--memdef-border-color);
+}
+
+
+.tabsearch {
+	top: 0px;
+	left: 10px;
+	height: 36px;
+	background-image: var(--nav-gradient-image);
+	z-index: 101;
+	overflow: hidden;
+	font-size: 13px;
+}
+
+.navpath ul
+{
+	font-size: 11px;
+	background-image: var(--nav-gradient-image);
+	background-repeat:repeat-x;
+	background-position: 0 -5px;
+	height:30px;
+	line-height:30px;
+	color:var(--nav-text-normal-color);
+	border:solid 1px var(--nav-breadcrumb-border-color);
+	overflow:hidden;
+	margin:0px;
+	padding:0px;
+}
+
+.navpath li
+{
+	list-style-type:none;
+	float:left;
+	padding-left:10px;
+	padding-right:15px;
+	background-image:var(--nav-breadcrumb-image);
+	background-repeat:no-repeat;
+	background-position:right;
+	color: var(--nav-foreground-color);
+}
+
+.navpath li.navelem a
+{
+	height:32px;
+	display:block;
+	outline: none;
+	color: var(--nav-text-normal-color);
+	font-family: var(--font-family-nav);
+	text-shadow: var(--nav-text-normal-shadow);
+	text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+	color: var(--nav-text-hover-color);
+	text-shadow: var(--nav-text-hover-shadow);
+}
+
+.navpath li.footer
+{
+        list-style-type:none;
+        float:right;
+        padding-left:10px;
+        padding-right:15px;
+        background-image:none;
+        background-repeat:no-repeat;
+        background-position:right;
+        color: var(--footer-foreground-color);
+        font-size: 8pt;
+}
+
+
+div.summary
+{
+	float: right;
+	font-size: 8pt;
+	padding-right: 5px;
+	width: 50%;
+	text-align: right;
+}
+
+div.summary a
+{
+	white-space: nowrap;
+}
+
+table.classindex
+{
+        margin: 10px;
+        white-space: nowrap;
+        margin-left: 3%;
+        margin-right: 3%;
+        width: 94%;
+        border: 0;
+        border-spacing: 0;
+        padding: 0;
+}
+
+div.ingroups
+{
+	font-size: 8pt;
+	width: 50%;
+	text-align: left;
+}
+
+div.ingroups a
+{
+	white-space: nowrap;
+}
+
+div.header
+{
+        background-image: var(--header-gradient-image);
+        background-repeat:repeat-x;
+	background-color: var(--header-background-color);
+	margin:  0px;
+	border-bottom: 1px solid var(--header-separator-color);
+}
+
+div.headertitle
+{
+	padding: 5px 5px 5px 10px;
+}
+
+.PageDocRTL-title div.headertitle {
+  text-align: right;
+  direction: rtl;
+}
+
+dl {
+        padding: 0 0 0 0;
+}
+
+/*
+
+dl.section {
+	margin-left: 0px;
+	padding-left: 0px;
+}
+
+dl.note {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #D0C000;
+}
+
+dl.warning, dl.attention, dl.important {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #00D000;
+}
+
+dl.deprecated {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #505050;
+}
+
+dl.todo {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #00C0E0;
+}
+
+dl.test {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #3030E0;
+}
+
+dl.bug {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #C08050;
+}
+
+*/
+
+dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a {
+    font-weight: bold !important;
+}
+
+dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug,
+dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark {
+    padding: 10px;
+    margin: 10px 0px;
+    overflow: hidden;
+    margin-left: 0;
+    border-radius: 4px;
+}
+
+dl.section dd {
+    margin-bottom: 2px;
+}
+
+dl.warning, dl.attention, dl.important {
+    background: var(--warning-color-bg);
+    border-left: 8px solid var(--warning-color-hl);
+    color: var(--warning-color-text);
+}
+
+dl.warning dt, dl.attention dt, dl.important dt {
+    color: var(--warning-color-hl);
+}
+
+dl.note, dl.remark {
+    background: var(--note-color-bg);
+    border-left: 8px solid var(--note-color-hl);
+    color: var(--note-color-text);
+}
+
+dl.note dt, dl.remark dt {
+    color: var(--note-color-hl);
+}
+
+dl.todo {
+    background: var(--todo-color-bg);
+    border-left: 8px solid var(--todo-color-hl);
+    color: var(--todo-color-text);
+}
+
+dl.todo dt {
+    color: var(--todo-color-hl);
+}
+
+dl.test {
+    background: var(--test-color-bg);
+    border-left: 8px solid var(--test-color-hl);
+    color: var(--test-color-text);
+}
+
+dl.test dt {
+    color: var(--test-color-hl);
+}
+
+dl.bug dt a {
+    color: var(--bug-color-hl) !important;
+}
+
+dl.bug {
+    background: var(--bug-color-bg);
+    border-left: 8px solid var(--bug-color-hl);
+    color: var(--bug-color-text);
+}
+
+dl.bug dt a {
+    color: var(--bug-color-hl) !important;
+}
+
+dl.deprecated {
+    background: var(--deprecated-color-bg);
+    border-left: 8px solid var(--deprecated-color-hl);
+    color: var(--deprecated-color-text);
+}
+
+dl.deprecated dt a {
+    color: var(--deprecated-color-hl) !important;
+}
+
+dl.note dd, dl.warning dd, dl.pre dd, dl.post dd,
+dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd,
+dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd {
+    margin-inline-start: 0px;
+}
+
+dl.invariant, dl.pre, dl.post {
+    background: var(--invariant-color-bg);
+    border-left: 8px solid var(--invariant-color-hl);
+    color: var(--invariant-color-text);
+}
+
+dl.invariant dt, dl.pre dt, dl.post dt {
+    color: var(--invariant-color-hl);
+}
+
+
+#projectrow
+{
+	height: 56px;
+}
+
+#projectlogo
+{
+	text-align: center;
+	vertical-align: bottom;
+	border-collapse: separate;
+}
+
+#projectlogo img
+{
+	border: 0px none;
+}
+
+#projectalign
+{
+        vertical-align: middle;
+        padding-left: 0.5em;
+}
+
+#projectname
+{
+	font-size: 200%;
+	font-family: var(--font-family-title);
+	margin: 0px;
+	padding: 2px 0px;
+}
+
+#projectbrief
+{
+	font-size: 90%;
+        font-family: var(--font-family-title);
+	margin: 0px;
+	padding: 0px;
+}
+
+#projectnumber
+{
+	font-size: 50%;
+	font-family: 50% var(--font-family-title);
+	margin: 0px;
+	padding: 0px;
+}
+
+#titlearea
+{
+	padding: 0px;
+	margin: 0px;
+	width: 100%;
+	border-bottom: 1px solid var(--title-separator-color);
+	background-color: var(--title-background-color);
+}
+
+.image
+{
+        text-align: center;
+}
+
+.dotgraph
+{
+        text-align: center;
+}
+
+.mscgraph
+{
+        text-align: center;
+}
+
+.plantumlgraph
+{
+        text-align: center;
+}
+
+.diagraph
+{
+        text-align: center;
+}
+
+.caption
+{
+	font-weight: bold;
+}
+
+dl.citelist {
+        margin-bottom:50px;
+}
+
+dl.citelist dt {
+        color:var(--citation-label-color);
+        float:left;
+        font-weight:bold;
+        margin-right:10px;
+        padding:5px;
+        text-align:right;
+        width:52px;
+}
+
+dl.citelist dd {
+        margin:2px 0 2px 72px;
+        padding:5px 0;
+}
+
+div.toc {
+        padding: 14px 25px;
+        background-color: var(--toc-background-color);
+        border: 1px solid var(--toc-border-color);
+        border-radius: 7px 7px 7px 7px;
+        float: right;
+        height: auto;
+        margin: 0 8px 10px 10px;
+        width: 200px;
+}
+
+div.toc li {
+        background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent;
+        font: 10px/1.2 var(--font-family-toc);
+        margin-top: 5px;
+        padding-left: 10px;
+        padding-top: 2px;
+}
+
+div.toc h3 {
+        font: bold 12px/1.2 var(--font-family-toc);
+	color: var(--toc-header-color);
+        border-bottom: 0 none;
+        margin: 0;
+}
+
+div.toc ul {
+        list-style: none outside none;
+        border: medium none;
+        padding: 0px;
+}
+
+div.toc li[class^='level'] {
+        margin-left: 15px;
+}
+
+div.toc li.level1 {
+        margin-left: 0px;
+}
+
+div.toc li.empty {
+        background-image: none;
+        margin-top: 0px;
+}
+
+span.emoji {
+        /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html
+         * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;
+         */
+}
+
+span.obfuscator {
+  display: none;
+}
+
+.inherit_header {
+        font-weight: bold;
+        color: var(--inherit-header-color);
+        cursor: pointer;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+.inherit_header td {
+        padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+        display: none;
+}
+
+tr.heading h2 {
+        margin-top: 12px;
+        margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+        position: absolute;
+        display: none;
+}
+
+#powerTip {
+	cursor: default;
+	/*white-space: nowrap;*/
+        color: var(--tooltip-foreground-color);
+	background-color: var(--tooltip-background-color);
+	border: 1px solid var(--tooltip-border-color);
+	border-radius: 4px 4px 4px 4px;
+	box-shadow: var(--tooltip-shadow);
+	display: none;
+	font-size: smaller;
+	max-width: 80%;
+	opacity: 0.9;
+	padding: 1ex 1em 1em;
+	position: absolute;
+	z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+        color: var(--tooltip-doc-color);
+	font-style: italic;
+}
+
+#powerTip div.ttname a {
+        font-weight: bold;
+}
+
+#powerTip a {
+	color: var(--tooltip-link-color);
+}
+
+#powerTip div.ttname {
+        font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+        color: var(--tooltip-declaration-color);
+}
+
+#powerTip div {
+        margin: 0px;
+        padding: 0px;
+        font-size: 12px;
+       	font-family: var(--font-family-tooltip);
+	line-height: 16px;
+}
+
+#powerTip:before, #powerTip:after {
+	content: "";
+	position: absolute;
+	margin: 0px;
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.w:after,  #powerTip.w:before,
+#powerTip.e:after,  #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+	border: solid transparent;
+	content: " ";
+	height: 0;
+	width: 0;
+	position: absolute;
+}
+
+#powerTip.n:after,  #powerTip.s:after,
+#powerTip.w:after,  #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+	border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before,  #powerTip.s:before,
+#powerTip.w:before,  #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+	border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+	top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+	border-top-color: var(--tooltip-background-color);
+	border-width: 10px;
+	margin: 0px -10px;
+}
+#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before {
+	border-top-color: var(--tooltip-border-color);
+	border-width: 11px;
+	margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+	left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+	right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+	left: 14px;
+}
+
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+	bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+	border-bottom-color: var(--tooltip-background-color);
+	border-width: 10px;
+	margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+	border-bottom-color: var(--tooltip-border-color);
+	border-width: 11px;
+	margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+	left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+	right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+	left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+	left: 100%;
+}
+#powerTip.e:after {
+	border-left-color: var(--tooltip-border-color);
+	border-width: 10px;
+	top: 50%;
+	margin-top: -10px;
+}
+#powerTip.e:before {
+	border-left-color: var(--tooltip-border-color);
+	border-width: 11px;
+	top: 50%;
+	margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+	right: 100%;
+}
+#powerTip.w:after {
+	border-right-color: var(--tooltip-border-color);
+	border-width: 10px;
+	top: 50%;
+	margin-top: -10px;
+}
+#powerTip.w:before {
+	border-right-color: var(--tooltip-border-color);
+	border-width: 11px;
+	top: 50%;
+	margin-top: -11px;
+}
+
+@media print
+{
+  #top { display: none; }
+  #side-nav { display: none; }
+  #nav-path { display: none; }
+  body { overflow:visible; }
+  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+  .summary { display: none; }
+  .memitem { page-break-inside: avoid; }
+  #doc-content
+  {
+    margin-left:0 !important;
+    height:auto !important;
+    width:auto !important;
+    overflow:inherit;
+    display:inline;
+  }
+}
+
+/* @group Markdown */
+
+table.markdownTable {
+	border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+	border: 1px solid var(--table-cell-border-color);
+	padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+	background-color: var(--table-header-background-color);
+	color: var(--table-header-foreground-color);
+	font-size: 110%;
+	padding-bottom: 4px;
+	padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+	text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+	text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+	text-align: center
+}
+
+tt, code, kbd, samp
+{
+  display: inline-block;
+}
+/* @end */
+
+u {
+	text-decoration: underline;
+}
+
+details>summary {
+  list-style-type: none;
+}
+
+details > summary::-webkit-details-marker {
+    display: none;
+}
+
+details>summary::before {
+    content: "\25ba";
+    padding-right:4px;
+    font-size: 80%;
+}
+
+details[open]>summary::before {
+    content: "\25bc";
+    padding-right:4px;
+    font-size: 80%;
+}
+
+body {
+    scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color);
+}
+
+::-webkit-scrollbar {
+        background-color: var(--scrollbar-background-color);
+        height: 12px;
+        width: 12px;
+}
+::-webkit-scrollbar-thumb {
+        border-radius: 6px;
+        box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color);
+        border: solid 2px transparent;
+}
+::-webkit-scrollbar-corner {
+        background-color: var(--scrollbar-background-color);
+}
+
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/doxygen.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/doxygen.svg
new file mode 100644
index 0000000000000000000000000000000000000000..79a76354078d0fe34ea30c3a481405c720937483
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/doxygen.svg
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" viewBox="0 0 104 31" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+  <linearGradient id="a">
+   <stop stop-color="#5373B4" offset="0"/>
+   <stop stop-color="#7C95C6" offset="1"/>
+  </linearGradient>
+  <linearGradient id="d" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+  <linearGradient id="c" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientTransform="matrix(.6816 0 0 1.0248 72.391 -.91809)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+  <linearGradient id="b" x1="56.295" x2="56.295" y1="24.622" y2="26.574" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+  <linearGradient id="e" x1="49.067" x2="48.956" y1="19.719" y2="9.5227" gradientTransform="matrix(.97968 0 0 1.0207 -.25579 -.25579)" gradientUnits="userSpaceOnUse">
+   <stop stop-color="#C0CCE3" offset="0"/>
+   <stop stop-color="#EEF1F7" offset="1"/>
+  </linearGradient>
+  <filter id="f" x="-.010676" y="-.045304" width="1.0214" height="1.0906" color-interpolation-filters="sRGB">
+   <feGaussianBlur stdDeviation="0.45293203"/>
+  </filter>
+ </defs>
+ <g>
+  <path transform="translate(-2.5759 -27.848)" d="m13.609 32.203v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23645 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88018-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35277 3.7988-1.0566 1.0471-0.70387 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.92299-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.4611 0.28066 1.7988 0.84375 0.33777 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5976v-8.3926c0-0.84464-0.0765-1.6106-0.22851-2.2969-0.13511-0.70387-0.37971-1.2925-0.73438-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.063 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07028-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06051 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3438h-0.05078l-2.9648-9.3438zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914 0.38844 0.24635 0.6991 0.57184 0.93555 0.97656 0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13253 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10134 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88814-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70105 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.4927-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89025 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74023 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" filter="url(#f)" opacity=".3" stroke="#969696"/>
+  <path d="m0.97202 24.161 43.605-0.0019 0.0508 3.3061-43.6 0.04174z" fill="url(#d)" stroke="#000" stroke-width=".5"/>
+  <path d="m10.283 3.5547v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23644 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88017-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35278 3.7988-1.0566 1.0471-0.70386 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.923-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.461 0.28066 1.7988 0.84375 0.33778 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5977v-8.3926c0-0.84464-0.0765-1.6106-0.22852-2.2969-0.13511-0.70387-0.3797-1.2925-0.73437-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.062 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07027-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06052 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3437h-0.05078l-2.9648-9.3437zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914s0.6991 0.57184 0.93555 0.97656c0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13254 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10133 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88813-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70106 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.49271-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89026 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74024 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" fill="url(#e)" stroke="#4665A2" stroke-width=".7"/>
+  <path d="m52.988 27.291c0.99602-1.0359 1.3944-1.8725 1.7928-3.1076l3.8247-0.03984c0.3113 1.6096 0.82413 2.5137 1.6335 3.1474z" fill="url(#b)" stroke="#000" stroke-width=".5"/>
+  <path d="m73.89 24.04 28.885-0.2011-0.12476 3.3879-31.033 0.16229c1.2621-1.0234 1.9665-2.2859 2.2724-3.3491z" fill="url(#c)" stroke="#000" stroke-width=".41788"/>
+ </g>
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/doxygen_crawl.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/doxygen_crawl.html
new file mode 100644
index 0000000000000000000000000000000000000000..7b7d9ded90c030323a81f3902911c394bb3439ad
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/doxygen_crawl.html
@@ -0,0 +1,356 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<title>Validator / crawler helper</title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+</head>
+<body>
+<a href="custom__list__widget_8hpp_source.html"/>
+<a href="execute__frame_8hpp_source.html"/>
+<a href="folder__structure__constants_8hpp_source.html"/>
+<a href="learn__environment_8hpp_source.html"/>
+<a href="notebook__converter_8hpp_source.html"/>
+<a href="process__runner_8hpp_source.html"/>
+<a href="script__worker_8hpp_source.html"/>
+<a href="sidebar_8hpp_source.html"/>
+<a href="subtask__item_8hpp_source.html"/>
+<a href="task_8hpp_source.html"/>
+<a href="task__executor_8hpp_source.html"/>
+<a href="task__manager_8hpp_source.html"/>
+<a href="task__parser_8hpp_source.html"/>
+<a href="task__ui_8hpp_source.html"/>
+<a href="custom__list__widget_8hpp.html"/>
+<a href="execute__frame_8hpp.html"/>
+<a href="folder__structure__constants_8hpp.html"/>
+<a href="learn__environment_8hpp.html"/>
+<a href="notebook__converter_8hpp.html"/>
+<a href="process__runner_8hpp.html"/>
+<a href="script__worker_8hpp.html"/>
+<a href="sidebar_8hpp.html"/>
+<a href="subtask__item_8hpp.html"/>
+<a href="task_8hpp.html"/>
+<a href="task__executor_8hpp.html"/>
+<a href="task__manager_8hpp.html"/>
+<a href="task__parser_8hpp.html"/>
+<a href="task__ui_8hpp.html"/>
+<a href="custom__list__widget_8cpp.html"/>
+<a href="execute__frame_8cpp.html"/>
+<a href="learn__environment_8cpp.html"/>
+<a href="notebook__converter_8cpp.html"/>
+<a href="process__runner_8cpp.html"/>
+<a href="script__worker_8cpp.html"/>
+<a href="sidebar_8cpp.html"/>
+<a href="subtask__item_8cpp.html"/>
+<a href="task__executor_8cpp.html"/>
+<a href="task__manager_8cpp.html"/>
+<a href="task__parser_8cpp.html"/>
+<a href="task__ui_8cpp.html"/>
+<a href="classCustomListWidget.html"/>
+<a href="classCustomListWidget-members.html"/>
+<a href="classExecuteFrame.html"/>
+<a href="classExecuteFrame-members.html"/>
+<a href="classLearnEnvironment.html"/>
+<a href="classLearnEnvironment-members.html"/>
+<a href="classNotebookConverter.html"/>
+<a href="classNotebookConverter-members.html"/>
+<a href="classProcessRunner.html"/>
+<a href="classProcessRunner-members.html"/>
+<a href="classQFrame.html"/>
+<a href="classQListWidget.html"/>
+<a href="classQObject.html"/>
+<a href="classQWidget.html"/>
+<a href="classScriptWorker.html"/>
+<a href="classScriptWorker-members.html"/>
+<a href="classSidebar.html"/>
+<a href="classSidebar-members.html"/>
+<a href="structSubtask.html"/>
+<a href="structSubtask-members.html"/>
+<a href="classSubtaskItem.html"/>
+<a href="classSubtaskItem-members.html"/>
+<a href="structTask.html"/>
+<a href="structTask-members.html"/>
+<a href="classTaskExecutor.html"/>
+<a href="classTaskExecutor-members.html"/>
+<a href="classTaskManager.html"/>
+<a href="classTaskManager-members.html"/>
+<a href="classTaskParser.html"/>
+<a href="classTaskParser-members.html"/>
+<a href="classTaskUI.html"/>
+<a href="classTaskUI-members.html"/>
+<a href="namespaceFolderStructureConstants.html"/>
+<a href="namespaceUi.html"/>
+<a href="graph_legend.html"/>
+<a href="dir_d44c64559bbebec7f509842c48db8b23.html"/>
+<a href="dir_7d465071c5c63f34a2628cf83e1b693a.html"/>
+<a href="dir_68267d1309a1af8e8297ef4c3efbcdba.html"/>
+<a href="dir_000002_000000.html"/>
+<a href="index.html"/>
+<a href="doxygen_crawl.html"/>
+<a href="namespaces.html"/>
+<a href="namespacemembers.html"/>
+<a href="namespacemembers.html"/>
+<a href="namespacemembers.html"/>
+<a href="namespacemembers.html"/>
+<a href="namespacemembers.html"/>
+<a href="namespacemembers.html"/>
+<a href="namespacemembers.html"/>
+<a href="namespacemembers.html"/>
+<a href="namespacemembers.html"/>
+<a href="namespacemembers_func.html"/>
+<a href="namespacemembers_vars.html"/>
+<a href="namespacemembers_vars.html"/>
+<a href="namespacemembers_vars.html"/>
+<a href="namespacemembers_vars.html"/>
+<a href="namespacemembers_vars.html"/>
+<a href="namespacemembers_vars.html"/>
+<a href="namespacemembers_vars.html"/>
+<a href="namespacemembers_vars.html"/>
+<a href="annotated.html"/>
+<a href="classes.html"/>
+<a href="hierarchy.html"/>
+<a href="inherits.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_func.html"/>
+<a href="functions_vars.html"/>
+<a href="functions_vars.html"/>
+<a href="functions_vars.html"/>
+<a href="functions_vars.html"/>
+<a href="functions_vars.html"/>
+<a href="functions_vars.html"/>
+<a href="functions_vars.html"/>
+<a href="functions_vars.html"/>
+<a href="functions_vars.html"/>
+<a href="files.html"/>
+<a href="globals.html"/>
+<a href="globals.html"/>
+<a href="globals.html"/>
+<a href="globals.html"/>
+<a href="globals.html"/>
+<a href="globals_vars.html"/>
+<a href="globals_vars.html"/>
+<a href="globals_vars.html"/>
+<a href="globals_vars.html"/>
+<a href="globals_type.html"/>
+<a href="globals_enum.html"/>
+<a href="annotated.html"/>
+<a href="classCustomListWidget.html"/>
+<a href="classCustomListWidget.html#a5d487b35f9dc9cd601b962e68b142e0b"/>
+<a href="classCustomListWidget.html#ab37ab040c9872e60767fff8d1525ccad"/>
+<a href="classCustomListWidget.html#adc3f7462d5db3e7c9fe4c5fd59076331"/>
+<a href="classExecuteFrame.html"/>
+<a href="classExecuteFrame.html#a0f49e809cf1c14026958bf26d3cf399b"/>
+<a href="classExecuteFrame.html#a3ddc917ee39ffc1c54c491aab9ba7404"/>
+<a href="classExecuteFrame.html#a659f12e489dcddf89818a116c1e7f742"/>
+<a href="classExecuteFrame.html#a796e8a79e0bc372c47421617bc7c9100"/>
+<a href="classExecuteFrame.html#a9a3ca41869860aee87ee8198fd629f8b"/>
+<a href="classLearnEnvironment.html"/>
+<a href="classLearnEnvironment.html#a25d7b0bd7b4270c7c2feeab3a9450d39"/>
+<a href="classLearnEnvironment.html#aa684f56e6ba08652e1ddfa47304eb449"/>
+<a href="classLearnEnvironment.html#ad2086d08e20cef426a861e1093cfc987"/>
+<a href="classLearnEnvironment.html#af0c2b95f5853116a09c795d33eb47d52"/>
+<a href="classNotebookConverter.html"/>
+<a href="classNotebookConverter.html#a11c8ed4604d4c29acd45d6225d80c464"/>
+<a href="classNotebookConverter.html#a665ba1030d993bd9e165fca123d92032"/>
+<a href="classNotebookConverter.html#a66b007e49cfe58d279c3ac279ced7213"/>
+<a href="classNotebookConverter.html#a8b06d3bc01057ddd936977bded4297f4"/>
+<a href="classNotebookConverter.html#aa14fbd73e3cc21866decd2e02572207d"/>
+<a href="classNotebookConverter.html#af64e43c667b96ba0926a715316002665"/>
+<a href="classProcessRunner.html"/>
+<a href="classProcessRunner.html#a76c6897c0cf00b9034e6deb9662debbf"/>
+<a href="classProcessRunner.html#a8d3ba848e57c03660af7c68dcfd7e904"/>
+<a href="classProcessRunner.html#a9ad2c856469a7129c905721309620e05"/>
+<a href="classProcessRunner.html#abb4be6a4283702e38a9eb7d51438efb6"/>
+<a href="classProcessRunner.html#ad6840bbd9e54b7c6a0678dc9c5c792d7"/>
+<a href="classProcessRunner.html#ae42c9c4e04890fffa674e06eedf631b3"/>
+<a href="classProcessRunner.html#ae69a94ddf835cec0a63fe7f4fdb61934"/>
+<a href="classQFrame.html"/>
+<a href="classQListWidget.html"/>
+<a href="classQObject.html"/>
+<a href="classQWidget.html"/>
+<a href="classScriptWorker.html"/>
+<a href="classScriptWorker.html#a1eb9773d50b730f913bb60149515aef5"/>
+<a href="classScriptWorker.html#a501653e756b40c33f4bd37957b398de3"/>
+<a href="classScriptWorker.html#a5f0a6e5095c8e55559045d7d9d2e2e1a"/>
+<a href="classScriptWorker.html#aafadef7996317ca83dcb2605777affe2"/>
+<a href="classScriptWorker.html#ac33ab3bb0d1e7e9e0070ac3b7f33b633"/>
+<a href="classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523"/>
+<a href="classSidebar.html"/>
+<a href="classSidebar.html#a874f7f7907a44517ee9cf9ac2c1888d7"/>
+<a href="classSidebar.html#a9b621329888b135c42333a7ce8a4cad4"/>
+<a href="classSidebar.html#abf817c38465f3382b90d409e9cf87777"/>
+<a href="classSidebar.html#ad4d587292c62ad30ac9f1feac5d39499"/>
+<a href="classSubtaskItem.html"/>
+<a href="classSubtaskItem.html#a005df51b50001f3e9c95652e845cf424"/>
+<a href="classSubtaskItem.html#a63e6bb32b434cf04705924c3e2cdd0db"/>
+<a href="classSubtaskItem.html#a9a41e7bf314df5a4297c68509d531423"/>
+<a href="classSubtaskItem.html#aebba84aaef3c06a0c3079cea7fcd4ba6"/>
+<a href="classTaskExecutor.html"/>
+<a href="classTaskExecutor.html#a0a0c76bf999aea855cb83a6051864e09"/>
+<a href="classTaskExecutor.html#a2b22d6b9fa450f3471de4359b6f3b131"/>
+<a href="classTaskExecutor.html#a782117a9e19eff6a87255c7358e87857"/>
+<a href="classTaskExecutor.html#a7fb6bb2e760b08c4816f5c48902d6498"/>
+<a href="classTaskExecutor.html#a9d92d24d74615c594a578eafb6d48799"/>
+<a href="classTaskExecutor.html#ac6783ed16b392507bfaabd21422ee140"/>
+<a href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d"/>
+<a href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc"/>
+<a href="classTaskExecutor.html#ad2f2dd7e0d22d7b3bb2ec532f158bddc"/>
+<a href="classTaskExecutor.html#adeffddd301a31fe1891712d30096a468"/>
+<a href="classTaskManager.html"/>
+<a href="classTaskManager.html#a327677e3a17f1a707095119328a96179"/>
+<a href="classTaskManager.html#a36aa4b88ce92147fc2bfe7b222e8d984"/>
+<a href="classTaskManager.html#a51989e6fb895fd817286153750f07d75"/>
+<a href="classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e"/>
+<a href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e"/>
+<a href="classTaskManager.html#a9c906455542360f6760169599f2640a3"/>
+<a href="classTaskManager.html#a9f3de937346f77e565d555a59a8a0da0"/>
+<a href="classTaskManager.html#ac4c5170435b505415f49e40906888743"/>
+<a href="classTaskParser.html"/>
+<a href="classTaskParser.html#a86f40497d6666a02307886ed3a4056f3"/>
+<a href="classTaskUI.html"/>
+<a href="classTaskUI.html#a11f88e4482442899fa19adf1f66fa030"/>
+<a href="classTaskUI.html#a53f64716c6328b25e37d822e687886cf"/>
+<a href="classTaskUI.html#a62690c3b7147c20980da5c2323314025"/>
+<a href="classTaskUI.html#a6c2ca067880d519ab255a7608a268c8f"/>
+<a href="classTaskUI.html#a86f09b07fe3b4fd956f8c4ab02b8fae2"/>
+<a href="classTaskUI.html#a8cb2994522ad6b1b59383515edddead3"/>
+<a href="classTaskUI.html#a9f8872c2393d36d7c3e57cf7501c745e"/>
+<a href="classTaskUI.html#ab6f629b7a42a49b94250768fbed7f4f4"/>
+<a href="classTaskUI.html#af43308f1438155bd927357ac93c7b9db"/>
+<a href="classes.html"/>
+<a href="custom__list__widget_8cpp.html"/>
+<a href="custom__list__widget_8hpp.html"/>
+<a href="dir_68267d1309a1af8e8297ef4c3efbcdba.html"/>
+<a href="dir_7d465071c5c63f34a2628cf83e1b693a.html"/>
+<a href="dir_d44c64559bbebec7f509842c48db8b23.html"/>
+<a href="execute__frame_8cpp.html"/>
+<a href="execute__frame_8hpp.html"/>
+<a href="files.html"/>
+<a href="folder__structure__constants_8hpp.html"/>
+<a href="folder__structure__constants_8hpp.html#a4a34d956c5883529b64e6bb183d768a7"/>
+<a href="folder__structure__constants_8hpp.html#a82483c09d34f6dbea6451b921b231c5a"/>
+<a href="folder__structure__constants_8hpp.html#a84dc4e92b3d05fcef00c9abb99f9f9da"/>
+<a href="folder__structure__constants_8hpp.html#a97e2abd38a09653e626ba46a5e5e10bd"/>
+<a href="folder__structure__constants_8hpp.html#aa49dbebb86fde82b617e7db1193bd720"/>
+<a href="folder__structure__constants_8hpp.html#aa9f54b725067dc395f26c6608161dae9"/>
+<a href="folder__structure__constants_8hpp.html#ac7bdb4609b31965b63ac7d3ce2b197c3"/>
+<a href="folder__structure__constants_8hpp.html#adc8fa9eae998a60723424421756bd65b"/>
+<a href="folder__structure__constants_8hpp.html#ae963e238a7326dd80a2401eae27c252a"/>
+<a href="folder__structure__constants_8hpp.html#afbae3ede611451504507436474ae482e"/>
+<a href="functions.html"/>
+<a href="functions_func.html"/>
+<a href="functions_vars.html"/>
+<a href="globals.html"/>
+<a href="globals_enum.html"/>
+<a href="globals_type.html"/>
+<a href="globals_vars.html"/>
+<a href="hierarchy.html"/>
+<a href="learn__environment_8cpp.html"/>
+<a href="learn__environment_8hpp.html"/>
+<a href="namespaceFolderStructureConstants.html"/>
+<a href="namespaceFolderStructureConstants.html#a4a34d956c5883529b64e6bb183d768a7"/>
+<a href="namespaceFolderStructureConstants.html#a82483c09d34f6dbea6451b921b231c5a"/>
+<a href="namespaceFolderStructureConstants.html#a84dc4e92b3d05fcef00c9abb99f9f9da"/>
+<a href="namespaceFolderStructureConstants.html#a97e2abd38a09653e626ba46a5e5e10bd"/>
+<a href="namespaceFolderStructureConstants.html#aa49dbebb86fde82b617e7db1193bd720"/>
+<a href="namespaceFolderStructureConstants.html#aa9f54b725067dc395f26c6608161dae9"/>
+<a href="namespaceFolderStructureConstants.html#ac7bdb4609b31965b63ac7d3ce2b197c3"/>
+<a href="namespaceFolderStructureConstants.html#adc8fa9eae998a60723424421756bd65b"/>
+<a href="namespaceFolderStructureConstants.html#ae963e238a7326dd80a2401eae27c252a"/>
+<a href="namespaceFolderStructureConstants.html#afbae3ede611451504507436474ae482e"/>
+<a href="namespaceUi.html"/>
+<a href="namespacemembers.html"/>
+<a href="namespacemembers_func.html"/>
+<a href="namespacemembers_vars.html"/>
+<a href="namespaces.html"/>
+<a href="notebook__converter_8cpp.html"/>
+<a href="notebook__converter_8cpp.html#a0c01dbde6677d7e4769b85716c69c491"/>
+<a href="notebook__converter_8cpp.html#a0f5a0941639b66358c741284acf0dced"/>
+<a href="notebook__converter_8cpp.html#a184e7635f439bf95093b6a066ce161d7"/>
+<a href="notebook__converter_8cpp.html#a213a8c8a72491ee237c3ce92f92191ec"/>
+<a href="notebook__converter_8cpp.html#a22b163bef7c6dc038082729221692dfa"/>
+<a href="notebook__converter_8cpp.html#a577f6caa2b74a38695dcadccd277cd41"/>
+<a href="notebook__converter_8cpp.html#a6c92986de28899546e13ab1a37bf0722"/>
+<a href="notebook__converter_8cpp.html#a87d746c0d44126e9db98540148634b18"/>
+<a href="notebook__converter_8cpp.html#a8a72334e6ef797e624196b1d9e073c6e"/>
+<a href="notebook__converter_8hpp.html"/>
+<a href="process__runner_8cpp.html"/>
+<a href="process__runner_8hpp.html"/>
+<a href="script__worker_8cpp.html"/>
+<a href="script__worker_8hpp.html"/>
+<a href="sidebar_8cpp.html"/>
+<a href="sidebar_8hpp.html"/>
+<a href="structSubtask.html"/>
+<a href="structSubtask.html#a0e3d8e77e26cdb58b2e9faa8ec2e1707"/>
+<a href="structSubtask.html#a293ddda988cb5fe92fcb5e5189b86850"/>
+<a href="structSubtask.html#a2c4bcefd1e42773c5e23abd9ba0b30f2"/>
+<a href="structSubtask.html#a4cdfbab855cd65277e17c8975bb0d730"/>
+<a href="structSubtask.html#a4fc46ff8e54ab67641df5ff45e7e0cb4"/>
+<a href="structSubtask.html#a69b5b90686d9e1c75b0f071a7b9dc31b"/>
+<a href="structSubtask.html#a905ed579cc13759a257c37d261141281"/>
+<a href="structSubtask.html#a9b2edd425425878f6e57a2f213b1211a"/>
+<a href="structSubtask.html#ab1e1bff66e7464efa54419b36006f1a8"/>
+<a href="structSubtask.html#ad6350ae5d46df3d006f4f0787915ea9f"/>
+<a href="structSubtask.html#adc3ab0bdda7c565666095845a3e4567f"/>
+<a href="structSubtask.html#ae0c283c25316796864e9ef0d766acb60"/>
+<a href="structSubtask.html#ae73daaeeae0fa09de92ef428be2fdab3"/>
+<a href="structSubtask.html#ae869bad678ab4835b24aeb56176c21aa"/>
+<a href="structTask.html"/>
+<a href="structTask.html#a0ab070dbbe73ff2a4306fe20ab75400f"/>
+<a href="structTask.html#a470ace63434687116684f003a27dc439"/>
+<a href="structTask.html#a6fe956adc87191ee794c5bccf68c292b"/>
+<a href="structTask.html#a7486a61c7f0eb8a952260ffe9c2a1af3"/>
+<a href="structTask.html#a8c37303702dbbb22f7430a73f9a3ed08"/>
+<a href="structTask.html#a92a16f5ec66f7511f0d0ce0fd759bf9e"/>
+<a href="structTask.html#add2905e57d8e714693b24cc8a9148a82"/>
+<a href="subtask__item_8cpp.html"/>
+<a href="subtask__item_8hpp.html"/>
+<a href="task_8hpp.html"/>
+<a href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0"/>
+<a href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0"/>
+<a href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a5bda814c4aedb126839228f1a3d92f09"/>
+<a href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a7b2f31b90fe1c2cc33a52233c1925df3"/>
+<a href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0ae7d31fc0602fb2ede144d18cdffd816b"/>
+<a href="task__executor_8cpp.html"/>
+<a href="task__executor_8hpp.html"/>
+<a href="task__manager_8cpp.html"/>
+<a href="task__manager_8hpp.html"/>
+<a href="task__parser_8cpp.html"/>
+<a href="task__parser_8hpp.html"/>
+<a href="task__ui_8cpp.html"/>
+<a href="task__ui_8hpp.html"/>
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dynsections.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dynsections.js
new file mode 100644
index 0000000000000000000000000000000000000000..b05f4c8d7017a84f189b7e4031cafc6a66cc1a3e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/dynsections.js
@@ -0,0 +1,198 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
+
+function toggleVisibility(linkObj) {
+  return dynsection.toggleVisibility(linkObj);
+}
+
+let dynsection = {
+
+  // helper function
+  updateStripes : function() {
+    $('table.directory tr').
+      removeClass('even').filter(':visible:even').addClass('even');
+    $('table.directory tr').
+      removeClass('odd').filter(':visible:odd').addClass('odd');
+  },
+
+  toggleVisibility : function(linkObj) {
+    const base = $(linkObj).attr('id');
+    const summary = $('#'+base+'-summary');
+    const content = $('#'+base+'-content');
+    const trigger = $('#'+base+'-trigger');
+    const src=$(trigger).attr('src');
+    if (content.is(':visible')===true) {
+      content.hide();
+      summary.show();
+      $(linkObj).addClass('closed').removeClass('opened');
+      $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+    } else {
+      content.show();
+      summary.hide();
+      $(linkObj).removeClass('closed').addClass('opened');
+      $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+    }
+    return false;
+  },
+
+  toggleLevel : function(level) {
+    $('table.directory tr').each(function() {
+      const l = this.id.split('_').length-1;
+      const i = $('#img'+this.id.substring(3));
+      const a = $('#arr'+this.id.substring(3));
+      if (l<level+1) {
+        i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
+        a.html('&#9660;');
+        $(this).show();
+      } else if (l==level+1) {
+        i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
+        a.html('&#9658;');
+        $(this).show();
+      } else {
+        $(this).hide();
+      }
+    });
+    this.updateStripes();
+  },
+
+  toggleFolder : function(id) {
+    // the clicked row
+    const currentRow = $('#row_'+id);
+
+    // all rows after the clicked row
+    const rows = currentRow.nextAll("tr");
+
+    const re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+
+    // only match elements AFTER this one (can't hide elements before)
+    const childRows = rows.filter(function() { return this.id.match(re); });
+
+    // first row is visible we are HIDING
+    if (childRows.filter(':first').is(':visible')===true) {
+      // replace down arrow by right arrow for current row
+      const currentRowSpans = currentRow.find("span");
+      currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+      currentRowSpans.filter(".arrow").html('&#9658;');
+      rows.filter("[id^=row_"+id+"]").hide(); // hide all children
+    } else { // we are SHOWING
+      // replace right arrow by down arrow for current row
+      const currentRowSpans = currentRow.find("span");
+      currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
+      currentRowSpans.filter(".arrow").html('&#9660;');
+      // replace down arrows by right arrows for child rows
+      const childRowsSpans = childRows.find("span");
+      childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+      childRowsSpans.filter(".arrow").html('&#9658;');
+      childRows.show(); //show all children
+    }
+    this.updateStripes();
+  },
+
+  toggleInherit : function(id) {
+    const rows = $('tr.inherit.'+id);
+    const img = $('tr.inherit_header.'+id+' img');
+    const src = $(img).attr('src');
+    if (rows.filter(':first').is(':visible')===true) {
+      rows.css('display','none');
+      $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+    } else {
+      rows.css('display','table-row'); // using show() causes jump in firefox
+      $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+    }
+  },
+};
+
+let codefold = {
+  opened : true,
+
+  // in case HTML_COLORSTYLE is LIGHT or DARK the vars will be replaced, so we write them out explicitly and use double quotes
+  plusImg:  [ "var(--fold-plus-image)",  "var(--fold-plus-image-relpath)" ],
+  minusImg: [ "var(--fold-minus-image)", "var(--fold-minus-image-relpath)" ],
+
+  // toggle all folding blocks
+  toggle_all : function(relPath) {
+    if (this.opened) {
+      $('#fold_all').css('background-image',this.plusImg[relPath]);
+      $('div[id^=foldopen]').hide();
+      $('div[id^=foldclosed]').show();
+    } else {
+      $('#fold_all').css('background-image',this.minusImg[relPath]);
+      $('div[id^=foldopen]').show();
+      $('div[id^=foldclosed]').hide();
+    }
+    this.opened=!this.opened;
+  },
+
+  // toggle single folding block
+  toggle : function(id) {
+    $('#foldopen'+id).toggle();
+    $('#foldclosed'+id).toggle();
+  },
+
+  init : function(relPath) {
+    $('span[class=lineno]').css({
+      'padding-right':'4px',
+      'margin-right':'2px',
+      'display':'inline-block',
+      'width':'54px',
+      'background':'linear-gradient(var(--fold-line-color),var(--fold-line-color)) no-repeat 46px/2px 100%'
+    });
+    // add global toggle to first line
+    $('span[class=lineno]:first').append('<span class="fold" id="fold_all" '+
+      'onclick="javascript:codefold.toggle_all('+relPath+');" '+
+      'style="background-image:'+this.minusImg[relPath]+';"></span>');
+    // add vertical lines to other rows
+    $('span[class=lineno]').not(':eq(0)').append('<span class="fold"></span>');
+    // add toggle controls to lines with fold divs
+    $('div[class=foldopen]').each(function() {
+      // extract specific id to use
+      const id    = $(this).attr('id').replace('foldopen','');
+      // extract start and end foldable fragment attributes
+      const start = $(this).attr('data-start');
+      const end   = $(this).attr('data-end');
+      // replace normal fold span with controls for the first line of a foldable fragment
+      $(this).find('span[class=fold]:first').replaceWith('<span class="fold" '+
+                   'onclick="javascript:codefold.toggle(\''+id+'\');" '+
+                   'style="background-image:'+codefold.minusImg[relPath]+';"></span>');
+      // append div for folded (closed) representation
+      $(this).after('<div id="foldclosed'+id+'" class="foldclosed" style="display:none;"></div>');
+      // extract the first line from the "open" section to represent closed content
+      const line = $(this).children().first().clone();
+      // remove any glow that might still be active on the original line
+      $(line).removeClass('glow');
+      if (start) {
+        // if line already ends with a start marker (e.g. trailing {), remove it
+        $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),''));
+      }
+      // replace minus with plus symbol
+      $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]);
+      // append ellipsis
+      $(line).append(' '+start+'<a href="javascript:codefold.toggle(\''+id+'\')">&#8230;</a>'+end);
+      // insert constructed line into closed div
+      $('#foldclosed'+id).html(line);
+    });
+  },
+};
+/* @license-end */
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8cpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..b4dee1576b7dda031088458a359683a559d9d1f7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8cpp.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: execute_frame.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">execute_frame.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="execute__frame_8hpp_source.html">learn_environment/execute_frame.hpp</a>&quot;</code><br />
+<code>#include &lt;QDebug&gt;</code><br />
+<code>#include &lt;QSize&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for execute_frame.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="execute__frame_8cpp__incl.png" border="0" usemap="#aexecute__frame_8cpp" alt=""/></div>
+<map name="aexecute__frame_8cpp" id="aexecute__frame_8cpp">
+<area shape="rect" title=" " alt="" coords="255,5,387,32"/>
+<area shape="rect" href="execute__frame_8hpp.html" title=" " alt="" coords="84,80,262,123"/>
+<area shape="poly" title=" " alt="" coords="299,35,225,75,223,70,296,30"/>
+<area shape="rect" title=" " alt="" coords="286,88,356,115"/>
+<area shape="poly" title=" " alt="" coords="324,32,324,73,318,73,318,32"/>
+<area shape="rect" title=" " alt="" coords="380,88,438,115"/>
+<area shape="poly" title=" " alt="" coords="336,31,386,76,382,80,333,34"/>
+<area shape="rect" title=" " alt="" coords="5,171,74,197"/>
+<area shape="poly" title=" " alt="" coords="140,126,75,165,72,160,137,121"/>
+<area shape="rect" title=" " alt="" coords="98,171,160,197"/>
+<area shape="poly" title=" " alt="" coords="164,125,145,158,141,155,159,122"/>
+<area shape="rect" title=" " alt="" coords="184,171,250,197"/>
+<area shape="poly" title=" " alt="" coords="187,122,205,155,200,158,182,125"/>
+<area shape="rect" title=" " alt="" coords="274,171,378,197"/>
+<area shape="poly" title=" " alt="" coords="214,121,290,161,287,165,211,126"/>
+</map>
+</div>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8cpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8cpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..6275d58b39ee4bcebfb919e3c2d1641205c20fef
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8cpp__incl.map
@@ -0,0 +1,17 @@
+<map id="execute_frame.cpp" name="execute_frame.cpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="255,5,387,32"/>
+<area shape="rect" id="Node000002" href="$execute__frame_8hpp.html" title=" " alt="" coords="84,80,262,123"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="299,35,225,75,223,70,296,30"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="286,88,356,115"/>
+<area shape="poly" id="edge6_Node000001_Node000007" title=" " alt="" coords="324,32,324,73,318,73,318,32"/>
+<area shape="rect" id="Node000008" title=" " alt="" coords="380,88,438,115"/>
+<area shape="poly" id="edge7_Node000001_Node000008" title=" " alt="" coords="336,31,386,76,382,80,333,34"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="5,171,74,197"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="140,126,75,165,72,160,137,121"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="98,171,160,197"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="164,125,145,158,141,155,159,122"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="184,171,250,197"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="187,122,205,155,200,158,182,125"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="274,171,378,197"/>
+<area shape="poly" id="edge5_Node000002_Node000006" title=" " alt="" coords="214,121,290,161,287,165,211,126"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8c0909c94321329a29bf921907e0c5b6f52db028
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8cpp__incl.md5
@@ -0,0 +1 @@
+3dbf9fe68694640deb04e3a2d4120fb2
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8cpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8cpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ebd830e094befcaa0676a53b56b61092403dae1
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8cpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..05a6081993fbf690a8c78fbd4234ff59715da192
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: execute_frame.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">execute_frame.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QFrame&gt;</code><br />
+<code>#include &lt;QLabel&gt;</code><br />
+<code>#include &lt;QMovie&gt;</code><br />
+<code>#include &lt;QHBoxLayout&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for execute_frame.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="execute__frame_8hpp__incl.png" border="0" usemap="#aexecute__frame_8hpp" alt=""/></div>
+<map name="aexecute__frame_8hpp" id="aexecute__frame_8hpp">
+<area shape="rect" title=" " alt="" coords="107,5,239,32"/>
+<area shape="rect" title=" " alt="" coords="5,80,74,107"/>
+<area shape="poly" title=" " alt="" coords="151,35,77,75,75,70,148,30"/>
+<area shape="rect" title=" " alt="" coords="98,80,160,107"/>
+<area shape="poly" title=" " alt="" coords="167,34,147,68,142,65,163,31"/>
+<area shape="rect" title=" " alt="" coords="184,80,250,107"/>
+<area shape="poly" title=" " alt="" coords="183,31,204,65,199,68,178,34"/>
+<area shape="rect" title=" " alt="" coords="274,80,378,107"/>
+<area shape="poly" title=" " alt="" coords="201,30,287,70,284,75,198,35"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="execute__frame_8hpp__dep__incl.png" border="0" usemap="#aexecute__frame_8hppdep" alt=""/></div>
+<map name="aexecute__frame_8hppdep" id="aexecute__frame_8hppdep">
+<area shape="rect" title=" " alt="" coords="157,5,290,32"/>
+<area shape="rect" href="execute__frame_8cpp.html" title=" " alt="" coords="5,80,138,107"/>
+<area shape="poly" title=" " alt="" coords="185,41,99,82,97,77,182,37"/>
+<area shape="rect" href="subtask__item_8hpp.html" title=" " alt="" coords="161,80,286,107"/>
+<area shape="poly" title=" " alt="" coords="226,48,226,80,221,80,221,48"/>
+<area shape="rect" href="task__ui_8hpp.html" title=" " alt="" coords="310,80,398,107"/>
+<area shape="poly" title=" " alt="" coords="261,38,333,77,330,82,258,42"/>
+<area shape="rect" href="subtask__item_8cpp.html" title=" " alt="" coords="55,155,179,181"/>
+<area shape="poly" title=" " alt="" coords="194,118,137,156,134,152,191,113"/>
+<area shape="rect" href="task__ui_8cpp.html" title=" " alt="" coords="203,155,292,181"/>
+<area shape="poly" title=" " alt="" coords="235,121,246,153,241,155,230,123"/>
+<area shape="poly" title=" " alt="" coords="325,118,268,156,265,152,322,113"/>
+<area shape="rect" href="learn__environment_8cpp.html" title=" " alt="" coords="309,229,461,256"/>
+<area shape="poly" title=" " alt="" coords="354,122,353,151,357,181,366,206,378,227,374,230,361,208,352,182,348,151,348,122"/>
+<area shape="rect" href="learn__environment_8hpp.html" title=" " alt="" coords="366,155,518,181"/>
+<area shape="poly" title=" " alt="" coords="383,115,429,152,425,156,380,119"/>
+<area shape="rect" href="task__manager_8cpp.html" title=" " alt="" coords="542,155,670,181"/>
+<area shape="poly" title=" " alt="" coords="414,109,563,151,561,157,412,114"/>
+<area shape="poly" title=" " alt="" coords="425,195,397,231,393,227,421,192"/>
+</map>
+</div>
+</div>
+<p><a href="execute__frame_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExecuteFrame.html">ExecuteFrame</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A custom <a class="el" href="classQFrame.html">QFrame</a> that displays an image and text. For logging and task execution.  <a href="classExecuteFrame.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..7dc8315b0f19d6bb529028063e9b3119e4f86ded
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__dep__incl.map
@@ -0,0 +1,21 @@
+<map id="execute_frame.hpp" name="execute_frame.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="157,5,290,32"/>
+<area shape="rect" id="Node000002" href="$execute__frame_8cpp.html" title=" " alt="" coords="5,80,138,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="185,41,99,82,97,77,182,37"/>
+<area shape="rect" id="Node000003" href="$subtask__item_8hpp.html" title=" " alt="" coords="161,80,286,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="226,48,226,80,221,80,221,48"/>
+<area shape="rect" id="Node000006" href="$task__ui_8hpp.html" title=" " alt="" coords="310,80,398,107"/>
+<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="261,38,333,77,330,82,258,42"/>
+<area shape="rect" id="Node000004" href="$subtask__item_8cpp.html" title=" " alt="" coords="55,155,179,181"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="194,118,137,156,134,152,191,113"/>
+<area shape="rect" id="Node000005" href="$task__ui_8cpp.html" title=" " alt="" coords="203,155,292,181"/>
+<area shape="poly" id="edge4_Node000003_Node000005" title=" " alt="" coords="235,121,246,153,241,155,230,123"/>
+<area shape="poly" id="edge10_Node000006_Node000005" title=" " alt="" coords="325,118,268,156,265,152,322,113"/>
+<area shape="rect" id="Node000007" href="$learn__environment_8cpp.html" title=" " alt="" coords="309,229,461,256"/>
+<area shape="poly" id="edge6_Node000006_Node000007" title=" " alt="" coords="354,122,353,151,357,181,366,206,378,227,374,230,361,208,352,182,348,151,348,122"/>
+<area shape="rect" id="Node000008" href="$learn__environment_8hpp.html" title=" " alt="" coords="366,155,518,181"/>
+<area shape="poly" id="edge7_Node000006_Node000008" title=" " alt="" coords="383,115,429,152,425,156,380,119"/>
+<area shape="rect" id="Node000009" href="$task__manager_8cpp.html" title=" " alt="" coords="542,155,670,181"/>
+<area shape="poly" id="edge9_Node000006_Node000009" title=" " alt="" coords="414,109,563,151,561,157,412,114"/>
+<area shape="poly" id="edge8_Node000008_Node000007" title=" " alt="" coords="425,195,397,231,393,227,421,192"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..35257b19485c48180418782730c3f7588462ed28
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+a017cdd7c01b304139a118c2b2e38ed8
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e340f445270d5815655bbc282735e8e5df3655a
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..3a143c2036529e18db7db00e672a1c32b326cea2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__incl.map
@@ -0,0 +1,11 @@
+<map id="execute_frame.hpp" name="execute_frame.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="107,5,239,32"/>
+<area shape="rect" id="Node000002" title=" " alt="" coords="5,80,74,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="151,35,77,75,75,70,148,30"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="98,80,160,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="167,34,147,68,142,65,163,31"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="184,80,250,107"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="183,31,204,65,199,68,178,34"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="274,80,378,107"/>
+<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="201,30,287,70,284,75,198,35"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..9d1ddcf18707dfde3681618909ccc961b9baa2b5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__incl.md5
@@ -0,0 +1 @@
+702af60fb76c254a49939810bbad819e
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd63ce19412e7e623a9f9a97e8e70c71d10f00fe
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..fa846de20038219103c6c5d7513a27d718df8afd
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/execute__frame_8hpp_source.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: execute_frame.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">execute_frame.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="execute__frame_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef EXECUTE_FRAME_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define EXECUTE_FRAME_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &lt;QFrame&gt;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include &lt;QLabel&gt;</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="preprocessor">#include &lt;QMovie&gt;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;QHBoxLayout&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="foldopen" id="foldopen00013" data-start="{" data-end="};">
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"><a class="line" href="classExecuteFrame.html">   13</a></span><span class="keyword">class </span><a class="code hl_class" href="classExecuteFrame.html">ExecuteFrame</a> : <span class="keyword">public</span> <a class="code hl_class" href="classQFrame.html">QFrame</a></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span>{</div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span>    Q_OBJECT</div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span> </div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span>    <span class="keyword">explicit</span> <a class="code hl_function" href="classExecuteFrame.html#a9a3ca41869860aee87ee8198fd629f8b">ExecuteFrame</a>(<a class="code hl_class" href="classQWidget.html">QWidget</a> *parent = <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span> </div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>    <a class="code hl_function" href="classExecuteFrame.html#a0f49e809cf1c14026958bf26d3cf399b">~ExecuteFrame</a>();</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classExecuteFrame.html#a796e8a79e0bc372c47421617bc7c9100">setImage</a>(<span class="keyword">const</span> QString &amp;path);</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classExecuteFrame.html#a659f12e489dcddf89818a116c1e7f742">setText</a>(<span class="keyword">const</span> QString &amp;text);</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span> </div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>    QString <a class="code hl_function" href="classExecuteFrame.html#a3ddc917ee39ffc1c54c491aab9ba7404">getText</a>();</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>    QLabel *imageLabel; </div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>    QLabel *textLabel; </div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span>    QMovie *currentMovie; </div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>    QHBoxLayout *hLayout; </div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span> </div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>    <span class="keywordtype">void</span> initializeUI();</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>};</div>
+</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span> </div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span><span class="preprocessor">#endif </span><span class="comment">// EXECUTE_FRAME_HPP</span></div>
+<div class="ttc" id="aclassExecuteFrame_html"><div class="ttname"><a href="classExecuteFrame.html">ExecuteFrame</a></div><div class="ttdoc">A custom QFrame that displays an image and text. For logging and task execution.</div><div class="ttdef"><b>Definition</b> execute_frame.hpp:14</div></div>
+<div class="ttc" id="aclassExecuteFrame_html_a0f49e809cf1c14026958bf26d3cf399b"><div class="ttname"><a href="classExecuteFrame.html#a0f49e809cf1c14026958bf26d3cf399b">ExecuteFrame::~ExecuteFrame</a></div><div class="ttdeci">~ExecuteFrame()</div><div class="ttdoc">Destructor for ExecuteFrame.</div><div class="ttdef"><b>Definition</b> execute_frame.cpp:15</div></div>
+<div class="ttc" id="aclassExecuteFrame_html_a3ddc917ee39ffc1c54c491aab9ba7404"><div class="ttname"><a href="classExecuteFrame.html#a3ddc917ee39ffc1c54c491aab9ba7404">ExecuteFrame::getText</a></div><div class="ttdeci">QString getText()</div><div class="ttdoc">Gets the current text being displayed.</div><div class="ttdef"><b>Definition</b> execute_frame.cpp:93</div></div>
+<div class="ttc" id="aclassExecuteFrame_html_a659f12e489dcddf89818a116c1e7f742"><div class="ttname"><a href="classExecuteFrame.html#a659f12e489dcddf89818a116c1e7f742">ExecuteFrame::setText</a></div><div class="ttdeci">void setText(const QString &amp;text)</div><div class="ttdoc">Sets the text to be displayed.</div><div class="ttdef"><b>Definition</b> execute_frame.cpp:84</div></div>
+<div class="ttc" id="aclassExecuteFrame_html_a796e8a79e0bc372c47421617bc7c9100"><div class="ttname"><a href="classExecuteFrame.html#a796e8a79e0bc372c47421617bc7c9100">ExecuteFrame::setImage</a></div><div class="ttdeci">void setImage(const QString &amp;path)</div><div class="ttdoc">Sets the image to be displayed.</div><div class="ttdef"><b>Definition</b> execute_frame.cpp:52</div></div>
+<div class="ttc" id="aclassExecuteFrame_html_a9a3ca41869860aee87ee8198fd629f8b"><div class="ttname"><a href="classExecuteFrame.html#a9a3ca41869860aee87ee8198fd629f8b">ExecuteFrame::ExecuteFrame</a></div><div class="ttdeci">ExecuteFrame(QWidget *parent=nullptr)</div><div class="ttdoc">Constructor for ExecuteFrame.</div><div class="ttdef"><b>Definition</b> execute_frame.cpp:5</div></div>
+<div class="ttc" id="aclassQFrame_html"><div class="ttname"><a href="classQFrame.html">QFrame</a></div></div>
+<div class="ttc" id="aclassQWidget_html"><div class="ttname"><a href="classQWidget.html">QWidget</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/files.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/files.html
new file mode 100644
index 0000000000000000000000000000000000000000..133087f10eabe074d40a70cf11529b783949a393
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/files.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: File List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">File List</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:dynsection.toggleLevel(1);">1</span><span onclick="javascript:dynsection.toggleLevel(2);">2</span><span onclick="javascript:dynsection.toggleLevel(3);">3</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="dynsection.toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="dynsection.toggleFolder('0_')">&#160;</span><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html" target="_self">include</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="dynsection.toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="dynsection.toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html" target="_self">learn_environment</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="custom__list__widget_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="custom__list__widget_8hpp.html" target="_self">custom_list_widget.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="execute__frame_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="execute__frame_8hpp.html" target="_self">execute_frame.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="folder__structure__constants_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="folder__structure__constants_8hpp.html" target="_self">folder_structure_constants.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_3_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="learn__environment_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="learn__environment_8hpp.html" target="_self">learn_environment.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="notebook__converter_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="notebook__converter_8hpp.html" target="_self">notebook_converter.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_5_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="process__runner_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="process__runner_8hpp.html" target="_self">process_runner.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="script__worker_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="script__worker_8hpp.html" target="_self">script_worker.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_7_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="sidebar_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="sidebar_8hpp.html" target="_self">sidebar.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_8_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="subtask__item_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="subtask__item_8hpp.html" target="_self">subtask_item.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_9_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="task_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="task_8hpp.html" target="_self">task.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_10_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="task__executor_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="task__executor_8hpp.html" target="_self">task_executor.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_11_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="task__manager_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="task__manager_8hpp.html" target="_self">task_manager.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_12_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="task__parser_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="task__parser_8hpp.html" target="_self">task_parser.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_13_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="task__ui_8hpp_source.html"><span class="icondoc"></span></a><a class="el" href="task__ui_8hpp.html" target="_self">task_ui.hpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="dynsection.toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="dynsection.toggleFolder('1_')">&#160;</span><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html" target="_self">src</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="custom__list__widget_8cpp.html" target="_self">custom_list_widget.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="execute__frame_8cpp.html" target="_self">execute_frame.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="learn__environment_8cpp.html" target="_self">learn_environment.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="notebook__converter_8cpp.html" target="_self">notebook_converter.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_4_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="process__runner_8cpp.html" target="_self">process_runner.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="script__worker_8cpp.html" target="_self">script_worker.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_6_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="sidebar_8cpp.html" target="_self">sidebar.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="subtask__item_8cpp.html" target="_self">subtask_item.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_8_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="task__executor_8cpp.html" target="_self">task_executor.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="task__manager_8cpp.html" target="_self">task_manager.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_10_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="task__parser_8cpp.html" target="_self">task_parser.cpp</a></td><td class="desc"></td></tr>
+<tr id="row_1_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icondoc"></span><a class="el" href="task__ui_8cpp.html" target="_self">task_ui.cpp</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..fea94be79ab3b04841e1463d5d69f85430db744f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp.html
@@ -0,0 +1,185 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: folder_structure_constants.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#namespaces">Namespaces</a> &#124;
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle"><div class="title">folder_structure_constants.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QString&gt;</code><br />
+<code>#include &lt;ros/package.h&gt;</code><br />
+<code>#include &lt;ros/ros.h&gt;</code><br />
+<code>#include &lt;QDebug&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for folder_structure_constants.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="folder__structure__constants_8hpp__incl.png" border="0" usemap="#afolder__structure__constants_8hpp" alt=""/></div>
+<map name="afolder__structure__constants_8hpp" id="afolder__structure__constants_8hpp">
+<area shape="rect" title=" " alt="" coords="102,5,302,32"/>
+<area shape="rect" title=" " alt="" coords="5,80,71,107"/>
+<area shape="poly" title=" " alt="" coords="175,35,82,76,80,71,172,30"/>
+<area shape="rect" title=" " alt="" coords="94,80,198,107"/>
+<area shape="poly" title=" " alt="" coords="194,34,167,69,163,66,190,31"/>
+<area shape="rect" title=" " alt="" coords="222,80,294,107"/>
+<area shape="poly" title=" " alt="" coords="214,31,241,66,237,69,210,34"/>
+<area shape="rect" title=" " alt="" coords="318,80,387,107"/>
+<area shape="poly" title=" " alt="" coords="229,30,314,70,312,75,227,35"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="folder__structure__constants_8hpp__dep__incl.png" border="0" usemap="#afolder__structure__constants_8hppdep" alt=""/></div>
+<map name="afolder__structure__constants_8hppdep" id="afolder__structure__constants_8hppdep">
+<area shape="rect" title=" " alt="" coords="229,5,430,32"/>
+<area shape="rect" href="notebook__converter_8cpp.html" title=" " alt="" coords="5,80,166,107"/>
+<area shape="poly" title=" " alt="" coords="273,39,129,82,128,77,272,34"/>
+<area shape="rect" href="task__executor_8cpp.html" title=" " alt="" coords="189,80,318,107"/>
+<area shape="poly" title=" " alt="" coords="307,45,268,82,265,78,304,41"/>
+<area shape="rect" href="task__manager_8cpp.html" title=" " alt="" coords="341,80,470,107"/>
+<area shape="poly" title=" " alt="" coords="355,41,394,78,391,82,352,45"/>
+<area shape="rect" href="task__parser_8cpp.html" title=" " alt="" coords="494,80,608,107"/>
+<area shape="poly" title=" " alt="" coords="383,35,513,77,511,82,382,40"/>
+</map>
+</div>
+</div>
+<p><a href="folder__structure__constants_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceFolderStructureConstants.html">FolderStructureConstants</a></td></tr>
+<tr class="memdesc:namespaceFolderStructureConstants"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains constants related to the folder structure of the learn_environment package. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:aa49dbebb86fde82b617e7db1193bd720" id="r_aa49dbebb86fde82b617e7db1193bd720"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceFolderStructureConstants.html#aa49dbebb86fde82b617e7db1193bd720">FolderStructureConstants::getPackagePath</a> ()</td></tr>
+<tr class="memdesc:aa49dbebb86fde82b617e7db1193bd720"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the path of the package.  <br /></td></tr>
+<tr class="separator:aa49dbebb86fde82b617e7db1193bd720"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a82483c09d34f6dbea6451b921b231c5a" id="r_a82483c09d34f6dbea6451b921b231c5a"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceFolderStructureConstants.html#a82483c09d34f6dbea6451b921b231c5a">FolderStructureConstants::CONVERTED_SCRIPT_PATH</a> = &quot;/converter/converted.py&quot;</td></tr>
+<tr class="memdesc:a82483c09d34f6dbea6451b921b231c5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the converted script.  <br /></td></tr>
+<tr class="separator:a82483c09d34f6dbea6451b921b231c5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a97e2abd38a09653e626ba46a5e5e10bd" id="r_a97e2abd38a09653e626ba46a5e5e10bd"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceFolderStructureConstants.html#a97e2abd38a09653e626ba46a5e5e10bd">FolderStructureConstants::RESET_ROBOT_SCRIPT_PATH</a> = &quot;/task_pool/reset_robot.py&quot;</td></tr>
+<tr class="memdesc:a97e2abd38a09653e626ba46a5e5e10bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the reset robot script.  <br /></td></tr>
+<tr class="separator:a97e2abd38a09653e626ba46a5e5e10bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a84dc4e92b3d05fcef00c9abb99f9f9da" id="r_a84dc4e92b3d05fcef00c9abb99f9f9da"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceFolderStructureConstants.html#a84dc4e92b3d05fcef00c9abb99f9f9da">FolderStructureConstants::TASK_DEFINITIONS_PATH</a> = &quot;:/task_pool/task_definitions.json&quot;</td></tr>
+<tr class="memdesc:a84dc4e92b3d05fcef00c9abb99f9f9da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the task definitions json.  <br /></td></tr>
+<tr class="separator:a84dc4e92b3d05fcef00c9abb99f9f9da"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adc8fa9eae998a60723424421756bd65b" id="r_adc8fa9eae998a60723424421756bd65b"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceFolderStructureConstants.html#adc8fa9eae998a60723424421756bd65b">FolderStructureConstants::TOPIC_DEFINITIONS_PATH</a> = &quot;:/task_pool/topic_definitions.json&quot;</td></tr>
+<tr class="memdesc:adc8fa9eae998a60723424421756bd65b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the topic definitions json.  <br /></td></tr>
+<tr class="separator:adc8fa9eae998a60723424421756bd65b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4a34d956c5883529b64e6bb183d768a7" id="r_a4a34d956c5883529b64e6bb183d768a7"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceFolderStructureConstants.html#a4a34d956c5883529b64e6bb183d768a7">FolderStructureConstants::DIFFICULTY_LEVELS_DEFINITION_PATH</a> = &quot;:/task_pool/difficulty_levels.json&quot;</td></tr>
+<tr class="separator:a4a34d956c5883529b64e6bb183d768a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae963e238a7326dd80a2401eae27c252a" id="r_ae963e238a7326dd80a2401eae27c252a"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceFolderStructureConstants.html#ae963e238a7326dd80a2401eae27c252a">FolderStructureConstants::SOLUTION_SCRIPTS_SOURCE_PATH</a> = &quot;/task_pool/solution_scripts&quot;</td></tr>
+<tr class="memdesc:ae963e238a7326dd80a2401eae27c252a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the solution scripts source directory.  <br /></td></tr>
+<tr class="separator:ae963e238a7326dd80a2401eae27c252a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afbae3ede611451504507436474ae482e" id="r_afbae3ede611451504507436474ae482e"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceFolderStructureConstants.html#afbae3ede611451504507436474ae482e">FolderStructureConstants::EVALUATION_SCRIPTS_SOURCE_PATH</a> = &quot;/task_pool/evaluation_scripts&quot;</td></tr>
+<tr class="memdesc:afbae3ede611451504507436474ae482e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the evaluation scripts source directory.  <br /></td></tr>
+<tr class="separator:afbae3ede611451504507436474ae482e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac7bdb4609b31965b63ac7d3ce2b197c3" id="r_ac7bdb4609b31965b63ac7d3ce2b197c3"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceFolderStructureConstants.html#ac7bdb4609b31965b63ac7d3ce2b197c3">FolderStructureConstants::USER_WORKSPACE</a> = &quot;/tasks&quot;</td></tr>
+<tr class="memdesc:ac7bdb4609b31965b63ac7d3ce2b197c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the user workspace directory. Adjust it in devconatiner.json if changed.  <br /></td></tr>
+<tr class="separator:ac7bdb4609b31965b63ac7d3ce2b197c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa9f54b725067dc395f26c6608161dae9" id="r_aa9f54b725067dc395f26c6608161dae9"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceFolderStructureConstants.html#aa9f54b725067dc395f26c6608161dae9">FolderStructureConstants::PACKAGE_NAME</a> = &quot;learn_environment&quot;</td></tr>
+<tr class="memdesc:aa9f54b725067dc395f26c6608161dae9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name of the package.  <br /></td></tr>
+<tr class="separator:aa9f54b725067dc395f26c6608161dae9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..18dbbd1058b44f93185c7de141e85a4bff695e4f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__dep__incl.map
@@ -0,0 +1,11 @@
+<map id="folder_structure_constants.hpp" name="folder_structure_constants.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="229,5,430,32"/>
+<area shape="rect" id="Node000002" href="$notebook__converter_8cpp.html" title=" " alt="" coords="5,80,166,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="273,39,129,82,128,77,272,34"/>
+<area shape="rect" id="Node000003" href="$task__executor_8cpp.html" title=" " alt="" coords="189,80,318,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="307,45,268,82,265,78,304,41"/>
+<area shape="rect" id="Node000004" href="$task__manager_8cpp.html" title=" " alt="" coords="341,80,470,107"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="355,41,394,78,391,82,352,45"/>
+<area shape="rect" id="Node000005" href="$task__parser_8cpp.html" title=" " alt="" coords="494,80,608,107"/>
+<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="383,35,513,77,511,82,382,40"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..73f97d9d0df3b26dc66fcb07a299b70842a949aa
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+7a0771dd66785dff56d82475f8b35403
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..10a1d9ec4f8102b256f7f49e8984b44dbc02a674
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..b387c86efa424bfc6cab3209fc5bd2bb06fbb085
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__incl.map
@@ -0,0 +1,11 @@
+<map id="folder_structure_constants.hpp" name="folder_structure_constants.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="102,5,302,32"/>
+<area shape="rect" id="Node000002" title=" " alt="" coords="5,80,71,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="175,35,82,76,80,71,172,30"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="94,80,198,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="194,34,167,69,163,66,190,31"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="222,80,294,107"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="214,31,241,66,237,69,210,34"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="318,80,387,107"/>
+<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="229,30,314,70,312,75,227,35"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..1250309df67e0059109b1b148aca0ba342154c1b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__incl.md5
@@ -0,0 +1 @@
+5c5080f0af5f000a47fd051824c991c1
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..9a4ea202ffd575c01409cb83a6f18cda54f8d95c
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..4657d81750c7868fa612ae7eb8649b1dd5f1ce66
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folder__structure__constants_8hpp_source.html
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: folder_structure_constants.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">folder_structure_constants.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="folder__structure__constants_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef FOLDER_STRUCTURE_CONSTANTS_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define FOLDER_STRUCTURE_CONSTANTS_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &lt;QString&gt;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include &lt;ros/package.h&gt;</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="preprocessor">#include &lt;ros/ros.h&gt;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;QDebug&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceFolderStructureConstants.html">FolderStructureConstants</a> {</div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="namespaceFolderStructureConstants.html#a82483c09d34f6dbea6451b921b231c5a">   21</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> QString <a class="code hl_variable" href="namespaceFolderStructureConstants.html#a82483c09d34f6dbea6451b921b231c5a">CONVERTED_SCRIPT_PATH</a> = <span class="stringliteral">&quot;/converter/converted.py&quot;</span>;</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="namespaceFolderStructureConstants.html#a97e2abd38a09653e626ba46a5e5e10bd">   27</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> QString <a class="code hl_variable" href="namespaceFolderStructureConstants.html#a97e2abd38a09653e626ba46a5e5e10bd">RESET_ROBOT_SCRIPT_PATH</a> = <span class="stringliteral">&quot;/task_pool/reset_robot.py&quot;</span>;</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="namespaceFolderStructureConstants.html#a84dc4e92b3d05fcef00c9abb99f9f9da">   33</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> QString <a class="code hl_variable" href="namespaceFolderStructureConstants.html#a84dc4e92b3d05fcef00c9abb99f9f9da">TASK_DEFINITIONS_PATH</a> = <span class="stringliteral">&quot;:/task_pool/task_definitions.json&quot;</span>;</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="namespaceFolderStructureConstants.html#adc8fa9eae998a60723424421756bd65b">   39</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> QString <a class="code hl_variable" href="namespaceFolderStructureConstants.html#adc8fa9eae998a60723424421756bd65b">TOPIC_DEFINITIONS_PATH</a> = <span class="stringliteral">&quot;:/task_pool/topic_definitions.json&quot;</span>;</div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span> </div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="namespaceFolderStructureConstants.html#a4a34d956c5883529b64e6bb183d768a7">   45</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> QString <a class="code hl_variable" href="namespaceFolderStructureConstants.html#a4a34d956c5883529b64e6bb183d768a7">DIFFICULTY_LEVELS_DEFINITION_PATH</a> = <span class="stringliteral">&quot;:/task_pool/difficulty_levels.json&quot;</span>;</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="namespaceFolderStructureConstants.html#ae963e238a7326dd80a2401eae27c252a">   51</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> QString <a class="code hl_variable" href="namespaceFolderStructureConstants.html#ae963e238a7326dd80a2401eae27c252a">SOLUTION_SCRIPTS_SOURCE_PATH</a> = <span class="stringliteral">&quot;/task_pool/solution_scripts&quot;</span>;</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span> </div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="namespaceFolderStructureConstants.html#afbae3ede611451504507436474ae482e">   57</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> QString <a class="code hl_variable" href="namespaceFolderStructureConstants.html#afbae3ede611451504507436474ae482e">EVALUATION_SCRIPTS_SOURCE_PATH</a> = <span class="stringliteral">&quot;/task_pool/evaluation_scripts&quot;</span>;</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span> </div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="namespaceFolderStructureConstants.html#ac7bdb4609b31965b63ac7d3ce2b197c3">   63</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> QString <a class="code hl_variable" href="namespaceFolderStructureConstants.html#ac7bdb4609b31965b63ac7d3ce2b197c3">USER_WORKSPACE</a> = <span class="stringliteral">&quot;/tasks&quot;</span>;</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="namespaceFolderStructureConstants.html#aa9f54b725067dc395f26c6608161dae9">   69</a></span>    <span class="keyword">inline</span> <span class="keyword">const</span> QString <a class="code hl_variable" href="namespaceFolderStructureConstants.html#aa9f54b725067dc395f26c6608161dae9">PACKAGE_NAME</a> = <span class="stringliteral">&quot;learn_environment&quot;</span>;</div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span> </div>
+<div class="foldopen" id="foldopen00080" data-start="{" data-end="}">
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"><a class="line" href="namespaceFolderStructureConstants.html#aa49dbebb86fde82b617e7db1193bd720">   80</a></span>    <span class="keyword">inline</span> QString <a class="code hl_function" href="namespaceFolderStructureConstants.html#aa49dbebb86fde82b617e7db1193bd720">getPackagePath</a>() {</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>        <span class="keywordflow">try</span> {</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>            <span class="keywordflow">return</span> QString::fromStdString(ros::package::getPath(<a class="code hl_variable" href="namespaceFolderStructureConstants.html#aa9f54b725067dc395f26c6608161dae9">PACKAGE_NAME</a>.toStdString()));</div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>        } <span class="keywordflow">catch</span> (...) {</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>            qCritical() &lt;&lt; <span class="stringliteral">&quot;An error occurred while retrieving the package path for&quot;</span> &lt;&lt; <a class="code hl_variable" href="namespaceFolderStructureConstants.html#aa9f54b725067dc395f26c6608161dae9">PACKAGE_NAME</a>;</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>            <span class="keywordflow">return</span> QString();</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>        }</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>    }</div>
+</div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>}</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span> </div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span><span class="preprocessor">#endif </span><span class="comment">// FOLDER_STRUCTURE_CONSTANTS_HPP</span></div>
+<div class="ttc" id="anamespaceFolderStructureConstants_html"><div class="ttname"><a href="namespaceFolderStructureConstants.html">FolderStructureConstants</a></div><div class="ttdoc">Contains constants related to the folder structure of the learn_environment package.</div></div>
+<div class="ttc" id="anamespaceFolderStructureConstants_html_a4a34d956c5883529b64e6bb183d768a7"><div class="ttname"><a href="namespaceFolderStructureConstants.html#a4a34d956c5883529b64e6bb183d768a7">FolderStructureConstants::DIFFICULTY_LEVELS_DEFINITION_PATH</a></div><div class="ttdeci">const QString DIFFICULTY_LEVELS_DEFINITION_PATH</div><div class="ttdef"><b>Definition</b> folder_structure_constants.hpp:45</div></div>
+<div class="ttc" id="anamespaceFolderStructureConstants_html_a82483c09d34f6dbea6451b921b231c5a"><div class="ttname"><a href="namespaceFolderStructureConstants.html#a82483c09d34f6dbea6451b921b231c5a">FolderStructureConstants::CONVERTED_SCRIPT_PATH</a></div><div class="ttdeci">const QString CONVERTED_SCRIPT_PATH</div><div class="ttdoc">Path to the converted script.</div><div class="ttdef"><b>Definition</b> folder_structure_constants.hpp:21</div></div>
+<div class="ttc" id="anamespaceFolderStructureConstants_html_a84dc4e92b3d05fcef00c9abb99f9f9da"><div class="ttname"><a href="namespaceFolderStructureConstants.html#a84dc4e92b3d05fcef00c9abb99f9f9da">FolderStructureConstants::TASK_DEFINITIONS_PATH</a></div><div class="ttdeci">const QString TASK_DEFINITIONS_PATH</div><div class="ttdoc">Path to the task definitions json.</div><div class="ttdef"><b>Definition</b> folder_structure_constants.hpp:33</div></div>
+<div class="ttc" id="anamespaceFolderStructureConstants_html_a97e2abd38a09653e626ba46a5e5e10bd"><div class="ttname"><a href="namespaceFolderStructureConstants.html#a97e2abd38a09653e626ba46a5e5e10bd">FolderStructureConstants::RESET_ROBOT_SCRIPT_PATH</a></div><div class="ttdeci">const QString RESET_ROBOT_SCRIPT_PATH</div><div class="ttdoc">Path to the reset robot script.</div><div class="ttdef"><b>Definition</b> folder_structure_constants.hpp:27</div></div>
+<div class="ttc" id="anamespaceFolderStructureConstants_html_aa49dbebb86fde82b617e7db1193bd720"><div class="ttname"><a href="namespaceFolderStructureConstants.html#aa49dbebb86fde82b617e7db1193bd720">FolderStructureConstants::getPackagePath</a></div><div class="ttdeci">QString getPackagePath()</div><div class="ttdoc">Retrieves the path of the package.</div><div class="ttdef"><b>Definition</b> folder_structure_constants.hpp:80</div></div>
+<div class="ttc" id="anamespaceFolderStructureConstants_html_aa9f54b725067dc395f26c6608161dae9"><div class="ttname"><a href="namespaceFolderStructureConstants.html#aa9f54b725067dc395f26c6608161dae9">FolderStructureConstants::PACKAGE_NAME</a></div><div class="ttdeci">const QString PACKAGE_NAME</div><div class="ttdoc">Name of the package.</div><div class="ttdef"><b>Definition</b> folder_structure_constants.hpp:69</div></div>
+<div class="ttc" id="anamespaceFolderStructureConstants_html_ac7bdb4609b31965b63ac7d3ce2b197c3"><div class="ttname"><a href="namespaceFolderStructureConstants.html#ac7bdb4609b31965b63ac7d3ce2b197c3">FolderStructureConstants::USER_WORKSPACE</a></div><div class="ttdeci">const QString USER_WORKSPACE</div><div class="ttdoc">Path to the user workspace directory. Adjust it in devconatiner.json if changed.</div><div class="ttdef"><b>Definition</b> folder_structure_constants.hpp:63</div></div>
+<div class="ttc" id="anamespaceFolderStructureConstants_html_adc8fa9eae998a60723424421756bd65b"><div class="ttname"><a href="namespaceFolderStructureConstants.html#adc8fa9eae998a60723424421756bd65b">FolderStructureConstants::TOPIC_DEFINITIONS_PATH</a></div><div class="ttdeci">const QString TOPIC_DEFINITIONS_PATH</div><div class="ttdoc">Path to the topic definitions json.</div><div class="ttdef"><b>Definition</b> folder_structure_constants.hpp:39</div></div>
+<div class="ttc" id="anamespaceFolderStructureConstants_html_ae963e238a7326dd80a2401eae27c252a"><div class="ttname"><a href="namespaceFolderStructureConstants.html#ae963e238a7326dd80a2401eae27c252a">FolderStructureConstants::SOLUTION_SCRIPTS_SOURCE_PATH</a></div><div class="ttdeci">const QString SOLUTION_SCRIPTS_SOURCE_PATH</div><div class="ttdoc">Path to the solution scripts source directory.</div><div class="ttdef"><b>Definition</b> folder_structure_constants.hpp:51</div></div>
+<div class="ttc" id="anamespaceFolderStructureConstants_html_afbae3ede611451504507436474ae482e"><div class="ttname"><a href="namespaceFolderStructureConstants.html#afbae3ede611451504507436474ae482e">FolderStructureConstants::EVALUATION_SCRIPTS_SOURCE_PATH</a></div><div class="ttdeci">const QString EVALUATION_SCRIPTS_SOURCE_PATH</div><div class="ttdoc">Path to the evaluation scripts source directory.</div><div class="ttdef"><b>Definition</b> folder_structure_constants.hpp:57</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folderclosed.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folderclosed.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b04bed2e723617bea1e7dda93638dddf7e5971ed
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folderclosed.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
+<g style="fill:#4665A2;">
+<path d="M1,5.998l-0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm2,-0l-0,16.002c-0,0.796 0.316,1.559 0.879,2.121c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121c0,-3.486 0,-8.514 0,-12c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998Z"/>
+</g>
+<g style="fill:#D8DFEE;stroke-width:0;">
+<path d="M 5.6063709,24.951908 C 4.3924646,24.775461 3.4197129,23.899792 3.1031586,22.698521 L 3.0216155,22.389078 V 13.997725 5.6063709 L 3.1037477,5.2982247 C 3.3956682,4.2029881 4.1802788,3.412126 5.2787258,3.105917 5.5646428,3.0262132 5.6154982,3.0244963 8.0611641,3.0119829 l 2.4911989,-0.012746 1.932009,1.9300342 c 1.344142,1.3427669 1.976319,1.9498819 2.07763,1.9952626 0.137456,0.061571 0.474218,0.066269 6.006826,0.083795 l 5.861206,0.018568 0.29124,0.081916 c 1.094895,0.3079569 1.890116,1.109428 2.175567,2.192667 l 0.08154,0.3094425 V 16 22.389078 l -0.08154,0.309443 c -0.28446,1.079482 -1.086411,1.888085 -2.175567,2.193614 l -0.29124,0.0817 -10.302616,0.0049 c -5.700217,0.0027 -10.4001945,-0.0093 -10.5210471,-0.02684 z"/>
+</g>
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folderclosedd.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folderclosedd.svg
new file mode 100644
index 0000000000000000000000000000000000000000..52f0166a23e730c238954892aecd3babfabf75d0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folderclosedd.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
+<g style="fill:#C4CFE5;">
+<path d="M1,5.998l-0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm2,-0l-0,16.002c-0,0.796 0.316,1.559 0.879,2.121c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121c0,-3.486 0,-8.514 0,-12c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998Z"/>
+</g>
+<g style="fill:#4665A2;stroke-width:0;">
+<path d="M 5.6063709,24.951908 C 4.3924646,24.775461 3.4197129,23.899792 3.1031586,22.698521 L 3.0216155,22.389078 V 13.997725 5.6063709 L 3.1037477,5.2982247 C 3.3956682,4.2029881 4.1802788,3.412126 5.2787258,3.105917 5.5646428,3.0262132 5.6154982,3.0244963 8.0611641,3.0119829 l 2.4911989,-0.012746 1.932009,1.9300342 c 1.344142,1.3427669 1.976319,1.9498819 2.07763,1.9952626 0.137456,0.061571 0.474218,0.066269 6.006826,0.083795 l 5.861206,0.018568 0.29124,0.081916 c 1.094895,0.3079569 1.890116,1.109428 2.175567,2.192667 l 0.08154,0.3094425 V 16 22.389078 l -0.08154,0.309443 c -0.28446,1.079482 -1.086411,1.888085 -2.175567,2.193614 l -0.29124,0.0817 -10.302616,0.0049 c -5.700217,0.0027 -10.4001945,-0.0093 -10.5210471,-0.02684 z"/>
+</g>
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folderopen.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folderopen.svg
new file mode 100644
index 0000000000000000000000000000000000000000..f6896dd254b6d25580338d9c9a097fc46e445355
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folderopen.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
+<g style="fill:#4665A2;">
+<path
+   d="M1,5.998l0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm28,14.415l-3.456,-5.925c-0.538,-0.921 -1.524,-1.488 -2.591,-1.488c-0,0 -12.905,0 -12.906,0c-1.067,0 -2.053,0.567 -2.591,1.488l-4.453,7.635c0.03,0.751 0.342,1.465 0.876,1.998c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121l0,-1.587Zm0,-3.969l0,-6.444c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998l0,12.16l2.729,-4.677c0.896,-1.536 2.54,-2.481 4.318,-2.481c3.354,0 9.552,0 12.906,0c1.778,0 3.422,0.945 4.318,2.481l1.729,2.963Z"
+   id="path2" />
+</g>
+<g style="fill:#D8DFEE;stroke-width:0;">
+<path
+   d="M 5.3879408,24.913408 C 4.1598821,24.650818 3.1571088,23.558656 3.053503,22.370876 L 3.0312746,22.116041 5.2606813,18.293515 C 6.486855,16.191126 7.5598351,14.372696 7.6450818,14.25256 8.0043056,13.746312 8.5423079,13.363007 9.2104664,13.137285 l 0.2548351,-0.08609 6.9294785,-0.0097 c 6.805096,-0.0095 6.934944,-0.0084 7.234011,0.06267 0.695577,0.165199 1.290483,0.557253 1.714887,1.130141 0.08158,0.110125 0.938747,1.556711 1.90481,3.214634 l 1.756479,3.014406 -0.0186,0.971942 c -0.01387,0.724723 -0.03365,1.032131 -0.07778,1.208575 -0.242792,0.970733 -0.88732,1.735415 -1.772382,2.102793 -0.58835,0.244217 0.247209,0.227436 -11.161974,0.224159 -9.0281537,-0.0026 -10.3636023,-0.0098 -10.5862902,-0.05746 z"
+   id="path199" /><path
+   d="M 3.0126385,11.849829 3.0235061,5.5881684 3.1020974,5.2969283 C 3.3478146,4.3863605 3.93576,3.6757372 4.756668,3.2971229 5.3293315,3.0330025 5.1813272,3.0450949 8.0130385,3.0310668 l 2.5522875,-0.012644 1.918693,1.9107086 c 1.404146,1.3983023 1.964459,1.9332518 2.089351,1.9947704 l 0.170657,0.084062 5.897611,0.019367 c 5.553257,0.018236 5.910365,0.023213 6.116041,0.085231 1.102257,0.3323708 1.857042,1.1184422 2.154229,2.2435244 0.05645,0.2137228 0.06373,0.5643981 0.07519,3.6220748 0.0076,2.032169 -5.42e-4,3.370979 -0.02041,3.349261 -0.0182,-0.0199 -0.414296,-0.691472 -0.880217,-1.492382 -0.46592,-0.80091 -0.93093,-1.577954 -1.033354,-1.726764 -0.735716,-1.0689 -1.983568,-1.844244 -3.315972,-2.060353 -0.280375,-0.04548 -1.345158,-0.05334 -7.238708,-0.05347 -4.713933,-1.09e-4 -6.9931825,0.01221 -7.1717862,0.03874 -1.3002273,0.193134 -2.4770512,0.889916 -3.283628,1.944192 -0.1076466,0.140705 -0.8359664,1.353438 -1.6184885,2.694963 L 3.0017709,18.11149 Z"
+   id="path201" />
+</g>
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folderopend.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folderopend.svg
new file mode 100644
index 0000000000000000000000000000000000000000..2d1f06e7bc6e85be079b7ee1346c79baa4c50ce1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/folderopend.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" width="16" height="24" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve">
+<g style="fill:#C4CFE5;">
+<path d="M1,5.998l0,16.002c-0,1.326 0.527,2.598 1.464,3.536c0.938,0.937 2.21,1.464 3.536,1.464c5.322,0 14.678,-0 20,0c1.326,0 2.598,-0.527 3.536,-1.464c0.937,-0.938 1.464,-2.21 1.464,-3.536c0,-3.486 0,-8.514 0,-12c0,-1.326 -0.527,-2.598 -1.464,-3.536c-0.938,-0.937 -2.21,-1.464 -3.536,-1.464c-0,0 -10.586,0 -10.586,0c0,-0 -3.707,-3.707 -3.707,-3.707c-0.187,-0.188 -0.442,-0.293 -0.707,-0.293l-5.002,0c-2.76,0 -4.998,2.238 -4.998,4.998Zm28,14.415l-3.456,-5.925c-0.538,-0.921 -1.524,-1.488 -2.591,-1.488c-0,0 -12.905,0 -12.906,0c-1.067,0 -2.053,0.567 -2.591,1.488l-4.453,7.635c0.03,0.751 0.342,1.465 0.876,1.998c0.562,0.563 1.325,0.879 2.121,0.879l20,0c0.796,0 1.559,-0.316 2.121,-0.879c0.563,-0.562 0.879,-1.325 0.879,-2.121l0,-1.587Zm0,-3.969l0,-6.444c0,-0.796 -0.316,-1.559 -0.879,-2.121c-0.562,-0.563 -1.325,-0.879 -2.121,-0.879c-7.738,0 -11,0 -11,0c-0.265,0 -0.52,-0.105 -0.707,-0.293c-0,0 -3.707,-3.707 -3.707,-3.707c-0,0 -4.588,0 -4.588,0c-1.656,0 -2.998,1.342 -2.998,2.998l0,12.16l2.729,-4.677c0.896,-1.536 2.54,-2.481 4.318,-2.481c3.354,0 9.552,0 12.906,0c1.778,0 3.422,0.945 4.318,2.481l1.729,2.963Z"/>
+</g>
+<g style="fill:#4665A2;stroke-width:0;">
+<path d="M 5.3879408,24.913408 C 4.1598821,24.650818 3.1571088,23.558656 3.053503,22.370876 L 3.0312746,22.116041 5.2606813,18.293515 C 6.486855,16.191126 7.5598351,14.372696 7.6450818,14.25256 8.0043056,13.746312 8.5423079,13.363007 9.2104664,13.137285 l 0.2548351,-0.08609 6.9294785,-0.0097 c 6.805096,-0.0095 6.934944,-0.0084 7.234011,0.06267 0.695577,0.165199 1.290483,0.557253 1.714887,1.130141 0.08158,0.110125 0.938747,1.556711 1.90481,3.214634 l 1.756479,3.014406 -0.0186,0.971942 c -0.01387,0.724723 -0.03365,1.032131 -0.07778,1.208575 -0.242792,0.970733 -0.88732,1.735415 -1.772382,2.102793 -0.58835,0.244217 0.247209,0.227436 -11.161974,0.224159 -9.0281537,-0.0026 -10.3636023,-0.0098 -10.5862902,-0.05746 z" />
+<path d="M 3.0126385,11.849829 3.0235061,5.5881684 3.1020974,5.2969283 C 3.3478146,4.3863605 3.93576,3.6757372 4.756668,3.2971229 5.3293315,3.0330025 5.1813272,3.0450949 8.0130385,3.0310668 l 2.5522875,-0.012644 1.918693,1.9107086 c 1.404146,1.3983023 1.964459,1.9332518 2.089351,1.9947704 l 0.170657,0.084062 5.897611,0.019367 c 5.553257,0.018236 5.910365,0.023213 6.116041,0.085231 1.102257,0.3323708 1.857042,1.1184422 2.154229,2.2435244 0.05645,0.2137228 0.06373,0.5643981 0.07519,3.6220748 0.0076,2.032169 -5.42e-4,3.370979 -0.02041,3.349261 -0.0182,-0.0199 -0.414296,-0.691472 -0.880217,-1.492382 -0.46592,-0.80091 -0.93093,-1.577954 -1.033354,-1.726764 -0.735716,-1.0689 -1.983568,-1.844244 -3.315972,-2.060353 -0.280375,-0.04548 -1.345158,-0.05334 -7.238708,-0.05347 -4.713933,-1.09e-4 -6.9931825,0.01221 -7.1717862,0.03874 -1.3002273,0.193134 -2.4770512,0.889916 -3.283628,1.944192 -0.1076466,0.140705 -0.8359664,1.353438 -1.6184885,2.694963 L 3.0017709,18.11149 Z" />
+</g>
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/functions.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/functions.html
new file mode 100644
index 0000000000000000000000000000000000000000..3707fe5cf351211a788652723803ceaf69bbfef3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/functions.html
@@ -0,0 +1,241 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Class Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
+
+<h3><a id="index_c" name="index_c"></a>- c -</h3><ul>
+<li>convertNotebook()&#160;:&#160;<a class="el" href="classNotebookConverter.html#a8b06d3bc01057ddd936977bded4297f4">NotebookConverter</a></li>
+<li>CustomListWidget()&#160;:&#160;<a class="el" href="classCustomListWidget.html#ab37ab040c9872e60767fff8d1525ccad">CustomListWidget</a></li>
+</ul>
+
+
+<h3><a id="index_d" name="index_d"></a>- d -</h3><ul>
+<li>description&#160;:&#160;<a class="el" href="structSubtask.html#a9b2edd425425878f6e57a2f213b1211a">Subtask</a></li>
+<li>difficulty&#160;:&#160;<a class="el" href="structTask.html#a92a16f5ec66f7511f0d0ce0fd759bf9e">Task</a></li>
+<li>difficultyHexColor&#160;:&#160;<a class="el" href="structTask.html#a6fe956adc87191ee794c5bccf68c292b">Task</a></li>
+</ul>
+
+
+<h3><a id="index_e" name="index_e"></a>- e -</h3><ul>
+<li>errorReady()&#160;:&#160;<a class="el" href="classProcessRunner.html#a9ad2c856469a7129c905721309620e05">ProcessRunner</a></li>
+<li>evaluationFilePath&#160;:&#160;<a class="el" href="structSubtask.html#ae73daaeeae0fa09de92ef428be2fdab3">Subtask</a></li>
+<li>ExecuteFrame()&#160;:&#160;<a class="el" href="classExecuteFrame.html#a9a3ca41869860aee87ee8198fd629f8b">ExecuteFrame</a></li>
+<li>executePythonScript()&#160;:&#160;<a class="el" href="classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523">ScriptWorker</a></li>
+<li>executeTask()&#160;:&#160;<a class="el" href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d">TaskExecutor</a></li>
+</ul>
+
+
+<h3><a id="index_f" name="index_f"></a>- f -</h3><ul>
+<li>failed()&#160;:&#160;<a class="el" href="classScriptWorker.html#a5f0a6e5095c8e55559045d7d9d2e2e1a">ScriptWorker</a></li>
+<li>failedRobotResetUI()&#160;:&#160;<a class="el" href="classTaskUI.html#a8cb2994522ad6b1b59383515edddead3">TaskUI</a></li>
+<li>file&#160;:&#160;<a class="el" href="structSubtask.html#a905ed579cc13759a257c37d261141281">Subtask</a></li>
+<li>filePath&#160;:&#160;<a class="el" href="structSubtask.html#adc3ab0bdda7c565666095845a3e4567f">Subtask</a></li>
+<li>fillSidebarWithTasks()&#160;:&#160;<a class="el" href="classSidebar.html#abf817c38465f3382b90d409e9cf87777">Sidebar</a></li>
+<li>finished()&#160;:&#160;<a class="el" href="classProcessRunner.html#a76c6897c0cf00b9034e6deb9662debbf">ProcessRunner</a>, <a class="el" href="classScriptWorker.html#ac33ab3bb0d1e7e9e0070ac3b7f33b633">ScriptWorker</a></li>
+<li>finishedRobotResetUI()&#160;:&#160;<a class="el" href="classTaskUI.html#a6c2ca067880d519ab255a7608a268c8f">TaskUI</a></li>
+<li>folder&#160;:&#160;<a class="el" href="structTask.html#a470ace63434687116684f003a27dc439">Task</a></li>
+<li>forceResetRobot()&#160;:&#160;<a class="el" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e">TaskManager</a></li>
+<li>forceStop()&#160;:&#160;<a class="el" href="classProcessRunner.html#abb4be6a4283702e38a9eb7d51438efb6">ProcessRunner</a>, <a class="el" href="classScriptWorker.html#aafadef7996317ca83dcb2605777affe2">ScriptWorker</a>, <a class="el" href="classTaskExecutor.html#a0a0c76bf999aea855cb83a6051864e09">TaskExecutor</a></li>
+</ul>
+
+
+<h3><a id="index_g" name="index_g"></a>- g -</h3><ul>
+<li>getText()&#160;:&#160;<a class="el" href="classExecuteFrame.html#a3ddc917ee39ffc1c54c491aab9ba7404">ExecuteFrame</a></li>
+</ul>
+
+
+<h3><a id="index_h" name="index_h"></a>- h -</h3><ul>
+<li>hasBeenExecuted&#160;:&#160;<a class="el" href="structSubtask.html#a0e3d8e77e26cdb58b2e9faa8ec2e1707">Subtask</a></li>
+<li>hasSolutionCells()&#160;:&#160;<a class="el" href="classNotebookConverter.html#af64e43c667b96ba0926a715316002665">NotebookConverter</a></li>
+</ul>
+
+
+<h3><a id="index_i" name="index_i"></a>- i -</h3><ul>
+<li>initializeUI()&#160;:&#160;<a class="el" href="classTaskUI.html#a62690c3b7147c20980da5c2323314025">TaskUI</a></li>
+</ul>
+
+
+<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
+<li>lastExecutionError&#160;:&#160;<a class="el" href="structSubtask.html#a2c4bcefd1e42773c5e23abd9ba0b30f2">Subtask</a></li>
+<li>lastExecutionFailed&#160;:&#160;<a class="el" href="structSubtask.html#ab1e1bff66e7464efa54419b36006f1a8">Subtask</a></li>
+<li>LearnEnvironment()&#160;:&#160;<a class="el" href="classLearnEnvironment.html#a25d7b0bd7b4270c7c2feeab3a9450d39">LearnEnvironment</a></li>
+<li>leaveEvent()&#160;:&#160;<a class="el" href="classCustomListWidget.html#a5d487b35f9dc9cd601b962e68b142e0b">CustomListWidget</a></li>
+<li>load()&#160;:&#160;<a class="el" href="classLearnEnvironment.html#af0c2b95f5853116a09c795d33eb47d52">LearnEnvironment</a></li>
+<li>loadTasks()&#160;:&#160;<a class="el" href="classTaskParser.html#a86f40497d6666a02307886ed3a4056f3">TaskParser</a></li>
+</ul>
+
+
+<h3><a id="index_m" name="index_m"></a>- m -</h3><ul>
+<li>mouseMoveEvent()&#160;:&#160;<a class="el" href="classCustomListWidget.html#adc3f7462d5db3e7c9fe4c5fd59076331">CustomListWidget</a></li>
+</ul>
+
+
+<h3><a id="index_n" name="index_n"></a>- n -</h3><ul>
+<li>nextTask()&#160;:&#160;<a class="el" href="classTaskManager.html#a327677e3a17f1a707095119328a96179">TaskManager</a></li>
+<li>NotebookConverter()&#160;:&#160;<a class="el" href="classNotebookConverter.html#a11c8ed4604d4c29acd45d6225d80c464">NotebookConverter</a></li>
+</ul>
+
+
+<h3><a id="index_o" name="index_o"></a>- o -</h3><ul>
+<li>outputReady()&#160;:&#160;<a class="el" href="classProcessRunner.html#ad6840bbd9e54b7c6a0678dc9c5c792d7">ProcessRunner</a></li>
+</ul>
+
+
+<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
+<li>parallelizedEvaluationRequired&#160;:&#160;<a class="el" href="structSubtask.html#ae0c283c25316796864e9ef0d766acb60">Subtask</a></li>
+<li>parentTask&#160;:&#160;<a class="el" href="structSubtask.html#a4cdfbab855cd65277e17c8975bb0d730">Subtask</a></li>
+<li>previousSubtasksRequired&#160;:&#160;<a class="el" href="structTask.html#add2905e57d8e714693b24cc8a9148a82">Task</a></li>
+<li>previousTask()&#160;:&#160;<a class="el" href="classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e">TaskManager</a></li>
+<li>ProcessRunner()&#160;:&#160;<a class="el" href="classProcessRunner.html#a8d3ba848e57c03660af7c68dcfd7e904">ProcessRunner</a></li>
+<li>processTaskPool()&#160;:&#160;<a class="el" href="classNotebookConverter.html#a66b007e49cfe58d279c3ac279ced7213">NotebookConverter</a></li>
+</ul>
+
+
+<h3><a id="index_r" name="index_r"></a>- r -</h3><ul>
+<li>reset_robot_before_executing&#160;:&#160;<a class="el" href="structSubtask.html#ae869bad678ab4835b24aeb56176c21aa">Subtask</a></li>
+<li>resetNotebook()&#160;:&#160;<a class="el" href="classNotebookConverter.html#aa14fbd73e3cc21866decd2e02572207d">NotebookConverter</a></li>
+<li>resetRobot()&#160;:&#160;<a class="el" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc">TaskExecutor</a></li>
+<li>resetRobotFailed()&#160;:&#160;<a class="el" href="classTaskExecutor.html#a782117a9e19eff6a87255c7358e87857">TaskExecutor</a></li>
+<li>resetRobotFinished()&#160;:&#160;<a class="el" href="classTaskExecutor.html#a7fb6bb2e760b08c4816f5c48902d6498">TaskExecutor</a></li>
+<li>resetRobotStarted()&#160;:&#160;<a class="el" href="classTaskExecutor.html#a9d92d24d74615c594a578eafb6d48799">TaskExecutor</a></li>
+</ul>
+
+
+<h3><a id="index_s" name="index_s"></a>- s -</h3><ul>
+<li>save()&#160;:&#160;<a class="el" href="classLearnEnvironment.html#aa684f56e6ba08652e1ddfa47304eb449">LearnEnvironment</a></li>
+<li>ScriptWorker()&#160;:&#160;<a class="el" href="classScriptWorker.html#a1eb9773d50b730f913bb60149515aef5">ScriptWorker</a></li>
+<li>selectTask()&#160;:&#160;<a class="el" href="classSidebar.html#a9b621329888b135c42333a7ce8a4cad4">Sidebar</a>, <a class="el" href="classTaskManager.html#a51989e6fb895fd817286153750f07d75">TaskManager</a></li>
+<li>setImage()&#160;:&#160;<a class="el" href="classExecuteFrame.html#a796e8a79e0bc372c47421617bc7c9100">ExecuteFrame</a></li>
+<li>setTaskManager()&#160;:&#160;<a class="el" href="classSubtaskItem.html#aebba84aaef3c06a0c3079cea7fcd4ba6">SubtaskItem</a>, <a class="el" href="classTaskUI.html#a53f64716c6328b25e37d822e687886cf">TaskUI</a></li>
+<li>setTaskUI()&#160;:&#160;<a class="el" href="classTaskUI.html#ab6f629b7a42a49b94250768fbed7f4f4">TaskUI</a></li>
+<li>setText()&#160;:&#160;<a class="el" href="classExecuteFrame.html#a659f12e489dcddf89818a116c1e7f742">ExecuteFrame</a></li>
+<li>Sidebar()&#160;:&#160;<a class="el" href="classSidebar.html#a874f7f7907a44517ee9cf9ac2c1888d7">Sidebar</a></li>
+<li>solutionFilePath&#160;:&#160;<a class="el" href="structSubtask.html#ad6350ae5d46df3d006f4f0787915ea9f">Subtask</a></li>
+<li>start()&#160;:&#160;<a class="el" href="classProcessRunner.html#ae69a94ddf835cec0a63fe7f4fdb61934">ProcessRunner</a></li>
+<li>startedRobotResetUI()&#160;:&#160;<a class="el" href="classTaskUI.html#a11f88e4482442899fa19adf1f66fa030">TaskUI</a></li>
+<li>startExecution()&#160;:&#160;<a class="el" href="classScriptWorker.html#a501653e756b40c33f4bd37957b398de3">ScriptWorker</a></li>
+<li>startStopSubtask()&#160;:&#160;<a class="el" href="classTaskManager.html#ac4c5170435b505415f49e40906888743">TaskManager</a></li>
+<li>status&#160;:&#160;<a class="el" href="structSubtask.html#a293ddda988cb5fe92fcb5e5189b86850">Subtask</a></li>
+<li>SubtaskItem()&#160;:&#160;<a class="el" href="classSubtaskItem.html#a63e6bb32b434cf04705924c3e2cdd0db">SubtaskItem</a></li>
+<li>subtasks&#160;:&#160;<a class="el" href="structTask.html#a7486a61c7f0eb8a952260ffe9c2a1af3">Task</a></li>
+<li>subtaskStartStopRequested()&#160;:&#160;<a class="el" href="classSubtaskItem.html#a9a41e7bf314df5a4297c68509d531423">SubtaskItem</a></li>
+</ul>
+
+
+<h3><a id="index_t" name="index_t"></a>- t -</h3><ul>
+<li>taskExecutionFailed()&#160;:&#160;<a class="el" href="classTaskExecutor.html#adeffddd301a31fe1891712d30096a468">TaskExecutor</a></li>
+<li>taskExecutionFinished()&#160;:&#160;<a class="el" href="classTaskExecutor.html#ad2f2dd7e0d22d7b3bb2ec532f158bddc">TaskExecutor</a></li>
+<li>taskExecutionStarted()&#160;:&#160;<a class="el" href="classTaskExecutor.html#a2b22d6b9fa450f3471de4359b6f3b131">TaskExecutor</a></li>
+<li>TaskExecutor()&#160;:&#160;<a class="el" href="classTaskExecutor.html#ac6783ed16b392507bfaabd21422ee140">TaskExecutor</a></li>
+<li>TaskManager()&#160;:&#160;<a class="el" href="classTaskManager.html#a9c906455542360f6760169599f2640a3">TaskManager</a></li>
+<li>taskSelected()&#160;:&#160;<a class="el" href="classSidebar.html#ad4d587292c62ad30ac9f1feac5d39499">Sidebar</a>, <a class="el" href="classTaskUI.html#af43308f1438155bd927357ac93c7b9db">TaskUI</a></li>
+<li>TaskUI()&#160;:&#160;<a class="el" href="classTaskUI.html#a86f09b07fe3b4fd956f8c4ab02b8fae2">TaskUI</a></li>
+<li>timeout()&#160;:&#160;<a class="el" href="classProcessRunner.html#ae42c9c4e04890fffa674e06eedf631b3">ProcessRunner</a></li>
+<li>timeoutSeconds&#160;:&#160;<a class="el" href="structSubtask.html#a69b5b90686d9e1c75b0f071a7b9dc31b">Subtask</a></li>
+<li>title&#160;:&#160;<a class="el" href="structSubtask.html#a4fc46ff8e54ab67641df5ff45e7e0cb4">Subtask</a>, <a class="el" href="structTask.html#a0ab070dbbe73ff2a4306fe20ab75400f">Task</a></li>
+<li>toggleSolution()&#160;:&#160;<a class="el" href="classNotebookConverter.html#a665ba1030d993bd9e165fca123d92032">NotebookConverter</a>, <a class="el" href="classTaskManager.html#a9f3de937346f77e565d555a59a8a0da0">TaskManager</a></li>
+<li>topic&#160;:&#160;<a class="el" href="structTask.html#a8c37303702dbbb22f7430a73f9a3ed08">Task</a></li>
+</ul>
+
+
+<h3><a id="index_u" name="index_u"></a>- u -</h3><ul>
+<li>updateSubtaskItemsUI()&#160;:&#160;<a class="el" href="classTaskUI.html#a9f8872c2393d36d7c3e57cf7501c745e">TaskUI</a></li>
+<li>updateUI()&#160;:&#160;<a class="el" href="classSubtaskItem.html#a005df51b50001f3e9c95652e845cf424">SubtaskItem</a></li>
+</ul>
+
+
+<h3><a id="index__7E" name="index__7E"></a>- ~ -</h3><ul>
+<li>~ExecuteFrame()&#160;:&#160;<a class="el" href="classExecuteFrame.html#a0f49e809cf1c14026958bf26d3cf399b">ExecuteFrame</a></li>
+<li>~LearnEnvironment()&#160;:&#160;<a class="el" href="classLearnEnvironment.html#ad2086d08e20cef426a861e1093cfc987">LearnEnvironment</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/functions_func.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/functions_func.html
new file mode 100644
index 0000000000000000000000000000000000000000..9b847adf989d5628f7e2825800393cd98b7a6a40
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/functions_func.html
@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Class Members - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all functions with links to the classes they belong to:</div>
+
+<h3><a id="index_c" name="index_c"></a>- c -</h3><ul>
+<li>convertNotebook()&#160;:&#160;<a class="el" href="classNotebookConverter.html#a8b06d3bc01057ddd936977bded4297f4">NotebookConverter</a></li>
+<li>CustomListWidget()&#160;:&#160;<a class="el" href="classCustomListWidget.html#ab37ab040c9872e60767fff8d1525ccad">CustomListWidget</a></li>
+</ul>
+
+
+<h3><a id="index_e" name="index_e"></a>- e -</h3><ul>
+<li>errorReady()&#160;:&#160;<a class="el" href="classProcessRunner.html#a9ad2c856469a7129c905721309620e05">ProcessRunner</a></li>
+<li>ExecuteFrame()&#160;:&#160;<a class="el" href="classExecuteFrame.html#a9a3ca41869860aee87ee8198fd629f8b">ExecuteFrame</a></li>
+<li>executePythonScript()&#160;:&#160;<a class="el" href="classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523">ScriptWorker</a></li>
+<li>executeTask()&#160;:&#160;<a class="el" href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d">TaskExecutor</a></li>
+</ul>
+
+
+<h3><a id="index_f" name="index_f"></a>- f -</h3><ul>
+<li>failed()&#160;:&#160;<a class="el" href="classScriptWorker.html#a5f0a6e5095c8e55559045d7d9d2e2e1a">ScriptWorker</a></li>
+<li>failedRobotResetUI()&#160;:&#160;<a class="el" href="classTaskUI.html#a8cb2994522ad6b1b59383515edddead3">TaskUI</a></li>
+<li>fillSidebarWithTasks()&#160;:&#160;<a class="el" href="classSidebar.html#abf817c38465f3382b90d409e9cf87777">Sidebar</a></li>
+<li>finished()&#160;:&#160;<a class="el" href="classProcessRunner.html#a76c6897c0cf00b9034e6deb9662debbf">ProcessRunner</a>, <a class="el" href="classScriptWorker.html#ac33ab3bb0d1e7e9e0070ac3b7f33b633">ScriptWorker</a></li>
+<li>finishedRobotResetUI()&#160;:&#160;<a class="el" href="classTaskUI.html#a6c2ca067880d519ab255a7608a268c8f">TaskUI</a></li>
+<li>forceResetRobot()&#160;:&#160;<a class="el" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e">TaskManager</a></li>
+<li>forceStop()&#160;:&#160;<a class="el" href="classProcessRunner.html#abb4be6a4283702e38a9eb7d51438efb6">ProcessRunner</a>, <a class="el" href="classScriptWorker.html#aafadef7996317ca83dcb2605777affe2">ScriptWorker</a>, <a class="el" href="classTaskExecutor.html#a0a0c76bf999aea855cb83a6051864e09">TaskExecutor</a></li>
+</ul>
+
+
+<h3><a id="index_g" name="index_g"></a>- g -</h3><ul>
+<li>getText()&#160;:&#160;<a class="el" href="classExecuteFrame.html#a3ddc917ee39ffc1c54c491aab9ba7404">ExecuteFrame</a></li>
+</ul>
+
+
+<h3><a id="index_h" name="index_h"></a>- h -</h3><ul>
+<li>hasSolutionCells()&#160;:&#160;<a class="el" href="classNotebookConverter.html#af64e43c667b96ba0926a715316002665">NotebookConverter</a></li>
+</ul>
+
+
+<h3><a id="index_i" name="index_i"></a>- i -</h3><ul>
+<li>initializeUI()&#160;:&#160;<a class="el" href="classTaskUI.html#a62690c3b7147c20980da5c2323314025">TaskUI</a></li>
+</ul>
+
+
+<h3><a id="index_l" name="index_l"></a>- l -</h3><ul>
+<li>LearnEnvironment()&#160;:&#160;<a class="el" href="classLearnEnvironment.html#a25d7b0bd7b4270c7c2feeab3a9450d39">LearnEnvironment</a></li>
+<li>leaveEvent()&#160;:&#160;<a class="el" href="classCustomListWidget.html#a5d487b35f9dc9cd601b962e68b142e0b">CustomListWidget</a></li>
+<li>load()&#160;:&#160;<a class="el" href="classLearnEnvironment.html#af0c2b95f5853116a09c795d33eb47d52">LearnEnvironment</a></li>
+<li>loadTasks()&#160;:&#160;<a class="el" href="classTaskParser.html#a86f40497d6666a02307886ed3a4056f3">TaskParser</a></li>
+</ul>
+
+
+<h3><a id="index_m" name="index_m"></a>- m -</h3><ul>
+<li>mouseMoveEvent()&#160;:&#160;<a class="el" href="classCustomListWidget.html#adc3f7462d5db3e7c9fe4c5fd59076331">CustomListWidget</a></li>
+</ul>
+
+
+<h3><a id="index_n" name="index_n"></a>- n -</h3><ul>
+<li>nextTask()&#160;:&#160;<a class="el" href="classTaskManager.html#a327677e3a17f1a707095119328a96179">TaskManager</a></li>
+<li>NotebookConverter()&#160;:&#160;<a class="el" href="classNotebookConverter.html#a11c8ed4604d4c29acd45d6225d80c464">NotebookConverter</a></li>
+</ul>
+
+
+<h3><a id="index_o" name="index_o"></a>- o -</h3><ul>
+<li>outputReady()&#160;:&#160;<a class="el" href="classProcessRunner.html#ad6840bbd9e54b7c6a0678dc9c5c792d7">ProcessRunner</a></li>
+</ul>
+
+
+<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
+<li>previousTask()&#160;:&#160;<a class="el" href="classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e">TaskManager</a></li>
+<li>ProcessRunner()&#160;:&#160;<a class="el" href="classProcessRunner.html#a8d3ba848e57c03660af7c68dcfd7e904">ProcessRunner</a></li>
+<li>processTaskPool()&#160;:&#160;<a class="el" href="classNotebookConverter.html#a66b007e49cfe58d279c3ac279ced7213">NotebookConverter</a></li>
+</ul>
+
+
+<h3><a id="index_r" name="index_r"></a>- r -</h3><ul>
+<li>resetNotebook()&#160;:&#160;<a class="el" href="classNotebookConverter.html#aa14fbd73e3cc21866decd2e02572207d">NotebookConverter</a></li>
+<li>resetRobot()&#160;:&#160;<a class="el" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc">TaskExecutor</a></li>
+<li>resetRobotFailed()&#160;:&#160;<a class="el" href="classTaskExecutor.html#a782117a9e19eff6a87255c7358e87857">TaskExecutor</a></li>
+<li>resetRobotFinished()&#160;:&#160;<a class="el" href="classTaskExecutor.html#a7fb6bb2e760b08c4816f5c48902d6498">TaskExecutor</a></li>
+<li>resetRobotStarted()&#160;:&#160;<a class="el" href="classTaskExecutor.html#a9d92d24d74615c594a578eafb6d48799">TaskExecutor</a></li>
+</ul>
+
+
+<h3><a id="index_s" name="index_s"></a>- s -</h3><ul>
+<li>save()&#160;:&#160;<a class="el" href="classLearnEnvironment.html#aa684f56e6ba08652e1ddfa47304eb449">LearnEnvironment</a></li>
+<li>ScriptWorker()&#160;:&#160;<a class="el" href="classScriptWorker.html#a1eb9773d50b730f913bb60149515aef5">ScriptWorker</a></li>
+<li>selectTask()&#160;:&#160;<a class="el" href="classSidebar.html#a9b621329888b135c42333a7ce8a4cad4">Sidebar</a>, <a class="el" href="classTaskManager.html#a51989e6fb895fd817286153750f07d75">TaskManager</a></li>
+<li>setImage()&#160;:&#160;<a class="el" href="classExecuteFrame.html#a796e8a79e0bc372c47421617bc7c9100">ExecuteFrame</a></li>
+<li>setTaskManager()&#160;:&#160;<a class="el" href="classSubtaskItem.html#aebba84aaef3c06a0c3079cea7fcd4ba6">SubtaskItem</a>, <a class="el" href="classTaskUI.html#a53f64716c6328b25e37d822e687886cf">TaskUI</a></li>
+<li>setTaskUI()&#160;:&#160;<a class="el" href="classTaskUI.html#ab6f629b7a42a49b94250768fbed7f4f4">TaskUI</a></li>
+<li>setText()&#160;:&#160;<a class="el" href="classExecuteFrame.html#a659f12e489dcddf89818a116c1e7f742">ExecuteFrame</a></li>
+<li>Sidebar()&#160;:&#160;<a class="el" href="classSidebar.html#a874f7f7907a44517ee9cf9ac2c1888d7">Sidebar</a></li>
+<li>start()&#160;:&#160;<a class="el" href="classProcessRunner.html#ae69a94ddf835cec0a63fe7f4fdb61934">ProcessRunner</a></li>
+<li>startedRobotResetUI()&#160;:&#160;<a class="el" href="classTaskUI.html#a11f88e4482442899fa19adf1f66fa030">TaskUI</a></li>
+<li>startExecution()&#160;:&#160;<a class="el" href="classScriptWorker.html#a501653e756b40c33f4bd37957b398de3">ScriptWorker</a></li>
+<li>startStopSubtask()&#160;:&#160;<a class="el" href="classTaskManager.html#ac4c5170435b505415f49e40906888743">TaskManager</a></li>
+<li>SubtaskItem()&#160;:&#160;<a class="el" href="classSubtaskItem.html#a63e6bb32b434cf04705924c3e2cdd0db">SubtaskItem</a></li>
+<li>subtaskStartStopRequested()&#160;:&#160;<a class="el" href="classSubtaskItem.html#a9a41e7bf314df5a4297c68509d531423">SubtaskItem</a></li>
+</ul>
+
+
+<h3><a id="index_t" name="index_t"></a>- t -</h3><ul>
+<li>taskExecutionFailed()&#160;:&#160;<a class="el" href="classTaskExecutor.html#adeffddd301a31fe1891712d30096a468">TaskExecutor</a></li>
+<li>taskExecutionFinished()&#160;:&#160;<a class="el" href="classTaskExecutor.html#ad2f2dd7e0d22d7b3bb2ec532f158bddc">TaskExecutor</a></li>
+<li>taskExecutionStarted()&#160;:&#160;<a class="el" href="classTaskExecutor.html#a2b22d6b9fa450f3471de4359b6f3b131">TaskExecutor</a></li>
+<li>TaskExecutor()&#160;:&#160;<a class="el" href="classTaskExecutor.html#ac6783ed16b392507bfaabd21422ee140">TaskExecutor</a></li>
+<li>TaskManager()&#160;:&#160;<a class="el" href="classTaskManager.html#a9c906455542360f6760169599f2640a3">TaskManager</a></li>
+<li>taskSelected()&#160;:&#160;<a class="el" href="classSidebar.html#ad4d587292c62ad30ac9f1feac5d39499">Sidebar</a>, <a class="el" href="classTaskUI.html#af43308f1438155bd927357ac93c7b9db">TaskUI</a></li>
+<li>TaskUI()&#160;:&#160;<a class="el" href="classTaskUI.html#a86f09b07fe3b4fd956f8c4ab02b8fae2">TaskUI</a></li>
+<li>timeout()&#160;:&#160;<a class="el" href="classProcessRunner.html#ae42c9c4e04890fffa674e06eedf631b3">ProcessRunner</a></li>
+<li>toggleSolution()&#160;:&#160;<a class="el" href="classNotebookConverter.html#a665ba1030d993bd9e165fca123d92032">NotebookConverter</a>, <a class="el" href="classTaskManager.html#a9f3de937346f77e565d555a59a8a0da0">TaskManager</a></li>
+</ul>
+
+
+<h3><a id="index_u" name="index_u"></a>- u -</h3><ul>
+<li>updateSubtaskItemsUI()&#160;:&#160;<a class="el" href="classTaskUI.html#a9f8872c2393d36d7c3e57cf7501c745e">TaskUI</a></li>
+<li>updateUI()&#160;:&#160;<a class="el" href="classSubtaskItem.html#a005df51b50001f3e9c95652e845cf424">SubtaskItem</a></li>
+</ul>
+
+
+<h3><a id="index__7E" name="index__7E"></a>- ~ -</h3><ul>
+<li>~ExecuteFrame()&#160;:&#160;<a class="el" href="classExecuteFrame.html#a0f49e809cf1c14026958bf26d3cf399b">ExecuteFrame</a></li>
+<li>~LearnEnvironment()&#160;:&#160;<a class="el" href="classLearnEnvironment.html#ad2086d08e20cef426a861e1093cfc987">LearnEnvironment</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/functions_vars.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/functions_vars.html
new file mode 100644
index 0000000000000000000000000000000000000000..00e66d8acc48e9db5b5f9ecffdf30f5ba3b71301
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/functions_vars.html
@@ -0,0 +1,116 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Class Members - Variables</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all variables with links to the classes they belong to:</div><ul>
+<li>description&#160;:&#160;<a class="el" href="structSubtask.html#a9b2edd425425878f6e57a2f213b1211a">Subtask</a></li>
+<li>difficulty&#160;:&#160;<a class="el" href="structTask.html#a92a16f5ec66f7511f0d0ce0fd759bf9e">Task</a></li>
+<li>difficultyHexColor&#160;:&#160;<a class="el" href="structTask.html#a6fe956adc87191ee794c5bccf68c292b">Task</a></li>
+<li>evaluationFilePath&#160;:&#160;<a class="el" href="structSubtask.html#ae73daaeeae0fa09de92ef428be2fdab3">Subtask</a></li>
+<li>file&#160;:&#160;<a class="el" href="structSubtask.html#a905ed579cc13759a257c37d261141281">Subtask</a></li>
+<li>filePath&#160;:&#160;<a class="el" href="structSubtask.html#adc3ab0bdda7c565666095845a3e4567f">Subtask</a></li>
+<li>folder&#160;:&#160;<a class="el" href="structTask.html#a470ace63434687116684f003a27dc439">Task</a></li>
+<li>hasBeenExecuted&#160;:&#160;<a class="el" href="structSubtask.html#a0e3d8e77e26cdb58b2e9faa8ec2e1707">Subtask</a></li>
+<li>lastExecutionError&#160;:&#160;<a class="el" href="structSubtask.html#a2c4bcefd1e42773c5e23abd9ba0b30f2">Subtask</a></li>
+<li>lastExecutionFailed&#160;:&#160;<a class="el" href="structSubtask.html#ab1e1bff66e7464efa54419b36006f1a8">Subtask</a></li>
+<li>parallelizedEvaluationRequired&#160;:&#160;<a class="el" href="structSubtask.html#ae0c283c25316796864e9ef0d766acb60">Subtask</a></li>
+<li>parentTask&#160;:&#160;<a class="el" href="structSubtask.html#a4cdfbab855cd65277e17c8975bb0d730">Subtask</a></li>
+<li>previousSubtasksRequired&#160;:&#160;<a class="el" href="structTask.html#add2905e57d8e714693b24cc8a9148a82">Task</a></li>
+<li>reset_robot_before_executing&#160;:&#160;<a class="el" href="structSubtask.html#ae869bad678ab4835b24aeb56176c21aa">Subtask</a></li>
+<li>solutionFilePath&#160;:&#160;<a class="el" href="structSubtask.html#ad6350ae5d46df3d006f4f0787915ea9f">Subtask</a></li>
+<li>status&#160;:&#160;<a class="el" href="structSubtask.html#a293ddda988cb5fe92fcb5e5189b86850">Subtask</a></li>
+<li>subtasks&#160;:&#160;<a class="el" href="structTask.html#a7486a61c7f0eb8a952260ffe9c2a1af3">Task</a></li>
+<li>timeoutSeconds&#160;:&#160;<a class="el" href="structSubtask.html#a69b5b90686d9e1c75b0f071a7b9dc31b">Subtask</a></li>
+<li>title&#160;:&#160;<a class="el" href="structSubtask.html#a4fc46ff8e54ab67641df5ff45e7e0cb4">Subtask</a>, <a class="el" href="structTask.html#a0ab070dbbe73ff2a4306fe20ab75400f">Task</a></li>
+<li>topic&#160;:&#160;<a class="el" href="structTask.html#a8c37303702dbbb22f7430a73f9a3ed08">Task</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/globals.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/globals.html
new file mode 100644
index 0000000000000000000000000000000000000000..3fc65bae79ba8b078ef87eea111313ea8a454eb7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/globals.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all file members with links to the files they belong to:</div><ul>
+<li>json&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a0c01dbde6677d7e4769b85716c69c491">notebook_converter.cpp</a></li>
+<li>NOT_IMPLEMENTED_ERROR&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a8a72334e6ef797e624196b1d9e073c6e">notebook_converter.cpp</a></li>
+<li>SOLUTION_CELL_HEADER&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a22b163bef7c6dc038082729221692dfa">notebook_converter.cpp</a></li>
+<li>SOLUTION_CELL_TAG&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a213a8c8a72491ee237c3ce92f92191ec">notebook_converter.cpp</a></li>
+<li>SOLUTION_CODE_PLACEHOLDER_END&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a87d746c0d44126e9db98540148634b18">notebook_converter.cpp</a></li>
+<li>SOLUTION_CODE_PLACEHOLDER_START&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a0f5a0941639b66358c741284acf0dced">notebook_converter.cpp</a></li>
+<li>SOLUTION_REMOVED_CELL_TAG&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a184e7635f439bf95093b6a066ce161d7">notebook_converter.cpp</a></li>
+<li>SubtaskStatus&#160;:&#160;<a class="el" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0">task.hpp</a></li>
+<li>TASK_CELL_TAG&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a577f6caa2b74a38695dcadccd277cd41">notebook_converter.cpp</a></li>
+<li>WRITE_CODE_MARKER&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a6c92986de28899546e13ab1a37bf0722">notebook_converter.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/globals_enum.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/globals_enum.html
new file mode 100644
index 0000000000000000000000000000000000000000..5d3077479865c7574c77c64407261cdf801ac86c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/globals_enum.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all enums with links to the files they belong to:</div><ul>
+<li>SubtaskStatus&#160;:&#160;<a class="el" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0">task.hpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/globals_type.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/globals_type.html
new file mode 100644
index 0000000000000000000000000000000000000000..51643c474a9ac9e01a3f2a042427f0b30ca93380
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/globals_type.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all typedefs with links to the files they belong to:</div><ul>
+<li>json&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a0c01dbde6677d7e4769b85716c69c491">notebook_converter.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/globals_vars.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/globals_vars.html
new file mode 100644
index 0000000000000000000000000000000000000000..44f8eacc7e2367c98bc878f23e528d8255a20ca6
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/globals_vars.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all variables with links to the files they belong to:</div><ul>
+<li>NOT_IMPLEMENTED_ERROR&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a8a72334e6ef797e624196b1d9e073c6e">notebook_converter.cpp</a></li>
+<li>SOLUTION_CELL_HEADER&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a22b163bef7c6dc038082729221692dfa">notebook_converter.cpp</a></li>
+<li>SOLUTION_CELL_TAG&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a213a8c8a72491ee237c3ce92f92191ec">notebook_converter.cpp</a></li>
+<li>SOLUTION_CODE_PLACEHOLDER_END&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a87d746c0d44126e9db98540148634b18">notebook_converter.cpp</a></li>
+<li>SOLUTION_CODE_PLACEHOLDER_START&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a0f5a0941639b66358c741284acf0dced">notebook_converter.cpp</a></li>
+<li>SOLUTION_REMOVED_CELL_TAG&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a184e7635f439bf95093b6a066ce161d7">notebook_converter.cpp</a></li>
+<li>TASK_CELL_TAG&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a577f6caa2b74a38695dcadccd277cd41">notebook_converter.cpp</a></li>
+<li>WRITE_CODE_MARKER&#160;:&#160;<a class="el" href="notebook__converter_8cpp.html#a6c92986de28899546e13ab1a37bf0722">notebook_converter.cpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/graph_legend.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/graph_legend.html
new file mode 100644
index 0000000000000000000000000000000000000000..e9f13a4ef586aa13b32b6496eb477dbdb3c991c0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/graph_legend.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Graph Legend</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Graph Legend</div></div>
+</div><!--header-->
+<div class="contents">
+<p>This page explains how to interpret the graphs that are generated by doxygen.</p>
+<p>Consider the following example: </p><div class="fragment"><div class="line"><span class="comment">/*! Invisible class because of truncation */</span></div>
+<div class="line"><span class="keyword">class </span>Invisible { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! Truncated class, inheritance relation is hidden */</span></div>
+<div class="line"><span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">/* Class not documented with doxygen comments */</span></div>
+<div class="line"><span class="keyword">class </span>Undocumented { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! Class that is inherited using public inheritance */</span></div>
+<div class="line"><span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! A template class */</span></div>
+<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! Class that is inherited using protected inheritance */</span></div>
+<div class="line"><span class="keyword">class </span>ProtectedBase { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! Class that is inherited using private inheritance */</span></div>
+<div class="line"><span class="keyword">class </span>PrivateBase { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! Class that is used by the Inherited class */</span></div>
+<div class="line"><span class="keyword">class </span>Used { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! Super class that inherits a number of other classes */</span></div>
+<div class="line"><span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,</div>
+<div class="line">                  <span class="keyword">protected</span> ProtectedBase,</div>
+<div class="line">                  <span class="keyword">private</span> PrivateBase,</div>
+<div class="line">                  <span class="keyword">public</span> Undocumented,</div>
+<div class="line">                  <span class="keyword">public</span> Templ&lt;int&gt;</div>
+<div class="line">{</div>
+<div class="line">  <span class="keyword">private</span>:</div>
+<div class="line">    Used *m_usedClass;</div>
+<div class="line">};</div>
+</div><!-- fragment --><p> This will result in the following graph:</p>
+<center><img src="graph_legend.png" alt="" class="inline"/></center><p>The boxes in the above graph have the following meaning: </p>
+<ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a gray border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+<p>The arrows have the following meaning: </p>
+<ul>
+<li>
+A blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance. </li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/graph_legend.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/graph_legend.md5
new file mode 100644
index 0000000000000000000000000000000000000000..34a71d615292652247409294dc49bc204ebf9196
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/graph_legend.md5
@@ -0,0 +1 @@
+238bc3d95adc1929b3259d0c39010ed6
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/graph_legend.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/graph_legend.png
new file mode 100644
index 0000000000000000000000000000000000000000..feea22ab166bd34aa2a2130ff4c721152ec66803
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/graph_legend.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/hierarchy.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/hierarchy.html
new file mode 100644
index 0000000000000000000000000000000000000000..95061e1b073d90e09178c5570273ba7f921fbffe
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/hierarchy.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Class Hierarchy</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Class Hierarchy</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">
+<p><a href="inherits.html">Go to the graphical class hierarchy</a></p>
+This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:dynsection.toggleLevel(1);">1</span><span onclick="javascript:dynsection.toggleLevel(2);">2</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="dynsection.toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>rviz::Panel</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classLearnEnvironment.html" target="_self">LearnEnvironment</a></td><td class="desc">A custom RViz panel for managing the learning environment </td></tr>
+<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="dynsection.toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classQFrame.html" target="_self">QFrame</a></td><td class="desc"></td></tr>
+<tr id="row_1_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classExecuteFrame.html" target="_self">ExecuteFrame</a></td><td class="desc">A custom <a class="el" href="classQFrame.html">QFrame</a> that displays an image and text. For logging and task execution </td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="dynsection.toggleFolder('2_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classQListWidget.html" target="_self">QListWidget</a></td><td class="desc"></td></tr>
+<tr id="row_2_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classCustomListWidget.html" target="_self">CustomListWidget</a></td><td class="desc">A custom <a class="el" href="classQListWidget.html">QListWidget</a> with enhanced mouse interaction </td></tr>
+<tr id="row_3_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_3_" class="arrow" onclick="dynsection.toggleFolder('3_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classQObject.html" target="_self">QObject</a></td><td class="desc"></td></tr>
+<tr id="row_3_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classNotebookConverter.html" target="_self">NotebookConverter</a></td><td class="desc">A class for converting Jupyter notebooks to Python scripts and processing task pools </td></tr>
+<tr id="row_3_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classProcessRunner.html" target="_self">ProcessRunner</a></td><td class="desc">Manages the execution of an external process with a timeout </td></tr>
+<tr id="row_3_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classScriptWorker.html" target="_self">ScriptWorker</a></td><td class="desc">Manages the execution of scripts for tasks </td></tr>
+<tr id="row_3_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTaskExecutor.html" target="_self">TaskExecutor</a></td><td class="desc">Executes tasks and manages their execution state </td></tr>
+<tr id="row_3_4_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTaskManager.html" target="_self">TaskManager</a></td><td class="desc">Manages tasks and their execution within the application </td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_4_" class="arrow" onclick="dynsection.toggleFolder('4_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classQWidget.html" target="_self">QWidget</a></td><td class="desc"></td></tr>
+<tr id="row_4_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classSidebar.html" target="_self">Sidebar</a></td><td class="desc">Represents the sidebar UI component for displaying tasks </td></tr>
+<tr id="row_4_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classSubtaskItem.html" target="_self">SubtaskItem</a></td><td class="desc">Represents a UI item for a subtask </td></tr>
+<tr id="row_4_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTaskUI.html" target="_self">TaskUI</a></td><td class="desc">Manages the user interface for tasks and subtasks </td></tr>
+<tr id="row_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structSubtask.html" target="_self">Subtask</a></td><td class="desc">Represents a subtask within a task </td></tr>
+<tr id="row_6_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structTask.html" target="_self">Task</a></td><td class="desc">Represents a task containing multiple subtasks </td></tr>
+<tr id="row_7_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classTaskParser.html" target="_self">TaskParser</a></td><td class="desc">Parses tasks and subtasks from a JSON file </td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/index.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..ef03be9e47cc068e06c52aeb625b6a8f454bf642
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/index.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Learn Environment Documentation</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="doxygen_crawl.html"></a>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_0.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_0.map
new file mode 100644
index 0000000000000000000000000000000000000000..93e5d6cfb861d90b9580cbe3925044f6f08639fe
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_0.map
@@ -0,0 +1,5 @@
+<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
+<area shape="rect" id="Node000000" href="$classQFrame.html" title=" " alt="" coords="5,5,74,32"/>
+<area shape="rect" id="Node000001" href="$classExecuteFrame.html" title="A custom QFrame that displays an image and text. For logging and task execution." alt="" coords="122,5,228,32"/>
+<area shape="poly" id="edge1_Node000000_Node000001" title=" " alt="" coords="89,16,121,16,121,21,89,21"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_0.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_0.md5
new file mode 100644
index 0000000000000000000000000000000000000000..10145814613deb20b4bf611c1f12144c63018273
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_0.md5
@@ -0,0 +1 @@
+fd151ae0a554cc0196e06920b65d0014
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_0.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_0.png
new file mode 100644
index 0000000000000000000000000000000000000000..9da880805df45805f4a51f704fed0c4d7d70fd47
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_0.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_1.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_1.map
new file mode 100644
index 0000000000000000000000000000000000000000..dc00d14f4c0f65bebf491a0b54bfe78600af45f5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_1.map
@@ -0,0 +1,5 @@
+<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
+<area shape="rect" id="Node000000" href="$classQListWidget.html" title=" " alt="" coords="5,5,99,32"/>
+<area shape="rect" id="Node000001" href="$classCustomListWidget.html" title="A custom QListWidget with enhanced mouse interaction." alt="" coords="147,5,276,32"/>
+<area shape="poly" id="edge2_Node000000_Node000001" title=" " alt="" coords="114,16,146,16,146,21,114,21"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_1.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_1.md5
new file mode 100644
index 0000000000000000000000000000000000000000..af37826b4980132104d7611208dbd8261670e485
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_1.md5
@@ -0,0 +1 @@
+ff748a22d79d72d4f28664b6dd3adc14
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_1.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..ee1c87f7b0c7175aba4bb60a9a0435aa2d68ed6a
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_1.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_2.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_2.map
new file mode 100644
index 0000000000000000000000000000000000000000..cecdd616b847e92704c956d49270df8fe701c2be
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_2.map
@@ -0,0 +1,13 @@
+<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
+<area shape="rect" id="Node000000" href="$classQObject.html" title=" " alt="" coords="5,107,75,133"/>
+<area shape="rect" id="Node000001" href="$classNotebookConverter.html" title="A class for converting Jupyter notebooks to Python scripts and processing task pools." alt="" coords="123,5,257,32"/>
+<area shape="poly" id="edge3_Node000000_Node000001" title=" " alt="" coords="61,94,88,67,121,42,144,30,146,35,124,46,92,71,65,98"/>
+<area shape="rect" id="Node000002" href="$classProcessRunner.html" title="Manages the execution of an external process with a timeout." alt="" coords="134,56,246,83"/>
+<area shape="poly" id="edge4_Node000000_Node000002" title=" " alt="" coords="88,101,147,81,149,86,90,106"/>
+<area shape="rect" id="Node000003" href="$classScriptWorker.html" title="Manages the execution of scripts for tasks." alt="" coords="142,107,238,133"/>
+<area shape="poly" id="edge5_Node000000_Node000003" title=" " alt="" coords="90,117,142,117,142,123,90,123"/>
+<area shape="rect" id="Node000004" href="$classTaskExecutor.html" title="Executes tasks and manages their execution state." alt="" coords="139,157,240,184"/>
+<area shape="poly" id="edge6_Node000000_Node000004" title=" " alt="" coords="90,134,149,154,147,159,88,139"/>
+<area shape="rect" id="Node000005" href="$classTaskManager.html" title="Manages tasks and their execution within the application." alt="" coords="140,208,240,235"/>
+<area shape="poly" id="edge7_Node000000_Node000005" title=" " alt="" coords="65,142,92,169,124,194,146,205,144,210,121,198,88,173,61,146"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_2.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_2.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f3b116a4a7484a83e848e869136af4bc7d10e6f0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_2.md5
@@ -0,0 +1 @@
+dc5056e50dedab5f8d3457dfa5e8cb17
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_2.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b65866e9d08d7348b649bfab65e5e0532721baf
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_2.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_3.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_3.map
new file mode 100644
index 0000000000000000000000000000000000000000..1eb734833286a61f46a0f9a656e60923f96bcdc0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_3.map
@@ -0,0 +1,9 @@
+<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
+<area shape="rect" id="Node000000" href="$classQWidget.html" title=" " alt="" coords="5,56,78,83"/>
+<area shape="rect" id="Node000001" href="$classSidebar.html" title="Represents the sidebar UI component for displaying tasks." alt="" coords="141,5,206,32"/>
+<area shape="poly" id="edge8_Node000000_Node000001" title=" " alt="" coords="91,47,139,29,141,34,93,52"/>
+<area shape="rect" id="Node000002" href="$classSubtaskItem.html" title="Represents a UI item for a subtask." alt="" coords="126,56,221,83"/>
+<area shape="poly" id="edge9_Node000000_Node000002" title=" " alt="" coords="93,67,125,67,125,72,93,72"/>
+<area shape="rect" id="Node000003" href="$classTaskUI.html" title="Manages the user interface for tasks and subtasks." alt="" coords="142,107,205,133"/>
+<area shape="poly" id="edge10_Node000000_Node000003" title=" " alt="" coords="93,86,142,105,140,110,91,91"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_3.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_3.md5
new file mode 100644
index 0000000000000000000000000000000000000000..a5979336dd972de7b8f909497d9487d6116283d4
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_3.md5
@@ -0,0 +1 @@
+18a8ec469f82e5c3df33a51ba84450e9
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_3.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..632dbaaf05b8b3641cff4f5ea183b8a48202913c
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_3.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_4.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_4.map
new file mode 100644
index 0000000000000000000000000000000000000000..7b909dcc3ec24b579bfffc07380ede09cffd57f0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_4.map
@@ -0,0 +1,5 @@
+<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
+<area shape="rect" id="Node000000" title=" " alt="" coords="5,5,89,32"/>
+<area shape="rect" id="Node000001" href="$classLearnEnvironment.html" title="A custom RViz panel for managing the learning environment." alt="" coords="137,5,263,32"/>
+<area shape="poly" id="edge11_Node000000_Node000001" title=" " alt="" coords="104,16,136,16,136,21,104,21"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_4.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_4.md5
new file mode 100644
index 0000000000000000000000000000000000000000..a31fa30de1b1c116e295d1ea3ff115e3c903ff4b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_4.md5
@@ -0,0 +1 @@
+eeb4752a7b45a509f8dc47b61519aeec
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_4.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..90e5ec1c6995c935d56b3e48c71c440fdeaaf747
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_4.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_5.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_5.map
new file mode 100644
index 0000000000000000000000000000000000000000..64788352db1ecfb2e351f4e935dc93f3c26cc9d4
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_5.map
@@ -0,0 +1,3 @@
+<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
+<area shape="rect" id="Node000000" href="$structSubtask.html" title="Represents a subtask within a task." alt="" coords="5,5,75,32"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_5.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_5.md5
new file mode 100644
index 0000000000000000000000000000000000000000..31770d3775c915d001ada3f33cb10c8ee838f5b0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_5.md5
@@ -0,0 +1 @@
+a15524d956f1ef3ae9af214872b1c7b6
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_5.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..6daf30fee740c631c609f9d05b95ccb12acc74c5
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_5.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_6.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_6.map
new file mode 100644
index 0000000000000000000000000000000000000000..a50d32d9f6aa31b49995f0219b81bcba82705f89
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_6.map
@@ -0,0 +1,3 @@
+<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
+<area shape="rect" id="Node000000" href="$structTask.html" title="Represents a task containing multiple subtasks." alt="" coords="5,5,55,32"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_6.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_6.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8272cf9380571986651ea91d66098236cb9f6aae
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_6.md5
@@ -0,0 +1 @@
+ffedfab748344dc8670b7abb3a1a1a61
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_6.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_6.png
new file mode 100644
index 0000000000000000000000000000000000000000..7bd5a5814691735a987dd7723ce1137864c1d6da
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_6.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_7.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_7.map
new file mode 100644
index 0000000000000000000000000000000000000000..781792fb567a6d99c93f30d1e116c273c5fb253e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_7.map
@@ -0,0 +1,3 @@
+<map id="Graphical Class Hierarchy" name="Graphical Class Hierarchy">
+<area shape="rect" id="Node000000" href="$classTaskParser.html" title="Parses tasks and subtasks from a JSON file." alt="" coords="5,5,93,32"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_7.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_7.md5
new file mode 100644
index 0000000000000000000000000000000000000000..b3742d0fd84f9e5a2d9cadc7a5097b31dee2fb48
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_7.md5
@@ -0,0 +1 @@
+bc1410b70695fb57e37f889325b1e729
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_7.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_7.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a5afee7fc437dddfedb56a402b6aee1d78c4a1d
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherit_graph_7.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherits.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherits.html
new file mode 100644
index 0000000000000000000000000000000000000000..bfd5bb2acf5716d59843adca3ee5685867ac75d6
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/inherits.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Class Hierarchy</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Class Hierarchy</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">
+<p><a href="hierarchy.html">Go to the textual class hierarchy</a></p>
+</div><table border="0" cellspacing="10" cellpadding="0">
+<tr><td><img src="inherit_graph_0.png" border="0" usemap="#aQFrame" alt=""/>
+<map name="aQFrame" id="aQFrame">
+<area shape="rect" href="classQFrame.html" title=" " alt="" coords="5,5,74,32"/>
+<area shape="rect" href="classExecuteFrame.html" title="A custom QFrame that displays an image and text. For logging and task execution." alt="" coords="122,5,228,32"/>
+<area shape="poly" title=" " alt="" coords="89,16,121,16,121,21,89,21"/>
+</map>
+</td></tr>
+<tr><td><img src="inherit_graph_1.png" border="0" usemap="#aQListWidget" alt=""/>
+<map name="aQListWidget" id="aQListWidget">
+<area shape="rect" href="classQListWidget.html" title=" " alt="" coords="5,5,99,32"/>
+<area shape="rect" href="classCustomListWidget.html" title="A custom QListWidget with enhanced mouse interaction." alt="" coords="147,5,276,32"/>
+<area shape="poly" title=" " alt="" coords="114,16,146,16,146,21,114,21"/>
+</map>
+</td></tr>
+<tr><td><img src="inherit_graph_2.png" border="0" usemap="#aQObject" alt=""/>
+<map name="aQObject" id="aQObject">
+<area shape="rect" href="classQObject.html" title=" " alt="" coords="5,107,75,133"/>
+<area shape="rect" href="classNotebookConverter.html" title="A class for converting Jupyter notebooks to Python scripts and processing task pools." alt="" coords="123,5,257,32"/>
+<area shape="poly" title=" " alt="" coords="61,94,88,67,121,42,144,30,146,35,124,46,92,71,65,98"/>
+<area shape="rect" href="classProcessRunner.html" title="Manages the execution of an external process with a timeout." alt="" coords="134,56,246,83"/>
+<area shape="poly" title=" " alt="" coords="88,101,147,81,149,86,90,106"/>
+<area shape="rect" href="classScriptWorker.html" title="Manages the execution of scripts for tasks." alt="" coords="142,107,238,133"/>
+<area shape="poly" title=" " alt="" coords="90,117,142,117,142,123,90,123"/>
+<area shape="rect" href="classTaskExecutor.html" title="Executes tasks and manages their execution state." alt="" coords="139,157,240,184"/>
+<area shape="poly" title=" " alt="" coords="90,134,149,154,147,159,88,139"/>
+<area shape="rect" href="classTaskManager.html" title="Manages tasks and their execution within the application." alt="" coords="140,208,240,235"/>
+<area shape="poly" title=" " alt="" coords="65,142,92,169,124,194,146,205,144,210,121,198,88,173,61,146"/>
+</map>
+</td></tr>
+<tr><td><img src="inherit_graph_3.png" border="0" usemap="#aQWidget" alt=""/>
+<map name="aQWidget" id="aQWidget">
+<area shape="rect" href="classQWidget.html" title=" " alt="" coords="5,56,78,83"/>
+<area shape="rect" href="classSidebar.html" title="Represents the sidebar UI component for displaying tasks." alt="" coords="141,5,206,32"/>
+<area shape="poly" title=" " alt="" coords="91,47,139,29,141,34,93,52"/>
+<area shape="rect" href="classSubtaskItem.html" title="Represents a UI item for a subtask." alt="" coords="126,56,221,83"/>
+<area shape="poly" title=" " alt="" coords="93,67,125,67,125,72,93,72"/>
+<area shape="rect" href="classTaskUI.html" title="Manages the user interface for tasks and subtasks." alt="" coords="142,107,205,133"/>
+<area shape="poly" title=" " alt="" coords="93,86,142,105,140,110,91,91"/>
+</map>
+</td></tr>
+<tr><td><img src="inherit_graph_4.png" border="0" usemap="#arviz_1_1Panel" alt=""/>
+<map name="arviz_1_1Panel" id="arviz_1_1Panel">
+<area shape="rect" title=" " alt="" coords="5,5,89,32"/>
+<area shape="rect" href="classLearnEnvironment.html" title="A custom RViz panel for managing the learning environment." alt="" coords="137,5,263,32"/>
+<area shape="poly" title=" " alt="" coords="104,16,136,16,136,21,104,21"/>
+</map>
+</td></tr>
+<tr><td><img src="inherit_graph_5.png" border="0" usemap="#aSubtask" alt=""/>
+<map name="aSubtask" id="aSubtask">
+<area shape="rect" href="structSubtask.html" title="Represents a subtask within a task." alt="" coords="5,5,75,32"/>
+</map>
+</td></tr>
+<tr><td><img src="inherit_graph_6.png" border="0" usemap="#aTask" alt=""/>
+<map name="aTask" id="aTask">
+<area shape="rect" href="structTask.html" title="Represents a task containing multiple subtasks." alt="" coords="5,5,55,32"/>
+</map>
+</td></tr>
+<tr><td><img src="inherit_graph_7.png" border="0" usemap="#aTaskParser" alt=""/>
+<map name="aTaskParser" id="aTaskParser">
+<area shape="rect" href="classTaskParser.html" title="Parses tasks and subtasks from a JSON file." alt="" coords="5,5,93,32"/>
+</map>
+</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/jquery.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/jquery.js
new file mode 100644
index 0000000000000000000000000000000000000000..875ada738f09baedd40cf597556d6a764ac03270
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/jquery.js
@@ -0,0 +1,204 @@
+/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}
+var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},
+push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(
+e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,
+O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp(
+"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType
+}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c
+)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){
+return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(
+":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id")
+)&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push(
+"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(
+a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,
+null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if(
+"string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne
+).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType
+)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(
+function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){
+return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);
+for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n
+){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(
+e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);
+break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(
+function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){
+for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(
+this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(
+var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){
+return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(
+){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),
+S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},catch:function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,
+r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,
+o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(
+"object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){
+var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),
+1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){
+Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t
+){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c
+].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;
+return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),
+"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n
+)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,
+f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(
+arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i
+]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(
+e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;
+this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t
+}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,
+r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),
+r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){
+1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(
+"string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t
+,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(
+l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[
+0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(
+!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(
+e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(
+e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(
+this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},
+S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),
+originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}
+S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(
+le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),
+null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"
+],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},
+S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{
+set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o
+)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(
+" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;
+t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode
+,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),
+e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(
+new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};
+var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();
+return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",
+isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(
+t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global
+)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(
+v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();
+while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))
+}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),
+t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){
+return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(
+e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r]
+,C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(
+function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,
+"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}
+),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each(
+"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){
+return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
+/*! jQuery UI - v1.13.2 - 2022-08-01
+* http://jqueryui.com
+* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(y){"use strict";y.ui=y.ui||{};y.ui.version="1.13.2";var n,i=0,h=Array.prototype.hasOwnProperty,a=Array.prototype.slice;y.cleanData=(n=y.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=y._data(i,"events"))&&e.remove&&y(i).triggerHandler("remove");n(t)}),y.widget=function(t,i,e){var s,n,o,h={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=y.Widget),Array.isArray(e)&&(e=y.extend.apply(null,[{}].concat(e))),y.expr.pseudos[r.toLowerCase()]=function(t){return!!y.data(t,r)},y[a]=y[a]||{},s=y[a][t],n=y[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},y.extend(n,s,{version:e.version,_proto:y.extend({},e),_childConstructors:[]}),(o=new i).options=y.widget.extend({},o.options),y.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}
+function o(t){return i.prototype[e].apply(this,t)}h[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=y.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},h,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(y.each(s._childConstructors,function(t,e){var i=e.prototype;y.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),y.widget.bridge(t,n),n},y.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],h.call(s[n],e)&&void 0!==i&&(y.isPlainObject(i)?t[e]=y.isPlainObject(t[e])?y.widget.extend({},t[e],i):y.widget.extend({},i):t[e]=i);return t},y.widget.bridge=function(o,e){var h=e.prototype.widgetFullName||o;y.fn[o]=function(i){var t="string"==typeof i,s=a.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,
+e=y.data(this,h);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?y.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:y.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=y.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=y.data(this,h);t?(t.option(i||{}),t._init&&t._init()):y.data(this,h,new e(i,this))})),n}},y.Widget=function(){},y.Widget._childConstructors=[],y.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t
+){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t
+]=y.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=y(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},
+disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],h=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=h.classesElementLookup[t[s]]||y(),i=n.add?(function(){var i=[];n.element.each(function(t,e){y.map(h.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),h._on(y(i),{remove:"_untrackClassesElement"})}(),y(y.uniqueSort(i.get().concat(n.element.get())))):y(i.not(n.element).get()),h.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=y.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;y.each(s.classesElementLookup,function(t,e){-1!==y.inArray(i.target,e)&&(s.classesElementLookup[t]=y(e.not(i.target).get()))}),this._off(y(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){
+return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,i={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return i.element.toggleClass(this._classes(i),s),this},_on:function(n,o,t){var h,a=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=h=y(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,h=this.widget()),y.each(t,function(t,e){function i(){if(n||!0!==a.options.disabled&&!y(this).hasClass("ui-state-disabled"))return("string"==typeof e?a[e]:e).apply(a,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||y.guid++);var s=t.match(/^([\w:-]*)\s*(.*)$/),t=s[1]+a.eventNamespace,s=s[2];s?h.on(t,s,i):o.on(t,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=y(this.bindings.not(t).get()),this.focusable=y(this.focusable.not(t).get()),this.hoverable=y(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return(
+"string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(y(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(y(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(y(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(y(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=y.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},y.each({show:"fadeIn",hide:"fadeOut"},function(o,h){y.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t
+)?!0!==t&&"number"!=typeof t&&t.effect||h:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!y.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&y.effects&&y.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){y(this)[o](),i&&i.call(e[0]),t()})}});var s,x,D,o,r,l,u,p,W;y.widget;function E(t,e,i){return[parseFloat(t[0])*(p.test(t[0])?e/100:1),parseFloat(t[1])*(p.test(t[1])?i/100:1)]}function H(t,e){return parseInt(y.css(t,e),10)||0}function S(t){return null!=t&&t===t.window}x=Math.max,D=Math.abs,o=/left|center|right/,r=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,u=/^\w+/,p=/%$/,W=y.fn.position,y.position={scrollbarWidth:function(){if(void 0!==s)return s;var t,e=y("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},
+getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?y.position.scrollbarWidth():0,height:e?y.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=y(t||window),i=S(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?y(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},y.fn.position=function(p){if(!p||!p.of)return W.apply(this,arguments);var d,c,f,g,m,t,_="string"==typeof(p=y.extend({},p)).of?y(document).find(p.of):y(p.of),w=y.position.getWithinInfo(p.within),v=y.position.getScrollInfo(w),b=(p.collision||"flip").split(" "),z={},e=9===(t=(e=_)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:S(t)?{width:e.width(),height:e.height(),offset:{
+top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return _[0].preventDefault&&(p.at="left top"),c=e.width,f=e.height,m=y.extend({},g=e.offset),y.each(["my","at"],function(){var t,e,i=(p[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):r.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=r.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),z[this]=[t?t[0]:0,e?e[0]:0],p[this]=[u.exec(i[0])[0],u.exec(i[1])[0]]}),1===b.length&&(b[1]=b[0]),"right"===p.at[0]?m.left+=c:"center"===p.at[0]&&(m.left+=c/2),"bottom"===p.at[1]?m.top+=f:"center"===p.at[1]&&(m.top+=f/2),d=E(z.at,c,f),m.left+=d[0],m.top+=d[1],this.each(function(){var i,t,h=y(this),a=h.outerWidth(),r=h.outerHeight(),e=H(this,"marginLeft"),s=H(this,"marginTop"),n=a+e+H(this,"marginRight")+v.width,o=r+s+H(this,"marginBottom")+v.height,l=y.extend({},m),u=E(z.my,h.outerWidth()
+,h.outerHeight());"right"===p.my[0]?l.left-=a:"center"===p.my[0]&&(l.left-=a/2),"bottom"===p.my[1]?l.top-=r:"center"===p.my[1]&&(l.top-=r/2),l.left+=u[0],l.top+=u[1],i={marginLeft:e,marginTop:s},y.each(["left","top"],function(t,e){y.ui.position[b[t]]&&y.ui.position[b[t]][e](l,{targetWidth:c,targetHeight:f,elemWidth:a,elemHeight:r,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+u[0],d[1]+u[1]],my:p.my,at:p.at,within:w,elem:h})}),p.using&&(t=function(t){var e=g.left-l.left,i=e+c-a,s=g.top-l.top,n=s+f-r,o={target:{element:_,left:g.left,top:g.top,width:c,height:f},element:{element:h,left:l.left,top:l.top,width:a,height:r},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};c<a&&D(e+i)<c&&(o.horizontal="center"),f<r&&D(s+n)<f&&(o.vertical="middle"),x(D(e),D(i))>x(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,
+s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0<h&&a<=0?(i=t.left+h+e.collisionWidth-n-s,t.left+=h-i):t.left=!(0<a&&h<=0)&&a<h?s+n-e.collisionWidth:s:0<h?t.left+=h:0<a?t.left-=a:t.left=x(t.left-o,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,h=s-o,a=o+e.collisionHeight-n-s;e.collisionHeight>n?0<h&&a<=0?(i=t.top+h+e.collisionHeight-n-s,t.top+=h-i):t.top=!(0<a&&h<=0)&&a<h?s+n-e.collisionHeight:s:0<h?t.top+=h:0<a?t.top-=a:t.top=x(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,o=i.isWindow?i.scrollLeft:i.offset.left,h=t.left-e.collisionPosition.marginLeft,a=h-o,r=h+e.collisionWidth-n-o,l="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,i="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,h=-2*e.offset[0];a<0?((s=t.left+l+i+h+e.collisionWidth-n-s)<0||s<D(a)
+)&&(t.left+=l+i+h):0<r&&(0<(o=t.left-e.collisionPosition.marginLeft+l+i+h-o)||D(o)<r)&&(t.left+=l+i+h)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,o=i.isWindow?i.scrollTop:i.offset.top,h=t.top-e.collisionPosition.marginTop,a=h-o,r=h+e.collisionHeight-n-o,l="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,i="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,h=-2*e.offset[1];a<0?((s=t.top+l+i+h+e.collisionHeight-n-s)<0||s<D(a))&&(t.top+=l+i+h):0<r&&(0<(o=t.top-e.collisionPosition.marginTop+l+i+h-o)||D(o)<r)&&(t.top+=l+i+h)}},flipfit:{left:function(){y.ui.position.flip.left.apply(this,arguments),y.ui.position.fit.left.apply(this,arguments)},top:function(){y.ui.position.flip.top.apply(this,arguments),y.ui.position.fit.top.apply(this,arguments)}}};var t;y.ui.position,y.extend(y.expr.pseudos,{data:y.expr.createPseudo?y.expr.createPseudo(function(e){return function(t){return!!y.data(t,e)}}):function(t,e,i){return!!y.data(t,i[3])}}),y.fn.extend({
+disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}});y.ui.focusable=function(t,e){var i,s,n,o,h=t.nodeName.toLowerCase();return"area"===h?(s=(i=t.parentNode).name,!(!t.href||!s||"map"!==i.nodeName.toLowerCase())&&(0<(s=y("img[usemap='#"+s+"']")).length&&s.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(h)?(n=!t.disabled)&&(o=y(t).closest("fieldset")[0])&&(n=!o.disabled):n="a"===h&&t.href||e,n&&y(t).is(":visible")&&function(t){var e=t.css("visibility");for(;"inherit"===e;)t=t.parent(),e=t.css("visibility");return"visible"===e}(y(t)))},y.extend(y.expr.pseudos,{focusable:function(t){return y.ui.focusable(t,null!=y.attr(t,"tabindex"))}});var e,d;y.ui.focusable,y.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):y(this[0].form)},y.ui.formResetMixin={_formResetHandler:function(
+){var e=y(this);setTimeout(function(){var t=e.data("ui-form-reset-instances");y.each(t,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element._form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var t;this.form.length&&((t=this.form.data("ui-form-reset-instances")).splice(y.inArray(this,t),1),t.length?this.form.data("ui-form-reset-instances",t):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}};y.expr.pseudos||(y.expr.pseudos=y.expr[":"]),y.uniqueSort||(y.uniqueSort=y.unique),y.escapeSelector||(e=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,d=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},y.escapeSelector=function(t){return(t+"").replace(e,d)}),y.fn.even&&y.fn.odd||y.fn.extend({even:function(){
+return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}});y.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},y.fn.labels=function(){var t,e,i;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(i=(i=this.eq(0).parents().last()).add((i.length?i:this).siblings()),t="label[for='"+y.escapeSelector(t)+"']",e=e.add(i.find(t).addBack(t))),this.pushStack(e)):this.pushStack([])},y.fn.scrollParent=function(t){var e=this.css("position"),i="absolute"===e,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,t=this.parents().filter(function(){var t=y(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==e&&t.length?t:y(this[0].ownerDocument||document)},y.extend(y.expr.pseudos,{tabbable:function(t){
+var e=y.attr(t,"tabindex"),i=null!=e;return(!i||0<=e)&&y.ui.focusable(t,i)}}),y.fn.extend({uniqueId:(c=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++c)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&y(this).removeAttr("id")})}}),y.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var c,f=!1;y(document).on("mouseup",function(){f=!1});y.widget("ui.mouse",{version:"1.13.2",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===y.data(t.target,e.widgetName+".preventClickEvent"))return y.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off(
+"mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!f){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&y(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===y.data(t.target,this.widgetName+".preventClickEvent")&&y.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),f=!0)):!0}},
+_mouseMove:function(t){if(this._mouseMoved){if(y.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&y.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),
+delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,f=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n<o.length;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}};y.widget("ui.resizable",y.ui.mouse,{version:"1.13.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,
+handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(t,e){if("hidden"===y(t).css("overflow"))return!1;var i=e&&"left"===e?"scrollLeft":"scrollTop",e=!1;if(0<t[i])return!0;try{t[i]=1,e=0<t[i],t[i]=0}catch(t){}return e},_create:function(){var t,e=this.options,i=this;this._addClass("ui-resizable"),y.extend(this,{_aspectRatio:!!e.aspectRatio,aspectRatio:e.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:e.helper||e.ghost||e.animate?e.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(y("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),
+this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t
+).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(
+","),this.handles={},e=0;e<i.length;e++)s="ui-resizable-"+(t=String.prototype.trim.call(i[e])),n=y("<div>"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(
+this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{
+width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),
+!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){
+this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),s<n.maxWidth&&(n.maxWidth=s),t<n.maxHeight&&(n.maxHeight=t)
+),this._vBoundaries=n},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height
+,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({
+height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,e=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||y("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,
+i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left
+)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e
+){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),
+i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth(
+)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,
+function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0
+]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidth<d,g=i.maxHeight&&i.maxHeight<c,m=i.minWidth&&i.minWidth>d,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0<c-l?(e.size.height=c,e.position.top=o.top-p):(c=l-t.height,e.size.height=c,e.position.top=o.top+n.height-c),0<d-r?(e.size.width=d,e.position.left=o.left-u):(d=r-t.width,e.size.width=d,e.position.left=o.left+n.width-d))}});y.ui.resizable});
+/**
+ * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
+ * Licensed under MIT
+ * @author Ariel Flesler
+ * @version 2.1.2
+ */(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"===typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9e9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case"number":case"string":if(
+/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e=h(e);break}e=l?$(e):$(e,q);case"object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&&"%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};
+$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()},set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
+/*!
+ PowerTip v1.3.1 (2018-04-15)
+ https://stevenbenner.github.io/jquery-powertip/
+ Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
+ Released under MIT license.
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
+*/
+(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$("body");var DATA_DISPLAYCONTROLLER="displayController",DATA_HASACTIVEHOVER="hasActiveHover",DATA_FORCEDOPEN="forcedOpen",DATA_HASMOUSEMOVE="hasMouseMove",DATA_MOUSEONTOTIP="mouseOnToPopup",DATA_ORIGINALTITLE="originalTitle",DATA_POWERTIP="powertip",DATA_POWERTIPJQ="powertipjq",DATA_POWERTIPTARGET="powertiptarget",EVENT_NAMESPACE=".powertip",RAD2DEG=180/Math.PI,MOUSE_EVENTS=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave","contextmenu"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,
+delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)==="string"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr("title");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr("title")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-1){
+targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se",
+"n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(
+session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}
+closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;
+openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split("-")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case"n":coords.set("left",position.left-tipWidth/2
+);coords.set("bottom",session.windowHeight-position.top+offset);break;case"e":coords.set("left",position.left+offset);coords.set("top",position.top-tipHeight/2);break;case"s":coords.set("left",position.left-tipWidth/2);coords.set("top",position.top+offset);break;case"w":coords.set("top",position.top-tipHeight/2);coords.set("right",session.windowWidth-position.left+offset);break;case"nw":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"nw-alt":coords.set("left",position.left);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne":coords.set("left",position.left-20);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne-alt":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left);break;case"sw":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"sw-alt":coords.set("left",
+position.left);coords.set("top",position.top+offset);break;case"se":coords.set("left",position.left-20);coords.set("top",position.top+offset);break;case"se-alt":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case"n":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case"e":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case"s":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case"w":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case"nw":left=objectOffset.left;top=objectOffset.top;break;case"ne":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case"sw":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case"se":left=objectOffset.left+objectWidth;
+top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest("svg")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=["nw","n","ne","e","se","s","sw","w"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(
+placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$("#"+options.popupId);if(tipElement.length===0){tipElement=$("<div/>",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(
+session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,
+function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);
+tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,
+finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));
+return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}
+function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),
+elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,
+viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});
+/*!
+ * jQuery UI Touch Punch 0.2.3
+ *
+ * Copyright 2011–2014, Dave Furfero
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Depends:
+ *  jquery.ui.widget.js
+ *  jquery.ui.mouse.js
+ */!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,
+"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);
+/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
+ * http://www.smartmenus.org/
+ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),
+mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend(
+$.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(
+this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData(
+"smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id"
+).indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(
+this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(
+var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){
+return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((
+!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(
+this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0
+]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass(
+"highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){
+t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]"
+)||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){
+t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),
+a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(
+e.wheelDelta||-e.detail)>0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,
+downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2)
+)&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t
+)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),
+canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},
+rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}
+return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,
+bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$});
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8cpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..f925ba6efbcf5585212f58c7a96e8f2762dee465
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8cpp.html
@@ -0,0 +1,206 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: learn_environment.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">learn_environment.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="learn__environment_8hpp_source.html">learn_environment/learn_environment.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task__manager_8hpp_source.html">learn_environment/task_manager.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task__ui_8hpp_source.html">learn_environment/task_ui.hpp</a>&quot;</code><br />
+<code>#include &lt;pluginlib/class_list_macros.hpp&gt;</code><br />
+<code>#include &lt;QMainWindow&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for learn_environment.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="learn__environment_8cpp__incl.png" border="0" usemap="#alearn__environment_8cpp" alt=""/></div>
+<map name="alearn__environment_8cpp" id="alearn__environment_8cpp">
+<area shape="rect" title=" " alt="" coords="1357,5,1509,32"/>
+<area shape="rect" href="learn__environment_8hpp.html" title=" " alt="" coords="1120,80,1279,123"/>
+<area shape="poly" title=" " alt="" coords="1397,35,1275,77,1273,72,1396,30"/>
+<area shape="rect" href="task__manager_8hpp.html" title=" " alt="" coords="1190,245,1318,272"/>
+<area shape="poly" title=" " alt="" coords="1435,33,1432,65,1423,108,1407,156,1380,199,1350,224,1316,242,1314,237,1347,220,1376,196,1402,154,1418,107,1426,64,1430,32"/>
+<area shape="rect" href="task__ui_8hpp.html" title=" " alt="" coords="690,171,778,197"/>
+<area shape="poly" title=" " alt="" coords="1357,35,1239,56,1108,83,934,127,791,168,789,163,933,122,1107,77,1238,50,1356,30"/>
+<area shape="rect" title=" " alt="" coords="1470,80,1598,123"/>
+<area shape="poly" title=" " alt="" coords="1450,30,1498,68,1495,72,1447,35"/>
+<area shape="rect" title=" " alt="" coords="1622,88,1729,115"/>
+<area shape="poly" title=" " alt="" coords="1472,30,1624,80,1622,85,1470,35"/>
+<area shape="rect" title=" " alt="" coords="878,171,966,197"/>
+<area shape="poly" title=" " alt="" coords="1129,126,981,168,980,163,1127,121"/>
+<area shape="rect" title=" " alt="" coords="1190,171,1345,197"/>
+<area shape="poly" title=" " alt="" coords="1219,122,1249,157,1245,160,1215,125"/>
+<area shape="poly" title=" " alt="" coords="1281,116,1324,136,1343,151,1359,169,1364,181,1364,192,1353,211,1332,228,1306,241,1304,236,1329,223,1349,208,1359,190,1359,182,1355,172,1340,155,1321,140,1278,120"/>
+<area shape="rect" title=" " alt="" coords="1369,395,1438,421"/>
+<area shape="poly" title=" " alt="" coords="1281,115,1333,135,1358,150,1380,169,1414,210,1432,250,1437,294,1430,347,1419,381,1414,380,1425,346,1432,294,1427,251,1409,213,1376,173,1355,154,1331,140,1279,120"/>
+<area shape="poly" title=" " alt="" coords="1120,119,794,175,793,170,1119,114"/>
+<area shape="rect" title=" " alt="" coords="942,320,1014,347"/>
+<area shape="poly" title=" " alt="" coords="1120,116,964,143,900,158,879,166,868,172,859,190,858,208,864,227,876,245,910,280,947,309,943,313,906,284,872,249,859,229,853,209,854,188,864,169,877,161,899,153,963,137,1119,111"/>
+<area shape="rect" href="notebook__converter_8hpp.html" title=" " alt="" coords="1549,320,1709,347"/>
+<area shape="poly" title=" " alt="" coords="1280,100,1338,105,1403,116,1468,137,1528,168,1561,199,1588,235,1608,272,1622,304,1617,306,1603,275,1583,238,1557,203,1525,173,1466,142,1401,121,1338,110,1280,105"/>
+<area shape="rect" title=" " alt="" coords="990,171,1070,197"/>
+<area shape="poly" title=" " alt="" coords="1157,126,1072,166,1069,161,1155,121"/>
+<area shape="rect" title=" " alt="" coords="1094,171,1166,197"/>
+<area shape="poly" title=" " alt="" coords="1184,125,1153,161,1149,157,1180,122"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="1105,395,1176,421"/>
+<area shape="poly" title=" " alt="" coords="1238,274,1212,295,1187,322,1168,351,1154,381,1149,379,1163,349,1183,318,1209,291,1235,270"/>
+<area shape="rect" title=" " alt="" coords="1204,469,1272,496"/>
+<area shape="poly" title=" " alt="" coords="1250,274,1239,295,1231,321,1227,356,1228,392,1235,454,1230,454,1222,392,1222,356,1226,319,1235,293,1245,271"/>
+<area shape="rect" title=" " alt="" coords="938,469,1051,496"/>
+<area shape="poly" title=" " alt="" coords="1234,275,1165,322,1082,395,1018,460,1014,456,1079,391,1162,318,1231,270"/>
+<area shape="rect" href="task__executor_8hpp.html" title=" " alt="" coords="1241,320,1369,347"/>
+<area shape="poly" title=" " alt="" coords="1265,271,1290,306,1285,309,1261,274"/>
+<area shape="poly" title=" " alt="" coords="1306,270,1347,289,1366,302,1383,318,1398,348,1405,379,1400,380,1393,350,1379,322,1363,306,1344,293,1303,275"/>
+<area shape="rect" title=" " alt="" coords="1296,469,1362,496"/>
+<area shape="poly" title=" " alt="" coords="1175,419,1283,461,1281,466,1173,424"/>
+<area shape="poly" title=" " alt="" coords="1159,420,1211,458,1208,462,1156,424"/>
+<area shape="poly" title=" " alt="" coords="1116,424,1035,464,1032,460,1114,419"/>
+<area shape="rect" title=" " alt="" coords="1075,469,1180,496"/>
+<area shape="poly" title=" " alt="" coords="1141,422,1135,455,1130,454,1136,421"/>
+<area shape="poly" title=" " alt="" coords="1277,350,1185,390,1183,385,1275,345"/>
+<area shape="poly" title=" " alt="" coords="1310,347,1327,453,1322,454,1304,348"/>
+<area shape="poly" title=" " alt="" coords="1293,349,1249,386,1190,424,1128,450,1066,468,1065,463,1126,445,1188,419,1246,381,1290,345"/>
+<area shape="poly" title=" " alt="" coords="1324,345,1376,383,1373,388,1320,349"/>
+<area shape="poly" title=" " alt="" coords="779,189,1175,244,1174,249,779,194"/>
+<area shape="poly" title=" " alt="" coords="768,195,885,245,957,279,1028,318,1076,350,1117,383,1113,387,1073,355,1025,322,955,284,883,249,766,200"/>
+<area shape="poly" title=" " alt="" coords="779,187,1101,217,1331,243,1359,257,1379,272,1395,291,1409,319,1415,350,1413,380,1407,379,1409,350,1404,321,1390,294,1376,276,1356,262,1329,248,1101,223,779,192"/>
+<area shape="rect" href="sidebar_8hpp.html" title=" " alt="" coords="665,245,753,272"/>
+<area shape="poly" title=" " alt="" coords="732,199,721,231,716,230,727,197"/>
+<area shape="rect" title=" " alt="" coords="815,320,917,347"/>
+<area shape="poly" title=" " alt="" coords="747,196,847,307,843,310,743,200"/>
+<area shape="rect" title=" " alt="" coords="315,320,377,347"/>
+<area shape="poly" title=" " alt="" coords="721,200,670,237,603,274,548,294,501,304,453,311,393,322,392,317,453,305,500,298,546,289,601,270,668,233,717,196"/>
+<area shape="rect" href="execute__frame_8hpp.html" title=" " alt="" coords="192,245,324,272"/>
+<area shape="poly" title=" " alt="" coords="690,195,340,248,339,242,689,189"/>
+<area shape="rect" title=" " alt="" coords="5,320,74,347"/>
+<area shape="poly" title=" " alt="" coords="690,190,427,209,283,226,224,236,180,248,149,261,118,278,68,312,65,308,116,273,146,256,179,243,223,231,282,221,427,204,689,185"/>
+<area shape="rect" title=" " alt="" coords="374,245,468,272"/>
+<area shape="poly" title=" " alt="" coords="691,198,483,246,482,241,689,193"/>
+<area shape="rect" title=" " alt="" coords="491,245,590,272"/>
+<area shape="poly" title=" " alt="" coords="701,200,590,242,588,237,700,195"/>
+<area shape="poly" title=" " alt="" coords="720,271,755,308,778,328,805,344,879,373,957,390,1030,400,1090,404,1090,409,1029,405,956,396,877,378,802,349,775,332,751,312,716,274"/>
+<area shape="poly" title=" " alt="" coords="665,271,611,290,584,304,560,322,535,346,517,371,512,383,511,395,514,407,523,419,541,429,577,439,684,455,922,475,922,480,684,460,576,444,539,434,519,423,509,409,506,395,507,381,512,368,531,343,556,318,581,299,609,285,663,266"/>
+<area shape="rect" href="custom__list__widget_8hpp.html" title=" " alt="" coords="583,320,741,347"/>
+<area shape="poly" title=" " alt="" coords="703,274,681,308,676,306,698,271"/>
+<area shape="rect" title=" " alt="" coords="533,395,626,421"/>
+<area shape="poly" title=" " alt="" coords="668,275,611,297,588,309,574,322,568,335,566,350,571,380,566,380,561,350,563,334,569,318,584,305,609,292,666,270"/>
+<area shape="poly" title=" " alt="" coords="754,269,927,316,926,321,753,274"/>
+<area shape="poly" title=" " alt="" coords="737,270,826,311,824,315,735,275"/>
+<area shape="poly" title=" " alt="" coords="665,271,647,275,521,297,393,322,392,317,520,291,646,269,664,266"/>
+<area shape="rect" title=" " alt="" coords="402,320,458,347"/>
+<area shape="poly" title=" " alt="" coords="665,274,474,324,472,318,663,269"/>
+<area shape="poly" title=" " alt="" coords="650,349,607,386,603,382,646,345"/>
+<area shape="rect" title=" " alt="" coords="650,395,754,421"/>
+<area shape="poly" title=" " alt="" coords="671,346,690,380,686,382,667,349"/>
+<area shape="rect" title=" " alt="" coords="778,395,874,421"/>
+<area shape="poly" title=" " alt="" coords="692,345,784,385,782,390,690,350"/>
+<area shape="poly" title=" " alt="" coords="275,270,321,308,318,312,272,275"/>
+<area shape="poly" title=" " alt="" coords="221,275,90,318,88,313,219,270"/>
+<area shape="rect" title=" " alt="" coords="225,320,291,347"/>
+<area shape="poly" title=" " alt="" coords="261,273,261,304,256,304,256,273"/>
+<area shape="rect" title=" " alt="" coords="97,320,200,347"/>
+<area shape="poly" title=" " alt="" coords="241,275,182,314,179,309,238,270"/>
+<area shape="poly" title=" " alt="" coords="1632,348,1627,385,1620,405,1607,423,1590,435,1566,444,1506,460,1377,479,1376,474,1504,455,1565,439,1587,430,1603,419,1615,403,1622,383,1627,347"/>
+<area shape="poly" title=" " alt="" coords="1590,350,1454,393,1452,388,1589,345"/>
+<area shape="rect" title=" " alt="" coords="1667,395,1716,421"/>
+<area shape="poly" title=" " alt="" coords="1642,345,1673,381,1669,385,1638,349"/>
+<area shape="rect" title=" " alt="" coords="1740,395,1830,421"/>
+<area shape="poly" title=" " alt="" coords="1657,345,1745,385,1743,390,1655,350"/>
+<area shape="rect" title=" " alt="" coords="1462,395,1593,421"/>
+<area shape="poly" title=" " alt="" coords="1613,349,1559,387,1556,383,1610,345"/>
+</map>
+</div>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8cpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8cpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..b479d1a60c5cae2829b4b57bb4660046d0502c39
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8cpp__incl.map
@@ -0,0 +1,95 @@
+<map id="learn_environment.cpp" name="learn_environment.cpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="1357,5,1509,32"/>
+<area shape="rect" id="Node000002" href="$learn__environment_8hpp.html" title=" " alt="" coords="1120,80,1279,123"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="1397,35,1275,77,1273,72,1396,30"/>
+<area shape="rect" id="Node000005" href="$task__manager_8hpp.html" title=" " alt="" coords="1190,245,1318,272"/>
+<area shape="poly" id="edge54_Node000001_Node000005" title=" " alt="" coords="1435,33,1432,65,1423,108,1407,156,1380,199,1350,224,1316,242,1314,237,1347,220,1376,196,1402,154,1418,107,1426,64,1430,32"/>
+<area shape="rect" id="Node000013" href="$task__ui_8hpp.html" title=" " alt="" coords="690,171,778,197"/>
+<area shape="poly" id="edge55_Node000001_Node000013" title=" " alt="" coords="1357,35,1239,56,1108,83,934,127,791,168,789,163,933,122,1107,77,1238,50,1356,30"/>
+<area shape="rect" id="Node000035" title=" " alt="" coords="1470,80,1598,123"/>
+<area shape="poly" id="edge56_Node000001_Node000035" title=" " alt="" coords="1450,30,1498,68,1495,72,1447,35"/>
+<area shape="rect" id="Node000036" title=" " alt="" coords="1622,88,1729,115"/>
+<area shape="poly" id="edge57_Node000001_Node000036" title=" " alt="" coords="1472,30,1624,80,1622,85,1470,35"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="878,171,966,197"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="1129,126,981,168,980,163,1127,121"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="1190,171,1345,197"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="1219,122,1249,157,1245,160,1215,125"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="1281,116,1324,136,1343,151,1359,169,1364,181,1364,192,1353,211,1332,228,1306,241,1304,236,1329,223,1349,208,1359,190,1359,182,1355,172,1340,155,1321,140,1278,120"/>
+<area shape="rect" id="Node000012" title=" " alt="" coords="1369,395,1438,421"/>
+<area shape="poly" id="edge51_Node000002_Node000012" title=" " alt="" coords="1281,115,1333,135,1358,150,1380,169,1414,210,1432,250,1437,294,1430,347,1419,381,1414,380,1425,346,1432,294,1427,251,1409,213,1376,173,1355,154,1331,140,1279,120"/>
+<area shape="poly" id="edge18_Node000002_Node000013" title=" " alt="" coords="1120,119,794,175,793,170,1119,114"/>
+<area shape="rect" id="Node000019" title=" " alt="" coords="942,320,1014,347"/>
+<area shape="poly" id="edge50_Node000002_Node000019" title=" " alt="" coords="1120,116,964,143,900,158,879,166,868,172,859,190,858,208,864,227,876,245,910,280,947,309,943,313,906,284,872,249,859,229,853,209,854,188,864,169,877,161,899,153,963,137,1119,111"/>
+<area shape="rect" id="Node000029" href="$notebook__converter_8hpp.html" title=" " alt="" coords="1549,320,1709,347"/>
+<area shape="poly" id="edge44_Node000002_Node000029" title=" " alt="" coords="1280,100,1338,105,1403,116,1468,137,1528,168,1561,199,1588,235,1608,272,1622,304,1617,306,1603,275,1583,238,1557,203,1525,173,1466,142,1401,121,1338,110,1280,105"/>
+<area shape="rect" id="Node000033" title=" " alt="" coords="990,171,1070,197"/>
+<area shape="poly" id="edge52_Node000002_Node000033" title=" " alt="" coords="1157,126,1072,166,1069,161,1155,121"/>
+<area shape="rect" id="Node000034" title=" " alt="" coords="1094,171,1166,197"/>
+<area shape="poly" id="edge53_Node000002_Node000034" title=" " alt="" coords="1184,125,1153,161,1149,157,1180,122"/>
+<area shape="rect" id="Node000006" href="$task_8hpp.html" title=" " alt="" coords="1105,395,1176,421"/>
+<area shape="poly" id="edge5_Node000005_Node000006" title=" " alt="" coords="1238,274,1212,295,1187,322,1168,351,1154,381,1149,379,1163,349,1183,318,1209,291,1235,270"/>
+<area shape="rect" id="Node000008" title=" " alt="" coords="1204,469,1272,496"/>
+<area shape="poly" id="edge16_Node000005_Node000008" title=" " alt="" coords="1250,274,1239,295,1231,321,1227,356,1228,392,1235,454,1230,454,1222,392,1222,356,1226,319,1235,293,1245,271"/>
+<area shape="rect" id="Node000009" title=" " alt="" coords="938,469,1051,496"/>
+<area shape="poly" id="edge17_Node000005_Node000009" title=" " alt="" coords="1234,275,1165,322,1082,395,1018,460,1014,456,1079,391,1162,318,1231,270"/>
+<area shape="rect" id="Node000011" href="$task__executor_8hpp.html" title=" " alt="" coords="1241,320,1369,347"/>
+<area shape="poly" id="edge10_Node000005_Node000011" title=" " alt="" coords="1265,271,1290,306,1285,309,1261,274"/>
+<area shape="poly" id="edge15_Node000005_Node000012" title=" " alt="" coords="1306,270,1347,289,1366,302,1383,318,1398,348,1405,379,1400,380,1393,350,1379,322,1363,306,1344,293,1303,275"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="1296,469,1362,496"/>
+<area shape="poly" id="edge6_Node000006_Node000007" title=" " alt="" coords="1175,419,1283,461,1281,466,1173,424"/>
+<area shape="poly" id="edge7_Node000006_Node000008" title=" " alt="" coords="1159,420,1211,458,1208,462,1156,424"/>
+<area shape="poly" id="edge8_Node000006_Node000009" title=" " alt="" coords="1116,424,1035,464,1032,460,1114,419"/>
+<area shape="rect" id="Node000010" title=" " alt="" coords="1075,469,1180,496"/>
+<area shape="poly" id="edge9_Node000006_Node000010" title=" " alt="" coords="1141,422,1135,455,1130,454,1136,421"/>
+<area shape="poly" id="edge11_Node000011_Node000006" title=" " alt="" coords="1277,350,1185,390,1183,385,1275,345"/>
+<area shape="poly" id="edge13_Node000011_Node000007" title=" " alt="" coords="1310,347,1327,453,1322,454,1304,348"/>
+<area shape="poly" id="edge14_Node000011_Node000009" title=" " alt="" coords="1293,349,1249,386,1190,424,1128,450,1066,468,1065,463,1126,445,1188,419,1246,381,1290,345"/>
+<area shape="poly" id="edge12_Node000011_Node000012" title=" " alt="" coords="1324,345,1376,383,1373,388,1320,349"/>
+<area shape="poly" id="edge32_Node000013_Node000005" title=" " alt="" coords="779,189,1175,244,1174,249,779,194"/>
+<area shape="poly" id="edge31_Node000013_Node000006" title=" " alt="" coords="768,195,885,245,957,279,1028,318,1076,350,1117,383,1113,387,1073,355,1025,322,955,284,883,249,766,200"/>
+<area shape="poly" id="edge38_Node000013_Node000012" title=" " alt="" coords="779,187,1101,217,1331,243,1359,257,1379,272,1395,291,1409,319,1415,350,1413,380,1407,379,1409,350,1404,321,1390,294,1376,276,1356,262,1329,248,1101,223,779,192"/>
+<area shape="rect" id="Node000014" href="$sidebar_8hpp.html" title=" " alt="" coords="665,245,753,272"/>
+<area shape="poly" id="edge19_Node000013_Node000014" title=" " alt="" coords="732,199,721,231,716,230,727,197"/>
+<area shape="rect" id="Node000020" title=" " alt="" coords="815,320,917,347"/>
+<area shape="poly" id="edge39_Node000013_Node000020" title=" " alt="" coords="747,196,847,307,843,310,743,200"/>
+<area shape="rect" id="Node000021" title=" " alt="" coords="315,320,377,347"/>
+<area shape="poly" id="edge40_Node000013_Node000021" title=" " alt="" coords="721,200,670,237,603,274,548,294,501,304,453,311,393,322,392,317,453,305,500,298,546,289,601,270,668,233,717,196"/>
+<area shape="rect" id="Node000023" href="$execute__frame_8hpp.html" title=" " alt="" coords="192,245,324,272"/>
+<area shape="poly" id="edge33_Node000013_Node000023" title=" " alt="" coords="690,195,340,248,339,242,689,189"/>
+<area shape="rect" id="Node000024" title=" " alt="" coords="5,320,74,347"/>
+<area shape="poly" id="edge43_Node000013_Node000024" title=" " alt="" coords="690,190,427,209,283,226,224,236,180,248,149,261,118,278,68,312,65,308,116,273,146,256,179,243,223,231,282,221,427,204,689,185"/>
+<area shape="rect" id="Node000027" title=" " alt="" coords="374,245,468,272"/>
+<area shape="poly" id="edge41_Node000013_Node000027" title=" " alt="" coords="691,198,483,246,482,241,689,193"/>
+<area shape="rect" id="Node000028" title=" " alt="" coords="491,245,590,272"/>
+<area shape="poly" id="edge42_Node000013_Node000028" title=" " alt="" coords="701,200,590,242,588,237,700,195"/>
+<area shape="poly" id="edge24_Node000014_Node000006" title=" " alt="" coords="720,271,755,308,778,328,805,344,879,373,957,390,1030,400,1090,404,1090,409,1029,405,956,396,877,378,802,349,775,332,751,312,716,274"/>
+<area shape="poly" id="edge30_Node000014_Node000009" title=" " alt="" coords="665,271,611,290,584,304,560,322,535,346,517,371,512,383,511,395,514,407,523,419,541,429,577,439,684,455,922,475,922,480,684,460,576,444,539,434,519,423,509,409,506,395,507,381,512,368,531,343,556,318,581,299,609,285,663,266"/>
+<area shape="rect" id="Node000015" href="$custom__list__widget_8hpp.html" title=" " alt="" coords="583,320,741,347"/>
+<area shape="poly" id="edge20_Node000014_Node000015" title=" " alt="" coords="703,274,681,308,676,306,698,271"/>
+<area shape="rect" id="Node000016" title=" " alt="" coords="533,395,626,421"/>
+<area shape="poly" id="edge29_Node000014_Node000016" title=" " alt="" coords="668,275,611,297,588,309,574,322,568,335,566,350,571,380,566,380,561,350,563,334,569,318,584,305,609,292,666,270"/>
+<area shape="poly" id="edge25_Node000014_Node000019" title=" " alt="" coords="754,269,927,316,926,321,753,274"/>
+<area shape="poly" id="edge26_Node000014_Node000020" title=" " alt="" coords="737,270,826,311,824,315,735,275"/>
+<area shape="poly" id="edge27_Node000014_Node000021" title=" " alt="" coords="665,271,647,275,521,297,393,322,392,317,520,291,646,269,664,266"/>
+<area shape="rect" id="Node000022" title=" " alt="" coords="402,320,458,347"/>
+<area shape="poly" id="edge28_Node000014_Node000022" title=" " alt="" coords="665,274,474,324,472,318,663,269"/>
+<area shape="poly" id="edge21_Node000015_Node000016" title=" " alt="" coords="650,349,607,386,603,382,646,345"/>
+<area shape="rect" id="Node000017" title=" " alt="" coords="650,395,754,421"/>
+<area shape="poly" id="edge22_Node000015_Node000017" title=" " alt="" coords="671,346,690,380,686,382,667,349"/>
+<area shape="rect" id="Node000018" title=" " alt="" coords="778,395,874,421"/>
+<area shape="poly" id="edge23_Node000015_Node000018" title=" " alt="" coords="692,345,784,385,782,390,690,350"/>
+<area shape="poly" id="edge35_Node000023_Node000021" title=" " alt="" coords="275,270,321,308,318,312,272,275"/>
+<area shape="poly" id="edge34_Node000023_Node000024" title=" " alt="" coords="221,275,90,318,88,313,219,270"/>
+<area shape="rect" id="Node000025" title=" " alt="" coords="225,320,291,347"/>
+<area shape="poly" id="edge36_Node000023_Node000025" title=" " alt="" coords="261,273,261,304,256,304,256,273"/>
+<area shape="rect" id="Node000026" title=" " alt="" coords="97,320,200,347"/>
+<area shape="poly" id="edge37_Node000023_Node000026" title=" " alt="" coords="241,275,182,314,179,309,238,270"/>
+<area shape="poly" id="edge46_Node000029_Node000007" title=" " alt="" coords="1632,348,1627,385,1620,405,1607,423,1590,435,1566,444,1506,460,1377,479,1376,474,1504,455,1565,439,1587,430,1603,419,1615,403,1622,383,1627,347"/>
+<area shape="poly" id="edge45_Node000029_Node000012" title=" " alt="" coords="1590,350,1454,393,1452,388,1589,345"/>
+<area shape="rect" id="Node000030" title=" " alt="" coords="1667,395,1716,421"/>
+<area shape="poly" id="edge47_Node000029_Node000030" title=" " alt="" coords="1642,345,1673,381,1669,385,1638,349"/>
+<area shape="rect" id="Node000031" title=" " alt="" coords="1740,395,1830,421"/>
+<area shape="poly" id="edge48_Node000029_Node000031" title=" " alt="" coords="1657,345,1745,385,1743,390,1655,350"/>
+<area shape="rect" id="Node000032" title=" " alt="" coords="1462,395,1593,421"/>
+<area shape="poly" id="edge49_Node000029_Node000032" title=" " alt="" coords="1613,349,1559,387,1556,383,1610,345"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..dfa182586189276b2a680f2d4c8279250284a250
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8cpp__incl.md5
@@ -0,0 +1 @@
+b73afd892e13b444db1e352c66ff1a5e
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8cpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8cpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..12c854b7637494853babe7f37b4cb25472765741
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8cpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..a6e310800d9baba888b6e716120651631776ce5f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp.html
@@ -0,0 +1,230 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: learn_environment.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#namespaces">Namespaces</a>  </div>
+  <div class="headertitle"><div class="title">learn_environment.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;rviz/panel.h&gt;</code><br />
+<code>#include &lt;ui_learn_environment.h&gt;</code><br />
+<code>#include &quot;<a class="el" href="task__manager_8hpp_source.html">task_manager.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task__ui_8hpp_source.html">task_ui.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="notebook__converter_8hpp_source.html">notebook_converter.hpp</a>&quot;</code><br />
+<code>#include &lt;QWidget&gt;</code><br />
+<code>#include &lt;QObject&gt;</code><br />
+<code>#include &lt;QProcess&gt;</code><br />
+<code>#include &lt;QThread&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for learn_environment.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="learn__environment_8hpp__incl.png" border="0" usemap="#alearn__environment_8hpp" alt=""/></div>
+<map name="alearn__environment_8hpp" id="alearn__environment_8hpp">
+<area shape="rect" title=" " alt="" coords="940,5,1092,32"/>
+<area shape="rect" title=" " alt="" coords="5,80,94,107"/>
+<area shape="poly" title=" " alt="" coords="940,24,789,28,585,38,350,56,109,82,109,77,350,50,584,33,789,23,940,19"/>
+<area shape="rect" title=" " alt="" coords="117,80,272,107"/>
+<area shape="poly" title=" " alt="" coords="940,28,655,50,291,83,288,83,288,78,291,77,654,44,940,23"/>
+<area shape="rect" href="task__manager_8hpp.html" title=" " alt="" coords="499,155,627,181"/>
+<area shape="poly" title=" " alt="" coords="978,35,617,152,616,147,976,30"/>
+<area shape="rect" title=" " alt="" coords="586,304,655,331"/>
+<area shape="poly" title=" " alt="" coords="940,25,842,34,724,56,662,73,601,95,543,123,488,157,459,179,437,203,431,215,429,227,431,240,438,254,465,280,499,297,536,307,570,312,570,318,535,313,497,302,462,284,434,258,426,242,423,227,426,213,433,200,456,175,485,152,540,118,599,90,661,68,723,51,841,29,939,19"/>
+<area shape="rect" href="task__ui_8hpp.html" title=" " alt="" coords="972,80,1060,107"/>
+<area shape="poly" title=" " alt="" coords="1019,33,1019,64,1014,64,1014,33"/>
+<area shape="rect" title=" " alt="" coords="1741,229,1814,256"/>
+<area shape="poly" title=" " alt="" coords="1056,30,1207,81,1400,152,1430,166,1460,179,1531,197,1590,206,1650,214,1726,226,1725,232,1649,219,1589,212,1530,202,1458,184,1427,171,1398,157,1206,86,1054,35"/>
+<area shape="rect" href="notebook__converter_8hpp.html" title=" " alt="" coords="1837,229,1998,256"/>
+<area shape="poly" title=" " alt="" coords="1068,30,1852,223,1851,228,1067,35"/>
+<area shape="rect" title=" " alt="" coords="1515,80,1594,107"/>
+<area shape="poly" title=" " alt="" coords="1093,25,1277,46,1497,77,1500,78,1499,83,1496,83,1277,52,1093,30"/>
+<area shape="rect" title=" " alt="" coords="1619,80,1690,107"/>
+<area shape="poly" title=" " alt="" coords="1093,22,1318,40,1459,56,1604,77,1603,82,1459,61,1318,45,1092,27"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="679,304,750,331"/>
+<area shape="poly" title=" " alt="" coords="578,180,693,291,689,295,574,184"/>
+<area shape="rect" title=" " alt="" coords="359,379,428,405"/>
+<area shape="poly" title=" " alt="" coords="502,184,460,202,441,215,425,231,407,263,397,298,394,333,394,363,388,363,388,333,392,297,402,261,421,228,437,211,457,198,499,179"/>
+<area shape="rect" title=" " alt="" coords="462,379,576,405"/>
+<area shape="poly" title=" " alt="" coords="506,184,468,202,452,215,438,231,431,248,430,266,434,285,442,303,467,338,494,366,490,370,463,341,438,306,429,286,425,267,426,247,434,228,448,211,465,198,504,180"/>
+<area shape="rect" href="task__executor_8hpp.html" title=" " alt="" coords="448,229,576,256"/>
+<area shape="poly" title=" " alt="" coords="556,183,532,218,527,215,552,180"/>
+<area shape="poly" title=" " alt="" coords="571,181,591,228,613,289,608,291,586,230,566,183"/>
+<area shape="rect" title=" " alt="" coords="770,379,836,405"/>
+<area shape="poly" title=" " alt="" coords="732,329,778,367,774,371,728,333"/>
+<area shape="poly" title=" " alt="" coords="679,330,667,333,443,383,442,378,666,328,678,325"/>
+<area shape="poly" title=" " alt="" coords="682,334,568,375,567,370,680,329"/>
+<area shape="rect" title=" " alt="" coords="641,379,746,405"/>
+<area shape="poly" title=" " alt="" coords="714,332,704,365,699,363,709,330"/>
+<area shape="poly" title=" " alt="" coords="548,254,666,296,664,301,547,259"/>
+<area shape="poly" title=" " alt="" coords="520,255,540,292,556,312,575,328,619,352,659,362,702,366,755,375,755,381,701,372,658,367,617,357,572,333,552,315,536,295,515,257"/>
+<area shape="poly" title=" " alt="" coords="515,256,520,363,515,363,510,257"/>
+<area shape="poly" title=" " alt="" coords="532,254,590,293,587,297,529,259"/>
+<area shape="poly" title=" " alt="" coords="972,104,643,157,642,151,971,99"/>
+<area shape="poly" title=" " alt="" coords="1062,98,1088,105,1115,115,1141,131,1161,153,1168,179,1164,210,1152,239,1138,258,1110,274,1070,287,968,305,859,314,766,318,766,313,858,309,968,300,1069,282,1108,269,1134,254,1148,236,1159,209,1163,180,1156,156,1137,135,1113,120,1086,110,1060,103"/>
+<area shape="poly" title=" " alt="" coords="972,97,919,99,856,108,790,127,759,140,730,157,696,187,669,222,648,259,633,290,628,288,643,256,664,219,692,183,727,153,756,135,788,122,855,103,919,94,972,91"/>
+<area shape="rect" href="sidebar_8hpp.html" title=" " alt="" coords="1251,155,1339,181"/>
+<area shape="poly" title=" " alt="" coords="1062,104,1236,149,1235,154,1060,109"/>
+<area shape="rect" title=" " alt="" coords="1614,229,1717,256"/>
+<area shape="poly" title=" " alt="" coords="1061,96,1193,115,1273,131,1352,152,1381,165,1409,179,1493,201,1599,225,1598,230,1492,206,1407,184,1378,170,1350,157,1271,136,1192,120,1061,102"/>
+<area shape="rect" title=" " alt="" coords="1062,229,1125,256"/>
+<area shape="poly" title=" " alt="" coords="1062,102,1104,120,1124,135,1140,153,1145,171,1141,189,1120,220,1116,217,1136,187,1140,171,1135,156,1120,139,1102,125,1060,107"/>
+<area shape="rect" href="execute__frame_8hpp.html" title=" " alt="" coords="753,155,885,181"/>
+<area shape="poly" title=" " alt="" coords="983,110,869,151,867,146,981,105"/>
+<area shape="rect" title=" " alt="" coords="753,229,821,256"/>
+<area shape="poly" title=" " alt="" coords="972,100,910,107,841,118,779,134,757,145,742,156,737,171,740,186,749,202,762,217,758,220,745,205,735,188,731,170,738,153,754,140,778,129,839,113,909,102,971,95"/>
+<area shape="rect" title=" " alt="" coords="910,155,1003,181"/>
+<area shape="poly" title=" " alt="" coords="1008,109,978,145,974,141,1004,106"/>
+<area shape="rect" title=" " alt="" coords="1026,155,1126,181"/>
+<area shape="poly" title=" " alt="" coords="1029,106,1058,141,1054,145,1025,109"/>
+<area shape="poly" title=" " alt="" coords="1285,184,1242,222,1213,242,1181,258,1146,269,1099,279,985,296,766,315,766,310,984,290,1098,274,1145,264,1179,254,1210,238,1238,218,1281,180"/>
+<area shape="poly" title=" " alt="" coords="1290,183,1264,221,1245,241,1223,258,1171,281,1101,302,926,339,741,367,591,386,591,380,740,362,925,334,1099,297,1169,276,1220,254,1242,237,1260,218,1286,180"/>
+<area shape="rect" href="custom__list__widget_8hpp.html" title=" " alt="" coords="1350,229,1509,256"/>
+<area shape="poly" title=" " alt="" coords="1320,180,1394,219,1391,224,1317,184"/>
+<area shape="rect" title=" " alt="" coords="1286,304,1379,331"/>
+<area shape="poly" title=" " alt="" coords="1301,181,1328,288,1323,290,1295,182"/>
+<area shape="poly" title=" " alt="" coords="1340,171,1506,192,1726,227,1726,232,1505,197,1339,177"/>
+<area shape="poly" title=" " alt="" coords="1340,175,1600,226,1599,231,1339,181"/>
+<area shape="poly" title=" " alt="" coords="1261,184,1140,228,1138,223,1259,179"/>
+<area shape="rect" title=" " alt="" coords="1533,229,1590,256"/>
+<area shape="poly" title=" " alt="" coords="1340,178,1519,226,1518,232,1339,183"/>
+<area shape="poly" title=" " alt="" coords="1414,259,1362,297,1359,293,1411,254"/>
+<area shape="rect" title=" " alt="" coords="1403,304,1507,331"/>
+<area shape="poly" title=" " alt="" coords="1436,256,1448,288,1443,290,1431,257"/>
+<area shape="rect" title=" " alt="" coords="1531,304,1626,331"/>
+<area shape="poly" title=" " alt="" coords="1457,254,1540,294,1538,299,1454,259"/>
+<area shape="poly" title=" " alt="" coords="869,179,1048,226,1047,231,868,184"/>
+<area shape="poly" title=" " alt="" coords="816,183,801,216,796,214,811,181"/>
+<area shape="rect" title=" " alt="" coords="972,229,1039,256"/>
+<area shape="poly" title=" " alt="" coords="852,179,960,221,958,226,850,184"/>
+<area shape="rect" title=" " alt="" coords="844,229,948,256"/>
+<area shape="poly" title=" " alt="" coords="834,180,874,217,870,221,830,184"/>
+<area shape="poly" title=" " alt="" coords="1923,256,1924,294,1919,315,1907,333,1890,340,1858,346,1753,357,1441,375,1097,387,851,392,851,387,1097,381,1441,370,1753,352,1857,341,1889,335,1904,329,1914,313,1919,293,1917,256"/>
+<area shape="poly" title=" " alt="" coords="1837,258,1826,259,1651,270,1502,274,1248,271,1125,270,994,274,846,285,671,307,670,301,845,280,994,269,1125,265,1248,266,1502,269,1651,265,1825,253,1837,252"/>
+<area shape="rect" title=" " alt="" coords="1968,304,2016,331"/>
+<area shape="poly" title=" " alt="" coords="1932,255,1970,291,1967,295,1929,258"/>
+<area shape="rect" title=" " alt="" coords="1650,304,1740,331"/>
+<area shape="poly" title=" " alt="" coords="1880,259,1749,301,1747,296,1878,254"/>
+<area shape="rect" title=" " alt="" coords="1763,304,1893,331"/>
+<area shape="poly" title=" " alt="" coords="1904,259,1857,296,1854,292,1900,254"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="learn__environment_8hpp__dep__incl.png" border="0" usemap="#alearn__environment_8hppdep" alt=""/></div>
+<map name="alearn__environment_8hppdep" id="alearn__environment_8hppdep">
+<area shape="rect" title=" " alt="" coords="5,5,158,32"/>
+<area shape="rect" href="learn__environment_8cpp.html" title=" " alt="" coords="5,80,158,107"/>
+<area shape="poly" title=" " alt="" coords="84,48,84,80,79,80,79,48"/>
+</map>
+</div>
+</div>
+<p><a href="learn__environment_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLearnEnvironment.html">LearnEnvironment</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A custom RViz panel for managing the learning environment.  <a href="classLearnEnvironment.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
+Namespaces</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">namespace &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceUi.html">Ui</a></td></tr>
+<tr class="memdesc:namespaceUi"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains classes generated by Qt's User Interface Compiler (uic) from .ui files. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..16dbe6e33cf8af450632bff5eb524412670fe27b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__dep__incl.map
@@ -0,0 +1,5 @@
+<map id="learn_environment.hpp" name="learn_environment.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="5,5,158,32"/>
+<area shape="rect" id="Node000002" href="$learn__environment_8cpp.html" title=" " alt="" coords="5,80,158,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="84,48,84,80,79,80,79,48"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8326ea228557dfb63f8fb6675dfd3aadaf193405
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+a9828ee65c5cca0bbb8e17809b53bf84
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..d991053f4f3686fe0b727d35528aa5d20ae7c556
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..8cdea96f744d2bc6b6414e367d3708eaebccacd8
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__incl.map
@@ -0,0 +1,87 @@
+<map id="learn_environment.hpp" name="learn_environment.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="940,5,1092,32"/>
+<area shape="rect" id="Node000002" title=" " alt="" coords="5,80,94,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="940,24,789,28,585,38,350,56,109,82,109,77,350,50,584,33,789,23,940,19"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="117,80,272,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="940,28,655,50,291,83,288,83,288,78,291,77,654,44,940,23"/>
+<area shape="rect" id="Node000004" href="$task__manager_8hpp.html" title=" " alt="" coords="499,155,627,181"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="978,35,617,152,616,147,976,30"/>
+<area shape="rect" id="Node000011" title=" " alt="" coords="586,304,655,331"/>
+<area shape="poly" id="edge50_Node000001_Node000011" title=" " alt="" coords="940,25,842,34,724,56,662,73,601,95,543,123,488,157,459,179,437,203,431,215,429,227,431,240,438,254,465,280,499,297,536,307,570,312,570,318,535,313,497,302,462,284,434,258,426,242,423,227,426,213,433,200,456,175,485,152,540,118,599,90,661,68,723,51,841,29,939,19"/>
+<area shape="rect" id="Node000012" href="$task__ui_8hpp.html" title=" " alt="" coords="972,80,1060,107"/>
+<area shape="poly" id="edge17_Node000001_Node000012" title=" " alt="" coords="1019,33,1019,64,1014,64,1014,33"/>
+<area shape="rect" id="Node000018" title=" " alt="" coords="1741,229,1814,256"/>
+<area shape="poly" id="edge49_Node000001_Node000018" title=" " alt="" coords="1056,30,1207,81,1400,152,1430,166,1460,179,1531,197,1590,206,1650,214,1726,226,1725,232,1649,219,1589,212,1530,202,1458,184,1427,171,1398,157,1206,86,1054,35"/>
+<area shape="rect" id="Node000028" href="$notebook__converter_8hpp.html" title=" " alt="" coords="1837,229,1998,256"/>
+<area shape="poly" id="edge43_Node000001_Node000028" title=" " alt="" coords="1068,30,1852,223,1851,228,1067,35"/>
+<area shape="rect" id="Node000032" title=" " alt="" coords="1515,80,1594,107"/>
+<area shape="poly" id="edge51_Node000001_Node000032" title=" " alt="" coords="1093,25,1277,46,1497,77,1500,78,1499,83,1496,83,1277,52,1093,30"/>
+<area shape="rect" id="Node000033" title=" " alt="" coords="1619,80,1690,107"/>
+<area shape="poly" id="edge52_Node000001_Node000033" title=" " alt="" coords="1093,22,1318,40,1459,56,1604,77,1603,82,1459,61,1318,45,1092,27"/>
+<area shape="rect" id="Node000005" href="$task_8hpp.html" title=" " alt="" coords="679,304,750,331"/>
+<area shape="poly" id="edge4_Node000004_Node000005" title=" " alt="" coords="578,180,693,291,689,295,574,184"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="359,379,428,405"/>
+<area shape="poly" id="edge15_Node000004_Node000007" title=" " alt="" coords="502,184,460,202,441,215,425,231,407,263,397,298,394,333,394,363,388,363,388,333,392,297,402,261,421,228,437,211,457,198,499,179"/>
+<area shape="rect" id="Node000008" title=" " alt="" coords="462,379,576,405"/>
+<area shape="poly" id="edge16_Node000004_Node000008" title=" " alt="" coords="506,184,468,202,452,215,438,231,431,248,430,266,434,285,442,303,467,338,494,366,490,370,463,341,438,306,429,286,425,267,426,247,434,228,448,211,465,198,504,180"/>
+<area shape="rect" id="Node000010" href="$task__executor_8hpp.html" title=" " alt="" coords="448,229,576,256"/>
+<area shape="poly" id="edge9_Node000004_Node000010" title=" " alt="" coords="556,183,532,218,527,215,552,180"/>
+<area shape="poly" id="edge14_Node000004_Node000011" title=" " alt="" coords="571,181,591,228,613,289,608,291,586,230,566,183"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="770,379,836,405"/>
+<area shape="poly" id="edge5_Node000005_Node000006" title=" " alt="" coords="732,329,778,367,774,371,728,333"/>
+<area shape="poly" id="edge6_Node000005_Node000007" title=" " alt="" coords="679,330,667,333,443,383,442,378,666,328,678,325"/>
+<area shape="poly" id="edge7_Node000005_Node000008" title=" " alt="" coords="682,334,568,375,567,370,680,329"/>
+<area shape="rect" id="Node000009" title=" " alt="" coords="641,379,746,405"/>
+<area shape="poly" id="edge8_Node000005_Node000009" title=" " alt="" coords="714,332,704,365,699,363,709,330"/>
+<area shape="poly" id="edge10_Node000010_Node000005" title=" " alt="" coords="548,254,666,296,664,301,547,259"/>
+<area shape="poly" id="edge12_Node000010_Node000006" title=" " alt="" coords="520,255,540,292,556,312,575,328,619,352,659,362,702,366,755,375,755,381,701,372,658,367,617,357,572,333,552,315,536,295,515,257"/>
+<area shape="poly" id="edge13_Node000010_Node000008" title=" " alt="" coords="515,256,520,363,515,363,510,257"/>
+<area shape="poly" id="edge11_Node000010_Node000011" title=" " alt="" coords="532,254,590,293,587,297,529,259"/>
+<area shape="poly" id="edge31_Node000012_Node000004" title=" " alt="" coords="972,104,643,157,642,151,971,99"/>
+<area shape="poly" id="edge30_Node000012_Node000005" title=" " alt="" coords="1062,98,1088,105,1115,115,1141,131,1161,153,1168,179,1164,210,1152,239,1138,258,1110,274,1070,287,968,305,859,314,766,318,766,313,858,309,968,300,1069,282,1108,269,1134,254,1148,236,1159,209,1163,180,1156,156,1137,135,1113,120,1086,110,1060,103"/>
+<area shape="poly" id="edge37_Node000012_Node000011" title=" " alt="" coords="972,97,919,99,856,108,790,127,759,140,730,157,696,187,669,222,648,259,633,290,628,288,643,256,664,219,692,183,727,153,756,135,788,122,855,103,919,94,972,91"/>
+<area shape="rect" id="Node000013" href="$sidebar_8hpp.html" title=" " alt="" coords="1251,155,1339,181"/>
+<area shape="poly" id="edge18_Node000012_Node000013" title=" " alt="" coords="1062,104,1236,149,1235,154,1060,109"/>
+<area shape="rect" id="Node000019" title=" " alt="" coords="1614,229,1717,256"/>
+<area shape="poly" id="edge38_Node000012_Node000019" title=" " alt="" coords="1061,96,1193,115,1273,131,1352,152,1381,165,1409,179,1493,201,1599,225,1598,230,1492,206,1407,184,1378,170,1350,157,1271,136,1192,120,1061,102"/>
+<area shape="rect" id="Node000020" title=" " alt="" coords="1062,229,1125,256"/>
+<area shape="poly" id="edge39_Node000012_Node000020" title=" " alt="" coords="1062,102,1104,120,1124,135,1140,153,1145,171,1141,189,1120,220,1116,217,1136,187,1140,171,1135,156,1120,139,1102,125,1060,107"/>
+<area shape="rect" id="Node000022" href="$execute__frame_8hpp.html" title=" " alt="" coords="753,155,885,181"/>
+<area shape="poly" id="edge32_Node000012_Node000022" title=" " alt="" coords="983,110,869,151,867,146,981,105"/>
+<area shape="rect" id="Node000023" title=" " alt="" coords="753,229,821,256"/>
+<area shape="poly" id="edge42_Node000012_Node000023" title=" " alt="" coords="972,100,910,107,841,118,779,134,757,145,742,156,737,171,740,186,749,202,762,217,758,220,745,205,735,188,731,170,738,153,754,140,778,129,839,113,909,102,971,95"/>
+<area shape="rect" id="Node000026" title=" " alt="" coords="910,155,1003,181"/>
+<area shape="poly" id="edge40_Node000012_Node000026" title=" " alt="" coords="1008,109,978,145,974,141,1004,106"/>
+<area shape="rect" id="Node000027" title=" " alt="" coords="1026,155,1126,181"/>
+<area shape="poly" id="edge41_Node000012_Node000027" title=" " alt="" coords="1029,106,1058,141,1054,145,1025,109"/>
+<area shape="poly" id="edge23_Node000013_Node000005" title=" " alt="" coords="1285,184,1242,222,1213,242,1181,258,1146,269,1099,279,985,296,766,315,766,310,984,290,1098,274,1145,264,1179,254,1210,238,1238,218,1281,180"/>
+<area shape="poly" id="edge29_Node000013_Node000008" title=" " alt="" coords="1290,183,1264,221,1245,241,1223,258,1171,281,1101,302,926,339,741,367,591,386,591,380,740,362,925,334,1099,297,1169,276,1220,254,1242,237,1260,218,1286,180"/>
+<area shape="rect" id="Node000014" href="$custom__list__widget_8hpp.html" title=" " alt="" coords="1350,229,1509,256"/>
+<area shape="poly" id="edge19_Node000013_Node000014" title=" " alt="" coords="1320,180,1394,219,1391,224,1317,184"/>
+<area shape="rect" id="Node000015" title=" " alt="" coords="1286,304,1379,331"/>
+<area shape="poly" id="edge28_Node000013_Node000015" title=" " alt="" coords="1301,181,1328,288,1323,290,1295,182"/>
+<area shape="poly" id="edge24_Node000013_Node000018" title=" " alt="" coords="1340,171,1506,192,1726,227,1726,232,1505,197,1339,177"/>
+<area shape="poly" id="edge25_Node000013_Node000019" title=" " alt="" coords="1340,175,1600,226,1599,231,1339,181"/>
+<area shape="poly" id="edge26_Node000013_Node000020" title=" " alt="" coords="1261,184,1140,228,1138,223,1259,179"/>
+<area shape="rect" id="Node000021" title=" " alt="" coords="1533,229,1590,256"/>
+<area shape="poly" id="edge27_Node000013_Node000021" title=" " alt="" coords="1340,178,1519,226,1518,232,1339,183"/>
+<area shape="poly" id="edge20_Node000014_Node000015" title=" " alt="" coords="1414,259,1362,297,1359,293,1411,254"/>
+<area shape="rect" id="Node000016" title=" " alt="" coords="1403,304,1507,331"/>
+<area shape="poly" id="edge21_Node000014_Node000016" title=" " alt="" coords="1436,256,1448,288,1443,290,1431,257"/>
+<area shape="rect" id="Node000017" title=" " alt="" coords="1531,304,1626,331"/>
+<area shape="poly" id="edge22_Node000014_Node000017" title=" " alt="" coords="1457,254,1540,294,1538,299,1454,259"/>
+<area shape="poly" id="edge34_Node000022_Node000020" title=" " alt="" coords="869,179,1048,226,1047,231,868,184"/>
+<area shape="poly" id="edge33_Node000022_Node000023" title=" " alt="" coords="816,183,801,216,796,214,811,181"/>
+<area shape="rect" id="Node000024" title=" " alt="" coords="972,229,1039,256"/>
+<area shape="poly" id="edge35_Node000022_Node000024" title=" " alt="" coords="852,179,960,221,958,226,850,184"/>
+<area shape="rect" id="Node000025" title=" " alt="" coords="844,229,948,256"/>
+<area shape="poly" id="edge36_Node000022_Node000025" title=" " alt="" coords="834,180,874,217,870,221,830,184"/>
+<area shape="poly" id="edge45_Node000028_Node000006" title=" " alt="" coords="1923,256,1924,294,1919,315,1907,333,1890,340,1858,346,1753,357,1441,375,1097,387,851,392,851,387,1097,381,1441,370,1753,352,1857,341,1889,335,1904,329,1914,313,1919,293,1917,256"/>
+<area shape="poly" id="edge44_Node000028_Node000011" title=" " alt="" coords="1837,258,1826,259,1651,270,1502,274,1248,271,1125,270,994,274,846,285,671,307,670,301,845,280,994,269,1125,265,1248,266,1502,269,1651,265,1825,253,1837,252"/>
+<area shape="rect" id="Node000029" title=" " alt="" coords="1968,304,2016,331"/>
+<area shape="poly" id="edge46_Node000028_Node000029" title=" " alt="" coords="1932,255,1970,291,1967,295,1929,258"/>
+<area shape="rect" id="Node000030" title=" " alt="" coords="1650,304,1740,331"/>
+<area shape="poly" id="edge47_Node000028_Node000030" title=" " alt="" coords="1880,259,1749,301,1747,296,1878,254"/>
+<area shape="rect" id="Node000031" title=" " alt="" coords="1763,304,1893,331"/>
+<area shape="poly" id="edge48_Node000028_Node000031" title=" " alt="" coords="1904,259,1857,296,1854,292,1900,254"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..e00247ac73d3df6c974765b64e2eaf1fd6c09021
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__incl.md5
@@ -0,0 +1 @@
+246a18b44b60ba150b5ab25a594bf58c
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..4d0fd51607eea2f2c92f4831c0740cccae5e2f39
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..f7f09623cdf35ffdb1e58e90eeddd0267ed56c8c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/learn__environment_8hpp_source.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: learn_environment.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">learn_environment.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="learn__environment_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef LEARN_ENVIRONMENT_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define LEARN_ENVIRONMENT_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &lt;rviz/panel.h&gt;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include &lt;ui_learn_environment.h&gt;</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="preprocessor">#include &quot;<a class="code" href="task__manager_8hpp.html">task_manager.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &quot;<a class="code" href="task__ui_8hpp.html">task_ui.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &quot;<a class="code" href="notebook__converter_8hpp.html">notebook_converter.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span> </div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#include &lt;QWidget&gt;</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="preprocessor">#include &lt;QObject&gt;</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="preprocessor">#include &lt;QProcess&gt;</span></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="preprocessor">#include &lt;QThread&gt;</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span>QT_BEGIN_NAMESPACE</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceUi.html">Ui</a> {</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>    <span class="keyword">class </span><a class="code hl_class" href="classLearnEnvironment.html">LearnEnvironment</a>;</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>}</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>QT_END_NAMESPACE</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="foldopen" id="foldopen00036" data-start="{" data-end="};">
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="classLearnEnvironment.html">   36</a></span><span class="keyword">class </span><a class="code hl_class" href="classLearnEnvironment.html">LearnEnvironment</a> : <span class="keyword">public</span> rviz::Panel</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>{</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>    Q_OBJECT</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span> </div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>    <a class="code hl_function" href="classLearnEnvironment.html#a25d7b0bd7b4270c7c2feeab3a9450d39">LearnEnvironment</a>(<a class="code hl_class" href="classQWidget.html">QWidget</a> *parent = 0);</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span>    <a class="code hl_function" href="classLearnEnvironment.html#ad2086d08e20cef426a861e1093cfc987">~LearnEnvironment</a>();</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span> </div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classLearnEnvironment.html#af0c2b95f5853116a09c795d33eb47d52">load</a>(<span class="keyword">const</span> rviz::Config &amp;config) <span class="keyword">override</span>;</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span> </div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>    <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classLearnEnvironment.html#aa684f56e6ba08652e1ddfa47304eb449">save</a>(rviz::Config config) <span class="keyword">const override</span>;</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span> </div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span>    Ui::LearnEnvironment *ui; </div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>    <a class="code hl_class" href="classTaskManager.html">TaskManager</a> *taskManager; </div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>    <a class="code hl_class" href="classTaskUI.html">TaskUI</a> *taskUI; </div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span>    QProcess *process; </div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span> </div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span>    <a class="code hl_class" href="classNotebookConverter.html">NotebookConverter</a> *notebookConverter; </div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>    QThread *notebookThread; </div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span> </div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>    <span class="keywordtype">void</span> initialize();</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span>};</div>
+</div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span> </div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span><span class="preprocessor">#endif </span><span class="comment">// LEARN_ENVIRONMENT_HPP</span></div>
+<div class="ttc" id="aclassLearnEnvironment_html"><div class="ttname"><a href="classLearnEnvironment.html">LearnEnvironment</a></div><div class="ttdoc">A custom RViz panel for managing the learning environment.</div><div class="ttdef"><b>Definition</b> learn_environment.hpp:37</div></div>
+<div class="ttc" id="aclassLearnEnvironment_html_a25d7b0bd7b4270c7c2feeab3a9450d39"><div class="ttname"><a href="classLearnEnvironment.html#a25d7b0bd7b4270c7c2feeab3a9450d39">LearnEnvironment::LearnEnvironment</a></div><div class="ttdeci">LearnEnvironment(QWidget *parent=0)</div><div class="ttdoc">Constructs a LearnEnvironment object.</div><div class="ttdef"><b>Definition</b> learn_environment.cpp:8</div></div>
+<div class="ttc" id="aclassLearnEnvironment_html_aa684f56e6ba08652e1ddfa47304eb449"><div class="ttname"><a href="classLearnEnvironment.html#aa684f56e6ba08652e1ddfa47304eb449">LearnEnvironment::save</a></div><div class="ttdeci">virtual void save(rviz::Config config) const override</div><div class="ttdoc">Saves user-specific settings.</div><div class="ttdef"><b>Definition</b> learn_environment.cpp:63</div></div>
+<div class="ttc" id="aclassLearnEnvironment_html_ad2086d08e20cef426a861e1093cfc987"><div class="ttname"><a href="classLearnEnvironment.html#ad2086d08e20cef426a861e1093cfc987">LearnEnvironment::~LearnEnvironment</a></div><div class="ttdeci">~LearnEnvironment()</div><div class="ttdoc">Destroys the LearnEnvironment object.</div><div class="ttdef"><b>Definition</b> learn_environment.cpp:21</div></div>
+<div class="ttc" id="aclassLearnEnvironment_html_af0c2b95f5853116a09c795d33eb47d52"><div class="ttname"><a href="classLearnEnvironment.html#af0c2b95f5853116a09c795d33eb47d52">LearnEnvironment::load</a></div><div class="ttdeci">virtual void load(const rviz::Config &amp;config) override</div><div class="ttdoc">Loads user-specific settings.</div><div class="ttdef"><b>Definition</b> learn_environment.cpp:59</div></div>
+<div class="ttc" id="aclassNotebookConverter_html"><div class="ttname"><a href="classNotebookConverter.html">NotebookConverter</a></div><div class="ttdoc">A class for converting Jupyter notebooks to Python scripts and processing task pools.</div><div class="ttdef"><b>Definition</b> notebook_converter.hpp:23</div></div>
+<div class="ttc" id="aclassQWidget_html"><div class="ttname"><a href="classQWidget.html">QWidget</a></div></div>
+<div class="ttc" id="aclassTaskManager_html"><div class="ttname"><a href="classTaskManager.html">TaskManager</a></div><div class="ttdoc">Manages tasks and their execution within the application.</div><div class="ttdef"><b>Definition</b> task_manager.hpp:21</div></div>
+<div class="ttc" id="aclassTaskUI_html"><div class="ttname"><a href="classTaskUI.html">TaskUI</a></div><div class="ttdoc">Manages the user interface for tasks and subtasks.</div><div class="ttdef"><b>Definition</b> task_ui.hpp:24</div></div>
+<div class="ttc" id="anamespaceUi_html"><div class="ttname"><a href="namespaceUi.html">Ui</a></div><div class="ttdoc">Contains classes generated by Qt's User Interface Compiler (uic) from .ui files.</div></div>
+<div class="ttc" id="anotebook__converter_8hpp_html"><div class="ttname"><a href="notebook__converter_8hpp.html">notebook_converter.hpp</a></div></div>
+<div class="ttc" id="atask__manager_8hpp_html"><div class="ttname"><a href="task__manager_8hpp.html">task_manager.hpp</a></div></div>
+<div class="ttc" id="atask__ui_8hpp_html"><div class="ttname"><a href="task__ui_8hpp.html">task_ui.hpp</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/menu.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/menu.js
new file mode 100644
index 0000000000000000000000000000000000000000..0fd1e990132c2a5cf8dc6114c000a163fdd8e7f1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/menu.js
@@ -0,0 +1,134 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
+function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) {
+  function makeTree(data,relPath) {
+    let result='';
+    if ('children' in data) {
+      result+='<ul>';
+      for (let i in data.children) {
+        let url;
+        const link = data.children[i].url;
+        if (link.substring(0,1)=='^') {
+          url = link.substring(1);
+        } else {
+          url = relPath+link;
+        }
+        result+='<li><a href="'+url+'">'+
+                                data.children[i].text+'</a>'+
+                                makeTree(data.children[i],relPath)+'</li>';
+      }
+      result+='</ul>';
+    }
+    return result;
+  }
+  let searchBoxHtml;
+  if (searchEnabled) {
+    if (serverSide) {
+      searchBoxHtml='<div id="MSearchBox" class="MSearchBoxInactive">'+
+                 '<div class="left">'+
+                  '<form id="FSearchBox" action="'+relPath+searchPage+
+                    '" method="get"><span id="MSearchSelectExt">&#160;</span>'+
+                  '<input type="text" id="MSearchField" name="query" value="" placeholder="'+search+
+                    '" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)"'+
+                    ' onblur="searchBox.OnSearchFieldFocus(false)"/>'+
+                  '</form>'+
+                 '</div>'+
+                 '<div class="right"></div>'+
+                '</div>';
+    } else {
+      searchBoxHtml='<div id="MSearchBox" class="MSearchBoxInactive">'+
+                 '<span class="left">'+
+                  '<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()"'+
+                     ' onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>'+
+                  '<input type="text" id="MSearchField" value="" placeholder="'+search+
+                    '" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" '+
+                    'onblur="searchBox.OnSearchFieldFocus(false)" '+
+                    'onkeyup="searchBox.OnSearchFieldChange(event)"/>'+
+                 '</span>'+
+                 '<span class="right"><a id="MSearchClose" '+
+                  'href="javascript:searchBox.CloseResultsWindow()">'+
+                  '<img id="MSearchCloseImg" border="0" src="'+relPath+
+                  'search/close.svg" alt=""/></a>'+
+                 '</span>'+
+                '</div>';
+    }
+  }
+
+  $('#main-nav').before('<div class="sm sm-dox"><input id="main-menu-state" type="checkbox"/>'+
+                        '<label class="main-menu-btn" for="main-menu-state">'+
+                        '<span class="main-menu-btn-icon"></span> '+
+                        'Toggle main menu visibility</label>'+
+                        '<span id="searchBoxPos1" style="position:absolute;right:8px;top:8px;height:36px;"></span>'+
+                        '</div>');
+  $('#main-nav').append(makeTree(menudata,relPath));
+  $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
+  if (searchBoxHtml) {
+    $('#main-menu').append('<li id="searchBoxPos2" style="float:right"></li>');
+  }
+  const $mainMenuState = $('#main-menu-state');
+  let prevWidth = 0;
+  if ($mainMenuState.length) {
+    const initResizableIfExists = function() {
+      if (typeof initResizable==='function') initResizable(treeview);
+    }
+    // animate mobile menu
+    $mainMenuState.change(function() {
+      const $menu = $('#main-menu');
+      let options = { duration: 250, step: initResizableIfExists };
+      if (this.checked) {
+        options['complete'] = () => $menu.css('display', 'block');
+        $menu.hide().slideDown(options);
+      } else {
+        options['complete'] = () => $menu.css('display', 'none');
+        $menu.show().slideUp(options);
+      }
+    });
+    // set default menu visibility
+    const resetState = function() {
+      const $menu = $('#main-menu');
+      const newWidth = $(window).outerWidth();
+      if (newWidth!=prevWidth) {
+        if ($(window).outerWidth()<768) {
+          $mainMenuState.prop('checked',false); $menu.hide();
+          $('#searchBoxPos1').html(searchBoxHtml);
+          $('#searchBoxPos2').hide();
+        } else {
+          $menu.show();
+          $('#searchBoxPos1').empty();
+          $('#searchBoxPos2').html(searchBoxHtml);
+          $('#searchBoxPos2').show();
+        }
+        if (typeof searchBox!=='undefined') {
+          searchBox.CloseResultsWindow();
+        }
+        prevWidth = newWidth;
+      }
+    }
+    $(window).ready(function() { resetState(); initResizableIfExists(); });
+    $(window).resize(resetState);
+  }
+  $('#main-menu').smartmenus();
+}
+/* @license-end */
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/menudata.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/menudata.js
new file mode 100644
index 0000000000000000000000000000000000000000..47a6f194820553440c929693568f38743d9b6530
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/menudata.js
@@ -0,0 +1,80 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+*/
+var menudata={children:[
+{text:"Main Page",url:"index.html"},
+{text:"Namespaces",url:"namespaces.html",children:[
+{text:"Namespace List",url:"namespaces.html"},
+{text:"Namespace Members",url:"namespacemembers.html",children:[
+{text:"All",url:"namespacemembers.html"},
+{text:"Functions",url:"namespacemembers_func.html"},
+{text:"Variables",url:"namespacemembers_vars.html"}]}]},
+{text:"Classes",url:"annotated.html",children:[
+{text:"Class List",url:"annotated.html"},
+{text:"Class Index",url:"classes.html"},
+{text:"Class Hierarchy",url:"inherits.html"},
+{text:"Class Members",url:"functions.html",children:[
+{text:"All",url:"functions.html",children:[
+{text:"c",url:"functions.html#index_c"},
+{text:"d",url:"functions.html#index_d"},
+{text:"e",url:"functions.html#index_e"},
+{text:"f",url:"functions.html#index_f"},
+{text:"g",url:"functions.html#index_g"},
+{text:"h",url:"functions.html#index_h"},
+{text:"i",url:"functions.html#index_i"},
+{text:"l",url:"functions.html#index_l"},
+{text:"m",url:"functions.html#index_m"},
+{text:"n",url:"functions.html#index_n"},
+{text:"o",url:"functions.html#index_o"},
+{text:"p",url:"functions.html#index_p"},
+{text:"r",url:"functions.html#index_r"},
+{text:"s",url:"functions.html#index_s"},
+{text:"t",url:"functions.html#index_t"},
+{text:"u",url:"functions.html#index_u"},
+{text:"~",url:"functions.html#index__7E"}]},
+{text:"Functions",url:"functions_func.html",children:[
+{text:"c",url:"functions_func.html#index_c"},
+{text:"e",url:"functions_func.html#index_e"},
+{text:"f",url:"functions_func.html#index_f"},
+{text:"g",url:"functions_func.html#index_g"},
+{text:"h",url:"functions_func.html#index_h"},
+{text:"i",url:"functions_func.html#index_i"},
+{text:"l",url:"functions_func.html#index_l"},
+{text:"m",url:"functions_func.html#index_m"},
+{text:"n",url:"functions_func.html#index_n"},
+{text:"o",url:"functions_func.html#index_o"},
+{text:"p",url:"functions_func.html#index_p"},
+{text:"r",url:"functions_func.html#index_r"},
+{text:"s",url:"functions_func.html#index_s"},
+{text:"t",url:"functions_func.html#index_t"},
+{text:"u",url:"functions_func.html#index_u"},
+{text:"~",url:"functions_func.html#index__7E"}]},
+{text:"Variables",url:"functions_vars.html"}]}]},
+{text:"Files",url:"files.html",children:[
+{text:"File List",url:"files.html"},
+{text:"File Members",url:"globals.html",children:[
+{text:"All",url:"globals.html"},
+{text:"Variables",url:"globals_vars.html"},
+{text:"Typedefs",url:"globals_type.html"},
+{text:"Enumerations",url:"globals_enum.html"}]}]}]}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/minus.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/minus.svg
new file mode 100644
index 0000000000000000000000000000000000000000..f70d0c1a183d0c0323f4d5cdb48456711103d039
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/minus.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="12px" height="12px" viewBox="0 0 105.83333 105.83333" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
+  <g>
+    <rect style="fill:#808080;stroke-width:0" width="105.83333" height="105.83334" x="4.2409692e-08" y="-1.2701158e-06" ry="0" />
+    <rect style="fill:#fcfcfc;stroke-width:0" width="79.375" height="79.375" x="13.229166" y="13.229166" />
+    <rect style="fill:#808080;stroke-width:0" width="52.916668" height="15.874998" x="26.458332" y="44.979168" />
+  </g>
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/minusd.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/minusd.svg
new file mode 100644
index 0000000000000000000000000000000000000000..5f8e879628d5bd6c15329554c21f40ad710e86c3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/minusd.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="12px" height="12px" viewBox="0 0 105.83333 105.83333" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
+  <g>
+    <rect style="fill:#808080;stroke-width:0" width="105.83333" height="105.83334" x="4.2409692e-08" y="-1.2701158e-06" ry="0" />
+    <rect style="fill:#000000;stroke-width:0" width="79.375" height="79.375" x="13.229166" y="13.229166" />
+    <rect style="fill:#808080;stroke-width:0" width="52.916668" height="15.874998" x="26.458332" y="44.979168" />
+  </g>
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceFolderStructureConstants.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceFolderStructureConstants.html
new file mode 100644
index 0000000000000000000000000000000000000000..07f33531fd8f6e3b75c38c18cc3e7b5e361a8ac0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceFolderStructureConstants.html
@@ -0,0 +1,406 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: FolderStructureConstants Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#func-members">Functions</a> &#124;
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle"><div class="title">FolderStructureConstants Namespace Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Contains constants related to the folder structure of the learn_environment package.  
+<a href="#details">More...</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:aa49dbebb86fde82b617e7db1193bd720" id="r_aa49dbebb86fde82b617e7db1193bd720"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa49dbebb86fde82b617e7db1193bd720">getPackagePath</a> ()</td></tr>
+<tr class="memdesc:aa49dbebb86fde82b617e7db1193bd720"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the path of the package.  <br /></td></tr>
+<tr class="separator:aa49dbebb86fde82b617e7db1193bd720"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a82483c09d34f6dbea6451b921b231c5a" id="r_a82483c09d34f6dbea6451b921b231c5a"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a82483c09d34f6dbea6451b921b231c5a">CONVERTED_SCRIPT_PATH</a> = &quot;/converter/converted.py&quot;</td></tr>
+<tr class="memdesc:a82483c09d34f6dbea6451b921b231c5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the converted script.  <br /></td></tr>
+<tr class="separator:a82483c09d34f6dbea6451b921b231c5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a97e2abd38a09653e626ba46a5e5e10bd" id="r_a97e2abd38a09653e626ba46a5e5e10bd"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a97e2abd38a09653e626ba46a5e5e10bd">RESET_ROBOT_SCRIPT_PATH</a> = &quot;/task_pool/reset_robot.py&quot;</td></tr>
+<tr class="memdesc:a97e2abd38a09653e626ba46a5e5e10bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the reset robot script.  <br /></td></tr>
+<tr class="separator:a97e2abd38a09653e626ba46a5e5e10bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a84dc4e92b3d05fcef00c9abb99f9f9da" id="r_a84dc4e92b3d05fcef00c9abb99f9f9da"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a84dc4e92b3d05fcef00c9abb99f9f9da">TASK_DEFINITIONS_PATH</a> = &quot;:/task_pool/task_definitions.json&quot;</td></tr>
+<tr class="memdesc:a84dc4e92b3d05fcef00c9abb99f9f9da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the task definitions json.  <br /></td></tr>
+<tr class="separator:a84dc4e92b3d05fcef00c9abb99f9f9da"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adc8fa9eae998a60723424421756bd65b" id="r_adc8fa9eae998a60723424421756bd65b"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adc8fa9eae998a60723424421756bd65b">TOPIC_DEFINITIONS_PATH</a> = &quot;:/task_pool/topic_definitions.json&quot;</td></tr>
+<tr class="memdesc:adc8fa9eae998a60723424421756bd65b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the topic definitions json.  <br /></td></tr>
+<tr class="separator:adc8fa9eae998a60723424421756bd65b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4a34d956c5883529b64e6bb183d768a7" id="r_a4a34d956c5883529b64e6bb183d768a7"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4a34d956c5883529b64e6bb183d768a7">DIFFICULTY_LEVELS_DEFINITION_PATH</a> = &quot;:/task_pool/difficulty_levels.json&quot;</td></tr>
+<tr class="separator:a4a34d956c5883529b64e6bb183d768a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae963e238a7326dd80a2401eae27c252a" id="r_ae963e238a7326dd80a2401eae27c252a"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae963e238a7326dd80a2401eae27c252a">SOLUTION_SCRIPTS_SOURCE_PATH</a> = &quot;/task_pool/solution_scripts&quot;</td></tr>
+<tr class="memdesc:ae963e238a7326dd80a2401eae27c252a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the solution scripts source directory.  <br /></td></tr>
+<tr class="separator:ae963e238a7326dd80a2401eae27c252a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afbae3ede611451504507436474ae482e" id="r_afbae3ede611451504507436474ae482e"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#afbae3ede611451504507436474ae482e">EVALUATION_SCRIPTS_SOURCE_PATH</a> = &quot;/task_pool/evaluation_scripts&quot;</td></tr>
+<tr class="memdesc:afbae3ede611451504507436474ae482e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the evaluation scripts source directory.  <br /></td></tr>
+<tr class="separator:afbae3ede611451504507436474ae482e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac7bdb4609b31965b63ac7d3ce2b197c3" id="r_ac7bdb4609b31965b63ac7d3ce2b197c3"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ac7bdb4609b31965b63ac7d3ce2b197c3">USER_WORKSPACE</a> = &quot;/tasks&quot;</td></tr>
+<tr class="memdesc:ac7bdb4609b31965b63ac7d3ce2b197c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to the user workspace directory. Adjust it in devconatiner.json if changed.  <br /></td></tr>
+<tr class="separator:ac7bdb4609b31965b63ac7d3ce2b197c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa9f54b725067dc395f26c6608161dae9" id="r_aa9f54b725067dc395f26c6608161dae9"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa9f54b725067dc395f26c6608161dae9">PACKAGE_NAME</a> = &quot;learn_environment&quot;</td></tr>
+<tr class="memdesc:aa9f54b725067dc395f26c6608161dae9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name of the package.  <br /></td></tr>
+<tr class="separator:aa9f54b725067dc395f26c6608161dae9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Contains constants related to the folder structure of the learn_environment package. </p>
+<p>This namespace provides constants for various paths used within the learn_environment package, as well as a function to retrieve the package path. </p>
+</div><h2 class="groupheader">Function Documentation</h2>
+<a id="aa49dbebb86fde82b617e7db1193bd720" name="aa49dbebb86fde82b617e7db1193bd720"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa49dbebb86fde82b617e7db1193bd720">&#9670;&#160;</a></span>getPackagePath()</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString FolderStructureConstants::getPackagePath </td>
+          <td>(</td>
+          <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Retrieves the path of the package. </p>
+<p>This function attempts to retrieve the path of the package using ROS package utilities. If an error occurs during retrieval, it logs a critical error message and returns an empty QString.</p>
+<dl class="section return"><dt>Returns</dt><dd>QString The path of the package or an empty QString if an error occurs. </dd></dl>
+<div class="dynheader">
+Here is the caller graph for this function:</div>
+<div class="dyncontent">
+<div class="center"><img src="namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.png" border="0" usemap="#anamespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph" alt=""/></div>
+<map name="anamespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph" id="anamespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph">
+<area shape="rect" title="Retrieves the path of the package." alt="" coords="491,93,661,136"/>
+<area shape="rect" href="classNotebookConverter.html#a8b06d3bc01057ddd936977bded4297f4" title="Converts a Jupyter notebook to a Python script. Ignoring code cells with &quot;solution&quot; tag." alt="" coords="280,5,422,48"/>
+<area shape="poly" title=" " alt="" coords="509,90,442,62,412,51,414,46,444,58,511,85"/>
+<area shape="rect" href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="260,72,443,99"/>
+<area shape="poly" title=" " alt="" coords="475,104,443,100,444,95,476,99"/>
+<area shape="rect" href="classNotebookConverter.html#a66b007e49cfe58d279c3ac279ced7213" title="Modifies and copies all notebooks from task_pool to users workspace." alt="" coords="280,123,422,165"/>
+<area shape="poly" title=" " alt="" coords="476,130,423,137,423,132,476,125"/>
+<area shape="rect" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="265,189,438,216"/>
+<area shape="poly" title=" " alt="" coords="521,146,444,180,409,191,407,186,442,175,519,141"/>
+<area shape="rect" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,189,212,216"/>
+<area shape="poly" title=" " alt="" coords="249,205,212,205,212,200,249,200"/>
+</map>
+</div>
+
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a id="a82483c09d34f6dbea6451b921b231c5a" name="a82483c09d34f6dbea6451b921b231c5a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a82483c09d34f6dbea6451b921b231c5a">&#9670;&#160;</a></span>CONVERTED_SCRIPT_PATH</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString FolderStructureConstants::CONVERTED_SCRIPT_PATH = &quot;/converter/converted.py&quot;</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Path to the converted script. </p>
+
+</div>
+</div>
+<a id="a4a34d956c5883529b64e6bb183d768a7" name="a4a34d956c5883529b64e6bb183d768a7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4a34d956c5883529b64e6bb183d768a7">&#9670;&#160;</a></span>DIFFICULTY_LEVELS_DEFINITION_PATH</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString FolderStructureConstants::DIFFICULTY_LEVELS_DEFINITION_PATH = &quot;:/task_pool/difficulty_levels.json&quot;</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="afbae3ede611451504507436474ae482e" name="afbae3ede611451504507436474ae482e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afbae3ede611451504507436474ae482e">&#9670;&#160;</a></span>EVALUATION_SCRIPTS_SOURCE_PATH</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString FolderStructureConstants::EVALUATION_SCRIPTS_SOURCE_PATH = &quot;/task_pool/evaluation_scripts&quot;</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Path to the evaluation scripts source directory. </p>
+
+</div>
+</div>
+<a id="aa9f54b725067dc395f26c6608161dae9" name="aa9f54b725067dc395f26c6608161dae9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa9f54b725067dc395f26c6608161dae9">&#9670;&#160;</a></span>PACKAGE_NAME</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString FolderStructureConstants::PACKAGE_NAME = &quot;learn_environment&quot;</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Name of the package. </p>
+
+</div>
+</div>
+<a id="a97e2abd38a09653e626ba46a5e5e10bd" name="a97e2abd38a09653e626ba46a5e5e10bd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a97e2abd38a09653e626ba46a5e5e10bd">&#9670;&#160;</a></span>RESET_ROBOT_SCRIPT_PATH</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString FolderStructureConstants::RESET_ROBOT_SCRIPT_PATH = &quot;/task_pool/reset_robot.py&quot;</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Path to the reset robot script. </p>
+
+</div>
+</div>
+<a id="ae963e238a7326dd80a2401eae27c252a" name="ae963e238a7326dd80a2401eae27c252a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae963e238a7326dd80a2401eae27c252a">&#9670;&#160;</a></span>SOLUTION_SCRIPTS_SOURCE_PATH</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString FolderStructureConstants::SOLUTION_SCRIPTS_SOURCE_PATH = &quot;/task_pool/solution_scripts&quot;</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Path to the solution scripts source directory. </p>
+
+</div>
+</div>
+<a id="a84dc4e92b3d05fcef00c9abb99f9f9da" name="a84dc4e92b3d05fcef00c9abb99f9f9da"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a84dc4e92b3d05fcef00c9abb99f9f9da">&#9670;&#160;</a></span>TASK_DEFINITIONS_PATH</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString FolderStructureConstants::TASK_DEFINITIONS_PATH = &quot;:/task_pool/task_definitions.json&quot;</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Path to the task definitions json. </p>
+
+</div>
+</div>
+<a id="adc8fa9eae998a60723424421756bd65b" name="adc8fa9eae998a60723424421756bd65b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adc8fa9eae998a60723424421756bd65b">&#9670;&#160;</a></span>TOPIC_DEFINITIONS_PATH</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString FolderStructureConstants::TOPIC_DEFINITIONS_PATH = &quot;:/task_pool/topic_definitions.json&quot;</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Path to the topic definitions json. </p>
+<p>Path to the difficulty definitions json. </p>
+
+</div>
+</div>
+<a id="ac7bdb4609b31965b63ac7d3ce2b197c3" name="ac7bdb4609b31965b63ac7d3ce2b197c3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac7bdb4609b31965b63ac7d3ce2b197c3">&#9670;&#160;</a></span>USER_WORKSPACE</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString FolderStructureConstants::USER_WORKSPACE = &quot;/tasks&quot;</td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Path to the user workspace directory. Adjust it in devconatiner.json if changed. </p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.map
new file mode 100644
index 0000000000000000000000000000000000000000..42b5e454b35edd48286eebe31e25ed9f08b685a7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.map
@@ -0,0 +1,13 @@
+<map id="FolderStructureConstants::getPackagePath" name="FolderStructureConstants::getPackagePath">
+<area shape="rect" id="Node000001" title="Retrieves the path of the package." alt="" coords="491,93,661,136"/>
+<area shape="rect" id="Node000002" href="$classNotebookConverter.html#a8b06d3bc01057ddd936977bded4297f4" title="Converts a Jupyter notebook to a Python script. Ignoring code cells with &quot;solution&quot; tag." alt="" coords="280,5,422,48"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="509,90,442,62,412,51,414,46,444,58,511,85"/>
+<area shape="rect" id="Node000003" href="$classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d" title="Executes a given subtask." alt="" coords="260,72,443,99"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="475,104,443,100,444,95,476,99"/>
+<area shape="rect" id="Node000004" href="$classNotebookConverter.html#a66b007e49cfe58d279c3ac279ced7213" title="Modifies and copies all notebooks from task_pool to users workspace." alt="" coords="280,123,422,165"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="476,130,423,137,423,132,476,125"/>
+<area shape="rect" id="Node000005" href="$classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc" title="Triggers python script to reset the robot to its initial state and removes all objects from the scene..." alt="" coords="265,189,438,216"/>
+<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="521,146,444,180,409,191,407,186,442,175,519,141"/>
+<area shape="rect" id="Node000006" href="$classTaskManager.html#a9a858cb5aae71b691204c8561322677e" title="Forces the reset of the robot to its initial state." alt="" coords="5,189,212,216"/>
+<area shape="poly" id="edge5_Node000005_Node000006" title=" " alt="" coords="249,205,212,205,212,200,249,200"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..6d8bf7385c1e46cff128f3b3f7c1f786cb9f25ee
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.md5
@@ -0,0 +1 @@
+cec9efb14101452b157ad1893cb68926
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.png
new file mode 100644
index 0000000000000000000000000000000000000000..9394b0978985233bb86b2dd3d26d73fee1ae0194
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceUi.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceUi.html
new file mode 100644
index 0000000000000000000000000000000000000000..d8ee822a5f4fa5da653ceff49af87e270c84b8e7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaceUi.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Ui Namespace Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">Ui Namespace Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Contains classes generated by Qt's User Interface Compiler (uic) from .ui files.  
+<a href="#details">More...</a></p>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Contains classes generated by Qt's User Interface Compiler (uic) from .ui files. </p>
+<p>The <a class="el" href="namespaceUi.html" title="Contains classes generated by Qt&#39;s User Interface Compiler (uic) from .ui files.">Ui</a> namespace is used to encapsulate classes that are automatically generated by the Qt framework from user interface definition files (.ui). These classes are responsible for setting up the UI elements as defined in the .ui files. </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespacemembers.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespacemembers.html
new file mode 100644
index 0000000000000000000000000000000000000000..81f968703695443cdab1ccdb07386921866ab1ed
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespacemembers.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Namespace Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all namespace members with links to the namespace documentation for each member:</div><ul>
+<li>CONVERTED_SCRIPT_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#a82483c09d34f6dbea6451b921b231c5a">FolderStructureConstants</a></li>
+<li>DIFFICULTY_LEVELS_DEFINITION_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#a4a34d956c5883529b64e6bb183d768a7">FolderStructureConstants</a></li>
+<li>EVALUATION_SCRIPTS_SOURCE_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#afbae3ede611451504507436474ae482e">FolderStructureConstants</a></li>
+<li>getPackagePath()&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#aa49dbebb86fde82b617e7db1193bd720">FolderStructureConstants</a></li>
+<li>PACKAGE_NAME&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#aa9f54b725067dc395f26c6608161dae9">FolderStructureConstants</a></li>
+<li>RESET_ROBOT_SCRIPT_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#a97e2abd38a09653e626ba46a5e5e10bd">FolderStructureConstants</a></li>
+<li>SOLUTION_SCRIPTS_SOURCE_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#ae963e238a7326dd80a2401eae27c252a">FolderStructureConstants</a></li>
+<li>TASK_DEFINITIONS_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#a84dc4e92b3d05fcef00c9abb99f9f9da">FolderStructureConstants</a></li>
+<li>TOPIC_DEFINITIONS_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#adc8fa9eae998a60723424421756bd65b">FolderStructureConstants</a></li>
+<li>USER_WORKSPACE&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#ac7bdb4609b31965b63ac7d3ce2b197c3">FolderStructureConstants</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespacemembers_func.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespacemembers_func.html
new file mode 100644
index 0000000000000000000000000000000000000000..d96f4c3e822265313f7cfac726f01423d45f6ae2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespacemembers_func.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Namespace Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all namespace functions with links to the namespace documentation for each function:</div><ul>
+<li>getPackagePath()&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#aa49dbebb86fde82b617e7db1193bd720">FolderStructureConstants</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespacemembers_vars.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespacemembers_vars.html
new file mode 100644
index 0000000000000000000000000000000000000000..bd67a1eaae0f9f879a05a69ed89a71dd28276c03
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespacemembers_vars.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Namespace Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="contents">
+<div class="textblock">Here is a list of all namespace variables with links to the namespace documentation for each variable:</div><ul>
+<li>CONVERTED_SCRIPT_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#a82483c09d34f6dbea6451b921b231c5a">FolderStructureConstants</a></li>
+<li>DIFFICULTY_LEVELS_DEFINITION_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#a4a34d956c5883529b64e6bb183d768a7">FolderStructureConstants</a></li>
+<li>EVALUATION_SCRIPTS_SOURCE_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#afbae3ede611451504507436474ae482e">FolderStructureConstants</a></li>
+<li>PACKAGE_NAME&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#aa9f54b725067dc395f26c6608161dae9">FolderStructureConstants</a></li>
+<li>RESET_ROBOT_SCRIPT_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#a97e2abd38a09653e626ba46a5e5e10bd">FolderStructureConstants</a></li>
+<li>SOLUTION_SCRIPTS_SOURCE_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#ae963e238a7326dd80a2401eae27c252a">FolderStructureConstants</a></li>
+<li>TASK_DEFINITIONS_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#a84dc4e92b3d05fcef00c9abb99f9f9da">FolderStructureConstants</a></li>
+<li>TOPIC_DEFINITIONS_PATH&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#adc8fa9eae998a60723424421756bd65b">FolderStructureConstants</a></li>
+<li>USER_WORKSPACE&#160;:&#160;<a class="el" href="namespaceFolderStructureConstants.html#ac7bdb4609b31965b63ac7d3ce2b197c3">FolderStructureConstants</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaces.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaces.html
new file mode 100644
index 0000000000000000000000000000000000000000..3edc9fe3f22d38342146695441765b3aae99b54a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/namespaces.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Namespace List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<div id="doc-content">
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div class="header">
+  <div class="headertitle"><div class="title">Namespace List</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all namespaces with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceFolderStructureConstants.html" target="_self">FolderStructureConstants</a></td><td class="desc">Contains constants related to the folder structure of the learn_environment package </td></tr>
+<tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespaceUi.html" target="_self">Ui</a></td><td class="desc">Contains classes generated by Qt's User Interface Compiler (uic) from .ui files </td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_f.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_f.png
new file mode 100644
index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_f.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_fd.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_fd.png
new file mode 100644
index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_fd.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_g.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_g.png
new file mode 100644
index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_g.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_h.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_h.png
new file mode 100644
index 0000000000000000000000000000000000000000..33389b101d9cd9b4c98ad286b5d9c46a6671f650
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_h.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_hd.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_hd.png
new file mode 100644
index 0000000000000000000000000000000000000000..de80f18ad6488b9990303f267a76fdc83f0ffd80
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/nav_hd.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/navtree.css b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/navtree.css
new file mode 100644
index 0000000000000000000000000000000000000000..69211d4a78a62aec03f2253c26eff8e29dd1582c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/navtree.css
@@ -0,0 +1,149 @@
+#nav-tree .children_ul {
+  margin:0;
+  padding:4px;
+}
+
+#nav-tree ul {
+  list-style:none outside none;
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree li {
+  white-space:nowrap;
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree .plus {
+  margin:0px;
+}
+
+#nav-tree .selected {
+  background-image: url('tab_a.png');
+  background-repeat:repeat-x;
+  color: var(--nav-text-active-color);
+  text-shadow: var(--nav-text-active-shadow);
+}
+
+#nav-tree .selected .arrow {
+  color: var(--nav-arrow-selected-color);
+  text-shadow: none;
+}
+
+#nav-tree img {
+  margin:0px;
+  padding:0px;
+  border:0px;
+  vertical-align: middle;
+}
+
+#nav-tree a {
+  text-decoration:none;
+  padding:0px;
+  margin:0px;
+}
+
+#nav-tree .label {
+  margin:0px;
+  padding:0px;
+  font: 12px var(--font-family-nav);
+}
+
+#nav-tree .label a {
+  padding:2px;
+}
+
+#nav-tree .selected a {
+  text-decoration:none;
+  color:var(--nav-text-active-color);
+}
+
+#nav-tree .children_ul {
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree .item {
+  margin:0px;
+  padding:0px;
+}
+
+#nav-tree {
+  padding: 0px 0px;
+  font-size:14px;
+  overflow:auto;
+}
+
+#doc-content {
+  overflow:auto;
+  display:block;
+  padding:0px;
+  margin:0px;
+  -webkit-overflow-scrolling : touch; /* iOS 5+ */
+}
+
+#side-nav {
+  padding:0 6px 0 0;
+  margin: 0px;
+  display:block;
+  position: absolute;
+  left: 0px;
+  width: $width;
+  overflow : hidden;
+}
+
+.ui-resizable .ui-resizable-handle {
+  display:block;
+}
+
+.ui-resizable-e {
+  background-image:var(--nav-splitbar-image);
+  background-size:100%;
+  background-repeat:repeat-y;
+  background-attachment: scroll;
+  cursor:ew-resize;
+  height:100%;
+  right:0;
+  top:0;
+  width:6px;
+}
+
+.ui-resizable-handle {
+  display:none;
+  font-size:0.1px;
+  position:absolute;
+  z-index:1;
+}
+
+#nav-tree-contents {
+  margin: 6px 0px 0px 0px;
+}
+
+#nav-tree {
+  background-repeat:repeat-x;
+  background-color: var(--nav-background-color);
+  -webkit-overflow-scrolling : touch; /* iOS 5+ */
+}
+
+#nav-sync {
+  position:absolute;
+  top:5px;
+  right:24px;
+  z-index:0;
+}
+
+#nav-sync img {
+  opacity:0.3;
+}
+
+#nav-sync img:hover {
+  opacity:0.9;
+}
+
+@media print
+{
+  #nav-tree { display: none; }
+  div.ui-resizable-handle { display: none; position: relative; }
+}
+
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8cpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..018083fe7945d2b671578d915aef9c9ba84a968d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8cpp.html
@@ -0,0 +1,310 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: notebook_converter.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#var-members">Variables</a>  </div>
+  <div class="headertitle"><div class="title">notebook_converter.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="notebook__converter_8hpp_source.html">learn_environment/notebook_converter.hpp</a>&quot;</code><br />
+<code>#include &lt;QFile&gt;</code><br />
+<code>#include &lt;QTextStream&gt;</code><br />
+<code>#include &lt;QDebug&gt;</code><br />
+<code>#include &lt;unordered_map&gt;</code><br />
+<code>#include &lt;nlohmann/json.hpp&gt;</code><br />
+<code>#include &quot;<a class="el" href="folder__structure__constants_8hpp_source.html">learn_environment/folder_structure_constants.hpp</a>&quot;</code><br />
+<code>#include &lt;ros/package.h&gt;</code><br />
+<code>#include &lt;ros/ros.h&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for notebook_converter.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="notebook__converter_8cpp__incl.png" border="0" usemap="#anotebook__converter_8cpp" alt=""/></div>
+<map name="anotebook__converter_8cpp" id="anotebook__converter_8cpp">
+<area shape="rect" title=" " alt="" coords="433,5,594,32"/>
+<area shape="rect" href="notebook__converter_8hpp.html" title=" " alt="" coords="421,80,606,123"/>
+<area shape="poly" title=" " alt="" coords="516,32,516,65,511,65,511,32"/>
+<area shape="rect" title=" " alt="" coords="692,171,822,197"/>
+<area shape="poly" title=" " alt="" coords="539,30,619,78,670,121,726,160,723,164,666,125,616,82,537,35"/>
+<area shape="rect" title=" " alt="" coords="680,88,733,115"/>
+<area shape="poly" title=" " alt="" coords="546,30,662,78,667,79,665,84,660,82,544,35"/>
+<area shape="rect" title=" " alt="" coords="758,88,856,115"/>
+<area shape="poly" title=" " alt="" coords="567,30,746,77,755,80,754,85,745,83,565,35"/>
+<area shape="rect" title=" " alt="" coords="5,171,75,197"/>
+<area shape="poly" title=" " alt="" coords="433,30,272,50,196,65,144,82,118,99,95,119,59,159,55,156,92,115,115,94,142,78,195,60,271,45,432,25"/>
+<area shape="rect" title=" " alt="" coords="880,88,990,115"/>
+<area shape="poly" title=" " alt="" coords="594,28,724,48,869,77,881,81,880,86,867,83,723,54,593,33"/>
+<area shape="rect" href="folder__structure__constants_8hpp.html" title=" " alt="" coords="178,80,347,123"/>
+<area shape="poly" title=" " alt="" coords="475,35,343,77,341,72,473,30"/>
+<area shape="rect" title=" " alt="" coords="99,171,202,197"/>
+<area shape="poly" title=" " alt="" coords="433,26,358,32,280,43,212,59,186,70,169,82,158,98,152,117,150,155,144,155,146,116,153,95,165,78,183,65,210,54,279,37,358,27,432,21"/>
+<area shape="rect" title=" " alt="" coords="226,171,299,197"/>
+<area shape="poly" title=" " alt="" coords="490,35,411,82,360,125,299,165,296,160,357,121,408,78,487,30"/>
+<area shape="rect" title=" " alt="" coords="413,171,483,197"/>
+<area shape="poly" title=" " alt="" coords="499,125,470,160,466,157,494,122"/>
+<area shape="rect" title=" " alt="" coords="323,171,389,197"/>
+<area shape="poly" title=" " alt="" coords="474,126,395,166,393,161,472,121"/>
+<area shape="rect" title=" " alt="" coords="506,171,555,197"/>
+<area shape="poly" title=" " alt="" coords="520,123,527,155,522,156,515,124"/>
+<area shape="rect" title=" " alt="" coords="579,171,669,197"/>
+<area shape="poly" title=" " alt="" coords="543,121,596,159,593,164,540,125"/>
+<area shape="poly" title=" " alt="" coords="577,121,705,163,704,168,575,126"/>
+<area shape="poly" title=" " alt="" coords="288,121,332,158,328,162,285,125"/>
+<area shape="poly" title=" " alt="" coords="206,126,90,167,88,162,204,121"/>
+<area shape="poly" title=" " alt="" coords="235,125,182,164,179,159,232,121"/>
+<area shape="poly" title=" " alt="" coords="265,123,265,155,260,155,260,123"/>
+</map>
+</div>
+</div><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:a0c01dbde6677d7e4769b85716c69c491" id="r_a0c01dbde6677d7e4769b85716c69c491"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0c01dbde6677d7e4769b85716c69c491">json</a> = nlohmann::json</td></tr>
+<tr class="separator:a0c01dbde6677d7e4769b85716c69c491"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a577f6caa2b74a38695dcadccd277cd41" id="r_a577f6caa2b74a38695dcadccd277cd41"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a577f6caa2b74a38695dcadccd277cd41">TASK_CELL_TAG</a> = &quot;task_cell&quot;</td></tr>
+<tr class="separator:a577f6caa2b74a38695dcadccd277cd41"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a184e7635f439bf95093b6a066ce161d7" id="r_a184e7635f439bf95093b6a066ce161d7"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a184e7635f439bf95093b6a066ce161d7">SOLUTION_REMOVED_CELL_TAG</a> = &quot;solution_removed_cell&quot;</td></tr>
+<tr class="separator:a184e7635f439bf95093b6a066ce161d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a213a8c8a72491ee237c3ce92f92191ec" id="r_a213a8c8a72491ee237c3ce92f92191ec"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a213a8c8a72491ee237c3ce92f92191ec">SOLUTION_CELL_TAG</a> = &quot;solution_cell&quot;</td></tr>
+<tr class="separator:a213a8c8a72491ee237c3ce92f92191ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6c92986de28899546e13ab1a37bf0722" id="r_a6c92986de28899546e13ab1a37bf0722"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6c92986de28899546e13ab1a37bf0722">WRITE_CODE_MARKER</a> = &quot;#### YOUR CODE HERE ####&quot;</td></tr>
+<tr class="separator:a6c92986de28899546e13ab1a37bf0722"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8a72334e6ef797e624196b1d9e073c6e" id="r_a8a72334e6ef797e624196b1d9e073c6e"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8a72334e6ef797e624196b1d9e073c6e">NOT_IMPLEMENTED_ERROR</a> = &quot;raise NotImplementedError()&quot;</td></tr>
+<tr class="separator:a8a72334e6ef797e624196b1d9e073c6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a22b163bef7c6dc038082729221692dfa" id="r_a22b163bef7c6dc038082729221692dfa"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a22b163bef7c6dc038082729221692dfa">SOLUTION_CELL_HEADER</a></td></tr>
+<tr class="separator:a22b163bef7c6dc038082729221692dfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0f5a0941639b66358c741284acf0dced" id="r_a0f5a0941639b66358c741284acf0dced"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0f5a0941639b66358c741284acf0dced">SOLUTION_CODE_PLACEHOLDER_START</a> = &quot;# ↓↓↓↓ SOLUTION CODE HERE ↓↓↓↓ #&quot;</td></tr>
+<tr class="separator:a0f5a0941639b66358c741284acf0dced"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a87d746c0d44126e9db98540148634b18" id="r_a87d746c0d44126e9db98540148634b18"><td class="memItemLeft" align="right" valign="top">const QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a87d746c0d44126e9db98540148634b18">SOLUTION_CODE_PLACEHOLDER_END</a> = &quot;# ↑↑↑↑ SOLUTION CODE HERE ↑↑↑↑ #&quot;</td></tr>
+<tr class="separator:a87d746c0d44126e9db98540148634b18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a id="a0c01dbde6677d7e4769b85716c69c491" name="a0c01dbde6677d7e4769b85716c69c491"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0c01dbde6677d7e4769b85716c69c491">&#9670;&#160;</a></span>json</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">typedef nlohmann::json <a class="el" href="#a0c01dbde6677d7e4769b85716c69c491">json</a> = nlohmann::json</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Variable Documentation</h2>
+<a id="a8a72334e6ef797e624196b1d9e073c6e" name="a8a72334e6ef797e624196b1d9e073c6e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8a72334e6ef797e624196b1d9e073c6e">&#9670;&#160;</a></span>NOT_IMPLEMENTED_ERROR</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString NOT_IMPLEMENTED_ERROR = &quot;raise NotImplementedError()&quot;</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a22b163bef7c6dc038082729221692dfa" name="a22b163bef7c6dc038082729221692dfa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a22b163bef7c6dc038082729221692dfa">&#9670;&#160;</a></span>SOLUTION_CELL_HEADER</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString SOLUTION_CELL_HEADER</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<b>Initial value:</b><div class="fragment"><div class="line">= <span class="stringliteral">&quot;##############################################################\n&quot;</span></div>
+<div class="line">                                     <span class="stringliteral">&quot;####     THIS IS A SOLUTION CELL. IT WILL NOT EXECUTE.    ####\n&quot;</span></div>
+<div class="line">                                     <span class="stringliteral">&quot;#### YOU CAN RUN THE SOLUTION DIRECTLY WITHIN THE PLUGIN. ####\n&quot;</span></div>
+<div class="line">                                     <span class="stringliteral">&quot;####    USE THIS CELL AS INSPIRATION FOR YOUR OWN CODE.   ####\n&quot;</span></div>
+<div class="line">                                     <span class="stringliteral">&quot;##############################################################\n&quot;</span></div>
+</div><!-- fragment -->
+</div>
+</div>
+<a id="a213a8c8a72491ee237c3ce92f92191ec" name="a213a8c8a72491ee237c3ce92f92191ec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a213a8c8a72491ee237c3ce92f92191ec">&#9670;&#160;</a></span>SOLUTION_CELL_TAG</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString SOLUTION_CELL_TAG = &quot;solution_cell&quot;</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a87d746c0d44126e9db98540148634b18" name="a87d746c0d44126e9db98540148634b18"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a87d746c0d44126e9db98540148634b18">&#9670;&#160;</a></span>SOLUTION_CODE_PLACEHOLDER_END</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString SOLUTION_CODE_PLACEHOLDER_END = &quot;# ↑↑↑↑ SOLUTION CODE HERE ↑↑↑↑ #&quot;</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a0f5a0941639b66358c741284acf0dced" name="a0f5a0941639b66358c741284acf0dced"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0f5a0941639b66358c741284acf0dced">&#9670;&#160;</a></span>SOLUTION_CODE_PLACEHOLDER_START</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString SOLUTION_CODE_PLACEHOLDER_START = &quot;# ↓↓↓↓ SOLUTION CODE HERE ↓↓↓↓ #&quot;</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a184e7635f439bf95093b6a066ce161d7" name="a184e7635f439bf95093b6a066ce161d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a184e7635f439bf95093b6a066ce161d7">&#9670;&#160;</a></span>SOLUTION_REMOVED_CELL_TAG</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString SOLUTION_REMOVED_CELL_TAG = &quot;solution_removed_cell&quot;</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a577f6caa2b74a38695dcadccd277cd41" name="a577f6caa2b74a38695dcadccd277cd41"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a577f6caa2b74a38695dcadccd277cd41">&#9670;&#160;</a></span>TASK_CELL_TAG</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString TASK_CELL_TAG = &quot;task_cell&quot;</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a6c92986de28899546e13ab1a37bf0722" name="a6c92986de28899546e13ab1a37bf0722"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6c92986de28899546e13ab1a37bf0722">&#9670;&#160;</a></span>WRITE_CODE_MARKER</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">const QString WRITE_CODE_MARKER = &quot;#### YOUR CODE HERE ####&quot;</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8cpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8cpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..d3498e0287bddc768b41185aaa7ee08166b08bf7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8cpp__incl.map
@@ -0,0 +1,34 @@
+<map id="notebook_converter.cpp" name="notebook_converter.cpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="433,5,594,32"/>
+<area shape="rect" id="Node000002" href="$notebook__converter_8hpp.html" title=" " alt="" coords="421,80,606,123"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="516,32,516,65,511,65,511,32"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="692,171,822,197"/>
+<area shape="poly" id="edge11_Node000001_Node000007" title=" " alt="" coords="539,30,619,78,670,121,726,160,723,164,666,125,616,82,537,35"/>
+<area shape="rect" id="Node000008" title=" " alt="" coords="680,88,733,115"/>
+<area shape="poly" id="edge7_Node000001_Node000008" title=" " alt="" coords="546,30,662,78,667,79,665,84,660,82,544,35"/>
+<area shape="rect" id="Node000009" title=" " alt="" coords="758,88,856,115"/>
+<area shape="poly" id="edge8_Node000001_Node000009" title=" " alt="" coords="567,30,746,77,755,80,754,85,745,83,565,35"/>
+<area shape="rect" id="Node000010" title=" " alt="" coords="5,171,75,197"/>
+<area shape="poly" id="edge9_Node000001_Node000010" title=" " alt="" coords="433,30,272,50,196,65,144,82,118,99,95,119,59,159,55,156,92,115,115,94,142,78,195,60,271,45,432,25"/>
+<area shape="rect" id="Node000011" title=" " alt="" coords="880,88,990,115"/>
+<area shape="poly" id="edge10_Node000001_Node000011" title=" " alt="" coords="594,28,724,48,869,77,881,81,880,86,867,83,723,54,593,33"/>
+<area shape="rect" id="Node000012" href="$folder__structure__constants_8hpp.html" title=" " alt="" coords="178,80,347,123"/>
+<area shape="poly" id="edge12_Node000001_Node000012" title=" " alt="" coords="475,35,343,77,341,72,473,30"/>
+<area shape="rect" id="Node000013" title=" " alt="" coords="99,171,202,197"/>
+<area shape="poly" id="edge17_Node000001_Node000013" title=" " alt="" coords="433,26,358,32,280,43,212,59,186,70,169,82,158,98,152,117,150,155,144,155,146,116,153,95,165,78,183,65,210,54,279,37,358,27,432,21"/>
+<area shape="rect" id="Node000014" title=" " alt="" coords="226,171,299,197"/>
+<area shape="poly" id="edge18_Node000001_Node000014" title=" " alt="" coords="490,35,411,82,360,125,299,165,296,160,357,121,408,78,487,30"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="413,171,483,197"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="499,125,470,160,466,157,494,122"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="323,171,389,197"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="474,126,395,166,393,161,472,121"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="506,171,555,197"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="520,123,527,155,522,156,515,124"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="579,171,669,197"/>
+<area shape="poly" id="edge5_Node000002_Node000006" title=" " alt="" coords="543,121,596,159,593,164,540,125"/>
+<area shape="poly" id="edge6_Node000002_Node000007" title=" " alt="" coords="577,121,705,163,704,168,575,126"/>
+<area shape="poly" id="edge13_Node000012_Node000004" title=" " alt="" coords="288,121,332,158,328,162,285,125"/>
+<area shape="poly" id="edge16_Node000012_Node000010" title=" " alt="" coords="206,126,90,167,88,162,204,121"/>
+<area shape="poly" id="edge14_Node000012_Node000013" title=" " alt="" coords="235,125,182,164,179,159,232,121"/>
+<area shape="poly" id="edge15_Node000012_Node000014" title=" " alt="" coords="265,123,265,155,260,155,260,123"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..052a3956553fbfd66cd3203ef6bc881f30297f24
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8cpp__incl.md5
@@ -0,0 +1 @@
+624105f4322f3301ca1c71fea60a91b6
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8cpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8cpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..b126511661efae48c5f1bb09a68af06cf8c3904a
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8cpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..08782de53d77147bc802ece984f71afe4adffb4d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp.html
@@ -0,0 +1,159 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: notebook_converter.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">notebook_converter.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QObject&gt;</code><br />
+<code>#include &lt;QString&gt;</code><br />
+<code>#include &lt;QDir&gt;</code><br />
+<code>#include &lt;QByteArray&gt;</code><br />
+<code>#include &lt;nlohmann/json.hpp&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for notebook_converter.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="notebook__converter_8hpp__incl.png" border="0" usemap="#anotebook__converter_8hpp" alt=""/></div>
+<map name="anotebook__converter_8hpp" id="anotebook__converter_8hpp">
+<area shape="rect" title=" " alt="" coords="133,5,294,32"/>
+<area shape="rect" title=" " alt="" coords="5,80,75,107"/>
+<area shape="poly" title=" " alt="" coords="184,35,85,76,83,71,182,30"/>
+<area shape="rect" title=" " alt="" coords="99,80,165,107"/>
+<area shape="poly" title=" " alt="" coords="201,35,159,72,155,68,197,31"/>
+<area shape="rect" title=" " alt="" coords="189,80,238,107"/>
+<area shape="poly" title=" " alt="" coords="216,33,216,64,211,64,211,33"/>
+<area shape="rect" title=" " alt="" coords="262,80,351,107"/>
+<area shape="poly" title=" " alt="" coords="231,30,280,68,277,73,228,35"/>
+<area shape="rect" title=" " alt="" coords="375,80,505,107"/>
+<area shape="poly" title=" " alt="" coords="254,30,387,72,385,77,252,35"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="notebook__converter_8hpp__dep__incl.png" border="0" usemap="#anotebook__converter_8hppdep" alt=""/></div>
+<map name="anotebook__converter_8hppdep" id="anotebook__converter_8hppdep">
+<area shape="rect" title=" " alt="" coords="348,5,508,32"/>
+<area shape="rect" href="learn__environment_8hpp.html" title=" " alt="" coords="5,80,158,107"/>
+<area shape="poly" title=" " alt="" coords="353,38,143,82,142,77,352,33"/>
+<area shape="rect" href="notebook__converter_8cpp.html" title=" " alt="" coords="181,80,342,107"/>
+<area shape="poly" title=" " alt="" coords="386,41,292,82,290,77,384,36"/>
+<area shape="rect" href="script__worker_8hpp.html" title=" " alt="" coords="366,80,490,107"/>
+<area shape="poly" title=" " alt="" coords="431,48,431,80,426,80,426,48"/>
+<area shape="rect" href="subtask__item_8cpp.html" title=" " alt="" coords="514,80,638,107"/>
+<area shape="poly" title=" " alt="" coords="469,37,551,77,549,82,466,42"/>
+<area shape="rect" href="task__manager_8cpp.html" title=" " alt="" coords="663,80,791,107"/>
+<area shape="poly" title=" " alt="" coords="496,34,675,77,674,82,495,39"/>
+<area shape="rect" href="learn__environment_8cpp.html" title=" " alt="" coords="5,155,158,181"/>
+<area shape="poly" title=" " alt="" coords="84,122,84,154,79,154,79,122"/>
+<area shape="rect" href="script__worker_8cpp.html" title=" " alt="" coords="290,155,414,181"/>
+<area shape="poly" title=" " alt="" coords="406,119,367,156,363,152,402,116"/>
+<area shape="rect" href="task__executor_8cpp.html" title=" " alt="" coords="439,155,567,181"/>
+<area shape="poly" title=" " alt="" coords="454,116,492,152,488,156,450,119"/>
+</map>
+</div>
+</div>
+<p><a href="notebook__converter_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classNotebookConverter.html">NotebookConverter</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class for converting Jupyter notebooks to Python scripts and processing task pools.  <a href="classNotebookConverter.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..6a579d45ddd59bf3248a973cf1a8c1759845158c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__dep__incl.map
@@ -0,0 +1,19 @@
+<map id="notebook_converter.hpp" name="notebook_converter.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="348,5,508,32"/>
+<area shape="rect" id="Node000002" href="$learn__environment_8hpp.html" title=" " alt="" coords="5,80,158,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="353,38,143,82,142,77,352,33"/>
+<area shape="rect" id="Node000004" href="$notebook__converter_8cpp.html" title=" " alt="" coords="181,80,342,107"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="386,41,292,82,290,77,384,36"/>
+<area shape="rect" id="Node000005" href="$script__worker_8hpp.html" title=" " alt="" coords="366,80,490,107"/>
+<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="431,48,431,80,426,80,426,48"/>
+<area shape="rect" id="Node000008" href="$subtask__item_8cpp.html" title=" " alt="" coords="514,80,638,107"/>
+<area shape="poly" id="edge7_Node000001_Node000008" title=" " alt="" coords="469,37,551,77,549,82,466,42"/>
+<area shape="rect" id="Node000009" href="$task__manager_8cpp.html" title=" " alt="" coords="663,80,791,107"/>
+<area shape="poly" id="edge8_Node000001_Node000009" title=" " alt="" coords="496,34,675,77,674,82,495,39"/>
+<area shape="rect" id="Node000003" href="$learn__environment_8cpp.html" title=" " alt="" coords="5,155,158,181"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="84,122,84,154,79,154,79,122"/>
+<area shape="rect" id="Node000006" href="$script__worker_8cpp.html" title=" " alt="" coords="290,155,414,181"/>
+<area shape="poly" id="edge5_Node000005_Node000006" title=" " alt="" coords="406,119,367,156,363,152,402,116"/>
+<area shape="rect" id="Node000007" href="$task__executor_8cpp.html" title=" " alt="" coords="439,155,567,181"/>
+<area shape="poly" id="edge6_Node000005_Node000007" title=" " alt="" coords="454,116,492,152,488,156,450,119"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..c8268643c056834b9ef8694b4607cf15954f6581
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+4f2ae68555374268456befbbca96f2c8
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..6cd566f356d884127edc11a89735286accea6aa6
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..b5e7bda3d9c82648005f3c11ba34c4cb16297c11
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__incl.map
@@ -0,0 +1,13 @@
+<map id="notebook_converter.hpp" name="notebook_converter.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="133,5,294,32"/>
+<area shape="rect" id="Node000002" title=" " alt="" coords="5,80,75,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="184,35,85,76,83,71,182,30"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="99,80,165,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="201,35,159,72,155,68,197,31"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="189,80,238,107"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="216,33,216,64,211,64,211,33"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="262,80,351,107"/>
+<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="231,30,280,68,277,73,228,35"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="375,80,505,107"/>
+<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="254,30,387,72,385,77,252,35"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..841f79cfa3870937fb4cea56eb214a8198c4de55
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__incl.md5
@@ -0,0 +1 @@
+a2f24d01572565fc7f22cecadb6d99fe
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef4c4fd8502810e218f7531bef2cf270879a7d37
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..47058718aa4b15c22a0a6847014121be712d7238
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/notebook__converter_8hpp_source.html
@@ -0,0 +1,154 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: notebook_converter.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">notebook_converter.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="notebook__converter_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef NOTEBOOK_CONVERTER_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define NOTEBOOK_CONVERTER_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &lt;QObject&gt;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include &lt;QString&gt;</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="preprocessor">#include &lt;QDir&gt;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;QByteArray&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;nlohmann/json.hpp&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span> </div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="keyword">using </span><a class="code hl_typedef" href="notebook__converter_8cpp.html#a0c01dbde6677d7e4769b85716c69c491">json</a> = nlohmann::json;</div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span> </div>
+<div class="foldopen" id="foldopen00023" data-start="{" data-end="};">
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"><a class="line" href="classNotebookConverter.html">   23</a></span><span class="keyword">class </span><a class="code hl_class" href="classNotebookConverter.html">NotebookConverter</a> : <span class="keyword">public</span> <a class="code hl_class" href="classQObject.html">QObject</a> {</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span>    Q_OBJECT</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span>    <span class="keyword">explicit</span> <a class="code hl_function" href="classNotebookConverter.html#a11c8ed4604d4c29acd45d6225d80c464">NotebookConverter</a>(<a class="code hl_class" href="classQObject.html">QObject</a> *parent = <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span> </div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>    <span class="keywordtype">bool</span> <a class="code hl_function" href="classNotebookConverter.html#a8b06d3bc01057ddd936977bded4297f4">convertNotebook</a>(<span class="keyword">const</span> QString &amp;notebookPath);</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classNotebookConverter.html#a66b007e49cfe58d279c3ac279ced7213">processTaskPool</a>();</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span> </div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classNotebookConverter.html#a665ba1030d993bd9e165fca123d92032">toggleSolution</a>(<span class="keyword">const</span> QString &amp;filePath, <span class="keyword">const</span> QString &amp;solutionFilePath);</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classNotebookConverter.html#aa14fbd73e3cc21866decd2e02572207d">resetNotebook</a>(<span class="keyword">const</span> QString &amp;notebookPath, <span class="keyword">const</span> QString &amp;notebookSolutionPath);</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span> </div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classNotebookConverter.html#af64e43c667b96ba0926a715316002665">hasSolutionCells</a>(<span class="keyword">const</span> QString &amp;notebookPath);</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span> </div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span>    <span class="keywordtype">void</span> removeSolutionFromNotebook(<span class="keyword">const</span> QString &amp;notebookPath);</div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>    QByteArray readFile(<span class="keyword">const</span> QString &amp;notebookPath);</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span>    <a class="code hl_typedef" href="notebook__converter_8cpp.html#a0c01dbde6677d7e4769b85716c69c491">json</a> parseJson(<span class="keyword">const</span> QByteArray &amp;data, <span class="keyword">const</span> QString &amp;notebookPath);</div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>    <span class="keywordtype">void</span> processCells(<a class="code hl_typedef" href="notebook__converter_8cpp.html#a0c01dbde6677d7e4769b85716c69c491">json</a> &amp;notebook, <span class="keyword">const</span> QString &amp;notebookPath);</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>    <span class="keywordtype">void</span> processCell(<a class="code hl_typedef" href="notebook__converter_8cpp.html#a0c01dbde6677d7e4769b85716c69c491">json</a> &amp;cell, <span class="keyword">const</span> QString &amp;notebookPath, <span class="keywordtype">int</span> i);</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>    <span class="keywordtype">void</span> writeFile(<span class="keyword">const</span> <a class="code hl_typedef" href="notebook__converter_8cpp.html#a0c01dbde6677d7e4769b85716c69c491">json</a> &amp;notebook, <span class="keyword">const</span> QString &amp;notebookPath);</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>    <span class="keywordtype">void</span> copyAndModifyNotebooks(<span class="keyword">const</span> QDir &amp;sourceDir, <span class="keyword">const</span> QDir &amp;destDir);</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>    <span class="keywordtype">void</span> removeSolutionCells(<span class="keyword">const</span> QString &amp;notebookPath);</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>    <span class="keywordtype">void</span> addSolutionCells(<span class="keyword">const</span> QString &amp;notebookPath, <span class="keyword">const</span> QString &amp;solutionPath);</div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>    <span class="keywordtype">void</span> manipulateSolutionCellContent(<a class="code hl_typedef" href="notebook__converter_8cpp.html#a0c01dbde6677d7e4769b85716c69c491">json</a> &amp;solutionCell);</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>};</div>
+</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span> </div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span><span class="preprocessor">#endif </span><span class="comment">// NOTEBOOK_CONVERTER_HPP</span></div>
+<div class="ttc" id="aclassNotebookConverter_html"><div class="ttname"><a href="classNotebookConverter.html">NotebookConverter</a></div><div class="ttdoc">A class for converting Jupyter notebooks to Python scripts and processing task pools.</div><div class="ttdef"><b>Definition</b> notebook_converter.hpp:23</div></div>
+<div class="ttc" id="aclassNotebookConverter_html_a11c8ed4604d4c29acd45d6225d80c464"><div class="ttname"><a href="classNotebookConverter.html#a11c8ed4604d4c29acd45d6225d80c464">NotebookConverter::NotebookConverter</a></div><div class="ttdeci">NotebookConverter(QObject *parent=nullptr)</div><div class="ttdef"><b>Definition</b> notebook_converter.cpp:26</div></div>
+<div class="ttc" id="aclassNotebookConverter_html_a665ba1030d993bd9e165fca123d92032"><div class="ttname"><a href="classNotebookConverter.html#a665ba1030d993bd9e165fca123d92032">NotebookConverter::toggleSolution</a></div><div class="ttdeci">void toggleSolution(const QString &amp;filePath, const QString &amp;solutionFilePath)</div><div class="ttdoc">Toggles the solution code in a Jupyter notebook.</div><div class="ttdef"><b>Definition</b> notebook_converter.cpp:265</div></div>
+<div class="ttc" id="aclassNotebookConverter_html_a66b007e49cfe58d279c3ac279ced7213"><div class="ttname"><a href="classNotebookConverter.html#a66b007e49cfe58d279c3ac279ced7213">NotebookConverter::processTaskPool</a></div><div class="ttdeci">void processTaskPool()</div><div class="ttdoc">Modifies and copies all notebooks from task_pool to users workspace.</div><div class="ttdef"><b>Definition</b> notebook_converter.cpp:94</div></div>
+<div class="ttc" id="aclassNotebookConverter_html_a8b06d3bc01057ddd936977bded4297f4"><div class="ttname"><a href="classNotebookConverter.html#a8b06d3bc01057ddd936977bded4297f4">NotebookConverter::convertNotebook</a></div><div class="ttdeci">bool convertNotebook(const QString &amp;notebookPath)</div><div class="ttdoc">Converts a Jupyter notebook to a Python script. Ignoring code cells with &quot;solution&quot; tag.</div><div class="ttdef"><b>Definition</b> notebook_converter.cpp:28</div></div>
+<div class="ttc" id="aclassNotebookConverter_html_aa14fbd73e3cc21866decd2e02572207d"><div class="ttname"><a href="classNotebookConverter.html#aa14fbd73e3cc21866decd2e02572207d">NotebookConverter::resetNotebook</a></div><div class="ttdeci">void resetNotebook(const QString &amp;notebookPath, const QString &amp;notebookSolutionPath)</div><div class="ttdoc">Removes solution code from a Jupyter notebook.</div><div class="ttdef"><b>Definition</b> notebook_converter.cpp:103</div></div>
+<div class="ttc" id="aclassNotebookConverter_html_af64e43c667b96ba0926a715316002665"><div class="ttname"><a href="classNotebookConverter.html#af64e43c667b96ba0926a715316002665">NotebookConverter::hasSolutionCells</a></div><div class="ttdeci">static bool hasSolutionCells(const QString &amp;notebookPath)</div><div class="ttdoc">Checks if the notebook contains any solution cells.</div><div class="ttdef"><b>Definition</b> notebook_converter.cpp:427</div></div>
+<div class="ttc" id="aclassQObject_html"><div class="ttname"><a href="classQObject.html">QObject</a></div></div>
+<div class="ttc" id="anotebook__converter_8cpp_html_a0c01dbde6677d7e4769b85716c69c491"><div class="ttname"><a href="notebook__converter_8cpp.html#a0c01dbde6677d7e4769b85716c69c491">json</a></div><div class="ttdeci">nlohmann::json json</div><div class="ttdef"><b>Definition</b> notebook_converter.cpp:11</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/open.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/open.png
new file mode 100644
index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/open.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/plus.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/plus.svg
new file mode 100644
index 0000000000000000000000000000000000000000..0752016553550e348b92bae6d5cb39c7122f13d8
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/plus.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="12px" height="12px" viewBox="0 0 105.83333 105.83333" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
+  <g>
+    <rect style="fill:#808080;stroke-width:0" width="105.83333" height="105.83334" x="4.2409692e-08" y="-1.2701158e-06" ry="0" />
+    <rect style="fill:#fcfcfc;stroke-width:0" width="79.375" height="79.375" x="13.229166" y="13.229166" />
+    <rect style="fill:#808080;stroke-width:0" width="52.916668" height="15.874998" x="26.458332" y="44.979168" />
+    <rect style="fill:#808080;stroke-width:0" width="15.874998" height="52.916668" x="44.979168" y="26.458332" />
+  </g>
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/plusd.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/plusd.svg
new file mode 100644
index 0000000000000000000000000000000000000000..0c65bfe946d2340fd759123fb4e0c6d557871efd
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/plusd.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="12px" height="12px" viewBox="0 0 105.83333 105.83333" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
+  <g>
+    <rect style="fill:#808080;stroke-width:0" width="105.83333" height="105.83334" x="4.2409692e-08" y="-1.2701158e-06" ry="0" />
+    <rect style="fill:#000000;stroke-width:0" width="79.375" height="79.375" x="13.229166" y="13.229166" />
+    <rect style="fill:#808080;stroke-width:0" width="52.916668" height="15.874998" x="26.458332" y="44.979168" />
+    <rect style="fill:#808080;stroke-width:0" width="15.874998" height="52.916668" x="44.979168" y="26.458332" />
+  </g>
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8cpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..c7fb63ca0483ad942bf1de31c2fba1982bf5b15a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8cpp.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: process_runner.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">process_runner.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="process__runner_8hpp_source.html">learn_environment/process_runner.hpp</a>&quot;</code><br />
+<code>#include &lt;QDebug&gt;</code><br />
+<code>#include &lt;QRegularExpression&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for process_runner.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="process__runner_8cpp__incl.png" border="0" usemap="#aprocess__runner_8cpp" alt=""/></div>
+<map name="aprocess__runner_8cpp" id="aprocess__runner_8cpp">
+<area shape="rect" title=" " alt="" coords="219,5,354,32"/>
+<area shape="rect" href="process__runner_8hpp.html" title=" " alt="" coords="50,80,227,123"/>
+<area shape="poly" title=" " alt="" coords="265,35,191,75,189,70,262,30"/>
+<area shape="rect" title=" " alt="" coords="252,88,321,115"/>
+<area shape="poly" title=" " alt="" coords="289,32,289,73,284,73,284,32"/>
+<area shape="rect" title=" " alt="" coords="345,88,487,115"/>
+<area shape="poly" title=" " alt="" coords="308,30,385,77,382,82,305,35"/>
+<area shape="rect" title=" " alt="" coords="5,171,75,197"/>
+<area shape="poly" title=" " alt="" coords="115,125,69,163,65,159,112,121"/>
+<area shape="rect" title=" " alt="" coords="99,171,178,197"/>
+<area shape="poly" title=" " alt="" coords="141,123,141,155,136,155,136,123"/>
+<area shape="rect" title=" " alt="" coords="202,171,267,197"/>
+<area shape="poly" title=" " alt="" coords="165,121,210,158,206,162,162,125"/>
+</map>
+</div>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8cpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8cpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..c395e17033e733ae457f25c1a1d7cdf819a0bfff
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8cpp__incl.map
@@ -0,0 +1,15 @@
+<map id="process_runner.cpp" name="process_runner.cpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="219,5,354,32"/>
+<area shape="rect" id="Node000002" href="$process__runner_8hpp.html" title=" " alt="" coords="50,80,227,123"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="265,35,191,75,189,70,262,30"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="252,88,321,115"/>
+<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="289,32,289,73,284,73,284,32"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="345,88,487,115"/>
+<area shape="poly" id="edge6_Node000001_Node000007" title=" " alt="" coords="308,30,385,77,382,82,305,35"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="5,171,75,197"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="115,125,69,163,65,159,112,121"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="99,171,178,197"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="141,123,141,155,136,155,136,123"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="202,171,267,197"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="165,121,210,158,206,162,162,125"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..cbc17d0e578d94c24f5b4d6592066c0bffcf15ba
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8cpp__incl.md5
@@ -0,0 +1 @@
+f1467492dcc33e2bf3f5e21f63657b6f
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8cpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8cpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..d07bb00d73d30d99b639c755f76422a689de4ccf
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8cpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..fece30f8c68d3e85b1ffe79e7fe7a353705336f3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: process_runner.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">process_runner.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QObject&gt;</code><br />
+<code>#include &lt;QProcess&gt;</code><br />
+<code>#include &lt;QTimer&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for process_runner.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="process__runner_8hpp__incl.png" border="0" usemap="#aprocess__runner_8hpp" alt=""/></div>
+<map name="aprocess__runner_8hpp" id="aprocess__runner_8hpp">
+<area shape="rect" title=" " alt="" coords="71,5,206,32"/>
+<area shape="rect" title=" " alt="" coords="5,80,75,107"/>
+<area shape="poly" title=" " alt="" coords="123,35,71,73,68,69,120,30"/>
+<area shape="rect" title=" " alt="" coords="99,80,178,107"/>
+<area shape="poly" title=" " alt="" coords="141,33,141,64,136,64,136,33"/>
+<area shape="rect" title=" " alt="" coords="202,80,267,107"/>
+<area shape="poly" title=" " alt="" coords="157,30,207,68,204,73,154,35"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="process__runner_8hpp__dep__incl.png" border="0" usemap="#aprocess__runner_8hppdep" alt=""/></div>
+<map name="aprocess__runner_8hppdep" id="aprocess__runner_8hppdep">
+<area shape="rect" title=" " alt="" coords="81,5,217,32"/>
+<area shape="rect" href="process__runner_8cpp.html" title=" " alt="" coords="5,80,141,107"/>
+<area shape="poly" title=" " alt="" coords="127,45,88,82,84,78,123,41"/>
+<area shape="rect" href="script__worker_8cpp.html" title=" " alt="" coords="164,80,288,107"/>
+<area shape="poly" title=" " alt="" coords="175,41,215,78,211,82,172,45"/>
+</map>
+</div>
+</div>
+<p><a href="process__runner_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classProcessRunner.html">ProcessRunner</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Manages the execution of an external process with a timeout.  <a href="classProcessRunner.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..c7f770749530d6e7c8a29cd216ec04ebd682ea43
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__dep__incl.map
@@ -0,0 +1,7 @@
+<map id="process_runner.hpp" name="process_runner.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="81,5,217,32"/>
+<area shape="rect" id="Node000002" href="$process__runner_8cpp.html" title=" " alt="" coords="5,80,141,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="127,45,88,82,84,78,123,41"/>
+<area shape="rect" id="Node000003" href="$script__worker_8cpp.html" title=" " alt="" coords="164,80,288,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="175,41,215,78,211,82,172,45"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..184cd19e73b36ed03ee245b18dc75ddae6077bb3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+0140d3a2ee60886573c2ca16b02c18ca
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..38f09578f7a582fb509e00fd2c3e0aa6f7cd9095
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..d6a79df191203a6f46ee04f8bb785df6b7e20914
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__incl.map
@@ -0,0 +1,9 @@
+<map id="process_runner.hpp" name="process_runner.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="71,5,206,32"/>
+<area shape="rect" id="Node000002" title=" " alt="" coords="5,80,75,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="123,35,71,73,68,69,120,30"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="99,80,178,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="141,33,141,64,136,64,136,33"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="202,80,267,107"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="157,30,207,68,204,73,154,35"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..452aac2efe4afaa49d481b17f03c5176657146eb
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__incl.md5
@@ -0,0 +1 @@
+7b22a3414b79e6754687f6b723d0f0a3
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..b205003cec1c19b267a8da5f98107b66f945d056
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..af2ce0a3f42f81b349901d9f1814c972d25e9e31
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/process__runner_8hpp_source.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: process_runner.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">process_runner.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="process__runner_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef PROCESS_RUNNER_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define PROCESS_RUNNER_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &lt;QObject&gt;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include &lt;QProcess&gt;</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="preprocessor">#include &lt;QTimer&gt;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span> </div>
+<div class="foldopen" id="foldopen00015" data-start="{" data-end="};">
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"><a class="line" href="classProcessRunner.html">   15</a></span><span class="keyword">class </span><a class="code hl_class" href="classProcessRunner.html">ProcessRunner</a> : <span class="keyword">public</span> <a class="code hl_class" href="classQObject.html">QObject</a> {</div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span>    Q_OBJECT</div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span> </div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>    <a class="code hl_function" href="classProcessRunner.html#a8d3ba848e57c03660af7c68dcfd7e904">ProcessRunner</a>(<span class="keyword">const</span> QString &amp;program,</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span>                  <span class="keyword">const</span> QStringList &amp;arguments,</div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span>                  <span class="keywordtype">int</span> timeoutSeconds,</div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span>                  <a class="code hl_class" href="classQObject.html">QObject</a> *parent = <span class="keyword">nullptr</span>,</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>                  QString processName = <span class="stringliteral">&quot;process&quot;</span>);</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classProcessRunner.html#ae69a94ddf835cec0a63fe7f4fdb61934">start</a>();</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span> </div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>Q_SIGNALS:</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="classProcessRunner.html#a76c6897c0cf00b9034e6deb9662debbf">   44</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classProcessRunner.html#a76c6897c0cf00b9034e6deb9662debbf">finished</a>(<span class="keywordtype">int</span> exitCode, QProcess::ExitStatus exitStatus);</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="classProcessRunner.html#ad6840bbd9e54b7c6a0678dc9c5c792d7">   50</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classProcessRunner.html#ad6840bbd9e54b7c6a0678dc9c5c792d7">outputReady</a>(<span class="keyword">const</span> QString &amp;output);</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span> </div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="classProcessRunner.html#a9ad2c856469a7129c905721309620e05">   56</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classProcessRunner.html#a9ad2c856469a7129c905721309620e05">errorReady</a>(<span class="keyword">const</span> QString &amp;error);</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span> </div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="classProcessRunner.html#ae42c9c4e04890fffa674e06eedf631b3">   61</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classProcessRunner.html#ae42c9c4e04890fffa674e06eedf631b3">timeout</a>();</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span> </div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span><span class="keyword">public</span> Q_SLOTS:</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>    <span class="keywordtype">void</span> <a class="code hl_slot" href="classProcessRunner.html#abb4be6a4283702e38a9eb7d51438efb6">forceStop</a>();</div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span> </div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span><span class="keyword">private</span> Q_SLOTS:</div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span>    <span class="keywordtype">void</span> onProcessFinished(<span class="keywordtype">int</span> exitCode, QProcess::ExitStatus exitStatus);</div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span> </div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>    <span class="keywordtype">void</span> onReadyReadStandardOutput();</div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span> </div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>    <span class="keywordtype">void</span> onReadyReadStandardError();</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>    <span class="keywordtype">void</span> onTimeout();</div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span> </div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>    QProcess *process; </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>    QTimer *timer; </div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span>    QString program; </div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span>    QStringList arguments; </div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span>    <span class="keywordtype">int</span> timeoutSeconds; </div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>    QString processName; </div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span>};</div>
+</div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span> </div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span><span class="preprocessor">#endif </span><span class="comment">// PROCESS_RUNNER_HPP</span></div>
+<div class="ttc" id="aclassProcessRunner_html"><div class="ttname"><a href="classProcessRunner.html">ProcessRunner</a></div><div class="ttdoc">Manages the execution of an external process with a timeout.</div><div class="ttdef"><b>Definition</b> process_runner.hpp:15</div></div>
+<div class="ttc" id="aclassProcessRunner_html_a76c6897c0cf00b9034e6deb9662debbf"><div class="ttname"><a href="classProcessRunner.html#a76c6897c0cf00b9034e6deb9662debbf">ProcessRunner::finished</a></div><div class="ttdeci">void finished(int exitCode, QProcess::ExitStatus exitStatus)</div><div class="ttdoc">Signal emitted when the process finishes.</div></div>
+<div class="ttc" id="aclassProcessRunner_html_a8d3ba848e57c03660af7c68dcfd7e904"><div class="ttname"><a href="classProcessRunner.html#a8d3ba848e57c03660af7c68dcfd7e904">ProcessRunner::ProcessRunner</a></div><div class="ttdeci">ProcessRunner(const QString &amp;program, const QStringList &amp;arguments, int timeoutSeconds, QObject *parent=nullptr, QString processName=&quot;process&quot;)</div><div class="ttdoc">Constructs a ProcessRunner object.</div><div class="ttdef"><b>Definition</b> process_runner.cpp:10</div></div>
+<div class="ttc" id="aclassProcessRunner_html_a9ad2c856469a7129c905721309620e05"><div class="ttname"><a href="classProcessRunner.html#a9ad2c856469a7129c905721309620e05">ProcessRunner::errorReady</a></div><div class="ttdeci">void errorReady(const QString &amp;error)</div><div class="ttdoc">Signal emitted when the process produces an error.</div></div>
+<div class="ttc" id="aclassProcessRunner_html_abb4be6a4283702e38a9eb7d51438efb6"><div class="ttname"><a href="classProcessRunner.html#abb4be6a4283702e38a9eb7d51438efb6">ProcessRunner::forceStop</a></div><div class="ttdeci">void forceStop()</div><div class="ttdoc">Forces the stop of the running process.</div><div class="ttdef"><b>Definition</b> process_runner.cpp:35</div></div>
+<div class="ttc" id="aclassProcessRunner_html_ad6840bbd9e54b7c6a0678dc9c5c792d7"><div class="ttname"><a href="classProcessRunner.html#ad6840bbd9e54b7c6a0678dc9c5c792d7">ProcessRunner::outputReady</a></div><div class="ttdeci">void outputReady(const QString &amp;output)</div><div class="ttdoc">Signal emitted when the process produces output.</div></div>
+<div class="ttc" id="aclassProcessRunner_html_ae42c9c4e04890fffa674e06eedf631b3"><div class="ttname"><a href="classProcessRunner.html#ae42c9c4e04890fffa674e06eedf631b3">ProcessRunner::timeout</a></div><div class="ttdeci">void timeout()</div><div class="ttdoc">Signal emitted when the process times out.</div></div>
+<div class="ttc" id="aclassProcessRunner_html_ae69a94ddf835cec0a63fe7f4fdb61934"><div class="ttname"><a href="classProcessRunner.html#ae69a94ddf835cec0a63fe7f4fdb61934">ProcessRunner::start</a></div><div class="ttdeci">void start()</div><div class="ttdoc">Starts the execution of the process.</div><div class="ttdef"><b>Definition</b> process_runner.cpp:25</div></div>
+<div class="ttc" id="aclassQObject_html"><div class="ttname"><a href="classQObject.html">QObject</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/resize.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/resize.js
new file mode 100644
index 0000000000000000000000000000000000000000..178d03bcb80bad335d0ccbcd63241fefd66c334e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/resize.js
@@ -0,0 +1,147 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
+
+function initResizable(treeview) {
+  let sidenav,navtree,content,header,footer,barWidth=6;
+  const RESIZE_COOKIE_NAME = ''+'width';
+
+  function resizeWidth() {
+    const sidenavWidth = $(sidenav).outerWidth();
+    content.css({marginLeft:parseInt(sidenavWidth)+"px"});
+    if (typeof page_layout!=='undefined' && page_layout==1) {
+      footer.css({marginLeft:parseInt(sidenavWidth)+"px"});
+    }
+    Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth);
+  }
+
+  function restoreWidth(navWidth) {
+    content.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
+    if (typeof page_layout!=='undefined' && page_layout==1) {
+      footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
+    }
+    sidenav.css({width:navWidth + "px"});
+  }
+
+  function resizeHeight(treeview) {
+    const headerHeight = header.outerHeight();
+    const windowHeight = $(window).height();
+    let contentHeight;
+    if (treeview)
+    {
+      const footerHeight = footer.outerHeight();
+      let navtreeHeight,sideNavHeight;
+      if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */
+        contentHeight = windowHeight - headerHeight - footerHeight;
+        navtreeHeight = contentHeight;
+        sideNavHeight = contentHeight;
+      } else if (page_layout==1) { /* DISABLE_INDEX=YES */
+        contentHeight = windowHeight - footerHeight;
+        navtreeHeight = windowHeight - headerHeight;
+        sideNavHeight = windowHeight;
+      }
+      navtree.css({height:navtreeHeight + "px"});
+      sidenav.css({height:sideNavHeight + "px"});
+    }
+    else
+    {
+      contentHeight = windowHeight - headerHeight;
+    }
+    content.css({height:contentHeight + "px"});
+    if (location.hash.slice(1)) {
+      (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView();
+    }
+  }
+
+  function collapseExpand() {
+    let newWidth;
+    if (sidenav.width()>0) {
+      newWidth=0;
+    } else {
+      const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250);
+      newWidth = (width>250 && width<$(window).width()) ? width : 250;
+    }
+    restoreWidth(newWidth);
+    const sidenavWidth = $(sidenav).outerWidth();
+    Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth);
+  }
+
+  header  = $("#top");
+  content = $("#doc-content");
+  footer  = $("#nav-path");
+  sidenav = $("#side-nav");
+  if (!treeview) {
+//    title   = $("#titlearea");
+//    titleH  = $(title).height();
+//    let animating = false;
+//    content.on("scroll", function() {
+//      slideOpts = { duration: 200,
+//                    step: function() {
+//                        contentHeight = $(window).height() - header.outerHeight();
+//                        content.css({ height : contentHeight + "px" });
+//                      },
+//                    done: function() { animating=false; }
+//                  };
+//      if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) {
+//        title.slideUp(slideOpts);
+//        animating=true;
+//      } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) {
+//        title.slideDown(slideOpts);
+//        animating=true;
+//      }
+//    });
+  } else {
+    navtree = $("#nav-tree");
+    $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } });
+    $(sidenav).resizable({ minWidth: 0 });
+  }
+  $(window).resize(function() { resizeHeight(treeview); });
+  if (treeview)
+  {
+    const device = navigator.userAgent.toLowerCase();
+    const touch_device = device.match(/(iphone|ipod|ipad|android)/);
+    if (touch_device) { /* wider split bar for touch only devices */
+      $(sidenav).css({ paddingRight:'20px' });
+      $('.ui-resizable-e').css({ width:'20px' });
+      $('#nav-sync').css({ right:'34px' });
+      barWidth=20;
+    }
+    const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250);
+    if (width) { restoreWidth(width); } else { resizeWidth(); }
+  }
+  resizeHeight(treeview);
+  const url = location.href;
+  const i=url.indexOf("#");
+  if (i>=0) window.location.hash=url.substr(i);
+  const _preventDefault = function(evt) { evt.preventDefault(); };
+  if (treeview)
+  {
+    $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
+    $(".ui-resizable-handle").dblclick(collapseExpand);
+    // workaround for firefox
+    $("body").css({overflow: "hidden"});
+  }
+  $(window).on('load',function() { resizeHeight(treeview); });
+}
+/* @license-end */
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8cpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..d3bfd7e3c088140abf578a8c700773ee27f0012c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8cpp.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: script_worker.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">script_worker.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="script__worker_8hpp_source.html">learn_environment/script_worker.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="process__runner_8hpp_source.html">learn_environment/process_runner.hpp</a>&quot;</code><br />
+<code>#include &lt;QDebug&gt;</code><br />
+<code>#include &lt;QFile&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for script_worker.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="script__worker_8cpp__incl.png" border="0" usemap="#ascript__worker_8cpp" alt=""/></div>
+<map name="ascript__worker_8cpp" id="ascript__worker_8cpp">
+<area shape="rect" title=" " alt="" coords="666,5,790,32"/>
+<area shape="rect" href="script__worker_8hpp.html" title=" " alt="" coords="373,80,536,123"/>
+<area shape="poly" title=" " alt="" coords="686,35,540,78,539,73,684,30"/>
+<area shape="rect" href="process__runner_8hpp.html" title=" " alt="" coords="566,80,743,123"/>
+<area shape="poly" title=" " alt="" coords="718,34,685,70,681,67,714,31"/>
+<area shape="rect" title=" " alt="" coords="768,88,837,115"/>
+<area shape="poly" title=" " alt="" coords="741,31,783,75,779,79,738,34"/>
+<area shape="rect" title=" " alt="" coords="862,88,914,115"/>
+<area shape="poly" title=" " alt="" coords="755,30,850,78,852,78,849,83,848,82,752,35"/>
+<area shape="rect" title=" " alt="" coords="472,245,541,272"/>
+<area shape="poly" title=" " alt="" coords="466,122,484,170,502,230,497,231,479,172,461,124"/>
+<area shape="rect" title=" " alt="" coords="346,245,411,272"/>
+<area shape="poly" title=" " alt="" coords="439,124,406,172,394,202,386,231,381,229,389,200,401,169,434,121"/>
+<area shape="rect" title=" " alt="" coords="544,171,624,197"/>
+<area shape="poly" title=" " alt="" coords="489,121,552,160,549,164,486,126"/>
+<area shape="rect" title=" " alt="" coords="416,171,469,197"/>
+<area shape="poly" title=" " alt="" coords="454,124,449,156,444,155,449,123"/>
+<area shape="rect" href="notebook__converter_8hpp.html" title=" " alt="" coords="181,171,341,197"/>
+<area shape="poly" title=" " alt="" coords="406,126,307,167,305,162,404,121"/>
+<area shape="poly" title=" " alt="" coords="305,195,458,240,456,245,303,200"/>
+<area shape="poly" title=" " alt="" coords="283,196,347,235,344,239,280,200"/>
+<area shape="rect" title=" " alt="" coords="160,245,208,272"/>
+<area shape="poly" title=" " alt="" coords="250,200,210,237,206,233,246,196"/>
+<area shape="rect" title=" " alt="" coords="232,245,322,272"/>
+<area shape="poly" title=" " alt="" coords="267,197,274,230,269,231,261,198"/>
+<area shape="rect" title=" " alt="" coords="5,245,136,272"/>
+<area shape="poly" title=" " alt="" coords="229,200,119,242,117,237,227,195"/>
+<area shape="poly" title=" " alt="" coords="658,123,655,160,648,181,638,199,621,216,600,230,557,249,555,244,598,225,617,212,634,196,644,179,649,159,653,123"/>
+<area shape="poly" title=" " alt="" coords="638,125,607,161,603,157,634,122"/>
+<area shape="rect" title=" " alt="" coords="698,171,763,197"/>
+<area shape="poly" title=" " alt="" coords="676,121,710,157,706,161,672,125"/>
+</map>
+</div>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8cpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8cpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..2401911bb71795b60d5784279040296448ea637f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8cpp__incl.map
@@ -0,0 +1,33 @@
+<map id="script_worker.cpp" name="script_worker.cpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="666,5,790,32"/>
+<area shape="rect" id="Node000002" href="$script__worker_8hpp.html" title=" " alt="" coords="373,80,536,123"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="686,35,540,78,539,73,684,30"/>
+<area shape="rect" id="Node000011" href="$process__runner_8hpp.html" title=" " alt="" coords="566,80,743,123"/>
+<area shape="poly" id="edge12_Node000001_Node000011" title=" " alt="" coords="718,34,685,70,681,67,714,31"/>
+<area shape="rect" id="Node000013" title=" " alt="" coords="768,88,837,115"/>
+<area shape="poly" id="edge16_Node000001_Node000013" title=" " alt="" coords="741,31,783,75,779,79,738,34"/>
+<area shape="rect" id="Node000014" title=" " alt="" coords="862,88,914,115"/>
+<area shape="poly" id="edge17_Node000001_Node000014" title=" " alt="" coords="755,30,850,78,852,78,849,83,848,82,752,35"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="472,245,541,272"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="466,122,484,170,502,230,497,231,479,172,461,124"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="346,245,411,272"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="439,124,406,172,394,202,386,231,381,229,389,200,401,169,434,121"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="544,171,624,197"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="489,121,552,160,549,164,486,126"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="416,171,469,197"/>
+<area shape="poly" id="edge5_Node000002_Node000006" title=" " alt="" coords="454,124,449,156,444,155,449,123"/>
+<area shape="rect" id="Node000007" href="$notebook__converter_8hpp.html" title=" " alt="" coords="181,171,341,197"/>
+<area shape="poly" id="edge6_Node000002_Node000007" title=" " alt="" coords="406,126,307,167,305,162,404,121"/>
+<area shape="poly" id="edge7_Node000007_Node000003" title=" " alt="" coords="305,195,458,240,456,245,303,200"/>
+<area shape="poly" id="edge8_Node000007_Node000004" title=" " alt="" coords="283,196,347,235,344,239,280,200"/>
+<area shape="rect" id="Node000008" title=" " alt="" coords="160,245,208,272"/>
+<area shape="poly" id="edge9_Node000007_Node000008" title=" " alt="" coords="250,200,210,237,206,233,246,196"/>
+<area shape="rect" id="Node000009" title=" " alt="" coords="232,245,322,272"/>
+<area shape="poly" id="edge10_Node000007_Node000009" title=" " alt="" coords="267,197,274,230,269,231,261,198"/>
+<area shape="rect" id="Node000010" title=" " alt="" coords="5,245,136,272"/>
+<area shape="poly" id="edge11_Node000007_Node000010" title=" " alt="" coords="229,200,119,242,117,237,227,195"/>
+<area shape="poly" id="edge13_Node000011_Node000003" title=" " alt="" coords="658,123,655,160,648,181,638,199,621,216,600,230,557,249,555,244,598,225,617,212,634,196,644,179,649,159,653,123"/>
+<area shape="poly" id="edge14_Node000011_Node000005" title=" " alt="" coords="638,125,607,161,603,157,634,122"/>
+<area shape="rect" id="Node000012" title=" " alt="" coords="698,171,763,197"/>
+<area shape="poly" id="edge15_Node000011_Node000012" title=" " alt="" coords="676,121,710,157,706,161,672,125"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..b6187ca611c2d946c3bfd2a311546bf8730fd325
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8cpp__incl.md5
@@ -0,0 +1 @@
+4994687d8fe9d8c98817bce7cd838396
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8cpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8cpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..4757a66256d215ad1854a2a12e45b5f6676376ab
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8cpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..84a25d726e556c5b377c215dabc77a7dd97132f4
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: script_worker.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">script_worker.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QObject&gt;</code><br />
+<code>#include &lt;QString&gt;</code><br />
+<code>#include &lt;QProcess&gt;</code><br />
+<code>#include &lt;QList&gt;</code><br />
+<code>#include &quot;<a class="el" href="notebook__converter_8hpp_source.html">notebook_converter.hpp</a>&quot;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for script_worker.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="script__worker_8hpp__incl.png" border="0" usemap="#ascript__worker_8hpp" alt=""/></div>
+<map name="ascript__worker_8hpp" id="ascript__worker_8hpp">
+<area shape="rect" title=" " alt="" coords="151,5,276,32"/>
+<area shape="rect" title=" " alt="" coords="5,155,75,181"/>
+<area shape="poly" title=" " alt="" coords="187,35,149,55,111,82,82,112,58,143,54,140,78,109,108,78,146,51,184,30"/>
+<area shape="rect" title=" " alt="" coords="99,155,165,181"/>
+<area shape="poly" title=" " alt="" coords="180,35,148,54,135,66,124,81,119,95,118,110,124,140,118,140,113,110,114,94,119,79,131,63,145,49,178,30"/>
+<area shape="rect" title=" " alt="" coords="318,80,397,107"/>
+<area shape="poly" title=" " alt="" coords="240,30,320,70,317,75,237,35"/>
+<area shape="rect" title=" " alt="" coords="420,80,473,107"/>
+<area shape="poly" title=" " alt="" coords="256,30,406,76,405,81,254,35"/>
+<area shape="rect" href="notebook__converter_8hpp.html" title=" " alt="" coords="133,80,294,107"/>
+<area shape="poly" title=" " alt="" coords="216,33,216,64,211,64,211,33"/>
+<area shape="poly" title=" " alt="" coords="184,110,85,151,83,146,182,105"/>
+<area shape="poly" title=" " alt="" coords="201,109,159,146,155,142,197,105"/>
+<area shape="rect" title=" " alt="" coords="189,155,238,181"/>
+<area shape="poly" title=" " alt="" coords="216,107,216,139,211,139,211,107"/>
+<area shape="rect" title=" " alt="" coords="262,155,351,181"/>
+<area shape="poly" title=" " alt="" coords="231,105,280,143,277,147,228,109"/>
+<area shape="rect" title=" " alt="" coords="375,155,505,181"/>
+<area shape="poly" title=" " alt="" coords="254,105,387,147,385,152,252,110"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="script__worker_8hpp__dep__incl.png" border="0" usemap="#ascript__worker_8hppdep" alt=""/></div>
+<map name="ascript__worker_8hppdep" id="ascript__worker_8hppdep">
+<area shape="rect" title=" " alt="" coords="80,5,204,32"/>
+<area shape="rect" href="script__worker_8cpp.html" title=" " alt="" coords="5,80,130,107"/>
+<area shape="poly" title=" " alt="" coords="120,45,82,82,79,78,117,41"/>
+<area shape="rect" href="task__executor_8cpp.html" title=" " alt="" coords="154,80,282,107"/>
+<area shape="poly" title=" " alt="" coords="168,41,207,78,203,82,164,45"/>
+</map>
+</div>
+</div>
+<p><a href="script__worker_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classScriptWorker.html">ScriptWorker</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Manages the execution of scripts for tasks.  <a href="classScriptWorker.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..975bc02b242502e4babe77db5273d0a381090a88
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__dep__incl.map
@@ -0,0 +1,7 @@
+<map id="script_worker.hpp" name="script_worker.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="80,5,204,32"/>
+<area shape="rect" id="Node000002" href="$script__worker_8cpp.html" title=" " alt="" coords="5,80,130,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="120,45,82,82,79,78,117,41"/>
+<area shape="rect" id="Node000003" href="$task__executor_8cpp.html" title=" " alt="" coords="154,80,282,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="168,41,207,78,203,82,164,45"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..5c94b416522e8c9e43f9acba0f46354fc7541d72
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+9744ed70c3899dcfe50730e3baa62e30
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..d94eb1d863d6d17ed6d6956e90a3fe85835e2287
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..ac6e458a7c5793bd2382135f8ca8f6d5208f132f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__incl.map
@@ -0,0 +1,21 @@
+<map id="script_worker.hpp" name="script_worker.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="151,5,276,32"/>
+<area shape="rect" id="Node000002" title=" " alt="" coords="5,155,75,181"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="187,35,149,55,111,82,82,112,58,143,54,140,78,109,108,78,146,51,184,30"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="99,155,165,181"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="180,35,148,54,135,66,124,81,119,95,118,110,124,140,118,140,113,110,114,94,119,79,131,63,145,49,178,30"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="318,80,397,107"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="240,30,320,70,317,75,237,35"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="420,80,473,107"/>
+<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="256,30,406,76,405,81,254,35"/>
+<area shape="rect" id="Node000006" href="$notebook__converter_8hpp.html" title=" " alt="" coords="133,80,294,107"/>
+<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="216,33,216,64,211,64,211,33"/>
+<area shape="poly" id="edge6_Node000006_Node000002" title=" " alt="" coords="184,110,85,151,83,146,182,105"/>
+<area shape="poly" id="edge7_Node000006_Node000003" title=" " alt="" coords="201,109,159,146,155,142,197,105"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="189,155,238,181"/>
+<area shape="poly" id="edge8_Node000006_Node000007" title=" " alt="" coords="216,107,216,139,211,139,211,107"/>
+<area shape="rect" id="Node000008" title=" " alt="" coords="262,155,351,181"/>
+<area shape="poly" id="edge9_Node000006_Node000008" title=" " alt="" coords="231,105,280,143,277,147,228,109"/>
+<area shape="rect" id="Node000009" title=" " alt="" coords="375,155,505,181"/>
+<area shape="poly" id="edge10_Node000006_Node000009" title=" " alt="" coords="254,105,387,147,385,152,252,110"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..3452824b3a0d868cbfedbc40f6349f3877a763a5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__incl.md5
@@ -0,0 +1 @@
+7a7bba5d0acf6bc734e9dbe6523320a6
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..212cf11905160f95b85dd8867a6bc8d7fb04aea2
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..af47e253da3d2c543c323229af53e014c7b40747
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/script__worker_8hpp_source.html
@@ -0,0 +1,178 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: script_worker.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">script_worker.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="script__worker_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef SCRIPT_WORKER_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define SCRIPT_WORKER_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &lt;QObject&gt;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include &lt;QString&gt;</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="preprocessor">#include &lt;QProcess&gt;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;QList&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &quot;<a class="code" href="notebook__converter_8hpp.html">notebook_converter.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="keyword">class </span><a class="code hl_class" href="classProcessRunner.html">ProcessRunner</a>;</div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span> </div>
+<div class="foldopen" id="foldopen00021" data-start="{" data-end="};">
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"><a class="line" href="classScriptWorker.html">   21</a></span><span class="keyword">class </span><a class="code hl_class" href="classScriptWorker.html">ScriptWorker</a> : <span class="keyword">public</span> <a class="code hl_class" href="classQObject.html">QObject</a> {</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span>    Q_OBJECT</div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span> </div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>    <a class="code hl_function" href="classScriptWorker.html#a1eb9773d50b730f913bb60149515aef5">ScriptWorker</a>(<span class="keyword">const</span> QString &amp;notebookPath,</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span>                 <span class="keyword">const</span> QString &amp;convertedScriptPath,</div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span>                 <span class="keyword">const</span> QString &amp;evalScriptPath,</div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span>                 <span class="keywordtype">bool</span> parallelizedEvaluation,</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>                 <span class="keywordtype">int</span> timeoutSeconds);</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span><span class="keyword">public</span> Q_SLOTS:</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>    <span class="keywordtype">void</span> <a class="code hl_slot" href="classScriptWorker.html#a501653e756b40c33f4bd37957b398de3">startExecution</a>();</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span> </div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span>    <span class="keywordtype">void</span> <a class="code hl_slot" href="classScriptWorker.html#aafadef7996317ca83dcb2605777affe2">forceStop</a>();</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span> </div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span>    <span class="keywordtype">void</span> <a class="code hl_slot" href="classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523">executePythonScript</a>(<span class="keyword">const</span> QString &amp;scriptPath, <span class="keyword">const</span> QString &amp;name);</div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span> </div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span>Q_SIGNALS:</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="classScriptWorker.html#ac33ab3bb0d1e7e9e0070ac3b7f33b633">   59</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classScriptWorker.html#ac33ab3bb0d1e7e9e0070ac3b7f33b633">finished</a>();</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="classScriptWorker.html#a5f0a6e5095c8e55559045d7d9d2e2e1a">   65</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classScriptWorker.html#a5f0a6e5095c8e55559045d7d9d2e2e1a">failed</a>(<span class="keyword">const</span> QString &amp;error);</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span> </div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>    <span class="keywordtype">void</span> convertAndExecuteNotebook();</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span> </div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>    <span class="keywordtype">void</span> executeConvertedScript();</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span> </div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>    <span class="keywordtype">void</span> evaluateScriptInParallel();</div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>    <span class="keywordtype">void</span> checkResult();</div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span> </div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>    <span class="keywordtype">void</span> checkAndEmitFinished();</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span> </div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>    QString formatMessage(<span class="keyword">const</span> QString &amp;msg, <span class="keywordtype">bool</span> fromEval = <span class="keyword">false</span>);</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span> </div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span>    QString notebookPath; </div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span>    QString convertedScriptPath; </div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span>    QString evalScriptPath; </div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>    <span class="keywordtype">bool</span> parallelizedEvaluationRequired; </div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span>    <span class="keywordtype">int</span> timeoutSeconds; </div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span> </div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span>    <span class="keywordtype">bool</span> mainScriptFinished; </div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span>    <span class="keywordtype">bool</span> evalScriptFinished; </div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span> </div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>    QList&lt;ProcessRunner*&gt; processRunners; </div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>    <a class="code hl_class" href="classNotebookConverter.html">NotebookConverter</a> converter; </div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span> </div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>    QString errorOutput; </div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span>    QString evaluationOutput; </div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span>};</div>
+</div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span> </div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span><span class="preprocessor">#endif </span><span class="comment">// SCRIPT_WORKER_HPP</span></div>
+<div class="ttc" id="aclassNotebookConverter_html"><div class="ttname"><a href="classNotebookConverter.html">NotebookConverter</a></div><div class="ttdoc">A class for converting Jupyter notebooks to Python scripts and processing task pools.</div><div class="ttdef"><b>Definition</b> notebook_converter.hpp:23</div></div>
+<div class="ttc" id="aclassProcessRunner_html"><div class="ttname"><a href="classProcessRunner.html">ProcessRunner</a></div><div class="ttdoc">Manages the execution of an external process with a timeout.</div><div class="ttdef"><b>Definition</b> process_runner.hpp:15</div></div>
+<div class="ttc" id="aclassQObject_html"><div class="ttname"><a href="classQObject.html">QObject</a></div></div>
+<div class="ttc" id="aclassScriptWorker_html"><div class="ttname"><a href="classScriptWorker.html">ScriptWorker</a></div><div class="ttdoc">Manages the execution of scripts for tasks.</div><div class="ttdef"><b>Definition</b> script_worker.hpp:21</div></div>
+<div class="ttc" id="aclassScriptWorker_html_a1eb9773d50b730f913bb60149515aef5"><div class="ttname"><a href="classScriptWorker.html#a1eb9773d50b730f913bb60149515aef5">ScriptWorker::ScriptWorker</a></div><div class="ttdeci">ScriptWorker(const QString &amp;notebookPath, const QString &amp;convertedScriptPath, const QString &amp;evalScriptPath, bool parallelizedEvaluation, int timeoutSeconds)</div><div class="ttdoc">Constructs a ScriptWorker object.</div><div class="ttdef"><b>Definition</b> script_worker.cpp:25</div></div>
+<div class="ttc" id="aclassScriptWorker_html_a501653e756b40c33f4bd37957b398de3"><div class="ttname"><a href="classScriptWorker.html#a501653e756b40c33f4bd37957b398de3">ScriptWorker::startExecution</a></div><div class="ttdeci">void startExecution()</div><div class="ttdoc">Starts the execution of the scripts.</div><div class="ttdef"><b>Definition</b> script_worker.cpp:39</div></div>
+<div class="ttc" id="aclassScriptWorker_html_a5f0a6e5095c8e55559045d7d9d2e2e1a"><div class="ttname"><a href="classScriptWorker.html#a5f0a6e5095c8e55559045d7d9d2e2e1a">ScriptWorker::failed</a></div><div class="ttdeci">void failed(const QString &amp;error)</div><div class="ttdoc">Signal emitted when the script execution fails.</div></div>
+<div class="ttc" id="aclassScriptWorker_html_aafadef7996317ca83dcb2605777affe2"><div class="ttname"><a href="classScriptWorker.html#aafadef7996317ca83dcb2605777affe2">ScriptWorker::forceStop</a></div><div class="ttdeci">void forceStop()</div><div class="ttdoc">Forces the stop of all running scripts.</div><div class="ttdef"><b>Definition</b> script_worker.cpp:206</div></div>
+<div class="ttc" id="aclassScriptWorker_html_ac33ab3bb0d1e7e9e0070ac3b7f33b633"><div class="ttname"><a href="classScriptWorker.html#ac33ab3bb0d1e7e9e0070ac3b7f33b633">ScriptWorker::finished</a></div><div class="ttdeci">void finished()</div><div class="ttdoc">Signal emitted when the script execution finishes.</div></div>
+<div class="ttc" id="aclassScriptWorker_html_aebb9b3a7fe906be08a8ced46d1a5f523"><div class="ttname"><a href="classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523">ScriptWorker::executePythonScript</a></div><div class="ttdeci">void executePythonScript(const QString &amp;scriptPath, const QString &amp;name)</div><div class="ttdoc">Executes a given Python script.</div><div class="ttdef"><b>Definition</b> script_worker.cpp:172</div></div>
+<div class="ttc" id="anotebook__converter_8hpp_html"><div class="ttname"><a href="notebook__converter_8hpp.html">notebook_converter.hpp</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_0.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_0.js
new file mode 100644
index 0000000000000000000000000000000000000000..ad437f6fbf63dc1b641f0ca9ec74db3beedafcfc
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_0.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+  ['converted_5fscript_5fpath_0',['CONVERTED_SCRIPT_PATH',['../namespaceFolderStructureConstants.html#a82483c09d34f6dbea6451b921b231c5a',1,'FolderStructureConstants']]],
+  ['convertnotebook_1',['convertNotebook',['../classNotebookConverter.html#a8b06d3bc01057ddd936977bded4297f4',1,'NotebookConverter']]],
+  ['custom_5flist_5fwidget_2ecpp_2',['custom_list_widget.cpp',['../custom__list__widget_8cpp.html',1,'']]],
+  ['custom_5flist_5fwidget_2ehpp_3',['custom_list_widget.hpp',['../custom__list__widget_8hpp.html',1,'']]],
+  ['customlistwidget_4',['CustomListWidget',['../classCustomListWidget.html',1,'CustomListWidget'],['../classCustomListWidget.html#ab37ab040c9872e60767fff8d1525ccad',1,'CustomListWidget::CustomListWidget()']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_1.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_1.js
new file mode 100644
index 0000000000000000000000000000000000000000..66fdf9a59572e8b56cd5e528dad9ebc0fad104ef
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_1.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['description_0',['description',['../structSubtask.html#a9b2edd425425878f6e57a2f213b1211a',1,'Subtask']]],
+  ['difficulty_1',['difficulty',['../structTask.html#a92a16f5ec66f7511f0d0ce0fd759bf9e',1,'Task']]],
+  ['difficulty_5flevels_5fdefinition_5fpath_2',['DIFFICULTY_LEVELS_DEFINITION_PATH',['../namespaceFolderStructureConstants.html#a4a34d956c5883529b64e6bb183d768a7',1,'FolderStructureConstants']]],
+  ['difficultyhexcolor_3',['difficultyHexColor',['../structTask.html#a6fe956adc87191ee794c5bccf68c292b',1,'Task']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_10.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_10.js
new file mode 100644
index 0000000000000000000000000000000000000000..d3a2d282765e8f93d0484d6e07490363f50f8dc3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_10.js
@@ -0,0 +1,29 @@
+var searchData=
+[
+  ['task_0',['Task',['../structTask.html',1,'']]],
+  ['task_2ehpp_1',['task.hpp',['../task_8hpp.html',1,'']]],
+  ['task_5fcell_5ftag_2',['TASK_CELL_TAG',['../notebook__converter_8cpp.html#a577f6caa2b74a38695dcadccd277cd41',1,'notebook_converter.cpp']]],
+  ['task_5fdefinitions_5fpath_3',['TASK_DEFINITIONS_PATH',['../namespaceFolderStructureConstants.html#a84dc4e92b3d05fcef00c9abb99f9f9da',1,'FolderStructureConstants']]],
+  ['task_5fexecutor_2ecpp_4',['task_executor.cpp',['../task__executor_8cpp.html',1,'']]],
+  ['task_5fexecutor_2ehpp_5',['task_executor.hpp',['../task__executor_8hpp.html',1,'']]],
+  ['task_5fmanager_2ecpp_6',['task_manager.cpp',['../task__manager_8cpp.html',1,'']]],
+  ['task_5fmanager_2ehpp_7',['task_manager.hpp',['../task__manager_8hpp.html',1,'']]],
+  ['task_5fparser_2ecpp_8',['task_parser.cpp',['../task__parser_8cpp.html',1,'']]],
+  ['task_5fparser_2ehpp_9',['task_parser.hpp',['../task__parser_8hpp.html',1,'']]],
+  ['task_5fui_2ecpp_10',['task_ui.cpp',['../task__ui_8cpp.html',1,'']]],
+  ['task_5fui_2ehpp_11',['task_ui.hpp',['../task__ui_8hpp.html',1,'']]],
+  ['taskexecutionfailed_12',['taskExecutionFailed',['../classTaskExecutor.html#adeffddd301a31fe1891712d30096a468',1,'TaskExecutor']]],
+  ['taskexecutionfinished_13',['taskExecutionFinished',['../classTaskExecutor.html#ad2f2dd7e0d22d7b3bb2ec532f158bddc',1,'TaskExecutor']]],
+  ['taskexecutionstarted_14',['taskExecutionStarted',['../classTaskExecutor.html#a2b22d6b9fa450f3471de4359b6f3b131',1,'TaskExecutor']]],
+  ['taskexecutor_15',['TaskExecutor',['../classTaskExecutor.html',1,'TaskExecutor'],['../classTaskExecutor.html#ac6783ed16b392507bfaabd21422ee140',1,'TaskExecutor::TaskExecutor()']]],
+  ['taskmanager_16',['TaskManager',['../classTaskManager.html',1,'TaskManager'],['../classTaskManager.html#a9c906455542360f6760169599f2640a3',1,'TaskManager::TaskManager()']]],
+  ['taskparser_17',['TaskParser',['../classTaskParser.html',1,'']]],
+  ['taskselected_18',['taskSelected',['../classSidebar.html#ad4d587292c62ad30ac9f1feac5d39499',1,'Sidebar::taskSelected()'],['../classTaskUI.html#af43308f1438155bd927357ac93c7b9db',1,'TaskUI::taskSelected()']]],
+  ['taskui_19',['TaskUI',['../classTaskUI.html',1,'TaskUI'],['../classTaskUI.html#a86f09b07fe3b4fd956f8c4ab02b8fae2',1,'TaskUI::TaskUI()']]],
+  ['timeout_20',['timeout',['../classProcessRunner.html#ae42c9c4e04890fffa674e06eedf631b3',1,'ProcessRunner']]],
+  ['timeoutseconds_21',['timeoutSeconds',['../structSubtask.html#a69b5b90686d9e1c75b0f071a7b9dc31b',1,'Subtask']]],
+  ['title_22',['title',['../structSubtask.html#a4fc46ff8e54ab67641df5ff45e7e0cb4',1,'Subtask::title'],['../structTask.html#a0ab070dbbe73ff2a4306fe20ab75400f',1,'Task::title']]],
+  ['togglesolution_23',['toggleSolution',['../classNotebookConverter.html#a665ba1030d993bd9e165fca123d92032',1,'NotebookConverter::toggleSolution()'],['../classTaskManager.html#a9f3de937346f77e565d555a59a8a0da0',1,'TaskManager::toggleSolution()']]],
+  ['topic_24',['topic',['../structTask.html#a8c37303702dbbb22f7430a73f9a3ed08',1,'Task']]],
+  ['topic_5fdefinitions_5fpath_25',['TOPIC_DEFINITIONS_PATH',['../namespaceFolderStructureConstants.html#adc8fa9eae998a60723424421756bd65b',1,'FolderStructureConstants']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_11.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_11.js
new file mode 100644
index 0000000000000000000000000000000000000000..b569e8dd65034bd56e88ddd2a2441644489fb726
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_11.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['ui_0',['Ui',['../namespaceUi.html',1,'']]],
+  ['updatesubtaskitemsui_1',['updateSubtaskItemsUI',['../classTaskUI.html#a9f8872c2393d36d7c3e57cf7501c745e',1,'TaskUI']]],
+  ['updateui_2',['updateUI',['../classSubtaskItem.html#a005df51b50001f3e9c95652e845cf424',1,'SubtaskItem']]],
+  ['user_5fworkspace_3',['USER_WORKSPACE',['../namespaceFolderStructureConstants.html#ac7bdb4609b31965b63ac7d3ce2b197c3',1,'FolderStructureConstants']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_12.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_12.js
new file mode 100644
index 0000000000000000000000000000000000000000..6515b6db84a2e514a605f7ba960d3ce1290965cb
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_12.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['write_5fcode_5fmarker_0',['WRITE_CODE_MARKER',['../notebook__converter_8cpp.html#a6c92986de28899546e13ab1a37bf0722',1,'notebook_converter.cpp']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_13.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_13.js
new file mode 100644
index 0000000000000000000000000000000000000000..c90a24e53ad51c2f0f6f500fab83e6df27e508e9
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_13.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['_7eexecuteframe_0',['~ExecuteFrame',['../classExecuteFrame.html#a0f49e809cf1c14026958bf26d3cf399b',1,'ExecuteFrame']]],
+  ['_7elearnenvironment_1',['~LearnEnvironment',['../classLearnEnvironment.html#ad2086d08e20cef426a861e1093cfc987',1,'LearnEnvironment']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_2.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_2.js
new file mode 100644
index 0000000000000000000000000000000000000000..b19abe6f1c58a2612c85ec5602b6e72bace74387
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_2.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+  ['errorready_0',['errorReady',['../classProcessRunner.html#a9ad2c856469a7129c905721309620e05',1,'ProcessRunner']]],
+  ['evaluation_5fscripts_5fsource_5fpath_1',['EVALUATION_SCRIPTS_SOURCE_PATH',['../namespaceFolderStructureConstants.html#afbae3ede611451504507436474ae482e',1,'FolderStructureConstants']]],
+  ['evaluationfilepath_2',['evaluationFilePath',['../structSubtask.html#ae73daaeeae0fa09de92ef428be2fdab3',1,'Subtask']]],
+  ['execute_5fframe_2ecpp_3',['execute_frame.cpp',['../execute__frame_8cpp.html',1,'']]],
+  ['execute_5fframe_2ehpp_4',['execute_frame.hpp',['../execute__frame_8hpp.html',1,'']]],
+  ['executeframe_5',['ExecuteFrame',['../classExecuteFrame.html',1,'ExecuteFrame'],['../classExecuteFrame.html#a9a3ca41869860aee87ee8198fd629f8b',1,'ExecuteFrame::ExecuteFrame()']]],
+  ['executepythonscript_6',['executePythonScript',['../classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523',1,'ScriptWorker']]],
+  ['executetask_7',['executeTask',['../classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d',1,'TaskExecutor']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_3.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_3.js
new file mode 100644
index 0000000000000000000000000000000000000000..e36f208fb7039dca309ef9c2da0dde8dab95503e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_3.js
@@ -0,0 +1,15 @@
+var searchData=
+[
+  ['failed_0',['failed',['../classScriptWorker.html#a5f0a6e5095c8e55559045d7d9d2e2e1a',1,'ScriptWorker']]],
+  ['failedrobotresetui_1',['failedRobotResetUI',['../classTaskUI.html#a8cb2994522ad6b1b59383515edddead3',1,'TaskUI']]],
+  ['file_2',['file',['../structSubtask.html#a905ed579cc13759a257c37d261141281',1,'Subtask']]],
+  ['filepath_3',['filePath',['../structSubtask.html#adc3ab0bdda7c565666095845a3e4567f',1,'Subtask']]],
+  ['fillsidebarwithtasks_4',['fillSidebarWithTasks',['../classSidebar.html#abf817c38465f3382b90d409e9cf87777',1,'Sidebar']]],
+  ['finished_5',['finished',['../classProcessRunner.html#a76c6897c0cf00b9034e6deb9662debbf',1,'ProcessRunner::finished()'],['../classScriptWorker.html#ac33ab3bb0d1e7e9e0070ac3b7f33b633',1,'ScriptWorker::finished()']]],
+  ['finishedrobotresetui_6',['finishedRobotResetUI',['../classTaskUI.html#a6c2ca067880d519ab255a7608a268c8f',1,'TaskUI']]],
+  ['folder_7',['folder',['../structTask.html#a470ace63434687116684f003a27dc439',1,'Task']]],
+  ['folder_5fstructure_5fconstants_2ehpp_8',['folder_structure_constants.hpp',['../folder__structure__constants_8hpp.html',1,'']]],
+  ['folderstructureconstants_9',['FolderStructureConstants',['../namespaceFolderStructureConstants.html',1,'']]],
+  ['forceresetrobot_10',['forceResetRobot',['../classTaskManager.html#a9a858cb5aae71b691204c8561322677e',1,'TaskManager']]],
+  ['forcestop_11',['forceStop',['../classProcessRunner.html#abb4be6a4283702e38a9eb7d51438efb6',1,'ProcessRunner::forceStop()'],['../classScriptWorker.html#aafadef7996317ca83dcb2605777affe2',1,'ScriptWorker::forceStop()'],['../classTaskExecutor.html#a0a0c76bf999aea855cb83a6051864e09',1,'TaskExecutor::forceStop()']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_4.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_4.js
new file mode 100644
index 0000000000000000000000000000000000000000..72d3d1a44c152a007abd925893ccacd0d3c4ac4e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_4.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['getpackagepath_0',['getPackagePath',['../namespaceFolderStructureConstants.html#aa49dbebb86fde82b617e7db1193bd720',1,'FolderStructureConstants']]],
+  ['gettext_1',['getText',['../classExecuteFrame.html#a3ddc917ee39ffc1c54c491aab9ba7404',1,'ExecuteFrame']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_5.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_5.js
new file mode 100644
index 0000000000000000000000000000000000000000..9621490675848297821be833304ab398c8190646
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_5.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['hasbeenexecuted_0',['hasBeenExecuted',['../structSubtask.html#a0e3d8e77e26cdb58b2e9faa8ec2e1707',1,'Subtask']]],
+  ['hassolutioncells_1',['hasSolutionCells',['../classNotebookConverter.html#af64e43c667b96ba0926a715316002665',1,'NotebookConverter']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_6.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_6.js
new file mode 100644
index 0000000000000000000000000000000000000000..a90a4609229219d369dd2ae47550638ca77d7d52
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_6.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['inactive_0',['Inactive',['../task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0',1,'task.hpp']]],
+  ['initializeui_1',['initializeUI',['../classTaskUI.html#a62690c3b7147c20980da5c2323314025',1,'TaskUI']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_7.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_7.js
new file mode 100644
index 0000000000000000000000000000000000000000..f57c14a3a674c6efde95581b3c6cf556f5c1ed83
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['json_0',['json',['../notebook__converter_8cpp.html#a0c01dbde6677d7e4769b85716c69c491',1,'notebook_converter.cpp']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_8.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_8.js
new file mode 100644
index 0000000000000000000000000000000000000000..2fe869eaaca5f63523d2104ac0d80a324989eeb7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_8.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+  ['lastexecutionerror_0',['lastExecutionError',['../structSubtask.html#a2c4bcefd1e42773c5e23abd9ba0b30f2',1,'Subtask']]],
+  ['lastexecutionfailed_1',['lastExecutionFailed',['../structSubtask.html#ab1e1bff66e7464efa54419b36006f1a8',1,'Subtask']]],
+  ['learn_5fenvironment_2ecpp_2',['learn_environment.cpp',['../learn__environment_8cpp.html',1,'']]],
+  ['learn_5fenvironment_2ehpp_3',['learn_environment.hpp',['../learn__environment_8hpp.html',1,'']]],
+  ['learnenvironment_4',['LearnEnvironment',['../classLearnEnvironment.html',1,'LearnEnvironment'],['../classLearnEnvironment.html#a25d7b0bd7b4270c7c2feeab3a9450d39',1,'LearnEnvironment::LearnEnvironment()']]],
+  ['leaveevent_5',['leaveEvent',['../classCustomListWidget.html#a5d487b35f9dc9cd601b962e68b142e0b',1,'CustomListWidget']]],
+  ['load_6',['load',['../classLearnEnvironment.html#af0c2b95f5853116a09c795d33eb47d52',1,'LearnEnvironment']]],
+  ['loadtasks_7',['loadTasks',['../classTaskParser.html#a86f40497d6666a02307886ed3a4056f3',1,'TaskParser']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_9.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_9.js
new file mode 100644
index 0000000000000000000000000000000000000000..ac591cf479eecbb746a677d7c1bdc1d7693ce28b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_9.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['mousemoveevent_0',['mouseMoveEvent',['../classCustomListWidget.html#adc3f7462d5db3e7c9fe4c5fd59076331',1,'CustomListWidget']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_a.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_a.js
new file mode 100644
index 0000000000000000000000000000000000000000..e5496358a4219f9d5a23bd3acb4119c1001f2412
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_a.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+  ['nexttask_0',['nextTask',['../classTaskManager.html#a327677e3a17f1a707095119328a96179',1,'TaskManager']]],
+  ['not_5fimplemented_5ferror_1',['NOT_IMPLEMENTED_ERROR',['../notebook__converter_8cpp.html#a8a72334e6ef797e624196b1d9e073c6e',1,'notebook_converter.cpp']]],
+  ['notebook_5fconverter_2ecpp_2',['notebook_converter.cpp',['../notebook__converter_8cpp.html',1,'']]],
+  ['notebook_5fconverter_2ehpp_3',['notebook_converter.hpp',['../notebook__converter_8hpp.html',1,'']]],
+  ['notebookconverter_4',['NotebookConverter',['../classNotebookConverter.html',1,'NotebookConverter'],['../classNotebookConverter.html#a11c8ed4604d4c29acd45d6225d80c464',1,'NotebookConverter::NotebookConverter()']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_b.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_b.js
new file mode 100644
index 0000000000000000000000000000000000000000..65284f85a81c9626f7a86f81f965cc593853d6aa
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_b.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['outputready_0',['outputReady',['../classProcessRunner.html#ad6840bbd9e54b7c6a0678dc9c5c792d7',1,'ProcessRunner']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_c.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_c.js
new file mode 100644
index 0000000000000000000000000000000000000000..254717cff986ab1d080ecc3cb7dac285ad2266d9
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_c.js
@@ -0,0 +1,12 @@
+var searchData=
+[
+  ['package_5fname_0',['PACKAGE_NAME',['../namespaceFolderStructureConstants.html#aa9f54b725067dc395f26c6608161dae9',1,'FolderStructureConstants']]],
+  ['parallelizedevaluationrequired_1',['parallelizedEvaluationRequired',['../structSubtask.html#ae0c283c25316796864e9ef0d766acb60',1,'Subtask']]],
+  ['parenttask_2',['parentTask',['../structSubtask.html#a4cdfbab855cd65277e17c8975bb0d730',1,'Subtask']]],
+  ['previoussubtasksrequired_3',['previousSubtasksRequired',['../structTask.html#add2905e57d8e714693b24cc8a9148a82',1,'Task']]],
+  ['previoustask_4',['previousTask',['../classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e',1,'TaskManager']]],
+  ['process_5frunner_2ecpp_5',['process_runner.cpp',['../process__runner_8cpp.html',1,'']]],
+  ['process_5frunner_2ehpp_6',['process_runner.hpp',['../process__runner_8hpp.html',1,'']]],
+  ['processrunner_7',['ProcessRunner',['../classProcessRunner.html',1,'ProcessRunner'],['../classProcessRunner.html#a8d3ba848e57c03660af7c68dcfd7e904',1,'ProcessRunner::ProcessRunner()']]],
+  ['processtaskpool_8',['processTaskPool',['../classNotebookConverter.html#a66b007e49cfe58d279c3ac279ced7213',1,'NotebookConverter']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_d.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_d.js
new file mode 100644
index 0000000000000000000000000000000000000000..bd68684ef79992e9e3f71646ae093031b423bafd
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_d.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+  ['qframe_0',['QFrame',['../classQFrame.html',1,'']]],
+  ['qlistwidget_1',['QListWidget',['../classQListWidget.html',1,'']]],
+  ['qobject_2',['QObject',['../classQObject.html',1,'']]],
+  ['queued_3',['Queued',['../task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a7b2f31b90fe1c2cc33a52233c1925df3',1,'task.hpp']]],
+  ['qwidget_4',['QWidget',['../classQWidget.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_e.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_e.js
new file mode 100644
index 0000000000000000000000000000000000000000..35a82c3a40d2d337fe27e3879c3f600246938de6
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_e.js
@@ -0,0 +1,12 @@
+var searchData=
+[
+  ['ready_0',['Ready',['../task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0ae7d31fc0602fb2ede144d18cdffd816b',1,'task.hpp']]],
+  ['reset_5frobot_5fbefore_5fexecuting_1',['reset_robot_before_executing',['../structSubtask.html#ae869bad678ab4835b24aeb56176c21aa',1,'Subtask']]],
+  ['reset_5frobot_5fscript_5fpath_2',['RESET_ROBOT_SCRIPT_PATH',['../namespaceFolderStructureConstants.html#a97e2abd38a09653e626ba46a5e5e10bd',1,'FolderStructureConstants']]],
+  ['resetnotebook_3',['resetNotebook',['../classNotebookConverter.html#aa14fbd73e3cc21866decd2e02572207d',1,'NotebookConverter']]],
+  ['resetrobot_4',['resetRobot',['../classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc',1,'TaskExecutor']]],
+  ['resetrobotfailed_5',['resetRobotFailed',['../classTaskExecutor.html#a782117a9e19eff6a87255c7358e87857',1,'TaskExecutor']]],
+  ['resetrobotfinished_6',['resetRobotFinished',['../classTaskExecutor.html#a7fb6bb2e760b08c4816f5c48902d6498',1,'TaskExecutor']]],
+  ['resetrobotstarted_7',['resetRobotStarted',['../classTaskExecutor.html#a9d92d24d74615c594a578eafb6d48799',1,'TaskExecutor']]],
+  ['running_8',['Running',['../task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a5bda814c4aedb126839228f1a3d92f09',1,'task.hpp']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_f.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_f.js
new file mode 100644
index 0000000000000000000000000000000000000000..fd705d5a99930bbc0407abf087a2a0b736158259
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/all_f.js
@@ -0,0 +1,34 @@
+var searchData=
+[
+  ['save_0',['save',['../classLearnEnvironment.html#aa684f56e6ba08652e1ddfa47304eb449',1,'LearnEnvironment']]],
+  ['script_5fworker_2ecpp_1',['script_worker.cpp',['../script__worker_8cpp.html',1,'']]],
+  ['script_5fworker_2ehpp_2',['script_worker.hpp',['../script__worker_8hpp.html',1,'']]],
+  ['scriptworker_3',['ScriptWorker',['../classScriptWorker.html',1,'ScriptWorker'],['../classScriptWorker.html#a1eb9773d50b730f913bb60149515aef5',1,'ScriptWorker::ScriptWorker()']]],
+  ['selecttask_4',['selectTask',['../classSidebar.html#a9b621329888b135c42333a7ce8a4cad4',1,'Sidebar::selectTask()'],['../classTaskManager.html#a51989e6fb895fd817286153750f07d75',1,'TaskManager::selectTask()']]],
+  ['setimage_5',['setImage',['../classExecuteFrame.html#a796e8a79e0bc372c47421617bc7c9100',1,'ExecuteFrame']]],
+  ['settaskmanager_6',['setTaskManager',['../classSubtaskItem.html#aebba84aaef3c06a0c3079cea7fcd4ba6',1,'SubtaskItem::setTaskManager()'],['../classTaskUI.html#a53f64716c6328b25e37d822e687886cf',1,'TaskUI::setTaskManager(TaskManager *manager)']]],
+  ['settaskui_7',['setTaskUI',['../classTaskUI.html#ab6f629b7a42a49b94250768fbed7f4f4',1,'TaskUI']]],
+  ['settext_8',['setText',['../classExecuteFrame.html#a659f12e489dcddf89818a116c1e7f742',1,'ExecuteFrame']]],
+  ['sidebar_9',['Sidebar',['../classSidebar.html',1,'Sidebar'],['../classSidebar.html#a874f7f7907a44517ee9cf9ac2c1888d7',1,'Sidebar::Sidebar()']]],
+  ['sidebar_2ecpp_10',['sidebar.cpp',['../sidebar_8cpp.html',1,'']]],
+  ['sidebar_2ehpp_11',['sidebar.hpp',['../sidebar_8hpp.html',1,'']]],
+  ['solution_5fcell_5fheader_12',['SOLUTION_CELL_HEADER',['../notebook__converter_8cpp.html#a22b163bef7c6dc038082729221692dfa',1,'notebook_converter.cpp']]],
+  ['solution_5fcell_5ftag_13',['SOLUTION_CELL_TAG',['../notebook__converter_8cpp.html#a213a8c8a72491ee237c3ce92f92191ec',1,'notebook_converter.cpp']]],
+  ['solution_5fcode_5fplaceholder_5fend_14',['SOLUTION_CODE_PLACEHOLDER_END',['../notebook__converter_8cpp.html#a87d746c0d44126e9db98540148634b18',1,'notebook_converter.cpp']]],
+  ['solution_5fcode_5fplaceholder_5fstart_15',['SOLUTION_CODE_PLACEHOLDER_START',['../notebook__converter_8cpp.html#a0f5a0941639b66358c741284acf0dced',1,'notebook_converter.cpp']]],
+  ['solution_5fremoved_5fcell_5ftag_16',['SOLUTION_REMOVED_CELL_TAG',['../notebook__converter_8cpp.html#a184e7635f439bf95093b6a066ce161d7',1,'notebook_converter.cpp']]],
+  ['solution_5fscripts_5fsource_5fpath_17',['SOLUTION_SCRIPTS_SOURCE_PATH',['../namespaceFolderStructureConstants.html#ae963e238a7326dd80a2401eae27c252a',1,'FolderStructureConstants']]],
+  ['solutionfilepath_18',['solutionFilePath',['../structSubtask.html#ad6350ae5d46df3d006f4f0787915ea9f',1,'Subtask']]],
+  ['start_19',['start',['../classProcessRunner.html#ae69a94ddf835cec0a63fe7f4fdb61934',1,'ProcessRunner']]],
+  ['startedrobotresetui_20',['startedRobotResetUI',['../classTaskUI.html#a11f88e4482442899fa19adf1f66fa030',1,'TaskUI']]],
+  ['startexecution_21',['startExecution',['../classScriptWorker.html#a501653e756b40c33f4bd37957b398de3',1,'ScriptWorker']]],
+  ['startstopsubtask_22',['startStopSubtask',['../classTaskManager.html#ac4c5170435b505415f49e40906888743',1,'TaskManager::startStopSubtask(Subtask &amp;subtask, bool startSolution=false)'],['../classTaskManager.html#a36aa4b88ce92147fc2bfe7b222e8d984',1,'TaskManager::startStopSubtask(const Subtask &amp;subtask)']]],
+  ['status_23',['status',['../structSubtask.html#a293ddda988cb5fe92fcb5e5189b86850',1,'Subtask']]],
+  ['subtask_24',['Subtask',['../structSubtask.html',1,'']]],
+  ['subtask_5fitem_2ecpp_25',['subtask_item.cpp',['../subtask__item_8cpp.html',1,'']]],
+  ['subtask_5fitem_2ehpp_26',['subtask_item.hpp',['../subtask__item_8hpp.html',1,'']]],
+  ['subtaskitem_27',['SubtaskItem',['../classSubtaskItem.html',1,'SubtaskItem'],['../classSubtaskItem.html#a63e6bb32b434cf04705924c3e2cdd0db',1,'SubtaskItem::SubtaskItem()']]],
+  ['subtasks_28',['subtasks',['../structTask.html#a7486a61c7f0eb8a952260ffe9c2a1af3',1,'Task']]],
+  ['subtaskstartstoprequested_29',['subtaskStartStopRequested',['../classSubtaskItem.html#a9a41e7bf314df5a4297c68509d531423',1,'SubtaskItem']]],
+  ['subtaskstatus_30',['SubtaskStatus',['../task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0',1,'task.hpp']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_0.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_0.js
new file mode 100644
index 0000000000000000000000000000000000000000..444c4ea0955ab1da301f3ca08382dc96b3d15f0b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['customlistwidget_0',['CustomListWidget',['../classCustomListWidget.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_1.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_1.js
new file mode 100644
index 0000000000000000000000000000000000000000..b89fcf028ed5049ecd7707b2b43c3f095f686a75
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['executeframe_0',['ExecuteFrame',['../classExecuteFrame.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_2.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_2.js
new file mode 100644
index 0000000000000000000000000000000000000000..043b71cdd7a693b72283d7a60c3b12c9786523d4
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['learnenvironment_0',['LearnEnvironment',['../classLearnEnvironment.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_3.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_3.js
new file mode 100644
index 0000000000000000000000000000000000000000..ab344a08cd27dd4ec0387f0214ddc8a6145c1cb6
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['notebookconverter_0',['NotebookConverter',['../classNotebookConverter.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_4.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_4.js
new file mode 100644
index 0000000000000000000000000000000000000000..5b44a9dd3ecb1b7d2b865b3f78e41b10444b35ae
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['processrunner_0',['ProcessRunner',['../classProcessRunner.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_5.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_5.js
new file mode 100644
index 0000000000000000000000000000000000000000..76010ea54a10d75ab2858178a35c16c720d7e788
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_5.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['qframe_0',['QFrame',['../classQFrame.html',1,'']]],
+  ['qlistwidget_1',['QListWidget',['../classQListWidget.html',1,'']]],
+  ['qobject_2',['QObject',['../classQObject.html',1,'']]],
+  ['qwidget_3',['QWidget',['../classQWidget.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_6.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_6.js
new file mode 100644
index 0000000000000000000000000000000000000000..154272abd43ee02cfacf75d87e9726b3bff24154
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_6.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['scriptworker_0',['ScriptWorker',['../classScriptWorker.html',1,'']]],
+  ['sidebar_1',['Sidebar',['../classSidebar.html',1,'']]],
+  ['subtask_2',['Subtask',['../structSubtask.html',1,'']]],
+  ['subtaskitem_3',['SubtaskItem',['../classSubtaskItem.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_7.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_7.js
new file mode 100644
index 0000000000000000000000000000000000000000..4d667db12deec0b28c20cc3170205aa4015a4bbc
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/classes_7.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+  ['task_0',['Task',['../structTask.html',1,'']]],
+  ['taskexecutor_1',['TaskExecutor',['../classTaskExecutor.html',1,'']]],
+  ['taskmanager_2',['TaskManager',['../classTaskManager.html',1,'']]],
+  ['taskparser_3',['TaskParser',['../classTaskParser.html',1,'']]],
+  ['taskui_4',['TaskUI',['../classTaskUI.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/close.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/close.svg
new file mode 100644
index 0000000000000000000000000000000000000000..337d6cc13298b861a04a41f0a1003a5c9b18c8ab
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/close.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   viewBox="0 0 11 11"
+   height="11"
+   width="11"
+   id="svg2"
+   version="1.1">
+  <defs
+     id="defs6" />
+  <path
+     id="path12"
+     d="M 5.5 0.5 A 5 5 0 0 0 0.5 5.5 A 5 5 0 0 0 5.5 10.5 A 5 5 0 0 0 10.5 5.5 A 5 5 0 0 0 5.5 0.5 z M 3.5820312 3 A 0.58291923 0.58291923 0 0 1 4 3.1757812 L 5.5 4.6757812 L 7 3.1757812 A 0.58291923 0.58291923 0 0 1 7.4003906 3 A 0.58291923 0.58291923 0 0 1 7.8242188 4 L 6.3242188 5.5 L 7.8242188 7 A 0.58291923 0.58291923 0 1 1 7 7.8242188 L 5.5 6.3242188 L 4 7.8242188 A 0.58291923 0.58291923 0 1 1 3.1757812 7 L 4.6757812 5.5 L 3.1757812 4 A 0.58291923 0.58291923 0 0 1 3.5820312 3 z "
+     style="stroke-width:1.09870648;fill:#bababa;fill-opacity:1" />
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/enums_0.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/enums_0.js
new file mode 100644
index 0000000000000000000000000000000000000000..3f0af20b134caa47a3d5df95385f892ac2e9eb99
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/enums_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['subtaskstatus_0',['SubtaskStatus',['../task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0',1,'task.hpp']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/enumvalues_0.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/enumvalues_0.js
new file mode 100644
index 0000000000000000000000000000000000000000..d21433565ed78ec0a61e6f5966af95315253a405
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/enumvalues_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['inactive_0',['Inactive',['../task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0',1,'task.hpp']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/enumvalues_1.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/enumvalues_1.js
new file mode 100644
index 0000000000000000000000000000000000000000..1224a37fcddd4c36d09b73ce674d97216c51e0ac
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/enumvalues_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['queued_0',['Queued',['../task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a7b2f31b90fe1c2cc33a52233c1925df3',1,'task.hpp']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/enumvalues_2.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/enumvalues_2.js
new file mode 100644
index 0000000000000000000000000000000000000000..76861568d80099850eee723b100b72bfa2bea339
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/enumvalues_2.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['ready_0',['Ready',['../task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0ae7d31fc0602fb2ede144d18cdffd816b',1,'task.hpp']]],
+  ['running_1',['Running',['../task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a5bda814c4aedb126839228f1a3d92f09',1,'task.hpp']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_0.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_0.js
new file mode 100644
index 0000000000000000000000000000000000000000..62772d8c12c5ef101fe3935859a567ef28a37cb8
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_0.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['custom_5flist_5fwidget_2ecpp_0',['custom_list_widget.cpp',['../custom__list__widget_8cpp.html',1,'']]],
+  ['custom_5flist_5fwidget_2ehpp_1',['custom_list_widget.hpp',['../custom__list__widget_8hpp.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_1.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_1.js
new file mode 100644
index 0000000000000000000000000000000000000000..4c48721b7b3da0c584e7f8d4a4e1f1e33a087f32
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['execute_5fframe_2ecpp_0',['execute_frame.cpp',['../execute__frame_8cpp.html',1,'']]],
+  ['execute_5fframe_2ehpp_1',['execute_frame.hpp',['../execute__frame_8hpp.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_2.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_2.js
new file mode 100644
index 0000000000000000000000000000000000000000..5a95b8f2c5683061dfe83ab029c1f320f7a6b78b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['folder_5fstructure_5fconstants_2ehpp_0',['folder_structure_constants.hpp',['../folder__structure__constants_8hpp.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_3.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_3.js
new file mode 100644
index 0000000000000000000000000000000000000000..df3f0e2da47087ebe250af0f22802fd2b5de6891
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_3.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['learn_5fenvironment_2ecpp_0',['learn_environment.cpp',['../learn__environment_8cpp.html',1,'']]],
+  ['learn_5fenvironment_2ehpp_1',['learn_environment.hpp',['../learn__environment_8hpp.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_4.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_4.js
new file mode 100644
index 0000000000000000000000000000000000000000..46965c9413f872f8bc1f9241d16f6e0879e59c49
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_4.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['notebook_5fconverter_2ecpp_0',['notebook_converter.cpp',['../notebook__converter_8cpp.html',1,'']]],
+  ['notebook_5fconverter_2ehpp_1',['notebook_converter.hpp',['../notebook__converter_8hpp.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_5.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_5.js
new file mode 100644
index 0000000000000000000000000000000000000000..01e628d538a9ce1019c830e1071703aa4ba2507a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_5.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['process_5frunner_2ecpp_0',['process_runner.cpp',['../process__runner_8cpp.html',1,'']]],
+  ['process_5frunner_2ehpp_1',['process_runner.hpp',['../process__runner_8hpp.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_6.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_6.js
new file mode 100644
index 0000000000000000000000000000000000000000..c0235e3d677e4e4cf620773da704af860f142138
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_6.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+  ['script_5fworker_2ecpp_0',['script_worker.cpp',['../script__worker_8cpp.html',1,'']]],
+  ['script_5fworker_2ehpp_1',['script_worker.hpp',['../script__worker_8hpp.html',1,'']]],
+  ['sidebar_2ecpp_2',['sidebar.cpp',['../sidebar_8cpp.html',1,'']]],
+  ['sidebar_2ehpp_3',['sidebar.hpp',['../sidebar_8hpp.html',1,'']]],
+  ['subtask_5fitem_2ecpp_4',['subtask_item.cpp',['../subtask__item_8cpp.html',1,'']]],
+  ['subtask_5fitem_2ehpp_5',['subtask_item.hpp',['../subtask__item_8hpp.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_7.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_7.js
new file mode 100644
index 0000000000000000000000000000000000000000..644771469fb66e2af94c96a64e4d7633ad8644a1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/files_7.js
@@ -0,0 +1,12 @@
+var searchData=
+[
+  ['task_2ehpp_0',['task.hpp',['../task_8hpp.html',1,'']]],
+  ['task_5fexecutor_2ecpp_1',['task_executor.cpp',['../task__executor_8cpp.html',1,'']]],
+  ['task_5fexecutor_2ehpp_2',['task_executor.hpp',['../task__executor_8hpp.html',1,'']]],
+  ['task_5fmanager_2ecpp_3',['task_manager.cpp',['../task__manager_8cpp.html',1,'']]],
+  ['task_5fmanager_2ehpp_4',['task_manager.hpp',['../task__manager_8hpp.html',1,'']]],
+  ['task_5fparser_2ecpp_5',['task_parser.cpp',['../task__parser_8cpp.html',1,'']]],
+  ['task_5fparser_2ehpp_6',['task_parser.hpp',['../task__parser_8hpp.html',1,'']]],
+  ['task_5fui_2ecpp_7',['task_ui.cpp',['../task__ui_8cpp.html',1,'']]],
+  ['task_5fui_2ehpp_8',['task_ui.hpp',['../task__ui_8hpp.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_0.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_0.js
new file mode 100644
index 0000000000000000000000000000000000000000..69aee7a79192b61b60ef5b9e02caa78db60bf505
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_0.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['convertnotebook_0',['convertNotebook',['../classNotebookConverter.html#a8b06d3bc01057ddd936977bded4297f4',1,'NotebookConverter']]],
+  ['customlistwidget_1',['CustomListWidget',['../classCustomListWidget.html#ab37ab040c9872e60767fff8d1525ccad',1,'CustomListWidget']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_1.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_1.js
new file mode 100644
index 0000000000000000000000000000000000000000..4b09bcfb51cdafe8db6bb0b45c47bd6cf5009d37
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_1.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['errorready_0',['errorReady',['../classProcessRunner.html#a9ad2c856469a7129c905721309620e05',1,'ProcessRunner']]],
+  ['executeframe_1',['ExecuteFrame',['../classExecuteFrame.html#a9a3ca41869860aee87ee8198fd629f8b',1,'ExecuteFrame']]],
+  ['executepythonscript_2',['executePythonScript',['../classScriptWorker.html#aebb9b3a7fe906be08a8ced46d1a5f523',1,'ScriptWorker']]],
+  ['executetask_3',['executeTask',['../classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d',1,'TaskExecutor']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_2.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_2.js
new file mode 100644
index 0000000000000000000000000000000000000000..ac8bc93d4af3c51eee7c9b3fc554dae806d4503d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_2.js
@@ -0,0 +1,10 @@
+var searchData=
+[
+  ['failed_0',['failed',['../classScriptWorker.html#a5f0a6e5095c8e55559045d7d9d2e2e1a',1,'ScriptWorker']]],
+  ['failedrobotresetui_1',['failedRobotResetUI',['../classTaskUI.html#a8cb2994522ad6b1b59383515edddead3',1,'TaskUI']]],
+  ['fillsidebarwithtasks_2',['fillSidebarWithTasks',['../classSidebar.html#abf817c38465f3382b90d409e9cf87777',1,'Sidebar']]],
+  ['finished_3',['finished',['../classProcessRunner.html#a76c6897c0cf00b9034e6deb9662debbf',1,'ProcessRunner::finished()'],['../classScriptWorker.html#ac33ab3bb0d1e7e9e0070ac3b7f33b633',1,'ScriptWorker::finished()']]],
+  ['finishedrobotresetui_4',['finishedRobotResetUI',['../classTaskUI.html#a6c2ca067880d519ab255a7608a268c8f',1,'TaskUI']]],
+  ['forceresetrobot_5',['forceResetRobot',['../classTaskManager.html#a9a858cb5aae71b691204c8561322677e',1,'TaskManager']]],
+  ['forcestop_6',['forceStop',['../classProcessRunner.html#abb4be6a4283702e38a9eb7d51438efb6',1,'ProcessRunner::forceStop()'],['../classScriptWorker.html#aafadef7996317ca83dcb2605777affe2',1,'ScriptWorker::forceStop()'],['../classTaskExecutor.html#a0a0c76bf999aea855cb83a6051864e09',1,'TaskExecutor::forceStop()']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_3.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_3.js
new file mode 100644
index 0000000000000000000000000000000000000000..72d3d1a44c152a007abd925893ccacd0d3c4ac4e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_3.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['getpackagepath_0',['getPackagePath',['../namespaceFolderStructureConstants.html#aa49dbebb86fde82b617e7db1193bd720',1,'FolderStructureConstants']]],
+  ['gettext_1',['getText',['../classExecuteFrame.html#a3ddc917ee39ffc1c54c491aab9ba7404',1,'ExecuteFrame']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_4.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_4.js
new file mode 100644
index 0000000000000000000000000000000000000000..5587a35b19acba1ede79e4f0c5a4d92585530a57
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['hassolutioncells_0',['hasSolutionCells',['../classNotebookConverter.html#af64e43c667b96ba0926a715316002665',1,'NotebookConverter']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_5.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_5.js
new file mode 100644
index 0000000000000000000000000000000000000000..2cef5df150d2747f362140b6ba1e4a5f494ed2e2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_5.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['initializeui_0',['initializeUI',['../classTaskUI.html#a62690c3b7147c20980da5c2323314025',1,'TaskUI']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_6.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_6.js
new file mode 100644
index 0000000000000000000000000000000000000000..499a250faffc0f926768fbf169396d4323e8cf9a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_6.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['learnenvironment_0',['LearnEnvironment',['../classLearnEnvironment.html#a25d7b0bd7b4270c7c2feeab3a9450d39',1,'LearnEnvironment']]],
+  ['leaveevent_1',['leaveEvent',['../classCustomListWidget.html#a5d487b35f9dc9cd601b962e68b142e0b',1,'CustomListWidget']]],
+  ['load_2',['load',['../classLearnEnvironment.html#af0c2b95f5853116a09c795d33eb47d52',1,'LearnEnvironment']]],
+  ['loadtasks_3',['loadTasks',['../classTaskParser.html#a86f40497d6666a02307886ed3a4056f3',1,'TaskParser']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_7.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_7.js
new file mode 100644
index 0000000000000000000000000000000000000000..ac591cf479eecbb746a677d7c1bdc1d7693ce28b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['mousemoveevent_0',['mouseMoveEvent',['../classCustomListWidget.html#adc3f7462d5db3e7c9fe4c5fd59076331',1,'CustomListWidget']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_8.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_8.js
new file mode 100644
index 0000000000000000000000000000000000000000..c71ca881e56657d09ad6e33a8a4fa49878ba1c1d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_8.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['nexttask_0',['nextTask',['../classTaskManager.html#a327677e3a17f1a707095119328a96179',1,'TaskManager']]],
+  ['notebookconverter_1',['NotebookConverter',['../classNotebookConverter.html#a11c8ed4604d4c29acd45d6225d80c464',1,'NotebookConverter']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_9.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_9.js
new file mode 100644
index 0000000000000000000000000000000000000000..65284f85a81c9626f7a86f81f965cc593853d6aa
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_9.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['outputready_0',['outputReady',['../classProcessRunner.html#ad6840bbd9e54b7c6a0678dc9c5c792d7',1,'ProcessRunner']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_a.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_a.js
new file mode 100644
index 0000000000000000000000000000000000000000..7cc35da27598da4a51223949a3c4aabf7922cfb2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_a.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['previoustask_0',['previousTask',['../classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e',1,'TaskManager']]],
+  ['processrunner_1',['ProcessRunner',['../classProcessRunner.html#a8d3ba848e57c03660af7c68dcfd7e904',1,'ProcessRunner']]],
+  ['processtaskpool_2',['processTaskPool',['../classNotebookConverter.html#a66b007e49cfe58d279c3ac279ced7213',1,'NotebookConverter']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_b.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_b.js
new file mode 100644
index 0000000000000000000000000000000000000000..4dfa6e2031d896dea1bcccf9441a9716b0d99e84
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_b.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+  ['resetnotebook_0',['resetNotebook',['../classNotebookConverter.html#aa14fbd73e3cc21866decd2e02572207d',1,'NotebookConverter']]],
+  ['resetrobot_1',['resetRobot',['../classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc',1,'TaskExecutor']]],
+  ['resetrobotfailed_2',['resetRobotFailed',['../classTaskExecutor.html#a782117a9e19eff6a87255c7358e87857',1,'TaskExecutor']]],
+  ['resetrobotfinished_3',['resetRobotFinished',['../classTaskExecutor.html#a7fb6bb2e760b08c4816f5c48902d6498',1,'TaskExecutor']]],
+  ['resetrobotstarted_4',['resetRobotStarted',['../classTaskExecutor.html#a9d92d24d74615c594a578eafb6d48799',1,'TaskExecutor']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_c.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_c.js
new file mode 100644
index 0000000000000000000000000000000000000000..e10a842c9cd79bfd7442067f7e0013e461265a5c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_c.js
@@ -0,0 +1,17 @@
+var searchData=
+[
+  ['save_0',['save',['../classLearnEnvironment.html#aa684f56e6ba08652e1ddfa47304eb449',1,'LearnEnvironment']]],
+  ['scriptworker_1',['ScriptWorker',['../classScriptWorker.html#a1eb9773d50b730f913bb60149515aef5',1,'ScriptWorker']]],
+  ['selecttask_2',['selectTask',['../classSidebar.html#a9b621329888b135c42333a7ce8a4cad4',1,'Sidebar::selectTask()'],['../classTaskManager.html#a51989e6fb895fd817286153750f07d75',1,'TaskManager::selectTask()']]],
+  ['setimage_3',['setImage',['../classExecuteFrame.html#a796e8a79e0bc372c47421617bc7c9100',1,'ExecuteFrame']]],
+  ['settaskmanager_4',['setTaskManager',['../classSubtaskItem.html#aebba84aaef3c06a0c3079cea7fcd4ba6',1,'SubtaskItem::setTaskManager()'],['../classTaskUI.html#a53f64716c6328b25e37d822e687886cf',1,'TaskUI::setTaskManager(TaskManager *manager)']]],
+  ['settaskui_5',['setTaskUI',['../classTaskUI.html#ab6f629b7a42a49b94250768fbed7f4f4',1,'TaskUI']]],
+  ['settext_6',['setText',['../classExecuteFrame.html#a659f12e489dcddf89818a116c1e7f742',1,'ExecuteFrame']]],
+  ['sidebar_7',['Sidebar',['../classSidebar.html#a874f7f7907a44517ee9cf9ac2c1888d7',1,'Sidebar']]],
+  ['start_8',['start',['../classProcessRunner.html#ae69a94ddf835cec0a63fe7f4fdb61934',1,'ProcessRunner']]],
+  ['startedrobotresetui_9',['startedRobotResetUI',['../classTaskUI.html#a11f88e4482442899fa19adf1f66fa030',1,'TaskUI']]],
+  ['startexecution_10',['startExecution',['../classScriptWorker.html#a501653e756b40c33f4bd37957b398de3',1,'ScriptWorker']]],
+  ['startstopsubtask_11',['startStopSubtask',['../classTaskManager.html#ac4c5170435b505415f49e40906888743',1,'TaskManager::startStopSubtask(Subtask &amp;subtask, bool startSolution=false)'],['../classTaskManager.html#a36aa4b88ce92147fc2bfe7b222e8d984',1,'TaskManager::startStopSubtask(const Subtask &amp;subtask)']]],
+  ['subtaskitem_12',['SubtaskItem',['../classSubtaskItem.html#a63e6bb32b434cf04705924c3e2cdd0db',1,'SubtaskItem']]],
+  ['subtaskstartstoprequested_13',['subtaskStartStopRequested',['../classSubtaskItem.html#a9a41e7bf314df5a4297c68509d531423',1,'SubtaskItem']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_d.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_d.js
new file mode 100644
index 0000000000000000000000000000000000000000..98f8b40a23395302bd0d7fa14e661af8f005f0b9
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_d.js
@@ -0,0 +1,12 @@
+var searchData=
+[
+  ['taskexecutionfailed_0',['taskExecutionFailed',['../classTaskExecutor.html#adeffddd301a31fe1891712d30096a468',1,'TaskExecutor']]],
+  ['taskexecutionfinished_1',['taskExecutionFinished',['../classTaskExecutor.html#ad2f2dd7e0d22d7b3bb2ec532f158bddc',1,'TaskExecutor']]],
+  ['taskexecutionstarted_2',['taskExecutionStarted',['../classTaskExecutor.html#a2b22d6b9fa450f3471de4359b6f3b131',1,'TaskExecutor']]],
+  ['taskexecutor_3',['TaskExecutor',['../classTaskExecutor.html#ac6783ed16b392507bfaabd21422ee140',1,'TaskExecutor']]],
+  ['taskmanager_4',['TaskManager',['../classTaskManager.html#a9c906455542360f6760169599f2640a3',1,'TaskManager']]],
+  ['taskselected_5',['taskSelected',['../classSidebar.html#ad4d587292c62ad30ac9f1feac5d39499',1,'Sidebar::taskSelected()'],['../classTaskUI.html#af43308f1438155bd927357ac93c7b9db',1,'TaskUI::taskSelected(int index)']]],
+  ['taskui_6',['TaskUI',['../classTaskUI.html#a86f09b07fe3b4fd956f8c4ab02b8fae2',1,'TaskUI']]],
+  ['timeout_7',['timeout',['../classProcessRunner.html#ae42c9c4e04890fffa674e06eedf631b3',1,'ProcessRunner']]],
+  ['togglesolution_8',['toggleSolution',['../classNotebookConverter.html#a665ba1030d993bd9e165fca123d92032',1,'NotebookConverter::toggleSolution()'],['../classTaskManager.html#a9f3de937346f77e565d555a59a8a0da0',1,'TaskManager::toggleSolution()']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_e.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_e.js
new file mode 100644
index 0000000000000000000000000000000000000000..57e71ae831b5fdff4f854b044e984e033d7d03bf
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_e.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['updatesubtaskitemsui_0',['updateSubtaskItemsUI',['../classTaskUI.html#a9f8872c2393d36d7c3e57cf7501c745e',1,'TaskUI']]],
+  ['updateui_1',['updateUI',['../classSubtaskItem.html#a005df51b50001f3e9c95652e845cf424',1,'SubtaskItem']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_f.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_f.js
new file mode 100644
index 0000000000000000000000000000000000000000..c90a24e53ad51c2f0f6f500fab83e6df27e508e9
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/functions_f.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['_7eexecuteframe_0',['~ExecuteFrame',['../classExecuteFrame.html#a0f49e809cf1c14026958bf26d3cf399b',1,'ExecuteFrame']]],
+  ['_7elearnenvironment_1',['~LearnEnvironment',['../classLearnEnvironment.html#ad2086d08e20cef426a861e1093cfc987',1,'LearnEnvironment']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/mag.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/mag.svg
new file mode 100644
index 0000000000000000000000000000000000000000..ffb6cf0d0251cb0eb2b0173fbd77ee2373385527
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/mag.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   viewBox="0 0 20 19"
+   height="19"
+   width="20"
+   id="svg2"
+   version="1.1">
+  <defs
+     id="defs6" />
+  <circle
+     r="3.5"
+     cy="8.5"
+     cx="5.5"
+     id="path4611"
+     style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
+  <path
+     id="path4630"
+     d="m 8.1085854,11.109059 2.7823556,2.782356"
+     style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/mag_d.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/mag_d.svg
new file mode 100644
index 0000000000000000000000000000000000000000..4122773f92c32ce6bca14d8bf407c11c635bfcf3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/mag_d.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   viewBox="0 0 20 19"
+   height="19"
+   width="20"
+   id="svg2"
+   version="1.1">
+  <defs
+     id="defs6" />
+  <circle
+     r="3.5"
+     cy="8.5"
+     cx="5.5"
+     id="path4611"
+     style="fill:#000000;fill-opacity:0;stroke:#C5C5C5;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
+  <path
+     id="path4630"
+     d="m 8.1085854,11.109059 2.7823556,2.782356"
+     style="fill:none;stroke:#C5C5C5;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/mag_sel.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/mag_sel.svg
new file mode 100644
index 0000000000000000000000000000000000000000..553dba8773264b110b8c04cfaecf8d94df01a975
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/mag_sel.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   id="svg2"
+   width="20"
+   height="19"
+   viewBox="0 0 20 19"
+  >
+  <defs
+     id="defs6" />
+  <circle
+     style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+     id="path4611"
+     cx="5.5"
+     cy="8.5"
+     r="3.5" />
+  <path
+     style="fill:#656565;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="M 11,7 13.5,10 16,7 Z"
+     id="path4609"
+     />
+  <path
+     style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 8.1085854,11.109059 2.7823556,2.782356"
+     id="path4630"
+     />
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/mag_seld.svg b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/mag_seld.svg
new file mode 100644
index 0000000000000000000000000000000000000000..c906f84c83a39ee10705c40b722d4eda15966327
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/mag_seld.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   id="svg2"
+   width="20"
+   height="19"
+   viewBox="0 0 20 19"
+  >
+  <defs
+     id="defs6" />
+  <circle
+     style="fill:#000000;fill-opacity:0;stroke:#c5C5C5;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+     id="path4611"
+     cx="5.5"
+     cy="8.5"
+     r="3.5" />
+  <path
+     style="fill:#c5C5C5;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     d="M 11,7 13.5,10 16,7 Z"
+     id="path4609"
+     />
+  <path
+     style="fill:none;stroke:#c5C5C5;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="m 8.1085854,11.109059 2.7823556,2.782356"
+     id="path4630"
+     />
+</svg>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/namespaces_0.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/namespaces_0.js
new file mode 100644
index 0000000000000000000000000000000000000000..7c73a38bebe47a75e62f01f2928a4f4783d43569
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/namespaces_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['folderstructureconstants_0',['FolderStructureConstants',['../namespaceFolderStructureConstants.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/namespaces_1.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/namespaces_1.js
new file mode 100644
index 0000000000000000000000000000000000000000..4ddd094f0098c2685fce5c55ead1c9b33c7bb72d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/namespaces_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['ui_0',['Ui',['../namespaceUi.html',1,'']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/search.css b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/search.css
new file mode 100644
index 0000000000000000000000000000000000000000..19f76f9d5b96c7be552f7b18e5218e6bf5ac5ceb
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/search.css
@@ -0,0 +1,291 @@
+/*---------------- Search Box positioning */
+
+#main-menu > li:last-child {
+    /* This <li> object is the parent of the search bar */
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    height: 36px;
+    margin-right: 1em;
+}
+
+/*---------------- Search box styling */
+
+.SRPage * {
+    font-weight: normal;
+    line-height: normal;
+}
+
+dark-mode-toggle {
+    margin-left: 5px;
+    display: flex;
+    float: right;
+}
+
+#MSearchBox {
+    display: inline-block;
+    white-space : nowrap;
+    background: var(--search-background-color);
+    border-radius: 0.65em;
+    box-shadow: var(--search-box-shadow);
+    z-index: 102;
+}
+
+#MSearchBox .left {
+    display: inline-block;
+    vertical-align: middle;
+    height: 1.4em;
+}
+
+#MSearchSelect {
+    display: inline-block;
+    vertical-align: middle;
+    width: 20px;
+    height: 19px;
+    background-image: var(--search-magnification-select-image);
+    margin: 0 0 0 0.3em;
+    padding: 0;
+}
+
+#MSearchSelectExt {
+    display: inline-block;
+    vertical-align: middle;
+    width: 10px;
+    height: 19px;
+    background-image: var(--search-magnification-image);
+    margin: 0 0 0 0.5em;
+    padding: 0;
+}
+
+
+#MSearchField {
+    display: inline-block;
+    vertical-align: middle;
+    width: 7.5em;
+    height: 19px;
+    margin: 0 0.15em;
+    padding: 0;
+    line-height: 1em;
+    border:none;
+    color: var(--search-foreground-color);
+    outline: none;
+    font-family: var(--font-family-search);
+    -webkit-border-radius: 0px;
+    border-radius: 0px;
+    background: none;
+}
+
+@media(hover: none) {
+    /* to avoid zooming on iOS */
+    #MSearchField {
+        font-size: 16px;
+    }
+}
+
+#MSearchBox .right {
+    display: inline-block;
+    vertical-align: middle;
+    width: 1.4em;
+    height: 1.4em;
+}
+
+#MSearchClose {
+    display: none;
+    font-size: inherit;
+    background : none;
+    border: none;
+    margin: 0;
+    padding: 0;
+    outline: none;
+
+}
+
+#MSearchCloseImg {
+    padding: 0.3em;
+    margin: 0;
+}
+
+.MSearchBoxActive #MSearchField {
+    color: var(--search-active-color);
+}
+
+
+
+/*---------------- Search filter selection */
+
+#MSearchSelectWindow {
+    display: none;
+    position: absolute;
+    left: 0; top: 0;
+    border: 1px solid var(--search-filter-border-color);
+    background-color: var(--search-filter-background-color);
+    z-index: 10001;
+    padding-top: 4px;
+    padding-bottom: 4px;
+    -moz-border-radius: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -webkit-border-top-right-radius: 4px;
+    -webkit-border-bottom-left-radius: 4px;
+    -webkit-border-bottom-right-radius: 4px;
+    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+.SelectItem {
+    font: 8pt var(--font-family-search);
+    padding-left:  2px;
+    padding-right: 12px;
+    border: 0px;
+}
+
+span.SelectionMark {
+    margin-right: 4px;
+    font-family: var(--font-family-monospace);
+    outline-style: none;
+    text-decoration: none;
+}
+
+a.SelectItem {
+    display: block;
+    outline-style: none;
+    color: var(--search-filter-foreground-color);
+    text-decoration: none;
+    padding-left:   6px;
+    padding-right: 12px;
+}
+
+a.SelectItem:focus,
+a.SelectItem:active {
+    color: var(--search-filter-foreground-color);
+    outline-style: none;
+    text-decoration: none;
+}
+
+a.SelectItem:hover {
+    color: var(--search-filter-highlight-text-color);
+    background-color: var(--search-filter-highlight-bg-color);
+    outline-style: none;
+    text-decoration: none;
+    cursor: pointer;
+    display: block;
+}
+
+/*---------------- Search results window */
+
+iframe#MSearchResults {
+    /*width: 60ex;*/
+    height: 15em;
+}
+
+#MSearchResultsWindow {
+    display: none;
+    position: absolute;
+    left: 0; top: 0;
+    border: 1px solid var(--search-results-border-color);
+    background-color: var(--search-results-background-color);
+    z-index:10000;
+    width: 300px;
+    height: 400px;
+    overflow: auto;
+}
+
+/* ----------------------------------- */
+
+
+#SRIndex {
+    clear:both; 
+}
+
+.SREntry {
+    font-size: 10pt;
+    padding-left: 1ex;
+}
+
+.SRPage .SREntry {
+    font-size: 8pt;
+    padding: 1px 5px;
+}
+
+div.SRPage {
+    margin: 5px 2px;
+    background-color: var(--search-results-background-color);
+}
+
+.SRChildren {
+    padding-left: 3ex; padding-bottom: .5em 
+}
+
+.SRPage .SRChildren {
+    display: none;
+}
+
+.SRSymbol {
+    font-weight: bold;
+    color: var(--search-results-foreground-color);
+    font-family: var(--font-family-search);
+    text-decoration: none;
+    outline: none;
+}
+
+a.SRScope {
+    display: block;
+    color: var(--search-results-foreground-color);
+    font-family: var(--font-family-search);
+    font-size: 8pt;
+    text-decoration: none;
+    outline: none;
+}
+
+a.SRSymbol:focus, a.SRSymbol:active,
+a.SRScope:focus, a.SRScope:active {
+    text-decoration: underline;
+}
+
+span.SRScope {
+    padding-left: 4px;
+    font-family: var(--font-family-search);
+}
+
+.SRPage .SRStatus {
+    padding: 2px 5px;
+    font-size: 8pt;
+    font-style: italic;
+    font-family: var(--font-family-search);
+}
+
+.SRResult {
+    display: none;
+}
+
+div.searchresults {
+    margin-left: 10px;
+    margin-right: 10px;
+}
+
+/*---------------- External search page results */
+
+.pages b {
+   color: white;
+   padding: 5px 5px 3px 5px;
+   background-image: var(--nav-gradient-active-image-parent);
+   background-repeat: repeat-x;
+   text-shadow: 0 1px 1px #000000;
+}
+
+.pages {
+    line-height: 17px;
+    margin-left: 4px;
+    text-decoration: none;
+}
+
+.hl {
+    font-weight: bold;
+}
+
+#searchresults {
+    margin-bottom: 20px;
+}
+
+.searchpages {
+    margin-top: 10px;
+}
+
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/search.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/search.js
new file mode 100644
index 0000000000000000000000000000000000000000..666af01e5ea20fd9d1bcc438698e96a97ffb1533
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/search.js
@@ -0,0 +1,694 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
+const SEARCH_COOKIE_NAME = ''+'search_grp';
+
+const searchResults = new SearchResults();
+
+/* A class handling everything associated with the search panel.
+
+   Parameters:
+   name - The name of the global variable that will be
+          storing this instance.  Is needed to be able to set timeouts.
+   resultPath - path to use for external files
+*/
+function SearchBox(name, resultsPath, extension) {
+  if (!name || !resultsPath) {  alert("Missing parameters to SearchBox."); }
+  if (!extension || extension == "") { extension = ".html"; }
+
+  function getXPos(item) {
+    let x = 0;
+    if (item.offsetWidth) {
+      while (item && item!=document.body) {
+        x   += item.offsetLeft;
+        item = item.offsetParent;
+      }
+    }
+    return x;
+  }
+
+  function getYPos(item) {
+    let y = 0;
+    if (item.offsetWidth) {
+      while (item && item!=document.body) {
+        y   += item.offsetTop;
+        item = item.offsetParent;
+      }
+    }
+    return y;
+  }
+
+  // ---------- Instance variables
+  this.name                  = name;
+  this.resultsPath           = resultsPath;
+  this.keyTimeout            = 0;
+  this.keyTimeoutLength      = 500;
+  this.closeSelectionTimeout = 300;
+  this.lastSearchValue       = "";
+  this.lastResultsPage       = "";
+  this.hideTimeout           = 0;
+  this.searchIndex           = 0;
+  this.searchActive          = false;
+  this.extension             = extension;
+
+  // ----------- DOM Elements
+
+  this.DOMSearchField              = () => document.getElementById("MSearchField");
+  this.DOMSearchSelect             = () => document.getElementById("MSearchSelect");
+  this.DOMSearchSelectWindow       = () => document.getElementById("MSearchSelectWindow");
+  this.DOMPopupSearchResults       = () => document.getElementById("MSearchResults");
+  this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow");
+  this.DOMSearchClose              = () => document.getElementById("MSearchClose");
+  this.DOMSearchBox                = () => document.getElementById("MSearchBox");
+
+  // ------------ Event Handlers
+
+  // Called when focus is added or removed from the search field.
+  this.OnSearchFieldFocus = function(isActive) {
+    this.Activate(isActive);
+  }
+
+  this.OnSearchSelectShow = function() {
+    const searchSelectWindow = this.DOMSearchSelectWindow();
+    const searchField        = this.DOMSearchSelect();
+
+    const left = getXPos(searchField);
+    const top  = getYPos(searchField) + searchField.offsetHeight;
+
+    // show search selection popup
+    searchSelectWindow.style.display='block';
+    searchSelectWindow.style.left =  left + 'px';
+    searchSelectWindow.style.top  =  top  + 'px';
+
+    // stop selection hide timer
+    if (this.hideTimeout) {
+      clearTimeout(this.hideTimeout);
+      this.hideTimeout=0;
+    }
+    return false; // to avoid "image drag" default event
+  }
+
+  this.OnSearchSelectHide = function() {
+    this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this),
+                                  this.closeSelectionTimeout);
+  }
+
+  // Called when the content of the search field is changed.
+  this.OnSearchFieldChange = function(evt) {
+    if (this.keyTimeout) { // kill running timer
+      clearTimeout(this.keyTimeout);
+      this.keyTimeout = 0;
+    }
+
+    const e = evt ? evt : window.event; // for IE
+    if (e.keyCode==40 || e.keyCode==13) {
+      if (e.shiftKey==1) {
+        this.OnSearchSelectShow();
+        const win=this.DOMSearchSelectWindow();
+        for (let i=0;i<win.childNodes.length;i++) {
+          const child = win.childNodes[i]; // get span within a
+          if (child.className=='SelectItem') {
+            child.focus();
+            return;
+          }
+        }
+        return;
+      } else {
+        const elem = searchResults.NavNext(0);
+        if (elem) elem.focus();
+      }
+    } else if (e.keyCode==27) { // Escape out of the search field
+      e.stopPropagation();
+      this.DOMSearchField().blur();
+      this.DOMPopupSearchResultsWindow().style.display = 'none';
+      this.DOMSearchClose().style.display = 'none';
+      this.lastSearchValue = '';
+      this.Activate(false);
+      return;
+    }
+
+    // strip whitespaces
+    const searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+
+    if (searchValue != this.lastSearchValue) { // search value has changed
+      if (searchValue != "") { // non-empty search
+        // set timer for search update
+        this.keyTimeout = setTimeout(this.Search.bind(this), this.keyTimeoutLength);
+      } else { // empty search field
+        this.DOMPopupSearchResultsWindow().style.display = 'none';
+        this.DOMSearchClose().style.display = 'none';
+        this.lastSearchValue = '';
+      }
+    }
+  }
+
+  this.SelectItemCount = function() {
+    let count=0;
+    const win=this.DOMSearchSelectWindow();
+    for (let i=0;i<win.childNodes.length;i++) {
+      const child = win.childNodes[i]; // get span within a
+      if (child.className=='SelectItem') {
+        count++;
+      }
+    }
+    return count;
+  }
+
+  this.GetSelectionIdByName = function(name) {
+    let j=0;
+    const win=this.DOMSearchSelectWindow();
+    for (let i=0;i<win.childNodes.length;i++) {
+      const child = win.childNodes[i];
+      if (child.className=='SelectItem') {
+        if (child.childNodes[1].nodeValue==name) {
+          return j;
+        }
+        j++;
+      }
+    }
+    return 0;
+  }
+
+  this.SelectItemSet = function(id) {
+    let j=0;
+    const win=this.DOMSearchSelectWindow();
+    for (let i=0;i<win.childNodes.length;i++) {
+      const child = win.childNodes[i]; // get span within a
+      if (child.className=='SelectItem') {
+        const node = child.firstChild;
+        if (j==id) {
+          node.innerHTML='&#8226;';
+          Cookie.writeSetting(SEARCH_COOKIE_NAME, child.childNodes[1].nodeValue, 0)
+        } else {
+          node.innerHTML='&#160;';
+        }
+        j++;
+      }
+    }
+  }
+
+  // Called when an search filter selection is made.
+  // set item with index id as the active item
+  this.OnSelectItem = function(id) {
+    this.searchIndex = id;
+    this.SelectItemSet(id);
+    const searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+    if (searchValue!="" && this.searchActive) { // something was found -> do a search
+      this.Search();
+    }
+  }
+
+  this.OnSearchSelectKey = function(evt) {
+    const e = (evt) ? evt : window.event; // for IE
+    if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) { // Down
+      this.searchIndex++;
+      this.OnSelectItem(this.searchIndex);
+    } else if (e.keyCode==38 && this.searchIndex>0) { // Up
+      this.searchIndex--;
+      this.OnSelectItem(this.searchIndex);
+    } else if (e.keyCode==13 || e.keyCode==27) {
+      e.stopPropagation();
+      this.OnSelectItem(this.searchIndex);
+      this.CloseSelectionWindow();
+      this.DOMSearchField().focus();
+    }
+    return false;
+  }
+
+  // --------- Actions
+
+  // Closes the results window.
+  this.CloseResultsWindow = function() {
+    this.DOMPopupSearchResultsWindow().style.display = 'none';
+    this.DOMSearchClose().style.display = 'none';
+    this.Activate(false);
+  }
+
+  this.CloseSelectionWindow = function() {
+    this.DOMSearchSelectWindow().style.display = 'none';
+  }
+
+  // Performs a search.
+  this.Search = function() {
+    this.keyTimeout = 0;
+
+    // strip leading whitespace
+    const searchValue = this.DOMSearchField().value.replace(/^ +/, "");
+
+    const code = searchValue.toLowerCase().charCodeAt(0);
+    let idxChar = searchValue.substr(0, 1).toLowerCase();
+    if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair
+      idxChar = searchValue.substr(0, 2);
+    }
+
+    let jsFile;
+    let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
+    if (idx!=-1) {
+      const hexCode=idx.toString(16);
+      jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js';
+    }
+
+    const loadJS = function(url, impl, loc) {
+      const scriptTag = document.createElement('script');
+      scriptTag.src = url;
+      scriptTag.onload = impl;
+      scriptTag.onreadystatechange = impl;
+      loc.appendChild(scriptTag);
+    }
+
+    const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
+    const domSearchBox = this.DOMSearchBox();
+    const domPopupSearchResults = this.DOMPopupSearchResults();
+    const domSearchClose = this.DOMSearchClose();
+    const resultsPath = this.resultsPath;
+
+    const handleResults = function() {
+      document.getElementById("Loading").style.display="none";
+      if (typeof searchData !== 'undefined') {
+        createResults(resultsPath);
+        document.getElementById("NoMatches").style.display="none";
+      }
+
+      if (idx!=-1) {
+        searchResults.Search(searchValue);
+      } else { // no file with search results => force empty search results
+        searchResults.Search('====');
+      }
+
+      if (domPopupSearchResultsWindow.style.display!='block') {
+        domSearchClose.style.display = 'inline-block';
+        let left = getXPos(domSearchBox) + 150;
+        let top  = getYPos(domSearchBox) + 20;
+        domPopupSearchResultsWindow.style.display = 'block';
+        left -= domPopupSearchResults.offsetWidth;
+        const maxWidth  = document.body.clientWidth;
+        const maxHeight = document.body.clientHeight;
+        let width = 300;
+        if (left<10) left=10;
+        if (width+left+8>maxWidth) width=maxWidth-left-8;
+        let height = 400;
+        if (height+top+8>maxHeight) height=maxHeight-top-8;
+        domPopupSearchResultsWindow.style.top     = top  + 'px';
+        domPopupSearchResultsWindow.style.left    = left + 'px';
+        domPopupSearchResultsWindow.style.width   = width + 'px';
+        domPopupSearchResultsWindow.style.height  = height + 'px';
+      }
+    }
+
+    if (jsFile) {
+      loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow());
+    } else {
+      handleResults();
+    }
+
+    this.lastSearchValue = searchValue;
+  }
+
+  // -------- Activation Functions
+
+  // Activates or deactivates the search panel, resetting things to
+  // their default values if necessary.
+  this.Activate = function(isActive) {
+    if (isActive || // open it
+      this.DOMPopupSearchResultsWindow().style.display == 'block'
+    ) {
+      this.DOMSearchBox().className = 'MSearchBoxActive';
+      this.searchActive = true;
+    } else if (!isActive) { // directly remove the panel
+      this.DOMSearchBox().className = 'MSearchBoxInactive';
+      this.searchActive             = false;
+      this.lastSearchValue          = ''
+      this.lastResultsPage          = '';
+      this.DOMSearchField().value   = '';
+    }
+  }
+}
+
+// -----------------------------------------------------------------------
+
+// The class that handles everything on the search results page.
+function SearchResults() {
+
+  function convertToId(search) {
+    let result = '';
+    for (let i=0;i<search.length;i++) {
+      const c = search.charAt(i);
+      const cn = c.charCodeAt(0);
+      if (c.match(/[a-z0-9\u0080-\uFFFF]/)) {
+        result+=c;
+      } else if (cn<16) {
+        result+="_0"+cn.toString(16);
+      } else {
+        result+="_"+cn.toString(16);
+      }
+    }
+    return result;
+  }
+
+  // The number of matches from the last run of <Search()>.
+  this.lastMatchCount = 0;
+  this.lastKey = 0;
+  this.repeatOn = false;
+
+  // Toggles the visibility of the passed element ID.
+  this.FindChildElement = function(id) {
+    const parentElement = document.getElementById(id);
+    let element = parentElement.firstChild;
+
+    while (element && element!=parentElement) {
+      if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') {
+        return element;
+      }
+
+      if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) {
+        element = element.firstChild;
+      } else if (element.nextSibling) {
+        element = element.nextSibling;
+      } else {
+        do {
+          element = element.parentNode;
+        }
+        while (element && element!=parentElement && !element.nextSibling);
+
+        if (element && element!=parentElement) {
+          element = element.nextSibling;
+        }
+      }
+    }
+  }
+
+  this.Toggle = function(id) {
+    const element = this.FindChildElement(id);
+    if (element) {
+      if (element.style.display == 'block') {
+        element.style.display = 'none';
+      } else {
+        element.style.display = 'block';
+      }
+    }
+  }
+
+  // Searches for the passed string.  If there is no parameter,
+  // it takes it from the URL query.
+  //
+  // Always returns true, since other documents may try to call it
+  // and that may or may not be possible.
+  this.Search = function(search) {
+    if (!search) { // get search word from URL
+      search = window.location.search;
+      search = search.substring(1);  // Remove the leading '?'
+      search = unescape(search);
+    }
+
+    search = search.replace(/^ +/, ""); // strip leading spaces
+    search = search.replace(/ +$/, ""); // strip trailing spaces
+    search = search.toLowerCase();
+    search = convertToId(search);
+
+    const resultRows = document.getElementsByTagName("div");
+    let matches = 0;
+
+    let i = 0;
+    while (i < resultRows.length) {
+      const row = resultRows.item(i);
+      if (row.className == "SRResult") {
+        let rowMatchName = row.id.toLowerCase();
+        rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
+
+        if (search.length<=rowMatchName.length &&
+          rowMatchName.substr(0, search.length)==search) {
+          row.style.display = 'block';
+          matches++;
+        } else {
+          row.style.display = 'none';
+        }
+      }
+      i++;
+    }
+    document.getElementById("Searching").style.display='none';
+    if (matches == 0) { // no results
+      document.getElementById("NoMatches").style.display='block';
+    } else { // at least one result
+      document.getElementById("NoMatches").style.display='none';
+    }
+    this.lastMatchCount = matches;
+    return true;
+  }
+
+  // return the first item with index index or higher that is visible
+  this.NavNext = function(index) {
+    let focusItem;
+    for (;;) {
+      const focusName = 'Item'+index;
+      focusItem = document.getElementById(focusName);
+      if (focusItem && focusItem.parentNode.parentNode.style.display=='block') {
+        break;
+      } else if (!focusItem) { // last element
+        break;
+      }
+      focusItem=null;
+      index++;
+    }
+    return focusItem;
+  }
+
+  this.NavPrev = function(index) {
+    let focusItem;
+    for (;;) {
+      const focusName = 'Item'+index;
+      focusItem = document.getElementById(focusName);
+      if (focusItem && focusItem.parentNode.parentNode.style.display=='block') {
+        break;
+      } else if (!focusItem) { // last element
+        break;
+      }
+      focusItem=null;
+      index--;
+    }
+    return focusItem;
+  }
+
+  this.ProcessKeys = function(e) {
+    if (e.type == "keydown") {
+      this.repeatOn = false;
+      this.lastKey = e.keyCode;
+    } else if (e.type == "keypress") {
+      if (!this.repeatOn) {
+        if (this.lastKey) this.repeatOn = true;
+        return false; // ignore first keypress after keydown
+      }
+    } else if (e.type == "keyup") {
+      this.lastKey = 0;
+      this.repeatOn = false;
+    }
+    return this.lastKey!=0;
+  }
+
+  this.Nav = function(evt,itemIndex) {
+    const e  = (evt) ? evt : window.event; // for IE
+    if (e.keyCode==13) return true;
+    if (!this.ProcessKeys(e)) return false;
+
+    if (this.lastKey==38) { // Up
+      const newIndex = itemIndex-1;
+      let focusItem = this.NavPrev(newIndex);
+      if (focusItem) {
+        let child = this.FindChildElement(focusItem.parentNode.parentNode.id);
+        if (child && child.style.display == 'block') { // children visible
+          let n=0;
+          let tmpElem;
+          for (;;) { // search for last child
+            tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
+            if (tmpElem) {
+              focusItem = tmpElem;
+            } else { // found it!
+              break;
+            }
+            n++;
+          }
+        }
+      }
+      if (focusItem) {
+        focusItem.focus();
+      } else { // return focus to search field
+        document.getElementById("MSearchField").focus();
+      }
+    } else if (this.lastKey==40) { // Down
+      const newIndex = itemIndex+1;
+      let focusItem;
+      const item = document.getElementById('Item'+itemIndex);
+      const elem = this.FindChildElement(item.parentNode.parentNode.id);
+      if (elem && elem.style.display == 'block') { // children visible
+        focusItem = document.getElementById('Item'+itemIndex+'_c0');
+      }
+      if (!focusItem) focusItem = this.NavNext(newIndex);
+      if (focusItem)  focusItem.focus();
+    } else if (this.lastKey==39) { // Right
+      const item = document.getElementById('Item'+itemIndex);
+      const elem = this.FindChildElement(item.parentNode.parentNode.id);
+      if (elem) elem.style.display = 'block';
+    } else if (this.lastKey==37) { // Left
+      const item = document.getElementById('Item'+itemIndex);
+      const elem = this.FindChildElement(item.parentNode.parentNode.id);
+      if (elem) elem.style.display = 'none';
+    } else if (this.lastKey==27) { // Escape
+      e.stopPropagation();
+      searchBox.CloseResultsWindow();
+      document.getElementById("MSearchField").focus();
+    } else if (this.lastKey==13) { // Enter
+      return true;
+    }
+    return false;
+  }
+
+  this.NavChild = function(evt,itemIndex,childIndex) {
+    const e  = (evt) ? evt : window.event; // for IE
+    if (e.keyCode==13) return true;
+    if (!this.ProcessKeys(e)) return false;
+
+    if (this.lastKey==38) { // Up
+      if (childIndex>0) {
+        const newIndex = childIndex-1;
+        document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
+      } else { // already at first child, jump to parent
+        document.getElementById('Item'+itemIndex).focus();
+      }
+    } else if (this.lastKey==40) { // Down
+      const newIndex = childIndex+1;
+      let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
+      if (!elem) { // last child, jump to parent next parent
+        elem = this.NavNext(itemIndex+1);
+      }
+      if (elem) {
+        elem.focus();
+      }
+    } else if (this.lastKey==27) { // Escape
+      e.stopPropagation();
+      searchBox.CloseResultsWindow();
+      document.getElementById("MSearchField").focus();
+    } else if (this.lastKey==13) { // Enter
+      return true;
+    }
+    return false;
+  }
+}
+
+function createResults(resultsPath) {
+
+  function setKeyActions(elem,action) {
+    elem.setAttribute('onkeydown',action);
+    elem.setAttribute('onkeypress',action);
+    elem.setAttribute('onkeyup',action);
+  }
+
+  function setClassAttr(elem,attr) {
+    elem.setAttribute('class',attr);
+    elem.setAttribute('className',attr);
+  }
+
+  const results = document.getElementById("SRResults");
+  results.innerHTML = '';
+  searchData.forEach((elem,index) => {
+    const id = elem[0];
+    const srResult = document.createElement('div');
+    srResult.setAttribute('id','SR_'+id);
+    setClassAttr(srResult,'SRResult');
+    const srEntry = document.createElement('div');
+    setClassAttr(srEntry,'SREntry');
+    const srLink = document.createElement('a');
+    srLink.setAttribute('id','Item'+index);
+    setKeyActions(srLink,'return searchResults.Nav(event,'+index+')');
+    setClassAttr(srLink,'SRSymbol');
+    srLink.innerHTML = elem[1][0];
+    srEntry.appendChild(srLink);
+    if (elem[1].length==2) { // single result
+      srLink.setAttribute('href',resultsPath+elem[1][1][0]);
+      srLink.setAttribute('onclick','searchBox.CloseResultsWindow()');
+      if (elem[1][1][1]) {
+       srLink.setAttribute('target','_parent');
+      } else {
+       srLink.setAttribute('target','_blank');
+      }
+      const srScope = document.createElement('span');
+      setClassAttr(srScope,'SRScope');
+      srScope.innerHTML = elem[1][1][2];
+      srEntry.appendChild(srScope);
+    } else { // multiple results
+      srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
+      const srChildren = document.createElement('div');
+      setClassAttr(srChildren,'SRChildren');
+      for (let c=0; c<elem[1].length-1; c++) {
+        const srChild = document.createElement('a');
+        srChild.setAttribute('id','Item'+index+'_c'+c);
+        setKeyActions(srChild,'return searchResults.NavChild(event,'+index+','+c+')');
+        setClassAttr(srChild,'SRScope');
+        srChild.setAttribute('href',resultsPath+elem[1][c+1][0]);
+        srChild.setAttribute('onclick','searchBox.CloseResultsWindow()');
+        if (elem[1][c+1][1]) {
+         srChild.setAttribute('target','_parent');
+        } else {
+         srChild.setAttribute('target','_blank');
+        }
+        srChild.innerHTML = elem[1][c+1][2];
+        srChildren.appendChild(srChild);
+      }
+      srEntry.appendChild(srChildren);
+    }
+    srResult.appendChild(srEntry);
+    results.appendChild(srResult);
+  });
+}
+
+function init_search() {
+  const results = document.getElementById("MSearchSelectWindow");
+
+  results.tabIndex=0;
+  for (let key in indexSectionLabels) {
+    const link = document.createElement('a');
+    link.setAttribute('class','SelectItem');
+    link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
+    link.href='javascript:void(0)';
+    link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
+    results.appendChild(link);
+  }
+
+  const input = document.getElementById("MSearchSelect");
+  const searchSelectWindow = document.getElementById("MSearchSelectWindow");
+  input.tabIndex=0;
+  input.addEventListener("keydown", function(event) {
+    if (event.keyCode==13 || event.keyCode==40) {
+      event.preventDefault();
+      if (searchSelectWindow.style.display == 'block') {
+        searchBox.CloseSelectionWindow();
+      } else {
+        searchBox.OnSearchSelectShow();
+        searchBox.DOMSearchSelectWindow().focus();
+      }
+    }
+  });
+  const name = Cookie.readSetting(SEARCH_COOKIE_NAME,0);
+  const id = searchBox.GetSelectionIdByName(name);
+  searchBox.OnSelectItem(id);
+}
+/* @license-end */
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/searchdata.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/searchdata.js
new file mode 100644
index 0000000000000000000000000000000000000000..3bb296ea000033581dbd73ac26f595254597c3cd
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/searchdata.js
@@ -0,0 +1,39 @@
+var indexSectionsWithContent =
+{
+  0: "cdefghijlmnopqrstuw~",
+  1: "celnpqst",
+  2: "fu",
+  3: "ceflnpst",
+  4: "cefghilmnoprstu~",
+  5: "cdefhlnprstuw",
+  6: "j",
+  7: "s",
+  8: "iqr"
+};
+
+var indexSectionNames =
+{
+  0: "all",
+  1: "classes",
+  2: "namespaces",
+  3: "files",
+  4: "functions",
+  5: "variables",
+  6: "typedefs",
+  7: "enums",
+  8: "enumvalues"
+};
+
+var indexSectionLabels =
+{
+  0: "All",
+  1: "Classes",
+  2: "Namespaces",
+  3: "Files",
+  4: "Functions",
+  5: "Variables",
+  6: "Typedefs",
+  7: "Enumerations",
+  8: "Enumerator"
+};
+
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/typedefs_0.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/typedefs_0.js
new file mode 100644
index 0000000000000000000000000000000000000000..f57c14a3a674c6efde95581b3c6cf556f5c1ed83
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/typedefs_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['json_0',['json',['../notebook__converter_8cpp.html#a0c01dbde6677d7e4769b85716c69c491',1,'notebook_converter.cpp']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_0.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_0.js
new file mode 100644
index 0000000000000000000000000000000000000000..298f53802c6358cfe01a1f377ee46e3dcc807881
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['converted_5fscript_5fpath_0',['CONVERTED_SCRIPT_PATH',['../namespaceFolderStructureConstants.html#a82483c09d34f6dbea6451b921b231c5a',1,'FolderStructureConstants']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_1.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_1.js
new file mode 100644
index 0000000000000000000000000000000000000000..66fdf9a59572e8b56cd5e528dad9ebc0fad104ef
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_1.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['description_0',['description',['../structSubtask.html#a9b2edd425425878f6e57a2f213b1211a',1,'Subtask']]],
+  ['difficulty_1',['difficulty',['../structTask.html#a92a16f5ec66f7511f0d0ce0fd759bf9e',1,'Task']]],
+  ['difficulty_5flevels_5fdefinition_5fpath_2',['DIFFICULTY_LEVELS_DEFINITION_PATH',['../namespaceFolderStructureConstants.html#a4a34d956c5883529b64e6bb183d768a7',1,'FolderStructureConstants']]],
+  ['difficultyhexcolor_3',['difficultyHexColor',['../structTask.html#a6fe956adc87191ee794c5bccf68c292b',1,'Task']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_2.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_2.js
new file mode 100644
index 0000000000000000000000000000000000000000..ddd921a199c213d182c3e01d315b11618b01d88b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_2.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['evaluation_5fscripts_5fsource_5fpath_0',['EVALUATION_SCRIPTS_SOURCE_PATH',['../namespaceFolderStructureConstants.html#afbae3ede611451504507436474ae482e',1,'FolderStructureConstants']]],
+  ['evaluationfilepath_1',['evaluationFilePath',['../structSubtask.html#ae73daaeeae0fa09de92ef428be2fdab3',1,'Subtask']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_3.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_3.js
new file mode 100644
index 0000000000000000000000000000000000000000..d6c4ffbef0484dead4363c6aff2bb6f5bbe1dec3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_3.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['file_0',['file',['../structSubtask.html#a905ed579cc13759a257c37d261141281',1,'Subtask']]],
+  ['filepath_1',['filePath',['../structSubtask.html#adc3ab0bdda7c565666095845a3e4567f',1,'Subtask']]],
+  ['folder_2',['folder',['../structTask.html#a470ace63434687116684f003a27dc439',1,'Task']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_4.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_4.js
new file mode 100644
index 0000000000000000000000000000000000000000..104761cf623d433d0bff6ca0535c35c4f4129363
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['hasbeenexecuted_0',['hasBeenExecuted',['../structSubtask.html#a0e3d8e77e26cdb58b2e9faa8ec2e1707',1,'Subtask']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_5.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_5.js
new file mode 100644
index 0000000000000000000000000000000000000000..55f21610edce7e1d8e8df6b13b4261dd5a54ae86
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_5.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['lastexecutionerror_0',['lastExecutionError',['../structSubtask.html#a2c4bcefd1e42773c5e23abd9ba0b30f2',1,'Subtask']]],
+  ['lastexecutionfailed_1',['lastExecutionFailed',['../structSubtask.html#ab1e1bff66e7464efa54419b36006f1a8',1,'Subtask']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_6.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_6.js
new file mode 100644
index 0000000000000000000000000000000000000000..07459bbeced420c346fe8e2686bbd8aef82c1da2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_6.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['not_5fimplemented_5ferror_0',['NOT_IMPLEMENTED_ERROR',['../notebook__converter_8cpp.html#a8a72334e6ef797e624196b1d9e073c6e',1,'notebook_converter.cpp']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_7.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_7.js
new file mode 100644
index 0000000000000000000000000000000000000000..9ff0bb3ca98c4fc152b1b868bf29d6ef101c6c90
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_7.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['package_5fname_0',['PACKAGE_NAME',['../namespaceFolderStructureConstants.html#aa9f54b725067dc395f26c6608161dae9',1,'FolderStructureConstants']]],
+  ['parallelizedevaluationrequired_1',['parallelizedEvaluationRequired',['../structSubtask.html#ae0c283c25316796864e9ef0d766acb60',1,'Subtask']]],
+  ['parenttask_2',['parentTask',['../structSubtask.html#a4cdfbab855cd65277e17c8975bb0d730',1,'Subtask']]],
+  ['previoussubtasksrequired_3',['previousSubtasksRequired',['../structTask.html#add2905e57d8e714693b24cc8a9148a82',1,'Task']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_8.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_8.js
new file mode 100644
index 0000000000000000000000000000000000000000..16637bb30ca69df1a37bb6dbba1db896384e0a4f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_8.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['reset_5frobot_5fbefore_5fexecuting_0',['reset_robot_before_executing',['../structSubtask.html#ae869bad678ab4835b24aeb56176c21aa',1,'Subtask']]],
+  ['reset_5frobot_5fscript_5fpath_1',['RESET_ROBOT_SCRIPT_PATH',['../namespaceFolderStructureConstants.html#a97e2abd38a09653e626ba46a5e5e10bd',1,'FolderStructureConstants']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_9.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_9.js
new file mode 100644
index 0000000000000000000000000000000000000000..71f6e867a16ec57e2c25792ae48212b5e3d6544e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_9.js
@@ -0,0 +1,12 @@
+var searchData=
+[
+  ['solution_5fcell_5fheader_0',['SOLUTION_CELL_HEADER',['../notebook__converter_8cpp.html#a22b163bef7c6dc038082729221692dfa',1,'notebook_converter.cpp']]],
+  ['solution_5fcell_5ftag_1',['SOLUTION_CELL_TAG',['../notebook__converter_8cpp.html#a213a8c8a72491ee237c3ce92f92191ec',1,'notebook_converter.cpp']]],
+  ['solution_5fcode_5fplaceholder_5fend_2',['SOLUTION_CODE_PLACEHOLDER_END',['../notebook__converter_8cpp.html#a87d746c0d44126e9db98540148634b18',1,'notebook_converter.cpp']]],
+  ['solution_5fcode_5fplaceholder_5fstart_3',['SOLUTION_CODE_PLACEHOLDER_START',['../notebook__converter_8cpp.html#a0f5a0941639b66358c741284acf0dced',1,'notebook_converter.cpp']]],
+  ['solution_5fremoved_5fcell_5ftag_4',['SOLUTION_REMOVED_CELL_TAG',['../notebook__converter_8cpp.html#a184e7635f439bf95093b6a066ce161d7',1,'notebook_converter.cpp']]],
+  ['solution_5fscripts_5fsource_5fpath_5',['SOLUTION_SCRIPTS_SOURCE_PATH',['../namespaceFolderStructureConstants.html#ae963e238a7326dd80a2401eae27c252a',1,'FolderStructureConstants']]],
+  ['solutionfilepath_6',['solutionFilePath',['../structSubtask.html#ad6350ae5d46df3d006f4f0787915ea9f',1,'Subtask']]],
+  ['status_7',['status',['../structSubtask.html#a293ddda988cb5fe92fcb5e5189b86850',1,'Subtask']]],
+  ['subtasks_8',['subtasks',['../structTask.html#a7486a61c7f0eb8a952260ffe9c2a1af3',1,'Task']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_a.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_a.js
new file mode 100644
index 0000000000000000000000000000000000000000..3bf1d90c2ee5fd247622ef2313a72e639b22dbe0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_a.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+  ['task_5fcell_5ftag_0',['TASK_CELL_TAG',['../notebook__converter_8cpp.html#a577f6caa2b74a38695dcadccd277cd41',1,'notebook_converter.cpp']]],
+  ['task_5fdefinitions_5fpath_1',['TASK_DEFINITIONS_PATH',['../namespaceFolderStructureConstants.html#a84dc4e92b3d05fcef00c9abb99f9f9da',1,'FolderStructureConstants']]],
+  ['timeoutseconds_2',['timeoutSeconds',['../structSubtask.html#a69b5b90686d9e1c75b0f071a7b9dc31b',1,'Subtask']]],
+  ['title_3',['title',['../structSubtask.html#a4fc46ff8e54ab67641df5ff45e7e0cb4',1,'Subtask::title'],['../structTask.html#a0ab070dbbe73ff2a4306fe20ab75400f',1,'Task::title']]],
+  ['topic_4',['topic',['../structTask.html#a8c37303702dbbb22f7430a73f9a3ed08',1,'Task']]],
+  ['topic_5fdefinitions_5fpath_5',['TOPIC_DEFINITIONS_PATH',['../namespaceFolderStructureConstants.html#adc8fa9eae998a60723424421756bd65b',1,'FolderStructureConstants']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_b.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_b.js
new file mode 100644
index 0000000000000000000000000000000000000000..04aad560b66636378898ab447ac3f543737a5f0a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_b.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['user_5fworkspace_0',['USER_WORKSPACE',['../namespaceFolderStructureConstants.html#ac7bdb4609b31965b63ac7d3ce2b197c3',1,'FolderStructureConstants']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_c.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_c.js
new file mode 100644
index 0000000000000000000000000000000000000000..6515b6db84a2e514a605f7ba960d3ce1290965cb
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/search/variables_c.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['write_5fcode_5fmarker_0',['WRITE_CODE_MARKER',['../notebook__converter_8cpp.html#a6c92986de28899546e13ab1a37bf0722',1,'notebook_converter.cpp']]]
+];
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8cpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..04e71c0dc2971a98da4196ee851a99cea8f2bce2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8cpp.html
@@ -0,0 +1,166 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: sidebar.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">sidebar.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="sidebar_8hpp_source.html">learn_environment/sidebar.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="custom__list__widget_8hpp_source.html">learn_environment/custom_list_widget.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task_8hpp_source.html">learn_environment/task.hpp</a>&quot;</code><br />
+<code>#include &lt;QFont&gt;</code><br />
+<code>#include &lt;QDebug&gt;</code><br />
+<code>#include &lt;QBrush&gt;</code><br />
+<code>#include &lt;QMap&gt;</code><br />
+<code>#include &lt;QStringList&gt;</code><br />
+<code>#include &lt;QObject&gt;</code><br />
+<code>#include &lt;QVBoxLayout&gt;</code><br />
+<code>#include &lt;QListWidgetItem&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for sidebar.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="sidebar_8cpp__incl.png" border="0" usemap="#asidebar_8cpp" alt=""/></div>
+<map name="asidebar_8cpp" id="asidebar_8cpp">
+<area shape="rect" title=" " alt="" coords="847,5,935,32"/>
+<area shape="rect" href="sidebar_8hpp.html" title=" " alt="" coords="538,80,737,107"/>
+<area shape="poly" title=" " alt="" coords="847,35,697,78,696,73,846,30"/>
+<area shape="rect" href="custom__list__widget_8hpp.html" title=" " alt="" coords="221,155,379,181"/>
+<area shape="poly" title=" " alt="" coords="847,26,693,43,598,60,504,83,414,115,338,150,336,145,411,110,502,77,597,55,692,38,846,21"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="458,155,529,181"/>
+<area shape="poly" title=" " alt="" coords="846,25,767,30,673,41,586,58,552,69,528,82,517,94,509,109,499,141,494,139,504,107,513,91,525,78,550,64,584,52,672,35,767,25,846,19"/>
+<area shape="rect" title=" " alt="" coords="788,155,890,181"/>
+<area shape="poly" title=" " alt="" coords="878,34,859,55,844,81,838,111,838,140,833,140,833,110,839,79,855,52,874,31"/>
+<area shape="rect" title=" " alt="" coords="915,155,971,181"/>
+<area shape="poly" title=" " alt="" coords="880,34,855,68,849,87,853,106,874,130,902,148,899,152,871,134,848,108,844,87,850,65,875,31"/>
+<area shape="rect" title=" " alt="" coords="862,80,920,107"/>
+<area shape="poly" title=" " alt="" coords="894,33,894,64,888,64,888,33"/>
+<area shape="rect" title=" " alt="" coords="944,80,1014,107"/>
+<area shape="poly" title=" " alt="" coords="908,30,954,68,950,72,904,35"/>
+<area shape="rect" title=" " alt="" coords="1038,80,1104,107"/>
+<area shape="poly" title=" " alt="" coords="923,30,1026,71,1024,76,921,35"/>
+<area shape="rect" title=" " alt="" coords="1128,80,1214,107"/>
+<area shape="poly" title=" " alt="" coords="936,29,1113,74,1112,80,935,34"/>
+<area shape="rect" title=" " alt="" coords="1238,80,1307,107"/>
+<area shape="poly" title=" " alt="" coords="936,24,1061,45,1223,77,1222,82,1060,51,935,30"/>
+<area shape="rect" title=" " alt="" coords="1331,80,1450,107"/>
+<area shape="poly" title=" " alt="" coords="936,23,1316,77,1315,82,935,28"/>
+<area shape="poly" title=" " alt="" coords="579,110,374,154,373,148,578,105"/>
+<area shape="rect" title=" " alt="" coords="254,229,347,256"/>
+<area shape="poly" title=" " alt="" coords="587,110,519,130,447,157,384,190,332,223,329,218,382,185,444,152,517,125,585,105"/>
+<area shape="poly" title=" " alt="" coords="614,110,534,150,531,145,611,105"/>
+<area shape="rect" title=" " alt="" coords="682,229,796,256"/>
+<area shape="poly" title=" " alt="" coords="625,109,610,124,596,142,590,162,594,180,607,191,627,202,680,222,678,227,625,207,603,195,590,183,585,161,592,140,606,121,621,105"/>
+<area shape="rect" title=" " alt="" coords="604,155,676,181"/>
+<area shape="poly" title=" " alt="" coords="641,107,642,139,636,139,635,107"/>
+<area shape="poly" title=" " alt="" coords="673,105,790,146,788,151,672,110"/>
+<area shape="rect" title=" " alt="" coords="701,155,763,181"/>
+<area shape="poly" title=" " alt="" coords="656,105,705,143,702,147,652,109"/>
+<area shape="poly" title=" " alt="" coords="698,105,901,152,899,157,697,110"/>
+<area shape="poly" title=" " alt="" coords="303,182,303,214,298,214,298,182"/>
+<area shape="rect" title=" " alt="" coords="5,229,110,256"/>
+<area shape="poly" title=" " alt="" coords="259,184,115,227,114,222,257,179"/>
+<area shape="rect" title=" " alt="" coords="134,229,229,256"/>
+<area shape="poly" title=" " alt="" coords="281,184,216,223,214,219,278,180"/>
+<area shape="rect" title=" " alt="" coords="372,229,437,256"/>
+<area shape="poly" title=" " alt="" coords="480,184,433,221,430,217,476,180"/>
+<area shape="rect" title=" " alt="" coords="461,229,529,256"/>
+<area shape="poly" title=" " alt="" coords="496,182,497,214,492,214,491,182"/>
+<area shape="poly" title=" " alt="" coords="530,177,682,222,681,227,529,183"/>
+<area shape="rect" title=" " alt="" coords="553,229,658,256"/>
+<area shape="poly" title=" " alt="" coords="514,180,575,218,572,223,512,184"/>
+</map>
+</div>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8cpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8cpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..314d41c9fdde681fa2c060ad4f4fcdf9be5b035a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8cpp__incl.map
@@ -0,0 +1,49 @@
+<map id="sidebar.cpp" name="sidebar.cpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="847,5,935,32"/>
+<area shape="rect" id="Node000002" href="$sidebar_8hpp.html" title=" " alt="" coords="538,80,737,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="847,35,697,78,696,73,846,30"/>
+<area shape="rect" id="Node000003" href="$custom__list__widget_8hpp.html" title=" " alt="" coords="221,155,379,181"/>
+<area shape="poly" id="edge17_Node000001_Node000003" title=" " alt="" coords="847,26,693,43,598,60,504,83,414,115,338,150,336,145,411,110,502,77,597,55,692,38,846,21"/>
+<area shape="rect" id="Node000007" href="$task_8hpp.html" title=" " alt="" coords="458,155,529,181"/>
+<area shape="poly" id="edge18_Node000001_Node000007" title=" " alt="" coords="846,25,767,30,673,41,586,58,552,69,528,82,517,94,509,109,499,141,494,139,504,107,513,91,525,78,550,64,584,52,672,35,767,25,846,19"/>
+<area shape="rect" id="Node000013" title=" " alt="" coords="788,155,890,181"/>
+<area shape="poly" id="edge25_Node000001_Node000013" title=" " alt="" coords="878,34,859,55,844,81,838,111,838,140,833,140,833,110,839,79,855,52,874,31"/>
+<area shape="rect" id="Node000015" title=" " alt="" coords="915,155,971,181"/>
+<area shape="poly" id="edge22_Node000001_Node000015" title=" " alt="" coords="880,34,855,68,849,87,853,106,874,130,902,148,899,152,871,134,848,108,844,87,850,65,875,31"/>
+<area shape="rect" id="Node000016" title=" " alt="" coords="862,80,920,107"/>
+<area shape="poly" id="edge19_Node000001_Node000016" title=" " alt="" coords="894,33,894,64,888,64,888,33"/>
+<area shape="rect" id="Node000017" title=" " alt="" coords="944,80,1014,107"/>
+<area shape="poly" id="edge20_Node000001_Node000017" title=" " alt="" coords="908,30,954,68,950,72,904,35"/>
+<area shape="rect" id="Node000018" title=" " alt="" coords="1038,80,1104,107"/>
+<area shape="poly" id="edge21_Node000001_Node000018" title=" " alt="" coords="923,30,1026,71,1024,76,921,35"/>
+<area shape="rect" id="Node000019" title=" " alt="" coords="1128,80,1214,107"/>
+<area shape="poly" id="edge23_Node000001_Node000019" title=" " alt="" coords="936,29,1113,74,1112,80,935,34"/>
+<area shape="rect" id="Node000020" title=" " alt="" coords="1238,80,1307,107"/>
+<area shape="poly" id="edge24_Node000001_Node000020" title=" " alt="" coords="936,24,1061,45,1223,77,1222,82,1060,51,935,30"/>
+<area shape="rect" id="Node000021" title=" " alt="" coords="1331,80,1450,107"/>
+<area shape="poly" id="edge26_Node000001_Node000021" title=" " alt="" coords="936,23,1316,77,1315,82,935,28"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="579,110,374,154,373,148,578,105"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="254,229,347,256"/>
+<area shape="poly" id="edge15_Node000002_Node000004" title=" " alt="" coords="587,110,519,130,447,157,384,190,332,223,329,218,382,185,444,152,517,125,585,105"/>
+<area shape="poly" id="edge6_Node000002_Node000007" title=" " alt="" coords="614,110,534,150,531,145,611,105"/>
+<area shape="rect" id="Node000010" title=" " alt="" coords="682,229,796,256"/>
+<area shape="poly" id="edge16_Node000002_Node000010" title=" " alt="" coords="625,109,610,124,596,142,590,162,594,180,607,191,627,202,680,222,678,227,625,207,603,195,590,183,585,161,592,140,606,121,621,105"/>
+<area shape="rect" id="Node000012" title=" " alt="" coords="604,155,676,181"/>
+<area shape="poly" id="edge11_Node000002_Node000012" title=" " alt="" coords="641,107,642,139,636,139,635,107"/>
+<area shape="poly" id="edge12_Node000002_Node000013" title=" " alt="" coords="673,105,790,146,788,151,672,110"/>
+<area shape="rect" id="Node000014" title=" " alt="" coords="701,155,763,181"/>
+<area shape="poly" id="edge13_Node000002_Node000014" title=" " alt="" coords="656,105,705,143,702,147,652,109"/>
+<area shape="poly" id="edge14_Node000002_Node000015" title=" " alt="" coords="698,105,901,152,899,157,697,110"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="303,182,303,214,298,214,298,182"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="5,229,110,256"/>
+<area shape="poly" id="edge4_Node000003_Node000005" title=" " alt="" coords="259,184,115,227,114,222,257,179"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="134,229,229,256"/>
+<area shape="poly" id="edge5_Node000003_Node000006" title=" " alt="" coords="281,184,216,223,214,219,278,180"/>
+<area shape="rect" id="Node000008" title=" " alt="" coords="372,229,437,256"/>
+<area shape="poly" id="edge7_Node000007_Node000008" title=" " alt="" coords="480,184,433,221,430,217,476,180"/>
+<area shape="rect" id="Node000009" title=" " alt="" coords="461,229,529,256"/>
+<area shape="poly" id="edge8_Node000007_Node000009" title=" " alt="" coords="496,182,497,214,492,214,491,182"/>
+<area shape="poly" id="edge9_Node000007_Node000010" title=" " alt="" coords="530,177,682,222,681,227,529,183"/>
+<area shape="rect" id="Node000011" title=" " alt="" coords="553,229,658,256"/>
+<area shape="poly" id="edge10_Node000007_Node000011" title=" " alt="" coords="514,180,575,218,572,223,512,184"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f1edb360d73bf79b2e30daf8d40db4bdcff9cdff
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8cpp__incl.md5
@@ -0,0 +1 @@
+655fdbe1cf257f0f3c459d2264c37800
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8cpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8cpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..0052c1b417e50b6dbe94e6acdcaee562bdc4afe3
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8cpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..69e1bf9b9adc466922fc1208b189eb77e1de538a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: sidebar.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">sidebar.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="custom__list__widget_8hpp_source.html">custom_list_widget.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task_8hpp_source.html">task.hpp</a>&quot;</code><br />
+<code>#include &lt;QWidget&gt;</code><br />
+<code>#include &lt;QVBoxLayout&gt;</code><br />
+<code>#include &lt;QLabel&gt;</code><br />
+<code>#include &lt;QMap&gt;</code><br />
+<code>#include &lt;QListWidget&gt;</code><br />
+<code>#include &lt;QSharedPointer&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for sidebar.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="sidebar_8hpp__incl.png" border="0" usemap="#asidebar_8hpp" alt=""/></div>
+<map name="asidebar_8hpp" id="asidebar_8hpp">
+<area shape="rect" title=" " alt="" coords="558,5,647,32"/>
+<area shape="rect" href="custom__list__widget_8hpp.html" title=" " alt="" coords="157,80,315,107"/>
+<area shape="poly" title=" " alt="" coords="559,31,315,79,314,74,558,26"/>
+<area shape="rect" title=" " alt="" coords="5,155,99,181"/>
+<area shape="poly" title=" " alt="" coords="558,25,342,43,227,60,181,71,146,82,125,95,105,111,72,144,69,141,101,107,122,91,144,78,179,65,226,55,341,38,558,20"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="458,80,529,107"/>
+<area shape="poly" title=" " alt="" coords="585,35,526,74,523,69,582,30"/>
+<area shape="rect" title=" " alt="" coords="681,155,794,181"/>
+<area shape="poly" title=" " alt="" coords="599,33,588,68,588,88,594,105,606,116,627,127,679,147,677,152,624,132,603,120,590,108,583,88,583,67,594,32"/>
+<area shape="rect" title=" " alt="" coords="604,80,676,107"/>
+<area shape="poly" title=" " alt="" coords="612,31,629,65,624,68,607,34"/>
+<area shape="rect" title=" " alt="" coords="701,80,803,107"/>
+<area shape="poly" title=" " alt="" coords="630,30,713,70,711,75,628,35"/>
+<area shape="rect" title=" " alt="" coords="828,80,890,107"/>
+<area shape="poly" title=" " alt="" coords="648,30,814,77,812,82,647,35"/>
+<area shape="rect" title=" " alt="" coords="914,80,971,107"/>
+<area shape="poly" title=" " alt="" coords="648,25,758,46,900,77,899,82,757,51,647,30"/>
+<area shape="poly" title=" " alt="" coords="205,110,99,151,97,146,203,105"/>
+<area shape="rect" title=" " alt="" coords="122,155,227,181"/>
+<area shape="poly" title=" " alt="" coords="227,109,197,145,193,141,223,105"/>
+<area shape="rect" title=" " alt="" coords="251,155,346,181"/>
+<area shape="poly" title=" " alt="" coords="249,105,280,141,276,145,245,109"/>
+<area shape="rect" title=" " alt="" coords="370,155,435,181"/>
+<area shape="poly" title=" " alt="" coords="479,109,432,147,428,143,476,105"/>
+<area shape="rect" title=" " alt="" coords="459,155,528,181"/>
+<area shape="poly" title=" " alt="" coords="496,107,496,139,491,139,491,107"/>
+<area shape="poly" title=" " alt="" coords="530,103,681,147,679,152,529,108"/>
+<area shape="rect" title=" " alt="" coords="551,155,657,181"/>
+<area shape="poly" title=" " alt="" coords="514,105,574,144,571,148,511,109"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="sidebar_8hpp__dep__incl.png" border="0" usemap="#asidebar_8hppdep" alt=""/></div>
+<map name="asidebar_8hppdep" id="asidebar_8hppdep">
+<area shape="rect" title=" " alt="" coords="120,5,208,32"/>
+<area shape="rect" href="sidebar_8cpp.html" title=" " alt="" coords="64,80,152,107"/>
+<area shape="poly" title=" " alt="" coords="147,46,120,81,116,78,143,43"/>
+<area shape="rect" href="task__ui_8hpp.html" title=" " alt="" coords="176,80,264,107"/>
+<area shape="poly" title=" " alt="" coords="185,43,213,78,208,81,181,46"/>
+<area shape="rect" href="learn__environment_8cpp.html" title=" " alt="" coords="5,229,158,256"/>
+<area shape="poly" title=" " alt="" coords="162,111,95,131,69,143,53,156,48,174,52,193,73,228,68,231,47,195,42,174,49,153,66,139,94,126,160,105"/>
+<area shape="rect" href="learn__environment_8hpp.html" title=" " alt="" coords="63,155,215,181"/>
+<area shape="poly" title=" " alt="" coords="197,119,155,156,151,152,193,115"/>
+<area shape="rect" href="task__manager_8cpp.html" title=" " alt="" coords="239,155,367,181"/>
+<area shape="poly" title=" " alt="" coords="248,115,290,152,287,156,244,119"/>
+<area shape="rect" href="task__ui_8cpp.html" title=" " alt="" coords="391,155,479,181"/>
+<area shape="poly" title=" " alt="" coords="272,109,398,151,396,157,271,114"/>
+<area shape="poly" title=" " alt="" coords="122,195,93,231,89,227,117,192"/>
+</map>
+</div>
+</div>
+<p><a href="sidebar_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSidebar.html">Sidebar</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents the sidebar UI component for displaying tasks.  <a href="classSidebar.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..f30b19277ffce82a3cb5f89924ffe8bf9a9167b8
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__dep__incl.map
@@ -0,0 +1,16 @@
+<map id="sidebar.hpp" name="sidebar.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="120,5,208,32"/>
+<area shape="rect" id="Node000002" href="$sidebar_8cpp.html" title=" " alt="" coords="64,80,152,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="147,46,120,81,116,78,143,43"/>
+<area shape="rect" id="Node000003" href="$task__ui_8hpp.html" title=" " alt="" coords="176,80,264,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="185,43,213,78,208,81,181,46"/>
+<area shape="rect" id="Node000004" href="$learn__environment_8cpp.html" title=" " alt="" coords="5,229,158,256"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="162,111,95,131,69,143,53,156,48,174,52,193,73,228,68,231,47,195,42,174,49,153,66,139,94,126,160,105"/>
+<area shape="rect" id="Node000005" href="$learn__environment_8hpp.html" title=" " alt="" coords="63,155,215,181"/>
+<area shape="poly" id="edge4_Node000003_Node000005" title=" " alt="" coords="197,119,155,156,151,152,193,115"/>
+<area shape="rect" id="Node000006" href="$task__manager_8cpp.html" title=" " alt="" coords="239,155,367,181"/>
+<area shape="poly" id="edge6_Node000003_Node000006" title=" " alt="" coords="248,115,290,152,287,156,244,119"/>
+<area shape="rect" id="Node000007" href="$task__ui_8cpp.html" title=" " alt="" coords="391,155,479,181"/>
+<area shape="poly" id="edge7_Node000003_Node000007" title=" " alt="" coords="272,109,398,151,396,157,271,114"/>
+<area shape="poly" id="edge5_Node000005_Node000004" title=" " alt="" coords="122,195,93,231,89,227,117,192"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..7a010c800402b149c48c42d818fc9237b0994e7a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+5fd2460cfde62e9cee622c68f85d0e0f
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..d1065fe84ce1ef8b620222d671bf7cf33885c3a8
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..6e84ebd245549afdfbd9fbf9e0a12b49ddcf0b35
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__incl.map
@@ -0,0 +1,31 @@
+<map id="sidebar.hpp" name="sidebar.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="558,5,647,32"/>
+<area shape="rect" id="Node000002" href="$custom__list__widget_8hpp.html" title=" " alt="" coords="157,80,315,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="559,31,315,79,314,74,558,26"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="5,155,99,181"/>
+<area shape="poly" id="edge14_Node000001_Node000003" title=" " alt="" coords="558,25,342,43,227,60,181,71,146,82,125,95,105,111,72,144,69,141,101,107,122,91,144,78,179,65,226,55,341,38,558,20"/>
+<area shape="rect" id="Node000006" href="$task_8hpp.html" title=" " alt="" coords="458,80,529,107"/>
+<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="585,35,526,74,523,69,582,30"/>
+<area shape="rect" id="Node000009" title=" " alt="" coords="681,155,794,181"/>
+<area shape="poly" id="edge15_Node000001_Node000009" title=" " alt="" coords="599,33,588,68,588,88,594,105,606,116,627,127,679,147,677,152,624,132,603,120,590,108,583,88,583,67,594,32"/>
+<area shape="rect" id="Node000011" title=" " alt="" coords="604,80,676,107"/>
+<area shape="poly" id="edge10_Node000001_Node000011" title=" " alt="" coords="612,31,629,65,624,68,607,34"/>
+<area shape="rect" id="Node000012" title=" " alt="" coords="701,80,803,107"/>
+<area shape="poly" id="edge11_Node000001_Node000012" title=" " alt="" coords="630,30,713,70,711,75,628,35"/>
+<area shape="rect" id="Node000013" title=" " alt="" coords="828,80,890,107"/>
+<area shape="poly" id="edge12_Node000001_Node000013" title=" " alt="" coords="648,30,814,77,812,82,647,35"/>
+<area shape="rect" id="Node000014" title=" " alt="" coords="914,80,971,107"/>
+<area shape="poly" id="edge13_Node000001_Node000014" title=" " alt="" coords="648,25,758,46,900,77,899,82,757,51,647,30"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="205,110,99,151,97,146,203,105"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="122,155,227,181"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="227,109,197,145,193,141,223,105"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="251,155,346,181"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="249,105,280,141,276,145,245,109"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="370,155,435,181"/>
+<area shape="poly" id="edge6_Node000006_Node000007" title=" " alt="" coords="479,109,432,147,428,143,476,105"/>
+<area shape="rect" id="Node000008" title=" " alt="" coords="459,155,528,181"/>
+<area shape="poly" id="edge7_Node000006_Node000008" title=" " alt="" coords="496,107,496,139,491,139,491,107"/>
+<area shape="poly" id="edge8_Node000006_Node000009" title=" " alt="" coords="530,103,681,147,679,152,529,108"/>
+<area shape="rect" id="Node000010" title=" " alt="" coords="551,155,657,181"/>
+<area shape="poly" id="edge9_Node000006_Node000010" title=" " alt="" coords="514,105,574,144,571,148,511,109"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..c40e5e051808adb9e47792db1533f37c5ef4b77e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__incl.md5
@@ -0,0 +1 @@
+ff9116dabb7957f64e53101cbb10eb16
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..b73661878eab354ada9ed677503e342d7c9e1d06
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..59f6859f2285a361de5f3213440aea91e3947b5f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sidebar_8hpp_source.html
@@ -0,0 +1,150 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: sidebar.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">sidebar.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="sidebar_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef SIDEBAR_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define SIDEBAR_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &quot;<a class="code" href="custom__list__widget_8hpp.html">custom_list_widget.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include &quot;<a class="code" href="task_8hpp.html">task.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;QWidget&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;QVBoxLayout&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;QLabel&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#include &lt;QMap&gt;</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="preprocessor">#include &lt;QListWidget&gt;</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="preprocessor">#include &lt;QSharedPointer&gt;</span></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span> </div>
+<div class="foldopen" id="foldopen00022" data-start="{" data-end="};">
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"><a class="line" href="classSidebar.html">   22</a></span><span class="keyword">class </span><a class="code hl_class" href="classSidebar.html">Sidebar</a> : <span class="keyword">public</span> <a class="code hl_class" href="classQWidget.html">QWidget</a></div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span>{</div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span>    Q_OBJECT</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span>    <span class="keyword">explicit</span> <a class="code hl_function" href="classSidebar.html#a874f7f7907a44517ee9cf9ac2c1888d7">Sidebar</a>(<a class="code hl_class" href="classQWidget.html">QWidget</a> *parent = <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classSidebar.html#abf817c38465f3382b90d409e9cf87777">fillSidebarWithTasks</a>(<span class="keyword">const</span> QVector&lt;QSharedPointer&lt;Task&gt;&gt;&amp; tasks);</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classSidebar.html#a9b621329888b135c42333a7ce8a4cad4">selectTask</a>(<span class="keywordtype">int</span> index);</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span> </div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>Q_SIGNALS:</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="classSidebar.html#ad4d587292c62ad30ac9f1feac5d39499">   50</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classSidebar.html#ad4d587292c62ad30ac9f1feac5d39499">taskSelected</a>(<span class="keywordtype">int</span> index);</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span> </div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span><span class="keyword">private</span> Q_SLOTS:</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>    <span class="keywordtype">void</span> onTaskItemClicked(QListWidgetItem *item);</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span> </div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span>    <a class="code hl_class" href="classCustomListWidget.html">CustomListWidget</a>* createList();</div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span> </div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span>    <a class="code hl_class" href="classCustomListWidget.html">CustomListWidget</a> *listWidget; </div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span>    QMap&lt;int, QListWidgetItem*&gt; taskIndexToItemMap; </div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span>};</div>
+</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span> </div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span><span class="preprocessor">#endif </span><span class="comment">// SIDEBAR_HPP</span></div>
+<div class="ttc" id="aclassCustomListWidget_html"><div class="ttname"><a href="classCustomListWidget.html">CustomListWidget</a></div><div class="ttdoc">A custom QListWidget with enhanced mouse interaction.</div><div class="ttdef"><b>Definition</b> custom_list_widget.hpp:16</div></div>
+<div class="ttc" id="aclassQWidget_html"><div class="ttname"><a href="classQWidget.html">QWidget</a></div></div>
+<div class="ttc" id="aclassSidebar_html"><div class="ttname"><a href="classSidebar.html">Sidebar</a></div><div class="ttdoc">Represents the sidebar UI component for displaying tasks.</div><div class="ttdef"><b>Definition</b> sidebar.hpp:23</div></div>
+<div class="ttc" id="aclassSidebar_html_a874f7f7907a44517ee9cf9ac2c1888d7"><div class="ttname"><a href="classSidebar.html#a874f7f7907a44517ee9cf9ac2c1888d7">Sidebar::Sidebar</a></div><div class="ttdeci">Sidebar(QWidget *parent=nullptr)</div><div class="ttdoc">Constructs a Sidebar object.</div><div class="ttdef"><b>Definition</b> sidebar.cpp:38</div></div>
+<div class="ttc" id="aclassSidebar_html_a9b621329888b135c42333a7ce8a4cad4"><div class="ttname"><a href="classSidebar.html#a9b621329888b135c42333a7ce8a4cad4">Sidebar::selectTask</a></div><div class="ttdeci">void selectTask(int index)</div><div class="ttdoc">Selects a task in the sidebar by its index.</div><div class="ttdef"><b>Definition</b> sidebar.cpp:114</div></div>
+<div class="ttc" id="aclassSidebar_html_abf817c38465f3382b90d409e9cf87777"><div class="ttname"><a href="classSidebar.html#abf817c38465f3382b90d409e9cf87777">Sidebar::fillSidebarWithTasks</a></div><div class="ttdeci">void fillSidebarWithTasks(const QVector&lt; QSharedPointer&lt; Task &gt; &gt; &amp;tasks)</div><div class="ttdoc">Populates the sidebar with tasks.</div><div class="ttdef"><b>Definition</b> sidebar.cpp:64</div></div>
+<div class="ttc" id="aclassSidebar_html_ad4d587292c62ad30ac9f1feac5d39499"><div class="ttname"><a href="classSidebar.html#ad4d587292c62ad30ac9f1feac5d39499">Sidebar::taskSelected</a></div><div class="ttdeci">void taskSelected(int index)</div><div class="ttdoc">Signal emitted when a task is selected.</div></div>
+<div class="ttc" id="acustom__list__widget_8hpp_html"><div class="ttname"><a href="custom__list__widget_8hpp.html">custom_list_widget.hpp</a></div></div>
+<div class="ttc" id="atask_8hpp_html"><div class="ttname"><a href="task_8hpp.html">task.hpp</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/splitbar.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/splitbar.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/splitbar.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/splitbard.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/splitbard.png
new file mode 100644
index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/splitbard.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..bb35c7fbd96fc9c2e36a24cb160c2dd8c450ce0b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask-members.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">Subtask Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structSubtask.html">Subtask</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="structSubtask.html#a9b2edd425425878f6e57a2f213b1211a">description</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="structSubtask.html#ae73daaeeae0fa09de92ef428be2fdab3">evaluationFilePath</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structSubtask.html#a905ed579cc13759a257c37d261141281">file</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="structSubtask.html#adc3ab0bdda7c565666095845a3e4567f">filePath</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structSubtask.html#a0e3d8e77e26cdb58b2e9faa8ec2e1707">hasBeenExecuted</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="structSubtask.html#a2c4bcefd1e42773c5e23abd9ba0b30f2">lastExecutionError</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structSubtask.html#ab1e1bff66e7464efa54419b36006f1a8">lastExecutionFailed</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="structSubtask.html#ae0c283c25316796864e9ef0d766acb60">parallelizedEvaluationRequired</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structSubtask.html#a4cdfbab855cd65277e17c8975bb0d730">parentTask</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="structSubtask.html#ae869bad678ab4835b24aeb56176c21aa">reset_robot_before_executing</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structSubtask.html#ad6350ae5d46df3d006f4f0787915ea9f">solutionFilePath</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="structSubtask.html#a293ddda988cb5fe92fcb5e5189b86850">status</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structSubtask.html#a69b5b90686d9e1c75b0f071a7b9dc31b">timeoutSeconds</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="structSubtask.html#a4fc46ff8e54ab67641df5ff45e7e0cb4">title</a></td><td class="entry"><a class="el" href="structSubtask.html">Subtask</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask.html
new file mode 100644
index 0000000000000000000000000000000000000000..4f03a0288c4159f20730f48cd858b1d63e0441ac
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask.html
@@ -0,0 +1,400 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Subtask Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="structSubtask-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">Subtask Struct Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Represents a subtask within a task.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="task_8hpp_source.html">task.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Collaboration diagram for Subtask:</div>
+<div class="dyncontent">
+<div class="center"><img src="structSubtask__coll__graph.png" border="0" usemap="#aSubtask_coll__map" alt="Collaboration graph"/></div>
+<map name="aSubtask_coll__map" id="aSubtask_coll__map">
+<area shape="rect" title="Represents a subtask within a task." alt="" coords="286,235,345,304"/>
+<area shape="rect" title=" " alt="" coords="5,5,60,75"/>
+<area shape="poly" title=" " alt="" coords="29,75,27,107,28,143,37,178,56,209,70,219,91,229,148,244,270,262,269,267,146,249,89,234,67,224,52,212,32,180,23,143,21,107,24,74"/>
+<area shape="rect" title=" " alt="" coords="166,5,190,75"/>
+<area shape="poly" title=" " alt="" coords="177,75,177,106,180,141,189,177,206,209,220,224,236,236,271,253,269,258,233,240,216,228,202,212,184,179,175,142,172,106,172,75"/>
+<area shape="rect" title=" " alt="" coords="298,5,333,75"/>
+<area shape="poly" title=" " alt="" coords="318,74,318,218,313,218,313,74"/>
+<area shape="rect" title=" " alt="" coords="460,5,606,75"/>
+<area shape="poly" title=" " alt="" coords="539,75,540,107,536,143,525,180,505,212,474,238,436,255,397,265,362,270,361,264,396,260,434,250,471,234,501,209,520,178,531,142,534,106,534,75"/>
+<area shape="rect" title=" " alt="" coords="630,5,726,75"/>
+<area shape="poly" title=" " alt="" coords="678,75,673,108,663,145,646,182,620,213,600,224,573,235,504,250,362,267,361,262,503,245,572,229,598,220,616,209,641,179,658,143,668,107,673,74"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a4fc46ff8e54ab67641df5ff45e7e0cb4" id="r_a4fc46ff8e54ab67641df5ff45e7e0cb4"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4fc46ff8e54ab67641df5ff45e7e0cb4">title</a></td></tr>
+<tr class="memdesc:a4fc46ff8e54ab67641df5ff45e7e0cb4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The title of the subtask.  <br /></td></tr>
+<tr class="separator:a4fc46ff8e54ab67641df5ff45e7e0cb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9b2edd425425878f6e57a2f213b1211a" id="r_a9b2edd425425878f6e57a2f213b1211a"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9b2edd425425878f6e57a2f213b1211a">description</a></td></tr>
+<tr class="memdesc:a9b2edd425425878f6e57a2f213b1211a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The description of the subtask.  <br /></td></tr>
+<tr class="separator:a9b2edd425425878f6e57a2f213b1211a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a905ed579cc13759a257c37d261141281" id="r_a905ed579cc13759a257c37d261141281"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a905ed579cc13759a257c37d261141281">file</a></td></tr>
+<tr class="memdesc:a905ed579cc13759a257c37d261141281"><td class="mdescLeft">&#160;</td><td class="mdescRight">The file name of the subtask.  <br /></td></tr>
+<tr class="separator:a905ed579cc13759a257c37d261141281"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adc3ab0bdda7c565666095845a3e4567f" id="r_adc3ab0bdda7c565666095845a3e4567f"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adc3ab0bdda7c565666095845a3e4567f">filePath</a></td></tr>
+<tr class="memdesc:adc3ab0bdda7c565666095845a3e4567f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The file path of the subtask.  <br /></td></tr>
+<tr class="separator:adc3ab0bdda7c565666095845a3e4567f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad6350ae5d46df3d006f4f0787915ea9f" id="r_ad6350ae5d46df3d006f4f0787915ea9f"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad6350ae5d46df3d006f4f0787915ea9f">solutionFilePath</a></td></tr>
+<tr class="memdesc:ad6350ae5d46df3d006f4f0787915ea9f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The file path to the solution of the subtask.  <br /></td></tr>
+<tr class="separator:ad6350ae5d46df3d006f4f0787915ea9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae73daaeeae0fa09de92ef428be2fdab3" id="r_ae73daaeeae0fa09de92ef428be2fdab3"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae73daaeeae0fa09de92ef428be2fdab3">evaluationFilePath</a></td></tr>
+<tr class="memdesc:ae73daaeeae0fa09de92ef428be2fdab3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The file path to the evaluation script of the subtask.  <br /></td></tr>
+<tr class="separator:ae73daaeeae0fa09de92ef428be2fdab3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69b5b90686d9e1c75b0f071a7b9dc31b" id="r_a69b5b90686d9e1c75b0f071a7b9dc31b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a69b5b90686d9e1c75b0f071a7b9dc31b">timeoutSeconds</a> = 60</td></tr>
+<tr class="memdesc:a69b5b90686d9e1c75b0f071a7b9dc31b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The timeout for the subtask execution in seconds.  <br /></td></tr>
+<tr class="separator:a69b5b90686d9e1c75b0f071a7b9dc31b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae0c283c25316796864e9ef0d766acb60" id="r_ae0c283c25316796864e9ef0d766acb60"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae0c283c25316796864e9ef0d766acb60">parallelizedEvaluationRequired</a> = false</td></tr>
+<tr class="memdesc:ae0c283c25316796864e9ef0d766acb60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether parallelized evaluation is required.  <br /></td></tr>
+<tr class="separator:ae0c283c25316796864e9ef0d766acb60"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae869bad678ab4835b24aeb56176c21aa" id="r_ae869bad678ab4835b24aeb56176c21aa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae869bad678ab4835b24aeb56176c21aa">reset_robot_before_executing</a> = true</td></tr>
+<tr class="memdesc:ae869bad678ab4835b24aeb56176c21aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether to reset the robot before executing the subtask.  <br /></td></tr>
+<tr class="separator:ae869bad678ab4835b24aeb56176c21aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4cdfbab855cd65277e17c8975bb0d730" id="r_a4cdfbab855cd65277e17c8975bb0d730"><td class="memItemLeft" align="right" valign="top">QWeakPointer&lt; <a class="el" href="structTask.html">Task</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4cdfbab855cd65277e17c8975bb0d730">parentTask</a></td></tr>
+<tr class="memdesc:a4cdfbab855cd65277e17c8975bb0d730"><td class="mdescLeft">&#160;</td><td class="mdescRight">Weak pointer to the parent task.  <br /></td></tr>
+<tr class="separator:a4cdfbab855cd65277e17c8975bb0d730"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a293ddda988cb5fe92fcb5e5189b86850" id="r_a293ddda988cb5fe92fcb5e5189b86850"><td class="memItemLeft" align="right" valign="top"><a class="el" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0">SubtaskStatus</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a293ddda988cb5fe92fcb5e5189b86850">status</a> = <a class="el" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0">SubtaskStatus::Inactive</a></td></tr>
+<tr class="memdesc:a293ddda988cb5fe92fcb5e5189b86850"><td class="mdescLeft">&#160;</td><td class="mdescRight">The status of the subtask.  <br /></td></tr>
+<tr class="separator:a293ddda988cb5fe92fcb5e5189b86850"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0e3d8e77e26cdb58b2e9faa8ec2e1707" id="r_a0e3d8e77e26cdb58b2e9faa8ec2e1707"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0e3d8e77e26cdb58b2e9faa8ec2e1707">hasBeenExecuted</a> = false</td></tr>
+<tr class="memdesc:a0e3d8e77e26cdb58b2e9faa8ec2e1707"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether the subtask has been executed at least once.  <br /></td></tr>
+<tr class="separator:a0e3d8e77e26cdb58b2e9faa8ec2e1707"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1e1bff66e7464efa54419b36006f1a8" id="r_ab1e1bff66e7464efa54419b36006f1a8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab1e1bff66e7464efa54419b36006f1a8">lastExecutionFailed</a> = false</td></tr>
+<tr class="memdesc:ab1e1bff66e7464efa54419b36006f1a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether the subtask has been executed at least once.  <br /></td></tr>
+<tr class="separator:ab1e1bff66e7464efa54419b36006f1a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2c4bcefd1e42773c5e23abd9ba0b30f2" id="r_a2c4bcefd1e42773c5e23abd9ba0b30f2"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2c4bcefd1e42773c5e23abd9ba0b30f2">lastExecutionError</a></td></tr>
+<tr class="memdesc:a2c4bcefd1e42773c5e23abd9ba0b30f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">The error message from the last execution of the subtask.  <br /></td></tr>
+<tr class="separator:a2c4bcefd1e42773c5e23abd9ba0b30f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Represents a subtask within a task. </p>
+<p>The <a class="el" href="structSubtask.html" title="Represents a subtask within a task.">Subtask</a> struct contains information about a subtask, including its title, description, file paths, difficulty, and status. It also includes optional fields for timeout and parallelized evaluation. </p>
+</div><h2 class="groupheader">Member Data Documentation</h2>
+<a id="a9b2edd425425878f6e57a2f213b1211a" name="a9b2edd425425878f6e57a2f213b1211a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9b2edd425425878f6e57a2f213b1211a">&#9670;&#160;</a></span>description</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString Subtask::description</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The description of the subtask. </p>
+
+</div>
+</div>
+<a id="ae73daaeeae0fa09de92ef428be2fdab3" name="ae73daaeeae0fa09de92ef428be2fdab3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae73daaeeae0fa09de92ef428be2fdab3">&#9670;&#160;</a></span>evaluationFilePath</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString Subtask::evaluationFilePath</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The file path to the evaluation script of the subtask. </p>
+
+</div>
+</div>
+<a id="a905ed579cc13759a257c37d261141281" name="a905ed579cc13759a257c37d261141281"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a905ed579cc13759a257c37d261141281">&#9670;&#160;</a></span>file</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString Subtask::file</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The file name of the subtask. </p>
+
+</div>
+</div>
+<a id="adc3ab0bdda7c565666095845a3e4567f" name="adc3ab0bdda7c565666095845a3e4567f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adc3ab0bdda7c565666095845a3e4567f">&#9670;&#160;</a></span>filePath</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString Subtask::filePath</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The file path of the subtask. </p>
+
+</div>
+</div>
+<a id="a0e3d8e77e26cdb58b2e9faa8ec2e1707" name="a0e3d8e77e26cdb58b2e9faa8ec2e1707"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0e3d8e77e26cdb58b2e9faa8ec2e1707">&#9670;&#160;</a></span>hasBeenExecuted</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool Subtask::hasBeenExecuted = false</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Whether the subtask has been executed at least once. </p>
+
+</div>
+</div>
+<a id="a2c4bcefd1e42773c5e23abd9ba0b30f2" name="a2c4bcefd1e42773c5e23abd9ba0b30f2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2c4bcefd1e42773c5e23abd9ba0b30f2">&#9670;&#160;</a></span>lastExecutionError</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString Subtask::lastExecutionError</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The error message from the last execution of the subtask. </p>
+
+</div>
+</div>
+<a id="ab1e1bff66e7464efa54419b36006f1a8" name="ab1e1bff66e7464efa54419b36006f1a8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab1e1bff66e7464efa54419b36006f1a8">&#9670;&#160;</a></span>lastExecutionFailed</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool Subtask::lastExecutionFailed = false</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Whether the subtask has been executed at least once. </p>
+
+</div>
+</div>
+<a id="ae0c283c25316796864e9ef0d766acb60" name="ae0c283c25316796864e9ef0d766acb60"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae0c283c25316796864e9ef0d766acb60">&#9670;&#160;</a></span>parallelizedEvaluationRequired</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool Subtask::parallelizedEvaluationRequired = false</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Whether parallelized evaluation is required. </p>
+
+</div>
+</div>
+<a id="a4cdfbab855cd65277e17c8975bb0d730" name="a4cdfbab855cd65277e17c8975bb0d730"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4cdfbab855cd65277e17c8975bb0d730">&#9670;&#160;</a></span>parentTask</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QWeakPointer&lt;<a class="el" href="structTask.html">Task</a>&gt; Subtask::parentTask</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Weak pointer to the parent task. </p>
+
+</div>
+</div>
+<a id="ae869bad678ab4835b24aeb56176c21aa" name="ae869bad678ab4835b24aeb56176c21aa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae869bad678ab4835b24aeb56176c21aa">&#9670;&#160;</a></span>reset_robot_before_executing</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool Subtask::reset_robot_before_executing = true</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Whether to reset the robot before executing the subtask. </p>
+
+</div>
+</div>
+<a id="ad6350ae5d46df3d006f4f0787915ea9f" name="ad6350ae5d46df3d006f4f0787915ea9f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad6350ae5d46df3d006f4f0787915ea9f">&#9670;&#160;</a></span>solutionFilePath</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString Subtask::solutionFilePath</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The file path to the solution of the subtask. </p>
+
+</div>
+</div>
+<a id="a293ddda988cb5fe92fcb5e5189b86850" name="a293ddda988cb5fe92fcb5e5189b86850"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a293ddda988cb5fe92fcb5e5189b86850">&#9670;&#160;</a></span>status</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0">SubtaskStatus</a> Subtask::status = <a class="el" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0">SubtaskStatus::Inactive</a></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The status of the subtask. </p>
+
+</div>
+</div>
+<a id="a69b5b90686d9e1c75b0f071a7b9dc31b" name="a69b5b90686d9e1c75b0f071a7b9dc31b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a69b5b90686d9e1c75b0f071a7b9dc31b">&#9670;&#160;</a></span>timeoutSeconds</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int Subtask::timeoutSeconds = 60</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The timeout for the subtask execution in seconds. </p>
+
+</div>
+</div>
+<a id="a4fc46ff8e54ab67641df5ff45e7e0cb4" name="a4fc46ff8e54ab67641df5ff45e7e0cb4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4fc46ff8e54ab67641df5ff45e7e0cb4">&#9670;&#160;</a></span>title</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString Subtask::title</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The title of the subtask. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="task_8hpp_source.html">task.hpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..8f43d63a7dc4e27adf41e9913d4138130d6b7ae7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask__coll__graph.map
@@ -0,0 +1,13 @@
+<map id="Subtask" name="Subtask">
+<area shape="rect" id="Node000001" title="Represents a subtask within a task." alt="" coords="286,235,345,304"/>
+<area shape="rect" id="Node000002" title=" " alt="" coords="5,5,60,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="29,75,27,107,28,143,37,178,56,209,70,219,91,229,148,244,270,262,269,267,146,249,89,234,67,224,52,212,32,180,23,143,21,107,24,74"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="166,5,190,75"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="177,75,177,106,180,141,189,177,206,209,220,224,236,236,271,253,269,258,233,240,216,228,202,212,184,179,175,142,172,106,172,75"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="298,5,333,75"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="318,74,318,218,313,218,313,74"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="460,5,606,75"/>
+<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="539,75,540,107,536,143,525,180,505,212,474,238,436,255,397,265,362,270,361,264,396,260,434,250,471,234,501,209,520,178,531,142,534,106,534,75"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="630,5,726,75"/>
+<area shape="poly" id="edge5_Node000001_Node000006" title=" " alt="" coords="678,75,673,108,663,145,646,182,620,213,600,224,573,235,504,250,362,267,361,262,503,245,572,229,598,220,616,209,641,179,658,143,668,107,673,74"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..bb1fd0cec70aec88b2c13ac3878be02ac01fe127
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask__coll__graph.md5
@@ -0,0 +1 @@
+d919fa5069d27b7cabbac4851dc21ae8
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..279d26bdcf15037437400b8ecbfedcdfc3d33fe5
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structSubtask__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask-members.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask-members.html
new file mode 100644
index 0000000000000000000000000000000000000000..05e8c255db52611f9a3666444204f012a0aad96e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask-members.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Member List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">Task Member List</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>This is the complete list of members for <a class="el" href="structTask.html">Task</a>, including all inherited members.</p>
+<table class="directory">
+  <tr class="even"><td class="entry"><a class="el" href="structTask.html#a92a16f5ec66f7511f0d0ce0fd759bf9e">difficulty</a></td><td class="entry"><a class="el" href="structTask.html">Task</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="structTask.html#a6fe956adc87191ee794c5bccf68c292b">difficultyHexColor</a></td><td class="entry"><a class="el" href="structTask.html">Task</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structTask.html#a470ace63434687116684f003a27dc439">folder</a></td><td class="entry"><a class="el" href="structTask.html">Task</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="structTask.html#add2905e57d8e714693b24cc8a9148a82">previousSubtasksRequired</a></td><td class="entry"><a class="el" href="structTask.html">Task</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structTask.html#a7486a61c7f0eb8a952260ffe9c2a1af3">subtasks</a></td><td class="entry"><a class="el" href="structTask.html">Task</a></td><td class="entry"></td></tr>
+  <tr class="odd"><td class="entry"><a class="el" href="structTask.html#a0ab070dbbe73ff2a4306fe20ab75400f">title</a></td><td class="entry"><a class="el" href="structTask.html">Task</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="structTask.html#a8c37303702dbbb22f7430a73f9a3ed08">topic</a></td><td class="entry"><a class="el" href="structTask.html">Task</a></td><td class="entry"></td></tr>
+</table></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask.html
new file mode 100644
index 0000000000000000000000000000000000000000..e20b506f2615e51d7e0ac93d2f86e44d3f28bd89
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask.html
@@ -0,0 +1,263 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: Task Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#pub-attribs">Public Attributes</a> &#124;
+<a href="structTask-members.html">List of all members</a>  </div>
+  <div class="headertitle"><div class="title">Task Struct Reference</div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Represents a task containing multiple subtasks.  
+ <a href="#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="task_8hpp_source.html">task.hpp</a>&gt;</code></p>
+<div class="dynheader">
+Collaboration diagram for Task:</div>
+<div class="dyncontent">
+<div class="center"><img src="structTask__coll__graph.png" border="0" usemap="#aTask_coll__map" alt="Collaboration graph"/></div>
+<map name="aTask_coll__map" id="aTask_coll__map">
+<area shape="rect" title="Represents a task containing multiple subtasks." alt="" coords="155,203,193,272"/>
+<area shape="rect" title=" " alt="" coords="5,5,60,75"/>
+<area shape="poly" title=" " alt="" coords="33,74,38,126,46,153,60,177,77,194,97,208,139,225,137,230,94,212,73,198,56,180,41,155,33,127,28,75"/>
+<area shape="rect" title=" " alt="" coords="109,5,239,75"/>
+<area shape="poly" title=" " alt="" coords="177,74,177,186,171,186,171,74"/>
+<area shape="rect" title=" " alt="" coords="263,5,298,75"/>
+<area shape="poly" title=" " alt="" coords="280,75,270,126,260,154,247,180,229,201,209,218,206,214,226,197,242,177,256,152,265,125,275,74"/>
+</map>
+</div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
+Public Attributes</h2></td></tr>
+<tr class="memitem:a0ab070dbbe73ff2a4306fe20ab75400f" id="r_a0ab070dbbe73ff2a4306fe20ab75400f"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0ab070dbbe73ff2a4306fe20ab75400f">title</a></td></tr>
+<tr class="memdesc:a0ab070dbbe73ff2a4306fe20ab75400f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The title of the task.  <br /></td></tr>
+<tr class="separator:a0ab070dbbe73ff2a4306fe20ab75400f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a470ace63434687116684f003a27dc439" id="r_a470ace63434687116684f003a27dc439"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a470ace63434687116684f003a27dc439">folder</a></td></tr>
+<tr class="memdesc:a470ace63434687116684f003a27dc439"><td class="mdescLeft">&#160;</td><td class="mdescRight">The folder path of the task.  <br /></td></tr>
+<tr class="separator:a470ace63434687116684f003a27dc439"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a92a16f5ec66f7511f0d0ce0fd759bf9e" id="r_a92a16f5ec66f7511f0d0ce0fd759bf9e"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a92a16f5ec66f7511f0d0ce0fd759bf9e">difficulty</a></td></tr>
+<tr class="memdesc:a92a16f5ec66f7511f0d0ce0fd759bf9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The difficulty level of the task.  <br /></td></tr>
+<tr class="separator:a92a16f5ec66f7511f0d0ce0fd759bf9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8c37303702dbbb22f7430a73f9a3ed08" id="r_a8c37303702dbbb22f7430a73f9a3ed08"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8c37303702dbbb22f7430a73f9a3ed08">topic</a></td></tr>
+<tr class="memdesc:a8c37303702dbbb22f7430a73f9a3ed08"><td class="mdescLeft">&#160;</td><td class="mdescRight">The topic of the task.  <br /></td></tr>
+<tr class="separator:a8c37303702dbbb22f7430a73f9a3ed08"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7486a61c7f0eb8a952260ffe9c2a1af3" id="r_a7486a61c7f0eb8a952260ffe9c2a1af3"><td class="memItemLeft" align="right" valign="top">QVector&lt; <a class="el" href="structSubtask.html">Subtask</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7486a61c7f0eb8a952260ffe9c2a1af3">subtasks</a></td></tr>
+<tr class="memdesc:a7486a61c7f0eb8a952260ffe9c2a1af3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of subtasks within the task.  <br /></td></tr>
+<tr class="separator:a7486a61c7f0eb8a952260ffe9c2a1af3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:add2905e57d8e714693b24cc8a9148a82" id="r_add2905e57d8e714693b24cc8a9148a82"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#add2905e57d8e714693b24cc8a9148a82">previousSubtasksRequired</a> = false</td></tr>
+<tr class="memdesc:add2905e57d8e714693b24cc8a9148a82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether previous subtasks are required.  <br /></td></tr>
+<tr class="separator:add2905e57d8e714693b24cc8a9148a82"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6fe956adc87191ee794c5bccf68c292b" id="r_a6fe956adc87191ee794c5bccf68c292b"><td class="memItemLeft" align="right" valign="top">QString&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6fe956adc87191ee794c5bccf68c292b">difficultyHexColor</a></td></tr>
+<tr class="memdesc:a6fe956adc87191ee794c5bccf68c292b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The hex color associated with the difficulty level.  <br /></td></tr>
+<tr class="separator:a6fe956adc87191ee794c5bccf68c292b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Represents a task containing multiple subtasks. </p>
+<p>The <a class="el" href="structTask.html" title="Represents a task containing multiple subtasks.">Task</a> struct contains information about a task, including its title, description, folder, difficulty, and a list of subtasks. It also includes an optional field indicating whether previous subtasks are required. </p>
+</div><h2 class="groupheader">Member Data Documentation</h2>
+<a id="a92a16f5ec66f7511f0d0ce0fd759bf9e" name="a92a16f5ec66f7511f0d0ce0fd759bf9e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a92a16f5ec66f7511f0d0ce0fd759bf9e">&#9670;&#160;</a></span>difficulty</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString Task::difficulty</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The difficulty level of the task. </p>
+
+</div>
+</div>
+<a id="a6fe956adc87191ee794c5bccf68c292b" name="a6fe956adc87191ee794c5bccf68c292b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6fe956adc87191ee794c5bccf68c292b">&#9670;&#160;</a></span>difficultyHexColor</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString Task::difficultyHexColor</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The hex color associated with the difficulty level. </p>
+
+</div>
+</div>
+<a id="a470ace63434687116684f003a27dc439" name="a470ace63434687116684f003a27dc439"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a470ace63434687116684f003a27dc439">&#9670;&#160;</a></span>folder</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString Task::folder</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The folder path of the task. </p>
+
+</div>
+</div>
+<a id="add2905e57d8e714693b24cc8a9148a82" name="add2905e57d8e714693b24cc8a9148a82"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#add2905e57d8e714693b24cc8a9148a82">&#9670;&#160;</a></span>previousSubtasksRequired</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">bool Task::previousSubtasksRequired = false</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>Whether previous subtasks are required. </p>
+
+</div>
+</div>
+<a id="a7486a61c7f0eb8a952260ffe9c2a1af3" name="a7486a61c7f0eb8a952260ffe9c2a1af3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7486a61c7f0eb8a952260ffe9c2a1af3">&#9670;&#160;</a></span>subtasks</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QVector&lt;<a class="el" href="structSubtask.html">Subtask</a>&gt; Task::subtasks</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The list of subtasks within the task. </p>
+
+</div>
+</div>
+<a id="a0ab070dbbe73ff2a4306fe20ab75400f" name="a0ab070dbbe73ff2a4306fe20ab75400f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ab070dbbe73ff2a4306fe20ab75400f">&#9670;&#160;</a></span>title</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString Task::title</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The title of the task. </p>
+
+</div>
+</div>
+<a id="a8c37303702dbbb22f7430a73f9a3ed08" name="a8c37303702dbbb22f7430a73f9a3ed08"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8c37303702dbbb22f7430a73f9a3ed08">&#9670;&#160;</a></span>topic</h2>
+
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">QString Task::topic</td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+
+<p>The topic of the task. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="task_8hpp_source.html">task.hpp</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask__coll__graph.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask__coll__graph.map
new file mode 100644
index 0000000000000000000000000000000000000000..89b6e7306cbd0438bc587617773a68d7cbf04254
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask__coll__graph.map
@@ -0,0 +1,9 @@
+<map id="Task" name="Task">
+<area shape="rect" id="Node000001" title="Represents a task containing multiple subtasks." alt="" coords="155,203,193,272"/>
+<area shape="rect" id="Node000002" title=" " alt="" coords="5,5,60,75"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="33,74,38,126,46,153,60,177,77,194,97,208,139,225,137,230,94,212,73,198,56,180,41,155,33,127,28,75"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="109,5,239,75"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="177,74,177,186,171,186,171,74"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="263,5,298,75"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="280,75,270,126,260,154,247,180,229,201,209,218,206,214,226,197,242,177,256,152,265,125,275,74"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..af4d22b5fcd4f969fac1a8e7cc77218a23b0963f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask__coll__graph.md5
@@ -0,0 +1 @@
+c5ffbb6c127ea00b1d007027f7764e31
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask__coll__graph.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask__coll__graph.png
new file mode 100644
index 0000000000000000000000000000000000000000..b47801f145652b817637e779b4f2b9c93661974d
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/structTask__coll__graph.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8cpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..71cfc086353306a4a1bce5286d25c525dbe11f2f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8cpp.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: subtask_item.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">subtask_item.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="subtask__item_8hpp_source.html">learn_environment/subtask_item.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task__manager_8hpp_source.html">learn_environment/task_manager.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="notebook__converter_8hpp_source.html">learn_environment/notebook_converter.hpp</a>&quot;</code><br />
+<code>#include &lt;QHBoxLayout&gt;</code><br />
+<code>#include &lt;QVBoxLayout&gt;</code><br />
+<code>#include &lt;QLabel&gt;</code><br />
+<code>#include &lt;QFrame&gt;</code><br />
+<code>#include &lt;QMenu&gt;</code><br />
+<code>#include &lt;QWidgetAction&gt;</code><br />
+<code>#include &lt;QMessageBox&gt;</code><br />
+<code>#include &lt;QDebug&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for subtask_item.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="subtask__item_8cpp__incl.png" border="0" usemap="#asubtask__item_8cpp" alt=""/></div>
+<map name="asubtask__item_8cpp" id="asubtask__item_8cpp">
+<area shape="rect" title=" " alt="" coords="1001,5,1126,32"/>
+<area shape="rect" href="subtask__item_8hpp.html" title=" " alt="" coords="480,80,658,123"/>
+<area shape="poly" title=" " alt="" coords="1001,33,673,86,673,81,1000,27"/>
+<area shape="rect" href="task__manager_8hpp.html" title=" " alt="" coords="26,171,154,197"/>
+<area shape="poly" title=" " alt="" coords="1001,22,828,24,602,32,487,40,381,50,291,65,224,82,192,98,162,119,114,161,110,157,159,115,189,94,223,78,290,59,381,45,487,35,602,27,828,19,1001,17"/>
+<area shape="rect" title=" " alt="" coords="867,253,935,280"/>
+<area shape="poly" title=" " alt="" coords="1067,33,1069,64,1066,108,1056,155,1046,178,1033,199,999,221,943,249,940,244,997,216,1030,195,1042,176,1050,154,1061,107,1063,64,1062,33"/>
+<area shape="rect" title=" " alt="" coords="431,253,493,280"/>
+<area shape="poly" title=" " alt="" coords="1001,24,824,31,714,40,599,54,489,73,392,98,351,114,316,131,289,151,270,172,265,184,269,195,323,217,417,248,415,253,321,222,266,199,260,184,265,169,285,147,313,127,349,109,390,93,488,67,599,48,713,35,824,26,1001,18"/>
+<area shape="rect" title=" " alt="" coords="740,253,843,280"/>
+<area shape="poly" title=" " alt="" coords="1064,33,1058,66,1044,110,1022,157,1007,180,989,200,936,220,846,250,844,245,934,215,986,195,1003,176,1017,155,1039,108,1052,64,1059,32"/>
+<area shape="rect" title=" " alt="" coords="874,171,976,197"/>
+<area shape="poly" title=" " alt="" coords="1049,34,1023,56,996,82,966,121,942,159,937,156,961,118,992,78,1019,52,1045,30"/>
+<area shape="rect" href="notebook__converter_8hpp.html" title=" " alt="" coords="959,245,1144,288"/>
+<area shape="poly" title=" " alt="" coords="1071,32,1085,79,1092,139,1085,198,1073,232,1068,230,1080,197,1087,139,1080,81,1066,33"/>
+<area shape="rect" title=" " alt="" coords="1152,88,1215,115"/>
+<area shape="poly" title=" " alt="" coords="1084,30,1154,77,1151,82,1081,35"/>
+<area shape="rect" title=" " alt="" coords="1240,88,1349,115"/>
+<area shape="poly" title=" " alt="" coords="1100,30,1245,80,1243,85,1099,35"/>
+<area shape="rect" title=" " alt="" coords="1372,88,1480,115"/>
+<area shape="poly" title=" " alt="" coords="1126,28,1236,49,1361,77,1373,81,1372,86,1360,83,1235,54,1125,33"/>
+<area shape="rect" title=" " alt="" coords="1504,88,1573,115"/>
+<area shape="poly" title=" " alt="" coords="1126,21,1293,38,1393,54,1492,77,1500,80,1498,85,1491,83,1392,60,1293,43,1126,26"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="156,336,227,363"/>
+<area shape="poly" title=" " alt="" coords="480,108,429,115,374,127,319,146,269,173,252,187,238,204,217,244,204,286,197,321,192,320,198,284,212,242,233,201,248,183,266,168,317,141,372,122,428,110,479,103"/>
+<area shape="poly" title=" " alt="" coords="480,120,170,172,169,167,479,115"/>
+<area shape="rect" href="execute__frame_8hpp.html" title=" " alt="" coords="571,171,703,197"/>
+<area shape="poly" title=" " alt="" coords="588,122,618,157,614,160,584,125"/>
+<area shape="poly" title=" " alt="" coords="501,126,468,145,443,172,438,188,438,205,449,239,444,241,433,206,432,187,439,169,465,141,498,121"/>
+<area shape="poly" title=" " alt="" coords="659,114,751,136,789,151,814,169,821,186,821,205,810,240,805,239,816,204,816,187,809,172,787,156,750,141,657,119"/>
+<area shape="rect" title=" " alt="" coords="727,171,800,197"/>
+<area shape="poly" title=" " alt="" coords="620,121,720,162,718,167,618,126"/>
+<area shape="rect" title=" " alt="" coords="279,171,378,197"/>
+<area shape="poly" title=" " alt="" coords="508,126,382,168,380,163,506,121"/>
+<area shape="rect" title=" " alt="" coords="453,171,546,197"/>
+<area shape="poly" title=" " alt="" coords="553,125,522,161,518,157,549,122"/>
+<area shape="poly" title=" " alt="" coords="658,120,859,165,858,170,657,125"/>
+<area shape="rect" title=" " alt="" coords="364,411,430,437"/>
+<area shape="poly" title=" " alt="" coords="228,361,350,404,349,409,226,366"/>
+<area shape="rect" title=" " alt="" coords="5,411,74,437"/>
+<area shape="poly" title=" " alt="" coords="166,366,81,406,79,401,164,361"/>
+<area shape="rect" title=" " alt="" coords="98,411,211,437"/>
+<area shape="poly" title=" " alt="" coords="187,364,170,398,165,396,183,362"/>
+<area shape="rect" title=" " alt="" coords="235,411,340,437"/>
+<area shape="poly" title=" " alt="" coords="210,361,260,399,257,403,207,365"/>
+<area shape="poly" title=" " alt="" coords="100,196,178,321,173,324,96,199"/>
+<area shape="poly" title=" " alt="" coords="88,198,74,246,57,327,46,396,41,395,52,326,69,245,83,197"/>
+<area shape="poly" title=" " alt="" coords="96,197,149,395,144,396,91,198"/>
+<area shape="rect" href="task__executor_8hpp.html" title=" " alt="" coords="229,253,357,280"/>
+<area shape="poly" title=" " alt="" coords="123,195,248,245,246,250,121,200"/>
+<area shape="rect" title=" " alt="" coords="360,336,429,363"/>
+<area shape="poly" title=" " alt="" coords="155,189,278,208,334,223,355,233,371,243,384,261,392,281,398,320,392,321,386,282,379,263,367,247,353,237,332,228,277,213,154,194"/>
+<area shape="poly" title=" " alt="" coords="279,283,220,329,217,324,275,278"/>
+<area shape="poly" title=" " alt="" coords="302,279,350,361,378,397,374,401,345,364,297,282"/>
+<area shape="poly" title=" " alt="" coords="290,281,272,320,242,364,218,386,192,404,189,400,214,382,237,361,267,318,286,279"/>
+<area shape="poly" title=" " alt="" coords="310,278,369,324,365,329,307,283"/>
+<area shape="poly" title=" " alt="" coords="692,195,770,216,856,243,861,245,859,250,855,248,769,221,691,201"/>
+<area shape="poly" title=" " alt="" coords="611,200,504,249,502,244,608,195"/>
+<area shape="rect" title=" " alt="" coords="604,253,670,280"/>
+<area shape="poly" title=" " alt="" coords="640,198,640,238,634,238,634,198"/>
+<area shape="poly" title=" " alt="" coords="662,195,755,244,753,248,660,200"/>
+<area shape="poly" title=" " alt="" coords="1055,289,1050,328,1042,348,1028,365,995,378,937,390,772,407,589,418,445,424,445,419,588,413,771,402,936,384,993,373,1025,361,1037,345,1045,326,1050,288"/>
+<area shape="poly" title=" " alt="" coords="960,289,948,291,663,326,445,347,444,341,663,321,947,285,959,284"/>
+<area shape="rect" title=" " alt="" coords="1089,336,1137,363"/>
+<area shape="poly" title=" " alt="" coords="1069,287,1096,322,1092,325,1065,290"/>
+<area shape="rect" title=" " alt="" coords="771,336,860,363"/>
+<area shape="poly" title=" " alt="" coords="992,291,868,333,866,328,990,286"/>
+<area shape="rect" title=" " alt="" coords="884,336,1014,363"/>
+<area shape="poly" title=" " alt="" coords="1027,291,978,328,975,324,1023,286"/>
+</map>
+</div>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8cpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8cpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..f450097dbdf68c9099d710898334f8f5a124e2d6
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8cpp__incl.map
@@ -0,0 +1,71 @@
+<map id="subtask_item.cpp" name="subtask_item.cpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="1001,5,1126,32"/>
+<area shape="rect" id="Node000002" href="$subtask__item_8hpp.html" title=" " alt="" coords="480,80,658,123"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="1001,33,673,86,673,81,1000,27"/>
+<area shape="rect" id="Node000008" href="$task__manager_8hpp.html" title=" " alt="" coords="26,171,154,197"/>
+<area shape="poly" id="edge28_Node000001_Node000008" title=" " alt="" coords="1001,22,828,24,602,32,487,40,381,50,291,65,224,82,192,98,162,119,114,161,110,157,159,115,189,94,223,78,290,59,381,45,487,35,602,27,828,19,1001,17"/>
+<area shape="rect" id="Node000012" title=" " alt="" coords="867,253,935,280"/>
+<area shape="poly" id="edge38_Node000001_Node000012" title=" " alt="" coords="1067,33,1069,64,1066,108,1056,155,1046,178,1033,199,999,221,943,249,940,244,997,216,1030,195,1042,176,1050,154,1061,107,1063,64,1062,33"/>
+<area shape="rect" id="Node000013" title=" " alt="" coords="431,253,493,280"/>
+<area shape="poly" id="edge37_Node000001_Node000013" title=" " alt="" coords="1001,24,824,31,714,40,599,54,489,73,392,98,351,114,316,131,289,151,270,172,265,184,269,195,323,217,417,248,415,253,321,222,266,199,260,184,265,169,285,147,313,127,349,109,390,93,488,67,599,48,713,35,824,26,1001,18"/>
+<area shape="rect" id="Node000015" title=" " alt="" coords="740,253,843,280"/>
+<area shape="poly" id="edge35_Node000001_Node000015" title=" " alt="" coords="1064,33,1058,66,1044,110,1022,157,1007,180,989,200,936,220,846,250,844,245,934,215,986,195,1003,176,1017,155,1039,108,1052,64,1059,32"/>
+<area shape="rect" id="Node000019" title=" " alt="" coords="874,171,976,197"/>
+<area shape="poly" id="edge36_Node000001_Node000019" title=" " alt="" coords="1049,34,1023,56,996,82,966,121,942,159,937,156,961,118,992,78,1019,52,1045,30"/>
+<area shape="rect" id="Node000020" href="$notebook__converter_8hpp.html" title=" " alt="" coords="959,245,1144,288"/>
+<area shape="poly" id="edge29_Node000001_Node000020" title=" " alt="" coords="1071,32,1085,79,1092,139,1085,198,1073,232,1068,230,1080,197,1087,139,1080,81,1066,33"/>
+<area shape="rect" id="Node000024" title=" " alt="" coords="1152,88,1215,115"/>
+<area shape="poly" id="edge39_Node000001_Node000024" title=" " alt="" coords="1084,30,1154,77,1151,82,1081,35"/>
+<area shape="rect" id="Node000025" title=" " alt="" coords="1240,88,1349,115"/>
+<area shape="poly" id="edge40_Node000001_Node000025" title=" " alt="" coords="1100,30,1245,80,1243,85,1099,35"/>
+<area shape="rect" id="Node000026" title=" " alt="" coords="1372,88,1480,115"/>
+<area shape="poly" id="edge41_Node000001_Node000026" title=" " alt="" coords="1126,28,1236,49,1361,77,1373,81,1372,86,1360,83,1235,54,1125,33"/>
+<area shape="rect" id="Node000027" title=" " alt="" coords="1504,88,1573,115"/>
+<area shape="poly" id="edge42_Node000001_Node000027" title=" " alt="" coords="1126,21,1293,38,1393,54,1492,77,1500,80,1498,85,1491,83,1392,60,1293,43,1126,26"/>
+<area shape="rect" id="Node000003" href="$task_8hpp.html" title=" " alt="" coords="156,336,227,363"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="480,108,429,115,374,127,319,146,269,173,252,187,238,204,217,244,204,286,197,321,192,320,198,284,212,242,233,201,248,183,266,168,317,141,372,122,428,110,479,103"/>
+<area shape="poly" id="edge7_Node000002_Node000008" title=" " alt="" coords="480,120,170,172,169,167,479,115"/>
+<area shape="rect" id="Node000011" href="$execute__frame_8hpp.html" title=" " alt="" coords="571,171,703,197"/>
+<area shape="poly" id="edge17_Node000002_Node000011" title=" " alt="" coords="588,122,618,157,614,160,584,125"/>
+<area shape="poly" id="edge25_Node000002_Node000013" title=" " alt="" coords="501,126,468,145,443,172,438,188,438,205,449,239,444,241,433,206,432,187,439,169,465,141,498,121"/>
+<area shape="poly" id="edge26_Node000002_Node000015" title=" " alt="" coords="659,114,751,136,789,151,814,169,821,186,821,205,810,240,805,239,816,204,816,187,809,172,787,156,750,141,657,119"/>
+<area shape="rect" id="Node000016" title=" " alt="" coords="727,171,800,197"/>
+<area shape="poly" id="edge22_Node000002_Node000016" title=" " alt="" coords="620,121,720,162,718,167,618,126"/>
+<area shape="rect" id="Node000017" title=" " alt="" coords="279,171,378,197"/>
+<area shape="poly" id="edge23_Node000002_Node000017" title=" " alt="" coords="508,126,382,168,380,163,506,121"/>
+<area shape="rect" id="Node000018" title=" " alt="" coords="453,171,546,197"/>
+<area shape="poly" id="edge24_Node000002_Node000018" title=" " alt="" coords="553,125,522,161,518,157,549,122"/>
+<area shape="poly" id="edge27_Node000002_Node000019" title=" " alt="" coords="658,120,859,165,858,170,657,125"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="364,411,430,437"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="228,361,350,404,349,409,226,366"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="5,411,74,437"/>
+<area shape="poly" id="edge4_Node000003_Node000005" title=" " alt="" coords="166,366,81,406,79,401,164,361"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="98,411,211,437"/>
+<area shape="poly" id="edge5_Node000003_Node000006" title=" " alt="" coords="187,364,170,398,165,396,183,362"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="235,411,340,437"/>
+<area shape="poly" id="edge6_Node000003_Node000007" title=" " alt="" coords="210,361,260,399,257,403,207,365"/>
+<area shape="poly" id="edge8_Node000008_Node000003" title=" " alt="" coords="100,196,178,321,173,324,96,199"/>
+<area shape="poly" id="edge15_Node000008_Node000005" title=" " alt="" coords="88,198,74,246,57,327,46,396,41,395,52,326,69,245,83,197"/>
+<area shape="poly" id="edge16_Node000008_Node000006" title=" " alt="" coords="96,197,149,395,144,396,91,198"/>
+<area shape="rect" id="Node000009" href="$task__executor_8hpp.html" title=" " alt="" coords="229,253,357,280"/>
+<area shape="poly" id="edge9_Node000008_Node000009" title=" " alt="" coords="123,195,248,245,246,250,121,200"/>
+<area shape="rect" id="Node000010" title=" " alt="" coords="360,336,429,363"/>
+<area shape="poly" id="edge14_Node000008_Node000010" title=" " alt="" coords="155,189,278,208,334,223,355,233,371,243,384,261,392,281,398,320,392,321,386,282,379,263,367,247,353,237,332,228,277,213,154,194"/>
+<area shape="poly" id="edge10_Node000009_Node000003" title=" " alt="" coords="279,283,220,329,217,324,275,278"/>
+<area shape="poly" id="edge12_Node000009_Node000004" title=" " alt="" coords="302,279,350,361,378,397,374,401,345,364,297,282"/>
+<area shape="poly" id="edge13_Node000009_Node000006" title=" " alt="" coords="290,281,272,320,242,364,218,386,192,404,189,400,214,382,237,361,267,318,286,279"/>
+<area shape="poly" id="edge11_Node000009_Node000010" title=" " alt="" coords="310,278,369,324,365,329,307,283"/>
+<area shape="poly" id="edge18_Node000011_Node000012" title=" " alt="" coords="692,195,770,216,856,243,861,245,859,250,855,248,769,221,691,201"/>
+<area shape="poly" id="edge19_Node000011_Node000013" title=" " alt="" coords="611,200,504,249,502,244,608,195"/>
+<area shape="rect" id="Node000014" title=" " alt="" coords="604,253,670,280"/>
+<area shape="poly" id="edge20_Node000011_Node000014" title=" " alt="" coords="640,198,640,238,634,238,634,198"/>
+<area shape="poly" id="edge21_Node000011_Node000015" title=" " alt="" coords="662,195,755,244,753,248,660,200"/>
+<area shape="poly" id="edge31_Node000020_Node000004" title=" " alt="" coords="1055,289,1050,328,1042,348,1028,365,995,378,937,390,772,407,589,418,445,424,445,419,588,413,771,402,936,384,993,373,1025,361,1037,345,1045,326,1050,288"/>
+<area shape="poly" id="edge30_Node000020_Node000010" title=" " alt="" coords="960,289,948,291,663,326,445,347,444,341,663,321,947,285,959,284"/>
+<area shape="rect" id="Node000021" title=" " alt="" coords="1089,336,1137,363"/>
+<area shape="poly" id="edge32_Node000020_Node000021" title=" " alt="" coords="1069,287,1096,322,1092,325,1065,290"/>
+<area shape="rect" id="Node000022" title=" " alt="" coords="771,336,860,363"/>
+<area shape="poly" id="edge33_Node000020_Node000022" title=" " alt="" coords="992,291,868,333,866,328,990,286"/>
+<area shape="rect" id="Node000023" title=" " alt="" coords="884,336,1014,363"/>
+<area shape="poly" id="edge34_Node000020_Node000023" title=" " alt="" coords="1027,291,978,328,975,324,1023,286"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..87f1e624702ab85d3449a8bf69764941fc336a32
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8cpp__incl.md5
@@ -0,0 +1 @@
+7086d7b7fe149b35389553cba8d51858
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8cpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8cpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..16fd0c9afa0d072dcbff4032fcac6f0d3c57f5e0
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8cpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..ec56aace6940d6d42b1d6de195849259772ebb36
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp.html
@@ -0,0 +1,184 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: subtask_item.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">subtask_item.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="task_8hpp_source.html">task.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task__manager_8hpp_source.html">task_manager.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="execute__frame_8hpp_source.html">execute_frame.hpp</a>&quot;</code><br />
+<code>#include &lt;QWidget&gt;</code><br />
+<code>#include &lt;QPushButton&gt;</code><br />
+<code>#include &lt;QToolButton&gt;</code><br />
+<code>#include &lt;QLabel&gt;</code><br />
+<code>#include &lt;QHBoxLayout&gt;</code><br />
+<code>#include &lt;QVBoxLayout&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for subtask_item.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="subtask__item_8hpp__incl.png" border="0" usemap="#asubtask__item_8hpp" alt=""/></div>
+<map name="asubtask__item_8hpp" id="asubtask__item_8hpp">
+<area shape="rect" title=" " alt="" coords="641,5,766,32"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="132,229,203,256"/>
+<area shape="poly" title=" " alt="" coords="641,26,542,32,427,43,319,60,276,70,245,82,219,97,202,111,188,130,175,156,168,185,167,214,162,214,163,184,170,154,184,127,198,108,216,92,242,78,275,65,318,55,426,38,542,27,641,20"/>
+<area shape="rect" href="task__manager_8hpp.html" title=" " alt="" coords="255,80,384,107"/>
+<area shape="poly" title=" " alt="" coords="641,34,399,80,398,75,640,29"/>
+<area shape="rect" href="execute__frame_8hpp.html" title=" " alt="" coords="533,80,666,107"/>
+<area shape="poly" title=" " alt="" coords="687,35,631,73,628,69,684,30"/>
+<area shape="rect" title=" " alt="" coords="472,155,535,181"/>
+<area shape="poly" title=" " alt="" coords="642,27,610,34,578,44,548,60,523,82,514,95,509,109,505,139,500,139,504,108,510,92,519,78,545,56,576,40,609,29,640,22"/>
+<area shape="rect" title=" " alt="" coords="742,155,846,181"/>
+<area shape="poly" title=" " alt="" coords="708,32,715,67,731,105,747,126,766,143,762,147,743,129,727,108,710,68,702,33"/>
+<area shape="rect" title=" " alt="" coords="741,80,813,107"/>
+<area shape="poly" title=" " alt="" coords="718,31,755,67,751,71,714,34"/>
+<area shape="rect" title=" " alt="" coords="836,80,936,107"/>
+<area shape="poly" title=" " alt="" coords="736,30,841,71,839,76,734,35"/>
+<area shape="rect" title=" " alt="" coords="960,80,1053,107"/>
+<area shape="poly" title=" " alt="" coords="757,30,945,75,944,80,756,35"/>
+<area shape="rect" title=" " alt="" coords="1076,80,1179,107"/>
+<area shape="poly" title=" " alt="" coords="767,27,1061,77,1061,82,766,33"/>
+<area shape="rect" title=" " alt="" coords="227,304,292,331"/>
+<area shape="poly" title=" " alt="" coords="185,254,234,292,230,297,182,259"/>
+<area shape="rect" title=" " alt="" coords="5,304,74,331"/>
+<area shape="poly" title=" " alt="" coords="147,259,76,298,74,294,144,254"/>
+<area shape="rect" title=" " alt="" coords="316,304,430,331"/>
+<area shape="poly" title=" " alt="" coords="204,254,324,296,322,301,202,259"/>
+<area shape="rect" title=" " alt="" coords="98,304,203,331"/>
+<area shape="poly" title=" " alt="" coords="167,257,159,289,154,288,162,256"/>
+<area shape="poly" title=" " alt="" coords="271,110,230,128,211,141,195,156,179,185,172,215,167,213,174,183,191,153,208,137,228,123,269,105"/>
+<area shape="poly" title=" " alt="" coords="274,110,224,129,174,157,137,189,104,226,57,293,52,290,100,223,134,185,171,152,222,124,272,105"/>
+<area shape="poly" title=" " alt="" coords="334,106,376,156,398,191,413,229,415,243,413,257,395,293,390,290,408,255,410,243,408,230,393,193,372,159,330,109"/>
+<area shape="rect" href="task__executor_8hpp.html" title=" " alt="" coords="205,155,333,181"/>
+<area shape="poly" title=" " alt="" coords="313,109,288,144,284,141,308,106"/>
+<area shape="rect" title=" " alt="" coords="329,229,398,256"/>
+<area shape="poly" title=" " alt="" coords="328,106,347,154,362,214,356,215,342,155,323,108"/>
+<area shape="poly" title=" " alt="" coords="253,184,199,222,196,218,250,180"/>
+<area shape="poly" title=" " alt="" coords="271,182,264,289,259,288,265,182"/>
+<area shape="poly" title=" " alt="" coords="277,180,294,215,319,254,351,291,347,295,315,258,290,217,272,183"/>
+<area shape="poly" title=" " alt="" coords="287,180,337,218,333,222,284,184"/>
+<area shape="rect" title=" " alt="" coords="559,155,627,181"/>
+<area shape="poly" title=" " alt="" coords="601,107,598,139,593,139,596,107"/>
+<area shape="poly" title=" " alt="" coords="584,109,534,147,531,143,581,105"/>
+<area shape="rect" title=" " alt="" coords="652,155,718,181"/>
+<area shape="poly" title=" " alt="" coords="616,105,661,143,657,147,613,109"/>
+<area shape="poly" title=" " alt="" coords="634,105,747,146,745,151,632,110"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="subtask__item_8hpp__dep__incl.png" border="0" usemap="#asubtask__item_8hppdep" alt=""/></div>
+<map name="asubtask__item_8hppdep" id="asubtask__item_8hppdep">
+<area shape="rect" title=" " alt="" coords="71,5,195,32"/>
+<area shape="rect" href="subtask__item_8cpp.html" title=" " alt="" coords="5,80,130,107"/>
+<area shape="poly" title=" " alt="" coords="113,45,81,81,77,78,109,42"/>
+<area shape="rect" href="task__ui_8cpp.html" title=" " alt="" coords="154,80,242,107"/>
+<area shape="poly" title=" " alt="" coords="156,42,189,78,185,81,152,45"/>
+</map>
+</div>
+</div>
+<p><a href="subtask__item_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSubtaskItem.html">SubtaskItem</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a UI item for a subtask.  <a href="classSubtaskItem.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..b1c577e64b4c2e8d5011f791d4cd6fd9e60aab29
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__dep__incl.map
@@ -0,0 +1,7 @@
+<map id="subtask_item.hpp" name="subtask_item.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="71,5,195,32"/>
+<area shape="rect" id="Node000002" href="$subtask__item_8cpp.html" title=" " alt="" coords="5,80,130,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="113,45,81,81,77,78,109,42"/>
+<area shape="rect" id="Node000003" href="$task__ui_8cpp.html" title=" " alt="" coords="154,80,242,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="156,42,189,78,185,81,152,45"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..70a4a449372e010c3b4e7a1fc7f78b91bb462428
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+85cc45a44b70a7207f950ae00faa6fb3
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..08aef240285e57cc0314c6fda551694573b6f78a
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..0e80a5cd2271fc1d9a11ae199d528b0b963746d7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__incl.map
@@ -0,0 +1,46 @@
+<map id="subtask_item.hpp" name="subtask_item.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="641,5,766,32"/>
+<area shape="rect" id="Node000002" href="$task_8hpp.html" title=" " alt="" coords="132,229,203,256"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="641,26,542,32,427,43,319,60,276,70,245,82,219,97,202,111,188,130,175,156,168,185,167,214,162,214,163,184,170,154,184,127,198,108,216,92,242,78,275,65,318,55,426,38,542,27,641,20"/>
+<area shape="rect" id="Node000007" href="$task__manager_8hpp.html" title=" " alt="" coords="255,80,384,107"/>
+<area shape="poly" id="edge6_Node000001_Node000007" title=" " alt="" coords="641,34,399,80,398,75,640,29"/>
+<area shape="rect" id="Node000010" href="$execute__frame_8hpp.html" title=" " alt="" coords="533,80,666,107"/>
+<area shape="poly" id="edge16_Node000001_Node000010" title=" " alt="" coords="687,35,631,73,628,69,684,30"/>
+<area shape="rect" id="Node000012" title=" " alt="" coords="472,155,535,181"/>
+<area shape="poly" id="edge24_Node000001_Node000012" title=" " alt="" coords="642,27,610,34,578,44,548,60,523,82,514,95,509,109,505,139,500,139,504,108,510,92,519,78,545,56,576,40,609,29,640,22"/>
+<area shape="rect" id="Node000014" title=" " alt="" coords="742,155,846,181"/>
+<area shape="poly" id="edge25_Node000001_Node000014" title=" " alt="" coords="708,32,715,67,731,105,747,126,766,143,762,147,743,129,727,108,710,68,702,33"/>
+<area shape="rect" id="Node000015" title=" " alt="" coords="741,80,813,107"/>
+<area shape="poly" id="edge21_Node000001_Node000015" title=" " alt="" coords="718,31,755,67,751,71,714,34"/>
+<area shape="rect" id="Node000016" title=" " alt="" coords="836,80,936,107"/>
+<area shape="poly" id="edge22_Node000001_Node000016" title=" " alt="" coords="736,30,841,71,839,76,734,35"/>
+<area shape="rect" id="Node000017" title=" " alt="" coords="960,80,1053,107"/>
+<area shape="poly" id="edge23_Node000001_Node000017" title=" " alt="" coords="757,30,945,75,944,80,756,35"/>
+<area shape="rect" id="Node000018" title=" " alt="" coords="1076,80,1179,107"/>
+<area shape="poly" id="edge26_Node000001_Node000018" title=" " alt="" coords="767,27,1061,77,1061,82,766,33"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="227,304,292,331"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="185,254,234,292,230,297,182,259"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="5,304,74,331"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="147,259,76,298,74,294,144,254"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="316,304,430,331"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="204,254,324,296,322,301,202,259"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="98,304,203,331"/>
+<area shape="poly" id="edge5_Node000002_Node000006" title=" " alt="" coords="167,257,159,289,154,288,162,256"/>
+<area shape="poly" id="edge7_Node000007_Node000002" title=" " alt="" coords="271,110,230,128,211,141,195,156,179,185,172,215,167,213,174,183,191,153,208,137,228,123,269,105"/>
+<area shape="poly" id="edge14_Node000007_Node000004" title=" " alt="" coords="274,110,224,129,174,157,137,189,104,226,57,293,52,290,100,223,134,185,171,152,222,124,272,105"/>
+<area shape="poly" id="edge15_Node000007_Node000005" title=" " alt="" coords="334,106,376,156,398,191,413,229,415,243,413,257,395,293,390,290,408,255,410,243,408,230,393,193,372,159,330,109"/>
+<area shape="rect" id="Node000008" href="$task__executor_8hpp.html" title=" " alt="" coords="205,155,333,181"/>
+<area shape="poly" id="edge8_Node000007_Node000008" title=" " alt="" coords="313,109,288,144,284,141,308,106"/>
+<area shape="rect" id="Node000009" title=" " alt="" coords="329,229,398,256"/>
+<area shape="poly" id="edge13_Node000007_Node000009" title=" " alt="" coords="328,106,347,154,362,214,356,215,342,155,323,108"/>
+<area shape="poly" id="edge9_Node000008_Node000002" title=" " alt="" coords="253,184,199,222,196,218,250,180"/>
+<area shape="poly" id="edge11_Node000008_Node000003" title=" " alt="" coords="271,182,264,289,259,288,265,182"/>
+<area shape="poly" id="edge12_Node000008_Node000005" title=" " alt="" coords="277,180,294,215,319,254,351,291,347,295,315,258,290,217,272,183"/>
+<area shape="poly" id="edge10_Node000008_Node000009" title=" " alt="" coords="287,180,337,218,333,222,284,184"/>
+<area shape="rect" id="Node000011" title=" " alt="" coords="559,155,627,181"/>
+<area shape="poly" id="edge17_Node000010_Node000011" title=" " alt="" coords="601,107,598,139,593,139,596,107"/>
+<area shape="poly" id="edge18_Node000010_Node000012" title=" " alt="" coords="584,109,534,147,531,143,581,105"/>
+<area shape="rect" id="Node000013" title=" " alt="" coords="652,155,718,181"/>
+<area shape="poly" id="edge19_Node000010_Node000013" title=" " alt="" coords="616,105,661,143,657,147,613,109"/>
+<area shape="poly" id="edge20_Node000010_Node000014" title=" " alt="" coords="634,105,747,146,745,151,632,110"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..61dc8d64b76c812922d91d0f44dcd35a98761f7d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__incl.md5
@@ -0,0 +1 @@
+d1d64fe71000b2e965de0009fad31edd
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b8adf571d5b32578323eae5c248095d4c6f39ad
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..79735aa3b4271e6e6b21f20f65b316192358372d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/subtask__item_8hpp_source.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: subtask_item.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">subtask_item.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="subtask__item_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef SUBTASK_ITEM_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define SUBTASK_ITEM_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &quot;<a class="code" href="task_8hpp.html">task.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include &quot;<a class="code" href="task__manager_8hpp.html">task_manager.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="preprocessor">#include &quot;<a class="code" href="execute__frame_8hpp.html">execute_frame.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span> </div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;QWidget&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;QPushButton&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#include &lt;QToolButton&gt;</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="preprocessor">#include &lt;QLabel&gt;</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="preprocessor">#include &lt;QHBoxLayout&gt;</span></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="preprocessor">#include &lt;QVBoxLayout&gt;</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="foldopen" id="foldopen00024" data-start="{" data-end="};">
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="classSubtaskItem.html">   24</a></span><span class="keyword">class </span><a class="code hl_class" href="classSubtaskItem.html">SubtaskItem</a> : <span class="keyword">public</span> <a class="code hl_class" href="classQWidget.html">QWidget</a> {</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>    Q_OBJECT</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>    <a class="code hl_function" href="classSubtaskItem.html#a63e6bb32b434cf04705924c3e2cdd0db">SubtaskItem</a>(<a class="code hl_class" href="classQWidget.html">QWidget</a> *parent, <a class="code hl_struct" href="structSubtask.html">Subtask</a> *subtask);</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classSubtaskItem.html#a005df51b50001f3e9c95652e845cf424">updateUI</a>(<span class="keywordtype">bool</span> constructorCall = <span class="keyword">false</span>);</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span> </div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classSubtaskItem.html#aebba84aaef3c06a0c3079cea7fcd4ba6">setTaskManager</a>(<a class="code hl_class" href="classTaskManager.html">TaskManager</a> *manager);</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span>Q_SIGNALS:</div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="classSubtaskItem.html#a9a41e7bf314df5a4297c68509d531423">   51</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classSubtaskItem.html#a9a41e7bf314df5a4297c68509d531423">subtaskStartStopRequested</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structSubtask.html">Subtask</a> &amp;subtask);</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span> </div>
+<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span><span class="keyword">private</span> Q_SLOTS:</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>    <span class="keywordtype">void</span> handleStartButtonClick();</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span>    <span class="keywordtype">void</span> handleHelpButtonClick();</div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span>    <span class="keywordtype">void</span> handleStartOwnScript();</div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>    <span class="keywordtype">void</span> handleStartSolution();</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span>    <span class="keywordtype">void</span> handleToggleSolution();</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span>    <span class="keywordtype">void</span> handleResetNotebook();    </div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span> </div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>    <span class="keywordtype">void</span> setupItemUI(<span class="keyword">const</span> QString &amp;headerText, <span class="keyword">const</span> QString &amp;linkText, <span class="keyword">const</span> QString &amp;bodyText);</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span>    <span class="keywordtype">void</span> initializeHelpMenu();</div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>    <span class="keywordtype">void</span> initializeStartMenu();</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span>    <span class="keywordtype">void</span> setExecutionFrame(<span class="keyword">const</span> QString&amp; imagePath, <span class="keyword">const</span> QString&amp; text);</div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span>    <a class="code hl_class" href="classTaskManager.html">TaskManager</a> *taskManager; </div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span>    <a class="code hl_struct" href="structSubtask.html">Subtask</a> *subtask; </div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>    QString headerText; </div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span>    QString linkText; </div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span>    QString bodyText; </div>
+<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>    QToolButton *startButton; </div>
+<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>    QToolButton *helpButton; </div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>    QVBoxLayout *baseLayout; </div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>    <a class="code hl_class" href="classExecuteFrame.html">ExecuteFrame</a> *executeSubtaskFrame; </div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span> </div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>    QPushButton *menuStartOwnBtn; </div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>    QPushButton *menuStartSolutionBtn; </div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span> </div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>    QPushButton *menuToggleSolutionBtn; </div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>    QPushButton *menuResetNotebookBtn; </div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span> </div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>    QMenu* startMenu; </div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>    QMenu* helpMenu; </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>};</div>
+</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span> </div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span><span class="preprocessor">#endif </span><span class="comment">// SUBTASK_ITEM_HPP</span></div>
+<div class="ttc" id="aclassExecuteFrame_html"><div class="ttname"><a href="classExecuteFrame.html">ExecuteFrame</a></div><div class="ttdoc">A custom QFrame that displays an image and text. For logging and task execution.</div><div class="ttdef"><b>Definition</b> execute_frame.hpp:14</div></div>
+<div class="ttc" id="aclassQWidget_html"><div class="ttname"><a href="classQWidget.html">QWidget</a></div></div>
+<div class="ttc" id="aclassSubtaskItem_html"><div class="ttname"><a href="classSubtaskItem.html">SubtaskItem</a></div><div class="ttdoc">Represents a UI item for a subtask.</div><div class="ttdef"><b>Definition</b> subtask_item.hpp:24</div></div>
+<div class="ttc" id="aclassSubtaskItem_html_a005df51b50001f3e9c95652e845cf424"><div class="ttname"><a href="classSubtaskItem.html#a005df51b50001f3e9c95652e845cf424">SubtaskItem::updateUI</a></div><div class="ttdeci">void updateUI(bool constructorCall=false)</div><div class="ttdoc">Updates the UI elements based on the subtask's status.</div><div class="ttdef"><b>Definition</b> subtask_item.cpp:72</div></div>
+<div class="ttc" id="aclassSubtaskItem_html_a63e6bb32b434cf04705924c3e2cdd0db"><div class="ttname"><a href="classSubtaskItem.html#a63e6bb32b434cf04705924c3e2cdd0db">SubtaskItem::SubtaskItem</a></div><div class="ttdeci">SubtaskItem(QWidget *parent, Subtask *subtask)</div><div class="ttdoc">Constructs a SubtaskItem object.</div><div class="ttdef"><b>Definition</b> subtask_item.cpp:57</div></div>
+<div class="ttc" id="aclassSubtaskItem_html_a9a41e7bf314df5a4297c68509d531423"><div class="ttname"><a href="classSubtaskItem.html#a9a41e7bf314df5a4297c68509d531423">SubtaskItem::subtaskStartStopRequested</a></div><div class="ttdeci">void subtaskStartStopRequested(const Subtask &amp;subtask)</div><div class="ttdoc">Signal emitted when a start/stop request is made for the subtask.</div></div>
+<div class="ttc" id="aclassSubtaskItem_html_aebba84aaef3c06a0c3079cea7fcd4ba6"><div class="ttname"><a href="classSubtaskItem.html#aebba84aaef3c06a0c3079cea7fcd4ba6">SubtaskItem::setTaskManager</a></div><div class="ttdeci">void setTaskManager(TaskManager *manager)</div><div class="ttdoc">Sets the TaskManager object.</div><div class="ttdef"><b>Definition</b> subtask_item.cpp:135</div></div>
+<div class="ttc" id="aclassTaskManager_html"><div class="ttname"><a href="classTaskManager.html">TaskManager</a></div><div class="ttdoc">Manages tasks and their execution within the application.</div><div class="ttdef"><b>Definition</b> task_manager.hpp:21</div></div>
+<div class="ttc" id="aexecute__frame_8hpp_html"><div class="ttname"><a href="execute__frame_8hpp.html">execute_frame.hpp</a></div></div>
+<div class="ttc" id="astructSubtask_html"><div class="ttname"><a href="structSubtask.html">Subtask</a></div><div class="ttdoc">Represents a subtask within a task.</div><div class="ttdef"><b>Definition</b> task.hpp:31</div></div>
+<div class="ttc" id="atask_8hpp_html"><div class="ttname"><a href="task_8hpp.html">task.hpp</a></div></div>
+<div class="ttc" id="atask__manager_8hpp_html"><div class="ttname"><a href="task__manager_8hpp.html">task_manager.hpp</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/svg.min.js b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/svg.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..916732fe5785cf401ea198b4ada12e8c2f9d85c0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/svg.min.js
@@ -0,0 +1,46 @@
+/*!
+* @svgdotjs/svg.js - A lightweight library for manipulating and animating SVG.
+* @version 3.1.2
+* https://svgjs.dev/
+*
+* @copyright Wout Fierens <wout@mick-wout.com>
+* @license MIT
+*
+* BUILT: Wed Jan 26 2022 23:19:07 GMT+0100 (Mitteleuropäische Normalzeit)
+*/var SVG=function(){"use strict";const methods$1={};const names=[];function registerMethods(name,m){if(Array.isArray(name)){for(const _name of name){registerMethods(_name,m)}return}if(typeof name==="object"){for(const _name in name){registerMethods(_name,name[_name])}return}addMethodNames(Object.getOwnPropertyNames(m));methods$1[name]=Object.assign(methods$1[name]||{},m)}function getMethodsFor(name){return methods$1[name]||{}}function getMethodNames(){return[...new Set(names)]}function addMethodNames(_names){names.push(..._names)}function map(array,block){let i;const il=array.length;const result=[];for(i=0;i<il;i++){result.push(block(array[i]))}return result}function filter(array,block){let i;const il=array.length;const result=[];for(i=0;i<il;i++){if(block(array[i])){result.push(array[i])}}return result}function radians(d){return d%360*Math.PI/180}function degrees(r){return r*180/Math.PI%360}function camelCase(s){return s.toLowerCase().replace(/-(.)/g,function(m,g){return g.toUpperCase()})}function unCamelCase(s){return s.replace(/([A-Z])/g,function(m,g){return"-"+g.toLowerCase()})}function capitalize(s){return s.charAt(0).toUpperCase()+s.slice(1)}function proportionalSize(element,width,height,box){if(width==null||height==null){box=box||element.bbox();if(width==null){width=box.width/box.height*height}else if(height==null){height=box.height/box.width*width}}return{width:width,height:height}}function getOrigin(o,element){const origin=o.origin;let ox=o.ox!=null?o.ox:o.originX!=null?o.originX:"center";let oy=o.oy!=null?o.oy:o.originY!=null?o.originY:"center";if(origin!=null){[ox,oy]=Array.isArray(origin)?origin:typeof origin==="object"?[origin.x,origin.y]:[origin,origin]}const condX=typeof ox==="string";const condY=typeof oy==="string";if(condX||condY){const{height,width,x,y}=element.bbox();if(condX){ox=ox.includes("left")?x:ox.includes("right")?x+width:x+width/2}if(condY){oy=oy.includes("top")?y:oy.includes("bottom")?y+height:y+height/2}}return[ox,oy]}var utils={__proto__:null,map:map,filter:filter,radians:radians,degrees:degrees,camelCase:camelCase,unCamelCase:unCamelCase,capitalize:capitalize,proportionalSize:proportionalSize,getOrigin:getOrigin};const svg="http://www.w3.org/2000/svg";const html="http://www.w3.org/1999/xhtml";const xmlns="http://www.w3.org/2000/xmlns/";const xlink="http://www.w3.org/1999/xlink";const svgjs="http://svgjs.dev/svgjs";var namespaces={__proto__:null,svg:svg,html:html,xmlns:xmlns,xlink:xlink,svgjs:svgjs};const globals={window:typeof window==="undefined"?null:window,document:typeof document==="undefined"?null:document};function registerWindow(win=null,doc=null){globals.window=win;globals.document=doc}const save={};function saveWindow(){save.window=globals.window;save.document=globals.document}function restoreWindow(){globals.window=save.window;globals.document=save.document}function withWindow(win,fn){saveWindow();registerWindow(win,win.document);fn(win,win.document);restoreWindow()}function getWindow(){return globals.window}class Base{}const elements={};const root="___SYMBOL___ROOT___";function create(name,ns=svg){return globals.document.createElementNS(ns,name)}function makeInstance(element,isHTML=false){if(element instanceof Base)return element;if(typeof element==="object"){return adopter(element)}if(element==null){return new elements[root]}if(typeof element==="string"&&element.charAt(0)!=="<"){return adopter(globals.document.querySelector(element))}const wrapper=isHTML?globals.document.createElement("div"):create("svg");wrapper.innerHTML=element;element=adopter(wrapper.firstChild);wrapper.removeChild(wrapper.firstChild);return element}function nodeOrNew(name,node){return node&&node.ownerDocument&&node instanceof node.ownerDocument.defaultView.Node?node:create(name)}function adopt(node){if(!node)return null;if(node.instance instanceof Base)return node.instance;if(node.nodeName==="#document-fragment"){return new elements.Fragment(node)}let className=capitalize(node.nodeName||"Dom");if(className==="LinearGradient"||className==="RadialGradient"){className="Gradient"}else if(!elements[className]){className="Dom"}return new elements[className](node)}let adopter=adopt;function mockAdopt(mock=adopt){adopter=mock}function register(element,name=element.name,asRoot=false){elements[name]=element;if(asRoot)elements[root]=element;addMethodNames(Object.getOwnPropertyNames(element.prototype));return element}function getClass(name){return elements[name]}let did=1e3;function eid(name){return"Svgjs"+capitalize(name)+did++}function assignNewId(node){for(let i=node.children.length-1;i>=0;i--){assignNewId(node.children[i])}if(node.id){node.id=eid(node.nodeName);return node}return node}function extend(modules,methods){let key,i;modules=Array.isArray(modules)?modules:[modules];for(i=modules.length-1;i>=0;i--){for(key in methods){modules[i].prototype[key]=methods[key]}}}function wrapWithAttrCheck(fn){return function(...args){const o=args[args.length-1];if(o&&o.constructor===Object&&!(o instanceof Array)){return fn.apply(this,args.slice(0,-1)).attr(o)}else{return fn.apply(this,args)}}}function siblings(){return this.parent().children()}function position(){return this.parent().index(this)}function next(){return this.siblings()[this.position()+1]}function prev(){return this.siblings()[this.position()-1]}function forward(){const i=this.position();const p=this.parent();p.add(this.remove(),i+1);return this}function backward(){const i=this.position();const p=this.parent();p.add(this.remove(),i?i-1:0);return this}function front(){const p=this.parent();p.add(this.remove());return this}function back(){const p=this.parent();p.add(this.remove(),0);return this}function before(element){element=makeInstance(element);element.remove();const i=this.position();this.parent().add(element,i);return this}function after(element){element=makeInstance(element);element.remove();const i=this.position();this.parent().add(element,i+1);return this}function insertBefore(element){element=makeInstance(element);element.before(this);return this}function insertAfter(element){element=makeInstance(element);element.after(this);return this}registerMethods("Dom",{siblings:siblings,position:position,next:next,prev:prev,forward:forward,backward:backward,front:front,back:back,before:before,after:after,insertBefore:insertBefore,insertAfter:insertAfter});const numberAndUnit=/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i;const hex=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;const rgb=/rgb\((\d+),(\d+),(\d+)\)/;const reference=/(#[a-z_][a-z0-9\-_]*)/i;const transforms=/\)\s*,?\s*/;const whitespace=/\s/g;const isHex=/^#[a-f0-9]{3}$|^#[a-f0-9]{6}$/i;const isRgb=/^rgb\(/;const isBlank=/^(\s+)?$/;const isNumber=/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;const isImage=/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i;const delimiter=/[\s,]+/;const isPathLetter=/[MLHVCSQTAZ]/i;var regex={__proto__:null,numberAndUnit:numberAndUnit,hex:hex,rgb:rgb,reference:reference,transforms:transforms,whitespace:whitespace,isHex:isHex,isRgb:isRgb,isBlank:isBlank,isNumber:isNumber,isImage:isImage,delimiter:delimiter,isPathLetter:isPathLetter};function classes(){const attr=this.attr("class");return attr==null?[]:attr.trim().split(delimiter)}function hasClass(name){return this.classes().indexOf(name)!==-1}function addClass(name){if(!this.hasClass(name)){const array=this.classes();array.push(name);this.attr("class",array.join(" "))}return this}function removeClass(name){if(this.hasClass(name)){this.attr("class",this.classes().filter(function(c){return c!==name}).join(" "))}return this}function toggleClass(name){return this.hasClass(name)?this.removeClass(name):this.addClass(name)}registerMethods("Dom",{classes:classes,hasClass:hasClass,addClass:addClass,removeClass:removeClass,toggleClass:toggleClass});function css(style,val){const ret={};if(arguments.length===0){this.node.style.cssText.split(/\s*;\s*/).filter(function(el){return!!el.length}).forEach(function(el){const t=el.split(/\s*:\s*/);ret[t[0]]=t[1]});return ret}if(arguments.length<2){if(Array.isArray(style)){for(const name of style){const cased=camelCase(name);ret[name]=this.node.style[cased]}return ret}if(typeof style==="string"){return this.node.style[camelCase(style)]}if(typeof style==="object"){for(const name in style){this.node.style[camelCase(name)]=style[name]==null||isBlank.test(style[name])?"":style[name]}}}if(arguments.length===2){this.node.style[camelCase(style)]=val==null||isBlank.test(val)?"":val}return this}function show(){return this.css("display","")}function hide(){return this.css("display","none")}function visible(){return this.css("display")!=="none"}registerMethods("Dom",{css:css,show:show,hide:hide,visible:visible});function data(a,v,r){if(a==null){return this.data(map(filter(this.node.attributes,el=>el.nodeName.indexOf("data-")===0),el=>el.nodeName.slice(5)))}else if(a instanceof Array){const data={};for(const key of a){data[key]=this.data(key)}return data}else if(typeof a==="object"){for(v in a){this.data(v,a[v])}}else if(arguments.length<2){try{return JSON.parse(this.attr("data-"+a))}catch(e){return this.attr("data-"+a)}}else{this.attr("data-"+a,v===null?null:r===true||typeof v==="string"||typeof v==="number"?v:JSON.stringify(v))}return this}registerMethods("Dom",{data:data});function remember(k,v){if(typeof arguments[0]==="object"){for(const key in k){this.remember(key,k[key])}}else if(arguments.length===1){return this.memory()[k]}else{this.memory()[k]=v}return this}function forget(){if(arguments.length===0){this._memory={}}else{for(let i=arguments.length-1;i>=0;i--){delete this.memory()[arguments[i]]}}return this}function memory(){return this._memory=this._memory||{}}registerMethods("Dom",{remember:remember,forget:forget,memory:memory});function sixDigitHex(hex){return hex.length===4?["#",hex.substring(1,2),hex.substring(1,2),hex.substring(2,3),hex.substring(2,3),hex.substring(3,4),hex.substring(3,4)].join(""):hex}function componentHex(component){const integer=Math.round(component);const bounded=Math.max(0,Math.min(255,integer));const hex=bounded.toString(16);return hex.length===1?"0"+hex:hex}function is(object,space){for(let i=space.length;i--;){if(object[space[i]]==null){return false}}return true}function getParameters(a,b){const params=is(a,"rgb")?{_a:a.r,_b:a.g,_c:a.b,_d:0,space:"rgb"}:is(a,"xyz")?{_a:a.x,_b:a.y,_c:a.z,_d:0,space:"xyz"}:is(a,"hsl")?{_a:a.h,_b:a.s,_c:a.l,_d:0,space:"hsl"}:is(a,"lab")?{_a:a.l,_b:a.a,_c:a.b,_d:0,space:"lab"}:is(a,"lch")?{_a:a.l,_b:a.c,_c:a.h,_d:0,space:"lch"}:is(a,"cmyk")?{_a:a.c,_b:a.m,_c:a.y,_d:a.k,space:"cmyk"}:{_a:0,_b:0,_c:0,space:"rgb"};params.space=b||params.space;return params}function cieSpace(space){if(space==="lab"||space==="xyz"||space==="lch"){return true}else{return false}}function hueToRgb(p,q,t){if(t<0)t+=1;if(t>1)t-=1;if(t<1/6)return p+(q-p)*6*t;if(t<1/2)return q;if(t<2/3)return p+(q-p)*(2/3-t)*6;return p}class Color{constructor(...inputs){this.init(...inputs)}static isColor(color){return color&&(color instanceof Color||this.isRgb(color)||this.test(color))}static isRgb(color){return color&&typeof color.r==="number"&&typeof color.g==="number"&&typeof color.b==="number"}static random(mode="vibrant",t,u){const{random,round,sin,PI:pi}=Math;if(mode==="vibrant"){const l=(81-57)*random()+57;const c=(83-45)*random()+45;const h=360*random();const color=new Color(l,c,h,"lch");return color}else if(mode==="sine"){t=t==null?random():t;const r=round(80*sin(2*pi*t/.5+.01)+150);const g=round(50*sin(2*pi*t/.5+4.6)+200);const b=round(100*sin(2*pi*t/.5+2.3)+150);const color=new Color(r,g,b);return color}else if(mode==="pastel"){const l=(94-86)*random()+86;const c=(26-9)*random()+9;const h=360*random();const color=new Color(l,c,h,"lch");return color}else if(mode==="dark"){const l=10+10*random();const c=(125-75)*random()+86;const h=360*random();const color=new Color(l,c,h,"lch");return color}else if(mode==="rgb"){const r=255*random();const g=255*random();const b=255*random();const color=new Color(r,g,b);return color}else if(mode==="lab"){const l=100*random();const a=256*random()-128;const b=256*random()-128;const color=new Color(l,a,b,"lab");return color}else if(mode==="grey"){const grey=255*random();const color=new Color(grey,grey,grey);return color}else{throw new Error("Unsupported random color mode")}}static test(color){return typeof color==="string"&&(isHex.test(color)||isRgb.test(color))}cmyk(){const{_a,_b,_c}=this.rgb();const[r,g,b]=[_a,_b,_c].map(v=>v/255);const k=Math.min(1-r,1-g,1-b);if(k===1){return new Color(0,0,0,1,"cmyk")}const c=(1-r-k)/(1-k);const m=(1-g-k)/(1-k);const y=(1-b-k)/(1-k);const color=new Color(c,m,y,k,"cmyk");return color}hsl(){const{_a,_b,_c}=this.rgb();const[r,g,b]=[_a,_b,_c].map(v=>v/255);const max=Math.max(r,g,b);const min=Math.min(r,g,b);const l=(max+min)/2;const isGrey=max===min;const delta=max-min;const s=isGrey?0:l>.5?delta/(2-max-min):delta/(max+min);const h=isGrey?0:max===r?((g-b)/delta+(g<b?6:0))/6:max===g?((b-r)/delta+2)/6:max===b?((r-g)/delta+4)/6:0;const color=new Color(360*h,100*s,100*l,"hsl");return color}init(a=0,b=0,c=0,d=0,space="rgb"){a=!a?0:a;if(this.space){for(const component in this.space){delete this[this.space[component]]}}if(typeof a==="number"){space=typeof d==="string"?d:space;d=typeof d==="string"?0:d;Object.assign(this,{_a:a,_b:b,_c:c,_d:d,space:space})}else if(a instanceof Array){this.space=b||(typeof a[3]==="string"?a[3]:a[4])||"rgb";Object.assign(this,{_a:a[0],_b:a[1],_c:a[2],_d:a[3]||0})}else if(a instanceof Object){const values=getParameters(a,b);Object.assign(this,values)}else if(typeof a==="string"){if(isRgb.test(a)){const noWhitespace=a.replace(whitespace,"");const[_a,_b,_c]=rgb.exec(noWhitespace).slice(1,4).map(v=>parseInt(v));Object.assign(this,{_a:_a,_b:_b,_c:_c,_d:0,space:"rgb"})}else if(isHex.test(a)){const hexParse=v=>parseInt(v,16);const[,_a,_b,_c]=hex.exec(sixDigitHex(a)).map(hexParse);Object.assign(this,{_a:_a,_b:_b,_c:_c,_d:0,space:"rgb"})}else throw Error("Unsupported string format, can't construct Color")}const{_a,_b,_c,_d}=this;const components=this.space==="rgb"?{r:_a,g:_b,b:_c}:this.space==="xyz"?{x:_a,y:_b,z:_c}:this.space==="hsl"?{h:_a,s:_b,l:_c}:this.space==="lab"?{l:_a,a:_b,b:_c}:this.space==="lch"?{l:_a,c:_b,h:_c}:this.space==="cmyk"?{c:_a,m:_b,y:_c,k:_d}:{};Object.assign(this,components)}lab(){const{x,y,z}=this.xyz();const l=116*y-16;const a=500*(x-y);const b=200*(y-z);const color=new Color(l,a,b,"lab");return color}lch(){const{l,a,b}=this.lab();const c=Math.sqrt(a**2+b**2);let h=180*Math.atan2(b,a)/Math.PI;if(h<0){h*=-1;h=360-h}const color=new Color(l,c,h,"lch");return color}rgb(){if(this.space==="rgb"){return this}else if(cieSpace(this.space)){let{x,y,z}=this;if(this.space==="lab"||this.space==="lch"){let{l,a,b}=this;if(this.space==="lch"){const{c,h}=this;const dToR=Math.PI/180;a=c*Math.cos(dToR*h);b=c*Math.sin(dToR*h)}const yL=(l+16)/116;const xL=a/500+yL;const zL=yL-b/200;const ct=16/116;const mx=.008856;const nm=7.787;x=.95047*(xL**3>mx?xL**3:(xL-ct)/nm);y=1*(yL**3>mx?yL**3:(yL-ct)/nm);z=1.08883*(zL**3>mx?zL**3:(zL-ct)/nm)}const rU=x*3.2406+y*-1.5372+z*-.4986;const gU=x*-.9689+y*1.8758+z*.0415;const bU=x*.0557+y*-.204+z*1.057;const pow=Math.pow;const bd=.0031308;const r=rU>bd?1.055*pow(rU,1/2.4)-.055:12.92*rU;const g=gU>bd?1.055*pow(gU,1/2.4)-.055:12.92*gU;const b=bU>bd?1.055*pow(bU,1/2.4)-.055:12.92*bU;const color=new Color(255*r,255*g,255*b);return color}else if(this.space==="hsl"){let{h,s,l}=this;h/=360;s/=100;l/=100;if(s===0){l*=255;const color=new Color(l,l,l);return color}const q=l<.5?l*(1+s):l+s-l*s;const p=2*l-q;const r=255*hueToRgb(p,q,h+1/3);const g=255*hueToRgb(p,q,h);const b=255*hueToRgb(p,q,h-1/3);const color=new Color(r,g,b);return color}else if(this.space==="cmyk"){const{c,m,y,k}=this;const r=255*(1-Math.min(1,c*(1-k)+k));const g=255*(1-Math.min(1,m*(1-k)+k));const b=255*(1-Math.min(1,y*(1-k)+k));const color=new Color(r,g,b);return color}else{return this}}toArray(){const{_a,_b,_c,_d,space}=this;return[_a,_b,_c,_d,space]}toHex(){const[r,g,b]=this._clamped().map(componentHex);return`#${r}${g}${b}`}toRgb(){const[rV,gV,bV]=this._clamped();const string=`rgb(${rV},${gV},${bV})`;return string}toString(){return this.toHex()}xyz(){const{_a:r255,_b:g255,_c:b255}=this.rgb();const[r,g,b]=[r255,g255,b255].map(v=>v/255);const rL=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92;const gL=g>.04045?Math.pow((g+.055)/1.055,2.4):g/12.92;const bL=b>.04045?Math.pow((b+.055)/1.055,2.4):b/12.92;const xU=(rL*.4124+gL*.3576+bL*.1805)/.95047;const yU=(rL*.2126+gL*.7152+bL*.0722)/1;const zU=(rL*.0193+gL*.1192+bL*.9505)/1.08883;const x=xU>.008856?Math.pow(xU,1/3):7.787*xU+16/116;const y=yU>.008856?Math.pow(yU,1/3):7.787*yU+16/116;const z=zU>.008856?Math.pow(zU,1/3):7.787*zU+16/116;const color=new Color(x,y,z,"xyz");return color}_clamped(){const{_a,_b,_c}=this.rgb();const{max,min,round}=Math;const format=v=>max(0,min(round(v),255));return[_a,_b,_c].map(format)}}class Point{constructor(...args){this.init(...args)}clone(){return new Point(this)}init(x,y){const base={x:0,y:0};const source=Array.isArray(x)?{x:x[0],y:x[1]}:typeof x==="object"?{x:x.x,y:x.y}:{x:x,y:y};this.x=source.x==null?base.x:source.x;this.y=source.y==null?base.y:source.y;return this}toArray(){return[this.x,this.y]}transform(m){return this.clone().transformO(m)}transformO(m){if(!Matrix.isMatrixLike(m)){m=new Matrix(m)}const{x,y}=this;this.x=m.a*x+m.c*y+m.e;this.y=m.b*x+m.d*y+m.f;return this}}function point(x,y){return new Point(x,y).transform(this.screenCTM().inverse())}function closeEnough(a,b,threshold){return Math.abs(b-a)<(threshold||1e-6)}class Matrix{constructor(...args){this.init(...args)}static formatTransforms(o){const flipBoth=o.flip==="both"||o.flip===true;const flipX=o.flip&&(flipBoth||o.flip==="x")?-1:1;const flipY=o.flip&&(flipBoth||o.flip==="y")?-1:1;const skewX=o.skew&&o.skew.length?o.skew[0]:isFinite(o.skew)?o.skew:isFinite(o.skewX)?o.skewX:0;const skewY=o.skew&&o.skew.length?o.skew[1]:isFinite(o.skew)?o.skew:isFinite(o.skewY)?o.skewY:0;const scaleX=o.scale&&o.scale.length?o.scale[0]*flipX:isFinite(o.scale)?o.scale*flipX:isFinite(o.scaleX)?o.scaleX*flipX:flipX;const scaleY=o.scale&&o.scale.length?o.scale[1]*flipY:isFinite(o.scale)?o.scale*flipY:isFinite(o.scaleY)?o.scaleY*flipY:flipY;const shear=o.shear||0;const theta=o.rotate||o.theta||0;const origin=new Point(o.origin||o.around||o.ox||o.originX,o.oy||o.originY);const ox=origin.x;const oy=origin.y;const position=new Point(o.position||o.px||o.positionX||NaN,o.py||o.positionY||NaN);const px=position.x;const py=position.y;const translate=new Point(o.translate||o.tx||o.translateX,o.ty||o.translateY);const tx=translate.x;const ty=translate.y;const relative=new Point(o.relative||o.rx||o.relativeX,o.ry||o.relativeY);const rx=relative.x;const ry=relative.y;return{scaleX:scaleX,scaleY:scaleY,skewX:skewX,skewY:skewY,shear:shear,theta:theta,rx:rx,ry:ry,tx:tx,ty:ty,ox:ox,oy:oy,px:px,py:py}}static fromArray(a){return{a:a[0],b:a[1],c:a[2],d:a[3],e:a[4],f:a[5]}}static isMatrixLike(o){return o.a!=null||o.b!=null||o.c!=null||o.d!=null||o.e!=null||o.f!=null}static matrixMultiply(l,r,o){const a=l.a*r.a+l.c*r.b;const b=l.b*r.a+l.d*r.b;const c=l.a*r.c+l.c*r.d;const d=l.b*r.c+l.d*r.d;const e=l.e+l.a*r.e+l.c*r.f;const f=l.f+l.b*r.e+l.d*r.f;o.a=a;o.b=b;o.c=c;o.d=d;o.e=e;o.f=f;return o}around(cx,cy,matrix){return this.clone().aroundO(cx,cy,matrix)}aroundO(cx,cy,matrix){const dx=cx||0;const dy=cy||0;return this.translateO(-dx,-dy).lmultiplyO(matrix).translateO(dx,dy)}clone(){return new Matrix(this)}decompose(cx=0,cy=0){const a=this.a;const b=this.b;const c=this.c;const d=this.d;const e=this.e;const f=this.f;const determinant=a*d-b*c;const ccw=determinant>0?1:-1;const sx=ccw*Math.sqrt(a*a+b*b);const thetaRad=Math.atan2(ccw*b,ccw*a);const theta=180/Math.PI*thetaRad;const ct=Math.cos(thetaRad);const st=Math.sin(thetaRad);const lam=(a*c+b*d)/determinant;const sy=c*sx/(lam*a-b)||d*sx/(lam*b+a);const tx=e-cx+cx*ct*sx+cy*(lam*ct*sx-st*sy);const ty=f-cy+cx*st*sx+cy*(lam*st*sx+ct*sy);return{scaleX:sx,scaleY:sy,shear:lam,rotate:theta,translateX:tx,translateY:ty,originX:cx,originY:cy,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}equals(other){if(other===this)return true;const comp=new Matrix(other);return closeEnough(this.a,comp.a)&&closeEnough(this.b,comp.b)&&closeEnough(this.c,comp.c)&&closeEnough(this.d,comp.d)&&closeEnough(this.e,comp.e)&&closeEnough(this.f,comp.f)}flip(axis,around){return this.clone().flipO(axis,around)}flipO(axis,around){return axis==="x"?this.scaleO(-1,1,around,0):axis==="y"?this.scaleO(1,-1,0,around):this.scaleO(-1,-1,axis,around||axis)}init(source){const base=Matrix.fromArray([1,0,0,1,0,0]);source=source instanceof Element?source.matrixify():typeof source==="string"?Matrix.fromArray(source.split(delimiter).map(parseFloat)):Array.isArray(source)?Matrix.fromArray(source):typeof source==="object"&&Matrix.isMatrixLike(source)?source:typeof source==="object"?(new Matrix).transform(source):arguments.length===6?Matrix.fromArray([].slice.call(arguments)):base;this.a=source.a!=null?source.a:base.a;this.b=source.b!=null?source.b:base.b;this.c=source.c!=null?source.c:base.c;this.d=source.d!=null?source.d:base.d;this.e=source.e!=null?source.e:base.e;this.f=source.f!=null?source.f:base.f;return this}inverse(){return this.clone().inverseO()}inverseO(){const a=this.a;const b=this.b;const c=this.c;const d=this.d;const e=this.e;const f=this.f;const det=a*d-b*c;if(!det)throw new Error("Cannot invert "+this);const na=d/det;const nb=-b/det;const nc=-c/det;const nd=a/det;const ne=-(na*e+nc*f);const nf=-(nb*e+nd*f);this.a=na;this.b=nb;this.c=nc;this.d=nd;this.e=ne;this.f=nf;return this}lmultiply(matrix){return this.clone().lmultiplyO(matrix)}lmultiplyO(matrix){const r=this;const l=matrix instanceof Matrix?matrix:new Matrix(matrix);return Matrix.matrixMultiply(l,r,this)}multiply(matrix){return this.clone().multiplyO(matrix)}multiplyO(matrix){const l=this;const r=matrix instanceof Matrix?matrix:new Matrix(matrix);return Matrix.matrixMultiply(l,r,this)}rotate(r,cx,cy){return this.clone().rotateO(r,cx,cy)}rotateO(r,cx=0,cy=0){r=radians(r);const cos=Math.cos(r);const sin=Math.sin(r);const{a,b,c,d,e,f}=this;this.a=a*cos-b*sin;this.b=b*cos+a*sin;this.c=c*cos-d*sin;this.d=d*cos+c*sin;this.e=e*cos-f*sin+cy*sin-cx*cos+cx;this.f=f*cos+e*sin-cx*sin-cy*cos+cy;return this}scale(x,y,cx,cy){return this.clone().scaleO(...arguments)}scaleO(x,y=x,cx=0,cy=0){if(arguments.length===3){cy=cx;cx=y;y=x}const{a,b,c,d,e,f}=this;this.a=a*x;this.b=b*y;this.c=c*x;this.d=d*y;this.e=e*x-cx*x+cx;this.f=f*y-cy*y+cy;return this}shear(a,cx,cy){return this.clone().shearO(a,cx,cy)}shearO(lx,cx=0,cy=0){const{a,b,c,d,e,f}=this;this.a=a+b*lx;this.c=c+d*lx;this.e=e+f*lx-cy*lx;return this}skew(x,y,cx,cy){return this.clone().skewO(...arguments)}skewO(x,y=x,cx=0,cy=0){if(arguments.length===3){cy=cx;cx=y;y=x}x=radians(x);y=radians(y);const lx=Math.tan(x);const ly=Math.tan(y);const{a,b,c,d,e,f}=this;this.a=a+b*lx;this.b=b+a*ly;this.c=c+d*lx;this.d=d+c*ly;this.e=e+f*lx-cy*lx;this.f=f+e*ly-cx*ly;return this}skewX(x,cx,cy){return this.skew(x,0,cx,cy)}skewY(y,cx,cy){return this.skew(0,y,cx,cy)}toArray(){return[this.a,this.b,this.c,this.d,this.e,this.f]}toString(){return"matrix("+this.a+","+this.b+","+this.c+","+this.d+","+this.e+","+this.f+")"}transform(o){if(Matrix.isMatrixLike(o)){const matrix=new Matrix(o);return matrix.multiplyO(this)}const t=Matrix.formatTransforms(o);const current=this;const{x:ox,y:oy}=new Point(t.ox,t.oy).transform(current);const transformer=(new Matrix).translateO(t.rx,t.ry).lmultiplyO(current).translateO(-ox,-oy).scaleO(t.scaleX,t.scaleY).skewO(t.skewX,t.skewY).shearO(t.shear).rotateO(t.theta).translateO(ox,oy);if(isFinite(t.px)||isFinite(t.py)){const origin=new Point(ox,oy).transform(transformer);const dx=isFinite(t.px)?t.px-origin.x:0;const dy=isFinite(t.py)?t.py-origin.y:0;transformer.translateO(dx,dy)}transformer.translateO(t.tx,t.ty);return transformer}translate(x,y){return this.clone().translateO(x,y)}translateO(x,y){this.e+=x||0;this.f+=y||0;return this}valueOf(){return{a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}}function ctm(){return new Matrix(this.node.getCTM())}function screenCTM(){if(typeof this.isRoot==="function"&&!this.isRoot()){const rect=this.rect(1,1);const m=rect.node.getScreenCTM();rect.remove();return new Matrix(m)}return new Matrix(this.node.getScreenCTM())}register(Matrix,"Matrix");function parser(){if(!parser.nodes){const svg=makeInstance().size(2,0);svg.node.style.cssText=["opacity: 0","position: absolute","left: -100%","top: -100%","overflow: hidden"].join(";");svg.attr("focusable","false");svg.attr("aria-hidden","true");const path=svg.path().node;parser.nodes={svg:svg,path:path}}if(!parser.nodes.svg.node.parentNode){const b=globals.document.body||globals.document.documentElement;parser.nodes.svg.addTo(b)}return parser.nodes}function isNulledBox(box){return!box.width&&!box.height&&!box.x&&!box.y}function domContains(node){return node===globals.document||(globals.document.documentElement.contains||function(node){while(node.parentNode){node=node.parentNode}return node===globals.document}).call(globals.document.documentElement,node)}class Box{constructor(...args){this.init(...args)}addOffset(){this.x+=globals.window.pageXOffset;this.y+=globals.window.pageYOffset;return new Box(this)}init(source){const base=[0,0,0,0];source=typeof source==="string"?source.split(delimiter).map(parseFloat):Array.isArray(source)?source:typeof source==="object"?[source.left!=null?source.left:source.x,source.top!=null?source.top:source.y,source.width,source.height]:arguments.length===4?[].slice.call(arguments):base;this.x=source[0]||0;this.y=source[1]||0;this.width=this.w=source[2]||0;this.height=this.h=source[3]||0;this.x2=this.x+this.w;this.y2=this.y+this.h;this.cx=this.x+this.w/2;this.cy=this.y+this.h/2;return this}isNulled(){return isNulledBox(this)}merge(box){const x=Math.min(this.x,box.x);const y=Math.min(this.y,box.y);const width=Math.max(this.x+this.width,box.x+box.width)-x;const height=Math.max(this.y+this.height,box.y+box.height)-y;return new Box(x,y,width,height)}toArray(){return[this.x,this.y,this.width,this.height]}toString(){return this.x+" "+this.y+" "+this.width+" "+this.height}transform(m){if(!(m instanceof Matrix)){m=new Matrix(m)}let xMin=Infinity;let xMax=-Infinity;let yMin=Infinity;let yMax=-Infinity;const pts=[new Point(this.x,this.y),new Point(this.x2,this.y),new Point(this.x,this.y2),new Point(this.x2,this.y2)];pts.forEach(function(p){p=p.transform(m);xMin=Math.min(xMin,p.x);xMax=Math.max(xMax,p.x);yMin=Math.min(yMin,p.y);yMax=Math.max(yMax,p.y)});return new Box(xMin,yMin,xMax-xMin,yMax-yMin)}}function getBox(el,getBBoxFn,retry){let box;try{box=getBBoxFn(el.node);if(isNulledBox(box)&&!domContains(el.node)){throw new Error("Element not in the dom")}}catch(e){box=retry(el)}return box}function bbox(){const getBBox=node=>node.getBBox();const retry=el=>{try{const clone=el.clone().addTo(parser().svg).show();const box=clone.node.getBBox();clone.remove();return box}catch(e){throw new Error(`Getting bbox of element "${el.node.nodeName}" is not possible: ${e.toString()}`)}};const box=getBox(this,getBBox,retry);const bbox=new Box(box);return bbox}function rbox(el){const getRBox=node=>node.getBoundingClientRect();const retry=el=>{throw new Error(`Getting rbox of element "${el.node.nodeName}" is not possible`)};const box=getBox(this,getRBox,retry);const rbox=new Box(box);if(el){return rbox.transform(el.screenCTM().inverseO())}return rbox.addOffset()}function inside(x,y){const box=this.bbox();return x>box.x&&y>box.y&&x<box.x+box.width&&y<box.y+box.height}registerMethods({viewbox:{viewbox(x,y,width,height){if(x==null)return new Box(this.attr("viewBox"));return this.attr("viewBox",new Box(x,y,width,height))},zoom(level,point){let{width,height}=this.attr(["width","height"]);if(!width&&!height||typeof width==="string"||typeof height==="string"){width=this.node.clientWidth;height=this.node.clientHeight}if(!width||!height){throw new Error("Impossible to get absolute width and height. Please provide an absolute width and height attribute on the zooming element")}const v=this.viewbox();const zoomX=width/v.width;const zoomY=height/v.height;const zoom=Math.min(zoomX,zoomY);if(level==null){return zoom}let zoomAmount=zoom/level;if(zoomAmount===Infinity)zoomAmount=Number.MAX_SAFE_INTEGER/100;point=point||new Point(width/2/zoomX+v.x,height/2/zoomY+v.y);const box=new Box(v).transform(new Matrix({scale:zoomAmount,origin:point}));return this.viewbox(box)}}});register(Box,"Box");class List extends Array{constructor(arr=[],...args){super(arr,...args);if(typeof arr==="number")return this;this.length=0;this.push(...arr)}}extend([List],{each(fnOrMethodName,...args){if(typeof fnOrMethodName==="function"){return this.map((el,i,arr)=>{return fnOrMethodName.call(el,el,i,arr)})}else{return this.map(el=>{return el[fnOrMethodName](...args)})}},toArray(){return Array.prototype.concat.apply([],this)}});const reserved=["toArray","constructor","each"];List.extend=function(methods){methods=methods.reduce((obj,name)=>{if(reserved.includes(name))return obj;if(name[0]==="_")return obj;obj[name]=function(...attrs){return this.each(name,...attrs)};return obj},{});extend([List],methods)};function baseFind(query,parent){return new List(map((parent||globals.document).querySelectorAll(query),function(node){return adopt(node)}))}function find(query){return baseFind(query,this.node)}function findOne(query){return adopt(this.node.querySelector(query))}let listenerId=0;const windowEvents={};function getEvents(instance){let n=instance.getEventHolder();if(n===globals.window)n=windowEvents;if(!n.events)n.events={};return n.events}function getEventTarget(instance){return instance.getEventTarget()}function clearEvents(instance){let n=instance.getEventHolder();if(n===globals.window)n=windowEvents;if(n.events)n.events={}}function on(node,events,listener,binding,options){const l=listener.bind(binding||node);const instance=makeInstance(node);const bag=getEvents(instance);const n=getEventTarget(instance);events=Array.isArray(events)?events:events.split(delimiter);if(!listener._svgjsListenerId){listener._svgjsListenerId=++listenerId}events.forEach(function(event){const ev=event.split(".")[0];const ns=event.split(".")[1]||"*";bag[ev]=bag[ev]||{};bag[ev][ns]=bag[ev][ns]||{};bag[ev][ns][listener._svgjsListenerId]=l;n.addEventListener(ev,l,options||false)})}function off(node,events,listener,options){const instance=makeInstance(node);const bag=getEvents(instance);const n=getEventTarget(instance);if(typeof listener==="function"){listener=listener._svgjsListenerId;if(!listener)return}events=Array.isArray(events)?events:(events||"").split(delimiter);events.forEach(function(event){const ev=event&&event.split(".")[0];const ns=event&&event.split(".")[1];let namespace,l;if(listener){if(bag[ev]&&bag[ev][ns||"*"]){n.removeEventListener(ev,bag[ev][ns||"*"][listener],options||false);delete bag[ev][ns||"*"][listener]}}else if(ev&&ns){if(bag[ev]&&bag[ev][ns]){for(l in bag[ev][ns]){off(n,[ev,ns].join("."),l)}delete bag[ev][ns]}}else if(ns){for(event in bag){for(namespace in bag[event]){if(ns===namespace){off(n,[event,ns].join("."))}}}}else if(ev){if(bag[ev]){for(namespace in bag[ev]){off(n,[ev,namespace].join("."))}delete bag[ev]}}else{for(event in bag){off(n,event)}clearEvents(instance)}})}function dispatch(node,event,data,options){const n=getEventTarget(node);if(event instanceof globals.window.Event){n.dispatchEvent(event)}else{event=new globals.window.CustomEvent(event,{detail:data,cancelable:true,...options});n.dispatchEvent(event)}return event}class EventTarget extends Base{addEventListener(){}dispatch(event,data,options){return dispatch(this,event,data,options)}dispatchEvent(event){const bag=this.getEventHolder().events;if(!bag)return true;const events=bag[event.type];for(const i in events){for(const j in events[i]){events[i][j](event)}}return!event.defaultPrevented}fire(event,data,options){this.dispatch(event,data,options);return this}getEventHolder(){return this}getEventTarget(){return this}off(event,listener,options){off(this,event,listener,options);return this}on(event,listener,binding,options){on(this,event,listener,binding,options);return this}removeEventListener(){}}register(EventTarget,"EventTarget");function noop(){}const timeline={duration:400,ease:">",delay:0};const attrs={"fill-opacity":1,"stroke-opacity":1,"stroke-width":0,"stroke-linejoin":"miter","stroke-linecap":"butt",fill:"#000000",stroke:"#000000",opacity:1,x:0,y:0,cx:0,cy:0,width:0,height:0,r:0,rx:0,ry:0,offset:0,"stop-opacity":1,"stop-color":"#000000","text-anchor":"start"};var defaults={__proto__:null,noop:noop,timeline:timeline,attrs:attrs};class SVGArray extends Array{constructor(...args){super(...args);this.init(...args)}clone(){return new this.constructor(this)}init(arr){if(typeof arr==="number")return this;this.length=0;this.push(...this.parse(arr));return this}parse(array=[]){if(array instanceof Array)return array;return array.trim().split(delimiter).map(parseFloat)}toArray(){return Array.prototype.concat.apply([],this)}toSet(){return new Set(this)}toString(){return this.join(" ")}valueOf(){const ret=[];ret.push(...this);return ret}}class SVGNumber{constructor(...args){this.init(...args)}convert(unit){return new SVGNumber(this.value,unit)}divide(number){number=new SVGNumber(number);return new SVGNumber(this/number,this.unit||number.unit)}init(value,unit){unit=Array.isArray(value)?value[1]:unit;value=Array.isArray(value)?value[0]:value;this.value=0;this.unit=unit||"";if(typeof value==="number"){this.value=isNaN(value)?0:!isFinite(value)?value<0?-34e37:+34e37:value}else if(typeof value==="string"){unit=value.match(numberAndUnit);if(unit){this.value=parseFloat(unit[1]);if(unit[5]==="%"){this.value/=100}else if(unit[5]==="s"){this.value*=1e3}this.unit=unit[5]}}else{if(value instanceof SVGNumber){this.value=value.valueOf();this.unit=value.unit}}return this}minus(number){number=new SVGNumber(number);return new SVGNumber(this-number,this.unit||number.unit)}plus(number){number=new SVGNumber(number);return new SVGNumber(this+number,this.unit||number.unit)}times(number){number=new SVGNumber(number);return new SVGNumber(this*number,this.unit||number.unit)}toArray(){return[this.value,this.unit]}toJSON(){return this.toString()}toString(){return(this.unit==="%"?~~(this.value*1e8)/1e6:this.unit==="s"?this.value/1e3:this.value)+this.unit}valueOf(){return this.value}}const hooks=[];function registerAttrHook(fn){hooks.push(fn)}function attr(attr,val,ns){if(attr==null){attr={};val=this.node.attributes;for(const node of val){attr[node.nodeName]=isNumber.test(node.nodeValue)?parseFloat(node.nodeValue):node.nodeValue}return attr}else if(attr instanceof Array){return attr.reduce((last,curr)=>{last[curr]=this.attr(curr);return last},{})}else if(typeof attr==="object"&&attr.constructor===Object){for(val in attr)this.attr(val,attr[val])}else if(val===null){this.node.removeAttribute(attr)}else if(val==null){val=this.node.getAttribute(attr);return val==null?attrs[attr]:isNumber.test(val)?parseFloat(val):val}else{val=hooks.reduce((_val,hook)=>{return hook(attr,_val,this)},val);if(typeof val==="number"){val=new SVGNumber(val)}else if(Color.isColor(val)){val=new Color(val)}else if(val.constructor===Array){val=new SVGArray(val)}if(attr==="leading"){if(this.leading){this.leading(val)}}else{typeof ns==="string"?this.node.setAttributeNS(ns,attr,val.toString()):this.node.setAttribute(attr,val.toString())}if(this.rebuild&&(attr==="font-size"||attr==="x")){this.rebuild()}}return this}class Dom extends EventTarget{constructor(node,attrs){super();this.node=node;this.type=node.nodeName;if(attrs&&node!==attrs){this.attr(attrs)}}add(element,i){element=makeInstance(element);if(element.removeNamespace&&this.node instanceof globals.window.SVGElement){element.removeNamespace()}if(i==null){this.node.appendChild(element.node)}else if(element.node!==this.node.childNodes[i]){this.node.insertBefore(element.node,this.node.childNodes[i])}return this}addTo(parent,i){return makeInstance(parent).put(this,i)}children(){return new List(map(this.node.children,function(node){return adopt(node)}))}clear(){while(this.node.hasChildNodes()){this.node.removeChild(this.node.lastChild)}return this}clone(deep=true){this.writeDataToDom();return new this.constructor(assignNewId(this.node.cloneNode(deep)))}each(block,deep){const children=this.children();let i,il;for(i=0,il=children.length;i<il;i++){block.apply(children[i],[i,children]);if(deep){children[i].each(block,deep)}}return this}element(nodeName,attrs){return this.put(new Dom(create(nodeName),attrs))}first(){return adopt(this.node.firstChild)}get(i){return adopt(this.node.childNodes[i])}getEventHolder(){return this.node}getEventTarget(){return this.node}has(element){return this.index(element)>=0}html(htmlOrFn,outerHTML){return this.xml(htmlOrFn,outerHTML,html)}id(id){if(typeof id==="undefined"&&!this.node.id){this.node.id=eid(this.type)}return this.attr("id",id)}index(element){return[].slice.call(this.node.childNodes).indexOf(element.node)}last(){return adopt(this.node.lastChild)}matches(selector){const el=this.node;const matcher=el.matches||el.matchesSelector||el.msMatchesSelector||el.mozMatchesSelector||el.webkitMatchesSelector||el.oMatchesSelector||null;return matcher&&matcher.call(el,selector)}parent(type){let parent=this;if(!parent.node.parentNode)return null;parent=adopt(parent.node.parentNode);if(!type)return parent;do{if(typeof type==="string"?parent.matches(type):parent instanceof type)return parent}while(parent=adopt(parent.node.parentNode));return parent}put(element,i){element=makeInstance(element);this.add(element,i);return element}putIn(parent,i){return makeInstance(parent).add(this,i)}remove(){if(this.parent()){this.parent().removeElement(this)}return this}removeElement(element){this.node.removeChild(element.node);return this}replace(element){element=makeInstance(element);if(this.node.parentNode){this.node.parentNode.replaceChild(element.node,this.node)}return element}round(precision=2,map=null){const factor=10**precision;const attrs=this.attr(map);for(const i in attrs){if(typeof attrs[i]==="number"){attrs[i]=Math.round(attrs[i]*factor)/factor}}this.attr(attrs);return this}svg(svgOrFn,outerSVG){return this.xml(svgOrFn,outerSVG,svg)}toString(){return this.id()}words(text){this.node.textContent=text;return this}wrap(node){const parent=this.parent();if(!parent){return this.addTo(node)}const position=parent.index(this);return parent.put(node,position).put(this)}writeDataToDom(){this.each(function(){this.writeDataToDom()});return this}xml(xmlOrFn,outerXML,ns){if(typeof xmlOrFn==="boolean"){ns=outerXML;outerXML=xmlOrFn;xmlOrFn=null}if(xmlOrFn==null||typeof xmlOrFn==="function"){outerXML=outerXML==null?true:outerXML;this.writeDataToDom();let current=this;if(xmlOrFn!=null){current=adopt(current.node.cloneNode(true));if(outerXML){const result=xmlOrFn(current);current=result||current;if(result===false)return""}current.each(function(){const result=xmlOrFn(this);const _this=result||this;if(result===false){this.remove()}else if(result&&this!==_this){this.replace(_this)}},true)}return outerXML?current.node.outerHTML:current.node.innerHTML}outerXML=outerXML==null?false:outerXML;const well=create("wrapper",ns);const fragment=globals.document.createDocumentFragment();well.innerHTML=xmlOrFn;for(let len=well.children.length;len--;){fragment.appendChild(well.firstElementChild)}const parent=this.parent();return outerXML?this.replace(fragment)&&parent:this.add(fragment)}}extend(Dom,{attr:attr,find:find,findOne:findOne});register(Dom,"Dom");class Element extends Dom{constructor(node,attrs){super(node,attrs);this.dom={};this.node.instance=this;if(node.hasAttribute("svgjs:data")){this.setData(JSON.parse(node.getAttribute("svgjs:data"))||{})}}center(x,y){return this.cx(x).cy(y)}cx(x){return x==null?this.x()+this.width()/2:this.x(x-this.width()/2)}cy(y){return y==null?this.y()+this.height()/2:this.y(y-this.height()/2)}defs(){const root=this.root();return root&&root.defs()}dmove(x,y){return this.dx(x).dy(y)}dx(x=0){return this.x(new SVGNumber(x).plus(this.x()))}dy(y=0){return this.y(new SVGNumber(y).plus(this.y()))}getEventHolder(){return this}height(height){return this.attr("height",height)}move(x,y){return this.x(x).y(y)}parents(until=this.root()){const isSelector=typeof until==="string";if(!isSelector){until=makeInstance(until)}const parents=new List;let parent=this;while((parent=parent.parent())&&parent.node!==globals.document&&parent.nodeName!=="#document-fragment"){parents.push(parent);if(!isSelector&&parent.node===until.node){break}if(isSelector&&parent.matches(until)){break}if(parent.node===this.root().node){return null}}return parents}reference(attr){attr=this.attr(attr);if(!attr)return null;const m=(attr+"").match(reference);return m?makeInstance(m[1]):null}root(){const p=this.parent(getClass(root));return p&&p.root()}setData(o){this.dom=o;return this}size(width,height){const p=proportionalSize(this,width,height);return this.width(new SVGNumber(p.width)).height(new SVGNumber(p.height))}width(width){return this.attr("width",width)}writeDataToDom(){this.node.removeAttribute("svgjs:data");if(Object.keys(this.dom).length){this.node.setAttribute("svgjs:data",JSON.stringify(this.dom))}return super.writeDataToDom()}x(x){return this.attr("x",x)}y(y){return this.attr("y",y)}}extend(Element,{bbox:bbox,rbox:rbox,inside:inside,point:point,ctm:ctm,screenCTM:screenCTM});register(Element,"Element");const sugar={stroke:["color","width","opacity","linecap","linejoin","miterlimit","dasharray","dashoffset"],fill:["color","opacity","rule"],prefix:function(t,a){return a==="color"?t:t+"-"+a}};["fill","stroke"].forEach(function(m){const extension={};let i;extension[m]=function(o){if(typeof o==="undefined"){return this.attr(m)}if(typeof o==="string"||o instanceof Color||Color.isRgb(o)||o instanceof Element){this.attr(m,o)}else{for(i=sugar[m].length-1;i>=0;i--){if(o[sugar[m][i]]!=null){this.attr(sugar.prefix(m,sugar[m][i]),o[sugar[m][i]])}}}return this};registerMethods(["Element","Runner"],extension)});registerMethods(["Element","Runner"],{matrix:function(mat,b,c,d,e,f){if(mat==null){return new Matrix(this)}return this.attr("transform",new Matrix(mat,b,c,d,e,f))},rotate:function(angle,cx,cy){return this.transform({rotate:angle,ox:cx,oy:cy},true)},skew:function(x,y,cx,cy){return arguments.length===1||arguments.length===3?this.transform({skew:x,ox:y,oy:cx},true):this.transform({skew:[x,y],ox:cx,oy:cy},true)},shear:function(lam,cx,cy){return this.transform({shear:lam,ox:cx,oy:cy},true)},scale:function(x,y,cx,cy){return arguments.length===1||arguments.length===3?this.transform({scale:x,ox:y,oy:cx},true):this.transform({scale:[x,y],ox:cx,oy:cy},true)},translate:function(x,y){return this.transform({translate:[x,y]},true)},relative:function(x,y){return this.transform({relative:[x,y]},true)},flip:function(direction="both",origin="center"){if("xybothtrue".indexOf(direction)===-1){origin=direction;direction="both"}return this.transform({flip:direction,origin:origin},true)},opacity:function(value){return this.attr("opacity",value)}});registerMethods("radius",{radius:function(x,y=x){const type=(this._element||this).type;return type==="radialGradient"?this.attr("r",new SVGNumber(x)):this.rx(x).ry(y)}});registerMethods("Path",{length:function(){return this.node.getTotalLength()},pointAt:function(length){return new Point(this.node.getPointAtLength(length))}});registerMethods(["Element","Runner"],{font:function(a,v){if(typeof a==="object"){for(v in a)this.font(v,a[v]);return this}return a==="leading"?this.leading(v):a==="anchor"?this.attr("text-anchor",v):a==="size"||a==="family"||a==="weight"||a==="stretch"||a==="variant"||a==="style"?this.attr("font-"+a,v):this.attr(a,v)}});const methods=["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","touchstart","touchmove","touchleave","touchend","touchcancel"].reduce(function(last,event){const fn=function(f){if(f===null){this.off(event)}else{this.on(event,f)}return this};last[event]=fn;return last},{});registerMethods("Element",methods);function untransform(){return this.attr("transform",null)}function matrixify(){const matrix=(this.attr("transform")||"").split(transforms).slice(0,-1).map(function(str){const kv=str.trim().split("(");return[kv[0],kv[1].split(delimiter).map(function(str){return parseFloat(str)})]}).reverse().reduce(function(matrix,transform){if(transform[0]==="matrix"){return matrix.lmultiply(Matrix.fromArray(transform[1]))}return matrix[transform[0]].apply(matrix,transform[1])},new Matrix);return matrix}function toParent(parent,i){if(this===parent)return this;const ctm=this.screenCTM();const pCtm=parent.screenCTM().inverse();this.addTo(parent,i).untransform().transform(pCtm.multiply(ctm));return this}function toRoot(i){return this.toParent(this.root(),i)}function transform(o,relative){if(o==null||typeof o==="string"){const decomposed=new Matrix(this).decompose();return o==null?decomposed:decomposed[o]}if(!Matrix.isMatrixLike(o)){o={...o,origin:getOrigin(o,this)}}const cleanRelative=relative===true?this:relative||false;const result=new Matrix(cleanRelative).transform(o);return this.attr("transform",result)}registerMethods("Element",{untransform:untransform,matrixify:matrixify,toParent:toParent,toRoot:toRoot,transform:transform});class Container extends Element{flatten(parent=this,index){this.each(function(){if(this instanceof Container){return this.flatten().ungroup()}});return this}ungroup(parent=this.parent(),index=parent.index(this)){index=index===-1?parent.children().length:index;this.each(function(i,children){return children[children.length-i-1].toParent(parent,index)});return this.remove()}}register(Container,"Container");class Defs extends Container{constructor(node,attrs=node){super(nodeOrNew("defs",node),attrs)}flatten(){return this}ungroup(){return this}}register(Defs,"Defs");class Shape extends Element{}register(Shape,"Shape");function rx(rx){return this.attr("rx",rx)}function ry(ry){return this.attr("ry",ry)}function x$3(x){return x==null?this.cx()-this.rx():this.cx(x+this.rx())}function y$3(y){return y==null?this.cy()-this.ry():this.cy(y+this.ry())}function cx$1(x){return this.attr("cx",x)}function cy$1(y){return this.attr("cy",y)}function width$2(width){return width==null?this.rx()*2:this.rx(new SVGNumber(width).divide(2))}function height$2(height){return height==null?this.ry()*2:this.ry(new SVGNumber(height).divide(2))}var circled={__proto__:null,rx:rx,ry:ry,x:x$3,y:y$3,cx:cx$1,cy:cy$1,width:width$2,height:height$2};class Ellipse extends Shape{constructor(node,attrs=node){super(nodeOrNew("ellipse",node),attrs)}size(width,height){const p=proportionalSize(this,width,height);return this.rx(new SVGNumber(p.width).divide(2)).ry(new SVGNumber(p.height).divide(2))}}extend(Ellipse,circled);registerMethods("Container",{ellipse:wrapWithAttrCheck(function(width=0,height=width){return this.put(new Ellipse).size(width,height).move(0,0)})});register(Ellipse,"Ellipse");class Fragment extends Dom{constructor(node=globals.document.createDocumentFragment()){super(node)}xml(xmlOrFn,outerXML,ns){if(typeof xmlOrFn==="boolean"){ns=outerXML;outerXML=xmlOrFn;xmlOrFn=null}if(xmlOrFn==null||typeof xmlOrFn==="function"){const wrapper=new Dom(create("wrapper",ns));wrapper.add(this.node.cloneNode(true));return wrapper.xml(false,ns)}return super.xml(xmlOrFn,false,ns)}}register(Fragment,"Fragment");function from(x,y){return(this._element||this).type==="radialGradient"?this.attr({fx:new SVGNumber(x),fy:new SVGNumber(y)}):this.attr({x1:new SVGNumber(x),y1:new SVGNumber(y)})}function to(x,y){return(this._element||this).type==="radialGradient"?this.attr({cx:new SVGNumber(x),cy:new SVGNumber(y)}):this.attr({x2:new SVGNumber(x),y2:new SVGNumber(y)})}var gradiented={__proto__:null,from:from,to:to};class Gradient extends Container{constructor(type,attrs){super(nodeOrNew(type+"Gradient",typeof type==="string"?null:type),attrs)}attr(a,b,c){if(a==="transform")a="gradientTransform";return super.attr(a,b,c)}bbox(){return new Box}targets(){return baseFind('svg [fill*="'+this.id()+'"]')}toString(){return this.url()}update(block){this.clear();if(typeof block==="function"){block.call(this,this)}return this}url(){return'url("#'+this.id()+'")'}}extend(Gradient,gradiented);registerMethods({Container:{gradient(...args){return this.defs().gradient(...args)}},Defs:{gradient:wrapWithAttrCheck(function(type,block){return this.put(new Gradient(type)).update(block)})}});register(Gradient,"Gradient");class Pattern extends Container{constructor(node,attrs=node){super(nodeOrNew("pattern",node),attrs)}attr(a,b,c){if(a==="transform")a="patternTransform";return super.attr(a,b,c)}bbox(){return new Box}targets(){return baseFind('svg [fill*="'+this.id()+'"]')}toString(){return this.url()}update(block){this.clear();if(typeof block==="function"){block.call(this,this)}return this}url(){return'url("#'+this.id()+'")'}}registerMethods({Container:{pattern(...args){return this.defs().pattern(...args)}},Defs:{pattern:wrapWithAttrCheck(function(width,height,block){return this.put(new Pattern).update(block).attr({x:0,y:0,width:width,height:height,patternUnits:"userSpaceOnUse"})})}});register(Pattern,"Pattern");class Image extends Shape{constructor(node,attrs=node){super(nodeOrNew("image",node),attrs)}load(url,callback){if(!url)return this;const img=new globals.window.Image;on(img,"load",function(e){const p=this.parent(Pattern);if(this.width()===0&&this.height()===0){this.size(img.width,img.height)}if(p instanceof Pattern){if(p.width()===0&&p.height()===0){p.size(this.width(),this.height())}}if(typeof callback==="function"){callback.call(this,e)}},this);on(img,"load error",function(){off(img)});return this.attr("href",img.src=url,xlink)}}registerAttrHook(function(attr,val,_this){if(attr==="fill"||attr==="stroke"){if(isImage.test(val)){val=_this.root().defs().image(val)}}if(val instanceof Image){val=_this.root().defs().pattern(0,0,pattern=>{pattern.add(val)})}return val});registerMethods({Container:{image:wrapWithAttrCheck(function(source,callback){return this.put(new Image).size(0,0).load(source,callback)})}});register(Image,"Image");class PointArray extends SVGArray{bbox(){let maxX=-Infinity;let maxY=-Infinity;let minX=Infinity;let minY=Infinity;this.forEach(function(el){maxX=Math.max(el[0],maxX);maxY=Math.max(el[1],maxY);minX=Math.min(el[0],minX);minY=Math.min(el[1],minY)});return new Box(minX,minY,maxX-minX,maxY-minY)}move(x,y){const box=this.bbox();x-=box.x;y-=box.y;if(!isNaN(x)&&!isNaN(y)){for(let i=this.length-1;i>=0;i--){this[i]=[this[i][0]+x,this[i][1]+y]}}return this}parse(array=[0,0]){const points=[];if(array instanceof Array){array=Array.prototype.concat.apply([],array)}else{array=array.trim().split(delimiter).map(parseFloat)}if(array.length%2!==0)array.pop();for(let i=0,len=array.length;i<len;i=i+2){points.push([array[i],array[i+1]])}return points}size(width,height){let i;const box=this.bbox();for(i=this.length-1;i>=0;i--){if(box.width)this[i][0]=(this[i][0]-box.x)*width/box.width+box.x;if(box.height)this[i][1]=(this[i][1]-box.y)*height/box.height+box.y}return this}toLine(){return{x1:this[0][0],y1:this[0][1],x2:this[1][0],y2:this[1][1]}}toString(){const array=[];for(let i=0,il=this.length;i<il;i++){array.push(this[i].join(","))}return array.join(" ")}transform(m){return this.clone().transformO(m)}transformO(m){if(!Matrix.isMatrixLike(m)){m=new Matrix(m)}for(let i=this.length;i--;){const[x,y]=this[i];this[i][0]=m.a*x+m.c*y+m.e;this[i][1]=m.b*x+m.d*y+m.f}return this}}const MorphArray=PointArray;function x$2(x){return x==null?this.bbox().x:this.move(x,this.bbox().y)}function y$2(y){return y==null?this.bbox().y:this.move(this.bbox().x,y)}function width$1(width){const b=this.bbox();return width==null?b.width:this.size(width,b.height)}function height$1(height){const b=this.bbox();return height==null?b.height:this.size(b.width,height)}var pointed={__proto__:null,MorphArray:MorphArray,x:x$2,y:y$2,width:width$1,height:height$1};class Line extends Shape{constructor(node,attrs=node){super(nodeOrNew("line",node),attrs)}array(){return new PointArray([[this.attr("x1"),this.attr("y1")],[this.attr("x2"),this.attr("y2")]])}move(x,y){return this.attr(this.array().move(x,y).toLine())}plot(x1,y1,x2,y2){if(x1==null){return this.array()}else if(typeof y1!=="undefined"){x1={x1:x1,y1:y1,x2:x2,y2:y2}}else{x1=new PointArray(x1).toLine()}return this.attr(x1)}size(width,height){const p=proportionalSize(this,width,height);return this.attr(this.array().size(p.width,p.height).toLine())}}extend(Line,pointed);registerMethods({Container:{line:wrapWithAttrCheck(function(...args){return Line.prototype.plot.apply(this.put(new Line),args[0]!=null?args:[0,0,0,0])})}});register(Line,"Line");class Marker extends Container{constructor(node,attrs=node){super(nodeOrNew("marker",node),attrs)}height(height){return this.attr("markerHeight",height)}orient(orient){return this.attr("orient",orient)}ref(x,y){return this.attr("refX",x).attr("refY",y)}toString(){return"url(#"+this.id()+")"}update(block){this.clear();if(typeof block==="function"){block.call(this,this)}return this}width(width){return this.attr("markerWidth",width)}}registerMethods({Container:{marker(...args){return this.defs().marker(...args)}},Defs:{marker:wrapWithAttrCheck(function(width,height,block){return this.put(new Marker).size(width,height).ref(width/2,height/2).viewbox(0,0,width,height).attr("orient","auto").update(block)})},marker:{marker(marker,width,height,block){let attr=["marker"];if(marker!=="all")attr.push(marker);attr=attr.join("-");marker=arguments[1]instanceof Marker?arguments[1]:this.defs().marker(width,height,block);return this.attr(attr,marker)}}});register(Marker,"Marker");function makeSetterGetter(k,f){return function(v){if(v==null)return this[k];this[k]=v;if(f)f.call(this);return this}}const easing={"-":function(pos){return pos},"<>":function(pos){return-Math.cos(pos*Math.PI)/2+.5},">":function(pos){return Math.sin(pos*Math.PI/2)},"<":function(pos){return-Math.cos(pos*Math.PI/2)+1},bezier:function(x1,y1,x2,y2){return function(t){if(t<0){if(x1>0){return y1/x1*t}else if(x2>0){return y2/x2*t}else{return 0}}else if(t>1){if(x2<1){return(1-y2)/(1-x2)*t+(y2-x2)/(1-x2)}else if(x1<1){return(1-y1)/(1-x1)*t+(y1-x1)/(1-x1)}else{return 1}}else{return 3*t*(1-t)**2*y1+3*t**2*(1-t)*y2+t**3}}},steps:function(steps,stepPosition="end"){stepPosition=stepPosition.split("-").reverse()[0];let jumps=steps;if(stepPosition==="none"){--jumps}else if(stepPosition==="both"){++jumps}return(t,beforeFlag=false)=>{let step=Math.floor(t*steps);const jumping=t*step%1===0;if(stepPosition==="start"||stepPosition==="both"){++step}if(beforeFlag&&jumping){--step}if(t>=0&&step<0){step=0}if(t<=1&&step>jumps){step=jumps}return step/jumps}}};class Stepper{done(){return false}}class Ease extends Stepper{constructor(fn=timeline.ease){super();this.ease=easing[fn]||fn}step(from,to,pos){if(typeof from!=="number"){return pos<1?from:to}return from+(to-from)*this.ease(pos)}}class Controller extends Stepper{constructor(fn){super();this.stepper=fn}done(c){return c.done}step(current,target,dt,c){return this.stepper(current,target,dt,c)}}function recalculate(){const duration=(this._duration||500)/1e3;const overshoot=this._overshoot||0;const eps=1e-10;const pi=Math.PI;const os=Math.log(overshoot/100+eps);const zeta=-os/Math.sqrt(pi*pi+os*os);const wn=3.9/(zeta*duration);this.d=2*zeta*wn;this.k=wn*wn}class Spring extends Controller{constructor(duration=500,overshoot=0){super();this.duration(duration).overshoot(overshoot)}step(current,target,dt,c){if(typeof current==="string")return current;c.done=dt===Infinity;if(dt===Infinity)return target;if(dt===0)return current;if(dt>100)dt=16;dt/=1e3;const velocity=c.velocity||0;const acceleration=-this.d*velocity-this.k*(current-target);const newPosition=current+velocity*dt+acceleration*dt*dt/2;c.velocity=velocity+acceleration*dt;c.done=Math.abs(target-newPosition)+Math.abs(velocity)<.002;return c.done?target:newPosition}}extend(Spring,{duration:makeSetterGetter("_duration",recalculate),overshoot:makeSetterGetter("_overshoot",recalculate)});class PID extends Controller{constructor(p=.1,i=.01,d=0,windup=1e3){super();this.p(p).i(i).d(d).windup(windup)}step(current,target,dt,c){if(typeof current==="string")return current;c.done=dt===Infinity;if(dt===Infinity)return target;if(dt===0)return current;const p=target-current;let i=(c.integral||0)+p*dt;const d=(p-(c.error||0))/dt;const windup=this._windup;if(windup!==false){i=Math.max(-windup,Math.min(i,windup))}c.error=p;c.integral=i;c.done=Math.abs(p)<.001;return c.done?target:current+(this.P*p+this.I*i+this.D*d)}}extend(PID,{windup:makeSetterGetter("_windup"),p:makeSetterGetter("P"),i:makeSetterGetter("I"),d:makeSetterGetter("D")});const segmentParameters={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};const pathHandlers={M:function(c,p,p0){p.x=p0.x=c[0];p.y=p0.y=c[1];return["M",p.x,p.y]},L:function(c,p){p.x=c[0];p.y=c[1];return["L",c[0],c[1]]},H:function(c,p){p.x=c[0];return["H",c[0]]},V:function(c,p){p.y=c[0];return["V",c[0]]},C:function(c,p){p.x=c[4];p.y=c[5];return["C",c[0],c[1],c[2],c[3],c[4],c[5]]},S:function(c,p){p.x=c[2];p.y=c[3];return["S",c[0],c[1],c[2],c[3]]},Q:function(c,p){p.x=c[2];p.y=c[3];return["Q",c[0],c[1],c[2],c[3]]},T:function(c,p){p.x=c[0];p.y=c[1];return["T",c[0],c[1]]},Z:function(c,p,p0){p.x=p0.x;p.y=p0.y;return["Z"]},A:function(c,p){p.x=c[5];p.y=c[6];return["A",c[0],c[1],c[2],c[3],c[4],c[5],c[6]]}};const mlhvqtcsaz="mlhvqtcsaz".split("");for(let i=0,il=mlhvqtcsaz.length;i<il;++i){pathHandlers[mlhvqtcsaz[i]]=function(i){return function(c,p,p0){if(i==="H")c[0]=c[0]+p.x;else if(i==="V")c[0]=c[0]+p.y;else if(i==="A"){c[5]=c[5]+p.x;c[6]=c[6]+p.y}else{for(let j=0,jl=c.length;j<jl;++j){c[j]=c[j]+(j%2?p.y:p.x)}}return pathHandlers[i](c,p,p0)}}(mlhvqtcsaz[i].toUpperCase())}function makeAbsolut(parser){const command=parser.segment[0];return pathHandlers[command](parser.segment.slice(1),parser.p,parser.p0)}function segmentComplete(parser){return parser.segment.length&&parser.segment.length-1===segmentParameters[parser.segment[0].toUpperCase()]}function startNewSegment(parser,token){parser.inNumber&&finalizeNumber(parser,false);const pathLetter=isPathLetter.test(token);if(pathLetter){parser.segment=[token]}else{const lastCommand=parser.lastCommand;const small=lastCommand.toLowerCase();const isSmall=lastCommand===small;parser.segment=[small==="m"?isSmall?"l":"L":lastCommand]}parser.inSegment=true;parser.lastCommand=parser.segment[0];return pathLetter}function finalizeNumber(parser,inNumber){if(!parser.inNumber)throw new Error("Parser Error");parser.number&&parser.segment.push(parseFloat(parser.number));parser.inNumber=inNumber;parser.number="";parser.pointSeen=false;parser.hasExponent=false;if(segmentComplete(parser)){finalizeSegment(parser)}}function finalizeSegment(parser){parser.inSegment=false;if(parser.absolute){parser.segment=makeAbsolut(parser)}parser.segments.push(parser.segment)}function isArcFlag(parser){if(!parser.segment.length)return false;const isArc=parser.segment[0].toUpperCase()==="A";const length=parser.segment.length;return isArc&&(length===4||length===5)}function isExponential(parser){return parser.lastToken.toUpperCase()==="E"}function pathParser(d,toAbsolute=true){let index=0;let token="";const parser={segment:[],inNumber:false,number:"",lastToken:"",inSegment:false,segments:[],pointSeen:false,hasExponent:false,absolute:toAbsolute,p0:new Point,p:new Point};while(parser.lastToken=token,token=d.charAt(index++)){if(!parser.inSegment){if(startNewSegment(parser,token)){continue}}if(token==="."){if(parser.pointSeen||parser.hasExponent){finalizeNumber(parser,false);--index;continue}parser.inNumber=true;parser.pointSeen=true;parser.number+=token;continue}if(!isNaN(parseInt(token))){if(parser.number==="0"||isArcFlag(parser)){parser.inNumber=true;parser.number=token;finalizeNumber(parser,true);continue}parser.inNumber=true;parser.number+=token;continue}if(token===" "||token===","){if(parser.inNumber){finalizeNumber(parser,false)}continue}if(token==="-"){if(parser.inNumber&&!isExponential(parser)){finalizeNumber(parser,false);--index;continue}parser.number+=token;parser.inNumber=true;continue}if(token.toUpperCase()==="E"){parser.number+=token;parser.hasExponent=true;continue}if(isPathLetter.test(token)){if(parser.inNumber){finalizeNumber(parser,false)}else if(!segmentComplete(parser)){throw new Error("parser Error")}else{finalizeSegment(parser)}--index}}if(parser.inNumber){finalizeNumber(parser,false)}if(parser.inSegment&&segmentComplete(parser)){finalizeSegment(parser)}return parser.segments}function arrayToString(a){let s="";for(let i=0,il=a.length;i<il;i++){s+=a[i][0];if(a[i][1]!=null){s+=a[i][1];if(a[i][2]!=null){s+=" ";s+=a[i][2];if(a[i][3]!=null){s+=" ";s+=a[i][3];s+=" ";s+=a[i][4];if(a[i][5]!=null){s+=" ";s+=a[i][5];s+=" ";s+=a[i][6];if(a[i][7]!=null){s+=" ";s+=a[i][7]}}}}}}return s+" "}class PathArray extends SVGArray{bbox(){parser().path.setAttribute("d",this.toString());return new Box(parser.nodes.path.getBBox())}move(x,y){const box=this.bbox();x-=box.x;y-=box.y;if(!isNaN(x)&&!isNaN(y)){for(let l,i=this.length-1;i>=0;i--){l=this[i][0];if(l==="M"||l==="L"||l==="T"){this[i][1]+=x;this[i][2]+=y}else if(l==="H"){this[i][1]+=x}else if(l==="V"){this[i][1]+=y}else if(l==="C"||l==="S"||l==="Q"){this[i][1]+=x;this[i][2]+=y;this[i][3]+=x;this[i][4]+=y;if(l==="C"){this[i][5]+=x;this[i][6]+=y}}else if(l==="A"){this[i][6]+=x;this[i][7]+=y}}}return this}parse(d="M0 0"){if(Array.isArray(d)){d=Array.prototype.concat.apply([],d).toString()}return pathParser(d)}size(width,height){const box=this.bbox();let i,l;box.width=box.width===0?1:box.width;box.height=box.height===0?1:box.height;for(i=this.length-1;i>=0;i--){l=this[i][0];if(l==="M"||l==="L"||l==="T"){this[i][1]=(this[i][1]-box.x)*width/box.width+box.x;this[i][2]=(this[i][2]-box.y)*height/box.height+box.y}else if(l==="H"){this[i][1]=(this[i][1]-box.x)*width/box.width+box.x}else if(l==="V"){this[i][1]=(this[i][1]-box.y)*height/box.height+box.y}else if(l==="C"||l==="S"||l==="Q"){this[i][1]=(this[i][1]-box.x)*width/box.width+box.x;this[i][2]=(this[i][2]-box.y)*height/box.height+box.y;this[i][3]=(this[i][3]-box.x)*width/box.width+box.x;this[i][4]=(this[i][4]-box.y)*height/box.height+box.y;if(l==="C"){this[i][5]=(this[i][5]-box.x)*width/box.width+box.x;this[i][6]=(this[i][6]-box.y)*height/box.height+box.y}}else if(l==="A"){this[i][1]=this[i][1]*width/box.width;this[i][2]=this[i][2]*height/box.height;this[i][6]=(this[i][6]-box.x)*width/box.width+box.x;this[i][7]=(this[i][7]-box.y)*height/box.height+box.y}}return this}toString(){return arrayToString(this)}}const getClassForType=value=>{const type=typeof value;if(type==="number"){return SVGNumber}else if(type==="string"){if(Color.isColor(value)){return Color}else if(delimiter.test(value)){return isPathLetter.test(value)?PathArray:SVGArray}else if(numberAndUnit.test(value)){return SVGNumber}else{return NonMorphable}}else if(morphableTypes.indexOf(value.constructor)>-1){return value.constructor}else if(Array.isArray(value)){return SVGArray}else if(type==="object"){return ObjectBag}else{return NonMorphable}};class Morphable{constructor(stepper){this._stepper=stepper||new Ease("-");this._from=null;this._to=null;this._type=null;this._context=null;this._morphObj=null}at(pos){return this._morphObj.morph(this._from,this._to,pos,this._stepper,this._context)}done(){const complete=this._context.map(this._stepper.done).reduce(function(last,curr){return last&&curr},true);return complete}from(val){if(val==null){return this._from}this._from=this._set(val);return this}stepper(stepper){if(stepper==null)return this._stepper;this._stepper=stepper;return this}to(val){if(val==null){return this._to}this._to=this._set(val);return this}type(type){if(type==null){return this._type}this._type=type;return this}_set(value){if(!this._type){this.type(getClassForType(value))}let result=new this._type(value);if(this._type===Color){result=this._to?result[this._to[4]]():this._from?result[this._from[4]]():result}if(this._type===ObjectBag){result=this._to?result.align(this._to):this._from?result.align(this._from):result}result=result.toConsumable();this._morphObj=this._morphObj||new this._type;this._context=this._context||Array.apply(null,Array(result.length)).map(Object).map(function(o){o.done=true;return o});return result}}class NonMorphable{constructor(...args){this.init(...args)}init(val){val=Array.isArray(val)?val[0]:val;this.value=val;return this}toArray(){return[this.value]}valueOf(){return this.value}}class TransformBag{constructor(...args){this.init(...args)}init(obj){if(Array.isArray(obj)){obj={scaleX:obj[0],scaleY:obj[1],shear:obj[2],rotate:obj[3],translateX:obj[4],translateY:obj[5],originX:obj[6],originY:obj[7]}}Object.assign(this,TransformBag.defaults,obj);return this}toArray(){const v=this;return[v.scaleX,v.scaleY,v.shear,v.rotate,v.translateX,v.translateY,v.originX,v.originY]}}TransformBag.defaults={scaleX:1,scaleY:1,shear:0,rotate:0,translateX:0,translateY:0,originX:0,originY:0};const sortByKey=(a,b)=>{return a[0]<b[0]?-1:a[0]>b[0]?1:0};class ObjectBag{constructor(...args){this.init(...args)}align(other){const values=this.values;for(let i=0,il=values.length;i<il;++i){if(values[i+1]===other[i+1]){if(values[i+1]===Color&&other[i+7]!==values[i+7]){const space=other[i+7];const color=new Color(this.values.splice(i+3,5))[space]().toArray();this.values.splice(i+3,0,...color)}i+=values[i+2]+2;continue}if(!other[i+1]){return this}const defaultObject=(new other[i+1]).toArray();const toDelete=values[i+2]+3;values.splice(i,toDelete,other[i],other[i+1],other[i+2],...defaultObject);i+=values[i+2]+2}return this}init(objOrArr){this.values=[];if(Array.isArray(objOrArr)){this.values=objOrArr.slice();return}objOrArr=objOrArr||{};const entries=[];for(const i in objOrArr){const Type=getClassForType(objOrArr[i]);const val=new Type(objOrArr[i]).toArray();entries.push([i,Type,val.length,...val])}entries.sort(sortByKey);this.values=entries.reduce((last,curr)=>last.concat(curr),[]);return this}toArray(){return this.values}valueOf(){const obj={};const arr=this.values;while(arr.length){const key=arr.shift();const Type=arr.shift();const num=arr.shift();const values=arr.splice(0,num);obj[key]=new Type(values)}return obj}}const morphableTypes=[NonMorphable,TransformBag,ObjectBag];function registerMorphableType(type=[]){morphableTypes.push(...[].concat(type))}function makeMorphable(){extend(morphableTypes,{to(val){return(new Morphable).type(this.constructor).from(this.toArray()).to(val)},fromArray(arr){this.init(arr);return this},toConsumable(){return this.toArray()},morph(from,to,pos,stepper,context){const mapper=function(i,index){return stepper.step(i,to[index],pos,context[index],context)};return this.fromArray(from.map(mapper))}})}class Path extends Shape{constructor(node,attrs=node){super(nodeOrNew("path",node),attrs)}array(){return this._array||(this._array=new PathArray(this.attr("d")))}clear(){delete this._array;return this}height(height){return height==null?this.bbox().height:this.size(this.bbox().width,height)}move(x,y){return this.attr("d",this.array().move(x,y))}plot(d){return d==null?this.array():this.clear().attr("d",typeof d==="string"?d:this._array=new PathArray(d))}size(width,height){const p=proportionalSize(this,width,height);return this.attr("d",this.array().size(p.width,p.height))}width(width){return width==null?this.bbox().width:this.size(width,this.bbox().height)}x(x){return x==null?this.bbox().x:this.move(x,this.bbox().y)}y(y){return y==null?this.bbox().y:this.move(this.bbox().x,y)}}Path.prototype.MorphArray=PathArray;registerMethods({Container:{path:wrapWithAttrCheck(function(d){return this.put(new Path).plot(d||new PathArray)})}});register(Path,"Path");function array(){return this._array||(this._array=new PointArray(this.attr("points")))}function clear(){delete this._array;return this}function move$2(x,y){return this.attr("points",this.array().move(x,y))}function plot(p){return p==null?this.array():this.clear().attr("points",typeof p==="string"?p:this._array=new PointArray(p))}function size$1(width,height){const p=proportionalSize(this,width,height);return this.attr("points",this.array().size(p.width,p.height))}var poly={__proto__:null,array:array,clear:clear,move:move$2,plot:plot,size:size$1};class Polygon extends Shape{constructor(node,attrs=node){super(nodeOrNew("polygon",node),attrs)}}registerMethods({Container:{polygon:wrapWithAttrCheck(function(p){return this.put(new Polygon).plot(p||new PointArray)})}});extend(Polygon,pointed);extend(Polygon,poly);register(Polygon,"Polygon");class Polyline extends Shape{constructor(node,attrs=node){super(nodeOrNew("polyline",node),attrs)}}registerMethods({Container:{polyline:wrapWithAttrCheck(function(p){return this.put(new Polyline).plot(p||new PointArray)})}});extend(Polyline,pointed);extend(Polyline,poly);register(Polyline,"Polyline");class Rect extends Shape{constructor(node,attrs=node){super(nodeOrNew("rect",node),attrs)}}extend(Rect,{rx:rx,ry:ry});registerMethods({Container:{rect:wrapWithAttrCheck(function(width,height){return this.put(new Rect).size(width,height)})}});register(Rect,"Rect");class Queue{constructor(){this._first=null;this._last=null}first(){return this._first&&this._first.value}last(){return this._last&&this._last.value}push(value){const item=typeof value.next!=="undefined"?value:{value:value,next:null,prev:null};if(this._last){item.prev=this._last;this._last.next=item;this._last=item}else{this._last=item;this._first=item}return item}remove(item){if(item.prev)item.prev.next=item.next;if(item.next)item.next.prev=item.prev;if(item===this._last)this._last=item.prev;if(item===this._first)this._first=item.next;item.prev=null;item.next=null}shift(){const remove=this._first;if(!remove)return null;this._first=remove.next;if(this._first)this._first.prev=null;this._last=this._first?this._last:null;return remove.value}}const Animator={nextDraw:null,frames:new Queue,timeouts:new Queue,immediates:new Queue,timer:()=>globals.window.performance||globals.window.Date,transforms:[],frame(fn){const node=Animator.frames.push({run:fn});if(Animator.nextDraw===null){Animator.nextDraw=globals.window.requestAnimationFrame(Animator._draw)}return node},timeout(fn,delay){delay=delay||0;const time=Animator.timer().now()+delay;const node=Animator.timeouts.push({run:fn,time:time});if(Animator.nextDraw===null){Animator.nextDraw=globals.window.requestAnimationFrame(Animator._draw)}return node},immediate(fn){const node=Animator.immediates.push(fn);if(Animator.nextDraw===null){Animator.nextDraw=globals.window.requestAnimationFrame(Animator._draw)}return node},cancelFrame(node){node!=null&&Animator.frames.remove(node)},clearTimeout(node){node!=null&&Animator.timeouts.remove(node)},cancelImmediate(node){node!=null&&Animator.immediates.remove(node)},_draw(now){let nextTimeout=null;const lastTimeout=Animator.timeouts.last();while(nextTimeout=Animator.timeouts.shift()){if(now>=nextTimeout.time){nextTimeout.run()}else{Animator.timeouts.push(nextTimeout)}if(nextTimeout===lastTimeout)break}let nextFrame=null;const lastFrame=Animator.frames.last();while(nextFrame!==lastFrame&&(nextFrame=Animator.frames.shift())){nextFrame.run(now)}let nextImmediate=null;while(nextImmediate=Animator.immediates.shift()){nextImmediate()}Animator.nextDraw=Animator.timeouts.first()||Animator.frames.first()?globals.window.requestAnimationFrame(Animator._draw):null}};const makeSchedule=function(runnerInfo){const start=runnerInfo.start;const duration=runnerInfo.runner.duration();const end=start+duration;return{start:start,duration:duration,end:end,runner:runnerInfo.runner}};const defaultSource=function(){const w=globals.window;return(w.performance||w.Date).now()};class Timeline extends EventTarget{constructor(timeSource=defaultSource){super();this._timeSource=timeSource;this._startTime=0;this._speed=1;this._persist=0;this._nextFrame=null;this._paused=true;this._runners=[];this._runnerIds=[];this._lastRunnerId=-1;this._time=0;this._lastSourceTime=0;this._lastStepTime=0;this._step=this._stepFn.bind(this,false);this._stepImmediate=this._stepFn.bind(this,true)}active(){return!!this._nextFrame}finish(){this.time(this.getEndTimeOfTimeline()+1);return this.pause()}getEndTime(){const lastRunnerInfo=this.getLastRunnerInfo();const lastDuration=lastRunnerInfo?lastRunnerInfo.runner.duration():0;const lastStartTime=lastRunnerInfo?lastRunnerInfo.start:this._time;return lastStartTime+lastDuration}getEndTimeOfTimeline(){const endTimes=this._runners.map(i=>i.start+i.runner.duration());return Math.max(0,...endTimes)}getLastRunnerInfo(){return this.getRunnerInfoById(this._lastRunnerId)}getRunnerInfoById(id){return this._runners[this._runnerIds.indexOf(id)]||null}pause(){this._paused=true;return this._continue()}persist(dtOrForever){if(dtOrForever==null)return this._persist;this._persist=dtOrForever;return this}play(){this._paused=false;return this.updateTime()._continue()}reverse(yes){const currentSpeed=this.speed();if(yes==null)return this.speed(-currentSpeed);const positive=Math.abs(currentSpeed);return this.speed(yes?-positive:positive)}schedule(runner,delay,when){if(runner==null){return this._runners.map(makeSchedule)}let absoluteStartTime=0;const endTime=this.getEndTime();delay=delay||0;if(when==null||when==="last"||when==="after"){absoluteStartTime=endTime}else if(when==="absolute"||when==="start"){absoluteStartTime=delay;delay=0}else if(when==="now"){absoluteStartTime=this._time}else if(when==="relative"){const runnerInfo=this.getRunnerInfoById(runner.id);if(runnerInfo){absoluteStartTime=runnerInfo.start+delay;delay=0}}else if(when==="with-last"){const lastRunnerInfo=this.getLastRunnerInfo();const lastStartTime=lastRunnerInfo?lastRunnerInfo.start:this._time;absoluteStartTime=lastStartTime}else{throw new Error('Invalid value for the "when" parameter')}runner.unschedule();runner.timeline(this);const persist=runner.persist();const runnerInfo={persist:persist===null?this._persist:persist,start:absoluteStartTime+delay,runner:runner};this._lastRunnerId=runner.id;this._runners.push(runnerInfo);this._runners.sort((a,b)=>a.start-b.start);this._runnerIds=this._runners.map(info=>info.runner.id);this.updateTime()._continue();return this}seek(dt){return this.time(this._time+dt)}source(fn){if(fn==null)return this._timeSource;this._timeSource=fn;return this}speed(speed){if(speed==null)return this._speed;this._speed=speed;return this}stop(){this.time(0);return this.pause()}time(time){if(time==null)return this._time;this._time=time;return this._continue(true)}unschedule(runner){const index=this._runnerIds.indexOf(runner.id);if(index<0)return this;this._runners.splice(index,1);this._runnerIds.splice(index,1);runner.timeline(null);return this}updateTime(){if(!this.active()){this._lastSourceTime=this._timeSource()}return this}_continue(immediateStep=false){Animator.cancelFrame(this._nextFrame);this._nextFrame=null;if(immediateStep)return this._stepImmediate();if(this._paused)return this;this._nextFrame=Animator.frame(this._step);return this}_stepFn(immediateStep=false){const time=this._timeSource();let dtSource=time-this._lastSourceTime;if(immediateStep)dtSource=0;const dtTime=this._speed*dtSource+(this._time-this._lastStepTime);this._lastSourceTime=time;if(!immediateStep){this._time+=dtTime;this._time=this._time<0?0:this._time}this._lastStepTime=this._time;this.fire("time",this._time);for(let k=this._runners.length;k--;){const runnerInfo=this._runners[k];const runner=runnerInfo.runner;const dtToStart=this._time-runnerInfo.start;if(dtToStart<=0){runner.reset()}}let runnersLeft=false;for(let i=0,len=this._runners.length;i<len;i++){const runnerInfo=this._runners[i];const runner=runnerInfo.runner;let dt=dtTime;const dtToStart=this._time-runnerInfo.start;if(dtToStart<=0){runnersLeft=true;continue}else if(dtToStart<dt){dt=dtToStart}if(!runner.active())continue;const finished=runner.step(dt).done;if(!finished){runnersLeft=true}else if(runnerInfo.persist!==true){const endTime=runner.duration()-runner.time()+this._time;if(endTime+runnerInfo.persist<this._time){runner.unschedule();--i;--len}}}if(runnersLeft&&!(this._speed<0&&this._time===0)||this._runnerIds.length&&this._speed<0&&this._time>0){this._continue()}else{this.pause();this.fire("finished")}return this}}registerMethods({Element:{timeline:function(timeline){if(timeline==null){this._timeline=this._timeline||new Timeline;return this._timeline}else{this._timeline=timeline;return this}}}});class Runner extends EventTarget{constructor(options){super();this.id=Runner.id++;options=options==null?timeline.duration:options;options=typeof options==="function"?new Controller(options):options;this._element=null;this._timeline=null;this.done=false;this._queue=[];this._duration=typeof options==="number"&&options;this._isDeclarative=options instanceof Controller;this._stepper=this._isDeclarative?options:new Ease;this._history={};this.enabled=true;this._time=0;this._lastTime=0;this._reseted=true;this.transforms=new Matrix;this.transformId=1;this._haveReversed=false;this._reverse=false;this._loopsDone=0;this._swing=false;this._wait=0;this._times=1;this._frameId=null;this._persist=this._isDeclarative?true:null}static sanitise(duration,delay,when){let times=1;let swing=false;let wait=0;duration=duration||timeline.duration;delay=delay||timeline.delay;when=when||"last";if(typeof duration==="object"&&!(duration instanceof Stepper)){delay=duration.delay||delay;when=duration.when||when;swing=duration.swing||swing;times=duration.times||times;wait=duration.wait||wait;duration=duration.duration||timeline.duration}return{duration:duration,delay:delay,swing:swing,times:times,wait:wait,when:when}}active(enabled){if(enabled==null)return this.enabled;this.enabled=enabled;return this}addTransform(transform,index){this.transforms.lmultiplyO(transform);return this}after(fn){return this.on("finished",fn)}animate(duration,delay,when){const o=Runner.sanitise(duration,delay,when);const runner=new Runner(o.duration);if(this._timeline)runner.timeline(this._timeline);if(this._element)runner.element(this._element);return runner.loop(o).schedule(o.delay,o.when)}clearTransform(){this.transforms=new Matrix;return this}clearTransformsFromQueue(){if(!this.done||!this._timeline||!this._timeline._runnerIds.includes(this.id)){this._queue=this._queue.filter(item=>{return!item.isTransform})}}delay(delay){return this.animate(0,delay)}duration(){return this._times*(this._wait+this._duration)-this._wait}during(fn){return this.queue(null,fn)}ease(fn){this._stepper=new Ease(fn);return this}element(element){if(element==null)return this._element;this._element=element;element._prepareRunner();return this}finish(){return this.step(Infinity)}loop(times,swing,wait){if(typeof times==="object"){swing=times.swing;wait=times.wait;times=times.times}this._times=times||Infinity;this._swing=swing||false;this._wait=wait||0;if(this._times===true){this._times=Infinity}return this}loops(p){const loopDuration=this._duration+this._wait;if(p==null){const loopsDone=Math.floor(this._time/loopDuration);const relativeTime=this._time-loopsDone*loopDuration;const position=relativeTime/this._duration;return Math.min(loopsDone+position,this._times)}const whole=Math.floor(p);const partial=p%1;const time=loopDuration*whole+this._duration*partial;return this.time(time)}persist(dtOrForever){if(dtOrForever==null)return this._persist;this._persist=dtOrForever;return this}position(p){const x=this._time;const d=this._duration;const w=this._wait;const t=this._times;const s=this._swing;const r=this._reverse;let position;if(p==null){const f=function(x){const swinging=s*Math.floor(x%(2*(w+d))/(w+d));const backwards=swinging&&!r||!swinging&&r;const uncliped=Math.pow(-1,backwards)*(x%(w+d))/d+backwards;const clipped=Math.max(Math.min(uncliped,1),0);return clipped};const endTime=t*(w+d)-w;position=x<=0?Math.round(f(1e-5)):x<endTime?f(x):Math.round(f(endTime-1e-5));return position}const loopsDone=Math.floor(this.loops());const swingForward=s&&loopsDone%2===0;const forwards=swingForward&&!r||r&&swingForward;position=loopsDone+(forwards?p:1-p);return this.loops(position)}progress(p){if(p==null){return Math.min(1,this._time/this.duration())}return this.time(p*this.duration())}queue(initFn,runFn,retargetFn,isTransform){this._queue.push({initialiser:initFn||noop,runner:runFn||noop,retarget:retargetFn,isTransform:isTransform,initialised:false,finished:false});const timeline=this.timeline();timeline&&this.timeline()._continue();return this}reset(){if(this._reseted)return this;this.time(0);this._reseted=true;return this}reverse(reverse){this._reverse=reverse==null?!this._reverse:reverse;return this}schedule(timeline,delay,when){if(!(timeline instanceof Timeline)){when=delay;delay=timeline;timeline=this.timeline()}if(!timeline){throw Error("Runner cannot be scheduled without timeline")}timeline.schedule(this,delay,when);return this}step(dt){if(!this.enabled)return this;dt=dt==null?16:dt;this._time+=dt;const position=this.position();const running=this._lastPosition!==position&&this._time>=0;this._lastPosition=position;const duration=this.duration();const justStarted=this._lastTime<=0&&this._time>0;const justFinished=this._lastTime<duration&&this._time>=duration;this._lastTime=this._time;if(justStarted){this.fire("start",this)}const declarative=this._isDeclarative;this.done=!declarative&&!justFinished&&this._time>=duration;this._reseted=false;let converged=false;if(running||declarative){this._initialise(running);this.transforms=new Matrix;converged=this._run(declarative?dt:position);this.fire("step",this)}this.done=this.done||converged&&declarative;if(justFinished){this.fire("finished",this)}return this}time(time){if(time==null){return this._time}const dt=time-this._time;this.step(dt);return this}timeline(timeline){if(typeof timeline==="undefined")return this._timeline;this._timeline=timeline;return this}unschedule(){const timeline=this.timeline();timeline&&timeline.unschedule(this);return this}_initialise(running){if(!running&&!this._isDeclarative)return;for(let i=0,len=this._queue.length;i<len;++i){const current=this._queue[i];const needsIt=this._isDeclarative||!current.initialised&&running;running=!current.finished;if(needsIt&&running){current.initialiser.call(this);current.initialised=true}}}_rememberMorpher(method,morpher){this._history[method]={morpher:morpher,caller:this._queue[this._queue.length-1]};if(this._isDeclarative){const timeline=this.timeline();timeline&&timeline.play()}}_run(positionOrDt){let allfinished=true;for(let i=0,len=this._queue.length;i<len;++i){const current=this._queue[i];const converged=current.runner.call(this,positionOrDt);current.finished=current.finished||converged===true;allfinished=allfinished&&current.finished}return allfinished}_tryRetarget(method,target,extra){if(this._history[method]){if(!this._history[method].caller.initialised){const index=this._queue.indexOf(this._history[method].caller);this._queue.splice(index,1);return false}if(this._history[method].caller.retarget){this._history[method].caller.retarget.call(this,target,extra)}else{this._history[method].morpher.to(target)}this._history[method].caller.finished=false;const timeline=this.timeline();timeline&&timeline.play();return true}return false}}Runner.id=0;class FakeRunner{constructor(transforms=new Matrix,id=-1,done=true){this.transforms=transforms;this.id=id;this.done=done}clearTransformsFromQueue(){}}extend([Runner,FakeRunner],{mergeWith(runner){return new FakeRunner(runner.transforms.lmultiply(this.transforms),runner.id)}});const lmultiply=(last,curr)=>last.lmultiplyO(curr);const getRunnerTransform=runner=>runner.transforms;function mergeTransforms(){const runners=this._transformationRunners.runners;const netTransform=runners.map(getRunnerTransform).reduce(lmultiply,new Matrix);this.transform(netTransform);this._transformationRunners.merge();if(this._transformationRunners.length()===1){this._frameId=null}}class RunnerArray{constructor(){this.runners=[];this.ids=[]}add(runner){if(this.runners.includes(runner))return;const id=runner.id+1;this.runners.push(runner);this.ids.push(id);return this}clearBefore(id){const deleteCnt=this.ids.indexOf(id+1)||1;this.ids.splice(0,deleteCnt,0);this.runners.splice(0,deleteCnt,new FakeRunner).forEach(r=>r.clearTransformsFromQueue());return this}edit(id,newRunner){const index=this.ids.indexOf(id+1);this.ids.splice(index,1,id+1);this.runners.splice(index,1,newRunner);return this}getByID(id){return this.runners[this.ids.indexOf(id+1)]}length(){return this.ids.length}merge(){let lastRunner=null;for(let i=0;i<this.runners.length;++i){const runner=this.runners[i];const condition=lastRunner&&runner.done&&lastRunner.done&&(!runner._timeline||!runner._timeline._runnerIds.includes(runner.id))&&(!lastRunner._timeline||!lastRunner._timeline._runnerIds.includes(lastRunner.id));if(condition){this.remove(runner.id);const newRunner=runner.mergeWith(lastRunner);this.edit(lastRunner.id,newRunner);lastRunner=newRunner;--i}else{lastRunner=runner}}return this}remove(id){const index=this.ids.indexOf(id+1);this.ids.splice(index,1);this.runners.splice(index,1);return this}}registerMethods({Element:{animate(duration,delay,when){const o=Runner.sanitise(duration,delay,when);const timeline=this.timeline();return new Runner(o.duration).loop(o).element(this).timeline(timeline.play()).schedule(o.delay,o.when)},delay(by,when){return this.animate(0,by,when)},_clearTransformRunnersBefore(currentRunner){this._transformationRunners.clearBefore(currentRunner.id)},_currentTransform(current){return this._transformationRunners.runners.filter(runner=>runner.id<=current.id).map(getRunnerTransform).reduce(lmultiply,new Matrix)},_addRunner(runner){this._transformationRunners.add(runner);Animator.cancelImmediate(this._frameId);this._frameId=Animator.immediate(mergeTransforms.bind(this))},_prepareRunner(){if(this._frameId==null){this._transformationRunners=(new RunnerArray).add(new FakeRunner(new Matrix(this)))}}}});const difference=(a,b)=>a.filter(x=>!b.includes(x));extend(Runner,{attr(a,v){return this.styleAttr("attr",a,v)},css(s,v){return this.styleAttr("css",s,v)},styleAttr(type,nameOrAttrs,val){if(typeof nameOrAttrs==="string"){return this.styleAttr(type,{[nameOrAttrs]:val})}let attrs=nameOrAttrs;if(this._tryRetarget(type,attrs))return this;let morpher=new Morphable(this._stepper).to(attrs);let keys=Object.keys(attrs);this.queue(function(){morpher=morpher.from(this.element()[type](keys))},function(pos){this.element()[type](morpher.at(pos).valueOf());return morpher.done()},function(newToAttrs){const newKeys=Object.keys(newToAttrs);const differences=difference(newKeys,keys);if(differences.length){const addedFromAttrs=this.element()[type](differences);const oldFromAttrs=new ObjectBag(morpher.from()).valueOf();Object.assign(oldFromAttrs,addedFromAttrs);morpher.from(oldFromAttrs)}const oldToAttrs=new ObjectBag(morpher.to()).valueOf();Object.assign(oldToAttrs,newToAttrs);morpher.to(oldToAttrs);keys=newKeys;attrs=newToAttrs});this._rememberMorpher(type,morpher);return this},zoom(level,point){if(this._tryRetarget("zoom",level,point))return this;let morpher=new Morphable(this._stepper).to(new SVGNumber(level));this.queue(function(){morpher=morpher.from(this.element().zoom())},function(pos){this.element().zoom(morpher.at(pos),point);return morpher.done()},function(newLevel,newPoint){point=newPoint;morpher.to(newLevel)});this._rememberMorpher("zoom",morpher);return this},transform(transforms,relative,affine){relative=transforms.relative||relative;if(this._isDeclarative&&!relative&&this._tryRetarget("transform",transforms)){return this}const isMatrix=Matrix.isMatrixLike(transforms);affine=transforms.affine!=null?transforms.affine:affine!=null?affine:!isMatrix;const morpher=new Morphable(this._stepper).type(affine?TransformBag:Matrix);let origin;let element;let current;let currentAngle;let startTransform;function setup(){element=element||this.element();origin=origin||getOrigin(transforms,element);startTransform=new Matrix(relative?undefined:element);element._addRunner(this);if(!relative){element._clearTransformRunnersBefore(this)}}function run(pos){if(!relative)this.clearTransform();const{x,y}=new Point(origin).transform(element._currentTransform(this));let target=new Matrix({...transforms,origin:[x,y]});let start=this._isDeclarative&&current?current:startTransform;if(affine){target=target.decompose(x,y);start=start.decompose(x,y);const rTarget=target.rotate;const rCurrent=start.rotate;const possibilities=[rTarget-360,rTarget,rTarget+360];const distances=possibilities.map(a=>Math.abs(a-rCurrent));const shortest=Math.min(...distances);const index=distances.indexOf(shortest);target.rotate=possibilities[index]}if(relative){if(!isMatrix){target.rotate=transforms.rotate||0}if(this._isDeclarative&&currentAngle){start.rotate=currentAngle}}morpher.from(start);morpher.to(target);const affineParameters=morpher.at(pos);currentAngle=affineParameters.rotate;current=new Matrix(affineParameters);this.addTransform(current);element._addRunner(this);return morpher.done()}function retarget(newTransforms){if((newTransforms.origin||"center").toString()!==(transforms.origin||"center").toString()){origin=getOrigin(newTransforms,element)}transforms={...newTransforms,origin:origin}}this.queue(setup,run,retarget,true);this._isDeclarative&&this._rememberMorpher("transform",morpher);return this},x(x,relative){return this._queueNumber("x",x)},y(y){return this._queueNumber("y",y)},dx(x=0){return this._queueNumberDelta("x",x)},dy(y=0){return this._queueNumberDelta("y",y)},dmove(x,y){return this.dx(x).dy(y)},_queueNumberDelta(method,to){to=new SVGNumber(to);if(this._tryRetarget(method,to))return this;const morpher=new Morphable(this._stepper).to(to);let from=null;this.queue(function(){from=this.element()[method]();morpher.from(from);morpher.to(from+to)},function(pos){this.element()[method](morpher.at(pos));return morpher.done()},function(newTo){morpher.to(from+new SVGNumber(newTo))});this._rememberMorpher(method,morpher);return this},_queueObject(method,to){if(this._tryRetarget(method,to))return this;const morpher=new Morphable(this._stepper).to(to);this.queue(function(){morpher.from(this.element()[method]())},function(pos){this.element()[method](morpher.at(pos));return morpher.done()});this._rememberMorpher(method,morpher);return this},_queueNumber(method,value){return this._queueObject(method,new SVGNumber(value))},cx(x){return this._queueNumber("cx",x)},cy(y){return this._queueNumber("cy",y)},move(x,y){return this.x(x).y(y)},center(x,y){return this.cx(x).cy(y)},size(width,height){let box;if(!width||!height){box=this._element.bbox()}if(!width){width=box.width/box.height*height}if(!height){height=box.height/box.width*width}return this.width(width).height(height)},width(width){return this._queueNumber("width",width)},height(height){return this._queueNumber("height",height)},plot(a,b,c,d){if(arguments.length===4){return this.plot([a,b,c,d])}if(this._tryRetarget("plot",a))return this;const morpher=new Morphable(this._stepper).type(this._element.MorphArray).to(a);this.queue(function(){morpher.from(this._element.array())},function(pos){this._element.plot(morpher.at(pos));return morpher.done()});this._rememberMorpher("plot",morpher);return this},leading(value){return this._queueNumber("leading",value)},viewbox(x,y,width,height){return this._queueObject("viewbox",new Box(x,y,width,height))},update(o){if(typeof o!=="object"){return this.update({offset:arguments[0],color:arguments[1],opacity:arguments[2]})}if(o.opacity!=null)this.attr("stop-opacity",o.opacity);if(o.color!=null)this.attr("stop-color",o.color);if(o.offset!=null)this.attr("offset",o.offset);return this}});extend(Runner,{rx:rx,ry:ry,from:from,to:to});register(Runner,"Runner");class Svg extends Container{constructor(node,attrs=node){super(nodeOrNew("svg",node),attrs);this.namespace()}defs(){if(!this.isRoot())return this.root().defs();return adopt(this.node.querySelector("defs"))||this.put(new Defs)}isRoot(){return!this.node.parentNode||!(this.node.parentNode instanceof globals.window.SVGElement)&&this.node.parentNode.nodeName!=="#document-fragment"}namespace(){if(!this.isRoot())return this.root().namespace();return this.attr({xmlns:svg,version:"1.1"}).attr("xmlns:xlink",xlink,xmlns).attr("xmlns:svgjs",svgjs,xmlns)}removeNamespace(){return this.attr({xmlns:null,version:null}).attr("xmlns:xlink",null,xmlns).attr("xmlns:svgjs",null,xmlns)}root(){if(this.isRoot())return this;return super.root()}}registerMethods({Container:{nested:wrapWithAttrCheck(function(){return this.put(new Svg)})}});register(Svg,"Svg",true);class Symbol extends Container{constructor(node,attrs=node){super(nodeOrNew("symbol",node),attrs)}}registerMethods({Container:{symbol:wrapWithAttrCheck(function(){return this.put(new Symbol)})}});register(Symbol,"Symbol");function plain(text){if(this._build===false){this.clear()}this.node.appendChild(globals.document.createTextNode(text));return this}function length(){return this.node.getComputedTextLength()}function x$1(x,box=this.bbox()){if(x==null){return box.x}return this.attr("x",this.attr("x")+x-box.x)}function y$1(y,box=this.bbox()){if(y==null){return box.y}return this.attr("y",this.attr("y")+y-box.y)}function move$1(x,y,box=this.bbox()){return this.x(x,box).y(y,box)}function cx(x,box=this.bbox()){if(x==null){return box.cx}return this.attr("x",this.attr("x")+x-box.cx)}function cy(y,box=this.bbox()){if(y==null){return box.cy}return this.attr("y",this.attr("y")+y-box.cy)}function center(x,y,box=this.bbox()){return this.cx(x,box).cy(y,box)}function ax(x){return this.attr("x",x)}function ay(y){return this.attr("y",y)}function amove(x,y){return this.ax(x).ay(y)}function build(build){this._build=!!build;return this}var textable={__proto__:null,plain:plain,length:length,x:x$1,y:y$1,move:move$1,cx:cx,cy:cy,center:center,ax:ax,ay:ay,amove:amove,build:build};class Text extends Shape{constructor(node,attrs=node){super(nodeOrNew("text",node),attrs);this.dom.leading=new SVGNumber(1.3);this._rebuild=true;this._build=false}leading(value){if(value==null){return this.dom.leading}this.dom.leading=new SVGNumber(value);return this.rebuild()}rebuild(rebuild){if(typeof rebuild==="boolean"){this._rebuild=rebuild}if(this._rebuild){const self=this;let blankLineOffset=0;const leading=this.dom.leading;this.each(function(i){const fontSize=globals.window.getComputedStyle(this.node).getPropertyValue("font-size");const dy=leading*new SVGNumber(fontSize);if(this.dom.newLined){this.attr("x",self.attr("x"));if(this.text()==="\n"){blankLineOffset+=dy}else{this.attr("dy",i?dy+blankLineOffset:0);blankLineOffset=0}}});this.fire("rebuild")}return this}setData(o){this.dom=o;this.dom.leading=new SVGNumber(o.leading||1.3);return this}text(text){if(text===undefined){const children=this.node.childNodes;let firstLine=0;text="";for(let i=0,len=children.length;i<len;++i){if(children[i].nodeName==="textPath"){if(i===0)firstLine=1;continue}if(i!==firstLine&&children[i].nodeType!==3&&adopt(children[i]).dom.newLined===true){text+="\n"}text+=children[i].textContent}return text}this.clear().build(true);if(typeof text==="function"){text.call(this,this)}else{text=(text+"").split("\n");for(let j=0,jl=text.length;j<jl;j++){this.newLine(text[j])}}return this.build(false).rebuild()}}extend(Text,textable);registerMethods({Container:{text:wrapWithAttrCheck(function(text=""){return this.put(new Text).text(text)}),plain:wrapWithAttrCheck(function(text=""){return this.put(new Text).plain(text)})}});register(Text,"Text");class Tspan extends Shape{constructor(node,attrs=node){super(nodeOrNew("tspan",node),attrs);this._build=false}dx(dx){return this.attr("dx",dx)}dy(dy){return this.attr("dy",dy)}newLine(){this.dom.newLined=true;const text=this.parent();if(!(text instanceof Text)){return this}const i=text.index(this);const fontSize=globals.window.getComputedStyle(this.node).getPropertyValue("font-size");const dy=text.dom.leading*new SVGNumber(fontSize);return this.dy(i?dy:0).attr("x",text.x())}text(text){if(text==null)return this.node.textContent+(this.dom.newLined?"\n":"");if(typeof text==="function"){this.clear().build(true);text.call(this,this);this.build(false)}else{this.plain(text)}return this}}extend(Tspan,textable);registerMethods({Tspan:{tspan:wrapWithAttrCheck(function(text=""){const tspan=new Tspan;if(!this._build){this.clear()}return this.put(tspan).text(text)})},Text:{newLine:function(text=""){return this.tspan(text).newLine()}}});register(Tspan,"Tspan");class Circle extends Shape{constructor(node,attrs=node){super(nodeOrNew("circle",node),attrs)}radius(r){return this.attr("r",r)}rx(rx){return this.attr("r",rx)}ry(ry){return this.rx(ry)}size(size){return this.radius(new SVGNumber(size).divide(2))}}extend(Circle,{x:x$3,y:y$3,cx:cx$1,cy:cy$1,width:width$2,height:height$2});registerMethods({Container:{circle:wrapWithAttrCheck(function(size=0){return this.put(new Circle).size(size).move(0,0)})}});register(Circle,"Circle");class ClipPath extends Container{constructor(node,attrs=node){super(nodeOrNew("clipPath",node),attrs)}remove(){this.targets().forEach(function(el){el.unclip()});return super.remove()}targets(){return baseFind('svg [clip-path*="'+this.id()+'"]')}}registerMethods({Container:{clip:wrapWithAttrCheck(function(){return this.defs().put(new ClipPath)})},Element:{clipper(){return this.reference("clip-path")},clipWith(element){const clipper=element instanceof ClipPath?element:this.parent().clip().add(element);return this.attr("clip-path",'url("#'+clipper.id()+'")')},unclip(){return this.attr("clip-path",null)}}});register(ClipPath,"ClipPath");class ForeignObject extends Element{constructor(node,attrs=node){super(nodeOrNew("foreignObject",node),attrs)}}registerMethods({Container:{foreignObject:wrapWithAttrCheck(function(width,height){return this.put(new ForeignObject).size(width,height)})}});register(ForeignObject,"ForeignObject");function dmove(dx,dy){this.children().forEach((child,i)=>{let bbox;try{bbox=child.bbox()}catch(e){return}const m=new Matrix(child);const matrix=m.translate(dx,dy).transform(m.inverse());const p=new Point(bbox.x,bbox.y).transform(matrix);child.move(p.x,p.y)});return this}function dx(dx){return this.dmove(dx,0)}function dy(dy){return this.dmove(0,dy)}function height(height,box=this.bbox()){if(height==null)return box.height;return this.size(box.width,height,box)}function move(x=0,y=0,box=this.bbox()){const dx=x-box.x;const dy=y-box.y;return this.dmove(dx,dy)}function size(width,height,box=this.bbox()){const p=proportionalSize(this,width,height,box);const scaleX=p.width/box.width;const scaleY=p.height/box.height;this.children().forEach((child,i)=>{const o=new Point(box).transform(new Matrix(child).inverse());child.scale(scaleX,scaleY,o.x,o.y)});return this}function width(width,box=this.bbox()){if(width==null)return box.width;return this.size(width,box.height,box)}function x(x,box=this.bbox()){if(x==null)return box.x;return this.move(x,box.y,box)}function y(y,box=this.bbox()){if(y==null)return box.y;return this.move(box.x,y,box)}var containerGeometry={__proto__:null,dmove:dmove,dx:dx,dy:dy,height:height,move:move,size:size,width:width,x:x,y:y};class G extends Container{constructor(node,attrs=node){super(nodeOrNew("g",node),attrs)}}extend(G,containerGeometry);registerMethods({Container:{group:wrapWithAttrCheck(function(){return this.put(new G)})}});register(G,"G");class A extends Container{constructor(node,attrs=node){super(nodeOrNew("a",node),attrs)}target(target){return this.attr("target",target)}to(url){return this.attr("href",url,xlink)}}extend(A,containerGeometry);registerMethods({Container:{link:wrapWithAttrCheck(function(url){return this.put(new A).to(url)})},Element:{unlink(){const link=this.linker();if(!link)return this;const parent=link.parent();if(!parent){return this.remove()}const index=parent.index(link);parent.add(this,index);link.remove();return this},linkTo(url){let link=this.linker();if(!link){link=new A;this.wrap(link)}if(typeof url==="function"){url.call(link,link)}else{link.to(url)}return this},linker(){const link=this.parent();if(link&&link.node.nodeName.toLowerCase()==="a"){return link}return null}}});register(A,"A");class Mask extends Container{constructor(node,attrs=node){super(nodeOrNew("mask",node),attrs)}remove(){this.targets().forEach(function(el){el.unmask()});return super.remove()}targets(){return baseFind('svg [mask*="'+this.id()+'"]')}}registerMethods({Container:{mask:wrapWithAttrCheck(function(){return this.defs().put(new Mask)})},Element:{masker(){return this.reference("mask")},maskWith(element){const masker=element instanceof Mask?element:this.parent().mask().add(element);return this.attr("mask",'url("#'+masker.id()+'")')},unmask(){return this.attr("mask",null)}}});register(Mask,"Mask");class Stop extends Element{constructor(node,attrs=node){super(nodeOrNew("stop",node),attrs)}update(o){if(typeof o==="number"||o instanceof SVGNumber){o={offset:arguments[0],color:arguments[1],opacity:arguments[2]}}if(o.opacity!=null)this.attr("stop-opacity",o.opacity);if(o.color!=null)this.attr("stop-color",o.color);if(o.offset!=null)this.attr("offset",new SVGNumber(o.offset));return this}}registerMethods({Gradient:{stop:function(offset,color,opacity){return this.put(new Stop).update(offset,color,opacity)}}});register(Stop,"Stop");function cssRule(selector,rule){if(!selector)return"";if(!rule)return selector;let ret=selector+"{";for(const i in rule){ret+=unCamelCase(i)+":"+rule[i]+";"}ret+="}";return ret}class Style extends Element{constructor(node,attrs=node){super(nodeOrNew("style",node),attrs)}addText(w=""){this.node.textContent+=w;return this}font(name,src,params={}){return this.rule("@font-face",{fontFamily:name,src:src,...params})}rule(selector,obj){return this.addText(cssRule(selector,obj))}}registerMethods("Dom",{style(selector,obj){return this.put(new Style).rule(selector,obj)},fontface(name,src,params){return this.put(new Style).font(name,src,params)}});register(Style,"Style");class TextPath extends Text{constructor(node,attrs=node){super(nodeOrNew("textPath",node),attrs)}array(){const track=this.track();return track?track.array():null}plot(d){const track=this.track();let pathArray=null;if(track){pathArray=track.plot(d)}return d==null?pathArray:this}track(){return this.reference("href")}}registerMethods({Container:{textPath:wrapWithAttrCheck(function(text,path){if(!(text instanceof Text)){text=this.text(text)}return text.path(path)})},Text:{path:wrapWithAttrCheck(function(track,importNodes=true){const textPath=new TextPath;if(!(track instanceof Path)){track=this.defs().path(track)}textPath.attr("href","#"+track,xlink);let node;if(importNodes){while(node=this.node.firstChild){textPath.node.appendChild(node)}}return this.put(textPath)}),textPath(){return this.findOne("textPath")}},Path:{text:wrapWithAttrCheck(function(text){if(!(text instanceof Text)){text=(new Text).addTo(this.parent()).text(text)}return text.path(this)}),targets(){return baseFind("svg textPath").filter(node=>{return(node.attr("href")||"").includes(this.id())})}}});TextPath.prototype.MorphArray=PathArray;register(TextPath,"TextPath");class Use extends Shape{constructor(node,attrs=node){super(nodeOrNew("use",node),attrs)}use(element,file){return this.attr("href",(file||"")+"#"+element,xlink)}}registerMethods({Container:{use:wrapWithAttrCheck(function(element,file){return this.put(new Use).use(element,file)})}});register(Use,"Use");const SVG$1=makeInstance;extend([Svg,Symbol,Image,Pattern,Marker],getMethodsFor("viewbox"));extend([Line,Polyline,Polygon,Path],getMethodsFor("marker"));extend(Text,getMethodsFor("Text"));extend(Path,getMethodsFor("Path"));extend(Defs,getMethodsFor("Defs"));extend([Text,Tspan],getMethodsFor("Tspan"));extend([Rect,Ellipse,Gradient,Runner],getMethodsFor("radius"));extend(EventTarget,getMethodsFor("EventTarget"));extend(Dom,getMethodsFor("Dom"));extend(Element,getMethodsFor("Element"));extend(Shape,getMethodsFor("Shape"));extend([Container,Fragment],getMethodsFor("Container"));extend(Gradient,getMethodsFor("Gradient"));extend(Runner,getMethodsFor("Runner"));List.extend(getMethodNames());registerMorphableType([SVGNumber,Color,Box,Matrix,SVGArray,PointArray,PathArray,Point]);makeMorphable();var svgMembers={__proto__:null,Morphable:Morphable,registerMorphableType:registerMorphableType,makeMorphable:makeMorphable,TransformBag:TransformBag,ObjectBag:ObjectBag,NonMorphable:NonMorphable,defaults:defaults,utils:utils,namespaces:namespaces,regex:regex,SVG:SVG$1,parser:parser,find:baseFind,getWindow:getWindow,registerWindow:registerWindow,restoreWindow:restoreWindow,saveWindow:saveWindow,withWindow:withWindow,Animator:Animator,Controller:Controller,Ease:Ease,PID:PID,Spring:Spring,easing:easing,Queue:Queue,Runner:Runner,Timeline:Timeline,Array:SVGArray,Box:Box,Color:Color,EventTarget:EventTarget,Matrix:Matrix,Number:SVGNumber,PathArray:PathArray,Point:Point,PointArray:PointArray,List:List,Circle:Circle,ClipPath:ClipPath,Container:Container,Defs:Defs,Dom:Dom,Element:Element,Ellipse:Ellipse,ForeignObject:ForeignObject,Fragment:Fragment,Gradient:Gradient,G:G,A:A,Image:Image,Line:Line,Marker:Marker,Mask:Mask,Path:Path,Pattern:Pattern,Polygon:Polygon,Polyline:Polyline,Rect:Rect,Shape:Shape,Stop:Stop,Style:Style,Svg:Svg,Symbol:Symbol,Text:Text,TextPath:TextPath,Tspan:Tspan,Use:Use,windowEvents:windowEvents,getEvents:getEvents,getEventTarget:getEventTarget,clearEvents:clearEvents,on:on,off:off,dispatch:dispatch,root:root,create:create,makeInstance:makeInstance,nodeOrNew:nodeOrNew,adopt:adopt,mockAdopt:mockAdopt,register:register,getClass:getClass,eid:eid,assignNewId:assignNewId,extend:extend,wrapWithAttrCheck:wrapWithAttrCheck};function SVG(element,isHTML){return makeInstance(element,isHTML)}Object.assign(SVG,svgMembers);return SVG}();
+/*!
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+ The code below is based on SVGPan Library 1.2 and was modified for doxygen
+ to support both zooming and panning via the mouse and via embedded buttons.
+
+ This code is licensed under the following BSD license:
+
+ Copyright 2009-2010 Andrea Leofreddi <a.leofreddi@itcharm.com>. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are
+ permitted provided that the following conditions are met:
+
+    1. Redistributions of source code must retain the above copyright notice, this list of
+       conditions and the following disclaimer.
+
+    2. Redistributions in binary form must reproduce the above copyright notice, this list
+       of conditions and the following disclaimer in the documentation and/or other materials
+       provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ The views and conclusions contained in the software and documentation are those of the
+ authors and should not be interpreted as representing official policies, either expressed
+ or implied, of Andrea Leofreddi.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
+var root=document.documentElement;var state="none";var stateOrigin;var stateTf=root.createSVGMatrix();var cursorGrab=' url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRFAAAA////////c3ilYwAAAAN0Uk5T//8A18oNQQAAAD1JREFUeNp0zlEKACAIA9Bt9z90bZBZkQj29qFBEuBOzQHSnWTTyckEfqUuZgFvslH4ch3qLCO/Kr8cAgwATw4Ax6XRCcoAAAAASUVORK5CYII="), move';var zoomSteps=10;var zoomInFactor;var zoomOutFactor;var windowWidth;var windowHeight;var svgDoc;var minZoom;var maxZoom;if(!window)window=this;function show(){if(window.innerHeight){windowWidth=window.innerWidth;windowHeight=window.innerHeight}else if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight}if(!windowWidth||!windowHeight){windowWidth=800;windowHeight=600}minZoom=Math.min(Math.min(viewHeight,windowHeight)/viewHeight,Math.min(viewWidth,windowWidth)/viewWidth);maxZoom=minZoom+1.5;zoomInFactor=Math.pow(maxZoom/minZoom,1/zoomSteps);zoomOutFactor=1/zoomInFactor;var g=svgDoc.getElementById("viewport");try{var bb=g.getBBox();var tx=(windowWidth-viewWidth*minZoom+8)/(2*minZoom);var ty=viewHeight+(windowHeight-viewHeight*minZoom)/(2*minZoom);var a="scale("+minZoom+") rotate(0) translate("+tx+" "+ty+")";g.setAttribute("transform",a)}catch(e){}}function init(evt){svgDoc=evt.target.ownerDocument;try{if(top.window&&top.window.registerShow){top.window.registerShow(sectionId,show)}}catch(e){}show();setAttributes(root,{onmousedown:"handleMouseDown(evt)",onmousemove:"handleMouseMove(evt)",onmouseup:"handleMouseUp(evt)"});if(window.addEventListener){if(navigator.userAgent.toLowerCase().indexOf("webkit")>=0||navigator.userAgent.toLowerCase().indexOf("opera")>=0||navigator.appVersion.indexOf("MSIE")!=-1){window.addEventListener("mousewheel",handleMouseWheel,false)}else{window.addEventListener("DOMMouseScroll",handleMouseWheel,false)}}}window.onresize=function(){if(svgDoc){show()}};function getEventPoint(evt){var p=root.createSVGPoint();p.x=evt.clientX;p.y=evt.clientY;return p}function setCTM(element,matrix){var s="matrix("+matrix.a+","+matrix.b+","+matrix.c+","+matrix.d+","+matrix.e+","+matrix.f+")";element.setAttribute("transform",s)}function setAttributes(element,attributes){for(i in attributes)element.setAttributeNS(null,i,attributes[i])}function doZoom(g,point,zoomFactor){var p=point.matrixTransform(g.getCTM().inverse());var k=root.createSVGMatrix().translate(p.x,p.y).scale(zoomFactor).translate(-p.x,-p.y);var n=g.getCTM().multiply(k);var s=Math.max(n.a,n.d);if(s>maxZoom)n=n.translate(p.x,p.y).scale(maxZoom/s).translate(-p.x,-p.y);else if(s<minZoom)n=n.translate(p.x,p.y).scale(minZoom/s).translate(-p.x,-p.y);setCTM(g,n);stateTf=stateTf.multiply(n.inverse())}function handleMouseWheel(evt){if(!evt)evt=window.evt;if(!evt.shiftKey)return;if(evt.preventDefault)evt.preventDefault();evt.returnValue=false;if(state!="pan"){var delta;if(evt.wheelDelta){delta=evt.wheelDelta/7200}else{delta=evt.detail/-180}var svgDoc=evt.target.ownerDocument;var g=svgDoc.getElementById("viewport");var p=getEventPoint(evt);doZoom(g,p,1+delta)}}function handleMouseMove(evt){if(evt.preventDefault)evt.preventDefault();evt.returnValue=false;var g=svgDoc.getElementById("viewport");if(state=="pan"){var p=getEventPoint(evt).matrixTransform(stateTf);setCTM(g,stateTf.inverse().translate(p.x-stateOrigin.x,p.y-stateOrigin.y))}}function handleMouseDown(evt){if(evt.preventDefault)evt.preventDefault();evt.returnValue=false;var g=svgDoc.getElementById("viewport");state="pan";stateTf=g.getCTM().inverse();stateOrigin=getEventPoint(evt).matrixTransform(stateTf);g.style.cursor=cursorGrab}function handleMouseUp(evt){if(evt.preventDefault)evt.preventDefault();evt.returnValue=false;var g=svgDoc.getElementById("viewport");g.style.cursor="default";state=""}function dumpMatrix(matrix){var s="[ "+matrix.a+", "+matrix.c+", "+matrix.e+"\n  "+matrix.b+", "+matrix.d+", "+matrix.f+"\n  0, 0, 1 ]";return s}function handlePan(x,y){var g=svgDoc.getElementById("viewport");setCTM(g,g.getCTM().translate(x*20/minZoom,y*20/minZoom))}function handleReset(){show()}function handleZoom(evt,direction){var g=svgDoc.getElementById("viewport");var factor=direction=="in"?zoomInFactor:zoomOutFactor;var m=g.getCTM();var p=root.createSVGPoint();p.x=windowWidth/2;p.y=windowHeight/2;doZoom(g,p,factor)}function serializeXmlNode(xmlNode){if(typeof window.XMLSerializer!="undefined"){return(new window.XMLSerializer).serializeToString(xmlNode)}else if(typeof xmlNode.xml!="undefined"){return xmlNode.xml}return""}function handlePrint(evt){evt.returnValue=false;var g=svgDoc.getElementById("graph");var xs=serializeXmlNode(g);try{var w=window.open("about:blank","_blank","width="+windowWidth+",height="+windowHeight+",toolbar=0,status=0,menubar=0,scrollbars=0,resizable=0,location=0,directories=0");var d=w.document;d.write('<html xmlns="http://www.w3.org/1999/xhtml" '+'xmlns:svg="http://www.w3.org/2000/svg" '+'xmlns:xlink="http://www.w3.org/1999/xlink">');d.write("<head><title>Print SVG</title></head>");d.write('<body style="margin: 0px; padding: 0px;" onload="window.print();">');d.write('<div id="svg" style="width:'+windowWidth+"px; height:"+windowHeight+'px;">'+xs+"</div>");d.write("</body>");d.write("</html>");d.close()}catch(e){alert("Failed to open popup window needed for printing!\n"+e.message)}}function highlightEdges(){var elems=document.getElementsByTagName("g");if(elems){for(var i=0;i<elems.length;i++){if(elems[i].id.substr(0,4)=="edge"){elems[i].setAttribute("class","edge selected")}else if(elems[i].id.substr(0,4)=="Node"){elems[i].setAttribute("class","node selected")}}}}function highlightAdjacentNodes(){function getEdgesAndDistance1Nodes(node,topG){const nodeName=node.attr("id");const selector="[id^=edge]";const candidates=topG.find(selector);let edges=new Set;let nodes=new Set;for(let edge of candidates){const res=edge.attr("id").split("_");if(res&&res.length==3){const N1=res[1];const N2=res[2];if(N1==nodeName){const N2selector=`[id^=${N2}]`;nodes.add(topG.findOne(N2selector));edges.add(edge)}else if(N2==nodeName){const N1selector=`[id^=${N1}]`;nodes.add(topG.findOne(N1selector));edges.add(edge)}}}return{nodes:nodes,edges:edges}}function walk(node,func){let children=node.children();for(let child of children){walk(child,func)}func(node)}let s=SVG("svg > g");function findEnclosingG(domEl){let curEl=domEl;while(curEl.nodeName!="g"||curEl.id.substr(0,4)!="Node"){curEl=curEl.parentElement}return curEl}function onMouseOverElem(domEl){let e=SVG(findEnclosingG(domEl.target));walk(s,e=>{if(SVG(e)!=s)SVG(e).attr("data-mouse-over-selected","false")});walk(e,e=>SVG(e).attr("data-mouse-over-selected","true"));let{nodes,edges}=getEdgesAndDistance1Nodes(SVG(e),s);for(let node of nodes){walk(node,e=>SVG(e).attr("data-mouse-over-selected","true"))}for(let edge of edges){walk(edge,e=>SVG(e).attr("data-mouse-over-selected","true"))}}function onMouseOutElem(domEl){let e=SVG(findEnclosingG(domEl.target));walk(s,e=>e.attr("data-mouse-over-selected",null))}let gs=s.find("g[id^=Node]");for(let g of gs){g.on("mouseover",onMouseOverElem);g.on("mouseout",onMouseOutElem)}}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sync_off.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sync_off.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sync_off.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sync_on.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sync_on.png
new file mode 100644
index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/sync_on.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_a.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_a.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_a.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_ad.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_ad.png
new file mode 100644
index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_ad.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_b.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_b.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_b.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_bd.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_bd.png
new file mode 100644
index 0000000000000000000000000000000000000000..91c25249869ffe5269c24f8c441e3f1bf75df400
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_bd.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_h.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_h.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd5cb705488e60fcf30f56fcc951dee74f3b095b
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_h.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_hd.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_hd.png
new file mode 100644
index 0000000000000000000000000000000000000000..2489273d4ce1d11d3f7557335244c02b9959351b
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_hd.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_s.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_s.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_s.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_sd.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_sd.png
new file mode 100644
index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tab_sd.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tabs.css b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tabs.css
new file mode 100644
index 0000000000000000000000000000000000000000..7fa4268a46fb63ee9e73b0ab9e3904c253560714
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/tabs.css
@@ -0,0 +1 @@
+.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..f7f3b0652ecca018a933c3825dc7e741f320ef25
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp.html
@@ -0,0 +1,230 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a> &#124;
+<a href="#enum-members">Enumerations</a>  </div>
+  <div class="headertitle"><div class="title">task.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &lt;QString&gt;</code><br />
+<code>#include &lt;QVector&gt;</code><br />
+<code>#include &lt;QSharedPointer&gt;</code><br />
+<code>#include &lt;QWeakPointer&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for task.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="task_8hpp__incl.png" border="0" usemap="#atask_8hpp" alt=""/></div>
+<map name="atask_8hpp" id="atask_8hpp">
+<area shape="rect" title=" " alt="" coords="150,5,222,32"/>
+<area shape="rect" title=" " alt="" coords="5,80,71,107"/>
+<area shape="poly" title=" " alt="" coords="161,35,79,75,76,70,159,30"/>
+<area shape="rect" title=" " alt="" coords="94,80,163,107"/>
+<area shape="poly" title=" " alt="" coords="178,34,150,69,146,66,174,31"/>
+<area shape="rect" title=" " alt="" coords="187,80,300,107"/>
+<area shape="poly" title=" " alt="" coords="198,31,226,66,222,69,194,34"/>
+<area shape="rect" title=" " alt="" coords="324,80,429,107"/>
+<area shape="poly" title=" " alt="" coords="220,30,330,72,328,77,218,35"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="task_8hpp__dep__incl.png" border="0" usemap="#atask_8hppdep" alt=""/></div>
+<map name="atask_8hppdep" id="atask_8hppdep">
+<area shape="rect" title=" " alt="" coords="251,5,322,32"/>
+<area shape="rect" href="sidebar_8cpp.html" title=" " alt="" coords="29,155,118,181"/>
+<area shape="poly" title=" " alt="" coords="237,26,202,32,166,42,131,59,101,82,89,99,82,118,76,155,71,154,76,117,84,96,97,78,128,54,164,37,201,27,236,21"/>
+<area shape="rect" href="sidebar_8hpp.html" title=" " alt="" coords="111,80,199,107"/>
+<area shape="poly" title=" " alt="" coords="252,42,179,82,177,77,250,37"/>
+<area shape="rect" href="task__ui_8hpp.html" title=" " alt="" coords="99,229,187,256"/>
+<area shape="poly" title=" " alt="" coords="273,46,153,230,149,227,268,43"/>
+<area shape="rect" href="subtask__item_8hpp.html" title=" " alt="" coords="211,229,336,256"/>
+<area shape="poly" title=" " alt="" coords="288,47,277,229,272,229,282,47"/>
+<area shape="rect" href="task__executor_8hpp.html" title=" " alt="" coords="443,80,571,107"/>
+<area shape="poly" title=" " alt="" coords="338,34,469,77,467,82,337,39"/>
+<area shape="rect" href="task__manager_8hpp.html" title=" " alt="" coords="348,155,476,181"/>
+<area shape="poly" title=" " alt="" coords="309,42,403,152,399,156,305,46"/>
+<area shape="rect" href="task__parser_8hpp.html" title=" " alt="" coords="722,80,836,107"/>
+<area shape="poly" title=" " alt="" coords="338,25,722,81,721,86,338,30"/>
+<area shape="poly" title=" " alt="" coords="131,119,89,156,86,152,128,115"/>
+<area shape="poly" title=" " alt="" coords="155,122,146,229,141,229,150,122"/>
+<area shape="rect" href="learn__environment_8cpp.html" title=" " alt="" coords="136,379,288,405"/>
+<area shape="poly" title=" " alt="" coords="85,261,51,274,23,290,14,299,9,308,9,318,14,329,39,353,69,370,102,380,136,386,135,392,101,385,67,374,36,357,10,332,4,319,4,307,10,295,20,285,49,269,83,256"/>
+<area shape="rect" href="learn__environment_8hpp.html" title=" " alt="" coords="136,304,288,331"/>
+<area shape="poly" title=" " alt="" coords="167,265,202,302,198,305,163,269"/>
+<area shape="rect" href="task__manager_8cpp.html" title=" " alt="" coords="512,304,640,331"/>
+<area shape="poly" title=" " alt="" coords="203,254,512,304,511,309,202,259"/>
+<area shape="rect" href="task__ui_8cpp.html" title=" " alt="" coords="24,304,112,331"/>
+<area shape="poly" title=" " alt="" coords="121,269,83,306,79,302,117,265"/>
+<area shape="poly" title=" " alt="" coords="215,346,215,378,209,378,209,346"/>
+<area shape="poly" title=" " alt="" coords="224,264,105,306,103,301,222,259"/>
+<area shape="rect" href="subtask__item_8cpp.html" title=" " alt="" coords="313,304,437,331"/>
+<area shape="poly" title=" " alt="" coords="305,263,359,301,355,306,302,268"/>
+<area shape="poly" title=" " alt="" coords="518,121,575,303,570,304,513,122"/>
+<area shape="rect" href="task__executor_8cpp.html" title=" " alt="" coords="569,155,698,181"/>
+<area shape="poly" title=" " alt="" coords="543,112,613,152,610,156,540,117"/>
+<area shape="poly" title=" " alt="" coords="480,119,430,156,427,152,477,114"/>
+<area shape="poly" title=" " alt="" coords="351,188,188,232,187,227,350,183"/>
+<area shape="poly" title=" " alt="" coords="432,193,448,223,462,260,465,297,461,316,451,332,426,350,385,365,289,384,288,379,384,360,423,346,447,329,456,314,460,297,457,261,443,225,427,195"/>
+<area shape="poly" title=" " alt="" coords="401,196,379,228,350,258,303,287,256,306,254,301,301,282,346,254,375,224,396,193"/>
+<area shape="poly" title=" " alt="" coords="445,188,495,227,536,267,567,302,564,305,532,271,492,231,441,192"/>
+<area shape="poly" title=" " alt="" coords="376,191,299,231,297,226,373,187"/>
+<area shape="poly" title=" " alt="" coords="409,197,395,257,381,304,376,303,390,255,404,196"/>
+<area shape="poly" title=" " alt="" coords="815,113,833,127,848,144,855,163,851,182,831,209,807,231,753,267,695,291,641,307,640,302,693,286,750,262,804,227,827,205,846,180,850,163,843,147,830,131,812,117"/>
+<area shape="rect" href="task__parser_8cpp.html" title=" " alt="" coords="722,155,836,181"/>
+<area shape="poly" title=" " alt="" coords="781,122,781,154,776,154,776,122"/>
+</map>
+</div>
+</div>
+<p><a href="task_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structSubtask.html">Subtask</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a subtask within a task.  <a href="structSubtask.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structTask.html">Task</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents a task containing multiple subtasks.  <a href="structTask.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="enum-members" name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a0beba0aab49acf65d37f2c9d8202a4c0" id="r_a0beba0aab49acf65d37f2c9d8202a4c0"><td class="memItemLeft" align="right" valign="top">enum class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0beba0aab49acf65d37f2c9d8202a4c0">SubtaskStatus</a> { <a class="el" href="#a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0">Inactive</a>
+, <a class="el" href="#a0beba0aab49acf65d37f2c9d8202a4c0ae7d31fc0602fb2ede144d18cdffd816b">Ready</a>
+, <a class="el" href="#a0beba0aab49acf65d37f2c9d8202a4c0a7b2f31b90fe1c2cc33a52233c1925df3">Queued</a>
+, <a class="el" href="#a0beba0aab49acf65d37f2c9d8202a4c0a5bda814c4aedb126839228f1a3d92f09">Running</a>
+ }</td></tr>
+<tr class="memdesc:a0beba0aab49acf65d37f2c9d8202a4c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Represents the status of a subtask.  <a href="#a0beba0aab49acf65d37f2c9d8202a4c0">More...</a><br /></td></tr>
+<tr class="separator:a0beba0aab49acf65d37f2c9d8202a4c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a id="a0beba0aab49acf65d37f2c9d8202a4c0" name="a0beba0aab49acf65d37f2c9d8202a4c0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0beba0aab49acf65d37f2c9d8202a4c0">&#9670;&#160;</a></span>SubtaskStatus</h2>
+
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">enum class <a class="el" href="#a0beba0aab49acf65d37f2c9d8202a4c0">SubtaskStatus</a></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">strong</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+
+<p>Represents the status of a subtask. </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0" name="a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0"></a>Inactive&#160;</td><td class="fielddoc"><p>The subtask is inactive (state where it can't be executed). </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a0beba0aab49acf65d37f2c9d8202a4c0ae7d31fc0602fb2ede144d18cdffd816b" name="a0beba0aab49acf65d37f2c9d8202a4c0ae7d31fc0602fb2ede144d18cdffd816b"></a>Ready&#160;</td><td class="fielddoc"><p>The subtask is ready to be executed. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a0beba0aab49acf65d37f2c9d8202a4c0a7b2f31b90fe1c2cc33a52233c1925df3" name="a0beba0aab49acf65d37f2c9d8202a4c0a7b2f31b90fe1c2cc33a52233c1925df3"></a>Queued&#160;</td><td class="fielddoc"><p>The subtask is queued for execution. </p>
+</td></tr>
+<tr><td class="fieldname"><a id="a0beba0aab49acf65d37f2c9d8202a4c0a5bda814c4aedb126839228f1a3d92f09" name="a0beba0aab49acf65d37f2c9d8202a4c0a5bda814c4aedb126839228f1a3d92f09"></a>Running&#160;</td><td class="fielddoc"><p>The subtask is currently being executed. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..f5089a42633fde2db7ca0ed288a6687f9b8a7051
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__dep__incl.map
@@ -0,0 +1,44 @@
+<map id="task.hpp" name="task.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="251,5,322,32"/>
+<area shape="rect" id="Node000002" href="$sidebar_8cpp.html" title=" " alt="" coords="29,155,118,181"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="237,26,202,32,166,42,131,59,101,82,89,99,82,118,76,155,71,154,76,117,84,96,97,78,128,54,164,37,201,27,236,21"/>
+<area shape="rect" id="Node000003" href="$sidebar_8hpp.html" title=" " alt="" coords="111,80,199,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="252,42,179,82,177,77,250,37"/>
+<area shape="rect" id="Node000004" href="$task__ui_8hpp.html" title=" " alt="" coords="99,229,187,256"/>
+<area shape="poly" id="edge27_Node000001_Node000004" title=" " alt="" coords="273,46,153,230,149,227,268,43"/>
+<area shape="rect" id="Node000009" href="$subtask__item_8hpp.html" title=" " alt="" coords="211,229,336,256"/>
+<area shape="poly" id="edge10_Node000001_Node000009" title=" " alt="" coords="288,47,277,229,272,229,282,47"/>
+<area shape="rect" id="Node000011" href="$task__executor_8hpp.html" title=" " alt="" coords="443,80,571,107"/>
+<area shape="poly" id="edge13_Node000001_Node000011" title=" " alt="" coords="338,34,469,77,467,82,337,39"/>
+<area shape="rect" id="Node000013" href="$task__manager_8hpp.html" title=" " alt="" coords="348,155,476,181"/>
+<area shape="poly" id="edge23_Node000001_Node000013" title=" " alt="" coords="309,42,403,152,399,156,305,46"/>
+<area shape="rect" id="Node000014" href="$task__parser_8hpp.html" title=" " alt="" coords="722,80,836,107"/>
+<area shape="poly" id="edge24_Node000001_Node000014" title=" " alt="" coords="338,25,722,81,721,86,338,30"/>
+<area shape="poly" id="edge3_Node000003_Node000002" title=" " alt="" coords="131,119,89,156,86,152,128,115"/>
+<area shape="poly" id="edge4_Node000003_Node000004" title=" " alt="" coords="155,122,146,229,141,229,150,122"/>
+<area shape="rect" id="Node000005" href="$learn__environment_8cpp.html" title=" " alt="" coords="136,379,288,405"/>
+<area shape="poly" id="edge5_Node000004_Node000005" title=" " alt="" coords="85,261,51,274,23,290,14,299,9,308,9,318,14,329,39,353,69,370,102,380,136,386,135,392,101,385,67,374,36,357,10,332,4,319,4,307,10,295,20,285,49,269,83,256"/>
+<area shape="rect" id="Node000006" href="$learn__environment_8hpp.html" title=" " alt="" coords="136,304,288,331"/>
+<area shape="poly" id="edge6_Node000004_Node000006" title=" " alt="" coords="167,265,202,302,198,305,163,269"/>
+<area shape="rect" id="Node000007" href="$task__manager_8cpp.html" title=" " alt="" coords="512,304,640,331"/>
+<area shape="poly" id="edge8_Node000004_Node000007" title=" " alt="" coords="203,254,512,304,511,309,202,259"/>
+<area shape="rect" id="Node000008" href="$task__ui_8cpp.html" title=" " alt="" coords="24,304,112,331"/>
+<area shape="poly" id="edge9_Node000004_Node000008" title=" " alt="" coords="121,269,83,306,79,302,117,265"/>
+<area shape="poly" id="edge7_Node000006_Node000005" title=" " alt="" coords="215,346,215,378,209,378,209,346"/>
+<area shape="poly" id="edge12_Node000009_Node000008" title=" " alt="" coords="224,264,105,306,103,301,222,259"/>
+<area shape="rect" id="Node000010" href="$subtask__item_8cpp.html" title=" " alt="" coords="313,304,437,331"/>
+<area shape="poly" id="edge11_Node000009_Node000010" title=" " alt="" coords="305,263,359,301,355,306,302,268"/>
+<area shape="poly" id="edge15_Node000011_Node000007" title=" " alt="" coords="518,121,575,303,570,304,513,122"/>
+<area shape="rect" id="Node000012" href="$task__executor_8cpp.html" title=" " alt="" coords="569,155,698,181"/>
+<area shape="poly" id="edge14_Node000011_Node000012" title=" " alt="" coords="543,112,613,152,610,156,540,117"/>
+<area shape="poly" id="edge16_Node000011_Node000013" title=" " alt="" coords="480,119,430,156,427,152,477,114"/>
+<area shape="poly" id="edge22_Node000013_Node000004" title=" " alt="" coords="351,188,188,232,187,227,350,183"/>
+<area shape="poly" id="edge17_Node000013_Node000005" title=" " alt="" coords="432,193,448,223,462,260,465,297,461,316,451,332,426,350,385,365,289,384,288,379,384,360,423,346,447,329,456,314,460,297,457,261,443,225,427,195"/>
+<area shape="poly" id="edge18_Node000013_Node000006" title=" " alt="" coords="401,196,379,228,350,258,303,287,256,306,254,301,301,282,346,254,375,224,396,193"/>
+<area shape="poly" id="edge21_Node000013_Node000007" title=" " alt="" coords="445,188,495,227,536,267,567,302,564,305,532,271,492,231,441,192"/>
+<area shape="poly" id="edge20_Node000013_Node000009" title=" " alt="" coords="376,191,299,231,297,226,373,187"/>
+<area shape="poly" id="edge19_Node000013_Node000010" title=" " alt="" coords="409,197,395,257,381,304,376,303,390,255,404,196"/>
+<area shape="poly" id="edge25_Node000014_Node000007" title=" " alt="" coords="815,113,833,127,848,144,855,163,851,182,831,209,807,231,753,267,695,291,641,307,640,302,693,286,750,262,804,227,827,205,846,180,850,163,843,147,830,131,812,117"/>
+<area shape="rect" id="Node000015" href="$task__parser_8cpp.html" title=" " alt="" coords="722,155,836,181"/>
+<area shape="poly" id="edge26_Node000014_Node000015" title=" " alt="" coords="781,122,781,154,776,154,776,122"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..989a7eb7d438f76ee62fb93e5c8b42fae1201173
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+b4d164a21f309e82dc0e01df4e6c0ec1
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..3105923b15f184ae3c6165eff0474bf24b01f242
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..a1a5032f278f25cb45898e7f927f9e307b3c75c6
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__incl.map
@@ -0,0 +1,11 @@
+<map id="task.hpp" name="task.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="150,5,222,32"/>
+<area shape="rect" id="Node000002" title=" " alt="" coords="5,80,71,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="161,35,79,75,76,70,159,30"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="94,80,163,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="178,34,150,69,146,66,174,31"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="187,80,300,107"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="198,31,226,66,222,69,194,34"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="324,80,429,107"/>
+<area shape="poly" id="edge4_Node000001_Node000005" title=" " alt="" coords="220,30,330,72,328,77,218,35"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..a136d2c972243d12358ffe73fb4d161353458242
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__incl.md5
@@ -0,0 +1 @@
+69b89229286bf31c6dddd9fb6d8f5f31
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd5a779edc1437f2558437320dae5def92d6fc1c
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..dde57367fb7e8b943063533595ed9cc3888bf84f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task_8hpp_source.html
@@ -0,0 +1,190 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">task.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="task_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef TASK_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define TASK_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &lt;QString&gt;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include &lt;QVector&gt;</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="preprocessor">#include &lt;QSharedPointer&gt;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;QWeakPointer&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="comment">// Forward declaration of Task struct</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="keyword">struct </span><a class="code hl_struct" href="structTask.html">Task</a>;</div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span> </div>
+<div class="foldopen" id="foldopen00016" data-start="{" data-end="};">
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"><a class="line" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0">   16</a></span><span class="keyword">enum class</span> <a class="code hl_enumeration" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0">SubtaskStatus</a> {</div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span>    <a class="code hl_enumvalue" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0">Inactive</a>, </div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span>    <a class="code hl_enumvalue" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0ae7d31fc0602fb2ede144d18cdffd816b">Ready</a>, </div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span>    <a class="code hl_enumvalue" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a7b2f31b90fe1c2cc33a52233c1925df3">Queued</a>, </div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span>    <a class="code hl_enumvalue" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a5bda814c4aedb126839228f1a3d92f09">Running</a> </div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span>};</div>
+</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="foldopen" id="foldopen00031" data-start="{" data-end="};">
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"><a class="line" href="structSubtask.html">   31</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structSubtask.html">Subtask</a> {</div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="structSubtask.html#a4fc46ff8e54ab67641df5ff45e7e0cb4">   32</a></span>    QString <a class="code hl_variable" href="structSubtask.html#a4fc46ff8e54ab67641df5ff45e7e0cb4">title</a>; </div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="structSubtask.html#a9b2edd425425878f6e57a2f213b1211a">   33</a></span>    QString <a class="code hl_variable" href="structSubtask.html#a9b2edd425425878f6e57a2f213b1211a">description</a>; </div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="structSubtask.html#a905ed579cc13759a257c37d261141281">   34</a></span>    QString <a class="code hl_variable" href="structSubtask.html#a905ed579cc13759a257c37d261141281">file</a>; </div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="structSubtask.html#adc3ab0bdda7c565666095845a3e4567f">   35</a></span>    QString <a class="code hl_variable" href="structSubtask.html#adc3ab0bdda7c565666095845a3e4567f">filePath</a>; </div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="structSubtask.html#ad6350ae5d46df3d006f4f0787915ea9f">   36</a></span>    QString <a class="code hl_variable" href="structSubtask.html#ad6350ae5d46df3d006f4f0787915ea9f">solutionFilePath</a>; </div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"><a class="line" href="structSubtask.html#ae73daaeeae0fa09de92ef428be2fdab3">   37</a></span>    QString <a class="code hl_variable" href="structSubtask.html#ae73daaeeae0fa09de92ef428be2fdab3">evaluationFilePath</a>; </div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span>    <span class="comment">// optional field</span></div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"><a class="line" href="structSubtask.html#a69b5b90686d9e1c75b0f071a7b9dc31b">   40</a></span>    <span class="keywordtype">int</span> <a class="code hl_variable" href="structSubtask.html#a69b5b90686d9e1c75b0f071a7b9dc31b">timeoutSeconds</a> = 60; </div>
+<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="structSubtask.html#ae0c283c25316796864e9ef0d766acb60">   41</a></span>    <span class="keywordtype">bool</span> <a class="code hl_variable" href="structSubtask.html#ae0c283c25316796864e9ef0d766acb60">parallelizedEvaluationRequired</a> = <span class="keyword">false</span>; </div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="structSubtask.html#ae869bad678ab4835b24aeb56176c21aa">   42</a></span>    <span class="keywordtype">bool</span> <a class="code hl_variable" href="structSubtask.html#ae869bad678ab4835b24aeb56176c21aa">reset_robot_before_executing</a> = <span class="keyword">true</span>; </div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>    <span class="comment">// internal fields</span></div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="structSubtask.html#a4cdfbab855cd65277e17c8975bb0d730">   45</a></span>    QWeakPointer&lt;Task&gt; <a class="code hl_variable" href="structSubtask.html#a4cdfbab855cd65277e17c8975bb0d730">parentTask</a>; </div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="structSubtask.html#a293ddda988cb5fe92fcb5e5189b86850">   46</a></span>    <a class="code hl_enumeration" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0">SubtaskStatus</a> <a class="code hl_variable" href="structSubtask.html#a293ddda988cb5fe92fcb5e5189b86850">status</a> = <a class="code hl_enumvalue" href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0">SubtaskStatus::Inactive</a>; </div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span> </div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"><a class="line" href="structSubtask.html#a0e3d8e77e26cdb58b2e9faa8ec2e1707">   48</a></span>    <span class="keywordtype">bool</span> <a class="code hl_variable" href="structSubtask.html#a0e3d8e77e26cdb58b2e9faa8ec2e1707">hasBeenExecuted</a> = <span class="keyword">false</span>; </div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="structSubtask.html#ab1e1bff66e7464efa54419b36006f1a8">   49</a></span>    <span class="keywordtype">bool</span> <a class="code hl_variable" href="structSubtask.html#ab1e1bff66e7464efa54419b36006f1a8">lastExecutionFailed</a> = <span class="keyword">false</span>; </div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="structSubtask.html#a2c4bcefd1e42773c5e23abd9ba0b30f2">   50</a></span>    QString <a class="code hl_variable" href="structSubtask.html#a2c4bcefd1e42773c5e23abd9ba0b30f2">lastExecutionError</a>; </div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span>};</div>
+</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span> </div>
+<div class="foldopen" id="foldopen00061" data-start="{" data-end="};">
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="structTask.html">   61</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structTask.html">Task</a> {</div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="structTask.html#a0ab070dbbe73ff2a4306fe20ab75400f">   62</a></span>    QString <a class="code hl_variable" href="structTask.html#a0ab070dbbe73ff2a4306fe20ab75400f">title</a>; </div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="structTask.html#a470ace63434687116684f003a27dc439">   63</a></span>    QString <a class="code hl_variable" href="structTask.html#a470ace63434687116684f003a27dc439">folder</a>; </div>
+<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="structTask.html#a92a16f5ec66f7511f0d0ce0fd759bf9e">   64</a></span>    QString <a class="code hl_variable" href="structTask.html#a92a16f5ec66f7511f0d0ce0fd759bf9e">difficulty</a>; </div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="structTask.html#a8c37303702dbbb22f7430a73f9a3ed08">   65</a></span>    QString <a class="code hl_variable" href="structTask.html#a8c37303702dbbb22f7430a73f9a3ed08">topic</a>; </div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="structTask.html#a7486a61c7f0eb8a952260ffe9c2a1af3">   66</a></span>    QVector&lt;Subtask&gt; <a class="code hl_variable" href="structTask.html#a7486a61c7f0eb8a952260ffe9c2a1af3">subtasks</a>; </div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span>    <span class="comment">// optional field</span></div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="structTask.html#add2905e57d8e714693b24cc8a9148a82">   69</a></span>    <span class="keywordtype">bool</span> <a class="code hl_variable" href="structTask.html#add2905e57d8e714693b24cc8a9148a82">previousSubtasksRequired</a> = <span class="keyword">false</span>; </div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span> </div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>    <span class="comment">// internal fields</span></div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"><a class="line" href="structTask.html#a6fe956adc87191ee794c5bccf68c292b">   72</a></span>    QString <a class="code hl_variable" href="structTask.html#a6fe956adc87191ee794c5bccf68c292b">difficultyHexColor</a>; </div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span>};</div>
+</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span> </div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span><span class="preprocessor">#endif </span><span class="comment">// TASK_HPP</span></div>
+<div class="ttc" id="astructSubtask_html"><div class="ttname"><a href="structSubtask.html">Subtask</a></div><div class="ttdoc">Represents a subtask within a task.</div><div class="ttdef"><b>Definition</b> task.hpp:31</div></div>
+<div class="ttc" id="astructSubtask_html_a0e3d8e77e26cdb58b2e9faa8ec2e1707"><div class="ttname"><a href="structSubtask.html#a0e3d8e77e26cdb58b2e9faa8ec2e1707">Subtask::hasBeenExecuted</a></div><div class="ttdeci">bool hasBeenExecuted</div><div class="ttdoc">Whether the subtask has been executed at least once.</div><div class="ttdef"><b>Definition</b> task.hpp:48</div></div>
+<div class="ttc" id="astructSubtask_html_a293ddda988cb5fe92fcb5e5189b86850"><div class="ttname"><a href="structSubtask.html#a293ddda988cb5fe92fcb5e5189b86850">Subtask::status</a></div><div class="ttdeci">SubtaskStatus status</div><div class="ttdoc">The status of the subtask.</div><div class="ttdef"><b>Definition</b> task.hpp:46</div></div>
+<div class="ttc" id="astructSubtask_html_a2c4bcefd1e42773c5e23abd9ba0b30f2"><div class="ttname"><a href="structSubtask.html#a2c4bcefd1e42773c5e23abd9ba0b30f2">Subtask::lastExecutionError</a></div><div class="ttdeci">QString lastExecutionError</div><div class="ttdoc">The error message from the last execution of the subtask.</div><div class="ttdef"><b>Definition</b> task.hpp:50</div></div>
+<div class="ttc" id="astructSubtask_html_a4cdfbab855cd65277e17c8975bb0d730"><div class="ttname"><a href="structSubtask.html#a4cdfbab855cd65277e17c8975bb0d730">Subtask::parentTask</a></div><div class="ttdeci">QWeakPointer&lt; Task &gt; parentTask</div><div class="ttdoc">Weak pointer to the parent task.</div><div class="ttdef"><b>Definition</b> task.hpp:45</div></div>
+<div class="ttc" id="astructSubtask_html_a4fc46ff8e54ab67641df5ff45e7e0cb4"><div class="ttname"><a href="structSubtask.html#a4fc46ff8e54ab67641df5ff45e7e0cb4">Subtask::title</a></div><div class="ttdeci">QString title</div><div class="ttdoc">The title of the subtask.</div><div class="ttdef"><b>Definition</b> task.hpp:32</div></div>
+<div class="ttc" id="astructSubtask_html_a69b5b90686d9e1c75b0f071a7b9dc31b"><div class="ttname"><a href="structSubtask.html#a69b5b90686d9e1c75b0f071a7b9dc31b">Subtask::timeoutSeconds</a></div><div class="ttdeci">int timeoutSeconds</div><div class="ttdoc">The timeout for the subtask execution in seconds.</div><div class="ttdef"><b>Definition</b> task.hpp:40</div></div>
+<div class="ttc" id="astructSubtask_html_a905ed579cc13759a257c37d261141281"><div class="ttname"><a href="structSubtask.html#a905ed579cc13759a257c37d261141281">Subtask::file</a></div><div class="ttdeci">QString file</div><div class="ttdoc">The file name of the subtask.</div><div class="ttdef"><b>Definition</b> task.hpp:34</div></div>
+<div class="ttc" id="astructSubtask_html_a9b2edd425425878f6e57a2f213b1211a"><div class="ttname"><a href="structSubtask.html#a9b2edd425425878f6e57a2f213b1211a">Subtask::description</a></div><div class="ttdeci">QString description</div><div class="ttdoc">The description of the subtask.</div><div class="ttdef"><b>Definition</b> task.hpp:33</div></div>
+<div class="ttc" id="astructSubtask_html_ab1e1bff66e7464efa54419b36006f1a8"><div class="ttname"><a href="structSubtask.html#ab1e1bff66e7464efa54419b36006f1a8">Subtask::lastExecutionFailed</a></div><div class="ttdeci">bool lastExecutionFailed</div><div class="ttdoc">Whether the subtask has been executed at least once.</div><div class="ttdef"><b>Definition</b> task.hpp:49</div></div>
+<div class="ttc" id="astructSubtask_html_ad6350ae5d46df3d006f4f0787915ea9f"><div class="ttname"><a href="structSubtask.html#ad6350ae5d46df3d006f4f0787915ea9f">Subtask::solutionFilePath</a></div><div class="ttdeci">QString solutionFilePath</div><div class="ttdoc">The file path to the solution of the subtask.</div><div class="ttdef"><b>Definition</b> task.hpp:36</div></div>
+<div class="ttc" id="astructSubtask_html_adc3ab0bdda7c565666095845a3e4567f"><div class="ttname"><a href="structSubtask.html#adc3ab0bdda7c565666095845a3e4567f">Subtask::filePath</a></div><div class="ttdeci">QString filePath</div><div class="ttdoc">The file path of the subtask.</div><div class="ttdef"><b>Definition</b> task.hpp:35</div></div>
+<div class="ttc" id="astructSubtask_html_ae0c283c25316796864e9ef0d766acb60"><div class="ttname"><a href="structSubtask.html#ae0c283c25316796864e9ef0d766acb60">Subtask::parallelizedEvaluationRequired</a></div><div class="ttdeci">bool parallelizedEvaluationRequired</div><div class="ttdoc">Whether parallelized evaluation is required.</div><div class="ttdef"><b>Definition</b> task.hpp:41</div></div>
+<div class="ttc" id="astructSubtask_html_ae73daaeeae0fa09de92ef428be2fdab3"><div class="ttname"><a href="structSubtask.html#ae73daaeeae0fa09de92ef428be2fdab3">Subtask::evaluationFilePath</a></div><div class="ttdeci">QString evaluationFilePath</div><div class="ttdoc">The file path to the evaluation script of the subtask.</div><div class="ttdef"><b>Definition</b> task.hpp:37</div></div>
+<div class="ttc" id="astructSubtask_html_ae869bad678ab4835b24aeb56176c21aa"><div class="ttname"><a href="structSubtask.html#ae869bad678ab4835b24aeb56176c21aa">Subtask::reset_robot_before_executing</a></div><div class="ttdeci">bool reset_robot_before_executing</div><div class="ttdoc">Whether to reset the robot before executing the subtask.</div><div class="ttdef"><b>Definition</b> task.hpp:42</div></div>
+<div class="ttc" id="astructTask_html"><div class="ttname"><a href="structTask.html">Task</a></div><div class="ttdoc">Represents a task containing multiple subtasks.</div><div class="ttdef"><b>Definition</b> task.hpp:61</div></div>
+<div class="ttc" id="astructTask_html_a0ab070dbbe73ff2a4306fe20ab75400f"><div class="ttname"><a href="structTask.html#a0ab070dbbe73ff2a4306fe20ab75400f">Task::title</a></div><div class="ttdeci">QString title</div><div class="ttdoc">The title of the task.</div><div class="ttdef"><b>Definition</b> task.hpp:62</div></div>
+<div class="ttc" id="astructTask_html_a470ace63434687116684f003a27dc439"><div class="ttname"><a href="structTask.html#a470ace63434687116684f003a27dc439">Task::folder</a></div><div class="ttdeci">QString folder</div><div class="ttdoc">The folder path of the task.</div><div class="ttdef"><b>Definition</b> task.hpp:63</div></div>
+<div class="ttc" id="astructTask_html_a6fe956adc87191ee794c5bccf68c292b"><div class="ttname"><a href="structTask.html#a6fe956adc87191ee794c5bccf68c292b">Task::difficultyHexColor</a></div><div class="ttdeci">QString difficultyHexColor</div><div class="ttdoc">The hex color associated with the difficulty level.</div><div class="ttdef"><b>Definition</b> task.hpp:72</div></div>
+<div class="ttc" id="astructTask_html_a7486a61c7f0eb8a952260ffe9c2a1af3"><div class="ttname"><a href="structTask.html#a7486a61c7f0eb8a952260ffe9c2a1af3">Task::subtasks</a></div><div class="ttdeci">QVector&lt; Subtask &gt; subtasks</div><div class="ttdoc">The list of subtasks within the task.</div><div class="ttdef"><b>Definition</b> task.hpp:66</div></div>
+<div class="ttc" id="astructTask_html_a8c37303702dbbb22f7430a73f9a3ed08"><div class="ttname"><a href="structTask.html#a8c37303702dbbb22f7430a73f9a3ed08">Task::topic</a></div><div class="ttdeci">QString topic</div><div class="ttdoc">The topic of the task.</div><div class="ttdef"><b>Definition</b> task.hpp:65</div></div>
+<div class="ttc" id="astructTask_html_a92a16f5ec66f7511f0d0ce0fd759bf9e"><div class="ttname"><a href="structTask.html#a92a16f5ec66f7511f0d0ce0fd759bf9e">Task::difficulty</a></div><div class="ttdeci">QString difficulty</div><div class="ttdoc">The difficulty level of the task.</div><div class="ttdef"><b>Definition</b> task.hpp:64</div></div>
+<div class="ttc" id="astructTask_html_add2905e57d8e714693b24cc8a9148a82"><div class="ttname"><a href="structTask.html#add2905e57d8e714693b24cc8a9148a82">Task::previousSubtasksRequired</a></div><div class="ttdeci">bool previousSubtasksRequired</div><div class="ttdoc">Whether previous subtasks are required.</div><div class="ttdef"><b>Definition</b> task.hpp:69</div></div>
+<div class="ttc" id="atask_8hpp_html_a0beba0aab49acf65d37f2c9d8202a4c0"><div class="ttname"><a href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0">SubtaskStatus</a></div><div class="ttdeci">SubtaskStatus</div><div class="ttdoc">Represents the status of a subtask.</div><div class="ttdef"><b>Definition</b> task.hpp:16</div></div>
+<div class="ttc" id="atask_8hpp_html_a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0"><div class="ttname"><a href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0">SubtaskStatus::Inactive</a></div><div class="ttdeci">@ Inactive</div><div class="ttdoc">The subtask is inactive (state where it can't be executed).</div></div>
+<div class="ttc" id="atask_8hpp_html_a0beba0aab49acf65d37f2c9d8202a4c0a5bda814c4aedb126839228f1a3d92f09"><div class="ttname"><a href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a5bda814c4aedb126839228f1a3d92f09">SubtaskStatus::Running</a></div><div class="ttdeci">@ Running</div><div class="ttdoc">The subtask is currently being executed.</div></div>
+<div class="ttc" id="atask_8hpp_html_a0beba0aab49acf65d37f2c9d8202a4c0a7b2f31b90fe1c2cc33a52233c1925df3"><div class="ttname"><a href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0a7b2f31b90fe1c2cc33a52233c1925df3">SubtaskStatus::Queued</a></div><div class="ttdeci">@ Queued</div><div class="ttdoc">The subtask is queued for execution.</div></div>
+<div class="ttc" id="atask_8hpp_html_a0beba0aab49acf65d37f2c9d8202a4c0ae7d31fc0602fb2ede144d18cdffd816b"><div class="ttname"><a href="task_8hpp.html#a0beba0aab49acf65d37f2c9d8202a4c0ae7d31fc0602fb2ede144d18cdffd816b">SubtaskStatus::Ready</a></div><div class="ttdeci">@ Ready</div><div class="ttdoc">The subtask is ready to be executed.</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8cpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..130b874d02e17e8056fe29965f2cddc0c7b259d8
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8cpp.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task_executor.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">task_executor.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="task__executor_8hpp_source.html">learn_environment/task_executor.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="script__worker_8hpp_source.html">learn_environment/script_worker.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="folder__structure__constants_8hpp_source.html">learn_environment/folder_structure_constants.hpp</a>&quot;</code><br />
+<code>#include &lt;QThread&gt;</code><br />
+<code>#include &lt;QFile&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for task_executor.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="task__executor_8cpp__incl.png" border="0" usemap="#atask__executor_8cpp" alt=""/></div>
+<map name="atask__executor_8cpp" id="atask__executor_8cpp">
+<area shape="rect" title=" " alt="" coords="807,5,936,32"/>
+<area shape="rect" href="task__executor_8hpp.html" title=" " alt="" coords="190,80,347,123"/>
+<area shape="poly" title=" " alt="" coords="807,31,363,90,362,85,806,26"/>
+<area shape="rect" href="script__worker_8hpp.html" title=" " alt="" coords="495,80,658,123"/>
+<area shape="poly" title=" " alt="" coords="826,35,668,78,667,73,825,30"/>
+<area shape="rect" href="folder__structure__constants_8hpp.html" title=" " alt="" coords="787,80,956,123"/>
+<area shape="poly" title=" " alt="" coords="874,32,874,65,869,65,869,32"/>
+<area shape="rect" title=" " alt="" coords="980,88,1051,115"/>
+<area shape="poly" title=" " alt="" coords="895,30,981,78,979,83,893,35"/>
+<area shape="rect" title=" " alt="" coords="1074,88,1127,115"/>
+<area shape="poly" title=" " alt="" coords="921,30,990,50,1064,78,1066,78,1064,83,1062,82,988,55,920,35"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="160,171,231,197"/>
+<area shape="poly" title=" " alt="" coords="252,125,219,161,215,157,248,121"/>
+<area shape="rect" title=" " alt="" coords="364,245,429,272"/>
+<area shape="poly" title=" " alt="" coords="274,122,283,159,303,196,326,218,354,236,351,240,323,223,299,199,278,161,269,124"/>
+<area shape="rect" title=" " alt="" coords="5,245,119,272"/>
+<area shape="poly" title=" " alt="" coords="227,126,188,147,149,173,113,204,84,235,80,232,110,200,146,169,185,142,224,121"/>
+<area shape="rect" title=" " alt="" coords="557,245,626,272"/>
+<area shape="poly" title=" " alt="" coords="293,121,339,158,397,195,472,225,542,245,541,250,470,230,394,200,336,163,289,125"/>
+<area shape="poly" title=" " alt="" coords="231,195,350,238,348,243,230,200"/>
+<area shape="rect" title=" " alt="" coords="272,245,340,272"/>
+<area shape="poly" title=" " alt="" coords="216,196,276,234,273,239,213,200"/>
+<area shape="poly" title=" " alt="" coords="173,200,100,240,97,235,171,196"/>
+<area shape="rect" title=" " alt="" coords="143,245,248,272"/>
+<area shape="poly" title=" " alt="" coords="198,198,198,230,193,230,193,198"/>
+<area shape="poly" title=" " alt="" coords="495,115,468,123,441,135,417,151,398,172,391,185,389,200,391,230,386,231,383,200,386,184,393,169,413,147,438,130,466,118,494,110"/>
+<area shape="poly" title=" " alt="" coords="581,123,591,230,586,230,576,123"/>
+<area shape="rect" title=" " alt="" coords="484,171,563,197"/>
+<area shape="poly" title=" " alt="" coords="565,125,542,159,538,156,561,122"/>
+<area shape="rect" title=" " alt="" coords="408,171,460,197"/>
+<area shape="poly" title=" " alt="" coords="541,126,471,165,468,160,539,121"/>
+<area shape="rect" href="notebook__converter_8hpp.html" title=" " alt="" coords="688,171,849,197"/>
+<area shape="poly" title=" " alt="" coords="627,121,726,162,724,167,625,126"/>
+<area shape="poly" title=" " alt="" coords="704,201,445,251,444,245,703,195"/>
+<area shape="poly" title=" " alt="" coords="739,200,637,242,635,237,737,195"/>
+<area shape="rect" title=" " alt="" coords="918,245,966,272"/>
+<area shape="poly" title=" " alt="" coords="800,195,904,239,902,244,798,200"/>
+<area shape="rect" title=" " alt="" coords="651,245,740,272"/>
+<area shape="poly" title=" " alt="" coords="758,200,721,236,717,232,754,196"/>
+<area shape="rect" title=" " alt="" coords="764,245,894,272"/>
+<area shape="poly" title=" " alt="" coords="781,196,811,232,807,235,777,200"/>
+<area shape="poly" title=" " alt="" coords="809,126,445,244,443,239,807,121"/>
+<area shape="rect" title=" " alt="" coords="873,171,976,197"/>
+<area shape="poly" title=" " alt="" coords="887,122,910,156,906,159,883,125"/>
+<area shape="rect" title=" " alt="" coords="1000,171,1073,197"/>
+<area shape="poly" title=" " alt="" coords="915,121,998,161,996,166,913,126"/>
+<area shape="rect" title=" " alt="" coords="1097,171,1166,197"/>
+<area shape="poly" title=" " alt="" coords="939,121,1083,165,1081,170,938,126"/>
+</map>
+</div>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8cpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8cpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..1eae1e8d36489754b0eb5ee7ab3573468a61cbee
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8cpp__incl.map
@@ -0,0 +1,50 @@
+<map id="task_executor.cpp" name="task_executor.cpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="807,5,936,32"/>
+<area shape="rect" id="Node000002" href="$task__executor_8hpp.html" title=" " alt="" coords="190,80,347,123"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="807,31,363,90,362,85,806,26"/>
+<area shape="rect" id="Node000009" href="$script__worker_8hpp.html" title=" " alt="" coords="495,80,658,123"/>
+<area shape="poly" id="edge10_Node000001_Node000009" title=" " alt="" coords="826,35,668,78,667,73,825,30"/>
+<area shape="rect" id="Node000016" href="$folder__structure__constants_8hpp.html" title=" " alt="" coords="787,80,956,123"/>
+<area shape="poly" id="edge21_Node000001_Node000016" title=" " alt="" coords="874,32,874,65,869,65,869,32"/>
+<area shape="rect" id="Node000020" title=" " alt="" coords="980,88,1051,115"/>
+<area shape="poly" id="edge26_Node000001_Node000020" title=" " alt="" coords="895,30,981,78,979,83,893,35"/>
+<area shape="rect" id="Node000021" title=" " alt="" coords="1074,88,1127,115"/>
+<area shape="poly" id="edge27_Node000001_Node000021" title=" " alt="" coords="921,30,990,50,1064,78,1066,78,1064,83,1062,82,988,55,920,35"/>
+<area shape="rect" id="Node000003" href="$task_8hpp.html" title=" " alt="" coords="160,171,231,197"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="252,125,219,161,215,157,248,121"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="364,245,429,272"/>
+<area shape="poly" id="edge8_Node000002_Node000004" title=" " alt="" coords="274,122,283,159,303,196,326,218,354,236,351,240,323,223,299,199,278,161,269,124"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="5,245,119,272"/>
+<area shape="poly" id="edge9_Node000002_Node000006" title=" " alt="" coords="227,126,188,147,149,173,113,204,84,235,80,232,110,200,146,169,185,142,224,121"/>
+<area shape="rect" id="Node000008" title=" " alt="" coords="557,245,626,272"/>
+<area shape="poly" id="edge7_Node000002_Node000008" title=" " alt="" coords="293,121,339,158,397,195,472,225,542,245,541,250,470,230,394,200,336,163,289,125"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="231,195,350,238,348,243,230,200"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="272,245,340,272"/>
+<area shape="poly" id="edge4_Node000003_Node000005" title=" " alt="" coords="216,196,276,234,273,239,213,200"/>
+<area shape="poly" id="edge5_Node000003_Node000006" title=" " alt="" coords="173,200,100,240,97,235,171,196"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="143,245,248,272"/>
+<area shape="poly" id="edge6_Node000003_Node000007" title=" " alt="" coords="198,198,198,230,193,230,193,198"/>
+<area shape="poly" id="edge12_Node000009_Node000004" title=" " alt="" coords="495,115,468,123,441,135,417,151,398,172,391,185,389,200,391,230,386,231,383,200,386,184,393,169,413,147,438,130,466,118,494,110"/>
+<area shape="poly" id="edge11_Node000009_Node000008" title=" " alt="" coords="581,123,591,230,586,230,576,123"/>
+<area shape="rect" id="Node000010" title=" " alt="" coords="484,171,563,197"/>
+<area shape="poly" id="edge13_Node000009_Node000010" title=" " alt="" coords="565,125,542,159,538,156,561,122"/>
+<area shape="rect" id="Node000011" title=" " alt="" coords="408,171,460,197"/>
+<area shape="poly" id="edge14_Node000009_Node000011" title=" " alt="" coords="541,126,471,165,468,160,539,121"/>
+<area shape="rect" id="Node000012" href="$notebook__converter_8hpp.html" title=" " alt="" coords="688,171,849,197"/>
+<area shape="poly" id="edge15_Node000009_Node000012" title=" " alt="" coords="627,121,726,162,724,167,625,126"/>
+<area shape="poly" id="edge17_Node000012_Node000004" title=" " alt="" coords="704,201,445,251,444,245,703,195"/>
+<area shape="poly" id="edge16_Node000012_Node000008" title=" " alt="" coords="739,200,637,242,635,237,737,195"/>
+<area shape="rect" id="Node000013" title=" " alt="" coords="918,245,966,272"/>
+<area shape="poly" id="edge18_Node000012_Node000013" title=" " alt="" coords="800,195,904,239,902,244,798,200"/>
+<area shape="rect" id="Node000014" title=" " alt="" coords="651,245,740,272"/>
+<area shape="poly" id="edge19_Node000012_Node000014" title=" " alt="" coords="758,200,721,236,717,232,754,196"/>
+<area shape="rect" id="Node000015" title=" " alt="" coords="764,245,894,272"/>
+<area shape="poly" id="edge20_Node000012_Node000015" title=" " alt="" coords="781,196,811,232,807,235,777,200"/>
+<area shape="poly" id="edge22_Node000016_Node000004" title=" " alt="" coords="809,126,445,244,443,239,807,121"/>
+<area shape="rect" id="Node000017" title=" " alt="" coords="873,171,976,197"/>
+<area shape="poly" id="edge23_Node000016_Node000017" title=" " alt="" coords="887,122,910,156,906,159,883,125"/>
+<area shape="rect" id="Node000018" title=" " alt="" coords="1000,171,1073,197"/>
+<area shape="poly" id="edge24_Node000016_Node000018" title=" " alt="" coords="915,121,998,161,996,166,913,126"/>
+<area shape="rect" id="Node000019" title=" " alt="" coords="1097,171,1166,197"/>
+<area shape="poly" id="edge25_Node000016_Node000019" title=" " alt="" coords="939,121,1083,165,1081,170,938,126"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..ae3e8790a25172664f949050f86aa75a0b457deb
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8cpp__incl.md5
@@ -0,0 +1 @@
+62f205e2cb3eeee5674ed6fc377e6e07
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8cpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8cpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..c86759a88f61abf02408b63de89ac86ebd52c532
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8cpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..69f3734c2efecdf90fb86d2b521c1ca9cf59e008
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task_executor.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">task_executor.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="task_8hpp_source.html">task.hpp</a>&quot;</code><br />
+<code>#include &lt;QObject&gt;</code><br />
+<code>#include &lt;QString&gt;</code><br />
+<code>#include &lt;QSharedPointer&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for task_executor.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="task__executor_8hpp__incl.png" border="0" usemap="#atask__executor_8hpp" alt=""/></div>
+<map name="atask__executor_8hpp" id="atask__executor_8hpp">
+<area shape="rect" title=" " alt="" coords="155,5,284,32"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="148,80,219,107"/>
+<area shape="poly" title=" " alt="" coords="215,34,199,67,194,65,211,31"/>
+<area shape="rect" title=" " alt="" coords="5,155,71,181"/>
+<area shape="poly" title=" " alt="" coords="202,35,137,82,63,146,60,142,134,78,199,30"/>
+<area shape="rect" title=" " alt="" coords="316,155,429,181"/>
+<area shape="poly" title=" " alt="" coords="228,31,251,66,284,105,310,126,337,144,334,149,307,131,280,109,247,69,224,34"/>
+<area shape="rect" title=" " alt="" coords="294,80,363,107"/>
+<area shape="poly" title=" " alt="" coords="240,30,299,69,296,74,237,35"/>
+<area shape="poly" title=" " alt="" coords="159,110,78,150,76,145,157,105"/>
+<area shape="rect" title=" " alt="" coords="94,155,163,181"/>
+<area shape="poly" title=" " alt="" coords="176,109,149,144,145,140,172,106"/>
+<area shape="poly" title=" " alt="" coords="217,105,326,146,324,151,215,110"/>
+<area shape="rect" title=" " alt="" coords="187,155,292,181"/>
+<area shape="poly" title=" " alt="" coords="195,106,223,141,218,144,191,109"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="task__executor_8hpp__dep__incl.png" border="0" usemap="#atask__executor_8hppdep" alt=""/></div>
+<map name="atask__executor_8hppdep" id="atask__executor_8hppdep">
+<area shape="rect" title=" " alt="" coords="107,5,235,32"/>
+<area shape="rect" href="task__executor_8cpp.html" title=" " alt="" coords="5,80,134,107"/>
+<area shape="poly" title=" " alt="" coords="142,44,89,82,86,77,139,39"/>
+<area shape="rect" href="task__manager_8cpp.html" title=" " alt="" coords="91,229,219,256"/>
+<area shape="poly" title=" " alt="" coords="172,48,158,229,153,229,166,47"/>
+<area shape="rect" href="task__manager_8hpp.html" title=" " alt="" coords="336,80,464,107"/>
+<area shape="poly" title=" " alt="" coords="226,35,361,77,359,82,224,40"/>
+<area shape="poly" title=" " alt="" coords="368,117,177,231,174,227,365,112"/>
+<area shape="rect" href="learn__environment_8cpp.html" title=" " alt="" coords="356,304,508,331"/>
+<area shape="poly" title=" " alt="" coords="480,97,546,109,616,132,648,149,678,171,702,197,721,228,726,243,721,258,707,269,687,280,633,295,570,306,509,313,509,308,570,301,632,290,685,275,704,265,717,254,721,243,716,230,698,200,674,175,645,154,614,137,545,114,479,102"/>
+<area shape="rect" href="learn__environment_8hpp.html" title=" " alt="" coords="243,229,395,256"/>
+<area shape="poly" title=" " alt="" coords="376,119,346,156,331,195,323,229,318,228,326,193,342,153,372,116"/>
+<area shape="rect" href="subtask__item_8cpp.html" title=" " alt="" coords="582,229,706,256"/>
+<area shape="poly" title=" " alt="" coords="480,99,546,117,578,132,607,153,622,170,633,191,645,228,639,230,628,193,618,173,604,157,576,137,544,122,479,104"/>
+<area shape="rect" href="subtask__item_8hpp.html" title=" " alt="" coords="469,155,593,181"/>
+<area shape="poly" title=" " alt="" coords="438,112,509,152,507,156,435,117"/>
+<area shape="rect" href="task__ui_8hpp.html" title=" " alt="" coords="356,155,444,181"/>
+<area shape="poly" title=" " alt="" coords="403,122,403,154,398,154,398,122"/>
+<area shape="poly" title=" " alt="" coords="353,262,414,301,411,306,350,267"/>
+<area shape="poly" title=" " alt="" coords="565,188,626,226,623,231,562,192"/>
+<area shape="rect" href="task__ui_8cpp.html" title=" " alt="" coords="469,229,558,256"/>
+<area shape="poly" title=" " alt="" coords="527,197,519,230,514,228,522,196"/>
+<area shape="poly" title=" " alt="" coords="344,189,199,231,197,226,342,184"/>
+<area shape="poly" title=" " alt="" coords="409,196,432,303,427,304,403,197"/>
+<area shape="poly" title=" " alt="" coords="377,194,335,231,331,227,373,190"/>
+<area shape="poly" title=" " alt="" coords="434,188,495,226,492,231,431,192"/>
+</map>
+</div>
+</div>
+<p><a href="task__executor_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTaskExecutor.html">TaskExecutor</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes tasks and manages their execution state.  <a href="classTaskExecutor.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..bd2a44337c51011e29339f0effba2325237e7f6e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__dep__incl.map
@@ -0,0 +1,28 @@
+<map id="task_executor.hpp" name="task_executor.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="107,5,235,32"/>
+<area shape="rect" id="Node000002" href="$task__executor_8cpp.html" title=" " alt="" coords="5,80,134,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="142,44,89,82,86,77,139,39"/>
+<area shape="rect" id="Node000003" href="$task__manager_8cpp.html" title=" " alt="" coords="91,229,219,256"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="172,48,158,229,153,229,166,47"/>
+<area shape="rect" id="Node000004" href="$task__manager_8hpp.html" title=" " alt="" coords="336,80,464,107"/>
+<area shape="poly" id="edge3_Node000001_Node000004" title=" " alt="" coords="226,35,361,77,359,82,224,40"/>
+<area shape="poly" id="edge11_Node000004_Node000003" title=" " alt="" coords="368,117,177,231,174,227,365,112"/>
+<area shape="rect" id="Node000005" href="$learn__environment_8cpp.html" title=" " alt="" coords="356,304,508,331"/>
+<area shape="poly" id="edge4_Node000004_Node000005" title=" " alt="" coords="480,97,546,109,616,132,648,149,678,171,702,197,721,228,726,243,721,258,707,269,687,280,633,295,570,306,509,313,509,308,570,301,632,290,685,275,704,265,717,254,721,243,716,230,698,200,674,175,645,154,614,137,545,114,479,102"/>
+<area shape="rect" id="Node000006" href="$learn__environment_8hpp.html" title=" " alt="" coords="243,229,395,256"/>
+<area shape="poly" id="edge5_Node000004_Node000006" title=" " alt="" coords="376,119,346,156,331,195,323,229,318,228,326,193,342,153,372,116"/>
+<area shape="rect" id="Node000007" href="$subtask__item_8cpp.html" title=" " alt="" coords="582,229,706,256"/>
+<area shape="poly" id="edge7_Node000004_Node000007" title=" " alt="" coords="480,99,546,117,578,132,607,153,622,170,633,191,645,228,639,230,628,193,618,173,604,157,576,137,544,122,479,104"/>
+<area shape="rect" id="Node000008" href="$subtask__item_8hpp.html" title=" " alt="" coords="469,155,593,181"/>
+<area shape="poly" id="edge8_Node000004_Node000008" title=" " alt="" coords="438,112,509,152,507,156,435,117"/>
+<area shape="rect" id="Node000010" href="$task__ui_8hpp.html" title=" " alt="" coords="356,155,444,181"/>
+<area shape="poly" id="edge12_Node000004_Node000010" title=" " alt="" coords="403,122,403,154,398,154,398,122"/>
+<area shape="poly" id="edge6_Node000006_Node000005" title=" " alt="" coords="353,262,414,301,411,306,350,267"/>
+<area shape="poly" id="edge9_Node000008_Node000007" title=" " alt="" coords="565,188,626,226,623,231,562,192"/>
+<area shape="rect" id="Node000009" href="$task__ui_8cpp.html" title=" " alt="" coords="469,229,558,256"/>
+<area shape="poly" id="edge10_Node000008_Node000009" title=" " alt="" coords="527,197,519,230,514,228,522,196"/>
+<area shape="poly" id="edge15_Node000010_Node000003" title=" " alt="" coords="344,189,199,231,197,226,342,184"/>
+<area shape="poly" id="edge13_Node000010_Node000005" title=" " alt="" coords="409,196,432,303,427,304,403,197"/>
+<area shape="poly" id="edge14_Node000010_Node000006" title=" " alt="" coords="377,194,335,231,331,227,373,190"/>
+<area shape="poly" id="edge16_Node000010_Node000009" title=" " alt="" coords="434,188,495,226,492,231,431,192"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..678d4253c5eaaae2fa99cd54077e541c90fd1faf
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+2e2ebe0eb63e4e50b9587035374ea596
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..db38257bbf1dd165dca0e9237b387acf31152916
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..58cff8dc6f0864ef008f88c212cafc746f0f755f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__incl.map
@@ -0,0 +1,17 @@
+<map id="task_executor.hpp" name="task_executor.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="155,5,284,32"/>
+<area shape="rect" id="Node000002" href="$task_8hpp.html" title=" " alt="" coords="148,80,219,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="215,34,199,67,194,65,211,31"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="5,155,71,181"/>
+<area shape="poly" id="edge7_Node000001_Node000003" title=" " alt="" coords="202,35,137,82,63,146,60,142,134,78,199,30"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="316,155,429,181"/>
+<area shape="poly" id="edge8_Node000001_Node000005" title=" " alt="" coords="228,31,251,66,284,105,310,126,337,144,334,149,307,131,280,109,247,69,224,34"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="294,80,363,107"/>
+<area shape="poly" id="edge6_Node000001_Node000007" title=" " alt="" coords="240,30,299,69,296,74,237,35"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="159,110,78,150,76,145,157,105"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="94,155,163,181"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="176,109,149,144,145,140,172,106"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="217,105,326,146,324,151,215,110"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="187,155,292,181"/>
+<area shape="poly" id="edge5_Node000002_Node000006" title=" " alt="" coords="195,106,223,141,218,144,191,109"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..1ab05d818bbdecf9bbd9ceaefa5b4a23269b405f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__incl.md5
@@ -0,0 +1 @@
+961877651be3cacf2bf6ea519ef3e339
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9b54ce1ca21fa86a43b659d1a840eac78ca3ae1
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..eb7c4d537e432377a106ed6de673f4aa017506fc
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__executor_8hpp_source.html
@@ -0,0 +1,161 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task_executor.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">task_executor.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="task__executor_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef TASK_EXECUTOR_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define TASK_EXECUTOR_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &quot;<a class="code" href="task_8hpp.html">task.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span> </div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="preprocessor">#include &lt;QObject&gt;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;QString&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;QSharedPointer&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span> </div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="keyword">class </span><a class="code hl_class" href="classScriptWorker.html">ScriptWorker</a>;</div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span> </div>
+<div class="foldopen" id="foldopen00019" data-start="{" data-end="};">
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"><a class="line" href="classTaskExecutor.html">   19</a></span><span class="keyword">class </span><a class="code hl_class" href="classTaskExecutor.html">TaskExecutor</a> : <span class="keyword">public</span> <a class="code hl_class" href="classQObject.html">QObject</a> {</div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span>    Q_OBJECT</div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span> </div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span>    <span class="keyword">explicit</span> <a class="code hl_function" href="classTaskExecutor.html#ac6783ed16b392507bfaabd21422ee140">TaskExecutor</a>(<a class="code hl_class" href="classQObject.html">QObject</a> *parent = <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d">executeTask</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structSubtask.html">Subtask</a> &amp;subtask, <span class="keywordtype">bool</span> startSolution = <span class="keyword">false</span>);</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classTaskExecutor.html#a0a0c76bf999aea855cb83a6051864e09">forceStop</a>();</div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span> </div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc">resetRobot</a>();</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span> </div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>Q_SIGNALS:</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"><a class="line" href="classTaskExecutor.html#a2b22d6b9fa450f3471de4359b6f3b131">   49</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classTaskExecutor.html#a2b22d6b9fa450f3471de4359b6f3b131">taskExecutionStarted</a>();</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span> </div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"><a class="line" href="classTaskExecutor.html#ad2f2dd7e0d22d7b3bb2ec532f158bddc">   54</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classTaskExecutor.html#ad2f2dd7e0d22d7b3bb2ec532f158bddc">taskExecutionFinished</a>();</div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span> </div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="classTaskExecutor.html#adeffddd301a31fe1891712d30096a468">   60</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classTaskExecutor.html#adeffddd301a31fe1891712d30096a468">taskExecutionFailed</a>(<span class="keyword">const</span> QString &amp;error);</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span> </div>
+<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="classTaskExecutor.html#a9d92d24d74615c594a578eafb6d48799">   65</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classTaskExecutor.html#a9d92d24d74615c594a578eafb6d48799">resetRobotStarted</a>();</div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span> </div>
+<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"><a class="line" href="classTaskExecutor.html#a7fb6bb2e760b08c4816f5c48902d6498">   70</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classTaskExecutor.html#a7fb6bb2e760b08c4816f5c48902d6498">resetRobotFinished</a>();</div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span> </div>
+<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="classTaskExecutor.html#a782117a9e19eff6a87255c7358e87857">   76</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classTaskExecutor.html#a782117a9e19eff6a87255c7358e87857">resetRobotFailed</a>(<span class="keyword">const</span> QString &amp;error);</div>
+<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span> </div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span>    <span class="keywordtype">bool</span> constructPath(<span class="keyword">const</span> QString &amp;basePath, <span class="keyword">const</span> QString &amp;addition, QString &amp;result, <span class="keyword">const</span> QString &amp;errorMsg, <span class="keywordtype">bool</span> checkExists = <span class="keyword">true</span>);</div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span> </div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span>    QList&lt;ScriptWorker*&gt; scriptWorkers; </div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span>};</div>
+</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span> </div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span><span class="preprocessor">#endif </span><span class="comment">// TASK_EXECUTOR_HPP</span></div>
+<div class="ttc" id="aclassQObject_html"><div class="ttname"><a href="classQObject.html">QObject</a></div></div>
+<div class="ttc" id="aclassScriptWorker_html"><div class="ttname"><a href="classScriptWorker.html">ScriptWorker</a></div><div class="ttdoc">Manages the execution of scripts for tasks.</div><div class="ttdef"><b>Definition</b> script_worker.hpp:21</div></div>
+<div class="ttc" id="aclassTaskExecutor_html"><div class="ttname"><a href="classTaskExecutor.html">TaskExecutor</a></div><div class="ttdoc">Executes tasks and manages their execution state.</div><div class="ttdef"><b>Definition</b> task_executor.hpp:19</div></div>
+<div class="ttc" id="aclassTaskExecutor_html_a0a0c76bf999aea855cb83a6051864e09"><div class="ttname"><a href="classTaskExecutor.html#a0a0c76bf999aea855cb83a6051864e09">TaskExecutor::forceStop</a></div><div class="ttdeci">void forceStop()</div><div class="ttdoc">Forces the stop of all currently running tasks.</div><div class="ttdef"><b>Definition</b> task_executor.cpp:62</div></div>
+<div class="ttc" id="aclassTaskExecutor_html_a2b22d6b9fa450f3471de4359b6f3b131"><div class="ttname"><a href="classTaskExecutor.html#a2b22d6b9fa450f3471de4359b6f3b131">TaskExecutor::taskExecutionStarted</a></div><div class="ttdeci">void taskExecutionStarted()</div><div class="ttdoc">Signal emitted when task execution starts.</div></div>
+<div class="ttc" id="aclassTaskExecutor_html_a782117a9e19eff6a87255c7358e87857"><div class="ttname"><a href="classTaskExecutor.html#a782117a9e19eff6a87255c7358e87857">TaskExecutor::resetRobotFailed</a></div><div class="ttdeci">void resetRobotFailed(const QString &amp;error)</div><div class="ttdoc">Signal emitted when robot reset fails.</div></div>
+<div class="ttc" id="aclassTaskExecutor_html_a7fb6bb2e760b08c4816f5c48902d6498"><div class="ttname"><a href="classTaskExecutor.html#a7fb6bb2e760b08c4816f5c48902d6498">TaskExecutor::resetRobotFinished</a></div><div class="ttdeci">void resetRobotFinished()</div><div class="ttdoc">Signal emitted when robot reset finishes.</div></div>
+<div class="ttc" id="aclassTaskExecutor_html_a9d92d24d74615c594a578eafb6d48799"><div class="ttname"><a href="classTaskExecutor.html#a9d92d24d74615c594a578eafb6d48799">TaskExecutor::resetRobotStarted</a></div><div class="ttdeci">void resetRobotStarted()</div><div class="ttdoc">Signal emitted when robot reset starts.</div></div>
+<div class="ttc" id="aclassTaskExecutor_html_ac6783ed16b392507bfaabd21422ee140"><div class="ttname"><a href="classTaskExecutor.html#ac6783ed16b392507bfaabd21422ee140">TaskExecutor::TaskExecutor</a></div><div class="ttdeci">TaskExecutor(QObject *parent=nullptr)</div><div class="ttdoc">Constructs a TaskExecutor object.</div><div class="ttdef"><b>Definition</b> task_executor.cpp:8</div></div>
+<div class="ttc" id="aclassTaskExecutor_html_ac8eb8ba8a66de4a3ed3ead3ad7abab5d"><div class="ttname"><a href="classTaskExecutor.html#ac8eb8ba8a66de4a3ed3ead3ad7abab5d">TaskExecutor::executeTask</a></div><div class="ttdeci">void executeTask(const Subtask &amp;subtask, bool startSolution=false)</div><div class="ttdoc">Executes a given subtask.</div><div class="ttdef"><b>Definition</b> task_executor.cpp:10</div></div>
+<div class="ttc" id="aclassTaskExecutor_html_ad117a059ab0c1f6d85e318f0cf4709bc"><div class="ttname"><a href="classTaskExecutor.html#ad117a059ab0c1f6d85e318f0cf4709bc">TaskExecutor::resetRobot</a></div><div class="ttdeci">void resetRobot()</div><div class="ttdoc">Triggers python script to reset the robot to its initial state and removes all objects from the scene...</div><div class="ttdef"><b>Definition</b> task_executor.cpp:68</div></div>
+<div class="ttc" id="aclassTaskExecutor_html_ad2f2dd7e0d22d7b3bb2ec532f158bddc"><div class="ttname"><a href="classTaskExecutor.html#ad2f2dd7e0d22d7b3bb2ec532f158bddc">TaskExecutor::taskExecutionFinished</a></div><div class="ttdeci">void taskExecutionFinished()</div><div class="ttdoc">Signal emitted when task execution finishes.</div></div>
+<div class="ttc" id="aclassTaskExecutor_html_adeffddd301a31fe1891712d30096a468"><div class="ttname"><a href="classTaskExecutor.html#adeffddd301a31fe1891712d30096a468">TaskExecutor::taskExecutionFailed</a></div><div class="ttdeci">void taskExecutionFailed(const QString &amp;error)</div><div class="ttdoc">Signal emitted when task execution fails.</div></div>
+<div class="ttc" id="astructSubtask_html"><div class="ttname"><a href="structSubtask.html">Subtask</a></div><div class="ttdoc">Represents a subtask within a task.</div><div class="ttdef"><b>Definition</b> task.hpp:31</div></div>
+<div class="ttc" id="atask_8hpp_html"><div class="ttname"><a href="task_8hpp.html">task.hpp</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8cpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..81b10f6430ed586f166788bc1aad496d0b98b4fe
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8cpp.html
@@ -0,0 +1,210 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task_manager.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">task_manager.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="task__manager_8hpp_source.html">learn_environment/task_manager.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task__ui_8hpp_source.html">learn_environment/task_ui.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task__parser_8hpp_source.html">learn_environment/task_parser.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task__executor_8hpp_source.html">learn_environment/task_executor.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="notebook__converter_8hpp_source.html">learn_environment/notebook_converter.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="folder__structure__constants_8hpp_source.html">learn_environment/folder_structure_constants.hpp</a>&quot;</code><br />
+<code>#include &lt;QDebug&gt;</code><br />
+<code>#include &lt;QToolButton&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for task_manager.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="task__manager_8cpp__incl.png" border="0" usemap="#atask__manager_8cpp" alt=""/></div>
+<map name="atask__manager_8cpp" id="atask__manager_8cpp">
+<area shape="rect" title=" " alt="" coords="1001,5,1129,32"/>
+<area shape="rect" href="task__manager_8hpp.html" title=" " alt="" coords="379,171,535,213"/>
+<area shape="poly" title=" " alt="" coords="1000,25,891,30,761,40,640,57,591,69,555,82,532,98,511,117,479,159,474,156,507,114,529,94,553,78,589,64,639,52,761,35,891,25,1000,19"/>
+<area shape="rect" href="task__executor_8hpp.html" title=" " alt="" coords="407,269,536,296"/>
+<area shape="poly" title=" " alt="" coords="1037,35,721,173,514,265,512,260,718,168,1035,30"/>
+<area shape="rect" href="task__ui_8hpp.html" title=" " alt="" coords="1096,80,1252,123"/>
+<area shape="poly" title=" " alt="" coords="1083,30,1136,69,1133,73,1080,35"/>
+<area shape="rect" title=" " alt="" coords="1593,179,1686,205"/>
+<area shape="poly" title=" " alt="" coords="1111,30,1316,88,1582,168,1590,171,1588,176,1580,173,1314,93,1110,35"/>
+<area shape="rect" href="task__parser_8hpp.html" title=" " alt="" coords="176,261,332,304"/>
+<area shape="poly" title=" " alt="" coords="1000,26,736,44,598,61,542,71,500,83,466,98,433,117,371,162,320,210,282,251,278,248,316,206,368,158,430,112,463,93,499,77,541,66,598,55,735,39,1000,20"/>
+<area shape="rect" href="notebook__converter_8hpp.html" title=" " alt="" coords="661,261,845,304"/>
+<area shape="poly" title=" " alt="" coords="1051,35,790,254,787,249,1048,31"/>
+<area shape="rect" href="folder__structure__constants_8hpp.html" title=" " alt="" coords="1855,80,2024,123"/>
+<area shape="poly" title=" " alt="" coords="1130,23,1841,88,1840,94,1129,29"/>
+<area shape="rect" title=" " alt="" coords="2128,179,2197,205"/>
+<area shape="poly" title=" " alt="" coords="1129,19,1628,37,1888,55,1981,65,2036,78,2070,95,2100,118,2145,165,2141,168,2096,122,2067,100,2035,82,1981,71,1887,60,1627,43,1129,24"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="102,352,174,379"/>
+<area shape="poly" title=" " alt="" coords="379,201,305,208,228,220,162,238,138,250,122,263,114,280,113,299,126,337,121,339,108,300,108,279,117,260,135,245,160,233,227,215,304,203,378,195"/>
+<area shape="rect" title=" " alt="" coords="5,427,74,453"/>
+<area shape="poly" title=" " alt="" coords="378,203,303,212,224,225,153,242,126,252,106,263,91,278,78,296,59,336,49,377,44,412,38,411,43,376,54,334,73,293,87,275,103,259,124,247,152,237,223,219,303,206,378,198"/>
+<area shape="rect" title=" " alt="" coords="250,427,363,453"/>
+<area shape="poly" title=" " alt="" coords="438,215,398,263,351,344,319,414,314,412,346,341,393,260,434,212"/>
+<area shape="poly" title=" " alt="" coords="463,213,470,254,464,255,458,214"/>
+<area shape="rect" title=" " alt="" coords="606,352,676,379"/>
+<area shape="poly" title=" " alt="" coords="489,212,549,259,590,300,624,339,620,342,586,304,546,263,485,216"/>
+<area shape="rect" title=" " alt="" coords="387,427,452,453"/>
+<area shape="poly" title=" " alt="" coords="175,373,372,423,371,429,174,378"/>
+<area shape="poly" title=" " alt="" coords="123,381,70,420,67,415,119,377"/>
+<area shape="poly" title=" " alt="" coords="168,377,264,418,262,423,166,382"/>
+<area shape="rect" title=" " alt="" coords="98,427,203,453"/>
+<area shape="poly" title=" " alt="" coords="143,379,148,411,143,412,138,380"/>
+<area shape="poly" title=" " alt="" coords="420,299,190,354,189,349,418,294"/>
+<area shape="poly" title=" " alt="" coords="467,297,442,353,427,412,422,411,437,351,462,295"/>
+<area shape="poly" title=" " alt="" coords="460,299,332,418,329,414,456,295"/>
+<area shape="poly" title=" " alt="" coords="499,294,602,343,600,348,497,299"/>
+<area shape="poly" title=" " alt="" coords="1096,114,605,173,551,180,550,175,605,168,1095,109"/>
+<area shape="poly" title=" " alt="" coords="1096,105,958,109,775,119,571,139,468,154,367,173,285,184,218,191,188,198,160,211,133,232,107,263,100,281,102,300,110,320,121,338,116,341,105,322,97,301,95,280,103,260,130,228,157,206,186,193,217,185,284,179,366,168,467,149,571,134,775,114,957,104,1096,100"/>
+<area shape="poly" title=" " alt="" coords="1096,118,978,141,844,173,781,193,725,215,680,238,651,263,642,280,637,299,638,337,633,337,632,298,637,278,647,260,677,234,723,210,779,188,843,168,977,135,1095,113"/>
+<area shape="rect" href="sidebar_8hpp.html" title=" " alt="" coords="1049,179,1137,205"/>
+<area shape="poly" title=" " alt="" coords="1157,125,1116,169,1113,165,1153,121"/>
+<area shape="rect" title=" " alt="" coords="1328,269,1431,296"/>
+<area shape="poly" title=" " alt="" coords="1177,123,1185,167,1194,191,1208,211,1254,233,1329,261,1327,266,1251,238,1204,215,1189,193,1180,169,1172,124"/>
+<area shape="rect" title=" " alt="" coords="1455,269,1517,296"/>
+<area shape="poly" title=" " alt="" coords="1186,122,1215,167,1235,191,1258,211,1283,225,1305,234,1346,242,1390,246,1443,259,1448,261,1446,266,1441,264,1389,251,1346,247,1304,239,1281,230,1255,216,1231,195,1210,171,1182,125"/>
+<area shape="rect" href="execute__frame_8hpp.html" title=" " alt="" coords="1436,179,1568,205"/>
+<area shape="poly" title=" " alt="" coords="1252,121,1441,172,1440,177,1250,126"/>
+<area shape="rect" title=" " alt="" coords="1541,269,1610,296"/>
+<area shape="poly" title=" " alt="" coords="1201,121,1256,169,1278,192,1302,211,1334,225,1362,234,1413,241,1465,245,1530,259,1535,261,1534,266,1528,264,1464,250,1412,246,1361,239,1332,230,1299,216,1274,196,1252,173,1197,125"/>
+<area shape="poly" title=" " alt="" coords="1253,109,1406,132,1581,168,1592,171,1591,176,1580,173,1405,137,1253,115"/>
+<area shape="rect" title=" " alt="" coords="1312,179,1412,205"/>
+<area shape="poly" title=" " alt="" coords="1219,121,1323,169,1321,174,1217,126"/>
+<area shape="poly" title=" " alt="" coords="1048,198,551,223,291,243,204,253,165,264,153,279,145,297,139,337,134,336,140,296,148,276,162,259,203,248,290,237,551,218,1048,192"/>
+<area shape="poly" title=" " alt="" coords="1049,201,1014,208,977,220,941,238,909,263,899,278,895,292,895,322,893,352,887,367,874,381,834,402,779,416,714,423,643,426,499,426,378,429,378,424,499,421,643,421,714,418,778,411,832,397,871,377,883,364,888,351,889,322,890,291,895,275,906,260,938,234,975,215,1013,203,1047,196"/>
+<area shape="rect" href="custom__list__widget_8hpp.html" title=" " alt="" coords="1146,269,1304,296"/>
+<area shape="poly" title=" " alt="" coords="1113,204,1195,258,1192,263,1110,208"/>
+<area shape="rect" title=" " alt="" coords="1058,352,1152,379"/>
+<area shape="poly" title=" " alt="" coords="1096,205,1106,336,1100,336,1091,206"/>
+<area shape="rect" title=" " alt="" coords="919,269,992,296"/>
+<area shape="poly" title=" " alt="" coords="1075,208,989,263,986,258,1072,204"/>
+<area shape="poly" title=" " alt="" coords="1133,203,1156,211,1316,259,1325,262,1324,267,1315,264,1155,216,1131,208"/>
+<area shape="poly" title=" " alt="" coords="1138,199,1313,231,1443,259,1448,261,1447,266,1441,264,1311,237,1137,204"/>
+<area shape="rect" title=" " alt="" coords="1015,269,1072,296"/>
+<area shape="poly" title=" " alt="" coords="1088,207,1060,257,1056,254,1083,205"/>
+<area shape="poly" title=" " alt="" coords="1208,299,1137,346,1134,341,1205,294"/>
+<area shape="rect" title=" " alt="" coords="1175,352,1280,379"/>
+<area shape="poly" title=" " alt="" coords="1228,296,1229,337,1224,337,1223,297"/>
+<area shape="rect" title=" " alt="" coords="1304,352,1399,379"/>
+<area shape="poly" title=" " alt="" coords="1246,294,1320,341,1318,346,1243,299"/>
+<area shape="poly" title=" " alt="" coords="1502,206,1494,254,1489,253,1497,205"/>
+<area shape="poly" title=" " alt="" coords="1515,204,1557,256,1553,259,1511,208"/>
+<area shape="rect" title=" " alt="" coords="1634,269,1701,296"/>
+<area shape="poly" title=" " alt="" coords="1527,204,1632,259,1629,264,1525,208"/>
+<area shape="rect" title=" " alt="" coords="1725,269,1828,296"/>
+<area shape="poly" title=" " alt="" coords="1542,203,1724,262,1722,267,1541,208"/>
+<area shape="poly" title=" " alt="" coords="226,307,170,345,167,341,223,302"/>
+<area shape="poly" title=" " alt="" coords="278,303,397,414,393,418,274,306"/>
+<area shape="poly" title=" " alt="" coords="178,307,133,327,92,354,68,383,52,413,47,411,64,380,88,350,130,322,176,302"/>
+<area shape="poly" title=" " alt="" coords="249,305,241,340,241,359,246,378,259,398,276,415,272,419,255,401,241,380,236,360,236,340,244,304"/>
+<area shape="rect" title=" " alt="" coords="452,352,582,379"/>
+<area shape="poly" title=" " alt="" coords="323,302,462,344,460,350,321,307"/>
+<area shape="poly" title=" " alt="" coords="814,302,845,317,870,335,883,356,882,369,875,381,853,392,815,402,703,419,468,438,468,433,702,413,814,397,851,387,871,377,877,367,878,358,866,339,842,322,812,307"/>
+<area shape="poly" title=" " alt="" coords="726,307,672,345,669,341,722,302"/>
+<area shape="poly" title=" " alt="" coords="693,307,569,349,568,344,691,302"/>
+<area shape="rect" title=" " alt="" coords="699,352,748,379"/>
+<area shape="poly" title=" " alt="" coords="748,306,736,338,731,336,743,304"/>
+<area shape="rect" title=" " alt="" coords="772,352,862,379"/>
+<area shape="poly" title=" " alt="" coords="771,303,799,338,795,341,767,306"/>
+<area shape="poly" title=" " alt="" coords="1925,125,1894,172,1880,210,1876,244,1868,275,1858,291,1842,306,1811,323,1761,338,1614,364,1421,386,1202,404,767,429,468,440,468,435,767,423,1202,399,1421,381,1613,359,1760,332,1809,318,1839,302,1854,287,1863,273,1871,243,1875,209,1889,169,1921,122"/>
+<area shape="rect" title=" " alt="" coords="2000,179,2103,205"/>
+<area shape="poly" title=" " alt="" coords="1967,121,2025,167,2022,171,1964,125"/>
+<area shape="rect" title=" " alt="" coords="1903,179,1976,205"/>
+<area shape="poly" title=" " alt="" coords="1942,123,1942,163,1937,163,1937,123"/>
+<area shape="poly" title=" " alt="" coords="1995,121,2116,168,2120,170,2118,175,2115,173,1993,126"/>
+</map>
+</div>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8cpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8cpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..0ad02f16c164d43ea7bbb07b12a4a58de99a50d2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8cpp__incl.map
@@ -0,0 +1,96 @@
+<map id="task_manager.cpp" name="task_manager.cpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="1001,5,1129,32"/>
+<area shape="rect" id="Node000002" href="$task__manager_8hpp.html" title=" " alt="" coords="379,171,535,213"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="1000,25,891,30,761,40,640,57,591,69,555,82,532,98,511,117,479,159,474,156,507,114,529,94,553,78,589,64,639,52,761,35,891,25,1000,19"/>
+<area shape="rect" id="Node000008" href="$task__executor_8hpp.html" title=" " alt="" coords="407,269,536,296"/>
+<area shape="poly" id="edge47_Node000001_Node000008" title=" " alt="" coords="1037,35,721,173,514,265,512,260,718,168,1035,30"/>
+<area shape="rect" id="Node000010" href="$task__ui_8hpp.html" title=" " alt="" coords="1096,80,1252,123"/>
+<area shape="poly" id="edge15_Node000001_Node000010" title=" " alt="" coords="1083,30,1136,69,1133,73,1080,35"/>
+<area shape="rect" id="Node000024" title=" " alt="" coords="1593,179,1686,205"/>
+<area shape="poly" id="edge60_Node000001_Node000024" title=" " alt="" coords="1111,30,1316,88,1582,168,1590,171,1588,176,1580,173,1314,93,1110,35"/>
+<area shape="rect" id="Node000026" href="$task__parser_8hpp.html" title=" " alt="" coords="176,261,332,304"/>
+<area shape="poly" id="edge41_Node000001_Node000026" title=" " alt="" coords="1000,26,736,44,598,61,542,71,500,83,466,98,433,117,371,162,320,210,282,251,278,248,316,206,368,158,430,112,463,93,499,77,541,66,598,55,735,39,1000,20"/>
+<area shape="rect" id="Node000028" href="$notebook__converter_8hpp.html" title=" " alt="" coords="661,261,845,304"/>
+<area shape="poly" id="edge48_Node000001_Node000028" title=" " alt="" coords="1051,35,790,254,787,249,1048,31"/>
+<area shape="rect" id="Node000031" href="$folder__structure__constants_8hpp.html" title=" " alt="" coords="1855,80,2024,123"/>
+<area shape="poly" id="edge54_Node000001_Node000031" title=" " alt="" coords="1130,23,1841,88,1840,94,1129,29"/>
+<area shape="rect" id="Node000034" title=" " alt="" coords="2128,179,2197,205"/>
+<area shape="poly" id="edge59_Node000001_Node000034" title=" " alt="" coords="1129,19,1628,37,1888,55,1981,65,2036,78,2070,95,2100,118,2145,165,2141,168,2096,122,2067,100,2035,82,1981,71,1887,60,1627,43,1129,24"/>
+<area shape="rect" id="Node000003" href="$task_8hpp.html" title=" " alt="" coords="102,352,174,379"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="379,201,305,208,228,220,162,238,138,250,122,263,114,280,113,299,126,337,121,339,108,300,108,279,117,260,135,245,160,233,227,215,304,203,378,195"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="5,427,74,453"/>
+<area shape="poly" id="edge13_Node000002_Node000005" title=" " alt="" coords="378,203,303,212,224,225,153,242,126,252,106,263,91,278,78,296,59,336,49,377,44,412,38,411,43,376,54,334,73,293,87,275,103,259,124,247,152,237,223,219,303,206,378,198"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="250,427,363,453"/>
+<area shape="poly" id="edge14_Node000002_Node000006" title=" " alt="" coords="438,215,398,263,351,344,319,414,314,412,346,341,393,260,434,212"/>
+<area shape="poly" id="edge7_Node000002_Node000008" title=" " alt="" coords="463,213,470,254,464,255,458,214"/>
+<area shape="rect" id="Node000009" title=" " alt="" coords="606,352,676,379"/>
+<area shape="poly" id="edge12_Node000002_Node000009" title=" " alt="" coords="489,212,549,259,590,300,624,339,620,342,586,304,546,263,485,216"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="387,427,452,453"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="175,373,372,423,371,429,174,378"/>
+<area shape="poly" id="edge4_Node000003_Node000005" title=" " alt="" coords="123,381,70,420,67,415,119,377"/>
+<area shape="poly" id="edge5_Node000003_Node000006" title=" " alt="" coords="168,377,264,418,262,423,166,382"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="98,427,203,453"/>
+<area shape="poly" id="edge6_Node000003_Node000007" title=" " alt="" coords="143,379,148,411,143,412,138,380"/>
+<area shape="poly" id="edge8_Node000008_Node000003" title=" " alt="" coords="420,299,190,354,189,349,418,294"/>
+<area shape="poly" id="edge10_Node000008_Node000004" title=" " alt="" coords="467,297,442,353,427,412,422,411,437,351,462,295"/>
+<area shape="poly" id="edge11_Node000008_Node000006" title=" " alt="" coords="460,299,332,418,329,414,456,295"/>
+<area shape="poly" id="edge9_Node000008_Node000009" title=" " alt="" coords="499,294,602,343,600,348,497,299"/>
+<area shape="poly" id="edge29_Node000010_Node000002" title=" " alt="" coords="1096,114,605,173,551,180,550,175,605,168,1095,109"/>
+<area shape="poly" id="edge28_Node000010_Node000003" title=" " alt="" coords="1096,105,958,109,775,119,571,139,468,154,367,173,285,184,218,191,188,198,160,211,133,232,107,263,100,281,102,300,110,320,121,338,116,341,105,322,97,301,95,280,103,260,130,228,157,206,186,193,217,185,284,179,366,168,467,149,571,134,775,114,957,104,1096,100"/>
+<area shape="poly" id="edge35_Node000010_Node000009" title=" " alt="" coords="1096,118,978,141,844,173,781,193,725,215,680,238,651,263,642,280,637,299,638,337,633,337,632,298,637,278,647,260,677,234,723,210,779,188,843,168,977,135,1095,113"/>
+<area shape="rect" id="Node000011" href="$sidebar_8hpp.html" title=" " alt="" coords="1049,179,1137,205"/>
+<area shape="poly" id="edge16_Node000010_Node000011" title=" " alt="" coords="1157,125,1116,169,1113,165,1153,121"/>
+<area shape="rect" id="Node000017" title=" " alt="" coords="1328,269,1431,296"/>
+<area shape="poly" id="edge36_Node000010_Node000017" title=" " alt="" coords="1177,123,1185,167,1194,191,1208,211,1254,233,1329,261,1327,266,1251,238,1204,215,1189,193,1180,169,1172,124"/>
+<area shape="rect" id="Node000018" title=" " alt="" coords="1455,269,1517,296"/>
+<area shape="poly" id="edge37_Node000010_Node000018" title=" " alt="" coords="1186,122,1215,167,1235,191,1258,211,1283,225,1305,234,1346,242,1390,246,1443,259,1448,261,1446,266,1441,264,1389,251,1346,247,1304,239,1281,230,1255,216,1231,195,1210,171,1182,125"/>
+<area shape="rect" id="Node000020" href="$execute__frame_8hpp.html" title=" " alt="" coords="1436,179,1568,205"/>
+<area shape="poly" id="edge30_Node000010_Node000020" title=" " alt="" coords="1252,121,1441,172,1440,177,1250,126"/>
+<area shape="rect" id="Node000021" title=" " alt="" coords="1541,269,1610,296"/>
+<area shape="poly" id="edge40_Node000010_Node000021" title=" " alt="" coords="1201,121,1256,169,1278,192,1302,211,1334,225,1362,234,1413,241,1465,245,1530,259,1535,261,1534,266,1528,264,1464,250,1412,246,1361,239,1332,230,1299,216,1274,196,1252,173,1197,125"/>
+<area shape="poly" id="edge38_Node000010_Node000024" title=" " alt="" coords="1253,109,1406,132,1581,168,1592,171,1591,176,1580,173,1405,137,1253,115"/>
+<area shape="rect" id="Node000025" title=" " alt="" coords="1312,179,1412,205"/>
+<area shape="poly" id="edge39_Node000010_Node000025" title=" " alt="" coords="1219,121,1323,169,1321,174,1217,126"/>
+<area shape="poly" id="edge21_Node000011_Node000003" title=" " alt="" coords="1048,198,551,223,291,243,204,253,165,264,153,279,145,297,139,337,134,336,140,296,148,276,162,259,203,248,290,237,551,218,1048,192"/>
+<area shape="poly" id="edge27_Node000011_Node000006" title=" " alt="" coords="1049,201,1014,208,977,220,941,238,909,263,899,278,895,292,895,322,893,352,887,367,874,381,834,402,779,416,714,423,643,426,499,426,378,429,378,424,499,421,643,421,714,418,778,411,832,397,871,377,883,364,888,351,889,322,890,291,895,275,906,260,938,234,975,215,1013,203,1047,196"/>
+<area shape="rect" id="Node000012" href="$custom__list__widget_8hpp.html" title=" " alt="" coords="1146,269,1304,296"/>
+<area shape="poly" id="edge17_Node000011_Node000012" title=" " alt="" coords="1113,204,1195,258,1192,263,1110,208"/>
+<area shape="rect" id="Node000013" title=" " alt="" coords="1058,352,1152,379"/>
+<area shape="poly" id="edge26_Node000011_Node000013" title=" " alt="" coords="1096,205,1106,336,1100,336,1091,206"/>
+<area shape="rect" id="Node000016" title=" " alt="" coords="919,269,992,296"/>
+<area shape="poly" id="edge22_Node000011_Node000016" title=" " alt="" coords="1075,208,989,263,986,258,1072,204"/>
+<area shape="poly" id="edge23_Node000011_Node000017" title=" " alt="" coords="1133,203,1156,211,1316,259,1325,262,1324,267,1315,264,1155,216,1131,208"/>
+<area shape="poly" id="edge24_Node000011_Node000018" title=" " alt="" coords="1138,199,1313,231,1443,259,1448,261,1447,266,1441,264,1311,237,1137,204"/>
+<area shape="rect" id="Node000019" title=" " alt="" coords="1015,269,1072,296"/>
+<area shape="poly" id="edge25_Node000011_Node000019" title=" " alt="" coords="1088,207,1060,257,1056,254,1083,205"/>
+<area shape="poly" id="edge18_Node000012_Node000013" title=" " alt="" coords="1208,299,1137,346,1134,341,1205,294"/>
+<area shape="rect" id="Node000014" title=" " alt="" coords="1175,352,1280,379"/>
+<area shape="poly" id="edge19_Node000012_Node000014" title=" " alt="" coords="1228,296,1229,337,1224,337,1223,297"/>
+<area shape="rect" id="Node000015" title=" " alt="" coords="1304,352,1399,379"/>
+<area shape="poly" id="edge20_Node000012_Node000015" title=" " alt="" coords="1246,294,1320,341,1318,346,1243,299"/>
+<area shape="poly" id="edge32_Node000020_Node000018" title=" " alt="" coords="1502,206,1494,254,1489,253,1497,205"/>
+<area shape="poly" id="edge31_Node000020_Node000021" title=" " alt="" coords="1515,204,1557,256,1553,259,1511,208"/>
+<area shape="rect" id="Node000022" title=" " alt="" coords="1634,269,1701,296"/>
+<area shape="poly" id="edge33_Node000020_Node000022" title=" " alt="" coords="1527,204,1632,259,1629,264,1525,208"/>
+<area shape="rect" id="Node000023" title=" " alt="" coords="1725,269,1828,296"/>
+<area shape="poly" id="edge34_Node000020_Node000023" title=" " alt="" coords="1542,203,1724,262,1722,267,1541,208"/>
+<area shape="poly" id="edge42_Node000026_Node000003" title=" " alt="" coords="226,307,170,345,167,341,223,302"/>
+<area shape="poly" id="edge44_Node000026_Node000004" title=" " alt="" coords="278,303,397,414,393,418,274,306"/>
+<area shape="poly" id="edge43_Node000026_Node000005" title=" " alt="" coords="178,307,133,327,92,354,68,383,52,413,47,411,64,380,88,350,130,322,176,302"/>
+<area shape="poly" id="edge45_Node000026_Node000006" title=" " alt="" coords="249,305,241,340,241,359,246,378,259,398,276,415,272,419,255,401,241,380,236,360,236,340,244,304"/>
+<area shape="rect" id="Node000027" title=" " alt="" coords="452,352,582,379"/>
+<area shape="poly" id="edge46_Node000026_Node000027" title=" " alt="" coords="323,302,462,344,460,350,321,307"/>
+<area shape="poly" id="edge50_Node000028_Node000004" title=" " alt="" coords="814,302,845,317,870,335,883,356,882,369,875,381,853,392,815,402,703,419,468,438,468,433,702,413,814,397,851,387,871,377,877,367,878,358,866,339,842,322,812,307"/>
+<area shape="poly" id="edge49_Node000028_Node000009" title=" " alt="" coords="726,307,672,345,669,341,722,302"/>
+<area shape="poly" id="edge53_Node000028_Node000027" title=" " alt="" coords="693,307,569,349,568,344,691,302"/>
+<area shape="rect" id="Node000029" title=" " alt="" coords="699,352,748,379"/>
+<area shape="poly" id="edge51_Node000028_Node000029" title=" " alt="" coords="748,306,736,338,731,336,743,304"/>
+<area shape="rect" id="Node000030" title=" " alt="" coords="772,352,862,379"/>
+<area shape="poly" id="edge52_Node000028_Node000030" title=" " alt="" coords="771,303,799,338,795,341,767,306"/>
+<area shape="poly" id="edge55_Node000031_Node000004" title=" " alt="" coords="1925,125,1894,172,1880,210,1876,244,1868,275,1858,291,1842,306,1811,323,1761,338,1614,364,1421,386,1202,404,767,429,468,440,468,435,767,423,1202,399,1421,381,1613,359,1760,332,1809,318,1839,302,1854,287,1863,273,1871,243,1875,209,1889,169,1921,122"/>
+<area shape="rect" id="Node000032" title=" " alt="" coords="2000,179,2103,205"/>
+<area shape="poly" id="edge56_Node000031_Node000032" title=" " alt="" coords="1967,121,2025,167,2022,171,1964,125"/>
+<area shape="rect" id="Node000033" title=" " alt="" coords="1903,179,1976,205"/>
+<area shape="poly" id="edge57_Node000031_Node000033" title=" " alt="" coords="1942,123,1942,163,1937,163,1937,123"/>
+<area shape="poly" id="edge58_Node000031_Node000034" title=" " alt="" coords="1995,121,2116,168,2120,170,2118,175,2115,173,1993,126"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..49ff95af7f1537979e03732d67b023955cc23594
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8cpp__incl.md5
@@ -0,0 +1 @@
+ba4b58910461bee28f2593c421cdecb6
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8cpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8cpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..f95f580e5ab92b5f56e58553c6391b35955f3561
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8cpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..ef3ec44d3e8e2b0ed19cfe95db1369fa76ad42f2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp.html
@@ -0,0 +1,173 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task_manager.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">task_manager.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="task_8hpp_source.html">task.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task__executor_8hpp_source.html">task_executor.hpp</a>&quot;</code><br />
+<code>#include &lt;QObject&gt;</code><br />
+<code>#include &lt;QVector&gt;</code><br />
+<code>#include &lt;QSharedPointer&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for task_manager.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="task__manager_8hpp__incl.png" border="0" usemap="#atask__manager_8hpp" alt=""/></div>
+<map name="atask__manager_8hpp" id="atask__manager_8hpp">
+<area shape="rect" title=" " alt="" coords="201,5,329,32"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="130,155,202,181"/>
+<area shape="poly" title=" " alt="" coords="243,35,216,55,191,81,178,111,171,140,166,139,173,109,187,79,212,51,240,30"/>
+<area shape="rect" title=" " alt="" coords="5,229,74,256"/>
+<area shape="poly" title=" " alt="" coords="243,35,209,55,173,82,139,116,107,153,58,218,54,215,103,150,135,113,170,78,206,51,240,30"/>
+<area shape="rect" title=" " alt="" coords="316,229,430,256"/>
+<area shape="poly" title=" " alt="" coords="295,30,332,50,368,78,398,112,414,154,417,168,414,182,395,218,391,216,409,180,411,168,409,155,393,115,364,82,329,55,293,35"/>
+<area shape="rect" href="task__executor_8hpp.html" title=" " alt="" coords="201,80,329,107"/>
+<area shape="poly" title=" " alt="" coords="268,33,268,64,262,64,262,33"/>
+<area shape="rect" title=" " alt="" coords="330,155,400,181"/>
+<area shape="poly" title=" " alt="" coords="289,30,317,51,343,79,357,109,364,139,359,140,352,111,339,81,314,55,286,35"/>
+<area shape="rect" title=" " alt="" coords="227,229,292,256"/>
+<area shape="poly" title=" " alt="" coords="184,180,233,218,230,222,181,184"/>
+<area shape="poly" title=" " alt="" coords="145,184,76,224,73,219,143,180"/>
+<area shape="poly" title=" " alt="" coords="203,179,323,221,322,226,201,184"/>
+<area shape="rect" title=" " alt="" coords="98,229,203,256"/>
+<area shape="poly" title=" " alt="" coords="166,182,159,215,154,214,161,181"/>
+<area shape="poly" title=" " alt="" coords="249,109,197,148,194,143,246,105"/>
+<area shape="poly" title=" " alt="" coords="267,107,263,214,258,214,262,107"/>
+<area shape="poly" title=" " alt="" coords="274,105,320,180,352,216,348,220,316,183,269,108"/>
+<area shape="poly" title=" " alt="" coords="284,105,337,143,333,147,281,109"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="task__manager_8hpp__dep__incl.png" border="0" usemap="#atask__manager_8hppdep" alt=""/></div>
+<map name="atask__manager_8hppdep" id="atask__manager_8hppdep">
+<area shape="rect" title=" " alt="" coords="207,5,335,32"/>
+<area shape="rect" href="learn__environment_8cpp.html" title=" " alt="" coords="22,229,174,256"/>
+<area shape="poly" title=" " alt="" coords="193,39,144,56,94,80,48,113,28,133,12,156,8,167,9,176,22,196,44,213,69,226,66,231,41,217,18,199,4,178,3,166,8,153,24,130,44,109,91,75,142,51,192,34"/>
+<area shape="rect" href="learn__environment_8hpp.html" title=" " alt="" coords="22,155,174,181"/>
+<area shape="poly" title=" " alt="" coords="235,42,177,82,138,121,109,156,105,153,134,118,174,78,232,38"/>
+<area shape="rect" href="subtask__item_8cpp.html" title=" " alt="" coords="513,155,637,181"/>
+<area shape="poly" title=" " alt="" coords="351,22,393,28,437,39,481,55,521,78,540,95,555,116,573,153,568,156,550,119,536,99,518,82,478,60,435,44,392,33,351,27"/>
+<area shape="rect" href="subtask__item_8hpp.html" title=" " alt="" coords="382,80,507,107"/>
+<area shape="poly" title=" " alt="" coords="316,36,415,77,413,82,314,41"/>
+<area shape="rect" href="task__manager_8cpp.html" title=" " alt="" coords="248,155,377,181"/>
+<area shape="poly" title=" " alt="" coords="281,46,312,153,306,155,276,48"/>
+<area shape="rect" href="task__ui_8hpp.html" title=" " alt="" coords="187,80,275,107"/>
+<area shape="poly" title=" " alt="" coords="259,47,240,81,236,78,254,45"/>
+<area shape="poly" title=" " alt="" coords="101,197,101,229,95,229,95,197"/>
+<area shape="poly" title=" " alt="" coords="482,112,554,152,551,156,479,117"/>
+<area shape="rect" href="task__ui_8cpp.html" title=" " alt="" coords="400,155,489,181"/>
+<area shape="poly" title=" " alt="" coords="447,122,447,154,442,154,442,122"/>
+<area shape="poly" title=" " alt="" coords="224,122,209,153,188,183,156,211,124,231,121,227,153,207,184,180,204,150,219,120"/>
+<area shape="poly" title=" " alt="" coords="196,117,123,156,120,152,194,112"/>
+<area shape="poly" title=" " alt="" coords="284,110,408,152,406,157,282,115"/>
+<area shape="poly" title=" " alt="" coords="258,115,300,152,297,156,255,119"/>
+</map>
+</div>
+</div>
+<p><a href="task__manager_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTaskManager.html">TaskManager</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Manages tasks and their execution within the application.  <a href="classTaskManager.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..c38b81bc975360a4484a1d33436addd42c412360
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__dep__incl.map
@@ -0,0 +1,23 @@
+<map id="task_manager.hpp" name="task_manager.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="207,5,335,32"/>
+<area shape="rect" id="Node000002" href="$learn__environment_8cpp.html" title=" " alt="" coords="22,229,174,256"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="193,39,144,56,94,80,48,113,28,133,12,156,8,167,9,176,22,196,44,213,69,226,66,231,41,217,18,199,4,178,3,166,8,153,24,130,44,109,91,75,142,51,192,34"/>
+<area shape="rect" id="Node000003" href="$learn__environment_8hpp.html" title=" " alt="" coords="22,155,174,181"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="235,42,177,82,138,121,109,156,105,153,134,118,174,78,232,38"/>
+<area shape="rect" id="Node000004" href="$subtask__item_8cpp.html" title=" " alt="" coords="513,155,637,181"/>
+<area shape="poly" id="edge4_Node000001_Node000004" title=" " alt="" coords="351,22,393,28,437,39,481,55,521,78,540,95,555,116,573,153,568,156,550,119,536,99,518,82,478,60,435,44,392,33,351,27"/>
+<area shape="rect" id="Node000005" href="$subtask__item_8hpp.html" title=" " alt="" coords="382,80,507,107"/>
+<area shape="poly" id="edge5_Node000001_Node000005" title=" " alt="" coords="316,36,415,77,413,82,314,41"/>
+<area shape="rect" id="Node000007" href="$task__manager_8cpp.html" title=" " alt="" coords="248,155,377,181"/>
+<area shape="poly" id="edge8_Node000001_Node000007" title=" " alt="" coords="281,46,312,153,306,155,276,48"/>
+<area shape="rect" id="Node000008" href="$task__ui_8hpp.html" title=" " alt="" coords="187,80,275,107"/>
+<area shape="poly" id="edge9_Node000001_Node000008" title=" " alt="" coords="259,47,240,81,236,78,254,45"/>
+<area shape="poly" id="edge3_Node000003_Node000002" title=" " alt="" coords="101,197,101,229,95,229,95,197"/>
+<area shape="poly" id="edge6_Node000005_Node000004" title=" " alt="" coords="482,112,554,152,551,156,479,117"/>
+<area shape="rect" id="Node000006" href="$task__ui_8cpp.html" title=" " alt="" coords="400,155,489,181"/>
+<area shape="poly" id="edge7_Node000005_Node000006" title=" " alt="" coords="447,122,447,154,442,154,442,122"/>
+<area shape="poly" id="edge10_Node000008_Node000002" title=" " alt="" coords="224,122,209,153,188,183,156,211,124,231,121,227,153,207,184,180,204,150,219,120"/>
+<area shape="poly" id="edge11_Node000008_Node000003" title=" " alt="" coords="196,117,123,156,120,152,194,112"/>
+<area shape="poly" id="edge13_Node000008_Node000006" title=" " alt="" coords="284,110,408,152,406,157,282,115"/>
+<area shape="poly" id="edge12_Node000008_Node000007" title=" " alt="" coords="258,115,300,152,297,156,255,119"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f64c36024061beb2084d26a0079c542821d5af47
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+ff0c182ba794c9b0a09ae39dea0f32ae
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..33c97f04e50b7607ffdfb3dc4fcde4341e408c9a
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..150404fd35b9b2d45477eff8c41e6effbe010a42
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__incl.map
@@ -0,0 +1,23 @@
+<map id="task_manager.hpp" name="task_manager.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="201,5,329,32"/>
+<area shape="rect" id="Node000002" href="$task_8hpp.html" title=" " alt="" coords="130,155,202,181"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="243,35,216,55,191,81,178,111,171,140,166,139,173,109,187,79,212,51,240,30"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="5,229,74,256"/>
+<area shape="poly" id="edge12_Node000001_Node000004" title=" " alt="" coords="243,35,209,55,173,82,139,116,107,153,58,218,54,215,103,150,135,113,170,78,206,51,240,30"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="316,229,430,256"/>
+<area shape="poly" id="edge13_Node000001_Node000005" title=" " alt="" coords="295,30,332,50,368,78,398,112,414,154,417,168,414,182,395,218,391,216,409,180,411,168,409,155,393,115,364,82,329,55,293,35"/>
+<area shape="rect" id="Node000007" href="$task__executor_8hpp.html" title=" " alt="" coords="201,80,329,107"/>
+<area shape="poly" id="edge6_Node000001_Node000007" title=" " alt="" coords="268,33,268,64,262,64,262,33"/>
+<area shape="rect" id="Node000008" title=" " alt="" coords="330,155,400,181"/>
+<area shape="poly" id="edge11_Node000001_Node000008" title=" " alt="" coords="289,30,317,51,343,79,357,109,364,139,359,140,352,111,339,81,314,55,286,35"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="227,229,292,256"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="184,180,233,218,230,222,181,184"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="145,184,76,224,73,219,143,180"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="203,179,323,221,322,226,201,184"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="98,229,203,256"/>
+<area shape="poly" id="edge5_Node000002_Node000006" title=" " alt="" coords="166,182,159,215,154,214,161,181"/>
+<area shape="poly" id="edge7_Node000007_Node000002" title=" " alt="" coords="249,109,197,148,194,143,246,105"/>
+<area shape="poly" id="edge9_Node000007_Node000003" title=" " alt="" coords="267,107,263,214,258,214,262,107"/>
+<area shape="poly" id="edge10_Node000007_Node000005" title=" " alt="" coords="274,105,320,180,352,216,348,220,316,183,269,108"/>
+<area shape="poly" id="edge8_Node000007_Node000008" title=" " alt="" coords="284,105,337,143,333,147,281,109"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..2822acf2983e77b430c6eda892d9af77dc54ba88
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__incl.md5
@@ -0,0 +1 @@
+9610feb5de2d581bdfbe0054b15a05f2
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..70b0badce45886984770f439f0336ace93049134
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..3a75eed78a69968b549260784553e6802112802e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__manager_8hpp_source.html
@@ -0,0 +1,185 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task_manager.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">task_manager.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="task__manager_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef TASKMANAGER_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define TASKMANAGER_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &quot;<a class="code" href="task_8hpp.html">task.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include &quot;<a class="code" href="task__executor_8hpp.html">task_executor.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span> </div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;QObject&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;QVector&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;QSharedPointer&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="keyword">class </span><a class="code hl_class" href="classTaskUI.html">TaskUI</a>;</div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span> </div>
+<div class="foldopen" id="foldopen00020" data-start="{" data-end="};">
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"><a class="line" href="classTaskManager.html">   20</a></span><span class="keyword">class </span><a class="code hl_class" href="classTaskManager.html">TaskManager</a> : <span class="keyword">public</span> <a class="code hl_class" href="classQObject.html">QObject</a></div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span>{</div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span>    Q_OBJECT</div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span> </div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span>    <a class="code hl_function" href="classTaskManager.html#a9c906455542360f6760169599f2640a3">TaskManager</a>(<a class="code hl_class" href="classTaskUI.html">TaskUI</a> *taskUI, <a class="code hl_class" href="classQObject.html">QObject</a> *parent = <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span> </div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classTaskManager.html#ac4c5170435b505415f49e40906888743">startStopSubtask</a>(<a class="code hl_struct" href="structSubtask.html">Subtask</a> &amp;subtask, <span class="keywordtype">bool</span> startSolution = <span class="keyword">false</span>);</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classTaskManager.html#a9f3de937346f77e565d555a59a8a0da0">toggleSolution</a>(<a class="code hl_struct" href="structSubtask.html">Subtask</a> &amp;subtask);</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span> </div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span><span class="keyword">public</span> Q_SLOTS:</div>
+<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span>    <span class="keywordtype">void</span> <a class="code hl_slot" href="classTaskManager.html#a327677e3a17f1a707095119328a96179">nextTask</a>();</div>
+<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span> </div>
+<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span>    <span class="keywordtype">void</span> <a class="code hl_slot" href="classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e">previousTask</a>();</div>
+<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span> </div>
+<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span>    <span class="keywordtype">void</span> <a class="code hl_slot" href="classTaskManager.html#a51989e6fb895fd817286153750f07d75">selectTask</a>(<span class="keywordtype">int</span> index);</div>
+<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span> </div>
+<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="classTaskManager.html#a36aa4b88ce92147fc2bfe7b222e8d984">   66</a></span>    <span class="keywordtype">void</span> <a class="code hl_slot" href="classTaskManager.html#a36aa4b88ce92147fc2bfe7b222e8d984">startStopSubtask</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structSubtask.html">Subtask</a> &amp;subtask);</div>
+<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span>    <span class="keywordtype">void</span> <a class="code hl_slot" href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e">forceResetRobot</a>();</div>
+<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span> </div>
+<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span><span class="keyword">private</span> Q_SLOTS:</div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span> </div>
+<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span>    <span class="keywordtype">void</span> onTaskExecutionStarted();</div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span> </div>
+<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>    <span class="keywordtype">void</span> onTaskExecutionFinished();</div>
+<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span>    <span class="keywordtype">void</span> onTaskExecutionFailed(<span class="keyword">const</span> QString &amp;error);</div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span> </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>    <span class="keywordtype">void</span> onResetRobotStarted();</div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span> </div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span>    <span class="keywordtype">void</span> onResetRobotFinished();</div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span> </div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span>    <span class="keywordtype">void</span> onResetRobotFailed(<span class="keyword">const</span> QString &amp;error);</div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span> </div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span>    <a class="code hl_class" href="classTaskUI.html">TaskUI</a> *taskUI; </div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>    <a class="code hl_class" href="classTaskExecutor.html">TaskExecutor</a> *taskExecutor; </div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>    QVector&lt;QSharedPointer&lt;Task&gt;&gt; tasks; </div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span>    QVector&lt;Subtask*&gt; queued_and_running_subtasks; </div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>    <span class="keywordtype">int</span> currentQueueStartSolution = <span class="keyword">false</span>; </div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span>    <span class="keywordtype">int</span> currentTaskIndex; </div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span>    <span class="keywordtype">bool</span> resetRobotInProgress = <span class="keyword">false</span>; </div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span> </div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span>    <span class="keywordtype">void</span> startSubtask(<a class="code hl_struct" href="structSubtask.html">Subtask</a> &amp;started_subtask, QSharedPointer&lt;Task&gt; &amp;task, <span class="keywordtype">bool</span> startSolution = <span class="keyword">false</span>);</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span> </div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span>    <span class="keywordtype">void</span> initiateFirstSubtask();</div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span> </div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>    <span class="keywordtype">void</span> forceStop();</div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span> </div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span>    <span class="keywordtype">void</span> logWithHashes(<span class="keyword">const</span> QString &amp;message);</div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span>};</div>
+</div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span> </div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span><span class="preprocessor">#endif </span><span class="comment">// TASKMANAGER_HPP</span></div>
+<div class="ttc" id="aclassQObject_html"><div class="ttname"><a href="classQObject.html">QObject</a></div></div>
+<div class="ttc" id="aclassTaskExecutor_html"><div class="ttname"><a href="classTaskExecutor.html">TaskExecutor</a></div><div class="ttdoc">Executes tasks and manages their execution state.</div><div class="ttdef"><b>Definition</b> task_executor.hpp:19</div></div>
+<div class="ttc" id="aclassTaskManager_html"><div class="ttname"><a href="classTaskManager.html">TaskManager</a></div><div class="ttdoc">Manages tasks and their execution within the application.</div><div class="ttdef"><b>Definition</b> task_manager.hpp:21</div></div>
+<div class="ttc" id="aclassTaskManager_html_a327677e3a17f1a707095119328a96179"><div class="ttname"><a href="classTaskManager.html#a327677e3a17f1a707095119328a96179">TaskManager::nextTask</a></div><div class="ttdeci">void nextTask()</div><div class="ttdoc">Slot for changing to the next task.</div><div class="ttdef"><b>Definition</b> task_manager.cpp:110</div></div>
+<div class="ttc" id="aclassTaskManager_html_a36aa4b88ce92147fc2bfe7b222e8d984"><div class="ttname"><a href="classTaskManager.html#a36aa4b88ce92147fc2bfe7b222e8d984">TaskManager::startStopSubtask</a></div><div class="ttdeci">void startStopSubtask(const Subtask &amp;subtask)</div><div class="ttdoc">Starts or stops a subtask.</div></div>
+<div class="ttc" id="aclassTaskManager_html_a51989e6fb895fd817286153750f07d75"><div class="ttname"><a href="classTaskManager.html#a51989e6fb895fd817286153750f07d75">TaskManager::selectTask</a></div><div class="ttdeci">void selectTask(int index)</div><div class="ttdoc">Selects a task by its index.</div><div class="ttdef"><b>Definition</b> task_manager.cpp:85</div></div>
+<div class="ttc" id="aclassTaskManager_html_a844a6313afed60e7def0f79eaeae7b9e"><div class="ttname"><a href="classTaskManager.html#a844a6313afed60e7def0f79eaeae7b9e">TaskManager::previousTask</a></div><div class="ttdeci">void previousTask()</div><div class="ttdoc">Slot for changing to the previous task.</div><div class="ttdef"><b>Definition</b> task_manager.cpp:117</div></div>
+<div class="ttc" id="aclassTaskManager_html_a9a858cb5aae71b691204c8561322677e"><div class="ttname"><a href="classTaskManager.html#a9a858cb5aae71b691204c8561322677e">TaskManager::forceResetRobot</a></div><div class="ttdeci">void forceResetRobot()</div><div class="ttdoc">Forces the reset of the robot to its initial state.</div><div class="ttdef"><b>Definition</b> task_manager.cpp:167</div></div>
+<div class="ttc" id="aclassTaskManager_html_a9c906455542360f6760169599f2640a3"><div class="ttname"><a href="classTaskManager.html#a9c906455542360f6760169599f2640a3">TaskManager::TaskManager</a></div><div class="ttdeci">TaskManager(TaskUI *taskUI, QObject *parent=nullptr)</div><div class="ttdoc">Constructs a TaskManager object.</div><div class="ttdef"><b>Definition</b> task_manager.cpp:11</div></div>
+<div class="ttc" id="aclassTaskManager_html_a9f3de937346f77e565d555a59a8a0da0"><div class="ttname"><a href="classTaskManager.html#a9f3de937346f77e565d555a59a8a0da0">TaskManager::toggleSolution</a></div><div class="ttdeci">void toggleSolution(Subtask &amp;subtask)</div><div class="ttdoc">Show or hide the solution of a subtask.</div><div class="ttdef"><b>Definition</b> task_manager.cpp:71</div></div>
+<div class="ttc" id="aclassTaskManager_html_ac4c5170435b505415f49e40906888743"><div class="ttname"><a href="classTaskManager.html#ac4c5170435b505415f49e40906888743">TaskManager::startStopSubtask</a></div><div class="ttdeci">void startStopSubtask(Subtask &amp;subtask, bool startSolution=false)</div><div class="ttdoc">Starts or stops a subtask.</div><div class="ttdef"><b>Definition</b> task_manager.cpp:42</div></div>
+<div class="ttc" id="aclassTaskUI_html"><div class="ttname"><a href="classTaskUI.html">TaskUI</a></div><div class="ttdoc">Manages the user interface for tasks and subtasks.</div><div class="ttdef"><b>Definition</b> task_ui.hpp:24</div></div>
+<div class="ttc" id="astructSubtask_html"><div class="ttname"><a href="structSubtask.html">Subtask</a></div><div class="ttdoc">Represents a subtask within a task.</div><div class="ttdef"><b>Definition</b> task.hpp:31</div></div>
+<div class="ttc" id="atask_8hpp_html"><div class="ttname"><a href="task_8hpp.html">task.hpp</a></div></div>
+<div class="ttc" id="atask__executor_8hpp_html"><div class="ttname"><a href="task__executor_8hpp.html">task_executor.hpp</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8cpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..d3fdb88f25519ed5153d3d0de96fcbf3b60569c0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8cpp.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task_parser.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">task_parser.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="task__parser_8hpp_source.html">learn_environment/task_parser.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="folder__structure__constants_8hpp_source.html">learn_environment/folder_structure_constants.hpp</a>&quot;</code><br />
+<code>#include &lt;QFile&gt;</code><br />
+<code>#include &lt;QTextStream&gt;</code><br />
+<code>#include &lt;QDebug&gt;</code><br />
+<code>#include &lt;nlohmann/json.hpp&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for task_parser.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="task__parser_8cpp__incl.png" border="0" usemap="#atask__parser_8cpp" alt=""/></div>
+<map name="atask__parser_8cpp" id="atask__parser_8cpp">
+<area shape="rect" title=" " alt="" coords="502,5,617,32"/>
+<area shape="rect" href="task__parser_8hpp.html" title=" " alt="" coords="424,80,580,123"/>
+<area shape="poly" title=" " alt="" coords="553,34,528,69,523,66,549,31"/>
+<area shape="rect" title=" " alt="" coords="621,171,752,197"/>
+<area shape="poly" title=" " alt="" coords="571,31,669,157,665,160,567,34"/>
+<area shape="rect" href="folder__structure__constants_8hpp.html" title=" " alt="" coords="158,80,326,123"/>
+<area shape="poly" title=" " alt="" coords="510,35,340,78,338,73,509,30"/>
+<area shape="rect" title=" " alt="" coords="280,171,349,197"/>
+<area shape="poly" title=" " alt="" coords="516,35,465,54,413,82,369,121,334,160,330,157,365,117,410,78,463,49,514,30"/>
+<area shape="rect" title=" " alt="" coords="656,88,708,115"/>
+<area shape="poly" title=" " alt="" coords="580,30,652,77,649,82,577,35"/>
+<area shape="rect" title=" " alt="" coords="733,88,832,115"/>
+<area shape="poly" title=" " alt="" coords="595,30,734,80,732,85,594,35"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="475,171,546,197"/>
+<area shape="poly" title=" " alt="" coords="507,123,510,155,505,155,502,124"/>
+<area shape="rect" title=" " alt="" coords="295,245,360,272"/>
+<area shape="poly" title=" " alt="" coords="481,125,355,237,351,233,477,121"/>
+<area shape="rect" title=" " alt="" coords="384,245,452,272"/>
+<area shape="poly" title=" " alt="" coords="492,125,465,172,433,233,429,230,460,169,487,122"/>
+<area shape="rect" title=" " alt="" coords="606,245,719,272"/>
+<area shape="poly" title=" " alt="" coords="525,121,640,232,637,236,521,125"/>
+<area shape="poly" title=" " alt="" coords="551,121,645,162,643,167,549,126"/>
+<area shape="poly" title=" " alt="" coords="479,200,375,242,373,237,478,195"/>
+<area shape="poly" title=" " alt="" coords="496,200,448,238,444,234,493,196"/>
+<area shape="poly" title=" " alt="" coords="538,195,623,236,621,241,536,200"/>
+<area shape="rect" title=" " alt="" coords="476,245,582,272"/>
+<area shape="poly" title=" " alt="" coords="516,197,525,229,519,231,511,199"/>
+<area shape="poly" title=" " alt="" coords="247,123,255,158,270,196,285,216,302,233,298,237,280,219,265,199,250,160,242,124"/>
+<area shape="rect" title=" " alt="" coords="5,171,109,197"/>
+<area shape="poly" title=" " alt="" coords="196,126,101,167,99,162,194,121"/>
+<area shape="rect" title=" " alt="" coords="133,171,205,197"/>
+<area shape="poly" title=" " alt="" coords="225,125,193,161,189,157,221,121"/>
+<area shape="poly" title=" " alt="" coords="263,121,295,157,291,161,259,125"/>
+</map>
+</div>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8cpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8cpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..789c0faed7616a76f4aa4043ede47cafe4a91501
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8cpp__incl.map
@@ -0,0 +1,35 @@
+<map id="task_parser.cpp" name="task_parser.cpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="502,5,617,32"/>
+<area shape="rect" id="Node000002" href="$task__parser_8hpp.html" title=" " alt="" coords="424,80,580,123"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="553,34,528,69,523,66,549,31"/>
+<area shape="rect" id="Node000008" title=" " alt="" coords="621,171,752,197"/>
+<area shape="poly" id="edge19_Node000001_Node000008" title=" " alt="" coords="571,31,669,157,665,160,567,34"/>
+<area shape="rect" id="Node000009" href="$folder__structure__constants_8hpp.html" title=" " alt="" coords="158,80,326,123"/>
+<area shape="poly" id="edge11_Node000001_Node000009" title=" " alt="" coords="510,35,340,78,338,73,509,30"/>
+<area shape="rect" id="Node000012" title=" " alt="" coords="280,171,349,197"/>
+<area shape="poly" id="edge18_Node000001_Node000012" title=" " alt="" coords="516,35,465,54,413,82,369,121,334,160,330,157,365,117,410,78,463,49,514,30"/>
+<area shape="rect" id="Node000013" title=" " alt="" coords="656,88,708,115"/>
+<area shape="poly" id="edge16_Node000001_Node000013" title=" " alt="" coords="580,30,652,77,649,82,577,35"/>
+<area shape="rect" id="Node000014" title=" " alt="" coords="733,88,832,115"/>
+<area shape="poly" id="edge17_Node000001_Node000014" title=" " alt="" coords="595,30,734,80,732,85,594,35"/>
+<area shape="rect" id="Node000003" href="$task_8hpp.html" title=" " alt="" coords="475,171,546,197"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="507,123,510,155,505,155,502,124"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="295,245,360,272"/>
+<area shape="poly" id="edge8_Node000002_Node000004" title=" " alt="" coords="481,125,355,237,351,233,477,121"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="384,245,452,272"/>
+<area shape="poly" id="edge7_Node000002_Node000005" title=" " alt="" coords="492,125,465,172,433,233,429,230,460,169,487,122"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="606,245,719,272"/>
+<area shape="poly" id="edge9_Node000002_Node000006" title=" " alt="" coords="525,121,640,232,637,236,521,125"/>
+<area shape="poly" id="edge10_Node000002_Node000008" title=" " alt="" coords="551,121,645,162,643,167,549,126"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="479,200,375,242,373,237,478,195"/>
+<area shape="poly" id="edge4_Node000003_Node000005" title=" " alt="" coords="496,200,448,238,444,234,493,196"/>
+<area shape="poly" id="edge5_Node000003_Node000006" title=" " alt="" coords="538,195,623,236,621,241,536,200"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="476,245,582,272"/>
+<area shape="poly" id="edge6_Node000003_Node000007" title=" " alt="" coords="516,197,525,229,519,231,511,199"/>
+<area shape="poly" id="edge12_Node000009_Node000004" title=" " alt="" coords="247,123,255,158,270,196,285,216,302,233,298,237,280,219,265,199,250,160,242,124"/>
+<area shape="rect" id="Node000010" title=" " alt="" coords="5,171,109,197"/>
+<area shape="poly" id="edge13_Node000009_Node000010" title=" " alt="" coords="196,126,101,167,99,162,194,121"/>
+<area shape="rect" id="Node000011" title=" " alt="" coords="133,171,205,197"/>
+<area shape="poly" id="edge14_Node000009_Node000011" title=" " alt="" coords="225,125,193,161,189,157,221,121"/>
+<area shape="poly" id="edge15_Node000009_Node000012" title=" " alt="" coords="263,121,295,157,291,161,259,125"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..e6c73c2445919456b432733f239e2ddbdc474c7c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8cpp__incl.md5
@@ -0,0 +1 @@
+380f982fd38fbef5032b8149fc218c52
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8cpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8cpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..7859599cc8e33dfae56162052da158e692ed80f6
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8cpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..44487fa2da37feafbfe19d9430024934c2ed3d33
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp.html
@@ -0,0 +1,152 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task_parser.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">task_parser.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="task_8hpp_source.html">task.hpp</a>&quot;</code><br />
+<code>#include &lt;QVector&gt;</code><br />
+<code>#include &lt;QString&gt;</code><br />
+<code>#include &lt;QSharedPointer&gt;</code><br />
+<code>#include &lt;nlohmann/json.hpp&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for task_parser.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="task__parser_8hpp__incl.png" border="0" usemap="#atask__parser_8hpp" alt=""/></div>
+<map name="atask__parser_8hpp" id="atask__parser_8hpp">
+<area shape="rect" title=" " alt="" coords="145,5,259,32"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="166,80,238,107"/>
+<area shape="poly" title=" " alt="" coords="205,33,205,64,199,64,199,33"/>
+<area shape="rect" title=" " alt="" coords="5,155,71,181"/>
+<area shape="poly" title=" " alt="" coords="190,34,65,146,61,142,186,31"/>
+<area shape="rect" title=" " alt="" coords="94,155,163,181"/>
+<area shape="poly" title=" " alt="" coords="192,34,173,55,156,81,144,111,136,140,131,139,139,109,152,79,169,52,188,31"/>
+<area shape="rect" title=" " alt="" coords="316,155,429,181"/>
+<area shape="poly" title=" " alt="" coords="218,30,302,105,348,143,344,147,299,109,214,34"/>
+<area shape="rect" title=" " alt="" coords="313,80,443,107"/>
+<area shape="poly" title=" " alt="" coords="234,30,334,71,332,76,232,35"/>
+<area shape="poly" title=" " alt="" coords="175,110,82,150,80,145,172,105"/>
+<area shape="poly" title=" " alt="" coords="191,109,154,145,150,142,187,105"/>
+<area shape="poly" title=" " alt="" coords="233,105,330,146,328,151,231,110"/>
+<area shape="rect" title=" " alt="" coords="187,155,292,181"/>
+<area shape="poly" title=" " alt="" coords="211,106,228,140,224,142,206,108"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="task__parser_8hpp__dep__incl.png" border="0" usemap="#atask__parser_8hppdep" alt=""/></div>
+<map name="atask__parser_8hppdep" id="atask__parser_8hppdep">
+<area shape="rect" title=" " alt="" coords="84,5,199,32"/>
+<area shape="rect" href="task__manager_8cpp.html" title=" " alt="" coords="5,80,134,107"/>
+<area shape="poly" title=" " alt="" coords="120,45,84,81,80,78,116,41"/>
+<area shape="rect" href="task__parser_8cpp.html" title=" " alt="" coords="158,80,272,107"/>
+<area shape="poly" title=" " alt="" coords="167,41,204,78,200,82,163,45"/>
+</map>
+</div>
+</div>
+<p><a href="task__parser_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTaskParser.html">TaskParser</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parses tasks and subtasks from a JSON file.  <a href="classTaskParser.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..19c4be13dd1225ce5bea96c5a0cef8f1d7f66e49
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__dep__incl.map
@@ -0,0 +1,7 @@
+<map id="task_parser.hpp" name="task_parser.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="84,5,199,32"/>
+<area shape="rect" id="Node000002" href="$task__manager_8cpp.html" title=" " alt="" coords="5,80,134,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="120,45,84,81,80,78,116,41"/>
+<area shape="rect" id="Node000003" href="$task__parser_8cpp.html" title=" " alt="" coords="158,80,272,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="167,41,204,78,200,82,163,45"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..1b9e33ac3b55fdef42faf0d1f0e049bc53b1a573
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+582a12c980b08e99d775b94e070aed9a
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..0f191005b0b7c4d1df2b070b76298811c94c235e
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..bb98718c4f0506a26a56837d4639b452fc6a148e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__incl.map
@@ -0,0 +1,18 @@
+<map id="task_parser.hpp" name="task_parser.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="145,5,259,32"/>
+<area shape="rect" id="Node000002" href="$task_8hpp.html" title=" " alt="" coords="166,80,238,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="205,33,205,64,199,64,199,33"/>
+<area shape="rect" id="Node000003" title=" " alt="" coords="5,155,71,181"/>
+<area shape="poly" id="edge7_Node000001_Node000003" title=" " alt="" coords="190,34,65,146,61,142,186,31"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="94,155,163,181"/>
+<area shape="poly" id="edge6_Node000001_Node000004" title=" " alt="" coords="192,34,173,55,156,81,144,111,136,140,131,139,139,109,152,79,169,52,188,31"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="316,155,429,181"/>
+<area shape="poly" id="edge8_Node000001_Node000005" title=" " alt="" coords="218,30,302,105,348,143,344,147,299,109,214,34"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="313,80,443,107"/>
+<area shape="poly" id="edge9_Node000001_Node000007" title=" " alt="" coords="234,30,334,71,332,76,232,35"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="175,110,82,150,80,145,172,105"/>
+<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="191,109,154,145,150,142,187,105"/>
+<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="233,105,330,146,328,151,231,110"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="187,155,292,181"/>
+<area shape="poly" id="edge5_Node000002_Node000006" title=" " alt="" coords="211,106,228,140,224,142,206,108"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..10867ba57e6a7ba88cf3b0518dbd006734e423c0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__incl.md5
@@ -0,0 +1 @@
+cd14500152988098e5d626ac45527433
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..f5057d44ffcd015e31c4cc980688e5c5aabed0bf
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..7760d22ee51ee8cc64198525b3760ebfb20fc7ae
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__parser_8hpp_source.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task_parser.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">task_parser.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="task__parser_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef TASK_PARSER_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define TASK_PARSER_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &quot;<a class="code" href="task_8hpp.html">task.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span> </div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="preprocessor">#include &lt;QVector&gt;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &lt;QString&gt;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="preprocessor">#include &lt;QSharedPointer&gt;</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;nlohmann/json.hpp&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
+<div class="foldopen" id="foldopen00018" data-start="{" data-end="};">
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"><a class="line" href="classTaskParser.html">   18</a></span><span class="keyword">class </span><a class="code hl_class" href="classTaskParser.html">TaskParser</a> {</div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span>    QVector&lt;QSharedPointer&lt;Task&gt;&gt; <a class="code hl_function" href="classTaskParser.html#a86f40497d6666a02307886ed3a4056f3">loadTasks</a>(<span class="keyword">const</span> QString&amp; taskPath, <span class="keyword">const</span> QString&amp; difficultyPath, <span class="keyword">const</span> QString&amp; topicPath);</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span> </div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span>    <span class="keyword">using </span>json = nlohmann::json;</div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span>    QVector&lt;QSharedPointer&lt;Task&gt;&gt; parseTasks(<span class="keyword">const</span> json&amp; taskJsonData, <span class="keyword">const</span> json&amp; difficultyJsonData, <span class="keyword">const</span> json&amp; topicJsonData);</div>
+<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span> </div>
+<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span>    QVector&lt;Subtask&gt; parseSubtasks(<span class="keyword">const</span> json&amp; subtasksJson, QSharedPointer&lt;Task&gt; parentTask);</div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span>};</div>
+</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span> </div>
+<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span><span class="preprocessor">#endif </span><span class="comment">// TASK_PARSER_HPP</span></div>
+<div class="ttc" id="aclassTaskParser_html"><div class="ttname"><a href="classTaskParser.html">TaskParser</a></div><div class="ttdoc">Parses tasks and subtasks from a JSON file.</div><div class="ttdef"><b>Definition</b> task_parser.hpp:18</div></div>
+<div class="ttc" id="aclassTaskParser_html_a86f40497d6666a02307886ed3a4056f3"><div class="ttname"><a href="classTaskParser.html#a86f40497d6666a02307886ed3a4056f3">TaskParser::loadTasks</a></div><div class="ttdeci">QVector&lt; QSharedPointer&lt; Task &gt; &gt; loadTasks(const QString &amp;taskPath, const QString &amp;difficultyPath, const QString &amp;topicPath)</div><div class="ttdoc">Loads tasks with all configuration JSON files.</div><div class="ttdef"><b>Definition</b> task_parser.cpp:33</div></div>
+<div class="ttc" id="atask_8hpp_html"><div class="ttname"><a href="task_8hpp.html">task.hpp</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8cpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8cpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..f250912b6acc74582453dd960d1be48022c355b0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8cpp.html
@@ -0,0 +1,196 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task_ui.cpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">task_ui.cpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="task__ui_8hpp_source.html">learn_environment/task_ui.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="subtask__item_8hpp_source.html">learn_environment/subtask_item.hpp</a>&quot;</code><br />
+<code>#include &lt;QRegExp&gt;</code><br />
+<code>#include &lt;QSplitter&gt;</code><br />
+<code>#include &lt;QDebug&gt;</code><br />
+<code>#include &lt;QHBoxLayout&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for task_ui.cpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="task__ui_8cpp__incl.png" border="0" usemap="#atask__ui_8cpp" alt=""/></div>
+<map name="atask__ui_8cpp" id="atask__ui_8cpp">
+<area shape="rect" title=" " alt="" coords="1651,5,1739,32"/>
+<area shape="rect" href="task__ui_8hpp.html" title=" " alt="" coords="929,80,1085,123"/>
+<area shape="poly" title=" " alt="" coords="1651,28,1101,92,1100,86,1650,23"/>
+<area shape="rect" title=" " alt="" coords="1594,245,1697,272"/>
+<area shape="poly" title=" " alt="" coords="1695,33,1654,231,1649,230,1690,32"/>
+<area shape="rect" href="subtask__item_8hpp.html" title=" " alt="" coords="1217,80,1394,123"/>
+<area shape="poly" title=" " alt="" coords="1651,32,1410,81,1409,76,1650,27"/>
+<area shape="rect" title=" " alt="" coords="1694,88,1773,115"/>
+<area shape="poly" title=" " alt="" coords="1703,31,1723,73,1719,75,1698,34"/>
+<area shape="rect" title=" " alt="" coords="1797,88,1870,115"/>
+<area shape="poly" title=" " alt="" coords="1718,30,1800,78,1798,82,1715,35"/>
+<area shape="rect" title=" " alt="" coords="1894,88,1963,115"/>
+<area shape="poly" title=" " alt="" coords="1739,30,1882,77,1887,79,1885,84,1881,83,1737,35"/>
+<area shape="rect" href="sidebar_8hpp.html" title=" " alt="" coords="473,171,562,197"/>
+<area shape="poly" title=" " alt="" coords="929,117,582,173,577,174,576,169,581,168,928,112"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="992,320,1064,347"/>
+<area shape="poly" title=" " alt="" coords="1009,123,1010,158,1019,196,1026,210,1035,219,1044,229,1052,245,1054,259,1052,273,1042,306,1037,305,1047,271,1049,259,1047,246,1040,232,1031,223,1022,213,1014,198,1005,159,1003,123"/>
+<area shape="rect" title=" " alt="" coords="466,245,569,272"/>
+<area shape="poly" title=" " alt="" coords="928,109,863,116,788,128,710,146,635,173,584,203,543,237,539,232,581,199,632,168,708,141,787,123,862,111,928,104"/>
+<area shape="rect" title=" " alt="" coords="1208,245,1270,272"/>
+<area shape="poly" title=" " alt="" coords="1011,123,1020,160,1028,179,1041,195,1061,205,1100,218,1193,243,1192,248,1098,223,1059,210,1037,199,1024,182,1014,162,1006,124"/>
+<area shape="rect" href="task__manager_8hpp.html" title=" " alt="" coords="791,171,919,197"/>
+<area shape="poly" title=" " alt="" coords="969,126,893,165,891,161,966,121"/>
+<area shape="rect" title=" " alt="" coords="791,320,860,347"/>
+<area shape="poly" title=" " alt="" coords="929,118,839,141,803,156,781,172,773,188,769,205,775,241,790,276,809,306,804,309,785,279,769,243,764,205,768,186,777,169,800,151,838,136,928,113"/>
+<area shape="rect" href="execute__frame_8hpp.html" title=" " alt="" coords="1386,171,1518,197"/>
+<area shape="poly" title=" " alt="" coords="1086,114,1371,165,1370,171,1085,119"/>
+<area shape="rect" title=" " alt="" coords="1315,245,1384,272"/>
+<area shape="poly" title=" " alt="" coords="1020,122,1046,160,1064,179,1084,195,1115,206,1172,219,1301,245,1300,251,1171,224,1114,211,1082,200,1060,183,1042,163,1015,125"/>
+<area shape="rect" title=" " alt="" coords="1218,171,1311,197"/>
+<area shape="poly" title=" " alt="" coords="1074,121,1210,163,1208,168,1072,126"/>
+<area shape="rect" title=" " alt="" coords="1094,171,1194,197"/>
+<area shape="poly" title=" " alt="" coords="1044,121,1111,160,1108,165,1041,126"/>
+<area shape="rect" href="custom__list__widget_8hpp.html" title=" " alt="" coords="104,245,262,272"/>
+<area shape="poly" title=" " alt="" coords="473,198,257,244,256,239,472,192"/>
+<area shape="rect" title=" " alt="" coords="254,320,347,347"/>
+<area shape="poly" title=" " alt="" coords="473,190,437,195,398,205,359,222,326,247,310,275,304,305,298,304,305,273,322,244,356,218,396,200,436,190,472,185"/>
+<area shape="poly" title=" " alt="" coords="562,183,662,187,785,196,902,214,949,227,983,243,997,256,1009,272,1023,304,1019,306,1004,274,993,260,980,248,947,232,901,219,785,202,661,192,562,189"/>
+<area shape="rect" title=" " alt="" coords="726,395,840,421"/>
+<area shape="poly" title=" " alt="" coords="499,200,479,215,462,233,453,252,453,261,457,271,481,300,509,324,542,344,576,361,646,384,711,397,710,403,645,390,574,366,539,349,506,328,477,303,453,273,448,262,448,251,458,229,476,211,496,196"/>
+<area shape="rect" title=" " alt="" coords="593,245,666,272"/>
+<area shape="poly" title=" " alt="" coords="538,196,599,234,596,239,536,200"/>
+<area shape="poly" title=" " alt="" coords="520,198,520,230,515,230,515,198"/>
+<area shape="poly" title=" " alt="" coords="562,187,1193,250,1192,255,562,192"/>
+<area shape="rect" title=" " alt="" coords="336,245,392,272"/>
+<area shape="poly" title=" " alt="" coords="492,200,406,241,404,236,490,195"/>
+<area shape="poly" title=" " alt="" coords="205,270,268,309,266,314,202,275"/>
+<area shape="rect" title=" " alt="" coords="5,320,110,347"/>
+<area shape="poly" title=" " alt="" coords="162,275,94,314,91,310,160,270"/>
+<area shape="rect" title=" " alt="" coords="134,320,229,347"/>
+<area shape="poly" title=" " alt="" coords="185,273,185,304,179,304,180,272"/>
+<area shape="rect" title=" " alt="" coords="886,395,952,421"/>
+<area shape="poly" title=" " alt="" coords="1011,349,952,388,949,384,1008,345"/>
+<area shape="rect" title=" " alt="" coords="1105,395,1173,421"/>
+<area shape="poly" title=" " alt="" coords="1049,345,1108,384,1106,388,1046,349"/>
+<area shape="poly" title=" " alt="" coords="993,348,841,392,840,387,991,343"/>
+<area shape="rect" title=" " alt="" coords="976,395,1081,421"/>
+<area shape="poly" title=" " alt="" coords="1031,347,1031,379,1026,379,1026,347"/>
+<area shape="poly" title=" " alt="" coords="912,195,981,216,1009,229,1028,244,1035,258,1038,274,1037,304,1032,304,1033,274,1030,260,1023,247,1007,234,979,221,910,200"/>
+<area shape="poly" title=" " alt="" coords="920,190,987,208,1021,223,1051,243,1081,275,1105,311,1133,379,1128,381,1100,314,1077,278,1048,247,1018,228,985,213,919,195"/>
+<area shape="poly" title=" " alt="" coords="847,199,812,250,795,284,781,321,778,351,780,379,775,380,773,350,776,319,790,282,808,247,843,196"/>
+<area shape="rect" href="task__executor_8hpp.html" title=" " alt="" coords="841,245,970,272"/>
+<area shape="poly" title=" " alt="" coords="866,196,890,231,886,234,861,199"/>
+<area shape="poly" title=" " alt="" coords="851,199,832,246,828,276,827,304,822,304,823,275,827,245,846,197"/>
+<area shape="poly" title=" " alt="" coords="928,270,995,309,992,314,926,275"/>
+<area shape="poly" title=" " alt="" coords="911,272,919,320,922,379,916,379,914,320,906,273"/>
+<area shape="poly" title=" " alt="" coords="906,273,896,309,874,348,851,371,825,389,822,385,847,367,870,345,891,307,901,272"/>
+<area shape="poly" title=" " alt="" coords="893,275,852,312,849,308,890,271"/>
+<area shape="poly" title=" " alt="" coords="1416,200,1285,244,1284,239,1414,195"/>
+<area shape="poly" title=" " alt="" coords="1436,200,1382,238,1379,234,1433,196"/>
+<area shape="rect" title=" " alt="" coords="1419,245,1485,272"/>
+<area shape="poly" title=" " alt="" coords="1455,198,1455,230,1450,230,1450,198"/>
+<area shape="poly" title=" " alt="" coords="1487,195,1598,237,1597,242,1485,200"/>
+<area shape="poly" title=" " alt="" coords="1395,103,1433,110,1470,122,1505,141,1533,169,1539,183,1541,198,1533,228,1517,256,1499,274,1466,291,1420,304,1304,322,1181,331,1079,334,1079,329,1180,326,1304,317,1419,299,1464,286,1496,270,1513,252,1528,226,1536,197,1534,184,1529,172,1502,146,1468,127,1431,115,1394,108"/>
+<area shape="poly" title=" " alt="" coords="1217,115,961,145,845,161,780,173,714,204,660,238,657,234,711,199,778,168,844,155,960,139,1216,110"/>
+<area shape="poly" title=" " alt="" coords="1217,114,928,145,794,161,718,173,629,205,554,240,552,236,627,200,717,168,794,156,927,139,1216,109"/>
+<area shape="poly" title=" " alt="" coords="1319,122,1330,158,1331,179,1325,199,1307,222,1283,240,1280,235,1303,218,1320,196,1326,178,1325,159,1314,124"/>
+<area shape="poly" title=" " alt="" coords="1217,121,935,171,934,166,1216,116"/>
+<area shape="poly" title=" " alt="" coords="1345,121,1418,161,1415,165,1342,126"/>
+<area shape="poly" title=" " alt="" coords="1395,108,1486,128,1533,146,1576,168,1609,198,1633,231,1629,234,1606,202,1573,173,1531,150,1485,134,1394,113"/>
+<area shape="poly" title=" " alt="" coords="1297,124,1280,158,1275,155,1292,122"/>
+<area shape="poly" title=" " alt="" coords="1265,126,1184,166,1182,161,1263,121"/>
+</map>
+</div>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8cpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8cpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..659c59b30a93ae4824f5c477ca0536a4c891954d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8cpp__incl.map
@@ -0,0 +1,84 @@
+<map id="task_ui.cpp" name="task_ui.cpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="1651,5,1739,32"/>
+<area shape="rect" id="Node000002" href="$task__ui_8hpp.html" title=" " alt="" coords="929,80,1085,123"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="1651,28,1101,92,1100,86,1650,23"/>
+<area shape="rect" id="Node000023" title=" " alt="" coords="1594,245,1697,272"/>
+<area shape="poly" id="edge53_Node000001_Node000023" title=" " alt="" coords="1695,33,1654,231,1649,230,1690,32"/>
+<area shape="rect" id="Node000026" href="$subtask__item_8hpp.html" title=" " alt="" coords="1217,80,1394,123"/>
+<area shape="poly" id="edge40_Node000001_Node000026" title=" " alt="" coords="1651,32,1410,81,1409,76,1650,27"/>
+<area shape="rect" id="Node000027" title=" " alt="" coords="1694,88,1773,115"/>
+<area shape="poly" id="edge50_Node000001_Node000027" title=" " alt="" coords="1703,31,1723,73,1719,75,1698,34"/>
+<area shape="rect" id="Node000028" title=" " alt="" coords="1797,88,1870,115"/>
+<area shape="poly" id="edge51_Node000001_Node000028" title=" " alt="" coords="1718,30,1800,78,1798,82,1715,35"/>
+<area shape="rect" id="Node000029" title=" " alt="" coords="1894,88,1963,115"/>
+<area shape="poly" id="edge52_Node000001_Node000029" title=" " alt="" coords="1739,30,1882,77,1887,79,1885,84,1881,83,1737,35"/>
+<area shape="rect" id="Node000003" href="$sidebar_8hpp.html" title=" " alt="" coords="473,171,562,197"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="929,117,582,173,577,174,576,169,581,168,928,112"/>
+<area shape="rect" id="Node000008" href="$task_8hpp.html" title=" " alt="" coords="992,320,1064,347"/>
+<area shape="poly" id="edge18_Node000002_Node000008" title=" " alt="" coords="1009,123,1010,158,1019,196,1026,210,1035,219,1044,229,1052,245,1054,259,1052,273,1042,306,1037,305,1047,271,1049,259,1047,246,1040,232,1031,223,1022,213,1014,198,1005,159,1003,123"/>
+<area shape="rect" id="Node000014" title=" " alt="" coords="466,245,569,272"/>
+<area shape="poly" id="edge35_Node000002_Node000014" title=" " alt="" coords="928,109,863,116,788,128,710,146,635,173,584,203,543,237,539,232,581,199,632,168,708,141,787,123,862,111,928,104"/>
+<area shape="rect" id="Node000015" title=" " alt="" coords="1208,245,1270,272"/>
+<area shape="poly" id="edge36_Node000002_Node000015" title=" " alt="" coords="1011,123,1020,160,1028,179,1041,195,1061,205,1100,218,1193,243,1192,248,1098,223,1059,210,1037,199,1024,182,1014,162,1006,124"/>
+<area shape="rect" id="Node000017" href="$task__manager_8hpp.html" title=" " alt="" coords="791,171,919,197"/>
+<area shape="poly" id="edge19_Node000002_Node000017" title=" " alt="" coords="969,126,893,165,891,161,966,121"/>
+<area shape="rect" id="Node000019" title=" " alt="" coords="791,320,860,347"/>
+<area shape="poly" id="edge34_Node000002_Node000019" title=" " alt="" coords="929,118,839,141,803,156,781,172,773,188,769,205,775,241,790,276,809,306,804,309,785,279,769,243,764,205,768,186,777,169,800,151,838,136,928,113"/>
+<area shape="rect" id="Node000020" href="$execute__frame_8hpp.html" title=" " alt="" coords="1386,171,1518,197"/>
+<area shape="poly" id="edge29_Node000002_Node000020" title=" " alt="" coords="1086,114,1371,165,1370,171,1085,119"/>
+<area shape="rect" id="Node000021" title=" " alt="" coords="1315,245,1384,272"/>
+<area shape="poly" id="edge39_Node000002_Node000021" title=" " alt="" coords="1020,122,1046,160,1064,179,1084,195,1115,206,1172,219,1301,245,1300,251,1171,224,1114,211,1082,200,1060,183,1042,163,1015,125"/>
+<area shape="rect" id="Node000024" title=" " alt="" coords="1218,171,1311,197"/>
+<area shape="poly" id="edge37_Node000002_Node000024" title=" " alt="" coords="1074,121,1210,163,1208,168,1072,126"/>
+<area shape="rect" id="Node000025" title=" " alt="" coords="1094,171,1194,197"/>
+<area shape="poly" id="edge38_Node000002_Node000025" title=" " alt="" coords="1044,121,1111,160,1108,165,1041,126"/>
+<area shape="rect" id="Node000004" href="$custom__list__widget_8hpp.html" title=" " alt="" coords="104,245,262,272"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="473,198,257,244,256,239,472,192"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="254,320,347,347"/>
+<area shape="poly" id="edge16_Node000003_Node000005" title=" " alt="" coords="473,190,437,195,398,205,359,222,326,247,310,275,304,305,298,304,305,273,322,244,356,218,396,200,436,190,472,185"/>
+<area shape="poly" id="edge7_Node000003_Node000008" title=" " alt="" coords="562,183,662,187,785,196,902,214,949,227,983,243,997,256,1009,272,1023,304,1019,306,1004,274,993,260,980,248,947,232,901,219,785,202,661,192,562,189"/>
+<area shape="rect" id="Node000011" title=" " alt="" coords="726,395,840,421"/>
+<area shape="poly" id="edge17_Node000003_Node000011" title=" " alt="" coords="499,200,479,215,462,233,453,252,453,261,457,271,481,300,509,324,542,344,576,361,646,384,711,397,710,403,645,390,574,366,539,349,506,328,477,303,453,273,448,262,448,251,458,229,476,211,496,196"/>
+<area shape="rect" id="Node000013" title=" " alt="" coords="593,245,666,272"/>
+<area shape="poly" id="edge12_Node000003_Node000013" title=" " alt="" coords="538,196,599,234,596,239,536,200"/>
+<area shape="poly" id="edge13_Node000003_Node000014" title=" " alt="" coords="520,198,520,230,515,230,515,198"/>
+<area shape="poly" id="edge14_Node000003_Node000015" title=" " alt="" coords="562,187,1193,250,1192,255,562,192"/>
+<area shape="rect" id="Node000016" title=" " alt="" coords="336,245,392,272"/>
+<area shape="poly" id="edge15_Node000003_Node000016" title=" " alt="" coords="492,200,406,241,404,236,490,195"/>
+<area shape="poly" id="edge4_Node000004_Node000005" title=" " alt="" coords="205,270,268,309,266,314,202,275"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="5,320,110,347"/>
+<area shape="poly" id="edge5_Node000004_Node000006" title=" " alt="" coords="162,275,94,314,91,310,160,270"/>
+<area shape="rect" id="Node000007" title=" " alt="" coords="134,320,229,347"/>
+<area shape="poly" id="edge6_Node000004_Node000007" title=" " alt="" coords="185,273,185,304,179,304,180,272"/>
+<area shape="rect" id="Node000009" title=" " alt="" coords="886,395,952,421"/>
+<area shape="poly" id="edge8_Node000008_Node000009" title=" " alt="" coords="1011,349,952,388,949,384,1008,345"/>
+<area shape="rect" id="Node000010" title=" " alt="" coords="1105,395,1173,421"/>
+<area shape="poly" id="edge9_Node000008_Node000010" title=" " alt="" coords="1049,345,1108,384,1106,388,1046,349"/>
+<area shape="poly" id="edge10_Node000008_Node000011" title=" " alt="" coords="993,348,841,392,840,387,991,343"/>
+<area shape="rect" id="Node000012" title=" " alt="" coords="976,395,1081,421"/>
+<area shape="poly" id="edge11_Node000008_Node000012" title=" " alt="" coords="1031,347,1031,379,1026,379,1026,347"/>
+<area shape="poly" id="edge20_Node000017_Node000008" title=" " alt="" coords="912,195,981,216,1009,229,1028,244,1035,258,1038,274,1037,304,1032,304,1033,274,1030,260,1023,247,1007,234,979,221,910,200"/>
+<area shape="poly" id="edge27_Node000017_Node000010" title=" " alt="" coords="920,190,987,208,1021,223,1051,243,1081,275,1105,311,1133,379,1128,381,1100,314,1077,278,1048,247,1018,228,985,213,919,195"/>
+<area shape="poly" id="edge28_Node000017_Node000011" title=" " alt="" coords="847,199,812,250,795,284,781,321,778,351,780,379,775,380,773,350,776,319,790,282,808,247,843,196"/>
+<area shape="rect" id="Node000018" href="$task__executor_8hpp.html" title=" " alt="" coords="841,245,970,272"/>
+<area shape="poly" id="edge21_Node000017_Node000018" title=" " alt="" coords="866,196,890,231,886,234,861,199"/>
+<area shape="poly" id="edge26_Node000017_Node000019" title=" " alt="" coords="851,199,832,246,828,276,827,304,822,304,823,275,827,245,846,197"/>
+<area shape="poly" id="edge22_Node000018_Node000008" title=" " alt="" coords="928,270,995,309,992,314,926,275"/>
+<area shape="poly" id="edge24_Node000018_Node000009" title=" " alt="" coords="911,272,919,320,922,379,916,379,914,320,906,273"/>
+<area shape="poly" id="edge25_Node000018_Node000011" title=" " alt="" coords="906,273,896,309,874,348,851,371,825,389,822,385,847,367,870,345,891,307,901,272"/>
+<area shape="poly" id="edge23_Node000018_Node000019" title=" " alt="" coords="893,275,852,312,849,308,890,271"/>
+<area shape="poly" id="edge31_Node000020_Node000015" title=" " alt="" coords="1416,200,1285,244,1284,239,1414,195"/>
+<area shape="poly" id="edge30_Node000020_Node000021" title=" " alt="" coords="1436,200,1382,238,1379,234,1433,196"/>
+<area shape="rect" id="Node000022" title=" " alt="" coords="1419,245,1485,272"/>
+<area shape="poly" id="edge32_Node000020_Node000022" title=" " alt="" coords="1455,198,1455,230,1450,230,1450,198"/>
+<area shape="poly" id="edge33_Node000020_Node000023" title=" " alt="" coords="1487,195,1598,237,1597,242,1485,200"/>
+<area shape="poly" id="edge41_Node000026_Node000008" title=" " alt="" coords="1395,103,1433,110,1470,122,1505,141,1533,169,1539,183,1541,198,1533,228,1517,256,1499,274,1466,291,1420,304,1304,322,1181,331,1079,334,1079,329,1180,326,1304,317,1419,299,1464,286,1496,270,1513,252,1528,226,1536,197,1534,184,1529,172,1502,146,1468,127,1431,115,1394,108"/>
+<area shape="poly" id="edge44_Node000026_Node000013" title=" " alt="" coords="1217,115,961,145,845,161,780,173,714,204,660,238,657,234,711,199,778,168,844,155,960,139,1216,110"/>
+<area shape="poly" id="edge49_Node000026_Node000014" title=" " alt="" coords="1217,114,928,145,794,161,718,173,629,205,554,240,552,236,627,200,717,168,794,156,927,139,1216,109"/>
+<area shape="poly" id="edge47_Node000026_Node000015" title=" " alt="" coords="1319,122,1330,158,1331,179,1325,199,1307,222,1283,240,1280,235,1303,218,1320,196,1326,178,1325,159,1314,124"/>
+<area shape="poly" id="edge42_Node000026_Node000017" title=" " alt="" coords="1217,121,935,171,934,166,1216,116"/>
+<area shape="poly" id="edge43_Node000026_Node000020" title=" " alt="" coords="1345,121,1418,161,1415,165,1342,126"/>
+<area shape="poly" id="edge48_Node000026_Node000023" title=" " alt="" coords="1395,108,1486,128,1533,146,1576,168,1609,198,1633,231,1629,234,1606,202,1573,173,1531,150,1485,134,1394,113"/>
+<area shape="poly" id="edge46_Node000026_Node000024" title=" " alt="" coords="1297,124,1280,158,1275,155,1292,122"/>
+<area shape="poly" id="edge45_Node000026_Node000025" title=" " alt="" coords="1265,126,1184,166,1182,161,1263,121"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8f7f023824ffda89d0dbb48360aabba7a5c8a47b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8cpp__incl.md5
@@ -0,0 +1 @@
+c46096fa792205a9d198bb662f349c4d
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8cpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8cpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ecc947fa31ec31a6e5b848f4893f8bd01ce26a5
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8cpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp.html
new file mode 100644
index 0000000000000000000000000000000000000000..0f3479fadd4bce923c235a226c6e565bc7f2242e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp.html
@@ -0,0 +1,208 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task_ui.hpp File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="summary">
+<a href="#nested-classes">Classes</a>  </div>
+  <div class="headertitle"><div class="title">task_ui.hpp File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><code>#include &quot;<a class="el" href="sidebar_8hpp_source.html">sidebar.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task_8hpp_source.html">task.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="task__manager_8hpp_source.html">task_manager.hpp</a>&quot;</code><br />
+<code>#include &quot;<a class="el" href="execute__frame_8hpp_source.html">execute_frame.hpp</a>&quot;</code><br />
+<code>#include &lt;QObject&gt;</code><br />
+<code>#include &lt;QVBoxLayout&gt;</code><br />
+<code>#include &lt;QLabel&gt;</code><br />
+<code>#include &lt;QToolButton&gt;</code><br />
+<code>#include &lt;QPushButton&gt;</code><br />
+<code>#include &lt;QFrame&gt;</code><br />
+</div><div class="textblock"><div class="dynheader">
+Include dependency graph for task_ui.hpp:</div>
+<div class="dyncontent">
+<div class="center"><img src="task__ui_8hpp__incl.png" border="0" usemap="#atask__ui_8hpp" alt=""/></div>
+<map name="atask__ui_8hpp" id="atask__ui_8hpp">
+<area shape="rect" title=" " alt="" coords="1073,5,1161,32"/>
+<area shape="rect" href="sidebar_8hpp.html" title=" " alt="" coords="480,80,568,107"/>
+<area shape="poly" title=" " alt="" coords="1073,28,584,87,583,82,1072,23"/>
+<area shape="rect" href="task_8hpp.html" title=" " alt="" coords="925,229,997,256"/>
+<area shape="poly" title=" " alt="" coords="1074,33,1026,51,1003,65,983,82,964,105,954,126,951,151,953,181,958,214,952,215,948,182,946,150,949,125,960,102,979,78,1000,61,1024,46,1072,28"/>
+<area shape="rect" title=" " alt="" coords="611,155,714,181"/>
+<area shape="poly" title=" " alt="" coords="1073,28,959,47,892,62,826,82,755,114,696,148,693,144,753,110,824,78,891,57,958,41,1072,22"/>
+<area shape="rect" title=" " alt="" coords="738,155,800,181"/>
+<area shape="poly" title=" " alt="" coords="1073,27,977,44,922,60,870,82,826,112,791,145,788,142,823,108,868,78,920,55,975,39,1072,22"/>
+<area shape="rect" href="task__manager_8hpp.html" title=" " alt="" coords="993,80,1121,107"/>
+<area shape="poly" title=" " alt="" coords="1109,34,1079,70,1075,66,1105,31"/>
+<area shape="rect" title=" " alt="" coords="1106,229,1176,256"/>
+<area shape="poly" title=" " alt="" coords="1124,32,1136,80,1143,152,1144,214,1139,214,1138,153,1130,80,1118,33"/>
+<area shape="rect" href="execute__frame_8hpp.html" title=" " alt="" coords="1264,80,1396,107"/>
+<area shape="poly" title=" " alt="" coords="1155,30,1280,72,1278,77,1153,35"/>
+<area shape="rect" title=" " alt="" coords="1280,155,1348,181"/>
+<area shape="poly" title=" " alt="" coords="1135,30,1287,143,1284,147,1132,35"/>
+<area shape="rect" title=" " alt="" coords="1421,80,1514,107"/>
+<area shape="poly" title=" " alt="" coords="1162,27,1406,77,1405,82,1161,32"/>
+<area shape="rect" title=" " alt="" coords="1538,80,1637,107"/>
+<area shape="poly" title=" " alt="" coords="1162,23,1317,45,1523,77,1522,82,1317,50,1161,28"/>
+<area shape="rect" href="custom__list__widget_8hpp.html" title=" " alt="" coords="100,155,259,181"/>
+<area shape="poly" title=" " alt="" coords="480,107,255,154,254,148,479,101"/>
+<area shape="rect" title=" " alt="" coords="253,229,346,256"/>
+<area shape="poly" title=" " alt="" coords="480,98,442,103,400,113,359,130,324,157,315,169,309,184,303,215,297,214,304,182,310,167,320,153,356,126,398,108,441,98,479,93"/>
+<area shape="poly" title=" " alt="" coords="533,106,560,143,579,163,601,179,659,199,742,215,910,234,909,240,741,220,657,204,598,184,575,167,555,146,529,109"/>
+<area shape="rect" title=" " alt="" coords="771,304,884,331"/>
+<area shape="poly" title=" " alt="" coords="529,106,541,142,551,162,564,180,612,220,666,253,720,278,769,296,767,301,718,283,663,258,609,224,560,183,546,164,536,144,524,108"/>
+<area shape="rect" title=" " alt="" coords="334,155,406,181"/>
+<area shape="poly" title=" " alt="" coords="498,110,412,150,410,145,496,105"/>
+<area shape="poly" title=" " alt="" coords="549,105,626,145,623,149,547,110"/>
+<area shape="poly" title=" " alt="" coords="567,105,724,151,722,156,566,110"/>
+<area shape="rect" title=" " alt="" coords="430,155,486,181"/>
+<area shape="poly" title=" " alt="" coords="514,109,482,145,478,141,510,105"/>
+<area shape="poly" title=" " alt="" coords="202,180,267,219,264,223,199,184"/>
+<area shape="rect" title=" " alt="" coords="125,229,229,256"/>
+<area shape="poly" title=" " alt="" coords="182,182,181,214,175,214,177,182"/>
+<area shape="rect" title=" " alt="" coords="5,229,101,256"/>
+<area shape="poly" title=" " alt="" coords="159,184,90,224,87,219,156,180"/>
+<area shape="rect" title=" " alt="" coords="1038,304,1103,331"/>
+<area shape="poly" title=" " alt="" coords="982,254,1040,293,1037,298,979,259"/>
+<area shape="rect" title=" " alt="" coords="1167,304,1235,331"/>
+<area shape="poly" title=" " alt="" coords="998,252,1153,299,1152,304,996,257"/>
+<area shape="poly" title=" " alt="" coords="939,259,865,299,863,294,937,254"/>
+<area shape="rect" title=" " alt="" coords="908,304,1014,331"/>
+<area shape="poly" title=" " alt="" coords="964,257,964,288,958,288,958,257"/>
+<area shape="poly" title=" " alt="" coords="1024,110,991,128,977,141,966,156,958,185,958,214,953,215,952,184,961,153,973,137,988,124,1021,105"/>
+<area shape="poly" title=" " alt="" coords="1080,105,1111,126,1142,153,1171,187,1190,228,1198,259,1202,288,1197,289,1193,260,1185,230,1166,190,1138,157,1107,130,1077,109"/>
+<area shape="poly" title=" " alt="" coords="1031,110,992,130,952,157,912,191,879,231,842,292,838,289,875,228,908,187,949,153,990,126,1029,105"/>
+<area shape="rect" href="task__executor_8hpp.html" title=" " alt="" coords="976,155,1104,181"/>
+<area shape="poly" title=" " alt="" coords="1057,108,1049,140,1044,139,1051,107"/>
+<area shape="poly" title=" " alt="" coords="1075,105,1097,126,1118,153,1131,184,1139,213,1134,214,1126,185,1113,156,1093,130,1071,109"/>
+<area shape="poly" title=" " alt="" coords="1028,184,988,221,984,217,1024,180"/>
+<area shape="poly" title=" " alt="" coords="1045,181,1067,288,1062,289,1040,182"/>
+<area shape="poly" title=" " alt="" coords="1006,184,961,204,915,232,879,262,849,294,845,290,875,258,911,227,959,199,1004,179"/>
+<area shape="poly" title=" " alt="" coords="1059,180,1112,218,1109,222,1056,184"/>
+<area shape="poly" title=" " alt="" coords="1264,106,816,163,815,158,1263,101"/>
+<area shape="poly" title=" " alt="" coords="1330,108,1323,140,1318,139,1325,107"/>
+<area shape="rect" title=" " alt="" coords="1373,155,1440,181"/>
+<area shape="poly" title=" " alt="" coords="1345,105,1384,142,1381,146,1342,109"/>
+<area shape="rect" title=" " alt="" coords="1464,155,1567,181"/>
+<area shape="poly" title=" " alt="" coords="1364,105,1470,146,1468,151,1362,110"/>
+</map>
+</div>
+</div><div class="textblock"><div class="dynheader">
+This graph shows which files directly or indirectly include this file:</div>
+<div class="dyncontent">
+<div class="center"><img src="task__ui_8hpp__dep__incl.png" border="0" usemap="#atask__ui_8hppdep" alt=""/></div>
+<map name="atask__ui_8hppdep" id="atask__ui_8hppdep">
+<area shape="rect" title=" " alt="" coords="176,5,264,32"/>
+<area shape="rect" href="learn__environment_8cpp.html" title=" " alt="" coords="5,155,158,181"/>
+<area shape="poly" title=" " alt="" coords="161,27,131,33,102,44,75,60,53,81,48,99,52,118,73,153,68,156,47,120,42,99,49,79,71,55,99,39,130,28,160,22"/>
+<area shape="rect" href="learn__environment_8hpp.html" title=" " alt="" coords="63,80,215,107"/>
+<area shape="poly" title=" " alt="" coords="197,44,155,82,151,78,193,41"/>
+<area shape="rect" href="task__manager_8cpp.html" title=" " alt="" coords="239,80,367,107"/>
+<area shape="poly" title=" " alt="" coords="248,40,290,78,287,82,244,45"/>
+<area shape="rect" href="task__ui_8cpp.html" title=" " alt="" coords="391,80,479,107"/>
+<area shape="poly" title=" " alt="" coords="272,35,398,77,396,82,271,40"/>
+<area shape="poly" title=" " alt="" coords="122,121,93,156,89,153,117,117"/>
+</map>
+</div>
+</div>
+<p><a href="task__ui_8hpp_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
+Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTaskUI.html">TaskUI</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Manages the user interface for tasks and subtasks.  <a href="classTaskUI.html#details">More...</a><br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__dep__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__dep__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..c97f9ae4b3370c15af27e5eab66938e5c02657ed
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__dep__incl.map
@@ -0,0 +1,12 @@
+<map id="task_ui.hpp" name="task_ui.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="176,5,264,32"/>
+<area shape="rect" id="Node000002" href="$learn__environment_8cpp.html" title=" " alt="" coords="5,155,158,181"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="161,27,131,33,102,44,75,60,53,81,48,99,52,118,73,153,68,156,47,120,42,99,49,79,71,55,99,39,130,28,160,22"/>
+<area shape="rect" id="Node000003" href="$learn__environment_8hpp.html" title=" " alt="" coords="63,80,215,107"/>
+<area shape="poly" id="edge2_Node000001_Node000003" title=" " alt="" coords="197,44,155,82,151,78,193,41"/>
+<area shape="rect" id="Node000004" href="$task__manager_8cpp.html" title=" " alt="" coords="239,80,367,107"/>
+<area shape="poly" id="edge4_Node000001_Node000004" title=" " alt="" coords="248,40,290,78,287,82,244,45"/>
+<area shape="rect" id="Node000005" href="$task__ui_8cpp.html" title=" " alt="" coords="391,80,479,107"/>
+<area shape="poly" id="edge5_Node000001_Node000005" title=" " alt="" coords="272,35,398,77,396,82,271,40"/>
+<area shape="poly" id="edge3_Node000003_Node000002" title=" " alt="" coords="122,121,93,156,89,153,117,117"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..967fb1cd00b0038fa582ecc8355ed22e9fce3e00
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+0175ae529ef59cd6ffcaee134a9717ab
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__dep__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__dep__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..72508e5d2197f8030af5a201b5c286fcc7cbaa93
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__dep__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__incl.map b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__incl.map
new file mode 100644
index 0000000000000000000000000000000000000000..619347f9249c07f73ab673ff5e86e37f964bf79a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__incl.map
@@ -0,0 +1,64 @@
+<map id="task_ui.hpp" name="task_ui.hpp">
+<area shape="rect" id="Node000001" title=" " alt="" coords="1073,5,1161,32"/>
+<area shape="rect" id="Node000002" href="$sidebar_8hpp.html" title=" " alt="" coords="480,80,568,107"/>
+<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="1073,28,584,87,583,82,1072,23"/>
+<area shape="rect" id="Node000007" href="$task_8hpp.html" title=" " alt="" coords="925,229,997,256"/>
+<area shape="poly" id="edge17_Node000001_Node000007" title=" " alt="" coords="1074,33,1026,51,1003,65,983,82,964,105,954,126,951,151,953,181,958,214,952,215,948,182,946,150,949,125,960,102,979,78,1000,61,1024,46,1072,28"/>
+<area shape="rect" id="Node000013" title=" " alt="" coords="611,155,714,181"/>
+<area shape="poly" id="edge34_Node000001_Node000013" title=" " alt="" coords="1073,28,959,47,892,62,826,82,755,114,696,148,693,144,753,110,824,78,891,57,958,41,1072,22"/>
+<area shape="rect" id="Node000014" title=" " alt="" coords="738,155,800,181"/>
+<area shape="poly" id="edge35_Node000001_Node000014" title=" " alt="" coords="1073,27,977,44,922,60,870,82,826,112,791,145,788,142,823,108,868,78,920,55,975,39,1072,22"/>
+<area shape="rect" id="Node000016" href="$task__manager_8hpp.html" title=" " alt="" coords="993,80,1121,107"/>
+<area shape="poly" id="edge18_Node000001_Node000016" title=" " alt="" coords="1109,34,1079,70,1075,66,1105,31"/>
+<area shape="rect" id="Node000018" title=" " alt="" coords="1106,229,1176,256"/>
+<area shape="poly" id="edge33_Node000001_Node000018" title=" " alt="" coords="1124,32,1136,80,1143,152,1144,214,1139,214,1138,153,1130,80,1118,33"/>
+<area shape="rect" id="Node000019" href="$execute__frame_8hpp.html" title=" " alt="" coords="1264,80,1396,107"/>
+<area shape="poly" id="edge28_Node000001_Node000019" title=" " alt="" coords="1155,30,1280,72,1278,77,1153,35"/>
+<area shape="rect" id="Node000020" title=" " alt="" coords="1280,155,1348,181"/>
+<area shape="poly" id="edge38_Node000001_Node000020" title=" " alt="" coords="1135,30,1287,143,1284,147,1132,35"/>
+<area shape="rect" id="Node000023" title=" " alt="" coords="1421,80,1514,107"/>
+<area shape="poly" id="edge36_Node000001_Node000023" title=" " alt="" coords="1162,27,1406,77,1405,82,1161,32"/>
+<area shape="rect" id="Node000024" title=" " alt="" coords="1538,80,1637,107"/>
+<area shape="poly" id="edge37_Node000001_Node000024" title=" " alt="" coords="1162,23,1317,45,1523,77,1522,82,1317,50,1161,28"/>
+<area shape="rect" id="Node000003" href="$custom__list__widget_8hpp.html" title=" " alt="" coords="100,155,259,181"/>
+<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="480,107,255,154,254,148,479,101"/>
+<area shape="rect" id="Node000004" title=" " alt="" coords="253,229,346,256"/>
+<area shape="poly" id="edge15_Node000002_Node000004" title=" " alt="" coords="480,98,442,103,400,113,359,130,324,157,315,169,309,184,303,215,297,214,304,182,310,167,320,153,356,126,398,108,441,98,479,93"/>
+<area shape="poly" id="edge6_Node000002_Node000007" title=" " alt="" coords="533,106,560,143,579,163,601,179,659,199,742,215,910,234,909,240,741,220,657,204,598,184,575,167,555,146,529,109"/>
+<area shape="rect" id="Node000010" title=" " alt="" coords="771,304,884,331"/>
+<area shape="poly" id="edge16_Node000002_Node000010" title=" " alt="" coords="529,106,541,142,551,162,564,180,612,220,666,253,720,278,769,296,767,301,718,283,663,258,609,224,560,183,546,164,536,144,524,108"/>
+<area shape="rect" id="Node000012" title=" " alt="" coords="334,155,406,181"/>
+<area shape="poly" id="edge11_Node000002_Node000012" title=" " alt="" coords="498,110,412,150,410,145,496,105"/>
+<area shape="poly" id="edge12_Node000002_Node000013" title=" " alt="" coords="549,105,626,145,623,149,547,110"/>
+<area shape="poly" id="edge13_Node000002_Node000014" title=" " alt="" coords="567,105,724,151,722,156,566,110"/>
+<area shape="rect" id="Node000015" title=" " alt="" coords="430,155,486,181"/>
+<area shape="poly" id="edge14_Node000002_Node000015" title=" " alt="" coords="514,109,482,145,478,141,510,105"/>
+<area shape="poly" id="edge3_Node000003_Node000004" title=" " alt="" coords="202,180,267,219,264,223,199,184"/>
+<area shape="rect" id="Node000005" title=" " alt="" coords="125,229,229,256"/>
+<area shape="poly" id="edge4_Node000003_Node000005" title=" " alt="" coords="182,182,181,214,175,214,177,182"/>
+<area shape="rect" id="Node000006" title=" " alt="" coords="5,229,101,256"/>
+<area shape="poly" id="edge5_Node000003_Node000006" title=" " alt="" coords="159,184,90,224,87,219,156,180"/>
+<area shape="rect" id="Node000008" title=" " alt="" coords="1038,304,1103,331"/>
+<area shape="poly" id="edge7_Node000007_Node000008" title=" " alt="" coords="982,254,1040,293,1037,298,979,259"/>
+<area shape="rect" id="Node000009" title=" " alt="" coords="1167,304,1235,331"/>
+<area shape="poly" id="edge8_Node000007_Node000009" title=" " alt="" coords="998,252,1153,299,1152,304,996,257"/>
+<area shape="poly" id="edge9_Node000007_Node000010" title=" " alt="" coords="939,259,865,299,863,294,937,254"/>
+<area shape="rect" id="Node000011" title=" " alt="" coords="908,304,1014,331"/>
+<area shape="poly" id="edge10_Node000007_Node000011" title=" " alt="" coords="964,257,964,288,958,288,958,257"/>
+<area shape="poly" id="edge19_Node000016_Node000007" title=" " alt="" coords="1024,110,991,128,977,141,966,156,958,185,958,214,953,215,952,184,961,153,973,137,988,124,1021,105"/>
+<area shape="poly" id="edge26_Node000016_Node000009" title=" " alt="" coords="1080,105,1111,126,1142,153,1171,187,1190,228,1198,259,1202,288,1197,289,1193,260,1185,230,1166,190,1138,157,1107,130,1077,109"/>
+<area shape="poly" id="edge27_Node000016_Node000010" title=" " alt="" coords="1031,110,992,130,952,157,912,191,879,231,842,292,838,289,875,228,908,187,949,153,990,126,1029,105"/>
+<area shape="rect" id="Node000017" href="$task__executor_8hpp.html" title=" " alt="" coords="976,155,1104,181"/>
+<area shape="poly" id="edge20_Node000016_Node000017" title=" " alt="" coords="1057,108,1049,140,1044,139,1051,107"/>
+<area shape="poly" id="edge25_Node000016_Node000018" title=" " alt="" coords="1075,105,1097,126,1118,153,1131,184,1139,213,1134,214,1126,185,1113,156,1093,130,1071,109"/>
+<area shape="poly" id="edge21_Node000017_Node000007" title=" " alt="" coords="1028,184,988,221,984,217,1024,180"/>
+<area shape="poly" id="edge23_Node000017_Node000008" title=" " alt="" coords="1045,181,1067,288,1062,289,1040,182"/>
+<area shape="poly" id="edge24_Node000017_Node000010" title=" " alt="" coords="1006,184,961,204,915,232,879,262,849,294,845,290,875,258,911,227,959,199,1004,179"/>
+<area shape="poly" id="edge22_Node000017_Node000018" title=" " alt="" coords="1059,180,1112,218,1109,222,1056,184"/>
+<area shape="poly" id="edge30_Node000019_Node000014" title=" " alt="" coords="1264,106,816,163,815,158,1263,101"/>
+<area shape="poly" id="edge29_Node000019_Node000020" title=" " alt="" coords="1330,108,1323,140,1318,139,1325,107"/>
+<area shape="rect" id="Node000021" title=" " alt="" coords="1373,155,1440,181"/>
+<area shape="poly" id="edge31_Node000019_Node000021" title=" " alt="" coords="1345,105,1384,142,1381,146,1342,109"/>
+<area shape="rect" id="Node000022" title=" " alt="" coords="1464,155,1567,181"/>
+<area shape="poly" id="edge32_Node000019_Node000022" title=" " alt="" coords="1364,105,1470,146,1468,151,1362,110"/>
+</map>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..36d8522f4e4a741cba894f9209071b308df90428
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__incl.md5
@@ -0,0 +1 @@
+5ca878f36599283191320867d72a6e26
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__incl.png b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__incl.png
new file mode 100644
index 0000000000000000000000000000000000000000..c43433492ee68bd96ea5854390ce551d37139b7f
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp__incl.png differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp_source.html b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp_source.html
new file mode 100644
index 0000000000000000000000000000000000000000..f5d8bd8850630aa2d048e9209a1f739eb7d3922f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/html/task__ui_8hpp_source.html
@@ -0,0 +1,191 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=11"/>
+<meta name="generator" content="Doxygen 1.12.0"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Learn Environment: task_ui.hpp Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<script type="text/javascript" src="clipboard.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="cookie.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr id="projectrow">
+  <td id="projectalign">
+   <div id="projectname">Learn Environment
+   </div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.12.0 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search/",'.html');
+/* @license-end */
+</script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() { codefold.init(0); });
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+  initMenu('',true,false,'search.php','Search',false);
+  $(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function(){ initResizable(false); });
+/* @license-end */
+</script>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<div id="MSearchResults">
+<div class="SRPage">
+<div id="SRIndex">
+<div id="SRResults"></div>
+<div class="SRStatus" id="Loading">Loading...</div>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</div>
+</div>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_7d465071c5c63f34a2628cf83e1b693a.html">learn_environment</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div id="doc-content">
+<div class="header">
+  <div class="headertitle"><div class="title">task_ui.hpp</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="task__ui_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="preprocessor">#ifndef TASKUI_HPP</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="preprocessor">#define TASKUI_HPP</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span> </div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="preprocessor">#include &quot;<a class="code" href="sidebar_8hpp.html">sidebar.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="preprocessor">#include &quot;<a class="code" href="task_8hpp.html">task.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="preprocessor">#include &quot;<a class="code" href="task__manager_8hpp.html">task_manager.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="preprocessor">#include &quot;<a class="code" href="execute__frame_8hpp.html">execute_frame.hpp</a>&quot;</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &lt;QObject&gt;</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="preprocessor">#include &lt;QVBoxLayout&gt;</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="preprocessor">#include &lt;QLabel&gt;</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="preprocessor">#include &lt;QToolButton&gt;</span></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="preprocessor">#include &lt;QPushButton&gt;</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="preprocessor">#include &lt;QFrame&gt;</span></div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span> </div>
+<div class="foldopen" id="foldopen00024" data-start="{" data-end="};">
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="classTaskUI.html">   24</a></span><span class="keyword">class </span><a class="code hl_class" href="classTaskUI.html">TaskUI</a> : <span class="keyword">public</span> <a class="code hl_class" href="classQWidget.html">QWidget</a> {</div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span>    Q_OBJECT</div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="keyword">public</span>:</div>
+<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="classTaskUI.html#a86f09b07fe3b4fd956f8c4ab02b8fae2">   42</a></span>    <a class="code hl_function" href="classTaskUI.html#a86f09b07fe3b4fd956f8c4ab02b8fae2">TaskUI</a>(QVBoxLayout *subtaskListLayout, QLabel *mainTitleLabel,</div>
+<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span>           QLabel *difficultyLabel, QLabel *folderLabel, QLabel *topicLabel,</div>
+<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span>           QPushButton *nextButton, QPushButton *previousButton, QToolButton *menuButton,</div>
+<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span>           QToolButton *resetRobotStartButton, <a class="code hl_class" href="classQFrame.html">QFrame</a> *resetRobotFrame, <a class="code hl_class" href="classQWidget.html">QWidget</a> *centralwidget, <a class="code hl_class" href="classQWidget.html">QWidget</a> *parent = <span class="keyword">nullptr</span>);</div>
+<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span> </div>
+<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"><a class="line" href="classTaskUI.html#a62690c3b7147c20980da5c2323314025">   51</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classTaskUI.html#a62690c3b7147c20980da5c2323314025">initializeUI</a>(<span class="keyword">const</span> QVector&lt;QSharedPointer&lt;Task&gt;&gt; &amp;tasks);</div>
+<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span> </div>
+<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"><a class="line" href="classTaskUI.html#ab6f629b7a42a49b94250768fbed7f4f4">   57</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classTaskUI.html#ab6f629b7a42a49b94250768fbed7f4f4">setTaskUI</a>(<span class="keywordtype">int</span> currentTaskIndex);</div>
+<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span> </div>
+<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="classTaskUI.html#a9f8872c2393d36d7c3e57cf7501c745e">   62</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classTaskUI.html#a9f8872c2393d36d7c3e57cf7501c745e">updateSubtaskItemsUI</a>();</div>
+<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span> </div>
+<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="classTaskUI.html#a53f64716c6328b25e37d822e687886cf">   68</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classTaskUI.html#a53f64716c6328b25e37d822e687886cf">setTaskManager</a>(<a class="code hl_class" href="classTaskManager.html">TaskManager</a> *manager);</div>
+<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span> </div>
+<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="classTaskUI.html#a11f88e4482442899fa19adf1f66fa030">   74</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classTaskUI.html#a11f88e4482442899fa19adf1f66fa030">startedRobotResetUI</a>(<span class="keywordtype">bool</span> noSubtasksLeft);</div>
+<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span> </div>
+<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="classTaskUI.html#a6c2ca067880d519ab255a7608a268c8f">   79</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classTaskUI.html#a6c2ca067880d519ab255a7608a268c8f">finishedRobotResetUI</a>();</div>
+<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span> </div>
+<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="classTaskUI.html#a8cb2994522ad6b1b59383515edddead3">   85</a></span>    <span class="keywordtype">void</span> <a class="code hl_function" href="classTaskUI.html#a8cb2994522ad6b1b59383515edddead3">failedRobotResetUI</a>(<span class="keyword">const</span> QString &amp;error);</div>
+<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>Q_SIGNALS:</div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="classTaskUI.html#af43308f1438155bd927357ac93c7b9db">   92</a></span>    <span class="keywordtype">void</span> <a class="code hl_signal" href="classTaskUI.html#af43308f1438155bd927357ac93c7b9db">taskSelected</a>(<span class="keywordtype">int</span> index);</div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span> </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span><span class="keyword">private</span> Q_SLOTS:</div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>    <span class="keywordtype">void</span> toggleSidebarVisibility();</div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span> </div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span><span class="keyword">private</span>:</div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span>    <a class="code hl_class" href="classSidebar.html">Sidebar</a> *sidebar; </div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span>    QVBoxLayout *subtaskListLayout; </div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span>    QLabel *mainTitleLabel; </div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span>    QLabel *difficultyLabel; </div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span>    QLabel *folderLabel; </div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span>    QLabel *topicLabel; </div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span>    QPushButton *nextButton; </div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span>    QPushButton *previousButton; </div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>    QToolButton *menuButton; </div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>    QToolButton *resetRobotStartButton; </div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span>    <a class="code hl_class" href="classQFrame.html">QFrame</a> *resetRobotFrame; </div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>    <a class="code hl_class" href="classExecuteFrame.html">ExecuteFrame</a> *executeResetRobotFrame; </div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span>    <a class="code hl_class" href="classQWidget.html">QWidget</a> *centralwidget; </div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span>    QVector&lt;QSharedPointer&lt;Task&gt;&gt; tasks; </div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span>    <a class="code hl_class" href="classTaskManager.html">TaskManager</a> *taskManager; </div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span> </div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span>    <span class="keywordtype">void</span> setSubtaskItems(<span class="keywordtype">int</span> currentTaskIndex);</div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span> </div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span>    <span class="keywordtype">void</span> addLineBetweenWidgets();</div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span>    </div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span>    <span class="keywordtype">void</span> setupSplitterAndLayout();</div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span>};</div>
+</div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span> </div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span><span class="preprocessor">#endif </span><span class="comment">// TASKUI_HPP</span></div>
+<div class="ttc" id="aclassExecuteFrame_html"><div class="ttname"><a href="classExecuteFrame.html">ExecuteFrame</a></div><div class="ttdoc">A custom QFrame that displays an image and text. For logging and task execution.</div><div class="ttdef"><b>Definition</b> execute_frame.hpp:14</div></div>
+<div class="ttc" id="aclassQFrame_html"><div class="ttname"><a href="classQFrame.html">QFrame</a></div></div>
+<div class="ttc" id="aclassQWidget_html"><div class="ttname"><a href="classQWidget.html">QWidget</a></div></div>
+<div class="ttc" id="aclassSidebar_html"><div class="ttname"><a href="classSidebar.html">Sidebar</a></div><div class="ttdoc">Represents the sidebar UI component for displaying tasks.</div><div class="ttdef"><b>Definition</b> sidebar.hpp:23</div></div>
+<div class="ttc" id="aclassTaskManager_html"><div class="ttname"><a href="classTaskManager.html">TaskManager</a></div><div class="ttdoc">Manages tasks and their execution within the application.</div><div class="ttdef"><b>Definition</b> task_manager.hpp:21</div></div>
+<div class="ttc" id="aclassTaskUI_html"><div class="ttname"><a href="classTaskUI.html">TaskUI</a></div><div class="ttdoc">Manages the user interface for tasks and subtasks.</div><div class="ttdef"><b>Definition</b> task_ui.hpp:24</div></div>
+<div class="ttc" id="aclassTaskUI_html_a11f88e4482442899fa19adf1f66fa030"><div class="ttname"><a href="classTaskUI.html#a11f88e4482442899fa19adf1f66fa030">TaskUI::startedRobotResetUI</a></div><div class="ttdeci">void startedRobotResetUI(bool noSubtasksLeft)</div><div class="ttdoc">Update the UI to show that the robot reset has been started.</div></div>
+<div class="ttc" id="aclassTaskUI_html_a53f64716c6328b25e37d822e687886cf"><div class="ttname"><a href="classTaskUI.html#a53f64716c6328b25e37d822e687886cf">TaskUI::setTaskManager</a></div><div class="ttdeci">void setTaskManager(TaskManager *manager)</div><div class="ttdoc">Sets the TaskManager object.</div></div>
+<div class="ttc" id="aclassTaskUI_html_a62690c3b7147c20980da5c2323314025"><div class="ttname"><a href="classTaskUI.html#a62690c3b7147c20980da5c2323314025">TaskUI::initializeUI</a></div><div class="ttdeci">void initializeUI(const QVector&lt; QSharedPointer&lt; Task &gt; &gt; &amp;tasks)</div><div class="ttdoc">Initializes the UI with the loaded tasks.</div></div>
+<div class="ttc" id="aclassTaskUI_html_a6c2ca067880d519ab255a7608a268c8f"><div class="ttname"><a href="classTaskUI.html#a6c2ca067880d519ab255a7608a268c8f">TaskUI::finishedRobotResetUI</a></div><div class="ttdeci">void finishedRobotResetUI()</div><div class="ttdoc">Update the UI to show that the robot reset has finished.</div></div>
+<div class="ttc" id="aclassTaskUI_html_a86f09b07fe3b4fd956f8c4ab02b8fae2"><div class="ttname"><a href="classTaskUI.html#a86f09b07fe3b4fd956f8c4ab02b8fae2">TaskUI::TaskUI</a></div><div class="ttdeci">TaskUI(QVBoxLayout *subtaskListLayout, QLabel *mainTitleLabel, QLabel *difficultyLabel, QLabel *folderLabel, QLabel *topicLabel, QPushButton *nextButton, QPushButton *previousButton, QToolButton *menuButton, QToolButton *resetRobotStartButton, QFrame *resetRobotFrame, QWidget *centralwidget, QWidget *parent=nullptr)</div><div class="ttdoc">Constructs a TaskUI object.</div></div>
+<div class="ttc" id="aclassTaskUI_html_a8cb2994522ad6b1b59383515edddead3"><div class="ttname"><a href="classTaskUI.html#a8cb2994522ad6b1b59383515edddead3">TaskUI::failedRobotResetUI</a></div><div class="ttdeci">void failedRobotResetUI(const QString &amp;error)</div><div class="ttdoc">Update the UI to show that the robot reset has failed.</div></div>
+<div class="ttc" id="aclassTaskUI_html_a9f8872c2393d36d7c3e57cf7501c745e"><div class="ttname"><a href="classTaskUI.html#a9f8872c2393d36d7c3e57cf7501c745e">TaskUI::updateSubtaskItemsUI</a></div><div class="ttdeci">void updateSubtaskItemsUI()</div><div class="ttdoc">Updates the UI elements for the subtasks.</div></div>
+<div class="ttc" id="aclassTaskUI_html_ab6f629b7a42a49b94250768fbed7f4f4"><div class="ttname"><a href="classTaskUI.html#ab6f629b7a42a49b94250768fbed7f4f4">TaskUI::setTaskUI</a></div><div class="ttdeci">void setTaskUI(int currentTaskIndex)</div><div class="ttdoc">Sets the UI elements for the current task.</div></div>
+<div class="ttc" id="aclassTaskUI_html_af43308f1438155bd927357ac93c7b9db"><div class="ttname"><a href="classTaskUI.html#af43308f1438155bd927357ac93c7b9db">TaskUI::taskSelected</a></div><div class="ttdeci">void taskSelected(int index)</div><div class="ttdoc">Signal emitted when a task is selected.</div></div>
+<div class="ttc" id="aexecute__frame_8hpp_html"><div class="ttname"><a href="execute__frame_8hpp.html">execute_frame.hpp</a></div></div>
+<div class="ttc" id="asidebar_8hpp_html"><div class="ttname"><a href="sidebar_8hpp.html">sidebar.hpp</a></div></div>
+<div class="ttc" id="atask_8hpp_html"><div class="ttname"><a href="task_8hpp.html">task.hpp</a></div></div>
+<div class="ttc" id="atask__manager_8hpp_html"><div class="ttname"><a href="task__manager_8hpp.html">task_manager.hpp</a></div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
+</small></address>
+</div><!-- doc-content -->
+</body>
+</html>
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/Makefile b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..8e146149ccb5a912e9c3a3cffec92ba3f44d54d1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/Makefile
@@ -0,0 +1,42 @@
+LATEX_CMD?=pdflatex
+MKIDX_CMD?=makeindex
+BIBTEX_CMD?=bibtex
+LATEX_COUNT?=8
+MANUAL_FILE?=refman
+
+all: $(MANUAL_FILE).pdf
+
+pdf: $(MANUAL_FILE).pdf
+
+$(MANUAL_FILE).pdf: clean $(MANUAL_FILE).tex
+	$(LATEX_CMD) $(MANUAL_FILE) || \
+	if [ $$? != 0 ] ; then \
+	        \echo "Please consult $(MANUAL_FILE).log to see the error messages" ; \
+	        false; \
+	fi
+	$(MKIDX_CMD) $(MANUAL_FILE).idx
+	$(LATEX_CMD) $(MANUAL_FILE) || \
+	if [ $$? != 0 ] ; then \
+	        \echo "Please consult $(MANUAL_FILE).log to see the error messages" ; \
+	        false; \
+	fi
+	latex_count=$(LATEX_COUNT) ; \
+	while grep -E -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\
+	    do \
+	      echo "Rerunning latex...." ;\
+	      $(LATEX_CMD) $(MANUAL_FILE) || \
+	      if [ $$? != 0 ] ; then \
+	              \echo "Please consult $(MANUAL_FILE).log to see the error messages" ; \
+	              false; \
+	      fi; \
+	      latex_count=`expr $$latex_count - 1` ;\
+	    done
+	$(MKIDX_CMD) $(MANUAL_FILE).idx
+	$(LATEX_CMD) $(MANUAL_FILE) || \
+	if [ $$? != 0 ] ; then \
+	        \echo "Please consult $(MANUAL_FILE).log to see the error messages" ; \
+	        false; \
+	fi
+
+clean:
+	rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl $(MANUAL_FILE).pdf
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/annotated.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/annotated.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3eca2375a7d059623ab54796da1ef6db2ac0fec1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/annotated.tex
@@ -0,0 +1,21 @@
+\doxysection{Class List}
+Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList}
+\item\contentsline{section}{\mbox{\hyperlink{classCustomListWidget}{Custom\+List\+Widget}} \\*A custom \doxylink{classQListWidget}{QList\+Widget} with enhanced mouse interaction }{\pageref{classCustomListWidget}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classExecuteFrame}{Execute\+Frame}} \\*A custom \doxylink{classQFrame}{QFrame} that displays an image and text. For logging and task execution }{\pageref{classExecuteFrame}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classLearnEnvironment}{Learn\+Environment}} \\*A custom RViz panel for managing the learning environment }{\pageref{classLearnEnvironment}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classNotebookConverter}{Notebook\+Converter}} \\*A class for converting Jupyter notebooks to Python scripts and processing task pools }{\pageref{classNotebookConverter}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classProcessRunner}{Process\+Runner}} \\*Manages the execution of an external process with a timeout }{\pageref{classProcessRunner}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classQFrame}{QFrame}} }{\pageref{classQFrame}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classQListWidget}{QList\+Widget}} }{\pageref{classQListWidget}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classQObject}{QObject}} }{\pageref{classQObject}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classQWidget}{QWidget}} }{\pageref{classQWidget}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classScriptWorker}{Script\+Worker}} \\*Manages the execution of scripts for tasks }{\pageref{classScriptWorker}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classSidebar}{Sidebar}} \\*Represents the sidebar UI component for displaying tasks }{\pageref{classSidebar}}{}
+\item\contentsline{section}{\mbox{\hyperlink{structSubtask}{Subtask}} \\*Represents a subtask within a task }{\pageref{structSubtask}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classSubtaskItem}{Subtask\+Item}} \\*Represents a UI item for a subtask }{\pageref{classSubtaskItem}}{}
+\item\contentsline{section}{\mbox{\hyperlink{structTask}{Task}} \\*Represents a task containing multiple subtasks }{\pageref{structTask}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classTaskExecutor}{Task\+Executor}} \\*Executes tasks and manages their execution state }{\pageref{classTaskExecutor}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classTaskManager}{Task\+Manager}} \\*Manages tasks and their execution within the application }{\pageref{classTaskManager}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classTaskParser}{Task\+Parser}} \\*Parses tasks and subtasks from a JSON file }{\pageref{classTaskParser}}{}
+\item\contentsline{section}{\mbox{\hyperlink{classTaskUI}{Task\+UI}} \\*Manages the user interface for tasks and subtasks }{\pageref{classTaskUI}}{}
+\end{DoxyCompactList}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget.tex
new file mode 100644
index 0000000000000000000000000000000000000000..fdcef97bd002a2940dc195a220a6ba29437e31a3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget.tex
@@ -0,0 +1,103 @@
+\doxysection{Custom\+List\+Widget Class Reference}
+\hypertarget{classCustomListWidget}{}\label{classCustomListWidget}\index{CustomListWidget@{CustomListWidget}}
+
+
+A custom \doxylink{classQListWidget}{QList\+Widget} with enhanced mouse interaction.  
+
+
+
+
+{\ttfamily \#include $<$custom\+\_\+list\+\_\+widget.\+hpp$>$}
+
+
+
+Inheritance diagram for Custom\+List\+Widget\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=185pt]{classCustomListWidget__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for Custom\+List\+Widget\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=185pt]{classCustomListWidget__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{classCustomListWidget_ab37ab040c9872e60767fff8d1525ccad}{Custom\+List\+Widget}} (\mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}parent=nullptr)
+\begin{DoxyCompactList}\small\item\em Constructs a \doxylink{classCustomListWidget}{Custom\+List\+Widget} object and formats it correctly. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Protected Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+void \mbox{\hyperlink{classCustomListWidget_adc3f7462d5db3e7c9fe4c5fd59076331}{mouse\+Move\+Event}} (QMouse\+Event \texorpdfstring{$\ast$}{*}event) override
+\begin{DoxyCompactList}\small\item\em Handles the mouse move event. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classCustomListWidget_a5d487b35f9dc9cd601b962e68b142e0b}{leave\+Event}} (QEvent \texorpdfstring{$\ast$}{*}event) override
+\begin{DoxyCompactList}\small\item\em Handles the leave event. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+A custom \doxylink{classQListWidget}{QList\+Widget} with enhanced mouse interaction. 
+
+The \doxylink{classCustomListWidget}{Custom\+List\+Widget} class provides a custom implementation of \doxylink{classQListWidget}{QList\+Widget} with additional functionalities such as custom mouse cursor handling and specific styling. 
+
+\doxysubsection{Constructor \& Destructor Documentation}
+\Hypertarget{classCustomListWidget_ab37ab040c9872e60767fff8d1525ccad}\index{CustomListWidget@{CustomListWidget}!CustomListWidget@{CustomListWidget}}
+\index{CustomListWidget@{CustomListWidget}!CustomListWidget@{CustomListWidget}}
+\doxysubsubsection{\texorpdfstring{CustomListWidget()}{CustomListWidget()}}
+{\footnotesize\ttfamily \label{classCustomListWidget_ab37ab040c9872e60767fff8d1525ccad} 
+Custom\+List\+Widget\+::\+Custom\+List\+Widget (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}}]{parent}{ = {\ttfamily nullptr}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [explicit]}}
+
+
+
+Constructs a \doxylink{classCustomListWidget}{Custom\+List\+Widget} object and formats it correctly. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em parent} & Pointer to the parent widget. \\
+\hline
+\end{DoxyParams}
+
+
+\doxysubsection{Member Function Documentation}
+\Hypertarget{classCustomListWidget_a5d487b35f9dc9cd601b962e68b142e0b}\index{CustomListWidget@{CustomListWidget}!leaveEvent@{leaveEvent}}
+\index{leaveEvent@{leaveEvent}!CustomListWidget@{CustomListWidget}}
+\doxysubsubsection{\texorpdfstring{leaveEvent()}{leaveEvent()}}
+{\footnotesize\ttfamily \label{classCustomListWidget_a5d487b35f9dc9cd601b962e68b142e0b} 
+void Custom\+List\+Widget\+::leave\+Event (\begin{DoxyParamCaption}\item[{QEvent \texorpdfstring{$\ast$}{*}}]{event}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}}
+
+
+
+Handles the leave event. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em event} & Pointer to the QEvent object. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classCustomListWidget_adc3f7462d5db3e7c9fe4c5fd59076331}\index{CustomListWidget@{CustomListWidget}!mouseMoveEvent@{mouseMoveEvent}}
+\index{mouseMoveEvent@{mouseMoveEvent}!CustomListWidget@{CustomListWidget}}
+\doxysubsubsection{\texorpdfstring{mouseMoveEvent()}{mouseMoveEvent()}}
+{\footnotesize\ttfamily \label{classCustomListWidget_adc3f7462d5db3e7c9fe4c5fd59076331} 
+void Custom\+List\+Widget\+::mouse\+Move\+Event (\begin{DoxyParamCaption}\item[{QMouse\+Event \texorpdfstring{$\ast$}{*}}]{event}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [protected]}}
+
+
+
+Handles the mouse move event. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em event} & Pointer to the QMouse\+Event object. \\
+\hline
+\end{DoxyParams}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{custom__list__widget_8hpp}{custom\+\_\+list\+\_\+widget.\+hpp}}\item 
+\mbox{\hyperlink{custom__list__widget_8cpp}{custom\+\_\+list\+\_\+widget.\+cpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..ab7c337bdca93d689b659c05efe1399af8db73d5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget__coll__graph.md5
@@ -0,0 +1 @@
+4b758b50c2e9b4850503cbb1bd856615
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..a4970245d047d26c986217ebee471c066ed9999c
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..ab7c337bdca93d689b659c05efe1399af8db73d5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget__inherit__graph.md5
@@ -0,0 +1 @@
+4b758b50c2e9b4850503cbb1bd856615
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..0ad2c6781dba97ffc62efa43247ef43735f6290a
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classCustomListWidget__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame.tex
new file mode 100644
index 0000000000000000000000000000000000000000..d544cdfb2371dfd7069caf4a02ffaf8175d41427
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame.tex
@@ -0,0 +1,125 @@
+\doxysection{Execute\+Frame Class Reference}
+\hypertarget{classExecuteFrame}{}\label{classExecuteFrame}\index{ExecuteFrame@{ExecuteFrame}}
+
+
+A custom \doxylink{classQFrame}{QFrame} that displays an image and text. For logging and task execution.  
+
+
+
+
+{\ttfamily \#include $<$execute\+\_\+frame.\+hpp$>$}
+
+
+
+Inheritance diagram for Execute\+Frame\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=174pt]{classExecuteFrame__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for Execute\+Frame\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=174pt]{classExecuteFrame__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{classExecuteFrame_a9a3ca41869860aee87ee8198fd629f8b}{Execute\+Frame}} (\mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}parent=nullptr)
+\begin{DoxyCompactList}\small\item\em Constructor for \doxylink{classExecuteFrame}{Execute\+Frame}. \end{DoxyCompactList}\item 
+\mbox{\hyperlink{classExecuteFrame_a0f49e809cf1c14026958bf26d3cf399b}{\texorpdfstring{$\sim$}{\string~}\+Execute\+Frame}} ()
+\begin{DoxyCompactList}\small\item\em Destructor for \doxylink{classExecuteFrame}{Execute\+Frame}. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classExecuteFrame_a796e8a79e0bc372c47421617bc7c9100}{set\+Image}} (const QString \&path)
+\begin{DoxyCompactList}\small\item\em Sets the image to be displayed. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classExecuteFrame_a659f12e489dcddf89818a116c1e7f742}{set\+Text}} (const QString \&text)
+\begin{DoxyCompactList}\small\item\em Sets the text to be displayed. \end{DoxyCompactList}\item 
+QString \mbox{\hyperlink{classExecuteFrame_a3ddc917ee39ffc1c54c491aab9ba7404}{get\+Text}} ()
+\begin{DoxyCompactList}\small\item\em Gets the current text being displayed. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+A custom \doxylink{classQFrame}{QFrame} that displays an image and text. For logging and task execution. 
+
+\doxysubsection{Constructor \& Destructor Documentation}
+\Hypertarget{classExecuteFrame_a9a3ca41869860aee87ee8198fd629f8b}\index{ExecuteFrame@{ExecuteFrame}!ExecuteFrame@{ExecuteFrame}}
+\index{ExecuteFrame@{ExecuteFrame}!ExecuteFrame@{ExecuteFrame}}
+\doxysubsubsection{\texorpdfstring{ExecuteFrame()}{ExecuteFrame()}}
+{\footnotesize\ttfamily \label{classExecuteFrame_a9a3ca41869860aee87ee8198fd629f8b} 
+Execute\+Frame\+::\+Execute\+Frame (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}}]{parent}{ = {\ttfamily nullptr}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [explicit]}}
+
+
+
+Constructor for \doxylink{classExecuteFrame}{Execute\+Frame}. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em parent} & The parent widget. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classExecuteFrame_a0f49e809cf1c14026958bf26d3cf399b}\index{ExecuteFrame@{ExecuteFrame}!````~ExecuteFrame@{\texorpdfstring{$\sim$}{\string~}ExecuteFrame}}
+\index{````~ExecuteFrame@{\texorpdfstring{$\sim$}{\string~}ExecuteFrame}!ExecuteFrame@{ExecuteFrame}}
+\doxysubsubsection{\texorpdfstring{\texorpdfstring{$\sim$}{\string~}ExecuteFrame()}{\string~ExecuteFrame()}}
+{\footnotesize\ttfamily \label{classExecuteFrame_a0f49e809cf1c14026958bf26d3cf399b} 
+Execute\+Frame\+::\texorpdfstring{$\sim$}{\string~}\+Execute\+Frame (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}
+
+
+
+Destructor for \doxylink{classExecuteFrame}{Execute\+Frame}. 
+
+
+
+\doxysubsection{Member Function Documentation}
+\Hypertarget{classExecuteFrame_a3ddc917ee39ffc1c54c491aab9ba7404}\index{ExecuteFrame@{ExecuteFrame}!getText@{getText}}
+\index{getText@{getText}!ExecuteFrame@{ExecuteFrame}}
+\doxysubsubsection{\texorpdfstring{getText()}{getText()}}
+{\footnotesize\ttfamily \label{classExecuteFrame_a3ddc917ee39ffc1c54c491aab9ba7404} 
+QString Execute\+Frame\+::get\+Text (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}
+
+
+
+Gets the current text being displayed. 
+
+\begin{DoxyReturn}{Returns}
+The current text. 
+\end{DoxyReturn}
+\Hypertarget{classExecuteFrame_a796e8a79e0bc372c47421617bc7c9100}\index{ExecuteFrame@{ExecuteFrame}!setImage@{setImage}}
+\index{setImage@{setImage}!ExecuteFrame@{ExecuteFrame}}
+\doxysubsubsection{\texorpdfstring{setImage()}{setImage()}}
+{\footnotesize\ttfamily \label{classExecuteFrame_a796e8a79e0bc372c47421617bc7c9100} 
+void Execute\+Frame\+::set\+Image (\begin{DoxyParamCaption}\item[{const QString \&}]{path}{}\end{DoxyParamCaption})}
+
+
+
+Sets the image to be displayed. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em path} & The path to the image file. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classExecuteFrame_a659f12e489dcddf89818a116c1e7f742}\index{ExecuteFrame@{ExecuteFrame}!setText@{setText}}
+\index{setText@{setText}!ExecuteFrame@{ExecuteFrame}}
+\doxysubsubsection{\texorpdfstring{setText()}{setText()}}
+{\footnotesize\ttfamily \label{classExecuteFrame_a659f12e489dcddf89818a116c1e7f742} 
+void Execute\+Frame\+::set\+Text (\begin{DoxyParamCaption}\item[{const QString \&}]{text}{}\end{DoxyParamCaption})}
+
+
+
+Sets the text to be displayed. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em text} & The text to display. \\
+\hline
+\end{DoxyParams}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{execute__frame_8hpp}{execute\+\_\+frame.\+hpp}}\item 
+\mbox{\hyperlink{execute__frame_8cpp}{execute\+\_\+frame.\+cpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..11b0f10a96f6aaecbb5ff0bc7f2c266c1063aef2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame__coll__graph.md5
@@ -0,0 +1 @@
+d2430a85581eb9a7a17864e56a0386fc
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..cdd14946d7f412d74de5b42ad11e1e80ae1cdc42
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..11b0f10a96f6aaecbb5ff0bc7f2c266c1063aef2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame__inherit__graph.md5
@@ -0,0 +1 @@
+d2430a85581eb9a7a17864e56a0386fc
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ccee0b87382188ba21bed24804c4fdb7fcc88704
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classExecuteFrame__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment.tex
new file mode 100644
index 0000000000000000000000000000000000000000..325dfcf59d56e028ef3cc92001c434a7600fea01
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment.tex
@@ -0,0 +1,112 @@
+\doxysection{Learn\+Environment Class Reference}
+\hypertarget{classLearnEnvironment}{}\label{classLearnEnvironment}\index{LearnEnvironment@{LearnEnvironment}}
+
+
+A custom RViz panel for managing the learning environment.  
+
+
+
+
+{\ttfamily \#include $<$learn\+\_\+environment.\+hpp$>$}
+
+
+
+Inheritance diagram for Learn\+Environment\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=189pt]{classLearnEnvironment__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for Learn\+Environment\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=189pt]{classLearnEnvironment__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{classLearnEnvironment_a25d7b0bd7b4270c7c2feeab3a9450d39}{Learn\+Environment}} (\mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}parent=0)
+\begin{DoxyCompactList}\small\item\em Constructs a \doxylink{classLearnEnvironment}{Learn\+Environment} object. \end{DoxyCompactList}\item 
+\mbox{\hyperlink{classLearnEnvironment_ad2086d08e20cef426a861e1093cfc987}{\texorpdfstring{$\sim$}{\string~}\+Learn\+Environment}} ()
+\begin{DoxyCompactList}\small\item\em Destroys the \doxylink{classLearnEnvironment}{Learn\+Environment} object. \end{DoxyCompactList}\item 
+virtual void \mbox{\hyperlink{classLearnEnvironment_af0c2b95f5853116a09c795d33eb47d52}{load}} (const rviz\+::\+Config \&config) override
+\begin{DoxyCompactList}\small\item\em Loads user-\/specific settings. \end{DoxyCompactList}\item 
+virtual void \mbox{\hyperlink{classLearnEnvironment_aa684f56e6ba08652e1ddfa47304eb449}{save}} (rviz\+::\+Config config) const override
+\begin{DoxyCompactList}\small\item\em Saves user-\/specific settings. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+A custom RViz panel for managing the learning environment. 
+
+The \doxylink{classLearnEnvironment}{Learn\+Environment} class provides a user interface for managing tasks and their execution and evaluation within the learning environment. 
+
+\doxysubsection{Constructor \& Destructor Documentation}
+\Hypertarget{classLearnEnvironment_a25d7b0bd7b4270c7c2feeab3a9450d39}\index{LearnEnvironment@{LearnEnvironment}!LearnEnvironment@{LearnEnvironment}}
+\index{LearnEnvironment@{LearnEnvironment}!LearnEnvironment@{LearnEnvironment}}
+\doxysubsubsection{\texorpdfstring{LearnEnvironment()}{LearnEnvironment()}}
+{\footnotesize\ttfamily \label{classLearnEnvironment_a25d7b0bd7b4270c7c2feeab3a9450d39} 
+Learn\+Environment\+::\+Learn\+Environment (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}}]{parent}{ = {\ttfamily 0}}\end{DoxyParamCaption})}
+
+
+
+Constructs a \doxylink{classLearnEnvironment}{Learn\+Environment} object. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em parent} & Pointer to the parent widget. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classLearnEnvironment_ad2086d08e20cef426a861e1093cfc987}\index{LearnEnvironment@{LearnEnvironment}!````~LearnEnvironment@{\texorpdfstring{$\sim$}{\string~}LearnEnvironment}}
+\index{````~LearnEnvironment@{\texorpdfstring{$\sim$}{\string~}LearnEnvironment}!LearnEnvironment@{LearnEnvironment}}
+\doxysubsubsection{\texorpdfstring{\texorpdfstring{$\sim$}{\string~}LearnEnvironment()}{\string~LearnEnvironment()}}
+{\footnotesize\ttfamily \label{classLearnEnvironment_ad2086d08e20cef426a861e1093cfc987} 
+Learn\+Environment\+::\texorpdfstring{$\sim$}{\string~}\+Learn\+Environment (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}
+
+
+
+Destroys the \doxylink{classLearnEnvironment}{Learn\+Environment} object. 
+
+
+
+\doxysubsection{Member Function Documentation}
+\Hypertarget{classLearnEnvironment_af0c2b95f5853116a09c795d33eb47d52}\index{LearnEnvironment@{LearnEnvironment}!load@{load}}
+\index{load@{load}!LearnEnvironment@{LearnEnvironment}}
+\doxysubsubsection{\texorpdfstring{load()}{load()}}
+{\footnotesize\ttfamily \label{classLearnEnvironment_af0c2b95f5853116a09c795d33eb47d52} 
+void Learn\+Environment\+::load (\begin{DoxyParamCaption}\item[{const rviz\+::\+Config \&}]{config}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}
+
+
+
+Loads user-\/specific settings. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em config} & The RViz configuration object. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classLearnEnvironment_aa684f56e6ba08652e1ddfa47304eb449}\index{LearnEnvironment@{LearnEnvironment}!save@{save}}
+\index{save@{save}!LearnEnvironment@{LearnEnvironment}}
+\doxysubsubsection{\texorpdfstring{save()}{save()}}
+{\footnotesize\ttfamily \label{classLearnEnvironment_aa684f56e6ba08652e1ddfa47304eb449} 
+void Learn\+Environment\+::save (\begin{DoxyParamCaption}\item[{rviz\+::\+Config}]{config}{}\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [override]}, {\ttfamily [virtual]}}
+
+
+
+Saves user-\/specific settings. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em config} & The RViz configuration object. \\
+\hline
+\end{DoxyParams}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{learn__environment_8hpp}{learn\+\_\+environment.\+hpp}}\item 
+\mbox{\hyperlink{learn__environment_8cpp}{learn\+\_\+environment.\+cpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..399c08480b8358d0f8e521d67d56310a6346e457
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment__coll__graph.md5
@@ -0,0 +1 @@
+9b28dfe795dccd2a65acb78d2b2adfb8
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..14391db520ff4a31d9cc3619b5ae089888671dcf
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..399c08480b8358d0f8e521d67d56310a6346e457
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment__inherit__graph.md5
@@ -0,0 +1 @@
+9b28dfe795dccd2a65acb78d2b2adfb8
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..03c8e99119aad060d924c7074d68886039a673eb
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classLearnEnvironment__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter.tex
new file mode 100644
index 0000000000000000000000000000000000000000..8fc5a7eb7964b8a43f8e547887008f67bcbf8831
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter.tex
@@ -0,0 +1,164 @@
+\doxysection{Notebook\+Converter Class Reference}
+\hypertarget{classNotebookConverter}{}\label{classNotebookConverter}\index{NotebookConverter@{NotebookConverter}}
+
+
+A class for converting Jupyter notebooks to Python scripts and processing task pools.  
+
+
+
+
+{\ttfamily \#include $<$notebook\+\_\+converter.\+hpp$>$}
+
+
+
+Inheritance diagram for Notebook\+Converter\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=189pt]{classNotebookConverter__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for Notebook\+Converter\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=189pt]{classNotebookConverter__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{classNotebookConverter_a11c8ed4604d4c29acd45d6225d80c464}{Notebook\+Converter}} (\mbox{\hyperlink{classQObject}{QObject}} \texorpdfstring{$\ast$}{*}parent=nullptr)
+\item 
+bool \mbox{\hyperlink{classNotebookConverter_a8b06d3bc01057ddd936977bded4297f4}{convert\+Notebook}} (const QString \&notebook\+Path)
+\begin{DoxyCompactList}\small\item\em Converts a Jupyter notebook to a Python script. Ignoring code cells with "{}solution"{} tag. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classNotebookConverter_a66b007e49cfe58d279c3ac279ced7213}{process\+Task\+Pool}} ()
+\begin{DoxyCompactList}\small\item\em Modifies and copies all notebooks from task\+\_\+pool to users workspace. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classNotebookConverter_a665ba1030d993bd9e165fca123d92032}{toggle\+Solution}} (const QString \&file\+Path, const QString \&solution\+File\+Path)
+\begin{DoxyCompactList}\small\item\em Toggles the solution code in a Jupyter notebook. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classNotebookConverter_aa14fbd73e3cc21866decd2e02572207d}{reset\+Notebook}} (const QString \&notebook\+Path, const QString \&notebook\+Solution\+Path)
+\begin{DoxyCompactList}\small\item\em Removes solution code from a Jupyter notebook. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Static Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+static bool \mbox{\hyperlink{classNotebookConverter_af64e43c667b96ba0926a715316002665}{has\+Solution\+Cells}} (const QString \&notebook\+Path)
+\begin{DoxyCompactList}\small\item\em Checks if the notebook contains any solution cells. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+A class for converting Jupyter notebooks to Python scripts and processing task pools. 
+
+The \doxylink{classNotebookConverter}{Notebook\+Converter} class provides functionality to convert Jupyter notebooks into Python scripts, ignoring code cells with a "{}solution"{} tag. It also processes and modifies notebooks from a task pool, removing solution code and adding metadata tags to indicate modified cells.
+
+The class includes methods for reading and writing files, parsing JSON content, and processing notebook cells. It ensures that the structure of the notebook is preserved while removing solution code and adding necessary metadata. 
+
+\doxysubsection{Constructor \& Destructor Documentation}
+\Hypertarget{classNotebookConverter_a11c8ed4604d4c29acd45d6225d80c464}\index{NotebookConverter@{NotebookConverter}!NotebookConverter@{NotebookConverter}}
+\index{NotebookConverter@{NotebookConverter}!NotebookConverter@{NotebookConverter}}
+\doxysubsubsection{\texorpdfstring{NotebookConverter()}{NotebookConverter()}}
+{\footnotesize\ttfamily \label{classNotebookConverter_a11c8ed4604d4c29acd45d6225d80c464} 
+Notebook\+Converter\+::\+Notebook\+Converter (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classQObject}{QObject}} \texorpdfstring{$\ast$}{*}}]{parent}{ = {\ttfamily nullptr}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [explicit]}}
+
+
+
+\doxysubsection{Member Function Documentation}
+\Hypertarget{classNotebookConverter_a8b06d3bc01057ddd936977bded4297f4}\index{NotebookConverter@{NotebookConverter}!convertNotebook@{convertNotebook}}
+\index{convertNotebook@{convertNotebook}!NotebookConverter@{NotebookConverter}}
+\doxysubsubsection{\texorpdfstring{convertNotebook()}{convertNotebook()}}
+{\footnotesize\ttfamily \label{classNotebookConverter_a8b06d3bc01057ddd936977bded4297f4} 
+bool Notebook\+Converter\+::convert\+Notebook (\begin{DoxyParamCaption}\item[{const QString \&}]{notebook\+Path}{}\end{DoxyParamCaption})}
+
+
+
+Converts a Jupyter notebook to a Python script. Ignoring code cells with "{}solution"{} tag. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em notebook\+Path} & Path to the notebook file. \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+True if conversion is successful, else False. 
+\end{DoxyReturn}
+\Hypertarget{classNotebookConverter_af64e43c667b96ba0926a715316002665}\index{NotebookConverter@{NotebookConverter}!hasSolutionCells@{hasSolutionCells}}
+\index{hasSolutionCells@{hasSolutionCells}!NotebookConverter@{NotebookConverter}}
+\doxysubsubsection{\texorpdfstring{hasSolutionCells()}{hasSolutionCells()}}
+{\footnotesize\ttfamily \label{classNotebookConverter_af64e43c667b96ba0926a715316002665} 
+bool Notebook\+Converter\+::has\+Solution\+Cells (\begin{DoxyParamCaption}\item[{const QString \&}]{notebook\+Path}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}
+
+
+
+Checks if the notebook contains any solution cells. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em notebook\+Path} & Path to the notebook file. \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+True if solution cells are present, else False. 
+\end{DoxyReturn}
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classNotebookConverter_a66b007e49cfe58d279c3ac279ced7213}\index{NotebookConverter@{NotebookConverter}!processTaskPool@{processTaskPool}}
+\index{processTaskPool@{processTaskPool}!NotebookConverter@{NotebookConverter}}
+\doxysubsubsection{\texorpdfstring{processTaskPool()}{processTaskPool()}}
+{\footnotesize\ttfamily \label{classNotebookConverter_a66b007e49cfe58d279c3ac279ced7213} 
+void Notebook\+Converter\+::process\+Task\+Pool (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}
+
+
+
+Modifies and copies all notebooks from task\+\_\+pool to users workspace. 
+
+\Hypertarget{classNotebookConverter_aa14fbd73e3cc21866decd2e02572207d}\index{NotebookConverter@{NotebookConverter}!resetNotebook@{resetNotebook}}
+\index{resetNotebook@{resetNotebook}!NotebookConverter@{NotebookConverter}}
+\doxysubsubsection{\texorpdfstring{resetNotebook()}{resetNotebook()}}
+{\footnotesize\ttfamily \label{classNotebookConverter_aa14fbd73e3cc21866decd2e02572207d} 
+void Notebook\+Converter\+::reset\+Notebook (\begin{DoxyParamCaption}\item[{const QString \&}]{notebook\+Path}{, }\item[{const QString \&}]{notebook\+Solution\+Path}{}\end{DoxyParamCaption})}
+
+
+
+Removes solution code from a Jupyter notebook. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em notebook\+Path} & Path to the notebook file. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classNotebookConverter_a665ba1030d993bd9e165fca123d92032}\index{NotebookConverter@{NotebookConverter}!toggleSolution@{toggleSolution}}
+\index{toggleSolution@{toggleSolution}!NotebookConverter@{NotebookConverter}}
+\doxysubsubsection{\texorpdfstring{toggleSolution()}{toggleSolution()}}
+{\footnotesize\ttfamily \label{classNotebookConverter_a665ba1030d993bd9e165fca123d92032} 
+void Notebook\+Converter\+::toggle\+Solution (\begin{DoxyParamCaption}\item[{const QString \&}]{file\+Path}{, }\item[{const QString \&}]{solution\+File\+Path}{}\end{DoxyParamCaption})}
+
+
+
+Toggles the solution code in a Jupyter notebook. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em file\+Path} & Path to the notebook file. \\
+\hline
+{\em solution\+File\+Path} & Path to the solution notebook file. \\
+\hline
+\end{DoxyParams}
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph}
+\end{center}
+\end{figure}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{notebook__converter_8hpp}{notebook\+\_\+converter.\+hpp}}\item 
+\mbox{\hyperlink{notebook__converter_8cpp}{notebook\+\_\+converter.\+cpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..9f9685185df4b364f73049b6af84117543515fc0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter__coll__graph.md5
@@ -0,0 +1 @@
+46328ff4d9142a7cc172614e6df4b67c
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f81f6bd56371fc95e0316724fd5dfdb5e372cf38
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..9f9685185df4b364f73049b6af84117543515fc0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter__inherit__graph.md5
@@ -0,0 +1 @@
+46328ff4d9142a7cc172614e6df4b67c
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..57e04c99451829457b156904166cbec9afacbef9
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..454dc596b16d3d3e43ab80bf51414edbd3115d93
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.md5
@@ -0,0 +1 @@
+89fc180b8de10676e09e9ae818da356b
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5ff795d374c622ef00f2591dc9ba0928aaa37c1d
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter_a665ba1030d993bd9e165fca123d92032_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..b1b97a621701dd30c76e096e71e980b7c08de36b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.md5
@@ -0,0 +1 @@
+29346221251769bf1b64561fafde8734
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b4e50b8e3a6c8175fa2c5a06fd8aa36c010fb9b7
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classNotebookConverter_af64e43c667b96ba0926a715316002665_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner.tex
new file mode 100644
index 0000000000000000000000000000000000000000..db548c49e1ccf071e3c06a96979903865ee13617
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner.tex
@@ -0,0 +1,197 @@
+\doxysection{Process\+Runner Class Reference}
+\hypertarget{classProcessRunner}{}\label{classProcessRunner}\index{ProcessRunner@{ProcessRunner}}
+
+
+Manages the execution of an external process with a timeout.  
+
+
+
+
+{\ttfamily \#include $<$process\+\_\+runner.\+hpp$>$}
+
+
+
+Inheritance diagram for Process\+Runner\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=172pt]{classProcessRunner__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for Process\+Runner\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=172pt]{classProcessRunner__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Public Slots}
+\begin{DoxyCompactItemize}
+\item 
+void \mbox{\hyperlink{classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6}{force\+Stop}} ()
+\begin{DoxyCompactList}\small\item\em Forces the stop of the running process. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Signals}
+\begin{DoxyCompactItemize}
+\item 
+void \mbox{\hyperlink{classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf}{finished}} (int exit\+Code, QProcess\+::\+Exit\+Status exit\+Status)
+\begin{DoxyCompactList}\small\item\em Signal emitted when the process finishes. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classProcessRunner_ad6840bbd9e54b7c6a0678dc9c5c792d7}{output\+Ready}} (const QString \&output)
+\begin{DoxyCompactList}\small\item\em Signal emitted when the process produces output. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classProcessRunner_a9ad2c856469a7129c905721309620e05}{error\+Ready}} (const QString \&error)
+\begin{DoxyCompactList}\small\item\em Signal emitted when the process produces an error. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3}{timeout}} ()
+\begin{DoxyCompactList}\small\item\em Signal emitted when the process times out. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{classProcessRunner_a8d3ba848e57c03660af7c68dcfd7e904}{Process\+Runner}} (const QString \&program, const QString\+List \&arguments, int timeout\+Seconds, \mbox{\hyperlink{classQObject}{QObject}} \texorpdfstring{$\ast$}{*}parent=nullptr, QString process\+Name="{}process"{})
+\begin{DoxyCompactList}\small\item\em Constructs a \doxylink{classProcessRunner}{Process\+Runner} object. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934}{start}} ()
+\begin{DoxyCompactList}\small\item\em Starts the execution of the process. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Manages the execution of an external process with a timeout. 
+
+The \doxylink{classProcessRunner}{Process\+Runner} class is responsible for starting an external process, capturing its output and errors, and enforcing a timeout for its execution. 
+
+\doxysubsection{Constructor \& Destructor Documentation}
+\Hypertarget{classProcessRunner_a8d3ba848e57c03660af7c68dcfd7e904}\index{ProcessRunner@{ProcessRunner}!ProcessRunner@{ProcessRunner}}
+\index{ProcessRunner@{ProcessRunner}!ProcessRunner@{ProcessRunner}}
+\doxysubsubsection{\texorpdfstring{ProcessRunner()}{ProcessRunner()}}
+{\footnotesize\ttfamily \label{classProcessRunner_a8d3ba848e57c03660af7c68dcfd7e904} 
+Process\+Runner\+::\+Process\+Runner (\begin{DoxyParamCaption}\item[{const QString \&}]{program}{, }\item[{const QString\+List \&}]{arguments}{, }\item[{int}]{timeout\+Seconds}{, }\item[{\mbox{\hyperlink{classQObject}{QObject}} \texorpdfstring{$\ast$}{*}}]{parent}{ = {\ttfamily nullptr}, }\item[{QString}]{process\+Name}{ = {\ttfamily "{}process"{}}}\end{DoxyParamCaption})}
+
+
+
+Constructs a \doxylink{classProcessRunner}{Process\+Runner} object. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em program} & The program to be executed. \\
+\hline
+{\em arguments} & The arguments to be passed to the program. \\
+\hline
+{\em timeout\+Seconds} & The timeout for the process execution in seconds. \\
+\hline
+{\em parent} & Pointer to the parent \doxylink{classQObject}{QObject}. \\
+\hline
+{\em process\+Name} & The name of the process (for logging purposes). \\
+\hline
+\end{DoxyParams}
+
+
+\doxysubsection{Member Function Documentation}
+\Hypertarget{classProcessRunner_a9ad2c856469a7129c905721309620e05}\index{ProcessRunner@{ProcessRunner}!errorReady@{errorReady}}
+\index{errorReady@{errorReady}!ProcessRunner@{ProcessRunner}}
+\doxysubsubsection{\texorpdfstring{errorReady}{errorReady}}
+{\footnotesize\ttfamily \label{classProcessRunner_a9ad2c856469a7129c905721309620e05} 
+void Process\+Runner\+::error\+Ready (\begin{DoxyParamCaption}\item[{const QString \&}]{error}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when the process produces an error. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em error} & The error produced by the process. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf}\index{ProcessRunner@{ProcessRunner}!finished@{finished}}
+\index{finished@{finished}!ProcessRunner@{ProcessRunner}}
+\doxysubsubsection{\texorpdfstring{finished}{finished}}
+{\footnotesize\ttfamily \label{classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf} 
+void Process\+Runner\+::finished (\begin{DoxyParamCaption}\item[{int}]{exit\+Code}{, }\item[{QProcess\+::\+Exit\+Status}]{exit\+Status}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when the process finishes. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em exit\+Code} & The exit code of the process. \\
+\hline
+{\em exit\+Status} & The exit status of the process. \\
+\hline
+\end{DoxyParams}
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6}\index{ProcessRunner@{ProcessRunner}!forceStop@{forceStop}}
+\index{forceStop@{forceStop}!ProcessRunner@{ProcessRunner}}
+\doxysubsubsection{\texorpdfstring{forceStop}{forceStop}}
+{\footnotesize\ttfamily \label{classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6} 
+void Process\+Runner\+::force\+Stop (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [slot]}}
+
+
+
+Forces the stop of the running process. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classProcessRunner_ad6840bbd9e54b7c6a0678dc9c5c792d7}\index{ProcessRunner@{ProcessRunner}!outputReady@{outputReady}}
+\index{outputReady@{outputReady}!ProcessRunner@{ProcessRunner}}
+\doxysubsubsection{\texorpdfstring{outputReady}{outputReady}}
+{\footnotesize\ttfamily \label{classProcessRunner_ad6840bbd9e54b7c6a0678dc9c5c792d7} 
+void Process\+Runner\+::output\+Ready (\begin{DoxyParamCaption}\item[{const QString \&}]{output}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when the process produces output. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em output} & The output produced by the process. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934}\index{ProcessRunner@{ProcessRunner}!start@{start}}
+\index{start@{start}!ProcessRunner@{ProcessRunner}}
+\doxysubsubsection{\texorpdfstring{start()}{start()}}
+{\footnotesize\ttfamily \label{classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934} 
+void Process\+Runner\+::start (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}
+
+
+
+Starts the execution of the process. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3}\index{ProcessRunner@{ProcessRunner}!timeout@{timeout}}
+\index{timeout@{timeout}!ProcessRunner@{ProcessRunner}}
+\doxysubsubsection{\texorpdfstring{timeout}{timeout}}
+{\footnotesize\ttfamily \label{classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3} 
+void Process\+Runner\+::timeout (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when the process times out. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph}
+\end{center}
+\end{figure}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{process__runner_8hpp}{process\+\_\+runner.\+hpp}}\item 
+\mbox{\hyperlink{process__runner_8cpp}{process\+\_\+runner.\+cpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..c27473edcfe33a50d075b1b33903a0ee46aea897
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner__coll__graph.md5
@@ -0,0 +1 @@
+302e2850e06364861d8dd68fadf55403
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..14d436c99e1ba3b76873aa349ed9bc5d7d29e3c4
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..c27473edcfe33a50d075b1b33903a0ee46aea897
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner__inherit__graph.md5
@@ -0,0 +1 @@
+302e2850e06364861d8dd68fadf55403
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..14d436c99e1ba3b76873aa349ed9bc5d7d29e3c4
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..91aa3af56b66692510ed7c2f182bc5938e0424c1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.md5
@@ -0,0 +1 @@
+6a32972b23877dad6f05232cb7a18ce7
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1b6ac50f8f6d6f09df5af676b793c03edaa48bbb
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..fba034ad7dd27176825957879590cc5c6f599f9b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.md5
@@ -0,0 +1 @@
+5e06c1de129842ab52f9952544625270
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5bb06adff22d2bdff0143ac5a7c21eca41c1a4be
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..56b16458b90e05716d28cbe8d7c2aca9cd777151
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.md5
@@ -0,0 +1 @@
+aa64bfaf0b02eea5314fbc0ffd1fe2ba
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..cb06ef9c2768b561f68ee245e9791f60995a69cf
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..43d078cfb1c411665ce2a5a35bb8284c8496e518
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.md5
@@ -0,0 +1 @@
+19b1410aa1ae760bd0a3ebb24ee69efc
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..9c0bc181742476195a4d1b7968e3da201e39216b
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame.tex
new file mode 100644
index 0000000000000000000000000000000000000000..bf61cc34497b44db1e2691b349ec343fb136912f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame.tex
@@ -0,0 +1,25 @@
+\doxysection{QFrame Class Reference}
+\hypertarget{classQFrame}{}\label{classQFrame}\index{QFrame@{QFrame}}
+
+
+Inheritance diagram for QFrame\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=174pt]{classQFrame__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for QFrame\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=123pt]{classQFrame__coll__graph}
+\end{center}
+\end{figure}
+
+
+The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{execute__frame_8hpp}{execute\+\_\+frame.\+hpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..28ddd84a302ad3616b3280e535dfb77f89fffdec
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame__coll__graph.md5
@@ -0,0 +1 @@
+88e3ffb97a0279696e7d21c1dbe1cbe7
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d6e8473863fd3bb67d867dbd703e09c64c0f4300
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f840cd550abb831792756c1e326290aeca4b18d2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame__inherit__graph.md5
@@ -0,0 +1 @@
+19bd7360e814ede983ba79304ee8a18d
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1823332113b9d3d115fe43482ec15a90d91d6a9c
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQFrame__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget.tex
new file mode 100644
index 0000000000000000000000000000000000000000..a65bdf9498c96a9ee74ec2f46b5874458bdabab5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget.tex
@@ -0,0 +1,25 @@
+\doxysection{QList\+Widget Class Reference}
+\hypertarget{classQListWidget}{}\label{classQListWidget}\index{QListWidget@{QListWidget}}
+
+
+Inheritance diagram for QList\+Widget\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=185pt]{classQListWidget__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for QList\+Widget\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=142pt]{classQListWidget__coll__graph}
+\end{center}
+\end{figure}
+
+
+The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{custom__list__widget_8hpp}{custom\+\_\+list\+\_\+widget.\+hpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..d0e09c6a4dca8f4395f4a5cd9eb842c60c24a9b8
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget__coll__graph.md5
@@ -0,0 +1 @@
+11f6a474f77772651b2c8bcc79be5b66
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1f53752cfe6cabd4d7c1f0da0f6f014a64f628ec
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..ad45c6999eda3af3d792d39963790f702a646a7b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget__inherit__graph.md5
@@ -0,0 +1 @@
+5c222b680ca2baf186dfb698313dcb97
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d85a9e5cfc44ba7bbdc26eb56069c4229c1b85cb
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQListWidget__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject.tex
new file mode 100644
index 0000000000000000000000000000000000000000..d217cd014d373076cb3bce9358a6bd9fefc16003
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject.tex
@@ -0,0 +1,25 @@
+\doxysection{QObject Class Reference}
+\hypertarget{classQObject}{}\label{classQObject}\index{QObject@{QObject}}
+
+
+Inheritance diagram for QObject\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classQObject__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for QObject\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=124pt]{classQObject__coll__graph}
+\end{center}
+\end{figure}
+
+
+The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{notebook__converter_8hpp}{notebook\+\_\+converter.\+hpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..df3b3c20cf725062c155f7a58d7fd03e18df4ebc
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject__coll__graph.md5
@@ -0,0 +1 @@
+4b9701d76c858c6cd926ca252736ae98
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d1ebf0c182e6d89c882765ccd3d6f07ea606c381
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..c60be0bcef233373f4628640e994232696273258
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject__inherit__graph.md5
@@ -0,0 +1 @@
+2d30273ac8137d7f0641c9247e8ab23e
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d11f13155829483424d43b83e5ee311c74df3f7e
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQObject__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget.tex
new file mode 100644
index 0000000000000000000000000000000000000000..b060c551dd708b3ca28dba15a9388f8241715d25
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget.tex
@@ -0,0 +1,25 @@
+\doxysection{QWidget Class Reference}
+\hypertarget{classQWidget}{}\label{classQWidget}\index{QWidget@{QWidget}}
+
+
+Inheritance diagram for QWidget\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classQWidget__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for QWidget\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=126pt]{classQWidget__coll__graph}
+\end{center}
+\end{figure}
+
+
+The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{sidebar_8hpp}{sidebar.\+hpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..14668a0e207f8f08a9f40c10a203972371f826fe
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget__coll__graph.md5
@@ -0,0 +1 @@
+114d46afc5526c7744767d24e6a138ad
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..cd8928afcd7471a284b8cf0e6a7153128c0992c5
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..1ae574b3995fa79b528efd58c66fdba6db2ade26
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget__inherit__graph.md5
@@ -0,0 +1 @@
+dc261f99bcc2ff5ff8640af603f432fa
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ced70d2a12317bcb6355945006a03e652e22b561
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classQWidget__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker.tex
new file mode 100644
index 0000000000000000000000000000000000000000..1aaf827da0b8f8e129397e0bd35c7402af7d8a40
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker.tex
@@ -0,0 +1,173 @@
+\doxysection{Script\+Worker Class Reference}
+\hypertarget{classScriptWorker}{}\label{classScriptWorker}\index{ScriptWorker@{ScriptWorker}}
+
+
+Manages the execution of scripts for tasks.  
+
+
+
+
+{\ttfamily \#include $<$script\+\_\+worker.\+hpp$>$}
+
+
+
+Inheritance diagram for Script\+Worker\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=195pt]{classScriptWorker__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for Script\+Worker\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=195pt]{classScriptWorker__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Public Slots}
+\begin{DoxyCompactItemize}
+\item 
+void \mbox{\hyperlink{classScriptWorker_a501653e756b40c33f4bd37957b398de3}{start\+Execution}} ()
+\begin{DoxyCompactList}\small\item\em Starts the execution of the scripts. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classScriptWorker_aafadef7996317ca83dcb2605777affe2}{force\+Stop}} ()
+\begin{DoxyCompactList}\small\item\em Forces the stop of all running scripts. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523}{execute\+Python\+Script}} (const QString \&script\+Path, const QString \&name)
+\begin{DoxyCompactList}\small\item\em Executes a given Python script. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Signals}
+\begin{DoxyCompactItemize}
+\item 
+void \mbox{\hyperlink{classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633}{finished}} ()
+\begin{DoxyCompactList}\small\item\em Signal emitted when the script execution finishes. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a}{failed}} (const QString \&error)
+\begin{DoxyCompactList}\small\item\em Signal emitted when the script execution fails. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{classScriptWorker_a1eb9773d50b730f913bb60149515aef5}{Script\+Worker}} (const QString \&notebook\+Path, const QString \&converted\+Script\+Path, const QString \&eval\+Script\+Path, bool parallelized\+Evaluation, int timeout\+Seconds)
+\begin{DoxyCompactList}\small\item\em Constructs a \doxylink{classScriptWorker}{Script\+Worker} object. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Manages the execution of scripts for tasks. 
+
+The \doxylink{classScriptWorker}{Script\+Worker} class is responsible for converting and executing Jupyter notebooks, as well as evaluating the results. It handles the execution state and emits signals based on the success or failure of the scripts. 
+
+\doxysubsection{Constructor \& Destructor Documentation}
+\Hypertarget{classScriptWorker_a1eb9773d50b730f913bb60149515aef5}\index{ScriptWorker@{ScriptWorker}!ScriptWorker@{ScriptWorker}}
+\index{ScriptWorker@{ScriptWorker}!ScriptWorker@{ScriptWorker}}
+\doxysubsubsection{\texorpdfstring{ScriptWorker()}{ScriptWorker()}}
+{\footnotesize\ttfamily \label{classScriptWorker_a1eb9773d50b730f913bb60149515aef5} 
+Script\+Worker\+::\+Script\+Worker (\begin{DoxyParamCaption}\item[{const QString \&}]{notebook\+Path}{, }\item[{const QString \&}]{converted\+Script\+Path}{, }\item[{const QString \&}]{eval\+Script\+Path}{, }\item[{bool}]{parallelized\+Evaluation}{, }\item[{int}]{timeout\+Seconds}{}\end{DoxyParamCaption})}
+
+
+
+Constructs a \doxylink{classScriptWorker}{Script\+Worker} object. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em notebook\+Path} & Path to the Jupyter notebook file. \\
+\hline
+{\em converted\+Script\+Path} & Path to the converted script. \\
+\hline
+{\em eval\+Script\+Path} & Path to the evaluation script. \\
+\hline
+{\em parallelized\+Evaluation} & Whether the evaluation should run in parallel to the main script. \\
+\hline
+{\em timeout\+Seconds} & Timeout for script execution in seconds. \\
+\hline
+\end{DoxyParams}
+
+
+\doxysubsection{Member Function Documentation}
+\Hypertarget{classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523}\index{ScriptWorker@{ScriptWorker}!executePythonScript@{executePythonScript}}
+\index{executePythonScript@{executePythonScript}!ScriptWorker@{ScriptWorker}}
+\doxysubsubsection{\texorpdfstring{executePythonScript}{executePythonScript}}
+{\footnotesize\ttfamily \label{classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523} 
+void Script\+Worker\+::execute\+Python\+Script (\begin{DoxyParamCaption}\item[{const QString \&}]{script\+Path}{, }\item[{const QString \&}]{name}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [slot]}}
+
+
+
+Executes a given Python script. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a}\index{ScriptWorker@{ScriptWorker}!failed@{failed}}
+\index{failed@{failed}!ScriptWorker@{ScriptWorker}}
+\doxysubsubsection{\texorpdfstring{failed}{failed}}
+{\footnotesize\ttfamily \label{classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a} 
+void Script\+Worker\+::failed (\begin{DoxyParamCaption}\item[{const QString \&}]{error}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when the script execution fails. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em error} & The error message. \\
+\hline
+\end{DoxyParams}
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633}\index{ScriptWorker@{ScriptWorker}!finished@{finished}}
+\index{finished@{finished}!ScriptWorker@{ScriptWorker}}
+\doxysubsubsection{\texorpdfstring{finished}{finished}}
+{\footnotesize\ttfamily \label{classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633} 
+void Script\+Worker\+::finished (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when the script execution finishes. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classScriptWorker_aafadef7996317ca83dcb2605777affe2}\index{ScriptWorker@{ScriptWorker}!forceStop@{forceStop}}
+\index{forceStop@{forceStop}!ScriptWorker@{ScriptWorker}}
+\doxysubsubsection{\texorpdfstring{forceStop}{forceStop}}
+{\footnotesize\ttfamily \label{classScriptWorker_aafadef7996317ca83dcb2605777affe2} 
+void Script\+Worker\+::force\+Stop (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [slot]}}
+
+
+
+Forces the stop of all running scripts. 
+
+\Hypertarget{classScriptWorker_a501653e756b40c33f4bd37957b398de3}\index{ScriptWorker@{ScriptWorker}!startExecution@{startExecution}}
+\index{startExecution@{startExecution}!ScriptWorker@{ScriptWorker}}
+\doxysubsubsection{\texorpdfstring{startExecution}{startExecution}}
+{\footnotesize\ttfamily \label{classScriptWorker_a501653e756b40c33f4bd37957b398de3} 
+void Script\+Worker\+::start\+Execution (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [slot]}}
+
+
+
+Starts the execution of the scripts. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph}
+\end{center}
+\end{figure}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{script__worker_8hpp}{script\+\_\+worker.\+hpp}}\item 
+\mbox{\hyperlink{script__worker_8cpp}{script\+\_\+worker.\+cpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f746d3ab4dee965264a4ff014852fd40a8562bf5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker__coll__graph.md5
@@ -0,0 +1 @@
+f06946f3341149fe5a9743f45c7ab847
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..8db6d82cafd41d8a72a019d26c185ba8a30da86b
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f746d3ab4dee965264a4ff014852fd40a8562bf5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker__inherit__graph.md5
@@ -0,0 +1 @@
+f06946f3341149fe5a9743f45c7ab847
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..8db6d82cafd41d8a72a019d26c185ba8a30da86b
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..7065c842c44cde7ce8afd9919daf745596647b10
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.md5
@@ -0,0 +1 @@
+ac9e5378a051bb438f316a80e0a503b1
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..0e8578554af1b8e63a93071e6831b72dfda0f65b
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_a501653e756b40c33f4bd37957b398de3_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..4ca93a3c7f74d04ba348182b1dbd88b5f748cd83
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.md5
@@ -0,0 +1 @@
+604e3a09e3eb5326554fbee2e0156bbd
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..08e084935fcc07a667775e9b1010231bf6a66c73
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..dba84ed5e9aee2786bb79bdf2bde16583d1b696f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.md5
@@ -0,0 +1 @@
+e16bba1feea2647afb380e1810347f45
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..720e0842a1445671b3cf6ee56d380fd8db34c5c7
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..a60abe6dabb69f22d57a57789e6953820962fe7c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.md5
@@ -0,0 +1 @@
+fe8b7800527260a489de8c41cc97a54f
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..85fb47c46427b1f5e33139b278782555fdbfb7a4
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar.tex
new file mode 100644
index 0000000000000000000000000000000000000000..98f3acac3335aafdd9cb9d2912a9ca34076e8f45
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar.tex
@@ -0,0 +1,120 @@
+\doxysection{Sidebar Class Reference}
+\hypertarget{classSidebar}{}\label{classSidebar}\index{Sidebar@{Sidebar}}
+
+
+Represents the sidebar UI component for displaying tasks.  
+
+
+
+
+{\ttfamily \#include $<$sidebar.\+hpp$>$}
+
+
+
+Inheritance diagram for Sidebar\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=193pt]{classSidebar__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for Sidebar\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=193pt]{classSidebar__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Signals}
+\begin{DoxyCompactItemize}
+\item 
+void \mbox{\hyperlink{classSidebar_ad4d587292c62ad30ac9f1feac5d39499}{task\+Selected}} (int index)
+\begin{DoxyCompactList}\small\item\em Signal emitted when a task is selected. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{classSidebar_a874f7f7907a44517ee9cf9ac2c1888d7}{Sidebar}} (\mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}parent=nullptr)
+\begin{DoxyCompactList}\small\item\em Constructs a \doxylink{classSidebar}{Sidebar} object. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classSidebar_abf817c38465f3382b90d409e9cf87777}{fill\+Sidebar\+With\+Tasks}} (const QVector$<$ QShared\+Pointer$<$ \mbox{\hyperlink{structTask}{Task}} $>$ $>$ \&tasks)
+\begin{DoxyCompactList}\small\item\em Populates the sidebar with tasks. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classSidebar_a9b621329888b135c42333a7ce8a4cad4}{select\+Task}} (int index)
+\begin{DoxyCompactList}\small\item\em Selects a task in the sidebar by its index. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Represents the sidebar UI component for displaying tasks. 
+
+The \doxylink{classSidebar}{Sidebar} class is responsible for displaying a list of tasks in a sidebar. It provides functionalities to populate the sidebar with tasks, handle user interactions, and select tasks programmatically. 
+
+\doxysubsection{Constructor \& Destructor Documentation}
+\Hypertarget{classSidebar_a874f7f7907a44517ee9cf9ac2c1888d7}\index{Sidebar@{Sidebar}!Sidebar@{Sidebar}}
+\index{Sidebar@{Sidebar}!Sidebar@{Sidebar}}
+\doxysubsubsection{\texorpdfstring{Sidebar()}{Sidebar()}}
+{\footnotesize\ttfamily \label{classSidebar_a874f7f7907a44517ee9cf9ac2c1888d7} 
+Sidebar\+::\+Sidebar (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}}]{parent}{ = {\ttfamily nullptr}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [explicit]}}
+
+
+
+Constructs a \doxylink{classSidebar}{Sidebar} object. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em parent} & Pointer to the parent widget. \\
+\hline
+\end{DoxyParams}
+
+
+\doxysubsection{Member Function Documentation}
+\Hypertarget{classSidebar_abf817c38465f3382b90d409e9cf87777}\index{Sidebar@{Sidebar}!fillSidebarWithTasks@{fillSidebarWithTasks}}
+\index{fillSidebarWithTasks@{fillSidebarWithTasks}!Sidebar@{Sidebar}}
+\doxysubsubsection{\texorpdfstring{fillSidebarWithTasks()}{fillSidebarWithTasks()}}
+{\footnotesize\ttfamily \label{classSidebar_abf817c38465f3382b90d409e9cf87777} 
+void Sidebar\+::fill\+Sidebar\+With\+Tasks (\begin{DoxyParamCaption}\item[{const QVector$<$ QShared\+Pointer$<$ \mbox{\hyperlink{structTask}{Task}} $>$ $>$ \&}]{tasks}{}\end{DoxyParamCaption})}
+
+
+
+Populates the sidebar with tasks. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em tasks} & Vector of shared pointers to the tasks to be displayed. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classSidebar_a9b621329888b135c42333a7ce8a4cad4}\index{Sidebar@{Sidebar}!selectTask@{selectTask}}
+\index{selectTask@{selectTask}!Sidebar@{Sidebar}}
+\doxysubsubsection{\texorpdfstring{selectTask()}{selectTask()}}
+{\footnotesize\ttfamily \label{classSidebar_a9b621329888b135c42333a7ce8a4cad4} 
+void Sidebar\+::select\+Task (\begin{DoxyParamCaption}\item[{int}]{index}{}\end{DoxyParamCaption})}
+
+
+
+Selects a task in the sidebar by its index. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em index} & The index of the task to be selected. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classSidebar_ad4d587292c62ad30ac9f1feac5d39499}\index{Sidebar@{Sidebar}!taskSelected@{taskSelected}}
+\index{taskSelected@{taskSelected}!Sidebar@{Sidebar}}
+\doxysubsubsection{\texorpdfstring{taskSelected}{taskSelected}}
+{\footnotesize\ttfamily \label{classSidebar_ad4d587292c62ad30ac9f1feac5d39499} 
+void Sidebar\+::task\+Selected (\begin{DoxyParamCaption}\item[{int}]{index}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when a task is selected. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em index} & The index of the selected task. \\
+\hline
+\end{DoxyParams}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{sidebar_8hpp}{sidebar.\+hpp}}\item 
+\mbox{\hyperlink{sidebar_8cpp}{sidebar.\+cpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..11751fa8e3e7330b62b52242cb6a62fb257629fe
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar__coll__graph.md5
@@ -0,0 +1 @@
+3b86261d8cfe6a9f4fd3b792867865a1
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..125de44046ead327e9ec80869cd84a8c4516e4f3
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..11751fa8e3e7330b62b52242cb6a62fb257629fe
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar__inherit__graph.md5
@@ -0,0 +1 @@
+3b86261d8cfe6a9f4fd3b792867865a1
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..125de44046ead327e9ec80869cd84a8c4516e4f3
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSidebar__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem.tex
new file mode 100644
index 0000000000000000000000000000000000000000..98f40d8fcdcd7c757df778136dbd33e29165a151
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem.tex
@@ -0,0 +1,124 @@
+\doxysection{Subtask\+Item Class Reference}
+\hypertarget{classSubtaskItem}{}\label{classSubtaskItem}\index{SubtaskItem@{SubtaskItem}}
+
+
+Represents a UI item for a subtask.  
+
+
+
+
+{\ttfamily \#include $<$subtask\+\_\+item.\+hpp$>$}
+
+
+
+Inheritance diagram for Subtask\+Item\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=176pt]{classSubtaskItem__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for Subtask\+Item\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=176pt]{classSubtaskItem__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Signals}
+\begin{DoxyCompactItemize}
+\item 
+void \mbox{\hyperlink{classSubtaskItem_a9a41e7bf314df5a4297c68509d531423}{subtask\+Start\+Stop\+Requested}} (const \mbox{\hyperlink{structSubtask}{Subtask}} \&subtask)
+\begin{DoxyCompactList}\small\item\em Signal emitted when a start/stop request is made for the subtask. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{classSubtaskItem_a63e6bb32b434cf04705924c3e2cdd0db}{Subtask\+Item}} (\mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}parent, \mbox{\hyperlink{structSubtask}{Subtask}} \texorpdfstring{$\ast$}{*}subtask)
+\begin{DoxyCompactList}\small\item\em Constructs a \doxylink{classSubtaskItem}{Subtask\+Item} object. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classSubtaskItem_a005df51b50001f3e9c95652e845cf424}{update\+UI}} (bool constructor\+Call=false)
+\begin{DoxyCompactList}\small\item\em Updates the UI elements based on the subtask\textquotesingle{}s status. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classSubtaskItem_aebba84aaef3c06a0c3079cea7fcd4ba6}{set\+Task\+Manager}} (\mbox{\hyperlink{classTaskManager}{Task\+Manager}} \texorpdfstring{$\ast$}{*}manager)
+\begin{DoxyCompactList}\small\item\em Sets the \doxylink{classTaskManager}{Task\+Manager} object. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Represents a UI item for a subtask. 
+
+The \doxylink{classSubtaskItem}{Subtask\+Item} class is responsible for displaying and managing the UI elements related to a subtask. It provides functionalities to update the UI based on the subtask\textquotesingle{}s status and to handle user interactions. This is a \doxylink{classQWidget}{QWidget} designed to function as a List Item. 
+
+\doxysubsection{Constructor \& Destructor Documentation}
+\Hypertarget{classSubtaskItem_a63e6bb32b434cf04705924c3e2cdd0db}\index{SubtaskItem@{SubtaskItem}!SubtaskItem@{SubtaskItem}}
+\index{SubtaskItem@{SubtaskItem}!SubtaskItem@{SubtaskItem}}
+\doxysubsubsection{\texorpdfstring{SubtaskItem()}{SubtaskItem()}}
+{\footnotesize\ttfamily \label{classSubtaskItem_a63e6bb32b434cf04705924c3e2cdd0db} 
+Subtask\+Item\+::\+Subtask\+Item (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}}]{parent}{, }\item[{\mbox{\hyperlink{structSubtask}{Subtask}} \texorpdfstring{$\ast$}{*}}]{subtask}{}\end{DoxyParamCaption})}
+
+
+
+Constructs a \doxylink{classSubtaskItem}{Subtask\+Item} object. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em parent} & Pointer to the parent widget. \\
+\hline
+{\em subtask} & Pointer to the subtask object. \\
+\hline
+\end{DoxyParams}
+
+
+\doxysubsection{Member Function Documentation}
+\Hypertarget{classSubtaskItem_aebba84aaef3c06a0c3079cea7fcd4ba6}\index{SubtaskItem@{SubtaskItem}!setTaskManager@{setTaskManager}}
+\index{setTaskManager@{setTaskManager}!SubtaskItem@{SubtaskItem}}
+\doxysubsubsection{\texorpdfstring{setTaskManager()}{setTaskManager()}}
+{\footnotesize\ttfamily \label{classSubtaskItem_aebba84aaef3c06a0c3079cea7fcd4ba6} 
+void Subtask\+Item\+::set\+Task\+Manager (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classTaskManager}{Task\+Manager}} \texorpdfstring{$\ast$}{*}}]{manager}{}\end{DoxyParamCaption})}
+
+
+
+Sets the \doxylink{classTaskManager}{Task\+Manager} object. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em manager} & Pointer to the \doxylink{classTaskManager}{Task\+Manager} object. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classSubtaskItem_a9a41e7bf314df5a4297c68509d531423}\index{SubtaskItem@{SubtaskItem}!subtaskStartStopRequested@{subtaskStartStopRequested}}
+\index{subtaskStartStopRequested@{subtaskStartStopRequested}!SubtaskItem@{SubtaskItem}}
+\doxysubsubsection{\texorpdfstring{subtaskStartStopRequested}{subtaskStartStopRequested}}
+{\footnotesize\ttfamily \label{classSubtaskItem_a9a41e7bf314df5a4297c68509d531423} 
+void Subtask\+Item\+::subtask\+Start\+Stop\+Requested (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structSubtask}{Subtask}} \&}]{subtask}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when a start/stop request is made for the subtask. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em subtask} & The subtask for which the request is made. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classSubtaskItem_a005df51b50001f3e9c95652e845cf424}\index{SubtaskItem@{SubtaskItem}!updateUI@{updateUI}}
+\index{updateUI@{updateUI}!SubtaskItem@{SubtaskItem}}
+\doxysubsubsection{\texorpdfstring{updateUI()}{updateUI()}}
+{\footnotesize\ttfamily \label{classSubtaskItem_a005df51b50001f3e9c95652e845cf424} 
+void Subtask\+Item\+::update\+UI (\begin{DoxyParamCaption}\item[{bool}]{constructor\+Call}{ = {\ttfamily false}}\end{DoxyParamCaption})}
+
+
+
+Updates the UI elements based on the subtask\textquotesingle{}s status. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph}
+\end{center}
+\end{figure}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{subtask__item_8hpp}{subtask\+\_\+item.\+hpp}}\item 
+\mbox{\hyperlink{subtask__item_8cpp}{subtask\+\_\+item.\+cpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..872d4b20f81d4693096a1789cc78dc39a3291401
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem__coll__graph.md5
@@ -0,0 +1 @@
+1b850b5c29b0c30e234e875e534b5d5a
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..40421508ee657a1fac088e77a93a6c7778da486a
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..872d4b20f81d4693096a1789cc78dc39a3291401
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem__inherit__graph.md5
@@ -0,0 +1 @@
+1b850b5c29b0c30e234e875e534b5d5a
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7685a5f60b2a40d390282672acc37f7fddae757a
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..b5fb3819fba165a0feea1d253de09ed3682f19b2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.md5
@@ -0,0 +1 @@
+f7668251965846c41a74692629bd9e56
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..e072974c1c11a4a94941fd0a326f408e0d0295c7
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classSubtaskItem_a005df51b50001f3e9c95652e845cf424_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor.tex
new file mode 100644
index 0000000000000000000000000000000000000000..89111d84bb6a9198428558653411c765de5c843d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor.tex
@@ -0,0 +1,241 @@
+\doxysection{Task\+Executor Class Reference}
+\hypertarget{classTaskExecutor}{}\label{classTaskExecutor}\index{TaskExecutor@{TaskExecutor}}
+
+
+Executes tasks and manages their execution state.  
+
+
+
+
+{\ttfamily \#include $<$task\+\_\+executor.\+hpp$>$}
+
+
+
+Inheritance diagram for Task\+Executor\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=164pt]{classTaskExecutor__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for Task\+Executor\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=164pt]{classTaskExecutor__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Signals}
+\begin{DoxyCompactItemize}
+\item 
+void \mbox{\hyperlink{classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131}{task\+Execution\+Started}} ()
+\begin{DoxyCompactList}\small\item\em Signal emitted when task execution starts. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc}{task\+Execution\+Finished}} ()
+\begin{DoxyCompactList}\small\item\em Signal emitted when task execution finishes. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskExecutor_adeffddd301a31fe1891712d30096a468}{task\+Execution\+Failed}} (const QString \&error)
+\begin{DoxyCompactList}\small\item\em Signal emitted when task execution fails. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskExecutor_a9d92d24d74615c594a578eafb6d48799}{reset\+Robot\+Started}} ()
+\begin{DoxyCompactList}\small\item\em Signal emitted when robot reset starts. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498}{reset\+Robot\+Finished}} ()
+\begin{DoxyCompactList}\small\item\em Signal emitted when robot reset finishes. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskExecutor_a782117a9e19eff6a87255c7358e87857}{reset\+Robot\+Failed}} (const QString \&error)
+\begin{DoxyCompactList}\small\item\em Signal emitted when robot reset fails. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{classTaskExecutor_ac6783ed16b392507bfaabd21422ee140}{Task\+Executor}} (\mbox{\hyperlink{classQObject}{QObject}} \texorpdfstring{$\ast$}{*}parent=nullptr)
+\begin{DoxyCompactList}\small\item\em Constructs a \doxylink{classTaskExecutor}{Task\+Executor} object. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskExecutor_ac8eb8ba8a66de4a3ed3ead3ad7abab5d}{execute\+Task}} (const \mbox{\hyperlink{structSubtask}{Subtask}} \&subtask, bool start\+Solution=false)
+\begin{DoxyCompactList}\small\item\em Executes a given subtask. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskExecutor_a0a0c76bf999aea855cb83a6051864e09}{force\+Stop}} ()
+\begin{DoxyCompactList}\small\item\em Forces the stop of all currently running tasks. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc}{reset\+Robot}} ()
+\begin{DoxyCompactList}\small\item\em Triggers python script to reset the robot to its initial state and removes all objects from the scene. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Executes tasks and manages their execution state. 
+
+The \doxylink{classTaskExecutor}{Task\+Executor} class is responsible for executing tasks and managing their execution state. It interacts with \doxylink{classScriptWorker}{Script\+Worker} objects to perform the actual execution of tasks. 
+
+\doxysubsection{Constructor \& Destructor Documentation}
+\Hypertarget{classTaskExecutor_ac6783ed16b392507bfaabd21422ee140}\index{TaskExecutor@{TaskExecutor}!TaskExecutor@{TaskExecutor}}
+\index{TaskExecutor@{TaskExecutor}!TaskExecutor@{TaskExecutor}}
+\doxysubsubsection{\texorpdfstring{TaskExecutor()}{TaskExecutor()}}
+{\footnotesize\ttfamily \label{classTaskExecutor_ac6783ed16b392507bfaabd21422ee140} 
+Task\+Executor\+::\+Task\+Executor (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classQObject}{QObject}} \texorpdfstring{$\ast$}{*}}]{parent}{ = {\ttfamily nullptr}}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [explicit]}}
+
+
+
+Constructs a \doxylink{classTaskExecutor}{Task\+Executor} object. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em parent} & Pointer to the parent \doxylink{classQObject}{QObject}. \\
+\hline
+\end{DoxyParams}
+
+
+\doxysubsection{Member Function Documentation}
+\Hypertarget{classTaskExecutor_ac8eb8ba8a66de4a3ed3ead3ad7abab5d}\index{TaskExecutor@{TaskExecutor}!executeTask@{executeTask}}
+\index{executeTask@{executeTask}!TaskExecutor@{TaskExecutor}}
+\doxysubsubsection{\texorpdfstring{executeTask()}{executeTask()}}
+{\footnotesize\ttfamily \label{classTaskExecutor_ac8eb8ba8a66de4a3ed3ead3ad7abab5d} 
+void Task\+Executor\+::execute\+Task (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structSubtask}{Subtask}} \&}]{subtask}{, }\item[{bool}]{start\+Solution}{ = {\ttfamily false}}\end{DoxyParamCaption})}
+
+
+
+Executes a given subtask. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em subtask} & The subtask to be executed. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classTaskExecutor_a0a0c76bf999aea855cb83a6051864e09}\index{TaskExecutor@{TaskExecutor}!forceStop@{forceStop}}
+\index{forceStop@{forceStop}!TaskExecutor@{TaskExecutor}}
+\doxysubsubsection{\texorpdfstring{forceStop()}{forceStop()}}
+{\footnotesize\ttfamily \label{classTaskExecutor_a0a0c76bf999aea855cb83a6051864e09} 
+void Task\+Executor\+::force\+Stop (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}
+
+
+
+Forces the stop of all currently running tasks. 
+
+\Hypertarget{classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc}\index{TaskExecutor@{TaskExecutor}!resetRobot@{resetRobot}}
+\index{resetRobot@{resetRobot}!TaskExecutor@{TaskExecutor}}
+\doxysubsubsection{\texorpdfstring{resetRobot()}{resetRobot()}}
+{\footnotesize\ttfamily \label{classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc} 
+void Task\+Executor\+::reset\+Robot (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}
+
+
+
+Triggers python script to reset the robot to its initial state and removes all objects from the scene. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classTaskExecutor_a782117a9e19eff6a87255c7358e87857}\index{TaskExecutor@{TaskExecutor}!resetRobotFailed@{resetRobotFailed}}
+\index{resetRobotFailed@{resetRobotFailed}!TaskExecutor@{TaskExecutor}}
+\doxysubsubsection{\texorpdfstring{resetRobotFailed}{resetRobotFailed}}
+{\footnotesize\ttfamily \label{classTaskExecutor_a782117a9e19eff6a87255c7358e87857} 
+void Task\+Executor\+::reset\+Robot\+Failed (\begin{DoxyParamCaption}\item[{const QString \&}]{error}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when robot reset fails. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em error} & The error message. \\
+\hline
+\end{DoxyParams}
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498}\index{TaskExecutor@{TaskExecutor}!resetRobotFinished@{resetRobotFinished}}
+\index{resetRobotFinished@{resetRobotFinished}!TaskExecutor@{TaskExecutor}}
+\doxysubsubsection{\texorpdfstring{resetRobotFinished}{resetRobotFinished}}
+{\footnotesize\ttfamily \label{classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498} 
+void Task\+Executor\+::reset\+Robot\+Finished (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when robot reset finishes. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classTaskExecutor_a9d92d24d74615c594a578eafb6d48799}\index{TaskExecutor@{TaskExecutor}!resetRobotStarted@{resetRobotStarted}}
+\index{resetRobotStarted@{resetRobotStarted}!TaskExecutor@{TaskExecutor}}
+\doxysubsubsection{\texorpdfstring{resetRobotStarted}{resetRobotStarted}}
+{\footnotesize\ttfamily \label{classTaskExecutor_a9d92d24d74615c594a578eafb6d48799} 
+void Task\+Executor\+::reset\+Robot\+Started (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when robot reset starts. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classTaskExecutor_adeffddd301a31fe1891712d30096a468}\index{TaskExecutor@{TaskExecutor}!taskExecutionFailed@{taskExecutionFailed}}
+\index{taskExecutionFailed@{taskExecutionFailed}!TaskExecutor@{TaskExecutor}}
+\doxysubsubsection{\texorpdfstring{taskExecutionFailed}{taskExecutionFailed}}
+{\footnotesize\ttfamily \label{classTaskExecutor_adeffddd301a31fe1891712d30096a468} 
+void Task\+Executor\+::task\+Execution\+Failed (\begin{DoxyParamCaption}\item[{const QString \&}]{error}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when task execution fails. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em error} & The error message. \\
+\hline
+\end{DoxyParams}
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc}\index{TaskExecutor@{TaskExecutor}!taskExecutionFinished@{taskExecutionFinished}}
+\index{taskExecutionFinished@{taskExecutionFinished}!TaskExecutor@{TaskExecutor}}
+\doxysubsubsection{\texorpdfstring{taskExecutionFinished}{taskExecutionFinished}}
+{\footnotesize\ttfamily \label{classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc} 
+void Task\+Executor\+::task\+Execution\+Finished (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when task execution finishes. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131}\index{TaskExecutor@{TaskExecutor}!taskExecutionStarted@{taskExecutionStarted}}
+\index{taskExecutionStarted@{taskExecutionStarted}!TaskExecutor@{TaskExecutor}}
+\doxysubsubsection{\texorpdfstring{taskExecutionStarted}{taskExecutionStarted}}
+{\footnotesize\ttfamily \label{classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131} 
+void Task\+Executor\+::task\+Execution\+Started (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when task execution starts. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph}
+\end{center}
+\end{figure}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{task__executor_8hpp}{task\+\_\+executor.\+hpp}}\item 
+\mbox{\hyperlink{task__executor_8cpp}{task\+\_\+executor.\+cpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..544632cd2334c6dea471a2b9b77508e5fdd8c81c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor__coll__graph.md5
@@ -0,0 +1 @@
+def23937907cd99fd603ce61dd545806
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..e2fe2585c5d0e23341549bce8b6c5ab41671384f
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..544632cd2334c6dea471a2b9b77508e5fdd8c81c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor__inherit__graph.md5
@@ -0,0 +1 @@
+def23937907cd99fd603ce61dd545806
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..581b6db845e419abe607926d41c580de58edebd8
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..7e40f680550b61f7bd4d76c236e78c0948cdba70
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.md5
@@ -0,0 +1 @@
+7852157cb9687bedbc434a20b0087269
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..25f8bb753cba19923a9a55ac2d3ad23e66386e09
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..d4666759063412d76ea49cd3c27dc88eb61ca8f3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.md5
@@ -0,0 +1 @@
+83fb8b4b23d7f9ca281d6694220f7efc
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..25fd1d95550b3db84380c83ca7302712124fd913
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a782117a9e19eff6a87255c7358e87857_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..02405965e4676b14cd5440ffeb9462a3ac72d13c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.md5
@@ -0,0 +1 @@
+4206de1f1ccaa0eba234e870ccf3b72e
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..87f42abe891b4a16f2e2449ec017fd7367655e6f
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f4e11f742e2ece56e15c074215a0edf4e319483c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.md5
@@ -0,0 +1 @@
+0578f21aab0e42eed0ae6bac80b619bf
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..3f2bc9598ba4e55cabc958cce2e4ef3c27510314
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_a9d92d24d74615c594a578eafb6d48799_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..7bd9c9445ba3d297c281602550c25c8070ad57a3
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.md5
@@ -0,0 +1 @@
+2c47dc1a52387570c4a01a3d6d9375e1
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..30275c1ce3f907076d5edc4d42b8058bb30726d7
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..962ea68b596f74a198dafc19e3f3024b187a1825
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.md5
@@ -0,0 +1 @@
+2ff5efe35589bedb063b98614c52ea2d
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b0e072b535e29930a443464b9b8744e7d1c60c9f
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..32230737b672d56c5010bf90d4df7c547dba7ddc
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.md5
@@ -0,0 +1 @@
+ce8ab7a91e6503b447de7160f7f6d866
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7c93574c6ad8c23ee73e63d23c33cdac82a097de
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskExecutor_adeffddd301a31fe1891712d30096a468_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager.tex
new file mode 100644
index 0000000000000000000000000000000000000000..06176060eeca85cddd53a2028754fd58895d7748
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager.tex
@@ -0,0 +1,184 @@
+\doxysection{Task\+Manager Class Reference}
+\hypertarget{classTaskManager}{}\label{classTaskManager}\index{TaskManager@{TaskManager}}
+
+
+Manages tasks and their execution within the application.  
+
+
+
+
+{\ttfamily \#include $<$task\+\_\+manager.\+hpp$>$}
+
+
+
+Inheritance diagram for Task\+Manager\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=180pt]{classTaskManager__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for Task\+Manager\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=180pt]{classTaskManager__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Public Slots}
+\begin{DoxyCompactItemize}
+\item 
+void \mbox{\hyperlink{classTaskManager_a327677e3a17f1a707095119328a96179}{next\+Task}} ()
+\begin{DoxyCompactList}\small\item\em Slot for changing to the next task. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskManager_a844a6313afed60e7def0f79eaeae7b9e}{previous\+Task}} ()
+\begin{DoxyCompactList}\small\item\em Slot for changing to the previous task. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskManager_a51989e6fb895fd817286153750f07d75}{select\+Task}} (int index)
+\begin{DoxyCompactList}\small\item\em Selects a task by its index. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskManager_a36aa4b88ce92147fc2bfe7b222e8d984}{start\+Stop\+Subtask}} (const \mbox{\hyperlink{structSubtask}{Subtask}} \&subtask)
+\begin{DoxyCompactList}\small\item\em Starts or stops a subtask. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskManager_a9a858cb5aae71b691204c8561322677e}{force\+Reset\+Robot}} ()
+\begin{DoxyCompactList}\small\item\em Forces the reset of the robot to its initial state. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{classTaskManager_a9c906455542360f6760169599f2640a3}{Task\+Manager}} (\mbox{\hyperlink{classTaskUI}{Task\+UI}} \texorpdfstring{$\ast$}{*}task\+UI, \mbox{\hyperlink{classQObject}{QObject}} \texorpdfstring{$\ast$}{*}parent=nullptr)
+\begin{DoxyCompactList}\small\item\em Constructs a \doxylink{classTaskManager}{Task\+Manager} object. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskManager_ac4c5170435b505415f49e40906888743}{start\+Stop\+Subtask}} (\mbox{\hyperlink{structSubtask}{Subtask}} \&subtask, bool start\+Solution=false)
+\begin{DoxyCompactList}\small\item\em Starts or stops a subtask. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskManager_a9f3de937346f77e565d555a59a8a0da0}{toggle\+Solution}} (\mbox{\hyperlink{structSubtask}{Subtask}} \&subtask)
+\begin{DoxyCompactList}\small\item\em Show or hide the solution of a subtask. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Manages tasks and their execution within the application. 
+
+The \doxylink{classTaskManager}{Task\+Manager} class is responsible for loading tasks, managing their execution, and handling user interactions through the UI. 
+
+\doxysubsection{Constructor \& Destructor Documentation}
+\Hypertarget{classTaskManager_a9c906455542360f6760169599f2640a3}\index{TaskManager@{TaskManager}!TaskManager@{TaskManager}}
+\index{TaskManager@{TaskManager}!TaskManager@{TaskManager}}
+\doxysubsubsection{\texorpdfstring{TaskManager()}{TaskManager()}}
+{\footnotesize\ttfamily \label{classTaskManager_a9c906455542360f6760169599f2640a3} 
+Task\+Manager\+::\+Task\+Manager (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classTaskUI}{Task\+UI}} \texorpdfstring{$\ast$}{*}}]{task\+UI}{, }\item[{\mbox{\hyperlink{classQObject}{QObject}} \texorpdfstring{$\ast$}{*}}]{parent}{ = {\ttfamily nullptr}}\end{DoxyParamCaption})}
+
+
+
+Constructs a \doxylink{classTaskManager}{Task\+Manager} object. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em task\+UI} & Pointer to the \doxylink{classTaskUI}{Task\+UI} object. \\
+\hline
+{\em parent} & Pointer to the parent \doxylink{classQObject}{QObject}. \\
+\hline
+\end{DoxyParams}
+
+
+\doxysubsection{Member Function Documentation}
+\Hypertarget{classTaskManager_a9a858cb5aae71b691204c8561322677e}\index{TaskManager@{TaskManager}!forceResetRobot@{forceResetRobot}}
+\index{forceResetRobot@{forceResetRobot}!TaskManager@{TaskManager}}
+\doxysubsubsection{\texorpdfstring{forceResetRobot}{forceResetRobot}}
+{\footnotesize\ttfamily \label{classTaskManager_a9a858cb5aae71b691204c8561322677e} 
+void Task\+Manager\+::force\+Reset\+Robot (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [slot]}}
+
+
+
+Forces the reset of the robot to its initial state. 
+
+\Hypertarget{classTaskManager_a327677e3a17f1a707095119328a96179}\index{TaskManager@{TaskManager}!nextTask@{nextTask}}
+\index{nextTask@{nextTask}!TaskManager@{TaskManager}}
+\doxysubsubsection{\texorpdfstring{nextTask}{nextTask}}
+{\footnotesize\ttfamily \label{classTaskManager_a327677e3a17f1a707095119328a96179} 
+void Task\+Manager\+::next\+Task (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [slot]}}
+
+
+
+Slot for changing to the next task. 
+
+\Hypertarget{classTaskManager_a844a6313afed60e7def0f79eaeae7b9e}\index{TaskManager@{TaskManager}!previousTask@{previousTask}}
+\index{previousTask@{previousTask}!TaskManager@{TaskManager}}
+\doxysubsubsection{\texorpdfstring{previousTask}{previousTask}}
+{\footnotesize\ttfamily \label{classTaskManager_a844a6313afed60e7def0f79eaeae7b9e} 
+void Task\+Manager\+::previous\+Task (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [slot]}}
+
+
+
+Slot for changing to the previous task. 
+
+\Hypertarget{classTaskManager_a51989e6fb895fd817286153750f07d75}\index{TaskManager@{TaskManager}!selectTask@{selectTask}}
+\index{selectTask@{selectTask}!TaskManager@{TaskManager}}
+\doxysubsubsection{\texorpdfstring{selectTask}{selectTask}}
+{\footnotesize\ttfamily \label{classTaskManager_a51989e6fb895fd817286153750f07d75} 
+void Task\+Manager\+::select\+Task (\begin{DoxyParamCaption}\item[{int}]{index}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [slot]}}
+
+
+
+Selects a task by its index. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em index} & The index of the task to be selected. \\
+\hline
+\end{DoxyParams}
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classTaskManager_a36aa4b88ce92147fc2bfe7b222e8d984}\index{TaskManager@{TaskManager}!startStopSubtask@{startStopSubtask}}
+\index{startStopSubtask@{startStopSubtask}!TaskManager@{TaskManager}}
+\doxysubsubsection{\texorpdfstring{startStopSubtask}{startStopSubtask}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
+{\footnotesize\ttfamily \label{classTaskManager_a36aa4b88ce92147fc2bfe7b222e8d984} 
+void Task\+Manager\+::start\+Stop\+Subtask (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structSubtask}{Subtask}} \&}]{subtask}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [slot]}}
+
+
+
+Starts or stops a subtask. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em subtask} & Reference to the subtask to be started or stopped. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classTaskManager_ac4c5170435b505415f49e40906888743}\index{TaskManager@{TaskManager}!startStopSubtask@{startStopSubtask}}
+\index{startStopSubtask@{startStopSubtask}!TaskManager@{TaskManager}}
+\doxysubsubsection{\texorpdfstring{startStopSubtask()}{startStopSubtask()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
+{\footnotesize\ttfamily \label{classTaskManager_ac4c5170435b505415f49e40906888743} 
+void Task\+Manager\+::start\+Stop\+Subtask (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structSubtask}{Subtask}} \&}]{subtask}{, }\item[{bool}]{start\+Solution}{ = {\ttfamily false}}\end{DoxyParamCaption})}
+
+
+
+Starts or stops a subtask. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em subtask} & Reference to the subtask to be started or stopped. \\
+\hline
+{\em start\+Solution} & Flag indicating whether to start the solution or the users script. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classTaskManager_a9f3de937346f77e565d555a59a8a0da0}\index{TaskManager@{TaskManager}!toggleSolution@{toggleSolution}}
+\index{toggleSolution@{toggleSolution}!TaskManager@{TaskManager}}
+\doxysubsubsection{\texorpdfstring{toggleSolution()}{toggleSolution()}}
+{\footnotesize\ttfamily \label{classTaskManager_a9f3de937346f77e565d555a59a8a0da0} 
+void Task\+Manager\+::toggle\+Solution (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structSubtask}{Subtask}} \&}]{subtask}{}\end{DoxyParamCaption})}
+
+
+
+Show or hide the solution of a subtask. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em subtask} & Reference to the subtask. \\
+\hline
+\end{DoxyParams}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{task__manager_8hpp}{task\+\_\+manager.\+hpp}}\item 
+\mbox{\hyperlink{task__manager_8cpp}{task\+\_\+manager.\+cpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..b9478adfad848cf97208fccad7ad027ed3e5c76d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager__coll__graph.md5
@@ -0,0 +1 @@
+33eb1434b6a1198057b93421f743df01
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1423e9c27c8e51374d38cd69dce8010e3e72ff43
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..b9478adfad848cf97208fccad7ad027ed3e5c76d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager__inherit__graph.md5
@@ -0,0 +1 @@
+33eb1434b6a1198057b93421f743df01
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1423e9c27c8e51374d38cd69dce8010e3e72ff43
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..3a1661d588bd76e601c4286f8d385c0801fb0c67
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.md5
@@ -0,0 +1 @@
+4cd79e582c43790f5c14d883b8b087d4
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..73f3fb8ae4c38e5421bf6203212285b0c3453e7f
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskManager_a51989e6fb895fd817286153750f07d75_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser.tex
new file mode 100644
index 0000000000000000000000000000000000000000..8dc59db83f017fa929073e87bf92a2734a03981a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser.tex
@@ -0,0 +1,70 @@
+\doxysection{Task\+Parser Class Reference}
+\hypertarget{classTaskParser}{}\label{classTaskParser}\index{TaskParser@{TaskParser}}
+
+
+Parses tasks and subtasks from a JSON file.  
+
+
+
+
+{\ttfamily \#include $<$task\+\_\+parser.\+hpp$>$}
+
+
+
+Collaboration diagram for Task\+Parser\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=148pt]{classTaskParser__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+QVector$<$ QShared\+Pointer$<$ \mbox{\hyperlink{structTask}{Task}} $>$ $>$ \mbox{\hyperlink{classTaskParser_a86f40497d6666a02307886ed3a4056f3}{load\+Tasks}} (const QString \&task\+Path, const QString \&difficulty\+Path, const QString \&topic\+Path)
+\begin{DoxyCompactList}\small\item\em Loads tasks with all configuration JSON files. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Parses tasks and subtasks from a JSON file. 
+
+The \doxylink{classTaskParser}{Task\+Parser} class is responsible for loading tasks and their subtasks from a JSON file. It provides methods to parse the JSON data and convert it into \doxylink{structTask}{Task} and \doxylink{structSubtask}{Subtask} objects. 
+
+\doxysubsection{Member Function Documentation}
+\Hypertarget{classTaskParser_a86f40497d6666a02307886ed3a4056f3}\index{TaskParser@{TaskParser}!loadTasks@{loadTasks}}
+\index{loadTasks@{loadTasks}!TaskParser@{TaskParser}}
+\doxysubsubsection{\texorpdfstring{loadTasks()}{loadTasks()}}
+{\footnotesize\ttfamily \label{classTaskParser_a86f40497d6666a02307886ed3a4056f3} 
+QVector$<$ QShared\+Pointer$<$ \mbox{\hyperlink{structTask}{Task}} $>$ $>$ Task\+Parser\+::load\+Tasks (\begin{DoxyParamCaption}\item[{const QString \&}]{task\+Path}{, }\item[{const QString \&}]{difficulty\+Path}{, }\item[{const QString \&}]{topic\+Path}{}\end{DoxyParamCaption})}
+
+
+
+Loads tasks with all configuration JSON files. 
+
+This function reads the tasks, difficulty levels, and topic definitions from the specified JSON files. It parses the JSON data and constructs a vector of shared pointers to \doxylink{structTask}{Task} objects. The tasks are sorted based on the defined topic order from the topic definition JSON file. If any of the files cannot be opened or if there is a JSON parsing error, an empty vector is returned.
+
+
+\begin{DoxyParams}{Parameters}
+{\em task\+Path} & The path to the JSON file containing the tasks. \\
+\hline
+{\em difficulty\+Path} & The path to the JSON file containing the difficulty levels. \\
+\hline
+{\em topic\+Path} & The path to the JSON file containing the topic definitions. \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+A vector of shared pointers to the loaded tasks. 
+\end{DoxyReturn}
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph}
+\end{center}
+\end{figure}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{task__parser_8hpp}{task\+\_\+parser.\+hpp}}\item 
+\mbox{\hyperlink{task__parser_8cpp}{task\+\_\+parser.\+cpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..da5ff7edbc08679334bcba510f421788eda1af56
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser__coll__graph.md5
@@ -0,0 +1 @@
+96c3593d5afa7dc51ef07c7cb8d9ce28
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..12fff3248722d5148d053ef8b6c2c1489476aacb
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..2de3fb0a4b7c45af54c8b7f50dc5226f0d16d117
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.md5
@@ -0,0 +1 @@
+e57096b20e5b4c0da378b63adc85e533
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2788a2ad339c97f74d2e93561de7de0b13f3e214
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskParser_a86f40497d6666a02307886ed3a4056f3_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI.tex
new file mode 100644
index 0000000000000000000000000000000000000000..6eea1901088979269c68f6663163d00879982a51
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI.tex
@@ -0,0 +1,242 @@
+\doxysection{Task\+UI Class Reference}
+\hypertarget{classTaskUI}{}\label{classTaskUI}\index{TaskUI@{TaskUI}}
+
+
+Manages the user interface for tasks and subtasks.  
+
+
+
+
+{\ttfamily \#include $<$task\+\_\+ui.\+hpp$>$}
+
+
+
+Inheritance diagram for Task\+UI\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=205pt]{classTaskUI__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for Task\+UI\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=205pt]{classTaskUI__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Signals}
+\begin{DoxyCompactItemize}
+\item 
+void \mbox{\hyperlink{classTaskUI_af43308f1438155bd927357ac93c7b9db}{task\+Selected}} (int index)
+\begin{DoxyCompactList}\small\item\em Signal emitted when a task is selected. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{classTaskUI_a86f09b07fe3b4fd956f8c4ab02b8fae2}{Task\+UI}} (QVBox\+Layout \texorpdfstring{$\ast$}{*}subtask\+List\+Layout, QLabel \texorpdfstring{$\ast$}{*}main\+Title\+Label, QLabel \texorpdfstring{$\ast$}{*}difficulty\+Label, QLabel \texorpdfstring{$\ast$}{*}folder\+Label, QLabel \texorpdfstring{$\ast$}{*}topic\+Label, QPush\+Button \texorpdfstring{$\ast$}{*}next\+Button, QPush\+Button \texorpdfstring{$\ast$}{*}previous\+Button, QTool\+Button \texorpdfstring{$\ast$}{*}menu\+Button, QTool\+Button \texorpdfstring{$\ast$}{*}reset\+Robot\+Start\+Button, \mbox{\hyperlink{classQFrame}{QFrame}} \texorpdfstring{$\ast$}{*}reset\+Robot\+Frame, \mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}centralwidget, \mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}parent=nullptr)
+\begin{DoxyCompactList}\small\item\em Constructs a \doxylink{classTaskUI}{Task\+UI} object. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskUI_a62690c3b7147c20980da5c2323314025}{initialize\+UI}} (const QVector$<$ QShared\+Pointer$<$ \mbox{\hyperlink{structTask}{Task}} $>$ $>$ \&tasks)
+\begin{DoxyCompactList}\small\item\em Initializes the UI with the loaded tasks. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4}{set\+Task\+UI}} (int current\+Task\+Index)
+\begin{DoxyCompactList}\small\item\em Sets the UI elements for the current task. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e}{update\+Subtask\+Items\+UI}} ()
+\begin{DoxyCompactList}\small\item\em Updates the UI elements for the subtasks. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskUI_a53f64716c6328b25e37d822e687886cf}{set\+Task\+Manager}} (\mbox{\hyperlink{classTaskManager}{Task\+Manager}} \texorpdfstring{$\ast$}{*}manager)
+\begin{DoxyCompactList}\small\item\em Sets the \doxylink{classTaskManager}{Task\+Manager} object. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskUI_a11f88e4482442899fa19adf1f66fa030}{started\+Robot\+Reset\+UI}} (bool no\+Subtasks\+Left)
+\begin{DoxyCompactList}\small\item\em Update the UI to show that the robot reset has been started. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskUI_a6c2ca067880d519ab255a7608a268c8f}{finished\+Robot\+Reset\+UI}} ()
+\begin{DoxyCompactList}\small\item\em Update the UI to show that the robot reset has finished. \end{DoxyCompactList}\item 
+void \mbox{\hyperlink{classTaskUI_a8cb2994522ad6b1b59383515edddead3}{failed\+Robot\+Reset\+UI}} (const QString \&error)
+\begin{DoxyCompactList}\small\item\em Update the UI to show that the robot reset has failed. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Manages the user interface for tasks and subtasks. 
+
+The \doxylink{classTaskUI}{Task\+UI} class is responsible for initializing and updating the UI elements related to tasks and subtasks. It interacts with the \doxylink{classTaskManager}{Task\+Manager} and \doxylink{classSidebar}{Sidebar} to provide a cohesive user experience. 
+
+\doxysubsection{Constructor \& Destructor Documentation}
+\Hypertarget{classTaskUI_a86f09b07fe3b4fd956f8c4ab02b8fae2}\index{TaskUI@{TaskUI}!TaskUI@{TaskUI}}
+\index{TaskUI@{TaskUI}!TaskUI@{TaskUI}}
+\doxysubsubsection{\texorpdfstring{TaskUI()}{TaskUI()}}
+{\footnotesize\ttfamily \label{classTaskUI_a86f09b07fe3b4fd956f8c4ab02b8fae2} 
+Task\+UI\+::\+Task\+UI (\begin{DoxyParamCaption}\item[{QVBox\+Layout \texorpdfstring{$\ast$}{*}}]{subtask\+List\+Layout}{, }\item[{QLabel \texorpdfstring{$\ast$}{*}}]{main\+Title\+Label}{, }\item[{QLabel \texorpdfstring{$\ast$}{*}}]{difficulty\+Label}{, }\item[{QLabel \texorpdfstring{$\ast$}{*}}]{folder\+Label}{, }\item[{QLabel \texorpdfstring{$\ast$}{*}}]{topic\+Label}{, }\item[{QPush\+Button \texorpdfstring{$\ast$}{*}}]{next\+Button}{, }\item[{QPush\+Button \texorpdfstring{$\ast$}{*}}]{previous\+Button}{, }\item[{QTool\+Button \texorpdfstring{$\ast$}{*}}]{menu\+Button}{, }\item[{QTool\+Button \texorpdfstring{$\ast$}{*}}]{reset\+Robot\+Start\+Button}{, }\item[{\mbox{\hyperlink{classQFrame}{QFrame}} \texorpdfstring{$\ast$}{*}}]{reset\+Robot\+Frame}{, }\item[{\mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}}]{centralwidget}{, }\item[{\mbox{\hyperlink{classQWidget}{QWidget}} \texorpdfstring{$\ast$}{*}}]{parent}{ = {\ttfamily nullptr}}\end{DoxyParamCaption})}
+
+
+
+Constructs a \doxylink{classTaskUI}{Task\+UI} object. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em subtask\+List\+Layout} & Pointer to the vertical layout for displaying subtasks. \\
+\hline
+{\em main\+Title\+Label} & Pointer to the QLabel for displaying the main title. \\
+\hline
+{\em difficulty\+Label} & Pointer to the QLabel for displaying the difficulty level. \\
+\hline
+{\em folder\+Label} & Pointer to the QLabel for displaying the folder information. \\
+\hline
+{\em next\+Button} & Pointer to the QPush\+Button for navigating to the next task. \\
+\hline
+{\em previous\+Button} & Pointer to the QPush\+Button for navigating to the previous task. \\
+\hline
+{\em menu\+Button} & Pointer to the QTool\+Button for opening the sidebar. \\
+\hline
+{\em reset\+Robot\+Start\+Button} & Pointer to the QTool\+Button for resetting the robot. \\
+\hline
+{\em reset\+Robot\+Frame} & Pointer to the \doxylink{classQFrame}{QFrame} displaying the reset of the robot. \\
+\hline
+{\em central\+Widget} & Pointer to the central \doxylink{classQWidget}{QWidget} for the plugin. \\
+\hline
+{\em parent} & Pointer to the parent \doxylink{classQObject}{QObject}. \\
+\hline
+\end{DoxyParams}
+
+
+\doxysubsection{Member Function Documentation}
+\Hypertarget{classTaskUI_a8cb2994522ad6b1b59383515edddead3}\index{TaskUI@{TaskUI}!failedRobotResetUI@{failedRobotResetUI}}
+\index{failedRobotResetUI@{failedRobotResetUI}!TaskUI@{TaskUI}}
+\doxysubsubsection{\texorpdfstring{failedRobotResetUI()}{failedRobotResetUI()}}
+{\footnotesize\ttfamily \label{classTaskUI_a8cb2994522ad6b1b59383515edddead3} 
+void Task\+UI\+::failed\+Robot\+Reset\+UI (\begin{DoxyParamCaption}\item[{const QString \&}]{error}{}\end{DoxyParamCaption})}
+
+
+
+Update the UI to show that the robot reset has failed. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em error} & the error that occured while resetting the robot. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classTaskUI_a6c2ca067880d519ab255a7608a268c8f}\index{TaskUI@{TaskUI}!finishedRobotResetUI@{finishedRobotResetUI}}
+\index{finishedRobotResetUI@{finishedRobotResetUI}!TaskUI@{TaskUI}}
+\doxysubsubsection{\texorpdfstring{finishedRobotResetUI()}{finishedRobotResetUI()}}
+{\footnotesize\ttfamily \label{classTaskUI_a6c2ca067880d519ab255a7608a268c8f} 
+void Task\+UI\+::finished\+Robot\+Reset\+UI (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}
+
+
+
+Update the UI to show that the robot reset has finished. 
+
+\Hypertarget{classTaskUI_a62690c3b7147c20980da5c2323314025}\index{TaskUI@{TaskUI}!initializeUI@{initializeUI}}
+\index{initializeUI@{initializeUI}!TaskUI@{TaskUI}}
+\doxysubsubsection{\texorpdfstring{initializeUI()}{initializeUI()}}
+{\footnotesize\ttfamily \label{classTaskUI_a62690c3b7147c20980da5c2323314025} 
+void Task\+UI\+::initialize\+UI (\begin{DoxyParamCaption}\item[{const QVector$<$ QShared\+Pointer$<$ \mbox{\hyperlink{structTask}{Task}} $>$ $>$ \&}]{tasks}{}\end{DoxyParamCaption})}
+
+
+
+Initializes the UI with the loaded tasks. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em tasks} & Vector of loaded tasks. \\
+\hline
+\end{DoxyParams}
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classTaskUI_a53f64716c6328b25e37d822e687886cf}\index{TaskUI@{TaskUI}!setTaskManager@{setTaskManager}}
+\index{setTaskManager@{setTaskManager}!TaskUI@{TaskUI}}
+\doxysubsubsection{\texorpdfstring{setTaskManager()}{setTaskManager()}}
+{\footnotesize\ttfamily \label{classTaskUI_a53f64716c6328b25e37d822e687886cf} 
+void Task\+UI\+::set\+Task\+Manager (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classTaskManager}{Task\+Manager}} \texorpdfstring{$\ast$}{*}}]{manager}{}\end{DoxyParamCaption})}
+
+
+
+Sets the \doxylink{classTaskManager}{Task\+Manager} object. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em manager} & Pointer to the \doxylink{classTaskManager}{Task\+Manager} object. \\
+\hline
+\end{DoxyParams}
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4}\index{TaskUI@{TaskUI}!setTaskUI@{setTaskUI}}
+\index{setTaskUI@{setTaskUI}!TaskUI@{TaskUI}}
+\doxysubsubsection{\texorpdfstring{setTaskUI()}{setTaskUI()}}
+{\footnotesize\ttfamily \label{classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4} 
+void Task\+UI\+::set\+Task\+UI (\begin{DoxyParamCaption}\item[{int}]{current\+Task\+Index}{}\end{DoxyParamCaption})}
+
+
+
+Sets the UI elements for the current task. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em current\+Task\+Index} & Index of the current task. \\
+\hline
+\end{DoxyParams}
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph}
+\end{center}
+\end{figure}
+\Hypertarget{classTaskUI_a11f88e4482442899fa19adf1f66fa030}\index{TaskUI@{TaskUI}!startedRobotResetUI@{startedRobotResetUI}}
+\index{startedRobotResetUI@{startedRobotResetUI}!TaskUI@{TaskUI}}
+\doxysubsubsection{\texorpdfstring{startedRobotResetUI()}{startedRobotResetUI()}}
+{\footnotesize\ttfamily \label{classTaskUI_a11f88e4482442899fa19adf1f66fa030} 
+void Task\+UI\+::started\+Robot\+Reset\+UI (\begin{DoxyParamCaption}\item[{bool}]{no\+Subtasks\+Left}{}\end{DoxyParamCaption})}
+
+
+
+Update the UI to show that the robot reset has been started. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em no\+Subtasks\+Left} & indicator, if subtasks are running after the rest or not. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classTaskUI_af43308f1438155bd927357ac93c7b9db}\index{TaskUI@{TaskUI}!taskSelected@{taskSelected}}
+\index{taskSelected@{taskSelected}!TaskUI@{TaskUI}}
+\doxysubsubsection{\texorpdfstring{taskSelected}{taskSelected}}
+{\footnotesize\ttfamily \label{classTaskUI_af43308f1438155bd927357ac93c7b9db} 
+void Task\+UI\+::task\+Selected (\begin{DoxyParamCaption}\item[{int}]{index}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [signal]}}
+
+
+
+Signal emitted when a task is selected. 
+
+
+\begin{DoxyParams}{Parameters}
+{\em index} & Index of the selected task. \\
+\hline
+\end{DoxyParams}
+\Hypertarget{classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e}\index{TaskUI@{TaskUI}!updateSubtaskItemsUI@{updateSubtaskItemsUI}}
+\index{updateSubtaskItemsUI@{updateSubtaskItemsUI}!TaskUI@{TaskUI}}
+\doxysubsubsection{\texorpdfstring{updateSubtaskItemsUI()}{updateSubtaskItemsUI()}}
+{\footnotesize\ttfamily \label{classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e} 
+void Task\+UI\+::update\+Subtask\+Items\+UI (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})}
+
+
+
+Updates the UI elements for the subtasks. 
+
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph}
+\end{center}
+\end{figure}
+
+
+The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{task__ui_8hpp}{task\+\_\+ui.\+hpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..56c129d29b1ba508c727476cbf997a73a84a2b2b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI__coll__graph.md5
@@ -0,0 +1 @@
+4f48a8b0326e952ffa269db1042da5e5
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..25d76dca79a52df111222ab6579627f1518d7da8
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI__inherit__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI__inherit__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..56c129d29b1ba508c727476cbf997a73a84a2b2b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI__inherit__graph.md5
@@ -0,0 +1 @@
+4f48a8b0326e952ffa269db1042da5e5
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI__inherit__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI__inherit__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..ec71df8ceb570ce8ecd8f82505da8ddf0a68f662
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI__inherit__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..2383bcb0b95958099b5d964551c67fc711bbff73
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.md5
@@ -0,0 +1 @@
+9df23f75c5c260fb1fbc286ce79b38a2
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..de9701f5a37d5e600f8b89a446d9722c5df1b392
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a53f64716c6328b25e37d822e687886cf_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..cafa635fd6680dc22f04720423f6f96ae41089d2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.md5
@@ -0,0 +1 @@
+ec0867a76c9a3433c375b7ba20d7586e
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..237acaae34f637c6499d115866f999ce67a62392
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a62690c3b7147c20980da5c2323314025_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..d9309ef584b7eeac999b3ddfe8f5ef8807b16c2c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.md5
@@ -0,0 +1 @@
+0e6278093f1b0ef706f9915da5009e6f
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..15f21fab25261ba301497c9d1e2713f874e7987d
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..a193c7a26341b4241101d5b8eb128947e6e5d1b0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.md5
@@ -0,0 +1 @@
+d09ee465e4beb17c44f95febcc56c853
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5e59819f271db8d7311a17543225c254218ff2f1
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8cpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8cpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..174d09c85ffab5e0b86f021d6a2c882a85d7a815
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8cpp.tex
@@ -0,0 +1,10 @@
+\doxysection{custom\+\_\+list\+\_\+widget.\+cpp File Reference}
+\hypertarget{custom__list__widget_8cpp}{}\label{custom__list__widget_8cpp}\index{custom\_list\_widget.cpp@{custom\_list\_widget.cpp}}
+{\ttfamily \#include "{}learn\+\_\+environment/custom\+\_\+list\+\_\+widget.\+hpp"{}}\newline
+Include dependency graph for custom\+\_\+list\+\_\+widget.\+cpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=336pt]{custom__list__widget_8cpp__incl}
+\end{center}
+\end{figure}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..41e6f4d52908a44330e3ffd992e1622989bffb93
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8cpp__incl.md5
@@ -0,0 +1 @@
+d710643e02ad578d4d6131e8931404a7
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8cpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8cpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..41949d69503f79d6f4a6bd8bcbe8c04fa2f3b717
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8cpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..0ead42be2df17e97956042b601e5d43bafa66609
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp.tex
@@ -0,0 +1,24 @@
+\doxysection{custom\+\_\+list\+\_\+widget.\+hpp File Reference}
+\hypertarget{custom__list__widget_8hpp}{}\label{custom__list__widget_8hpp}\index{custom\_list\_widget.hpp@{custom\_list\_widget.hpp}}
+{\ttfamily \#include $<$QList\+Widget$>$}\newline
+{\ttfamily \#include $<$QMouse\+Event$>$}\newline
+{\ttfamily \#include $<$QApplication$>$}\newline
+Include dependency graph for custom\+\_\+list\+\_\+widget.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=336pt]{custom__list__widget_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{custom__list__widget_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+class \mbox{\hyperlink{classCustomListWidget}{Custom\+List\+Widget}}
+\begin{DoxyCompactList}\small\item\em A custom \doxylink{classQListWidget}{QList\+Widget} with enhanced mouse interaction. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..70f39f72902c68646106dd279df297ccd9d6abeb
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+1842ef6b4bf721080aab0b13df402fd5
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..f5a3bea4767c23b9514e6fa0a188ad46ebca4d75
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..aad42a9325247938a0ea718e0af3873ac39afd36
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp__incl.md5
@@ -0,0 +1 @@
+593d811e01167d3c1704eb75fa44ddc9
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5446a309f173770f8696ff80bab027c910b3681c
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..fe41fb5d03368c74656b5b6d6e0a5a69f2c7f1aa
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/custom__list__widget_8hpp_source.tex
@@ -0,0 +1,30 @@
+\doxysection{custom\+\_\+list\+\_\+widget.\+hpp}
+\hypertarget{custom__list__widget_8hpp_source}{}\label{custom__list__widget_8hpp_source}\index{custom\_list\_widget.hpp@{custom\_list\_widget.hpp}}
+\mbox{\hyperlink{custom__list__widget_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ CUSTOM\_LIST\_WIDGET\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ CUSTOM\_LIST\_WIDGET\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ <QListWidget>}}
+\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ <QMouseEvent>}}
+\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ <QApplication>}}
+\DoxyCodeLine{00007\ }
+\DoxyCodeLine{00016\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classCustomListWidget}{CustomListWidget}}\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classQListWidget}{QListWidget}}\ \{}
+\DoxyCodeLine{00017\ \ \ \ \ Q\_OBJECT}
+\DoxyCodeLine{00018\ }
+\DoxyCodeLine{00019\ \textcolor{keyword}{public}:}
+\DoxyCodeLine{00024\ \ \ \ \ \textcolor{keyword}{explicit}\ \mbox{\hyperlink{classCustomListWidget_ab37ab040c9872e60767fff8d1525ccad}{CustomListWidget}}(\mbox{\hyperlink{classQWidget}{QWidget}}\ *parent\ =\ \textcolor{keyword}{nullptr});}
+\DoxyCodeLine{00025\ }
+\DoxyCodeLine{00026\ \textcolor{keyword}{protected}:}
+\DoxyCodeLine{00031\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classCustomListWidget_adc3f7462d5db3e7c9fe4c5fd59076331}{mouseMoveEvent}}(QMouseEvent\ *event)\ \textcolor{keyword}{override};}
+\DoxyCodeLine{00032\ }
+\DoxyCodeLine{00037\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classCustomListWidget_a5d487b35f9dc9cd601b962e68b142e0b}{leaveEvent}}(QEvent\ *event)\ \textcolor{keyword}{override};}
+\DoxyCodeLine{00038\ }
+\DoxyCodeLine{00039\ \textcolor{keyword}{private}:}
+\DoxyCodeLine{00040\ \ \ \ \ \textcolor{keywordtype}{void}\ formatListWidget();}
+\DoxyCodeLine{00041\ }
+\DoxyCodeLine{00042\ \};}
+\DoxyCodeLine{00043\ }
+\DoxyCodeLine{00044\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ CUSTOM\_LIST\_WIDGET\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex
new file mode 100644
index 0000000000000000000000000000000000000000..fd1d784e553f4a06a0b3dce96452a416708b23f7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex
@@ -0,0 +1,36 @@
+\doxysection{src Directory Reference}
+\hypertarget{dir_68267d1309a1af8e8297ef4c3efbcdba}{}\label{dir_68267d1309a1af8e8297ef4c3efbcdba}\index{src Directory Reference@{src Directory Reference}}
+Directory dependency graph for src\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=127pt]{dir_68267d1309a1af8e8297ef4c3efbcdba_dep}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Files}
+\begin{DoxyCompactItemize}
+\item 
+file \mbox{\hyperlink{custom__list__widget_8cpp}{custom\+\_\+list\+\_\+widget.\+cpp}}
+\item 
+file \mbox{\hyperlink{execute__frame_8cpp}{execute\+\_\+frame.\+cpp}}
+\item 
+file \mbox{\hyperlink{learn__environment_8cpp}{learn\+\_\+environment.\+cpp}}
+\item 
+file \mbox{\hyperlink{notebook__converter_8cpp}{notebook\+\_\+converter.\+cpp}}
+\item 
+file \mbox{\hyperlink{process__runner_8cpp}{process\+\_\+runner.\+cpp}}
+\item 
+file \mbox{\hyperlink{script__worker_8cpp}{script\+\_\+worker.\+cpp}}
+\item 
+file \mbox{\hyperlink{sidebar_8cpp}{sidebar.\+cpp}}
+\item 
+file \mbox{\hyperlink{subtask__item_8cpp}{subtask\+\_\+item.\+cpp}}
+\item 
+file \mbox{\hyperlink{task__executor_8cpp}{task\+\_\+executor.\+cpp}}
+\item 
+file \mbox{\hyperlink{task__manager_8cpp}{task\+\_\+manager.\+cpp}}
+\item 
+file \mbox{\hyperlink{task__parser_8cpp}{task\+\_\+parser.\+cpp}}
+\item 
+file \mbox{\hyperlink{task__ui_8cpp}{task\+\_\+ui.\+cpp}}
+\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8bbb24d2515d14953483c21423055743a6f2fa95
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5
@@ -0,0 +1 @@
+d9edd2b9a9e8508e36934769376f17fb
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..25e058b812c4d87fc49f4faf025304977e9e5638
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_7d465071c5c63f34a2628cf83e1b693a.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_7d465071c5c63f34a2628cf83e1b693a.tex
new file mode 100644
index 0000000000000000000000000000000000000000..f2e26f8b9cb98fcba54671cdb2386ff831e9df29
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_7d465071c5c63f34a2628cf83e1b693a.tex
@@ -0,0 +1,40 @@
+\doxysection{learn\+\_\+environment Directory Reference}
+\hypertarget{dir_7d465071c5c63f34a2628cf83e1b693a}{}\label{dir_7d465071c5c63f34a2628cf83e1b693a}\index{learn\_environment Directory Reference@{learn\_environment Directory Reference}}
+Directory dependency graph for learn\+\_\+environment\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=208pt]{dir_7d465071c5c63f34a2628cf83e1b693a_dep}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Files}
+\begin{DoxyCompactItemize}
+\item 
+file \mbox{\hyperlink{custom__list__widget_8hpp}{custom\+\_\+list\+\_\+widget.\+hpp}}
+\item 
+file \mbox{\hyperlink{execute__frame_8hpp}{execute\+\_\+frame.\+hpp}}
+\item 
+file \mbox{\hyperlink{folder__structure__constants_8hpp}{folder\+\_\+structure\+\_\+constants.\+hpp}}
+\item 
+file \mbox{\hyperlink{learn__environment_8hpp}{learn\+\_\+environment.\+hpp}}
+\item 
+file \mbox{\hyperlink{notebook__converter_8hpp}{notebook\+\_\+converter.\+hpp}}
+\item 
+file \mbox{\hyperlink{process__runner_8hpp}{process\+\_\+runner.\+hpp}}
+\item 
+file \mbox{\hyperlink{script__worker_8hpp}{script\+\_\+worker.\+hpp}}
+\item 
+file \mbox{\hyperlink{sidebar_8hpp}{sidebar.\+hpp}}
+\item 
+file \mbox{\hyperlink{subtask__item_8hpp}{subtask\+\_\+item.\+hpp}}
+\item 
+file \mbox{\hyperlink{task_8hpp}{task.\+hpp}}
+\item 
+file \mbox{\hyperlink{task__executor_8hpp}{task\+\_\+executor.\+hpp}}
+\item 
+file \mbox{\hyperlink{task__manager_8hpp}{task\+\_\+manager.\+hpp}}
+\item 
+file \mbox{\hyperlink{task__parser_8hpp}{task\+\_\+parser.\+hpp}}
+\item 
+file \mbox{\hyperlink{task__ui_8hpp}{task\+\_\+ui.\+hpp}}
+\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_7d465071c5c63f34a2628cf83e1b693a_dep.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_7d465071c5c63f34a2628cf83e1b693a_dep.md5
new file mode 100644
index 0000000000000000000000000000000000000000..fe3c943f5dd33baf9dd7c51d46097e12f12ec608
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_7d465071c5c63f34a2628cf83e1b693a_dep.md5
@@ -0,0 +1 @@
+3ec16c6d13b0413995f4ebe2a56d635e
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_7d465071c5c63f34a2628cf83e1b693a_dep.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_7d465071c5c63f34a2628cf83e1b693a_dep.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c59c46a0a968c495dd61d94849ae91a6e21be532
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_7d465071c5c63f34a2628cf83e1b693a_dep.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_d44c64559bbebec7f509842c48db8b23.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_d44c64559bbebec7f509842c48db8b23.tex
new file mode 100644
index 0000000000000000000000000000000000000000..a5ba89c3ac73b10b9ea3a70439965f377f35d492
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/dir_d44c64559bbebec7f509842c48db8b23.tex
@@ -0,0 +1,7 @@
+\doxysection{include Directory Reference}
+\hypertarget{dir_d44c64559bbebec7f509842c48db8b23}{}\label{dir_d44c64559bbebec7f509842c48db8b23}\index{include Directory Reference@{include Directory Reference}}
+\doxysubsubsection*{Directories}
+\begin{DoxyCompactItemize}
+\item 
+directory \mbox{\hyperlink{dir_7d465071c5c63f34a2628cf83e1b693a}{learn\+\_\+environment}}
+\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/doxygen.sty b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/doxygen.sty
new file mode 100644
index 0000000000000000000000000000000000000000..7648d946228437ba513439d6fd910f7cb3a79cc4
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/doxygen.sty
@@ -0,0 +1,713 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{doxygen}
+
+% Packages used by this style file
+\RequirePackage{alltt}
+%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package
+\RequirePackage{calc}
+\RequirePackage{float}
+%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package
+\RequirePackage{verbatim}
+\RequirePackage[table]{xcolor}
+\RequirePackage{longtable_doxygen}
+\RequirePackage{tabu_doxygen}
+\RequirePackage{fancyvrb}
+\RequirePackage{tabularx}
+\RequirePackage{multicol}
+\RequirePackage{multirow}
+\RequirePackage{hanging}
+\RequirePackage{ifpdf}
+\RequirePackage{adjustbox}
+\RequirePackage{amssymb}
+\RequirePackage{stackengine}
+\RequirePackage{enumitem}
+\RequirePackage{alphalph}
+\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis
+
+%---------- Internal commands used in this style file ----------------
+
+\newcommand{\ensurespace}[1]{%
+  \begingroup%
+    \setlength{\dimen@}{#1}%
+    \vskip\z@\@plus\dimen@%
+    \penalty -100\vskip\z@\@plus -\dimen@%
+    \vskip\dimen@%
+    \penalty 9999%
+    \vskip -\dimen@%
+    \vskip\z@skip% hide the previous |\vskip| from |\addvspace|
+  \endgroup%
+}
+
+\newcommand{\DoxyHorRuler}[1]{%
+  \setlength{\parskip}{0ex plus 0ex minus 0ex}%
+  \ifthenelse{#1=0}%
+  {%
+    \hrule%
+  }%
+  {%
+    \hrulefilll%
+  }%
+}
+\newcommand{\DoxyLabelFont}{}
+\newcommand{\entrylabel}[1]{%
+  {%
+    \parbox[b]{\labelwidth-4pt}{%
+      \makebox[0pt][l]{\DoxyLabelFont#1}%
+      \vspace{1.5\baselineskip}%
+    }%
+  }%
+}
+
+\newenvironment{DoxyDesc}[1]{%
+  \ensurespace{4\baselineskip}%
+  \begin{list}{}{%
+    \settowidth{\labelwidth}{20pt}%
+    %\setlength{\parsep}{0pt}%
+    \setlength{\itemsep}{0pt}%
+    \setlength{\leftmargin}{\labelwidth+\labelsep}%
+    \renewcommand{\makelabel}{\entrylabel}%
+  }%
+  \item[#1]%
+}{%
+  \end{list}%
+}
+
+\newsavebox{\xrefbox}
+\newlength{\xreflength}
+\newcommand{\xreflabel}[1]{%
+  \sbox{\xrefbox}{#1}%
+  \setlength{\xreflength}{\wd\xrefbox}%
+  \ifthenelse{\xreflength>\labelwidth}{%
+    \begin{minipage}{\textwidth}%
+      \setlength{\parindent}{0pt}%
+      \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}%
+    \end{minipage}%
+  }{%
+   \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}%
+  }%
+}
+
+%---------- Commands used by doxygen LaTeX output generator ----------
+
+% Used by <pre> ... </pre>
+\newenvironment{DoxyPre}{%
+  \small%
+  \begin{alltt}%
+}{%
+  \end{alltt}%
+  \normalsize%
+}
+% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output.
+\newlength{\CodeWidthChar}
+\newlength{\CodeHeightChar}
+\settowidth{\CodeWidthChar}{?}
+\settoheight{\CodeHeightChar}{?}
+% Necessary for hanging indent
+\newlength{\DoxyCodeWidth}
+
+\newcommand\DoxyCodeLine[1]{
+  \ifthenelse{\equal{\detokenize{#1}}{}}
+  {
+    \vspace*{\baselineskip}
+  }
+  {
+    \hangpara{\DoxyCodeWidth}{1}{#1}\par
+  }
+}
+
+\newcommand\NiceSpace{%
+     \discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}%
+}
+
+% Used by @code ... @endcode
+\newenvironment{DoxyCode}[1]{%
+  \par%
+  \scriptsize%
+  \normalfont\ttfamily%
+  \rightskip0pt plus 1fil%
+  \settowidth{\DoxyCodeWidth}{000000}%
+  \settowidth{\CodeWidthChar}{?}%
+  \settoheight{\CodeHeightChar}{?}%
+  \setlength{\parskip}{0ex plus 0ex minus 0ex}%
+  \ifthenelse{\equal{#1}{0}}
+  {
+    {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces%
+  }
+  {
+    {\lccode`~32 \lowercase{\global\let~}}\obeyspaces%
+  }
+
+}{%
+  \normalfont%
+  \normalsize%
+  \settowidth{\CodeWidthChar}{?}%
+  \settoheight{\CodeHeightChar}{?}%
+}
+
+% Redefining not defined characters, i.e. "Replacement Character" in tex output.
+\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{%
+   \textcolor{white}{\sffamily\bfseries\small ?}}{%
+   \rotatebox{45}{$\blacksquare$}}}}
+
+% Used by @example, @include, @includelineno and @dontinclude
+\newenvironment{DoxyCodeInclude}[1]{%
+	\DoxyCode{#1}%
+}{%
+  \endDoxyCode%
+}
+
+% Used by @verbatim ... @endverbatim
+\newenvironment{DoxyVerb}{%
+  \par%
+  \footnotesize%
+  \verbatim%
+}{%
+  \endverbatim%
+  \normalsize%
+}
+
+% Used by @verbinclude
+\newenvironment{DoxyVerbInclude}{%
+  \DoxyVerb%
+}{%
+  \endDoxyVerb%
+}
+
+% Used by numbered lists (using '-#' or <ol> ... </ol>)
+\setlistdepth{12}
+\newlist{DoxyEnumerate}{enumerate}{12}
+\setlist[DoxyEnumerate,1]{label=\arabic*.}
+\setlist[DoxyEnumerate,2]{label=(\enumalphalphcnt*)}
+\setlist[DoxyEnumerate,3]{label=\roman*.}
+\setlist[DoxyEnumerate,4]{label=\enumAlphAlphcnt*.}
+\setlist[DoxyEnumerate,5]{label=\arabic*.}
+\setlist[DoxyEnumerate,6]{label=(\enumalphalphcnt*)}
+\setlist[DoxyEnumerate,7]{label=\roman*.}
+\setlist[DoxyEnumerate,8]{label=\enumAlphAlphcnt*.}
+\setlist[DoxyEnumerate,9]{label=\arabic*.}
+\setlist[DoxyEnumerate,10]{label=(\enumalphalphcnt*)}
+\setlist[DoxyEnumerate,11]{label=\roman*.}
+\setlist[DoxyEnumerate,12]{label=\enumAlphAlphcnt*.}
+
+% Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)
+\setlistdepth{12}
+\newlist{DoxyItemize}{itemize}{12}
+\setlist[DoxyItemize]{label=\textperiodcentered}
+
+\setlist[DoxyItemize,1]{label=\textbullet}
+\setlist[DoxyItemize,2]{label=\normalfont\bfseries \textendash}
+\setlist[DoxyItemize,3]{label=\textasteriskcentered}
+\setlist[DoxyItemize,4]{label=\textperiodcentered}
+
+% Used for check boxes
+\newcommand{\DoxyUnchecked}{$\square$}
+\newcommand{\DoxyChecked}{\rlap{\raisebox{0.3ex}{\hspace{0.4ex}\tiny \checkmark}}$\square$}
+
+% Used by description lists (using <dl> ... </dl>)
+\newenvironment{DoxyDescription}{%
+  \description%
+}{%
+  \enddescription%
+}
+
+% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
+% (only if caption is specified)
+\newenvironment{DoxyImage}{%
+  \begin{figure}[H]%
+    \centering%
+}{%
+  \end{figure}%
+}
+
+% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
+% (only if no caption is specified)
+\newenvironment{DoxyImageNoCaption}{%
+  \begin{center}%
+}{%
+  \end{center}%
+}
+
+% Used by @image
+% (only if inline is specified)
+\newenvironment{DoxyInlineImage}{%
+}{%
+}
+
+% Used by @attention
+\newenvironment{DoxyAttention}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @important
+\newenvironment{DoxyImportant}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @author and @authors
+\newenvironment{DoxyAuthor}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @date
+\newenvironment{DoxyDate}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @invariant
+\newenvironment{DoxyInvariant}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @note
+\newenvironment{DoxyNote}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @post
+\newenvironment{DoxyPostcond}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @pre
+\newenvironment{DoxyPrecond}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @copyright
+\newenvironment{DoxyCopyright}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @remark
+\newenvironment{DoxyRemark}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @return and @returns
+\newenvironment{DoxyReturn}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @since
+\newenvironment{DoxySince}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @see
+\newenvironment{DoxySeeAlso}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @version
+\newenvironment{DoxyVersion}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @warning
+\newenvironment{DoxyWarning}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by @par and @paragraph
+\newenvironment{DoxyParagraph}[1]{%
+  \begin{DoxyDesc}{#1}%
+}{%
+  \end{DoxyDesc}%
+}
+
+% Used by parameter lists
+\newenvironment{DoxyParams}[2][]{%
+    \tabulinesep=1mm%
+    \par%
+    \ifthenelse{\equal{#1}{}}%
+      {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description
+    {\ifthenelse{\equal{#1}{1}}%
+      {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc
+      {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc
+    }
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
+    \hline%
+    \endfirsthead%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
+    \hline%
+    \endhead%
+}{%
+    \end{longtabu*}%
+    \vspace{6pt}%
+}
+
+% Used for fields of simple structs
+\newenvironment{DoxyFields}[1]{%
+    \tabulinesep=1mm%
+    \par%
+    \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}%
+    \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+    \hline%
+    \endfirsthead%
+    \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+    \hline%
+    \endhead%
+}{%
+    \end{longtabu*}%
+    \vspace{6pt}%
+}
+
+% Used for fields simple class style enums
+\newenvironment{DoxyEnumFields}[2][]{%
+    \tabulinesep=1mm%
+    \par%
+    \ifthenelse{\equal{#1}{2}}%
+      {\begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}}%
+      {\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,r]|X[-1,l]|}}% with init value
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
+    \hline%
+    \endfirsthead%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
+    \hline%
+    \endhead%
+}{%
+    \end{longtabu*}%
+    \vspace{6pt}%
+}
+
+% Used for parameters within a detailed function description
+\newenvironment{DoxyParamCaption}{%
+  \renewcommand{\item}[3][]{\\ \hspace*{2.0cm} ##1 {\em ##2}##3}% 
+}{%
+}
+
+% Used by return value lists
+\newenvironment{DoxyRetVals}[1]{%
+    \tabulinesep=1mm%
+    \par%
+    \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+    \hline%
+    \endfirsthead%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+    \hline%
+    \endhead%
+}{%
+    \end{longtabu*}%
+    \vspace{6pt}%
+}
+
+% Used by exception lists
+\newenvironment{DoxyExceptions}[1]{%
+    \tabulinesep=1mm%
+    \par%
+    \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+    \hline%
+    \endfirsthead%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+    \hline%
+    \endhead%
+}{%
+    \end{longtabu*}%
+    \vspace{6pt}%
+}
+
+% Used by template parameter lists
+\newenvironment{DoxyTemplParams}[1]{%
+    \tabulinesep=1mm%
+    \par%
+    \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+    \hline%
+    \endfirsthead%
+    \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+    \hline%
+    \endhead%
+}{%
+    \end{longtabu*}%
+    \vspace{6pt}%
+}
+
+% Used for member lists
+\newenvironment{DoxyCompactItemize}{%
+  \begin{itemize}%
+    \setlength{\itemsep}{-3pt}%
+    \setlength{\parsep}{0pt}%
+    \setlength{\topsep}{0pt}%
+    \setlength{\partopsep}{0pt}%
+}{%
+  \end{itemize}%
+}
+
+% Used for member descriptions
+\newenvironment{DoxyCompactList}{%
+  \begin{list}{}{%
+    \setlength{\leftmargin}{0.5cm}%
+    \setlength{\itemsep}{0pt}%
+    \setlength{\parsep}{0pt}%
+    \setlength{\topsep}{0pt}%
+    \renewcommand{\makelabel}{\hfill}%
+  }%
+}{%
+  \end{list}%
+}
+
+% Used for reference lists (@bug, @deprecated, @todo, etc.)
+\newenvironment{DoxyRefList}{%
+  \begin{list}{}{%
+    \setlength{\labelwidth}{10pt}%
+    \setlength{\leftmargin}{\labelwidth}%
+    \addtolength{\leftmargin}{\labelsep}%
+    \renewcommand{\makelabel}{\xreflabel}%
+  }%
+}{%
+  \end{list}%
+}
+
+% Used by @bug, @deprecated, @todo, etc.
+\newenvironment{DoxyRefDesc}[1]{%
+  \begin{list}{}{%
+    \renewcommand\makelabel[1]{\textbf{##1}}%
+    \settowidth\labelwidth{\makelabel{#1}}%
+    \setlength\leftmargin{\labelwidth+\labelsep}%
+  }%
+}{%
+  \end{list}%
+}
+
+% Used by parameter lists and simple sections
+\newenvironment{Desc}
+{\begin{list}{}{%
+    \settowidth{\labelwidth}{20pt}%
+    \setlength{\parsep}{0pt}%
+    \setlength{\itemsep}{0pt}%
+    \setlength{\leftmargin}{\labelwidth+\labelsep}%
+    \renewcommand{\makelabel}{\entrylabel}%
+  }
+}{%
+  \end{list}%
+}
+
+% Used by tables
+\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}%
+\newenvironment{TabularC}[1]%
+{\tabulinesep=1mm
+\begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}%
+{\end{longtabu*}\par}%
+
+\newenvironment{TabularNC}[1]%
+{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}%
+{\end{tabu}\par}%
+
+% Used for member group headers
+\newenvironment{Indent}{%
+  \begin{list}{}{%
+    \setlength{\leftmargin}{0.5cm}%
+  }%
+  \item[]\ignorespaces%
+}{%
+  \unskip%
+  \end{list}%
+}
+
+% Used when hyperlinks are turned on
+\newcommand{\doxylink}[2]{%
+  \mbox{\hyperlink{#1}{#2}}%
+}
+
+% Used when hyperlinks are turned on
+% Third argument is the SectionType, see the doxygen internal
+% documentation for the values (relevant: Page ... Subsubsection).
+\newcommand{\doxysectlink}[3]{%
+  \mbox{\hyperlink{#1}{#2}}%
+}
+% Used when hyperlinks are turned off
+\newcommand{\doxyref}[3]{%
+  \textbf{#1} (\textnormal{#2}\,\pageref{#3})%
+}
+
+% Used when hyperlinks are turned off
+% Fourth argument is the SectionType, see the doxygen internal
+% documentation for the values (relevant: Page ... Subsubsection).
+\newcommand{\doxysectref}[4]{%
+  \textbf{#1} (\textnormal{#2}\,\pageref{#3})%
+}
+
+% Used to link to a table when hyperlinks are turned on
+\newcommand{\doxytablelink}[2]{%
+  \ref{#1}%
+}
+
+% Used to link to a table when hyperlinks are turned off
+\newcommand{\doxytableref}[3]{%
+  \ref{#3}%
+}
+
+% Used by @addindex
+\newcommand{\lcurly}{\{}
+\newcommand{\rcurly}{\}}
+
+% Colors used for syntax highlighting
+\definecolor{comment}{rgb}{0.5,0.0,0.0}
+\definecolor{keyword}{rgb}{0.0,0.5,0.0}
+\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
+\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
+\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
+\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
+\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
+\definecolor{xmlcdata}{rgb}{0.0,0.0,0.0}
+\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
+\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
+\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
+\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
+
+% Color used for table heading
+\newcommand{\tableheadbgcolor}{lightgray}%
+
+% Version of hypertarget with correct landing location
+\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}}
+
+% possibility to have sections etc. be within the margins
+% unfortunately had to copy part of book.cls and add \raggedright
+\makeatletter
+\newcounter{subsubsubsection}[subsubsection]
+\newcounter{subsubsubsubsection}[subsubsubsection]
+\newcounter{subsubsubsubsubsection}[subsubsubsubsection]
+\newcounter{subsubsubsubsubsubsection}[subsubsubsubsubsection]
+\renewcommand{\thesubsubsubsection}{\thesubsubsection.\arabic{subsubsubsection}}
+\renewcommand{\thesubsubsubsubsection}{\thesubsubsubsection.\arabic{subsubsubsubsection}}
+\renewcommand{\thesubsubsubsubsubsection}{\thesubsubsubsubsection.\arabic{subsubsubsubsubsection}}
+\renewcommand{\thesubsubsubsubsubsubsection}{\thesubsubsubsubsubsection.\arabic{subsubsubsubsubsubsection}}
+\newcommand{\subsubsubsectionmark}[1]{}
+\newcommand{\subsubsubsubsectionmark}[1]{}
+\newcommand{\subsubsubsubsubsectionmark}[1]{}
+\newcommand{\subsubsubsubsubsubsectionmark}[1]{}
+\def\toclevel@subsubsubsection{4}
+\def\toclevel@subsubsubsubsection{5}
+\def\toclevel@subsubsubsubsubsection{6}
+\def\toclevel@subsubsubsubsubsubsection{7}
+\def\toclevel@paragraph{8}
+\def\toclevel@subparagraph{9}
+
+\newcommand\doxysection{\@startsection {section}{1}{\z@}%
+                                     {-3.5ex \@plus -1ex \@minus -.2ex}%
+                                     {2.3ex \@plus.2ex}%
+                                     {\raggedright\normalfont\Large\bfseries}}
+\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}%
+                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
+                                     {1.5ex \@plus .2ex}%
+                                     {\raggedright\normalfont\large\bfseries}}
+\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}%
+                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
+                                     {1.5ex \@plus .2ex}%
+                                     {\raggedright\normalfont\normalsize\bfseries}}
+\newcommand\doxysubsubsubsection{\@startsection{subsubsubsection}{4}{\z@}%
+                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
+                                     {1.5ex \@plus .2ex}%
+                                     {\raggedright\normalfont\normalsize\bfseries}}
+\newcommand\doxysubsubsubsubsection{\@startsection{subsubsubsubsection}{5}{\z@}%
+                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
+                                     {1.5ex \@plus .2ex}%
+                                     {\raggedright\normalfont\normalsize\bfseries}}
+\newcommand\doxysubsubsubsubsubsection{\@startsection{subsubsubsubsubsection}{6}{\z@}%
+                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
+                                     {1.5ex \@plus .2ex}%
+                                     {\raggedright\normalfont\normalsize\bfseries}}
+\newcommand\doxysubsubsubsubsubsubsection{\@startsection{subsubsubsubsubsubsection}{7}{\z@}%
+                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
+                                     {1.5ex \@plus .2ex}%
+                                     {\raggedright\normalfont\normalsize\bfseries}}
+\newcommand\doxyparagraph{\@startsection{paragraph}{8}{\z@}%
+                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
+                                     {1.5ex \@plus .2ex}%
+                                     {\raggedright\normalfont\normalsize\bfseries}}
+\newcommand\doxysubparagraph{\@startsection{subparagraph}{9}{\parindent}%
+                                     {-3.25ex\@plus -1ex \@minus -.2ex}%
+                                     {1.5ex \@plus .2ex}%
+                                     {\raggedright\normalfont\normalsize\bfseries}}    
+                                  
+\newcommand\l@subsubsubsection{\@dottedtocline{4}{10.0em}{7.8em}}
+\newcommand\l@subsubsubsubsection{\@dottedtocline{5}{13.0em}{9.4em}}
+\newcommand\l@subsubsubsubsubsection{\@dottedtocline{6}{15.0em}{11em}}
+\newcommand\l@subsubsubsubsubsubsection{\@dottedtocline{7}{18.0em}{12.6em}}
+\renewcommand\l@paragraph{\@dottedtocline{8}{21.0em}{14.2em}}
+\renewcommand\l@subparagraph{\@dottedtocline{9}{24.0em}{15.8em}}
+\makeatother
+% the sectsty doesn't look to be maintained but gives, in our case, some warning like:
+% LaTeX Warning: Command \underline  has changed.
+%               Check if current package is valid.
+% unfortunately had to copy the relevant part
+\newcommand*{\doxypartfont}          [1]
+   {\gdef\SS@partnumberfont{\SS@sectid{0}\SS@nopart\SS@makeulinepartchap#1}
+    \gdef\SS@parttitlefont{\SS@sectid{0}\SS@titlepart\SS@makeulinepartchap#1}}
+\newcommand*{\doxychapterfont}       [1]
+   {\gdef\SS@chapnumfont{\SS@sectid{1}\SS@nopart\SS@makeulinepartchap#1}
+    \gdef\SS@chaptitlefont{\SS@sectid{1}\SS@titlepart\SS@makeulinepartchap#1}}
+\newcommand*{\doxysectionfont}       [1]
+   {\gdef\SS@sectfont{\SS@sectid{2}\SS@rr\SS@makeulinesect#1}}
+\newcommand*{\doxysubsectionfont}    [1]
+   {\gdef\SS@subsectfont{\SS@sectid{3}\SS@rr\SS@makeulinesect#1}}
+\newcommand*{\doxysubsubsectionfont} [1]
+   {\gdef\SS@subsubsectfont{\SS@sectid{4}\SS@rr\SS@makeulinesect#1}}
+\newcommand*{\doxyparagraphfont}     [1]
+   {\gdef\SS@parafont{\SS@sectid{5}\SS@rr\SS@makeulinesect#1}}
+\newcommand*{\doxysubparagraphfont}  [1]
+   {\gdef\SS@subparafont{\SS@sectid{6}\SS@rr\SS@makeulinesect#1}}
+\newcommand*{\doxyminisecfont}  [1]
+   {\gdef\SS@minisecfont{\SS@sectid{7}\SS@rr\SS@makeulinepartchap#1}}
+\newcommand*{\doxyallsectionsfont}   [1] {\doxypartfont{#1}%
+                                          \doxychapterfont{#1}%
+                                          \doxysectionfont{#1}%
+                                          \doxysubsectionfont{#1}%
+                                          \doxysubsubsectionfont{#1}%
+                                          \doxyparagraphfont{#1}%
+                                          \doxysubparagraphfont{#1}%
+                                          \doxyminisecfont{#1}}%
+% Define caption that is also suitable in a table
+% for usage with hyperlinks
+\makeatletter
+\def\doxyfigcaption{%
+\H@refstepcounter{figure}%
+\@dblarg{\@caption{figure}}}
+
+% for usage without hyperlinks
+\def\doxyfigcaptionnolink{%
+\refstepcounter{figure}%
+\@dblarg{\@caption{figure}}}
+\makeatother
+
+% Define alpha enumarative names for counters > 26
+\makeatletter
+\def\enumalphalphcnt#1{\expandafter\@enumalphalphcnt\csname c@#1\endcsname}
+\def\@enumalphalphcnt#1{\alphalph{#1}}
+\def\enumAlphAlphcnt#1{\expandafter\@enumAlphAlphcnt\csname c@#1\endcsname}
+\def\@enumAlphAlphcnt#1{\AlphAlph{#1}}
+\makeatother
+\AddEnumerateCounter{\enumalphalphcnt}{\@enumalphalphcnt}{aa}
+\AddEnumerateCounter{\enumAlphAlphcnt}{\@enumAlphAlphcnt}{AA}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/etoc_doxygen.sty b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/etoc_doxygen.sty
new file mode 100644
index 0000000000000000000000000000000000000000..5f7e12746097b315612847065a7b1e5f1f7bc30c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/etoc_doxygen.sty
@@ -0,0 +1,2178 @@
+%%
+%% This is file etoc_doxygen.sty
+%%
+%% Apart from this header notice and the renaming from etoc to
+%% etoc_doxygen (also in \ProvidesPackage) it is an identical
+%% copy of
+%%
+%%     etoc.sty
+%%
+%% at version 1.2b of 2023/07/01.
+%%
+%% This file has been provided to Doxygen team courtesy of the
+%% author for benefit of users having a LaTeX installation not
+%% yet providing version 1.2a or later of etoc, whose
+%% deeplevels feature is required.
+%%
+%% The original source etoc.dtx (only of the latest version at
+%% any given time) is available at
+%% 
+%%     https://ctan.org/pkg/etoc
+%%
+%% and contains the terms for copying and modification as well
+%% as author contact information.
+%%
+%% In brief any modified versions of this file must be renamed
+%% with new filenames distinct from etoc.sty.
+%% 
+%% Package: etoc
+%% Version: 1.2b
+%% License: LPPL 1.3c
+%% Copyright (C) 2012-2023 Jean-Francois B. <user jfbu at github>
+\NeedsTeXFormat{LaTeX2e}[2003/12/01]
+\ProvidesPackage{etoc_doxygen}[2023/07/01 v1.2b Completely customisable TOCs (JFB)]
+\newif\ifEtoc@oldLaTeX
+\@ifl@t@r\fmtversion{2020/10/01}
+  {}
+  {\Etoc@oldLaTeXtrue
+   \PackageInfo{etoc}{Old LaTeX (\fmtversion) detected!\MessageBreak
+   Since 1.1a (2023/01/14), etoc prefers LaTeX at least\MessageBreak
+   as recent as 2020-10-01, for reasons of the .toc file,\MessageBreak
+   and used to require it (from 1.1a to 1.2).\MessageBreak
+   This etoc (1.2b) does not *require* it, but has not been\MessageBreak
+   tested thoroughly on old LaTeX (especially if document\MessageBreak
+   does not use hyperref) and retrofitting was done only\MessageBreak
+   on basis of author partial remembrances of old context.\MessageBreak
+   Reported}}
+\RequirePackage{kvoptions}
+\SetupKeyvalOptions{prefix=Etoc@}
+\newif\ifEtoc@lof
+\DeclareVoidOption{lof}{\Etoc@loftrue
+  \PackageInfo{etoc}{Experimental support for \string\locallistoffigures.\MessageBreak
+                     Barely tested, use at own risk}%
+}
+\newif\ifEtoc@lot
+\DeclareVoidOption{lot}{\Etoc@lottrue
+  \PackageInfo{etoc}{Experimental support for \string\locallistoftables.\MessageBreak
+                     Barely tested, use at own risk}%
+}
+\@ifclassloaded{memoir}{
+\PackageInfo{etoc}
+   {As this is with memoir class, all `...totoc' options\MessageBreak
+    are set true by default.  Reported}
+\DeclareBoolOption[true]{maintoctotoc}
+\DeclareBoolOption[true]{localtoctotoc}
+\DeclareBoolOption[true]{localloftotoc}
+\DeclareBoolOption[true]{locallottotoc}
+}{
+\DeclareBoolOption[false]{maintoctotoc}
+\DeclareBoolOption[false]{localtoctotoc}
+\DeclareBoolOption[false]{localloftotoc}
+\DeclareBoolOption[false]{locallottotoc}
+}
+\DeclareBoolOption[true]{ouroboros}
+\DeclareBoolOption[false]{deeplevels}
+\DeclareDefaultOption{\PackageWarning{etoc}{Option `\CurrentOption' is unknown.}}
+\ProcessKeyvalOptions*
+\DisableKeyvalOption[action=error,package=etoc]{etoc}{lof}
+\DisableKeyvalOption[action=error,package=etoc]{etoc}{lot}
+\DisableKeyvalOption[action=error,package=etoc]{etoc}{deeplevels}
+\def\etocsetup#1{\setkeys{etoc}{#1}}
+\def\etocifmaintoctotoc{\ifEtoc@maintoctotoc
+                           \expandafter\@firstoftwo
+                         \else
+                           \expandafter\@secondoftwo
+                         \fi}
+\def\etociflocaltoctotoc{\ifEtoc@localtoctotoc
+                           \expandafter\@firstoftwo
+                         \else
+                           \expandafter\@secondoftwo
+                         \fi}
+\def\etociflocalloftotoc{\ifEtoc@localloftotoc
+                           \expandafter\@firstoftwo
+                         \else
+                           \expandafter\@secondoftwo
+                         \fi}
+\def\etociflocallottotoc{\ifEtoc@locallottotoc
+                           \expandafter\@firstoftwo
+                         \else
+                           \expandafter\@secondoftwo
+                         \fi}
+\RequirePackage{multicol}
+\def\etoc@{\etoc@}
+\long\def\Etoc@gobtoetoc@ #1\etoc@{}
+\newtoks\Etoc@toctoks
+\def\Etoc@par{\par}
+\def\etocinline{\def\Etoc@par{}}
+\let\etocnopar\etocinline
+\def\etocdisplay{\def\Etoc@par{\par}}
+\let\Etoc@global\@empty
+\def\etocglobaldefs{\let\Etoc@global\global\let\tof@global\global}
+\def\etoclocaldefs {\let\Etoc@global\@empty\let\tof@global\@empty}
+\newif\ifEtoc@numbered
+\newif\ifEtoc@hyperref
+\newif\ifEtoc@parskip
+\newif\ifEtoc@tocwithid
+\newif\ifEtoc@standardlines
+\newif\ifEtoc@etocstyle
+\newif\ifEtoc@classstyle
+\newif\ifEtoc@keeporiginaltoc
+\newif\ifEtoc@skipprefix
+\newif\ifEtoc@isfirst
+\newif\ifEtoc@localtoc
+\newif\ifEtoc@skipthisone
+\newif\ifEtoc@stoptoc
+\newif\ifEtoc@notactive
+\newif\ifEtoc@mustclosegroup
+\newif\ifEtoc@isemptytoc
+\newif\ifEtoc@checksemptiness
+\def\etocchecksemptiness       {\Etoc@checksemptinesstrue }
+\def\etocdoesnotcheckemptiness {\Etoc@checksemptinessfalse }
+\newif\ifEtoc@notocifnotoc
+\def\etocnotocifnotoc {\Etoc@checksemptinesstrue\Etoc@notocifnotoctrue }
+\newcounter{etoc@tocid}
+\def\Etoc@tocext{toc}
+\def\Etoc@lofext{lof}
+\def\Etoc@lotext{lot}
+\let\Etoc@currext\Etoc@tocext
+\def\etocifislocal{\ifEtoc@localtoc\expandafter\@firstoftwo\else
+                                   \expandafter\@secondoftwo\fi
+                  }
+\def\etocifislocaltoc{\etocifislocal{\ifx\Etoc@currext\Etoc@tocext
+                                     \expandafter\@firstoftwo\else
+                                     \expandafter\@secondoftwo\fi}%
+                                    {\@secondoftwo}%
+                     }
+\def\etocifislocallof{\etocifislocal{\ifx\Etoc@currext\Etoc@lofext
+                                     \expandafter\@firstoftwo\else
+                                     \expandafter\@secondoftwo\fi}%
+                                    {\@secondoftwo}%
+                     }
+\def\etocifislocallot{\etocifislocal{\ifx\Etoc@currext\Etoc@lotext
+                                     \expandafter\@firstoftwo\else
+                                     \expandafter\@secondoftwo\fi}%
+                                    {\@secondoftwo}%
+                     }
+\expandafter\def\csname Etoc@-3@@\endcsname {-\thr@@}
+\expandafter\def\csname Etoc@-2@@\endcsname {-\tw@}
+\expandafter\let\csname Etoc@-1@@\endcsname \m@ne
+\expandafter\let\csname Etoc@0@@\endcsname  \z@
+\expandafter\let\csname Etoc@1@@\endcsname  \@ne
+\expandafter\let\csname Etoc@2@@\endcsname  \tw@
+\expandafter\let\csname Etoc@3@@\endcsname  \thr@@
+\expandafter\chardef\csname Etoc@4@@\endcsname  4
+\expandafter\chardef\csname Etoc@5@@\endcsname  5
+\expandafter\chardef\csname Etoc@6@@\endcsname  6
+\ifEtoc@deeplevels
+  \expandafter\chardef\csname Etoc@7@@\endcsname  7
+  \expandafter\chardef\csname Etoc@8@@\endcsname  8
+  \expandafter\chardef\csname Etoc@9@@\endcsname  9
+  \expandafter\chardef\csname Etoc@10@@\endcsname  10
+  \expandafter\chardef\csname Etoc@11@@\endcsname  11
+  \expandafter\chardef\csname Etoc@12@@\endcsname  12
+\fi
+\expandafter\let\expandafter\Etoc@maxlevel
+  \csname Etoc@\ifEtoc@deeplevels12\else6\fi @@\endcsname
+\edef\etocthemaxlevel{\number\Etoc@maxlevel}
+\@ifclassloaded{memoir}{\def\Etoc@minf{-\thr@@}}{\def\Etoc@minf{-\tw@}}
+\let\Etoc@none@@  \Etoc@minf
+\expandafter\let\expandafter\Etoc@all@@
+  \csname Etoc@\ifEtoc@deeplevels11\else5\fi @@\endcsname
+\let\Etoc@dolevels\@empty
+\def\Etoc@newlevel #1{\expandafter\def\expandafter\Etoc@dolevels\expandafter
+        {\Etoc@dolevels\Etoc@do{#1}}}
+\ifdefined\expanded
+  \def\etocsetlevel#1#2{\expanded{\noexpand\etoc@setlevel{#1}{#2}}}%
+\else
+   \def\etocsetlevel#1#2{{\edef\Etoc@tmp{\noexpand\etoc@setlevel{#1}{#2}}\expandafter}\Etoc@tmp}%
+\fi
+\def\etoc@setlevel#1#2{%
+   \edef\Etoc@tmp{\the\numexpr#2}%
+   \if1\ifnum\Etoc@tmp>\Etoc@maxlevel0\fi\unless\ifnum\Etoc@minf<\Etoc@tmp;\fi1%
+      \ifEtoc@deeplevels
+        \in@{.#1,}{.none,.all,.figure,.table,.-3,.-2,.-1,.0,.1,.2,.3,.4,.5,.6,%
+                                              .7,.8,.9,.10,.11,.12,}%
+      \else
+        \in@{.#1,}{.none,.all,.figure,.table,.-3,.-2,.-1,.0,.1,.2,.3,.4,.5,.6,}%
+      \fi
+      \ifin@\else\if\@car#1\@nil @\in@true\fi\fi
+      \ifin@
+         \PackageWarning{etoc}
+            {Sorry, but `#1' is forbidden as level name.\MessageBreak
+             \if\@car#1\@nil @%
+                (because of the @ as first character)\MessageBreak\fi
+             Reported}%
+      \else
+        \etocifunknownlevelTF{#1}{\Etoc@newlevel{#1}}{}%
+        \expandafter\let\csname Etoc@#1@@\expandafter\endcsname
+                        \csname Etoc@\Etoc@tmp @@\endcsname
+        \expandafter\edef\csname Etoc@@#1@@\endcsname
+                         {\expandafter\noexpand\csname Etoc@#1@@\endcsname}%
+        \expandafter\edef\csname toclevel@@#1\endcsname
+                         {\expandafter\noexpand\csname toclevel@#1\endcsname}%
+      \fi
+   \else
+      \PackageWarning{etoc}
+         {Argument `\detokenize{#2}' of \string\etocsetlevel\space should
+          represent one of\MessageBreak
+          \ifnum\Etoc@minf=-\thr@@-2, \fi-1, 0, 1, 2, \ifEtoc@deeplevels ...\else3, 4\fi,
+          \the\numexpr\Etoc@maxlevel-1, or \number\Etoc@maxlevel\space
+          but evaluates to \Etoc@tmp.\MessageBreak
+          The level of `#1' will be set to \number\Etoc@maxlevel.\MessageBreak
+          Tables of contents will ignore `#1' as long\MessageBreak
+          as its level is \number\Etoc@maxlevel\space (=\string\etocthemaxlevel).%
+          \MessageBreak
+          Reported}%
+      \etocifunknownlevelTF{#1}{\Etoc@newlevel{#1}}{}%
+      \expandafter\let\csname Etoc@#1@@\endcsname\Etoc@maxlevel
+   \fi
+}
+\def\etoclevel#1{\csname Etoc@#1@@\endcsname}
+\def\etocthelevel#1{\number\csname Etoc@#1@@\endcsname}
+\def\etocifunknownlevelTF#1{\@ifundefined{Etoc@#1@@}}
+\@ifclassloaded{memoir}{\etocsetlevel{book}{-2}}{}
+\etocsetlevel{part}{-1}
+\etocsetlevel{chapter}{0}
+\etocsetlevel{section}{1}
+\etocsetlevel{subsection}{2}
+\etocsetlevel{subsubsection}{3}
+\etocsetlevel{paragraph}{4}
+\etocsetlevel{subparagraph}{5}
+\ifdefined\c@chapter
+  \etocsetlevel{appendix}{0}
+\else
+  \etocsetlevel{appendix}{1}
+\fi
+\def\Etoc@do#1{\@namedef{l@@#1}{\csname l@#1\endcsname}}
+\Etoc@dolevels
+\let\Etoc@figure@@\Etoc@maxlevel
+\let\Etoc@table@@ \Etoc@maxlevel
+\let\Etoc@gobblethreeorfour\@gobblefour
+\ifdefined\@gobblethree
+  \let\Etoc@gobblethree\@gobblethree
+\else
+  \long\def\Etoc@gobblethree#1#2#3{}%
+\fi
+\AtBeginDocument{%
+\@ifpackageloaded{parskip}{\Etoc@parskiptrue}{}%
+\@ifpackageloaded{hyperref}
+    {\Etoc@hyperreftrue}
+    {\ifEtoc@oldLaTeX
+        \let\Etoc@gobblethreeorfour\Etoc@gobblethree
+        \let\Etoc@etoccontentsline@fourargs\Etoc@etoccontentsline@
+        \long\def\Etoc@etoccontentsline@#1#2#3{%
+            \Etoc@etoccontentsline@fourargs{#1}{#2}{#3}{}%
+        }%
+     \fi
+    }%
+}
+\def\etocskipfirstprefix {\global\Etoc@skipprefixtrue }
+\def\Etoc@updatestackofends#1\etoc@{\gdef\Etoc@stackofends{#1}}
+\def\Etoc@stackofends{{-3}{}}
+\def\Etoc@doendsandbegin{%
+    \expandafter\Etoc@traversestackofends\Etoc@stackofends\etoc@
+}
+\def\Etoc@traversestackofends#1{%
+  \ifnum#1>\Etoc@level
+    \csname Etoc@end@#1\endcsname
+    \expandafter\Etoc@traversestackofends
+  \else
+    \Etoc@traversestackofends@done{#1}%
+  \fi
+}
+\def\Etoc@traversestackofends@done#1#2{#2%
+  \ifnum#1<\Etoc@level
+    \csname Etoc@begin@\the\numexpr\Etoc@level\endcsname
+    \Etoc@global\Etoc@isfirsttrue
+    \edef\Etoc@tmp{{\the\numexpr\Etoc@level}}%
+  \else
+    \Etoc@global\Etoc@isfirstfalse
+    \let\Etoc@tmp\@empty
+  \fi
+  \expandafter\Etoc@updatestackofends\Etoc@tmp{#1}%
+}
+\def\Etoc@etoccontentsline #1{%
+  \let\Etoc@next\Etoc@gobblethreeorfour
+  \ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel
+  \else
+   \Etoc@skipthisonefalse
+   \global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname
+   \if @\@car#1\@nil\else\global\let\Etoc@virtualtop\Etoc@level\fi
+   \ifEtoc@localtoc
+    \ifEtoc@stoptoc
+      \Etoc@skipthisonetrue
+    \else
+     \ifEtoc@notactive
+       \Etoc@skipthisonetrue
+     \else
+      \unless\ifnum\Etoc@level>\etoclocaltop
+        \Etoc@skipthisonetrue
+        \global\Etoc@stoptoctrue
+      \fi
+     \fi
+    \fi
+   \fi
+   \ifEtoc@skipthisone
+   \else
+    \unless\ifnum\Etoc@level>\c@tocdepth
+     \ifEtoc@standardlines
+         \let\Etoc@next\Etoc@savedcontentsline
+     \else
+         \let\Etoc@next\Etoc@etoccontentsline@
+     \fi
+    \fi
+   \fi
+  \fi
+  \Etoc@next{#1}%
+}
+\def\Etoc@etoccontentsline@ #1#2#3#4{%
+    \Etoc@doendsandbegin
+    \Etoc@global\edef\Etoc@prefix  {\expandafter\noexpand
+         \csname Etoc@prefix@\the\numexpr\Etoc@level\endcsname }%
+    \Etoc@global\edef\Etoc@contents{\expandafter\noexpand
+         \csname Etoc@contents@\the\numexpr\Etoc@level\endcsname }%
+    \ifEtoc@skipprefix \Etoc@global\def\Etoc@prefix{\@empty}\fi
+    \global\Etoc@skipprefixfalse
+    \Etoc@lxyz{#2}{#3}{#4}%
+    \Etoc@prefix
+    \Etoc@contents
+}
+\def\Etoc@lxyz #1#2#3{%
+    \ifEtoc@hyperref
+       \Etoc@global\def\etocthelink##1{\hyperlink{#3}{##1}}%
+    \else
+       \Etoc@global\let\etocthelink\@firstofone
+    \fi
+    \Etoc@global\def\etocthepage {#2}%
+    \ifEtoc@hyperref
+       \ifx\etocthepage\@empty
+         \Etoc@global\let\etocthelinkedpage\@empty
+       \else
+         \Etoc@global\def\etocthelinkedpage{\hyperlink {#3}{#2}}%
+       \fi
+    \else
+       \Etoc@global\let\etocthelinkedpage\etocthepage
+    \fi
+    \Etoc@global\def\etocthename{#1}%
+    \futurelet\Etoc@getnb@token\Etoc@@getnb #1\hspace\etoc@
+    \ifEtoc@hyperref
+      \def\Etoc@tmp##1##2{\Etoc@global\def##2{\hyperlink{#3}{##1}}}%
+      \expandafter\Etoc@tmp\expandafter{\etocthename}\etocthelinkedname
+      \ifEtoc@numbered
+         \expandafter\Etoc@tmp\expandafter{\etocthenumber}\etocthelinkednumber
+      \else
+         \Etoc@global\let\etocthelinkednumber\@empty
+      \fi
+    \else
+      \Etoc@global\let\etocthelinkedname  \etocthename
+      \Etoc@global\let\etocthelinkednumber\etocthenumber
+    \fi
+    \Etoc@global\expandafter\let\csname etoclink \endcsname  \etocthelink
+    \Etoc@global\expandafter\let\csname etocname \endcsname  \etocthename
+    \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthenumber
+    \Etoc@global\expandafter\let\csname etocpage \endcsname  \etocthepage
+    \ifEtoc@hyperref
+      \Etoc@lxyz@linktoc
+    \fi
+}
+\def\Etoc@lxyz@linktoc{%
+    \ifcase\Hy@linktoc
+    \or
+      \Etoc@global\expandafter\let\csname etocname   \endcsname\etocthelinkedname
+      \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber
+    \or % page
+      \Etoc@global\expandafter\let\csname etocpage   \endcsname\etocthelinkedpage
+    \else % all
+      \Etoc@global\expandafter\let\csname etocname   \endcsname\etocthelinkedname
+      \Etoc@global\expandafter\let\csname etocnumber \endcsname\etocthelinkednumber
+      \Etoc@global\expandafter\let\csname etocpage   \endcsname\etocthelinkedpage
+    \fi
+}
+\def\Etoc@@getnb {%
+    \let\Etoc@next\Etoc@getnb
+    \ifx\Etoc@getnb@token\@sptoken\let\Etoc@next\Etoc@getnb@nonbr\fi
+    \ifx\Etoc@getnb@token\bgroup  \let\Etoc@next\Etoc@getnb@nonbr\fi
+    \Etoc@next
+}
+\def\Etoc@getnb #1{%
+    \in@{#1}{\numberline\chapternumberline\partnumberline\booknumberline}%
+    \ifin@
+       \let\Etoc@next\Etoc@getnb@nmbrd
+    \else
+       \ifnum\Etoc@level=\m@ne
+           \let\Etoc@next\Etoc@@getit
+       \else
+           \let\Etoc@next\Etoc@getnb@nonbr
+       \fi
+       \in@{#1}{\nonumberline}%
+       \ifin@
+         \let\Etoc@next\Etoc@getnb@nonumberline
+       \fi
+    \fi
+    \Etoc@next #1%
+}
+\def\Etoc@getnb@nmbrd #1#2{%
+    \Etoc@global\Etoc@numberedtrue
+    \Etoc@global\def\etocthenumber {#2}%
+    \Etoc@getnb@nmbrd@getname\@empty
+}%
+\def\Etoc@getnb@nmbrd@getname #1\hspace\etoc@ {%
+    \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}%
+}
+\def\Etoc@getnb@nonbr #1\etoc@ {%
+    \Etoc@global\Etoc@numberedfalse
+    \Etoc@global\let\etocthenumber \@empty
+}
+\def\Etoc@getnb@nonumberline #1\hspace\etoc@ {%
+    \Etoc@global\Etoc@numberedfalse
+    \Etoc@global\let\etocthenumber \@empty
+    \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{\@gobble#1}%
+}
+\def\Etoc@@getit #1\hspace#2{%
+    \ifx\etoc@#2%
+      \Etoc@global\Etoc@numberedfalse
+      \Etoc@global\let\etocthenumber \@empty
+    \else
+      \Etoc@global\Etoc@numberedtrue
+      \Etoc@global\def\etocthenumber {#1}%
+      \expandafter\Etoc@getit@getname \expandafter\@empty
+    \fi
+}
+\def\Etoc@getit@getname #1\hspace\etoc@ {%
+    \Etoc@global\expandafter\def\expandafter\etocthename\expandafter{#1}%
+}
+\let\etocthename   \@empty
+\let\etocthenumber \@empty
+\let\etocthepage   \@empty
+\let\etocthelinkedname   \@empty
+\let\etocthelinkednumber \@empty
+\let\etocthelinkedpage   \@empty
+\let\etocthelink   \@firstofone
+\DeclareRobustCommand*{\etocname}  {}
+\DeclareRobustCommand*{\etocnumber}{}
+\DeclareRobustCommand*{\etocpage}  {}
+\DeclareRobustCommand*{\etoclink}  {\@firstofone}
+\DeclareRobustCommand*{\etocifnumbered}
+   {\ifEtoc@numbered\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+\expandafter\let\expandafter\etocxifnumbered\csname etocifnumbered \endcsname
+\DeclareRobustCommand*{\etociffirst}
+   {\ifEtoc@isfirst\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+\expandafter\let\expandafter\etocxiffirst\csname etociffirst \endcsname
+\def\Etoc@readtoc {%
+  \ifeof \Etoc@tf
+  \else
+     \read \Etoc@tf to \Etoc@buffer
+     \Etoc@toctoks=\expandafter\expandafter\expandafter
+       {\expandafter\the\expandafter\Etoc@toctoks\Etoc@buffer}%
+     \expandafter\Etoc@readtoc
+  \fi
+}
+\Etoc@toctoks {}% (superfluous, but for clarity)
+\AtBeginDocument{\IfFileExists{\jobname.toc}
+    {{\endlinechar=\m@ne
+      \makeatletter
+      \newread\Etoc@tf
+      \openin\Etoc@tf\@filef@und
+      \Etoc@readtoc
+      \global\Etoc@toctoks=\expandafter{\the\Etoc@toctoks}%
+      \closein\Etoc@tf}}
+    {\typeout{No file \jobname.toc.}}}
+\def\Etoc@openouttoc{%
+  \ifEtoc@hyperref
+   \ifx\hyper@last\@undefined
+    \IfFileExists{\jobname .toc}
+      {\Hy@WarningNoLine
+         {old toc file detected; run LaTeX again (cheers from `etoc')}%
+       \global\Etoc@toctoks={}%
+      }
+      {}%
+   \fi
+  \fi
+  \if@filesw
+   \newwrite \tf@toc
+   \immediate \openout \tf@toc \jobname .toc\relax
+  \fi
+  \global\let\Etoc@openouttoc\empty
+}
+\def\Etoc@toctoc{%
+  \gdef\Etoc@stackofends{{-3}{}}%
+  \global\let\Etoc@level\Etoc@minf
+  \global\let\Etoc@virtualtop\Etoc@minf
+  \the\Etoc@toctoks
+  \ifEtoc@notactive
+  \else
+   \gdef\Etoc@level{-\thr@@}%
+   \Etoc@doendsandbegin
+  \fi
+}
+\def\Etoc@@startlocaltoc#1#2{%
+    \ifEtoc@localtoc
+       \ifnum #1=#2\relax
+          \global\let\etoclocaltop\Etoc@virtualtop
+          \Etoc@@startlocaltochook
+          \etoclocaltableofcontentshook
+          \ifEtoc@etocstyle
+              \etocetoclocaltocmaketitle
+          \fi
+          \ifx\Etoc@aftertitlehook\@empty
+          \else
+            \ifEtoc@localtoctotoc
+              \ifEtoc@ouroboros
+              \else
+                \let\Etoc@tmp\contentsline
+                \def\contentsline{\let\contentsline\Etoc@tmp\Etoc@gobblethreeorfour}%
+              \fi
+            \fi
+          \fi
+          \global\Etoc@notactivefalse
+       \fi
+    \fi
+}
+\let\etoc@startlocaltoc\@gobble
+\let\Etoc@@startlocaltoc@toc\Etoc@@startlocaltoc
+\let\Etoc@@startlocaltochook\@empty
+\unless\ifEtoc@deeplevels
+  \def\etocdivisionnameatlevel#1{%
+    \ifcase\numexpr#1\relax
+             \ifdefined\c@chapter chapter\else section\fi%
+         \or section%
+         \or subsection%
+         \or subsubsection%
+         \or paragraph%
+         \or subparagraph%
+         \or empty%
+    \else\ifnum\numexpr#1<\m@ne
+             book%
+         \else
+             part%
+         \fi
+    \fi
+  }
+\else
+  \def\etocdivisionnameatlevel#1{%
+    \ifcase\numexpr#1\relax
+             \ifdefined\c@chapter chapter\else section\fi%
+         \or section%
+         \or subsection%
+         \or subsubsection%
+         \or subsubsubsection%
+         \or subsubsubsubsection%
+         \or subsubsubsubsubsection%
+         \or subsubsubsubsubsubsection%
+         \or paragraph%
+         \or subparagraph%
+    \else\ifnum\numexpr#1>\z@
+             empty%
+         \else\ifnum\numexpr#1=\m@ne
+             part%
+         \else
+             book%
+         \fi\fi
+    \fi
+  }
+\fi
+\def\etoclocalheadtotoc#1#2{\addcontentsline{toc}{@#1}{#2}}
+\def\etocglobalheadtotoc{\addcontentsline{toc}}
+\providecommand*\UseName{\@nameuse}
+\def\etocetoclocaltocmaketitle{%
+    \UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\localcontentsname}%
+    \if@noskipsec\leavevmode\par\fi
+    \etociflocaltoctotoc
+      {\etocifisstarred
+         {}% star variant, do not add to toc
+         {\etoclocalheadtotoc
+           {\etocdivisionnameatlevel{\etoclocaltop+1}}%
+           {\localcontentsname}%
+         }%
+      }%
+      {}%
+}%
+\def\localcontentsname  {\contentsname}%
+\let\etoclocaltableofcontentshook\@empty
+\if1\ifEtoc@lof0\fi\ifEtoc@lot0\fi1%
+\else
+\AtBeginDocument{%
+  \let\Etoc@originaladdcontentsline\addcontentsline
+  \def\addcontentsline{\Etoc@hackedaddcontentsline}%
+}%
+\fi
+\ifEtoc@lof
+  \ifEtoc@lot
+    \def\Etoc@hackedaddcontentsline#1{%
+      \expanded{\noexpand\in@{.#1,}}{.lof,.lot,}%
+      \ifin@\expandafter\Etoc@hackedaddcontentsline@i
+      \else\expandafter\Etoc@originaladdcontentsline
+      \fi {#1}}
+  \else
+    \def\Etoc@hackedaddcontentsline#1{%
+      \expanded{\noexpand\in@{.#1,}}{.lof,}%
+      \ifin@\expandafter\Etoc@hackedaddcontentsline@i
+      \else\expandafter\Etoc@originaladdcontentsline
+      \fi {#1}}
+  \fi
+\else
+  \def\Etoc@hackedaddcontentsline#1{%
+    \expanded{\noexpand\in@{.#1,}}{.lot,}%
+    \ifin@\expandafter\Etoc@hackedaddcontentsline@i
+    \else\expandafter\Etoc@originaladdcontentsline
+    \fi {#1}}
+\fi
+\def\Etoc@hackedaddcontentsline@i#1#2#3{%
+    \expanded{\noexpand\in@{.#1;#2,}}{.lof;figure,.lot;table,}%
+    \ifin@
+    \addtocontents {toc}{%
+      \protect\contentsline{#2}{#3}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}%
+      \ifdefined\protected@file@percent\protected@file@percent\fi
+    }%
+    \fi
+    \Etoc@originaladdcontentsline{#1}{#2}{#3}%
+}
+\unless\ifdefined\expanded
+  \def\Etoc@hackedaddcontentsline#1{%
+    {\edef\Etoc@tmp{\noexpand\in@{.#1,}{\ifEtoc@lof.lof,\fi\ifEtoc@lot.lot,\fi}}\expandafter}%
+    \Etoc@tmp
+    \ifin@\expandafter\Etoc@hackedaddcontentsline@i
+    \else\expandafter\Etoc@originaladdcontentsline
+    \fi {#1}%
+  }
+  \def\Etoc@hackedaddcontentsline@i#1#2#3{%
+    {\edef\Etoc@tmp{\noexpand\in@{.#1;#2,}}\expandafter}%
+    \Etoc@tmp{.lof;figure,.lot;table,}%
+    \ifin@
+    \addtocontents {toc}{%
+      \protect\contentsline{#2}{#3}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}%
+      \ifdefined\protected@file@percent\protected@file@percent\fi
+    }%
+    \fi
+    \Etoc@originaladdcontentsline{#1}{#2}{#3}%
+  }
+\fi
+\def\Etoc@@startlocallistof#1#2#3{%
+    \ifEtoc@localtoc
+       \ifnum #2=#3\relax
+          \global\let\etoclocaltop\Etoc@virtualtop
+          \global\Etoc@notactivefalse
+          \Etoc@@startlocaltochook
+          \csname etoclocallistof#1shook\endcsname
+          \ifEtoc@etocstyle
+              \csname etocetoclistof#1smaketitle\endcsname
+          \fi
+       \fi
+    \fi
+}
+\def\Etoc@@startlocallistof@setlevels#1{%
+          \ifnum\etoclocaltop<\z@
+              \expandafter\let\csname Etoc@#1@@\endcsname\@ne
+          \else
+              \expandafter\let\csname Etoc@#1@@\expandafter\endcsname
+                              \csname Etoc@\the\numexpr\etoclocaltop+\@ne @@\endcsname
+          \fi
+          \def\Etoc@do##1{%
+              \ifnum\etoclevel{##1}>\etoclocaltop
+                     \expandafter\let\csname Etoc@##1@@\endcsname\Etoc@maxlevel
+              \fi}%
+          \Etoc@dolevels
+}
+\def\etoclocallistoffigureshook{\etocstandardlines}
+\def\etoclocallistoftableshook {\etocstandardlines}
+\def\locallistfigurename{\listfigurename}
+\def\locallisttablename {\listtablename}
+\def\etocetoclistoffiguresmaketitle{%
+    \UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\locallistfigurename}%
+    \ifnum\etoclocaltop>\tw@\mbox{}\par\fi
+    \etociflocalloftotoc
+      {\etocifisstarred
+         {}% star variant, do not add to toc
+         {\etoclocalheadtotoc
+           {\etocdivisionnameatlevel{\etoclocaltop+1}}%
+           {\locallistfigurename}%
+         }%
+      }%
+      {}%
+}%
+\def\etocetoclistoftablesmaketitle{%
+    \UseName{\etocdivisionnameatlevel{\etoclocaltop+1}}*{\locallisttablename}%
+    \ifnum\etoclocaltop>\tw@\mbox{}\par\fi
+    \etociflocallottotoc
+      {\etocifisstarred
+         {}% star variant, do not add to toc
+         {\etoclocalheadtotoc
+           {\etocdivisionnameatlevel{\etoclocaltop+1}}%
+           {\locallisttablename}%
+         }%
+      }%
+      {}%
+}%
+\let\Etoc@listofreset\@empty
+\ifEtoc@lof
+  \def\locallistoffigures{%
+      \def\Etoc@listofreset{%
+          \let\Etoc@currext\Etoc@tocext
+          \let\Etoc@@startlocaltoc\Etoc@@startlocaltoc@toc
+          \let\Etoc@@startlocaltochook\@empty
+          \let\Etoc@listofreset\@empty
+          \let\Etoc@listofhook\@empty
+          }%
+      \let\Etoc@currext\Etoc@lofext
+      \def\Etoc@@startlocaltoc{\Etoc@@startlocallistof{figure}}%
+      \def\Etoc@@startlocaltochook{\Etoc@@startlocallistof@setlevels{figure}}%
+      \def\Etoc@listofhook{%
+        \def\Etoc@do####1{%
+          \expandafter\let\csname Etoc@@####1@@\endcsname\Etoc@maxlevel
+        }%
+        \Etoc@dolevels
+      }%
+      \localtableofcontents
+  }
+\else
+  \def\locallistoffigures{%
+      \PackageError{etoc}{%
+        \string\locallistoffigures \on@line\space but\MessageBreak
+        package was loaded without `lof' option}%
+        {Try again with \string\usepackage[lof]{etoc}}%
+      }
+\fi
+\ifEtoc@lot
+  \def\locallistoftables{%
+      \def\Etoc@listofreset{%
+          \let\Etoc@currext\Etoc@tocext
+          \let\Etoc@@startlocaltoc\Etoc@@startlocaltoc@toc
+          \let\Etoc@@startlocaltochook\@empty
+          \let\Etoc@listofreset\@empty
+          \let\Etoc@listofhook\@empty
+          }%
+      \let\Etoc@currext\Etoc@lotext
+      \def\Etoc@@startlocaltoc{\Etoc@@startlocallistof{table}}%
+      \def\Etoc@@startlocaltochook{\Etoc@@startlocallistof@setlevels{table}}%
+      \def\Etoc@listofhook{%
+        \def\Etoc@do####1{%
+          \expandafter\let\csname Etoc@@####1@@\endcsname\Etoc@maxlevel
+        }%
+        \Etoc@dolevels
+      }%
+      \localtableofcontents
+  }
+\else
+  \def\locallistoftables{%
+      \PackageError{etoc}{%
+        \string\locallistoftable \on@line\space but\MessageBreak
+        package was loaded without `lot' option}%
+        {Try again with \string\usepackage[lot]{etoc}}%
+      }
+\fi
+\def\Etoc@checkifempty {%
+    \global\Etoc@isemptytoctrue
+    \global\Etoc@stoptocfalse
+    \global\let\Etoc@level\Etoc@minf
+    \global\let\Etoc@virtualtop\Etoc@minf
+    \gdef\Etoc@stackofends{{-3}{}}%
+    \begingroup
+      \ifEtoc@localtoc
+        \def\etoc@startlocaltoc##1{%
+          \ifnum##1=\Etoc@tocid\relax
+              \global\let\etoclocaltop\Etoc@virtualtop
+              \Etoc@@startlocaltochook
+              \global\Etoc@notactivefalse
+          \fi
+        }%
+        \let\contentsline\Etoc@testingcontentslinelocal
+      \else
+        \let\contentsline\Etoc@testingcontentsline
+      \fi
+      \Etoc@storetocdepth
+        \let\Etoc@setlocaltop@doendsandbegin\@empty
+        \the\Etoc@toctoks
+      \Etoc@restoretocdepth
+    \endgroup
+}
+\DeclareRobustCommand*\etocifwasempty
+  {\ifEtoc@isemptytoc\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi }
+\expandafter\let\expandafter\etocxifwasempty\csname etocifwasempty \endcsname
+\def\Etoc@testingcontentslinelocal #1{%
+  \ifEtoc@stoptoc
+  \else
+   \ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel
+   \else
+    \global\expandafter\let\expandafter\Etoc@level\csname Etoc@#1@@\endcsname
+    \if @\@car#1\@nil\else\global\let\Etoc@virtualtop\Etoc@level\fi
+    \ifEtoc@notactive
+    \else
+     \ifnum\Etoc@level>\etoclocaltop
+      \unless\ifnum\Etoc@level>\c@tocdepth
+       \global\Etoc@isemptytocfalse
+       \global\Etoc@stoptoctrue
+      \fi
+     \else
+      \global\Etoc@stoptoctrue
+     \fi
+    \fi
+   \fi
+  \fi
+  \Etoc@gobblethreeorfour{}%
+}
+\def\Etoc@testingcontentsline #1{%
+  \ifEtoc@stoptoc
+  \else
+   \ifnum\csname Etoc@#1@@\endcsname=\Etoc@maxlevel
+   \else
+    \unless\ifnum\csname Etoc@#1@@\endcsname>\c@tocdepth
+     \global\Etoc@isemptytocfalse
+     \global\Etoc@stoptoctrue
+    \fi
+   \fi
+  \fi
+  \Etoc@gobblethreeorfour{}%
+}
+\def\Etoc@localtableofcontents#1{%
+    \gdef\etoclocaltop{-\@m}%
+    \Etoc@localtoctrue
+    \global\Etoc@isemptytocfalse
+    \edef\Etoc@tocid{#1}%
+    \ifnum\Etoc@tocid<\@ne
+      \setbox0\hbox{\ref{Unknown toc ref \@secondoftwo#1. \space Rerun LaTeX}}%
+      \global\Etoc@stoptoctrue
+      \gdef\etoclocaltop{-\thr@@}%
+      \Etoc@tableofcontents
+      \expandafter\Etoc@gobtoetoc@
+    \fi
+    \global\Etoc@notactivetrue
+    \ifEtoc@checksemptiness
+       \Etoc@checkifempty
+    \fi
+    \ifEtoc@isemptytoc
+       \ifEtoc@notactive
+         \setbox0\hbox{\ref{Unknown toc ID \number\Etoc@tocid. \space Rerun LaTeX}}%
+         \global\Etoc@isemptytocfalse
+         \global\Etoc@stoptoctrue
+         \gdef\etoclocaltop{-\thr@@}%
+         \Etoc@tableofcontents
+         \expandafter\expandafter\expandafter\Etoc@gobtoetoc@
+       \fi
+    \else
+       \global\Etoc@stoptocfalse
+       \global\Etoc@notactivetrue
+       \edef\etoc@startlocaltoc##1%
+           {\noexpand\Etoc@@startlocaltoc{##1}{\Etoc@tocid}}%
+       \Etoc@tableofcontents
+    \fi
+    \@gobble\etoc@
+    \endgroup\ifEtoc@mustclosegroup\endgroup\fi
+    \Etoc@tocdepthreset
+    \Etoc@listofreset
+    \etocaftertochook
+}% \Etoc@localtableofcontents
+\def\Etoc@getref #1{%
+    \@ifundefined{r@#1}
+         {0}
+         {\expandafter\Etoc@getref@i\romannumeral-`0%
+          \expandafter\expandafter\expandafter
+          \@car\csname r@#1\endcsname0\@nil\@etoc
+         }%
+}
+\def\Etoc@getref@i#1#2\@etoc{\ifnum9<1\string#1 #1#2\else 0\fi}
+\def\Etoc@ref#1{\Etoc@localtableofcontents{\Etoc@getref{#1}}}
+\def\Etoc@label#1{\label{#1}\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}
+\@firstofone{\def\Etoc@again} {\futurelet\Etoc@nexttoken\Etoc@t@bleofcontents}
+\def\Etoc@dothis #1#2\etoc@ {\fi #1}
+\def\Etoc@t@bleofcontents{%
+    \gdef\etoclocaltop{-\@M}%
+    \ifx\Etoc@nexttoken\label\Etoc@dothis{\expandafter\Etoc@label\@gobble}\fi
+    \ifx\Etoc@nexttoken\@sptoken\Etoc@dothis{\Etoc@again}\fi
+    \ifx\Etoc@nexttoken\ref\Etoc@dothis{\expandafter\Etoc@ref\@gobble}\fi
+    \ifEtoc@tocwithid\Etoc@dothis{\Etoc@localtableofcontents{\c@etoc@tocid}}\fi
+    \global\Etoc@isemptytocfalse
+    \ifEtoc@checksemptiness\Etoc@checkifempty\fi
+    \ifEtoc@isemptytoc
+     \ifEtoc@notocifnotoc
+      \expandafter\expandafter\expandafter\@gobble
+     \fi
+    \fi
+    \Etoc@tableofcontents
+    \endgroup
+    \ifEtoc@mustclosegroup\endgroup\fi
+    \Etoc@tocdepthreset
+    \Etoc@listofreset
+    \etocaftertochook
+    \@gobble\etoc@
+    }% \Etoc@t@bleofcontents
+\def\Etoc@table@fcontents{%
+    \refstepcounter{etoc@tocid}%
+    \Etoc@tocwithidfalse
+    \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents
+}
+\def\Etoc@localtable@fcontents{%
+    \refstepcounter{etoc@tocid}%
+    \addtocontents{toc}{\string\etoc@startlocaltoc{\the\c@etoc@tocid}}%
+    \Etoc@tocwithidtrue
+    \futurelet\Etoc@nexttoken\Etoc@t@bleofcontents
+}
+\def\etoctableofcontents{%
+   \Etoc@openouttoc
+   \Etoc@tocdepthset
+   \begingroup
+      \@ifstar
+      {\let\Etoc@aftertitlehook\@empty\Etoc@table@fcontents}
+      {\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@table@fcontents}%
+}% \etoctableofcontents
+\def\etocifisstarred{\ifx\Etoc@aftertitlehook\@empty
+                         \expandafter\@firstoftwo\else
+                         \expandafter\@secondoftwo
+                     \fi}
+\let\etocoriginaltableofcontents\tableofcontents
+\let\tableofcontents\etoctableofcontents
+\let\Etoc@listofhook\@empty
+\newcommand*\localtableofcontents{%
+   \Etoc@openouttoc
+   \Etoc@tocdepthset
+   \begingroup
+      \Etoc@listofhook
+      \@ifstar
+      {\let\Etoc@aftertitlehook\@empty\Etoc@localtable@fcontents}
+      {\def\Etoc@aftertitlehook{\etocaftertitlehook}\Etoc@localtable@fcontents}%
+}% \localtableofcontents
+\newcommand*\localtableofcontentswithrelativedepth[1]{%
+   \def\Etoc@@startlocaltochook{%
+       \global\c@tocdepth\numexpr\etoclocaltop+#1\relax
+   }%
+   \def\Etoc@listofreset{\let\Etoc@@startlocaltochook\@empty
+                         \let\Etoc@listofreset\@empty}%
+   \localtableofcontents
+}% \localtableofcontentswithrelativedepth
+\newcommand\etocsettocstyle[2]{%
+   \Etoc@etocstylefalse
+   \Etoc@classstylefalse
+   \def\Etoc@tableofcontents@user@before{#1}%
+   \def\Etoc@tableofcontents@user@after {#2}%
+}%
+\def\etocstoretocstyleinto#1{%
+%%    \@ifdefinable#1{%
+      \edef#1{\noexpand\Etoc@etocstylefalse\noexpand\Etoc@classstylefalse
+              \def\noexpand\Etoc@tableofcontents@user@before{%
+                  \unexpanded\expandafter{\Etoc@tableofcontents@user@before}%
+                }%
+              \def\noexpand\Etoc@tableofcontents@user@after{%
+                  \unexpanded\expandafter{\Etoc@tableofcontents@user@after}%
+                }%
+             }%
+%%    }%
+}%
+\def\Etoc@tableofcontents {%
+    \Etoc@tableofcontents@etoc@before
+    \ifEtoc@localtoc\ifEtoc@etocstyle\expandafter\expandafter\expandafter\@gobble\fi\fi
+    \Etoc@tableofcontents@user@before
+    \Etoc@tableofcontents@contents
+    \ifEtoc@localtoc\ifEtoc@etocstyle\expandafter\expandafter\expandafter\@gobble\fi\fi
+    \Etoc@tableofcontents@user@after
+    \Etoc@tableofcontents@etoc@after
+    \@gobble\etoc@
+}
+\def\Etoc@tableofcontents@etoc@before{%
+    \ifnum\c@tocdepth>\Etoc@minf
+    \else
+     \expandafter\Etoc@gobtoetoc@
+    \fi
+    \Etoc@par
+    \Etoc@beforetitlehook
+    \etocbeforetitlehook
+    \Etoc@storetocdepth
+    \let\Etoc@savedcontentsline\contentsline
+    \let\contentsline\Etoc@etoccontentsline
+    \ifEtoc@standardlines
+    \else
+        \def\Etoc@do##1{%
+            \expandafter\def\csname etocsaved##1tocline\endcsname
+             {\PackageError{etoc}{%
+              \expandafter\string\csname etocsaved##1tocline\endcsname\space
+              has been deprecated\MessageBreak
+              at 1.1a and is removed at 1.2.\MessageBreak
+              Use \expandafter\string\csname l@##1\endcsname\space directly.\MessageBreak
+              Reported \on@line}%
+                                {I will use \expandafter\string
+              \csname l@##1\endcsname\space myself for this time.%
+                               }%
+              \csname l@##1\endcsname
+            }%
+        }%
+        \Etoc@dolevels
+    \fi
+}%
+\def\Etoc@tableofcontents@contents{%
+    \Etoc@tocdepthset
+    \ifEtoc@parskip\parskip\z@skip\fi
+    \Etoc@aftertitlehook
+    \gdef\etoclocaltop{-\thr@@}%
+    \Etoc@toctoc
+    \etocaftercontentshook
+}%
+\def\Etoc@tableofcontents@etoc@after{%
+    \@nobreakfalse
+    \Etoc@restoretocdepth
+    \ifx\Etoc@global\global
+     \@ifundefined{tof@finish}
+     {}
+     {\ifx\tof@finish\@empty
+      \else
+       \global\let\contentsline\Etoc@savedcontentsline
+      \fi
+     }%
+    \fi
+}
+\def\etocsetstyle#1{\ifcsname Etoc@#1@@\endcsname
+                      \expandafter\Etoc@setstyle@a
+                    \else
+                      \expandafter\Etoc@setstyle@error
+                    \fi {#1}%
+}
+\def\Etoc@setstyle@error #1{%
+    \PackageWarning{etoc}{`#1' is unknown to etoc. \space Did you\MessageBreak
+                    forget some \string\etocsetlevel{#1}{<level>}?\MessageBreak
+                    Reported}%
+    \@gobblefour
+}
+\def\Etoc@setstyle@a #1{%
+    \edef\Etoc@tmp{\the\numexpr\csname Etoc@#1@@\endcsname}%
+    \if1\unless\ifnum\Etoc@tmp<\Etoc@maxlevel 0\fi
+        \unless\ifnum\Etoc@tmp>\Etoc@minf 0\fi1%
+      \Etoc@standardlinesfalse
+      \expandafter\Etoc@setstyle@b\expandafter\Etoc@tmp
+    \else
+      \ifnum\Etoc@tmp=\Etoc@maxlevel
+        \in@{.#1,}{.figure,.table,}%
+        \ifin@
+           \PackageWarning{etoc}
+              {You can not use \string\etocsetstyle\space with `#1'.\MessageBreak
+               Check the package documentation (in particular about\MessageBreak
+               \string\etoclocallistoffigureshook/\string\etoclocallistoftableshook)%
+               \MessageBreak on how to customize
+               figure and table entries in local\MessageBreak lists. Reported}%
+        \else
+           \PackageInfo{etoc}
+              {Attempt to set the style of `#1',\MessageBreak
+               whose level is currently the maximal one \etocthemaxlevel,\MessageBreak
+               which is never displayed. \space This will be ignored\MessageBreak
+               but note that we do quit compatibility mode.\MessageBreak
+               Reported}%
+           \Etoc@standardlinesfalse
+        \fi
+      \else
+        \PackageWarning{etoc}{This should not happen.  Reported}%
+      \fi
+      \expandafter\@gobblefour
+    \fi
+}
+\long\def\Etoc@setstyle@b#1#2#3#4#5{%
+     \expandafter\def\csname Etoc@begin@#1\endcsname    {#2}%
+     \expandafter\def\csname Etoc@prefix@#1\endcsname   {#3}%
+     \expandafter\def\csname Etoc@contents@#1\endcsname {#4}%
+     \expandafter\def\csname Etoc@end@#1\endcsname      {#5}%
+}
+\def\Etoc@setstyle@e#1{%
+     \expandafter\let\csname Etoc@begin@#1\endcsname    \@empty
+     \expandafter\let\csname Etoc@prefix@#1\endcsname   \@empty
+     \expandafter\let\csname Etoc@contents@#1\endcsname \@empty
+     \expandafter\let\csname Etoc@end@#1\endcsname      \@empty
+}
+\def\Etoc@storelines@a#1{%
+   \noexpand\Etoc@setstyle@b{#1}%
+     {\expandafter\Etoc@expandonce\csname Etoc@begin@#1\endcsname}%
+     {\expandafter\Etoc@expandonce\csname Etoc@prefix@#1\endcsname}%
+     {\expandafter\Etoc@expandonce\csname Etoc@contents@#1\endcsname}%
+     {\expandafter\Etoc@expandonce\csname Etoc@end@#1\endcsname}%
+}
+\def\Etoc@expandonce#1{\unexpanded\expandafter{#1}}
+\def\etocstorelinestylesinto#1{%
+    \edef#1{\Etoc@storelines@a{-2}\Etoc@storelines@a{-1}\Etoc@storelines@a{0}%
+            \Etoc@storelines@a {1}\Etoc@storelines@a {2}\Etoc@storelines@a{3}%
+            \Etoc@storelines@a {4}\Etoc@storelines@a {5}%
+            \ifEtoc@deeplevels
+              \Etoc@storelines@a{6}\Etoc@storelines@a{7}\Etoc@storelines@a{8}%
+              \Etoc@storelines@a{9}\Etoc@storelines@a{10}\Etoc@storelines@a{11}%
+            \fi
+    }%
+}
+\def\etocstorethislinestyleinto#1#2{%
+    \edef#2{\expandafter\Etoc@storelines@a\expandafter{\number\etoclevel{#1}}}%
+}%
+\def\etocfontminustwo {\normalfont \LARGE \bfseries}
+\def\etocfontminusone {\normalfont \large \bfseries}
+\def\etocfontzero     {\normalfont \large \bfseries}
+\def\etocfontone      {\normalfont \normalsize \bfseries}
+\def\etocfonttwo      {\normalfont \normalsize}
+\def\etocfontthree    {\normalfont \footnotesize}
+\def\etocsepminustwo  {4ex \@plus .5ex \@minus .5ex}
+\def\etocsepminusone  {4ex \@plus .5ex \@minus .5ex}
+\def\etocsepzero      {2.5ex \@plus .4ex \@minus .4ex}
+\def\etocsepone       {1.5ex \@plus .3ex \@minus .3ex}
+\def\etocseptwo       {.5ex \@plus .1ex \@minus .1ex}
+\def\etocsepthree     {.25ex \@plus .05ex \@minus .05ex}
+\def\etocbaselinespreadminustwo {1}
+\def\etocbaselinespreadminusone {1}
+\def\etocbaselinespreadzero     {1}
+\def\etocbaselinespreadone      {1}
+\def\etocbaselinespreadtwo      {1}
+\def\etocbaselinespreadthree    {.9}
+\def\etocminustwoleftmargin  {1.5em plus 0.5fil}
+\def\etocminustworightmargin {1.5em plus -0.5fil}
+\def\etocminusoneleftmargin  {1em}
+\def\etocminusonerightmargin {1em}
+\def\etoctoclineleaders
+        {\hbox{\normalfont\normalsize\hb@xt@2ex {\hss.\hss}}}
+\def\etocabbrevpagename {p.~}
+\def\etocpartname       {Part}
+\def\etocbookname       {Book}
+\def\etocdefaultlines{%
+    \Etoc@standardlinesfalse
+    \etocdefaultlines@setbook
+    \etocdefaultlines@setpart
+    \etocdefaultlines@setchapter
+    \etocdefaultlines@setsection
+    \etocdefaultlines@setsubsection
+    \etocdefaultlines@setsubsubsection
+    \etocdefaultlines@setdeeperones
+}
+\def\etocnoprotrusion{\leavevmode\kern-\p@\kern\p@}
+\@ifclassloaded{memoir}{%
+ \def\etocdefaultlines@setbook{%
+ \Etoc@setstyle@b
+  {-2}%
+  {\addpenalty\@M\etocskipfirstprefix}
+  {\addpenalty\@secpenalty}
+  {\begingroup
+   \etocfontminustwo
+   \addvspace{\etocsepminustwo}%
+   \parindent \z@
+   \leftskip  \etocminustwoleftmargin
+   \rightskip \etocminustworightmargin
+   \parfillskip \@flushglue
+   \vbox{\etocifnumbered{\etoclink{\etocbookname\enspace\etocthenumber:\quad}}{}%
+         \etocname
+         \baselineskip\etocbaselinespreadminustwo\baselineskip
+         \par}%
+   \addpenalty\@M\addvspace{\etocsepminusone}%
+   \endgroup}
+  {}%
+ }
+ }{\let\etocdefaultlines@setbook\@empty}
+\def\etocdefaultlines@setpart{%
+\Etoc@setstyle@b
+  {-1}%
+  {\addpenalty\@M\etocskipfirstprefix}
+  {\addpenalty\@secpenalty}
+  {\begingroup
+   \etocfontminusone
+   \addvspace{\etocsepminusone}%
+   \parindent \z@
+   \leftskip  \etocminusoneleftmargin
+   \rightskip \etocminusonerightmargin
+   \parfillskip \@flushglue
+   \vbox{\etocifnumbered{\etoclink{\etocpartname\enspace\etocthenumber.\quad}}{}%
+         \etocname
+         \baselineskip\etocbaselinespreadminusone\baselineskip
+         \par}%
+   \addpenalty\@M\addvspace{\etocsepzero}%
+   \endgroup}
+  {}%
+}
+\def\etocdefaultlines@setchapter{%
+\Etoc@setstyle@b
+  {0}%
+  {\addpenalty\@M\etocskipfirstprefix}
+  {\addpenalty\@itempenalty}
+  {\begingroup
+   \etocfontzero
+   \addvspace{\etocsepzero}%
+   \parindent \z@ \parfillskip \@flushglue
+   \vbox{\etocifnumbered{\etocnumber.\enspace}{}\etocname
+         \baselineskip\etocbaselinespreadzero\baselineskip
+         \par}%
+   \endgroup}
+  {\addpenalty{-\@highpenalty}\addvspace{\etocsepminusone}}%
+}
+\def\etocdefaultlines@setsection{%
+\Etoc@setstyle@b
+  {1}%
+  {\addpenalty\@M\etocskipfirstprefix}
+  {\addpenalty\@itempenalty}
+  {\begingroup
+   \etocfontone
+   \addvspace{\etocsepone}%
+   \parindent \z@ \parfillskip \z@
+   \setbox\z@\vbox{\parfillskip\@flushglue
+                   \etocname\par
+                   \setbox\tw@\lastbox
+                   \global\setbox\@ne\hbox{\unhbox\tw@\ }}%
+   \dimen\z@=\wd\@ne
+   \setbox\z@=\etoctoclineleaders
+   \advance\dimen\z@\wd\z@
+   \etocifnumbered
+     {\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage\etocnoprotrusion}}
+     {\setbox\tw@\hbox{\etocabbrevpagename\etocpage\etocnoprotrusion}}%
+   \advance\dimen\z@\wd\tw@
+   \ifdim\dimen\z@ < \linewidth
+       \vbox{\etocname~%
+             \leaders\box\z@\hfil\box\tw@
+             \baselineskip\etocbaselinespreadone\baselineskip
+             \par}%
+   \else
+       \vbox{\etocname~%
+             \leaders\copy\z@\hfil\break
+             \hbox{}\leaders\box\z@\hfil\box\tw@
+             \baselineskip\etocbaselinespreadone\baselineskip
+             \par}%
+   \fi
+   \endgroup}
+  {\addpenalty\@secpenalty\addvspace{\etocsepzero}}%
+}
+\def\etocdefaultlines@setsubsection{%
+\Etoc@setstyle@b
+  {2}%
+  {\addpenalty\@medpenalty\etocskipfirstprefix}
+  {\addpenalty\@itempenalty}
+  {\begingroup
+   \etocfonttwo
+   \addvspace{\etocseptwo}%
+   \parindent \z@ \parfillskip \z@
+   \setbox\z@\vbox{\parfillskip\@flushglue
+                   \etocname\par\setbox\tw@\lastbox
+                   \global\setbox\@ne\hbox{\unhbox\tw@}}%
+   \dimen\z@=\wd\@ne
+   \setbox\z@=\etoctoclineleaders
+   \advance\dimen\z@\wd\z@
+   \etocifnumbered
+     {\setbox\tw@\hbox{\etocnumber, \etocabbrevpagename\etocpage\etocnoprotrusion}}
+     {\setbox\tw@\hbox{\etocabbrevpagename\etocpage\etocnoprotrusion}}%
+   \advance\dimen\z@\wd\tw@
+   \ifdim\dimen\z@ < \linewidth
+       \vbox{\etocname~%
+             \leaders\box\z@\hfil\box\tw@
+             \baselineskip\etocbaselinespreadtwo\baselineskip
+             \par}%
+   \else
+       \vbox{\etocname~%
+             \leaders\copy\z@\hfil\break
+             \hbox{}\leaders\box\z@\hfil\box\tw@
+             \baselineskip\etocbaselinespreadtwo\baselineskip
+             \par}%
+   \fi
+   \endgroup}
+  {\addpenalty\@secpenalty\addvspace{\etocsepone}}%
+}
+\def\etocdefaultlines@setsubsubsection{%
+\Etoc@setstyle@b
+  {3}%
+  {\addpenalty\@M
+   \etocfontthree
+   \vspace{\etocsepthree}%
+   \noindent
+   \etocskipfirstprefix}
+  {\allowbreak\,--\,}
+  {\etocname}
+  {.\hfil
+    \begingroup
+     \baselineskip\etocbaselinespreadthree\baselineskip
+     \par
+    \endgroup
+   \addpenalty{-\@highpenalty}}
+}
+\def\etocdefaultlines@setdeeperones{%
+\Etoc@setstyle@e{4}%
+\Etoc@setstyle@e{5}%
+\ifEtoc@deeplevels
+  \Etoc@setstyle@e{6}%
+  \Etoc@setstyle@e{7}%
+  \Etoc@setstyle@e{8}%
+  \Etoc@setstyle@e{9}%
+  \Etoc@setstyle@e{10}%
+  \Etoc@setstyle@e{11}%
+\fi
+}
+\def\etocabovetocskip{3.5ex \@plus 1ex \@minus .2ex}
+\def\etocbelowtocskip{3.5ex \@plus 1ex \@minus .2ex}
+\def\etoccolumnsep{2em}
+\def\etocmulticolsep{0ex}
+\def\etocmulticolpretolerance{-1}
+\def\etocmulticoltolerance{200}
+\def\etocdefaultnbcol{2}
+\def\etocinnertopsep{2ex}
+\newcommand\etocmulticolstyle[2][\etocdefaultnbcol]{%
+\etocsettocstyle
+   {\let\etocoldpar\par
+    \addvspace{\etocabovetocskip}%
+    \ifnum #1>\@ne
+          \expandafter\@firstoftwo
+    \else \expandafter\@secondoftwo
+    \fi
+    {\multicolpretolerance\etocmulticolpretolerance
+    \multicoltolerance\etocmulticoltolerance
+    \setlength{\columnsep}{\etoccolumnsep}%
+    \setlength{\multicolsep}{\etocmulticolsep}%
+    \begin{multicols}{#1}[#2\etocoldpar\addvspace{\etocinnertopsep}]}
+    {#2\ifvmode\else\begingroup\interlinepenalty\@M\parskip\z@skip
+                    \@@par\endgroup
+       \fi
+       \nobreak\addvspace{\etocinnertopsep}%
+       \pretolerance\etocmulticolpretolerance
+       \tolerance\etocmulticoltolerance}%
+   }%
+   {\ifnum #1>\@ne
+          \expandafter\@firstofone
+    \else \expandafter\@gobble
+    \fi
+    {\end{multicols}}%
+    \addvspace{\etocbelowtocskip}}%
+}
+\def\etocinnerbottomsep{3.5ex}
+\def\etocinnerleftsep{2em}
+\def\etocinnerrightsep{2em}
+\def\etoctoprule{\hrule}
+\def\etocleftrule{\vrule}
+\def\etocrightrule{\vrule}
+\def\etocbottomrule{\hrule}
+\def\etoctoprulecolorcmd{\relax}
+\def\etocbottomrulecolorcmd{\relax}
+\def\etocleftrulecolorcmd{\relax}
+\def\etocrightrulecolorcmd{\relax}
+\def\etoc@ruledheading #1{%
+   \hb@xt@\linewidth{\color@begingroup
+          \hss #1\hss\hskip-\linewidth
+          \etoctoprulecolorcmd\leaders\etoctoprule\hss
+          \phantom{#1}%
+          \leaders\etoctoprule\hss\color@endgroup}%
+          \nointerlineskip\nobreak\vskip\etocinnertopsep}
+\newcommand*\etocruledstyle[2][\etocdefaultnbcol]{%
+\etocsettocstyle
+   {\addvspace{\etocabovetocskip}%
+    \ifnum #1>\@ne
+          \expandafter\@firstoftwo
+    \else \expandafter\@secondoftwo
+    \fi
+       {\multicolpretolerance\etocmulticolpretolerance
+        \multicoltolerance\etocmulticoltolerance
+        \setlength{\columnsep}{\etoccolumnsep}%
+        \setlength{\multicolsep}{\etocmulticolsep}%
+        \begin{multicols}{#1}[\etoc@ruledheading{#2}]}
+       {\etoc@ruledheading{#2}%
+         \pretolerance\etocmulticolpretolerance
+         \tolerance\etocmulticoltolerance}}
+   {\ifnum #1>\@ne\expandafter\@firstofone
+         \else \expandafter\@gobble
+    \fi
+    {\end{multicols}}%
+    \addvspace{\etocbelowtocskip}}}
+\def\etocframedmphook{\relax}
+\long\def\etocbkgcolorcmd{\relax}
+\long\def\Etoc@relax{\relax}
+\newbox\etoc@framed@titlebox
+\newbox\etoc@framed@contentsbox
+\newcommand*\etocframedstyle[2][\etocdefaultnbcol]{%
+\etocsettocstyle{%
+    \addvspace{\etocabovetocskip}%
+    \sbox\z@{#2}%
+    \dimen\z@\dp\z@
+    \ifdim\wd\z@<\linewidth \dp\z@\z@ \else \dimen\z@\z@ \fi
+    \setbox\etoc@framed@titlebox=\hb@xt@\linewidth{\color@begingroup
+        \hss
+        \ifx\etocbkgcolorcmd\Etoc@relax
+        \else
+            \sbox\tw@{\color{white}%
+            \vrule\@width\wd\z@\@height\ht\z@\@depth\dimen\z@}%
+            \ifdim\wd\z@<\linewidth \dp\tw@\z@\fi
+            \box\tw@
+            \hskip-\wd\z@
+        \fi
+        \copy\z@
+        \hss
+        \hskip-\linewidth
+        \etoctoprulecolorcmd\leaders\etoctoprule\hss
+        \hskip\wd\z@
+        \etoctoprulecolorcmd\leaders\etoctoprule\hss\color@endgroup}%
+    \setbox\z@\hbox{\etocleftrule\etocrightrule}%
+    \dimen\tw@\linewidth\advance\dimen\tw@-\wd\z@
+        \advance\dimen\tw@-\etocinnerleftsep
+        \advance\dimen\tw@-\etocinnerrightsep
+    \setbox\etoc@framed@contentsbox=\vbox\bgroup
+        \hsize\dimen\tw@
+        \kern\dimen\z@
+        \vskip\etocinnertopsep
+        \hbox\bgroup
+        \begin{minipage}{\hsize}%
+        \etocframedmphook
+    \ifnum #1>\@ne
+          \expandafter\@firstoftwo
+    \else \expandafter\@secondoftwo
+    \fi
+        {\multicolpretolerance\etocmulticolpretolerance
+        \multicoltolerance\etocmulticoltolerance
+        \setlength{\columnsep}{\etoccolumnsep}%
+        \setlength{\multicolsep}{\etocmulticolsep}%
+        \begin{multicols}{#1}}
+        {\pretolerance\etocmulticolpretolerance
+         \tolerance\etocmulticoltolerance}}
+    {\ifnum #1>\@ne\expandafter\@firstofone
+         \else \expandafter\@gobble
+     \fi
+      {\end{multicols}\unskip }%
+    \end{minipage}%
+    \egroup
+    \vskip\etocinnerbottomsep
+    \egroup
+    \vbox{\hsize\linewidth
+        \ifx\etocbkgcolorcmd\Etoc@relax
+        \else
+            \kern\ht\etoc@framed@titlebox
+            \kern\dp\etoc@framed@titlebox
+            \hb@xt@\linewidth{\color@begingroup
+            \etocleftrulecolorcmd\etocleftrule
+            \etocbkgcolorcmd
+            \leaders\vrule
+                   \@height\ht\etoc@framed@contentsbox
+                   \@depth\dp\etoc@framed@contentsbox
+            \hss
+            \etocrightrulecolorcmd\etocrightrule
+            \color@endgroup}\nointerlineskip
+            \vskip-\dp\etoc@framed@contentsbox
+            \vskip-\ht\etoc@framed@contentsbox
+            \vskip-\dp\etoc@framed@titlebox
+            \vskip-\ht\etoc@framed@titlebox
+        \fi
+    \box\etoc@framed@titlebox\nointerlineskip
+    \hb@xt@\linewidth{\color@begingroup
+    {\etocleftrulecolorcmd\etocleftrule}%
+    \hss\box\etoc@framed@contentsbox\hss
+    \etocrightrulecolorcmd\etocrightrule\color@endgroup}
+    \nointerlineskip
+    \vskip\ht\etoc@framed@contentsbox
+    \vskip\dp\etoc@framed@contentsbox
+    \hb@xt@\linewidth{\color@begingroup\etocbottomrulecolorcmd
+          \leaders\etocbottomrule\hss\color@endgroup}}
+    \addvspace{\etocbelowtocskip}}}
+\newcommand\etoc@multicoltoc[2][\etocdefaultnbcol]{%
+    \etocmulticolstyle[#1]{#2}%
+    \tableofcontents}
+\newcommand\etoc@multicoltoci[2][\etocdefaultnbcol]{%
+    \etocmulticolstyle[#1]{#2}%
+    \tableofcontents*}
+\newcommand\etoc@local@multicoltoc[2][\etocdefaultnbcol]{%
+    \etocmulticolstyle[#1]{#2}%
+    \localtableofcontents}
+\newcommand\etoc@local@multicoltoci[2][\etocdefaultnbcol]{%
+    \etocmulticolstyle[#1]{#2}%
+    \localtableofcontents*}
+\newcommand*\etoc@ruledtoc[2][\etocdefaultnbcol]{%
+    \etocruledstyle[#1]{#2}%
+    \tableofcontents}
+\newcommand*\etoc@ruledtoci[2][\etocdefaultnbcol]{%
+    \etocruledstyle[#1]{#2}%
+    \tableofcontents*}
+\newcommand*\etoc@local@ruledtoc[2][\etocdefaultnbcol]{%
+    \etocruledstyle[#1]{#2}%
+    \localtableofcontents}
+\newcommand*\etoc@local@ruledtoci[2][\etocdefaultnbcol]{%
+    \etocruledstyle[#1]{#2}%
+    \localtableofcontents*}
+\newcommand*\etoc@framedtoc[2][\etocdefaultnbcol]{%
+    \etocframedstyle[#1]{#2}%
+    \tableofcontents}
+\newcommand*\etoc@framedtoci[2][\etocdefaultnbcol]{%
+    \etocframedstyle[#1]{#2}%
+    \tableofcontents*}
+\newcommand*\etoc@local@framedtoc[2][\etocdefaultnbcol]{%
+    \etocframedstyle[#1]{#2}%
+    \localtableofcontents}
+\newcommand*\etoc@local@framedtoci[2][\etocdefaultnbcol]{%
+    \etocframedstyle[#1]{#2}%
+    \localtableofcontents*}
+\def\etocmulticol{\begingroup
+    \Etoc@mustclosegrouptrue
+    \@ifstar
+    {\etoc@multicoltoci}
+    {\etoc@multicoltoc}}
+\def\etocruled{\begingroup
+    \Etoc@mustclosegrouptrue
+    \@ifstar
+    {\etoc@ruledtoci}
+    {\etoc@ruledtoc}}
+\def\etocframed{\begingroup
+    \Etoc@mustclosegrouptrue
+    \@ifstar
+    {\etoc@framedtoci}
+    {\etoc@framedtoc}}
+\def\etoclocalmulticol{\begingroup
+    \Etoc@mustclosegrouptrue
+    \@ifstar
+    {\etoc@local@multicoltoci}
+    {\etoc@local@multicoltoc}}
+\def\etoclocalruled{\begingroup
+    \Etoc@mustclosegrouptrue
+    \@ifstar
+    {\etoc@local@ruledtoci}
+    {\etoc@local@ruledtoc}}
+\def\etoclocalframed{\begingroup
+    \Etoc@mustclosegrouptrue
+    \@ifstar
+    {\etoc@local@framedtoci}
+    {\etoc@local@framedtoc}}
+\def\etocmemoirtoctotocfmt #1#2{%
+    \PackageWarning{etoc}
+        {\string\etocmemoirtoctotocfmt\space is deprecated.\MessageBreak
+         Use in its place \string\etocsettoclineforclasstoc,\MessageBreak
+         and \string\etocsettoclineforclasslistof{toc} (or {lof}, {lot}).
+         I will do this now.\MessageBreak
+         Reported}%
+    \etocsettoclineforclasstoc{#1}{#2}%
+    \etocsettoclineforclasslistof{toc}{#1}{#2}%
+}
+\def\etocsettoclineforclasstoc #1#2{%
+    \def\etocclassmaintocaddtotoc{\etocglobalheadtotoc{#1}{#2}}%
+}
+\def\etocsettoclineforclasslistof #1#2#3{%
+    \@namedef{etocclasslocal#1addtotoc}{\etoclocalheadtotoc{#2}{#3}}%
+}
+\let\etocclasslocaltocaddtotoc\@empty
+\let\etocclasslocallofaddtotoc\@empty
+\let\etocclasslocallotaddtotoc\@empty
+\ifdefined\c@chapter
+  \def\etocclasslocaltocmaketitle{\section*{\localcontentsname}}
+  \def\etocclasslocallofmaketitle{\section*{\locallistfigurename}}
+  \def\etocclasslocallotmaketitle{\section*{\locallisttablename}}
+  \etocsettoclineforclasstoc        {chapter}{\contentsname}
+  \etocsettoclineforclasslistof{toc}{section}{\localcontentsname}
+  \etocsettoclineforclasslistof{lof}{section}{\locallistfigurename}
+  \etocsettoclineforclasslistof{lot}{section}{\locallisttablename}
+\else
+  \def\etocclasslocaltocmaketitle{\subsection*{\localcontentsname}}%
+  \def\etocclasslocallofmaketitle{\subsection*{\locallistfigurename}}%
+  \def\etocclasslocallotmaketitle{\subsection*{\locallisttablename}}%
+  \etocsettoclineforclasstoc        {section}{\contentsname}
+  \etocsettoclineforclasslistof{toc}{subsection}{\localcontentsname}
+  \etocsettoclineforclasslistof{lof}{subsection}{\locallistfigurename}
+  \etocsettoclineforclasslistof{lot}{subsection}{\locallisttablename}
+\fi
+\def\etocclasslocalperhapsaddtotoc #1{%
+    \etocifisstarred
+      {}
+      {\csname ifEtoc@local#1totoc\endcsname
+         \csname etocclasslocal#1addtotoc\endcsname
+       \fi
+      }%
+}
+\def\etocarticlestyle{%
+    \etocsettocstyle
+    {\ifEtoc@localtoc
+       \@nameuse{etocclasslocal\Etoc@currext maketitle}%
+       \etocclasslocalperhapsaddtotoc\Etoc@currext
+     \else
+       \section *{\contentsname
+                  \@mkboth {\MakeUppercase \contentsname}
+                           {\MakeUppercase \contentsname}}%
+       \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}%
+     \fi
+    }
+    {}%
+}
+\def\etocarticlestylenomarks{%
+    \etocsettocstyle
+    {\ifEtoc@localtoc
+       \@nameuse{etocclasslocal\Etoc@currext maketitle}%
+       \etocclasslocalperhapsaddtotoc\Etoc@currext
+     \else
+       \section *{\contentsname}%
+       \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}%
+     \fi
+    }
+    {}%
+}
+\def\etocbookstyle{%
+    \etocsettocstyle
+    {\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi
+     \ifEtoc@localtoc
+       \@nameuse{etocclasslocal\Etoc@currext maketitle}%
+       \etocclasslocalperhapsaddtotoc\Etoc@currext
+     \else
+       \chapter *{\contentsname
+                  \@mkboth {\MakeUppercase \contentsname}
+                           {\MakeUppercase \contentsname}}%
+       \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}%
+     \fi
+    }%
+    {\if@restonecol \twocolumn \fi}%
+}
+\def\etocbookstylenomarks{%
+    \etocsettocstyle
+    {\if@twocolumn \@restonecoltrue \onecolumn \else \@restonecolfalse \fi
+     \ifEtoc@localtoc
+       \@nameuse{etocclasslocal\Etoc@currext maketitle}%
+       \etocclasslocalperhapsaddtotoc\Etoc@currext
+     \else
+       \chapter *{\contentsname}%
+       \etocifisstarred{}{\etocifmaintoctotoc{\etocclassmaintocaddtotoc}{}}%
+     \fi
+    }%
+    {\if@restonecol \twocolumn \fi}%
+}
+\let\etocreportstyle\etocbookstyle
+\let\etocreportstylenomarks\etocbookstylenomarks
+\def\etocmemoirstyle{%
+    \etocsettocstyle
+        {\ensureonecol \par \begingroup \phantomsection
+         \ifx\Etoc@aftertitlehook\@empty
+         \else
+           \ifmem@em@starred@listof
+           \else
+             \ifEtoc@localtoc
+                  \etocclasslocalperhapsaddtotoc\Etoc@currext
+             \else
+               \ifEtoc@maintoctotoc
+                  \etocclassmaintocaddtotoc
+               \fi
+             \fi
+           \fi
+         \fi
+         \ifEtoc@localtoc
+            \@namedef{@\Etoc@currext maketitle}{%
+               \@nameuse{etocclasslocal\Etoc@currext maketitle}%
+            }%
+         \fi
+         \@nameuse {@\Etoc@currext maketitle} %<< space token here from memoir code
+         \ifx\Etoc@aftertitlehook\@empty
+          \else
+          \Etoc@aftertitlehook \let \Etoc@aftertitlehook \relax
+         \fi
+         \parskip \cftparskip \@nameuse {cft\Etoc@currext beforelisthook}%
+        }%
+        {\@nameuse {cft\Etoc@currext afterlisthook}%
+         \endgroup\restorefromonecol
+        }%
+}
+\let\Etoc@beforetitlehook\@empty
+\if1\@ifclassloaded{scrartcl}0{\@ifclassloaded{scrbook}0{\@ifclassloaded{scrreprt}01}}%
+\expandafter\@gobble
+\else
+   \ifdefined\setuptoc
+     \def\Etoc@beforetitlehook{%
+         \ifEtoc@localtoc
+            \etocclasslocalperhapsaddtotoc\Etoc@currext
+            \setuptoc{\Etoc@currext}{leveldown}%
+         \else
+            \etocifisstarred{}{\etocifmaintoctotoc{\setuptoc{toc}{totoc}}}%
+         \fi
+     }%
+   \fi
+\expandafter\@firstofone
+\fi
+{\def\etocclasslocalperhapsaddtotoc #1{%
+    \etocifisstarred
+    {}%
+    {\csname ifEtoc@local#1totoc\endcsname
+      \setuptoc{\Etoc@currext}{totoc}%
+     \fi
+    }%
+  }%
+}
+\ifdefined\Iftocfeature
+  \def\etoc@Iftocfeature{\Iftocfeature}%
+\else
+  \def\etoc@Iftocfeature{\iftocfeature}%
+\fi
+\def\etocscrartclstyle{%
+    \etocsettocstyle
+        {\ifx\Etoc@currext\Etoc@tocext
+             \expandafter\@firstofone
+         \else
+             \expandafter\@gobble
+         \fi
+         {\let\if@dynlist\if@tocleft}%
+         \edef\@currext{\Etoc@currext}%
+         \@ifundefined{listof\@currext name}%
+            {\def\list@fname{\listofname~\@currext}}%
+            {\expandafter\let\expandafter\list@fname
+                         \csname listof\@currext name\endcsname}%
+         \etoc@Iftocfeature {\@currext}{onecolumn}
+             {\etoc@Iftocfeature {\@currext}{leveldown}
+              {}
+              {\if@twocolumn \aftergroup \twocolumn \onecolumn \fi }}
+             {}%
+         \etoc@Iftocfeature {\@currext}{numberline}%
+                            {\def \nonumberline {\numberline {}}}{}%
+         \expandafter\tocbasic@listhead\expandafter {\list@fname}%
+         \begingroup \expandafter \expandafter \expandafter
+         \endgroup \expandafter
+         \ifx
+             \csname microtypesetup\endcsname \relax
+         \else
+             \etoc@Iftocfeature {\@currext}{noprotrusion}{}
+                 {\microtypesetup {protrusion=false}%
+                  \PackageInfo {tocbasic}%
+                  {character protrusion at \@currext\space deactivated}}%
+         \fi
+         \etoc@Iftocfeature{\@currext}{noparskipfake}{}{%
+               \ifvmode \@tempskipa\lastskip \vskip-\lastskip
+               \addtolength{\@tempskipa}{\parskip}\vskip\@tempskipa\fi
+               }%
+         \setlength {\parskip }{\z@ }%
+         \setlength {\parindent }{\z@ }%
+         \setlength {\parfillskip }{\z@ \@plus 1fil}%
+         \csname tocbasic@@before@hook\endcsname
+         \csname tb@\@currext @before@hook\endcsname
+      }% end of before_toc
+      {% start of after_toc
+         \providecommand\tocbasic@end@toc@file{}\tocbasic@end@toc@file
+         \edef\@currext{\Etoc@currext}%
+         \csname tb@\@currext @after@hook\endcsname
+         \csname tocbasic@@after@hook\endcsname
+     }% end of after_toc
+}
+\let\etocscrbookstyle\etocscrartclstyle
+\let\etocscrreprtstyle\etocscrartclstyle
+\def\etocclasstocstyle{\etocarticlestyle}
+\newcommand*\etocmarkboth[1]{%
+    \@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}
+\newcommand*\etocmarkbothnouc[1]{\@mkboth{#1}{#1}}
+\newcommand\etoctocstyle[3][section]{\etocmulticolstyle[#2]%
+    {\csname #1\endcsname *{#3}}}
+\newcommand\etoctocstylewithmarks[4][section]{\etocmulticolstyle[#2]%
+    {\csname #1\endcsname *{#3\etocmarkboth{#4}}}}
+\newcommand\etoctocstylewithmarksnouc[4][section]{\etocmulticolstyle[#2]%
+    {\csname #1\endcsname *{#3\etocmarkbothnouc{#4}}}}
+\def\Etoc@redefetocstylesforchapters{%
+    \renewcommand\etoctocstylewithmarks[4][chapter]{%
+          \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3\etocmarkboth{##4}}}%
+    }
+    \renewcommand\etoctocstylewithmarksnouc[4][chapter]{%
+          \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3\etocmarkbothnouc{##4}}}%
+    }
+    \renewcommand\etoctocstyle[3][chapter]{%
+          \etocmulticolstyle[##2]{\csname ##1\endcsname *{##3}}
+    }
+}
+\@ifclassloaded{scrartcl}
+    {\renewcommand*\etocclasstocstyle{\etocscrartclstyle}}{}
+\@ifclassloaded{book}
+    {\renewcommand*\etocfontone{\normalfont\normalsize}
+     \renewcommand*\etocclasstocstyle{\etocbookstyle}
+     \Etoc@redefetocstylesforchapters}{}
+\@ifclassloaded{report}
+    {\renewcommand*\etocfontone{\normalfont\normalsize}
+     \renewcommand*\etocclasstocstyle{\etocreportstyle}
+     \Etoc@redefetocstylesforchapters}{}
+\@ifclassloaded{scrbook}
+    {\renewcommand*\etocfontone{\normalfont\normalsize}
+     \renewcommand*\etocclasstocstyle{\etocscrbookstyle}
+     \Etoc@redefetocstylesforchapters}{}
+\@ifclassloaded{scrreprt}
+    {\renewcommand*\etocfontone{\normalfont\normalsize}
+     \renewcommand*\etocclasstocstyle{\etocscrreprtstyle}
+     \Etoc@redefetocstylesforchapters}{}
+\@ifclassloaded{memoir}
+    {\renewcommand*\etocfontone{\normalfont\normalsize}
+     \renewcommand*\etocclasstocstyle{\etocmemoirstyle}
+     \Etoc@redefetocstylesforchapters}{}
+\def\etoctocloftstyle {%
+    \etocsettocstyle{%
+      \@cfttocstart
+      \par
+      \begingroup
+        \parindent\z@ \parskip\cftparskip
+        \@nameuse{@cftmake\Etoc@currext title}%
+        \ifEtoc@localtoc
+           \etoctocloftlocalperhapsaddtotoc\Etoc@currext
+        \else
+           \etocifisstarred {}{\ifEtoc@maintoctotoc\@cftdobibtoc\fi}%
+        \fi
+    }%
+    {%
+      \endgroup
+      \@cfttocfinish
+    }%
+}
+\def\etoctocloftlocalperhapsaddtotoc#1{%
+    \etocifisstarred
+      {}%
+      {\csname ifEtoc@local#1totoc\endcsname
+        \ifdefined\c@chapter\def\@tocextra{@section}\else\def\@tocextra{@subsection}\fi
+        \csname @cftdobib#1\endcsname
+       \fi
+      }%
+}
+\def\etoctocbibindstyle {%
+    \etocsettocstyle {%
+      \toc@start
+      \ifEtoc@localtoc
+          \@nameuse{etocclasslocal\Etoc@currext maketitle}%
+          \etocclasslocalperhapsaddtotoc\Etoc@currext
+      \else
+          \etoc@tocbibind@dotoctitle
+      \fi
+      }%
+    {\toc@finish}%
+}
+\def\etoc@tocbibind@dotoctitle {%
+       \if@bibchapter
+        \etocifisstarred
+          {\chapter*{\contentsname}\prw@mkboth{\contentsname} % id.
+          }%
+          {\ifEtoc@maintoctotoc
+             \toc@chapter{\contentsname} %<-space from original
+           \else
+             \chapter*{\contentsname}\prw@mkboth{\contentsname} % id.
+           \fi
+           }%
+       \else
+        \etocifisstarred
+          {\@nameuse{\@tocextra}*{\contentsname\prw@mkboth{\contentsname}} %<-space
+          }
+          {\ifEtoc@maintoctotoc
+             \toc@section{\@tocextra}{\contentsname} %<-space from original
+           \else
+             \@nameuse{\@tocextra}*{\contentsname\prw@mkboth{\contentsname}} % id.
+          \fi
+          }%
+       \fi
+}%
+\@ifclassloaded{memoir}
+{}
+{% memoir not loaded
+ \@ifpackageloaded{tocloft}
+    {\if@cftnctoc\else
+                 \ifEtoc@keeporiginaltoc
+                   \else
+                   \AtBeginDocument{\let\tableofcontents\etoctableofcontents}%
+                 \fi
+     \fi }
+    {\AtBeginDocument
+      {\@ifpackageloaded{tocloft}
+       {\if@cftnctoc\else
+         \PackageWarningNoLine {etoc}
+         {Package `tocloft' was loaded after `etoc'.\MessageBreak
+          To prevent it from overwriting \protect\tableofcontents, it will\MessageBreak
+          be tricked into believing to have been loaded with its\MessageBreak
+          option `titles'. \space But this will cause the `tocloft'\MessageBreak
+          customization of the titles of the main list of figures\MessageBreak
+          and list of tables to not apply either.\MessageBreak
+          You should load `tocloft' before `etoc'.}%
+        \AtEndDocument{\PackageWarning{etoc}
+                       {Please load `tocloft' before `etoc'!\@gobbletwo}}%
+        \fi
+        \@cftnctoctrue }%
+       {}%
+      }%
+     }%
+}
+\@ifclassloaded{memoir}
+{}
+{% memoir not loaded
+  \AtBeginDocument{%
+  \@ifpackageloaded{tocloft}
+   {%
+     \def\etocclasstocstyle{%
+       \etoctocloftstyle
+       \Etoc@classstyletrue
+     }%
+     \ifEtoc@etocstyle
+        \ifEtoc@classstyle
+          \etocclasstocstyle
+          \Etoc@etocstyletrue
+        \fi
+     \else
+        \ifEtoc@classstyle
+          \etocclasstocstyle
+        \fi
+     \fi
+   }%
+   {% no tocloft
+    \@ifpackageloaded {tocbibind}
+     {\if@dotoctoc
+        \def\etocclasstocstyle{%
+          \etoctocbibindstyle
+          \Etoc@classstyletrue
+         }%
+        \ifEtoc@etocstyle
+           \ifEtoc@classstyle
+             \etocclasstocstyle
+             \Etoc@etocstyletrue
+           \fi
+        \else
+           \ifEtoc@classstyle
+             \etocclasstocstyle
+           \fi
+        \fi
+        \ifEtoc@keeporiginaltoc
+        \else
+           \let\tableofcontents\etoctableofcontents
+        \fi
+     }%
+     {}%
+   }%
+   \@ifpackageloaded{tocbibind}
+   {% tocbibind, perhaps with tocloft
+      \if@dotoctoc
+                 \ifEtoc@keeporiginaltoc
+                   \else
+                   \let\tableofcontents\etoctableofcontents
+                 \fi
+        \etocsetup{maintoctotoc,localtoctotoc}%
+         \PackageInfo{etoc}{%
+            Setting (or re-setting) the options `maintoctotoc' and\MessageBreak
+            `localtoctotoc' to true as tocbibind was detected and\MessageBreak
+            found to be configured for `TOC to toc'.\MessageBreak
+            Reported at begin document}%
+      \fi
+      \if@dotoclof
+       \ifEtoc@lof
+        \etocsetup{localloftotoc}%
+        \PackageInfo{etoc}{%
+            Setting (or re-setting) `localloftotoc=true' as the\MessageBreak
+            package tocbibind was detected and is configured for\MessageBreak
+            `LOF to toc'. Reported at begin document}%
+       \fi
+      \fi
+      \if@dotoclot
+       \ifEtoc@lot
+        \etocsetup{locallottotoc}%
+        \PackageInfo{etoc}{%
+            Setting (or re-setting) `locallottotoc=true' as the\MessageBreak
+            package tocbibind was detected and is configured for\MessageBreak
+            `LOT to toc'. Reported at begin document}%
+       \fi
+      \fi
+   }% end of tocbibind branch
+   {}%
+  }% end of at begin document
+}% end of not with memoir branch
+\def\Etoc@addtocontents #1#2{%
+    \addtocontents {toc}{%
+      \protect\contentsline{#1}{#2}{\thepage}{\ifEtoc@hyperref\@currentHref\fi}%
+      \ifdefined\protected@file@percent\protected@file@percent\fi
+    }%
+}
+\def\Etoc@addcontentsline@ #1#2#3{%
+    \@namedef{toclevel@#1}{#3}\addcontentsline {toc}{#1}{#2}%
+}
+\DeclareRobustCommand*{\etoctoccontentsline}
+    {\@ifstar{\Etoc@addcontentsline@}{\Etoc@addtocontents}}
+\def\Etoc@addtocontents@immediately#1#2{%
+    \begingroup
+       \let\Etoc@originalwrite\write
+       \def\write{\immediate\Etoc@originalwrite}%
+       \Etoc@addtocontents{#1}{#2}%
+    \endgroup
+}
+\def\Etoc@addcontentsline@@immediately#1#2#3{%
+    \begingroup
+       \let\Etoc@originalwrite\write
+       \def\write{\immediate\Etoc@originalwrite}%
+       \Etoc@addcontentsline@{#1}{#2}{#3}%
+    \endgoroup
+}
+\DeclareRobustCommand*{\etocimmediatetoccontentsline}
+    {\@ifstar{\Etoc@addcontentsline@@immediately}{\Etoc@addtocontents@immediately}}
+\def\Etoc@storetocdepth   {\xdef\Etoc@savedtocdepth{\number\c@tocdepth}}
+\def\Etoc@restoretocdepth {\global\c@tocdepth\Etoc@savedtocdepth\relax}
+\def\etocobeytoctocdepth {\def\etoc@settocdepth
+                          {\afterassignment\Etoc@@nottoodeep \global\c@tocdepth}}
+\def\Etoc@@nottoodeep {\ifnum\Etoc@savedtocdepth<\c@tocdepth
+                          \global\c@tocdepth\Etoc@savedtocdepth\relax\fi }
+\def\etocignoretoctocdepth {\let\etoc@settocdepth\@gobble }
+\def\etocsettocdepth   {\futurelet\Etoc@nexttoken\Etoc@set@tocdepth }
+\def\Etoc@set@tocdepth {\ifx\Etoc@nexttoken\bgroup
+                            \expandafter\Etoc@set@tocdepth@
+                       \else\expandafter\Etoc@set@toctocdepth
+                       \fi }
+\def\Etoc@set@tocdepth@ #1{\@ifundefined {Etoc@#1@@}
+      {\PackageWarning{etoc}
+          {Unknown sectioning unit #1, \protect\etocsettocdepth\space ignored}}
+      {\global\c@tocdepth\csname Etoc@#1@@\endcsname}%
+}
+\def\Etoc@set@toctocdepth  #1#{\Etoc@set@toctocdepth@ }
+\def\Etoc@set@toctocdepth@ #1{%
+  \@ifundefined{Etoc@#1@@}%
+   {\PackageWarning{etoc}
+        {Unknown sectioning depth #1, \protect\etocsettocdepth.toc ignored}}%
+   {\addtocontents {toc}
+   {\protect\etoc@settocdepth\expandafter\protect\csname Etoc@#1@@\endcsname}}%
+}
+\def\etocimmediatesettocdepth #1#{\Etoc@set@toctocdepth@immediately}
+\def\Etoc@set@toctocdepth@immediately #1{%
+  \@ifundefined{Etoc@#1@@}%
+   {\PackageWarning{etoc}
+        {Unknown sectioning depth #1, \protect\etocimmediatesettocdepth.toc ignored}}%
+   {\begingroup
+      \let\Etoc@originalwrite\write
+      \def\write{\immediate\Etoc@originalwrite}%
+      \addtocontents {toc}
+      {\protect\etoc@settocdepth\expandafter\protect
+       \csname Etoc@#1@@\endcsname}%
+    \endgroup
+   }%
+}
+\def\etocdepthtag   #1#{\Etoc@depthtag }
+\def\Etoc@depthtag  #1{\addtocontents {toc}{\protect\etoc@depthtag {#1}}}
+\def\etocimmediatedepthtag   #1#{\Etoc@depthtag@immediately }
+\def\Etoc@depthtag@immediately #1{%
+  \begingroup
+    \let\Etoc@originalwrite\write
+    \def\write{\immediate\Etoc@originalwrite}%
+    \addtocontents {toc}{\protect\etoc@depthtag {#1}}%
+  \endgroup
+}
+\def\etocignoredepthtags {\let\etoc@depthtag \@gobble }
+\def\etocobeydepthtags   {\let\etoc@depthtag \Etoc@depthtag@ }
+\def\Etoc@depthtag@ #1{\@ifundefined{Etoc@depthof@#1}%
+       {}% ignore in silence if tag has no associated depth
+       {\afterassignment\Etoc@@nottoodeep
+                 \global\c@tocdepth\csname Etoc@depthof@#1\endcsname}%
+}
+\def\etocsettagdepth #1#2{\@ifundefined{Etoc@#2@@}%
+       {\PackageWarning{etoc}
+         {Unknown sectioning depth #2, \protect\etocsettagdepth\space ignored}}%
+       {\@namedef{Etoc@depthof@#1}{\@nameuse{Etoc@#2@@}}}%
+}
+\def\Etoc@tocvsec@err #1{\PackageError {etoc}
+        {The command \protect#1\space is incompatible with `etoc'}
+        {Use \protect\etocsettocdepth.toc as replacement}%
+}%
+\AtBeginDocument {%
+  \@ifclassloaded{memoir}
+    {\PackageInfo {etoc}
+     {Regarding `memoir' class command \protect\settocdepth, consider\MessageBreak
+     \protect\etocsettocdepth.toc as a drop-in replacement with more\MessageBreak
+     capabilities (see `etoc' manual). \space
+     Also, \protect\etocsettocdepth\MessageBreak
+     and \protect\etocsetnexttocdepth\space should be used in place of\MessageBreak
+     `memoir' command \protect\maxtocdepth\@gobble}%
+    }%
+    {\@ifpackageloaded {tocvsec2}{%
+      \def\maxtocdepth  #1{\Etoc@tocvsec@err \maxtocdepth   }%
+      \def\settocdepth  #1{\Etoc@tocvsec@err \settocdepth   }%
+      \def\resettocdepth  {\@ifstar {\Etoc@tocvsec@err \resettocdepth }%
+                                    {\Etoc@tocvsec@err \resettocdepth }%
+                          }%
+      \def\save@tocdepth #1#2#3{}%
+      \let\reset@tocdepth\relax
+      \let\remax@tocdepth\relax
+      \let\tableofcontents\etoctableofcontents
+      \PackageWarningNoLine {etoc}
+      {Package `tocvsec2' detected and its modification of\MessageBreak
+       \protect\tableofcontents\space reverted. \space Use
+       \protect\etocsettocdepth.toc\MessageBreak as a replacement
+       for `tocvsec2' toc-related commands}%
+     }% tocvsec2 loaded
+     {}% tocvsec2 not loaded
+    }%
+}%
+\def\invisibletableofcontents {\etocsetnexttocdepth {-3}\tableofcontents }%
+\def\invisiblelocaltableofcontents
+                         {\etocsetnexttocdepth {-3}\localtableofcontents }%
+\def\etocsetnexttocdepth #1{%
+    \@ifundefined{Etoc@#1@@}
+     {\PackageWarning{etoc}
+       {Unknown sectioning unit #1, \protect\etocsetnextocdepth\space ignored}}
+     {\Etoc@setnexttocdepth{\csname Etoc@#1@@\endcsname}}%
+}%
+\def\Etoc@setnexttocdepth#1{%
+    \def\Etoc@tocdepthset{%
+        \Etoc@tocdepthreset
+        \edef\Etoc@tocdepthreset {%
+               \global\c@tocdepth\the\c@tocdepth\space
+               \global\let\noexpand\Etoc@tocdepthreset\noexpand\@empty
+         }%
+        \global\c@tocdepth#1%
+        \global\let\Etoc@tocdepthset\@empty
+    }%
+}%
+\let\Etoc@tocdepthreset\@empty
+\let\Etoc@tocdepthset  \@empty
+\def\etocsetlocaltop #1#{\Etoc@set@localtop}%
+\def\Etoc@set@localtop #1{%
+  \@ifundefined{Etoc@#1@@}%
+   {\PackageWarning{etoc}
+        {Unknown sectioning depth #1, \protect\etocsetlocaltop.toc ignored}}%
+   {\addtocontents {toc}
+   {\protect\etoc@setlocaltop\expandafter\protect\csname Etoc@#1@@\endcsname}}%
+}%
+\def\etocimmediatesetlocaltop #1#{\Etoc@set@localtop@immediately}%
+\def\Etoc@set@localtop@immediately #1{%
+  \@ifundefined{Etoc@#1@@}%
+   {\PackageWarning{etoc}
+        {Unknown sectioning depth #1, \protect\etocimmediatesetlocaltop.toc ignored}}%
+   {\begingroup
+       \let\Etoc@originalwrite\write
+       \def\write{\immediate\Etoc@originalwrite}%
+       \addtocontents {toc}
+           {\protect\etoc@setlocaltop\expandafter\protect
+                                     \csname Etoc@#1@@\endcsname}%
+    \endgroup
+   }%
+}%
+\def\etoc@setlocaltop #1{%
+  \ifnum#1=\Etoc@maxlevel
+   \Etoc@skipthisonetrue
+  \else
+   \Etoc@skipthisonefalse
+   \global\let\Etoc@level #1%
+   \global\let\Etoc@virtualtop #1%
+   \ifEtoc@localtoc
+    \ifEtoc@stoptoc
+     \Etoc@skipthisonetrue
+    \else
+     \ifEtoc@notactive
+      \Etoc@skipthisonetrue
+     \else
+      \unless\ifnum\Etoc@level>\etoclocaltop
+       \Etoc@skipthisonetrue
+       \global\Etoc@stoptoctrue
+      \fi
+     \fi
+    \fi
+   \fi
+  \fi
+  \let\Etoc@next\@empty
+  \ifEtoc@skipthisone
+  \else
+   \ifnum\Etoc@level>\c@tocdepth
+   \else
+    \ifEtoc@standardlines
+    \else
+     \let\Etoc@next\Etoc@setlocaltop@doendsandbegin
+    \fi
+   \fi
+  \fi
+  \Etoc@next
+}%
+\def\Etoc@setlocaltop@doendsandbegin{%
+    \Etoc@doendsandbegin
+    \global\Etoc@skipprefixfalse
+}
+\addtocontents {toc}{\protect\@ifundefined{etoctocstyle}%
+           {\let\protect\etoc@startlocaltoc\protect\@gobble
+            \let\protect\etoc@settocdepth\protect\@gobble
+            \let\protect\etoc@depthtag\protect\@gobble
+            \let\protect\etoc@setlocaltop\protect\@gobble}{}}%
+\def\etocstandardlines {\Etoc@standardlinestrue}
+\def\etoctoclines      {\Etoc@standardlinesfalse}
+\etocdefaultlines
+\etocstandardlines
+\def\etocstandarddisplaystyle{%
+    \PackageWarningNoLine{etoc}{%
+      \string\etocstandarddisplaystyle \on@line\MessageBreak
+      is deprecated. \space Please use \string\etocclasstocstyle}%
+}
+\expandafter\def\expandafter\etocclasstocstyle\expandafter{%
+    \etocclasstocstyle
+    \Etoc@classstyletrue
+}
+\def\etocetoclocaltocstyle{\Etoc@etocstyletrue}
+\def\etocusertocstyle{\Etoc@etocstylefalse}
+\etocclasstocstyle
+\etocetoclocaltocstyle
+\etocobeytoctocdepth
+\etocobeydepthtags
+\let\etocbeforetitlehook   \@empty
+\let\etocaftertitlehook    \@empty
+\let\etocaftercontentshook \@empty
+\let\etocaftertochook      \@empty
+\def\etockeeporiginaltableofcontents
+   {\Etoc@keeporiginaltoctrue\let\tableofcontents\etocoriginaltableofcontents}%
+\endinput
+%%
+%% End of file `etoc.sty'.
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8cpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8cpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..ddf35380dc507720cae5d24da57df506b9fdf7be
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8cpp.tex
@@ -0,0 +1,12 @@
+\doxysection{execute\+\_\+frame.\+cpp File Reference}
+\hypertarget{execute__frame_8cpp}{}\label{execute__frame_8cpp}\index{execute\_frame.cpp@{execute\_frame.cpp}}
+{\ttfamily \#include "{}learn\+\_\+environment/execute\+\_\+frame.\+hpp"{}}\newline
+{\ttfamily \#include $<$QDebug$>$}\newline
+{\ttfamily \#include $<$QSize$>$}\newline
+Include dependency graph for execute\+\_\+frame.\+cpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{execute__frame_8cpp__incl}
+\end{center}
+\end{figure}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..1c936dfac6a3dc72bc49fa3ab7adc65f5f136859
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8cpp__incl.md5
@@ -0,0 +1 @@
+6a9435e7fa514aea8f3fd03c4aa554d5
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8cpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8cpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..1aeae6efcf794923484cbbed4891c459c2da865c
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8cpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..2facfad5e9cb5899440d4ff6211fd2a352dfd519
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp.tex
@@ -0,0 +1,25 @@
+\doxysection{execute\+\_\+frame.\+hpp File Reference}
+\hypertarget{execute__frame_8hpp}{}\label{execute__frame_8hpp}\index{execute\_frame.hpp@{execute\_frame.hpp}}
+{\ttfamily \#include $<$QFrame$>$}\newline
+{\ttfamily \#include $<$QLabel$>$}\newline
+{\ttfamily \#include $<$QMovie$>$}\newline
+{\ttfamily \#include $<$QHBox\+Layout$>$}\newline
+Include dependency graph for execute\+\_\+frame.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{execute__frame_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{execute__frame_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+class \mbox{\hyperlink{classExecuteFrame}{Execute\+Frame}}
+\begin{DoxyCompactList}\small\item\em A custom \doxylink{classQFrame}{QFrame} that displays an image and text. For logging and task execution. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..9062551a15dea285a00f6c21d8d641d284f828d1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+095c1f1d8217b927bea2004b40ed76f9
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..230abd9b889d405e936bf56db328a7c0fe51e5ba
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..decd1857b608b9eacae4b7bd9fe2107db53fb5b0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp__incl.md5
@@ -0,0 +1 @@
+79b165b8d16139f4c82f16bfe704897e
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d9f79cf21a32e8d6be58f8c43bb0c2bea7f51b64
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..9199645ee6b11d47245be550dcfa040d0e43a286
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/execute__frame_8hpp_source.tex
@@ -0,0 +1,39 @@
+\doxysection{execute\+\_\+frame.\+hpp}
+\hypertarget{execute__frame_8hpp_source}{}\label{execute__frame_8hpp_source}\index{execute\_frame.hpp@{execute\_frame.hpp}}
+\mbox{\hyperlink{execute__frame_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ EXECUTE\_FRAME\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ EXECUTE\_FRAME\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ <QFrame>}}
+\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ <QLabel>}}
+\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ <QMovie>}}
+\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ <QHBoxLayout>}}
+\DoxyCodeLine{00008\ }
+\DoxyCodeLine{00013\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classExecuteFrame}{ExecuteFrame}}\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classQFrame}{QFrame}}}
+\DoxyCodeLine{00014\ \{}
+\DoxyCodeLine{00015\ \ \ \ \ Q\_OBJECT}
+\DoxyCodeLine{00016\ }
+\DoxyCodeLine{00017\ \textcolor{keyword}{public}:}
+\DoxyCodeLine{00022\ \ \ \ \ \textcolor{keyword}{explicit}\ \mbox{\hyperlink{classExecuteFrame_a9a3ca41869860aee87ee8198fd629f8b}{ExecuteFrame}}(\mbox{\hyperlink{classQWidget}{QWidget}}\ *parent\ =\ \textcolor{keyword}{nullptr});}
+\DoxyCodeLine{00023\ }
+\DoxyCodeLine{00027\ \ \ \ \ \mbox{\hyperlink{classExecuteFrame_a0f49e809cf1c14026958bf26d3cf399b}{\string~ExecuteFrame}}();}
+\DoxyCodeLine{00028\ }
+\DoxyCodeLine{00033\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classExecuteFrame_a796e8a79e0bc372c47421617bc7c9100}{setImage}}(\textcolor{keyword}{const}\ QString\ \&path);}
+\DoxyCodeLine{00034\ }
+\DoxyCodeLine{00039\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classExecuteFrame_a659f12e489dcddf89818a116c1e7f742}{setText}}(\textcolor{keyword}{const}\ QString\ \&text);}
+\DoxyCodeLine{00040\ }
+\DoxyCodeLine{00045\ \ \ \ \ QString\ \mbox{\hyperlink{classExecuteFrame_a3ddc917ee39ffc1c54c491aab9ba7404}{getText}}();}
+\DoxyCodeLine{00046\ }
+\DoxyCodeLine{00047\ \textcolor{keyword}{private}:}
+\DoxyCodeLine{00048\ \ \ \ \ QLabel\ *imageLabel;\ }
+\DoxyCodeLine{00049\ \ \ \ \ QLabel\ *textLabel;\ }
+\DoxyCodeLine{00050\ \ \ \ \ QMovie\ *currentMovie;\ }
+\DoxyCodeLine{00051\ \ \ \ \ QHBoxLayout\ *hLayout;\ }
+\DoxyCodeLine{00052\ }
+\DoxyCodeLine{00056\ \ \ \ \ \textcolor{keywordtype}{void}\ initializeUI();}
+\DoxyCodeLine{00057\ \};}
+\DoxyCodeLine{00058\ }
+\DoxyCodeLine{00059\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ EXECUTE\_FRAME\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/files.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/files.tex
new file mode 100644
index 0000000000000000000000000000000000000000..8101e4d11fb804ca5f370c87da1fe65aceafad52
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/files.tex
@@ -0,0 +1,29 @@
+\doxysection{File List}
+Here is a list of all files with brief descriptions\+:\begin{DoxyCompactList}
+\item\contentsline{section}{\mbox{\hyperlink{custom__list__widget_8hpp}{custom\+\_\+list\+\_\+widget.\+hpp}} }{\pageref{custom__list__widget_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{execute__frame_8hpp}{execute\+\_\+frame.\+hpp}} }{\pageref{execute__frame_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{folder__structure__constants_8hpp}{folder\+\_\+structure\+\_\+constants.\+hpp}} }{\pageref{folder__structure__constants_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{learn__environment_8hpp}{learn\+\_\+environment.\+hpp}} }{\pageref{learn__environment_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{notebook__converter_8hpp}{notebook\+\_\+converter.\+hpp}} }{\pageref{notebook__converter_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{process__runner_8hpp}{process\+\_\+runner.\+hpp}} }{\pageref{process__runner_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{script__worker_8hpp}{script\+\_\+worker.\+hpp}} }{\pageref{script__worker_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{sidebar_8hpp}{sidebar.\+hpp}} }{\pageref{sidebar_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{subtask__item_8hpp}{subtask\+\_\+item.\+hpp}} }{\pageref{subtask__item_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{task_8hpp}{task.\+hpp}} }{\pageref{task_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{task__executor_8hpp}{task\+\_\+executor.\+hpp}} }{\pageref{task__executor_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{task__manager_8hpp}{task\+\_\+manager.\+hpp}} }{\pageref{task__manager_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{task__parser_8hpp}{task\+\_\+parser.\+hpp}} }{\pageref{task__parser_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{task__ui_8hpp}{task\+\_\+ui.\+hpp}} }{\pageref{task__ui_8hpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{custom__list__widget_8cpp}{custom\+\_\+list\+\_\+widget.\+cpp}} }{\pageref{custom__list__widget_8cpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{execute__frame_8cpp}{execute\+\_\+frame.\+cpp}} }{\pageref{execute__frame_8cpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{learn__environment_8cpp}{learn\+\_\+environment.\+cpp}} }{\pageref{learn__environment_8cpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{notebook__converter_8cpp}{notebook\+\_\+converter.\+cpp}} }{\pageref{notebook__converter_8cpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{process__runner_8cpp}{process\+\_\+runner.\+cpp}} }{\pageref{process__runner_8cpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{script__worker_8cpp}{script\+\_\+worker.\+cpp}} }{\pageref{script__worker_8cpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{sidebar_8cpp}{sidebar.\+cpp}} }{\pageref{sidebar_8cpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{subtask__item_8cpp}{subtask\+\_\+item.\+cpp}} }{\pageref{subtask__item_8cpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{task__executor_8cpp}{task\+\_\+executor.\+cpp}} }{\pageref{task__executor_8cpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{task__manager_8cpp}{task\+\_\+manager.\+cpp}} }{\pageref{task__manager_8cpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{task__parser_8cpp}{task\+\_\+parser.\+cpp}} }{\pageref{task__parser_8cpp}}{}
+\item\contentsline{section}{\mbox{\hyperlink{task__ui_8cpp}{task\+\_\+ui.\+cpp}} }{\pageref{task__ui_8cpp}}{}
+\end{DoxyCompactList}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..5b1fefa26ecfd332ff5a9cb01c2547c0ad7e0091
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp.tex
@@ -0,0 +1,51 @@
+\doxysection{folder\+\_\+structure\+\_\+constants.\+hpp File Reference}
+\hypertarget{folder__structure__constants_8hpp}{}\label{folder__structure__constants_8hpp}\index{folder\_structure\_constants.hpp@{folder\_structure\_constants.hpp}}
+{\ttfamily \#include $<$QString$>$}\newline
+{\ttfamily \#include $<$ros/package.\+h$>$}\newline
+{\ttfamily \#include $<$ros/ros.\+h$>$}\newline
+{\ttfamily \#include $<$QDebug$>$}\newline
+Include dependency graph for folder\+\_\+structure\+\_\+constants.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{folder__structure__constants_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{folder__structure__constants_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Namespaces}
+\begin{DoxyCompactItemize}
+\item 
+namespace \mbox{\hyperlink{namespaceFolderStructureConstants}{Folder\+Structure\+Constants}}
+\begin{DoxyCompactList}\small\item\em Contains constants related to the folder structure of the learn\+\_\+environment package. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Functions}
+\begin{DoxyCompactItemize}
+\item 
+QString \mbox{\hyperlink{namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720}{Folder\+Structure\+Constants\+::get\+Package\+Path}} ()
+\begin{DoxyCompactList}\small\item\em Retrieves the path of the package. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Variables}
+\begin{DoxyCompactItemize}
+\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_a82483c09d34f6dbea6451b921b231c5a}{Folder\+Structure\+Constants\+::\+CONVERTED\+\_\+\+SCRIPT\+\_\+\+PATH}} = "{}/converter/converted.\+py"{}
+\begin{DoxyCompactList}\small\item\em Path to the converted script. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_a97e2abd38a09653e626ba46a5e5e10bd}{Folder\+Structure\+Constants\+::\+RESET\+\_\+\+ROBOT\+\_\+\+SCRIPT\+\_\+\+PATH}} = "{}/task\+\_\+pool/reset\+\_\+robot.\+py"{}
+\begin{DoxyCompactList}\small\item\em Path to the reset robot script. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_a84dc4e92b3d05fcef00c9abb99f9f9da}{Folder\+Structure\+Constants\+::\+TASK\+\_\+\+DEFINITIONS\+\_\+\+PATH}} = "{}\+:/task\+\_\+pool/task\+\_\+definitions.\+json"{}
+\begin{DoxyCompactList}\small\item\em Path to the task definitions json. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_adc8fa9eae998a60723424421756bd65b}{Folder\+Structure\+Constants\+::\+TOPIC\+\_\+\+DEFINITIONS\+\_\+\+PATH}} = "{}\+:/task\+\_\+pool/topic\+\_\+definitions.\+json"{}
+\begin{DoxyCompactList}\small\item\em Path to the topic definitions json. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_a4a34d956c5883529b64e6bb183d768a7}{Folder\+Structure\+Constants\+::\+DIFFICULTY\+\_\+\+LEVELS\+\_\+\+DEFINITION\+\_\+\+PATH}} = "{}\+:/task\+\_\+pool/difficulty\+\_\+levels.\+json"{}
+\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_ae963e238a7326dd80a2401eae27c252a}{Folder\+Structure\+Constants\+::\+SOLUTION\+\_\+\+SCRIPTS\+\_\+\+SOURCE\+\_\+\+PATH}} = "{}/task\+\_\+pool/solution\+\_\+scripts"{}
+\begin{DoxyCompactList}\small\item\em Path to the solution scripts source directory. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_afbae3ede611451504507436474ae482e}{Folder\+Structure\+Constants\+::\+EVALUATION\+\_\+\+SCRIPTS\+\_\+\+SOURCE\+\_\+\+PATH}} = "{}/task\+\_\+pool/evaluation\+\_\+scripts"{}
+\begin{DoxyCompactList}\small\item\em Path to the evaluation scripts source directory. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_ac7bdb4609b31965b63ac7d3ce2b197c3}{Folder\+Structure\+Constants\+::\+USER\+\_\+\+WORKSPACE}} = "{}/tasks"{}
+\begin{DoxyCompactList}\small\item\em Path to the user workspace directory. Adjust it in devconatiner.\+json if changed. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_aa9f54b725067dc395f26c6608161dae9}{Folder\+Structure\+Constants\+::\+PACKAGE\+\_\+\+NAME}} = "{}learn\+\_\+environment"{}
+\begin{DoxyCompactList}\small\item\em Name of the package. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..c6c9084ebc62f812c7bef573c55189ad98e24f51
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+89f4cdc87ad8c92d2cc36f3a788e6c93
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d5c4390661a5fd9459d95b6c9392c0b8621eea5e
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..ac08f7008fd4cbcc82f9d8ef27e1d91d277a01f1
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp__incl.md5
@@ -0,0 +1 @@
+f7fce41e1d97de7ead85bc47c33888fa
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..69466ad1b394d274a9b5eaa0b9411ec4f70c21c5
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..57ba2c32fea3dcd993bcd084dfd92a08af0bac68
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/folder__structure__constants_8hpp_source.tex
@@ -0,0 +1,44 @@
+\doxysection{folder\+\_\+structure\+\_\+constants.\+hpp}
+\hypertarget{folder__structure__constants_8hpp_source}{}\label{folder__structure__constants_8hpp_source}\index{folder\_structure\_constants.hpp@{folder\_structure\_constants.hpp}}
+\mbox{\hyperlink{folder__structure__constants_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ FOLDER\_STRUCTURE\_CONSTANTS\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ FOLDER\_STRUCTURE\_CONSTANTS\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ <QString>}}
+\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ <ros/package.h>}}
+\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ <ros/ros.h>}}
+\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ <QDebug>}}
+\DoxyCodeLine{00008\ }
+\DoxyCodeLine{00016\ \textcolor{keyword}{namespace\ }\mbox{\hyperlink{namespaceFolderStructureConstants}{FolderStructureConstants}}\ \{}
+\DoxyCodeLine{00021\ \ \ \ \ \textcolor{keyword}{inline}\ \textcolor{keyword}{const}\ QString\ \mbox{\hyperlink{namespaceFolderStructureConstants_a82483c09d34f6dbea6451b921b231c5a}{CONVERTED\_SCRIPT\_PATH}}\ =\ \textcolor{stringliteral}{"{}/converter/converted.py"{}};}
+\DoxyCodeLine{00022\ }
+\DoxyCodeLine{00027\ \ \ \ \ \textcolor{keyword}{inline}\ \textcolor{keyword}{const}\ QString\ \mbox{\hyperlink{namespaceFolderStructureConstants_a97e2abd38a09653e626ba46a5e5e10bd}{RESET\_ROBOT\_SCRIPT\_PATH}}\ =\ \textcolor{stringliteral}{"{}/task\_pool/reset\_robot.py"{}};}
+\DoxyCodeLine{00028\ }
+\DoxyCodeLine{00033\ \ \ \ \ \textcolor{keyword}{inline}\ \textcolor{keyword}{const}\ QString\ \mbox{\hyperlink{namespaceFolderStructureConstants_a84dc4e92b3d05fcef00c9abb99f9f9da}{TASK\_DEFINITIONS\_PATH}}\ =\ \textcolor{stringliteral}{"{}:/task\_pool/task\_definitions.json"{}};}
+\DoxyCodeLine{00034\ }
+\DoxyCodeLine{00039\ \ \ \ \ \textcolor{keyword}{inline}\ \textcolor{keyword}{const}\ QString\ \mbox{\hyperlink{namespaceFolderStructureConstants_adc8fa9eae998a60723424421756bd65b}{TOPIC\_DEFINITIONS\_PATH}}\ =\ \textcolor{stringliteral}{"{}:/task\_pool/topic\_definitions.json"{}};}
+\DoxyCodeLine{00040\ }
+\DoxyCodeLine{00045\ \ \ \ \ \textcolor{keyword}{inline}\ \textcolor{keyword}{const}\ QString\ \mbox{\hyperlink{namespaceFolderStructureConstants_a4a34d956c5883529b64e6bb183d768a7}{DIFFICULTY\_LEVELS\_DEFINITION\_PATH}}\ =\ \textcolor{stringliteral}{"{}:/task\_pool/difficulty\_levels.json"{}};}
+\DoxyCodeLine{00046\ }
+\DoxyCodeLine{00051\ \ \ \ \ \textcolor{keyword}{inline}\ \textcolor{keyword}{const}\ QString\ \mbox{\hyperlink{namespaceFolderStructureConstants_ae963e238a7326dd80a2401eae27c252a}{SOLUTION\_SCRIPTS\_SOURCE\_PATH}}\ =\ \textcolor{stringliteral}{"{}/task\_pool/solution\_scripts"{}};}
+\DoxyCodeLine{00052\ }
+\DoxyCodeLine{00057\ \ \ \ \ \textcolor{keyword}{inline}\ \textcolor{keyword}{const}\ QString\ \mbox{\hyperlink{namespaceFolderStructureConstants_afbae3ede611451504507436474ae482e}{EVALUATION\_SCRIPTS\_SOURCE\_PATH}}\ =\ \textcolor{stringliteral}{"{}/task\_pool/evaluation\_scripts"{}};}
+\DoxyCodeLine{00058\ }
+\DoxyCodeLine{00063\ \ \ \ \ \textcolor{keyword}{inline}\ \textcolor{keyword}{const}\ QString\ \mbox{\hyperlink{namespaceFolderStructureConstants_ac7bdb4609b31965b63ac7d3ce2b197c3}{USER\_WORKSPACE}}\ =\ \textcolor{stringliteral}{"{}/tasks"{}};}
+\DoxyCodeLine{00064\ }
+\DoxyCodeLine{00069\ \ \ \ \ \textcolor{keyword}{inline}\ \textcolor{keyword}{const}\ QString\ \mbox{\hyperlink{namespaceFolderStructureConstants_aa9f54b725067dc395f26c6608161dae9}{PACKAGE\_NAME}}\ =\ \textcolor{stringliteral}{"{}learn\_environment"{}};}
+\DoxyCodeLine{00070\ }
+\DoxyCodeLine{00080\ \ \ \ \ \textcolor{keyword}{inline}\ QString\ \mbox{\hyperlink{namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720}{getPackagePath}}()\ \{}
+\DoxyCodeLine{00081\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{try}\ \{}
+\DoxyCodeLine{00082\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ QString::fromStdString(ros::package::getPath(\mbox{\hyperlink{namespaceFolderStructureConstants_aa9f54b725067dc395f26c6608161dae9}{PACKAGE\_NAME}}.toStdString()));}
+\DoxyCodeLine{00083\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{catch}\ (...)\ \{}
+\DoxyCodeLine{00084\ \ \ \ \ \ \ \ \ \ \ \ \ qCritical()\ <<\ \textcolor{stringliteral}{"{}An\ error\ occurred\ while\ retrieving\ the\ package\ path\ for"{}}\ <<\ \mbox{\hyperlink{namespaceFolderStructureConstants_aa9f54b725067dc395f26c6608161dae9}{PACKAGE\_NAME}};}
+\DoxyCodeLine{00085\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ QString();}
+\DoxyCodeLine{00086\ \ \ \ \ \ \ \ \ \}}
+\DoxyCodeLine{00087\ \ \ \ \ \}}
+\DoxyCodeLine{00088\ \}}
+\DoxyCodeLine{00089\ }
+\DoxyCodeLine{00090\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ FOLDER\_STRUCTURE\_CONSTANTS\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/hierarchy.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/hierarchy.tex
new file mode 100644
index 0000000000000000000000000000000000000000..4af0046aa05f7029ade64349115714323a68481a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/hierarchy.tex
@@ -0,0 +1,31 @@
+\doxysection{Class Hierarchy}
+This inheritance list is sorted roughly, but not completely, alphabetically\+:\begin{DoxyCompactList}
+\item rviz\+::Panel\begin{DoxyCompactList}
+\item \contentsline{section}{Learn\+Environment}{\pageref{classLearnEnvironment}}{}
+\end{DoxyCompactList}
+\item \contentsline{section}{QFrame}{\pageref{classQFrame}}{}
+\begin{DoxyCompactList}
+\item \contentsline{section}{Execute\+Frame}{\pageref{classExecuteFrame}}{}
+\end{DoxyCompactList}
+\item \contentsline{section}{QList\+Widget}{\pageref{classQListWidget}}{}
+\begin{DoxyCompactList}
+\item \contentsline{section}{Custom\+List\+Widget}{\pageref{classCustomListWidget}}{}
+\end{DoxyCompactList}
+\item \contentsline{section}{QObject}{\pageref{classQObject}}{}
+\begin{DoxyCompactList}
+\item \contentsline{section}{Notebook\+Converter}{\pageref{classNotebookConverter}}{}
+\item \contentsline{section}{Process\+Runner}{\pageref{classProcessRunner}}{}
+\item \contentsline{section}{Script\+Worker}{\pageref{classScriptWorker}}{}
+\item \contentsline{section}{Task\+Executor}{\pageref{classTaskExecutor}}{}
+\item \contentsline{section}{Task\+Manager}{\pageref{classTaskManager}}{}
+\end{DoxyCompactList}
+\item \contentsline{section}{QWidget}{\pageref{classQWidget}}{}
+\begin{DoxyCompactList}
+\item \contentsline{section}{Sidebar}{\pageref{classSidebar}}{}
+\item \contentsline{section}{Subtask\+Item}{\pageref{classSubtaskItem}}{}
+\item \contentsline{section}{Task\+UI}{\pageref{classTaskUI}}{}
+\end{DoxyCompactList}
+\item \contentsline{section}{Subtask}{\pageref{structSubtask}}{}
+\item \contentsline{section}{Task}{\pageref{structTask}}{}
+\item \contentsline{section}{Task\+Parser}{\pageref{classTaskParser}}{}
+\end{DoxyCompactList}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8cpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8cpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..243212c502a3770289bc6575499c97f4a709461c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8cpp.tex
@@ -0,0 +1,14 @@
+\doxysection{learn\+\_\+environment.\+cpp File Reference}
+\hypertarget{learn__environment_8cpp}{}\label{learn__environment_8cpp}\index{learn\_environment.cpp@{learn\_environment.cpp}}
+{\ttfamily \#include "{}learn\+\_\+environment/learn\+\_\+environment.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/task\+\_\+manager.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/task\+\_\+ui.\+hpp"{}}\newline
+{\ttfamily \#include $<$pluginlib/class\+\_\+list\+\_\+macros.\+hpp$>$}\newline
+{\ttfamily \#include $<$QMain\+Window$>$}\newline
+Include dependency graph for learn\+\_\+environment.\+cpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{learn__environment_8cpp__incl}
+\end{center}
+\end{figure}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..ba101bc5d1a6edabdcade8266f12a229160c3d9f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8cpp__incl.md5
@@ -0,0 +1 @@
+c282d28dcd72bd79c060fa00c90b3705
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8cpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8cpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..211714dd48f2ee3880c0fdc3f57100560e7227c7
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8cpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..9a02ff6447e2e5920309323869bea0844f6b4f73
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp.tex
@@ -0,0 +1,35 @@
+\doxysection{learn\+\_\+environment.\+hpp File Reference}
+\hypertarget{learn__environment_8hpp}{}\label{learn__environment_8hpp}\index{learn\_environment.hpp@{learn\_environment.hpp}}
+{\ttfamily \#include $<$rviz/panel.\+h$>$}\newline
+{\ttfamily \#include $<$ui\+\_\+learn\+\_\+environment.\+h$>$}\newline
+{\ttfamily \#include "{}task\+\_\+manager.\+hpp"{}}\newline
+{\ttfamily \#include "{}task\+\_\+ui.\+hpp"{}}\newline
+{\ttfamily \#include "{}notebook\+\_\+converter.\+hpp"{}}\newline
+{\ttfamily \#include $<$QWidget$>$}\newline
+{\ttfamily \#include $<$QObject$>$}\newline
+{\ttfamily \#include $<$QProcess$>$}\newline
+{\ttfamily \#include $<$QThread$>$}\newline
+Include dependency graph for learn\+\_\+environment.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{learn__environment_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=194pt]{learn__environment_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+class \mbox{\hyperlink{classLearnEnvironment}{Learn\+Environment}}
+\begin{DoxyCompactList}\small\item\em A custom RViz panel for managing the learning environment. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Namespaces}
+\begin{DoxyCompactItemize}
+\item 
+namespace \mbox{\hyperlink{namespaceUi}{Ui}}
+\begin{DoxyCompactList}\small\item\em Contains classes generated by Qt\textquotesingle{}s User Interface Compiler (uic) from .ui files. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8a35369fbdd8ae06c944107d439d87820059ed4e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+1887605268aa1dfd63b85354fb5cf4ca
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..fc3700b4ba8239869f745f8781a34dd382ec305f
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..788df00ee46bcc5bcc23f4a6bd2e187126b37979
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp__incl.md5
@@ -0,0 +1 @@
+9b02121be7d381e9c2f4fc59d38b373c
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..35307771680c464755380ce8040782727682d1c9
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..a5d6579d6f4cae6dab1bf92754dc5a6cfef82baf
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/learn__environment_8hpp_source.tex
@@ -0,0 +1,52 @@
+\doxysection{learn\+\_\+environment.\+hpp}
+\hypertarget{learn__environment_8hpp_source}{}\label{learn__environment_8hpp_source}\index{learn\_environment.hpp@{learn\_environment.hpp}}
+\mbox{\hyperlink{learn__environment_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ LEARN\_ENVIRONMENT\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ LEARN\_ENVIRONMENT\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ <rviz/panel.h>}}
+\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ <ui\_learn\_environment.h>}}
+\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{task__manager_8hpp}{task\_manager.hpp}}"{}}}
+\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{task__ui_8hpp}{task\_ui.hpp}}"{}}}
+\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{notebook__converter_8hpp}{notebook\_converter.hpp}}"{}}}
+\DoxyCodeLine{00009\ }
+\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <QWidget>}}
+\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <QObject>}}
+\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <QProcess>}}
+\DoxyCodeLine{00013\ \textcolor{preprocessor}{\#include\ <QThread>}}
+\DoxyCodeLine{00014\ }
+\DoxyCodeLine{00015\ QT\_BEGIN\_NAMESPACE}
+\DoxyCodeLine{00024\ \textcolor{keyword}{namespace\ }\mbox{\hyperlink{namespaceUi}{Ui}}\ \{}
+\DoxyCodeLine{00025\ \ \ \ \ \textcolor{keyword}{class\ }\mbox{\hyperlink{classLearnEnvironment}{LearnEnvironment}};}
+\DoxyCodeLine{00026\ \}}
+\DoxyCodeLine{00027\ QT\_END\_NAMESPACE}
+\DoxyCodeLine{00028\ }
+\DoxyCodeLine{00036\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classLearnEnvironment}{LearnEnvironment}}\ :\ \textcolor{keyword}{public}\ rviz::Panel}
+\DoxyCodeLine{00037\ \{}
+\DoxyCodeLine{00038\ \ \ \ \ Q\_OBJECT}
+\DoxyCodeLine{00039\ }
+\DoxyCodeLine{00040\ \textcolor{keyword}{public}:}
+\DoxyCodeLine{00045\ \ \ \ \ \mbox{\hyperlink{classLearnEnvironment_a25d7b0bd7b4270c7c2feeab3a9450d39}{LearnEnvironment}}(\mbox{\hyperlink{classQWidget}{QWidget}}\ *parent\ =\ 0);}
+\DoxyCodeLine{00046\ }
+\DoxyCodeLine{00050\ \ \ \ \ \mbox{\hyperlink{classLearnEnvironment_ad2086d08e20cef426a861e1093cfc987}{\string~LearnEnvironment}}();}
+\DoxyCodeLine{00051\ }
+\DoxyCodeLine{00056\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classLearnEnvironment_af0c2b95f5853116a09c795d33eb47d52}{load}}(\textcolor{keyword}{const}\ rviz::Config\ \&config)\ \textcolor{keyword}{override};}
+\DoxyCodeLine{00057\ }
+\DoxyCodeLine{00062\ \ \ \ \ \textcolor{keyword}{virtual}\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classLearnEnvironment_aa684f56e6ba08652e1ddfa47304eb449}{save}}(rviz::Config\ config)\ \textcolor{keyword}{const\ override};}
+\DoxyCodeLine{00063\ }
+\DoxyCodeLine{00064\ \textcolor{keyword}{private}:}
+\DoxyCodeLine{00065\ \ \ \ \ Ui::LearnEnvironment\ *ui;\ }
+\DoxyCodeLine{00066\ \ \ \ \ \mbox{\hyperlink{classTaskManager}{TaskManager}}\ *taskManager;\ }
+\DoxyCodeLine{00067\ \ \ \ \ \mbox{\hyperlink{classTaskUI}{TaskUI}}\ *taskUI;\ }
+\DoxyCodeLine{00068\ \ \ \ \ QProcess\ *process;\ }
+\DoxyCodeLine{00069\ }
+\DoxyCodeLine{00070\ \ \ \ \ \mbox{\hyperlink{classNotebookConverter}{NotebookConverter}}\ *notebookConverter;\ }
+\DoxyCodeLine{00071\ \ \ \ \ QThread\ *notebookThread;\ }
+\DoxyCodeLine{00072\ }
+\DoxyCodeLine{00076\ \ \ \ \ \textcolor{keywordtype}{void}\ initialize();}
+\DoxyCodeLine{00077\ \};}
+\DoxyCodeLine{00078\ }
+\DoxyCodeLine{00079\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ LEARN\_ENVIRONMENT\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/longtable_doxygen.sty b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/longtable_doxygen.sty
new file mode 100644
index 0000000000000000000000000000000000000000..39a44b889e1cc20e35c3a274fdfa93c3d8fc41a8
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/longtable_doxygen.sty
@@ -0,0 +1,459 @@
+%%
+%% This is file `longtable.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% longtable.dtx  (with options: `package')
+%% 
+%% This is a generated file.
+%% 
+%% The source is maintained by the LaTeX Project team and bug
+%% reports for it can be opened at http://latex-project.org/bugs.html
+%% (but please observe conditions on bug reports sent to that address!)
+%% 
+%% Copyright 1993-2016
+%% The LaTeX3 Project and any individual authors listed elsewhere
+%% in this file.
+%% 
+%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
+%% --------------------------------------------------------------------------
+%% 
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%    http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% 
+%% This file may only be distributed together with a copy of the LaTeX
+%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
+%% without such generated files.
+%% 
+%% The list of all files belonging to the LaTeX `Tools Bundle' is
+%% given in the file `manifest.txt'.
+%% 
+%% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\ProvidesPackage{longtable_doxygen}
+          [2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen]
+\def\LT@err{\PackageError{longtable}}
+\def\LT@warn{\PackageWarning{longtable}}
+\def\LT@final@warn{%
+  \AtEndDocument{%
+    \LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}%
+  \global\let\LT@final@warn\relax}
+\DeclareOption{errorshow}{%
+  \def\LT@warn{\PackageInfo{longtable}}}
+\DeclareOption{pausing}{%
+  \def\LT@warn#1{%
+    \LT@err{#1}{This is not really an error}}}
+\DeclareOption{set}{}
+\DeclareOption{final}{}
+\ProcessOptions
+\newskip\LTleft       \LTleft=\fill
+\newskip\LTright      \LTright=\fill
+\newskip\LTpre        \LTpre=\bigskipamount
+\newskip\LTpost       \LTpost=\bigskipamount
+\newcount\LTchunksize \LTchunksize=20
+\let\c@LTchunksize\LTchunksize
+\newdimen\LTcapwidth  \LTcapwidth=4in
+\newbox\LT@head
+\newbox\LT@firsthead
+\newbox\LT@foot
+\newbox\LT@lastfoot
+\newcount\LT@cols
+\newcount\LT@rows
+\newcounter{LT@tables}
+\newcounter{LT@chunks}[LT@tables]
+\ifx\c@table\undefined
+  \newcounter{table}
+  \def\fnum@table{\tablename~\thetable}
+\fi
+\ifx\tablename\undefined
+  \def\tablename{Table}
+\fi
+\newtoks\LT@p@ftn
+\mathchardef\LT@end@pen=30000
+\def\longtable{%
+  \par
+  \ifx\multicols\@undefined
+  \else
+     \ifnum\col@number>\@ne
+       \@twocolumntrue
+     \fi
+  \fi
+  \if@twocolumn
+    \LT@err{longtable not in 1-column mode}\@ehc
+  \fi
+  \begingroup
+  \@ifnextchar[\LT@array{\LT@array[x]}}
+\def\LT@array[#1]#2{%
+  \refstepcounter{table}\stepcounter{LT@tables}%
+  \if l#1%
+    \LTleft\z@ \LTright\fill
+  \else\if r#1%
+    \LTleft\fill \LTright\z@
+  \else\if c#1%
+    \LTleft\fill \LTright\fill
+  \fi\fi\fi
+  \let\LT@mcol\multicolumn
+  \let\LT@@tabarray\@tabarray
+  \let\LT@@hl\hline
+  \def\@tabarray{%
+    \let\hline\LT@@hl
+    \LT@@tabarray}%
+  \let\\\LT@tabularcr\let\tabularnewline\\%
+  \def\newpage{\noalign{\break}}%
+  \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
+  \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
+  \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
+  \@tempdima\ht\strutbox
+  \let\@endpbox\LT@endpbox
+  \ifx\extrarowheight\@undefined
+    \let\@acol\@tabacol
+    \let\@classz\@tabclassz \let\@classiv\@tabclassiv
+    \def\@startpbox{\vtop\LT@startpbox}%
+    \let\@@startpbox\@startpbox
+    \let\@@endpbox\@endpbox
+    \let\LT@LL@FM@cr\@tabularcr
+  \else
+    \advance\@tempdima\extrarowheight
+    \col@sep\tabcolsep
+    \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
+  \fi
+  \setbox\@arstrutbox\hbox{\vrule
+    \@height \arraystretch \@tempdima
+    \@depth \arraystretch \dp \strutbox
+    \@width \z@}%
+  \let\@sharp##\let\protect\relax
+   \begingroup
+    \@mkpream{#2}%
+    \xdef\LT@bchunk{%
+       \global\advance\c@LT@chunks\@ne
+       \global\LT@rows\z@\setbox\z@\vbox\bgroup
+       \LT@setprevdepth
+       \tabskip\LTleft \noexpand\halign to\hsize\bgroup
+      \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
+  \endgroup
+  \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
+  \LT@make@row
+  \m@th\let\par\@empty
+  \everycr{}\lineskip\z@\baselineskip\z@
+  \LT@bchunk}
+\def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}}
+\def\LT@start{%
+  \let\LT@start\endgraf
+  \endgraf\penalty\z@\vskip\LTpre
+  \dimen@\pagetotal
+  \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
+  \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
+  \advance\dimen@ \ht\LT@foot
+  \dimen@ii\vfuzz
+  \vfuzz\maxdimen
+    \setbox\tw@\copy\z@
+    \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
+    \setbox\tw@\vbox{\unvbox\tw@}%
+  \vfuzz\dimen@ii
+  \advance\dimen@ \ht
+        \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
+  \advance\dimen@\dp
+        \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
+  \advance\dimen@ -\pagegoal
+  \ifdim \dimen@>\z@\vfil\break\fi
+      \global\@colroom\@colht
+  \ifvoid\LT@foot\else
+    \global\advance\vsize-\ht\LT@foot
+    \global\advance\@colroom-\ht\LT@foot
+    \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
+    \maxdepth\z@
+  \fi
+  \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
+  \output{\LT@output}}
+\def\endlongtable{%
+  \crcr
+  \noalign{%
+    \let\LT@entry\LT@entry@chop
+    \xdef\LT@save@row{\LT@save@row}}%
+  \LT@echunk
+  \LT@start
+  \unvbox\z@
+  \LT@get@widths
+  \if@filesw
+    {\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
+      \gdef\expandafter\noexpand
+        \csname LT@\romannumeral\c@LT@tables\endcsname
+          {\LT@save@row}}}%
+  \fi
+  \ifx\LT@save@row\LT@@save@row
+  \else
+    \LT@warn{Column \@width s have changed\MessageBreak
+             in table \thetable}%
+    \LT@final@warn
+  \fi
+  \endgraf\penalty -\LT@end@pen
+  \ifvoid\LT@foot\else
+    \global\advance\vsize\ht\LT@foot
+    \global\advance\@colroom\ht\LT@foot
+    \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@
+  \fi
+  \endgroup
+  \global\@mparbottom\z@
+  \endgraf\penalty\z@\addvspace\LTpost
+  \ifvoid\footins\else\insert\footins{}\fi}
+\def\LT@nofcols#1&{%
+  \futurelet\@let@token\LT@n@fcols}
+\def\LT@n@fcols{%
+  \advance\LT@cols\@ne
+  \ifx\@let@token\LT@nofcols
+    \expandafter\@gobble
+  \else
+    \expandafter\LT@nofcols
+  \fi}
+\def\LT@tabularcr{%
+  \relax\iffalse{\fi\ifnum0=`}\fi
+  \@ifstar
+    {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr
+     \LT@t@bularcr}%
+    {\LT@t@bularcr}}
+\let\LT@crcr\crcr
+\let\LT@setprevdepth\relax
+\def\LT@t@bularcr{%
+  \global\advance\LT@rows\@ne
+  \ifnum\LT@rows=\LTchunksize
+    \gdef\LT@setprevdepth{%
+      \prevdepth\z@\global
+      \global\let\LT@setprevdepth\relax}%
+    \expandafter\LT@xtabularcr
+  \else
+    \ifnum0=`{}\fi
+    \expandafter\LT@LL@FM@cr
+  \fi}
+\def\LT@xtabularcr{%
+  \@ifnextchar[\LT@argtabularcr\LT@ntabularcr}
+\def\LT@ntabularcr{%
+  \ifnum0=`{}\fi
+  \LT@echunk
+  \LT@start
+  \unvbox\z@
+  \LT@get@widths
+  \LT@bchunk}
+\def\LT@argtabularcr[#1]{%
+  \ifnum0=`{}\fi
+  \ifdim #1>\z@
+    \unskip\@xargarraycr{#1}%
+  \else
+    \@yargarraycr{#1}%
+  \fi
+  \LT@echunk
+  \LT@start
+  \unvbox\z@
+  \LT@get@widths
+  \LT@bchunk}
+\def\LT@echunk{%
+  \crcr\LT@save@row\cr\egroup
+  \global\setbox\@ne\lastbox
+    \unskip
+  \egroup}
+\def\LT@entry#1#2{%
+  \ifhmode\@firstofone{&}\fi\omit
+  \ifnum#1=\c@LT@chunks
+  \else
+    \kern#2\relax
+  \fi}
+\def\LT@entry@chop#1#2{%
+  \noexpand\LT@entry
+    {\ifnum#1>\c@LT@chunks
+       1}{0pt%
+     \else
+       #1}{#2%
+     \fi}}
+\def\LT@entry@write{%
+  \noexpand\LT@entry^^J%
+  \@spaces}
+\def\LT@kill{%
+  \LT@echunk
+  \LT@get@widths
+  \expandafter\LT@rebox\LT@bchunk}
+\def\LT@rebox#1\bgroup{%
+  #1\bgroup
+  \unvbox\z@
+  \unskip
+  \setbox\z@\lastbox}
+\def\LT@blank@row{%
+  \xdef\LT@save@row{\expandafter\LT@build@blank
+    \romannumeral\number\LT@cols 001 }}
+\def\LT@build@blank#1{%
+  \if#1m%
+    \noexpand\LT@entry{1}{0pt}%
+    \expandafter\LT@build@blank
+  \fi}
+\def\LT@make@row{%
+  \global\expandafter\let\expandafter\LT@save@row
+    \csname LT@\romannumeral\c@LT@tables\endcsname
+  \ifx\LT@save@row\relax
+    \LT@blank@row
+  \else
+    {\let\LT@entry\or
+     \if!%
+         \ifcase\expandafter\expandafter\expandafter\LT@cols
+         \expandafter\@gobble\LT@save@row
+         \or
+         \else
+           \relax
+         \fi
+        !%
+     \else
+       \aftergroup\LT@blank@row
+     \fi}%
+  \fi}
+\let\setlongtables\relax
+\def\LT@get@widths{%
+  \setbox\tw@\hbox{%
+    \unhbox\@ne
+    \let\LT@old@row\LT@save@row
+    \global\let\LT@save@row\@empty
+    \count@\LT@cols
+    \loop
+      \unskip
+      \setbox\tw@\lastbox
+    \ifhbox\tw@
+      \LT@def@row
+      \advance\count@\m@ne
+    \repeat}%
+  \ifx\LT@@save@row\@undefined
+    \let\LT@@save@row\LT@save@row
+  \fi}
+\def\LT@def@row{%
+  \let\LT@entry\or
+  \edef\@tempa{%
+    \ifcase\expandafter\count@\LT@old@row
+    \else
+      {1}{0pt}%
+    \fi}%
+  \let\LT@entry\relax
+  \xdef\LT@save@row{%
+    \LT@entry
+    \expandafter\LT@max@sel\@tempa
+    \LT@save@row}}
+\def\LT@max@sel#1#2{%
+  {\ifdim#2=\wd\tw@
+     #1%
+   \else
+     \number\c@LT@chunks
+   \fi}%
+  {\the\wd\tw@}}
+\def\LT@hline{%
+  \noalign{\ifnum0=`}\fi
+    \penalty\@M
+    \futurelet\@let@token\LT@@hline}
+\def\LT@@hline{%
+  \ifx\@let@token\hline
+    \global\let\@gtempa\@gobble
+    \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}%
+  \else
+    \global\let\@gtempa\@empty
+    \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}%
+  \fi
+  \ifnum0=`{\fi}%
+  \multispan\LT@cols
+     \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
+  \noalign{\LT@sep}%
+  \multispan\LT@cols
+     \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
+  \noalign{\penalty\@M}%
+  \@gtempa}
+\def\LT@caption{%
+  \noalign\bgroup
+    \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n}
+\def\LT@c@ption#1[#2]#3{%
+  \LT@makecaption#1\fnum@table{#3}%
+  \def\@tempa{#2}%
+  \ifx\@tempa\@empty\else
+     {\let\\\space
+     \addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}%
+  \fi}
+\def\LT@capti@n{%
+  \@ifstar
+    {\egroup\LT@c@ption\@gobble[]}%
+    {\egroup\@xdblarg{\LT@c@ption\@firstofone}}}
+\def\LT@makecaption#1#2#3{%
+  \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
+    \sbox\@tempboxa{#1{#2: }#3}%
+    \ifdim\wd\@tempboxa>\hsize
+      #1{#2: }#3%
+    \else
+      \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
+    \fi
+    \endgraf\vskip\baselineskip}%
+  \hss}}}
+\def\LT@output{%
+  \ifnum\outputpenalty <-\@Mi
+    \ifnum\outputpenalty > -\LT@end@pen
+      \LT@err{floats and marginpars not allowed in a longtable}\@ehc
+    \else
+      \setbox\z@\vbox{\unvbox\@cclv}%
+      \ifdim \ht\LT@lastfoot>\ht\LT@foot
+        \dimen@\pagegoal
+        \advance\dimen@\ht\LT@foot
+        \advance\dimen@-\ht\LT@lastfoot
+        \ifdim\dimen@<\ht\z@
+          \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
+          \@makecol
+          \@outputpage
+            \global\vsize\@colroom
+          \setbox\z@\vbox{\box\LT@head}%
+        \fi
+      \fi
+      \unvbox\z@\ifvoid\LT@lastfoot\copy\LT@foot\else\box\LT@lastfoot\fi
+    \fi
+  \else
+    \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
+    \@makecol
+    \@outputpage
+      \global\vsize\@colroom
+    \copy\LT@head\nobreak
+  \fi}
+\def\LT@end@hd@ft#1{%
+  \LT@echunk
+  \ifx\LT@start\endgraf
+    \LT@err
+     {Longtable head or foot not at start of table}%
+     {Increase LTchunksize}%
+  \fi
+  \setbox#1\box\z@
+  \LT@get@widths
+  \LT@bchunk}
+\def\endfirsthead{\LT@end@hd@ft\LT@firsthead}
+\def\endhead{\LT@end@hd@ft\LT@head}
+\def\endfoot{\LT@end@hd@ft\LT@foot}
+\def\endlastfoot{\LT@end@hd@ft\LT@lastfoot}
+\def\LT@startpbox#1{%
+  \bgroup
+    \let\@footnotetext\LT@p@ftntext
+    \setlength\hsize{#1}%
+    \@arrayparboxrestore
+    \vrule \@height \ht\@arstrutbox \@width \z@}
+\def\LT@endpbox{%
+  \@finalstrut\@arstrutbox
+  \egroup
+  \the\LT@p@ftn
+  \global\LT@p@ftn{}%
+  \hfil}
+%% added \long to prevent:
+% LaTeX Warning: Command \LT@p@ftntext  has changed.
+%
+% from the original repository (https://github.com/latex3/latex2e/blob/develop/required/tools/longtable.dtx):
+% \changes{v4.15}{2021/03/28}
+%      {make long for gh/364}
+% Inside the `p' column, just save up the footnote text in a token
+% register.
+\long\def\LT@p@ftntext#1{%
+  \edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}%
+  \global\LT@p@ftn\expandafter{\@tempa{#1}}}%
+
+\@namedef{ver@longtable.sty}{2014/10/28 v4.11 Multi-page Table package (DPC) - frozen version for doxygen}
+\endinput
+%%
+%% End of file `longtable.sty'.
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/make.bat b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/make.bat
new file mode 100644
index 0000000000000000000000000000000000000000..ccd0c1b1bfa94369970cf8263cc9c1aee3b16519
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/make.bat
@@ -0,0 +1,67 @@
+pushd %~dp0
+if not %errorlevel% == 0 goto :end1
+
+set ORG_LATEX_CMD=%LATEX_CMD%
+set ORG_MKIDX_CMD=%MKIDX_CMD%
+set ORG_BIBTEX_CMD=%BIBTEX_CMD%
+set ORG_LATEX_COUNT=%LATEX_COUNT%
+set ORG_MANUAL_FILE=%MANUAL_FILE%
+if "X"%LATEX_CMD% == "X" set LATEX_CMD=pdflatex
+if "X"%MKIDX_CMD% == "X" set MKIDX_CMD=makeindex
+if "X"%BIBTEX_CMD% == "X" set BIBTEX_CMD=bibtex
+if "X"%LATEX_COUNT% == "X" set LATEX_COUNT=8
+if "X"%MANUAL_FILE% == "X" set MANUAL_FILE=refman
+
+del /s /f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl %MANUAL_FILE%.pdf
+
+
+%LATEX_CMD% %MANUAL_FILE%
+@if ERRORLEVEL 1 goto :error
+echo ----
+%MKIDX_CMD% %MANUAL_FILE%.idx
+echo ----
+%LATEX_CMD% %MANUAL_FILE%
+@if ERRORLEVEL 1 goto :error
+
+setlocal enabledelayedexpansion
+set count=%LATEX_COUNT%
+:repeat
+set content=X
+for /F "tokens=*" %%T in ( 'findstr /C:"Rerun LaTeX" %MANUAL_FILE%.log' ) do set content="%%~T"
+if !content! == X for /F "tokens=*" %%T in ( 'findstr /C:"Rerun to get cross-references right" %MANUAL_FILE%.log' ) do set content="%%~T"
+if !content! == X for /F "tokens=*" %%T in ( 'findstr /C:"Rerun to get bibliographical references right" %MANUAL_FILE%.log' ) do set content="%%~T"
+if !content! == X goto :skip
+set /a count-=1
+if !count! EQU 0 goto :skip
+
+echo ----
+%LATEX_CMD% %MANUAL_FILE%
+@if ERRORLEVEL 1 goto :error
+goto :repeat
+:skip
+endlocal
+%MKIDX_CMD% %MANUAL_FILE%.idx
+%LATEX_CMD% %MANUAL_FILE%
+@if ERRORLEVEL 1 goto :error
+
+goto :end
+:error
+@echo ===============
+@echo Please consult %MANUAL_FILE%.log to see the error messages
+@echo ===============
+
+:end
+@REM reset environment
+popd
+set LATEX_CMD=%ORG_LATEX_CMD%
+set ORG_LATEX_CMD=
+set MKIDX_CMD=%ORG_MKIDX_CMD%
+set ORG_MKIDX_CMD=
+set BIBTEX_CMD=%ORG_BIBTEX_CMD%
+set ORG_BIBTEX_CMD=
+set MANUAL_FILE=%ORG_MANUAL_FILE%
+set ORG_MANUAL_FILE=
+set LATEX_COUNT=%ORG_LATEX_COUNT%
+set ORG_LATEX_COUNT=
+
+:end1
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaceFolderStructureConstants.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaceFolderStructureConstants.tex
new file mode 100644
index 0000000000000000000000000000000000000000..1577da1cc0e728ef392cbcd57927b5f865c94307
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaceFolderStructureConstants.tex
@@ -0,0 +1,152 @@
+\doxysection{Folder\+Structure\+Constants Namespace Reference}
+\hypertarget{namespaceFolderStructureConstants}{}\label{namespaceFolderStructureConstants}\index{FolderStructureConstants@{FolderStructureConstants}}
+
+
+Contains constants related to the folder structure of the learn\+\_\+environment package.  
+
+
+\doxysubsubsection*{Functions}
+\begin{DoxyCompactItemize}
+\item 
+QString \mbox{\hyperlink{namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720}{get\+Package\+Path}} ()
+\begin{DoxyCompactList}\small\item\em Retrieves the path of the package. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Variables}
+\begin{DoxyCompactItemize}
+\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_a82483c09d34f6dbea6451b921b231c5a}{CONVERTED\+\_\+\+SCRIPT\+\_\+\+PATH}} = "{}/converter/converted.\+py"{}
+\begin{DoxyCompactList}\small\item\em Path to the converted script. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_a97e2abd38a09653e626ba46a5e5e10bd}{RESET\+\_\+\+ROBOT\+\_\+\+SCRIPT\+\_\+\+PATH}} = "{}/task\+\_\+pool/reset\+\_\+robot.\+py"{}
+\begin{DoxyCompactList}\small\item\em Path to the reset robot script. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_a84dc4e92b3d05fcef00c9abb99f9f9da}{TASK\+\_\+\+DEFINITIONS\+\_\+\+PATH}} = "{}\+:/task\+\_\+pool/task\+\_\+definitions.\+json"{}
+\begin{DoxyCompactList}\small\item\em Path to the task definitions json. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_adc8fa9eae998a60723424421756bd65b}{TOPIC\+\_\+\+DEFINITIONS\+\_\+\+PATH}} = "{}\+:/task\+\_\+pool/topic\+\_\+definitions.\+json"{}
+\begin{DoxyCompactList}\small\item\em Path to the topic definitions json. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_a4a34d956c5883529b64e6bb183d768a7}{DIFFICULTY\+\_\+\+LEVELS\+\_\+\+DEFINITION\+\_\+\+PATH}} = "{}\+:/task\+\_\+pool/difficulty\+\_\+levels.\+json"{}
+\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_ae963e238a7326dd80a2401eae27c252a}{SOLUTION\+\_\+\+SCRIPTS\+\_\+\+SOURCE\+\_\+\+PATH}} = "{}/task\+\_\+pool/solution\+\_\+scripts"{}
+\begin{DoxyCompactList}\small\item\em Path to the solution scripts source directory. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_afbae3ede611451504507436474ae482e}{EVALUATION\+\_\+\+SCRIPTS\+\_\+\+SOURCE\+\_\+\+PATH}} = "{}/task\+\_\+pool/evaluation\+\_\+scripts"{}
+\begin{DoxyCompactList}\small\item\em Path to the evaluation scripts source directory. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_ac7bdb4609b31965b63ac7d3ce2b197c3}{USER\+\_\+\+WORKSPACE}} = "{}/tasks"{}
+\begin{DoxyCompactList}\small\item\em Path to the user workspace directory. Adjust it in devconatiner.\+json if changed. \end{DoxyCompactList}\item 
+const QString \mbox{\hyperlink{namespaceFolderStructureConstants_aa9f54b725067dc395f26c6608161dae9}{PACKAGE\+\_\+\+NAME}} = "{}learn\+\_\+environment"{}
+\begin{DoxyCompactList}\small\item\em Name of the package. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Contains constants related to the folder structure of the learn\+\_\+environment package. 
+
+This namespace provides constants for various paths used within the learn\+\_\+environment package, as well as a function to retrieve the package path. 
+
+\doxysubsection{Function Documentation}
+\Hypertarget{namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720}\index{FolderStructureConstants@{FolderStructureConstants}!getPackagePath@{getPackagePath}}
+\index{getPackagePath@{getPackagePath}!FolderStructureConstants@{FolderStructureConstants}}
+\doxysubsubsection{\texorpdfstring{getPackagePath()}{getPackagePath()}}
+{\footnotesize\ttfamily \label{namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720} 
+QString Folder\+Structure\+Constants\+::get\+Package\+Path (\begin{DoxyParamCaption}{}{}\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
+
+
+
+Retrieves the path of the package. 
+
+This function attempts to retrieve the path of the package using ROS package utilities. If an error occurs during retrieval, it logs a critical error message and returns an empty QString.
+
+\begin{DoxyReturn}{Returns}
+QString The path of the package or an empty QString if an error occurs. 
+\end{DoxyReturn}
+Here is the caller graph for this function\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph}
+\end{center}
+\end{figure}
+
+
+\doxysubsection{Variable Documentation}
+\Hypertarget{namespaceFolderStructureConstants_a82483c09d34f6dbea6451b921b231c5a}\index{FolderStructureConstants@{FolderStructureConstants}!CONVERTED\_SCRIPT\_PATH@{CONVERTED\_SCRIPT\_PATH}}
+\index{CONVERTED\_SCRIPT\_PATH@{CONVERTED\_SCRIPT\_PATH}!FolderStructureConstants@{FolderStructureConstants}}
+\doxysubsubsection{\texorpdfstring{CONVERTED\_SCRIPT\_PATH}{CONVERTED\_SCRIPT\_PATH}}
+{\footnotesize\ttfamily \label{namespaceFolderStructureConstants_a82483c09d34f6dbea6451b921b231c5a} 
+const QString Folder\+Structure\+Constants\+::\+CONVERTED\+\_\+\+SCRIPT\+\_\+\+PATH = "{}/converter/converted.\+py"{}\hspace{0.3cm}{\ttfamily [inline]}}
+
+
+
+Path to the converted script. 
+
+\Hypertarget{namespaceFolderStructureConstants_a4a34d956c5883529b64e6bb183d768a7}\index{FolderStructureConstants@{FolderStructureConstants}!DIFFICULTY\_LEVELS\_DEFINITION\_PATH@{DIFFICULTY\_LEVELS\_DEFINITION\_PATH}}
+\index{DIFFICULTY\_LEVELS\_DEFINITION\_PATH@{DIFFICULTY\_LEVELS\_DEFINITION\_PATH}!FolderStructureConstants@{FolderStructureConstants}}
+\doxysubsubsection{\texorpdfstring{DIFFICULTY\_LEVELS\_DEFINITION\_PATH}{DIFFICULTY\_LEVELS\_DEFINITION\_PATH}}
+{\footnotesize\ttfamily \label{namespaceFolderStructureConstants_a4a34d956c5883529b64e6bb183d768a7} 
+const QString Folder\+Structure\+Constants\+::\+DIFFICULTY\+\_\+\+LEVELS\+\_\+\+DEFINITION\+\_\+\+PATH = "{}\+:/task\+\_\+pool/difficulty\+\_\+levels.\+json"{}\hspace{0.3cm}{\ttfamily [inline]}}
+
+\Hypertarget{namespaceFolderStructureConstants_afbae3ede611451504507436474ae482e}\index{FolderStructureConstants@{FolderStructureConstants}!EVALUATION\_SCRIPTS\_SOURCE\_PATH@{EVALUATION\_SCRIPTS\_SOURCE\_PATH}}
+\index{EVALUATION\_SCRIPTS\_SOURCE\_PATH@{EVALUATION\_SCRIPTS\_SOURCE\_PATH}!FolderStructureConstants@{FolderStructureConstants}}
+\doxysubsubsection{\texorpdfstring{EVALUATION\_SCRIPTS\_SOURCE\_PATH}{EVALUATION\_SCRIPTS\_SOURCE\_PATH}}
+{\footnotesize\ttfamily \label{namespaceFolderStructureConstants_afbae3ede611451504507436474ae482e} 
+const QString Folder\+Structure\+Constants\+::\+EVALUATION\+\_\+\+SCRIPTS\+\_\+\+SOURCE\+\_\+\+PATH = "{}/task\+\_\+pool/evaluation\+\_\+scripts"{}\hspace{0.3cm}{\ttfamily [inline]}}
+
+
+
+Path to the evaluation scripts source directory. 
+
+\Hypertarget{namespaceFolderStructureConstants_aa9f54b725067dc395f26c6608161dae9}\index{FolderStructureConstants@{FolderStructureConstants}!PACKAGE\_NAME@{PACKAGE\_NAME}}
+\index{PACKAGE\_NAME@{PACKAGE\_NAME}!FolderStructureConstants@{FolderStructureConstants}}
+\doxysubsubsection{\texorpdfstring{PACKAGE\_NAME}{PACKAGE\_NAME}}
+{\footnotesize\ttfamily \label{namespaceFolderStructureConstants_aa9f54b725067dc395f26c6608161dae9} 
+const QString Folder\+Structure\+Constants\+::\+PACKAGE\+\_\+\+NAME = "{}learn\+\_\+environment"{}\hspace{0.3cm}{\ttfamily [inline]}}
+
+
+
+Name of the package. 
+
+\Hypertarget{namespaceFolderStructureConstants_a97e2abd38a09653e626ba46a5e5e10bd}\index{FolderStructureConstants@{FolderStructureConstants}!RESET\_ROBOT\_SCRIPT\_PATH@{RESET\_ROBOT\_SCRIPT\_PATH}}
+\index{RESET\_ROBOT\_SCRIPT\_PATH@{RESET\_ROBOT\_SCRIPT\_PATH}!FolderStructureConstants@{FolderStructureConstants}}
+\doxysubsubsection{\texorpdfstring{RESET\_ROBOT\_SCRIPT\_PATH}{RESET\_ROBOT\_SCRIPT\_PATH}}
+{\footnotesize\ttfamily \label{namespaceFolderStructureConstants_a97e2abd38a09653e626ba46a5e5e10bd} 
+const QString Folder\+Structure\+Constants\+::\+RESET\+\_\+\+ROBOT\+\_\+\+SCRIPT\+\_\+\+PATH = "{}/task\+\_\+pool/reset\+\_\+robot.\+py"{}\hspace{0.3cm}{\ttfamily [inline]}}
+
+
+
+Path to the reset robot script. 
+
+\Hypertarget{namespaceFolderStructureConstants_ae963e238a7326dd80a2401eae27c252a}\index{FolderStructureConstants@{FolderStructureConstants}!SOLUTION\_SCRIPTS\_SOURCE\_PATH@{SOLUTION\_SCRIPTS\_SOURCE\_PATH}}
+\index{SOLUTION\_SCRIPTS\_SOURCE\_PATH@{SOLUTION\_SCRIPTS\_SOURCE\_PATH}!FolderStructureConstants@{FolderStructureConstants}}
+\doxysubsubsection{\texorpdfstring{SOLUTION\_SCRIPTS\_SOURCE\_PATH}{SOLUTION\_SCRIPTS\_SOURCE\_PATH}}
+{\footnotesize\ttfamily \label{namespaceFolderStructureConstants_ae963e238a7326dd80a2401eae27c252a} 
+const QString Folder\+Structure\+Constants\+::\+SOLUTION\+\_\+\+SCRIPTS\+\_\+\+SOURCE\+\_\+\+PATH = "{}/task\+\_\+pool/solution\+\_\+scripts"{}\hspace{0.3cm}{\ttfamily [inline]}}
+
+
+
+Path to the solution scripts source directory. 
+
+\Hypertarget{namespaceFolderStructureConstants_a84dc4e92b3d05fcef00c9abb99f9f9da}\index{FolderStructureConstants@{FolderStructureConstants}!TASK\_DEFINITIONS\_PATH@{TASK\_DEFINITIONS\_PATH}}
+\index{TASK\_DEFINITIONS\_PATH@{TASK\_DEFINITIONS\_PATH}!FolderStructureConstants@{FolderStructureConstants}}
+\doxysubsubsection{\texorpdfstring{TASK\_DEFINITIONS\_PATH}{TASK\_DEFINITIONS\_PATH}}
+{\footnotesize\ttfamily \label{namespaceFolderStructureConstants_a84dc4e92b3d05fcef00c9abb99f9f9da} 
+const QString Folder\+Structure\+Constants\+::\+TASK\+\_\+\+DEFINITIONS\+\_\+\+PATH = "{}\+:/task\+\_\+pool/task\+\_\+definitions.\+json"{}\hspace{0.3cm}{\ttfamily [inline]}}
+
+
+
+Path to the task definitions json. 
+
+\Hypertarget{namespaceFolderStructureConstants_adc8fa9eae998a60723424421756bd65b}\index{FolderStructureConstants@{FolderStructureConstants}!TOPIC\_DEFINITIONS\_PATH@{TOPIC\_DEFINITIONS\_PATH}}
+\index{TOPIC\_DEFINITIONS\_PATH@{TOPIC\_DEFINITIONS\_PATH}!FolderStructureConstants@{FolderStructureConstants}}
+\doxysubsubsection{\texorpdfstring{TOPIC\_DEFINITIONS\_PATH}{TOPIC\_DEFINITIONS\_PATH}}
+{\footnotesize\ttfamily \label{namespaceFolderStructureConstants_adc8fa9eae998a60723424421756bd65b} 
+const QString Folder\+Structure\+Constants\+::\+TOPIC\+\_\+\+DEFINITIONS\+\_\+\+PATH = "{}\+:/task\+\_\+pool/topic\+\_\+definitions.\+json"{}\hspace{0.3cm}{\ttfamily [inline]}}
+
+
+
+Path to the topic definitions json. 
+
+Path to the difficulty definitions json. \Hypertarget{namespaceFolderStructureConstants_ac7bdb4609b31965b63ac7d3ce2b197c3}\index{FolderStructureConstants@{FolderStructureConstants}!USER\_WORKSPACE@{USER\_WORKSPACE}}
+\index{USER\_WORKSPACE@{USER\_WORKSPACE}!FolderStructureConstants@{FolderStructureConstants}}
+\doxysubsubsection{\texorpdfstring{USER\_WORKSPACE}{USER\_WORKSPACE}}
+{\footnotesize\ttfamily \label{namespaceFolderStructureConstants_ac7bdb4609b31965b63ac7d3ce2b197c3} 
+const QString Folder\+Structure\+Constants\+::\+USER\+\_\+\+WORKSPACE = "{}/tasks"{}\hspace{0.3cm}{\ttfamily [inline]}}
+
+
+
+Path to the user workspace directory. Adjust it in devconatiner.\+json if changed. 
+
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..03df43797ce8422d29a5db12c01d8cd16690800a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.md5
@@ -0,0 +1 @@
+78c570e142714441d2532967cea94924
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c2353fcddf64721e3373ba0c8e49049931d58988
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaceFolderStructureConstants_aa49dbebb86fde82b617e7db1193bd720_icgraph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaceUi.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaceUi.tex
new file mode 100644
index 0000000000000000000000000000000000000000..e09143ef999c6b76728c78043fbf7fa006a21592
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaceUi.tex
@@ -0,0 +1,13 @@
+\doxysection{Ui Namespace Reference}
+\hypertarget{namespaceUi}{}\label{namespaceUi}\index{Ui@{Ui}}
+
+
+Contains classes generated by Qt\textquotesingle{}s User Interface Compiler (uic) from .ui files.  
+
+
+
+
+\doxysubsection{Detailed Description}
+Contains classes generated by Qt\textquotesingle{}s User Interface Compiler (uic) from .ui files. 
+
+The \doxylink{namespaceUi}{Ui} namespace is used to encapsulate classes that are automatically generated by the Qt framework from user interface definition files (.ui). These classes are responsible for setting up the UI elements as defined in the .ui files. 
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaces.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaces.tex
new file mode 100644
index 0000000000000000000000000000000000000000..eb7b6951bc5a4fffd85ae206b59a59f7a10cd71f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/namespaces.tex
@@ -0,0 +1,5 @@
+\doxysection{Namespace List}
+Here is a list of all namespaces with brief descriptions\+:\begin{DoxyCompactList}
+\item\contentsline{section}{\mbox{\hyperlink{namespaceFolderStructureConstants}{Folder\+Structure\+Constants}} \\*Contains constants related to the folder structure of the learn\+\_\+environment package }{\pageref{namespaceFolderStructureConstants}}{}
+\item\contentsline{section}{\mbox{\hyperlink{namespaceUi}{Ui}} \\*Contains classes generated by Qt\textquotesingle{}s User Interface Compiler (uic) from .ui files }{\pageref{namespaceUi}}{}
+\end{DoxyCompactList}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8cpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8cpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..df4d6445a7cc459bf963b5856e442c868971f3a5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8cpp.tex
@@ -0,0 +1,111 @@
+\doxysection{notebook\+\_\+converter.\+cpp File Reference}
+\hypertarget{notebook__converter_8cpp}{}\label{notebook__converter_8cpp}\index{notebook\_converter.cpp@{notebook\_converter.cpp}}
+{\ttfamily \#include "{}learn\+\_\+environment/notebook\+\_\+converter.\+hpp"{}}\newline
+{\ttfamily \#include $<$QFile$>$}\newline
+{\ttfamily \#include $<$QText\+Stream$>$}\newline
+{\ttfamily \#include $<$QDebug$>$}\newline
+{\ttfamily \#include $<$unordered\+\_\+map$>$}\newline
+{\ttfamily \#include $<$nlohmann/json.\+hpp$>$}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/folder\+\_\+structure\+\_\+constants.\+hpp"{}}\newline
+{\ttfamily \#include $<$ros/package.\+h$>$}\newline
+{\ttfamily \#include $<$ros/ros.\+h$>$}\newline
+Include dependency graph for notebook\+\_\+converter.\+cpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{notebook__converter_8cpp__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Typedefs}
+\begin{DoxyCompactItemize}
+\item 
+using \mbox{\hyperlink{notebook__converter_8cpp_a0c01dbde6677d7e4769b85716c69c491}{json}} = nlohmann\+::json
+\end{DoxyCompactItemize}
+\doxysubsubsection*{Variables}
+\begin{DoxyCompactItemize}
+\item 
+const QString \mbox{\hyperlink{notebook__converter_8cpp_a577f6caa2b74a38695dcadccd277cd41}{TASK\+\_\+\+CELL\+\_\+\+TAG}} = "{}task\+\_\+cell"{}
+\item 
+const QString \mbox{\hyperlink{notebook__converter_8cpp_a184e7635f439bf95093b6a066ce161d7}{SOLUTION\+\_\+\+REMOVED\+\_\+\+CELL\+\_\+\+TAG}} = "{}solution\+\_\+removed\+\_\+cell"{}
+\item 
+const QString \mbox{\hyperlink{notebook__converter_8cpp_a213a8c8a72491ee237c3ce92f92191ec}{SOLUTION\+\_\+\+CELL\+\_\+\+TAG}} = "{}solution\+\_\+cell"{}
+\item 
+const QString \mbox{\hyperlink{notebook__converter_8cpp_a6c92986de28899546e13ab1a37bf0722}{WRITE\+\_\+\+CODE\+\_\+\+MARKER}} = "{}\#\#\#\# YOUR CODE HERE \#\#\#\#"{}
+\item 
+const QString \mbox{\hyperlink{notebook__converter_8cpp_a8a72334e6ef797e624196b1d9e073c6e}{NOT\+\_\+\+IMPLEMENTED\+\_\+\+ERROR}} = "{}raise Not\+Implemented\+Error()"{}
+\item 
+const QString \mbox{\hyperlink{notebook__converter_8cpp_a22b163bef7c6dc038082729221692dfa}{SOLUTION\+\_\+\+CELL\+\_\+\+HEADER}}
+\item 
+const QString \mbox{\hyperlink{notebook__converter_8cpp_a0f5a0941639b66358c741284acf0dced}{SOLUTION\+\_\+\+CODE\+\_\+\+PLACEHOLDER\+\_\+\+START}} = "{}\# ↓↓↓↓ SOLUTION CODE HERE ↓↓↓↓ \#"{}
+\item 
+const QString \mbox{\hyperlink{notebook__converter_8cpp_a87d746c0d44126e9db98540148634b18}{SOLUTION\+\_\+\+CODE\+\_\+\+PLACEHOLDER\+\_\+\+END}} = "{}\# ↑↑↑↑ SOLUTION CODE HERE ↑↑↑↑ \#"{}
+\end{DoxyCompactItemize}
+
+
+\doxysubsection{Typedef Documentation}
+\Hypertarget{notebook__converter_8cpp_a0c01dbde6677d7e4769b85716c69c491}\index{notebook\_converter.cpp@{notebook\_converter.cpp}!json@{json}}
+\index{json@{json}!notebook\_converter.cpp@{notebook\_converter.cpp}}
+\doxysubsubsection{\texorpdfstring{json}{json}}
+{\footnotesize\ttfamily \label{notebook__converter_8cpp_a0c01dbde6677d7e4769b85716c69c491} 
+typedef nlohmann\+::json \mbox{\hyperlink{notebook__converter_8cpp_a0c01dbde6677d7e4769b85716c69c491}{json}} = nlohmann\+::json}
+
+
+
+\doxysubsection{Variable Documentation}
+\Hypertarget{notebook__converter_8cpp_a8a72334e6ef797e624196b1d9e073c6e}\index{notebook\_converter.cpp@{notebook\_converter.cpp}!NOT\_IMPLEMENTED\_ERROR@{NOT\_IMPLEMENTED\_ERROR}}
+\index{NOT\_IMPLEMENTED\_ERROR@{NOT\_IMPLEMENTED\_ERROR}!notebook\_converter.cpp@{notebook\_converter.cpp}}
+\doxysubsubsection{\texorpdfstring{NOT\_IMPLEMENTED\_ERROR}{NOT\_IMPLEMENTED\_ERROR}}
+{\footnotesize\ttfamily \label{notebook__converter_8cpp_a8a72334e6ef797e624196b1d9e073c6e} 
+const QString NOT\+\_\+\+IMPLEMENTED\+\_\+\+ERROR = "{}raise Not\+Implemented\+Error()"{}}
+
+\Hypertarget{notebook__converter_8cpp_a22b163bef7c6dc038082729221692dfa}\index{notebook\_converter.cpp@{notebook\_converter.cpp}!SOLUTION\_CELL\_HEADER@{SOLUTION\_CELL\_HEADER}}
+\index{SOLUTION\_CELL\_HEADER@{SOLUTION\_CELL\_HEADER}!notebook\_converter.cpp@{notebook\_converter.cpp}}
+\doxysubsubsection{\texorpdfstring{SOLUTION\_CELL\_HEADER}{SOLUTION\_CELL\_HEADER}}
+{\footnotesize\ttfamily \label{notebook__converter_8cpp_a22b163bef7c6dc038082729221692dfa} 
+const QString SOLUTION\+\_\+\+CELL\+\_\+\+HEADER}
+
+{\bfseries Initial value\+:}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{=\ \textcolor{stringliteral}{"{}\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\(\backslash\)n"{}}}
+\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}\#\#\#\#\ \ \ \ \ THIS\ IS\ A\ SOLUTION\ CELL.\ IT\ WILL\ NOT\ EXECUTE.\ \ \ \ \#\#\#\#\(\backslash\)n"{}}}
+\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}\#\#\#\#\ YOU\ CAN\ RUN\ THE\ SOLUTION\ DIRECTLY\ WITHIN\ THE\ PLUGIN.\ \#\#\#\#\(\backslash\)n"{}}}
+\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}\#\#\#\#\ \ \ \ USE\ THIS\ CELL\ AS\ INSPIRATION\ FOR\ YOUR\ OWN\ CODE.\ \ \ \#\#\#\#\(\backslash\)n"{}}}
+\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{stringliteral}{"{}\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\(\backslash\)n"{}}}
+
+\end{DoxyCode}
+\Hypertarget{notebook__converter_8cpp_a213a8c8a72491ee237c3ce92f92191ec}\index{notebook\_converter.cpp@{notebook\_converter.cpp}!SOLUTION\_CELL\_TAG@{SOLUTION\_CELL\_TAG}}
+\index{SOLUTION\_CELL\_TAG@{SOLUTION\_CELL\_TAG}!notebook\_converter.cpp@{notebook\_converter.cpp}}
+\doxysubsubsection{\texorpdfstring{SOLUTION\_CELL\_TAG}{SOLUTION\_CELL\_TAG}}
+{\footnotesize\ttfamily \label{notebook__converter_8cpp_a213a8c8a72491ee237c3ce92f92191ec} 
+const QString SOLUTION\+\_\+\+CELL\+\_\+\+TAG = "{}solution\+\_\+cell"{}}
+
+\Hypertarget{notebook__converter_8cpp_a87d746c0d44126e9db98540148634b18}\index{notebook\_converter.cpp@{notebook\_converter.cpp}!SOLUTION\_CODE\_PLACEHOLDER\_END@{SOLUTION\_CODE\_PLACEHOLDER\_END}}
+\index{SOLUTION\_CODE\_PLACEHOLDER\_END@{SOLUTION\_CODE\_PLACEHOLDER\_END}!notebook\_converter.cpp@{notebook\_converter.cpp}}
+\doxysubsubsection{\texorpdfstring{SOLUTION\_CODE\_PLACEHOLDER\_END}{SOLUTION\_CODE\_PLACEHOLDER\_END}}
+{\footnotesize\ttfamily \label{notebook__converter_8cpp_a87d746c0d44126e9db98540148634b18} 
+const QString SOLUTION\+\_\+\+CODE\+\_\+\+PLACEHOLDER\+\_\+\+END = "{}\# ↑↑↑↑ SOLUTION CODE HERE ↑↑↑↑ \#"{}}
+
+\Hypertarget{notebook__converter_8cpp_a0f5a0941639b66358c741284acf0dced}\index{notebook\_converter.cpp@{notebook\_converter.cpp}!SOLUTION\_CODE\_PLACEHOLDER\_START@{SOLUTION\_CODE\_PLACEHOLDER\_START}}
+\index{SOLUTION\_CODE\_PLACEHOLDER\_START@{SOLUTION\_CODE\_PLACEHOLDER\_START}!notebook\_converter.cpp@{notebook\_converter.cpp}}
+\doxysubsubsection{\texorpdfstring{SOLUTION\_CODE\_PLACEHOLDER\_START}{SOLUTION\_CODE\_PLACEHOLDER\_START}}
+{\footnotesize\ttfamily \label{notebook__converter_8cpp_a0f5a0941639b66358c741284acf0dced} 
+const QString SOLUTION\+\_\+\+CODE\+\_\+\+PLACEHOLDER\+\_\+\+START = "{}\# ↓↓↓↓ SOLUTION CODE HERE ↓↓↓↓ \#"{}}
+
+\Hypertarget{notebook__converter_8cpp_a184e7635f439bf95093b6a066ce161d7}\index{notebook\_converter.cpp@{notebook\_converter.cpp}!SOLUTION\_REMOVED\_CELL\_TAG@{SOLUTION\_REMOVED\_CELL\_TAG}}
+\index{SOLUTION\_REMOVED\_CELL\_TAG@{SOLUTION\_REMOVED\_CELL\_TAG}!notebook\_converter.cpp@{notebook\_converter.cpp}}
+\doxysubsubsection{\texorpdfstring{SOLUTION\_REMOVED\_CELL\_TAG}{SOLUTION\_REMOVED\_CELL\_TAG}}
+{\footnotesize\ttfamily \label{notebook__converter_8cpp_a184e7635f439bf95093b6a066ce161d7} 
+const QString SOLUTION\+\_\+\+REMOVED\+\_\+\+CELL\+\_\+\+TAG = "{}solution\+\_\+removed\+\_\+cell"{}}
+
+\Hypertarget{notebook__converter_8cpp_a577f6caa2b74a38695dcadccd277cd41}\index{notebook\_converter.cpp@{notebook\_converter.cpp}!TASK\_CELL\_TAG@{TASK\_CELL\_TAG}}
+\index{TASK\_CELL\_TAG@{TASK\_CELL\_TAG}!notebook\_converter.cpp@{notebook\_converter.cpp}}
+\doxysubsubsection{\texorpdfstring{TASK\_CELL\_TAG}{TASK\_CELL\_TAG}}
+{\footnotesize\ttfamily \label{notebook__converter_8cpp_a577f6caa2b74a38695dcadccd277cd41} 
+const QString TASK\+\_\+\+CELL\+\_\+\+TAG = "{}task\+\_\+cell"{}}
+
+\Hypertarget{notebook__converter_8cpp_a6c92986de28899546e13ab1a37bf0722}\index{notebook\_converter.cpp@{notebook\_converter.cpp}!WRITE\_CODE\_MARKER@{WRITE\_CODE\_MARKER}}
+\index{WRITE\_CODE\_MARKER@{WRITE\_CODE\_MARKER}!notebook\_converter.cpp@{notebook\_converter.cpp}}
+\doxysubsubsection{\texorpdfstring{WRITE\_CODE\_MARKER}{WRITE\_CODE\_MARKER}}
+{\footnotesize\ttfamily \label{notebook__converter_8cpp_a6c92986de28899546e13ab1a37bf0722} 
+const QString WRITE\+\_\+\+CODE\+\_\+\+MARKER = "{}\#\#\#\# YOUR CODE HERE \#\#\#\#"{}}
+
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..89f611a0cf7e59a7d99ef137456ad17ee0365446
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8cpp__incl.md5
@@ -0,0 +1 @@
+f8289a92e039f8c59f6c4753b4256e3a
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8cpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8cpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..82e5fe68e43f1517db0c2e049162526e468b8145
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8cpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..78b78c4374a6aa2aa09746648e035024c1fdd3e8
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp.tex
@@ -0,0 +1,26 @@
+\doxysection{notebook\+\_\+converter.\+hpp File Reference}
+\hypertarget{notebook__converter_8hpp}{}\label{notebook__converter_8hpp}\index{notebook\_converter.hpp@{notebook\_converter.hpp}}
+{\ttfamily \#include $<$QObject$>$}\newline
+{\ttfamily \#include $<$QString$>$}\newline
+{\ttfamily \#include $<$QDir$>$}\newline
+{\ttfamily \#include $<$QByte\+Array$>$}\newline
+{\ttfamily \#include $<$nlohmann/json.\+hpp$>$}\newline
+Include dependency graph for notebook\+\_\+converter.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{notebook__converter_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{notebook__converter_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+class \mbox{\hyperlink{classNotebookConverter}{Notebook\+Converter}}
+\begin{DoxyCompactList}\small\item\em A class for converting Jupyter notebooks to Python scripts and processing task pools. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..2b90b792b2c9e79aa79f6d758c79c8f7b5c0d4e7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+5b2da2f89392397e55da36145d7661b9
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2f2d5f512fc2603e13c473600c3a3b8ddaeb4c04
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..15c387dd611758a41d71c3c876f806bcf7b5ee96
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp__incl.md5
@@ -0,0 +1 @@
+781ef5900b2ed4e8fcffbeda940dc815
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2b9722a052d3a53d116c7bc6b3517f34c4bbaa29
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..d54b01671644a12ceebbb6a2742e77484f63f664
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/notebook__converter_8hpp_source.tex
@@ -0,0 +1,48 @@
+\doxysection{notebook\+\_\+converter.\+hpp}
+\hypertarget{notebook__converter_8hpp_source}{}\label{notebook__converter_8hpp_source}\index{notebook\_converter.hpp@{notebook\_converter.hpp}}
+\mbox{\hyperlink{notebook__converter_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ NOTEBOOK\_CONVERTER\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ NOTEBOOK\_CONVERTER\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ <QObject>}}
+\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ <QString>}}
+\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ <QDir>}}
+\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ <QByteArray>}}
+\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ <nlohmann/json.hpp>}}
+\DoxyCodeLine{00009\ }
+\DoxyCodeLine{00010\ \textcolor{keyword}{using\ }\mbox{\hyperlink{notebook__converter_8cpp_a0c01dbde6677d7e4769b85716c69c491}{json}}\ =\ nlohmann::json;}
+\DoxyCodeLine{00011\ }
+\DoxyCodeLine{00023\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classNotebookConverter}{NotebookConverter}}\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classQObject}{QObject}}\ \{}
+\DoxyCodeLine{00024\ \ \ \ \ Q\_OBJECT}
+\DoxyCodeLine{00025\ \textcolor{keyword}{public}:}
+\DoxyCodeLine{00026\ \ \ \ \ \textcolor{keyword}{explicit}\ \mbox{\hyperlink{classNotebookConverter_a11c8ed4604d4c29acd45d6225d80c464}{NotebookConverter}}(\mbox{\hyperlink{classQObject}{QObject}}\ *parent\ =\ \textcolor{keyword}{nullptr});}
+\DoxyCodeLine{00027\ }
+\DoxyCodeLine{00033\ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classNotebookConverter_a8b06d3bc01057ddd936977bded4297f4}{convertNotebook}}(\textcolor{keyword}{const}\ QString\ \&notebookPath);}
+\DoxyCodeLine{00034\ }
+\DoxyCodeLine{00038\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classNotebookConverter_a66b007e49cfe58d279c3ac279ced7213}{processTaskPool}}();}
+\DoxyCodeLine{00039\ }
+\DoxyCodeLine{00045\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classNotebookConverter_a665ba1030d993bd9e165fca123d92032}{toggleSolution}}(\textcolor{keyword}{const}\ QString\ \&filePath,\ \textcolor{keyword}{const}\ QString\ \&solutionFilePath);}
+\DoxyCodeLine{00046\ }
+\DoxyCodeLine{00051\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classNotebookConverter_aa14fbd73e3cc21866decd2e02572207d}{resetNotebook}}(\textcolor{keyword}{const}\ QString\ \&notebookPath,\ \textcolor{keyword}{const}\ QString\ \&notebookSolutionPath);}
+\DoxyCodeLine{00052\ }
+\DoxyCodeLine{00058\ \ \ \ \ \textcolor{keyword}{static}\ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{classNotebookConverter_af64e43c667b96ba0926a715316002665}{hasSolutionCells}}(\textcolor{keyword}{const}\ QString\ \&notebookPath);}
+\DoxyCodeLine{00059\ }
+\DoxyCodeLine{00060\ \textcolor{keyword}{private}:}
+\DoxyCodeLine{00074\ \ \ \ \ \textcolor{keywordtype}{void}\ removeSolutionFromNotebook(\textcolor{keyword}{const}\ QString\ \&notebookPath);}
+\DoxyCodeLine{00075\ }
+\DoxyCodeLine{00076\ \ \ \ \ QByteArray\ readFile(\textcolor{keyword}{const}\ QString\ \&notebookPath);}
+\DoxyCodeLine{00077\ \ \ \ \ \mbox{\hyperlink{notebook__converter_8cpp_a0c01dbde6677d7e4769b85716c69c491}{json}}\ parseJson(\textcolor{keyword}{const}\ QByteArray\ \&data,\ \textcolor{keyword}{const}\ QString\ \&notebookPath);}
+\DoxyCodeLine{00078\ \ \ \ \ \textcolor{keywordtype}{void}\ processCells(\mbox{\hyperlink{notebook__converter_8cpp_a0c01dbde6677d7e4769b85716c69c491}{json}}\ \&notebook,\ \textcolor{keyword}{const}\ QString\ \&notebookPath);}
+\DoxyCodeLine{00079\ \ \ \ \ \textcolor{keywordtype}{void}\ processCell(\mbox{\hyperlink{notebook__converter_8cpp_a0c01dbde6677d7e4769b85716c69c491}{json}}\ \&cell,\ \textcolor{keyword}{const}\ QString\ \&notebookPath,\ \textcolor{keywordtype}{int}\ i);}
+\DoxyCodeLine{00080\ \ \ \ \ \textcolor{keywordtype}{void}\ writeFile(\textcolor{keyword}{const}\ \mbox{\hyperlink{notebook__converter_8cpp_a0c01dbde6677d7e4769b85716c69c491}{json}}\ \&notebook,\ \textcolor{keyword}{const}\ QString\ \&notebookPath);}
+\DoxyCodeLine{00081\ \ \ \ \ \textcolor{keywordtype}{void}\ copyAndModifyNotebooks(\textcolor{keyword}{const}\ QDir\ \&sourceDir,\ \textcolor{keyword}{const}\ QDir\ \&destDir);}
+\DoxyCodeLine{00082\ }
+\DoxyCodeLine{00083\ \ \ \ \ \textcolor{keywordtype}{void}\ removeSolutionCells(\textcolor{keyword}{const}\ QString\ \&notebookPath);}
+\DoxyCodeLine{00084\ \ \ \ \ \textcolor{keywordtype}{void}\ addSolutionCells(\textcolor{keyword}{const}\ QString\ \&notebookPath,\ \textcolor{keyword}{const}\ QString\ \&solutionPath);}
+\DoxyCodeLine{00085\ \ \ \ \ \textcolor{keywordtype}{void}\ manipulateSolutionCellContent(\mbox{\hyperlink{notebook__converter_8cpp_a0c01dbde6677d7e4769b85716c69c491}{json}}\ \&solutionCell);}
+\DoxyCodeLine{00086\ \};}
+\DoxyCodeLine{00087\ }
+\DoxyCodeLine{00088\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ NOTEBOOK\_CONVERTER\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8cpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8cpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..da2eda0d8b706e87ee9066a373172fc38d0aba1f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8cpp.tex
@@ -0,0 +1,12 @@
+\doxysection{process\+\_\+runner.\+cpp File Reference}
+\hypertarget{process__runner_8cpp}{}\label{process__runner_8cpp}\index{process\_runner.cpp@{process\_runner.cpp}}
+{\ttfamily \#include "{}learn\+\_\+environment/process\+\_\+runner.\+hpp"{}}\newline
+{\ttfamily \#include $<$QDebug$>$}\newline
+{\ttfamily \#include $<$QRegular\+Expression$>$}\newline
+Include dependency graph for process\+\_\+runner.\+cpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{process__runner_8cpp__incl}
+\end{center}
+\end{figure}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f5f13fe229b80d60476af391bbe953e30fe9704a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8cpp__incl.md5
@@ -0,0 +1 @@
+e5477921da5f2e650124a2fc639a092d
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8cpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8cpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..027b30cb939e888a8fe989bbea77270f780567ee
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8cpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..1eef4266006f5dcce642553964fdaf18de81624e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp.tex
@@ -0,0 +1,24 @@
+\doxysection{process\+\_\+runner.\+hpp File Reference}
+\hypertarget{process__runner_8hpp}{}\label{process__runner_8hpp}\index{process\_runner.hpp@{process\_runner.hpp}}
+{\ttfamily \#include $<$QObject$>$}\newline
+{\ttfamily \#include $<$QProcess$>$}\newline
+{\ttfamily \#include $<$QTimer$>$}\newline
+Include dependency graph for process\+\_\+runner.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=276pt]{process__runner_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=292pt]{process__runner_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+class \mbox{\hyperlink{classProcessRunner}{Process\+Runner}}
+\begin{DoxyCompactList}\small\item\em Manages the execution of an external process with a timeout. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..da4499010e0cef9518a29739981f6bd5e35bf546
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+c6757c2d3f86454e7cd4ba28f87f9c12
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2c1f5348dc0bc5ac26963dbc87f2db8f04e04b86
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f44f4320a001edd824db97e4904f752751245784
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp__incl.md5
@@ -0,0 +1 @@
+996832101165f5f6f596629521d18c59
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..cb66db3d7cf76f8fdba0b5891a81a840941e2148
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..87b44932f12072e0afebe8037c7a12bd52254738
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/process__runner_8hpp_source.tex
@@ -0,0 +1,56 @@
+\doxysection{process\+\_\+runner.\+hpp}
+\hypertarget{process__runner_8hpp_source}{}\label{process__runner_8hpp_source}\index{process\_runner.hpp@{process\_runner.hpp}}
+\mbox{\hyperlink{process__runner_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ PROCESS\_RUNNER\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ PROCESS\_RUNNER\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ <QObject>}}
+\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ <QProcess>}}
+\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ <QTimer>}}
+\DoxyCodeLine{00007\ }
+\DoxyCodeLine{00015\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classProcessRunner}{ProcessRunner}}\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classQObject}{QObject}}\ \{}
+\DoxyCodeLine{00016\ \ \ \ \ Q\_OBJECT}
+\DoxyCodeLine{00017\ }
+\DoxyCodeLine{00018\ \textcolor{keyword}{public}:}
+\DoxyCodeLine{00027\ \ \ \ \ \mbox{\hyperlink{classProcessRunner_a8d3ba848e57c03660af7c68dcfd7e904}{ProcessRunner}}(\textcolor{keyword}{const}\ QString\ \&program,}
+\DoxyCodeLine{00028\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ QStringList\ \&arguments,}
+\DoxyCodeLine{00029\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ timeoutSeconds,}
+\DoxyCodeLine{00030\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{classQObject}{QObject}}\ *parent\ =\ \textcolor{keyword}{nullptr},}
+\DoxyCodeLine{00031\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ QString\ processName\ =\ \textcolor{stringliteral}{"{}process"{}});}
+\DoxyCodeLine{00032\ }
+\DoxyCodeLine{00036\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classProcessRunner_ae69a94ddf835cec0a63fe7f4fdb61934}{start}}();}
+\DoxyCodeLine{00037\ }
+\DoxyCodeLine{00038\ Q\_SIGNALS:}
+\DoxyCodeLine{00044\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classProcessRunner_a76c6897c0cf00b9034e6deb9662debbf}{finished}}(\textcolor{keywordtype}{int}\ exitCode,\ QProcess::ExitStatus\ exitStatus);}
+\DoxyCodeLine{00045\ }
+\DoxyCodeLine{00050\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classProcessRunner_ad6840bbd9e54b7c6a0678dc9c5c792d7}{outputReady}}(\textcolor{keyword}{const}\ QString\ \&output);}
+\DoxyCodeLine{00051\ }
+\DoxyCodeLine{00056\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classProcessRunner_a9ad2c856469a7129c905721309620e05}{errorReady}}(\textcolor{keyword}{const}\ QString\ \&error);}
+\DoxyCodeLine{00057\ }
+\DoxyCodeLine{00061\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classProcessRunner_ae42c9c4e04890fffa674e06eedf631b3}{timeout}}();}
+\DoxyCodeLine{00062\ }
+\DoxyCodeLine{00063\ \textcolor{keyword}{public}\ Q\_SLOTS:}
+\DoxyCodeLine{00067\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classProcessRunner_abb4be6a4283702e38a9eb7d51438efb6}{forceStop}}();}
+\DoxyCodeLine{00068\ }
+\DoxyCodeLine{00069\ \textcolor{keyword}{private}\ Q\_SLOTS:}
+\DoxyCodeLine{00075\ \ \ \ \ \textcolor{keywordtype}{void}\ onProcessFinished(\textcolor{keywordtype}{int}\ exitCode,\ QProcess::ExitStatus\ exitStatus);}
+\DoxyCodeLine{00076\ }
+\DoxyCodeLine{00080\ \ \ \ \ \textcolor{keywordtype}{void}\ onReadyReadStandardOutput();}
+\DoxyCodeLine{00081\ }
+\DoxyCodeLine{00085\ \ \ \ \ \textcolor{keywordtype}{void}\ onReadyReadStandardError();}
+\DoxyCodeLine{00086\ }
+\DoxyCodeLine{00090\ \ \ \ \ \textcolor{keywordtype}{void}\ onTimeout();}
+\DoxyCodeLine{00091\ }
+\DoxyCodeLine{00092\ \textcolor{keyword}{private}:}
+\DoxyCodeLine{00093\ \ \ \ \ QProcess\ *process;\ }
+\DoxyCodeLine{00094\ \ \ \ \ QTimer\ *timer;\ }
+\DoxyCodeLine{00095\ \ \ \ \ QString\ program;\ }
+\DoxyCodeLine{00096\ \ \ \ \ QStringList\ arguments;\ }
+\DoxyCodeLine{00097\ \ \ \ \ \textcolor{keywordtype}{int}\ timeoutSeconds;\ }
+\DoxyCodeLine{00098\ \ \ \ \ QString\ processName;\ }
+\DoxyCodeLine{00099\ \};}
+\DoxyCodeLine{00100\ }
+\DoxyCodeLine{00101\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ PROCESS\_RUNNER\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/refman.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/refman.tex
new file mode 100644
index 0000000000000000000000000000000000000000..0789db3c86afa861921f830e22b7df6917247e1d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/refman.tex
@@ -0,0 +1,315 @@
+  % Handle batch mode
+  % to overcome problems with too many open files
+  \let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}
+  \RequirePackage{iftex}
+  \ifLuaTeX
+    \directlua{pdf.setminorversion(7)}
+  \fi
+  \ifXeTeX
+    \special{pdf:minorversion 7}
+  \fi
+  \ifPDFTeX
+    \pdfminorversion=7
+  \fi
+  % Set document class depending on configuration
+  \documentclass[twoside]{book}
+  %% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package
+  \usepackage{ifthen}
+  \ifx\requestedLaTeXdate\undefined
+    \usepackage{array}
+  \else
+    \usepackage{array}[=2016-10-06]
+  \fi
+  %%
+  % Packages required by doxygen
+  \makeatletter
+  \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+  % suppress package identification of infwarerr as it contains the word "warning"
+  \let\@@protected@wlog\protected@wlog
+  \def\protected@wlog#1{\wlog{package info suppressed}}
+  \RequirePackage{infwarerr}
+  \let\protected@wlog\@@protected@wlog
+  \makeatother
+  \IfFormatAtLeastTF{2016/01/01}{}{\usepackage{fixltx2e}} % for \textsubscript
+  \ifPDFTeX
+    \IfFormatAtLeastTF{2015/01/01}{\pdfsuppresswarningpagegroup=1}{}
+  \fi
+  \usepackage{doxygen}
+  \usepackage{graphicx}
+  \iftutex
+    \usepackage{fontspec}
+    \defaultfontfeatures{Ligatures={TeX}}
+    \usepackage{unicode-math}
+  \else
+    \usepackage[utf8]{inputenc}
+  \fi
+  \usepackage{makeidx}
+  \PassOptionsToPackage{warn}{textcomp}
+  \usepackage{textcomp}
+  \usepackage[nointegrals]{wasysym}
+  \usepackage{ifxetex}
+  % NLS support packages
+  % Define default fonts
+  % Font selection
+  \iftutex
+  \else
+    \usepackage[T1]{fontenc}
+  \fi
+  % set main and monospaced font
+  \usepackage[scaled=.90]{helvet}
+\usepackage{courier}
+\renewcommand{\familydefault}{\sfdefault}
+  \doxyallsectionsfont{%
+    \fontseries{bc}\selectfont%
+    \color{darkgray}%
+  }
+  \renewcommand{\DoxyLabelFont}{%
+    \fontseries{bc}\selectfont%
+    \color{darkgray}%
+  }
+  \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
+   % Arguments of doxygenemoji:
+   % 1) ':<text>:' form of the emoji, already LaTeX-escaped
+   % 2) file with the name of the emoji without the .png extension
+   % in case image exist use this otherwise use the ':<text>:' form
+   \newcommand{\doxygenemoji}[2]{%
+     \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}%
+   }
+  % Page & text layout
+  \usepackage{geometry}
+  \geometry{%
+    a4paper,%
+    top=2.5cm,%
+    bottom=2.5cm,%
+    left=2.5cm,%
+    right=2.5cm%
+  }
+  \usepackage{changepage}
+  % Allow a bit of overflow to go unnoticed by other means
+  \tolerance=750
+  \hfuzz=15pt
+  \hbadness=750
+  \setlength{\emergencystretch}{15pt}
+  \setlength{\parindent}{0cm}
+  \newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}}
+  \newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}}
+  \doxynormalparskip
+  % Redefine paragraph/subparagraph environments, using sectsty fonts
+  \makeatletter
+  \renewcommand{\paragraph}{%
+    \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
+      \normalfont\normalsize\bfseries\SS@parafont%
+    }%
+  }
+  \renewcommand{\subparagraph}{%
+    \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
+      \normalfont\normalsize\bfseries\SS@subparafont%
+    }%
+  }
+  \makeatother
+  \makeatletter
+  \newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@}
+  \makeatother
+  % Headers & footers
+  \usepackage{fancyhdr}
+  \pagestyle{fancyplain}
+  \renewcommand{\footrulewidth}{0.4pt}
+  \fancypagestyle{fancyplain}{
+    \fancyhf{}
+    \fancyhead[LE, RO]{\bfseries\thepage}
+    \fancyhead[LO]{\bfseries\rightmark}
+    \fancyhead[RE]{\bfseries\leftmark}
+    \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
+  }
+  \fancypagestyle{plain}{
+    \fancyhf{}
+    \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
+    \renewcommand{\headrulewidth}{0pt}
+  }
+  \pagestyle{fancyplain}
+  \renewcommand{\chaptermark}[1]{%
+    \markboth{#1}{}%
+  }
+  \renewcommand{\sectionmark}[1]{%
+    \markright{\thesection\ #1}%
+  }
+  % ToC, LoF, LoT, bibliography, and index
+  % Indices & bibliography
+  \usepackage{natbib}
+  \usepackage[titles]{tocloft}
+  \setcounter{tocdepth}{3}
+  \setcounter{secnumdepth}{5}
+  % creating indexes
+  \makeindex
+  \ifPDFTeX
+\usepackage{newunicodechar}
+  \makeatletter
+    \def\doxynewunicodechar#1#2{%
+    \@tempswafalse
+    \edef\nuc@tempa{\detokenize{#1}}%
+    \if\relax\nuc@tempa\relax
+      \nuc@emptyargerr
+    \else
+      \edef\@tempb{\expandafter\@car\nuc@tempa\@nil}%
+      \nuc@check
+      \if@tempswa
+        \@namedef{u8:\nuc@tempa}{#2}%
+      \fi
+    \fi
+  }
+  \makeatother
+  \doxynewunicodechar{⁻}{${}^{-}$}% Superscript minus
+  \doxynewunicodechar{²}{${}^{2}$}% Superscript two
+  \doxynewunicodechar{³}{${}^{3}$}% Superscript three
+\fi
+  % Hyperlinks
+    % Hyperlinks (required, but should be loaded last)
+    \ifPDFTeX
+      \usepackage[pdftex,pagebackref=true]{hyperref}
+    \else
+      \ifXeTeX
+        \usepackage[xetex,pagebackref=true]{hyperref}
+      \else
+        \ifLuaTeX
+          \usepackage[luatex,pagebackref=true]{hyperref}
+        \else
+          \usepackage[ps2pdf,pagebackref=true]{hyperref}
+        \fi
+      \fi
+    \fi
+    \hypersetup{%
+      colorlinks=true,%
+      linkcolor=blue,%
+      citecolor=blue,%
+      unicode,%
+      pdftitle={Learn Environment},%
+      pdfsubject={}%
+    }
+  % Custom commands used by the header
+  % Custom commands
+  \newcommand{\clearemptydoublepage}{%
+    \newpage{\pagestyle{empty}\cleardoublepage}%
+  }
+  % caption style definition
+  \usepackage{caption}
+  \captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}
+  % in page table of contents
+  \IfFormatAtLeastTF{2023/05/01}{\usepackage[deeplevels]{etoc}}{\usepackage[deeplevels]{etoc_doxygen}}
+  \etocsettocstyle{\doxytocparskip}{\doxynormalparskip}
+  \etocsetlevel{subsubsubsection}{4}
+  \etocsetlevel{subsubsubsubsection}{5}
+  \etocsetlevel{subsubsubsubsubsection}{6}
+  \etocsetlevel{subsubsubsubsubsubsection}{7}
+  \etocsetlevel{paragraph}{8}
+  \etocsetlevel{subparagraph}{9}
+  % prevent numbers overlap the titles in toc
+  \renewcommand{\numberline}[1]{#1~}
+% End of preamble, now comes the document contents
+%===== C O N T E N T S =====
+\begin{document}
+  \raggedbottom
+  % Titlepage & ToC
+    % To avoid duplicate page anchors due to reuse of same numbers for
+    % the index (be it as roman numbers)
+    \hypersetup{pageanchor=false,
+                bookmarksnumbered=true,
+                pdfencoding=unicode
+               }
+  \pagenumbering{alph}
+  \begin{titlepage}
+  \vspace*{7cm}
+  \begin{center}%
+  {\Large Learn Environment}\\
+  \vspace*{1cm}
+  {\large Generated by Doxygen 1.12.0}\\
+  \end{center}
+  \end{titlepage}
+  \clearemptydoublepage
+  \pagenumbering{roman}
+  \tableofcontents
+  \clearemptydoublepage
+  \pagenumbering{arabic}
+  % re-enable anchors again
+  \hypersetup{pageanchor=true}
+%--- Begin generated contents ---
+\chapter{Namespace Index}
+\input{namespaces}
+\chapter{Hierarchical Index}
+\input{hierarchy}
+\chapter{Class Index}
+\input{annotated}
+\chapter{File Index}
+\input{files}
+\chapter{Namespace Documentation}
+\input{namespaceFolderStructureConstants}
+\input{namespaceUi}
+\chapter{Class Documentation}
+\input{classCustomListWidget}
+\input{classExecuteFrame}
+\input{classLearnEnvironment}
+\input{classNotebookConverter}
+\input{classProcessRunner}
+\input{classQFrame}
+\input{classQListWidget}
+\input{classQObject}
+\input{classQWidget}
+\input{classScriptWorker}
+\input{classSidebar}
+\input{structSubtask}
+\input{classSubtaskItem}
+\input{structTask}
+\input{classTaskExecutor}
+\input{classTaskManager}
+\input{classTaskParser}
+\input{classTaskUI}
+\chapter{File Documentation}
+\input{custom__list__widget_8hpp}
+\input{custom__list__widget_8hpp_source}
+\input{execute__frame_8hpp}
+\input{execute__frame_8hpp_source}
+\input{folder__structure__constants_8hpp}
+\input{folder__structure__constants_8hpp_source}
+\input{learn__environment_8hpp}
+\input{learn__environment_8hpp_source}
+\input{notebook__converter_8hpp}
+\input{notebook__converter_8hpp_source}
+\input{process__runner_8hpp}
+\input{process__runner_8hpp_source}
+\input{script__worker_8hpp}
+\input{script__worker_8hpp_source}
+\input{sidebar_8hpp}
+\input{sidebar_8hpp_source}
+\input{subtask__item_8hpp}
+\input{subtask__item_8hpp_source}
+\input{task_8hpp}
+\input{task_8hpp_source}
+\input{task__executor_8hpp}
+\input{task__executor_8hpp_source}
+\input{task__manager_8hpp}
+\input{task__manager_8hpp_source}
+\input{task__parser_8hpp}
+\input{task__parser_8hpp_source}
+\input{task__ui_8hpp}
+\input{task__ui_8hpp_source}
+\input{custom__list__widget_8cpp}
+\input{execute__frame_8cpp}
+\input{learn__environment_8cpp}
+\input{notebook__converter_8cpp}
+\input{process__runner_8cpp}
+\input{script__worker_8cpp}
+\input{sidebar_8cpp}
+\input{subtask__item_8cpp}
+\input{task__executor_8cpp}
+\input{task__manager_8cpp}
+\input{task__parser_8cpp}
+\input{task__ui_8cpp}
+%--- End generated contents ---
+% Index
+  \backmatter
+  \newpage
+  \phantomsection
+  \clearemptydoublepage
+  \addcontentsline{toc}{chapter}{\indexname}
+  \printindex
+% Required for some languages (in combination with latexdocumentpre from the header)
+\end{document}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8cpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8cpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..bb233f050c2424c56851d11944d9c5e32270825c
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8cpp.tex
@@ -0,0 +1,13 @@
+\doxysection{script\+\_\+worker.\+cpp File Reference}
+\hypertarget{script__worker_8cpp}{}\label{script__worker_8cpp}\index{script\_worker.cpp@{script\_worker.cpp}}
+{\ttfamily \#include "{}learn\+\_\+environment/script\+\_\+worker.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/process\+\_\+runner.\+hpp"{}}\newline
+{\ttfamily \#include $<$QDebug$>$}\newline
+{\ttfamily \#include $<$QFile$>$}\newline
+Include dependency graph for script\+\_\+worker.\+cpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{script__worker_8cpp__incl}
+\end{center}
+\end{figure}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..671935d8eb1f467e00618cec229a04457d150516
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8cpp__incl.md5
@@ -0,0 +1 @@
+9175d95b8d95fe9947702e0bf50c1ccd
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8cpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8cpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..63f89988b3bbb677e9dd2fc3dd1f33219ef314c1
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8cpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..c214863fcf8e6940afcf92224366b3e3c2ca257d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp.tex
@@ -0,0 +1,26 @@
+\doxysection{script\+\_\+worker.\+hpp File Reference}
+\hypertarget{script__worker_8hpp}{}\label{script__worker_8hpp}\index{script\_worker.hpp@{script\_worker.hpp}}
+{\ttfamily \#include $<$QObject$>$}\newline
+{\ttfamily \#include $<$QString$>$}\newline
+{\ttfamily \#include $<$QProcess$>$}\newline
+{\ttfamily \#include $<$QList$>$}\newline
+{\ttfamily \#include "{}notebook\+\_\+converter.\+hpp"{}}\newline
+Include dependency graph for script\+\_\+worker.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{script__worker_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=288pt]{script__worker_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+class \mbox{\hyperlink{classScriptWorker}{Script\+Worker}}
+\begin{DoxyCompactList}\small\item\em Manages the execution of scripts for tasks. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..05c0972a00c9448bbf8da168d19346ddc1dfd014
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+d25b68f815609f14283db95b0848982b
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7c3df6985e5c86edeb660e1c02d7403df921ebcd
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..411b2dd3c9a7bdc60a9f0d482a4f2e1e14666921
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp__incl.md5
@@ -0,0 +1 @@
+08d401aa020ea71c6faeb84c84c3e292
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..559574a436dbed0cbc29e8b204e43a1baca4e7bc
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..0dfcc4f765cbd7789303192c02f185f1c22acb64
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/script__worker_8hpp_source.tex
@@ -0,0 +1,70 @@
+\doxysection{script\+\_\+worker.\+hpp}
+\hypertarget{script__worker_8hpp_source}{}\label{script__worker_8hpp_source}\index{script\_worker.hpp@{script\_worker.hpp}}
+\mbox{\hyperlink{script__worker_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ SCRIPT\_WORKER\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ SCRIPT\_WORKER\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ <QObject>}}
+\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ <QString>}}
+\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ <QProcess>}}
+\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ <QList>}}
+\DoxyCodeLine{00008\ }
+\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{notebook__converter_8hpp}{notebook\_converter.hpp}}"{}}}
+\DoxyCodeLine{00010\ }
+\DoxyCodeLine{00011\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classProcessRunner}{ProcessRunner}};}
+\DoxyCodeLine{00012\ }
+\DoxyCodeLine{00021\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classScriptWorker}{ScriptWorker}}\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classQObject}{QObject}}\ \{}
+\DoxyCodeLine{00022\ \ \ \ \ Q\_OBJECT}
+\DoxyCodeLine{00023\ }
+\DoxyCodeLine{00024\ \textcolor{keyword}{public}:}
+\DoxyCodeLine{00033\ \ \ \ \ \mbox{\hyperlink{classScriptWorker_a1eb9773d50b730f913bb60149515aef5}{ScriptWorker}}(\textcolor{keyword}{const}\ QString\ \&notebookPath,}
+\DoxyCodeLine{00034\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ QString\ \&convertedScriptPath,}
+\DoxyCodeLine{00035\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{const}\ QString\ \&evalScriptPath,}
+\DoxyCodeLine{00036\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ parallelizedEvaluation,}
+\DoxyCodeLine{00037\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{int}\ timeoutSeconds);}
+\DoxyCodeLine{00038\ }
+\DoxyCodeLine{00039\ \textcolor{keyword}{public}\ Q\_SLOTS:}
+\DoxyCodeLine{00043\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classScriptWorker_a501653e756b40c33f4bd37957b398de3}{startExecution}}();}
+\DoxyCodeLine{00044\ }
+\DoxyCodeLine{00048\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classScriptWorker_aafadef7996317ca83dcb2605777affe2}{forceStop}}();}
+\DoxyCodeLine{00049\ }
+\DoxyCodeLine{00053\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classScriptWorker_aebb9b3a7fe906be08a8ced46d1a5f523}{executePythonScript}}(\textcolor{keyword}{const}\ QString\ \&scriptPath,\ \textcolor{keyword}{const}\ QString\ \&name);}
+\DoxyCodeLine{00054\ }
+\DoxyCodeLine{00055\ Q\_SIGNALS:}
+\DoxyCodeLine{00059\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classScriptWorker_ac33ab3bb0d1e7e9e0070ac3b7f33b633}{finished}}();}
+\DoxyCodeLine{00060\ }
+\DoxyCodeLine{00065\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classScriptWorker_a5f0a6e5095c8e55559045d7d9d2e2e1a}{failed}}(\textcolor{keyword}{const}\ QString\ \&error);}
+\DoxyCodeLine{00066\ }
+\DoxyCodeLine{00067\ \textcolor{keyword}{private}:}
+\DoxyCodeLine{00071\ \ \ \ \ \textcolor{keywordtype}{void}\ convertAndExecuteNotebook();}
+\DoxyCodeLine{00072\ }
+\DoxyCodeLine{00076\ \ \ \ \ \textcolor{keywordtype}{void}\ executeConvertedScript();}
+\DoxyCodeLine{00077\ }
+\DoxyCodeLine{00081\ \ \ \ \ \textcolor{keywordtype}{void}\ evaluateScriptInParallel();}
+\DoxyCodeLine{00082\ }
+\DoxyCodeLine{00086\ \ \ \ \ \textcolor{keywordtype}{void}\ checkResult();}
+\DoxyCodeLine{00087\ }
+\DoxyCodeLine{00091\ \ \ \ \ \textcolor{keywordtype}{void}\ checkAndEmitFinished();}
+\DoxyCodeLine{00092\ }
+\DoxyCodeLine{00098\ \ \ \ \ QString\ formatMessage(\textcolor{keyword}{const}\ QString\ \&msg,\ \textcolor{keywordtype}{bool}\ fromEval\ =\ \textcolor{keyword}{false});}
+\DoxyCodeLine{00099\ }
+\DoxyCodeLine{00100\ \ \ \ \ QString\ notebookPath;\ }
+\DoxyCodeLine{00101\ \ \ \ \ QString\ convertedScriptPath;\ }
+\DoxyCodeLine{00102\ \ \ \ \ QString\ evalScriptPath;\ }
+\DoxyCodeLine{00103\ \ \ \ \ \textcolor{keywordtype}{bool}\ parallelizedEvaluationRequired;\ }
+\DoxyCodeLine{00104\ \ \ \ \ \textcolor{keywordtype}{int}\ timeoutSeconds;\ }
+\DoxyCodeLine{00105\ }
+\DoxyCodeLine{00106\ \ \ \ \ \textcolor{keywordtype}{bool}\ mainScriptFinished;\ }
+\DoxyCodeLine{00107\ \ \ \ \ \textcolor{keywordtype}{bool}\ evalScriptFinished;\ }
+\DoxyCodeLine{00108\ }
+\DoxyCodeLine{00109\ \ \ \ \ QList<ProcessRunner*>\ processRunners;\ }
+\DoxyCodeLine{00110\ \ \ \ \ \mbox{\hyperlink{classNotebookConverter}{NotebookConverter}}\ converter;\ }
+\DoxyCodeLine{00111\ }
+\DoxyCodeLine{00112\ \ \ \ \ QString\ errorOutput;\ }
+\DoxyCodeLine{00113\ \ \ \ \ QString\ evaluationOutput;\ }
+\DoxyCodeLine{00114\ \};}
+\DoxyCodeLine{00115\ }
+\DoxyCodeLine{00116\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ SCRIPT\_WORKER\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8cpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8cpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..87b8660472150f4feeb021ee9c369294194b12f9
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8cpp.tex
@@ -0,0 +1,20 @@
+\doxysection{sidebar.\+cpp File Reference}
+\hypertarget{sidebar_8cpp}{}\label{sidebar_8cpp}\index{sidebar.cpp@{sidebar.cpp}}
+{\ttfamily \#include "{}learn\+\_\+environment/sidebar.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/custom\+\_\+list\+\_\+widget.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/task.\+hpp"{}}\newline
+{\ttfamily \#include $<$QFont$>$}\newline
+{\ttfamily \#include $<$QDebug$>$}\newline
+{\ttfamily \#include $<$QBrush$>$}\newline
+{\ttfamily \#include $<$QMap$>$}\newline
+{\ttfamily \#include $<$QString\+List$>$}\newline
+{\ttfamily \#include $<$QObject$>$}\newline
+{\ttfamily \#include $<$QVBox\+Layout$>$}\newline
+{\ttfamily \#include $<$QList\+Widget\+Item$>$}\newline
+Include dependency graph for sidebar.\+cpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{sidebar_8cpp__incl}
+\end{center}
+\end{figure}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..c25e8f44b320a953bc64f37bb67ef1578fa9f93f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8cpp__incl.md5
@@ -0,0 +1 @@
+36af829d2a15fd589a35ea21f4eecfb8
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8cpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8cpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..c57c17db15708958042e15baf378747b6a63ebe2
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8cpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..de7d913e97c50c11f7b13bf18799bf879a713025
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp.tex
@@ -0,0 +1,29 @@
+\doxysection{sidebar.\+hpp File Reference}
+\hypertarget{sidebar_8hpp}{}\label{sidebar_8hpp}\index{sidebar.hpp@{sidebar.hpp}}
+{\ttfamily \#include "{}custom\+\_\+list\+\_\+widget.\+hpp"{}}\newline
+{\ttfamily \#include "{}task.\+hpp"{}}\newline
+{\ttfamily \#include $<$QWidget$>$}\newline
+{\ttfamily \#include $<$QVBox\+Layout$>$}\newline
+{\ttfamily \#include $<$QLabel$>$}\newline
+{\ttfamily \#include $<$QMap$>$}\newline
+{\ttfamily \#include $<$QList\+Widget$>$}\newline
+{\ttfamily \#include $<$QShared\+Pointer$>$}\newline
+Include dependency graph for sidebar.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{sidebar_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{sidebar_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+class \mbox{\hyperlink{classSidebar}{Sidebar}}
+\begin{DoxyCompactList}\small\item\em Represents the sidebar UI component for displaying tasks. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..d3b8f449fb837964ef3ae3ebf80acfdbb079f1d0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+3e6fbdc3e3aa8811e71e575633c20821
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..23421c34a86ed1f76263600d1b0b164719af5a78
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8de3c372e904b9b83e044a5e380f347efef91aeb
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp__incl.md5
@@ -0,0 +1 @@
+e951c53f33f624b4bf2a1c884a265705
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..5f0e819179c2ddc18def40c37c976e1af46fe584
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..a5c0ce1d2aaec4b221845345cc4551e66884ae03
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/sidebar_8hpp_source.tex
@@ -0,0 +1,44 @@
+\doxysection{sidebar.\+hpp}
+\hypertarget{sidebar_8hpp_source}{}\label{sidebar_8hpp_source}\index{sidebar.hpp@{sidebar.hpp}}
+\mbox{\hyperlink{sidebar_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ SIDEBAR\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ SIDEBAR\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{custom__list__widget_8hpp}{custom\_list\_widget.hpp}}"{}}}
+\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{task_8hpp}{task.hpp}}"{}}}
+\DoxyCodeLine{00006\ }
+\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ <QWidget>}}
+\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ <QVBoxLayout>}}
+\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <QLabel>}}
+\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <QMap>}}
+\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <QListWidget>}}
+\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <QSharedPointer>}}
+\DoxyCodeLine{00013\ }
+\DoxyCodeLine{00022\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classSidebar}{Sidebar}}\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classQWidget}{QWidget}}}
+\DoxyCodeLine{00023\ \{}
+\DoxyCodeLine{00024\ \ \ \ \ Q\_OBJECT}
+\DoxyCodeLine{00025\ }
+\DoxyCodeLine{00026\ \textcolor{keyword}{public}:}
+\DoxyCodeLine{00031\ \ \ \ \ \textcolor{keyword}{explicit}\ \mbox{\hyperlink{classSidebar_a874f7f7907a44517ee9cf9ac2c1888d7}{Sidebar}}(\mbox{\hyperlink{classQWidget}{QWidget}}\ *parent\ =\ \textcolor{keyword}{nullptr});}
+\DoxyCodeLine{00032\ }
+\DoxyCodeLine{00037\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classSidebar_abf817c38465f3382b90d409e9cf87777}{fillSidebarWithTasks}}(\textcolor{keyword}{const}\ QVector<QSharedPointer<Task>>\&\ tasks);}
+\DoxyCodeLine{00038\ }
+\DoxyCodeLine{00043\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classSidebar_a9b621329888b135c42333a7ce8a4cad4}{selectTask}}(\textcolor{keywordtype}{int}\ index);}
+\DoxyCodeLine{00044\ }
+\DoxyCodeLine{00045\ Q\_SIGNALS:}
+\DoxyCodeLine{00050\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classSidebar_ad4d587292c62ad30ac9f1feac5d39499}{taskSelected}}(\textcolor{keywordtype}{int}\ index);}
+\DoxyCodeLine{00051\ }
+\DoxyCodeLine{00052\ \textcolor{keyword}{private}\ Q\_SLOTS:}
+\DoxyCodeLine{00057\ \ \ \ \ \textcolor{keywordtype}{void}\ onTaskItemClicked(QListWidgetItem\ *item);}
+\DoxyCodeLine{00058\ }
+\DoxyCodeLine{00059\ \textcolor{keyword}{private}:}
+\DoxyCodeLine{00064\ \ \ \ \ \mbox{\hyperlink{classCustomListWidget}{CustomListWidget}}*\ createList();}
+\DoxyCodeLine{00065\ }
+\DoxyCodeLine{00066\ \ \ \ \ \mbox{\hyperlink{classCustomListWidget}{CustomListWidget}}\ *listWidget;\ }
+\DoxyCodeLine{00067\ \ \ \ \ QMap<int,\ QListWidgetItem*>\ taskIndexToItemMap;\ }
+\DoxyCodeLine{00068\ \};}
+\DoxyCodeLine{00069\ }
+\DoxyCodeLine{00070\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ SIDEBAR\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structSubtask.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structSubtask.tex
new file mode 100644
index 0000000000000000000000000000000000000000..658d5111a41412a8d171b0d5a8c66664edf0b09f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structSubtask.tex
@@ -0,0 +1,204 @@
+\doxysection{Subtask Struct Reference}
+\hypertarget{structSubtask}{}\label{structSubtask}\index{Subtask@{Subtask}}
+
+
+Represents a subtask within a task.  
+
+
+
+
+{\ttfamily \#include $<$task.\+hpp$>$}
+
+
+
+Collaboration diagram for Subtask\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{structSubtask__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item 
+QString \mbox{\hyperlink{structSubtask_a4fc46ff8e54ab67641df5ff45e7e0cb4}{title}}
+\begin{DoxyCompactList}\small\item\em The title of the subtask. \end{DoxyCompactList}\item 
+QString \mbox{\hyperlink{structSubtask_a9b2edd425425878f6e57a2f213b1211a}{description}}
+\begin{DoxyCompactList}\small\item\em The description of the subtask. \end{DoxyCompactList}\item 
+QString \mbox{\hyperlink{structSubtask_a905ed579cc13759a257c37d261141281}{file}}
+\begin{DoxyCompactList}\small\item\em The file name of the subtask. \end{DoxyCompactList}\item 
+QString \mbox{\hyperlink{structSubtask_adc3ab0bdda7c565666095845a3e4567f}{file\+Path}}
+\begin{DoxyCompactList}\small\item\em The file path of the subtask. \end{DoxyCompactList}\item 
+QString \mbox{\hyperlink{structSubtask_ad6350ae5d46df3d006f4f0787915ea9f}{solution\+File\+Path}}
+\begin{DoxyCompactList}\small\item\em The file path to the solution of the subtask. \end{DoxyCompactList}\item 
+QString \mbox{\hyperlink{structSubtask_ae73daaeeae0fa09de92ef428be2fdab3}{evaluation\+File\+Path}}
+\begin{DoxyCompactList}\small\item\em The file path to the evaluation script of the subtask. \end{DoxyCompactList}\item 
+int \mbox{\hyperlink{structSubtask_a69b5b90686d9e1c75b0f071a7b9dc31b}{timeout\+Seconds}} = 60
+\begin{DoxyCompactList}\small\item\em The timeout for the subtask execution in seconds. \end{DoxyCompactList}\item 
+bool \mbox{\hyperlink{structSubtask_ae0c283c25316796864e9ef0d766acb60}{parallelized\+Evaluation\+Required}} = false
+\begin{DoxyCompactList}\small\item\em Whether parallelized evaluation is required. \end{DoxyCompactList}\item 
+bool \mbox{\hyperlink{structSubtask_ae869bad678ab4835b24aeb56176c21aa}{reset\+\_\+robot\+\_\+before\+\_\+executing}} = true
+\begin{DoxyCompactList}\small\item\em Whether to reset the robot before executing the subtask. \end{DoxyCompactList}\item 
+QWeak\+Pointer$<$ \mbox{\hyperlink{structTask}{Task}} $>$ \mbox{\hyperlink{structSubtask_a4cdfbab855cd65277e17c8975bb0d730}{parent\+Task}}
+\begin{DoxyCompactList}\small\item\em Weak pointer to the parent task. \end{DoxyCompactList}\item 
+\mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0}{Subtask\+Status}} \mbox{\hyperlink{structSubtask_a293ddda988cb5fe92fcb5e5189b86850}{status}} = \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0}{Subtask\+Status\+::\+Inactive}}
+\begin{DoxyCompactList}\small\item\em The status of the subtask. \end{DoxyCompactList}\item 
+bool \mbox{\hyperlink{structSubtask_a0e3d8e77e26cdb58b2e9faa8ec2e1707}{has\+Been\+Executed}} = false
+\begin{DoxyCompactList}\small\item\em Whether the subtask has been executed at least once. \end{DoxyCompactList}\item 
+bool \mbox{\hyperlink{structSubtask_ab1e1bff66e7464efa54419b36006f1a8}{last\+Execution\+Failed}} = false
+\begin{DoxyCompactList}\small\item\em Whether the subtask has been executed at least once. \end{DoxyCompactList}\item 
+QString \mbox{\hyperlink{structSubtask_a2c4bcefd1e42773c5e23abd9ba0b30f2}{last\+Execution\+Error}}
+\begin{DoxyCompactList}\small\item\em The error message from the last execution of the subtask. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Represents a subtask within a task. 
+
+The \doxylink{structSubtask}{Subtask} struct contains information about a subtask, including its title, description, file paths, difficulty, and status. It also includes optional fields for timeout and parallelized evaluation. 
+
+\doxysubsection{Member Data Documentation}
+\Hypertarget{structSubtask_a9b2edd425425878f6e57a2f213b1211a}\index{Subtask@{Subtask}!description@{description}}
+\index{description@{description}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{description}{description}}
+{\footnotesize\ttfamily \label{structSubtask_a9b2edd425425878f6e57a2f213b1211a} 
+QString Subtask\+::description}
+
+
+
+The description of the subtask. 
+
+\Hypertarget{structSubtask_ae73daaeeae0fa09de92ef428be2fdab3}\index{Subtask@{Subtask}!evaluationFilePath@{evaluationFilePath}}
+\index{evaluationFilePath@{evaluationFilePath}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{evaluationFilePath}{evaluationFilePath}}
+{\footnotesize\ttfamily \label{structSubtask_ae73daaeeae0fa09de92ef428be2fdab3} 
+QString Subtask\+::evaluation\+File\+Path}
+
+
+
+The file path to the evaluation script of the subtask. 
+
+\Hypertarget{structSubtask_a905ed579cc13759a257c37d261141281}\index{Subtask@{Subtask}!file@{file}}
+\index{file@{file}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{file}{file}}
+{\footnotesize\ttfamily \label{structSubtask_a905ed579cc13759a257c37d261141281} 
+QString Subtask\+::file}
+
+
+
+The file name of the subtask. 
+
+\Hypertarget{structSubtask_adc3ab0bdda7c565666095845a3e4567f}\index{Subtask@{Subtask}!filePath@{filePath}}
+\index{filePath@{filePath}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{filePath}{filePath}}
+{\footnotesize\ttfamily \label{structSubtask_adc3ab0bdda7c565666095845a3e4567f} 
+QString Subtask\+::file\+Path}
+
+
+
+The file path of the subtask. 
+
+\Hypertarget{structSubtask_a0e3d8e77e26cdb58b2e9faa8ec2e1707}\index{Subtask@{Subtask}!hasBeenExecuted@{hasBeenExecuted}}
+\index{hasBeenExecuted@{hasBeenExecuted}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{hasBeenExecuted}{hasBeenExecuted}}
+{\footnotesize\ttfamily \label{structSubtask_a0e3d8e77e26cdb58b2e9faa8ec2e1707} 
+bool Subtask\+::has\+Been\+Executed = false}
+
+
+
+Whether the subtask has been executed at least once. 
+
+\Hypertarget{structSubtask_a2c4bcefd1e42773c5e23abd9ba0b30f2}\index{Subtask@{Subtask}!lastExecutionError@{lastExecutionError}}
+\index{lastExecutionError@{lastExecutionError}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{lastExecutionError}{lastExecutionError}}
+{\footnotesize\ttfamily \label{structSubtask_a2c4bcefd1e42773c5e23abd9ba0b30f2} 
+QString Subtask\+::last\+Execution\+Error}
+
+
+
+The error message from the last execution of the subtask. 
+
+\Hypertarget{structSubtask_ab1e1bff66e7464efa54419b36006f1a8}\index{Subtask@{Subtask}!lastExecutionFailed@{lastExecutionFailed}}
+\index{lastExecutionFailed@{lastExecutionFailed}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{lastExecutionFailed}{lastExecutionFailed}}
+{\footnotesize\ttfamily \label{structSubtask_ab1e1bff66e7464efa54419b36006f1a8} 
+bool Subtask\+::last\+Execution\+Failed = false}
+
+
+
+Whether the subtask has been executed at least once. 
+
+\Hypertarget{structSubtask_ae0c283c25316796864e9ef0d766acb60}\index{Subtask@{Subtask}!parallelizedEvaluationRequired@{parallelizedEvaluationRequired}}
+\index{parallelizedEvaluationRequired@{parallelizedEvaluationRequired}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{parallelizedEvaluationRequired}{parallelizedEvaluationRequired}}
+{\footnotesize\ttfamily \label{structSubtask_ae0c283c25316796864e9ef0d766acb60} 
+bool Subtask\+::parallelized\+Evaluation\+Required = false}
+
+
+
+Whether parallelized evaluation is required. 
+
+\Hypertarget{structSubtask_a4cdfbab855cd65277e17c8975bb0d730}\index{Subtask@{Subtask}!parentTask@{parentTask}}
+\index{parentTask@{parentTask}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{parentTask}{parentTask}}
+{\footnotesize\ttfamily \label{structSubtask_a4cdfbab855cd65277e17c8975bb0d730} 
+QWeak\+Pointer$<$\mbox{\hyperlink{structTask}{Task}}$>$ Subtask\+::parent\+Task}
+
+
+
+Weak pointer to the parent task. 
+
+\Hypertarget{structSubtask_ae869bad678ab4835b24aeb56176c21aa}\index{Subtask@{Subtask}!reset\_robot\_before\_executing@{reset\_robot\_before\_executing}}
+\index{reset\_robot\_before\_executing@{reset\_robot\_before\_executing}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{reset\_robot\_before\_executing}{reset\_robot\_before\_executing}}
+{\footnotesize\ttfamily \label{structSubtask_ae869bad678ab4835b24aeb56176c21aa} 
+bool Subtask\+::reset\+\_\+robot\+\_\+before\+\_\+executing = true}
+
+
+
+Whether to reset the robot before executing the subtask. 
+
+\Hypertarget{structSubtask_ad6350ae5d46df3d006f4f0787915ea9f}\index{Subtask@{Subtask}!solutionFilePath@{solutionFilePath}}
+\index{solutionFilePath@{solutionFilePath}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{solutionFilePath}{solutionFilePath}}
+{\footnotesize\ttfamily \label{structSubtask_ad6350ae5d46df3d006f4f0787915ea9f} 
+QString Subtask\+::solution\+File\+Path}
+
+
+
+The file path to the solution of the subtask. 
+
+\Hypertarget{structSubtask_a293ddda988cb5fe92fcb5e5189b86850}\index{Subtask@{Subtask}!status@{status}}
+\index{status@{status}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{status}{status}}
+{\footnotesize\ttfamily \label{structSubtask_a293ddda988cb5fe92fcb5e5189b86850} 
+\mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0}{Subtask\+Status}} Subtask\+::status = \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0}{Subtask\+Status\+::\+Inactive}}}
+
+
+
+The status of the subtask. 
+
+\Hypertarget{structSubtask_a69b5b90686d9e1c75b0f071a7b9dc31b}\index{Subtask@{Subtask}!timeoutSeconds@{timeoutSeconds}}
+\index{timeoutSeconds@{timeoutSeconds}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{timeoutSeconds}{timeoutSeconds}}
+{\footnotesize\ttfamily \label{structSubtask_a69b5b90686d9e1c75b0f071a7b9dc31b} 
+int Subtask\+::timeout\+Seconds = 60}
+
+
+
+The timeout for the subtask execution in seconds. 
+
+\Hypertarget{structSubtask_a4fc46ff8e54ab67641df5ff45e7e0cb4}\index{Subtask@{Subtask}!title@{title}}
+\index{title@{title}!Subtask@{Subtask}}
+\doxysubsubsection{\texorpdfstring{title}{title}}
+{\footnotesize\ttfamily \label{structSubtask_a4fc46ff8e54ab67641df5ff45e7e0cb4} 
+QString Subtask\+::title}
+
+
+
+The title of the subtask. 
+
+
+
+The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{task_8hpp}{task.\+hpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structSubtask__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structSubtask__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..e39f8c52c92b95b223f28818f109acbd57aff586
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structSubtask__coll__graph.md5
@@ -0,0 +1 @@
+82a617a641b0828d618b89a099c88e58
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structSubtask__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structSubtask__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..41d6e22e863b37ad4538a11b62ebc6352289b8c8
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structSubtask__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structTask.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structTask.tex
new file mode 100644
index 0000000000000000000000000000000000000000..c52e8419a0e3566bd39fbeae557e6225432dea11
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structTask.tex
@@ -0,0 +1,120 @@
+\doxysection{Task Struct Reference}
+\hypertarget{structTask}{}\label{structTask}\index{Task@{Task}}
+
+
+Represents a task containing multiple subtasks.  
+
+
+
+
+{\ttfamily \#include $<$task.\+hpp$>$}
+
+
+
+Collaboration diagram for Task\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{structTask__coll__graph}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item 
+QString \mbox{\hyperlink{structTask_a0ab070dbbe73ff2a4306fe20ab75400f}{title}}
+\begin{DoxyCompactList}\small\item\em The title of the task. \end{DoxyCompactList}\item 
+QString \mbox{\hyperlink{structTask_a470ace63434687116684f003a27dc439}{folder}}
+\begin{DoxyCompactList}\small\item\em The folder path of the task. \end{DoxyCompactList}\item 
+QString \mbox{\hyperlink{structTask_a92a16f5ec66f7511f0d0ce0fd759bf9e}{difficulty}}
+\begin{DoxyCompactList}\small\item\em The difficulty level of the task. \end{DoxyCompactList}\item 
+QString \mbox{\hyperlink{structTask_a8c37303702dbbb22f7430a73f9a3ed08}{topic}}
+\begin{DoxyCompactList}\small\item\em The topic of the task. \end{DoxyCompactList}\item 
+QVector$<$ \mbox{\hyperlink{structSubtask}{Subtask}} $>$ \mbox{\hyperlink{structTask_a7486a61c7f0eb8a952260ffe9c2a1af3}{subtasks}}
+\begin{DoxyCompactList}\small\item\em The list of subtasks within the task. \end{DoxyCompactList}\item 
+bool \mbox{\hyperlink{structTask_add2905e57d8e714693b24cc8a9148a82}{previous\+Subtasks\+Required}} = false
+\begin{DoxyCompactList}\small\item\em Whether previous subtasks are required. \end{DoxyCompactList}\item 
+QString \mbox{\hyperlink{structTask_a6fe956adc87191ee794c5bccf68c292b}{difficulty\+Hex\+Color}}
+\begin{DoxyCompactList}\small\item\em The hex color associated with the difficulty level. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Detailed Description}
+Represents a task containing multiple subtasks. 
+
+The \doxylink{structTask}{Task} struct contains information about a task, including its title, description, folder, difficulty, and a list of subtasks. It also includes an optional field indicating whether previous subtasks are required. 
+
+\doxysubsection{Member Data Documentation}
+\Hypertarget{structTask_a92a16f5ec66f7511f0d0ce0fd759bf9e}\index{Task@{Task}!difficulty@{difficulty}}
+\index{difficulty@{difficulty}!Task@{Task}}
+\doxysubsubsection{\texorpdfstring{difficulty}{difficulty}}
+{\footnotesize\ttfamily \label{structTask_a92a16f5ec66f7511f0d0ce0fd759bf9e} 
+QString Task\+::difficulty}
+
+
+
+The difficulty level of the task. 
+
+\Hypertarget{structTask_a6fe956adc87191ee794c5bccf68c292b}\index{Task@{Task}!difficultyHexColor@{difficultyHexColor}}
+\index{difficultyHexColor@{difficultyHexColor}!Task@{Task}}
+\doxysubsubsection{\texorpdfstring{difficultyHexColor}{difficultyHexColor}}
+{\footnotesize\ttfamily \label{structTask_a6fe956adc87191ee794c5bccf68c292b} 
+QString Task\+::difficulty\+Hex\+Color}
+
+
+
+The hex color associated with the difficulty level. 
+
+\Hypertarget{structTask_a470ace63434687116684f003a27dc439}\index{Task@{Task}!folder@{folder}}
+\index{folder@{folder}!Task@{Task}}
+\doxysubsubsection{\texorpdfstring{folder}{folder}}
+{\footnotesize\ttfamily \label{structTask_a470ace63434687116684f003a27dc439} 
+QString Task\+::folder}
+
+
+
+The folder path of the task. 
+
+\Hypertarget{structTask_add2905e57d8e714693b24cc8a9148a82}\index{Task@{Task}!previousSubtasksRequired@{previousSubtasksRequired}}
+\index{previousSubtasksRequired@{previousSubtasksRequired}!Task@{Task}}
+\doxysubsubsection{\texorpdfstring{previousSubtasksRequired}{previousSubtasksRequired}}
+{\footnotesize\ttfamily \label{structTask_add2905e57d8e714693b24cc8a9148a82} 
+bool Task\+::previous\+Subtasks\+Required = false}
+
+
+
+Whether previous subtasks are required. 
+
+\Hypertarget{structTask_a7486a61c7f0eb8a952260ffe9c2a1af3}\index{Task@{Task}!subtasks@{subtasks}}
+\index{subtasks@{subtasks}!Task@{Task}}
+\doxysubsubsection{\texorpdfstring{subtasks}{subtasks}}
+{\footnotesize\ttfamily \label{structTask_a7486a61c7f0eb8a952260ffe9c2a1af3} 
+QVector$<$\mbox{\hyperlink{structSubtask}{Subtask}}$>$ Task\+::subtasks}
+
+
+
+The list of subtasks within the task. 
+
+\Hypertarget{structTask_a0ab070dbbe73ff2a4306fe20ab75400f}\index{Task@{Task}!title@{title}}
+\index{title@{title}!Task@{Task}}
+\doxysubsubsection{\texorpdfstring{title}{title}}
+{\footnotesize\ttfamily \label{structTask_a0ab070dbbe73ff2a4306fe20ab75400f} 
+QString Task\+::title}
+
+
+
+The title of the task. 
+
+\Hypertarget{structTask_a8c37303702dbbb22f7430a73f9a3ed08}\index{Task@{Task}!topic@{topic}}
+\index{topic@{topic}!Task@{Task}}
+\doxysubsubsection{\texorpdfstring{topic}{topic}}
+{\footnotesize\ttfamily \label{structTask_a8c37303702dbbb22f7430a73f9a3ed08} 
+QString Task\+::topic}
+
+
+
+The topic of the task. 
+
+
+
+The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
+\item 
+\mbox{\hyperlink{task_8hpp}{task.\+hpp}}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structTask__coll__graph.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structTask__coll__graph.md5
new file mode 100644
index 0000000000000000000000000000000000000000..9959f5f7c3e8c8cfd9274df7e75079fa8d21a608
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structTask__coll__graph.md5
@@ -0,0 +1 @@
+a5ef5f2d235326309d1241e38f7714a6
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structTask__coll__graph.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structTask__coll__graph.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..80d2f4f0c4e39b9e4d45d31383b01de8aaa03773
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/structTask__coll__graph.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8cpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8cpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..fffc16b1432481bf57caaac820331f2984926bef
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8cpp.tex
@@ -0,0 +1,20 @@
+\doxysection{subtask\+\_\+item.\+cpp File Reference}
+\hypertarget{subtask__item_8cpp}{}\label{subtask__item_8cpp}\index{subtask\_item.cpp@{subtask\_item.cpp}}
+{\ttfamily \#include "{}learn\+\_\+environment/subtask\+\_\+item.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/task\+\_\+manager.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/notebook\+\_\+converter.\+hpp"{}}\newline
+{\ttfamily \#include $<$QHBox\+Layout$>$}\newline
+{\ttfamily \#include $<$QVBox\+Layout$>$}\newline
+{\ttfamily \#include $<$QLabel$>$}\newline
+{\ttfamily \#include $<$QFrame$>$}\newline
+{\ttfamily \#include $<$QMenu$>$}\newline
+{\ttfamily \#include $<$QWidget\+Action$>$}\newline
+{\ttfamily \#include $<$QMessage\+Box$>$}\newline
+{\ttfamily \#include $<$QDebug$>$}\newline
+Include dependency graph for subtask\+\_\+item.\+cpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{subtask__item_8cpp__incl}
+\end{center}
+\end{figure}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f80be7a8f42778e2b17c5da1318b2b62b7827bb7
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8cpp__incl.md5
@@ -0,0 +1 @@
+39d6bd2016dd5e8d982de23a19ba8478
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8cpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8cpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7fab20581890833df926a78e1cd880b8b7bf74c2
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8cpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..550c2df687605334ea5afe7ad9550cd31e9cfab0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp.tex
@@ -0,0 +1,30 @@
+\doxysection{subtask\+\_\+item.\+hpp File Reference}
+\hypertarget{subtask__item_8hpp}{}\label{subtask__item_8hpp}\index{subtask\_item.hpp@{subtask\_item.hpp}}
+{\ttfamily \#include "{}task.\+hpp"{}}\newline
+{\ttfamily \#include "{}task\+\_\+manager.\+hpp"{}}\newline
+{\ttfamily \#include "{}execute\+\_\+frame.\+hpp"{}}\newline
+{\ttfamily \#include $<$QWidget$>$}\newline
+{\ttfamily \#include $<$QPush\+Button$>$}\newline
+{\ttfamily \#include $<$QTool\+Button$>$}\newline
+{\ttfamily \#include $<$QLabel$>$}\newline
+{\ttfamily \#include $<$QHBox\+Layout$>$}\newline
+{\ttfamily \#include $<$QVBox\+Layout$>$}\newline
+Include dependency graph for subtask\+\_\+item.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{subtask__item_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=258pt]{subtask__item_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+class \mbox{\hyperlink{classSubtaskItem}{Subtask\+Item}}
+\begin{DoxyCompactList}\small\item\em Represents a UI item for a subtask. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..dcc1055045a94d77e9b5867881611690cf7966b0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+1bb957b1671add5e8ea31dde43a5e3cd
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d18219884e7bbac841f0b22c370806599c57af69
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..c7b6177b96609647fb56ebcd9b7f29ef594cea41
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp__incl.md5
@@ -0,0 +1 @@
+b59f5a45cb7441c0a96613554fffe75d
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..27d58fdbf3d1f153775e102aea7aad56b234cfe3
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..8c2f867163533785e14e37c0145c705335e3ba98
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/subtask__item_8hpp_source.tex
@@ -0,0 +1,68 @@
+\doxysection{subtask\+\_\+item.\+hpp}
+\hypertarget{subtask__item_8hpp_source}{}\label{subtask__item_8hpp_source}\index{subtask\_item.hpp@{subtask\_item.hpp}}
+\mbox{\hyperlink{subtask__item_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ SUBTASK\_ITEM\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ SUBTASK\_ITEM\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{task_8hpp}{task.hpp}}"{}}}
+\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{task__manager_8hpp}{task\_manager.hpp}}"{}}}
+\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{execute__frame_8hpp}{execute\_frame.hpp}}"{}}}
+\DoxyCodeLine{00007\ }
+\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ <QWidget>}}
+\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <QPushButton>}}
+\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <QToolButton>}}
+\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <QLabel>}}
+\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <QHBoxLayout>}}
+\DoxyCodeLine{00013\ \textcolor{preprocessor}{\#include\ <QVBoxLayout>}}
+\DoxyCodeLine{00014\ }
+\DoxyCodeLine{00024\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classSubtaskItem}{SubtaskItem}}\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classQWidget}{QWidget}}\ \{}
+\DoxyCodeLine{00025\ \ \ \ \ Q\_OBJECT}
+\DoxyCodeLine{00026\ }
+\DoxyCodeLine{00027\ \textcolor{keyword}{public}:}
+\DoxyCodeLine{00033\ \ \ \ \ \mbox{\hyperlink{classSubtaskItem_a63e6bb32b434cf04705924c3e2cdd0db}{SubtaskItem}}(\mbox{\hyperlink{classQWidget}{QWidget}}\ *parent,\ \mbox{\hyperlink{structSubtask}{Subtask}}\ *subtask);}
+\DoxyCodeLine{00034\ }
+\DoxyCodeLine{00038\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classSubtaskItem_a005df51b50001f3e9c95652e845cf424}{updateUI}}(\textcolor{keywordtype}{bool}\ constructorCall\ =\ \textcolor{keyword}{false});}
+\DoxyCodeLine{00039\ }
+\DoxyCodeLine{00044\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classSubtaskItem_aebba84aaef3c06a0c3079cea7fcd4ba6}{setTaskManager}}(\mbox{\hyperlink{classTaskManager}{TaskManager}}\ *manager);}
+\DoxyCodeLine{00045\ }
+\DoxyCodeLine{00046\ Q\_SIGNALS:}
+\DoxyCodeLine{00051\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classSubtaskItem_a9a41e7bf314df5a4297c68509d531423}{subtaskStartStopRequested}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{structSubtask}{Subtask}}\ \&subtask);}
+\DoxyCodeLine{00052\ }
+\DoxyCodeLine{00053\ \textcolor{keyword}{private}\ Q\_SLOTS:}
+\DoxyCodeLine{00057\ \ \ \ \ \textcolor{keywordtype}{void}\ handleStartButtonClick();}
+\DoxyCodeLine{00058\ \ \ \ \ \textcolor{keywordtype}{void}\ handleHelpButtonClick();}
+\DoxyCodeLine{00059\ \ \ \ \ \textcolor{keywordtype}{void}\ handleStartOwnScript();}
+\DoxyCodeLine{00060\ \ \ \ \ \textcolor{keywordtype}{void}\ handleStartSolution();}
+\DoxyCodeLine{00061\ \ \ \ \ \textcolor{keywordtype}{void}\ handleToggleSolution();}
+\DoxyCodeLine{00062\ \ \ \ \ \textcolor{keywordtype}{void}\ handleResetNotebook();\ \ \ \ }
+\DoxyCodeLine{00063\ }
+\DoxyCodeLine{00064\ \textcolor{keyword}{private}:}
+\DoxyCodeLine{00071\ \ \ \ \ \textcolor{keywordtype}{void}\ setupItemUI(\textcolor{keyword}{const}\ QString\ \&headerText,\ \textcolor{keyword}{const}\ QString\ \&linkText,\ \textcolor{keyword}{const}\ QString\ \&bodyText);}
+\DoxyCodeLine{00072\ \ \ \ \ \textcolor{keywordtype}{void}\ initializeHelpMenu();}
+\DoxyCodeLine{00073\ \ \ \ \ \textcolor{keywordtype}{void}\ initializeStartMenu();}
+\DoxyCodeLine{00074\ \ \ \ \ \textcolor{keywordtype}{void}\ setExecutionFrame(\textcolor{keyword}{const}\ QString\&\ imagePath,\ \textcolor{keyword}{const}\ QString\&\ text);}
+\DoxyCodeLine{00075\ }
+\DoxyCodeLine{00076\ \ \ \ \ \mbox{\hyperlink{classTaskManager}{TaskManager}}\ *taskManager;\ }
+\DoxyCodeLine{00077\ \ \ \ \ \mbox{\hyperlink{structSubtask}{Subtask}}\ *subtask;\ }
+\DoxyCodeLine{00078\ \ \ \ \ QString\ headerText;\ }
+\DoxyCodeLine{00079\ \ \ \ \ QString\ linkText;\ }
+\DoxyCodeLine{00080\ \ \ \ \ QString\ bodyText;\ }
+\DoxyCodeLine{00081\ \ \ \ \ QToolButton\ *startButton;\ }
+\DoxyCodeLine{00082\ \ \ \ \ QToolButton\ *helpButton;\ }
+\DoxyCodeLine{00083\ \ \ \ \ QVBoxLayout\ *baseLayout;\ }
+\DoxyCodeLine{00084\ \ \ \ \ \mbox{\hyperlink{classExecuteFrame}{ExecuteFrame}}\ *executeSubtaskFrame;\ }
+\DoxyCodeLine{00085\ }
+\DoxyCodeLine{00086\ \ \ \ \ QPushButton\ *menuStartOwnBtn;\ }
+\DoxyCodeLine{00087\ \ \ \ \ QPushButton\ *menuStartSolutionBtn;\ }
+\DoxyCodeLine{00088\ }
+\DoxyCodeLine{00089\ \ \ \ \ QPushButton\ *menuToggleSolutionBtn;\ }
+\DoxyCodeLine{00090\ \ \ \ \ QPushButton\ *menuResetNotebookBtn;\ }
+\DoxyCodeLine{00091\ }
+\DoxyCodeLine{00092\ \ \ \ \ QMenu*\ startMenu;\ }
+\DoxyCodeLine{00093\ \ \ \ \ QMenu*\ helpMenu;\ }
+\DoxyCodeLine{00094\ \};}
+\DoxyCodeLine{00095\ }
+\DoxyCodeLine{00096\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ SUBTASK\_ITEM\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/tabu_doxygen.sty b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/tabu_doxygen.sty
new file mode 100644
index 0000000000000000000000000000000000000000..3f17d1d02804b33ee004d44860bb39ce6d1bf371
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/tabu_doxygen.sty
@@ -0,0 +1,2557 @@
+%%
+%% This is file `tabu.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% tabu.dtx  (with options: `package')
+%% 
+%% This is a generated file.
+%% Copyright (FC) 2010-2011 - lppl
+%% 
+%% tabu : 2011/02/26 v2.8 - tabu : Flexible LaTeX tabulars
+%% 
+%% **********************************************************************************************
+%% \begin{tabu}               { preamble } => default target: \linewidth or \linegoal
+%% \begin{tabu} to     <dimen>{ preamble } => target specified
+%% \begin{tabu} spread <dimen>{ preamble } => target relative to the ``natural width''
+%% 
+%%  tabu works in text and in math modes.
+%% 
+%%  X columns: automatic width adjustment + horizontal and vertical alignment
+%%  \begin{tabu}   { X[4c] X[1c] X[-2ml]  }
+%% 
+%%  Horizontal lines and / or leaders:
+%%         \hline\hline                          => double horizontal line
+%%         \firsthline\hline                     => for nested tabulars
+%%         \lasthline\hline                      => for nested tabulars
+%%         \tabucline[line spec]{column-column}  => ``funny'' lines (dash/leader)
+%%  Automatic lines / leaders :
+%%         \everyrow{\hline\hline}
+%% 
+%%  Vertical lines and / or leaders:
+%%  \begin{tabu}   { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt blue] }
+%%  \begin{tabu}   { |[3pt red] X[4c] X[1c] X[-2ml] |[3pt on 2pt off 4pt blue] }
+%% 
+%%  Fixed vertical spacing adjustment:
+%%         \extrarowheight=<dimen>     \extrarowdepth=<dimen>
+%%    or:     \extrarowsep=<dimen>               => may be prefixed by \global
+%% 
+%%  Dynamic vertical spacing adjustment:
+%%       \abovetabulinesep=<dimen>  \belowtabulinesep=<dimen>
+%%   or:      \tabulinesep=<dimen>               => may be prefixed by \global
+%% 
+%%  delarray.sty shortcuts: in math and text modes
+%%  \begin{tabu} ....        \({ preamble }\)
+%% 
+%%  Algorithms reports:
+%%            \tracingtabu=1             \tracingtabu=2
+%% 
+%% **********************************************************************************************
+%% 
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any later
+%% version. The latest version of this license is in
+%%    http://www.latex-project.org/lppl.txt
+%% 
+%% This work consists of the main source file tabu.dtx
+%% and the derived files
+%%    tabu.sty, tabu.pdf, tabu.ins
+%% 
+%% tabu : Flexible LaTeX tabulars
+%% lppl copyright 2010-2011 by FC <florent.chervet@free.fr>
+%% 
+
+\NeedsTeXFormat{LaTeX2e}[2005/12/01]
+\ProvidesPackage{tabu_doxygen}[2011/02/26 v2.8 - flexible LaTeX tabulars (FC), frozen version for doxygen]
+\RequirePackage{array}[2008/09/09]
+\RequirePackage{varwidth}[2009/03/30]
+\AtEndOfPackage{\tabu@AtEnd \let\tabu@AtEnd \@undefined}
+\let\tabu@AtEnd\@empty
+\def\TMP@EnsureCode#1={%
+    \edef\tabu@AtEnd{\tabu@AtEnd
+                     \catcode#1 \the\catcode#1}%
+    \catcode#1=%
+}% \TMP@EnsureCode
+\TMP@EnsureCode 33 = 12 % !
+\TMP@EnsureCode 58 = 12 % : (for siunitx)
+\TMP@EnsureCode124 = 12 % |
+\TMP@EnsureCode 36 =  3 % $ = math shift
+\TMP@EnsureCode 38 =  4 % & = tab alignment character
+\TMP@EnsureCode 32 = 10 % space
+\TMP@EnsureCode 94 =  7 % ^
+\TMP@EnsureCode 95 =  8 % _
+%% Constants --------------------------------------------------------
+\newcount \c@taburow        \def\thetaburow {\number\c@taburow}
+\newcount \tabu@nbcols
+\newcount \tabu@cnt
+\newcount \tabu@Xcol
+\let\tabu@start \@tempcnta
+\let\tabu@stop  \@tempcntb
+\newcount \tabu@alloc  \tabu@alloc=\m@ne
+\newcount \tabu@nested
+\def\tabu@alloc@{\global\advance\tabu@alloc \@ne \tabu@nested\tabu@alloc}
+\newdimen \tabu@target
+\newdimen \tabu@spreadtarget
+\newdimen \tabu@naturalX
+\newdimen \tabucolX
+\let\tabu@DELTA \@tempdimc
+\let\tabu@thick \@tempdima
+\let\tabu@on    \@tempdimb
+\let\tabu@off   \@tempdimc
+\newdimen \tabu@Xsum
+\newdimen \extrarowdepth
+\newdimen \abovetabulinesep
+\newdimen \belowtabulinesep
+\newdimen \tabustrutrule      \tabustrutrule \z@
+\newtoks \tabu@thebody
+\newtoks \tabu@footnotes
+\newsavebox \tabu@box
+\newsavebox \tabu@arstrutbox
+\newsavebox \tabu@hleads
+\newsavebox \tabu@vleads
+\newif \iftabu@colortbl
+\newif \iftabu@siunitx
+\newif \iftabu@measuring
+\newif \iftabu@spread
+\newif \iftabu@negcoef
+\newif \iftabu@everyrow
+\def\tabu@everyrowtrue {\global\let\iftabu@everyrow \iftrue}
+\def\tabu@everyrowfalse{\global\let\iftabu@everyrow \iffalse}
+\newif \iftabu@long
+\newif \iftabuscantokens
+\def\tabu@rescan {\tabu@verbatim \scantokens  }
+%% Utilities (for internal usage) -----------------------------------
+\def\tabu@gobblespace #1  {#1}
+\def\tabu@gobbletoken #1#2{#1}
+\def\tabu@gobbleX{\futurelet\@let@token \tabu@gobblex}
+\def\tabu@gobblex{\if ^^J\noexpand\@let@token \expandafter\@gobble
+                  \else\ifx \@sptoken\@let@token
+                    \expandafter\tabu@gobblespace\expandafter\tabu@gobbleX
+                  \fi\fi
+}% \tabu@gobblex
+\def\tabu@X{^^J}
+{\obeyspaces
+\global\let\tabu@spxiii= % saves an active space (for \ifx)
+\gdef\tabu@@spxiii{ }}
+\def\tabu@ifenvir {% only for \multicolumn
+    \expandafter\tabu@if@nvir\csname\@currenvir\endcsname
+}% \tabu@ifenvir
+\def\tabu@if@nvir #1{\csname @\ifx\tabu#1first\else
+                              \ifx\longtabu#1first\else
+                              second\fi\fi oftwo\endcsname
+}% \tabu@ifenvir
+\def\tabu@modulo #1#2{\numexpr\ifnum\numexpr#1=\z@ 0\else #1-(#1-(#2-1)/2)/(#2)*(#2)\fi}
+{\catcode`\&=3
+\gdef\tabu@strtrim  #1{% #1 = control sequence to trim
+    \ifodd 1\ifx #1\@empty \else \ifx #1\space \else 0\fi \fi
+            \let\tabu@c@l@r \@empty       \let#1\@empty
+    \else   \expandafter  \tabu@trimspaces  #1&#1\@nnil
+    \fi
+}% \tabu@strtrim
+\gdef\tabu@trimspaces #1&#2\@nnil{\let\tabu@c@l@r=#2\tabu@firstspace .#1& &#2}%
+\gdef\tabu@firstspace #1#2#3 &{\tabu@lastspace #2#3&}
+\gdef\tabu@lastspace #1&#2&#3{\def #3{#1}%
+    \ifx #3\tabu@c@l@r \def\tabu@c@l@r{\protect\color{#1}}\expandafter\remove@to@nnil \fi
+    \tabu@trimspaces #1&#3\@nnil}
+}% \catcode
+\def\tabu@sanitizearg #1#2{{%
+    \csname \ifcsname if@safe@actives\endcsname         % <babel>
+                      @safe@activestrue\else
+                      relax\fi       \endcsname
+    \edef#2{#1}\tabu@strtrim#2\@onelevel@sanitize#2%
+    \expandafter}\expandafter\def\expandafter#2\expandafter{#2}%
+}% \tabu@sanitizearg
+\def\tabu@textbar #1{\begingroup \endlinechar\m@ne \scantokens{\def\:{|}}%
+    \expandafter\endgroup \expandafter#1\:% !!! semi simple group !!!
+}% \tabu@textbar
+\def\tabu@everyrow@bgroup{\iftabu@everyrow \begingroup \else \noalign{\ifnum0=`}\fi \fi}
+\def\tabu@everyrow@egroup{%
+    \iftabu@everyrow \expandafter \endgroup \the\toks@
+    \else            \ifnum0=`{\fi}%
+    \fi
+}% \tabu@everyrow@egroup
+\def\tabu@arstrut {\global\setbox\@arstrutbox \hbox{\vrule
+    height \arraystretch \dimexpr\ht\strutbox+\extrarowheight
+    depth  \arraystretch \dimexpr\dp\strutbox+\extrarowdepth
+    width  \z@}%
+}% \tabu@arstrut
+\def\tabu@rearstrut {%
+    \@tempdima \arraystretch\dimexpr\ht\strutbox+\extrarowheight \relax
+    \@tempdimb \arraystretch\dimexpr\dp\strutbox+\extrarowdepth  \relax
+    \ifodd 1\ifdim \ht\@arstrutbox=\@tempdima
+            \ifdim \dp\@arstrutbox=\@tempdimb 0 \fi\fi
+        \tabu@mkarstrut
+    \fi
+}% \tabu@rearstrut
+\def\tabu@@DBG #1{\ifdim\tabustrutrule>\z@ \color{#1}\fi}
+\def\tabu@DBG@arstrut {\global\setbox\@arstrutbox
+    \hbox to\z@{\hbox to\z@{\hss
+    {\tabu@DBG{cyan}\vrule
+    height \arraystretch \dimexpr\ht\strutbox+\extrarowheight
+    depth  \z@
+    width  \tabustrutrule}\kern-\tabustrutrule
+    {\tabu@DBG{pink}\vrule
+    height \z@
+    depth  \arraystretch \dimexpr\dp\strutbox+\extrarowdepth
+    width \tabustrutrule}}}%
+}% \tabu@DBG@arstrut
+\def\tabu@save@decl{\toks\count@ \expandafter{\the\toks\expandafter\count@
+                                                              \@nextchar}}%
+\def\tabu@savedecl{\ifcat$\d@llarend\else
+       \let\save@decl \tabu@save@decl \fi % no inversion of tokens in text mode
+}% \tabu@savedecl
+\def\tabu@finalstrut #1{\unskip\ifhmode\nobreak\fi\vrule height\z@ depth\z@ width\z@}
+\newcommand*\tabuDisableCommands {\g@addto@macro\tabu@trialh@@k }
+\let\tabu@trialh@@k \@empty
+\def\tabu@nowrite #1#{{\afterassignment}\toks@}
+\let\tabu@write\write
+\let\tabu@immediate\immediate
+\def\tabu@WRITE{\begingroup
+   \def\immediate\write{\aftergroup\endgroup
+                  \tabu@immediate\tabu@write}%
+}% \tabu@WRITE
+\expandafter\def\expandafter\tabu@GenericError\expandafter{%
+                      \expandafter\tabu@WRITE\GenericError}
+\def\tabu@warn{\tabu@WRITE\PackageWarning{tabu}}
+\def\tabu@noxfootnote [#1]{\@gobble}
+\def\tabu@nocolor #1#{\@gobble}
+\newcommand*\tabu@norowcolor[2][]{}
+\def\tabu@maybesiunitx #1{\def\tabu@temp{#1}%
+                          \futurelet\@let@token \tabu@m@ybesiunitx}
+\def\tabu@m@ybesiunitx #1{\def\tabu@m@ybesiunitx {%
+    \ifx #1\@let@token \let\tabu@cellleft \@empty \let\tabu@cellright \@empty \fi
+    \tabu@temp}% \tabu@m@ybesiunitx
+}\expandafter\tabu@m@ybesiunitx \csname siunitx_table_collect_begin:Nn\endcsname
+\def\tabu@celllalign@def #1{\def\tabu@celllalign{\tabu@maybesiunitx{#1}}}%
+%% Fixed vertical spacing adjustment: \extrarowsep ------------------
+\newcommand*\extrarowsep{\edef\tabu@C@extra{\the\numexpr\tabu@C@extra+1}%
+    \iftabu@everyrow    \aftergroup\tabu@Gextra
+    \else               \aftergroup\tabu@n@Gextra
+    \fi
+    \@ifnextchar={\tabu@gobbletoken\tabu@extra} \tabu@extra
+}% \extrarowsep
+\def\tabu@extra {\@ifnextchar_%
+    {\tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}
+    {\ifx ^\@let@token \def\tabu@temp{%
+            \tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}%
+    \else   \let\tabu@temp \@empty
+            \afterassignment \tabu@setextrasep \extrarowdepth
+    \fi \tabu@temp}%
+}% \tabu@extra
+\def\tabu@setextra #1#2{\def\tabu@temp{\tabu@extr@#1#2}\afterassignment\tabu@temp#2}
+\def\tabu@extr@ #1#2{\@ifnextchar^%
+    {\tabu@gobbletoken{\tabu@setextra\extrarowdepth \extrarowheight}}
+    {\ifx _\@let@token \def\tabu@temp{%
+            \tabu@gobbletoken{\tabu@setextra\extrarowheight \extrarowdepth}}%
+    \else   \let\tabu@temp \@empty
+            \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth
+    \fi \tabu@temp}%
+}% \tabu@extr@
+\def\tabu@setextrasep {\extrarowheight=\extrarowdepth
+    \tabu@Gsave \tabu@G@extra \tabu@C@extra \extrarowheight \extrarowdepth
+}% \tabu@setextrasep
+\def\tabu@Gextra{\ifx \tabu@G@extra\@empty \else {\tabu@Rextra}\fi}
+\def\tabu@n@Gextra{\ifx \tabu@G@extra\@empty \else \noalign{\tabu@Rextra}\fi}
+\def\tabu@Rextra{\tabu@Grestore \tabu@G@extra \tabu@C@extra}
+\let\tabu@C@extra \z@
+\let\tabu@G@extra \@empty
+%% Dynamic vertical spacing adjustment: \tabulinesep ----------------
+\newcommand*\tabulinesep{\edef\tabu@C@linesep{\the\numexpr\tabu@C@linesep+1}%
+    \iftabu@everyrow    \aftergroup\tabu@Glinesep
+    \else               \aftergroup\tabu@n@Glinesep
+    \fi
+    \@ifnextchar={\tabu@gobbletoken\tabu@linesep} \tabu@linesep
+}% \tabulinesep
+\def\tabu@linesep {\@ifnextchar_%
+    {\tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}
+    {\ifx ^\@let@token \def\tabu@temp{%
+            \tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}%
+     \else  \let\tabu@temp \@empty
+            \afterassignment \tabu@setlinesep \abovetabulinesep
+     \fi \tabu@temp}%
+}% \tabu@linesep
+\def\tabu@setsep #1#2{\def\tabu@temp{\tabu@sets@p#1#2}\afterassignment\tabu@temp#2}
+\def\tabu@sets@p #1#2{\@ifnextchar^%
+    {\tabu@gobbletoken{\tabu@setsep\belowtabulinesep \abovetabulinesep}}
+    {\ifx _\@let@token \def\tabu@temp{%
+            \tabu@gobbletoken{\tabu@setsep\abovetabulinesep \belowtabulinesep}}%
+    \else   \let\tabu@temp \@empty
+            \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep
+    \fi \tabu@temp}%
+}% \tabu@sets@p
+\def\tabu@setlinesep {\belowtabulinesep=\abovetabulinesep
+    \tabu@Gsave \tabu@G@linesep \tabu@C@linesep \abovetabulinesep \belowtabulinesep
+}% \tabu@setlinesep
+\def\tabu@Glinesep{\ifx \tabu@G@linesep\@empty \else {\tabu@Rlinesep}\fi}
+\def\tabu@n@Glinesep{\ifx \tabu@G@linesep\@empty \else \noalign{\tabu@Rlinesep}\fi}
+\def\tabu@Rlinesep{\tabu@Grestore \tabu@G@linesep \tabu@C@linesep}
+\let\tabu@C@linesep \z@
+\let\tabu@G@linesep \@empty
+%% \global\extrarowsep  and  \global\tabulinesep  -------------------
+\def\tabu@Gsave #1#2#3#4{\xdef#1{#1%
+    \toks#2{\toks\the\currentgrouplevel{\global#3\the#3\global#4\the#4}}}%
+}% \tabu@Gsave
+\def\tabu@Grestore#1#2{%
+    \toks#2{}#1\toks\currentgrouplevel\expandafter{\expandafter}\the\toks#2\relax
+    \ifcat$\the\toks\currentgrouplevel$\else
+        \global\let#1\@empty \global\let#2\z@
+        \the\toks\currentgrouplevel
+    \fi
+}% \tabu@Grestore
+%% Setting code for every row ---------------------------------------
+\newcommand*\everyrow{\tabu@everyrow@bgroup
+                      \tabu@start \z@ \tabu@stop \z@ \tabu@evrstartstop
+}% \everyrow
+\def\tabu@evrstartstop {\@ifnextchar^%
+    {\afterassignment \tabu@evrstartstop \tabu@stop=}%
+    {\ifx ^\@let@token
+            \afterassignment\tabu@evrstartstop \tabu@start=%
+     \else  \afterassignment\tabu@everyr@w     \toks@
+     \fi}%
+}% \tabu@evrstartstop
+\def\tabu@everyr@w {%
+    \xdef\tabu@everyrow{%
+        \noexpand\tabu@everyrowfalse
+        \let\noalign \relax
+        \noexpand\tabu@rowfontreset
+        \iftabu@colortbl \noexpand\tabu@rc@ \fi % \taburowcolors
+        \let\noexpand\tabu@docline \noexpand\tabu@docline@evr
+        \the\toks@
+        \noexpand\tabu@evrh@@k
+        \noexpand\tabu@rearstrut
+        \global\advance\c@taburow \@ne}%
+    \iftabu@everyrow \toks@\expandafter
+        {\expandafter\def\expandafter\tabu@evr@L\expandafter{\the\toks@}\ignorespaces}%
+    \else \xdef\tabu@evr@G{\the\toks@}%
+    \fi
+    \tabu@everyrow@egroup
+}% \tabu@everyr@w
+\def\tabu@evr {\def\tabu@evrh@@k}         % for internal use only
+\tabu@evr{}
+%% line style and leaders -------------------------------------------
+\newcommand*\newtabulinestyle [1]{%
+    {\@for \@tempa :=#1\do{\expandafter\tabu@newlinestyle \@tempa==\@nil}}%
+}% \newtabulinestyle
+\def\tabu@newlinestyle #1=#2=#3\@nil{\tabu@getline {#2}%
+    \tabu@sanitizearg {#1}\@tempa
+    \ifodd 1\ifx \@tempa\@empty \ifdefined\tabu@linestyle@ 0 \fi\fi
+    \global\expandafter\let
+        \csname tabu@linestyle@\@tempa \endcsname =\tabu@thestyle \fi
+}% \tabu@newlinestyle
+\newcommand*\tabulinestyle [1]{\tabu@everyrow@bgroup \tabu@getline{#1}%
+    \iftabu@everyrow
+        \toks@\expandafter{\expandafter \def \expandafter
+                    \tabu@ls@L\expandafter{\tabu@thestyle}\ignorespaces}%
+        \gdef\tabu@ls@{\tabu@ls@L}%
+    \else
+        \global\let\tabu@ls@G \tabu@thestyle
+        \gdef\tabu@ls@{\tabu@ls@G}%
+    \fi
+    \tabu@everyrow@egroup
+}% \tabulinestyle
+\newcommand*\taburulecolor{\tabu@everyrow@bgroup \tabu@textbar \tabu@rulecolor}
+\def\tabu@rulecolor #1{\toks@{}%
+    \def\tabu@temp #1##1#1{\tabu@ruledrsc{##1}}\@ifnextchar #1%
+                                                    \tabu@temp
+                                                 \tabu@rulearc
+}% \tabu@rulecolor
+\def\tabu@ruledrsc #1{\edef\tabu@temp{#1}\tabu@strtrim\tabu@temp
+    \ifx \tabu@temp\@empty \def\tabu@temp{\tabu@rule@drsc@ {}{}}%
+    \else \edef\tabu@temp{\noexpand\tabu@rule@drsc@ {}{\tabu@temp}}%
+    \fi
+    \tabu@temp
+}% \tabu@ruledrsc@
+\def\tabu@ruledrsc@   #1#{\tabu@rule@drsc@ {#1}}
+\def\tabu@rule@drsc@ #1#2{%
+    \iftabu@everyrow
+        \ifx \\#1#2\\\toks@{\let\CT@drsc@ \relax}%
+        \else        \toks@{\def\CT@drsc@{\color #1{#2}}}%
+        \fi
+    \else
+        \ifx \\#1#2\\\global\let\CT@drsc@ \relax
+        \else        \gdef\CT@drsc@{\color #1{#2}}%
+        \fi
+    \fi
+    \tabu@rulearc
+}% \tabu@rule@drsc@
+\def\tabu@rulearc    #1#{\tabu@rule@arc@ {#1}}
+\def\tabu@rule@arc@ #1#2{%
+    \iftabu@everyrow
+        \ifx \\#1#2\\\toks@\expandafter{\the\toks@ \def\CT@arc@{}}%
+        \else        \toks@\expandafter{\the\toks@ \def\CT@arc@{\color #1{#2}}}%
+        \fi
+        \toks@\expandafter{\the\toks@
+            \let\tabu@arc@L  \CT@arc@
+            \let\tabu@drsc@L \CT@drsc@
+            \ignorespaces}%
+    \else
+        \ifx \\#1#2\\\gdef\CT@arc@{}%
+        \else        \gdef\CT@arc@{\color #1{#2}}%
+        \fi
+        \global\let\tabu@arc@G  \CT@arc@
+        \global\let\tabu@drsc@G \CT@drsc@
+    \fi
+    \tabu@everyrow@egroup
+}% \tabu@rule@arc@
+\def\taburowcolors {\tabu@everyrow@bgroup \@testopt \tabu@rowcolors 1}
+\def\tabu@rowcolors [#1]#2#{\tabu@rowc@lors{#1}{#2}}
+\def\tabu@rowc@lors #1#2#3{%
+    \toks@{}\@defaultunits \count@      =\number0#2\relax \@nnil
+            \@defaultunits \tabu@start  =\number0#1\relax \@nnil
+    \ifnum \count@<\tw@ \count@=\tw@ \fi
+    \advance\tabu@start \m@ne
+    \ifnum \tabu@start<\z@ \tabu@start \z@ \fi
+    \tabu@rowcolorseries #3\in@..\in@ \@nnil
+}% \tabu@rowcolors
+\def\tabu@rowcolorseries #1..#2\in@ #3\@nnil {%
+    \ifx \in@#1\relax
+        \iftabu@everyrow \toks@{\def\tabu@rc@{}\let\tabu@rc@L \tabu@rc@}%
+        \else   \gdef\tabu@rc@{}\global\let\tabu@rc@G \tabu@rc@
+        \fi
+    \else
+        \ifx \\#2\\\tabu@rowcolorserieserror \fi
+        \tabu@sanitizearg{#1}\tabu@temp
+        \tabu@sanitizearg{#2}\@tempa
+        \advance\count@ \m@ne
+    \iftabu@everyrow
+        \def\tabu@rc@ ##1##2##3##4{\def\tabu@rc@{%
+            \ifnum ##2=\c@taburow
+                \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{##3}{##4}\fi
+            \ifnum \c@taburow<##2 \else
+                \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\z@
+                    \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi
+                \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}%
+                \rowcolor{tabu@rc@\the\tabu@nested}\fi}%
+        }\edef\x{\noexpand\tabu@rc@           {\the\count@}
+                                          {\the\tabu@start}
+                                               {\tabu@temp}
+                                                  {\@tempa}%
+                }\x
+        \toks@\expandafter{\expandafter\def\expandafter\tabu@rc@\expandafter{\tabu@rc@}}%
+        \toks@\expandafter{\the\toks@ \let\tabu@rc@L \tabu@rc@ \ignorespaces}%
+    \else   % inside \noalign
+        \definecolorseries{tabu@rcseries@\the\tabu@nested}{rgb}{last}{\tabu@temp}{\@tempa}%
+        \expandafter\resetcolorseries\expandafter[\the\count@]{tabu@rcseries@\the\tabu@nested}%
+        \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}%
+        \let\noalign \relax \rowcolor{tabu@rc@\the\tabu@nested}%
+        \def\tabu@rc@ ##1##2{\gdef\tabu@rc@{%
+            \ifnum \tabu@modulo {\c@taburow-##2}{##1+1}=\@ne
+                \resetcolorseries[{##1}]{tabu@rcseries@\the\tabu@nested}\fi
+            \xglobal\colorlet{tabu@rc@\the\tabu@nested}{tabu@rcseries@\the\tabu@nested!!+}%
+            \rowcolor{tabu@rc@\the\tabu@nested}}%
+        }\edef\x{\noexpand\tabu@rc@{\the\count@}{\the\c@taburow}}\x
+        \global\let\tabu@rc@G \tabu@rc@
+    \fi
+    \fi
+    \tabu@everyrow@egroup
+}% \tabu@rowcolorseries
+\tabuDisableCommands {\let\tabu@rc@ \@empty }
+\def\tabu@rowcolorserieserror {\PackageError{tabu}
+    {Invalid syntax for \string\taburowcolors
+    \MessageBreak Please look at the documentation!}\@ehd
+}% \tabu@rowcolorserieserror
+\newcommand*\tabureset {%
+    \tabulinesep=\z@ \extrarowsep=\z@ \extratabsurround=\z@
+    \tabulinestyle{}\everyrow{}\taburulecolor||{}\taburowcolors{}%
+}% \tabureset
+%% Parsing the line styles ------------------------------------------
+\def\tabu@getline #1{\begingroup
+    \csname \ifcsname if@safe@actives\endcsname         % <babel>
+                      @safe@activestrue\else
+                      relax\fi       \endcsname
+    \edef\tabu@temp{#1}\tabu@sanitizearg{#1}\@tempa
+    \let\tabu@thestyle \relax
+    \ifcsname tabu@linestyle@\@tempa \endcsname
+            \edef\tabu@thestyle{\endgroup
+                \def\tabu@thestyle{\expandafter\noexpand
+                    \csname tabu@linestyle@\@tempa\endcsname}%
+            }\tabu@thestyle
+    \else   \expandafter\tabu@definestyle \tabu@temp \@nil
+    \fi
+}% \tabu@getline
+\def\tabu@definestyle #1#2\@nil {\endlinechar \m@ne \makeatletter
+    \tabu@thick \maxdimen  \tabu@on \maxdimen   \tabu@off \maxdimen
+    \let\tabu@c@lon \@undefined  \let\tabu@c@loff \@undefined
+    \ifodd 1\ifcat .#1\else\ifcat\relax #1\else 0\fi\fi % catcode 12 or non expandable cs
+            \def\tabu@temp{\tabu@getparam{thick}}%
+    \else   \def\tabu@temp{\tabu@getparam{thick}\maxdimen}%
+    \fi
+    {%
+        \let\tabu@ \relax
+        \def\:{\obeyspaces \tabu@oXIII \tabu@commaXIII \edef\:}% (space active \: happy ;-))
+        \scantokens{\:{\tabu@temp #1#2 \tabu@\tabu@}}%
+                        \expandafter}\expandafter
+                                \def\expandafter\:\expandafter{\:}% line spec rewritten now ;-)
+    \def\;{\def\:}%
+    \scantokens\expandafter{\expandafter\;\expandafter{\:}}% space is now inactive (catcode 10)
+    \let\tabu@ \tabu@getcolor    \:%    all arguments are ready now ;-)
+    \ifdefined\tabu@c@lon \else \let\tabu@c@lon\@empty \fi
+    \ifx \tabu@c@lon\@empty \def\tabu@c@lon{\CT@arc@}\fi
+    \ifdefined\tabu@c@loff \else \let\tabu@c@loff \@empty        \fi
+    \ifdim \tabu@on=\maxdimen \ifdim \tabu@off<\maxdimen
+                                  \tabu@on \tabulineon        \fi\fi
+    \ifdim \tabu@off=\maxdimen \ifdim \tabu@on<\maxdimen
+                                  \tabu@off \tabulineoff      \fi\fi
+    \ifodd 1\ifdim \tabu@off=\maxdimen \ifdim \tabu@on=\maxdimen 0 \fi\fi
+            \in@true    % <leaders>
+    \else   \in@false   % <rule>
+    \fi
+    \ifdim\tabu@thick=\maxdimen \def\tabu@thick{\arrayrulewidth}%
+    \else                       \edef\tabu@thick{\the\tabu@thick}%
+    \fi
+    \edef \tabu@thestyle ##1##2{\endgroup
+        \def\tabu@thestyle{%
+            \ifin@  \noexpand\tabu@leadersstyle {\tabu@thick}
+                                                {\the\tabu@on}{##1}
+                                                {\the\tabu@off}{##2}%
+            \else   \noexpand\tabu@rulesstyle
+                            {##1\vrule width \tabu@thick}%
+                            {##1\leaders \hrule height \tabu@thick \hfil}%
+            \fi}%
+    }\expandafter \expandafter
+        \expandafter \tabu@thestyle \expandafter
+            \expandafter \expandafter
+                {\expandafter\tabu@c@lon\expandafter}\expandafter{\tabu@c@loff}%
+}% \tabu@definestyle
+{\catcode`\O=\active \lccode`\O=`\o \catcode`\,=\active
+    \lowercase{\gdef\tabu@oXIII {\catcode`\o=\active \let O=\tabu@oxiii}}
+    \gdef\tabu@commaXIII {\catcode`\,=\active \let ,=\space}
+}% \catcode
+\def\tabu@oxiii #1{%
+    \ifcase  \ifx n#1\z@ \else
+             \ifx f#1\@ne\else
+             \tw@       \fi\fi
+          \expandafter\tabu@onxiii
+    \or   \expandafter\tabu@ofxiii
+    \else o%
+    \fi#1}%
+\def\tabu@onxiii #1#2{%
+    \ifcase  \ifx  !#2\tw@          \else
+             \ifcat.\noexpand#2\z@  \else
+             \ifx \tabu@spxiii#2\@ne\else
+             \tw@               \fi\fi\fi
+          \tabu@getparam{on}#2\expandafter\@gobble
+    \or   \expandafter\tabu@onxiii    % (space is active)
+    \else o\expandafter\@firstofone
+    \fi{#1#2}}%
+\def\tabu@ofxiii #1#2{%
+    \ifx #2f\expandafter\tabu@offxiii
+    \else   o\expandafter\@firstofone
+    \fi{#1#2}}
+\def\tabu@offxiii #1#2{%
+    \ifcase \ifx  !#2\tw@           \else
+            \ifcat.\noexpand#2\z@   \else
+            \ifx\tabu@spxiii#2\@ne  \else
+            \tw@                \fi\fi\fi
+          \tabu@getparam{off}#2\expandafter\@gobble
+    \or   \expandafter\tabu@offxiii   % (space is active)
+    \else o\expandafter\@firstofone
+    \fi{#1#2}}
+\def\tabu@getparam #1{\tabu@ \csname tabu@#1\endcsname=}
+\def\tabu@getcolor #1{% \tabu@ <- \tabu@getcolor after \edef
+    \ifx \tabu@#1\else   % no more spec
+        \let\tabu@theparam=#1\afterassignment \tabu@getc@l@r #1\fi
+}% \tabu@getcolor
+\def\tabu@getc@l@r #1\tabu@ {%
+    \def\tabu@temp{#1}\tabu@strtrim \tabu@temp
+    \ifx \tabu@temp\@empty
+    \else%\ifcsname \string\color@\tabu@temp \endcsname  % if the color exists
+        \ifx \tabu@theparam \tabu@off   \let\tabu@c@loff \tabu@c@l@r
+        \else                           \let\tabu@c@lon  \tabu@c@l@r
+        \fi
+    %\else \tabu@warncolour{\tabu@temp}%
+    \fi%\fi
+    \tabu@ % next spec
+}% \tabu@getc@l@r
+\def\tabu@warncolour #1{\PackageWarning{tabu}
+    {Color #1 is not defined. Default color used}%
+}% \tabu@warncolour
+\def\tabu@leadersstyle #1#2#3#4#5{\def\tabu@leaders{{#1}{#2}{#3}{#4}{#5}}%
+    \ifx \tabu@leaders\tabu@leaders@G \else
+                \tabu@LEADERS{#1}{#2}{#3}{#4}{#5}\fi
+}% \tabu@leadersstyle
+\def\tabu@rulesstyle #1#2{\let\tabu@leaders \@undefined
+        \gdef\tabu@thevrule{#1}\gdef\tabu@thehrule{#2}%
+}% \tabu@rulesstyle
+%% The leaders boxes ------------------------------------------------
+\def\tabu@LEADERS #1#2#3#4#5{%% width, dash, dash color, gap, gap color
+    {\let\color \tabu@color % => during trials ->  \color = \tabu@nocolor
+    {%                      %    but the leaders boxes should have colors !
+    \def\@therule{\vrule}\def\@thick{height}\def\@length{width}%
+    \def\@box{\hbox}\def\@unbox{\unhbox}\def\@elt{\wd}%
+    \def\@skip{\hskip}\def\@ss{\hss}\def\tabu@leads{\tabu@hleads}%
+    \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}%
+    \global\let\tabu@thehleaders \tabu@theleaders
+    }%
+    {%
+    \def\@therule{\hrule}\def\@thick{width}\def\@length{height}%
+    \def\@box{\vbox}\def\@unbox{\unvbox}\def\@elt{\ht}%
+    \def\@skip{\vskip}\def\@ss{\vss}\def\tabu@leads{\tabu@vleads}%
+    \tabu@l@@d@rs {#1}{#2}{#3}{#4}{#5}%
+    \global\let\tabu@thevleaders \tabu@theleaders
+    }%
+    \gdef\tabu@leaders@G{{#1}{#2}{#3}{#4}{#5}}%
+    }%
+}% \tabu@LEADERS
+\def\tabu@therule #1#2{\@therule \@thick#1\@length\dimexpr#2/2 \@depth\z@}
+\def\tabu@l@@d@rs #1#2#3#4#5{%% width, dash, dash color, gap, gap color
+    \global\setbox \tabu@leads=\@box{%
+        {#3\tabu@therule{#1}{#2}}%
+        \ifx\\#5\\\@skip#4\else{#5\tabu@therule{#1}{#4*2}}\fi
+        {#3\tabu@therule{#1}{#2}}}%
+    \global\setbox\tabu@leads=\@box to\@elt\tabu@leads{\@ss
+        {#3\tabu@therule{#1}{#2}}\@unbox\tabu@leads}%
+    \edef\tabu@theleaders ##1{\def\noexpand\tabu@theleaders {%
+        {##1\tabu@therule{#1}{#2}}%
+        \xleaders \copy\tabu@leads \@ss
+        \tabu@therule{0pt}{-#2}{##1\tabu@therule{#1}{#2}}}%
+    }\tabu@theleaders{#3}%
+}% \tabu@l@@d@rs
+%% \tabu \endtabu \tabu* \longtabu \endlongtabu \longtabu* ----------
+\newcommand*\tabu {\tabu@longfalse
+    \ifmmode \def\tabu@ {\array}\def\endtabu {\endarray}%
+    \else  \def\tabu@ {\tabu@tabular}\def\endtabu {\endtabular}\fi
+    \expandafter\let\csname tabu*\endcsname \tabu
+    \expandafter\def\csname endtabu*\endcsname{\endtabu}%
+    \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget
+}% {tabu}
+\let\tabu@tabular \tabular % <For LyX: some users redefine \tabular...>
+\expandafter\def\csname tabu*\endcsname{\tabuscantokenstrue \tabu}
+\newcommand*\longtabu {\tabu@longtrue
+   \ifmmode\PackageError{tabu}{longtabu not allowed in math mode}\fi
+   \def\tabu@{\longtable}\def\endlongtabu{\endlongtable}%
+   \LTchunksize=\@M
+   \expandafter\let\csname tabu*\endcsname \tabu
+   \expandafter\def\csname endlongtabu*\endcsname{\endlongtabu}%
+   \let\LT@startpbox \tabu@LT@startpbox % \everypar{ array struts }
+   \tabu@spreadfalse \tabu@negcoeffalse \tabu@settarget
+}% {longtabu}
+\expandafter\def\csname longtabu*\endcsname{\tabuscantokenstrue \longtabu}
+\def\tabu@nolongtabu{\PackageError{tabu}
+   {longtabu requires the longtable package}\@ehd}
+%% Read the target and  then : \tabular or \@array ------------------
+\def\tabu@settarget {\futurelet\@let@token \tabu@sett@rget }
+\def\tabu@sett@rget {\tabu@target \z@
+   \ifcase \ifx \bgroup\@let@token   \z@  \else
+           \ifx \@sptoken\@let@token \@ne \else
+           \if t\@let@token          \tw@ \else
+           \if s\@let@token          \thr@@\else
+           \z@\fi\fi\fi\fi
+         \expandafter\tabu@begin
+   \or   \expandafter\tabu@gobblespace\expandafter\tabu@settarget
+   \or   \expandafter\tabu@to
+   \or   \expandafter\tabu@spread
+   \fi
+}% \tabu@sett@rget
+\def\tabu@to to{\def\tabu@halignto{to}\tabu@gettarget}
+\def\tabu@spread spread{\tabu@spreadtrue\def\tabu@halignto{spread}\tabu@gettarget}
+\def\tabu@gettarget {\afterassignment\tabu@linegoaltarget \tabu@target }
+\def\tabu@linegoaltarget {\futurelet\tabu@temp \tabu@linegoalt@rget }
+\def\tabu@linegoalt@rget {%
+   \ifx \tabu@temp\LNGL@setlinegoal
+        \LNGL@setlinegoal \expandafter \@firstoftwo \fi % @gobbles \LNGL@setlinegoal
+   \tabu@begin
+}% \tabu@linegoalt@rget
+\def\tabu@begin #1#{%
+    \iftabu@measuring \expandafter\tabu@nestedmeasure \fi
+    \ifdim \tabu@target=\z@ \let\tabu@halignto \@empty
+    \else                   \edef\tabu@halignto{\tabu@halignto\the\tabu@target}%
+    \fi
+    \@testopt \tabu@tabu@ \tabu@aligndefault #1\@nil
+}% \tabu@begin
+\long\def\tabu@tabu@ [#1]#2\@nil #3{\tabu@setup
+   \def\tabu@align {#1}\def\tabu@savedpream{\NC@find #3}%
+   \tabu@ [\tabu@align ]#2{#3\tabu@rewritefirst }%
+}% \tabu@tabu@
+\def\tabu@nestedmeasure {%
+    \ifodd 1\iftabu@spread \else \ifdim\tabu@target=\z@ \else 0 \fi\fi\relax
+            \tabu@spreadtrue
+    \else   \begingroup \iffalse{\fi \ifnum0=`}\fi
+            \toks@{}\def\tabu@stack{b}%
+            \expandafter\tabu@collectbody\expandafter\tabu@quickrule
+                                         \expandafter\endgroup
+    \fi
+}% \tabu@nestedmeasure
+\def\tabu@quickrule {\indent\vrule height\z@ depth\z@ width\tabu@target}
+%% \tabu@setup  \tabu@init  \tabu@indent
+\def\tabu@setup{\tabu@alloc@
+    \ifcase \tabu@nested
+        \ifmmode \else \iftabu@spread\else \ifdim\tabu@target=\z@
+            \let\tabu@afterendpar \par
+        \fi\fi\fi
+        \def\tabu@aligndefault{c}\tabu@init \tabu@indent
+    \else       % <nested tabu>
+        \def\tabu@aligndefault{t}\let\tabudefaulttarget \linewidth
+    \fi
+    \let\tabu@thetarget \tabudefaulttarget \let\tabu@restored \@undefined
+    \edef\tabu@NC@list{\the\NC@list}\NC@list{\NC@do \tabu@rewritefirst}%
+    \everycr{}\let\@startpbox \tabu@startpbox % for nested tabu inside longtabu...
+              \let\@endpbox   \tabu@endpbox   % idem "    "    "    "    "    "
+              \let\@tabarray  \tabu@tabarray  % idem "    "    "    "    "    "
+    \tabu@setcleanup \tabu@setreset
+}% \tabu@setup
+\def\tabu@init{\tabu@starttimer \tabu@measuringfalse
+    \edef\tabu@hfuzz  {\the\dimexpr\hfuzz+1sp}\global\tabu@footnotes{}%
+    \let\firsthline    \tabu@firsthline   \let\lasthline      \tabu@lasthline
+    \let\firstline     \tabu@firstline    \let\lastline       \tabu@lastline
+    \let\hline         \tabu@hline        \let\@xhline        \tabu@xhline
+    \let\color         \tabu@color        \let\@arstrutbox    \tabu@arstrutbox
+    \iftabu@colortbl\else\let\LT@@hline   \tabu@LT@@hline \fi
+    \tabu@trivlist     %<restore \\=\@normalcr inside lists>
+    \let\@footnotetext \tabu@footnotetext \let\@xfootnotetext \tabu@xfootnotetext
+    \let\@xfootnote    \tabu@xfootnote    \let\centering      \tabu@centering
+    \let\raggedright   \tabu@raggedright  \let\raggedleft     \tabu@raggedleft
+    \let\tabudecimal   \tabu@tabudecimal  \let\Centering      \tabu@Centering
+    \let\RaggedRight   \tabu@RaggedRight  \let\RaggedLeft     \tabu@RaggedLeft
+    \let\justifying    \tabu@justifying   \let\rowfont        \tabu@rowfont
+    \let\fbox          \tabu@fbox         \let\color@b@x      \tabu@color@b@x
+    \let\tabu@@everycr \everycr           \let\tabu@@everypar \everypar
+    \let\tabu@prepnext@tokORI \prepnext@tok\let\prepnext@tok  \tabu@prepnext@tok
+    \let\tabu@multicolumnORI\multicolumn  \let\multicolumn    \tabu@multicolumn
+    \let\tabu@startpbox \@startpbox      % for nested tabu inside longtabu pfff !!!
+    \let\tabu@endpbox   \@endpbox        % idem  "    "    "    "    "    "    "
+    \let\tabu@tabarray  \@tabarray       % idem  "    "    "    "    "    "    "
+    \tabu@adl@fix      \let\endarray      \tabu@endarray % <fix> colortbl & arydshln (delarray)
+    \iftabu@colortbl\CT@everycr\expandafter{\expandafter\iftabu@everyrow \the\CT@everycr \fi}\fi
+}% \tabu@init
+\def\tabu@indent{% correction for indentation
+    \ifdim \parindent>\z@\ifx \linewidth\tabudefaulttarget
+    \everypar\expandafter{%
+        \the\everypar\everypar\expandafter{\the\everypar}%
+            \setbox\z@=\lastbox
+            \ifdim\wd\z@>\z@ \edef\tabu@thetarget
+                {\the\dimexpr -\wd\z@+\tabudefaulttarget}\fi
+            \box\z@}%
+    \fi\fi
+}% \tabu@indent
+\def\tabu@setcleanup {% saves last global assignments
+    \ifodd 1\ifmmode \else \iftabu@long \else 0\fi\fi\relax
+        \def\tabu@aftergroupcleanup{%
+                \def\tabu@aftergroupcleanup{\aftergroup\tabu@cleanup}}%
+    \else
+        \def\tabu@aftergroupcleanup{%
+                \aftergroup\aftergroup\aftergroup\tabu@cleanup
+                \let\tabu@aftergroupcleanup \relax}%
+    \fi
+    \let\tabu@arc@Gsave         \tabu@arc@G
+    \let\tabu@arc@G             \tabu@arc@L   % <init>
+    \let\tabu@drsc@Gsave        \tabu@drsc@G
+    \let\tabu@drsc@G            \tabu@drsc@L  % <init>
+    \let\tabu@ls@Gsave          \tabu@ls@G
+    \let\tabu@ls@G              \tabu@ls@L    % <init>
+    \let\tabu@rc@Gsave          \tabu@rc@G
+    \let\tabu@rc@G              \tabu@rc@L    % <init>
+    \let\tabu@evr@Gsave         \tabu@evr@G
+    \let\tabu@evr@G             \tabu@evr@L   % <init>
+    \let\tabu@celllalign@save   \tabu@celllalign
+    \let\tabu@cellralign@save   \tabu@cellralign
+    \let\tabu@cellleft@save     \tabu@cellleft
+    \let\tabu@cellright@save    \tabu@cellright
+    \let\tabu@@celllalign@save  \tabu@@celllalign
+    \let\tabu@@cellralign@save  \tabu@@cellralign
+    \let\tabu@@cellleft@save    \tabu@@cellleft
+    \let\tabu@@cellright@save   \tabu@@cellright
+    \let\tabu@rowfontreset@save \tabu@rowfontreset
+    \let\tabu@@rowfontreset@save\tabu@@rowfontreset
+    \let\tabu@rowfontreset      \@empty
+    \edef\tabu@alloc@save      {\the\tabu@alloc}%   restore at \tabu@reset
+    \edef\c@taburow@save       {\the\c@taburow}%
+    \edef\tabu@naturalX@save   {\the\tabu@naturalX}%
+    \let\tabu@naturalXmin@save  \tabu@naturalXmin
+    \let\tabu@naturalXmax@save  \tabu@naturalXmax
+    \let\tabu@mkarstrut@save    \tabu@mkarstrut
+    \edef\tabu@clarstrut{%
+        \extrarowheight \the\dimexpr \ht\@arstrutbox-\ht\strutbox \relax
+        \extrarowdepth \the\dimexpr \dp\@arstrutbox-\dp\strutbox \relax
+        \let\noexpand\@arraystretch \@ne \noexpand\tabu@rearstrut}%
+}% \tabu@setcleanup
+\def\tabu@cleanup {\begingroup
+    \globaldefs\@ne         \tabu@everyrowtrue
+    \let\tabu@arc@G         \tabu@arc@Gsave
+    \let\CT@arc@            \tabu@arc@G
+    \let\tabu@drsc@G        \tabu@drsc@Gsave
+    \let\CT@drsc@           \tabu@drsc@G
+    \let\tabu@ls@G          \tabu@ls@Gsave
+    \let\tabu@ls@           \tabu@ls@G
+    \let\tabu@rc@G          \tabu@rc@Gsave
+    \let\tabu@rc@           \tabu@rc@G
+    \let\CT@do@color        \relax
+    \let\tabu@evr@G         \tabu@evr@Gsave
+    \let\tabu@celllalign    \tabu@celllalign@save
+    \let\tabu@cellralign    \tabu@cellralign@save
+    \let\tabu@cellleft      \tabu@cellleft@save
+    \let\tabu@cellright     \tabu@cellright@save
+    \let\tabu@@celllalign   \tabu@@celllalign@save
+    \let\tabu@@cellralign   \tabu@@cellralign@save
+    \let\tabu@@cellleft     \tabu@@cellleft@save
+    \let\tabu@@cellright    \tabu@@cellright@save
+    \let\tabu@rowfontreset  \tabu@rowfontreset@save
+    \let\tabu@@rowfontreset \tabu@@rowfontreset@save
+    \tabu@naturalX         =\tabu@naturalX@save
+    \let\tabu@naturalXmax   \tabu@naturalXmax@save
+    \let\tabu@naturalXmin   \tabu@naturalXmin@save
+    \let\tabu@mkarstrut     \tabu@mkarstrut@save
+    \c@taburow             =\c@taburow@save
+    \ifcase \tabu@nested    \tabu@alloc \m@ne\fi
+    \endgroup               % <end of \globaldefs>
+    \ifcase \tabu@nested
+        \the\tabu@footnotes \global\tabu@footnotes{}%
+        \tabu@afterendpar   \tabu@elapsedtime
+    \fi
+    \tabu@clarstrut
+    \everyrow\expandafter   {\tabu@evr@G}%
+}% \tabu@cleanup
+\let\tabu@afterendpar \relax
+\def\tabu@setreset {%
+    \edef\tabu@savedparams {%         \relax for \tabu@message@save
+        \ifmmode \col@sep \the\arraycolsep
+        \else    \col@sep \the\tabcolsep \fi    \relax
+        \arrayrulewidth   \the\arrayrulewidth   \relax
+        \doublerulesep    \the\doublerulesep    \relax
+        \extratabsurround \the\extratabsurround \relax
+        \extrarowheight   \the\extrarowheight   \relax
+        \extrarowdepth    \the\extrarowdepth    \relax
+        \abovetabulinesep \the\abovetabulinesep \relax
+        \belowtabulinesep \the\belowtabulinesep \relax
+        \def\noexpand\arraystretch{\arraystretch}%
+        \ifdefined\minrowclearance \minrowclearance\the\minrowclearance\relax\fi}%
+    \begingroup
+        \@temptokena\expandafter{\tabu@savedparams}% => only for \savetabu / \usetabu
+        \ifx \tabu@arc@L\relax  \else \tabu@setsave \tabu@arc@L \fi
+        \ifx \tabu@drsc@L\relax \else \tabu@setsave \tabu@drsc@L \fi
+        \tabu@setsave \tabu@ls@L      \tabu@setsave \tabu@evr@L
+        \expandafter \endgroup \expandafter
+            \def\expandafter\tabu@saved@ \expandafter{\the\@temptokena
+                \let\tabu@arc@G  \tabu@arc@L
+                \let\tabu@drsc@G \tabu@drsc@L
+                \let\tabu@ls@G   \tabu@ls@L
+                \let\tabu@rc@G   \tabu@rc@L
+                \let\tabu@evr@G  \tabu@evr@L}%
+    \def\tabu@reset{\tabu@savedparams
+        \tabu@everyrowtrue  \c@taburow \z@
+        \let\CT@arc@        \tabu@arc@L
+        \let\CT@drsc@       \tabu@drsc@L
+        \let\tabu@ls@       \tabu@ls@L
+        \let\tabu@rc@       \tabu@rc@L
+        \global\tabu@alloc  \tabu@alloc@save
+        \everyrow\expandafter{\tabu@evr@L}}%
+}% \tabu@reset
+\def\tabu@setsave #1{\expandafter\tabu@sets@ve #1\@nil{#1}}
+\long\def\tabu@sets@ve #1\@nil #2{\@temptokena\expandafter{\the\@temptokena \def#2{#1}}}
+%% The Rewriting Process -------------------------------------------
+\def\tabu@newcolumntype #1{%
+    \expandafter\tabu@new@columntype
+        \csname NC@find@\string#1\expandafter\endcsname
+        \csname NC@rewrite@\string#1\endcsname
+        {#1}%
+}% \tabu@newcolumntype
+\def\tabu@new@columntype #1#2#3{%
+    \def#1##1#3{\NC@{##1}}%
+    \let#2\relax \newcommand*#2%
+}% \tabu@new@columntype
+\def\tabu@privatecolumntype #1{%
+    \expandafter\tabu@private@columntype
+        \csname NC@find@\string#1\expandafter\endcsname
+        \csname NC@rewrite@\string#1\expandafter\endcsname
+        \csname tabu@NC@find@\string#1\expandafter\endcsname
+        \csname tabu@NC@rewrite@\string#1\endcsname
+        {#1}%
+}% \tabu@privatecolumntype
+\def\tabu@private@columntype#1#2#3#4{%
+    \g@addto@macro\tabu@privatecolumns{\let#1#3\let#2#4}%
+    \tabu@new@columntype#3#4%
+}% \tabu@private@columntype
+\let\tabu@privatecolumns \@empty
+\newcommand*\tabucolumn [1]{\expandafter \def \expandafter
+    \tabu@highprioritycolumns\expandafter{\tabu@highprioritycolumns
+                                          \NC@do #1}}%
+\let\tabu@highprioritycolumns \@empty
+%% The  |  ``column'' : rewriting process --------------------------
+\tabu@privatecolumntype |{\tabu@rewritevline}
+\newcommand*\tabu@rewritevline[1][]{\tabu@vlinearg{#1}%
+                \expandafter \NC@find \tabu@rewritten}
+\def\tabu@lines #1{%
+    \ifx|#1\else \tabu@privatecolumntype #1{\tabu@rewritevline}\fi
+    \NC@list\expandafter{\the\NC@list \NC@do #1}%
+}% \tabu@lines@
+\def\tabu@vlinearg #1{%
+    \ifx\\#1\\\def\tabu@thestyle {\tabu@ls@}%
+    \else\tabu@getline {#1}%
+    \fi
+    \def\tabu@rewritten ##1{\def\tabu@rewritten{!{##1\tabu@thevline}}%
+    }\expandafter\tabu@rewritten\expandafter{\tabu@thestyle}%
+    \expandafter \tabu@keepls \tabu@thestyle \@nil
+}% \tabu@vlinearg
+\def\tabu@keepls #1\@nil{%
+    \ifcat $\@cdr #1\@nil $%
+    \ifx \relax#1\else
+    \ifx \tabu@ls@#1\else
+        \let#1\relax
+        \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer
+                \tabu@savels\noexpand#1}\fi\fi\fi
+}% \tabu@keepls
+\def\tabu@thevline {\begingroup
+    \ifdefined\tabu@leaders
+        \setbox\@tempboxa=\vtop to\dimexpr
+                      \ht\@arstrutbox+\dp\@arstrutbox{{\tabu@thevleaders}}%
+        \ht\@tempboxa=\ht\@arstrutbox \dp\@tempboxa=\dp\@arstrutbox
+        \box\@tempboxa
+    \else
+                \tabu@thevrule
+    \fi             \endgroup
+}% \tabu@thevline
+\def\tabu@savels #1{%
+    \expandafter\let\csname\string#1\endcsname #1%
+    \expandafter\def\expandafter\tabu@reset\expandafter{\tabu@reset
+                                                    \tabu@resetls#1}}%
+\def\tabu@resetls #1{\expandafter\let\expandafter#1\csname\string#1\endcsname}%
+%% \multicolumn inside tabu environment -----------------------------
+\tabu@newcolumntype \tabu@rewritemulticolumn{%
+    \aftergroup \tabu@endrewritemulticolumn % after \@mkpream group
+    \NC@list{\NC@do *}\tabu@textbar \tabu@lines
+    \tabu@savedecl
+    \tabu@privatecolumns
+    \NC@list\expandafter{\the\expandafter\NC@list \tabu@NC@list}%
+    \let\tabu@savels \relax
+    \NC@find
+}% \tabu@rewritemulticolumn
+\def\tabu@endrewritemulticolumn{\gdef\tabu@mkpreambuffer{}\endgroup}
+\def\tabu@multicolumn{\tabu@ifenvir \tabu@multic@lumn \tabu@multicolumnORI}
+\long\def\tabu@multic@lumn #1#2#3{\multispan{#1}\begingroup
+    \tabu@everyrowtrue
+    \NC@list{\NC@do \tabu@rewritemulticolumn}%
+    \expandafter\@gobbletwo % gobbles \multispan{#1}
+         \tabu@multicolumnORI{#1}{\tabu@rewritemulticolumn #2}%
+                {\iftabuscantokens \tabu@rescan \else \expandafter\@firstofone \fi
+                {#3}}%
+}% \tabu@multic@lumn
+%% The X column(s): rewriting process -----------------------------
+\tabu@privatecolumntype X[1][]{\begingroup \tabu@siunitx{\endgroup \tabu@rewriteX {#1}}}
+\def\tabu@nosiunitx #1{#1{}{}\expandafter \NC@find \tabu@rewritten }
+\def\tabu@siunitx   #1{\@ifnextchar \bgroup
+                     {\tabu@rewriteX@Ss{#1}}
+                      {\tabu@nosiunitx{#1}}}
+\def\tabu@rewriteX@Ss #1#2{\@temptokena{}%
+    \@defaultunits \let\tabu@temp =#2\relax\@nnil
+    \ifodd 1\ifx S\tabu@temp \else \ifx s\tabu@temp \else 0 \fi\fi
+        \def\NC@find{\def\NC@find >####1####2<####3\relax{#1 {####1}{####3}%
+            }\expandafter\NC@find \the\@temptokena \relax
+        }\expandafter\NC@rewrite@S \@gobble #2\relax
+    \else \tabu@siunitxerror
+    \fi
+    \expandafter \NC@find \tabu@rewritten
+}% \tabu@rewriteX@Ss
+\def\tabu@siunitxerror {\PackageError{tabu}{Not a S nor s column !
+        \MessageBreak X column can only embed siunitx S or s columns}\@ehd
+}% \tabu@siunitxerror
+\def\tabu@rewriteX #1#2#3{\tabu@Xarg {#1}{#2}{#3}%
+    \iftabu@measuring
+    \else \tabu@measuringtrue % first X column found in the preamble
+        \let\@halignto \relax   \let\tabu@halignto \relax
+        \iftabu@spread \tabu@spreadtarget \tabu@target \tabu@target \z@
+        \else          \tabu@spreadtarget \z@ \fi
+        \ifdim \tabu@target=\z@
+                \setlength\tabu@target \tabu@thetarget
+                \tabu@message{\tabu@message@defaulttarget}%
+        \else   \tabu@message{\tabu@message@target}\fi
+    \fi
+}% \tabu@rewriteX
+\def\tabu@rewriteXrestore #1#2#3{\let\@halignto \relax
+                                \def\tabu@rewritten{l}}
+\def\tabu@Xarg #1#2#3{%
+   \advance\tabu@Xcol \@ne      \let\tabu@Xlcr  \@empty
+   \let\tabu@Xdisp    \@empty   \let\tabu@Xmath \@empty
+    \ifx\\#1\\%    <shortcut when no option>
+         \def\tabu@rewritten{p}\tabucolX \p@        % <default coef = 1>
+    \else
+         \let\tabu@rewritten \@empty   \let\tabu@temp \@empty  \tabucolX \z@
+         \tabu@Xparse {}#1\relax
+    \fi
+    \tabu@Xrewritten{#2}{#3}%
+}% \tabu@Xarg
+\def\tabu@Xparse #1{\futurelet\@let@token \tabu@Xtest}
+\expandafter\def\expandafter\tabu@Xparsespace\space{\tabu@Xparse{}}
+\def\tabu@Xtest{%
+   \ifcase \ifx \relax\@let@token \z@ \else
+           \if ,\@let@token \m@ne\else
+           \if p\@let@token 1\else
+           \if m\@let@token 2\else
+           \if b\@let@token 3\else
+           \if l\@let@token 4\else
+           \if c\@let@token 5\else
+           \if r\@let@token 6\else
+           \if j\@let@token 7\else
+           \if L\@let@token 8\else
+           \if C\@let@token 9\else
+           \if R\@let@token 10\else
+           \if J\@let@token 11\else
+           \ifx \@sptoken\@let@token 12\else
+           \if .\@let@token 13\else
+           \if -\@let@token 13\else
+           \ifcat $\@let@token 14\else
+           15\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax
+   \or \tabu@Xtype {p}%
+   \or \tabu@Xtype {m}%
+   \or \tabu@Xtype {b}%
+   \or \tabu@Xalign \raggedright\relax
+   \or \tabu@Xalign \centering\relax
+   \or \tabu@Xalign \raggedleft\relax
+   \or \tabu@Xalign \tabu@justify\relax
+   \or \tabu@Xalign \RaggedRight\raggedright
+   \or \tabu@Xalign \Centering\centering
+   \or \tabu@Xalign \RaggedLeft\raggedleft
+   \or \tabu@Xalign \justifying\tabu@justify
+   \or \expandafter \tabu@Xparsespace
+   \or \expandafter \tabu@Xcoef
+   \or \expandafter \tabu@Xm@th
+   \or \tabu@Xcoef{}%
+   \else\expandafter \tabu@Xparse
+   \fi
+}% \tabu@Xtest
+\def\tabu@Xalign #1#2{%
+    \ifx \tabu@Xlcr\@empty \else \PackageWarning{tabu}
+       {Duplicate horizontal alignment specification}\fi
+    \ifdefined#1\def\tabu@Xlcr{#1}\let#1\relax
+    \else       \def\tabu@Xlcr{#2}\let#2\relax\fi
+    \expandafter\tabu@Xparse
+}% \tabu@Xalign
+\def\tabu@Xtype #1{%
+    \ifx \tabu@rewritten\@empty \else \PackageWarning{tabu}
+            {Duplicate vertical alignment specification}\fi
+    \def\tabu@rewritten{#1}\expandafter\tabu@Xparse
+}% \tabu@Xtype
+\def\tabu@Xcoef#1{\edef\tabu@temp{\tabu@temp#1}%
+    \afterassignment\tabu@Xc@ef \tabu@cnt\number\if-#10\fi
+}% \tabu@Xcoef
+\def\tabu@Xc@ef{\advance\tabucolX \tabu@temp\the\tabu@cnt\p@
+    \tabu@Xparse{}%
+}% \tabu@Xc@ef
+\def\tabu@Xm@th #1{\futurelet \@let@token \tabu@Xd@sp}
+\def\tabu@Xd@sp{\let\tabu@Xmath=$%
+    \ifx $\@let@token \def\tabu@Xdisp{\displaystyle}%
+            \expandafter\tabu@Xparse
+    \else   \expandafter\tabu@Xparse\expandafter{\expandafter}%
+    \fi
+}% \tabu@Xd@sp
+\def\tabu@Xrewritten {%
+   \ifx  \tabu@rewritten\@empty \def\tabu@rewritten{p}\fi
+   \ifdim \tabucolX<\z@         \tabu@negcoeftrue
+   \else\ifdim \tabucolX=\z@    \tabucolX \p@
+   \fi\fi
+   \edef\tabu@temp{{\the\tabu@Xcol}{\tabu@strippt\tabucolX}}%
+   \edef\tabu@Xcoefs{\tabu@Xcoefs    \tabu@      \tabu@temp}%
+   \edef\tabu@rewritten ##1##2{\def\noexpand\tabu@rewritten{%
+        >{\tabu@Xlcr \ifx$\tabu@Xmath$\tabu@Xdisp\fi ##1}%
+                    \tabu@rewritten {\tabu@hsize \tabu@temp}%
+        <{##2\ifx$\tabu@Xmath$\fi}}%
+   }\tabu@rewritten
+}% \tabu@Xrewritten
+\def\tabu@hsize #1#2{%
+    \ifdim #2\p@<\z@
+        \ifdim \tabucolX=\maxdimen \tabu@wd{#1}\else
+        \ifdim \tabu@wd{#1}<-#2\tabucolX \tabu@wd{#1}\else -#2\tabucolX\fi
+        \fi
+   \else #2\tabucolX
+   \fi
+}% \tabu@hsize
+%% \usetabu  and  \preamble: rewriting process ---------------------
+\tabu@privatecolumntype \usetabu [1]{%
+    \ifx\\#1\\\tabu@saveerr{}\else
+        \@ifundefined{tabu@saved@\string#1}
+            {\tabu@saveerr{#1}}
+            {\let\tabu@rewriteX \tabu@rewriteXrestore
+             \csname tabu@saved@\string#1\expandafter\endcsname\expandafter\@ne}%
+    \fi
+}% \NC@rewrite@\usetabu
+\tabu@privatecolumntype \preamble [1]{%
+    \ifx\\#1\\\tabu@saveerr{}\else
+        \@ifundefined{tabu@saved@\string#1}
+            {\tabu@saveerr{#1}}
+            {\csname tabu@saved@\string#1\expandafter\endcsname\expandafter\z@}%
+    \fi
+}% \NC@rewrite@\preamble
+%% Controlling the rewriting process -------------------------------
+\tabu@newcolumntype \tabu@rewritefirst{%
+    \iftabu@long    \aftergroup \tabu@longpream  % <the whole implementation is here !>
+    \else           \aftergroup \tabu@pream
+    \fi
+    \let\tabu@          \relax      \let\tabu@hsize     \relax
+    \let\tabu@Xcoefs    \@empty     \let\tabu@savels    \relax
+    \tabu@Xcol          \z@         \tabu@cnt           \tw@
+    \gdef\tabu@mkpreambuffer{\tabu@{}}\tabu@measuringfalse
+    \global\setbox\@arstrutbox \box\@arstrutbox
+    \NC@list{\NC@do *}\tabu@textbar \tabu@lines
+    \NC@list\expandafter{\the\NC@list \NC@do X}%
+    \iftabu@siunitx     % <siunitx S and s columns>
+            \NC@list\expandafter{\the\NC@list \NC@do S\NC@do s}\fi
+    \NC@list\expandafter{\the\expandafter\NC@list \tabu@highprioritycolumns}%
+    \expandafter\def\expandafter\tabu@NC@list\expandafter{%
+                    \the\expandafter\NC@list \tabu@NC@list}%    % * | X S <original>
+    \NC@list\expandafter{\expandafter \NC@do \expandafter\usetabu
+                         \expandafter \NC@do \expandafter\preamble
+                         \the\NC@list \NC@do \tabu@rewritemiddle
+                                      \NC@do \tabu@rewritelast}%
+    \tabu@savedecl
+    \tabu@privatecolumns
+    \edef\tabu@prev{\the\@temptokena}\NC@find \tabu@rewritemiddle
+}% NC@rewrite@\tabu@rewritefirst
+\tabu@newcolumntype \tabu@rewritemiddle{%
+    \edef\tabu@temp{\the\@temptokena}\NC@find \tabu@rewritelast
+}% \NC@rewrite@\tabu@rewritemiddle
+\tabu@newcolumntype \tabu@rewritelast{%
+    \ifx \tabu@temp\tabu@prev   \advance\tabu@cnt \m@ne
+            \NC@list\expandafter{\tabu@NC@list \NC@do \tabu@rewritemiddle
+                                               \NC@do \tabu@rewritelast}%
+    \else \let\tabu@prev\tabu@temp
+    \fi
+    \ifcase \tabu@cnt   \expandafter\tabu@endrewrite
+    \else               \expandafter\NC@find \expandafter\tabu@rewritemiddle
+    \fi
+}% \NC@rewrite@\tabu@rewritelast
+%% Choosing the strategy --------------------------------------------
+\def\tabu@endrewrite {%
+    \let\tabu@temp \NC@find
+    \ifx \@arrayright\relax \let\@arrayright \@empty  \fi
+    \count@=%
+        \ifx \@finalstrut\tabu@finalstrut \z@ % outer in mode 0 print
+             \iftabu@measuring
+                \xdef\tabu@mkpreambuffer{\tabu@mkpreambuffer
+                    \tabu@target        \csname tabu@\the\tabu@nested.T\endcsname
+                    \tabucolX           \csname tabu@\the\tabu@nested.X\endcsname
+                    \edef\@halignto {\ifx\@arrayright\@empty to\tabu@target\fi}}%
+             \fi
+        \else\iftabu@measuring        4       % X columns
+                \xdef\tabu@mkpreambuffer{\tabu@{\tabu@mkpreambuffer
+                    \tabu@target        \the\tabu@target
+                    \tabu@spreadtarget  \the\tabu@spreadtarget}%
+                    \def\noexpand\tabu@Xcoefs{\tabu@Xcoefs}%
+                    \edef\tabu@halignto{\ifx \@arrayright\@empty to\tabu@target\fi}}%
+                 \let\tabu@Xcoefs \relax
+             \else\ifcase\tabu@nested \thr@@  % outer, no X
+                                      \global\let\tabu@afterendpar \relax
+                  \else               \@ne    % inner, no X, outer in mode 1 or 2
+                  \fi
+                  \ifdefined\tabu@usetabu
+                  \else \ifdim\tabu@target=\z@
+                  \else \let\tabu@temp \tabu@extracolsep
+                  \fi\fi
+             \fi
+        \fi
+    \xdef\tabu@mkpreambuffer{\count@ \the\count@ \tabu@mkpreambuffer}%
+    \tabu@temp
+}% \tabu@endrewrite
+\def\tabu@extracolsep{\@defaultunits    \expandafter\let
+    \expandafter\tabu@temp \expandafter=\the\@temptokena \relax\@nnil
+    \ifx \tabu@temp\@sptoken
+        \expandafter\tabu@gobblespace \expandafter\tabu@extracolsep
+    \else
+        \edef\tabu@temp{\noexpand\NC@find
+            \if |\noexpand\tabu@temp        @%
+            \else\if !\noexpand\tabu@temp   @%
+            \else                           !%
+            \fi\fi
+            {\noexpand\extracolsep\noexpand\@flushglue}}%
+    \fi
+    \tabu@temp
+}% \tabu@extrac@lsep
+%% Implementing the strategy ----------------------------------------
+\long\def\tabu@pream #1\@preamble {%
+    \let\tabu@ \tabu@@  \tabu@mkpreambuffer     \tabu@aftergroupcleanup
+    \NC@list\expandafter {\tabu@NC@list}%    in case of nesting...
+    \ifdefined\tabu@usetabu \tabu@usetabu \tabu@target \z@ \fi
+    \let\tabu@savedpreamble \@preamble
+    \global\let\tabu@elapsedtime \relax
+    \tabu@thebody ={#1\tabu@aftergroupcleanup}%
+    \tabu@thebody =\expandafter{\the\expandafter\tabu@thebody
+                                                \@preamble}%
+    \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens )
+    \tabu@select
+}% \tabu@pream
+\long\def\tabu@longpream #1\LT@bchunk #2\LT@bchunk{%
+    \let\tabu@ \tabu@@  \tabu@mkpreambuffer     \tabu@aftergroupcleanup
+    \NC@list\expandafter {\tabu@NC@list}%    in case of nesting...
+    \let\tabu@savedpreamble \@preamble
+    \global\let\tabu@elapsedtime \relax
+    \tabu@thebody ={#1\LT@bchunk #2\tabu@aftergroupcleanup \LT@bchunk}%
+    \edef\tabuthepreamble {\the\tabu@thebody}% ( no @ allowed for \scantokens )
+    \tabu@select
+}% \tabu@longpream
+\def\tabu@select {%
+    \ifnum\tabu@nested>\z@ \tabuscantokensfalse \fi
+    \ifnum \count@=\@ne \iftabu@measuring \count@=\tw@ \fi\fi
+    \ifcase \count@
+        \global\let\tabu@elapsedtime \relax
+        \tabu@seteverycr
+        \expandafter \tabuthepreamble       % vertical adjustment (inherited from outer)
+    \or      % exit in vertical measure + struts per cell because no X and outer in mode 3
+        \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}%
+        \def\tabu@cellralign{\tabu@verticalspacing}%
+        \tabu@seteverycr
+        \expandafter \tabuthepreamble
+    \or                            % exit without measure because no X and outer in mode 4
+        \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty
+        \tabu@seteverycr
+        \expandafter \tabuthepreamble
+    \else                                   % needs trials
+        \tabu@evr{}\tabu@celllalign@def{}\let\tabu@cellralign \@empty
+        \tabu@savecounters
+        \expandafter \tabu@setstrategy
+    \fi
+}% \tabu@select
+\def\tabu@@ {\gdef\tabu@mkpreambuffer}
+%% Protections to set up before trials ------------------------------
+\def\tabu@setstrategy {\begingroup  % <trials group>
+    \tabu@trialh@@k    \tabu@cnt    \z@  % number of trials
+    \hbadness          \@M          \let\hbadness          \@tempcnta
+    \hfuzz             \maxdimen    \let\hfuzz             \@tempdima
+    \let\write         \tabu@nowrite\let\GenericError      \tabu@GenericError
+    \let\savetabu      \@gobble     \let\tabudefaulttarget \linewidth
+    \let\@footnotetext \@gobble     \let\@xfootnote        \tabu@xfootnote
+    \let\color         \tabu@nocolor\let\rowcolor          \tabu@norowcolor
+    \let\tabu@aftergroupcleanup \relax % only after the last trial
+    \tabu@mkpreambuffer
+    \ifnum \count@>\thr@@ \let\@halignto \@empty  \tabucolX@init
+                          \def\tabu@lasttry{\m@ne\p@}\fi
+    \begingroup \iffalse{\fi \ifnum0=`}\fi
+        \toks@{}\def\tabu@stack{b}\iftabuscantokens \endlinechar=10 \obeyspaces \fi %
+                                  \tabu@collectbody \tabu@strategy %
+}% \tabu@setstrategy
+\def\tabu@savecounters{%
+    \def\@elt ##1{\csname c@##1\endcsname\the\csname c@##1\endcsname}%
+    \edef\tabu@clckpt {\begingroup \globaldefs=\@ne \cl@@ckpt \endgroup}\let\@elt \relax
+}% \tabu@savecounters
+\def\tabucolX@init {%  \tabucolX <= \tabu@target / (sum coefs > 0)
+    \dimen@ \z@ \tabu@Xsum \z@ \tabucolX \z@ \let\tabu@ \tabu@Xinit \tabu@Xcoefs
+    \ifdim \dimen@>\z@
+        \@tempdima \dimexpr \tabu@target *\p@/\dimen@ + \tabu@hfuzz\relax
+        \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi
+    \fi
+}% \tabucolX@init
+\def\tabu@Xinit #1#2{\tabu@Xcol #1 \advance \tabu@Xsum
+    \ifdim #2\p@>\z@ #2\p@  \advance\dimen@ #2\p@
+    \else           -#2\p@  \tabu@negcoeftrue
+                            \@tempdima \dimexpr \tabu@target*\p@/\dimexpr-#2\p@\relax \relax
+                            \ifdim \tabucolX<\@tempdima \tabucolX \@tempdima \fi
+                            \tabu@wddef{#1}{0pt}%
+    \fi
+}% \tabu@Xinit
+%% Collecting the environment body ----------------------------------
+\long\def\tabu@collectbody #1#2\end #3{%
+    \edef\tabu@stack{\tabu@pushbegins #2\begin\end\expandafter\@gobble\tabu@stack}%
+    \ifx \tabu@stack\@empty
+        \toks@\expandafter{\expandafter\tabu@thebody\expandafter{\the\toks@ #2}%
+                \def\tabu@end@envir{\end{#3}}%
+                \iftabuscantokens
+                    \iftabu@long \def\tabu@endenvir {\end{#3}\tabu@gobbleX}%
+                    \else        \def\tabu@endenvir {\let\endarray \@empty
+                                                     \end{#3}\tabu@gobbleX}%
+                    \fi
+                \else           \def\tabu@endenvir  {\end{#3}}\fi}%
+        \let\tabu@collectbody \tabu@endofcollect
+    \else\def\tabu@temp{#3}%
+        \ifx \tabu@temp\@empty \toks@\expandafter{\the\toks@ #2\end }%
+        \else \ifx\tabu@temp\tabu@@spxiii \toks@\expandafter{\the\toks@ #2\end #3}%
+        \else \ifx\tabu@temp\tabu@X \toks@\expandafter{\the\toks@ #2\end #3}%
+        \else \toks@\expandafter{\the\toks@ #2\end{#3}}%
+        \fi\fi\fi
+    \fi
+    \tabu@collectbody{#1}%
+}% \tabu@collectbody
+\long\def\tabu@pushbegins#1\begin#2{\ifx\end#2\else b\expandafter\tabu@pushbegins\fi}%
+\def\tabu@endofcollect #1{\ifnum0=`{}\fi
+                          \expandafter\endgroup \the\toks@  #1%
+}% \tabu@endofcollect
+%% The trials: switching between strategies -------------------------
+\def\tabu@strategy {\relax  % stops \count@ assignment !
+    \ifcase\count@          % case 0 = print with vertical adjustment (outer is finished)
+        \expandafter \tabu@endoftrials
+    \or                     % case 1 = exit in vertical measure (outer in mode 3)
+        \expandafter\xdef\csname tabu@\the\tabu@nested.T\endcsname{\the\tabu@target}%
+        \expandafter\xdef\csname tabu@\the\tabu@nested.X\endcsname{\the\tabucolX}%
+        \expandafter \tabu@endoftrials
+    \or                     % case 2 = exit with a rule replacing the table (outer in mode 4)
+        \expandafter \tabu@quickend
+    \or                     % case 3 = outer is in mode 3 because of no X
+        \begingroup
+            \tabu@evr{\tabu@verticalinit}\tabu@celllalign@def{\tabu@verticalmeasure}%
+            \def\tabu@cellralign{\tabu@verticalspacing}%
+            \expandafter \tabu@measuring
+    \else                   % case 4 = horizontal measure
+        \begingroup
+            \global\let\tabu@elapsedtime \tabu@message@etime
+            \long\def\multicolumn##1##2##3{\multispan{##1}}%
+            \let\tabu@startpboxORI \@startpbox
+            \iftabu@spread
+                    \def\tabu@naturalXmax {\z@}%
+                    \let\tabu@naturalXmin \tabu@naturalXmax
+                    \tabu@evr{\global\tabu@naturalX \z@}%
+                    \let\@startpbox \tabu@startpboxmeasure
+            \else\iftabu@negcoef
+                    \let\@startpbox \tabu@startpboxmeasure
+            \else   \let\@startpbox \tabu@startpboxquick
+            \fi\fi
+            \expandafter \tabu@measuring
+    \fi
+}% \tabu@strategy
+\def\tabu@measuring{\expandafter \tabu@trial \expandafter
+                                                \count@ \the\count@ \tabu@endtrial
+}% \tabu@measuring
+\def\tabu@trial{\iftabu@long \tabu@longtrial \else \tabu@shorttrial \fi}
+\def\tabu@shorttrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr
+    \ifx \tabu@savecounters\relax \else
+                \let\tabu@savecounters \relax \tabu@clckpt \fi
+    $\iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi
+       \expandafter{\expandafter \tabuthepreamble
+                         \the\tabu@thebody
+                         \csname tabu@adl@endtrial\endcsname
+                         \endarray}$\egroup             % got \tabu@box
+}% \tabu@shorttrial
+\def\tabu@longtrial {\setbox\tabu@box \hbox\bgroup \tabu@seteverycr
+    \ifx \tabu@savecounters\relax \else
+                \let\tabu@savecounters \relax \tabu@clckpt \fi
+    \iftabuscantokens \tabu@rescan \else \expandafter\@secondoftwo \fi
+       \expandafter{\expandafter \tabuthepreamble
+                         \the\tabu@thebody
+                         \tabuendlongtrial}\egroup      % got \tabu@box
+}% \tabu@longtrial
+\def\tabuendlongtrial{% no @ allowed for \scantokens
+    \LT@echunk  \global\setbox\@ne \hbox{\unhbox\@ne}\kern\wd\@ne
+                \LT@get@widths
+}% \tabuendlongtrial
+\def\tabu@adl@endtrial{% <arydshln in nested trials - problem for global column counters!>
+    \crcr \noalign{\global\adl@ncol \tabu@nbcols}}% anything global is crap, junky and fails !
+\def\tabu@seteverycr {\tabu@reset
+    \everycr \expandafter{\the\everycr  \tabu@everycr}%
+    \let\everycr \tabu@noeverycr                      % <for ialign>
+}% \tabu@seteverycr
+\def\tabu@noeverycr{{\aftergroup\tabu@restoreeverycr \afterassignment}\toks@}
+\def\tabu@restoreeverycr {\let\everycr \tabu@@everycr}
+\def\tabu@everycr {\iftabu@everyrow \noalign{\tabu@everyrow}\fi}
+\def\tabu@endoftrials {%
+    \iftabuscantokens   \expandafter\@firstoftwo
+    \else               \expandafter\@secondoftwo
+    \fi
+        {\expandafter \tabu@closetrialsgroup \expandafter
+         \tabu@rescan \expandafter{%
+                    \expandafter\tabuthepreamble
+                        \the\expandafter\tabu@thebody
+                                    \iftabu@long \else \endarray \fi}}
+        {\expandafter\tabu@closetrialsgroup \expandafter
+                    \tabuthepreamble
+                        \the\tabu@thebody}%
+                                        \tabu@endenvir      % Finish !
+}% \tabu@endoftrials
+\def\tabu@closetrialsgroup {%
+    \toks@\expandafter{\tabu@endenvir}%
+    \edef\tabu@bufferX{\endgroup
+        \tabucolX       \the\tabucolX
+        \tabu@target    \the\tabu@target
+        \tabu@cnt       \the\tabu@cnt
+        \def\noexpand\tabu@endenvir{\the\toks@}%
+        %Quid de \@halignto = \tabu@halignto ??
+    }% \tabu@bufferX
+    \tabu@bufferX
+    \ifcase\tabu@nested % print out (outer in mode 0)
+        \global\tabu@cnt \tabu@cnt
+        \tabu@evr{\tabu@verticaldynamicadjustment}%
+        \tabu@celllalign@def{\everypar{}}\let\tabu@cellralign \@empty
+        \let\@finalstrut \tabu@finalstrut
+    \else               % vertical measure of nested tabu
+        \tabu@evr{\tabu@verticalinit}%
+        \tabu@celllalign@def{\tabu@verticalmeasure}%
+        \def\tabu@cellralign{\tabu@verticalspacing}%
+    \fi
+    \tabu@clckpt \let\@halignto \tabu@halignto
+    \let\@halignto \@empty
+    \tabu@seteverycr
+    \ifdim \tabustrutrule>\z@ \ifnum\tabu@nested=\z@
+        \setbox\@arstrutbox \box\voidb@x % force \@arstrutbox to be rebuilt (visible struts)
+    \fi\fi
+}% \tabu@closetrialsgroup
+\def\tabu@quickend {\expandafter \endgroup \expandafter
+                        \tabu@target \the\tabu@target \tabu@quickrule
+                        \let\endarray \relax \tabu@endenvir
+}% \tabu@quickend
+\def\tabu@endtrial {\relax      % stops \count@ assignment !
+    \ifcase \count@ \tabu@err   % case 0 = impossible here
+    \or             \tabu@err   % case 1 = impossible here
+    \or             \tabu@err   % case 2 = impossible here
+    \or                         % case 3 = outer goes into mode 0
+        \def\tabu@bufferX{\endgroup}\count@ \z@
+    \else                       % case 4 = outer goes into mode 3
+        \iftabu@spread  \tabu@spreadarith % inner into mode 1 (outer in mode 3)
+        \else           \tabu@arith       %              or 2 (outer in mode 4)
+        \fi
+        \count@=%
+            \ifcase\tabu@nested     \thr@@  % outer goes into mode 3
+            \else\iftabu@measuring  \tw@    % outer is in mode 4
+            \else                   \@ne    % outer is in mode 3
+            \fi\fi
+        \edef\tabu@bufferX{\endgroup
+                           \tabucolX        \the\tabucolX
+                           \tabu@target     \the\tabu@target}%
+    \fi
+    \expandafter \tabu@bufferX \expandafter
+                                    \count@ \the\count@  \tabu@strategy
+}% \tabu@endtrial
+\def\tabu@err{\errmessage{(tabu) Internal impossible error! (\count@=\the\count@)}}
+%% The algorithms: compute the widths / stop or go on ---------------
+\def\tabu@arithnegcoef {%
+    \@tempdima \z@ \dimen@ \z@ \let\tabu@ \tabu@arith@negcoef \tabu@Xcoefs
+}% \tabu@arithnegcoef
+\def\tabu@arith@negcoef #1#2{%
+    \ifdim #2\p@>\z@    \advance\dimen@     #2\p@       % saturated by definition
+                        \advance\@tempdima  #2\tabucolX
+    \else
+        \ifdim -#2\tabucolX <\tabu@wd{#1}% c_i X < natural width <= \tabu@target-> saturated
+                        \advance\dimen@     -#2\p@
+                        \advance\@tempdima  -#2\tabucolX
+        \else
+                        \advance\@tempdima \tabu@wd{#1}% natural width <= c_i X => neutralised
+                        \ifdim \tabu@wd{#1}<\tabu@target \else % neutralised
+                        \advance\dimen@     -#2\p@ % saturated (natural width = tabu@target)
+                        \fi
+        \fi
+    \fi
+}% \tabu@arith@negcoef
+\def\tabu@givespace #1#2{% here \tabu@DELTA < \z@
+    \ifdim \@tempdima=\z@
+        \tabu@wddef{#1}{\the\dimexpr -\tabu@DELTA*\p@/\tabu@Xsum}%
+    \else
+        \tabu@wddef{#1}{\the\dimexpr \tabu@hsize{#1}{#2}
+                    *(\p@ -\tabu@DELTA*\p@/\@tempdima)/\p@\relax}%
+    \fi
+}% \tabu@givespace
+\def\tabu@arith {\advance\tabu@cnt \@ne
+    \ifnum \tabu@cnt=\@ne \tabu@message{\tabu@titles}\fi
+    \tabu@arithnegcoef
+    \@tempdimb \dimexpr \wd\tabu@box -\@tempdima \relax % <incompressible material>
+    \tabu@DELTA = \dimexpr \wd\tabu@box - \tabu@target \relax
+    \tabu@message{\tabu@message@arith}%
+    \ifdim \tabu@DELTA <\tabu@hfuzz
+        \ifdim \tabu@DELTA<\z@          % wd (tabu)<\tabu@target ?
+            \let\tabu@ \tabu@givespace \tabu@Xcoefs
+            \advance\@tempdima \@tempdimb \advance\@tempdima -\tabu@DELTA % for message
+        \else   % already converged: nothing to do but nearly impossible...
+        \fi
+        \tabucolX \maxdimen
+        \tabu@measuringfalse
+    \else                               % need for narrower X columns
+        \tabucolX =\dimexpr (\@tempdima -\tabu@DELTA) *\p@/\tabu@Xsum \relax
+        \tabu@measuringtrue
+        \@whilesw \iftabu@measuring\fi {%
+            \advance\tabu@cnt \@ne
+            \tabu@arithnegcoef
+            \tabu@DELTA =\dimexpr \@tempdima+\@tempdimb -\tabu@target \relax % always < 0 here
+            \tabu@message{\tabu@header
+                \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@
+                \tabu@msgalign \@tempdima+\@tempdimb { }{ }{ }{ }{ }\@@
+                \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@
+                \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@
+                \ifdim -\tabu@DELTA<\tabu@hfuzz \tabu@spaces target ok\else
+                \tabu@msgalign \dimexpr -\tabu@DELTA *\p@/\dimen@ {}{}{}{}{}\@@
+                \fi}%
+            \ifdim -\tabu@DELTA<\tabu@hfuzz
+                \advance\@tempdima \@tempdimb % for message
+                \tabu@measuringfalse
+            \else
+                \advance\tabucolX \dimexpr -\tabu@DELTA *\p@/\dimen@ \relax
+            \fi
+        }%
+    \fi
+    \tabu@message{\tabu@message@reached}%
+    \edef\tabu@bufferX{\endgroup \tabu@cnt    \the\tabu@cnt
+                                 \tabucolX    \the\tabucolX
+                                 \tabu@target \the\tabu@target}%
+}% \tabu@arith
+\def\tabu@spreadarith {%
+    \dimen@ \z@ \@tempdima \tabu@naturalXmax \let\tabu@ \tabu@spread@arith \tabu@Xcoefs
+    \edef\tabu@naturalXmin {\the\dimexpr\tabu@naturalXmin*\dimen@/\p@}%
+    \@tempdimc =\dimexpr \wd\tabu@box -\tabu@naturalXmax+\tabu@naturalXmin \relax
+    \iftabu@measuring
+        \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax
+        \edef\tabu@bufferX{\endgroup \tabucolX \the\tabucolX \tabu@target\the\tabu@target}%
+    \else
+        \tabu@message{\tabu@message@spreadarith}%
+        \ifdim \dimexpr \@tempdimc+\tabu@spreadtarget >\tabu@target
+            \tabu@message{(tabu) spread
+                \ifdim \@tempdimc>\tabu@target useless here: default target used%
+                \else too large: reduced to fit default target\fi.}%
+        \else
+            \tabu@target =\dimexpr \@tempdimc+\tabu@spreadtarget \relax
+            \tabu@message{(tabu) spread: New target set to \the\tabu@target^^J}%
+        \fi
+        \begingroup \let\tabu@wddef \@gobbletwo
+            \@tempdimb \@tempdima
+            \tabucolX@init
+            \tabu@arithnegcoef
+            \wd\tabu@box =\dimexpr \wd\tabu@box +\@tempdima-\@tempdimb \relax
+        \expandafter\endgroup \expandafter\tabucolX \the\tabucolX
+        \tabu@arith
+    \fi
+}% \tabu@spreadarith
+\def\tabu@spread@arith #1#2{%
+    \ifdim #2\p@>\z@ \advance\dimen@ #2\p@
+    \else            \advance\@tempdima \tabu@wd{#1}\relax
+    \fi
+}% \tabu@spread@arith
+%% Reporting in the .log file ---------------------------------------
+\def\tabu@message@defaulttarget{%
+    \ifnum\tabu@nested=\z@^^J(tabu) Default target:
+    \ifx\tabudefaulttarget\linewidth    \string\linewidth
+        \ifdim \tabu@thetarget=\linewidth \else
+            -\the\dimexpr\linewidth-\tabu@thetarget\fi  =
+    \else\ifx\tabudefaulttarget\linegoal\string\linegoal=
+    \fi\fi
+    \else (tabu) Default target (nested): \fi
+    \the\tabu@target \on@line
+    \ifnum\tabu@nested=\z@ , page \the\c@page\fi}
+\def\tabu@message@target {^^J(tabu) Target specified:
+   \the\tabu@target \on@line, page \the\c@page}
+\def\tabu@message@arith {\tabu@header
+    \tabu@msgalign \tabucolX { }{ }{ }{ }{ }\@@
+    \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{ }\@@
+    \tabu@msgalign \tabu@target { }{ }{ }{ }{ }\@@
+    \tabu@msgalign@PT \dimen@ { }{}{}{}{}{}{}\@@
+    \ifdim \tabu@DELTA<\tabu@hfuzz giving space\else
+    \tabu@msgalign \dimexpr (\@tempdima-\tabu@DELTA) *\p@/\tabu@Xsum -\tabucolX {}{}{}{}{}\@@
+    \fi
+}% \tabu@message@arith
+\def\tabu@message@spreadarith {\tabu@spreadheader
+   \tabu@msgalign \tabu@spreadtarget { }{ }{ }{ }{}\@@
+   \tabu@msgalign \wd\tabu@box { }{ }{ }{ }{}\@@
+   \tabu@msgalign -\tabu@naturalXmax { }{}{}{}{}\@@
+   \tabu@msgalign \tabu@naturalXmin { }{ }{ }{ }{}\@@
+   \tabu@msgalign \ifdim \dimexpr\@tempdimc>\tabu@target \tabu@target
+                  \else  \@tempdimc+\tabu@spreadtarget \fi
+                  {}{}{}{}{}\@@}
+\def\tabu@message@negcoef #1#2{
+    \tabu@spaces\tabu@spaces\space * #1. X[\rem@pt#2]:
+    \space width = \tabu@wd {#1}
+        \expandafter\string\csname tabu@\the\tabu@nested.W\number#1\endcsname
+    \ifdim -\tabu@pt#2\tabucolX<\tabu@target
+    < \number-\rem@pt#2 X
+    = \the\dimexpr -\tabu@pt#2\tabucolX \relax
+    \else
+    <= \the\tabu@target\space < \number-\rem@pt#2 X\fi}
+\def\tabu@message@reached{\tabu@header
+     ******* Reached Target:
+            hfuzz = \tabu@hfuzz\on@line\space *******}
+\def\tabu@message@etime{\edef\tabu@stoptime{\the\pdfelapsedtime}%
+    \tabu@message{(tabu)\tabu@spaces Time elapsed during measure:
+    \the\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax sec
+    \the\numexpr\numexpr(\tabu@stoptime-\tabu@starttime)
+    -\numexpr(\tabu@stoptime-\tabu@starttime-32767)/65536\relax*65536\relax
+    *1000/65536\relax ms \tabu@spaces(\the\tabu@cnt\space
+                                        cycle\ifnum\tabu@cnt>\@ne s\fi)^^J^^J}}
+\def\tabu@message@verticalsp {%
+    \ifdim \@tempdima>\tabu@ht
+        \ifdim \@tempdimb>\tabu@dp
+        \expandafter\expandafter\expandafter\string\tabu@ht =
+            \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@
+        \expandafter\expandafter\expandafter\string\tabu@dp =
+            \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J%
+        \else
+        \expandafter\expandafter\expandafter\string\tabu@ht =
+            \tabu@msgalign \@tempdima { }{ }{ }{ }{ }\@@^^J%
+        \fi
+    \else\ifdim \@tempdimb>\tabu@dp
+        \tabu@spaces\tabu@spaces\tabu@spaces
+        \expandafter\expandafter\expandafter\string\tabu@dp =
+            \tabu@msgalign \@tempdimb { }{ }{ }{ }{ }\@@^^J\fi
+    \fi
+}% \tabu@message@verticalsp
+\edef\tabu@spaces{\@spaces}
+\def\tabu@strippt{\expandafter\tabu@pt\the}
+{\@makeother\P \@makeother\T\lowercase{\gdef\tabu@pt #1PT{#1}}}
+\def\tabu@msgalign{\expandafter\tabu@msg@align\the\dimexpr}
+\def\tabu@msgalign@PT{\expandafter\tabu@msg@align\romannumeral-`\0\tabu@strippt}
+\def\do #1{%
+    \def\tabu@msg@align##1.##2##3##4##5##6##7##8##9\@@{%
+    \ifnum##1<10 #1 #1\else
+    \ifnum##1<100 #1 \else
+    \ifnum##1<\@m #1\fi\fi\fi
+    ##1.##2##3##4##5##6##7##8#1}%
+    \def\tabu@header{(tabu) \ifnum\tabu@cnt<10 #1\fi\the\tabu@cnt) }%
+    \def\tabu@titles{\ifnum \tabu@nested=\z@
+      (tabu) Try#1 #1 tabu X #1 #1 #1tabu Width #1 #1 Target
+                  #1 #1 #1 Coefs #1 #1 #1 Update^^J\fi}%
+    \def\tabu@spreadheader{%
+      (tabu) Try#1 #1 Spread #1 #1 tabu Width #1 #1 #1 Nat. X #1 #1 #1 #1Nat. Min.
+                                                      #1 New Target^^J%
+      (tabu) sprd}
+    \def\tabu@message@save {\begingroup
+        \def\x ####1{\tabu@msg@align ####1{ }{ }{ }{ }{}\@@}
+        \def\z ####1{\expandafter\x\expandafter{\romannumeral-`\0\tabu@strippt
+                                                     \dimexpr####1\p@{ }{ }}}%
+        \let\color \relax \def\tabu@rulesstyle ####1####2{\detokenize{####1}}%
+        \let\CT@arc@ \relax \let\@preamble \@gobble
+        \let\tabu@savedpream  \@firstofone
+        \let\tabu@savedparams \@firstofone
+        \def\tabu@target ####1\relax   {(tabu) target #1 #1 #1 #1 #1 = \x{####1}^^J}%
+        \def\tabucolX ####1\relax      {(tabu) X columns width#1 = \x{####1}^^J}%
+        \def\tabu@nbcols ####1\relax   {(tabu) Number of columns: \z{####1}^^J}%
+        \def\tabu@aligndefault    ####1{(tabu) Default alignment: #1 #1 ####1^^J}%
+        \def\col@sep ####1\relax       {(tabu) column sep #1 #1 #1 = \x{####1}^^J}%
+        \def\arrayrulewidth ####1\relax{(tabu) arrayrulewidth #1 = \x{####1}}%
+        \def\doublerulesep ####1\relax { doublerulesep = \x{####1}^^J}%
+        \def\extratabsurround####1\relax{(tabu) extratabsurround = \x{####1}^^J}%
+        \def\extrarowheight ####1\relax{(tabu) extrarowheight #1 = \x{####1}}%
+        \def\extrarowdepth ####1\relax {extrarowdepth = \x{####1}^^J}%
+        \def\abovetabulinesep####1\relax{(tabu) abovetabulinesep=\x{####1} }%
+        \def\belowtabulinesep####1\relax{ belowtabulinesep=\x{####1}^^J}%
+        \def\arraystretch         ####1{(tabu) arraystretch #1 #1 = \z{####1}^^J}%
+        \def\minrowclearance####1\relax{(tabu) minrowclearance #1 = \x{####1}^^J}%
+        \def\tabu@arc@L           ####1{(tabu) taburulecolor #1 #1 = ####1^^J}%
+        \def\tabu@drsc@L          ####1{(tabu) tabudoublerulecolor=  ####1^^J}%
+        \def\tabu@evr@L           ####1{(tabu) everyrow #1 #1 #1 #1 = \detokenize{####1}^^J}%
+        \def\tabu@ls@L            ####1{(tabu) line style = \detokenize{####1}^^J}%
+        \def\NC@find ####1\@nil{(tabu) tabu preamble#1 #1 = \detokenize{####1}^^J}%
+        \def\tabu@wddef####1####2{(tabu) Natural width ####1 = \x{####2}^^J}%
+        \let\edef \@gobbletwo \let\def \@empty \let\let \@gobbletwo
+        \tabu@message{%
+         (tabu) \string\savetabu{\tabu@temp}: \on@line^^J%
+         \tabu@usetabu \@nil^^J}%
+        \endgroup}
+}\do{ }
+%% Measuring the natural width (varwidth) - store the results -------
+\def\tabu@startpboxmeasure #1{\bgroup   % entering \vtop
+    \edef\tabu@temp{\expandafter\@secondoftwo \ifx\tabu@hsize #1\else\relax\fi}%
+    \ifodd 1\ifx \tabu@temp\@empty 0 \else      % starts with \tabu@hsize ?
+            \iftabu@spread           \else      % if spread -> measure
+            \ifdim \tabu@temp\p@>\z@ 0 \fi\fi\fi% if coef>0 -> do not measure
+        \let\@startpbox \tabu@startpboxORI      % restore immediately (nesting)
+        \tabu@measuringtrue                     % for the quick option...
+        \tabu@Xcol =\expandafter\@firstoftwo\ifx\tabu@hsize #1\fi
+        \ifdim \tabu@temp\p@>\z@ \ifdim \tabu@temp\tabucolX<\tabu@target
+                                        \tabu@target=\tabu@temp\tabucolX \fi\fi
+        \setbox\tabu@box  \hbox \bgroup
+            \begin{varwidth}\tabu@target
+                \let\FV@ListProcessLine \tabu@FV@ListProcessLine  % \hbox to natural width...
+                \narrowragged \arraybackslash \parfillskip \@flushglue
+                \ifdefined\pdfadjustspacing \pdfadjustspacing\z@ \fi
+                \bgroup \aftergroup\tabu@endpboxmeasure
+                \ifdefined \cellspacetoplimit \tabu@cellspacepatch \fi
+    \else \expandafter\@gobble
+                            \tabu@startpboxquick{#1}% \@gobble \bgroup
+    \fi
+}% \tabu@startpboxmeasure
+\def\tabu@cellspacepatch{\def\bcolumn##1\@nil{}\let\ecolumn\@empty
+                                          \bgroup\color@begingroup}
+\def\tabu@endpboxmeasure {%
+    \@finalstrut \@arstrutbox
+                    \end{varwidth}\egroup    % <got my \tabu@box>
+    \ifdim \tabu@temp\p@ <\z@   % neg coef
+        \ifdim \tabu@wd\tabu@Xcol <\wd\tabu@box
+            \tabu@wddef\tabu@Xcol {\the\wd\tabu@box}%
+            \tabu@debug{\tabu@message@endpboxmeasure}%
+        \fi
+    \else                       % spread coef>0
+        \global\advance \tabu@naturalX \wd\tabu@box
+        \@tempdima =\dimexpr \wd\tabu@box *\p@/\dimexpr \tabu@temp\p@\relax \relax
+        \ifdim \tabu@naturalXmax <\tabu@naturalX
+            \xdef\tabu@naturalXmax {\the\tabu@naturalX}\fi
+        \ifdim \tabu@naturalXmin <\@tempdima
+            \xdef\tabu@naturalXmin {\the\@tempdima}\fi
+    \fi
+   \box\tabu@box \egroup % end of \vtop (measure) restore \tabu@target
+}% \tabu@endpboxmeasure
+\def\tabu@wddef #1{\expandafter\xdef
+                   \csname tabu@\the\tabu@nested.W\number#1\endcsname}
+\def\tabu@wd    #1{\csname tabu@\the\tabu@nested.W\number#1\endcsname}
+\def\tabu@message@endpboxmeasure{\tabu@spaces\tabu@spaces<-> % <-> save natural wd
+    \the\tabu@Xcol. X[\tabu@temp]:
+    target = \the\tabucolX \space
+    \expandafter\expandafter\expandafter\string\tabu@wd\tabu@Xcol
+    =\tabu@wd\tabu@Xcol
+}% \tabu@message@endpboxmeasure
+\def\tabu@startpboxquick {\bgroup
+    \let\@startpbox \tabu@startpboxORI  % restore immediately
+    \let\tabu \tabu@quick               % \begin is expanded before...
+    \expandafter\@gobble \@startpbox    % gobbles \bgroup
+}% \tabu@startpboxquick
+\def\tabu@quick {\begingroup \iffalse{\fi \ifnum0=`}\fi
+    \toks@{}\def\tabu@stack{b}\tabu@collectbody \tabu@endquick
+}% \tabu@quick
+\def\tabu@endquick {%
+    \ifodd 1\ifx\tabu@end@envir\tabu@endtabu  \else
+            \ifx\tabu@end@envir\tabu@endtabus \else 0\fi\fi\relax
+            \endgroup
+    \else   \let\endtabu \relax
+            \tabu@end@envir
+    \fi
+}% \tabu@quick
+\def\tabu@endtabu   {\end{tabu}}
+\def\tabu@endtabus  {\end{tabu*}}
+%% Measuring the heights and depths - store the results -------------
+\def\tabu@verticalmeasure{\everypar{}%
+    \ifnum \currentgrouptype>12         % 14=semi-simple, 15=math shift group
+        \setbox\tabu@box =\hbox\bgroup
+            \let\tabu@verticalspacing \tabu@verticalsp@lcr
+            \d@llarbegin                % after \hbox ...
+    \else
+        \edef\tabu@temp{\ifnum\currentgrouptype=5\vtop
+                        \else\ifnum\currentgrouptype=12\vcenter
+                        \else\vbox\fi\fi}%
+        \setbox\tabu@box \hbox\bgroup$\tabu@temp \bgroup
+            \let\tabu@verticalspacing \tabu@verticalsp@pmb
+    \fi
+}% \tabu@verticalmeasure
+\def\tabu@verticalsp@lcr{%
+    \d@llarend \egroup       % <got my \tabu@box>
+    \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep
+    \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax
+        \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi
+    \ifdim \tabu@ht<\@tempdima    \tabu@htdef{\the\@tempdima}\fi
+    \ifdim \tabu@dp<\@tempdimb    \tabu@dpdef{\the\@tempdimb}\fi
+    \noindent\vrule height\@tempdima depth\@tempdimb
+}% \tabu@verticalsp@lcr
+\def\tabu@verticalsp@pmb{% inserts struts as needed
+    \par \expandafter\egroup
+            \expandafter$\expandafter
+                    \egroup \expandafter
+                            \@tempdimc \the\prevdepth
+    \@tempdima \dimexpr \ht\tabu@box+\abovetabulinesep
+    \@tempdimb \dimexpr \dp\tabu@box+\belowtabulinesep \relax
+        \ifdim\tabustrutrule>\z@ \tabu@debug{\tabu@message@verticalsp}\fi
+    \ifdim \tabu@ht<\@tempdima    \tabu@htdef{\the\@tempdima}\fi
+    \ifdim \tabu@dp<\@tempdimb    \tabu@dpdef{\the\@tempdimb}\fi
+    \let\@finalstrut \@gobble
+    \hrule height\@tempdima depth\@tempdimb width\hsize
+%%    \box\tabu@box
+}% \tabu@verticalsp@pmb
+
+\def\tabu@verticalinit{%
+    \ifnum \c@taburow=\z@ \tabu@rearstrut \fi       % after \tabu@reset !
+    \advance\c@taburow \@ne
+    \tabu@htdef{\the\ht\@arstrutbox}\tabu@dpdef{\the\dp\@arstrutbox}%
+    \advance\c@taburow \m@ne
+}% \tabu@verticalinit
+\def\tabu@htdef {\expandafter\xdef \csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname}
+\def\tabu@ht                      {\csname tabu@\the\tabu@nested.H\the\c@taburow\endcsname}
+\def\tabu@dpdef {\expandafter\xdef \csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname}
+\def\tabu@dp                      {\csname tabu@\the\tabu@nested.D\the\c@taburow\endcsname}
+\def\tabu@verticaldynamicadjustment {%
+    \advance\c@taburow \@ne
+        \extrarowheight \dimexpr\tabu@ht - \ht\strutbox
+        \extrarowdepth  \dimexpr\tabu@dp - \dp\strutbox
+        \let\arraystretch \@empty
+    \advance\c@taburow \m@ne
+}% \tabu@verticaldynamicadjustment
+\def\tabuphantomline{\crcr \noalign{%
+    {\globaldefs \@ne
+        \setbox\@arstrutbox     \box\voidb@x
+        \let\tabu@@celllalign   \tabu@celllalign
+        \let\tabu@@cellralign   \tabu@cellralign
+        \let\tabu@@cellleft     \tabu@cellleft
+        \let\tabu@@cellright    \tabu@cellright
+        \let\tabu@@thevline     \tabu@thevline
+        \let\tabu@celllalign    \@empty
+        \let\tabu@cellralign    \@empty
+        \let\tabu@cellright     \@empty
+        \let\tabu@cellleft      \@empty
+        \let\tabu@thevline      \relax}%
+    \edef\tabu@temp{\tabu@multispan \tabu@nbcols{\noindent &}}%
+    \toks@\expandafter{\tabu@temp \noindent\tabu@everyrowfalse \cr
+        \noalign{\tabu@rearstrut
+            {\globaldefs\@ne
+                \let\tabu@celllalign \tabu@@celllalign
+                \let\tabu@cellralign \tabu@@cellralign
+                \let\tabu@cellleft   \tabu@@cellleft
+                \let\tabu@cellright  \tabu@@cellright
+                \let\tabu@thevline   \tabu@@thevline}}}%
+    \expandafter}\the\toks@
+}% \tabuphantomline
+%% \firsthline and \lasthline corrections ---------------------------
+\def\tabu@firstline {\tabu@hlineAZ  \tabu@firsthlinecorrection     {}}
+\def\tabu@firsthline{\tabu@hlineAZ  \tabu@firsthlinecorrection \hline}
+\def\tabu@lastline  {\tabu@hlineAZ  \tabu@lasthlinecorrection      {}}
+\def\tabu@lasthline {\tabu@hlineAZ  \tabu@lasthlinecorrection  \hline}
+\def\tabu@hline {% replaces \hline if no colortbl (see \AtBeginDocument)
+    \noalign{\ifnum0=`}\fi
+    {\CT@arc@\hrule height\arrayrulewidth}%
+    \futurelet \tabu@temp \tabu@xhline
+}% \tabu@hline
+\def\tabu@xhline{%
+    \ifx \tabu@temp \hline
+        {\ifx \CT@drsc@\relax \vskip
+         \else\ifx \CT@drsc@\@empty \vskip
+         \else \CT@drsc@\hrule height
+         \fi\fi
+         \doublerulesep}%
+    \fi
+    \ifnum0=`{\fi}%
+}% \tabu@xhline
+\def\tabu@hlineAZ #1#2{\noalign{\ifnum0=`}\fi \dimen@ \z@ \count@ \z@
+    \toks@{}\def\tabu@hlinecorrection{#1}\def\tabu@temp{#2}%
+    \tabu@hlineAZsurround
+}% \tabu@hlineAZ
+\newcommand*\tabu@hlineAZsurround[1][\extratabsurround]{%
+    \extratabsurround #1\let\tabucline \tabucline@scan
+    \let\hline     \tabu@hlinescan \let\firsthline \hline
+    \let\cline     \tabu@clinescan \let\lasthline  \hline
+    \expandafter \futurelet \expandafter \tabu@temp
+                \expandafter \tabu@nexthlineAZ \tabu@temp
+}% \tabu@hlineAZsurround
+\def\tabu@hlinescan   {\tabu@thick \arrayrulewidth \tabu@xhlineAZ \hline}
+\def\tabu@clinescan #1{\tabu@thick \arrayrulewidth \tabu@xhlineAZ {\cline{#1}}}
+\def\tabucline@scan{\@testopt \tabucline@sc@n {}}
+\def\tabucline@sc@n #1[#2]{\tabu@xhlineAZ {\tabucline[{#1}]{#2}}}
+\def\tabu@nexthlineAZ{%
+    \ifx \tabu@temp\hline \else
+    \ifx \tabu@temp\cline \else
+    \ifx \tabu@temp\tabucline \else
+         \tabu@hlinecorrection
+    \fi\fi\fi
+}% \tabu@nexthlineAZ
+\def\tabu@xhlineAZ #1{%
+    \toks@\expandafter{\the\toks@ #1}%
+    \@tempdimc \tabu@thick                  % The last line width
+    \ifcase\count@ \@tempdimb \tabu@thick   % The first line width
+    \else \advance\dimen@ \dimexpr \tabu@thick+\doublerulesep \relax
+    \fi
+    \advance\count@ \@ne    \futurelet \tabu@temp \tabu@nexthlineAZ
+}% \tabu@xhlineAZ
+\def\tabu@firsthlinecorrection{% \count@ = number of \hline -1
+    \@tempdima \dimexpr \ht\@arstrutbox+\dimen@
+    \edef\firsthline{%      <local in \noalign>
+        \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule
+                    height \the\dimexpr\@tempdima+\extratabsurround
+                    depth  \dp\@arstrutbox
+                    width  \tabustrutrule}\hss}\cr
+        \noalign{\vskip -\the\dimexpr   \@tempdima+\@tempdimb
+                                        +\dp\@arstrutbox \relax}%
+        \the\toks@
+   }\ifnum0=`{\fi
+            \expandafter}\firsthline % we are then !
+}% \tabu@firsthlinecorrection
+\def\tabu@lasthlinecorrection{%
+    \@tempdima \dimexpr  \dp\@arstrutbox+\dimen@+\@tempdimb+\@tempdimc
+    \edef\lasthline{%   <local in \noalign>
+        \the\toks@
+        \noalign{\vskip -\the\dimexpr\dimen@+\@tempdimb+\dp\@arstrutbox}%
+        \omit \hbox to\z@{\hss{\noexpand\tabu@DBG{yellow}\vrule
+                    depth \the\dimexpr \dp\@arstrutbox+\@tempdimb+\dimen@
+                                       +\extratabsurround-\@tempdimc
+                    height \z@
+                    width \tabustrutrule}\hss}\cr
+    }\ifnum0=`{\fi
+            \expandafter}\lasthline % we are then !
+}% \tabu@lasthlinecorrection
+\def\tabu@LT@@hline{%
+    \ifx\LT@next\hline
+        \global\let\LT@next \@gobble
+        \ifx \CT@drsc@\relax
+            \gdef\CT@LT@sep{%
+                \noalign{\penalty-\@medpenalty\vskip\doublerulesep}}%
+        \else
+            \gdef\CT@LT@sep{%
+                \multispan\LT@cols{%
+                \CT@drsc@\leaders\hrule\@height\doublerulesep\hfill}\cr}%
+        \fi
+    \else
+        \global\let\LT@next\empty
+        \gdef\CT@LT@sep{%
+            \noalign{\penalty-\@lowpenalty\vskip-\arrayrulewidth}}%
+    \fi
+    \ifnum0=`{\fi}%
+    \multispan\LT@cols
+        {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr
+    \CT@LT@sep
+    \multispan\LT@cols
+        {\CT@arc@\leaders\hrule\@height\arrayrulewidth\hfill}\cr
+    \noalign{\penalty\@M}%
+    \LT@next
+}% \tabu@LT@@hline
+%% Horizontal lines : \tabucline ------------------------------------
+\let\tabu@start \@tempcnta
+\let\tabu@stop  \@tempcntb
+\newcommand*\tabucline{\noalign{\ifnum0=`}\fi \tabu@cline}
+\newcommand*\tabu@cline[2][]{\tabu@startstop{#2}%
+   \ifnum \tabu@stop<\z@   \toks@{}%
+   \else \tabu@clinearg{#1}\tabu@thestyle
+        \edef\tabucline{\toks@{%
+            \ifnum \tabu@start>\z@ \omit
+                  \tabu@multispan\tabu@start {\span\omit}&\fi
+            \omit \tabu@multispan\tabu@stop {\span\omit}%
+                                        \tabu@thehline\cr
+        }}\tabucline
+        \tabu@tracinglines{(tabu:tabucline) Style: #1^^J\the\toks@^^J^^J}%
+    \fi
+    \futurelet \tabu@temp \tabu@xcline
+}% \tabu@cline
+\def\tabu@clinearg #1{%
+    \ifx\\#1\\\let\tabu@thestyle \tabu@ls@
+    \else \@defaultunits \expandafter\let\expandafter\@tempa
+                                    \romannumeral-`\0#1\relax \@nnil
+        \ifx \hbox\@tempa           \tabu@clinebox{#1}%
+        \else\ifx \box\@tempa       \tabu@clinebox{#1}%
+        \else\ifx \vbox\@tempa      \tabu@clinebox{#1}%
+        \else\ifx \vtop\@tempa      \tabu@clinebox{#1}%
+        \else\ifx \copy\@tempa      \tabu@clinebox{#1}%
+        \else\ifx \leaders\@tempa   \tabu@clineleads{#1}%
+        \else\ifx \cleaders\@tempa  \tabu@clineleads{#1}%
+        \else\ifx \xleaders\@tempa  \tabu@clineleads{#1}%
+        \else\tabu@getline {#1}%
+        \fi\fi\fi\fi\fi\fi\fi\fi
+    \fi
+}% \tabu@clinearg
+\def\tabu@clinebox #1{\tabu@clineleads{\xleaders#1\hss}}
+\def\tabu@clineleads #1{%
+    \let\tabu@thestyle \relax \let\tabu@leaders \@undefined
+    \gdef\tabu@thehrule{#1}}
+\def\tabu@thehline{\begingroup
+    \ifdefined\tabu@leaders
+            \noexpand\tabu@thehleaders
+    \else   \noexpand\tabu@thehrule
+    \fi            \endgroup
+}% \tabu@thehline
+\def\tabu@xcline{%
+    \ifx \tabu@temp\tabucline
+        \toks@\expandafter{\the\toks@ \noalign
+        {\ifx\CT@drsc@\relax \vskip
+         \else \CT@drsc@\hrule height
+         \fi
+         \doublerulesep}}%
+    \fi
+    \tabu@docline
+}% \tabu@xcline
+\def\tabu@docline {\ifnum0=`{\fi \expandafter}\the\toks@}
+\def\tabu@docline@evr {\xdef\tabu@doclineafter{\the\toks@}%
+              \ifnum0=`{\fi}\aftergroup\tabu@doclineafter}
+\def\tabu@multispan #1#2{%
+    \ifnum\numexpr#1>\@ne #2\expandafter\tabu@multispan
+    \else                   \expandafter\@gobbletwo
+    \fi  {#1-1}{#2}%
+}% \tabu@multispan
+\def\tabu@startstop #1{\tabu@start@stop #1\relax 1-\tabu@nbcols \@nnil}
+\def\tabu@start@stop #1-#2\@nnil{%
+   \@defaultunits   \tabu@start\number 0#1\relax    \@nnil
+   \@defaultunits   \tabu@stop \number 0#2\relax    \@nnil
+   \tabu@stop   \ifnum \tabu@start>\tabu@nbcols     \m@ne
+                \else\ifnum \tabu@stop=\z@          \tabu@nbcols
+                \else\ifnum \tabu@stop>\tabu@nbcols \tabu@nbcols
+                \else                               \tabu@stop
+                \fi\fi\fi
+   \advance\tabu@start \m@ne
+   \ifnum \tabu@start>\z@ \advance\tabu@stop -\tabu@start \fi
+}% \tabu@start@stop
+%% Numbers: siunitx S columns  (and \tabudecimal) -------------------
+\def\tabu@tabudecimal #1{%
+    \def\tabu@decimal{#1}\@temptokena{}%
+    \let\tabu@getdecimal@ \tabu@getdecimal@ignorespaces
+    \tabu@scandecimal
+}% \tabu@tabudecimal
+\def\tabu@scandecimal{\futurelet \tabu@temp \tabu@getdecimal@}
+\def\tabu@skipdecimal#1{#1\tabu@scandecimal}
+\def\tabu@getdecimal@ignorespaces{%
+    \ifcase 0\ifx\tabu@temp\ignorespaces\else
+             \ifx\tabu@temp\@sptoken1\else
+             2\fi\fi\relax
+            \let\tabu@getdecimal@ \tabu@getdecimal
+            \expandafter\tabu@skipdecimal
+    \or     \expandafter\tabu@gobblespace\expandafter\tabu@scandecimal
+    \else   \expandafter\tabu@skipdecimal
+    \fi
+}% \tabu@getdecimal@ignorespaces
+\def\tabu@get@decimal#1{\@temptokena\expandafter{\the\@temptokena #1}%
+                        \tabu@scandecimal}
+\def\do#1{%
+    \def\tabu@get@decimalspace#1{%
+        \@temptokena\expandafter{\the\@temptokena #1}\tabu@scandecimal}%
+}\do{ }
+\let\tabu@@tabudecimal \tabu@tabudecimal
+\def\tabu@getdecimal{%
+   \ifcase    0\ifx 0\tabu@temp\else
+               \ifx 1\tabu@temp\else
+               \ifx 2\tabu@temp\else
+               \ifx 3\tabu@temp\else
+               \ifx 4\tabu@temp\else
+               \ifx 5\tabu@temp\else
+               \ifx 6\tabu@temp\else
+               \ifx 7\tabu@temp\else
+               \ifx 8\tabu@temp\else
+               \ifx 9\tabu@temp\else
+               \ifx .\tabu@temp\else
+               \ifx ,\tabu@temp\else
+               \ifx -\tabu@temp\else
+               \ifx +\tabu@temp\else
+               \ifx e\tabu@temp\else
+               \ifx E\tabu@temp\else
+               \ifx\tabu@cellleft\tabu@temp1\else
+               \ifx\ignorespaces\tabu@temp1\else
+               \ifx\@sptoken\tabu@temp2\else
+            3\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax
+       \expandafter\tabu@get@decimal
+   \or \expandafter\tabu@skipdecimal
+   \or \expandafter\tabu@get@decimalspace
+   \else\expandafter\tabu@printdecimal
+   \fi
+}% \tabu@getdecimal
+\def\tabu@printdecimal{%
+    \edef\tabu@temp{\the\@temptokena}%
+    \ifx\tabu@temp\@empty\else
+    \ifx\tabu@temp\space\else
+        \expandafter\tabu@decimal\expandafter{\the\@temptokena}%
+    \fi\fi
+}% \tabu@printdecimal
+%% Verbatim inside X columns ----------------------------------------
+\def\tabu@verbatim{%
+    \let\verb \tabu@verb
+    \let\FV@DefineCheckEnd \tabu@FV@DefineCheckEnd
+}% \tabu@verbatim
+\let\tabu@ltx@verb \verb
+\def\tabu@verb{\@ifstar {\tabu@ltx@verb*} \tabu@ltx@verb}
+\def\tabu@fancyvrb {%
+    \def\tabu@FV@DefineCheckEnd ##1{%
+        \def\tabu@FV@DefineCheckEnd{%
+            ##1% <original definition (if fancyvrb is loaded)>
+            \let\FV@CheckEnd     \tabu@FV@CheckEnd
+            \let\FV@@CheckEnd    \tabu@FV@@CheckEnd
+            \let\FV@@@CheckEnd   \tabu@FV@@@CheckEnd
+            \edef\FV@EndScanning{%
+            \def\noexpand\next{\noexpand\end{\FV@EnvironName}}%
+                \global\let\noexpand\FV@EnvironName\relax
+                \noexpand\next}%
+            \xdef\FV@EnvironName{\detokenize\expandafter{\FV@EnvironName}}}%
+    }\expandafter\tabu@FV@DefineCheckEnd\expandafter{\FV@DefineCheckEnd}
+}% \tabu@fancyvrb
+\def\tabu@FV@CheckEnd  #1{\expandafter\FV@@CheckEnd \detokenize{#1\end{}}\@nil}
+\edef\tabu@FV@@@CheckEnd {\detokenize{\end{}}}
+\begingroup
+\catcode`\[1      \catcode`\]2
+\@makeother\{     \@makeother\}
+   \edef\x[\endgroup
+      \def\noexpand\tabu@FV@@CheckEnd ##1\detokenize[\end{]##2\detokenize[}]##3%
+   ]\x               \@nil{\def\@tempa{#2}\def\@tempb{#3}}
+\def\tabu@FV@ListProcessLine #1{%
+  \hbox {%to \hsize{%
+    \kern\leftmargin
+    \hbox {%to \linewidth{%
+      \FV@LeftListNumber
+      \FV@LeftListFrame
+      \FancyVerbFormatLine{#1}\hss
+%% DG/SR modification begin - Jan. 28, 1998 (for numbers=right add-on)
+%%      \FV@RightListFrame}%
+      \FV@RightListFrame
+      \FV@RightListNumber}%
+%% DG/SR modification end
+    \hss}}
+%% \savetabu --------------------------------------------------------
+\newcommand*\savetabu[1]{\noalign{%
+    \tabu@sanitizearg{#1}\tabu@temp
+    \ifx \tabu@temp\@empty  \tabu@savewarn{}{The tabu will not be saved}\else
+        \@ifundefined{tabu@saved@\tabu@temp}{}{\tabu@savewarn{#1}{Overwriting}}%
+        \ifdefined\tabu@restored \expandafter\let
+            \csname tabu@saved@\tabu@temp \endcsname \tabu@restored
+        \else {\tabu@save}%
+        \fi
+    \fi}%
+}% \savetabu
+\def\tabu@save {%
+    \toks0\expandafter{\tabu@saved@}%
+    \iftabu@negcoef
+        \let\tabu@wddef \relax \let\tabu@ \tabu@savewd \edef\tabu@savewd{\tabu@Xcoefs}%
+        \toks0\expandafter{\the\toks\expandafter0\tabu@savewd}\fi
+    \toks1\expandafter{\tabu@savedpream}%
+    \toks2\expandafter{\tabu@savedpreamble}%
+    \let\@preamble \relax
+    \let\tabu@savedpream \relax \let\tabu@savedparams \relax
+    \edef\tabu@preamble{%
+        \def\noexpand\tabu@aligndefault{\tabu@align}%
+        \def\tabu@savedparams {\noexpand\the\toks0}%
+        \def\tabu@savedpream  {\noexpand\the\toks1}}%
+    \edef\tabu@usetabu{%
+        \def\@preamble {\noexpand\the\toks2}%
+        \tabu@target \the\tabu@target \relax
+        \tabucolX    \the\tabucolX    \relax
+        \tabu@nbcols \the\tabu@nbcols \relax
+        \def\noexpand\tabu@aligndefault{\tabu@align}%
+        \def\tabu@savedparams {\noexpand\the\toks0}%
+        \def\tabu@savedpream  {\noexpand\the\toks1}}%
+    \let\tabu@aligndefault \relax \let\@sharp \relax
+    \edef\@tempa{\noexpand\tabu@s@ved
+                          {\tabu@usetabu}
+                         {\tabu@preamble}
+                            {\the\toks1}}\@tempa
+    \tabu@message@save
+}% \tabu@save
+\long\def\tabu@s@ved #1#2#3{%
+    \def\tabu@usetabu{#1}% <for \tabu@message@save>
+    \expandafter\gdef\csname tabu@saved@\tabu@temp\endcsname ##1{%
+        \ifodd ##1%     \usetabu
+            \tabu@measuringfalse \tabu@spreadfalse  % Just in case...
+            \gdef\tabu@usetabu {%
+                \ifdim \tabu@target>\z@ \tabu@warn@usetabu \fi
+                \global\let\tabu@usetabu \@undefined
+                \def\@halignto {to\tabu@target}%
+                #1%
+                \ifx \tabu@align\tabu@aligndefault@text
+                \ifnum \tabu@nested=\z@
+                       \let\tabu@align \tabu@aligndefault \fi\fi}%
+        \else     %     \preamble
+            \gdef\tabu@preamble {%
+                \global\let\tabu@preamble \@undefined
+                #2%
+                \ifx \tabu@align\tabu@aligndefault@text
+                \ifnum \tabu@nested=\z@
+                       \let\tabu@align \tabu@aligndefault \fi\fi}%
+        \fi
+        #3}%
+}% \tabu@s@ved
+\def\tabu@aligndefault@text {\tabu@aligndefault}%
+\def\tabu@warn@usetabu {\PackageWarning{tabu}
+    {Specifying a target with \string\usetabu\space is useless
+    \MessageBreak The target cannot be changed!}}
+\def\tabu@savewd #1#2{\ifdim #2\p@<\z@ \tabu@wddef{#1}{\tabu@wd{#1}}\fi}
+\def\tabu@savewarn#1#2{\PackageInfo{tabu}
+    {User-name `#1' already used for \string\savetabu
+    \MessageBreak #2}}%
+\def\tabu@saveerr#1{\PackageError{tabu}
+    {User-name `#1' is unknown for \string\usetabu
+    \MessageBreak I cannot restore an unknown preamble!}\@ehd}
+%% \rowfont ---------------------------------------------------------
+\newskip \tabu@cellskip
+\def\tabu@rowfont{\ifdim \baselineskip=\z@\noalign\fi
+                    {\ifnum0=`}\fi    \tabu@row@font}
+\newcommand*\tabu@row@font[2][]{%
+    \ifnum7=\currentgrouptype
+        \global\let\tabu@@cellleft    \tabu@cellleft
+        \global\let\tabu@@cellright   \tabu@cellright
+        \global\let\tabu@@celllalign  \tabu@celllalign
+        \global\let\tabu@@cellralign  \tabu@cellralign
+        \global\let\tabu@@rowfontreset\tabu@rowfontreset
+    \fi
+    \global\let\tabu@rowfontreset \tabu@rowfont@reset
+    \expandafter\gdef\expandafter\tabu@cellleft\expandafter{\tabu@cellleft #2}%
+    \ifcsname tabu@cell@#1\endcsname       % row alignment
+            \csname tabu@cell@#1\endcsname \fi
+    \ifnum0=`{\fi}% end of group / noalign group
+}% \rowfont
+\def\tabu@ifcolorleavevmode #1{\let\color \tabu@leavevmodecolor #1\let\color\tabu@color}%
+\def\tabu@rowfont@reset{%
+    \global\let\tabu@rowfontreset \tabu@@rowfontreset
+    \global\let\tabu@cellleft     \tabu@@cellleft
+    \global\let\tabu@cellright    \tabu@@cellright
+    \global\let\tabu@cellfont     \@empty
+    \global\let\tabu@celllalign   \tabu@@celllalign
+    \global\let\tabu@cellralign   \tabu@@cellralign
+}% \tabu@@rowfontreset
+\let\tabu@rowfontreset \@empty     % overwritten \AtBeginDocument if colortbl
+%% \tabu@prepnext@tok -----------------------------------------------
+\newif \iftabu@cellright
+\def\tabu@prepnext@tok{%
+    \ifnum \count@<\z@   % <first initialisation>
+            \@tempcnta  \@M   % <not initialized by array.sty>
+            \tabu@nbcols\z@
+            \let\tabu@fornoopORI \@fornoop
+            \tabu@cellrightfalse
+    \else
+        \ifcase \numexpr \count@-\@tempcnta \relax % (case 0): prev. token is left
+                \advance \tabu@nbcols \@ne
+                \iftabu@cellright % before-previous token is right and is finished
+                    \tabu@cellrightfalse % <only once>
+                    \tabu@righttok
+                \fi
+                \tabu@lefttok
+        \or                     % (case 1) previous token is right
+                \tabu@cellrighttrue \let\@fornoop \tabu@lastnoop
+        \else % special column: do not change the token
+                \iftabu@cellright    % before-previous token is right
+                    \tabu@cellrightfalse
+                    \tabu@righttok
+                \fi
+        \fi % \ifcase
+    \fi
+    \tabu@prepnext@tokORI
+}% \tabu@prepnext@tok
+\long\def\tabu@lastnoop#1\@@#2#3{\tabu@lastn@@p #2\@nextchar \in@\in@@}
+\def\tabu@lastn@@p #1\@nextchar #2#3\in@@{%
+    \ifx \in@#2\else
+        \let\@fornoop \tabu@fornoopORI
+        \xdef\tabu@mkpreambuffer{\tabu@nbcols\the\tabu@nbcols \tabu@mkpreambuffer}%
+        \toks0\expandafter{\expandafter\tabu@everyrowtrue \the\toks0}%
+        \expandafter\prepnext@tok
+    \fi
+}% \tabu@lastnoop
+\def\tabu@righttok{%
+    \advance \count@ \m@ne
+    \toks\count@\expandafter {\the\toks\count@ \tabu@cellright \tabu@cellralign}%
+    \advance \count@ \@ne
+}% \tabu@righttok
+\def\tabu@lefttok{\toks\count@\expandafter{\expandafter\tabu@celllalign
+                                    \the\toks\count@ \tabu@cellleft}% after because of $
+}% \tabu@lefttok
+%% Neutralisation of glues ------------------------------------------
+\let\tabu@cellleft   \@empty
+\let\tabu@cellright  \@empty
+\tabu@celllalign@def{\tabu@cellleft}%
+\let\tabu@cellralign \@empty
+\def\tabu@cell@align #1#2#3{%
+    \let\tabu@maybesiunitx \toks@ \tabu@celllalign
+    \global \expandafter \tabu@celllalign@def \expandafter {\the\toks@ #1}%
+    \toks@\expandafter{\tabu@cellralign #2}%
+    \xdef\tabu@cellralign{\the\toks@}%
+    \toks@\expandafter{\tabu@cellleft #3}%
+    \xdef\tabu@cellleft{\the\toks@}%
+}% \tabu@cell@align
+\def\tabu@cell@l{% force alignment to left
+   \tabu@cell@align
+      {\tabu@removehfil \raggedright \tabu@cellleft}% left
+      {\tabu@flush1\tabu@ignorehfil}%                 right
+      \raggedright
+}% \tabu@cell@l
+\def\tabu@cell@c{% force alignment to center
+   \tabu@cell@align
+      {\tabu@removehfil \centering \tabu@flush{.5}\tabu@cellleft}
+      {\tabu@flush{.5}\tabu@ignorehfil}
+      \centering
+}% \tabu@cell@c
+\def\tabu@cell@r{% force alignment to right
+   \tabu@cell@align
+      {\tabu@removehfil \raggedleft \tabu@flush1\tabu@cellleft}
+      \tabu@ignorehfil
+      \raggedleft
+}% \tabu@cell@r
+\def\tabu@cell@j{% force justification (for p, m, b columns)
+      \tabu@cell@align
+         {\tabu@justify\tabu@cellleft}
+         {}
+         \tabu@justify
+}% \tabu@cell@j
+\def\tabu@justify{%
+   \leftskip\z@skip \@rightskip\leftskip \rightskip\@rightskip
+   \parfillskip\@flushglue
+}% \tabu@justify
+%% ragged2e settings
+\def\tabu@cell@L{% force alignment to left (ragged2e)
+   \tabu@cell@align
+      {\tabu@removehfil \RaggedRight \tabu@cellleft}
+      {\tabu@flush 1\tabu@ignorehfil}
+      \RaggedRight
+}% \tabu@cell@L
+\def\tabu@cell@C{% force alignment to center (ragged2e)
+   \tabu@cell@align
+      {\tabu@removehfil \Centering \tabu@flush{.5}\tabu@cellleft}
+      {\tabu@flush{.5}\tabu@ignorehfil}
+      \Centering
+}% \tabu@cell@C
+\def\tabu@cell@R{% force alignment to right (ragged2e)
+   \tabu@cell@align
+      {\tabu@removehfil \RaggedLeft \tabu@flush 1\tabu@cellleft}
+      \tabu@ignorehfil
+      \RaggedLeft
+}% \tabu@cell@R
+\def\tabu@cell@J{% force justification (ragged2e)
+   \tabu@cell@align
+      {\justifying \tabu@cellleft}
+      {}
+      \justifying
+}% \tabu@cell@J
+\def\tabu@flush#1{%
+    \iftabu@colortbl      % colortbl uses \hfill rather than \hfil
+        \hskip \ifnum13<\currentgrouptype \stretch{#1}%
+        \else  \ifdim#1pt<\p@ \tabu@cellskip
+        \else  \stretch{#1}
+        \fi\fi \relax
+    \else                % array.sty
+        \ifnum 13<\currentgrouptype
+                \hfil \hskip1sp \relax  \fi
+    \fi
+}% \tabu@flush
+\let\tabu@hfil  \hfil
+\let\tabu@hfill \hfill
+\let\tabu@hskip \hskip
+\def\tabu@removehfil{%
+    \iftabu@colortbl
+        \unkern \tabu@cellskip =\lastskip
+        \ifnum\gluestretchorder\tabu@cellskip =\tw@ \hskip-\tabu@cellskip
+        \else \tabu@cellskip \z@skip
+        \fi
+    \else
+        \ifdim\lastskip=1sp\unskip\fi
+        \ifnum\gluestretchorder\lastskip =\@ne
+            \hfilneg % \hfilneg for array.sty but not for colortbl...
+        \fi
+    \fi
+}% \tabu@removehfil
+\def\tabu@ignorehfil{\aftergroup \tabu@nohfil}
+\def\tabu@nohfil{% \hfil -> do nothing + restore original \hfil
+   \def\hfil{\let\hfil \tabu@hfil}%   local to (alignment template) group
+}% \tabu@nohfil
+\def\tabu@colortblalignments {% if colortbl
+    \def\tabu@nohfil{%
+        \def\hfil  {\let\hfil \tabu@hfil}% local to (alignment template) group
+        \def\hfill {\let\hfill \tabu@hfill}% (colortbl uses \hfill) pfff...
+        \def\hskip ####1\relax{\let\hskip \tabu@hskip}}% local
+}% \tabu@colortblalignments
+%% Taking care of footnotes and hyperfootnotes ----------------------
+\long\def\tabu@footnotetext #1{%
+   \edef\@tempa{\the\tabu@footnotes
+      \noexpand\footnotetext [\the\csname c@\@mpfn\endcsname]}%
+   \global\tabu@footnotes\expandafter{\@tempa {#1}}}%
+\long\def\tabu@xfootnotetext [#1]#2{%
+   \global\tabu@footnotes\expandafter{\the\tabu@footnotes
+                               \footnotetext [{#1}]{#2}}}
+\let\tabu@xfootnote \@xfootnote
+\long\def\tabu@Hy@ftntext{\tabu@Hy@ftntxt {\the \c@footnote }}
+\long\def\tabu@Hy@xfootnote [#1]{%
+   \begingroup
+      \value\@mpfn #1\relax
+      \protected@xdef \@thefnmark  {\thempfn}%
+   \endgroup
+   \@footnotemark \tabu@Hy@ftntxt {#1}%
+}% \tabu@Hy@xfootnote
+\long\def\tabu@Hy@ftntxt #1#2{%
+    \edef\@tempa{%
+        \the\tabu@footnotes
+        \begingroup
+            \value\@mpfn #1\relax
+            \noexpand\protected@xdef\noexpand\@thefnmark {\noexpand\thempfn}%
+            \expandafter \noexpand \expandafter
+                \tabu@Hy@footnotetext \expandafter{\Hy@footnote@currentHref}%
+    }%
+    \global\tabu@footnotes\expandafter{\@tempa {#2}%
+                                         \endgroup}%
+}% \tabu@Hy@ftntxt
+\long\def\tabu@Hy@footnotetext #1#2{%
+    \H@@footnotetext{%
+        \ifHy@nesting
+            \hyper@@anchor {#1}{#2}%
+        \else
+            \Hy@raisedlink{%
+                \hyper@@anchor {#1}{\relax}%
+            }%
+            \def\@currentHref {#1}%
+            \let\@currentlabelname \@empty
+            #2%
+        \fi
+    }%
+}% \tabu@Hy@footnotetext
+%% No need for \arraybackslash ! ------------------------------------
+\def\tabu@latextwoe {%
+\def\tabu@temp##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}}
+\tabu@temp \tabu@centering   \centering   \arraybackslash
+\tabu@temp \tabu@raggedleft  \raggedleft  \arraybackslash
+\tabu@temp \tabu@raggedright \raggedright \arraybackslash
+}% \tabu@latextwoe
+\def\tabu@raggedtwoe {%
+\def\tabu@temp ##1##2##3{{\toks@\expandafter{##2##3}\xdef##1{\the\toks@}}}
+\tabu@temp \tabu@Centering   \Centering   \arraybackslash
+\tabu@temp \tabu@RaggedLeft  \RaggedLeft  \arraybackslash
+\tabu@temp \tabu@RaggedRight \RaggedRight \arraybackslash
+\tabu@temp \tabu@justifying  \justifying  \arraybackslash
+}% \tabu@raggedtwoe
+\def\tabu@normalcrbackslash{\let\\\@normalcr}
+\def\tabu@trivlist{\expandafter\def\expandafter\@trivlist\expandafter{%
+                       \expandafter\tabu@normalcrbackslash \@trivlist}}
+%% Utilities: \fbox  \fcolorbox  and \tabudecimal -------------------
+\def\tabu@fbox      {\leavevmode\afterassignment\tabu@beginfbox \setbox\@tempboxa\hbox}
+\def\tabu@beginfbox {\bgroup \kern\fboxsep
+                     \bgroup\aftergroup\tabu@endfbox}
+\def\tabu@endfbox   {\kern\fboxsep\egroup\egroup
+                     \@frameb@x\relax}
+\def\tabu@color@b@x #1#2{\leavevmode \bgroup
+    \def\tabu@docolor@b@x{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}%
+    \afterassignment\tabu@begincolor@b@x \setbox\z@ \hbox
+}% \tabu@color@b@x
+\def\tabu@begincolor@b@x {\kern\fboxsep \bgroup
+       \aftergroup\tabu@endcolor@b@x \set@color}
+\def\tabu@endcolor@b@x {\kern\fboxsep \egroup
+    \dimen@\ht\z@ \advance\dimen@ \fboxsep \ht\z@ \dimen@
+    \dimen@\dp\z@ \advance\dimen@ \fboxsep \dp\z@ \dimen@
+    \tabu@docolor@b@x \egroup
+}% \tabu@endcolor@b@x
+%% Corrections (arydshln, delarray, colortbl) -----------------------
+\def\tabu@fix@arrayright {%% \@arrayright is missing from \endarray
+    \iftabu@colortbl
+        \ifdefined\adl@array  % <colortbl + arydshln>
+        \def\tabu@endarray{%
+            \adl@endarray \egroup \adl@arrayrestore \CT@end \egroup %<original>
+            \@arrayright      % <FC>
+            \gdef\@preamble{}}% <FC>
+        \else                 % <colortbl / no arydshln>
+        \def\tabu@endarray{%
+            \crcr \egroup \egroup    %<original>
+            \@arrayright             % <FC>
+            \gdef\@preamble{}\CT@end}%
+        \fi
+    \else
+        \ifdefined\adl@array  % <arydshln / no colortbl>
+        \def\tabu@endarray{%
+            \adl@endarray \egroup \adl@arrayrestore \egroup %<original>
+            \@arrayright      % <FC>
+            \gdef\@preamble{}}% <FC>
+    \else                   % <no arydshln / no colotbl + \@arrayright missing>
+        \PackageWarning{tabu}
+        {\string\@arrayright\space is missing from the
+        \MessageBreak definition of \string\endarray.
+        \MessageBreak Compatibility with delarray.sty is broken.}%
+    \fi\fi
+}% \tabu@fix@arrayright
+\def\tabu@adl@xarraydashrule #1#2#3{%
+     \ifnum\@lastchclass=\adl@class@start\else
+     \ifnum\@lastchclass=\@ne\else
+     \ifnum\@lastchclass=5 \else % <FC> @-arg (class 5) and !-arg (class 1)
+             \adl@leftrulefalse \fi\fi           % must be treated the same
+     \fi
+     \ifadl@zwvrule\else \ifadl@inactive\else
+             \@addtopreamble{\vrule\@width\arrayrulewidth
+                     \@height\z@ \@depth\z@}\fi \fi
+     \ifadl@leftrule
+             \@addtopreamble{\adl@vlineL{\CT@arc@}{\adl@dashgapcolor}%
+                     {\number#1}#3}%
+     \else   \@addtopreamble{\adl@vlineR{\CT@arc@}{\adl@dashgapcolor}%
+                     {\number#2}#3}
+     \fi
+}% \tabu@adl@xarraydashrule
+\def\tabu@adl@act@endpbox {%
+    \unskip \ifhmode \nobreak \fi    \@finalstrut \@arstrutbox
+    \egroup \egroup
+    \adl@colhtdp \box\adl@box \hfil
+}% \tabu@adl@act@endpbox
+\def\tabu@adl@fix {%
+    \let\adl@xarraydashrule \tabu@adl@xarraydashrule % <fix> arydshln
+    \let\adl@act@endpbox    \tabu@adl@act@endpbox    % <fix> arydshln
+    \let\adl@act@@endpbox   \tabu@adl@act@endpbox    % <fix> arydshln
+    \let\@preamerror        \@preamerr               % <fix> arydshln
+}% \tabu@adl@fix
+%% Correction for longtable' \@startbox definition ------------------
+%%    => \everypar is ``missing'' : TeX should be in vertical mode
+\def\tabu@LT@startpbox #1{%
+    \bgroup
+        \let\@footnotetext\LT@p@ftntext
+        \setlength\hsize{#1}%
+        \@arrayparboxrestore
+        \everypar{%
+            \vrule \@height \ht\@arstrutbox \@width \z@
+            \everypar{}}%
+}% \tabu@LT@startpbox
+%% \tracingtabu  and  the package options ------------------
+\DeclareOption{delarray}{\AtEndOfPackage{\RequirePackage{delarray}}}
+\DeclareOption{linegoal}{%
+   \AtEndOfPackage{%
+      \RequirePackage{linegoal}[2010/12/07]%
+      \let\tabudefaulttarget \linegoal% \linegoal is \linewidth if not pdfTeX
+}}
+\DeclareOption{scantokens}{\tabuscantokenstrue}
+\DeclareOption{debugshow}{\AtEndOfPackage{\tracingtabu=\tw@}}
+\def\tracingtabu {\begingroup\@ifnextchar=%
+    {\afterassignment\tabu@tracing\count@}
+    {\afterassignment\tabu@tracing\count@1\relax}}
+\def\tabu@tracing{\expandafter\endgroup
+    \expandafter\tabu@tr@cing \the\count@ \relax
+}% \tabu@tracing
+\def\tabu@tr@cing #1\relax {%
+    \ifnum#1>\thr@@ \let\tabu@tracinglines\message
+    \else           \let\tabu@tracinglines\@gobble
+    \fi
+    \ifnum#1>\tw@   \let\tabu@DBG        \tabu@@DBG
+                    \def\tabu@mkarstrut {\tabu@DBG@arstrut}%
+                    \tabustrutrule      1.5\p@
+    \else           \let\tabu@DBG        \@gobble
+                    \def\tabu@mkarstrut {\tabu@arstrut}%
+                    \tabustrutrule      \z@
+    \fi
+    \ifnum#1>\@ne   \let\tabu@debug      \message
+    \else           \let\tabu@debug      \@gobble
+    \fi
+    \ifnum#1>\z@
+        \let\tabu@message             \message
+        \let\tabu@tracing@save        \tabu@message@save
+        \let\tabu@starttimer          \tabu@pdftimer
+    \else
+        \let\tabu@message             \@gobble
+        \let\tabu@tracing@save        \@gobble
+        \let\tabu@starttimer          \relax
+    \fi
+}% \tabu@tr@cing
+%% Setup \AtBeginDocument
+\AtBeginDocument{\tabu@AtBeginDocument}
+\def\tabu@AtBeginDocument{\let\tabu@AtBeginDocument \@undefined
+    \ifdefined\arrayrulecolor   \tabu@colortbltrue       % <colortbl>
+                                \tabu@colortblalignments % different glues are used
+    \else                       \tabu@colortblfalse \fi
+    \ifdefined\CT@arc@ \else \let\CT@arc@  \relax \fi
+    \ifdefined\CT@drsc@\else \let\CT@drsc@ \relax \fi
+    \let\tabu@arc@L \CT@arc@ \let\tabu@drsc@L \CT@drsc@
+    \ifodd 1\ifcsname siunitx_table_collect_begin:Nn\endcsname   % <siunitx: ok>
+            \expandafter\ifx
+                \csname siunitx_table_collect_begin:Nn\endcsname\relax 0\fi\fi\relax
+            \tabu@siunitxtrue
+    \else   \let\tabu@maybesiunitx   \@firstofone                % <not siunitx: setup>
+            \let\tabu@siunitx        \tabu@nosiunitx
+            \tabu@siunitxfalse
+    \fi
+    \ifdefined\adl@array        % <arydshln>
+    \else     \let\tabu@adl@fix \relax
+              \let\tabu@adl@endtrial \@empty \fi
+    \ifdefined\longtable        % <longtable>
+    \else     \let\longtabu \tabu@nolongtabu \fi
+    \ifdefined\cellspacetoplimit \tabu@warn@cellspace\fi
+    \csname\ifcsname ifHy@hyperfootnotes\endcsname % <hyperfootnotes>
+            ifHy@hyperfootnotes\else iffalse\fi\endcsname
+        \let\tabu@footnotetext \tabu@Hy@ftntext
+        \let\tabu@xfootnote    \tabu@Hy@xfootnote \fi
+    \ifdefined\FV@DefineCheckEnd% <fancyvrb>
+            \tabu@fancyvrb  \fi
+    \ifdefined\color            % <color / xcolor>
+        \let\tabu@color \color
+        \def\tabu@leavevmodecolor ##1{%
+            \def\tabu@leavevmodecolor {\leavevmode ##1}%
+        }\expandafter\tabu@leavevmodecolor\expandafter{\color}%
+    \else
+        \let\tabu@color           \tabu@nocolor
+        \let\tabu@leavevmodecolor \@firstofone \fi
+    \tabu@latextwoe
+    \ifdefined\@raggedtwoe@everyselectfont    % <ragged2e>
+        \tabu@raggedtwoe
+    \else
+        \let\tabu@cell@L \tabu@cell@l
+        \let\tabu@cell@R \tabu@cell@r
+        \let\tabu@cell@C \tabu@cell@c
+        \let\tabu@cell@J \tabu@cell@j   \fi
+    \expandafter\in@ \expandafter\@arrayright \expandafter{\endarray}%
+    \ifin@ \let\tabu@endarray \endarray
+    \else  \tabu@fix@arrayright \fi% <fix for colortbl & arydshln (delarray)>
+    \everyrow{}%
+}% \tabu@AtBeginDocument
+\def\tabu@warn@cellspace{%
+    \PackageWarning{tabu}{%
+                  Package cellspace has some limitations
+    \MessageBreak And redefines some macros of array.sty.
+    \MessageBreak Please use \string\tabulinesep\space to control
+    \MessageBreak vertical spacing of lines inside tabu environment}%
+}% \tabu@warn@cellspace
+%% tabu Package initialisation
+\tabuscantokensfalse
+\let\tabu@arc@G         \relax
+\let\tabu@drsc@G        \relax
+\let\tabu@evr@G         \@empty
+\let\tabu@rc@G          \@empty
+\def\tabu@ls@G          {\tabu@linestyle@}%
+\let\tabu@@rowfontreset \@empty % <init>
+\let\tabu@@celllalign   \@empty
+\let\tabu@@cellralign   \@empty
+\let\tabu@@cellleft     \@empty
+\let\tabu@@cellright    \@empty
+\def\tabu@naturalXmin   {\z@}
+\def\tabu@naturalXmax   {\z@}
+\let\tabu@rowfontreset  \@empty
+\def\tabulineon {4pt}\let\tabulineoff \tabulineon
+\tabu@everyrowtrue
+\ifdefined\pdfelapsedtime                   % <pdfTeX>
+        \def\tabu@pdftimer {\xdef\tabu@starttime{\the\pdfelapsedtime}}%
+\else   \let\tabu@pdftimer \relax \let\tabu@message@etime \relax
+\fi
+\tracingtabu=\z@
+\newtabulinestyle {=\maxdimen}% creates the 'factory' settings \tabu@linestyle@
+\tabulinestyle{}
+\taburowcolors{}
+\let\tabudefaulttarget  \linewidth
+\ProcessOptions*                % \ProcessOptions* is quicker !
+\endinput
+%%
+%% End of file `tabu.sty'.
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..a19c2246a0f36eac71067107f6b6e44521c0aace
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp.tex
@@ -0,0 +1,67 @@
+\doxysection{task.\+hpp File Reference}
+\hypertarget{task_8hpp}{}\label{task_8hpp}\index{task.hpp@{task.hpp}}
+{\ttfamily \#include $<$QString$>$}\newline
+{\ttfamily \#include $<$QVector$>$}\newline
+{\ttfamily \#include $<$QShared\+Pointer$>$}\newline
+{\ttfamily \#include $<$QWeak\+Pointer$>$}\newline
+Include dependency graph for task.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+struct \mbox{\hyperlink{structSubtask}{Subtask}}
+\begin{DoxyCompactList}\small\item\em Represents a subtask within a task. \end{DoxyCompactList}\item 
+struct \mbox{\hyperlink{structTask}{Task}}
+\begin{DoxyCompactList}\small\item\em Represents a task containing multiple subtasks. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\doxysubsubsection*{Enumerations}
+\begin{DoxyCompactItemize}
+\item 
+enum class \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0}{Subtask\+Status}} \{ \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0}{Inactive}}
+, \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0ae7d31fc0602fb2ede144d18cdffd816b}{Ready}}
+, \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0a7b2f31b90fe1c2cc33a52233c1925df3}{Queued}}
+, \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0a5bda814c4aedb126839228f1a3d92f09}{Running}}
+ \}
+\begin{DoxyCompactList}\small\item\em Represents the status of a subtask. \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\doxysubsection{Enumeration Type Documentation}
+\Hypertarget{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0}\index{task.hpp@{task.hpp}!SubtaskStatus@{SubtaskStatus}}
+\index{SubtaskStatus@{SubtaskStatus}!task.hpp@{task.hpp}}
+\doxysubsubsection{\texorpdfstring{SubtaskStatus}{SubtaskStatus}}
+{\footnotesize\ttfamily \label{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0} 
+enum class \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0}{Subtask\+Status}}\hspace{0.3cm}{\ttfamily [strong]}}
+
+
+
+Represents the status of a subtask. 
+
+\begin{DoxyEnumFields}[2]{Enumerator}
+\raisebox{\heightof{T}}[0pt][0pt]{\index{Inactive@{Inactive}!task.hpp@{task.hpp}}\index{task.hpp@{task.hpp}!Inactive@{Inactive}}}\Hypertarget{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0}\label{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0} 
+Inactive&The subtask is inactive (state where it can\textquotesingle{}t be executed). \\
+\hline
+
+\raisebox{\heightof{T}}[0pt][0pt]{\index{Ready@{Ready}!task.hpp@{task.hpp}}\index{task.hpp@{task.hpp}!Ready@{Ready}}}\Hypertarget{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0ae7d31fc0602fb2ede144d18cdffd816b}\label{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0} 
+Ready&The subtask is ready to be executed. \\
+\hline
+
+\raisebox{\heightof{T}}[0pt][0pt]{\index{Queued@{Queued}!task.hpp@{task.hpp}}\index{task.hpp@{task.hpp}!Queued@{Queued}}}\Hypertarget{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0a7b2f31b90fe1c2cc33a52233c1925df3}\label{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0} 
+Queued&The subtask is queued for execution. \\
+\hline
+
+\raisebox{\heightof{T}}[0pt][0pt]{\index{Running@{Running}!task.hpp@{task.hpp}}\index{task.hpp@{task.hpp}!Running@{Running}}}\Hypertarget{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0a5bda814c4aedb126839228f1a3d92f09}\label{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0} 
+Running&The subtask is currently being executed. \\
+\hline
+
+\end{DoxyEnumFields}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..0817cee9593e8e93f417b912f9420c4248758d70
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+9de1b2dcf76b31e80c80bf71f744861f
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..e2abdf2b4ac38b7ff58a34e2ab35579737c168af
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..aef88c0df42e4a980b13c044f5aa4725c0adc53b
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp__incl.md5
@@ -0,0 +1 @@
+8b8d0cb4146229f02158c10c4b77256f
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2ca3a71344e9ace6d0f084c01c73e01a45cb9e79
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..93e17140bbbef63ab66bd512bdfce7c366c1ee67
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task_8hpp_source.tex
@@ -0,0 +1,61 @@
+\doxysection{task.\+hpp}
+\hypertarget{task_8hpp_source}{}\label{task_8hpp_source}\index{task.hpp@{task.hpp}}
+\mbox{\hyperlink{task_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ TASK\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ TASK\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ <QString>}}
+\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ <QVector>}}
+\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ <QSharedPointer>}}
+\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ <QWeakPointer>}}
+\DoxyCodeLine{00008\ }
+\DoxyCodeLine{00009\ \textcolor{comment}{//\ Forward\ declaration\ of\ Task\ struct}}
+\DoxyCodeLine{00010\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structTask}{Task}};}
+\DoxyCodeLine{00011\ }
+\DoxyCodeLine{00016\ \textcolor{keyword}{enum\ class}\ \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0}{SubtaskStatus}}\ \{}
+\DoxyCodeLine{00017\ \ \ \ \ \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0}{Inactive}},\ }
+\DoxyCodeLine{00018\ \ \ \ \ \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0ae7d31fc0602fb2ede144d18cdffd816b}{Ready}},\ }
+\DoxyCodeLine{00019\ \ \ \ \ \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0a7b2f31b90fe1c2cc33a52233c1925df3}{Queued}},\ }
+\DoxyCodeLine{00020\ \ \ \ \ \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0a5bda814c4aedb126839228f1a3d92f09}{Running}}\ }
+\DoxyCodeLine{00021\ \};}
+\DoxyCodeLine{00022\ }
+\DoxyCodeLine{00031\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structSubtask}{Subtask}}\ \{}
+\DoxyCodeLine{00032\ \ \ \ \ QString\ \mbox{\hyperlink{structSubtask_a4fc46ff8e54ab67641df5ff45e7e0cb4}{title}};\ }
+\DoxyCodeLine{00033\ \ \ \ \ QString\ \mbox{\hyperlink{structSubtask_a9b2edd425425878f6e57a2f213b1211a}{description}};\ }
+\DoxyCodeLine{00034\ \ \ \ \ QString\ \mbox{\hyperlink{structSubtask_a905ed579cc13759a257c37d261141281}{file}};\ }
+\DoxyCodeLine{00035\ \ \ \ \ QString\ \mbox{\hyperlink{structSubtask_adc3ab0bdda7c565666095845a3e4567f}{filePath}};\ }
+\DoxyCodeLine{00036\ \ \ \ \ QString\ \mbox{\hyperlink{structSubtask_ad6350ae5d46df3d006f4f0787915ea9f}{solutionFilePath}};\ }
+\DoxyCodeLine{00037\ \ \ \ \ QString\ \mbox{\hyperlink{structSubtask_ae73daaeeae0fa09de92ef428be2fdab3}{evaluationFilePath}};\ }
+\DoxyCodeLine{00038\ }
+\DoxyCodeLine{00039\ \ \ \ \ \textcolor{comment}{//\ optional\ field}}
+\DoxyCodeLine{00040\ \ \ \ \ \textcolor{keywordtype}{int}\ \mbox{\hyperlink{structSubtask_a69b5b90686d9e1c75b0f071a7b9dc31b}{timeoutSeconds}}\ =\ 60;\ }
+\DoxyCodeLine{00041\ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{structSubtask_ae0c283c25316796864e9ef0d766acb60}{parallelizedEvaluationRequired}}\ =\ \textcolor{keyword}{false};\ }
+\DoxyCodeLine{00042\ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{structSubtask_ae869bad678ab4835b24aeb56176c21aa}{reset\_robot\_before\_executing}}\ =\ \textcolor{keyword}{true};\ }
+\DoxyCodeLine{00043\ }
+\DoxyCodeLine{00044\ \ \ \ \ \textcolor{comment}{//\ internal\ fields}}
+\DoxyCodeLine{00045\ \ \ \ \ QWeakPointer<Task>\ \mbox{\hyperlink{structSubtask_a4cdfbab855cd65277e17c8975bb0d730}{parentTask}};\ }
+\DoxyCodeLine{00046\ \ \ \ \ \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0}{SubtaskStatus}}\ \mbox{\hyperlink{structSubtask_a293ddda988cb5fe92fcb5e5189b86850}{status}}\ =\ \mbox{\hyperlink{task_8hpp_a0beba0aab49acf65d37f2c9d8202a4c0a3cab03c00dbd11bc3569afa0748013f0}{SubtaskStatus::Inactive}};\ }
+\DoxyCodeLine{00047\ }
+\DoxyCodeLine{00048\ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{structSubtask_a0e3d8e77e26cdb58b2e9faa8ec2e1707}{hasBeenExecuted}}\ =\ \textcolor{keyword}{false};\ }
+\DoxyCodeLine{00049\ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{structSubtask_ab1e1bff66e7464efa54419b36006f1a8}{lastExecutionFailed}}\ =\ \textcolor{keyword}{false};\ }
+\DoxyCodeLine{00050\ \ \ \ \ QString\ \mbox{\hyperlink{structSubtask_a2c4bcefd1e42773c5e23abd9ba0b30f2}{lastExecutionError}};\ }
+\DoxyCodeLine{00051\ \};}
+\DoxyCodeLine{00052\ }
+\DoxyCodeLine{00061\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structTask}{Task}}\ \{}
+\DoxyCodeLine{00062\ \ \ \ \ QString\ \mbox{\hyperlink{structTask_a0ab070dbbe73ff2a4306fe20ab75400f}{title}};\ }
+\DoxyCodeLine{00063\ \ \ \ \ QString\ \mbox{\hyperlink{structTask_a470ace63434687116684f003a27dc439}{folder}};\ }
+\DoxyCodeLine{00064\ \ \ \ \ QString\ \mbox{\hyperlink{structTask_a92a16f5ec66f7511f0d0ce0fd759bf9e}{difficulty}};\ }
+\DoxyCodeLine{00065\ \ \ \ \ QString\ \mbox{\hyperlink{structTask_a8c37303702dbbb22f7430a73f9a3ed08}{topic}};\ }
+\DoxyCodeLine{00066\ \ \ \ \ QVector<Subtask>\ \mbox{\hyperlink{structTask_a7486a61c7f0eb8a952260ffe9c2a1af3}{subtasks}};\ }
+\DoxyCodeLine{00067\ }
+\DoxyCodeLine{00068\ \ \ \ \ \textcolor{comment}{//\ optional\ field}}
+\DoxyCodeLine{00069\ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{structTask_add2905e57d8e714693b24cc8a9148a82}{previousSubtasksRequired}}\ =\ \textcolor{keyword}{false};\ }
+\DoxyCodeLine{00070\ }
+\DoxyCodeLine{00071\ \ \ \ \ \textcolor{comment}{//\ internal\ fields}}
+\DoxyCodeLine{00072\ \ \ \ \ QString\ \mbox{\hyperlink{structTask_a6fe956adc87191ee794c5bccf68c292b}{difficultyHexColor}};\ }
+\DoxyCodeLine{00073\ \};}
+\DoxyCodeLine{00074\ }
+\DoxyCodeLine{00075\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ TASK\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8cpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8cpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..79af0977a613005907c301290e569bbc047e507e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8cpp.tex
@@ -0,0 +1,14 @@
+\doxysection{task\+\_\+executor.\+cpp File Reference}
+\hypertarget{task__executor_8cpp}{}\label{task__executor_8cpp}\index{task\_executor.cpp@{task\_executor.cpp}}
+{\ttfamily \#include "{}learn\+\_\+environment/task\+\_\+executor.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/script\+\_\+worker.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/folder\+\_\+structure\+\_\+constants.\+hpp"{}}\newline
+{\ttfamily \#include $<$QThread$>$}\newline
+{\ttfamily \#include $<$QFile$>$}\newline
+Include dependency graph for task\+\_\+executor.\+cpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task__executor_8cpp__incl}
+\end{center}
+\end{figure}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..632c7b78050b83932a19d650677aa3fccf9cea18
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8cpp__incl.md5
@@ -0,0 +1 @@
+e093c7c9a5319cdf59de062b33fd2712
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8cpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8cpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..aed5cc067ae0f51abf59ec744bbf47da86d1783d
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8cpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..49ddc3288b378b76b4df5b7ab0c4ed91e04cdf85
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp.tex
@@ -0,0 +1,25 @@
+\doxysection{task\+\_\+executor.\+hpp File Reference}
+\hypertarget{task__executor_8hpp}{}\label{task__executor_8hpp}\index{task\_executor.hpp@{task\_executor.hpp}}
+{\ttfamily \#include "{}task.\+hpp"{}}\newline
+{\ttfamily \#include $<$QObject$>$}\newline
+{\ttfamily \#include $<$QString$>$}\newline
+{\ttfamily \#include $<$QShared\+Pointer$>$}\newline
+Include dependency graph for task\+\_\+executor.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task__executor_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task__executor_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+class \mbox{\hyperlink{classTaskExecutor}{Task\+Executor}}
+\begin{DoxyCompactList}\small\item\em Executes tasks and manages their execution state. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8764af48cca2fc50bc83d2ca4c83d94b16437fd0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+3be853bc0e568934a11304a1523f2c8b
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..8e12388160ce55ef5e382f99cbf497204126ede7
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..617b00d30c45094ad14ff22fe250ff98b3bb0ff5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp__incl.md5
@@ -0,0 +1 @@
+3d8f112b57bd28bfd23e10fd9ba6e710
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..087b0840beb81c5794c011d0eeea1e9a7d796b61
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..185c750b3ce55b78a103e98f49add536d29639f6
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__executor_8hpp_source.tex
@@ -0,0 +1,49 @@
+\doxysection{task\+\_\+executor.\+hpp}
+\hypertarget{task__executor_8hpp_source}{}\label{task__executor_8hpp_source}\index{task\_executor.hpp@{task\_executor.hpp}}
+\mbox{\hyperlink{task__executor_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ TASK\_EXECUTOR\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ TASK\_EXECUTOR\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{task_8hpp}{task.hpp}}"{}}}
+\DoxyCodeLine{00005\ }
+\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ <QObject>}}
+\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ <QString>}}
+\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ <QSharedPointer>}}
+\DoxyCodeLine{00009\ }
+\DoxyCodeLine{00010\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classScriptWorker}{ScriptWorker}};}
+\DoxyCodeLine{00011\ }
+\DoxyCodeLine{00019\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classTaskExecutor}{TaskExecutor}}\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classQObject}{QObject}}\ \{}
+\DoxyCodeLine{00020\ \ \ \ \ Q\_OBJECT}
+\DoxyCodeLine{00021\ }
+\DoxyCodeLine{00022\ \textcolor{keyword}{public}:}
+\DoxyCodeLine{00027\ \ \ \ \ \textcolor{keyword}{explicit}\ \mbox{\hyperlink{classTaskExecutor_ac6783ed16b392507bfaabd21422ee140}{TaskExecutor}}(\mbox{\hyperlink{classQObject}{QObject}}\ *parent\ =\ \textcolor{keyword}{nullptr});}
+\DoxyCodeLine{00028\ }
+\DoxyCodeLine{00033\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskExecutor_ac8eb8ba8a66de4a3ed3ead3ad7abab5d}{executeTask}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{structSubtask}{Subtask}}\ \&subtask,\ \textcolor{keywordtype}{bool}\ startSolution\ =\ \textcolor{keyword}{false});}
+\DoxyCodeLine{00034\ }
+\DoxyCodeLine{00038\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskExecutor_a0a0c76bf999aea855cb83a6051864e09}{forceStop}}();}
+\DoxyCodeLine{00039\ }
+\DoxyCodeLine{00043\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskExecutor_ad117a059ab0c1f6d85e318f0cf4709bc}{resetRobot}}();}
+\DoxyCodeLine{00044\ }
+\DoxyCodeLine{00045\ Q\_SIGNALS:}
+\DoxyCodeLine{00049\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskExecutor_a2b22d6b9fa450f3471de4359b6f3b131}{taskExecutionStarted}}();}
+\DoxyCodeLine{00050\ }
+\DoxyCodeLine{00054\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskExecutor_ad2f2dd7e0d22d7b3bb2ec532f158bddc}{taskExecutionFinished}}();}
+\DoxyCodeLine{00055\ }
+\DoxyCodeLine{00060\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskExecutor_adeffddd301a31fe1891712d30096a468}{taskExecutionFailed}}(\textcolor{keyword}{const}\ QString\ \&error);}
+\DoxyCodeLine{00061\ }
+\DoxyCodeLine{00065\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskExecutor_a9d92d24d74615c594a578eafb6d48799}{resetRobotStarted}}();}
+\DoxyCodeLine{00066\ }
+\DoxyCodeLine{00070\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskExecutor_a7fb6bb2e760b08c4816f5c48902d6498}{resetRobotFinished}}();}
+\DoxyCodeLine{00071\ }
+\DoxyCodeLine{00076\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskExecutor_a782117a9e19eff6a87255c7358e87857}{resetRobotFailed}}(\textcolor{keyword}{const}\ QString\ \&error);}
+\DoxyCodeLine{00077\ }
+\DoxyCodeLine{00078\ \textcolor{keyword}{private}:}
+\DoxyCodeLine{00088\ \ \ \ \ \textcolor{keywordtype}{bool}\ constructPath(\textcolor{keyword}{const}\ QString\ \&basePath,\ \textcolor{keyword}{const}\ QString\ \&addition,\ QString\ \&result,\ \textcolor{keyword}{const}\ QString\ \&errorMsg,\ \textcolor{keywordtype}{bool}\ checkExists\ =\ \textcolor{keyword}{true});}
+\DoxyCodeLine{00089\ }
+\DoxyCodeLine{00090\ \ \ \ \ QList<ScriptWorker*>\ scriptWorkers;\ }
+\DoxyCodeLine{00091\ \};}
+\DoxyCodeLine{00092\ }
+\DoxyCodeLine{00093\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ TASK\_EXECUTOR\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8cpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8cpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..56ac60be6289eefb1bbde2bd6b097265750f4139
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8cpp.tex
@@ -0,0 +1,17 @@
+\doxysection{task\+\_\+manager.\+cpp File Reference}
+\hypertarget{task__manager_8cpp}{}\label{task__manager_8cpp}\index{task\_manager.cpp@{task\_manager.cpp}}
+{\ttfamily \#include "{}learn\+\_\+environment/task\+\_\+manager.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/task\+\_\+ui.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/task\+\_\+parser.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/task\+\_\+executor.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/notebook\+\_\+converter.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/folder\+\_\+structure\+\_\+constants.\+hpp"{}}\newline
+{\ttfamily \#include $<$QDebug$>$}\newline
+{\ttfamily \#include $<$QTool\+Button$>$}\newline
+Include dependency graph for task\+\_\+manager.\+cpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task__manager_8cpp__incl}
+\end{center}
+\end{figure}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..548c2c254a9f8836cfd6f033b8d6d9f7f9e3a2bc
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8cpp__incl.md5
@@ -0,0 +1 @@
+af5df416a188c34a75f0acc53d05563e
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8cpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8cpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..e5ab3d32864cfe3aa17f7cd8f896d02fac68ea49
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8cpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..83994b7e461ff6d58dbc9bcfa22cefdab8c8c414
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp.tex
@@ -0,0 +1,26 @@
+\doxysection{task\+\_\+manager.\+hpp File Reference}
+\hypertarget{task__manager_8hpp}{}\label{task__manager_8hpp}\index{task\_manager.hpp@{task\_manager.hpp}}
+{\ttfamily \#include "{}task.\+hpp"{}}\newline
+{\ttfamily \#include "{}task\+\_\+executor.\+hpp"{}}\newline
+{\ttfamily \#include $<$QObject$>$}\newline
+{\ttfamily \#include $<$QVector$>$}\newline
+{\ttfamily \#include $<$QShared\+Pointer$>$}\newline
+Include dependency graph for task\+\_\+manager.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task__manager_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task__manager_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+class \mbox{\hyperlink{classTaskManager}{Task\+Manager}}
+\begin{DoxyCompactList}\small\item\em Manages tasks and their execution within the application. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..8b2c04c89c82f78f616f636bd6b77410c15d13e6
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+399155f30afd563efcad95ac8c7f15a4
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2faf99f6c854191d39caa22a944b43a234724a65
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..2826dd1353b033905aae8f0e3e971eebd42dac6a
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp__incl.md5
@@ -0,0 +1 @@
+83a3589087c9ca06e4568e7b3997bddc
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..08ddd815fca0c674cb95a0b7877b3ce10c4b23bf
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..5c4dd8c70d6570b6173dbcfb3b9540f81f50c738
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__manager_8hpp_source.tex
@@ -0,0 +1,73 @@
+\doxysection{task\+\_\+manager.\+hpp}
+\hypertarget{task__manager_8hpp_source}{}\label{task__manager_8hpp_source}\index{task\_manager.hpp@{task\_manager.hpp}}
+\mbox{\hyperlink{task__manager_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ TASKMANAGER\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ TASKMANAGER\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{task_8hpp}{task.hpp}}"{}}}
+\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{task__executor_8hpp}{task\_executor.hpp}}"{}}}
+\DoxyCodeLine{00006\ }
+\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ <QObject>}}
+\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ <QVector>}}
+\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <QSharedPointer>}}
+\DoxyCodeLine{00010\ }
+\DoxyCodeLine{00011\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classTaskUI}{TaskUI}};}
+\DoxyCodeLine{00012\ }
+\DoxyCodeLine{00020\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classTaskManager}{TaskManager}}\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classQObject}{QObject}}}
+\DoxyCodeLine{00021\ \{}
+\DoxyCodeLine{00022\ \ \ \ \ Q\_OBJECT}
+\DoxyCodeLine{00023\ }
+\DoxyCodeLine{00024\ \textcolor{keyword}{public}:}
+\DoxyCodeLine{00030\ \ \ \ \ \mbox{\hyperlink{classTaskManager_a9c906455542360f6760169599f2640a3}{TaskManager}}(\mbox{\hyperlink{classTaskUI}{TaskUI}}\ *taskUI,\ \mbox{\hyperlink{classQObject}{QObject}}\ *parent\ =\ \textcolor{keyword}{nullptr});}
+\DoxyCodeLine{00031\ }
+\DoxyCodeLine{00037\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskManager_ac4c5170435b505415f49e40906888743}{startStopSubtask}}(\mbox{\hyperlink{structSubtask}{Subtask}}\ \&subtask,\ \textcolor{keywordtype}{bool}\ startSolution\ =\ \textcolor{keyword}{false});}
+\DoxyCodeLine{00038\ }
+\DoxyCodeLine{00043\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskManager_a9f3de937346f77e565d555a59a8a0da0}{toggleSolution}}(\mbox{\hyperlink{structSubtask}{Subtask}}\ \&subtask);}
+\DoxyCodeLine{00044\ }
+\DoxyCodeLine{00045\ \textcolor{keyword}{public}\ Q\_SLOTS:}
+\DoxyCodeLine{00049\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskManager_a327677e3a17f1a707095119328a96179}{nextTask}}();}
+\DoxyCodeLine{00050\ }
+\DoxyCodeLine{00054\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskManager_a844a6313afed60e7def0f79eaeae7b9e}{previousTask}}();}
+\DoxyCodeLine{00055\ }
+\DoxyCodeLine{00060\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskManager_a51989e6fb895fd817286153750f07d75}{selectTask}}(\textcolor{keywordtype}{int}\ index);}
+\DoxyCodeLine{00061\ }
+\DoxyCodeLine{00066\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskManager_a36aa4b88ce92147fc2bfe7b222e8d984}{startStopSubtask}}(\textcolor{keyword}{const}\ \mbox{\hyperlink{structSubtask}{Subtask}}\ \&subtask);}
+\DoxyCodeLine{00067\ }
+\DoxyCodeLine{00071\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskManager_a9a858cb5aae71b691204c8561322677e}{forceResetRobot}}();}
+\DoxyCodeLine{00072\ }
+\DoxyCodeLine{00073\ \textcolor{keyword}{private}\ Q\_SLOTS:}
+\DoxyCodeLine{00074\ }
+\DoxyCodeLine{00078\ \ \ \ \ \textcolor{keywordtype}{void}\ onTaskExecutionStarted();}
+\DoxyCodeLine{00079\ }
+\DoxyCodeLine{00083\ \ \ \ \ \textcolor{keywordtype}{void}\ onTaskExecutionFinished();}
+\DoxyCodeLine{00084\ }
+\DoxyCodeLine{00089\ \ \ \ \ \textcolor{keywordtype}{void}\ onTaskExecutionFailed(\textcolor{keyword}{const}\ QString\ \&error);}
+\DoxyCodeLine{00090\ }
+\DoxyCodeLine{00094\ \ \ \ \ \textcolor{keywordtype}{void}\ onResetRobotStarted();}
+\DoxyCodeLine{00095\ }
+\DoxyCodeLine{00099\ \ \ \ \ \textcolor{keywordtype}{void}\ onResetRobotFinished();}
+\DoxyCodeLine{00100\ }
+\DoxyCodeLine{00105\ \ \ \ \ \textcolor{keywordtype}{void}\ onResetRobotFailed(\textcolor{keyword}{const}\ QString\ \&error);}
+\DoxyCodeLine{00106\ }
+\DoxyCodeLine{00107\ \textcolor{keyword}{private}:}
+\DoxyCodeLine{00108\ \ \ \ \ \mbox{\hyperlink{classTaskUI}{TaskUI}}\ *taskUI;\ }
+\DoxyCodeLine{00109\ \ \ \ \ \mbox{\hyperlink{classTaskExecutor}{TaskExecutor}}\ *taskExecutor;\ }
+\DoxyCodeLine{00110\ \ \ \ \ QVector<QSharedPointer<Task>>\ tasks;\ }
+\DoxyCodeLine{00111\ \ \ \ \ QVector<Subtask*>\ queued\_and\_running\_subtasks;\ }
+\DoxyCodeLine{00112\ \ \ \ \ \textcolor{keywordtype}{int}\ currentQueueStartSolution\ =\ \textcolor{keyword}{false};\ }
+\DoxyCodeLine{00113\ \ \ \ \ \textcolor{keywordtype}{int}\ currentTaskIndex;\ }
+\DoxyCodeLine{00114\ \ \ \ \ \textcolor{keywordtype}{bool}\ resetRobotInProgress\ =\ \textcolor{keyword}{false};\ }
+\DoxyCodeLine{00115\ }
+\DoxyCodeLine{00121\ \ \ \ \ \textcolor{keywordtype}{void}\ startSubtask(\mbox{\hyperlink{structSubtask}{Subtask}}\ \&started\_subtask,\ QSharedPointer<Task>\ \&task,\ \textcolor{keywordtype}{bool}\ startSolution\ =\ \textcolor{keyword}{false});}
+\DoxyCodeLine{00122\ }
+\DoxyCodeLine{00126\ \ \ \ \ \textcolor{keywordtype}{void}\ initiateFirstSubtask();}
+\DoxyCodeLine{00127\ }
+\DoxyCodeLine{00131\ \ \ \ \ \textcolor{keywordtype}{void}\ forceStop();}
+\DoxyCodeLine{00132\ }
+\DoxyCodeLine{00137\ \ \ \ \ \textcolor{keywordtype}{void}\ logWithHashes(\textcolor{keyword}{const}\ QString\ \&message);}
+\DoxyCodeLine{00138\ \};}
+\DoxyCodeLine{00139\ }
+\DoxyCodeLine{00140\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ TASKMANAGER\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8cpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8cpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..3b3fb2157a251fa388e303e9500e944bcf5a36f5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8cpp.tex
@@ -0,0 +1,15 @@
+\doxysection{task\+\_\+parser.\+cpp File Reference}
+\hypertarget{task__parser_8cpp}{}\label{task__parser_8cpp}\index{task\_parser.cpp@{task\_parser.cpp}}
+{\ttfamily \#include "{}learn\+\_\+environment/task\+\_\+parser.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/folder\+\_\+structure\+\_\+constants.\+hpp"{}}\newline
+{\ttfamily \#include $<$QFile$>$}\newline
+{\ttfamily \#include $<$QText\+Stream$>$}\newline
+{\ttfamily \#include $<$QDebug$>$}\newline
+{\ttfamily \#include $<$nlohmann/json.\+hpp$>$}\newline
+Include dependency graph for task\+\_\+parser.\+cpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task__parser_8cpp__incl}
+\end{center}
+\end{figure}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..fe668c6f145df787f8e8b3fd79c556e495870054
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8cpp__incl.md5
@@ -0,0 +1 @@
+5083dd482d0b6ecbf77fde3d6b85a1cc
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8cpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8cpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..9b078837ddd85670e7f8569160d5541409b96856
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8cpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..b41f651026fb3790789d9569b08d9d06b367afa5
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp.tex
@@ -0,0 +1,26 @@
+\doxysection{task\+\_\+parser.\+hpp File Reference}
+\hypertarget{task__parser_8hpp}{}\label{task__parser_8hpp}\index{task\_parser.hpp@{task\_parser.hpp}}
+{\ttfamily \#include "{}task.\+hpp"{}}\newline
+{\ttfamily \#include $<$QVector$>$}\newline
+{\ttfamily \#include $<$QString$>$}\newline
+{\ttfamily \#include $<$QShared\+Pointer$>$}\newline
+{\ttfamily \#include $<$nlohmann/json.\+hpp$>$}\newline
+Include dependency graph for task\+\_\+parser.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task__parser_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=280pt]{task__parser_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+class \mbox{\hyperlink{classTaskParser}{Task\+Parser}}
+\begin{DoxyCompactList}\small\item\em Parses tasks and subtasks from a JSON file. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..86ad840065a2b27a05e50b424aebda9b3d24524f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+78642dfd8e1ded8bb4c6535ea306e31c
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..d1008c00f8fac73ab89443e0bf3adc30b9efb00c
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..724f4bbcac77f9ffe3fa3da43c1c6826bb6d6d4d
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp__incl.md5
@@ -0,0 +1 @@
+9649abf8fa3d89652c3849c0cf5ee192
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..2075110cfb924d66199940420bf8dd0ae31f9e12
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..dbb5ac86131bb8ff39fa3e0d2dce4399fc1e5a0e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__parser_8hpp_source.tex
@@ -0,0 +1,30 @@
+\doxysection{task\+\_\+parser.\+hpp}
+\hypertarget{task__parser_8hpp_source}{}\label{task__parser_8hpp_source}\index{task\_parser.hpp@{task\_parser.hpp}}
+\mbox{\hyperlink{task__parser_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ TASK\_PARSER\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ TASK\_PARSER\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{task_8hpp}{task.hpp}}"{}}}
+\DoxyCodeLine{00005\ }
+\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ <QVector>}}
+\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ <QString>}}
+\DoxyCodeLine{00008\ \textcolor{preprocessor}{\#include\ <QSharedPointer>}}
+\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <nlohmann/json.hpp>}}
+\DoxyCodeLine{00010\ }
+\DoxyCodeLine{00018\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classTaskParser}{TaskParser}}\ \{}
+\DoxyCodeLine{00019\ \textcolor{keyword}{public}:}
+\DoxyCodeLine{00033\ \ \ \ \ QVector<QSharedPointer<Task>>\ \mbox{\hyperlink{classTaskParser_a86f40497d6666a02307886ed3a4056f3}{loadTasks}}(\textcolor{keyword}{const}\ QString\&\ taskPath,\ \textcolor{keyword}{const}\ QString\&\ difficultyPath,\ \textcolor{keyword}{const}\ QString\&\ topicPath);}
+\DoxyCodeLine{00034\ }
+\DoxyCodeLine{00035\ }
+\DoxyCodeLine{00036\ \textcolor{keyword}{private}:}
+\DoxyCodeLine{00037\ \ \ \ \ \textcolor{keyword}{using\ }json\ =\ nlohmann::json;}
+\DoxyCodeLine{00038\ }
+\DoxyCodeLine{00047\ \ \ \ \ QVector<QSharedPointer<Task>>\ parseTasks(\textcolor{keyword}{const}\ json\&\ taskJsonData,\ \textcolor{keyword}{const}\ json\&\ difficultyJsonData,\ \textcolor{keyword}{const}\ json\&\ topicJsonData);}
+\DoxyCodeLine{00048\ }
+\DoxyCodeLine{00056\ \ \ \ \ QVector<Subtask>\ parseSubtasks(\textcolor{keyword}{const}\ json\&\ subtasksJson,\ QSharedPointer<Task>\ parentTask);}
+\DoxyCodeLine{00057\ \};}
+\DoxyCodeLine{00058\ }
+\DoxyCodeLine{00059\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ TASK\_PARSER\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8cpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8cpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..372b6759685298dd7dbbfde8e82af8b61e14cd6e
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8cpp.tex
@@ -0,0 +1,15 @@
+\doxysection{task\+\_\+ui.\+cpp File Reference}
+\hypertarget{task__ui_8cpp}{}\label{task__ui_8cpp}\index{task\_ui.cpp@{task\_ui.cpp}}
+{\ttfamily \#include "{}learn\+\_\+environment/task\+\_\+ui.\+hpp"{}}\newline
+{\ttfamily \#include "{}learn\+\_\+environment/subtask\+\_\+item.\+hpp"{}}\newline
+{\ttfamily \#include $<$QReg\+Exp$>$}\newline
+{\ttfamily \#include $<$QSplitter$>$}\newline
+{\ttfamily \#include $<$QDebug$>$}\newline
+{\ttfamily \#include $<$QHBox\+Layout$>$}\newline
+Include dependency graph for task\+\_\+ui.\+cpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task__ui_8cpp__incl}
+\end{center}
+\end{figure}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8cpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8cpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..f571fe490caa984698456cdba7a3e9146cc91b46
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8cpp__incl.md5
@@ -0,0 +1 @@
+75611fc6fe8c7eedb53de92d4fdd8b55
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8cpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8cpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..6b5062d15cf40076069bd03f2d97b04fd4efc798
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8cpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp.tex
new file mode 100644
index 0000000000000000000000000000000000000000..02c08177076ed3ac3fc8e0d7ac6170309440ed7f
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp.tex
@@ -0,0 +1,31 @@
+\doxysection{task\+\_\+ui.\+hpp File Reference}
+\hypertarget{task__ui_8hpp}{}\label{task__ui_8hpp}\index{task\_ui.hpp@{task\_ui.hpp}}
+{\ttfamily \#include "{}sidebar.\+hpp"{}}\newline
+{\ttfamily \#include "{}task.\+hpp"{}}\newline
+{\ttfamily \#include "{}task\+\_\+manager.\+hpp"{}}\newline
+{\ttfamily \#include "{}execute\+\_\+frame.\+hpp"{}}\newline
+{\ttfamily \#include $<$QObject$>$}\newline
+{\ttfamily \#include $<$QVBox\+Layout$>$}\newline
+{\ttfamily \#include $<$QLabel$>$}\newline
+{\ttfamily \#include $<$QTool\+Button$>$}\newline
+{\ttfamily \#include $<$QPush\+Button$>$}\newline
+{\ttfamily \#include $<$QFrame$>$}\newline
+Include dependency graph for task\+\_\+ui.\+hpp\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task__ui_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{task__ui_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\doxysubsubsection*{Classes}
+\begin{DoxyCompactItemize}
+\item 
+class \mbox{\hyperlink{classTaskUI}{Task\+UI}}
+\begin{DoxyCompactList}\small\item\em Manages the user interface for tasks and subtasks. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp__dep__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp__dep__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..092512231b59f8d2040d454da869c4d1635e70d0
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+a6bdb0276edb313a2ba6099e8fe46078
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp__dep__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp__dep__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..4d6733b313f1d0d834667393cd3667cab0558114
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp__dep__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp__incl.md5 b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp__incl.md5
new file mode 100644
index 0000000000000000000000000000000000000000..9ce4cec238c5f8dcba94d230184362dcd6c12899
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp__incl.md5
@@ -0,0 +1 @@
+edafc9eab888c993701d67a7c6f665ee
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp__incl.pdf b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp__incl.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..564ce9edaede6581a3015dd6e5fd0c7f2d4a0245
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp__incl.pdf differ
diff --git a/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp_source.tex b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp_source.tex
new file mode 100644
index 0000000000000000000000000000000000000000..38a38a7425188df53021887b7b4b35ec1524fd20
--- /dev/null
+++ b/catkin_ws/src/learn_environment/developer_docs/doxygen_documentation/latex/task__ui_8hpp_source.tex
@@ -0,0 +1,75 @@
+\doxysection{task\+\_\+ui.\+hpp}
+\hypertarget{task__ui_8hpp_source}{}\label{task__ui_8hpp_source}\index{task\_ui.hpp@{task\_ui.hpp}}
+\mbox{\hyperlink{task__ui_8hpp}{Go to the documentation of this file.}}
+\begin{DoxyCode}{0}
+\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#ifndef\ TASKUI\_HPP}}
+\DoxyCodeLine{00002\ \textcolor{preprocessor}{\#define\ TASKUI\_HPP}}
+\DoxyCodeLine{00003\ }
+\DoxyCodeLine{00004\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{sidebar_8hpp}{sidebar.hpp}}"{}}}
+\DoxyCodeLine{00005\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{task_8hpp}{task.hpp}}"{}}}
+\DoxyCodeLine{00006\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{task__manager_8hpp}{task\_manager.hpp}}"{}}}
+\DoxyCodeLine{00007\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{execute__frame_8hpp}{execute\_frame.hpp}}"{}}}
+\DoxyCodeLine{00008\ }
+\DoxyCodeLine{00009\ \textcolor{preprocessor}{\#include\ <QObject>}}
+\DoxyCodeLine{00010\ \textcolor{preprocessor}{\#include\ <QVBoxLayout>}}
+\DoxyCodeLine{00011\ \textcolor{preprocessor}{\#include\ <QLabel>}}
+\DoxyCodeLine{00012\ \textcolor{preprocessor}{\#include\ <QToolButton>}}
+\DoxyCodeLine{00013\ \textcolor{preprocessor}{\#include\ <QPushButton>}}
+\DoxyCodeLine{00014\ \textcolor{preprocessor}{\#include\ <QFrame>}}
+\DoxyCodeLine{00015\ }
+\DoxyCodeLine{00024\ \textcolor{keyword}{class\ }\mbox{\hyperlink{classTaskUI}{TaskUI}}\ :\ \textcolor{keyword}{public}\ \mbox{\hyperlink{classQWidget}{QWidget}}\ \{}
+\DoxyCodeLine{00025\ \ \ \ \ Q\_OBJECT}
+\DoxyCodeLine{00026\ }
+\DoxyCodeLine{00027\ \textcolor{keyword}{public}:}
+\DoxyCodeLine{00042\ \ \ \ \ \mbox{\hyperlink{classTaskUI_a86f09b07fe3b4fd956f8c4ab02b8fae2}{TaskUI}}(QVBoxLayout\ *subtaskListLayout,\ QLabel\ *mainTitleLabel,}
+\DoxyCodeLine{00043\ \ \ \ \ \ \ \ \ \ \ \ QLabel\ *difficultyLabel,\ QLabel\ *folderLabel,\ QLabel\ *topicLabel,}
+\DoxyCodeLine{00044\ \ \ \ \ \ \ \ \ \ \ \ QPushButton\ *nextButton,\ QPushButton\ *previousButton,\ QToolButton\ *menuButton,}
+\DoxyCodeLine{00045\ \ \ \ \ \ \ \ \ \ \ \ QToolButton\ *resetRobotStartButton,\ \mbox{\hyperlink{classQFrame}{QFrame}}\ *resetRobotFrame,\ \mbox{\hyperlink{classQWidget}{QWidget}}\ *centralwidget,\ \mbox{\hyperlink{classQWidget}{QWidget}}\ *parent\ =\ \textcolor{keyword}{nullptr});}
+\DoxyCodeLine{00046\ }
+\DoxyCodeLine{00051\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskUI_a62690c3b7147c20980da5c2323314025}{initializeUI}}(\textcolor{keyword}{const}\ QVector<QSharedPointer<Task>>\ \&tasks);}
+\DoxyCodeLine{00052\ }
+\DoxyCodeLine{00057\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskUI_ab6f629b7a42a49b94250768fbed7f4f4}{setTaskUI}}(\textcolor{keywordtype}{int}\ currentTaskIndex);}
+\DoxyCodeLine{00058\ }
+\DoxyCodeLine{00062\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskUI_a9f8872c2393d36d7c3e57cf7501c745e}{updateSubtaskItemsUI}}();}
+\DoxyCodeLine{00063\ }
+\DoxyCodeLine{00068\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskUI_a53f64716c6328b25e37d822e687886cf}{setTaskManager}}(\mbox{\hyperlink{classTaskManager}{TaskManager}}\ *manager);}
+\DoxyCodeLine{00069\ }
+\DoxyCodeLine{00074\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskUI_a11f88e4482442899fa19adf1f66fa030}{startedRobotResetUI}}(\textcolor{keywordtype}{bool}\ noSubtasksLeft);}
+\DoxyCodeLine{00075\ }
+\DoxyCodeLine{00079\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskUI_a6c2ca067880d519ab255a7608a268c8f}{finishedRobotResetUI}}();}
+\DoxyCodeLine{00080\ }
+\DoxyCodeLine{00085\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskUI_a8cb2994522ad6b1b59383515edddead3}{failedRobotResetUI}}(\textcolor{keyword}{const}\ QString\ \&error);}
+\DoxyCodeLine{00086\ }
+\DoxyCodeLine{00087\ Q\_SIGNALS:}
+\DoxyCodeLine{00092\ \ \ \ \ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{classTaskUI_af43308f1438155bd927357ac93c7b9db}{taskSelected}}(\textcolor{keywordtype}{int}\ index);}
+\DoxyCodeLine{00093\ }
+\DoxyCodeLine{00094\ \textcolor{keyword}{private}\ Q\_SLOTS:}
+\DoxyCodeLine{00098\ \ \ \ \ \textcolor{keywordtype}{void}\ toggleSidebarVisibility();}
+\DoxyCodeLine{00099\ }
+\DoxyCodeLine{00100\ \textcolor{keyword}{private}:}
+\DoxyCodeLine{00101\ \ \ \ \ \mbox{\hyperlink{classSidebar}{Sidebar}}\ *sidebar;\ }
+\DoxyCodeLine{00102\ \ \ \ \ QVBoxLayout\ *subtaskListLayout;\ }
+\DoxyCodeLine{00103\ \ \ \ \ QLabel\ *mainTitleLabel;\ }
+\DoxyCodeLine{00104\ \ \ \ \ QLabel\ *difficultyLabel;\ }
+\DoxyCodeLine{00105\ \ \ \ \ QLabel\ *folderLabel;\ }
+\DoxyCodeLine{00106\ \ \ \ \ QLabel\ *topicLabel;\ }
+\DoxyCodeLine{00107\ \ \ \ \ QPushButton\ *nextButton;\ }
+\DoxyCodeLine{00108\ \ \ \ \ QPushButton\ *previousButton;\ }
+\DoxyCodeLine{00109\ \ \ \ \ QToolButton\ *menuButton;\ }
+\DoxyCodeLine{00110\ \ \ \ \ QToolButton\ *resetRobotStartButton;\ }
+\DoxyCodeLine{00111\ \ \ \ \ \mbox{\hyperlink{classQFrame}{QFrame}}\ *resetRobotFrame;\ }
+\DoxyCodeLine{00112\ \ \ \ \ \mbox{\hyperlink{classExecuteFrame}{ExecuteFrame}}\ *executeResetRobotFrame;\ }
+\DoxyCodeLine{00113\ \ \ \ \ \mbox{\hyperlink{classQWidget}{QWidget}}\ *centralwidget;\ }
+\DoxyCodeLine{00114\ \ \ \ \ QVector<QSharedPointer<Task>>\ tasks;\ }
+\DoxyCodeLine{00115\ \ \ \ \ \mbox{\hyperlink{classTaskManager}{TaskManager}}\ *taskManager;\ }
+\DoxyCodeLine{00116\ }
+\DoxyCodeLine{00121\ \ \ \ \ \textcolor{keywordtype}{void}\ setSubtaskItems(\textcolor{keywordtype}{int}\ currentTaskIndex);}
+\DoxyCodeLine{00122\ }
+\DoxyCodeLine{00126\ \ \ \ \ \textcolor{keywordtype}{void}\ addLineBetweenWidgets();}
+\DoxyCodeLine{00127\ \ \ \ \ }
+\DoxyCodeLine{00131\ \ \ \ \ \textcolor{keywordtype}{void}\ setupSplitterAndLayout();}
+\DoxyCodeLine{00132\ \};}
+\DoxyCodeLine{00133\ }
+\DoxyCodeLine{00134\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{//\ TASKUI\_HPP}}
+
+\end{DoxyCode}
diff --git a/catkin_ws/src/learn_environment/developer_docs/images/class_diagram.png b/catkin_ws/src/learn_environment/developer_docs/images/class_diagram.png
new file mode 100644
index 0000000000000000000000000000000000000000..261add7d71085672cf14aa5cdbd9ca0c33372a7b
Binary files /dev/null and b/catkin_ws/src/learn_environment/developer_docs/images/class_diagram.png differ
diff --git a/catkin_ws/src/learn_environment/docs/images/difficulty_label.png b/catkin_ws/src/learn_environment/developer_docs/images/difficulty_label.png
similarity index 100%
rename from catkin_ws/src/learn_environment/docs/images/difficulty_label.png
rename to catkin_ws/src/learn_environment/developer_docs/images/difficulty_label.png
diff --git a/catkin_ws/src/learn_environment/docs/images/task_demo.png b/catkin_ws/src/learn_environment/developer_docs/images/task_demo.png
similarity index 100%
rename from catkin_ws/src/learn_environment/docs/images/task_demo.png
rename to catkin_ws/src/learn_environment/developer_docs/images/task_demo.png
diff --git a/catkin_ws/src/learn_environment/include/learn_environment/learn_environment.hpp b/catkin_ws/src/learn_environment/include/learn_environment/learn_environment.hpp
index a1af02ae451c6f444e0099e5c89520a0f65d8253..bd43e9cdcb6bb7570ce000b6e95ca2de7ad769be 100644
--- a/catkin_ws/src/learn_environment/include/learn_environment/learn_environment.hpp
+++ b/catkin_ws/src/learn_environment/include/learn_environment/learn_environment.hpp
@@ -13,6 +13,14 @@
 #include <QThread>
 
 QT_BEGIN_NAMESPACE
+/**
+ * @namespace Ui
+ * @brief Contains classes generated by Qt's User Interface Compiler (uic) from .ui files.
+ *
+ * The Ui namespace is used to encapsulate classes that are automatically generated
+ * by the Qt framework from user interface definition files (.ui). These classes
+ * are responsible for setting up the UI elements as defined in the .ui files.
+ */
 namespace Ui {
     class LearnEnvironment;
 }
diff --git a/catkin_ws/src/learn_environment/tasks/GETTING_STARTED.md b/catkin_ws/src/learn_environment/tasks/GETTING_STARTED.md
new file mode 100644
index 0000000000000000000000000000000000000000..94658ad902ae10636fa3b86af6fb041c63fd2fd2
--- /dev/null
+++ b/catkin_ws/src/learn_environment/tasks/GETTING_STARTED.md
@@ -0,0 +1,97 @@
+# Welcome to the Tutorial
+
+To get started, follow these steps:
+
+1. **Open a Terminal in VS Code**
+    Go to `Terminal` > `New Terminal` in the VS Code menu. The shortcut is ``Ctrl + ` ``
+
+2. **Execute the Launch Command**
+    
+    Type the following command into the terminal and press Enter:
+    ```bash
+    roslaunch learn_environment tutorial_gazebo.launch
+    ```
+3. **Open RViz**
+    - **Coder / Devcontainer setups:** Open [localhost:6080](http://localhost:6080/) in your browser and click `connect`. In the top bar, you should be able to select RViz, the plugin should show up there immediately.
+    - **Local setups without Devcontainer:** When executing the command above, RViz should automatically show up and display the plugin immediately. If you are on Windows or MacOS, make sure to make your display available to Docker with tools like `XLaunch` (Windows) or `XQuartz` (MacOS).
+
+4. **Begin with the Tasks**
+    - After running the command, the task files for the **tutorial will be copied into this folder**.
+    - All tasks are Jupyter Notebooks. Some code is already provided in the notebook; **your task** is to **replace** the `throw notImplementedError()` with your **own code**.
+    - Which file you need to open is specified in the plugin.
+    - **IMPORTANT**: Do not execute these notebooks directly from VS Code. This may result in unwanted behavior and won't trigger the evaluation. Use the `start` button in the plugin.
+    - If you need help with a task, click on the `question mark` next to your current task, where you can show the solution. This will automatically add new code cells with the solution to your notebook.
+
+Familiarize yourself with RViz and start working on the tasks at your own pace!
+
+## FAQ:
+
+<details>
+<summary>Nothing happens when I click something in the plugin.</summary>
+
+- For local setups, there often are **graphic bugs** with RViz. You can drag the plugin out of RViz and everything should render fine. (Do not just dock it elsewhere but move the plugin to a new window.)
+
+</details>
+
+<details>
+<summary>I accidentally closed the plugin. How to open it again?</summary>
+
+- In RViz, click on `Panels`>`Add` and choose `Learn Environment` after that.
+
+</details>
+
+<details>
+<summary>I closed RViz or Gazebo. How to open it again?</summary>
+
+- Go to the terminal. If the last process is still running, kill it with `CTRL` + `C`. After that, enter `roslaunch learn_environment tutorial_gazebo.launch` again.
+
+</details>
+
+<details>
+<summary>How can I see solutions for the task?</summary>
+
+- Click on the **question mark** next to the task you are working on. Then click **`Show Solutions`**. 
+- After that, right below your own code cells in the Jupyter Notebook, solution cells are added. If you want to play the solutions, just click on play. 
+- If the solutions are not hidden, you can choose if you want to execute your own code or the solution.
+
+</details>
+
+<details>
+<summary>Where are the solutions?</summary>
+
+- After clicking on `Show Solutions` the solutions are automatically added below your own code cells in the Jupyter Notebook.
+- On **slow devices**, VS Code might not refresh the Notebook instantly, you may have to close the notebook and open it up again.
+
+</details>
+
+<details>
+<summary>I messed up or deleted a notebook. How can I get back the notebook for the task?</summary>
+
+- Click on the **question mark** next to the task you want to restore. Then click **`Reset Notebook`**.
+- **Caution:** this will create a completely new notebook, all your changes will be lost.
+
+</details>
+
+<details>
+<summary>Why does the robot sometimes reset before executing my script?</summary>
+
+- This will be **different for every task**. Some tasks require the robot to be in its default position for evaluating if your script is correct.
+- If required, the robot will reset **automatically** before executing your script, you don't need to worry about manually resetting the robot.
+
+</details>
+
+<details>
+<summary>Why are my other tasks sometimes executed before the started task?</summary>
+
+- This will be **different for every task**. Some tasks depend on the subtask before to be executed.
+- The previous scripts will be started **automatically**, you don't need to worry about manually starting them.
+
+</details>
+
+<details>
+<summary>I get a NotImplementedError.</summary>
+
+- This will occur if you haven't edited a code cell yet, where you have to change code.
+- After the `#### YOUR CODE HERE ####` tag, remove the `raise NotImplementedError()` line and replace it with your own code.
+
+</details>
\ No newline at end of file
diff --git a/catkin_ws/src/learn_environment/tasks/getting-started.md b/catkin_ws/src/learn_environment/tasks/getting-started.md
deleted file mode 100644
index 583e2bc6ceccb1b73ff7c0b6af7db75dbe49abce..0000000000000000000000000000000000000000
--- a/catkin_ws/src/learn_environment/tasks/getting-started.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# Welcome to the Tutorial
-
-To get started, follow these steps:
-
-1. **Open a Terminal in VS Code**
-    Go to `Terminal` > `New Terminal` in the VS Code menu. The shortcut is ``Ctrl + ` ``
-
-2. **Execute the Launch Command**
-    
-    Type the following command into the terminal and press Enter:
-    ```bash
-    roslaunch learn_environment tutorial_gazebo.launch
-    ```
-
-3. **Begin with the Tasks**
-    - After running the command, the task files for the tutorial will be copied into this folder.
-    - All tasks are Jupyter Notebooks. Some code is already provided in the notebook; your task is to replace the `throw notImplementedError()` with your own code.
-    - **IMPORTANT**: Do not execute these notebooks directly from VS Code. This may result in unwanted behavior and won't trigger the evaluation. Use the `start` button in the plugin.
-
-Familiarize yourself with RViz and start working on the tasks at your own pace!
-
-## FAQ:
-
-TODO
-
-## How to use the plugin:
-
-TODO
\ No newline at end of file
diff --git a/run.ps1 b/run.ps1
index 6538c8d638a6d8eab474d06e02933f040ea5abb6..0e7a9a98b7525b2fd3f8be4c49385fba4eb8ceba 100644
--- a/run.ps1
+++ b/run.ps1
@@ -1,6 +1,3 @@
-# Navigate to the .devcontainer directory
-cd "$(Join-Path $PSScriptRoot '.devcontainer')"
-
 # Set the DISPLAY environment variable to the host's address
 $env:DISPLAY="host.docker.internal:0.0"
 
@@ -9,9 +6,13 @@ if (Get-WmiObject Win32_VideoController | Where-Object { $_.Name -like "*NVIDIA*
     docker run -it `
         --gpus all `
         --env="DISPLAY=$env:DISPLAY" `
+        --volume="/tmp/.X11-unix:/tmp/.X11-unix" `
         container-ros-noetic-moveit-panda /bin/bash
 } else {
     docker run -it `
+        --device=/dev/dri `
+        --group-add video `
         --env="DISPLAY=$env:DISPLAY" `
+        --volume="/tmp/.X11-unix:/tmp/.X11-unix" `
         container-ros-noetic-moveit-panda /bin/bash
 }
\ No newline at end of file