From 46f8f1f4892ee8469a59dc0263f064dc429951e7 Mon Sep 17 00:00:00 2001
From: Volker Schukai <volker.schukai@schukai.com>
Date: Sat, 18 Jun 2022 19:20:44 +0200
Subject: [PATCH] chore: commit save point

---
 .idea/aws.xml                                 |   4 +-
 .idea/modules.xml                             |   1 +
 ...nts_manager_and_run_requirement_report.xml |  13 -
 ...irement.xml => reqman_add_requirement.xml} |   2 +-
 ...ements.xml => reqman_add_requirements.xml} |   2 +-
 ...create_meta.xml => reqman_create_meta.xml} |   2 +-
 .../reqman_issues_gitlab_sync.xml             |  14 +
 ...angelog.xml => reqman_print_changelog.xml} |   2 +-
 ...overview.xml => reqman_print_overview.xml} |   2 +-
 ...ey.xml => reqman_print_overview__mey_.xml} |   2 +-
 ...ents.xml => reqman_print_requirements.xml} |   2 +-
 ...n_print_todo.xml => reqman_print_todo.xml} |   2 +-
 .../reqman_requirement_report.xml             |  13 +
 ...and_run_version.xml => reqman_version.xml} |   3 +-
 ..._print_items.xml => reqmanprint_items.xml} |   2 +-
 Makefile                                      | 227 +-------
 application/source/commandline.go             |  32 +-
 application/source/config.go                  |   4 +
 application/source/defaults.go                |   7 +-
 application/source/errors.go                  |   7 +
 application/source/gitlab.go                  | 167 ++++++
 application/source/go.mod                     |  42 +-
 application/source/go.sum                     | 505 ++++++++++++++++++
 application/source/issues.go                  | 172 ++++++
 application/source/items.go                   |   4 +-
 application/source/l10n.go                    |  75 ++-
 application/source/main.go                    |   4 -
 application/source/requirements.go            |  66 ++-
 application/source/util.go                    |  57 ++
 development/examples/example1/1425.md         | 166 ++++++
 .../examples/example1/req1/1/.test1.md.swp    | Bin 0 -> 16384 bytes
 development/examples/example1/req1/1/test1.md |   7 +-
 development/makefile/color.mk                 |  17 +
 development/makefile/directories-default.mk   |  32 ++
 development/makefile/go.mk                    |  12 +
 development/makefile/license-agpl3.mk         |  10 +
 development/makefile/output.mk                |  54 ++
 development/makefile/placeholder.mk           |   9 +
 development/makefile/target-build-go.mk       |  22 +
 development/makefile/target-deploy-tool.mk    |  18 +
 development/makefile/target-git.mk            |  47 ++
 development/makefile/target-help.mk           |  45 ++
 development/makefile/target-init.mk           |  18 +
 development/makefile/terminal-check.mk        |  13 +
 development/makefile/terminal.mk              |  38 ++
 development/makefile/version.mk               |  22 +
 release.json                                  |   3 +
 47 files changed, 1707 insertions(+), 261 deletions(-)
 delete mode 100644 .idea/runConfigurations/go_build_requirements_manager_and_run_requirement_report.xml
 rename .idea/runConfigurations/{go_build_requirements_manager_and_run_add_requirement.xml => reqman_add_requirement.xml} (79%)
 rename .idea/runConfigurations/{go_build_requirements_manager_and_run_add_requirements.xml => reqman_add_requirements.xml} (76%)
 rename .idea/runConfigurations/{go_build_requirements_manager_and_run_create_meta.xml => reqman_create_meta.xml} (80%)
 create mode 100644 .idea/runConfigurations/reqman_issues_gitlab_sync.xml
 rename .idea/runConfigurations/{go_build_requirements_manager_and_run_print_changelog.xml => reqman_print_changelog.xml} (76%)
 rename .idea/runConfigurations/{go_build_requirements_manager_and_run_print_overview.xml => reqman_print_overview.xml} (80%)
 rename .idea/runConfigurations/{go_build_requirements_manager_and_run_print_overview_mey.xml => reqman_print_overview__mey_.xml} (83%)
 rename .idea/runConfigurations/{go_build_requirements_manager_and_run_print_requirements.xml => reqman_print_requirements.xml} (76%)
 rename .idea/runConfigurations/{go_build_requirements_manager_and_run_print_todo.xml => reqman_print_todo.xml} (79%)
 create mode 100644 .idea/runConfigurations/reqman_requirement_report.xml
 rename .idea/runConfigurations/{go_build_requirements_manager_and_run_version.xml => reqman_version.xml} (70%)
 rename .idea/runConfigurations/{go_build_requirements_manager_and_run_print_items.xml => reqmanprint_items.xml} (79%)
 create mode 100644 application/source/errors.go
 create mode 100644 application/source/gitlab.go
 create mode 100644 application/source/issues.go
 create mode 100644 development/examples/example1/1425.md
 create mode 100644 development/examples/example1/req1/1/.test1.md.swp
 create mode 100644 development/makefile/color.mk
 create mode 100644 development/makefile/directories-default.mk
 create mode 100644 development/makefile/go.mk
 create mode 100644 development/makefile/license-agpl3.mk
 create mode 100644 development/makefile/output.mk
 create mode 100644 development/makefile/placeholder.mk
 create mode 100644 development/makefile/target-build-go.mk
 create mode 100644 development/makefile/target-deploy-tool.mk
 create mode 100644 development/makefile/target-git.mk
 create mode 100644 development/makefile/target-help.mk
 create mode 100644 development/makefile/target-init.mk
 create mode 100644 development/makefile/terminal-check.mk
 create mode 100644 development/makefile/terminal.mk
 create mode 100644 development/makefile/version.mk
 create mode 100644 release.json

diff --git a/.idea/aws.xml b/.idea/aws.xml
index ec328d0..dd17d04 100644
--- a/.idea/aws.xml
+++ b/.idea/aws.xml
@@ -2,14 +2,16 @@
 <project version="4">
   <component name="accountSettings">
     <option name="activeProfile" value="profile:default" />
-    <option name="activeRegion" value="eu-west-1" />
+    <option name="activeRegion" value="eu-central-1" />
     <option name="recentlyUsedProfiles">
       <list>
         <option value="profile:default" />
+        <option value="profile:schukai" />
       </list>
     </option>
     <option name="recentlyUsedRegions">
       <list>
+        <option value="eu-central-1" />
         <option value="eu-west-1" />
       </list>
     </option>
diff --git a/.idea/modules.xml b/.idea/modules.xml
index d608247..9d1cb3a 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -7,6 +7,7 @@
       <module fileurl="file://$PROJECT_DIR$/../../../schukai/manual/manual.iml" filepath="$PROJECT_DIR$/../../../schukai/manual/manual.iml" />
       <module fileurl="file://$PROJECT_DIR$/requirements-manager.iml" filepath="$PROJECT_DIR$/requirements-manager.iml" />
       <module fileurl="file://$PROJECT_DIR$/../../../customer-projects/administration/templates-for-requirements/templates-for-requirements.iml" filepath="$PROJECT_DIR$/../../../customer-projects/administration/templates-for-requirements/templates-for-requirements.iml" />
+      <module fileurl="file://$PROJECT_DIR$/../version/version.iml" filepath="$PROJECT_DIR$/../version/version.iml" />
     </modules>
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_requirement_report.xml b/.idea/runConfigurations/go_build_requirements_manager_and_run_requirement_report.xml
deleted file mode 100644
index 0c93a80..0000000
--- a/.idea/runConfigurations/go_build_requirements_manager_and_run_requirement_report.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="go build requirements-manager and run requirement report" type="GoApplicationRunConfiguration" factoryName="Go Application">
-    <module name="requirements-manager" />
-    <working_directory value="$PROJECT_DIR$/application/source" />
-    <parameters value="requirements report --grouped-by Estimation -p $PROJECT_DIR$/development/examples/example1" />
-    <kind value="DIRECTORY" />
-    <package value="gitlab.schukai.com/oss/utilities/requirements-manager" />
-    <directory value="$PROJECT_DIR$/application/source" />
-    <filePath value="$PROJECT_DIR$/application/source/main.go" />
-    <output_directory value="$PROJECT_DIR$/deployment/build" />
-    <method v="2" />
-  </configuration>
-</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_add_requirement.xml b/.idea/runConfigurations/reqman_add_requirement.xml
similarity index 79%
rename from .idea/runConfigurations/go_build_requirements_manager_and_run_add_requirement.xml
rename to .idea/runConfigurations/reqman_add_requirement.xml
index 8040ce9..479e301 100644
--- a/.idea/runConfigurations/go_build_requirements_manager_and_run_add_requirement.xml
+++ b/.idea/runConfigurations/reqman_add_requirement.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="go build requirements-manager and run add requirement" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="reqman add requirement" type="GoApplicationRunConfiguration" factoryName="Go Application">
     <module name="requirements-manager" />
     <working_directory value="$PROJECT_DIR$/application/source" />
     <parameters value="requirements add --id 144444 -p $PROJECT_DIR$/development/examples/example1" />
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_add_requirements.xml b/.idea/runConfigurations/reqman_add_requirements.xml
similarity index 76%
rename from .idea/runConfigurations/go_build_requirements_manager_and_run_add_requirements.xml
rename to .idea/runConfigurations/reqman_add_requirements.xml
index 45b66e9..5ffd64e 100644
--- a/.idea/runConfigurations/go_build_requirements_manager_and_run_add_requirements.xml
+++ b/.idea/runConfigurations/reqman_add_requirements.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="go build requirements-manager and run add requirements" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="reqman add requirements" type="GoApplicationRunConfiguration" factoryName="Go Application">
     <module name="requirements-manager" />
     <working_directory value="$PROJECT_DIR$/application/source" />
     <parameters value="requirements add -p $PROJECT_DIR$/development/examples/example1 --id=1425" />
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_create_meta.xml b/.idea/runConfigurations/reqman_create_meta.xml
similarity index 80%
rename from .idea/runConfigurations/go_build_requirements_manager_and_run_create_meta.xml
rename to .idea/runConfigurations/reqman_create_meta.xml
index f96d006..5760959 100644
--- a/.idea/runConfigurations/go_build_requirements_manager_and_run_create_meta.xml
+++ b/.idea/runConfigurations/reqman_create_meta.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="go build requirements-manager and run create meta" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="reqman create meta" type="GoApplicationRunConfiguration" factoryName="Go Application">
     <module name="requirements-manager" />
     <working_directory value="$PROJECT_DIR$/application/source" />
     <parameters value="meta print -c ID -c Title -c Created -c Version -c File -p $PROJECT_DIR$/development/examples/example1" />
diff --git a/.idea/runConfigurations/reqman_issues_gitlab_sync.xml b/.idea/runConfigurations/reqman_issues_gitlab_sync.xml
new file mode 100644
index 0000000..15cac09
--- /dev/null
+++ b/.idea/runConfigurations/reqman_issues_gitlab_sync.xml
@@ -0,0 +1,14 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="reqman issues gitlab-sync" type="GoApplicationRunConfiguration" factoryName="Go Application">
+    <module name="requirements-manager" />
+    <working_directory value="$PROJECT_DIR$/application/source" />
+    <go_parameters value="-ldflags &quot;-X main.version=1.0.15 -X main.build=20220616123315&quot;" />
+    <parameters value="tasks gitlab -p $PROJECT_DIR$/development/examples/example1" />
+    <kind value="DIRECTORY" />
+    <package value="gitlab.schukai.com/oss/utilities/requirements-manager" />
+    <directory value="$PROJECT_DIR$/application/source" />
+    <filePath value="$PROJECT_DIR$/application/source/main.go" />
+    <output_directory value="$PROJECT_DIR$/deployment/build" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_changelog.xml b/.idea/runConfigurations/reqman_print_changelog.xml
similarity index 76%
rename from .idea/runConfigurations/go_build_requirements_manager_and_run_print_changelog.xml
rename to .idea/runConfigurations/reqman_print_changelog.xml
index b87056a..e56520d 100644
--- a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_changelog.xml
+++ b/.idea/runConfigurations/reqman_print_changelog.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="go build requirements-manager and run print changelog" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="reqman print changelog" type="GoApplicationRunConfiguration" factoryName="Go Application">
     <module name="requirements-manager" />
     <working_directory value="$PROJECT_DIR$/application/source" />
     <parameters value="privacy print --date-format 01.02.2006 -p $PROJECT_DIR$/development/examples/example1" />
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_overview.xml b/.idea/runConfigurations/reqman_print_overview.xml
similarity index 80%
rename from .idea/runConfigurations/go_build_requirements_manager_and_run_print_overview.xml
rename to .idea/runConfigurations/reqman_print_overview.xml
index 6457f3d..8e77184 100644
--- a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_overview.xml
+++ b/.idea/runConfigurations/reqman_print_overview.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="go build requirements-manager and run print overview" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="reqman print overview" type="GoApplicationRunConfiguration" factoryName="Go Application">
     <module name="requirements-manager" />
     <working_directory value="$PROJECT_DIR$/application/source" />
     <parameters value="overview print -c ID -c Title -c Version -p $PROJECT_DIR$/development/examples/example1 -o /tmp/overview.pdf -f pdf" />
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_overview_mey.xml b/.idea/runConfigurations/reqman_print_overview__mey_.xml
similarity index 83%
rename from .idea/runConfigurations/go_build_requirements_manager_and_run_print_overview_mey.xml
rename to .idea/runConfigurations/reqman_print_overview__mey_.xml
index d352f66..cef3f6b 100644
--- a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_overview_mey.xml
+++ b/.idea/runConfigurations/reqman_print_overview__mey_.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="go build requirements-manager and run print overview (mey)" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="reqman print overview (mey)" type="GoApplicationRunConfiguration" factoryName="Go Application">
     <module name="requirements-manager" />
     <working_directory value="$PROJECT_DIR$/application/source" />
     <parameters value="overview print -c ID -c ID -c Title -p $PROJECT_DIR$/../../../customer-projects/mey/alvine/requirement/documents -t $PROJECT_DIR$/../../../customer-projects/mey/alvine/requirement/template/schukai.md -l $PROJECT_DIR$/../../../customer-projects/mey/alvine/requirement/template/schukai.latex -o /tmp/overview.pdf -f pdf" />
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_requirements.xml b/.idea/runConfigurations/reqman_print_requirements.xml
similarity index 76%
rename from .idea/runConfigurations/go_build_requirements_manager_and_run_print_requirements.xml
rename to .idea/runConfigurations/reqman_print_requirements.xml
index ab66d06..0ba8d82 100644
--- a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_requirements.xml
+++ b/.idea/runConfigurations/reqman_print_requirements.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="go build requirements-manager and run print requirements" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="reqman print requirements" type="GoApplicationRunConfiguration" factoryName="Go Application">
     <module name="requirements-manager" />
     <working_directory value="$PROJECT_DIR$/application/source" />
     <parameters value="requirements print -p $PROJECT_DIR$/development/examples/example1 -c ID -c Title" />
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_todo.xml b/.idea/runConfigurations/reqman_print_todo.xml
similarity index 79%
rename from .idea/runConfigurations/go_build_requirements_manager_and_run_print_todo.xml
rename to .idea/runConfigurations/reqman_print_todo.xml
index a5896b9..3cebee5 100644
--- a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_todo.xml
+++ b/.idea/runConfigurations/reqman_print_todo.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="go build requirements-manager and run print todo" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="reqman print todo" type="GoApplicationRunConfiguration" factoryName="Go Application">
     <module name="requirements-manager" />
     <working_directory value="$PROJECT_DIR$/application/source" />
     <parameters value="tasks print -p $PROJECT_DIR$/development/examples/example1" />
diff --git a/.idea/runConfigurations/reqman_requirement_report.xml b/.idea/runConfigurations/reqman_requirement_report.xml
new file mode 100644
index 0000000..e2bbccb
--- /dev/null
+++ b/.idea/runConfigurations/reqman_requirement_report.xml
@@ -0,0 +1,13 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="reqman requirement report" type="GoApplicationRunConfiguration" factoryName="Go Application">
+    <module name="requirements-manager" />
+    <working_directory value="$PROJECT_DIR$/application/source" />
+    <parameters value="requirements report --gitlab --grouped-by Estimation -p $PROJECT_DIR$/development/examples/example1/req1/1/test1.md" />
+    <kind value="DIRECTORY" />
+    <package value="gitlab.schukai.com/oss/utilities/requirements-manager" />
+    <directory value="$PROJECT_DIR$/application/source" />
+    <filePath value="$PROJECT_DIR$/application/source/main.go" />
+    <output_directory value="$PROJECT_DIR$/deployment/build" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_version.xml b/.idea/runConfigurations/reqman_version.xml
similarity index 70%
rename from .idea/runConfigurations/go_build_requirements_manager_and_run_version.xml
rename to .idea/runConfigurations/reqman_version.xml
index 6082c3d..6233500 100644
--- a/.idea/runConfigurations/go_build_requirements_manager_and_run_version.xml
+++ b/.idea/runConfigurations/reqman_version.xml
@@ -1,7 +1,8 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="go build requirements-manager and run version" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="reqman version" type="GoApplicationRunConfiguration" factoryName="Go Application">
     <module name="requirements-manager" />
     <working_directory value="$PROJECT_DIR$/application/source" />
+    <go_parameters value="-ldflags &quot;-X main.version=1.0.15 -X main.build=20220616123315&quot;" />
     <parameters value="version" />
     <kind value="DIRECTORY" />
     <package value="gitlab.schukai.com/oss/utilities/requirements-manager" />
diff --git a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_items.xml b/.idea/runConfigurations/reqmanprint_items.xml
similarity index 79%
rename from .idea/runConfigurations/go_build_requirements_manager_and_run_print_items.xml
rename to .idea/runConfigurations/reqmanprint_items.xml
index 41912c1..b91cdaa 100644
--- a/.idea/runConfigurations/go_build_requirements_manager_and_run_print_items.xml
+++ b/.idea/runConfigurations/reqmanprint_items.xml
@@ -1,5 +1,5 @@
 <component name="ProjectRunConfigurationManager">
-  <configuration default="false" name="go build requirements-manager and run print items" type="GoApplicationRunConfiguration" factoryName="Go Application">
+  <configuration default="false" name="reqmanprint items" type="GoApplicationRunConfiguration" factoryName="Go Application">
     <module name="requirements-manager" />
     <working_directory value="$PROJECT_DIR$/application/source" />
     <parameters value="items print -p $PROJECT_DIR$/development/examples/example1" />
diff --git a/Makefile b/Makefile
index 526a093..86e3845 100644
--- a/Makefile
+++ b/Makefile
@@ -6,191 +6,36 @@
 #############################################################################################
 #############################################################################################
 
-COPYRIGHT_TEXT       := © schukai GmbH, Released under the AGPL 3.0 License.
 COMPONENTNAME        := RequirementManager
-COMPONENTSLUG        := $(shell echo "$COMPONENTNAME" | tr '[:upper:]' '[:lower:]')
 
 #############################################################################################
 #############################################################################################
 ##
-## more general block with standard definitions
+## MORE GENERAL BLOCK WITH STANDARD DEFINITIONS
 ##
 #############################################################################################
 #############################################################################################
 
 # get Makefile directory name: http://stackoverflow.com/a/5982798/376773
 THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
-THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)/
-THIS_MAKEFILE:=$(THIS_DIR)$(THIS_MAKEFILE_PATH)
-
-# colors
-BLACK        := $(shell tput -Txterm setaf 0)
-RED          := $(shell tput -Txterm setaf 1)
-GREEN        := $(shell tput -Txterm setaf 2)
-YELLOW       := $(shell tput -Txterm setaf 3)
-LIGHTPURPLE  := $(shell tput -Txterm setaf 4)
-PURPLE       := $(shell tput -Txterm setaf 5)
-BLUE         := $(shell tput -Txterm setaf 6)
-WHITE        := $(shell tput -Txterm setaf 7)
-RESET        := $(shell tput -Txterm sgr0)
-
-INFO    := $(GREEN)
-COMMENT := $(YELLOW)
-
-# Output control and standard outputs
-MARKER           := $(BLUE)[+]$(RESET)
-ERRORMARKER      := $(RED)[-]$(RESET)
-## Deactivate the quite mode by overwriting the value with space
-
-ifndef DEBUG
-    QUIET = @
-else
-    QUIET = 
-endif
-
-ifndef DONTOPENBROWSER
-    OPENBROWSER = false
-else
-    OPENBROWSER = true
-endif
-
-ECHO             := @echo
-ECHOMARKER       := @echo "$(MARKER) $0"
-ECHOERRORMARKER  := @echo "$(ERRORMARKER) $0"
-
-# Use bash instead of sh
-## Sets the shell used
-SHELL            =  bash
-
-# path and binaries
-AWK              := awk
-GO               := go
-CP               := cp
-CD               := cd
-KILL             := /bin/kill
-M4               := m4
-MV               := mv
-RM               := rm -f
-MKDIR            := mkdir -p
-SED              := sed
-FIND             := find
-SORT             := sort
-TOUCH            := touch
-WGET             := wget
-CHMOD            := chmod
-RSYNC            := rsync
-DOCKER           := docker
-NPX              := npx
-AWS              := aws
-XARGS            := xargs
-GREP             := grep
-NPM              := npm
-make             := make
-GIT              := git
-NPX              := npx
-NODE             := node
-LN               := ln -s
-
-# Executable Programs the Installed be have to
-EXECUTABLES = $(AWK) $(CP) $(KILL) $(M4) $(MV) rm mkdir $(SED) $(SORT) $(TOUCH) $(WGET) $(CHMOD) $(NPX) $(FIND) $(XARGS) $(GREP) $(NPM) $(GIT) $(NPX) $(NODE) $(GO) ln; 
-K := $(foreach exec,$(EXECUTABLES),\
-        $(if $(shell which $(exec)),some string,$(error "Missing $(exec) in PATH; please install")))
-
-check_defined = \
-    $(strip $(foreach 1,$1, \
-        $(call __check_defined,$1,$(strip $(value 2)),$3)))
-__check_defined = \
-    $(if $(value $1),, \
-      $(ECHOERRORMARKER) $(if $2, $2, $1))
-
-#############################################################################################
-#############################################################################################
-##
-## DEFAULT-TARGETS
-##
-#############################################################################################
-#############################################################################################
-
-# @see .PHONY https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html#Phony-Targets
-
-.DEFAULT_GOAL := help
-
-.PHONY: print
-print:
-	$(ECHO) "THIS_MAKEFILE:      $(THIS_MAKEFILE)"
-	$(ECHO) "THIS_MAKEFILE_PATH: $(THIS_MAKEFILE_PATH)"
-	$(ECHO) "THIS_DIR:           $(THIS_DIR)"
-
-# Add a comment to the public targets so that it appears
-# in this help Use two # characters for a help comment
-.PHONY: help
-help:
-	@printf "${COMMENT}Usage:${RESET}\n"
-	@printf " make [target] [arg=\"val\"...]\n\n"
-	@printf "${COMMENT}Available targets:${RESET}\n"
-	@awk '/^[a-zA-Z\-\_0-9\.@]+:/ { \
-		helpMessage = match(lastLine, /^## (.*)/); \
-		if (helpMessage) { \
-			helpCommand = substr($$1, 0, index($$1, ":")); \
-			helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
-			printf " ${INFO}%-22s${RESET} %s\n", helpCommand, helpMessage; \
-		} \
-	} \
-	{ lastLine = $$0 }' $(MAKEFILE_LIST)
-	@printf "\n${COMMENT}Available arguments:${RESET}\n\n"
-	@awk '/^(([a-zA-Z\-\_0-9\.@]+)\s=)/ { \
-		helpMessage = match(lastLine, /^## (.*)/); \
-		if (helpMessage) { \
-			helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
-			printf " ${INFO}%-22s${RESET} %s (Default: %s)\n", $$1, helpMessage, $$3; \
-		} \
-	} \
-	{ lastLine = $$0 }' $(MAKEFILE_LIST)
-
-.PHONY: variables
-## Print all Variables
-variables:
-	@$(foreach v, $(.VARIABLES), $(if $(filter file,$(origin $(v))), $(info $(INFO)$(v)$(RESET)=$($(v))$(RESET))))
-
-check_defined = \
-    $(strip $(foreach 1,$1, \
-        $(call __check_defined,$1,$(strip $(value 2)))))
-__check_defined = \
-    $(if $(value $1),, \
-      $(error Undefined $1$(if $2, ($2))))
-      
-
-
-#############################################################################################
-#############################################################################################
-##
-## DIRECTORIES
-##
-#############################################################################################
-#############################################################################################
-
-APPLICATION_PATH     :=   $(THIS_DIR)application/
-RESOURCE_PATH        :=   $(THIS_DIR)application/resource/
-SOURCE_PATH          :=   $(THIS_DIR)application/source/
-WEB_PATH             :=   $(THIS_DIR)application/web/
-DEPLOYMENT_PATH      :=   $(THIS_DIR)deployment/
-VENDOR_PATH          :=   $(THIS_DIR)deployment/vendor/
-DEVELOPMENT_PATH     :=   $(THIS_DIR)development/
-SCRIPTS_PATH         :=   $(THIS_DIR)development/scripts/
-DOCUMENTATION_PATH   :=   $(THIS_DIR)documentation/
-
-## Build path
-BUILD_PATH            =   $(DEPLOYMENT_PATH)build/
+PROJECT_ROOT:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)/
+THIS_MAKEFILE:=$(PROJECT_ROOT)$(THIS_MAKEFILE_PATH)
 
-
-
-#############################################################################################
-#############################################################################################
-##
-## DEPENDENCIES (JEKYLL, MINERVA, ...)
-##
-#############################################################################################
-#############################################################################################
+include $(PROJECT_ROOT)development/makefile/license-agpl3.mk
+include $(PROJECT_ROOT)development/makefile/placeholder.mk
+include $(PROJECT_ROOT)development/makefile/directories-default.mk
+include $(PROJECT_ROOT)development/makefile/go.mk
+include $(PROJECT_ROOT)development/makefile/color.mk
+include $(PROJECT_ROOT)development/makefile/terminal.mk
+include $(PROJECT_ROOT)development/makefile/output.mk
+include $(PROJECT_ROOT)development/makefile/version.mk
+include $(PROJECT_ROOT)development/makefile/target-help.mk
+include $(PROJECT_ROOT)development/makefile/target-init.mk
+include $(PROJECT_ROOT)development/makefile/target-deploy-tool.mk
+include $(PROJECT_ROOT)development/makefile/target-build-go.mk
+include $(PROJECT_ROOT)development/makefile/target-git.mk
+include $(PROJECT_ROOT)development/makefile/terminal-check.mk	
+	
 
 
 #############################################################################################
@@ -202,38 +47,6 @@ BUILD_PATH            =   $(DEPLOYMENT_PATH)build/
 #############################################################################################
 
 
+	
 
-#############################################################################################
-#############################################################################################
-##
-## PROJECT-TARGETS
-##
-#############################################################################################
-#############################################################################################
-
-#############################################################################################
-#############################################################################################
-##
-## PROJECT-TARGETS
-##
-#############################################################################################
-#############################################################################################
-
-## Compiling for every OS and Platform
-compile: 
-	echo "Compiling for every OS and Platform"
-
-	cd $(SOURCE_PATH); GOOS=linux GOARCH=arm $(GO) build -o $(BUILD_PATH)reqman-linux-arm; cd -
-	cd $(SOURCE_PATH); GOOS=linux GOARCH=amd64 $(GO) build -o $(BUILD_PATH)reqman-linux-amd64; cd -
-	cd $(SOURCE_PATH); GOOS=linux GOARCH=arm64 $(GO) build -o $(BUILD_PATH)reqman-linux-arm64; cd -
-	cd $(SOURCE_PATH); GOOS=linux GOARCH=386 $(GO) build -o $(BUILD_PATH)reqman-linux-386; cd -
-	cd $(SOURCE_PATH); GOOS=windows GOARCH=amd64 $(GO) build -o $(BUILD_PATH)reqman-windows; cd -
-
-## compile and deplay to aws
-deploy: compile
-	find $(BUILD_PATH) -iname reqman-* -exec aws s3 cp {} s3://download.schukai.com/tools/reqman/ \;
-
-## overview-to-aws
-overview-to-aws:
-	aws s3 cp $(WEB_PATH)/index.html s3://download.schukai.com/tools/reqman/
-	
\ No newline at end of file
+	
diff --git a/application/source/commandline.go b/application/source/commandline.go
index 45c82d0..86ab5e4 100644
--- a/application/source/commandline.go
+++ b/application/source/commandline.go
@@ -22,12 +22,25 @@ type commandLineOptions struct {
 		} `command:"add"`
 		Report struct {
 			GroupedBy string `long:"grouped-by" required:"false" description:"grouped by"`
+			Gitlab    bool   `long:"gitlab" description:"get data from gitlab"`
 		} `command:"report"`
 	} `command:"requirements"`
 	Tasks struct {
 		Print struct {
 		} `command:"print"`
+		Gitlab struct {
+			ProjectID string `long:"project-id" required:"false" description:"gitlab project id"`
+			Token     string `long:"token" required:"false" description:"gitlab token"`
+		} `command:"gitlab"`
 	} `command:"tasks"`
+	Issues struct {
+		Print struct {
+		} `command:"print"`
+		Gitlab struct {
+			ProjectID string `long:"project-id" required:"false" description:"gitlab project id"`
+			Token     string `long:"token" required:"false" description:"gitlab token"`
+		} `command:"gitlab"`
+	} `command:"issues"`
 	Items struct {
 		Print struct {
 		} `command:"print"`
@@ -74,9 +87,10 @@ func executeCommand() {
 
 	activeCommand := p.Command.Active
 
-	version = "development"
-	build = "1.1.1"
-	//
+	if activeCommand == nil {
+		return
+	}
+
 	switch activeCommand.Name {
 
 	case "version":
@@ -160,6 +174,18 @@ func executeCommand() {
 			}
 		}
 
+	case "issues":
+		subcommand := activeCommand.Active
+		switch subcommand.Name {
+		case "print":
+			err := printIssueTable(config)
+			if err != nil {
+				printErrorAndExit(2, err.Error())
+			}
+		case "gitlab":
+			syncTasksWithGitlab(config)
+		}
+
 	case "items":
 		subcommand := activeCommand.Active
 		switch subcommand.Name {
diff --git a/application/source/config.go b/application/source/config.go
index 2ddd00d..ca5d6a4 100644
--- a/application/source/config.go
+++ b/application/source/config.go
@@ -29,6 +29,10 @@ type Configuration struct {
 		DateFormat string `yaml:"DateFormat"`
 	} `yaml:"Locale"`
 
+	GitLab struct {
+		Token string `yaml:"Token"`
+	} `yaml:"GitLab"`
+
 	Overview struct {
 		Template struct {
 			Markdown string `yaml:"Markdown"`
diff --git a/application/source/defaults.go b/application/source/defaults.go
index 02ae4cd..fb35a01 100644
--- a/application/source/defaults.go
+++ b/application/source/defaults.go
@@ -103,6 +103,11 @@ Source: null
 Created: %%CREATED%%
 Last Update: null
 
+# The issues that are associated with this requirement
+Issues:
+  - Title: null
+    URL: null
+
 # the individual items as a list
 Items:
   - ID: null
@@ -110,7 +115,7 @@ Items:
     # what is it, a image, font, legal information, access data, texts, decisions, etc.
     Type: null
     # does this belong to a group
-    Group: null
+    group: null
     Description: null
     Delivery until: null
     # when was the project items delivered and by whom?
diff --git a/application/source/errors.go b/application/source/errors.go
new file mode 100644
index 0000000..4b6c55a
--- /dev/null
+++ b/application/source/errors.go
@@ -0,0 +1,7 @@
+package main
+
+import "errors"
+
+var (
+	noGitRepositoryError = errors.New("no git repository found")
+)
diff --git a/application/source/gitlab.go b/application/source/gitlab.go
new file mode 100644
index 0000000..afdbc1f
--- /dev/null
+++ b/application/source/gitlab.go
@@ -0,0 +1,167 @@
+package main
+
+import (
+	"net/url"
+	"path"
+
+	"github.com/go-git/go-git/v5"
+	"github.com/xanzy/go-gitlab"
+)
+
+type gitlabContext struct {
+	rootPath string
+	repos    *git.Repository
+	apiUrl   url.URL
+
+	group string
+	name  string
+
+	token  string
+	client *gitlab.Client
+
+	project *gitlab.Project
+}
+
+func getGitlabContext(config *Configuration) *gitlabContext {
+
+	context := &gitlabContext{}
+	workingPath, err := getGitDirectory(config)
+	if err != nil {
+		printErrorAndExit(2, "Failed to get git directory", err.Error())
+	}
+
+	context.rootPath = workingPath
+
+	repos, err := git.PlainOpen(workingPath)
+	if err != nil {
+		printErrorAndExit(2, "Failed to open repository", err.Error())
+	}
+
+	context.repos = repos
+	if err != nil {
+		printErrorAndExit(2, "Failed to get remotes", err.Error())
+	}
+
+	remotes, err := repos.Remotes()
+	if err != nil {
+		printErrorAndExit(2, "Failed to get remotes", err.Error())
+	}
+
+	remote := remotes[0]
+	if remote == nil {
+		printErrorAndExit(2, "Failed to get remote")
+	}
+
+	urls := remote.Config().URLs
+	if len(urls) == 0 {
+		printErrorAndExit(2, "Failed to get remote url")
+	}
+
+	u, err := url.Parse(urls[0])
+	if err != nil {
+		printErrorAndExit(2, "Failed to parse remote url", err.Error())
+	}
+
+	context.apiUrl = *u
+	context.apiUrl.Path = "" //path.Join("api", "v4")
+
+	p := u.Path
+	if p == "" {
+		printErrorAndExit(2, "Failed to get remote path")
+	}
+
+	s := p[1 : len(p)-4]
+	context.name = path.Base(s)
+	context.group = path.Dir(s)
+
+	options := gitlab.WithBaseURL(context.apiUrl.String())
+
+	context.token = config.GitLab.Token
+	c, err := gitlab.NewClient(config.GitLab.Token, options)
+	if err != nil {
+		printErrorAndExit(2, "Failed to create client", err.Error())
+	}
+
+	context.client = c
+
+	return context
+}
+
+func searchProject(context *gitlabContext) {
+	//
+	options := gitlab.ListProjectsOptions{
+		Search:           gitlab.String(context.group + "/" + context.name),
+		SearchNamespaces: gitlab.Bool(true),
+	}
+
+	projects, response, err := context.client.Projects.ListProjects(&options)
+
+	if response.StatusCode == 404 {
+		printErrorAndExit(2, "Project not found %s", err.Error())
+	}
+
+	if err != nil {
+		printErrorAndExit(2, "Failed to get projects %s", err.Error())
+	}
+
+	if response.StatusCode != 200 {
+		printErrorAndExit(2, "Failed to get projects %s", err.Error())
+	}
+
+	if len(projects) == 0 {
+		printErrorAndExit(2, "Project not found")
+	}
+
+	context.project = projects[0]
+
+}
+
+func enrichIssuesWithGitlab(pageMap *map[string]requirement, config *Configuration) error {
+
+	context := getGitlabContext(config)
+	searchProject(context)
+
+	for _, requirement := range *pageMap {
+		for k, issue := range requirement.Issues {
+
+			if issue.GitlabID == 0 {
+				continue
+			}
+
+			i, err := loadIssuesFromGitlab(context, issue.GitlabID)
+			if err != nil {
+				return err
+			}
+
+			// requirement is a copy of the original requirement
+			// this works because issue is a pointer
+			requirement.Issues[k].Gitlab = i
+		}
+	}
+
+	return nil
+}
+
+//
+//func getProject(config *Configuration) *gitlab.Project {
+//
+//	client := getGitlabClient(config)
+//
+//	pattern := "test"
+//
+//	options := gitlab.ListProjectsOptions{
+//		Search: &pattern,
+//	}
+//
+//	projects, _, err := client.Projects.ListProjects(&options)
+//	if err != nil {
+//		printErrorAndExit(2, "Failed to get projects", err.Error())
+//	}
+//
+//	//project, _, err := client.Projects.GetProject(config.GitlabProjectID, nil)
+//	//if err != nil {
+//	//	printErrorAndExit(2, "Failed to get project", err.Error())
+//	//}
+//
+//	return projects[0]
+//}
diff --git a/application/source/go.mod b/application/source/go.mod
index e7ce292..330611b 100644
--- a/application/source/go.mod
+++ b/application/source/go.mod
@@ -3,19 +3,47 @@ module gitlab.schukai.com/oss/utilities/requirements-manager
 go 1.18
 
 require (
-	github.com/gookit/color v1.5.0
+	github.com/gookit/color v1.5.1
 	github.com/jessevdk/go-flags v1.5.0
 	github.com/olekukonko/tablewriter v0.0.5
 	golang.org/x/text v0.3.7
-	gopkg.in/yaml.v2 v2.2.8
-	gopkg.in/yaml.v3 v3.0.0-20220512140231-539c8e751b99
+	gopkg.in/yaml.v2 v2.4.0
+	gopkg.in/yaml.v3 v3.0.1
 )
 
 require (
+	github.com/Microsoft/go-winio v0.5.2 // indirect
+	github.com/ProtonMail/go-crypto v0.0.0-20220517143526-88bb52951d5b // indirect
+	github.com/acomagu/bufpipe v1.0.3 // indirect
 	github.com/davecgh/go-spew v1.1.1 // indirect
-	github.com/kr/pretty v0.1.0 // indirect
-	github.com/mattn/go-runewidth v0.0.9 // indirect
+	github.com/emirpasic/gods v1.18.1 // indirect
+	github.com/go-git/gcfg v1.5.0 // indirect
+	github.com/go-git/go-billy/v5 v5.3.1 // indirect
+	github.com/go-git/go-git/v5 v5.4.2 // indirect
+	github.com/golang/protobuf v1.5.2 // indirect
+	github.com/google/go-querystring v1.1.0 // indirect
+	github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
+	github.com/hashicorp/go-retryablehttp v0.7.1 // indirect
+	github.com/imdario/mergo v0.3.13 // indirect
+	github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
+	github.com/kevinburke/ssh_config v1.2.0 // indirect
+	github.com/kr/pretty v0.2.1 // indirect
+	github.com/mattn/go-runewidth v0.0.13 // indirect
+	github.com/mitchellh/go-homedir v1.1.0 // indirect
+	github.com/rivo/uniseg v0.2.0 // indirect
+	github.com/sergi/go-diff v1.2.0 // indirect
+	github.com/src-d/gcfg v1.4.0 // indirect
+	github.com/xanzy/go-gitlab v0.68.0 // indirect
+	github.com/xanzy/ssh-agent v0.3.1 // indirect
 	github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
-	golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886 // indirect
-	gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
+	golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect
+	golang.org/x/net v0.0.0-20220615171555-694bf12d69de // indirect
+	golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb // indirect
+	golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c // indirect
+	golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect
+	google.golang.org/appengine v1.6.7 // indirect
+	google.golang.org/protobuf v1.28.0 // indirect
+	gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
+	gopkg.in/src-d/go-billy.v4 v4.3.2 // indirect
+	gopkg.in/warnings.v0 v0.1.2 // indirect
 )
diff --git a/application/source/go.sum b/application/source/go.sum
index 895c078..f0dafbc 100644
--- a/application/source/go.sum
+++ b/application/source/go.sum
@@ -1,39 +1,544 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
+cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
+cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
+cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
+cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
+cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
+cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
+cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
+cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
+cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
+cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
+cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
+cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
+cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
+cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
+cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
+cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
+cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
+cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
+cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
+cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
+cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
+cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
+cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
+cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
+cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
+cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
+cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
+cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
+cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
+dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
+github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA=
+github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0=
+github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84=
+github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA=
+github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
+github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
+github.com/ProtonMail/go-crypto v0.0.0-20220517143526-88bb52951d5b h1:lcbBNuQhppsc7A5gjdHmdlqUqJfgGMylBdGyDs0j7G8=
+github.com/ProtonMail/go-crypto v0.0.0-20220517143526-88bb52951d5b/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
+github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk=
+github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
+github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs=
+github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
+github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg=
+github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o=
+github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
+github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
+github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
+github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4=
+github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E=
+github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
+github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34=
+github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
+github.com/go-git/go-git v4.7.0+incompatible h1:+W9rgGY4DOKKdX2x6HxSR7HNeTxqiKrOvKnuittYVdA=
+github.com/go-git/go-git v4.7.0+incompatible/go.mod h1:6+421e08gnZWn30y26Vchf7efgYLe4dl5OQbBSUXShE=
+github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0=
+github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4=
+github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc=
+github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
+github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
+github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
+github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
+github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
+github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
+github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
+github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
+github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
+github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
 github.com/gookit/color v1.5.0 h1:1Opow3+BWDwqor78DcJkJCIwnkviFi+rrOANki9BUFw=
 github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl7wAo=
+github.com/gookit/color v1.5.1 h1:Vjg2VEcdHpwq+oY63s/ksHrgJYCTo0bwWvmmYWdE9fQ=
+github.com/gookit/color v1.5.1/go.mod h1:wZFzea4X8qN6vHOSP2apMb4/+w/orMznEzYsIHPaqKM=
+github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
+github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
+github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
+github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
+github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ=
+github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
+github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
+github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
+github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
+github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
+github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
+github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
 github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
 github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
+github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
+github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
+github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY=
+github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
+github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
+github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
+github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
 github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
 github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
 github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA=
 github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
 github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
+github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
+github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
+github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
 github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
 github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
+github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
+github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
+github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
+github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
+github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
+github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
+github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
+github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
+github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
+github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4=
+github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
+github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
+github.com/xanzy/go-gitlab v0.68.0 h1:b2iMQHgZ1V+NyRqLRJVv6RFfr4xnd/AASeS/PETYL0Y=
+github.com/xanzy/go-gitlab v0.68.0/go.mod h1:o4yExCtdaqlM8YGdDJWuZoBmfxBsmA9TPEjs9mx1UO4=
+github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70=
+github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
+github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0=
+github.com/xanzy/ssh-agent v0.3.1 h1:AmzO1SSWxw73zxFZPRwaMN1MohDw8UyHnmuxyceTEGo=
+github.com/xanzy/ssh-agent v0.3.1/go.mod h1:QIE4lCeL7nkC25x+yA3LBIYfwCc1TFziCtG7cBAac6w=
 github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8=
 github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs=
+github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
+go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
+go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
+golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
+golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
+golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM=
+golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
+golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
+golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
+golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
+golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
+golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
+golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
+golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
+golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
+golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
+golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
+golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
+golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
+golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k=
+golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 h1:NWy5+hlRbC7HK+PmcXVUmW1IMyFce7to56IUvhUFm7Y=
+golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220615171555-694bf12d69de h1:ogOG2+P6LjO2j55AkRScrkB2BFpd+Z8TY2wcM0Z3MGo=
+golang.org/x/net v0.0.0-20220615171555-694bf12d69de/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
+golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 h1:OSnWWcOd/CtWQC2cYSBgbTSJv3ciqd8r54ySIW2y3RE=
+golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
+golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb h1:8tDJ3aechhddbdPAxpycgXHJRMLpk/Ab+aa4OgdN5/g=
+golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886 h1:eJv7u3ksNXoLbGSKuv2s/SIO4tJVxc/A+MTpzxDgz/Q=
 golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c h1:aFV+BgZ4svzjfabn8ERpuB4JI4N6/rdy1iusx77G3oU=
+golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220609170525-579cf78fd858 h1:Dpdu/EMxGMFgq0CeYMh4fazTD2vtlZRYE7wyynxJb9U=
+golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190729092621-ff9f1409240a/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI=
+golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
+golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
+golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
+google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
+google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
+google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
+google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
+google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
+google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
+google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
+google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
+google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
+google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
+google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
+google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
+google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
+google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
+google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
+google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
+google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/src-d/go-billy.v4 v4.3.2 h1:0SQA1pRztfTFx2miS8sA97XvooFeNOmvUenF4o0EcVg=
+gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98=
+gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g=
+gopkg.in/src-d/go-git.v4 v4.13.1 h1:SRtFyV8Kxc0UP7aCHcijOMQGPxHSmMOPrzulQWolkYE=
+gopkg.in/src-d/go-git.v4 v4.13.1/go.mod h1:nx5NYcxdKxq5fpltdHnPa2Exj4Sx0EclMWZQbYDu2z8=
+gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
+gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
 gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20220512140231-539c8e751b99 h1:dbuHpmKjkDzSOMKAWl10QNlgaZUd3V1q99xc81tt2Kc=
 gopkg.in/yaml.v3 v3.0.0-20220512140231-539c8e751b99/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
+honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
+rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
+rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
+rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
diff --git a/application/source/issues.go b/application/source/issues.go
new file mode 100644
index 0000000..36c58d7
--- /dev/null
+++ b/application/source/issues.go
@@ -0,0 +1,172 @@
+package main
+
+import (
+	"bytes"
+	"fmt"
+	"strings"
+	"time"
+
+	"github.com/xanzy/go-gitlab"
+
+	"github.com/olekukonko/tablewriter"
+)
+
+type Issue struct {
+	GitlabID int `yaml:"Gitlab-ID"`
+	Gitlab   *gitlab.Issue
+	//Title string `yaml:"Title"`
+	//URL   string `yaml:"URL"`
+	//ID            string    `yaml:"ID"`
+	//Name          string    `yaml:"Name"`
+	//Type          string    `yaml:"Type"`
+	//Group         string    `yaml:"group"`
+	//Description   string    `yaml:"Description"`
+	//DeliveryUntil time.Time `yaml:"Delivery until"`
+	//ProvidedOn    time.Time `yaml:"Provided on"`
+	//ProvidedBy    string    `yaml:"Provided by"`
+}
+
+func loadIssuesFromGitlab(context *gitlabContext, issueID int) (*gitlab.Issue, error) {
+
+	client := context.client
+
+	issue, _, err := client.Issues.GetIssue(context.project.ID, issueID) //  .ListProjectIssues(context.project.ID, &gitlab.ListProjectIssuesOptions{})
+	if err != nil {
+		return nil, err
+	}
+
+	return issue, nil
+
+	//err, pageData := collectStructureFromFiles(config.Path)
+}
+
+func buildIssueOverviewTable(config *Configuration, pageMap map[string]requirement, extended bool) (error, string, bool) {
+
+	buf := new(bytes.Buffer)
+	has := false
+
+	table := tablewriter.NewWriter(buf)
+
+	header := []string{
+		printer.Sprintf("ID"),
+		printer.Sprintf("Title"),
+		printer.Sprintf("State")}
+
+	if extended == true {
+
+		header = append(header, printer.Sprintf("Assignees"))
+		header = append(header, printer.Sprintf("Due date"))
+		header = append(header, printer.Sprintf("Labels"))
+		header = append(header, printer.Sprintf("Estimate"))
+		header = append(header, printer.Sprintf("Spent"))
+	}
+
+	table.SetHeader(header)
+
+	table.SetBorders(tablewriter.Border{Left: true, Top: false, Right: true, Bottom: false})
+	table.SetCenterSeparator("|")
+
+	var tableData [][]string
+
+	for _, requirement := range pageMap {
+		for _, issue := range requirement.Issues {
+
+			gitlab := issue.Gitlab
+
+			var col []string
+			dueDate := "—"
+			id := printer.Sprintf("%d", issue.GitlabID)
+
+			labels := "—"
+			estimate := "—"
+			spent := "—"
+			state := "—"
+			title := "—"
+			assignees := "—"
+
+			if gitlab != nil {
+				if gitlab.DueDate != nil {
+					d := (time.Time)(*gitlab.DueDate)
+					dueDate = d.Format(config.Locale.DateFormat)
+				}
+
+				labels = printer.Sprintf("%s", strings.Join(gitlab.Labels, ", "))
+				estimate = printer.Sprintf("%s", gitlab.TimeStats.HumanTimeEstimate)
+				spent = printer.Sprintf("%s", gitlab.TimeStats.HumanTotalTimeSpent)
+				state = printer.Sprintf(gitlab.State)
+				title = printer.Sprintf("%s", gitlab.Title)
+
+				a := []string{}
+				for _, assignee := range gitlab.Assignees {
+					a = append(a, assignee.Name)
+				}
+
+				assignees = printer.Sprintf("%s", strings.Join(a, ", "))
+
+			}
+
+			if extended {
+				col = []string{id, title, state, assignees, dueDate, labels, estimate, spent}
+			} else {
+				col = []string{id, title, state, labels}
+			}
+
+			tableData = append(tableData, col)
+			has = true
+
+		}
+
+	}
+
+	table.AppendBulk(tableData) // Add Bulk Data
+	table.SetHeaderAlignment(tablewriter.ALIGN_LEFT)
+	table.Render()
+
+	return nil, buf.String(), has
+}
+
+func printIssueTable(config *Configuration) error {
+	err, pageMap := collectStructureFromFiles(config.Path)
+	enrichIssuesWithGitlab(&pageMap, config)
+	if err != nil {
+		return err
+	}
+
+	err, table, _ := buildIssueOverviewTable(config, pageMap, true)
+	fmt.Println(table)
+
+	return nil
+}
+
+func syncTasksWithGitlab(config *Configuration) error {
+
+	err, pageData := collectStructureFromFiles(config.Path)
+	if err != nil {
+		return err
+	}
+
+	issuesList := []Issue{}
+
+	for _, pageData := range pageData {
+		for _, info := range pageData.Issues {
+			issuesList = append(issuesList, info)
+		}
+	}
+
+	context := getGitlabContext(config)
+	searchProject(context)
+
+	client := context.client
+
+	issues, response, err := client.Issues.ListProjectIssues(context.project.ID, &gitlab.ListProjectIssuesOptions{})
+	if err != nil {
+		printErrorAndExit(0, "Failed to get issues %s", err.Error())
+	}
+
+	for _, issue := range issues {
+		fmt.Println(issue.Title)
+	}
+	fmt.Println(response.StatusCode)
+
+	return nil
+}
diff --git a/application/source/items.go b/application/source/items.go
index 5213f22..567df8f 100644
--- a/application/source/items.go
+++ b/application/source/items.go
@@ -12,7 +12,7 @@ type Item struct {
 	ID            string    `yaml:"ID"`
 	Name          string    `yaml:"Name"`
 	Type          string    `yaml:"Type"`
-	Group         string    `yaml:"Group"`
+	Group         string    `yaml:"group"`
 	Description   string    `yaml:"Description"`
 	DeliveryUntil time.Time `yaml:"Delivery until"`
 	ProvidedOn    time.Time `yaml:"Provided on"`
@@ -31,7 +31,7 @@ func buildItemOverviewTable(config *Configuration, pageMap map[string]requiremen
 	if extended {
 		header = []string{
 			printer.Sprintf("ID"),
-			printer.Sprintf("Group"),
+			printer.Sprintf("group"),
 			printer.Sprintf("Name"),
 			printer.Sprintf("Type"),
 			printer.Sprintf("Description"),
diff --git a/application/source/l10n.go b/application/source/l10n.go
index f526539..b7ad9c2 100644
--- a/application/source/l10n.go
+++ b/application/source/l10n.go
@@ -57,10 +57,10 @@ var l10nMap = []l10nKeyTranslation{
 			{"en", "file"},
 		},
 	}, {
-		"Group",
+		"group",
 		[]l10nLocaleTranslation{
 			{"de", "Gruppe"},
-			{"en", "Group"},
+			{"en", "group"},
 		},
 	},
 	{
@@ -351,13 +351,82 @@ var l10nMap = []l10nKeyTranslation{
 			{"de", "nicht unterstützter Typ %s"},
 			{"en", "unsuported type %s"},
 		},
-	}, {
+	},
+	{
 		"no value",
 		[]l10nLocaleTranslation{
 			{"de", "kein Wert"},
 			{"en", "no value"},
 		},
 	},
+	{
+		"opened",
+		[]l10nLocaleTranslation{
+			{"de", "offen"},
+			{"en", "opened"},
+		},
+	},
+
+	{
+		"closed",
+		[]l10nLocaleTranslation{
+			{"de", "geschlossen"},
+			{"en", "closed"},
+		},
+	},
+
+	{
+		"State",
+		[]l10nLocaleTranslation{
+			{"de", "Status"},
+			{"en", "State"},
+		},
+	},
+	{
+		"Due date",
+		[]l10nLocaleTranslation{
+			{"de", "Fälligkeitsdatum"},
+			{"en", "Due Date"},
+		},
+	},
+
+	{
+		"Labels",
+		[]l10nLocaleTranslation{
+			{"de", "Labels"},
+			{"en", "Labels"},
+		},
+	},
+
+	{
+		"Estimate",
+		[]l10nLocaleTranslation{
+			{"de", "Planwert"},
+			{"en", "Estimate"},
+		},
+	},
+
+	{
+		"Spent",
+		[]l10nLocaleTranslation{
+			{"de", "Aufwand"},
+			{"en", "Spent"},
+		},
+	},
+
+	{
+		"Assignees",
+		[]l10nLocaleTranslation{
+			{"de", "Zuweisungen"},
+			{"en", "Assignees"},
+		},
+	}, {
+		"Statistics",
+		[]l10nLocaleTranslation{
+			{"de", "Statistiken"},
+			{"en", "Statistics"},
+		},
+	},
 }
 
 func initL10n() {
diff --git a/application/source/main.go b/application/source/main.go
index 039971f..ff52d3b 100644
--- a/application/source/main.go
+++ b/application/source/main.go
@@ -1,11 +1,9 @@
 package main
 
 import (
-	//"crypto/tls"
 	"os"
 
 	"golang.org/x/text/language"
-
 	"golang.org/x/text/message"
 )
 
@@ -48,7 +46,5 @@ func initEnvironment() {
 /**
  */
 func main() {
-
 	executeCommand()
-
 }
diff --git a/application/source/requirements.go b/application/source/requirements.go
index f0e09bf..69f8217 100644
--- a/application/source/requirements.go
+++ b/application/source/requirements.go
@@ -20,6 +20,7 @@ type requirement struct {
 	File     string
 	Items    []Item    `yaml:"Items"`
 	Privacy  []Privacy `yaml:"Privacy"`
+	Issues   []Issue   `yaml:"Issues"`
 
 	ID         string        `yaml:"ID"`
 	References []string      `yaml:"References"`
@@ -161,7 +162,53 @@ func printRequirements(config *Configuration) error {
 	return err
 }
 
-func buildTimeReport(config *Configuration, arguments *commandLineOptions, pageMap map[string]requirement) (error, string, string, bool) {
+func integrateGitlabTimeSpent(pageMap *map[string]requirement) {
+
+	for k, requirement := range *pageMap {
+
+		for _, i := range requirement.Issues {
+			if i.Gitlab == nil {
+				continue
+			}
+
+			//d := time.Duration(i.Gitlab.TimeStats.TotalTimeSpent) * time.Second
+			//fmt.Println(fn, d)
+			//ref[fn].TimeSpent += d
+			requirement.TimeSpent = 99999999
+			requirement.Status = "done"
+
+			//			fmt.Println(i.Gitlab.TimeStats.TotalTimeSpent)
+		}
+
+		pageMap[k] = requirement
+
+		//if &pd.Issues == nil || &pd.Issues. == nil {
+		//	continue
+		//}
+		//
+		//for _, issue := range pd.Issues.Gitlab {
+		//	if issue == nil {
+		//		continue
+		//	}
+		//	pd.TimeSpent += *issue.TimeSpent
+		//}
+
+	}
+	fmt.Println("integrateGitlabTimeSpent")
+
+}
+
+func buildTimeReport(config *Configuration, arguments *commandLineOptions, pageMap *map[string]requirement) (error, string, string, bool) {
+
+	if arguments.Requirements.Report.Gitlab {
+		err := enrichIssuesWithGitlab(pageMap, config)
+		if err != nil {
+			return err, "", "", false
+		}
+
+		integrateGitlabTimeSpent(pageMap)
+
+	}
 
 	groupedByKey := arguments.Requirements.Report.GroupedBy
 	if groupedByKey == "" {
@@ -171,7 +218,7 @@ func buildTimeReport(config *Configuration, arguments *commandLineOptions, pageM
 	hasReport := false
 
 	found := false
-	for _, p := range pageMap {
+	for _, p := range *pageMap {
 
 		fields := reflect.VisibleFields(reflect.TypeOf(p))
 		for _, field := range fields {
@@ -196,12 +243,12 @@ func buildTimeReport(config *Configuration, arguments *commandLineOptions, pageM
 	return nil, t1, t2, hasReport
 }
 
-func buildTable1(groupedByKey string, pageMap map[string]requirement) string {
+func buildTable1(groupedByKey string, pageMap *map[string]requirement) string {
 
 	estimated := map[string]float64{}
 	timeSpent := map[string]float64{}
 
-	for _, d := range pageMap {
+	for _, d := range *pageMap {
 
 		r := reflect.ValueOf(d)
 		f := r.FieldByName(groupedByKey)
@@ -281,12 +328,12 @@ type mathData struct {
 	time timeStruct
 }
 
-func buildTable2(pageMap map[string]requirement) string {
+func buildTable2(pageMap *map[string]requirement) string {
 
 	est := map[int]mathData{}
 
 	// inti struct
-	for _, d := range pageMap {
+	for _, d := range *pageMap {
 		k := d.Estimation
 
 		m := mathData{}
@@ -302,7 +349,7 @@ func buildTable2(pageMap map[string]requirement) string {
 	}
 
 	// calc sum
-	for _, d := range pageMap {
+	for _, d := range *pageMap {
 		k := d.Estimation
 		s := est[k]
 
@@ -380,7 +427,10 @@ func printRequirementReport(config *Configuration, arguments *commandLineOptions
 		return err
 	}
 
-	err, table1, table2, _ := buildTimeReport(config, arguments, pageData)
+	err, table1, table2, _ := buildTimeReport(config, arguments, &pageData)
+	if err != nil {
+		return err
+	}
 
 	report := "## " + printer.Sprintf("Auflistung") + "\n\n"
 	report += table1
diff --git a/application/source/util.go b/application/source/util.go
index 7bbfac9..2f109cd 100644
--- a/application/source/util.go
+++ b/application/source/util.go
@@ -3,6 +3,8 @@ package main
 import (
 	"bytes"
 	"errors"
+	"os"
+	"path/filepath"
 	"strings"
 	"text/template"
 
@@ -129,3 +131,58 @@ func translateHeaders(columns []string) []string {
 	return result
 
 }
+
+func getGitDirectory(config *Configuration) (string, error) {
+
+	path := config.Path
+
+	fileInfo, err := os.Stat(path)
+	if err != nil {
+		return "", err
+	}
+
+	if !fileInfo.IsDir() {
+		path = filepath.Dir(path)
+	}
+
+	return findGitDirectory(path)
+}
+
+func findGitDirectory(path string) (string, error) {
+
+	if path == "" {
+		return "", noGitRepositoryError
+	}
+
+	if volume := filepath.VolumeName(path); volume != "" {
+		if volume == path {
+			return "", noGitRepositoryError
+		}
+	} else {
+		if path == "/" {
+			return "", noGitRepositoryError
+		}
+	}
+
+	if !exists(filepath.Join(path, ".git")) {
+		return findGitDirectory(filepath.Dir(path))
+	}
+
+	return path, nil
+
+}
+
+func exists(path string) bool {
+	_, err := os.Stat(path)
+	if err == nil {
+		return true
+	}
+
+	if os.IsNotExist(err) {
+		return false
+	}
+
+	printErrorAndExit(0, err.Error())
+
+	return false
+}
diff --git a/development/examples/example1/1425.md b/development/examples/example1/1425.md
new file mode 100644
index 0000000..5a5c9b7
--- /dev/null
+++ b/development/examples/example1/1425.md
@@ -0,0 +1,166 @@
+
+---
+ID: 1425
+Title: null
+
+# Reference to other requirements
+References: null
+
+# Display, Functional, Performance, Printing, Report, Testing or Validation
+Type: null
+
+Alias: null
+
+Keywords:
+  - Requirement
+
+# First and last name of the authors as a list
+Author: 
+  - null
+
+# Proposed (The requirement has been requested by an authorized source.),
+# In Progress (A business analyst is actively working on crafting the requirement.), 
+# Drafted (The initial version of the requirement has been written.), 
+# Approved (The requirement has been analyzed, its impact on the project has been estimated, and it has been allocated to the baseline for a specific release. ),
+# Implemented (The code that implements the requirement has been designed, written, and unit tested. The requirement has been traced to the pertinent design and code elements. It’s now ready for review or other verification.), 
+# Verified (The requirement has satisfied its acceptance criteria, meaning that the correct functioning of the implemented requirement has been confirmed.), 
+# Deferred (An approved requirement is now planned for implementation in a later release.), 
+# Deleted (An approved requirement has been removed from the baseline.) or 
+# Rejected (The requirement was proposed but was never approved and is not planned for implementation in any upcoming release.)
+Status: "Proposed"
+  
+# Low, Medium, Hi
+Complexity: null
+# Low, Medium, Hi
+Difficulty: null
+# Nice to have, Low, Medium, Hi or Blocker
+Priority: null 
+Version: 0.0.1
+Milestone: null
+
+# 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), 
+# 8, 13, 20, 40, 100
+Estimation: 
+
+# The time required for this requirement
+# Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”.
+Time Spent:  
+
+# who is the source of the demand
+Source: null
+Created: 2022-06-18
+Last Update: null
+
+# The issues that are associated with this requirement
+Issues:
+  - Title: null
+    URL: null
+
+# the individual items as a list
+Items:
+  - ID: null
+    Name: null
+    # what is it, a image, font, legal information, access data, texts, decisions, etc.
+    Type: null
+    # does this belong to a group
+    group: null
+    Description: null
+    Delivery until: null
+    # when was the project items delivered and by whom?
+    Provided on: null
+    Provided by: null
+
+# https://gdpr-info.eu/art-30-gdpr/
+Privacy:
+  - ID: null
+
+    # Purpose of the data processing, 
+    # for example, shipping an order and handing it over to a shipping service provider.
+    Purposes: null
+
+    # More detailed description of the reason and process of data processing.
+    Description: null
+
+    # Who is responsible for data protection 
+    Contact: null
+
+    # But working with these categories might end up being a bad idea since doing so might 
+    # mean packing different things into one. This leads to either oversimplifications or 
+    # a lot of specifications within a category. It might be advisable to split some of them 
+    # up or to add additional ones to make them fit your business reality.
+    # Examples: Employees, Suppliers, Customers, Job applicants, Consultants, Visitors, Prospects, Contractors, Trainees
+    Affected Groups: null
+
+    # 
+    Category: 
+
+    # Example: 5 years from the payment of the salary   
+    Data Retention Period: null
+
+    # On what legal basis is the data collected
+    # Special legal regulation outside the GDPR
+    # Consent of the data subject (Art. 6 para. 1 a) DSG-VO)  use Consent field
+    # Collective agreement (e.g. company agreement, collective agreement)
+    # Establishment, performance or termination of an employment relationship (nationally regulated in the BDSG)
+    # Contract or initiation of a contract with the data subject (Art. 6 para. 1 b) DSG-VO.)
+    # Balancing of interests (Art. 6 para. 1 f) DSG-VO): Please name the overriding interests
+    Legal Basis: null
+
+    # “Consent” of the data subject refers to any freely given specific, informed and unambiguous indication of his or 
+    # her wishes in the form of a statement or other unambiguous affirmative act by which the data subject signifies 
+    # his or her agreement to personal data relating to him or her being processed.
+    Consent: null
+
+    # Where applicable, transfers of personal data to a third country or an international organisation, including 
+    # the identification of that third country or international organisation and, in the case of transfers referred 
+    # to in the second subparagraph of Article 49(1), the documentation of suitable safeguards;
+    Transfers: 
+
+    # Where possible, a general description of the technical and organisational 
+    # security measures referred to in Article 32(1).
+    TOM: null
+
+...
+
+### {{ .Title }} - {{ .ID }}
+
+#### Subheading
+
+- [ ] task 1
+- [ ] task 2
+
+
+{{ if .Items }}
+#### Items
+
+| ID                 | Name         |        Delivery until |                              Provided on |
+|--------------------|--------------|----------------------:|-----------------------------------------:|
+{{ range .Items 
+ }}| {{ .ID }} | {{ .Name }} | {{ .DeliveryUntil.Format "02.Jan" }} | {{ .ProvidedOn.Format "02.Jan"  }} | 
+{{ end }}
+
+{{ end }}
+
+{{ if .Privacy }}
+#### Privacy
+
+{{ range .Privacy }}
+{{ if .Purposes }}**{{ .Purposes }}** {{ end }}**({{ .ID }})** 
+
+{{ if .Description }} {{ .Description }}
+{{ end }}
+|                       |                            |
+|-----------------------|----------------------------|
+| Category              | {{ .Category }}            |  
+| Data Retention Period | {{ .DataRetentionPeriod }} |  
+| Legal Basis           | {{ .LegalBasis }}          |  
+| Transfers             | {{ .Transfers }}           |  
+{{ end }}
+
+{{ end }}
+
+
+
+
+
+
diff --git a/development/examples/example1/req1/1/.test1.md.swp b/development/examples/example1/req1/1/.test1.md.swp
new file mode 100644
index 0000000000000000000000000000000000000000..fcb2c249530807b835475db75edcee1505ab2982
GIT binary patch
literal 16384
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

literal 0
HcmV?d00001

diff --git a/development/examples/example1/req1/1/test1.md b/development/examples/example1/req1/1/test1.md
index a0356a5..a2b245f 100644
--- a/development/examples/example1/req1/1/test1.md
+++ b/development/examples/example1/req1/1/test1.md
@@ -40,7 +40,7 @@ Milestone: null
 
 # 0 (means that a task has already been completed), 1 (is a very small task), 2, 3, 5 (are rather smaller tasks), 
 # 8, 13, 20, 40, 100
-Estimation: 40
+Estimation: 13
 
 # The time required for this requirement
 # Valid time units are “ns”, “us” (or “µs”), “ms”, “s”, “m”, “h”.
@@ -51,6 +51,9 @@ Source: null
 Created: 2022-05-03
 Last Update: null
 
+Issues:
+    - Gitlab-ID: 1
+
 # the individual items as a list
 Items:
   - ID: null
@@ -172,5 +175,5 @@ test
 
 test
 
-
+@todo das ist ein todo
 
diff --git a/development/makefile/color.mk b/development/makefile/color.mk
new file mode 100644
index 0000000..2c3fe3d
--- /dev/null
+++ b/development/makefile/color.mk
@@ -0,0 +1,17 @@
+#############################################################################################
+#############################################################################################
+##
+## COLORS
+##
+#############################################################################################
+#############################################################################################
+
+BLACK        := $(shell tput -Txterm setaf 0)
+RED          := $(shell tput -Txterm setaf 1)
+GREEN        := $(shell tput -Txterm setaf 2)
+YELLOW       := $(shell tput -Txterm setaf 3)
+LIGHTPURPLE  := $(shell tput -Txterm setaf 4)
+PURPLE       := $(shell tput -Txterm setaf 5)
+BLUE         := $(shell tput -Txterm setaf 6)
+WHITE        := $(shell tput -Txterm setaf 7)
+RESET        := $(shell tput -Txterm sgr0)    
\ No newline at end of file
diff --git a/development/makefile/directories-default.mk b/development/makefile/directories-default.mk
new file mode 100644
index 0000000..5ea61d1
--- /dev/null
+++ b/development/makefile/directories-default.mk
@@ -0,0 +1,32 @@
+#############################################################################################
+#############################################################################################
+##
+## DIRECTORIES
+##
+#############################################################################################
+#############################################################################################
+
+APPLICATION_PATH     :=   $(PROJECT_ROOT)application/
+RESOURCE_PATH        :=   $(PROJECT_ROOT)application/resource/
+SOURCE_PATH          :=   $(PROJECT_ROOT)application/source/
+WEB_PATH             :=   $(PROJECT_ROOT)application/web/
+DEPLOYMENT_PATH      :=   $(PROJECT_ROOT)deployment/
+VENDOR_PATH          :=   $(PROJECT_ROOT)deployment/vendor/
+DEVELOPMENT_PATH     :=   $(PROJECT_ROOT)development/
+SCRIPTS_PATH         :=   $(PROJECT_ROOT)development/scripts/
+DOCUMENTATION_PATH   :=   $(PROJECT_ROOT)documentation/
+
+## Build path
+BUILD_PATH            =   $(DEPLOYMENT_PATH)build/
+
+PROJECT_DIRECTORIES :=  $(PROJECT_DIRECTORIES)  \
+	$(APPLICATION_PATH) \
+	$(RESOURCE_PATH) \
+	$(SOURCE_PATH) \
+	$(WEB_PATH) \
+	$(DEPLOYMENT_PATH) \
+	$(VENDOR_PATH) \
+	$(DEVELOPMENT_PATH) \
+	$(SCRIPTS_PATH) \
+	$(DOCUMENTATION_PATH)
+	
\ No newline at end of file
diff --git a/development/makefile/go.mk b/development/makefile/go.mk
new file mode 100644
index 0000000..2995536
--- /dev/null
+++ b/development/makefile/go.mk
@@ -0,0 +1,12 @@
+#############################################################################################
+#############################################################################################
+##
+## COMMANDS GO
+##
+#############################################################################################
+#############################################################################################
+
+# path and binaries
+GO               := go
+
+EXECUTABLES = $(EXECUTABLES:-) $(GO); 
diff --git a/development/makefile/license-agpl3.mk b/development/makefile/license-agpl3.mk
new file mode 100644
index 0000000..ff461e2
--- /dev/null
+++ b/development/makefile/license-agpl3.mk
@@ -0,0 +1,10 @@
+#############################################################################################
+#############################################################################################
+##
+## COLORS
+##
+#############################################################################################
+#############################################################################################
+
+LICENSETEXT   := AGPL 3.0
+COPYRIGHTTEXT := © schukai GmbH, Released under the $(LICENSETEXT) License.
\ No newline at end of file
diff --git a/development/makefile/output.mk b/development/makefile/output.mk
new file mode 100644
index 0000000..9aa5bb7
--- /dev/null
+++ b/development/makefile/output.mk
@@ -0,0 +1,54 @@
+#############################################################################################
+#############################################################################################
+##
+## COLORS
+##
+#############################################################################################
+#############################################################################################
+
+INFO    := $(GREEN)
+COMMENT := $(YELLOW)
+
+#############################################################################################
+#############################################################################################
+##
+## OUTPUT CONTROL AND STANDARD OUTPUTS
+##
+#############################################################################################
+#############################################################################################
+
+MARKER           := $(BLUE)[+]$(RESET)
+ERRORMARKER      := $(RED)[-]$(RESET)
+
+#############################################################################################
+#############################################################################################
+##
+## DEACTIVATE THE QUIET MODE BY OVERWRITING THE VALUE WITH SPACE
+##
+#############################################################################################
+#############################################################################################
+
+ifndef DEBUG
+    QUIET = @
+else
+    QUIET = 
+endif
+
+ifndef DONTOPENBROWSER
+    OPENBROWSER = false
+else
+    OPENBROWSER = true
+endif
+
+#############################################################################################
+#############################################################################################
+##
+## COMMANDS
+##
+#############################################################################################
+#############################################################################################
+
+ECHO             := @echo
+ECHOMARKER       := @echo "$(MARKER) $0"
+ECHOERRORMARKER  := @echo "$(ERRORMARKER) $0"
+
diff --git a/development/makefile/placeholder.mk b/development/makefile/placeholder.mk
new file mode 100644
index 0000000..d73fb40
--- /dev/null
+++ b/development/makefile/placeholder.mk
@@ -0,0 +1,9 @@
+#############################################################################################
+#############################################################################################
+##
+## PLACEHOLDER
+##
+#############################################################################################
+#############################################################################################
+
+COMPONENTSLUG := $(shell echo "$(COMPONENTNAME)" | tr '[:upper:]' '[:lower:]')
\ No newline at end of file
diff --git a/development/makefile/target-build-go.mk b/development/makefile/target-build-go.mk
new file mode 100644
index 0000000..605d1b6
--- /dev/null
+++ b/development/makefile/target-build-go.mk
@@ -0,0 +1,22 @@
+#############################################################################################
+#############################################################################################
+##
+## BUILD GO
+##
+#############################################################################################
+#############################################################################################
+
+.PHONY: compile
+## Compiling for every OS and Platform
+compile: next-patch-version
+	$(QUIET) $(ECHO) "Compiling for every OS and Platform"
+	$(QUIET) $(ECHO) "Version: $(PROJECTVERSION)"
+	$(QUIET) $(ECHO) "Build: $(PROJECTBUILDDATE)"
+ 
+	$(QUIET) cd  $(SOURCE_PATH) ; \
+			 GO111MODULE=on GOOS=linux GOARCH=arm $(GO) build -ldflags "-X main.version=$(PROJECTVERSION) -X main.build=$(PROJECTBUILDDATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-linux-arm ; \
+			 GOOS=linux GOARCH=amd64 $(GO) build -ldflags "-X main.version=$(PROJECTVERSION) -X main.build=$(PROJECTBUILDDATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-linux-amd64 ; \
+			 GOOS=linux GOARCH=arm64 $(GO) build -ldflags "-X main.version=$(PROJECTVERSION) -X main.build=$(PROJECTBUILDDATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-linux-arm64 ; \
+			 GOOS=linux GOARCH=386 $(GO) build -ldflags "-X main.version=$(PROJECTVERSION) -X main.build=$(PROJECTBUILDDATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-linux-386 ; \
+	         GOOS=windows GOARCH=amd64 $(GO) build -ldflags "-X main.version=$(PROJECTVERSION) -X main.build=$(PROJECTBUILDDATE)" -o $(BUILD_PATH)$(COMPONENTSLUG)-windows ; \
+ 			cd $(PROJECT_ROOT); 
diff --git a/development/makefile/target-deploy-tool.mk b/development/makefile/target-deploy-tool.mk
new file mode 100644
index 0000000..ea1a65e
--- /dev/null
+++ b/development/makefile/target-deploy-tool.mk
@@ -0,0 +1,18 @@
+#############################################################################################
+#############################################################################################
+##
+## DEPLOY TOOLS
+##
+#############################################################################################
+#############################################################################################
+
+.PHONY: deploy
+## compile and deplay to aws
+deploy: compile
+	$(QUIET) AWS_PROFILE=schukai find $(BUILD_PATH) -iname $(COMPONENTSLUG)-* -exec aws s3 cp {} s3://download.schukai.com/tools/$(COMPONENTSLUG)/ \;
+
+.PHONY: overview-to-aws
+## overview-to-aws
+overview-to-aws:
+	$(QUIET) AWS_PROFILE=schukai aws s3 cp $(WEB_PATH)/index.html s3://download.schukai.com/tools/$(COMPONENTSLUG)/
+	
\ No newline at end of file
diff --git a/development/makefile/target-git.mk b/development/makefile/target-git.mk
new file mode 100644
index 0000000..97f7d89
--- /dev/null
+++ b/development/makefile/target-git.mk
@@ -0,0 +1,47 @@
+#############################################################################################
+#############################################################################################
+##
+## GIT-TARGETS
+##
+#############################################################################################
+#############################################################################################
+
+EXECUTABLES = $(EXECUTABLES:-) uuidgen
+
+## Current Branch-GIT_TAG
+GIT_TAG := -
+
+## Git Commit GIT_MESSAGE for git-push
+GIT_MESSAGE := current status
+
+.PHONY: git-branch
+## create new branch (use GIT_TAG-Variable)
+git-branch:
+
+	$(QUIET) export BRANCH="b$(GIT_TAG)/$(shell uuidgen --random)" ; \
+	$(GIT) checkout -b $${BRANCH} && \
+	RESULT=$$($(GIT) push origin $$BRANCH 2>&1) && \
+    RESULT2=$$($(GIT) branch --set-upstream-to=origin/$$BRANCH $$BRANCH) && \
+	GITLABURL=$$(echo "$$RESULT" | tr '\n' '\#' | grep -o 'remote\:\s*https:\/\/gitlab\.schukai\.com[^ ]*' | cut -d " " -f2-9 | sed -e 's/^[ \t]*//') && \
+	if $(OPENBROWSER) ; then google-chrome --profile-directory="Default" $$GITLABURL ; fi
+
+.PHONY: git-to-master
+## git checkout master, fetch and merge
+git-to-master:
+	$(GIT) checkout master && $(GIT) fetch -pP && $(GIT) merge
+
+.PHONY: git-push-to-server
+## git push changes to server
+git-push-to-server:
+	$(QUIET) $(GIT) add -A
+	$(QUIET) $(GIT) commit -m"$(GIT_MESSAGE)"
+	$(QUIET) $(GIT) push
+
+.PHONY: git-push
+## git create branch and push changes to server
+git-push: git-branch git-push-to-server
+
+.PHONY: git-GIT_TAG
+## git create version GIT_TAG
+git-GIT_TAG:
+	$(QUIET) $(GIT) GIT_TAG -a "$(COMPONENT_VERSION)" -m "release $(COMPONENT_VERSION)"
diff --git a/development/makefile/target-help.mk b/development/makefile/target-help.mk
new file mode 100644
index 0000000..249d3fd
--- /dev/null
+++ b/development/makefile/target-help.mk
@@ -0,0 +1,45 @@
+#############################################################################################
+#############################################################################################
+##
+## HELP-TARGETS
+##
+#############################################################################################
+#############################################################################################
+
+# @see .PHONY https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html#Phony-Targets
+.DEFAULT_GOAL := help
+
+.PHONY: print
+print:
+	$(ECHO) "THIS_MAKEFILE:      $(THIS_MAKEFILE)"
+	$(ECHO) "THIS_MAKEFILE_PATH: $(THIS_MAKEFILE_PATH)"
+	$(ECHO) "PROJECT_ROOT:       $(PROJECT_ROOT)"
+
+# Add a comment to the public targets so that it appears
+# in this help Use two # characters for a help comment
+.PHONY: help
+help:
+	@printf "${COMMENT}Usage:${RESET}\n"
+	@printf " make [target] [arg=\"val\"...]\n\n"
+	@printf "${COMMENT}Available targets:${RESET}\n"
+	@awk '/^[a-zA-Z\-\\_0-9\.@]+:/ { \
+		helpMessage = match(lastLine, /^## (.*)/); \
+		if (helpMessage) { \
+			helpCommand = substr($$1, 0, index($$1, ":")); \
+			helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
+			printf " ${INFO}%-22s${RESET} %s\n", helpCommand, helpMessage; \
+		} \
+	} \
+	{ lastLine = $$0 }' $(MAKEFILE_LIST)
+	@printf "\n${COMMENT}Available arguments:${RESET}\n\n"
+	@awk '/^(([a-zA-Z\-\\_0-9\.@]+)\s=)/ { \
+		helpMessage = match(lastLine, /^## (.*)/); \
+		if (helpMessage) { \
+			helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
+			printf " ${INFO}%-22s${RESET} %s (Default: %s)\n", $$1, helpMessage, $$3; \
+		} \
+	} \
+	{ lastLine = $$0 }' $(MAKEFILE_LIST)
+
+
+
diff --git a/development/makefile/target-init.mk b/development/makefile/target-init.mk
new file mode 100644
index 0000000..bee5adb
--- /dev/null
+++ b/development/makefile/target-init.mk
@@ -0,0 +1,18 @@
+#############################################################################################
+#############################################################################################
+##
+## INIT-TARGETS
+##
+#############################################################################################
+#############################################################################################
+
+## @see .PHONY https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html#Phony-Targets
+.PHONY: init
+
+## init project	
+init:
+	$(QUIET) $(ECHO) "This is the target init"
+	K := $(foreach path,$(PROJECT_DIRECTORIES),\
+            $(shell mkir -p $(path)))
+	$(QUIET) $(TOUCH) $(RELEASE_FILE)
+	$(QUIET) $(ECHO) "Done"
diff --git a/development/makefile/terminal-check.mk b/development/makefile/terminal-check.mk
new file mode 100644
index 0000000..5db23c8
--- /dev/null
+++ b/development/makefile/terminal-check.mk
@@ -0,0 +1,13 @@
+#############################################################################################
+#############################################################################################
+##
+## TERMINAL CHECK
+##
+#############################################################################################
+#############################################################################################
+
+
+
+# Executable Programs the Installed be have to
+K := $(foreach exec,$(EXECUTABLES),\
+        $(if $(shell which $(exec)),some string,$(error "Missing $(exec) in PATH; please install")))
\ No newline at end of file
diff --git a/development/makefile/terminal.mk b/development/makefile/terminal.mk
new file mode 100644
index 0000000..f5d4bf0
--- /dev/null
+++ b/development/makefile/terminal.mk
@@ -0,0 +1,38 @@
+#############################################################################################
+#############################################################################################
+##
+## COMMANDS
+##
+#############################################################################################
+#############################################################################################
+
+# Use bash instead of sh
+## Sets the shell used
+SHELL            =  bash
+
+# path and binaries
+AWK              := awk
+CP               := cp
+CD               := cd
+KILL             := /bin/kill
+MV               := mv
+RM               := rm -f
+MKDIR            := mkdir -p
+SED              := sed
+FIND             := find
+SORT             := sort
+TOUCH            := touch
+WGET             := wget
+CHMOD            := chmod
+RSYNC            := rsync
+XARGS            := xargs
+GREP             := grep
+MAKE             := make
+GIT              := git
+LN               := ln -s
+TOUCH    	     := touch
+
+EXECUTABLES = $(EXECUTABLES:-) $(AWK) $(CP) $(KILL) $(MV) $(SED) $(FIND) $(SORT) $(TOUCH) $(WGET) $(CHMOD) $(RSYNC) $(XARGS) $(GREP) $(MAKE) $(GIT)
+
+
+    
\ No newline at end of file
diff --git a/development/makefile/version.mk b/development/makefile/version.mk
new file mode 100644
index 0000000..1810adb
--- /dev/null
+++ b/development/makefile/version.mk
@@ -0,0 +1,22 @@
+#############################################################################################
+#############################################################################################
+##
+## VERSIONS
+##
+#############################################################################################
+#############################################################################################
+
+VERSION_BIN 	     := version
+EXECUTABLES = $(EXECUTABLES:-) $(VERSION_BIN)
+
+RELEASEFILE := $(PROJECT_ROOT)release.json
+PROJECTVERSION := $(shell cat $(RELEASEFILE) | jq -r .version)
+PROJECTBUILDDATE := $(shell $(VERSION_BIN) date)
+
+
+.PHONY: next-patch-version
+## create next-patch-version
+next-patch-version:
+	$(QUIET) $(ECHO) "Creating next version"
+	$(QUIET) $(VERSION_BIN) patch --path $(RELEASEFILE) --selector "version"
+	$(QUIET) $(eval PROJECTVERSION := $(shell cat $(RELEASEFILE) | jq -r .version))
diff --git a/release.json b/release.json
new file mode 100644
index 0000000..4228926
--- /dev/null
+++ b/release.json
@@ -0,0 +1,3 @@
+{
+  "version": "1.0.21"
+}
\ No newline at end of file
-- 
GitLab