Update your servers semi-automatically.
diff --git a/resources/views/livewire/settings-dropdown.blade.php b/resources/views/livewire/settings-dropdown.blade.php
new file mode 100644
index 000000000..6a462a664
--- /dev/null
+++ b/resources/views/livewire/settings-dropdown.blade.php
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+
+
+
+
+
+ @if ($unreadCount > 0)
+
+ {{ $unreadCount > 9 ? '9+' : $unreadCount }}
+
+ @endif
+
+
+
+
+
+
+
+ @if ($unreadCount > 0)
+
+
+
+ {{ $unreadCount > 9 ? '9+' : $unreadCount }}
+
+
+ @else
+
+
+
+
+ Changelog
+
+ @endif
+
+
+
+
+
+
+ Appearance
+
+
+
+
+ Dark
+
+
+
+
+
+ Light
+
+
+
+
+
+ System
+
+
+
+
+ Width
+
+
+
+
+ Center
+
+
+
+
+
+ Full
+
+
+
+
+ Zoom
+
+
+
+
+ 100%
+
+
+
+
+
+ 90%
+
+
+
+
+
+
+
+ @if ($showWhatsNewModal)
+
+
+
+
+
+
+
+
+
+
+
+ Changelog
+
+
+ Stay up to date with the latest features and improvements.
+
+
+
+ @if (isDev())
+
+
+
+
+ Fetch Latest
+
+ @endif
+ @if ($unreadCount > 0)
+
+ Mark all as read
+
+ @endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @endif
+
diff --git a/routes/api.php b/routes/api.php
index d63e3ee0e..42de5213e 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -45,7 +45,10 @@ Route::group([
Route::get('/projects', [ProjectController::class, 'projects'])->middleware(['api.ability:read']);
Route::get('/projects/{uuid}', [ProjectController::class, 'project_by_uuid'])->middleware(['api.ability:read']);
+ Route::get('/projects/{uuid}/environments', [ProjectController::class, 'get_environments'])->middleware(['api.ability:read']);
Route::get('/projects/{uuid}/{environment_name_or_uuid}', [ProjectController::class, 'environment_details'])->middleware(['api.ability:read']);
+ Route::post('/projects/{uuid}/environments', [ProjectController::class, 'create_environment'])->middleware(['api.ability:write']);
+ Route::delete('/projects/{uuid}/environments/{environment_name_or_uuid}', [ProjectController::class, 'delete_environment'])->middleware(['api.ability:write']);
Route::post('/projects', [ProjectController::class, 'create_project'])->middleware(['api.ability:read']);
Route::patch('/projects/{uuid}', [ProjectController::class, 'update_project'])->middleware(['api.ability:write']);
diff --git a/templates/compose/activepieces.yaml b/templates/compose/activepieces.yaml
index 4c5b7bf6a..ff6b300c2 100644
--- a/templates/compose/activepieces.yaml
+++ b/templates/compose/activepieces.yaml
@@ -8,13 +8,13 @@ services:
activepieces:
image: "ghcr.io/activepieces/activepieces:latest"
environment:
- - SERVICE_FQDN_ACTIVEPIECES
+ - SERVICE_URL_ACTIVEPIECES
- AP_API_KEY=$SERVICE_PASSWORD_64_APIKEY
- AP_ENCRYPTION_KEY=$SERVICE_PASSWORD_ENCRYPTIONKEY
- AP_ENGINE_EXECUTABLE_PATH=${AP_ENGINE_EXECUTABLE_PATH:-dist/packages/engine/main.js}
- AP_ENVIRONMENT=${AP_ENVIRONMENT:-prod}
- AP_EXECUTION_MODE=${AP_EXECUTION_MODE:-UNSANDBOXED}
- - AP_FRONTEND_URL=${SERVICE_FQDN_ACTIVEPIECES}
+ - AP_FRONTEND_URL=${SERVICE_URL_ACTIVEPIECES}
- AP_JWT_SECRET=$SERVICE_PASSWORD_64_JWT
- AP_POSTGRES_DATABASE=${POSTGRES_DB:-activepieces}
- AP_POSTGRES_HOST=${POSTGRES_HOST:-postgres}
diff --git a/templates/compose/actualbudget.yaml b/templates/compose/actualbudget.yaml
index ce594f77e..3ec9ec7f8 100644
--- a/templates/compose/actualbudget.yaml
+++ b/templates/compose/actualbudget.yaml
@@ -8,7 +8,7 @@ services:
actual_server:
image: actualbudget/actual-server:latest
environment:
- - SERVICE_FQDN_ACTUAL_5006
+ - SERVICE_URL_ACTUAL_5006
- ACTUAL_LOGIN_METHOD=password
volumes:
- actual_data:/data
diff --git a/templates/compose/affine.yaml b/templates/compose/affine.yaml
index bde23429b..da3e27d5e 100644
--- a/templates/compose/affine.yaml
+++ b/templates/compose/affine.yaml
@@ -20,13 +20,13 @@ services:
options:
max-size: 1000m
environment:
- - SERVICE_FQDN_AFFINE_3010
+ - SERVICE_URL_AFFINE_3010
- AFFINE_CONFIG_PATH=/root/.affine/config
- REDIS_SERVER_HOST=redis
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-affine}
- NODE_ENV=production
- - AFFINE_SERVER_HOST=$SERVICE_FQDN_AFFINE
- - AFFINE_SERVER_EXTERNAL_URL=$SERVICE_FQDN_AFFINE
+ - AFFINE_SERVER_HOST=$SERVICE_URL_AFFINE
+ - AFFINE_SERVER_EXTERNAL_URL=$SERVICE_URL_AFFINE
- MAILER_HOST=${MAILER_HOST}
- MAILER_PORT=${MAILER_PORT}
- MAILER_USER=${MAILER_USER}
diff --git a/templates/compose/anythingllm.yaml b/templates/compose/anythingllm.yaml
index 5293a31a9..73ef57118 100644
--- a/templates/compose/anythingllm.yaml
+++ b/templates/compose/anythingllm.yaml
@@ -8,7 +8,7 @@ services:
anything-llm:
image: mintplexlabs/anythingllm
environment:
- - SERVICE_FQDN_ANYTHINGLLM_3001
+ - SERVICE_URL_ANYTHINGLLM_3001
- STORAGE_DIR=/app/server/storage
- DISABLE_TELEMETRY=${DISABLE_TELEMETRY:-true}
- PASSWORDLOWERCASE=${PASSWORDLOWERCASE:-1}
diff --git a/templates/compose/apprise-api.yaml b/templates/compose/apprise-api.yaml
index ea6a9dd63..c01944cd4 100644
--- a/templates/compose/apprise-api.yaml
+++ b/templates/compose/apprise-api.yaml
@@ -8,7 +8,7 @@ services:
apprise-api:
image: linuxserver/apprise-api:latest
environment:
- - SERVICE_FQDN_APPRISE_8000
+ - SERVICE_URL_APPRISE_8000
- PUID=1000
- PGID=1000
- TZ=UTC
diff --git a/templates/compose/appsmith.yaml b/templates/compose/appsmith.yaml
index 2255e0458..91e671779 100644
--- a/templates/compose/appsmith.yaml
+++ b/templates/compose/appsmith.yaml
@@ -7,7 +7,7 @@ services:
appsmith:
image: index.docker.io/appsmith/appsmith-ce:latest
environment:
- - SERVICE_FQDN_APPSMITH
+ - SERVICE_URL_APPSMITH
- APPSMITH_MAIL_ENABLED=${APPSMITH_MAIL_ENABLED:-false}
- APPSMITH_DISABLE_TELEMETRY=${APPSMITH_DISABLE_TELEMETRY:-false}
- APPSMITH_DISABLE_INTERCOM=${APPSMITH_DISABLE_INTERCOM:-true}
diff --git a/templates/compose/appwrite.yaml b/templates/compose/appwrite.yaml
index 91e85c55f..e138c47cf 100644
--- a/templates/compose/appwrite.yaml
+++ b/templates/compose/appwrite.yaml
@@ -20,7 +20,7 @@ services:
- appwrite-mariadb
- appwrite-redis
environment:
- - SERVICE_FQDN_APPWRITE=/
+ - SERVICE_URL_APPWRITE=/
- _APP_ENV=${_APP_ENV:-production}
- _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6}
- _APP_LOCALE=${_APP_LOCALE:-en}
@@ -128,7 +128,7 @@ services:
image: appwrite/console:6.0.13
container_name: appwrite-console
environment:
- - SERVICE_FQDN_APPWRITE=/console
+ - SERVICE_URL_APPWRITE=/console
appwrite-realtime:
image: appwrite/appwrite:1.7.4
@@ -138,7 +138,7 @@ services:
- appwrite-mariadb
- appwrite-redis
environment:
- - SERVICE_FQDN_APPWRITE=/v1/realtime
+ - SERVICE_URL_APPWRITE=/v1/realtime
- _APP_ENV=${_APP_ENV:-production}
- _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6}
- _APP_OPTIONS_ABUSE=${_APP_OPTIONS_ABUSE:-enabled}
diff --git a/templates/compose/argilla.yaml b/templates/compose/argilla.yaml
index e8567a878..de7f7c926 100644
--- a/templates/compose/argilla.yaml
+++ b/templates/compose/argilla.yaml
@@ -8,7 +8,7 @@ services:
argilla:
image: "argilla/argilla-server:v2.2.0"
environment:
- - SERVICE_FQDN_ARGILLA_6900
+ - SERVICE_URL_ARGILLA_6900
- ARGILLA_HOME_PATH=/var/lib/argilla
- ARGILLA_ELASTICSEARCH=http://elasticsearch:9200
- ARGILLA_DATABASE_URL=postgresql+asyncpg://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB}
diff --git a/templates/compose/audiobookshelf.yaml b/templates/compose/audiobookshelf.yaml
index 3df294ce8..9c7c76e88 100644
--- a/templates/compose/audiobookshelf.yaml
+++ b/templates/compose/audiobookshelf.yaml
@@ -8,7 +8,7 @@ services:
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest
environment:
- - SERVICE_FQDN_AUDIOBOOKSHELF_80
+ - SERVICE_URL_AUDIOBOOKSHELF_80
- TZ=${TIMEZONE:-America/Toronto}
volumes:
- audiobookshelf-audiobooks:/audiobooks
diff --git a/templates/compose/authentik.yaml b/templates/compose/authentik.yaml
index 06637d88b..dab08ec8e 100644
--- a/templates/compose/authentik.yaml
+++ b/templates/compose/authentik.yaml
@@ -10,7 +10,7 @@ services:
restart: unless-stopped
command: server
environment:
- - SERVICE_FQDN_AUTHENTIKSERVER_9000
+ - SERVICE_URL_AUTHENTIKSERVER_9000
- AUTHENTIK_REDIS__HOST=${REDIS_HOST:-redis}
- AUTHENTIK_POSTGRESQL__HOST=${POSTGRES_HOST:-postgresql}
- AUTHENTIK_POSTGRESQL__USER=${SERVICE_USER_POSTGRESQL}
diff --git a/templates/compose/azimutt.yaml b/templates/compose/azimutt.yaml
index 4b498e423..1e247875f 100644
--- a/templates/compose/azimutt.yaml
+++ b/templates/compose/azimutt.yaml
@@ -54,8 +54,8 @@ services:
image: bytemark/smtp:latest
platform: linux/amd64
environment:
- - SERVICE_FQDN_SMTP
- - RELAY_HOST=$SERVICE_FQDN_SMTP
+ - SERVICE_URL_SMTP
+ - RELAY_HOST=$SERVICE_URL_SMTP
- RELAY_PORT=${RELAY_PORT:-587}
- RELAY_USERNAME=$SERVICE_EMAIL_SMTP
- RELAY_PASSWORD=$SERVICE_PASSWORD_SMTP
@@ -75,7 +75,7 @@ services:
minio:
condition: service_healthy
environment:
- - SERVICE_FQDN_AZIMUTT_4000
+ - SERVICE_URL_AZIMUTT_4000
- SENTRY=false
- PHX_SERVER=true
- PHX_HOST=$SERVICE_URL_AZIMUTT
@@ -92,7 +92,7 @@ services:
- S3_KEY_ID=${S3_KEY_ID}
- S3_KEY_SECRET=${S3_KEY_SECRET}
- EMAIL_ADAPTER=${EMAIL_ADAPTER:-smtp}
- - SMTP_RELAY=$SERVICE_FQDN_SMTP
+ - SMTP_RELAY=$SERVICE_URL_SMTP
- SMTP_USERNAME=$SERVICE_EMAIL_SMTP
- SMTP_PASSWORD=$SERVICE_PASSWORD_SMTP
- SMTP_PORT=${SMTP_PORT:-587}
diff --git a/templates/compose/babybuddy.yaml b/templates/compose/babybuddy.yaml
index f2dace249..05c515cd0 100644
--- a/templates/compose/babybuddy.yaml
+++ b/templates/compose/babybuddy.yaml
@@ -7,11 +7,11 @@ services:
babybuddy:
image: lscr.io/linuxserver/babybuddy:latest
environment:
- - SERVICE_FQDN_BABYBUDDY
+ - SERVICE_URL_BABYBUDDY
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
- - CSRF_TRUSTED_ORIGINS=$SERVICE_FQDN_BABYBUDDY
+ - CSRF_TRUSTED_ORIGINS=$SERVICE_URL_BABYBUDDY
volumes:
- babybuddy-config:/config
healthcheck:
diff --git a/templates/compose/beszel.yaml b/templates/compose/beszel.yaml
index 639cb7f36..d0907f94b 100644
--- a/templates/compose/beszel.yaml
+++ b/templates/compose/beszel.yaml
@@ -10,7 +10,7 @@ services:
beszel:
image: henrygd/beszel:latest
environment:
- - SERVICE_FQDN_BESZEL_8090
+ - SERVICE_URL_BESZEL_8090
volumes:
- beszel_data:/beszel_data
diff --git a/templates/compose/bluesky-pds.yaml b/templates/compose/bluesky-pds.yaml
index 679eb8e79..099380826 100644
--- a/templates/compose/bluesky-pds.yaml
+++ b/templates/compose/bluesky-pds.yaml
@@ -1,34 +1,64 @@
-# ignore: true
# documentation: https://github.com/bluesky-social/pds
-# slogan: A social network for the decentralized web
-# tags: pds, bluesky, social, network, decentralized
-# logo:
+# slogan: Bluesky PDS (Personal Data Server)
+# tags: bluesky, pds, platform
+# logo: svgs/bluesky.svg
# port: 3000
services:
pds:
- image: ghcr.io/bluesky-social/pds:0.4
+ image: 'ghcr.io/bluesky-social/pds:latest'
volumes:
- - pds-data:/pds
+ - ./pds-data:/pds
environment:
- - SERVICE_FQDN_PDS_3000
- - PDS_JWT_SECRET=${SERVICE_BASE64_PDS}
- - PDS_ADMIN_PASSWORD=${SERVICE_PASSWORD_PDS}
- - PDS_ADMIN_EMAIL=${PDS_ADMIN_EMAIL:-admin@example.com}
- - PDS_DATADIR=${PDS_DATADIR:-/pds}
- - PDS_BLOBSTORE_DISK_LOCATION=${PDS_DATADIR:-/pds}/blocks
- - PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-52428800}
+ - SERVICE_URL_PDS_3000
- PDS_HOSTNAME=${SERVICE_URL_PDS}
- - PDS_DID_PLC_URL=https://plc.directory
- - PDS_BSKY_APP_VIEW_URL=https://api.bsky.app
- - PDS_BSKY_APP_VIEW_DID=did:web:api.bsky.app
- - PDS_REPORT_SERVICE_URL=https://mod.bsky.app
- - PDS_REPORT_SERVICE_DID=did:plc:ar7c4by46qjdydhdevvrndac
- - PDS_CRAWLERS=https://bsky.network
+ - PDS_JWT_SECRET=${SERVICE_PASSWORD_JWT_SECRET}
+ - PDS_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
+ - PDS_ADMIN_EMAIL=${SERVICE_EMAIL_ADMIN}
+ - PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX}
+ - PDS_DATA_DIRECTORY=${PDS_DATA_DIRECTORY:-/pds}
+ - PDS_BLOBSTORE_DISK_LOCATION=${PDS_DATA_DIRECTORY:-/pds}/blocks
+ - PDS_BLOB_UPLOAD_LIMIT=${PDS_BLOB_UPLOAD_LIMIT:-52428800}
+ - PDS_DID_PLC_URL=${PDS_DID_PLC_URL:-https://plc.directory}
+ - PDS_BSKY_APP_VIEW_URL=${PDS_BSKY_APP_VIEW_URL:-https://api.bsky.app}
+ - PDS_BSKY_APP_VIEW_DID=${PDS_BSKY_APP_VIEW_DID:-did:web:api.bsky.app}
+ - PDS_REPORT_SERVICE_URL=${PDS_REPORT_SERVICE_URL:-https://mod.bsky.app/xrpc/com.atproto.moderation.createReport}
+ - PDS_REPORT_SERVICE_DID=${PDS_REPORT_SERVICE_DID:-did:plc:ar7c4by46qjdydhdevvrndac}
+ - PDS_CRAWLERS=${PDS_CRAWLERS:-https://bsky.network}
- LOG_ENABLED=${LOG_ENABLED:-true}
- - PDS_EMAIL_SMTP_URL=${PDS_EMAIL_SMTP_URL:-smtp://localhost:8025}
- - PDS_EMAIL_FROM_ADDRESS=${PDS_EMAIL_FROM_ADDRESS:-admin@example.com}
- - PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=${SERVICE_HEX_32_ROTATIONKEY}
+
+ command: >
+ sh -c '
+ echo "Installing curl, bash, and pdsadmin..."
+ apk add --no-cache curl bash && \
+ curl -o /usr/local/bin/pdsadmin.sh https://raw.githubusercontent.com/bluesky-social/pds/main/pdsadmin.sh && \
+ chmod +x /usr/local/bin/pdsadmin.sh && \
+ ln -sf /usr/local/bin/pdsadmin.sh /usr/local/bin/pdsadmin
+
+ echo "Generating /pds/pds.env..."
+ printf "%s\n" \
+ "SERVICE_FQDN_PDS_3000=$${SERVICE_FQDN_PDS_3000}" \
+ "PDS_HOSTNAME=$${PDS_HOSTNAME}" \
+ "PDS_JWT_SECRET=$${PDS_JWT_SECRET}" \
+ "PDS_ADMIN_PASSWORD=$${PDS_ADMIN_PASSWORD}" \
+ "PDS_ADMIN_EMAIL=$${PDS_ADMIN_EMAIL}" \
+ "PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX=$${PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX}" \
+ "PDS_DATA_DIRECTORY=$${PDS_DATA_DIRECTORY}" \
+ "PDS_BLOBSTORE_DISK_LOCATION=$${PDS_DATA_DIRECTORY}/blocks" \
+ "PDS_BLOB_UPLOAD_LIMIT=$${PDS_BLOB_UPLOAD_LIMIT}" \
+ "PDS_DID_PLC_URL=$${PDS_DID_PLC_URL}" \
+ "PDS_BSKY_APP_VIEW_URL=$${PDS_BSKY_APP_VIEW_URL}" \
+ "PDS_BSKY_APP_VIEW_DID=$${PDS_BSKY_APP_VIEW_DID}" \
+ "PDS_REPORT_SERVICE_URL=$${PDS_REPORT_SERVICE_URL}" \
+ "PDS_REPORT_SERVICE_DID=$${PDS_REPORT_SERVICE_DID}" \
+ "PDS_CRAWLERS=$${PDS_CRAWLERS}" \
+ "LOG_ENABLED=$${LOG_ENABLED}" \
+ > /pds/pds.env
+
+ echo "Launching PDS..."
+ exec node --enable-source-maps index.js
+ '
+
healthcheck:
test: ["CMD", "wget", "--spider", "http://127.0.0.1:3000/xrpc/_health"]
interval: 2s
diff --git a/templates/compose/bookstack.yaml b/templates/compose/bookstack.yaml
index dd9719471..0a9b36a8d 100644
--- a/templates/compose/bookstack.yaml
+++ b/templates/compose/bookstack.yaml
@@ -8,8 +8,8 @@ services:
bookstack:
image: lscr.io/linuxserver/bookstack:latest
environment:
- - SERVICE_FQDN_BOOKSTACK_80
- - APP_URL=${SERVICE_FQDN_BOOKSTACK}
+ - SERVICE_URL_BOOKSTACK_80
+ - APP_URL=${SERVICE_URL_BOOKSTACK}
- APP_KEY=${SERVICE_PASSWORD_APPKEY}
- PUID=1000
- PGID=1000
diff --git a/templates/compose/browserless.yaml b/templates/compose/browserless.yaml
index 703aac636..c3a373603 100644
--- a/templates/compose/browserless.yaml
+++ b/templates/compose/browserless.yaml
@@ -8,7 +8,7 @@ services:
browserless:
image: ghcr.io/browserless/chromium
environment:
- - SERVICE_FQDN_BROWSERLESS_3000
+ - SERVICE_URL_BROWSERLESS_3000
- TOKEN=$SERVICE_PASSWORD_BROWSERLESS
expose:
- 3000
diff --git a/templates/compose/budge.yaml b/templates/compose/budge.yaml
index 93f58da3c..395c07634 100644
--- a/templates/compose/budge.yaml
+++ b/templates/compose/budge.yaml
@@ -7,7 +7,7 @@ services:
budge:
image: lscr.io/linuxserver/budge:latest
environment:
- - SERVICE_FQDN_BUDGE
+ - SERVICE_URL_BUDGE
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
diff --git a/templates/compose/budibase.yaml b/templates/compose/budibase.yaml
index 1364e7137..1ffa74e25 100644
--- a/templates/compose/budibase.yaml
+++ b/templates/compose/budibase.yaml
@@ -82,7 +82,7 @@ services:
proxy-service:
image: budibase/proxy
environment:
- - SERVICE_FQDN_BUDIBASE_10000
+ - SERVICE_URL_BUDIBASE_10000
- PROXY_RATE_LIMIT_WEBHOOKS_PER_SECOND=10
- PROXY_RATE_LIMIT_API_PER_SECOND=20
- APPS_UPSTREAM_URL=http://app-service:4002
diff --git a/templates/compose/bugsink.yaml b/templates/compose/bugsink.yaml
index 787852ff8..0de5eb4b4 100644
--- a/templates/compose/bugsink.yaml
+++ b/templates/compose/bugsink.yaml
@@ -31,8 +31,8 @@ services:
environment:
- SECRET_KEY=$SERVICE_PASSWORD_64_BUGSINK
- CREATE_SUPERUSER=admin:$SERVICE_PASSWORD_BUGSINK
- - SERVICE_FQDN_BUGSINK_8000
- - BASE_URL=$SERVICE_FQDN_BUGSINK_8000
+ - SERVICE_URL_BUGSINK_8000
+ - BASE_URL=$SERVICE_URL_BUGSINK_8000
- DATABASE_URL=mysql://${SERVICE_USER_BUGSINK}:$SERVICE_PASSWORD_BUGSINK@mysql:3306/${MYSQL_DATABASE:-bugsink}
depends_on:
mysql:
diff --git a/templates/compose/calcom.yaml b/templates/compose/calcom.yaml
index ddf256152..9f17fbd60 100644
--- a/templates/compose/calcom.yaml
+++ b/templates/compose/calcom.yaml
@@ -12,14 +12,14 @@ services:
# Some variables still uses Calcom previous name, Calendso
#
# Full list https://github.com/calcom/cal.com/blob/main/.env.example
- - SERVICE_FQDN_CALCOM_3000
+ - SERVICE_URL_CALCOM_3000
- NEXT_PUBLIC_LICENSE_CONSENT=agree
- NODE_ENV=production
- - NEXT_PUBLIC_WEBAPP_URL=${SERVICE_FQDN_CALCOM}
- - NEXT_PUBLIC_API_V2_URL=${SERVICE_FQDN_CALCOM}/api/v2
+ - NEXT_PUBLIC_WEBAPP_URL=${SERVICE_URL_CALCOM}
+ - NEXT_PUBLIC_API_V2_URL=${SERVICE_URL_CALCOM}/api/v2
# https://next-auth.js.org/configuration/options#nextauth_url
# From https://github.com/calcom/docker?tab=readme-ov-file#important-run-time-variables, it should be ${NEXT_PUBLIC_WEBAPP_URL}/api/auth
- - NEXTAUTH_URL=${SERVICE_FQDN_CALCOM}/api/auth
+ - NEXTAUTH_URL=${SERVICE_URL_CALCOM}/api/auth
# It is highly recommended that the NEXTAUTH_SECRET must be overridden and very unique
# Use `openssl rand -base64 32` to generate a key
- NEXTAUTH_SECRET=${SERVICE_BASE64_CALCOMSECRET}
@@ -47,7 +47,7 @@ services:
- EMAIL_SERVER_PASSWORD=${EMAIL_SERVER_PASSWORD}
- NEXT_PUBLIC_APP_NAME="Cal.com"
# More info on ALLOWED_HOSTNAMES https://github.com/calcom/cal.com/issues/12201
- - ALLOWED_HOSTNAMES=["${SERVICE_FQDN_CALCOM}"]
+ - ALLOWED_HOSTNAMES=["${SERVICE_URL_CALCOM}"]
depends_on:
- postgresql
postgresql:
diff --git a/templates/compose/calibre-web.yaml b/templates/compose/calibre-web.yaml
index 0ce4c174b..0132e3d91 100644
--- a/templates/compose/calibre-web.yaml
+++ b/templates/compose/calibre-web.yaml
@@ -8,7 +8,7 @@ services:
calibre-web:
image: lscr.io/linuxserver/calibre-web:latest
environment:
- - SERVICE_FQDN_CALIBRE_8083
+ - SERVICE_URL_CALIBRE_8083
- PUID=1000
- PGID=1000
- TZ=${TZ:-Etc/UTC}
diff --git a/templates/compose/castopod.yaml b/templates/compose/castopod.yaml
index 0c55bb4cb..2e20355f5 100644
--- a/templates/compose/castopod.yaml
+++ b/templates/compose/castopod.yaml
@@ -10,12 +10,12 @@ services:
volumes:
- castopod-media:/var/www/castopod/public/media
environment:
- - SERVICE_FQDN_CASTOPOD_8000
+ - SERVICE_URL_CASTOPOD_8000
- MYSQL_DATABASE=castopod
- MYSQL_USER=$SERVICE_USER_MYSQL
- MYSQL_PASSWORD=$SERVICE_PASSWORD_MYSQL
- CP_DISABLE_HTTPS=${CP_DISABLE_HTTPS:-1}
- - CP_BASEURL=$SERVICE_FQDN_CASTOPOD
+ - CP_BASEURL=$SERVICE_URL_CASTOPOD
- CP_ANALYTICS_SALT=$SERVICE_REALBASE64_64_SALT
- CP_CACHE_HANDLER=redis
- CP_REDIS_HOST=redis
diff --git a/templates/compose/changedetection.yaml b/templates/compose/changedetection.yaml
index 721bebb42..4ccd6ef20 100644
--- a/templates/compose/changedetection.yaml
+++ b/templates/compose/changedetection.yaml
@@ -10,8 +10,8 @@ services:
volumes:
- changedetection-data:/datastore
environment:
- - SERVICE_FQDN_CHANGEDETECTION_5000
- - BASE_URL=${SERVICE_FQDN_CHANGEDETECTION}
+ - SERVICE_URL_CHANGEDETECTION_5000
+ - BASE_URL=${SERVICE_URL_CHANGEDETECTION}
- PUID=${PUID:-1000}
- PGID=${PGID:-1000}
- PLAYWRIGHT_DRIVER_URL=${PLAYWRIGHT_DRIVER_URL:-ws://browser-sockpuppet-chrome:3000}
diff --git a/templates/compose/chaskiq.yaml b/templates/compose/chaskiq.yaml
index ce21644ad..67deeef44 100644
--- a/templates/compose/chaskiq.yaml
+++ b/templates/compose/chaskiq.yaml
@@ -8,13 +8,13 @@ services:
chaskiq:
image: chaskiq/chaskiq:latest
environment:
- - SERVICE_FQDN_CHASKIQ_3000
+ - SERVICE_URL_CHASKIQ_3000
- REDIS_URL=redis://redis:6379/
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/${POSTGRES_DB:-chaskiq}
- POSTGRES_USER=$SERVICE_USER_POSTGRES
- SERVICE_URL=${SERVICE_URL_CHASKIQ}
- - HOST=${SERVICE_FQDN_CHASKIQ_3000}
- - ASSET_HOST=${SERVICE_FQDN_CHASKIQ_3000}
+ - HOST=${SERVICE_URL_CHASKIQ_3000}
+ - ASSET_HOST=${SERVICE_URL_CHASKIQ_3000}
- WS=wss://${SERVICE_URL_CHASKIQ}/cable
- SNS_CONFIGURATION_SET=metrics
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-}
@@ -80,8 +80,8 @@ services:
- REDIS_URL=redis://redis:6379/
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/${POSTGRES_DB:-chaskiq}
- POSTGRES_USER=$SERVICE_USER_POSTGRES
- - HOST=${SERVICE_FQDN_CHASKIQ_3000}
- - ASSET_HOST=${SERVICE_FQDN_CHASKIQ_3000}
+ - HOST=${SERVICE_URL_CHASKIQ_3000}
+ - ASSET_HOST=${SERVICE_URL_CHASKIQ_3000}
- WS=wss://${SERVICE_URL_CHASKIQ}/cable
- SNS_CONFIGURATION_SET=metrics
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:-}
diff --git a/templates/compose/chatwoot.yaml b/templates/compose/chatwoot.yaml
index 900d3354b..84a5545c4 100644
--- a/templates/compose/chatwoot.yaml
+++ b/templates/compose/chatwoot.yaml
@@ -11,9 +11,9 @@ services:
- postgres
- redis
environment:
- - SERVICE_FQDN_CHATWOOT_3000
+ - SERVICE_URL_CHATWOOT_3000
- SECRET_KEY_BASE=$SERVICE_PASSWORD_CHATWOOT
- - FRONTEND_URL=${SERVICE_FQDN_CHATWOOT}
+ - FRONTEND_URL=${SERVICE_URL_CHATWOOT}
- DEFAULT_LOCALE=${CHATWOOT_DEFAULT_LOCALE}
- FORCE_SSL=${FORCE_SSL:-false}
- ENABLE_ACCOUNT_SIGNUP=${ENABLE_ACCOUNT_SIGNUP:-false}
@@ -54,7 +54,7 @@ services:
- redis
environment:
- SECRET_KEY_BASE=$SERVICE_PASSWORD_CHATWOOT
- - FRONTEND_URL=${SERVICE_FQDN_CHATWOOT}
+ - FRONTEND_URL=${SERVICE_URL_CHATWOOT}
- DEFAULT_LOCALE=${CHATWOOT_DEFAULT_LOCALE}
- FORCE_SSL=${FORCE_SSL:-false}
- ENABLE_ACCOUNT_SIGNUP=${ENABLE_ACCOUNT_SIGNUP:-false}
diff --git a/templates/compose/checkmate.yaml b/templates/compose/checkmate.yaml
index 91018b3b9..b8cd8dfd2 100644
--- a/templates/compose/checkmate.yaml
+++ b/templates/compose/checkmate.yaml
@@ -8,14 +8,14 @@ services:
client:
image: bluewaveuptime/uptime_client:latest
environment:
- - SERVICE_FQDN_CHECKMATE_80
- - UPTIME_APP_API_BASE_URL=${SERVICE_FQDN_CHECKMATESERVER_5000}/api/v1
+ - SERVICE_URL_CHECKMATE_80
+ - UPTIME_APP_API_BASE_URL=${SERVICE_URL_CHECKMATESERVER_5000}/api/v1
depends_on:
- server
server:
image: bluewaveuptime/uptime_server:latest
environment:
- - SERVICE_FQDN_CHECKMATESERVER_5000
+ - SERVICE_URL_CHECKMATESERVER_5000
- JWT_SECRET=${SERVICE_PASSWORD_64_JWT}
- REFRESH_TOKEN_SECRET=${SERVICE_PASSWORD_64_REFRESH}
- SYSTEM_EMAIL_ADDRESS=${SYSTEM_EMAIL_ADDRESS:-test@example.com}
diff --git a/templates/compose/chroma.yaml b/templates/compose/chroma.yaml
index 11029113b..21e8672bb 100644
--- a/templates/compose/chroma.yaml
+++ b/templates/compose/chroma.yaml
@@ -10,7 +10,7 @@ services:
volumes:
- chroma-data:/data
environment:
- - SERVICE_FQDN_CHROMA_8000
+ - SERVICE_URL_CHROMA_8000
- IS_PERSISTENT=TRUE
- PERSIST_DIRECTORY=/data
healthcheck:
diff --git a/templates/compose/classicpress-with-mariadb.yaml b/templates/compose/classicpress-with-mariadb.yaml
index bc340b723..7e94bb345 100644
--- a/templates/compose/classicpress-with-mariadb.yaml
+++ b/templates/compose/classicpress-with-mariadb.yaml
@@ -9,7 +9,7 @@ services:
volumes:
- classicpress-files:/var/www/html
environment:
- - SERVICE_FQDN_CLASSICPRESS
+ - SERVICE_URL_CLASSICPRESS
- CLASSICPRESS_DB_HOST=mariadb
- CLASSICPRESS_DB_USER=$SERVICE_USER_CLASSICPRESS
- CLASSICPRESS_DB_PASSWORD=$SERVICE_PASSWORD_CLASSICPRESS
diff --git a/templates/compose/classicpress-with-mysql.yaml b/templates/compose/classicpress-with-mysql.yaml
index 6d3156294..d25c592b7 100644
--- a/templates/compose/classicpress-with-mysql.yaml
+++ b/templates/compose/classicpress-with-mysql.yaml
@@ -9,7 +9,7 @@ services:
volumes:
- classicpress-files:/var/www/html
environment:
- - SERVICE_FQDN_CLASSICPRESS
+ - SERVICE_URL_CLASSICPRESS
- CLASSICPRESS_DB_HOST=mysql
- CLASSICPRESS_DB_USER=$SERVICE_USER_CLASSICPRESS
- CLASSICPRESS_DB_PASSWORD=$SERVICE_PASSWORD_CLASSICPRESS
diff --git a/templates/compose/classicpress-without-database.yaml b/templates/compose/classicpress-without-database.yaml
index f16ec3b81..2628397de 100644
--- a/templates/compose/classicpress-without-database.yaml
+++ b/templates/compose/classicpress-without-database.yaml
@@ -9,7 +9,7 @@ services:
volumes:
- classicpress-files:/var/www/html
environment:
- - SERVICE_FQDN_CLASSICPRESS
+ - SERVICE_URL_CLASSICPRESS
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1"]
interval: 2s
diff --git a/templates/compose/cloudbeaver.yaml b/templates/compose/cloudbeaver.yaml
index a21b00453..23ea54b64 100644
--- a/templates/compose/cloudbeaver.yaml
+++ b/templates/compose/cloudbeaver.yaml
@@ -10,7 +10,7 @@ services:
volumes:
- cloudbeaver-data:/opt/cloudbeaver/workspace
environment:
- - SERVICE_FQDN_CLOUDBEAVER_8978
+ - SERVICE_URL_CLOUDBEAVER_8978
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8978/"]
interval: 5s
diff --git a/templates/compose/code-server.yaml b/templates/compose/code-server.yaml
index 1a68d623f..b64a37498 100644
--- a/templates/compose/code-server.yaml
+++ b/templates/compose/code-server.yaml
@@ -8,7 +8,7 @@ services:
code-server:
image: lscr.io/linuxserver/code-server:latest
environment:
- - SERVICE_FQDN_CODESERVER_8443
+ - SERVICE_URL_CODESERVER_8443
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
diff --git a/templates/compose/coder.yaml b/templates/compose/coder.yaml
index 717cff03c..3fba8c248 100644
--- a/templates/compose/coder.yaml
+++ b/templates/compose/coder.yaml
@@ -9,10 +9,10 @@ services:
coder:
image: ghcr.io/coder/coder:latest
environment:
- - SERVICE_FQDN_CODER_7080
+ - SERVICE_URL_CODER_7080
- CODER_PG_CONNECTION_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@coder-database/${POSTGRES_DB:-coder-db}?sslmode=disable
- CODER_HTTP_ADDRESS=0.0.0.0:7080
- - CODER_ACCESS_URL=${SERVICE_FQDN_CODER}
+ - CODER_ACCESS_URL=${SERVICE_URL_CODER}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
diff --git a/templates/compose/codimd.yaml b/templates/compose/codimd.yaml
index c23b9a429..be4842a84 100644
--- a/templates/compose/codimd.yaml
+++ b/templates/compose/codimd.yaml
@@ -8,7 +8,7 @@ services:
codimd:
image: nabo.codimd.dev/hackmdio/hackmd:latest
environment:
- - SERVICE_FQDN_CODIMD_3000
+ - SERVICE_URL_CODIMD_3000
- CMD_DOMAIN=${SERVICE_URL_CODIMD}
- CMD_PROTOCOL_USESSL=${CMD_PROTOCOL_USESSL:-false}
- CMD_SESSION_SECRET=${SERVICE_PASSWORD_SESSIONSECRET}
diff --git a/templates/compose/convertx.yml b/templates/compose/convertx.yml
index 9495b0aae..c1492366e 100644
--- a/templates/compose/convertx.yml
+++ b/templates/compose/convertx.yml
@@ -8,7 +8,7 @@ services:
convertx:
image: ghcr.io/c4illin/convertx:latest
environment:
- - SERVICE_FQDN_CONVERTX
+ - SERVICE_URL_CONVERTX
- ACCOUNT_REGISTRATION=${ACCOUNT_REGISTRATION:-false}
- HTTP_ALLOWED=${HTTP_ALLOWED:-true}
- ALLOW_UNAUTHENTICATED=${ALLOW_UNAUTHENTICATED:-false}
diff --git a/templates/compose/convex.yaml b/templates/compose/convex.yaml
index cdaf985bb..3f6892b32 100644
--- a/templates/compose/convex.yaml
+++ b/templates/compose/convex.yaml
@@ -10,17 +10,17 @@ services:
volumes:
- data:/convex/data
environment:
- - SERVICE_FQDN_BACKEND_3210
+ - SERVICE_URL_BACKEND_3210
- INSTANCE_NAME=${INSTANCE_NAME:-self-hosted-convex}
- INSTANCE_SECRET=${SERVICE_HEX_32_SECRET}
- CONVEX_RELEASE_VERSION_DEV=${CONVEX_RELEASE_VERSION_DEV:-}
- ACTIONS_USER_TIMEOUT_SECS=${ACTIONS_USER_TIMEOUT_SECS:-}
- - CONVEX_CLOUD_ORIGIN=${SERVICE_FQDN_CONVEX_3210}
- - CONVEX_SITE_ORIGIN=${SERVICE_FQDN_CONVEX_3211}
+ - CONVEX_CLOUD_ORIGIN=${SERVICE_URL_CONVEX_3210}
+ - CONVEX_SITE_ORIGIN=${SERVICE_URL_CONVEX_3211}
- DATABASE_URL=${DATABASE_URL:-}
- DISABLE_BEACON=${DISABLE_BEACON:-}
- REDACT_LOGS_TO_CLIENT=${REDACT_LOGS_TO_CLIENT:-}
- - CONVEX_SELF_HOSTED_URL=${SERVICE_FQDN_CONVEX_6791}
+ - CONVEX_SELF_HOSTED_URL=${SERVICE_URL_CONVEX_6791}
healthcheck:
test: curl -f http://127.0.0.1:3210/version
interval: 5s
@@ -29,8 +29,8 @@ services:
dashboard:
image: ghcr.io/get-convex/convex-dashboard:5143fec81f146ca67495c12c6b7a15c5802c37e2
environment:
- - SERVICE_FQDN_CONVEX_6791
- - NEXT_PUBLIC_DEPLOYMENT_URL=$SERVICE_FQDN_BACKEND_3210
+ - SERVICE_URL_CONVEX_6791
+ - NEXT_PUBLIC_DEPLOYMENT_URL=$SERVICE_URL_BACKEND_3210
depends_on:
backend:
condition: service_healthy
diff --git a/templates/compose/cryptgeon.yaml b/templates/compose/cryptgeon.yaml
index 942b1601c..1cd8e075e 100644
--- a/templates/compose/cryptgeon.yaml
+++ b/templates/compose/cryptgeon.yaml
@@ -8,7 +8,7 @@ services:
app:
image: cupcakearmy/cryptgeon:latest
environment:
- - SERVICE_FQDN_CRYPTGEON_8000
+ - SERVICE_URL_CRYPTGEON_8000
- SIZE_LIMIT=${SIZE_LIMIT:-4 MiB}
- MAX_VIEWS=${MAX_VIEWS:-100}
- MAX_EXPIRATION=${MAX_EXPIRATION:-360}
diff --git a/templates/compose/cyberchef.yaml b/templates/compose/cyberchef.yaml
index cc7b2b85d..40d9f56ca 100644
--- a/templates/compose/cyberchef.yaml
+++ b/templates/compose/cyberchef.yaml
@@ -9,7 +9,7 @@ services:
image: ghcr.io/gchq/cyberchef:latest
platform: linux/amd64
environment:
- - SERVICE_FQDN_CYBERCHEF_80
+ - SERVICE_URL_CYBERCHEF_80
volumes:
- cyberchef-data:/app/data
healthcheck:
diff --git a/templates/compose/dashy.yaml b/templates/compose/dashy.yaml
index 471962b0d..ffdf4a997 100644
--- a/templates/compose/dashy.yaml
+++ b/templates/compose/dashy.yaml
@@ -8,7 +8,7 @@ services:
dashy:
image: lissy93/dashy
environment:
- - SERVICE_FQDN_DASHY_8080
+ - SERVICE_URL_DASHY_8080
- PUID=1000
- PGID=1000
- TZ=${TIMEZONE:-UTC}
diff --git a/templates/compose/denoKV.yaml b/templates/compose/denoKV.yaml
index b6f9682f4..c29eaf876 100644
--- a/templates/compose/denoKV.yaml
+++ b/templates/compose/denoKV.yaml
@@ -9,7 +9,7 @@ services:
image: ghcr.io/denoland/denokv:latest
environment:
- 'ACCESS_TOKEN=${SERVICE_PASSWORD_DENOKV}'
- - SERVICE_FQDN_DENOKV_4512
+ - SERVICE_URL_DENOKV_4512
volumes:
- '${COOLIFY_VOLUME_APP}:/data'
command: '--sqlite-path /data/denokv.sqlite serve --access-token ${SERVICE_PASSWORD_DENOKV}'
diff --git a/templates/compose/dify.yaml b/templates/compose/dify.yaml
index fb4e971b5..dd49ca021 100644
--- a/templates/compose/dify.yaml
+++ b/templates/compose/dify.yaml
@@ -210,9 +210,9 @@ services:
web:
image: langgenius/dify-web:latest
environment:
- - SERVICE_FQDN_WEB_3000
- - CONSOLE_API_URL=${SERVICE_FQDN_WEB}
- - APP_API_URL=${SERVICE_FQDN_API}
+ - SERVICE_URL_WEB_3000
+ - CONSOLE_API_URL=${SERVICE_URL_WEB}
+ - APP_API_URL=${SERVICE_URL_API}
- SENTRY_DSN=${WEB_SENTRY_DSN:-}
- NEXT_TELEMETRY_DISABLED=${NEXT_TELEMETRY_DISABLED:-0}
healthcheck:
@@ -574,7 +574,7 @@ services:
- './volumes/certbot/www:/var/www/html'
entrypoint: [ "sh", "-c", "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh" ]
environment:
- NGINX_SERVER_NAME: $SERVICE_FQDN_NGINX
+ NGINX_SERVER_NAME: $SERVICE_URL_NGINX
NGINX_HTTPS_ENABLED: ${NGINX_HTTPS_ENABLED:-false}
NGINX_SSL_PORT: ${NGINX_SSL_PORT:-443}
NGINX_PORT: ${NGINX_PORT:-80}
diff --git a/templates/compose/directus-with-postgresql.yaml b/templates/compose/directus-with-postgresql.yaml
index 130b116f9..29c56616b 100644
--- a/templates/compose/directus-with-postgresql.yaml
+++ b/templates/compose/directus-with-postgresql.yaml
@@ -12,7 +12,7 @@ services:
- directus-extensions:/directus/extensions
- directus-templates:/directus/templates
environment:
- - SERVICE_FQDN_DIRECTUS_8055
+ - SERVICE_URL_DIRECTUS_8055
- KEY=$SERVICE_BASE64_64_KEY
- SECRET=$SERVICE_BASE64_64_SECRET
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example.com}
diff --git a/templates/compose/directus.yaml b/templates/compose/directus.yaml
index 48c73665e..56f0f3745 100644
--- a/templates/compose/directus.yaml
+++ b/templates/compose/directus.yaml
@@ -13,7 +13,7 @@ services:
- directus-extensions:/directus/extensions
- directus-templates:/directus/templates
environment:
- - SERVICE_FQDN_DIRECTUS_8055
+ - SERVICE_URL_DIRECTUS_8055
- KEY=$SERVICE_BASE64_64_KEY
- SECRET=$SERVICE_BASE64_64_SECRET
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example.com}
diff --git a/templates/compose/docker-registry.yaml b/templates/compose/docker-registry.yaml
index 6380803e3..6e8c44fca 100644
--- a/templates/compose/docker-registry.yaml
+++ b/templates/compose/docker-registry.yaml
@@ -8,7 +8,7 @@ services:
registry:
image: registry:2
environment:
- - SERVICE_FQDN_REGISTRY_5000
+ - SERVICE_URL_REGISTRY_5000
- REGISTRY_AUTH=htpasswd
- REGISTRY_AUTH_HTPASSWD_REALM=Registry
- REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password
diff --git a/templates/compose/docmost.yaml b/templates/compose/docmost.yaml
index 1a29c92fa..4629ad8f2 100644
--- a/templates/compose/docmost.yaml
+++ b/templates/compose/docmost.yaml
@@ -13,9 +13,9 @@ services:
redis:
condition: service_healthy
environment:
- - SERVICE_FQDN_DOCMOST_3000
+ - SERVICE_URL_DOCMOST_3000
- APP_SECRET=$SERVICE_BASE64_APPKEY
- - APP_URL=$SERVICE_FQDN_DOCMOST_3000
+ - APP_URL=$SERVICE_URL_DOCMOST_3000
- DATABASE_URL=postgresql://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql/docmost?schema=public
- REDIS_URL=redis://redis:6379
volumes:
diff --git a/templates/compose/documenso.yaml b/templates/compose/documenso.yaml
index 6a3873799..dc19c1608 100644
--- a/templates/compose/documenso.yaml
+++ b/templates/compose/documenso.yaml
@@ -11,12 +11,12 @@ services:
database:
condition: service_healthy
environment:
- - SERVICE_FQDN_DOCUMENSO_3000
- - NEXTAUTH_URL=${SERVICE_FQDN_DOCUMENSO}
+ - SERVICE_URL_DOCUMENSO_3000
+ - NEXTAUTH_URL=${SERVICE_URL_DOCUMENSO}
- NEXTAUTH_SECRET=${SERVICE_BASE64_AUTHSECRET}
- NEXT_PRIVATE_ENCRYPTION_KEY=${SERVICE_BASE64_ENCRYPTIONKEY}
- NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${SERVICE_BASE64_SECONDARYENCRYPTIONKEY}
- - NEXT_PUBLIC_WEBAPP_URL=${SERVICE_FQDN_DOCUMENSO}
+ - NEXT_PUBLIC_WEBAPP_URL=${SERVICE_URL_DOCUMENSO}
- NEXT_PRIVATE_SMTP_TRANSPORT=${NEXT_PRIVATE_SMTP_TRANSPORT}
- NEXT_PRIVATE_SMTP_HOST=${NEXT_PRIVATE_SMTP_HOST}
- NEXT_PRIVATE_SMTP_PORT=${NEXT_PRIVATE_SMTP_PORT}
@@ -26,6 +26,16 @@ services:
- NEXT_PRIVATE_SMTP_FROM_ADDRESS=${NEXT_PRIVATE_SMTP_FROM_ADDRESS}
- NEXT_PRIVATE_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@database/${POSTGRES_DB:-documenso-db}?schema=public
- NEXT_PRIVATE_DIRECT_DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@database/${POSTGRES_DB:-documenso-db}?schema=public
+ - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/app/apps/remix/certs/certificate.p12
+ - NEXT_PRIVATE_SIGNING_PASSPHRASE=${SERVICE_PASSWORD_DOCUMENSO}
+ - CERT_VALID_DAYS=${CERT_VALID_DAYS:-365}
+ - CERT_INFO_COUNTRY_NAME=${CERT_INFO_COUNTRY_NAME:-DO}
+ - CERT_INFO_STATE_OR_PROVIDENCE=${CERT_INFO_STATE_OR_PROVIDENCE:-Santiago}
+ - CERT_INFO_LOCALITY_NAME=${CERT_INFO_LOCALITY_NAME:-Santiago}
+ - CERT_INFO_ORGANIZATION_NAME=${CERT_INFO_ORGANIZATION_NAME:-Example INC}
+ - CERT_INFO_ORGANIZATIONAL_UNIT=${CERT_INFO_ORGANIZATIONAL_UNIT:-IT Department}
+ - CERT_INFO_EMAIL=${CERT_INFO_EMAIL:-example@gmail.com}
+ - NEXT_PUBLIC_DISABLE_SIGNUP=${DISABLE_LOGIN:-false}
healthcheck:
test:
- CMD-SHELL
@@ -33,6 +43,55 @@ services:
interval: 2s
timeout: 10s
retries: 20
+ entrypoint:
+ - /bin/sh
+ - -c
+ - |
+ echo "./certs" > /tmp/certs_dir_path
+ echo "./make-certs.sh" > /tmp/cert_script_path
+ echo "${SERVICE_PASSWORD_DOCUMENSO}" > /tmp/cert_pass
+
+ touch /tmp/cert_info_path
+ cat <
/tmp/cert_info_path
+ [ req ]
+ distinguished_name = req_distinguished_name
+ prompt = no
+ [ req_distinguished_name ]
+ C = ${CERT_INFO_COUNTRY_NAME}
+ ST = ${CERT_INFO_STATE_OR_PROVIDENCE}
+ L = ${CERT_INFO_LOCALITY_NAME}
+ O = ${CERT_INFO_ORGANIZATION_NAME}
+ OU = ${CERT_INFO_ORGANIZATIONAL_UNIT}
+ CN = ${SERVICE_URL_DOCUMENSO}
+ emailAddress = ${CERT_INFO_EMAIL}
+ EOF
+
+ cat < "$(cat /tmp/cert_script_path)"
+ mkdir -p "$(cat /tmp/certs_dir_path)" && cd "$(cat /tmp/certs_dir_path)"
+
+ openssl genrsa -out private.key 2048
+
+ openssl req \
+ -new \
+ -x509 \
+ -key private.key \
+ -out certificate.crt \
+ -days ${CERT_VALID_DAYS} \
+ -config /tmp/cert_info_path
+
+ openssl pkcs12 \
+ -export \
+ -out certificate.p12 \
+ -inkey private.key \
+ -in certificate.crt \
+ -legacy \
+ -password file:/tmp/cert_pass
+ EOF
+ chmod +x "$(cat /tmp/cert_script_path)"
+
+ sh "$(cat /tmp/cert_script_path)"
+
+ ./start.sh
database:
image: postgres:17
diff --git a/templates/compose/docuseal-with-postgres.yaml b/templates/compose/docuseal-with-postgres.yaml
index ddffc5a2f..4e97c23bd 100644
--- a/templates/compose/docuseal-with-postgres.yaml
+++ b/templates/compose/docuseal-with-postgres.yaml
@@ -8,8 +8,8 @@ services:
docuseal:
image: docuseal/docuseal:latest
environment:
- - SERVICE_FQDN_DOCUSEAL_3000
- - HOST=${SERVICE_FQDN_DOCUSEAL}
+ - SERVICE_URL_DOCUSEAL_3000
+ - HOST=${SERVICE_URL_DOCUSEAL}
- DATABASE_URL=postgresql://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/${POSTGRES_DB}
volumes:
- docuseal-data:/data
diff --git a/templates/compose/docuseal.yaml b/templates/compose/docuseal.yaml
index f25cb0759..802b5fc94 100644
--- a/templates/compose/docuseal.yaml
+++ b/templates/compose/docuseal.yaml
@@ -8,8 +8,8 @@ services:
docuseal:
image: docuseal/docuseal:latest
environment:
- - SERVICE_FQDN_DOCUSEAL_3000
- - HOST=${SERVICE_FQDN_DOCUSEAL}
+ - SERVICE_URL_DOCUSEAL_3000
+ - HOST=${SERVICE_URL_DOCUSEAL}
volumes:
- docuseal-data:/data
healthcheck:
diff --git a/templates/compose/dokuwiki.yaml b/templates/compose/dokuwiki.yaml
index db38db9e6..d8fea8727 100644
--- a/templates/compose/dokuwiki.yaml
+++ b/templates/compose/dokuwiki.yaml
@@ -7,7 +7,7 @@ services:
dokuwiki:
image: lscr.io/linuxserver/dokuwiki:latest
environment:
- - SERVICE_FQDN_DOKUWIKI
+ - SERVICE_URL_DOKUWIKI
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
diff --git a/templates/compose/dolibarr.yaml b/templates/compose/dolibarr.yaml
index 6c32d0f92..e599646f6 100644
--- a/templates/compose/dolibarr.yaml
+++ b/templates/compose/dolibarr.yaml
@@ -8,7 +8,7 @@ services:
dolibarr:
image: dolibarr/dolibarr:latest
environment:
- - SERVICE_FQDN_DOLIBARR_80
+ - SERVICE_URL_DOLIBARR_80
- WWW_USER_ID=${WWW_USER_ID:-1000}
- WWW_GROUP_ID=${WWW_GROUP_ID:-1000}
- DOLI_DB_HOST=mariadb
diff --git a/templates/compose/dozzle-with-auth.yaml b/templates/compose/dozzle-with-auth.yaml
index 8521f824b..c20e9e568 100644
--- a/templates/compose/dozzle-with-auth.yaml
+++ b/templates/compose/dozzle-with-auth.yaml
@@ -8,7 +8,7 @@ services:
dozzle:
image: amir20/dozzle:latest
environment:
- - SERVICE_FQDN_DOZZLE_8080
+ - SERVICE_URL_DOZZLE_8080
- DOZZLE_AUTH_PROVIDER=simple
volumes:
- /var/run/docker.sock:/var/run/docker.sock
diff --git a/templates/compose/dozzle.yaml b/templates/compose/dozzle.yaml
index 0e0c60cd9..49aba1168 100644
--- a/templates/compose/dozzle.yaml
+++ b/templates/compose/dozzle.yaml
@@ -8,7 +8,7 @@ services:
dozzle:
image: amir20/dozzle:latest
environment:
- - SERVICE_FQDN_DOZZLE_8080
+ - SERVICE_URL_DOZZLE_8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock
healthcheck:
diff --git a/templates/compose/drizzle-gateway.yaml b/templates/compose/drizzle-gateway.yaml
new file mode 100644
index 000000000..1963b03e6
--- /dev/null
+++ b/templates/compose/drizzle-gateway.yaml
@@ -0,0 +1,15 @@
+# documentation: https://gateway.drizzle.team/
+# slogan: Free self-hosted Drizzle Studio on steroids
+# tags: drizzle,gateway,self-hosted,open-source,low-code
+# logo: svgs/drizzle.jpeg
+# port: 4983
+
+services:
+ drizzle-gateway:
+ image: ghcr.io/drizzle-team/gateway:latest
+ environment:
+ - SERVICE_URL_DRIZZLE_4983
+ - STORE_PATH=/app
+ - MASTERPASS=$SERVICE_PASSWORD_DRIZZLE
+ volumes:
+ - drizzle-gateway-data:/app
diff --git a/templates/compose/drupal-with-postgresql.yaml b/templates/compose/drupal-with-postgresql.yaml
index b57de31b0..4e58aaabf 100644
--- a/templates/compose/drupal-with-postgresql.yaml
+++ b/templates/compose/drupal-with-postgresql.yaml
@@ -7,7 +7,7 @@ services:
drupal:
image: "drupal:10-apache"
environment:
- - SERVICE_FQDN_DRUPAL
+ - SERVICE_URL_DRUPAL
- DB_HOST=postgres
- DB_NAME=postgres
- DB_USER=postgres
diff --git a/templates/compose/duplicati.yaml b/templates/compose/duplicati.yaml
index 6ce37dd0b..352c08887 100644
--- a/templates/compose/duplicati.yaml
+++ b/templates/compose/duplicati.yaml
@@ -8,7 +8,7 @@ services:
duplicati:
image: lscr.io/linuxserver/duplicati:latest
environment:
- - SERVICE_FQDN_DUPLICATI_8200
+ - SERVICE_URL_DUPLICATI_8200
- PUID=1000
- PGID=1000
- TZ=${TZ:-Europe/London}
diff --git a/templates/compose/easyappointments.yaml b/templates/compose/easyappointments.yaml
index fac3c2033..d18d9a01c 100644
--- a/templates/compose/easyappointments.yaml
+++ b/templates/compose/easyappointments.yaml
@@ -8,8 +8,8 @@ services:
easyappointments:
image: alextselegidis/easyappointments:latest
environment:
- - SERVICE_FQDN_EASYAPPOINTMENTS_80
- - BASE_URL=${SERVICE_FQDN_EASYAPPOINTMENTS}
+ - SERVICE_URL_EASYAPPOINTMENTS_80
+ - BASE_URL=${SERVICE_URL_EASYAPPOINTMENTS}
- DB_HOST=mysql
- DB_NAME=easyappointments
- DB_USERNAME=root
diff --git a/templates/compose/edgedb.yaml b/templates/compose/edgedb.yaml
index c305895ee..4fb6f4103 100644
--- a/templates/compose/edgedb.yaml
+++ b/templates/compose/edgedb.yaml
@@ -9,7 +9,7 @@ services:
edgedb:
image: edgedb/edgedb
environment:
- - SERVICE_FQDN_EDGEDB_5656
+ - SERVICE_URL_EDGEDB_5656
- EDGEDB_SERVER_ADMIN_UI=${EDGEDB_SERVER_ADMIN_UI:-enabled}
- EDGEDB_SERVER_BACKEND_DSN=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql:5432/${POSTGRES_DB:-edgedb}
- EDGEDB_SERVER_SECURITY=${EDGEDB_SERVER_SECURITY:-strict}
diff --git a/templates/compose/emby.yaml b/templates/compose/emby.yaml
index c9699928a..c1db2b958 100644
--- a/templates/compose/emby.yaml
+++ b/templates/compose/emby.yaml
@@ -8,7 +8,7 @@ services:
emby:
image: lscr.io/linuxserver/emby:latest
environment:
- - SERVICE_FQDN_EMBY_8096
+ - SERVICE_URL_EMBY_8096
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
diff --git a/templates/compose/embystat.yaml b/templates/compose/embystat.yaml
index e86052c1e..52b4a9e60 100644
--- a/templates/compose/embystat.yaml
+++ b/templates/compose/embystat.yaml
@@ -7,7 +7,7 @@ services:
embystat:
image: lscr.io/linuxserver/embystat:latest
environment:
- - SERVICE_FQDN_EMBYSTAT_6555
+ - SERVICE_URL_EMBYSTAT_6555
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
diff --git a/templates/compose/evolution-api.yaml b/templates/compose/evolution-api.yaml
index ad5718e9d..ea824de73 100644
--- a/templates/compose/evolution-api.yaml
+++ b/templates/compose/evolution-api.yaml
@@ -13,8 +13,8 @@ services:
- redis
- postgres
environment:
- - SERVICE_FQDN_EVO_8080
- - SERVER_URL=$SERVICE_FQDN_EVO
+ - SERVICE_URL_EVO_8080
+ - SERVER_URL=$SERVICE_URL_EVO
- DB_TYPE=${DB_TYPE:-postgresdb}
- 'DB_POSTGRESDB_DATABASE=${POSTGRES_DB:-postgres}'
- DB_POSTGRESDB_HOST=${DB_POSTGRESDB_HOST:-postgres}
diff --git a/templates/compose/excalidraw.yaml b/templates/compose/excalidraw.yaml
index bcbe0829a..7fd0775e6 100644
--- a/templates/compose/excalidraw.yaml
+++ b/templates/compose/excalidraw.yaml
@@ -8,7 +8,7 @@ services:
excalidraw:
image: excalidraw/excalidraw:latest
environment:
- - SERVICE_FQDN_EXCALIDRAW_80
+ - SERVICE_URL_EXCALIDRAW_80
healthcheck:
test:
- CMD
diff --git a/templates/compose/faraday.yaml b/templates/compose/faraday.yaml
index 7055fc326..67eb5b2ff 100644
--- a/templates/compose/faraday.yaml
+++ b/templates/compose/faraday.yaml
@@ -37,7 +37,7 @@ services:
image: faradaysec/faraday:latest
entrypoint: /entrypoint.sh
environment:
- - SERVICE_FQDN_FARADAY_5985
+ - SERVICE_URL_FARADAY_5985
- AUTHENTIK_POSTGRESQL__PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
- PGSQL_USER=${SERVICE_USER_POSTGRESQL}
- PGSQL_PASSWD=${SERVICE_PASSWORD_POSTGRESQL}
diff --git a/templates/compose/fider.yaml b/templates/compose/fider.yaml
index fa3b323b0..bfbc579dd 100644
--- a/templates/compose/fider.yaml
+++ b/templates/compose/fider.yaml
@@ -8,8 +8,8 @@ services:
fider:
image: getfider/fider:stable
environment:
- - SERVICE_FQDN_FIDER_3000
- - BASE_URL=$SERVICE_FQDN_FIDER_3000
+ - SERVICE_URL_FIDER_3000
+ - BASE_URL=$SERVICE_URL_FIDER_3000
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@database:5432/fider?sslmode=disable
- JWT_SECRET=$SERVICE_PASSWORD_64_FIDER
- EMAIL_NOREPLY=${EMAIL_NOREPLY:-noreply@example.com}
diff --git a/templates/compose/filebrowser.yaml b/templates/compose/filebrowser.yaml
index 608108452..bcfd157a8 100644
--- a/templates/compose/filebrowser.yaml
+++ b/templates/compose/filebrowser.yaml
@@ -8,7 +8,7 @@ services:
filebrowser:
image: filebrowser/filebrowser:latest
environment:
- - SERVICE_FQDN_FILEBROWSER_80
+ - SERVICE_URL_FILEBROWSER_80
volumes:
- type: bind
source: ./srv
diff --git a/templates/compose/fileflows.yaml b/templates/compose/fileflows.yaml
index 2cfafb83f..d96f1a366 100644
--- a/templates/compose/fileflows.yaml
+++ b/templates/compose/fileflows.yaml
@@ -8,8 +8,8 @@ services:
fileflows:
image: revenz/fileflows
environment:
- - SERVICE_FQDN_FILEFLOWS_5000
- - _APP_URL=$SERVICE_FQDN_FILE_FLOWS
+ - SERVICE_URL_FILEFLOWS_5000
+ - _APP_URL=$SERVICE_URL_FILE_FLOWS
- PUID=1000
- PGID=1000
- TZ=${TZ:-America/Toronto}
diff --git a/templates/compose/firefly.yaml b/templates/compose/firefly.yaml
index 3312baf06..cf2449a24 100644
--- a/templates/compose/firefly.yaml
+++ b/templates/compose/firefly.yaml
@@ -8,7 +8,7 @@ services:
firefly:
image: fireflyiii/core:latest
environment:
- - SERVICE_FQDN_FIREFLY_8080
+ - SERVICE_URL_FIREFLY_8080
- APP_KEY=$SERVICE_BASE64_APPKEY
- DB_HOST=mysql
- DB_PORT=3306
diff --git a/templates/compose/firefox.yaml b/templates/compose/firefox.yaml
index ac6498726..af8a593c1 100644
--- a/templates/compose/firefox.yaml
+++ b/templates/compose/firefox.yaml
@@ -8,7 +8,7 @@ services:
firefox:
image: jlesage/firefox
environment:
- - SERVICE_FQDN_FIREFOX_5800
+ - SERVICE_URL_FIREFOX_5800
volumes:
- firefox_config:/config
healthcheck:
diff --git a/templates/compose/flipt.yaml b/templates/compose/flipt.yaml
index 74a72d9f6..b58bdff93 100644
--- a/templates/compose/flipt.yaml
+++ b/templates/compose/flipt.yaml
@@ -10,7 +10,7 @@ services:
volumes:
- 'flipt-data:/var/opt/flipt'
environment:
- - SERVICE_FQDN_FLIPT_8080
+ - SERVICE_URL_FLIPT_8080
healthcheck:
test:
- CMD
diff --git a/templates/compose/flowise-with-databases.yaml b/templates/compose/flowise-with-databases.yaml
index f2e26839e..875144601 100644
--- a/templates/compose/flowise-with-databases.yaml
+++ b/templates/compose/flowise-with-databases.yaml
@@ -15,7 +15,7 @@ services:
qdrant:
condition: service_healthy
environment:
- - SERVICE_FQDN_FLOWISE_3001
+ - SERVICE_URL_FLOWISE_3001
- DEBUG=${DEBUG:-false}
- DISABLE_FLOWISE_TELEMETRY=${DISABLE_FLOWISE_TELEMETRY:-true}
- PORT=${PORT:-3001}
@@ -66,7 +66,7 @@ services:
qdrant:
image: qdrant/qdrant:latest
environment:
- - SERVICE_FQDN_QDRANT_6333
+ - SERVICE_URL_QDRANT_6333
- QDRANT__SERVICE__API_KEY=${SERVICE_PASSWORD_QDRANTAPIKEY}
volumes:
- flowise-qdrant-data:/qdrant/storage
diff --git a/templates/compose/flowise.yaml b/templates/compose/flowise.yaml
index 796d0cc4e..9a22791d9 100644
--- a/templates/compose/flowise.yaml
+++ b/templates/compose/flowise.yaml
@@ -8,7 +8,7 @@ services:
flowise:
image: flowiseai/flowise:latest
environment:
- - SERVICE_FQDN_FLOWISE_3001
+ - SERVICE_URL_FLOWISE_3001
- DEBUG=${DEBUG:-false}
- DISABLE_FLOWISE_TELEMETRY=${DISABLE_FLOWISE_TELEMETRY:-true}
- PORT=${PORT:-3001}
diff --git a/templates/compose/forgejo-with-mariadb.yaml b/templates/compose/forgejo-with-mariadb.yaml
index b359884cd..388daf0ce 100644
--- a/templates/compose/forgejo-with-mariadb.yaml
+++ b/templates/compose/forgejo-with-mariadb.yaml
@@ -8,8 +8,8 @@ services:
forgejo:
image: codeberg.org/forgejo/forgejo:8
environment:
- - SERVICE_FQDN_FORGEJO_3000
- - FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
+ - SERVICE_URL_FORGEJO_3000
+ - FORGEJO__server__ROOT_URL=${SERVICE_URL_FORGEJO_3000}
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
- USER_UID=1000
diff --git a/templates/compose/forgejo-with-mysql.yaml b/templates/compose/forgejo-with-mysql.yaml
index 9a4cd4526..884f13c56 100644
--- a/templates/compose/forgejo-with-mysql.yaml
+++ b/templates/compose/forgejo-with-mysql.yaml
@@ -8,8 +8,8 @@ services:
forgejo:
image: codeberg.org/forgejo/forgejo:8
environment:
- - SERVICE_FQDN_FORGEJO_3000
- - FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
+ - SERVICE_URL_FORGEJO_3000
+ - FORGEJO__server__ROOT_URL=${SERVICE_URL_FORGEJO_3000}
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
- USER_UID=1000
diff --git a/templates/compose/forgejo-with-postgresql.yaml b/templates/compose/forgejo-with-postgresql.yaml
index 83c5d85db..6f3e66d5f 100644
--- a/templates/compose/forgejo-with-postgresql.yaml
+++ b/templates/compose/forgejo-with-postgresql.yaml
@@ -8,8 +8,8 @@ services:
forgejo:
image: codeberg.org/forgejo/forgejo:8
environment:
- - SERVICE_FQDN_FORGEJO_3000
- - FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
+ - SERVICE_URL_FORGEJO_3000
+ - FORGEJO__server__ROOT_URL=${SERVICE_URL_FORGEJO_3000}
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
- USER_UID=1000
diff --git a/templates/compose/forgejo-with-runner-with-mariadb.yaml b/templates/compose/forgejo-with-runner-with-mariadb.yaml
index d2fb9a0e1..e73ebb6d9 100644
--- a/templates/compose/forgejo-with-runner-with-mariadb.yaml
+++ b/templates/compose/forgejo-with-runner-with-mariadb.yaml
@@ -9,8 +9,8 @@ services:
forgejo:
image: codeberg.org/forgejo/forgejo:8
environment:
- - SERVICE_FQDN_FORGEJO_3000
- - FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
+ - SERVICE_URL_FORGEJO_3000
+ - FORGEJO__server__ROOT_URL=${SERVICE_URL_FORGEJO_3000}
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
- USER_UID=1000
diff --git a/templates/compose/forgejo-with-runner-with-mysql.yaml b/templates/compose/forgejo-with-runner-with-mysql.yaml
index ba37933ca..eb7a9439d 100644
--- a/templates/compose/forgejo-with-runner-with-mysql.yaml
+++ b/templates/compose/forgejo-with-runner-with-mysql.yaml
@@ -9,8 +9,8 @@ services:
forgejo:
image: codeberg.org/forgejo/forgejo:8
environment:
- - SERVICE_FQDN_FORGEJO_3000
- - FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
+ - SERVICE_URL_FORGEJO_3000
+ - FORGEJO__server__ROOT_URL=${SERVICE_URL_FORGEJO_3000}
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
- USER_UID=1000
diff --git a/templates/compose/forgejo-with-runner-with-postgresql.yaml b/templates/compose/forgejo-with-runner-with-postgresql.yaml
index bb401e3c1..2484a08db 100644
--- a/templates/compose/forgejo-with-runner-with-postgresql.yaml
+++ b/templates/compose/forgejo-with-runner-with-postgresql.yaml
@@ -9,8 +9,8 @@ services:
forgejo:
image: codeberg.org/forgejo/forgejo:8
environment:
- - SERVICE_FQDN_FORGEJO_3000
- - FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
+ - SERVICE_URL_FORGEJO_3000
+ - FORGEJO__server__ROOT_URL=${SERVICE_URL_FORGEJO_3000}
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
- USER_UID=1000
diff --git a/templates/compose/forgejo-with-runner.yaml b/templates/compose/forgejo-with-runner.yaml
index 494d3943f..70c869afb 100644
--- a/templates/compose/forgejo-with-runner.yaml
+++ b/templates/compose/forgejo-with-runner.yaml
@@ -9,8 +9,8 @@ services:
forgejo:
image: codeberg.org/forgejo/forgejo:8
environment:
- - SERVICE_FQDN_FORGEJO_3000
- - FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
+ - SERVICE_URL_FORGEJO_3000
+ - FORGEJO__server__ROOT_URL=${SERVICE_URL_FORGEJO_3000}
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS:-false}
- USER_UID=1000
@@ -72,7 +72,7 @@ services:
command: >-
bash -ec '
while : ; do
- forgejo-runner create-runner-file --connect --instance ${SERVICE_FQDN_FORGEJO}:3000 --name runner --secret ${RUNNER_SHARED_SECRET} && break ;
+ forgejo-runner create-runner-file --connect --instance ${SERVICE_URL_FORGEJO}:3000 --name runner --secret ${RUNNER_SHARED_SECRET} && break ;
sleep 1 ;
done ;
sed -i -e "s|\"labels\": null|\"labels\": [\"docker:docker://node:20-bookworm\", \"ubuntu-22.04:docker://catthehacker/ubuntu:act-22.04\"]|" .runner ;
diff --git a/templates/compose/forgejo.yaml b/templates/compose/forgejo.yaml
index 3e7d5647f..6117661d9 100644
--- a/templates/compose/forgejo.yaml
+++ b/templates/compose/forgejo.yaml
@@ -8,8 +8,8 @@ services:
forgejo:
image: codeberg.org/forgejo/forgejo:8
environment:
- - SERVICE_FQDN_FORGEJO_3000
- - FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
+ - SERVICE_URL_FORGEJO_3000
+ - FORGEJO__server__ROOT_URL=${SERVICE_URL_FORGEJO_3000}
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
- USER_UID=1000
diff --git a/templates/compose/formbricks.yaml b/templates/compose/formbricks.yaml
index dde216b80..0d336688a 100644
--- a/templates/compose/formbricks.yaml
+++ b/templates/compose/formbricks.yaml
@@ -8,12 +8,12 @@ services:
formbricks:
image: ghcr.io/formbricks/formbricks:latest
environment:
- - SERVICE_FQDN_FORMBRICKS_3000
- - WEBAPP_URL=$SERVICE_FQDN_FORMBRICKS
+ - SERVICE_URL_FORMBRICKS_3000
+ - WEBAPP_URL=$SERVICE_URL_FORMBRICKS
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgresql:5432/${POSTGRESQL_DATABASE:-formbricks}
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
- NEXTAUTH_SECRET=$SERVICE_BASE64_NEXTAUTH
- - NEXTAUTH_URL=$SERVICE_FQDN_FORMBRICKS
+ - NEXTAUTH_URL=$SERVICE_URL_FORMBRICKS
- ENCRYPTION_KEY=$SERVICE_BASE64_ENCRYPTION
- CRON_SECRET=$SERVICE_BASE64_CRON
- ENTERPRISE_LICENSE_KEY=${ENTERPRISE_LICENSE_KEY}
diff --git a/templates/compose/foundryvtt.yaml b/templates/compose/foundryvtt.yaml
index 75b86841f..ee190da9f 100644
--- a/templates/compose/foundryvtt.yaml
+++ b/templates/compose/foundryvtt.yaml
@@ -10,7 +10,7 @@ services:
expose:
- 30000
environment:
- - SERVICE_FQDN_FOUNDRY_30000
+ - SERVICE_URL_FOUNDRY_30000
# Account username or email address for foundryvtt.com. Required for downloading an application distribution.
- FOUNDRY_USERNAME=${FOUNDRY_USERNAME}
# Account password for foundryvtt.com. Required for downloading an application distribution.
diff --git a/templates/compose/freescout.yaml b/templates/compose/freescout.yaml
index c03e112f0..a315a16fb 100644
--- a/templates/compose/freescout.yaml
+++ b/templates/compose/freescout.yaml
@@ -14,12 +14,12 @@ services:
mariadb:
condition: service_healthy
environment:
- - SERVICE_FQDN_FREESCOUT_80
+ - SERVICE_URL_FREESCOUT_80
- DB_HOST=mariadb
- DB_NAME=${MARIADB_DATABASE:-freescout}
- DB_USER=${SERVICE_USER_MARIADB:-freescout}
- DB_PASS=${SERVICE_PASSWORD_MARIADB}
- - SITE_URL=${SERVICE_FQDN_FREESCOUT}
+ - SITE_URL=${SERVICE_URL_FREESCOUT}
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example.com}
- ADMIN_PASS=${SERVICE_PASSWORD_ADMIN}
- DISPLAY_ERRORS=${DISPLAY_ERRORS:-FALSE}
diff --git a/templates/compose/freshrss-with-mariadb.yaml b/templates/compose/freshrss-with-mariadb.yaml
index fe066ffb6..982fdba73 100644
--- a/templates/compose/freshrss-with-mariadb.yaml
+++ b/templates/compose/freshrss-with-mariadb.yaml
@@ -8,7 +8,7 @@ services:
freshrss:
image: freshrss/freshrss:latest
environment:
- - SERVICE_FQDN_FRESHRSS_80
+ - SERVICE_URL_FRESHRSS_80
- CRON_MIN=${CRON_MIN:-1,31}
- MARIADB_DB=${MARIADB_DATABASE:-freshrss}
- MARIADB_USER=${SERVICE_USER_MARIADB}
diff --git a/templates/compose/freshrss-with-mysql.yaml b/templates/compose/freshrss-with-mysql.yaml
index ca3726a12..1f2738fe8 100644
--- a/templates/compose/freshrss-with-mysql.yaml
+++ b/templates/compose/freshrss-with-mysql.yaml
@@ -8,7 +8,7 @@ services:
freshrss:
image: freshrss/freshrss:latest
environment:
- - SERVICE_FQDN_FRESHRSS_80
+ - SERVICE_URL_FRESHRSS_80
- CRON_MIN=${CRON_MIN:-1,31}
- MYSQL_DB=${MYSQL_DATABASE:-freshrss}
- MYSQL_USER=${SERVICE_USER_MYSQL}
diff --git a/templates/compose/freshrss-with-postgresql.yaml b/templates/compose/freshrss-with-postgresql.yaml
index 8928dfd56..6f4673f84 100644
--- a/templates/compose/freshrss-with-postgresql.yaml
+++ b/templates/compose/freshrss-with-postgresql.yaml
@@ -8,7 +8,7 @@ services:
freshrss:
image: freshrss/freshrss:latest
environment:
- - SERVICE_FQDN_FRESHRSS_80
+ - SERVICE_URL_FRESHRSS_80
- CRON_MIN=${CRON_MIN:-1,31}
- POSTGRES_DB=${POSTGRESQL_DATABASE:-freshrss}
- POSTGRES_USER=${SERVICE_USER_POSTGRESQL}
diff --git a/templates/compose/freshrss.yaml b/templates/compose/freshrss.yaml
index c481b96d4..c87142cf4 100644
--- a/templates/compose/freshrss.yaml
+++ b/templates/compose/freshrss.yaml
@@ -8,7 +8,7 @@ services:
freshrss:
image: freshrss/freshrss:latest
environment:
- - SERVICE_FQDN_FRESHRSS_80
+ - SERVICE_URL_FRESHRSS_80
- CRON_MIN=${CRON_MIN:-1,31}
volumes:
- freshrss-data:/var/www/FreshRSS/data
diff --git a/templates/compose/getoutline.yaml b/templates/compose/getoutline.yaml
index 47c447e2e..28db88934 100644
--- a/templates/compose/getoutline.yaml
+++ b/templates/compose/getoutline.yaml
@@ -15,13 +15,13 @@ services:
redis:
condition: service_healthy
environment:
- - SERVICE_FQDN_OUTLINE_3000
+ - SERVICE_URL_OUTLINE_3000
- NODE_ENV=production
- SECRET_KEY=${SERVICE_BASE64_OUTLINE}
- UTILS_SECRET=${SERVICE_PASSWORD_64_OUTLINE}
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_64_POSTGRES}@postgres:5432/${POSTGRES_DATABASE:-outline}
- REDIS_URL=redis://:${SERVICE_PASSWORD_64_REDIS}@redis:6379
- - URL=${SERVICE_FQDN_OUTLINE_3000}
+ - URL=${SERVICE_URL_OUTLINE_3000}
- PORT=${OUTLINE_PORT:-3000}
- FILE_STORAGE=${FILE_STORAGE:-local}
- FILE_STORAGE_LOCAL_ROOT_DIR=${FILE_STORAGE_LOCAL_ROOT_DIR:-/var/lib/outline/data}
diff --git a/templates/compose/ghost.yaml b/templates/compose/ghost.yaml
index 1a84b9650..a6b57afbf 100644
--- a/templates/compose/ghost.yaml
+++ b/templates/compose/ghost.yaml
@@ -10,8 +10,8 @@ services:
volumes:
- ghost-content-data:/var/lib/ghost/content
environment:
- - SERVICE_FQDN_GHOST_2368
- - url=$SERVICE_FQDN_GHOST_2368
+ - SERVICE_URL_GHOST_2368
+ - url=$SERVICE_URL_GHOST_2368
- database__client=mysql
- database__connection__host=mysql
- database__connection__user=$SERVICE_USER_MYSQL
diff --git a/templates/compose/gitea-with-mariadb.yaml b/templates/compose/gitea-with-mariadb.yaml
index 049c02bbd..e36503d14 100644
--- a/templates/compose/gitea-with-mariadb.yaml
+++ b/templates/compose/gitea-with-mariadb.yaml
@@ -7,7 +7,7 @@ services:
gitea:
image: gitea/gitea:latest
environment:
- - SERVICE_FQDN_GITEA_3000
+ - SERVICE_URL_GITEA_3000
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
diff --git a/templates/compose/gitea-with-mysql.yaml b/templates/compose/gitea-with-mysql.yaml
index 8af4fab35..3d3373010 100644
--- a/templates/compose/gitea-with-mysql.yaml
+++ b/templates/compose/gitea-with-mysql.yaml
@@ -7,7 +7,7 @@ services:
gitea:
image: gitea/gitea:latest
environment:
- - SERVICE_FQDN_GITEA_3000
+ - SERVICE_URL_GITEA_3000
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
diff --git a/templates/compose/gitea-with-postgresql.yaml b/templates/compose/gitea-with-postgresql.yaml
index d752f5f61..a0c30a257 100644
--- a/templates/compose/gitea-with-postgresql.yaml
+++ b/templates/compose/gitea-with-postgresql.yaml
@@ -7,7 +7,7 @@ services:
gitea:
image: gitea/gitea:latest
environment:
- - SERVICE_FQDN_GITEA_3000
+ - SERVICE_URL_GITEA_3000
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
diff --git a/templates/compose/gitea.yaml b/templates/compose/gitea.yaml
index 4b9ace4c6..f80abee09 100644
--- a/templates/compose/gitea.yaml
+++ b/templates/compose/gitea.yaml
@@ -7,7 +7,7 @@ services:
gitea:
image: gitea/gitea:latest
environment:
- - SERVICE_FQDN_GITEA_3000
+ - SERVICE_URL_GITEA_3000
- USER_UID=1000
- USER_GID=1000
ports:
diff --git a/templates/compose/gitlab.yaml b/templates/compose/gitlab.yaml
index 5e30f6845..5ab3b5c68 100644
--- a/templates/compose/gitlab.yaml
+++ b/templates/compose/gitlab.yaml
@@ -8,12 +8,12 @@ services:
gitlab:
image: "gitlab/gitlab-ce:latest"
environment:
- - SERVICE_FQDN_GITLAB_80
+ - SERVICE_URL_GITLAB_80
- TZ=${TZ:-UTC}
- GITLAB_TIMEZONE=${GITLAB_TIMEZONE:-UTC}
- GITLAB_ROOT_PASSWORD=$SERVICE_PASSWORD_GITLAB
- - EXTERNAL_URL=$SERVICE_FQDN_GITLAB
- - GITLAB_HOST=$SERVICE_FQDN_GITLAB
+ - EXTERNAL_URL=$SERVICE_URL_GITLAB
+ - GITLAB_HOST=$SERVICE_URL_GITLAB
- GITLAB_SMTP_ENABLE=${GITLAB_SMTP_ENABLE:-false}
- GITLAB_SMTP_ADDRESS=$GITLAB_SMTP_ADDRESS
- GITLAB_SMTP_PORT=${GITLAB_SMTP_PORT:-587}
@@ -24,7 +24,7 @@ services:
- GITLAB_SMTP_TLS=${GITLAB_SMTP_TLS:-false}
- GITLAB_EMAIL_FROM=${GITLAB_EMAIL_FROM}
- GITLAB_EMAIL_REPLY_TO=$GITLAB_EMAIL_REPLY_TO
- - 'GITLAB_OMNIBUS_CONFIG=external_url "${SERVICE_FQDN_GITLAB}"; nginx["listen_https"] = false; nginx["listen_port"] = 80; gitlab_rails["gitlab_shell_ssh_port"] = 2222; gitlab_rails["smtp_enable"] = ${GITLAB_SMTP_ENABLE}; gitlab_rails["smtp_address"] = "${GITLAB_SMTP_ADDRESS}"; gitlab_rails["smtp_port"] = ${GITLAB_SMTP_PORT}; gitlab_rails["smtp_user_name"] = "${GITLAB_SMTP_USER_NAME}"; gitlab_rails["smtp_password"] = "${GITLAB_SMTP_PASSWORD}"; gitlab_rails["smtp_domain"] = "${GITLAB_SMTP_DOMAIN}"; gitlab_rails["smtp_authentication"] = "login"; gitlab_rails["smtp_enable_starttls_auto"] = ${GITLAB_STARTTLS_AUTO}; gitlab_rails["smtp_tls"] = ${GITLAB_SMTP_TLS}; gitlab_rails["gitlab_email_from"] = "${GITLAB_EMAIL_FROM}"; gitlab_rails["gitlab_email_reply_to"] = "${GITLAB_EMAIL_REPLY_TO}";'
+ - 'GITLAB_OMNIBUS_CONFIG=external_url "${SERVICE_URL_GITLAB}"; nginx["listen_https"] = false; nginx["listen_port"] = 80; gitlab_rails["gitlab_shell_ssh_port"] = 2222; gitlab_rails["smtp_enable"] = ${GITLAB_SMTP_ENABLE}; gitlab_rails["smtp_address"] = "${GITLAB_SMTP_ADDRESS}"; gitlab_rails["smtp_port"] = ${GITLAB_SMTP_PORT}; gitlab_rails["smtp_user_name"] = "${GITLAB_SMTP_USER_NAME}"; gitlab_rails["smtp_password"] = "${GITLAB_SMTP_PASSWORD}"; gitlab_rails["smtp_domain"] = "${GITLAB_SMTP_DOMAIN}"; gitlab_rails["smtp_authentication"] = "login"; gitlab_rails["smtp_enable_starttls_auto"] = ${GITLAB_STARTTLS_AUTO}; gitlab_rails["smtp_tls"] = ${GITLAB_SMTP_TLS}; gitlab_rails["gitlab_email_from"] = "${GITLAB_EMAIL_FROM}"; gitlab_rails["gitlab_email_reply_to"] = "${GITLAB_EMAIL_REPLY_TO}";'
ports:
- "2222:22"
volumes:
diff --git a/templates/compose/glance.yaml b/templates/compose/glance.yaml
index 22618cf14..5c4fcd88f 100644
--- a/templates/compose/glance.yaml
+++ b/templates/compose/glance.yaml
@@ -8,7 +8,7 @@ services:
glance:
image: glanceapp/glance:latest
environment:
- - SERVICE_FQDN_GLANCE_8080
+ - SERVICE_URL_GLANCE_8080
volumes:
- ./config:/app/config
- type: bind
diff --git a/templates/compose/glances.yaml b/templates/compose/glances.yaml
index fdf27e5f4..78e244014 100644
--- a/templates/compose/glances.yaml
+++ b/templates/compose/glances.yaml
@@ -10,7 +10,7 @@ services:
restart: unless-stopped
environment:
- GLANCES_OPT=-w
- - SERVICE_FQDN_GLANCES_61208
+ - SERVICE_URL_GLANCES_61208
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro
diff --git a/templates/compose/glitchtip.yaml b/templates/compose/glitchtip.yaml
index 2f0b0100c..698935cae 100644
--- a/templates/compose/glitchtip.yaml
+++ b/templates/compose/glitchtip.yaml
@@ -35,11 +35,11 @@ services:
redis:
condition: service_healthy
environment:
- - SERVICE_FQDN_GLITCHTIP_8080
+ - SERVICE_URL_GLITCHTIP_8080
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgres:5432/${POSTGRESQL_DATABASE:-glitchtip}
- SECRET_KEY=$SERVICE_BASE64_64_ENCRYPTION
- EMAIL_URL=${EMAIL_URL:-consolemail://}
- - GLITCHTIP_DOMAIN=${SERVICE_FQDN_GLITCHTIP}
+ - GLITCHTIP_DOMAIN=${SERVICE_URL_GLITCHTIP}
- DEFAULT_FROM_EMAIL=${DEFAULT_FROM_EMAIL:-test@example.com}
- CELERY_WORKER_AUTOSCALE=${CELERY_WORKER_AUTOSCALE:-1,3}
- CELERY_WORKER_MAX_TASKS_PER_CHILD=${CELERY_WORKER_MAX_TASKS_PER_CHILD:-10000}
@@ -63,7 +63,7 @@ services:
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgres:5432/${POSTGRESQL_DATABASE:-glitchtip}
- SECRET_KEY=$SERVICE_BASE64_64_ENCRYPTION
- EMAIL_URL=${EMAIL_URL:-consolemail://}
- - GLITCHTIP_DOMAIN=${SERVICE_FQDN_GLITCHTIP}
+ - GLITCHTIP_DOMAIN=${SERVICE_URL_GLITCHTIP}
- DEFAULT_FROM_EMAIL=${DEFAULT_FROM_EMAIL:-test@example.com}
- CELERY_WORKER_AUTOSCALE=${CELERY_WORKER_AUTOSCALE:-1,3}
- CELERY_WORKER_MAX_TASKS_PER_CHILD=${CELERY_WORKER_MAX_TASKS_PER_CHILD:-10000}
diff --git a/templates/compose/gotenberg.yaml b/templates/compose/gotenberg.yaml
index 39e642ed4..978d380b8 100644
--- a/templates/compose/gotenberg.yaml
+++ b/templates/compose/gotenberg.yaml
@@ -8,7 +8,7 @@ services:
gotenberg:
image: gotenberg/gotenberg:latest
environment:
- - SERVICE_FQDN_GOTENBERG_3000
+ - SERVICE_URL_GOTENBERG_3000
# NOTE: requires the --api-enable-basic-auth option in "command"
- GOTENBERG_API_BASIC_AUTH_USERNAME=${SERVICE_USER_GOTENBERG}
- GOTENBERG_API_BASIC_AUTH_PASSWORD=${SERVICE_PASSWORD_GOTENBERG}
diff --git a/templates/compose/gowa.yaml b/templates/compose/gowa.yaml
index 9de7b49fe..69cc8b44d 100644
--- a/templates/compose/gowa.yaml
+++ b/templates/compose/gowa.yaml
@@ -8,7 +8,7 @@ services:
gowa:
image: aldinokemal2104/go-whatsapp-web-multidevice:latest
environment:
- - SERVICE_FQDN_GOWA_3000
+ - SERVICE_URL_GOWA_3000
- SERVICE_USER_GOWA
- SERVICE_PASSWORD_GOWA
- APP_BASIC_AUTH=${SERVICE_USER_GOWA}:${SERVICE_PASSWORD_GOWA}
diff --git a/templates/compose/grafana-with-postgresql.yaml b/templates/compose/grafana-with-postgresql.yaml
index 0ccdd235d..5055ae846 100644
--- a/templates/compose/grafana-with-postgresql.yaml
+++ b/templates/compose/grafana-with-postgresql.yaml
@@ -8,9 +8,9 @@ services:
grafana:
image: grafana/grafana-oss
environment:
- - SERVICE_FQDN_GRAFANA_3000
- - GF_SERVER_ROOT_URL=${SERVICE_FQDN_GRAFANA}
- - GF_SERVER_DOMAIN=${SERVICE_FQDN_GRAFANA}
+ - SERVICE_URL_GRAFANA_3000
+ - GF_SERVER_ROOT_URL=${SERVICE_URL_GRAFANA}
+ - GF_SERVER_DOMAIN=${SERVICE_URL_GRAFANA}
- GF_SECURITY_ADMIN_PASSWORD=${SERVICE_PASSWORD_GRAFANA}
- GF_DATABASE_TYPE=postgres
- GF_DATABASE_HOST=postgresql
diff --git a/templates/compose/grafana.yaml b/templates/compose/grafana.yaml
index ddc143f74..035656c29 100644
--- a/templates/compose/grafana.yaml
+++ b/templates/compose/grafana.yaml
@@ -8,9 +8,9 @@ services:
grafana:
image: grafana/grafana-oss
environment:
- - SERVICE_FQDN_GRAFANA_3000
- - GF_SERVER_ROOT_URL=${SERVICE_FQDN_GRAFANA}
- - GF_SERVER_DOMAIN=${SERVICE_FQDN_GRAFANA}
+ - SERVICE_URL_GRAFANA_3000
+ - GF_SERVER_ROOT_URL=${SERVICE_URL_GRAFANA}
+ - GF_SERVER_DOMAIN=${SERVICE_URL_GRAFANA}
- GF_SECURITY_ADMIN_PASSWORD=${SERVICE_PASSWORD_GRAFANA}
volumes:
- grafana-data:/var/lib/grafana
diff --git a/templates/compose/grist.yaml b/templates/compose/grist.yaml
index ab7cc26e0..5e7f6ca47 100644
--- a/templates/compose/grist.yaml
+++ b/templates/compose/grist.yaml
@@ -8,9 +8,9 @@ services:
grist:
image: gristlabs/grist:latest
environment:
- - SERVICE_FQDN_GRIST_443
- - APP_HOME_URL=${SERVICE_FQDN_GRIST}
- - APP_DOC_URL=${SERVICE_FQDN_GRIST}
+ - SERVICE_URL_GRIST_443
+ - APP_HOME_URL=${SERVICE_URL_GRIST}
+ - APP_DOC_URL=${SERVICE_URL_GRIST}
- GRIST_DOMAIN=${SERVICE_URL_GRIST}
- TZ=${TZ:-UTC}
- GRIST_SUPPORT_ANON=${SUPPORT_ANON:-false}
@@ -21,7 +21,7 @@ services:
- GRIST_UI_FEATURES=${UI_FEATURES:-helpCenter,billing,templates,createSite,multiSite,sendToDrive,tutorials,supportGrist}
- GRIST_DEFAULT_EMAIL=${DEFAULT_EMAIL:-test@example.com}
- GRIST_ORG_IN_PATH=${ORG_IN_PATH:-true}
- - GRIST_OIDC_SP_HOST=${SERVICE_FQDN_GRIST}
+ - GRIST_OIDC_SP_HOST=${SERVICE_URL_GRIST}
- GRIST_OIDC_IDP_SCOPES=${OIDC_IDP_SCOPES:-openid profile email}
- GRIST_OIDC_IDP_SKIP_END_SESSION_ENDPOINT=${OIDC_IDP_SKIP_END_SESSION_ENDPOINT:-false}
- GRIST_OIDC_IDP_ISSUER=${OIDC_IDP_ISSUER:?}
@@ -40,8 +40,8 @@ services:
- TYPEORM_PORT=${TYPEORM_PORT:-5432}
- TYPEORM_LOGGING=${TYPEORM_LOGGING:-false}
- REDIS_URL=${REDIS_URL:-redis://redis:6379}
- - GRIST_HELP_CENTER=${SERVICE_FQDN_GRIST}/help
- - GRIST_TERMS_OF_SERVICE_URL=${SERVICE_FQDN_GRIST}/terms
+ - GRIST_HELP_CENTER=${SERVICE_URL_GRIST}/help
+ - GRIST_TERMS_OF_SERVICE_URL=${SERVICE_URL_GRIST}/terms
- FREE_COACHING_CALL_URL=${FREE_COACHING_CALL_URL}
- GRIST_CONTACT_SUPPORT_URL=${CONTACT_SUPPORT_URL}
volumes:
diff --git a/templates/compose/grocy.yaml b/templates/compose/grocy.yaml
index c55907f6a..97bdd1e3a 100644
--- a/templates/compose/grocy.yaml
+++ b/templates/compose/grocy.yaml
@@ -7,7 +7,7 @@ services:
grocy:
image: lscr.io/linuxserver/grocy:latest
environment:
- - SERVICE_FQDN_GROCY
+ - SERVICE_URL_GROCY
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
diff --git a/templates/compose/heimdall.yaml b/templates/compose/heimdall.yaml
index 851f981b5..57549852c 100644
--- a/templates/compose/heimdall.yaml
+++ b/templates/compose/heimdall.yaml
@@ -7,7 +7,7 @@ services:
heimdall:
image: lscr.io/linuxserver/heimdall:latest
environment:
- - SERVICE_FQDN_HEIMDALL
+ - SERVICE_URL_HEIMDALL
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
diff --git a/templates/compose/heyform.yaml b/templates/compose/heyform.yaml
index 980671031..903ca3db3 100644
--- a/templates/compose/heyform.yaml
+++ b/templates/compose/heyform.yaml
@@ -15,8 +15,8 @@ services:
keydb:
condition: service_healthy
environment:
- - SERVICE_FQDN_HEYFORM_8000
- - APP_HOMEPAGE_URL=${SERVICE_FQDN_HEYFORM}
+ - SERVICE_URL_HEYFORM_8000
+ - APP_HOMEPAGE_URL=${SERVICE_URL_HEYFORM}
- SESSION_KEY=${SERVICE_BASE64_64_SESSION}
- FORM_ENCRYPTION_KEY=${SERVICE_BASE64_64_FORM}
- MONGO_URI=mongodb://mongo:27017/heyform
diff --git a/templates/compose/homarr.yaml b/templates/compose/homarr.yaml
index 6899c9fcb..920d2a86b 100644
--- a/templates/compose/homarr.yaml
+++ b/templates/compose/homarr.yaml
@@ -8,7 +8,7 @@ services:
homarr:
image: ghcr.io/ajnart/homarr:latest
environment:
- - SERVICE_FQDN_HOMARR_7575
+ - SERVICE_URL_HOMARR_7575
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./homarr/configs:/app/data/configs
diff --git a/templates/compose/homebox.yaml b/templates/compose/homebox.yaml
new file mode 100644
index 000000000..feab177dc
--- /dev/null
+++ b/templates/compose/homebox.yaml
@@ -0,0 +1,27 @@
+# documentation: https://github.com/sysadminsmedia/homebox
+# slogan: Homebox is the inventory and organization system built for the Home User.
+# tags: inventory, home, organize
+# logo: svgs/homebox.svg
+# port: 7745
+
+services:
+ homebox:
+ image: ghcr.io/sysadminsmedia/homebox:latest
+ environment:
+ - SERVICE_URL_HOMEBOX_7745
+ - HBOX_OPTIONS_ALLOW_REGISTRATION=${HBOX_OPTIONS_ALLOW_REGISTRATION:-false}
+ - HBOX_LOG_LEVEL=${HBOX_LOG_LEVEL:-info}
+ - HBOX_LOG_FORMAT=${HBOX_LOG_FORMAT:-text}
+ - HBOX_WEB_MAX_UPLOAD_SIZE=${HBOX_WEB_MAX_UPLOAD_SIZE:-10}
+ - HBOX_MAILER_HOST=${HBOX_MAILER_HOST}
+ - HBOX_MAILER_PORT=${HBOX_MAILER_PORT:-587}
+ - HBOX_MAILER_USERNAME=${HBOX_MAILER_USERNAME}
+ - HBOX_MAILER_PASSWORD=${HBOX_MAILER_PASSWORD}
+ - HBOX_MAILER_FROM=${HBOX_MAILER_FROM}
+ volumes:
+ - homebox-data:/data
+ healthcheck:
+ test: ["CMD", "sh", "-c", "wget --method=GET -qO- http://localhost:7745/api/v1/status > /dev/null || exit 1"]
+ interval: 30s
+ timeout: 5s
+ retries: 10
diff --git a/templates/compose/homepage.yaml b/templates/compose/homepage.yaml
index b3eafa73d..82e76eb01 100644
--- a/templates/compose/homepage.yaml
+++ b/templates/compose/homepage.yaml
@@ -8,8 +8,8 @@ services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
environment:
- - SERVICE_FQDN_HOMEPAGE_3000
- - HOMEPAGE_VAR_BASE=${SERVICE_FQDN_HOMEPAGE}
+ - SERVICE_URL_HOMEPAGE_3000
+ - HOMEPAGE_VAR_BASE=${SERVICE_URL_HOMEPAGE}
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./images:/app/public/images
diff --git a/templates/compose/hoppscotch.yaml b/templates/compose/hoppscotch.yaml
index 9654b1930..41c150744 100644
--- a/templates/compose/hoppscotch.yaml
+++ b/templates/compose/hoppscotch.yaml
@@ -8,7 +8,7 @@ services:
backend:
image: hoppscotch/hoppscotch:latest
environment:
- - SERVICE_FQDN_HOPPSCOTCH_80
+ - SERVICE_URL_HOPPSCOTCH_80
- VITE_ALLOWED_AUTH_PROVIDERS=${VITE_ALLOWED_AUTH_PROVIDERS:-GOOGLE,GITHUB,MICROSOFT,EMAIL}
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@hoppscotch-db:5432/${POSTGRES_DB}
- JWT_SECRET=${SERVICE_PASSWORD_JWT}
@@ -19,19 +19,19 @@ services:
- SESSION_SECRET=${SERVICE_PASSWORD_SECRET}
- ALLOW_SECURE_COOKIES=${ALLOW_SECURE_COOKIES:-true}
- DATA_ENCRYPTION_KEY=${DATA_ENCRYPTION_KEY:-mustbeexactry32characterlikethat}
- - REDIRECT_URL=${SERVICE_FQDN_HOPPSCOTCH}
- - WHITELISTED_ORIGINS=${SERVICE_FQDN_HOPPSCOTCH}/backend,${SERVICE_FQDN_HOPPSCOTCH},${SERVICE_FQDN_HOPPSCOTCH}/admin
+ - REDIRECT_URL=${SERVICE_URL_HOPPSCOTCH}
+ - WHITELISTED_ORIGINS=${SERVICE_URL_HOPPSCOTCH}/backend,${SERVICE_URL_HOPPSCOTCH},${SERVICE_URL_HOPPSCOTCH}/admin
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID:-*****}
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET:-*****}
- - GOOGLE_CALLBACK_URL=${SERVICE_FQDN_HOPPSCOTCH}/backend/v1/auth/google/callback
+ - GOOGLE_CALLBACK_URL=${SERVICE_URL_HOPPSCOTCH}/backend/v1/auth/google/callback
- GOOGLE_SCOPE=email,profile
- GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID:-*****}
- GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET:-*****}
- - GITHUB_CALLBACK_URL=${SERVICE_FQDN_HOPPSCOTCH}/backend/v1/auth/github/callback
+ - GITHUB_CALLBACK_URL=${SERVICE_URL_HOPPSCOTCH}/backend/v1/auth/github/callback
- GITHUB_SCOPE=user:email
- MICROSOFT_CLIENT_ID=${MICROSOFT_CLIENT_ID:-*****}
- MICROSOFT_CLIENT_SECRET=${MICROSOFT_CLIENT_SECRET:-*****}
- - MICROSOFT_CALLBACK_URL=${SERVICE_FQDN_HOPPSCOTCH}/backend/v1/auth/microsoft/callback
+ - MICROSOFT_CALLBACK_URL=${SERVICE_URL_HOPPSCOTCH}/backend/v1/auth/microsoft/callback
- MICROSOFT_SCOPE=user.read
- MICROSOFT_TENANT=common
- MAILER_SMTP_ENABLE=${MAILER_SMTP_ENABLE:-false}
@@ -46,12 +46,12 @@ services:
- MAILER_TLS_REJECT_UNAUTHORIZED=${MAILER_TLS_REJECT_UNAUTHORIZED:-false}
- RATE_LIMIT_TTL=${RATE_LIMIT_TTL:-60}
- RATE_LIMIT_MAX=${RATE_LIMIT_MAX:-100}
- - VITE_BASE_URL=${SERVICE_FQDN_HOPPSCOTCH}
- - VITE_SHORTCODE_BASE_URL=${SERVICE_FQDN_HOPPSCOTCH}
- - VITE_ADMIN_URL=${SERVICE_FQDN_HOPPSCOTCH}/admin
- - VITE_BACKEND_GQL_URL=${SERVICE_FQDN_HOPPSCOTCH}/backend/graphql
+ - VITE_BASE_URL=${SERVICE_URL_HOPPSCOTCH}
+ - VITE_SHORTCODE_BASE_URL=${SERVICE_URL_HOPPSCOTCH}
+ - VITE_ADMIN_URL=${SERVICE_URL_HOPPSCOTCH}/admin
+ - VITE_BACKEND_GQL_URL=${SERVICE_URL_HOPPSCOTCH}/backend/graphql
- VITE_BACKEND_WS_URL=wss://${SERVICE_URL_HOPPSCOTCH}/backend/graphql
- - VITE_BACKEND_API_URL=${SERVICE_FQDN_HOPPSCOTCH}/backend/v1
+ - VITE_BACKEND_API_URL=${SERVICE_URL_HOPPSCOTCH}/backend/v1
- VITE_APP_TOS_LINK=https://docs.hoppscotch.io/support/terms
- VITE_APP_PRIVACY_POLICY_LINK=https://docs.hoppscotch.io/support/privacy
- ENABLE_SUBPATH_BASED_ACCESS=true
diff --git a/templates/compose/huly.yaml b/templates/compose/huly.yaml
index e71ef2622..510838abe 100644
--- a/templates/compose/huly.yaml
+++ b/templates/compose/huly.yaml
@@ -39,7 +39,7 @@ services:
account:
image: hardcoreeng/account:v0.6.246
environment:
- - SERVICE_FQDN_HULY_3000
+ - SERVICE_URL_HULY_3000
- SERVER_PORT=3000
- SERVER_SECRET=$SERVICE_PASSWORD_SECRET
- MONGO_URL=mongodb://mongodb:27017
@@ -55,7 +55,7 @@ services:
front:
image: hardcoreeng/front:v0.6.246
environment:
- - SERVICE_FQDN_HULY_8080
+ - SERVICE_URL_HULY_8080
- MONGO_URL=mongodb://mongodb:27017
- SERVER_PORT=8080
- SERVER_SECRET=$SERVICE_PASSWORD_SECRET
diff --git a/templates/compose/immich.yaml b/templates/compose/immich.yaml
index d3b76d116..b3cc2a154 100644
--- a/templates/compose/immich.yaml
+++ b/templates/compose/immich.yaml
@@ -14,7 +14,7 @@ services:
- immich-uploads:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
environment:
- - SERVICE_FQDN_IMMICH_2283
+ - SERVICE_URL_IMMICH_2283
- UPLOAD_LOCATION=./library
- DB_DATA_LOCATION=./postgres
- DB_PASSWORD=$SERVICE_PASSWORD_POSTGRES
diff --git a/templates/compose/infisical.yaml b/templates/compose/infisical.yaml
index fa01d6bee..ac17d6015 100644
--- a/templates/compose/infisical.yaml
+++ b/templates/compose/infisical.yaml
@@ -9,8 +9,8 @@ services:
backend:
image: "infisical/infisical:latest-postgres"
environment:
- - SERVICE_FQDN_BACKEND_8080
- - SITE_URL=${SERVICE_FQDN_BACKEND_8080}
+ - SERVICE_URL_BACKEND_8080
+ - SITE_URL=${SERVICE_URL_BACKEND_8080}
- NODE_ENV=${NODE_ENV:-production}
- ENCRYPTION_KEY=${SERVICE_PASSWORD_ENCRYPTIONKEY}
- AUTH_SECRET=${SERVICE_REALBASE64_64_AUTHSECRET}
diff --git a/templates/compose/invoice-ninja.yaml b/templates/compose/invoice-ninja.yaml
index 4ccd94b6c..52346dad7 100644
--- a/templates/compose/invoice-ninja.yaml
+++ b/templates/compose/invoice-ninja.yaml
@@ -8,10 +8,10 @@ services:
invoice-ninja:
image: invoiceninja/invoiceninja:5
environment:
- - SERVICE_FQDN_INVOICENINJA
+ - SERVICE_URL_INVOICENINJA
- APP_NAME=${APP_NAME:-"Invoice Ninja"}
- APP_ENV=${APP_ENV:-production}
- - APP_URL=${SERVICE_FQDN_INVOICENINJA}
+ - APP_URL=${SERVICE_URL_INVOICENINJA}
- APP_KEY=base64:${SERVICE_REALBASE64_INVOICENINJA}
- APP_DEBUG=${APP_DEBUG:-false}
- REQUIRE_HTTPS=${REQUIRE_HTTPS:-false}
diff --git a/templates/compose/it-tools.yaml b/templates/compose/it-tools.yaml
index b217bd0af..807c8a520 100644
--- a/templates/compose/it-tools.yaml
+++ b/templates/compose/it-tools.yaml
@@ -8,7 +8,7 @@ services:
it-tools:
image: corentinth/it-tools:latest
environment:
- - SERVICE_FQDN_ITTOOLS_80
+ - SERVICE_URL_ITTOOLS_80
volumes:
- it-tools-data:/app/data
healthcheck:
diff --git a/templates/compose/jellyfin.yaml b/templates/compose/jellyfin.yaml
index 293cff444..f8b5773df 100644
--- a/templates/compose/jellyfin.yaml
+++ b/templates/compose/jellyfin.yaml
@@ -8,11 +8,11 @@ services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
environment:
- - SERVICE_FQDN_JELLYFIN_8096
+ - SERVICE_URL_JELLYFIN_8096
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
- - JELLYFIN_PublishedServerUrl=$SERVICE_FQDN_JELLYFIN
+ - JELLYFIN_PublishedServerUrl=$SERVICE_URL_JELLYFIN
volumes:
- jellyfin-config:/config
- jellyfin-tvshows:/data/tvshows
diff --git a/templates/compose/jenkins.yaml b/templates/compose/jenkins.yaml
index 0606bb049..3e8e42751 100644
--- a/templates/compose/jenkins.yaml
+++ b/templates/compose/jenkins.yaml
@@ -8,7 +8,7 @@ services:
jenkins:
image: jenkins/jenkins:latest
environment:
- - SERVICE_FQDN_JENKINS_8080
+ - SERVICE_URL_JENKINS_8080
volumes:
- jenkins-home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
diff --git a/templates/compose/jitsi.yaml b/templates/compose/jitsi.yaml
index e01401171..0360ff1ee 100644
--- a/templates/compose/jitsi.yaml
+++ b/templates/compose/jitsi.yaml
@@ -17,8 +17,8 @@ services:
- ~/.jitsi-meet-cfg/web/crontabs:/var/spool/cron/crontabs:Z
- ~/.jitsi-meet-cfg/transcripts:/usr/share/jitsi-meet/transcripts:Z
environment:
- - SERVICE_FQDN_JITSI
- - PUBLIC_URL=$SERVICE_FQDN_JITSI
+ - SERVICE_URL_JITSI
+ - PUBLIC_URL=$SERVICE_URL_JITSI
- JITSI_IMAGE_VERSION=unstable
- JIBRI_RECORDER_PASSWORD=$SERVICE_PASSWORD_JITSI
- JIBRI_XMPP_PASSWORD=$SERVICE_PASSWORD_JITSI
@@ -52,7 +52,7 @@ services:
environment:
- JICOFO_AUTH_PASSWORD
- JVB_AUTH_PASSWORD
- - PUBLIC_URL=$SERVICE_FQDN_JITSI
+ - PUBLIC_URL=$SERVICE_URL_JITSI
- TZ
networks:
meet.jitsi:
@@ -98,7 +98,7 @@ services:
environment:
- JVB_ADVERTISE_IPS
- JVB_AUTH_PASSWORD
- - PUBLIC_URL=$SERVICE_FQDN_JITSI
+ - PUBLIC_URL=$SERVICE_URL_JITSI
- TZ
- XMPP_SERVER=prosody
depends_on:
diff --git a/templates/compose/joomla-with-mariadb.yaml b/templates/compose/joomla-with-mariadb.yaml
index 8569d2391..c6c030451 100644
--- a/templates/compose/joomla-with-mariadb.yaml
+++ b/templates/compose/joomla-with-mariadb.yaml
@@ -10,7 +10,7 @@ services:
volumes:
- joomla_data:/var/www/html
environment:
- - SERVICE_FQDN_JOOMLA
+ - SERVICE_URL_JOOMLA
- JOOMLA_DB_HOST=mariadb
- JOOMLA_DB_USER=${SERVICE_USER_JOOMLA}
- JOOMLA_DB_PASSWORD=${SERVICE_PASSWORD_JOOMLA}
diff --git a/templates/compose/joplin.yaml b/templates/compose/joplin.yaml
index 9dbfd470c..7791f006d 100644
--- a/templates/compose/joplin.yaml
+++ b/templates/compose/joplin.yaml
@@ -30,8 +30,8 @@ services:
postgres:
condition: service_healthy
environment:
- - SERVICE_FQDN_JOPLIN_22300
- - APP_BASE_URL=${SERVICE_FQDN_JOPLIN}
+ - SERVICE_URL_JOPLIN_22300
+ - APP_BASE_URL=${SERVICE_URL_JOPLIN}
- DB_CLIENT=pg
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_64_POSTGRES}
- POSTGRES_DATABASE=joplin
diff --git a/templates/compose/jupyter-notebook-python.yaml b/templates/compose/jupyter-notebook-python.yaml
index 757136b25..2ad70dee3 100644
--- a/templates/compose/jupyter-notebook-python.yaml
+++ b/templates/compose/jupyter-notebook-python.yaml
@@ -8,7 +8,7 @@ services:
jupyter-notebook-python:
image: quay.io/jupyter/base-notebook:latest
environment:
- - SERVICE_FQDN_JUPYTER_8888
+ - SERVICE_URL_JUPYTER_8888
volumes:
- '/jupyter:/home/jovyan/work'
command: start-notebook.sh
diff --git a/templates/compose/karakeep.yaml b/templates/compose/karakeep.yaml
index a0d5e67ed..1a2a6222c 100644
--- a/templates/compose/karakeep.yaml
+++ b/templates/compose/karakeep.yaml
@@ -10,8 +10,8 @@ services:
volumes:
- karakeep-data:/data
environment:
- - SERVICE_FQDN_KARAKEEP
- - NEXTAUTH_URL=${SERVICE_FQDN_KARAKEEP}
+ - SERVICE_URL_KARAKEEP
+ - NEXTAUTH_URL=${SERVICE_URL_KARAKEEP}
- NEXTAUTH_SECRET=${SERVICE_PASSWORD_KARAKEEPNEXTAUTH}
- MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILI}
- MEILI_ADDR=http://meilisearch:7700
@@ -36,7 +36,7 @@ services:
- MEILI_NO_ANALYTICS=${MEILI_NO_ANALYTICS:-true}
- NEXTAUTH_SECRET=${SERVICE_PASSWORD_KARAKEEPNEXTAUTH}
- MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILI}
- - NEXTAUTH_URL=${SERVICE_FQDN_KARAKEEP}
+ - NEXTAUTH_URL=${SERVICE_URL_KARAKEEP}
volumes:
- karakeep-meilisearch:/meili_data
healthcheck:
diff --git a/templates/compose/keycloak-with-postgres.yaml b/templates/compose/keycloak-with-postgres.yaml
index c58f97387..3c5730014 100644
--- a/templates/compose/keycloak-with-postgres.yaml
+++ b/templates/compose/keycloak-with-postgres.yaml
@@ -10,7 +10,7 @@ services:
command:
- start
environment:
- - SERVICE_FQDN_KEYCLOAK_8080
+ - SERVICE_URL_KEYCLOAK_8080
- TZ=${TIMEZONE:-UTC}
- KC_BOOTSTRAP_ADMIN_USERNAME=${SERVICE_USER_ADMIN}
- KC_BOOTSTRAP_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
@@ -19,7 +19,7 @@ services:
- KC_DB_PASSWORD=${SERVICE_PASSWORD_64_DATABASE}
- KC_DB_URL_PORT=5432
- KC_DB_URL=jdbc:postgresql://postgres/${POSTGRESQL_DATABASE:-keycloak}
- - KC_HOSTNAME=${SERVICE_FQDN_KEYCLOAK}
+ - KC_HOSTNAME=${SERVICE_URL_KEYCLOAK}
- KC_HTTP_ENABLED=${KC_HTTP_ENABLED:-true}
- KC_HEALTH_ENABLED=${KC_HEALTH_ENABLED:-true}
- KC_PROXY_HEADERS=${KC_PROXY_HEADERS:-xforwarded}
diff --git a/templates/compose/keycloak.yaml b/templates/compose/keycloak.yaml
index 1f5ebb6a3..6a55077a7 100644
--- a/templates/compose/keycloak.yaml
+++ b/templates/compose/keycloak.yaml
@@ -10,11 +10,11 @@ services:
command:
- start
environment:
- - SERVICE_FQDN_KEYCLOAK_8080
+ - SERVICE_URL_KEYCLOAK_8080
- TZ=${TIMEZONE:-UTC}
- KC_BOOTSTRAP_ADMIN_USERNAME=${SERVICE_USER_ADMIN}
- KC_BOOTSTRAP_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
- - KC_HOSTNAME=${SERVICE_FQDN_KEYCLOAK}
+ - KC_HOSTNAME=${SERVICE_URL_KEYCLOAK}
- KC_HTTP_ENABLED=${KC_HTTP_ENABLED:-true}
- KC_HEALTH_ENABLED=${KC_HEALTH_ENABLED:-true}
- KC_PROXY_HEADERS=${KC_PROXY_HEADERS:-xforwarded}
diff --git a/templates/compose/kimai.yaml b/templates/compose/kimai.yaml
index c2edf0b62..ac8b1f3de 100644
--- a/templates/compose/kimai.yaml
+++ b/templates/compose/kimai.yaml
@@ -29,7 +29,7 @@ services:
volumes:
- kimai-data:/opt/kimai/var/data
environment:
- - SERVICE_FQDN_KIMAI_8001
+ - SERVICE_URL_KIMAI_8001
- APP_SECRET=${SERVICE_PASSWORD_APPSECRET}
- MAILER_FROM=${MAILER_FROM:-kimai@example.com}
- MAILER_URL=${MAILER_URL:-null://null}
diff --git a/templates/compose/kuzzle.yaml b/templates/compose/kuzzle.yaml
index a195cc600..10d520e02 100644
--- a/templates/compose/kuzzle.yaml
+++ b/templates/compose/kuzzle.yaml
@@ -29,7 +29,7 @@ services:
kuzzle:
image: kuzzleio/kuzzle:latest
environment:
- - SERVICE_FQDN_KUZZLE_7512
+ - SERVICE_URL_KUZZLE_7512
- kuzzle_services__storageEngine__client__node=http://elasticsearch:9200
- kuzzle_services__storageEngine__commonMapping__dynamic=true
- kuzzle_services__internalCache__node__host=redis
diff --git a/templates/compose/labelstudio.yaml b/templates/compose/labelstudio.yaml
index 62ea4f9cc..4d6fa6853 100644
--- a/templates/compose/labelstudio.yaml
+++ b/templates/compose/labelstudio.yaml
@@ -11,8 +11,8 @@ services:
postgres:
condition: service_healthy
environment:
- - SERVICE_FQDN_LABELSTUDIO_8080
- - CSRF_TRUSTED_ORIGINS=${SERVICE_FQDN_LABELSTUDIO}
+ - SERVICE_URL_LABELSTUDIO_8080
+ - CSRF_TRUSTED_ORIGINS=${SERVICE_URL_LABELSTUDIO}
- EXPERIMENTAL_FEATURES=${EXPERIMENTAL_FEATURES:-false}
- DJANGO_DB=${DJANGO_DB:-default}
- POSTGRE_NAME=${POSTGRES_DB:-labelstudio}
@@ -20,7 +20,7 @@ services:
- POSTGRE_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
- POSTGRE_PORT=5432
- POSTGRE_HOST=postgres
- - LABEL_STUDIO_HOST=${SERVICE_FQDN_LABELSTUDIO}
+ - LABEL_STUDIO_HOST=${SERVICE_URL_LABELSTUDIO}
- SSRF_PROTECTION_ENABLED=${SSRF_PROTECTION_ENABLED:-true}
- LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINK=${LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINK:-true}
- DATA_UPLOAD_MAX_NUMBER_FILES=${DATA_UPLOAD_MAX_NUMBER_FILES:-10000}
diff --git a/templates/compose/langfuse.yaml b/templates/compose/langfuse.yaml
index ddfa8b944..bf975178d 100644
--- a/templates/compose/langfuse.yaml
+++ b/templates/compose/langfuse.yaml
@@ -5,7 +5,7 @@
# port: 3000
x-app-env: &app-env
- - NEXTAUTH_URL=${SERVICE_FQDN_LANGFUSE}
+ - NEXTAUTH_URL=${SERVICE_URL_LANGFUSE}
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse-db}
- SALT=${SERVICE_PASSWORD_SALT}
- ENCRYPTION_KEY=${SERVICE_PASSWORD_64_LANGFUSE}
@@ -70,7 +70,7 @@ services:
condition: service_healthy
environment:
<<: *app-env
- SERVICE_FQDN_LANGFUSE_3000: ${SERVICE_FQDN_LANGFUSE_3000}
+ SERVICE_URL_LANGFUSE_3000: ${SERVICE_URL_LANGFUSE_3000}
healthcheck:
test:
- CMD
diff --git a/templates/compose/leantime.yaml b/templates/compose/leantime.yaml
index 60d3c061b..67f7c1fb9 100644
--- a/templates/compose/leantime.yaml
+++ b/templates/compose/leantime.yaml
@@ -8,8 +8,8 @@ services:
leantime:
image: leantime/leantime:latest
environment:
- - SERVICE_FQDN_LEANTIME_8080
- - LEAN_APP_URL=${SERVICE_FQDN_LEANTIME}
+ - SERVICE_URL_LEANTIME_8080
+ - LEAN_APP_URL=${SERVICE_URL_LEANTIME}
- LEAN_DB_HOST=mysql
- LEAN_DB_USER=${SERVICE_USER_MYSQLDB}
- LEAN_DB_PASSWORD=${SERVICE_PASSWORD_MYSQLDB}
diff --git a/templates/compose/librechat.yaml b/templates/compose/librechat.yaml
new file mode 100644
index 000000000..1c4b59618
--- /dev/null
+++ b/templates/compose/librechat.yaml
@@ -0,0 +1,155 @@
+# documentation: https://docs.librechat.ai/install/configuration/dotenv.html
+# slogan: Self-hosted, powerful, and privacy-focused chat UI for multiple AI models
+# tags: ai,chat,gpt,claude,palm,openai,azure,huggingface,anthropic,ollama,llm
+# logo: svgs/librechat.svg
+# port: 3080
+
+services:
+ librechat:
+ image: ghcr.io/danny-avila/librechat-dev-api:latest
+ environment:
+ - SERVICE_URL_LIBRECHAT_3080
+ - DOMAIN_CLIENT=${SERVICE_URL_LIBRECHAT}
+ - DOMAIN_SERVER=${SERVICE_URL_LIBRECHAT}
+ - HOST=0.0.0.0
+ - PORT=3080
+ - MONGO_URI=mongodb://${SERVICE_USER_MONGO}:${SERVICE_PASSWORD_MONGO}@mongodb:27017/librechat?authSource=admin
+ - MEILI_HOST=http://meilisearch:7700
+ - MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILI}
+ - RAG_PORT=8000
+ - RAG_API_URL=http://rag-api:8000
+ - JWT_SECRET=${SERVICE_PASSWORD_JWT}
+ - JWT_REFRESH_SECRET=${SERVICE_PASSWORD_64_JWT}
+ - APP_TITLE=${APP_TITLE:-LibreChat}
+ - ALLOW_EMAIL_LOGIN=${ALLOW_EMAIL_LOGIN:-true}
+ - ALLOW_REGISTRATION=${ALLOW_REGISTRATION:-true}
+ - ALLOW_SOCIAL_LOGIN=${ALLOW_SOCIAL_LOGIN:-false}
+ - ALLOW_SOCIAL_REGISTRATION=${ALLOW_SOCIAL_REGISTRATION:-false}
+ - ALLOW_PASSWORD_RESET=${ALLOW_PASSWORD_RESET:-false}
+ - ALLOW_UNVERIFIED_EMAIL_LOGIN=${ALLOW_UNVERIFIED_EMAIL_LOGIN:-true}
+ - CREDS_KEY=${SERVICE_PASSWORD_64_CREDS}
+ - CREDS_IV=${SERVICE_PASSWORD_CREDS}
+ - ANTHROPIC_API_KEY=${SERVICE_ANTHROPIC_API_KEY:-user_provided}
+ - GOOGLE_KEY=${SERVICE_GOOGLE_API_KEY:-user_provided}
+ - OPENAI_API_KEY=${SERVICE_OPENAI_API_KEY:-user_provided}
+ - ASSISTANTS_API_KEY=${SERVICE_ASSISTANTS_API_KEY:-user_provided}
+ - DEBUG_LOGGING=${DEBUG_LOGGING:-false}
+ - DEBUG_OPENAI=${DEBUG_OPENAI:-false}
+ - DEBUG_PLUGINS=${DEBUG_OPENAI:-false}
+ - NO_INDEX=${NO_INDEX:-true}
+ volumes:
+ - librechat-images:/app/client/public/images
+ - librechat-logs:/app/api/logs
+ - librechat-uploads:/app/uploads
+ - type: bind
+ source: ./librechat.yaml
+ target: /app/librechat.yaml
+ content: |
+ version: 1.2.8
+ depends_on:
+ mongodb:
+ condition: service_healthy
+ meilisearch:
+ condition: service_healthy
+ vectordb:
+ condition: service_healthy
+ rag-api:
+ condition: service_healthy
+ healthcheck:
+ test:
+ [
+ "CMD",
+ "wget",
+ "--no-verbose",
+ "--tries=1",
+ "--spider",
+ "http://127.0.0.1:3080/api/health",
+ ]
+ interval: 5s
+ timeout: 10s
+ retries: 5
+
+ mongodb:
+ image: mongo:8
+ environment:
+ - MONGO_INITDB_ROOT_USERNAME=${SERVICE_USER_MONGO}
+ - MONGO_INITDB_ROOT_PASSWORD=${SERVICE_PASSWORD_MONGO}
+ volumes:
+ - mongodb-data:/data/db
+ healthcheck:
+ test:
+ [
+ "CMD",
+ "mongosh",
+ "--eval",
+ "db.runCommand('ping').ok",
+ "127.0.0.1:27017/test",
+ "--quiet",
+ ]
+ interval: 5s
+ timeout: 10s
+ retries: 3
+
+ meilisearch:
+ image: getmeili/meilisearch:v1.12.3
+ environment:
+ - MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILI}
+ - MEILI_NO_ANALYTICS=${MEILI_NO_ANALYTICS:-false}
+ - MEILI_ENV=production
+ - MEILI_HOST=http://meilisearch:7700
+ volumes:
+ - meilisearch-data:/meili_data
+ healthcheck:
+ test: ["CMD", "curl", "-f", "http://127.0.0.1:7700/health"]
+ interval: 2s
+ timeout: 10s
+ retries: 15
+
+ vectordb:
+ image: ankane/pgvector:latest
+ environment:
+ - POSTGRES_DB=rag
+ - POSTGRES_USER=${SERVICE_USER_POSTGRES}
+ - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
+ - POSTGRES_HOST_AUTH_METHOD=trust
+ volumes:
+ - vectordb-data:/var/lib/postgresql/data
+ healthcheck:
+ test:
+ - CMD
+ - pg_isready
+ - "--username=$SERVICE_USER_POSTGRES"
+ - "--host=127.0.0.1"
+ - "--port=5432"
+ - "--dbname=rag"
+ interval: 2s
+ timeout: 1m
+ retries: 5
+ start_period: 10s
+
+ rag-api:
+ image: ghcr.io/danny-avila/librechat-rag-api-dev-lite:latest
+ environment:
+ - POSTGRES_DB=rag
+ - POSTGRES_USER=${SERVICE_USER_POSTGRES}
+ - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
+ - DB_HOST=vectordb
+ - DB_USER=${SERVICE_USER_POSTGRES}
+ - DB_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
+ - DB_NAME=rag
+ - RAG_PORT=8000
+ - RAG_OPENAI_API_KEY=${SERVICE_OPENAI_API_KEY:-user_provided}
+ depends_on:
+ vectordb:
+ condition: service_healthy
+ healthcheck:
+ test:
+ [
+ "CMD",
+ "python",
+ "-c",
+ "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health')",
+ ]
+ interval: 5s
+ timeout: 10s
+ retries: 10
diff --git a/templates/compose/libreoffice.yaml b/templates/compose/libreoffice.yaml
index 7f8745d8b..a63c000b6 100644
--- a/templates/compose/libreoffice.yaml
+++ b/templates/compose/libreoffice.yaml
@@ -8,7 +8,7 @@ services:
libreoffice:
image: lscr.io/linuxserver/libreoffice:latest
environment:
- - SERVICE_FQDN_LIBREOFFICE_3000
+ - SERVICE_URL_LIBREOFFICE_3000
- PUID=${PUID:-1000}
- PGID=${PGID:-1000}
- TZ=${TZ:-Etc/UTC}
diff --git a/templates/compose/libretranslate.yaml b/templates/compose/libretranslate.yaml
index 6b387b63f..88ff85366 100644
--- a/templates/compose/libretranslate.yaml
+++ b/templates/compose/libretranslate.yaml
@@ -8,7 +8,7 @@ services:
libretranslate:
image: "libretranslate/libretranslate:latest"
environment:
- - SERVICE_FQDN_LIBRETRANSLATE_5000
+ - SERVICE_URL_LIBRETRANSLATE_5000
- LT_SSL=${LT_SSL:-true}
- LT_UPDATE_MODELS=${LT_UPDATE_MODELS:-true}
- LT_LOAD_ONLY=${LT_LOAD_ONLY:-en,es,fr,de,ja}
diff --git a/templates/compose/limesurvey.yaml b/templates/compose/limesurvey.yaml
index edd5a6542..d0bb8a4fb 100644
--- a/templates/compose/limesurvey.yaml
+++ b/templates/compose/limesurvey.yaml
@@ -8,7 +8,7 @@ services:
limesurvey:
image: adamzammit/limesurvey:latest
environment:
- - SERVICE_FQDN_LIMESURVEY_80
+ - SERVICE_URL_LIMESURVEY_80
- LIMESURVEY_DB_HOST=mariadb
- LIMESURVEY_DB_PASSWORD=${SERVICE_PASSWORD_MYSQL}
- LIMESURVEY_DB_USER=${SERVICE_USER_MYSQL}
diff --git a/templates/compose/listmonk.yaml b/templates/compose/listmonk.yaml
index b5b285131..6b49af252 100644
--- a/templates/compose/listmonk.yaml
+++ b/templates/compose/listmonk.yaml
@@ -8,7 +8,7 @@ services:
listmonk:
image: listmonk/listmonk:latest
environment:
- - SERVICE_FQDN_LISTMONK_9000
+ - SERVICE_URL_LISTMONK_9000
- LISTMONK_app__address=0.0.0.0:9000
- LISTMONK_db__host=postgres
- LISTMONK_db__name=listmonk
diff --git a/templates/compose/litellm.yaml b/templates/compose/litellm.yaml
index ffdce1258..35b99e4d9 100644
--- a/templates/compose/litellm.yaml
+++ b/templates/compose/litellm.yaml
@@ -13,7 +13,7 @@ services:
redis:
condition: service_healthy
environment:
- - SERVICE_FQDN_LITELLM_4000
+ - SERVICE_URL_LITELLM_4000
- LITELLM_LOG=${LITELLM_LOG:-ERROR}
- LITELLM_MODE=${LITELLM_MODE:-PRODUCTION}
- LITELLM_MASTER_KEY=${SERVICE_PASSWORD_MASTERKEY}
diff --git a/templates/compose/litequeen.yaml b/templates/compose/litequeen.yaml
index 01530125b..4765b4341 100644
--- a/templates/compose/litequeen.yaml
+++ b/templates/compose/litequeen.yaml
@@ -8,7 +8,7 @@ services:
litequeen:
image: kivsegrob/lite-queen:latest
environment:
- - SERVICE_FQDN_LITEQUEEN_8000
+ - SERVICE_URL_LITEQUEEN_8000
volumes:
- litequeen-data:/home/litequeen/data
- type: bind
diff --git a/templates/compose/logto.yaml b/templates/compose/logto.yaml
index 52f2f3b1b..9e84b8e02 100644
--- a/templates/compose/logto.yaml
+++ b/templates/compose/logto.yaml
@@ -11,7 +11,7 @@ services:
condition: service_healthy
entrypoint: ["sh", "-c", "npm run cli db seed -- --swe && npm start"]
environment:
- - SERVICE_FQDN_LOGTO
+ - SERVICE_URL_LOGTO
- TRUST_PROXY_HEADER=1
- DB_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-logto}
# Mandatory for GitPod to map host env to the container, thus GitPod can dynamically configure the public URL of Logto;
diff --git a/templates/compose/lowcoder.yaml b/templates/compose/lowcoder.yaml
index 7cf10b99f..8780a17e6 100644
--- a/templates/compose/lowcoder.yaml
+++ b/templates/compose/lowcoder.yaml
@@ -8,7 +8,7 @@ services:
lowcoder:
image: lowcoderorg/lowcoder-ce
environment:
- - SERVICE_FQDN_LOWCODER_3000
+ - SERVICE_URL_LOWCODER_3000
- LOWCODER_EMAIL_SIGNUP_ENABLED=${LOWCODER_EMAIL_SIGNUP_ENABLED:-true}
- LOWCODER_DB_ENCRYPTION_PASSWORD=${SERVICE_PASSWORD_ENCRYPTION}
- LOWCODER_DB_ENCRYPTION_SALT=${SERVICE_PASSWORD_SALT}
diff --git a/templates/compose/macos.yaml b/templates/compose/macos.yaml
index ab05cece5..c3f5ef6ac 100644
--- a/templates/compose/macos.yaml
+++ b/templates/compose/macos.yaml
@@ -11,7 +11,7 @@ services:
volumes:
- macos-storage:/storage
environment:
- - SERVICE_FQDN_MACOS_8006
+ - SERVICE_URL_MACOS_8006
- VERSION=15
devices:
- /dev/kvm:/dev/kvm
diff --git a/templates/compose/mailpit.yaml b/templates/compose/mailpit.yaml
index c136696a9..a76557e89 100644
--- a/templates/compose/mailpit.yaml
+++ b/templates/compose/mailpit.yaml
@@ -17,7 +17,7 @@ services:
isDirectory: false
content: ""
environment:
- - SERVICE_FQDN_MAILPIT_8025
+ - SERVICE_URL_MAILPIT_8025
- MP_MAX_MESSAGES=5000
- MP_DATABASE=/data/mailpit.db
- MP_SMTP_AUTH_ACCEPT_ANY=1
diff --git a/templates/compose/marimo.yml b/templates/compose/marimo.yml
index be95f0b2b..f014c518d 100644
--- a/templates/compose/marimo.yml
+++ b/templates/compose/marimo.yml
@@ -8,7 +8,7 @@ services:
marimo:
image: ghcr.io/marimo-team/marimo:latest-sql
environment:
- - SERVICE_FQDN_MARIMO_8080
+ - SERVICE_URL_MARIMO_8080
- TOKEN_PASSWORD=$SERVICE_PASSWORD_MARIMO
volumes:
- "marimo:/app"
diff --git a/templates/compose/martin.yaml b/templates/compose/martin.yaml
index a56ebe12c..215023c08 100644
--- a/templates/compose/martin.yaml
+++ b/templates/compose/martin.yaml
@@ -8,8 +8,8 @@ services:
martin:
image: ghcr.io/maplibre/martin:v0.13.0
environment:
- - SERVICE_FQDN_MARTIN_3000
- - HOST=${SERVICE_FQDN_MARTIN}
+ - SERVICE_URL_MARTIN_3000
+ - HOST=${SERVICE_URL_MARTIN}
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql:5432/${POSTGRES_DB:-martin-db}
depends_on:
postgresql:
diff --git a/templates/compose/matrix.yaml b/templates/compose/matrix.yaml
index efaf505c2..89f199967 100644
--- a/templates/compose/matrix.yaml
+++ b/templates/compose/matrix.yaml
@@ -8,7 +8,7 @@ services:
matrix:
image: matrixdotorg/synapse:latest
environment:
- - SERVICE_FQDN_MATRIX_8008
+ - SERVICE_URL_MATRIX_8008
- SYNAPSE_SERVER_NAME=${SERVICE_URL_MATRIX}
- SYNAPSE_REPORT_STATS=${SYNAPSE_REPORT_STATS:-no}
- ENABLE_REGISTRATION=${ENABLE_REGISTRATION:-false}
diff --git a/templates/compose/mattermost.yaml b/templates/compose/mattermost.yaml
index 047be5b8d..b02f906c6 100644
--- a/templates/compose/mattermost.yaml
+++ b/templates/compose/mattermost.yaml
@@ -16,8 +16,8 @@ services:
- 'mattermost-data-client-plugins:/mattermost/client/plugins:rw'
- 'mattermost-data-bleve-indexes:/mattermost/bleve-indexes:rw'
environment:
- - SERVICE_FQDN_MATTERMOST_8065
- - MM_SERVICESETTINGS_SITEURL=${SERVICE_FQDN_MATTERMOST}
+ - SERVICE_URL_MATTERMOST_8065
+ - MM_SERVICESETTINGS_SITEURL=${SERVICE_URL_MATTERMOST}
- TZ=${TZ:-UTC}
- MM_SQLSETTINGS_DRIVERNAME=postgres
- MM_SQLSETTINGS_DATASOURCE=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgres:5432/$POSTGRES_DB?sslmode=disable&connect_timeout=10
diff --git a/templates/compose/mautic5.yaml b/templates/compose/mautic5.yaml
index a7951cbac..6ea4d5c19 100644
--- a/templates/compose/mautic5.yaml
+++ b/templates/compose/mautic5.yaml
@@ -43,7 +43,7 @@ services:
- 'mautic_data/bin:/var/www/html/bin:z'
- 'mautic_data/cron:/opt/mautic/cron:z'
environment:
- - SERVICE_FQDN_MAUTIC_80
+ - SERVICE_URL_MAUTIC_80
- 'DOCKER_MAUTIC_LOAD_TEST_DATA=${MAUTIC_LOAD_TEST_DATA:-false}'
- 'DOCKER_MAUTIC_RUN_MIGRATIONS=${MAUTIC_RUN_MIGRATIONS:-false}'
- 'MAUTIC_DB_HOST=${MYSQL_HOST:-mysql}'
diff --git a/templates/compose/maybe.yaml b/templates/compose/maybe.yaml
index 2bc5eb1e7..167ecc3e0 100644
--- a/templates/compose/maybe.yaml
+++ b/templates/compose/maybe.yaml
@@ -10,7 +10,7 @@ services:
volumes:
- app_storage:/rails/storage
environment:
- - SERVICE_FQDN_MAYBE
+ - SERVICE_URL_MAYBE
- SELF_HOSTED=true
- RAILS_FORCE_SSL=${RAILS_FORCE_SSL:-false}
- RAILS_ASSUME_SSL=${RAILS_ASSUME_SSL:-false}
diff --git a/templates/compose/mealie.yaml b/templates/compose/mealie.yaml
index 2cf66de3c..a98cfd65d 100644
--- a/templates/compose/mealie.yaml
+++ b/templates/compose/mealie.yaml
@@ -8,7 +8,7 @@ services:
mealie:
image: 'ghcr.io/mealie-recipes/mealie:latest'
environment:
- - SERVICE_FQDN_MEALIE_9000
+ - SERVICE_URL_MEALIE_9000
- ALLOW_SIGNUP=${ALLOW_SIGNUP:-true}
- PUID=${PUID:-1000}
- PGID=${PGID:-1000}
diff --git a/templates/compose/mediawiki.yaml b/templates/compose/mediawiki.yaml
index 12d9ec511..c94d938bb 100644
--- a/templates/compose/mediawiki.yaml
+++ b/templates/compose/mediawiki.yaml
@@ -8,7 +8,7 @@ services:
mediawiki:
image: mediawiki:latest
environment:
- - SERVICE_FQDN_MEDIAWIKI_80
+ - SERVICE_URL_MEDIAWIKI_80
volumes:
- mediawiki-images:/var/www/html/images
- mediawiki-sqlite:/var/www/html/data
diff --git a/templates/compose/meilisearch.yaml b/templates/compose/meilisearch.yaml
index 4484b9c74..3169e9100 100644
--- a/templates/compose/meilisearch.yaml
+++ b/templates/compose/meilisearch.yaml
@@ -8,7 +8,7 @@ services:
meilisearch:
image: getmeili/meilisearch:latest
environment:
- - SERVICE_FQDN_MEILISEARCH_7700
+ - SERVICE_URL_MEILISEARCH_7700
- MEILI_NO_ANALYTICS=${MEILI_NO_ANALYTICS:-true}
- MEILI_ENV=${MEILI_ENV:-production}
- MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILISEARCH}
diff --git a/templates/compose/memos.yaml b/templates/compose/memos.yaml
index 32bc2f297..d3f1f15fb 100644
--- a/templates/compose/memos.yaml
+++ b/templates/compose/memos.yaml
@@ -10,4 +10,4 @@ services:
volumes:
- memos/:/var/opt/memos
environment:
- - SERVICE_FQDN_MEMOS_5230
+ - SERVICE_URL_MEMOS_5230
diff --git a/templates/compose/metabase.yaml b/templates/compose/metabase.yaml
index a039873d7..1e04239c2 100644
--- a/templates/compose/metabase.yaml
+++ b/templates/compose/metabase.yaml
@@ -10,7 +10,7 @@ services:
volumes:
- /dev/urandom:/dev/random:ro
environment:
- - SERVICE_FQDN_METABASE_3000
+ - SERVICE_URL_METABASE_3000
- MB_DB_TYPE=postgres
- MB_DB_HOST=postgresql
- MB_DB_PORT=5432
diff --git a/templates/compose/metube.yaml b/templates/compose/metube.yaml
index 9021f9280..a802baf40 100644
--- a/templates/compose/metube.yaml
+++ b/templates/compose/metube.yaml
@@ -7,7 +7,7 @@ services:
metube:
image: ghcr.io/alexta69/metube:latest
environment:
- - SERVICE_FQDN_METUBE_8081
+ - SERVICE_URL_METUBE_8081
- UID=1000
- GID=1000
volumes:
diff --git a/templates/compose/mindsdb.yaml b/templates/compose/mindsdb.yaml
index 72dc5a2d0..d1f83c2ac 100644
--- a/templates/compose/mindsdb.yaml
+++ b/templates/compose/mindsdb.yaml
@@ -8,8 +8,8 @@ services:
mindsdb:
image: mindsdb/mindsdb:latest
environment:
- - SERVICE_FQDN_MINDSDB_47334
- - SERVICE_FQDN_API_47335=/api
+ - SERVICE_URL_MINDSDB_47334
+ - SERVICE_URL_API_47335=/api
- MINDSDB_DOCKER_ENV=true
- MINDSDB_STORAGE_DIR=/mindsdb/var
- FLASK_DEBUG=${FLASK_DEBUG:-1} # This will make sure http requests are logged regardless of log level
diff --git a/templates/compose/miniflux.yaml b/templates/compose/miniflux.yaml
index 10fa75b63..3bc39bb10 100644
--- a/templates/compose/miniflux.yaml
+++ b/templates/compose/miniflux.yaml
@@ -8,8 +8,8 @@ services:
miniflux:
image: ghcr.io/miniflux/miniflux:latest
environment:
- - SERVICE_FQDN_MINIFLUX
- - BASE_URL=${SERVICE_FQDN_MINIFLUX}
+ - SERVICE_URL_MINIFLUX
+ - BASE_URL=${SERVICE_URL_MINIFLUX}
- PORT=${PORT:-8080}
- RUN_MIGRATIONS=${RUN_MIGRATIONS:-1}
- CREATE_ADMIN=${CREATE_ADMIN:-1}
diff --git a/templates/compose/mixpost.yaml b/templates/compose/mixpost.yaml
index ceab3561b..5f7db84d5 100644
--- a/templates/compose/mixpost.yaml
+++ b/templates/compose/mixpost.yaml
@@ -8,12 +8,12 @@ services:
mixpost:
image: 'inovector/mixpost:latest'
environment:
- - SERVICE_FQDN_MIXPOST
+ - SERVICE_URL_MIXPOST
- APP_NAME=Mixpost
- APP_KEY=${SERVICE_BASE64_MIXPOST}
- APP_DEBUG=false
- APP_DOMAIN=${SERVICE_URL_MIXPOST}
- - APP_URL=${SERVICE_FQDN_MIXPOST}
+ - APP_URL=${SERVICE_URL_MIXPOST}
- DB_DATABASE=${MYSQL_DATABASE:-mixpost_db}
- DB_USERNAME=${SERVICE_USER_MYSQL}
- DB_PASSWORD=${SERVICE_PASSWORD_MYSQL}
diff --git a/templates/compose/moodle.yaml b/templates/compose/moodle.yaml
index fb7f5e4f8..8e7417ab4 100644
--- a/templates/compose/moodle.yaml
+++ b/templates/compose/moodle.yaml
@@ -21,7 +21,7 @@ services:
moodle:
image: docker.io/bitnami/moodle:4.3
environment:
- - SERVICE_FQDN_MOODLE_8080
+ - SERVICE_URL_MOODLE_8080
- MOODLE_DATABASE_HOST=mariadb
- MOODLE_DATABASE_PORT_NUMBER=3306
- MOODLE_DATABASE_USER=$SERVICE_USER_MARIADB
diff --git a/templates/compose/mosquitto.yaml b/templates/compose/mosquitto.yaml
index 475d7cf39..93c885838 100644
--- a/templates/compose/mosquitto.yaml
+++ b/templates/compose/mosquitto.yaml
@@ -8,7 +8,7 @@ services:
mosquitto:
image: eclipse-mosquitto
environment:
- - SERVICE_FQDN_MOSQUITTO_1883
+ - SERVICE_URL_MOSQUITTO_1883
- MQTT_USERNAME=${SERVICE_USER_MOSQUITTO}
- MQTT_PASSWORD=${SERVICE_PASSWORD_MOSQUITTO}
- REQUIRE_CERTIFICATE=${REQUIRE_CERTIFICATE:-false}
diff --git a/templates/compose/n8n-with-postgresql.yaml b/templates/compose/n8n-with-postgresql.yaml
index e5d327112..e5ad52aa2 100644
--- a/templates/compose/n8n-with-postgresql.yaml
+++ b/templates/compose/n8n-with-postgresql.yaml
@@ -8,9 +8,9 @@ services:
n8n:
image: docker.n8n.io/n8nio/n8n
environment:
- - SERVICE_FQDN_N8N_5678
- - N8N_EDITOR_BASE_URL=${SERVICE_FQDN_N8N}
- - WEBHOOK_URL=${SERVICE_FQDN_N8N}
+ - SERVICE_URL_N8N_5678
+ - N8N_EDITOR_BASE_URL=${SERVICE_URL_N8N}
+ - WEBHOOK_URL=${SERVICE_URL_N8N}
- N8N_HOST=${SERVICE_URL_N8N}
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE:-Europe/Berlin}
- TZ=${TZ:-Europe/Berlin}
diff --git a/templates/compose/n8n.yaml b/templates/compose/n8n.yaml
index 396be21bc..d8b8025c2 100644
--- a/templates/compose/n8n.yaml
+++ b/templates/compose/n8n.yaml
@@ -8,9 +8,9 @@ services:
n8n:
image: docker.n8n.io/n8nio/n8n
environment:
- - SERVICE_FQDN_N8N_5678
- - N8N_EDITOR_BASE_URL=${SERVICE_FQDN_N8N}
- - WEBHOOK_URL=${SERVICE_FQDN_N8N}
+ - SERVICE_URL_N8N_5678
+ - N8N_EDITOR_BASE_URL=${SERVICE_URL_N8N}
+ - WEBHOOK_URL=${SERVICE_URL_N8N}
- N8N_HOST=${SERVICE_URL_N8N}
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE:-Europe/Berlin}
- TZ=${TZ:-Europe/Berlin}
diff --git a/templates/compose/navidrome.yaml b/templates/compose/navidrome.yaml
index 7d01a6374..6fc88e984 100644
--- a/templates/compose/navidrome.yaml
+++ b/templates/compose/navidrome.yaml
@@ -9,8 +9,8 @@ services:
image: deluan/navidrome:latest
restart: unless-stopped
environment:
- - SERVICE_FQDN_NAVIDROME_4533
- - ND_BASEURL=${SERVICE_FQDN_NAVIDROME}
+ - SERVICE_URL_NAVIDROME_4533
+ - ND_BASEURL=${SERVICE_URL_NAVIDROME}
- ND_SCANSCHEDULE=${ND_SCANSCHEDULE:-1h}
- ND_LOGLEVEL=${ND_LOGLEVEL:-info}
- ND_SESSIONTIMEOUT=${ND_SESSIONTIMEOUT:-24h}
diff --git a/templates/compose/neon-ws-proxy.yaml b/templates/compose/neon-ws-proxy.yaml
index cd1f13b3f..7123c8ddf 100644
--- a/templates/compose/neon-ws-proxy.yaml
+++ b/templates/compose/neon-ws-proxy.yaml
@@ -8,8 +8,8 @@ services:
neon-proxy:
image: 'ghcr.io/neondatabase/wsproxy:latest'
environment:
- - SERVICE_FQDN_NEONPROXY
- - SERVICE_FQDN_NEONPROMETHEUS_2112
+ - SERVICE_URL_NEONPROXY
+ - SERVICE_URL_NEONPROMETHEUS_2112
- 'APPEND_PORT=postgres:5432'
- 'ALLOW_ADDR_REGEX=.*'
- LOG_TRAFFIC=false
diff --git a/templates/compose/next-image-transformation.yaml b/templates/compose/next-image-transformation.yaml
index 8eac0799d..78ac0a6d2 100644
--- a/templates/compose/next-image-transformation.yaml
+++ b/templates/compose/next-image-transformation.yaml
@@ -8,7 +8,7 @@ services:
next-image-transformation:
image: ghcr.io/coollabsio/next-image-transformation:latest
environment:
- - SERVICE_FQDN_TRANSFORMATION_3000
+ - SERVICE_URL_TRANSFORMATION_3000
- NODE_ENV=production
- ALLOWED_REMOTE_DOMAINS=${ALLOWED_REMOTE_DOMAINS:-*}
- IMGPROXY_URL=${IMGPROXY_URL:-http://imgproxy:8080}
diff --git a/templates/compose/nextcloud-with-mariadb.yaml b/templates/compose/nextcloud-with-mariadb.yaml
index 5cab4f0bb..06b898241 100644
--- a/templates/compose/nextcloud-with-mariadb.yaml
+++ b/templates/compose/nextcloud-with-mariadb.yaml
@@ -8,7 +8,7 @@ services:
nextcloud:
image: lscr.io/linuxserver/nextcloud:latest
environment:
- - SERVICE_FQDN_NEXTCLOUD_80
+ - SERVICE_URL_NEXTCLOUD_80
- PUID=1000
- PGID=1000
- TZ=${TZ:-Europe/Paris}
diff --git a/templates/compose/nextcloud-with-mysql.yaml b/templates/compose/nextcloud-with-mysql.yaml
index f8f6b972f..55683262d 100644
--- a/templates/compose/nextcloud-with-mysql.yaml
+++ b/templates/compose/nextcloud-with-mysql.yaml
@@ -8,7 +8,7 @@ services:
nextcloud:
image: lscr.io/linuxserver/nextcloud:latest
environment:
- - SERVICE_FQDN_NEXTCLOUD_80
+ - SERVICE_URL_NEXTCLOUD_80
- PUID=1000
- PGID=1000
- TZ=${TZ:-Europe/Paris}
diff --git a/templates/compose/nextcloud-with-postgres.yaml b/templates/compose/nextcloud-with-postgres.yaml
index 503fb4b82..98b56ecd3 100644
--- a/templates/compose/nextcloud-with-postgres.yaml
+++ b/templates/compose/nextcloud-with-postgres.yaml
@@ -8,7 +8,7 @@ services:
nextcloud:
image: lscr.io/linuxserver/nextcloud:latest
environment:
- - SERVICE_FQDN_NEXTCLOUD_80
+ - SERVICE_URL_NEXTCLOUD_80
- PUID=1000
- PGID=1000
- TZ=${TZ:-Europe/Paris}
diff --git a/templates/compose/nextcloud.yaml b/templates/compose/nextcloud.yaml
index d0b2c2a59..a5a19862e 100644
--- a/templates/compose/nextcloud.yaml
+++ b/templates/compose/nextcloud.yaml
@@ -8,7 +8,7 @@ services:
nextcloud:
image: lscr.io/linuxserver/nextcloud:latest
environment:
- - SERVICE_FQDN_NEXTCLOUD_80
+ - SERVICE_URL_NEXTCLOUD_80
- PUID=1000
- PGID=1000
- TZ=${TZ:-Europe/Madrid}
diff --git a/templates/compose/nexus-arm.yaml b/templates/compose/nexus-arm.yaml
index b9a426309..12dacff51 100644
--- a/templates/compose/nexus-arm.yaml
+++ b/templates/compose/nexus-arm.yaml
@@ -8,7 +8,7 @@ services:
nexus:
image: sonatypecommunity/nexus3
environment:
- - SERVICE_FQDN_NEXUS_8081
+ - SERVICE_URL_NEXUS_8081
- NEXUS_SECURITY_RANDOMPASSWORD=false
- INSTALL4J_ADD_VM_PARAMS=-Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m -Djava.util.prefs.userRoot=/nexus-data/javaprefs
volumes:
diff --git a/templates/compose/nexus.yaml b/templates/compose/nexus.yaml
index a23601c1d..0cb686e7e 100644
--- a/templates/compose/nexus.yaml
+++ b/templates/compose/nexus.yaml
@@ -9,7 +9,7 @@ services:
image: sonatype/nexus3
platform: linux/amd64
environment:
- - SERVICE_FQDN_NEXUS_8081
+ - SERVICE_URL_NEXUS_8081
- NEXUS_SECURITY_RANDOMPASSWORD=${NEXUS_SECURITY_RANDOMPASSWORD:-false}
- INSTALL4J_ADD_VM_PARAMS=-Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m -Djava.util.prefs.userRoot=/nexus-data/javaprefs
volumes:
diff --git a/templates/compose/nitropage-with-postgresql.yaml b/templates/compose/nitropage-with-postgresql.yaml
index da515755c..bd0ba13f1 100644
--- a/templates/compose/nitropage-with-postgresql.yaml
+++ b/templates/compose/nitropage-with-postgresql.yaml
@@ -8,7 +8,7 @@ services:
nitropage:
image: nitropage/nitropage
environment:
- - SERVICE_FQDN_NITROPAGE_3000
+ - SERVICE_URL_NITROPAGE_3000
- NP_AUTH_SALT=${SERVICE_BASE64_SALT}
- NP_AUTH_PASSWORD=${SERVICE_PASSWORD_64_SESSION}
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRESQL}:${SERVICE_PASSWORD_POSTGRESQL}@postgresql:5432/${POSTGRESQL_DATABASE:-nitropage}
diff --git a/templates/compose/nitropage.yaml b/templates/compose/nitropage.yaml
index 2025c0b6e..75b75431e 100644
--- a/templates/compose/nitropage.yaml
+++ b/templates/compose/nitropage.yaml
@@ -8,7 +8,7 @@ services:
nitropage:
image: nitropage/nitropage:sqlite
environment:
- - SERVICE_FQDN_NITROPAGE_3000
+ - SERVICE_URL_NITROPAGE_3000
- NP_AUTH_SALT=${SERVICE_BASE64_SALT}
- NP_AUTH_PASSWORD=${SERVICE_PASSWORD_64_SESSION}
- DATABASE_URL=file:../.data/dev.db
diff --git a/templates/compose/nocodb.yaml b/templates/compose/nocodb.yaml
index 94ba4c788..d35bc1d4e 100644
--- a/templates/compose/nocodb.yaml
+++ b/templates/compose/nocodb.yaml
@@ -8,7 +8,7 @@ services:
nocodb:
image: nocodb/nocodb
environment:
- - SERVICE_FQDN_NOCODB_8080
+ - SERVICE_URL_NOCODB_8080
volumes:
- nocodb-data:/usr/app/data/
healthcheck:
diff --git a/templates/compose/nodebb.yaml b/templates/compose/nodebb.yaml
index d776d530f..79d39da9e 100644
--- a/templates/compose/nodebb.yaml
+++ b/templates/compose/nodebb.yaml
@@ -8,7 +8,7 @@ services:
nodebb:
image: ghcr.io/nodebb/nodebb:latest
environment:
- - SERVICE_FQDN_NODEBB_4567
+ - SERVICE_URL_NODEBB_4567
volumes:
- nodebb_build:/usr/src/app/build
- nodebb_uploads:/usr/src/app/public/uploads
diff --git a/templates/compose/ntfy.yaml b/templates/compose/ntfy.yaml
index 92565edaa..7fa379b23 100644
--- a/templates/compose/ntfy.yaml
+++ b/templates/compose/ntfy.yaml
@@ -10,8 +10,8 @@ services:
command:
- serve
environment:
- - SERVICE_FQDN_NTFY_80
- - NTFY_BASE_URL=${SERVICE_FQDN_NTFY}
+ - SERVICE_URL_NTFY_80
+ - NTFY_BASE_URL=${SERVICE_URL_NTFY}
- TZ=${TZ:-UTC}
- NTFY_CACHE_FILE=/var/cache/ntfy/cache.db
- NTFY_AUTH_FILE=/var/lib/ntfy/auth.db
diff --git a/templates/compose/observium.yaml b/templates/compose/observium.yaml
index 6d6b843f3..4439e3d7c 100644
--- a/templates/compose/observium.yaml
+++ b/templates/compose/observium.yaml
@@ -12,7 +12,7 @@ services:
- observium_logs:/opt/observium/logs
- observium_rrd:/opt/observium/rrd
environment:
- - SERVICE_FQDN_OBSERVIUM=${SERVICE_FQDN_OBSERVIUM}
+ - SERVICE_URL_OBSERVIUM=${SERVICE_URL_OBSERVIUM}
- OBSERVIUM_ADMIN_PASS=${SERVICE_PASSWORD_OBSERVIUMADMIN}
- OBSERVIUM_ADMIN_USER=${SERVICE_USER_OBSERVIUMADMIN}
- OBSERVIUM_DB_HOST=mariadb
diff --git a/templates/compose/odoo.yaml b/templates/compose/odoo.yaml
index e999095f0..37c91e7e7 100644
--- a/templates/compose/odoo.yaml
+++ b/templates/compose/odoo.yaml
@@ -8,7 +8,7 @@ services:
odoo:
image: odoo:18
environment:
- - SERVICE_FQDN_ODOO_8069
+ - SERVICE_URL_ODOO_8069
- HOST=postgresql
- USER=$SERVICE_USER_POSTGRES
- PASSWORD=$SERVICE_PASSWORD_POSTGRES
diff --git a/templates/compose/ollama-with-open-webui.yaml b/templates/compose/ollama-with-open-webui.yaml
index 044acb594..5e592342c 100644
--- a/templates/compose/ollama-with-open-webui.yaml
+++ b/templates/compose/ollama-with-open-webui.yaml
@@ -21,7 +21,7 @@ services:
depends_on:
- ollama-api
environment:
- - SERVICE_FQDN_OLLAMA_8080
+ - SERVICE_URL_OLLAMA_8080
- OLLAMA_BASE_URL=http://ollama-api:11434
healthcheck:
test:
diff --git a/templates/compose/onedev.yaml b/templates/compose/onedev.yaml
index 69c06baf9..2a6e4e082 100644
--- a/templates/compose/onedev.yaml
+++ b/templates/compose/onedev.yaml
@@ -11,7 +11,7 @@ services:
- onedev-docker-sock:/var/run/docker.sock
- onedev-data:/opt/onedev
environment:
- - SERVICE_FQDN_ONEDEV_6610
+ - SERVICE_URL_ONEDEV_6610
- hibernate_dialect=io.onedev.server.persistence.PostgreSQLDialect
- hibernate_connection_driver_class=org.postgresql.Driver
- hibernate_connection_url=jdbc:postgresql://postgres:5432/${POSTGRESQL_DATABASE:-onedev}
@@ -20,7 +20,7 @@ services:
- initial_user=${SERVICE_USER_ONEDEV}
- initial_password=${SERVICE_PASSWORD_ONEDEV}
- initial_email=${ONEDEV_EMAIL:-mail@example.com}
- - initial_server_url=${SERVICE_FQDN_ONEDEV}
+ - initial_server_url=${SERVICE_URL_ONEDEV}
- initial_ssh_root_url=${SSH_ROOT_URL:-ssh://changeme:22}
depends_on:
postgres:
diff --git a/templates/compose/onetimesecret.yaml b/templates/compose/onetimesecret.yaml
index 6021253a8..b684b7dc6 100644
--- a/templates/compose/onetimesecret.yaml
+++ b/templates/compose/onetimesecret.yaml
@@ -8,7 +8,7 @@ services:
onetimesecret:
image: onetimesecret/onetimesecret:latest
environment:
- - SERVICE_FQDN_ONETIMESECRET_3000
+ - SERVICE_URL_ONETIMESECRET_3000
- AUTH_AUTOVERIFY=${AUTH_AUTOVERIFY:-true}
- AUTH_SIGNUP=${AUTH_SIGNUP:-true}
- COLONEL=${COLONEL:-admin@example.com}
diff --git a/templates/compose/open-webui.yaml b/templates/compose/open-webui.yaml
index 07c335c2d..923a242d9 100644
--- a/templates/compose/open-webui.yaml
+++ b/templates/compose/open-webui.yaml
@@ -10,7 +10,7 @@ services:
volumes:
- "open-webui:/app/backend/data"
environment:
- - SERVICE_FQDN_OPENWEBUI_8080
+ - SERVICE_URL_OPENWEBUI_8080
healthcheck:
test:
- CMD
diff --git a/templates/compose/openpanel.yaml b/templates/compose/openpanel.yaml
index 7eb2615e4..eeeab5bde 100644
--- a/templates/compose/openpanel.yaml
+++ b/templates/compose/openpanel.yaml
@@ -10,9 +10,9 @@ services:
environment:
- NODE_ENV=production
- NEXT_PUBLIC_SELF_HOSTED=true
- - SERVICE_FQDN_OPDASHBOARD_3000
- - NEXT_PUBLIC_API_URL=${SERVICE_FQDN_OPAPI}
- - NEXT_PUBLIC_DASHBOARD_URL=${SERVICE_FQDN_OPDASHBOARD}
+ - SERVICE_URL_OPDASHBOARD_3000
+ - NEXT_PUBLIC_API_URL=${SERVICE_URL_OPAPI}
+ - NEXT_PUBLIC_DASHBOARD_URL=${SERVICE_URL_OPDASHBOARD}
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${OPENPANEL_POSTGRES_DB:-openpanel-db}?schema=public
- REDIS_URL=redis://default:${SERVICE_PASSWORD_REDIS}@redis:6379
- CLICKHOUSE_URL=http://clickhouse:8123/openpanel
@@ -47,9 +47,9 @@ services:
environment:
- NODE_ENV=production
- NEXT_PUBLIC_SELF_HOSTED=true
- - SERVICE_FQDN_OPAPI
- - NEXT_PUBLIC_API_URL=${SERVICE_FQDN_OPAPI}
- - NEXT_PUBLIC_DASHBOARD_URL=${SERVICE_FQDN_OPDASHBOARD}
+ - SERVICE_URL_OPAPI
+ - NEXT_PUBLIC_API_URL=${SERVICE_URL_OPAPI}
+ - NEXT_PUBLIC_DASHBOARD_URL=${SERVICE_URL_OPDASHBOARD}
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${OPENPANEL_POSTGRES_DB:-openpanel-db}?schema=public
- DATABASE_URL_DIRECT=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${OPENPANEL_POSTGRES_DB:-openpanel-db}?schema=public
- REDIS_URL=redis://default:${SERVICE_PASSWORD_REDIS}@redis:6379
@@ -77,8 +77,8 @@ services:
environment:
- NODE_ENV=production
- NEXT_PUBLIC_SELF_HOSTED=true
- - SERVICE_FQDN_OPBULLBOARD
- - NEXT_PUBLIC_API_URL=${SERVICE_FQDN_OPAPI}
+ - SERVICE_URL_OPBULLBOARD
+ - NEXT_PUBLIC_API_URL=${SERVICE_URL_OPAPI}
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${OPENPANEL_POSTGRES_DB:-openpanel-db}?schema=public
- DATABASE_URL_DIRECT=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${OPENPANEL_POSTGRES_DB:-openpanel-db}?schema=public
- REDIS_URL=redis://default:${SERVICE_PASSWORD_REDIS}@redis:6379
diff --git a/templates/compose/orangehrm.yaml b/templates/compose/orangehrm.yaml
index 6e47c4e15..b757bef1c 100644
--- a/templates/compose/orangehrm.yaml
+++ b/templates/compose/orangehrm.yaml
@@ -9,7 +9,7 @@ services:
image: orangehrm/orangehrm:latest
platform: linux/amd64
environment:
- - SERVICE_FQDN_ORANGEHRM_80
+ - SERVICE_URL_ORANGEHRM_80
- ORANGEHRM_DATABASE_HOST=mariadb
- ORANGEHRM_DATABASE_USER=${SERVICE_USER_MYSQL}
- ORANGEHRM_DATABASE_PASSWORD=${SERVICE_PASSWORD_MYSQL}
diff --git a/templates/compose/organizr.yaml b/templates/compose/organizr.yaml
index 7b25e7d23..e298b1218 100644
--- a/templates/compose/organizr.yaml
+++ b/templates/compose/organizr.yaml
@@ -8,7 +8,7 @@ services:
organizr:
image: organizr/organizr:latest
environment:
- - SERVICE_FQDN_ORGANIZR_80
+ - SERVICE_URL_ORGANIZR_80
- branch=${branch:-v2-master}
volumes:
- organizr-data:/config
diff --git a/templates/compose/osticket.yaml b/templates/compose/osticket.yaml
index 7e2fbcbcf..3101f17db 100644
--- a/templates/compose/osticket.yaml
+++ b/templates/compose/osticket.yaml
@@ -8,8 +8,8 @@ services:
osticket:
image: tiredofit/osticket:latest
environment:
- - SERVICE_FQDN_OSTICKET_80
- - APP_URL=${SERVICE_FQDN_OSTICKET}
+ - SERVICE_URL_OSTICKET_80
+ - APP_URL=${SERVICE_URL_OSTICKET}
- CRON_INTERVAL=${CRON_INTERVAL:-10}
- DB_HOST=mariadb
- DB_NAME=${OSTICKET_DATABASE:-osticket-db}
diff --git a/templates/compose/overseerr.yaml b/templates/compose/overseerr.yaml
index 8bf3a8666..9578d9e1d 100644
--- a/templates/compose/overseerr.yaml
+++ b/templates/compose/overseerr.yaml
@@ -8,7 +8,7 @@ services:
overseerr:
image: sctx/overseerr:latest
environment:
- - SERVICE_FQDN_OVERSEERR_5055
+ - SERVICE_URL_OVERSEERR_5055
- PUID=1000
- PGID=1000
- TZ=${TZ:-America/Toronto}
diff --git a/templates/compose/owncloud.yaml b/templates/compose/owncloud.yaml
index 511397349..944087ff8 100644
--- a/templates/compose/owncloud.yaml
+++ b/templates/compose/owncloud.yaml
@@ -13,8 +13,8 @@ services:
redis:
condition: service_healthy
environment:
- - SERVICE_FQDN_OWNCLOUD_8080
- - OWNCLOUD_DOMAIN=${SERVICE_FQDN_OWNCLOUD}
+ - SERVICE_URL_OWNCLOUD_8080
+ - OWNCLOUD_DOMAIN=${SERVICE_URL_OWNCLOUD}
- OWNCLOUD_TRUSTED_DOMAINS=${SERVICE_URL_OWNCLOUD}
- OWNCLOUD_DB_TYPE=mysql
- OWNCLOUD_DB_HOST=mariadb
diff --git a/templates/compose/pairdrop.yaml b/templates/compose/pairdrop.yaml
index 3e71e8b84..8bf2d271f 100644
--- a/templates/compose/pairdrop.yaml
+++ b/templates/compose/pairdrop.yaml
@@ -8,7 +8,7 @@ services:
pairdrop:
image: lscr.io/linuxserver/pairdrop:latest
environment:
- - SERVICE_FQDN_PAIRDROP_3000
+ - SERVICE_URL_PAIRDROP_3000
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
diff --git a/templates/compose/paperless.yaml b/templates/compose/paperless.yaml
index 76c7c5b55..00a4d89ba 100644
--- a/templates/compose/paperless.yaml
+++ b/templates/compose/paperless.yaml
@@ -35,8 +35,8 @@ services:
target: /usr/src/paperless/consume
is_directory: true
environment:
- - SERVICE_FQDN_PAPERLESS_8000
- - PAPERLESS_URL=$SERVICE_FQDN_PAPERLESS_8000
+ - SERVICE_URL_PAPERLESS_8000
+ - PAPERLESS_URL=$SERVICE_URL_PAPERLESS_8000
- PAPERLESS_ADMIN_PASSWORD=${SERVICE_PASSWORD_PAPERLESS}
- PAPERLESS_ADMIN_USER=${SERVICE_USER_PAPERLESS}
- PAPERLESS_REDIS=redis://redis:6379
diff --git a/templates/compose/passbolt.yaml b/templates/compose/passbolt.yaml
index 9a454a088..70c3a2700 100644
--- a/templates/compose/passbolt.yaml
+++ b/templates/compose/passbolt.yaml
@@ -8,8 +8,8 @@ services:
passbolt:
image: passbolt/passbolt:latest-ce
environment:
- - SERVICE_FQDN_PASSBOLT
- - APP_FULL_BASE_URL=${SERVICE_FQDN_PASSBOLT}
+ - SERVICE_URL_PASSBOLT
+ - APP_FULL_BASE_URL=${SERVICE_URL_PASSBOLT}
- DATASOURCES_DEFAULT_HOST=mariadb
- DATASOURCES_DEFAULT_USERNAME=${SERVICE_USER_PASSBOLT}
- DATASOURCES_DEFAULT_PASSWORD=${SERVICE_PASSWORD_PASSBOLT}
diff --git a/templates/compose/paymenter.yaml b/templates/compose/paymenter.yaml
index 9854581f9..c9b9846cc 100644
--- a/templates/compose/paymenter.yaml
+++ b/templates/compose/paymenter.yaml
@@ -11,7 +11,7 @@ services:
- app_logs:/app/storage/logs
- app_public:/app/storage/public
environment:
- SERVICE_FQDN_PAYMENTER: ${SERVICE_FQDN_PAYMENTER_80}
+ SERVICE_URL_PAYMENTER: ${SERVICE_URL_PAYMENTER_80}
DB_DATABASE: ${MYSQL_DATABASE:-paymenter-db}
DB_PASSWORD: ${SERVICE_PASSWORD_MYSQL}
DB_USERNAME: ${SERVICE_USER_MYSQL}
diff --git a/templates/compose/penpot.yaml b/templates/compose/penpot.yaml
index fa92abb7f..cb92a329a 100644
--- a/templates/compose/penpot.yaml
+++ b/templates/compose/penpot.yaml
@@ -15,7 +15,7 @@ services:
penpot-exporter:
condition: service_healthy
environment:
- - SERVICE_FQDN_FRONTEND_8080
+ - SERVICE_URL_FRONTEND_8080
- PENPOT_FLAGS=${PENPOT_FRONTEND_FLAGS:-enable-login-with-password}
healthcheck:
test: ['CMD', 'curl', '-f', 'http://127.0.0.1:8080']
@@ -36,7 +36,7 @@ services:
- PENPOT_FLAGS=${PENPOT_BACKEND_FLAGS:-enable-login-with-password enable-smtp enable-prepl-server}
- PENPOT_HTTP_SERVER_PORT=6060
- PENPOT_SECRET_KEY=$SERVICE_REALBASE64_64_PENPOT
- - PENPOT_PUBLIC_URI=$SERVICE_FQDN_FRONTEND_8080
+ - PENPOT_PUBLIC_URI=$SERVICE_URL_FRONTEND_8080
- PENPOT_BACKEND_URI=http://penpot-backend
- PENPOT_EXPORTER_URI=http://penpot-exporter
- PENPOT_DATABASE_URI=postgresql://postgres/${POSTGRES_DB:-penpot}
@@ -55,7 +55,7 @@ services:
- PENPOT_SMTP_TLS=${PENPOT_SMTP_TLS:-false}
- PENPOT_SMTP_SSL=${PENPOT_SMTP_SSL:-false}
healthcheck:
- test: ['CMD', 'curl', '-f', 'http://127.0.0.1:6060/readyz']
+ test: ['CMD', 'node', '-e', "require('http').get({host:'127.0.0.1', port:6060, path:'/readyz'}, res => process.exit(res.statusCode===200 ? 0 : 1)).on('error', () => process.exit(1));"]
interval: 10s
timeout: 30s
retries: 15
@@ -63,7 +63,7 @@ services:
penpot-exporter:
image: penpotapp/exporter:latest
environment:
- - PENPOT_PUBLIC_URI=$SERVICE_FQDN_FRONTEND_8080
+ - PENPOT_PUBLIC_URI=$SERVICE_URL_FRONTEND_8080
- PENPOT_REDIS_URI=redis://redis/0
healthcheck:
test: ['CMD', 'curl', '-f', 'http://127.0.0.1:6061/readyz']
@@ -74,7 +74,7 @@ services:
mailpit:
image: axllent/mailpit:latest
environment:
- - SERVICE_FQDN_MAILPIT_8025
+ - SERVICE_URL_MAILPIT_8025
healthcheck:
test: ['CMD', '/mailpit', 'readyz']
interval: 5s
diff --git a/templates/compose/peppermint.yaml b/templates/compose/peppermint.yaml
index 228389eb4..68cfbb217 100644
--- a/templates/compose/peppermint.yaml
+++ b/templates/compose/peppermint.yaml
@@ -31,12 +31,12 @@ services:
timeout: 10s
retries: 15
environment:
- - SERVICE_FQDN_PEPPERMINT_3000
- - SERVICE_FQDN_PEPPERMINT_5003
+ - SERVICE_URL_PEPPERMINT_3000
+ - SERVICE_URL_PEPPERMINT_5003
- DB_USERNAME=${SERVICE_USER_POSTGRES}
- DB_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
- DB_HOST=postgres
- DB_NAME=${POSTGRES_DB:-peppermint-db}
- SECRET=${SERVICE_PASSWORD_PEPPERMINT}
- - API_URL=${SERVICE_FQDN_PEPPERMINT_5003}
+ - API_URL=${SERVICE_URL_PEPPERMINT_5003}
# The default login is "admin@admin.com" with the password "1234"
diff --git a/templates/compose/pgbackweb.yaml b/templates/compose/pgbackweb.yaml
index 4c006a6ce..70455fc11 100644
--- a/templates/compose/pgbackweb.yaml
+++ b/templates/compose/pgbackweb.yaml
@@ -10,7 +10,7 @@ services:
volumes:
- pgbackweb_backups:/backups
environment:
- - SERVICE_FQDN_PGBACKWEB_8085
+ - SERVICE_URL_PGBACKWEB_8085
- PBW_ENCRYPTION_KEY=${SERVICE_PASSWORD_64_PGBACKWEB}
- PBW_POSTGRES_CONN_STRING=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-pgbackweb-db}?sslmode=disable
- TZ=${TIME_ZONE:-UTC}
diff --git a/templates/compose/phpmyadmin.yaml b/templates/compose/phpmyadmin.yaml
index 61ee4f2f5..49ff3a100 100644
--- a/templates/compose/phpmyadmin.yaml
+++ b/templates/compose/phpmyadmin.yaml
@@ -7,12 +7,12 @@ services:
phpmyadmin:
image: lscr.io/linuxserver/phpmyadmin:latest
environment:
- - SERVICE_FQDN_PHPMYADMIN
+ - SERVICE_URL_PHPMYADMIN
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
- PMA_ARBITRARY=1
- - PMA_ABSOLUTE_URI=$SERVICE_FQDN_PHPMYADMIN
+ - PMA_ABSOLUTE_URI=$SERVICE_URL_PHPMYADMIN
volumes:
- phpmyadmin-config:/config
healthcheck:
diff --git a/templates/compose/pi-hole.yaml b/templates/compose/pi-hole.yaml
index 476067b16..ac86b261b 100644
--- a/templates/compose/pi-hole.yaml
+++ b/templates/compose/pi-hole.yaml
@@ -16,7 +16,7 @@ services:
# Uncomment the line below if you are using Pi-hole as your NTP server
- "123:123/udp"
environment:
- - SERVICE_FQDN_PIHOLE_80
+ - SERVICE_URL_PIHOLE_80
- TZ=${TZ:-Europe/London}
- FTLCONF_webserver_api_password=${SERVICE_PASSWORD_PIHOLE}
- FTLCONF_dns_listeningMode=${FTLCONF_dns_listeningMode:-all}
diff --git a/templates/compose/pingvinshare-with-clamav.yaml b/templates/compose/pingvinshare-with-clamav.yaml
index f8dd992c6..eb4d9d27e 100644
--- a/templates/compose/pingvinshare-with-clamav.yaml
+++ b/templates/compose/pingvinshare-with-clamav.yaml
@@ -8,7 +8,7 @@ services:
pingvinshare:
image: ghcr.io/stonith404/pingvin-share
environment:
- - SERVICE_FQDN_PINGVINSHARE_3000
+ - SERVICE_URL_PINGVINSHARE_3000
- TRUST_PROXY=${TRUST_PROXY:-true}
volumes:
- pingvinshare_data:/opt/app/backend/data
diff --git a/templates/compose/pingvinshare.yaml b/templates/compose/pingvinshare.yaml
index 870694f9e..2934270b9 100644
--- a/templates/compose/pingvinshare.yaml
+++ b/templates/compose/pingvinshare.yaml
@@ -8,7 +8,7 @@ services:
pingvinshare:
image: ghcr.io/stonith404/pingvin-share
environment:
- - SERVICE_FQDN_PINGVINSHARE_3000
+ - SERVICE_URL_PINGVINSHARE_3000
- TRUST_PROXY=${TRUST_PROXY:-true}
volumes:
- pingvinshare_data:/opt/app/backend/data
diff --git a/templates/compose/plane.yaml b/templates/compose/plane.yaml
index 9904a1c8d..758bf66b6 100644
--- a/templates/compose/plane.yaml
+++ b/templates/compose/plane.yaml
@@ -6,7 +6,7 @@
x-app-env: &app-env
environment:
- APP_RELEASE=${APP_RELEASE:-v0.25.2}
- - WEB_URL=${SERVICE_FQDN_PLANE}
+ - WEB_URL=${SERVICE_URL_PLANE}
- DEBUG=${DEBUG:-0}
- CORS_ALLOWED_ORIGINS=${CORS_ALLOWED_ORIGIN:-http://localhost}
# Gunicorn Workers
@@ -52,7 +52,7 @@ x-app-env: &app-env
services:
proxy:
environment:
- - SERVICE_FQDN_PLANE
+ - SERVICE_URL_PLANE
- FILE_SIZE_LIMIT=${FILE_SIZE_LIMIT:-5242880}
- BUCKET_NAME=${BUCKET_NAME:-uploads}
image: makeplane/plane-proxy:${APP_RELEASE:-v0.25.1}
diff --git a/templates/compose/plausible.yaml b/templates/compose/plausible.yaml
index 9bbacc508..47476db34 100644
--- a/templates/compose/plausible.yaml
+++ b/templates/compose/plausible.yaml
@@ -9,10 +9,10 @@ services:
image: "ghcr.io/plausible/community-edition:v3.0.1"
command: 'sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"'
environment:
- - SERVICE_FQDN_PLAUSIBLE
+ - SERVICE_URL_PLAUSIBLE
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@plausible-db:5432/${POSTGRES_DB:-plausible-db}
- CLICKHOUSE_DATABASE_URL=http://plausible-events-db:8123/plausible_events_db
- - BASE_URL=${SERVICE_FQDN_PLAUSIBLE}
+ - BASE_URL=${SERVICE_URL_PLAUSIBLE}
- SECRET_KEY_BASE=${SERVICE_BASE64_64_PLAUSIBLE}
- TOTP_VAULT_KEY=${SERVICE_REALBASE64_32_TOTP}
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
diff --git a/templates/compose/plex.yaml b/templates/compose/plex.yaml
index 9ffa15224..d094d58c1 100644
--- a/templates/compose/plex.yaml
+++ b/templates/compose/plex.yaml
@@ -8,8 +8,8 @@ services:
plex:
image: lscr.io/linuxserver/plex:latest
environment:
- - SERVICE_FQDN_PLEX_32400
- - _APP_URL=$SERVICE_FQDN_PLEX
+ - SERVICE_URL_PLEX_32400
+ - _APP_URL=$SERVICE_URL_PLEX
- PUID=1000
- PGID=1000
- TZ=${TZ:-America/Toronto}
diff --git a/templates/compose/plunk.yaml b/templates/compose/plunk.yaml
index 60c2ee850..0858ccdcd 100644
--- a/templates/compose/plunk.yaml
+++ b/templates/compose/plunk.yaml
@@ -13,7 +13,7 @@ services:
redis:
condition: service_started
environment:
- - SERVICE_FQDN_PLUNK_3000
+ - SERVICE_URL_PLUNK_3000
- REDIS_URL=redis://redis:6379
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql/plunk-db?schema=public
- JWT_SECRET=${SERVICE_PASSWORD_JWTSECRET}
@@ -21,9 +21,9 @@ services:
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID:?}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY:?}
- AWS_SES_CONFIGURATION_SET=${AWS_SES_CONFIGURATION_SET:?}
- - NEXT_PUBLIC_API_URI=${SERVICE_FQDN_PLUNK}/api
- - APP_URI=${SERVICE_FQDN_PLUNK}
- - API_URI=${SERVICE_FQDN_PLUNK}/api
+ - NEXT_PUBLIC_API_URI=${SERVICE_URL_PLUNK}/api
+ - APP_URI=${SERVICE_URL_PLUNK}
+ - API_URI=${SERVICE_URL_PLUNK}/api
- DISABLE_SIGNUPS=${DISABLE_SIGNUPS:-False}
- NODE_OPTIONS=--no-network-family-autoselection
entrypoint: [ "/app/entry.sh" ]
diff --git a/templates/compose/pocketbase.yaml b/templates/compose/pocketbase.yaml
index ab7ecd0f7..0524b6ab9 100644
--- a/templates/compose/pocketbase.yaml
+++ b/templates/compose/pocketbase.yaml
@@ -8,7 +8,7 @@ services:
pocketbase:
image: ghcr.io/coollabsio/pocketbase:latest
environment:
- - SERVICE_FQDN_POCKETBASE_8080
+ - SERVICE_URL_POCKETBASE_8080
volumes:
- pocketbase-data:/app/pb_data
- pocketbase-hooks:/app/pb_hooks
diff --git a/templates/compose/portainer.yaml b/templates/compose/portainer.yaml
index bbb306206..e2d8dad5a 100644
--- a/templates/compose/portainer.yaml
+++ b/templates/compose/portainer.yaml
@@ -8,7 +8,7 @@ services:
portainer:
image: portainer/portainer-ce:alpine
environment:
- - SERVICE_FQDN_PORTAINER_9000
+ - SERVICE_URL_PORTAINER_9000
volumes:
- '/var/run/docker.sock:/var/run/docker.sock'
- 'portainer_data:/data'
diff --git a/templates/compose/posthog.yaml b/templates/compose/posthog.yaml
index 1c4b1ccd7..80a3b7f2b 100644
--- a/templates/compose/posthog.yaml
+++ b/templates/compose/posthog.yaml
@@ -1922,7 +1922,7 @@ services:
loop()
environment:
- - SERVICE_FQDN_WEB_8000
+ - SERVICE_URL_WEB_8000
- OPT_OUT_CAPTURING=true
- DISABLE_SECURE_SSL_REDIRECT=true
- IS_BEHIND_PROXY=true
@@ -1938,7 +1938,7 @@ services:
- PGUSER=posthog
- PGPASSWORD=$SERVICE_PASSWORD_POSTGRES
- DEPLOYMENT=hobby
- - SITE_URL=$SERVICE_FQDN_WEB
+ - SITE_URL=$SERVICE_URL_WEB
- SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
- 'ENCRYPTION_SALT_KEYS=${SERVICE_ENCRYPTION_SALT_KEYS:-00beef0000beef0000beef0000beef00}'
depends_on:
@@ -1966,7 +1966,7 @@ services:
- PGUSER=posthog
- PGPASSWORD=$SERVICE_PASSWORD_POSTGRES
- DEPLOYMENT=hobby
- - SITE_URL=$SERVICE_FQDN_WEB
+ - SITE_URL=$SERVICE_URL_WEB
- SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
- 'ENCRYPTION_SALT_KEYS=${SERVICE_ENCRYPTION_SALT_KEYS:-00beef0000beef0000beef0000beef00}'
depends_on:
@@ -1998,7 +1998,7 @@ services:
- CLICKHOUSE_DATABASE=posthog
- CLICKHOUSE_SECURE=false
- CLICKHOUSE_VERIFY=false
- - SITE_URL=$SERVICE_FQDN_WEB
+ - SITE_URL=$SERVICE_URL_WEB
- SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
- 'ENCRYPTION_SALT_KEYS=${SERVICE_ENCRYPTION_SALT_KEYS:-00beef0000beef0000beef0000beef00}'
depends_on:
@@ -2027,7 +2027,7 @@ services:
# - PGUSER=posthog
# - PGPASSWORD=$SERVICE_PASSWORD_POSTGRES
# - DEPLOYMENT=hobby
- # - SITE_URL=$SERVICE_FQDN_WEB
+ # - SITE_URL=$SERVICE_URL_WEB
# - SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
# - 'ENCRYPTION_SALT_KEYS=${SERVICE_ENCRYPTION_SALT_KEYS:-00beef0000beef0000beef0000beef00}'
# depends_on:
@@ -2111,7 +2111,7 @@ services:
- PGUSER=posthog
- PGPASSWORD=$SERVICE_PASSWORD_POSTGRES
- DEPLOYMENT=hobby
- - SITE_URL=$SERVICE_FQDN_WEB
+ - SITE_URL=$SERVICE_URL_WEB
- SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
- 'ENCRYPTION_SALT_KEYS=${SERVICE_ENCRYPTION_SALT_KEYS:-00beef0000beef0000beef0000beef00}'
- TEMPORAL_HOST=temporal
diff --git a/templates/compose/postiz.yaml b/templates/compose/postiz.yaml
index 5e4fbcf2f..ded4920b2 100644
--- a/templates/compose/postiz.yaml
+++ b/templates/compose/postiz.yaml
@@ -8,10 +8,10 @@ services:
postiz:
image: ghcr.io/gitroomhq/postiz-app:v1.60.1
environment:
- - SERVICE_FQDN_POSTIZ_5000
- - MAIN_URL=${SERVICE_FQDN_POSTIZ}
- - FRONTEND_URL=${SERVICE_FQDN_POSTIZ}
- - NEXT_PUBLIC_BACKEND_URL=${SERVICE_FQDN_POSTIZ}/api
+ - SERVICE_URL_POSTIZ_5000
+ - MAIN_URL=${SERVICE_URL_POSTIZ}
+ - FRONTEND_URL=${SERVICE_URL_POSTIZ}
+ - NEXT_PUBLIC_BACKEND_URL=${SERVICE_URL_POSTIZ}/api
- JWT_SECRET=${SERVICE_PASSWORD_JWTSECRET}
- DATABASE_URL=postgresql://postgres:${SERVICE_PASSWORD_POSTGRESQL}@postgres:5432/${POSTGRESQL_DATABASE:-postiz-db}
- REDIS_URL=redis://default:${SERVICE_PASSWORD_REDIS}@redis:6379
diff --git a/templates/compose/prefect.yaml b/templates/compose/prefect.yaml
index 8bd2e576e..a70d4d8ae 100644
--- a/templates/compose/prefect.yaml
+++ b/templates/compose/prefect.yaml
@@ -11,8 +11,8 @@ services:
postgresql:
condition: service_healthy
environment:
- - SERVICE_FQDN_PREFECT_4200
- - PREFECT_API_URL=${SERVICE_FQDN_PREFECT}/api
+ - SERVICE_URL_PREFECT_4200
+ - PREFECT_API_URL=${SERVICE_URL_PREFECT}/api
- PREFECT_API_DATABASE_CONNECTION_URL=postgresql+asyncpg://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql:5432/${POSTGRES_DB:-prefect}
- PREFECT_API_KEY=${SERVICE_PASSWORD_APIKEY}
- PREFECT_EXPERIMENTAL_WARN=${PREFECT_EXPERIMENTAL_WARN:-false}
diff --git a/templates/compose/privatebin.yaml b/templates/compose/privatebin.yaml
index 5cd82319b..29edf2c75 100644
--- a/templates/compose/privatebin.yaml
+++ b/templates/compose/privatebin.yaml
@@ -8,7 +8,7 @@ services:
privatebin:
image: privatebin/nginx-fpm-alpine
environment:
- - SERVICE_FQDN_PRIVATEBIN_8080
+ - SERVICE_URL_PRIVATEBIN_8080
volumes:
- privatebin_data:/srv/data
healthcheck:
diff --git a/templates/compose/prowlarr.yaml b/templates/compose/prowlarr.yaml
index 0bcb42c5e..850b96060 100644
--- a/templates/compose/prowlarr.yaml
+++ b/templates/compose/prowlarr.yaml
@@ -8,8 +8,8 @@ services:
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
environment:
- - SERVICE_FQDN_PROWLARR_9696
- - _APP_URL=$SERVICE_FQDN_PROWLARR
+ - SERVICE_URL_PROWLARR_9696
+ - _APP_URL=$SERVICE_URL_PROWLARR
- PUID=1000
- PGID=1000
- TZ=${TZ:-America/Toronto}
diff --git a/templates/compose/pterodactyl-with-wings.yaml b/templates/compose/pterodactyl-with-wings.yaml
new file mode 100644
index 000000000..aec18c866
--- /dev/null
+++ b/templates/compose/pterodactyl-with-wings.yaml
@@ -0,0 +1,140 @@
+# documentation: https://pterodactyl.io/
+# slogan: Pterodactyl is a free, open-source game server management panel
+# tags: game, game server, management, panel, minecraft
+# logo: svgs/pterodactyl.png
+# port: 80, 8443
+
+services:
+ mariadb:
+ image: mariadb:10.5
+ healthcheck:
+ test:
+ ["CMD-SHELL", "healthcheck.sh --connect --innodb_initialized || exit 1"]
+ start_period: 10s
+ interval: 10s
+ timeout: 1s
+ retries: 3
+ environment:
+ - MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_MYSQLROOT
+ - MYSQL_DATABASE=pterodactyl-db
+ - MYSQL_USER=$SERVICE_USER_MYSQL
+ - MYSQL_PASSWORD=$SERVICE_PASSWORD_MYSQL
+ volumes:
+ - pterodactyl-db:/var/lib/mysql
+
+ redis:
+ image: redis:alpine
+ healthcheck:
+ test: ["CMD-SHELL", "redis-cli ping || exit 1"]
+ interval: 10s
+ timeout: 1s
+ retries: 3
+
+ pterodactyl:
+ image: ghcr.io/pterodactyl/panel:latest
+ volumes:
+ - "panel-var:/app/var/"
+ - "panel-nginx:/etc/nginx/http.d/"
+ - "panel-certs:/etc/letsencrypt/"
+ - type: bind
+ source: ./etc/entrypoint.sh
+ target: /entrypoint.sh
+ mode: "0755"
+ content: |
+ #!/bin/sh
+ set -e
+
+ echo "Setting logs permissions..."
+ chown -R nginx: /app/storage/logs/
+
+ USER_EXISTS=$(php artisan tinker --no-ansi --execute='echo \Pterodactyl\Models\User::where("email", "'"$ADMIN_EMAIL"'")->exists() ? "1" : "0";')
+
+ if [ "$USER_EXISTS" = "0" ]; then
+ echo "Admin User does not exist, creating user now."
+ php artisan p:user:make --no-interaction \
+ --admin=1 \
+ --email="$ADMIN_EMAIL" \
+ --username="$ADMIN_USERNAME" \
+ --name-first="$ADMIN_FIRSTNAME" \
+ --name-last="$ADMIN_LASTNAME" \
+ --password="$ADMIN_PASSWORD"
+ echo "Admin user created successfully!"
+ else
+ echo "Admin User already exists, skipping creation."
+ fi
+
+ exec supervisord --nodaemon
+ command: ["/entrypoint.sh"]
+ healthcheck:
+ test: ["CMD-SHELL", "curl -sf http://localhost:80 || exit 1"]
+ interval: 10s
+ timeout: 1s
+ retries: 3
+ environment:
+ - SERVICE_URL_PTERODACTYL_80
+ - ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example.com}
+ - ADMIN_USERNAME=${SERVICE_USER_ADMIN}
+ - ADMIN_FIRSTNAME=${ADMIN_FIRSTNAME:-Admin}
+ - ADMIN_LASTNAME=${ADMIN_LASTNAME:-User}
+ - ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
+ - PTERODACTYL_HTTPS=${PTERODACTYL_HTTPS:-false}
+ - APP_ENV=production
+ - APP_ENVIRONMENT_ONLY=false
+ - APP_URL=$SERVICE_URL_PTERODACTYL
+ - APP_TIMEZONE=${TIMEZONE:-UTC}
+ - APP_SERVICE_AUTHOR=${APP_SERVICE_AUTHOR:-author@example.com}
+ - LOG_LEVEL=${LOG_LEVEL:-debug}
+ - CACHE_DRIVER=redis
+ - SESSION_DRIVER=redis
+ - QUEUE_DRIVER=redis
+ - REDIS_HOST=redis
+ - DB_DATABASE=pterodactyl-db
+ - DB_USERNAME=$SERVICE_USER_MYSQL
+ - DB_HOST=mariadb
+ - DB_PORT=3306
+ - DB_PASSWORD=$SERVICE_PASSWORD_MYSQL
+ - MAIL_FROM=$MAIL_FROM
+ - MAIL_DRIVER=$MAIL_DRIVER
+ - MAIL_HOST=$MAIL_HOST
+ - MAIL_PORT=$MAIL_PORT
+ - MAIL_USERNAME=$MAIL_USERNAME
+ - MAIL_PASSWORD=$MAIL_PASSWORD
+ - MAIL_ENCRYPTION=$MAIL_ENCRYPTION
+
+ wings:
+ image: "ghcr.io/pterodactyl/wings:latest"
+ environment:
+ - SERVICE_URL_WINGS_8443
+ - "TZ=${TIMEZONE:-UTC}"
+ - WINGS_USERNAME=$SERVICE_USER_WINGS
+ volumes:
+ - "/var/run/docker.sock:/var/run/docker.sock"
+ - "/var/lib/docker/containers/:/var/lib/docker/containers/"
+ - "/var/lib/pterodactyl/volumes:/var/lib/pterodactyl/volumes"
+ - "/tmp/pterodactyl:/tmp/pterodactyl"
+ - wings_lib:/var/lib/pterodactyl/
+ - wings_logs:/var/log/pterodactyl/
+ - type: bind
+ source: ./etc/config.yml
+ target: /etc/pterodactyl/config.yml
+ content: |
+ debug: false
+ uuid: ReplaceConfig
+ token_id: ReplaceConfig
+ token: ReplaceConfig
+ api:
+ host: 0.0.0.0
+ port: 8443 # Warning, panel must have 443 as daemon port, while here it should should be 8443, FQDN in Coolify for this service should be https://*:8443
+ ssl:
+ enabled: false
+ cert: ReplaceConfig
+ key: ReplaceConfig
+ upload_limit: 100
+ system:
+ data: /var/lib/pterodactyl/volumes
+ sftp:
+ bind_port: 2022
+ allowed_mounts: []
+ remote: ''
+ ports:
+ - '2022:2022'
\ No newline at end of file
diff --git a/templates/compose/pterodactyl.yaml b/templates/compose/pterodactyl.yaml
index ea64de47a..13708ec28 100644
--- a/templates/compose/pterodactyl.yaml
+++ b/templates/compose/pterodactyl.yaml
@@ -1,4 +1,3 @@
-# ignore: true
# documentation: https://pterodactyl.io/
# slogan: Pterodactyl is a free, open-source game server management panel
# tags: game, game server, management, panel, minecraft
@@ -8,8 +7,6 @@
services:
mariadb:
image: mariadb:10.5
- restart: unless-stopped
- command: --default-authentication-plugin=mysql_native_password
healthcheck:
test:
["CMD-SHELL", "healthcheck.sh --connect --innodb_initialized || exit 1"]
@@ -18,17 +15,15 @@ services:
timeout: 1s
retries: 3
environment:
- - SERVICE_PASSWORD_MYSQL
- MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_MYSQLROOT
- - MYSQL_DATABASE=panel
- - MYSQL_USER=pterodactyl
+ - MYSQL_DATABASE=pterodactyl-db
+ - MYSQL_USER=$SERVICE_USER_MYSQL
- MYSQL_PASSWORD=$SERVICE_PASSWORD_MYSQL
volumes:
- pterodactyl-db:/var/lib/mysql
redis:
image: redis:alpine
- restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
interval: 10s
@@ -37,7 +32,6 @@ services:
pterodactyl:
image: ghcr.io/pterodactyl/panel:latest
- restart: unless-stopped
volumes:
- "panel-var:/app/var/"
- "panel-nginx:/etc/nginx/http.d/"
@@ -50,28 +44,26 @@ services:
#!/bin/sh
set -e
- echo "Waiting for services to be ready..."
- sleep 30
+ echo "Setting logs permissions..."
+ chown -R nginx: /app/storage/logs/
- echo "Setting logs permissions..."
- chown -R nginx: /app/storage/logs/
+ USER_EXISTS=$(php artisan tinker --no-ansi --execute='echo \Pterodactyl\Models\User::where("email", "'"$ADMIN_EMAIL"'")->exists() ? "1" : "0";')
- if ! php artisan p:user:list | grep -q "$ADMIN_EMAIL"; then
- echo "Creating admin user..."
- php artisan p:user:make --no-interaction \
- --admin=1 \
- --email="$ADMIN_EMAIL" \
- --username="$ADMIN_USERNAME" \
- --name-first="$ADMIN_FIRSTNAME" \
- --name-last="$ADMIN_LASTNAME" \
- --password="$ADMIN_PASSWORD"
- echo "Admin user created"
- else
- echo "Admin user already exists, skipping creation"
- fi
-
- exec supervisord -c --nodaemon
+ if [ "$USER_EXISTS" = "0" ]; then
+ echo "Admin User does not exist, creating user now."
+ php artisan p:user:make --no-interaction \
+ --admin=1 \
+ --email="$ADMIN_EMAIL" \
+ --username="$ADMIN_USERNAME" \
+ --name-first="$ADMIN_FIRSTNAME" \
+ --name-last="$ADMIN_LASTNAME" \
+ --password="$ADMIN_PASSWORD"
+ echo "Admin user created successfully!"
+ else
+ echo "Admin User already exists, skipping creation."
+ fi
+ exec supervisord --nodaemon
command: ["/entrypoint.sh"]
healthcheck:
test: ["CMD-SHELL", "curl -sf http://localhost:80 || exit 1"]
@@ -79,7 +71,7 @@ services:
timeout: 1s
retries: 3
environment:
- - SERVICE_FQDN_PTERODACTYL
+ - SERVICE_URL_PTERODACTYL_80
- ADMIN_EMAIL=${ADMIN_EMAIL:-admin@example.com}
- ADMIN_USERNAME=${SERVICE_USER_ADMIN}
- ADMIN_FIRSTNAME=${ADMIN_FIRSTNAME:-Admin}
@@ -88,7 +80,7 @@ services:
- PTERODACTYL_HTTPS=${PTERODACTYL_HTTPS:-false}
- APP_ENV=production
- APP_ENVIRONMENT_ONLY=false
- - APP_URL=${PTERODACTYL_PUBLIC_FQDN:-$SERVICE_FQDN_PTERODACTYL}
+ - APP_URL=$SERVICE_URL_PTERODACTYL
- APP_TIMEZONE=${TIMEZONE:-UTC}
- APP_SERVICE_AUTHOR=${APP_SERVICE_AUTHOR:-author@example.com}
- LOG_LEVEL=${LOG_LEVEL:-debug}
@@ -96,6 +88,8 @@ services:
- SESSION_DRIVER=redis
- QUEUE_DRIVER=redis
- REDIS_HOST=redis
+ - DB_DATABASE=pterodactyl-db
+ - DB_USERNAME=$SERVICE_USER_MYSQL
- DB_HOST=mariadb
- DB_PORT=3306
- DB_PASSWORD=$SERVICE_PASSWORD_MYSQL
@@ -111,7 +105,7 @@ services:
image: ghcr.io/pterodactyl/wings:latest
restart: unless-stopped
environment:
- - SERVICE_FQDN_WINGS_8080
+ - SERVICE_URL_WINGS_8080
- TZ=${TIMEZONE:-UTC}
- WINGS_USERNAME=pterodactyl
volumes:
diff --git a/templates/compose/qbittorrent.yaml b/templates/compose/qbittorrent.yaml
index f7a4ad878..40f51a3e2 100644
--- a/templates/compose/qbittorrent.yaml
+++ b/templates/compose/qbittorrent.yaml
@@ -29,9 +29,9 @@ services:
vuetorrent-backend:
image: "ghcr.io/vuetorrent/vuetorrent-backend:latest"
environment:
- - SERVICE_FQDN_QBITORRENT_8080
+ - SERVICE_URL_QBITORRENT_8080
- PORT=${WEBUI_PORT:-8080}
- - QBIT_BASE=${SERVICE_FQDN_QBITORRENT}
+ - QBIT_BASE=${SERVICE_URL_QBITORRENT}
- RELEASE_TYPE=${RELEASE_TYPE:-stable}
- UPDATE_VT_CRON=${UPDATE_VT_CRON:-"0 * * * *"}
volumes:
diff --git a/templates/compose/qdrant.yaml b/templates/compose/qdrant.yaml
index 028ccdd7a..ccaa6b3a1 100644
--- a/templates/compose/qdrant.yaml
+++ b/templates/compose/qdrant.yaml
@@ -8,7 +8,7 @@ services:
qdrant:
image: "qdrant/qdrant:latest"
environment:
- - SERVICE_FQDN_QDRANT_6333
+ - SERVICE_URL_QDRANT_6333
- QDRANT__SERVICE__API_KEY=${SERVICE_PASSWORD_QDRANTAPIKEY}
volumes:
- "qdrant-storage:/qdrant/storage"
diff --git a/templates/compose/rabbitmq.yaml b/templates/compose/rabbitmq.yaml
index 39a418942..fee09ad75 100644
--- a/templates/compose/rabbitmq.yaml
+++ b/templates/compose/rabbitmq.yaml
@@ -9,7 +9,7 @@ services:
image: rabbitmq:3-management
hostname: "rabbitmq"
environment:
- - SERVICE_FQDN_RABBITMQ_15672
+ - SERVICE_URL_RABBITMQ_15672
- RABBITMQ_DEFAULT_USER=$SERVICE_USER_RABBITMQ
- RABBITMQ_DEFAULT_PASS=$SERVICE_PASSWORD_RABBITMQ
- PORT=${PORT:-5672}
diff --git a/templates/compose/radarr.yaml b/templates/compose/radarr.yaml
index 2795582a6..8f6c88bde 100644
--- a/templates/compose/radarr.yaml
+++ b/templates/compose/radarr.yaml
@@ -8,8 +8,8 @@ services:
radarr:
image: lscr.io/linuxserver/radarr:latest
environment:
- - SERVICE_FQDN_RADARR_7878
- - _APP_URL=$SERVICE_FQDN_RADARR
+ - SERVICE_URL_RADARR_7878
+ - _APP_URL=$SERVICE_URL_RADARR
- PUID=1000
- PGID=1000
- TZ=${TZ:-America/Toronto}
diff --git a/templates/compose/rallly.yaml b/templates/compose/rallly.yaml
index d1408c74b..dcd2e25ff 100644
--- a/templates/compose/rallly.yaml
+++ b/templates/compose/rallly.yaml
@@ -28,7 +28,7 @@ services:
rallly_db:
condition: service_healthy
environment:
- - SERVICE_FQDN_RALLLY_3000
+ - SERVICE_URL_RALLLY_3000
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@rallly_db:5432/${POSTGRES_DB:-rallly}
- SECRET_PASSWORD=${SERVICE_PASSWORD_64_RALLLY}
- NEXT_PUBLIC_BASE_URL=https://${SERVICE_URL_RALLLY}
diff --git a/templates/compose/reactive-resume.yaml b/templates/compose/reactive-resume.yaml
index 0cf8ed6b9..1e1b74b97 100644
--- a/templates/compose/reactive-resume.yaml
+++ b/templates/compose/reactive-resume.yaml
@@ -8,9 +8,9 @@ services:
reactive-resume:
image: amruthpillai/reactive-resume:latest
environment:
- - SERVICE_FQDN_REACTIVERESUME_3000
- - PUBLIC_URL=$SERVICE_FQDN_REACTIVERESUME
- - 'STORAGE_URL=${SERVICE_FQDN_MINIO}/default'
+ - SERVICE_URL_REACTIVERESUME_3000
+ - PUBLIC_URL=$SERVICE_URL_REACTIVERESUME
+ - 'STORAGE_URL=${SERVICE_URL_MINIO}/default'
- DATABASE_URL=postgresql://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgres:5432/${POSTGRES_DB:-postgres}
- ACCESS_TOKEN_SECRET=$SERVICE_PASSWORD_ACCESSTOKEN
- REFRESH_TOKEN_SECRET=$SERVICE_PASSWORD_REFRESHTOKEN
diff --git a/templates/compose/readeck.yaml b/templates/compose/readeck.yaml
index 0d65b9ced..cfccaabf1 100644
--- a/templates/compose/readeck.yaml
+++ b/templates/compose/readeck.yaml
@@ -8,7 +8,7 @@ services:
readeck:
image: codeberg.org/readeck/readeck:latest
environment:
- - SERVICE_FQDN_READECK
+ - SERVICE_URL_READECK
- READECK_USE_X_FORWARDED=${READECK_USE_X_FORWARDED:-true}
volumes:
- readeck_data:/readeck
diff --git a/templates/compose/redlib.yaml b/templates/compose/redlib.yaml
index e746153d7..732289f56 100644
--- a/templates/compose/redlib.yaml
+++ b/templates/compose/redlib.yaml
@@ -8,7 +8,7 @@ services:
redlib:
image: quay.io/redlib/redlib:latest
environment:
- - SERVICE_FQDN_REDLIB_8080
+ - SERVICE_URL_REDLIB_8080
- REDLIB_SFW_ONLY=${REDLIB_SFW_ONLY:-off}
- REDLIB_BANNER=${REDLIB_BANNER:-""}
- REDLIB_ROBOTS_DISABLE_INDEXING=${REDLIB_ROBOTS_DISABLE_INDEXING:-off}
diff --git a/templates/compose/rocketchat.yaml b/templates/compose/rocketchat.yaml
index 5c6098133..1c881060c 100644
--- a/templates/compose/rocketchat.yaml
+++ b/templates/compose/rocketchat.yaml
@@ -8,10 +8,10 @@ services:
rocketchat:
image: registry.rocket.chat/rocketchat/rocket.chat:latest
environment:
- - SERVICE_FQDN_ROCKETCHAT_3000
+ - SERVICE_URL_ROCKETCHAT_3000
- MONGO_URL=mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/${MONGODB_DATABASE:-rocketchat}?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}
- MONGO_OPLOG_URL=mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/local?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}
- - ROOT_URL=$SERVICE_FQDN_ROCKETCHAT
+ - ROOT_URL=$SERVICE_URL_ROCKETCHAT
- DEPLOY_METHOD=docker
- REG_TOKEN=$REG_TOKEN
depends_on:
diff --git a/templates/compose/ryot.yaml b/templates/compose/ryot.yaml
index f56a45d70..c74b9a7c2 100644
--- a/templates/compose/ryot.yaml
+++ b/templates/compose/ryot.yaml
@@ -8,7 +8,7 @@ services:
ryot:
image: ignisda/ryot:v8
environment:
- - SERVICE_FQDN_RYOT_8000
+ - SERVICE_URL_RYOT_8000
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql:5432/${POSTGRES_DB}
- SERVER_ADMIN_ACCESS_TOKEN=${SERVICE_PASSWORD_64_RYOT}
- TZ=${TZ:-Europe/Amsterdam}
diff --git a/templates/compose/seafile.yaml b/templates/compose/seafile.yaml
index 654769ad1..a3174cc71 100644
--- a/templates/compose/seafile.yaml
+++ b/templates/compose/seafile.yaml
@@ -10,7 +10,7 @@ services:
volumes:
- seafile-data:/shared
environment:
- - SERVICE_FQDN_SEAFILE_80
+ - SERVICE_URL_SEAFILE_80
- SEAFILE_SERVER_HOSTNAME=${SERVICE_URL_SEAFILE_80}
- DB_HOST=mariadb
- DB_PORT=3306
diff --git a/templates/compose/searxng.yaml b/templates/compose/searxng.yaml
index 0982fe5fc..35d81e5e6 100644
--- a/templates/compose/searxng.yaml
+++ b/templates/compose/searxng.yaml
@@ -11,10 +11,10 @@ services:
redis:
condition: service_healthy
environment:
- - SERVICE_FQDN_SEARXNG_8080
+ - SERVICE_URL_SEARXNG_8080
- INSTANCE_NAME=${INSTANCE_NAME:-coolify}
- - BASE_URL=${SERVICE_FQDN_SEARXNG_8080}
- - SEARXNG_URL=${SERVICE_FQDN_SEARXNG_8080}
+ - BASE_URL=${SERVICE_URL_SEARXNG_8080}
+ - SEARXNG_URL=${SERVICE_URL_SEARXNG_8080}
- SEARXNG_BIND_ADDRESS=${SEARXNG_BIND_ADDRESS:-0.0.0.0}
- SEARXNG_SECRET=${SERVICE_PASSWORD_SEARXNGSECRET}
- SEARXNG_REDIS_URL=redis://redis:6379/0
diff --git a/templates/compose/sequin.yaml b/templates/compose/sequin.yaml
index 35e210bdf..247c98f53 100644
--- a/templates/compose/sequin.yaml
+++ b/templates/compose/sequin.yaml
@@ -8,7 +8,7 @@ services:
sequin:
image: sequin/sequin:latest
environment:
- - SERVICE_FQDN_SEQUIN_7376
+ - SERVICE_URL_SEQUIN_7376
- SERVER_HOST=${SERVICE_URL_SEQUIN}
- PG_HOSTNAME=postgres
- PG_DATABASE=${POSTGRES_DB:-sequin-db}
diff --git a/templates/compose/shlink.yaml b/templates/compose/shlink.yaml
index 596f3cedc..8ee64dc7c 100644
--- a/templates/compose/shlink.yaml
+++ b/templates/compose/shlink.yaml
@@ -7,7 +7,7 @@ services:
shlink:
image: shlinkio/shlink:stable
environment:
- - SERVICE_FQDN_SHLINK_8080
+ - SERVICE_URL_SHLINK_8080
- DEFAULT_DOMAIN=${SERVICE_URL_SHLINK}
- IS_HTTPS_ENABLED=false
- INITIAL_API_KEY=${SERVICE_BASE64_SHLINKAPIKEY}
@@ -21,9 +21,9 @@ services:
shlink-web:
image: shlinkio/shlink-web-client
environment:
- - SERVICE_FQDN_SHLINKWEB_8080
+ - SERVICE_URL_SHLINKWEB_8080
- SHLINK_SERVER_API_KEY=${SERVICE_BASE64_SHLINKAPIKEY}
- - SHLINK_SERVER_URL=${SERVICE_FQDN_SHLINK}
+ - SHLINK_SERVER_URL=${SERVICE_URL_SHLINK}
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:8080"]
interval: 2s
diff --git a/templates/compose/slash.yaml b/templates/compose/slash.yaml
index 8c59486a3..2d56e6e96 100644
--- a/templates/compose/slash.yaml
+++ b/templates/compose/slash.yaml
@@ -7,7 +7,7 @@ services:
slash:
image: yourselfhosted/slash
environment:
- - SERVICE_FQDN_SLASH_5231
+ - SERVICE_URL_SLASH_5231
volumes:
- slash-data:/var/opt/slash
healthcheck:
diff --git a/templates/compose/snapdrop.yaml b/templates/compose/snapdrop.yaml
index 82ad5fecc..14790e878 100644
--- a/templates/compose/snapdrop.yaml
+++ b/templates/compose/snapdrop.yaml
@@ -6,7 +6,7 @@ services:
snapdrop:
image: 'linuxserver/snapdrop:version-b8b78cc2'
environment:
- - SERVICE_FQDN_SNAPDROP
+ - SERVICE_URL_SNAPDROP
- PUID=1000
- PGID=1000
- TZ=Europe/Madrid
diff --git a/templates/compose/soketi.yaml b/templates/compose/soketi.yaml
index 29711abaf..31469ae71 100644
--- a/templates/compose/soketi.yaml
+++ b/templates/compose/soketi.yaml
@@ -8,7 +8,7 @@ services:
soketi:
image: "quay.io/soketi/soketi:1.6-16-debian"
environment:
- - SERVICE_FQDN_SOKETI_6001
+ - SERVICE_URL_SOKETI_6001
- SOKETI_DEBUG=${DEBUG:-0}
- SOKETI_DEFAULT_APP_ID=${SERVICE_USER_SOKETI}
- SOKETI_DEFAULT_APP_KEY=${SERVICE_REALBASE64_64_SOKETIKEY}
diff --git a/templates/compose/sonarqube.yaml b/templates/compose/sonarqube.yaml
index d5fd155c9..2a2901812 100644
--- a/templates/compose/sonarqube.yaml
+++ b/templates/compose/sonarqube.yaml
@@ -7,7 +7,7 @@ services:
sonarqube:
image: sonarqube:community
environment:
- - SERVICE_FQDN_SONARQUBE_9000
+ - SERVICE_URL_SONARQUBE_9000
- SONAR_JDBC_URL=jdbc:postgresql://postgresql:5432/${POSTGRES_DB:-sonar}
- SONAR_JDBC_USERNAME=$SERVICE_USER_POSTGRES
- SONAR_JDBC_PASSWORD=$SERVICE_PASSWORD_POSTGRES
diff --git a/templates/compose/sonarr.yaml b/templates/compose/sonarr.yaml
index c2ac3e270..dfcb5dd31 100644
--- a/templates/compose/sonarr.yaml
+++ b/templates/compose/sonarr.yaml
@@ -8,8 +8,8 @@ services:
sonarr:
image: lscr.io/linuxserver/sonarr:latest
environment:
- - SERVICE_FQDN_SONARR_8989
- - _APP_URL=$SERVICE_FQDN_SONARR
+ - SERVICE_URL_SONARR_8989
+ - _APP_URL=$SERVICE_URL_SONARR
- PUID=1000
- PGID=1000
- TZ=${TZ:-America/Toronto}
diff --git a/templates/compose/statusnook.yaml b/templates/compose/statusnook.yaml
index a10884d3d..104c67350 100644
--- a/templates/compose/statusnook.yaml
+++ b/templates/compose/statusnook.yaml
@@ -7,7 +7,7 @@
services:
statusnook:
environment:
- - SERVICE_FQDN_STATUSNOOK_8000
+ - SERVICE_URL_STATUSNOOK_8000
volumes:
- "statusnook-data:/app/statusnook-data"
image: goksan/statusnook
diff --git a/templates/compose/stirling-pdf.yaml b/templates/compose/stirling-pdf.yaml
index 8a27ea13e..6b792d271 100644
--- a/templates/compose/stirling-pdf.yaml
+++ b/templates/compose/stirling-pdf.yaml
@@ -13,7 +13,7 @@ services:
- stirling-custom-files:/customFiles/
- stirling-logs:/logs/
environment:
- - SERVICE_FQDN_SPDF_8080
+ - SERVICE_URL_SPDF_8080
- DOCKER_ENABLE_SECURITY=false
healthcheck:
test: 'curl --fail --silent http://127.0.0.1:8080/api/v1/info/status | grep -q "UP" || exit 1'
diff --git a/templates/compose/strapi.yaml b/templates/compose/strapi.yaml
index 409ba1906..35ff163c5 100644
--- a/templates/compose/strapi.yaml
+++ b/templates/compose/strapi.yaml
@@ -8,7 +8,7 @@ services:
strapi:
image: "elestio/strapi-development:latest"
environment:
- - SERVICE_FQDN_STRAPI_1337
+ - SERVICE_URL_STRAPI_1337
- DATABASE_CLIENT=postgres
- DATABASE_HOST=postgresql
- DATABASE_PORT=5432
diff --git a/templates/compose/supabase.yaml b/templates/compose/supabase.yaml
index 361f4f467..a29c222d5 100644
--- a/templates/compose/supabase.yaml
+++ b/templates/compose/supabase.yaml
@@ -14,7 +14,7 @@ services:
supabase-analytics:
condition: service_healthy
environment:
- - SERVICE_FQDN_SUPABASEKONG_8000
+ - SERVICE_URL_SUPABASEKONG_8000
- KONG_PORT_MAPS=443:8000
- JWT_SECRET=${SERVICE_PASSWORD_JWT}
- KONG_DATABASE=off
@@ -303,14 +303,14 @@ services:
- DEFAULT_PROJECT_NAME=${STUDIO_DEFAULT_PROJECT:-Default Project}
- 'SUPABASE_URL=http://supabase-kong:8000'
- - SUPABASE_PUBLIC_URL=${SERVICE_FQDN_SUPABASEKONG}
+ - SUPABASE_PUBLIC_URL=${SERVICE_URL_SUPABASEKONG}
- SUPABASE_ANON_KEY=${SERVICE_SUPABASEANON_KEY}
- SUPABASE_SERVICE_KEY=${SERVICE_SUPABASESERVICE_KEY}
- AUTH_JWT_SECRET=${SERVICE_PASSWORD_JWT}
- LOGFLARE_API_KEY=${SERVICE_PASSWORD_LOGFLARE}
- LOGFLARE_URL=http://supabase-analytics:4000
- - 'SUPABASE_PUBLIC_API=${SERVICE_FQDN_SUPABASEKONG}'
+ - 'SUPABASE_PUBLIC_API=${SERVICE_URL_SUPABASEKONG}'
- NEXT_PUBLIC_ENABLE_LOGS=true
# Comment to use Big Query backend for analytics
- NEXT_ANALYTICS_BACKEND_PROVIDER=postgres
@@ -959,7 +959,7 @@ services:
- GOTRUE_DB_DRIVER=postgres
- GOTRUE_DB_DATABASE_URL=postgres://supabase_auth_admin:${SERVICE_PASSWORD_POSTGRES}@${POSTGRES_HOSTNAME:-supabase-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-postgres}
# The base URL your site is located at. Currently used in combination with other settings to construct URLs used in emails.
- - GOTRUE_SITE_URL=${SERVICE_FQDN_SUPABASEKONG}
+ - GOTRUE_SITE_URL=${SERVICE_URL_SUPABASEKONG}
# A comma separated list of URIs (e.g. "https://foo.example.com,https://*.foo.example.com,https://bar.example.com") which are permitted as valid redirect_to destinations.
- GOTRUE_URI_ALLOW_LIST=${ADDITIONAL_REDIRECT_URLS}
- GOTRUE_DISABLE_SIGNUP=${DISABLE_SIGNUP:-false}
@@ -1218,7 +1218,7 @@ services:
retries: 3
environment:
- JWT_SECRET=${SERVICE_PASSWORD_JWT}
- - SUPABASE_URL=${SERVICE_FQDN_SUPABASEKONG}
+ - SUPABASE_URL=${SERVICE_URL_SUPABASEKONG}
- SUPABASE_ANON_KEY=${SERVICE_SUPABASEANON_KEY}
- SUPABASE_SERVICE_ROLE_KEY=${SERVICE_SUPABASESERVICE_KEY}
- SUPABASE_DB_URL=postgresql://postgres:${SERVICE_PASSWORD_POSTGRES}@${POSTGRES_HOSTNAME:-supabase-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-postgres}
diff --git a/templates/compose/superset-with-postgresql.yaml b/templates/compose/superset-with-postgresql.yaml
index f5d8a3aa4..b04935b09 100644
--- a/templates/compose/superset-with-postgresql.yaml
+++ b/templates/compose/superset-with-postgresql.yaml
@@ -8,7 +8,7 @@ services:
superset:
image: amancevice/superset:latest
environment:
- - SERVICE_FQDN_SUPERSET_8088
+ - SERVICE_URL_SUPERSET_8088
- SECRET_KEY=${SERVICE_BASE64_64_SUPERSETSECRETKEY}
- MAPBOX_API_KEY=${MAPBOX_API_KEY}
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
diff --git a/templates/compose/supertokens-with-mysql.yaml b/templates/compose/supertokens-with-mysql.yaml
index 9a00ddb34..e300a9230 100644
--- a/templates/compose/supertokens-with-mysql.yaml
+++ b/templates/compose/supertokens-with-mysql.yaml
@@ -11,7 +11,7 @@ services:
mysql:
condition: service_healthy
environment:
- - SERVICE_FQDN_SUPERTOKENS_3567
+ - SERVICE_URL_SUPERTOKENS_3567
- API_KEYS=${API_KEYS:-}
- MYSQL_CONNECTION_URI=mysql://$SERVICE_USER_MYSQL:$SERVICE_PASSWORD_MYSQL@mysql:3306/${MYSQL_DATABASE:-supertokens}
healthcheck:
diff --git a/templates/compose/supertokens-with-postgresql.yaml b/templates/compose/supertokens-with-postgresql.yaml
index fa88eb1bf..4365339e0 100644
--- a/templates/compose/supertokens-with-postgresql.yaml
+++ b/templates/compose/supertokens-with-postgresql.yaml
@@ -11,7 +11,7 @@ services:
postgres:
condition: service_healthy
environment:
- - SERVICE_FQDN_SUPERTOKENS_3567
+ - SERVICE_URL_SUPERTOKENS_3567
- API_KEYS=${API_KEYS:-}
- POSTGRESQL_CONNECTION_URI="postgresql://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgres:5432/${POSTGRES_DB:-supertokens}"
healthcheck:
diff --git a/templates/compose/syncthing.yaml b/templates/compose/syncthing.yaml
index ad193422d..f16c3bc45 100644
--- a/templates/compose/syncthing.yaml
+++ b/templates/compose/syncthing.yaml
@@ -8,7 +8,7 @@ services:
syncthing:
image: lscr.io/linuxserver/syncthing:latest
environment:
- - SERVICE_FQDN_SYNCTHING_8384
+ - SERVICE_URL_SYNCTHING_8384
- PUID=1000
- PGID=1000
- TZ=${TZ:-Etc/UTC}
diff --git a/templates/compose/teable.yaml b/templates/compose/teable.yaml
index 06fd598e8..f9fddbd60 100644
--- a/templates/compose/teable.yaml
+++ b/templates/compose/teable.yaml
@@ -10,8 +10,8 @@ services:
volumes:
- teable_data:/app/.assets:rw
environment:
- - SERVICE_FQDN_TEABLE_3000
- - PUBLIC_ORIGIN=${SERVICE_FQDN_TEABLE}
+ - SERVICE_URL_TEABLE_3000
+ - PUBLIC_ORIGIN=${SERVICE_URL_TEABLE}
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
- SECRET_KEY=${SERVICE_PASSWORD_64_SECRET}
- TZ=${TIMEZONE}
diff --git a/templates/compose/tolgee.yaml b/templates/compose/tolgee.yaml
index 4f037b23e..4443257a0 100644
--- a/templates/compose/tolgee.yaml
+++ b/templates/compose/tolgee.yaml
@@ -8,7 +8,7 @@ services:
tolgee:
image: tolgee/tolgee
environment:
- - SERVICE_FQDN_TOLGEE_8080
+ - SERVICE_URL_TOLGEE_8080
- TOLGEE_AUTHENTICATION_ENABLED=true
- TOLGEE_AUTHENTICATION_INITIAL_PASSWORD=$SERVICE_PASSWORD_TOLGEE
- TOLGEE_AUTHENTICATION_INITIAL_USERNAME=admin
diff --git a/templates/compose/traccar.yaml b/templates/compose/traccar.yaml
index 5aa0887fe..35fc46035 100644
--- a/templates/compose/traccar.yaml
+++ b/templates/compose/traccar.yaml
@@ -8,8 +8,8 @@ services:
traccar:
image: traccar/traccar:latest
environment:
- - SERVICE_FQDN_TRACCAR_8082
- - SERVICE_FQDN_TRACCARAPI_5159
+ - SERVICE_URL_TRACCAR_8082
+ - SERVICE_URL_TRACCARAPI_5159
- CONFIG_USE_ENVIRONMENT_VARIABLES=${CONFIG_USE_ENVIRONMENT_VARIABLES:-true}
- DATABASE_USER=${SERVICE_USER_POSTGRES}
- DATABASE_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
diff --git a/templates/compose/transmission.yaml b/templates/compose/transmission.yaml
index 1e5da78ea..edd0b5032 100644
--- a/templates/compose/transmission.yaml
+++ b/templates/compose/transmission.yaml
@@ -8,7 +8,7 @@ services:
transmission:
image: lscr.io/linuxserver/transmission:latest
environment:
- - SERVICE_FQDN_TRANSMISSION_9091
+ - SERVICE_URL_TRANSMISSION_9091
- PUID=1000
- PGID=1000
- USER=${SERVICE_USER_ADMIN}
diff --git a/templates/compose/trigger-with-external-database.yaml b/templates/compose/trigger-with-external-database.yaml
index fa4a07307..17b94f3df 100644
--- a/templates/compose/trigger-with-external-database.yaml
+++ b/templates/compose/trigger-with-external-database.yaml
@@ -8,9 +8,9 @@ services:
trigger:
image: ghcr.io/triggerdotdev/trigger.dev:main
environment:
- - SERVICE_FQDN_TRIGGER_3000
- - LOGIN_ORIGIN=$SERVICE_FQDN_TRIGGER
- - APP_ORIGIN=$SERVICE_FQDN_TRIGGER
+ - SERVICE_URL_TRIGGER_3000
+ - LOGIN_ORIGIN=$SERVICE_URL_TRIGGER
+ - APP_ORIGIN=$SERVICE_URL_TRIGGER
- MAGIC_LINK_SECRET=$SERVICE_PASSWORD_32_MAGIC
- ENCRYPTION_KEY=$SERVICE_PASSWORD_32_ENCRYPTION
- SESSION_SECRET=$SERVICE_PASSWORD_32_SESSION
diff --git a/templates/compose/trigger.yaml b/templates/compose/trigger.yaml
index ae645e112..09e56d5a2 100644
--- a/templates/compose/trigger.yaml
+++ b/templates/compose/trigger.yaml
@@ -40,17 +40,17 @@ x-common-env: &common-env
RESEND_API_KEY: ${RESEND_API_KEY}
FROM_EMAIL: ${FROM_EMAIL}
REPLY_TO_EMAIL: ${REPLY_TO_EMAIL}
- LOGIN_ORIGIN: $SERVICE_FQDN_TRIGGER_3000
- APP_ORIGIN: $SERVICE_FQDN_TRIGGER_3000
- DEV_OTEL_EXPORTER_OTLP_ENDPOINT: $SERVICE_FQDN_TRIGGER_3000/otel
- OTEL_EXPORTER_OTLP_ENDPOINT: $SERVICE_FQDN_TRIGGER_3000/otel
+ LOGIN_ORIGIN: $SERVICE_URL_TRIGGER_3000
+ APP_ORIGIN: $SERVICE_URL_TRIGGER_3000
+ DEV_OTEL_EXPORTER_OTLP_ENDPOINT: $SERVICE_URL_TRIGGER_3000/otel
+ OTEL_EXPORTER_OTLP_ENDPOINT: $SERVICE_URL_TRIGGER_3000/otel
ELECTRIC_ORIGIN: http://electric:3000
services:
trigger:
image: ghcr.io/triggerdotdev/trigger.dev:v3
environment:
- SERVICE_FQDN_TRIGGER_3000: ""
+ SERVICE_URL_TRIGGER_3000: ""
<<: *common-env
depends_on:
postgresql:
diff --git a/templates/compose/triliumnext.yaml b/templates/compose/triliumnext.yaml
index 1dd230473..efcb3e49f 100644
--- a/templates/compose/triliumnext.yaml
+++ b/templates/compose/triliumnext.yaml
@@ -9,7 +9,7 @@ services:
image: ghcr.io/triliumnext/trilium:stable
platform: linux/amd64 # https://github.com/TriliumNext/Trilium/issues/6390
environment:
- - SERVICE_FQDN_TRILIUMNEXT_8080
+ - SERVICE_URL_TRILIUMNEXT_8080
- TZ=${TZ:-Europe/Berlin}
volumes:
- triliumnext_data:/home/node/trilium-data
diff --git a/templates/compose/twenty.yaml b/templates/compose/twenty.yaml
index c76616d5a..c95be4b34 100644
--- a/templates/compose/twenty.yaml
+++ b/templates/compose/twenty.yaml
@@ -9,9 +9,9 @@ services:
twenty:
image: 'twentycrm/twenty:latest'
environment:
- - SERVICE_FQDN_TWENTY_3000
- - SERVER_URL=$SERVICE_FQDN_TWENTY
- - FRONT_BASE_URL=$SERVICE_FQDN_TWENTY
+ - SERVICE_URL_TWENTY_3000
+ - SERVER_URL=$SERVICE_URL_TWENTY
+ - FRONT_BASE_URL=$SERVICE_URL_TWENTY
- ENABLE_DB_MIGRATIONS=true
- CACHE_STORAGE_TYPE=${CACHE_STORAGE_TYPE:-redis}
- REDIS_URL=redis://redis:6379
diff --git a/templates/compose/typesense.yaml b/templates/compose/typesense.yaml
index d10f01bba..422332fdb 100644
--- a/templates/compose/typesense.yaml
+++ b/templates/compose/typesense.yaml
@@ -8,7 +8,7 @@ services:
typesense:
image: typesense/typesense:28.0
environment:
- - SERVICE_FQDN_TYPESENSE_8108
+ - SERVICE_URL_TYPESENSE_8108
- TYPESENSE_ENABLE_CORS=${TYPESENSE_ENABLE_CORS:-true}
- TYPESENSE_DATA_DIR=/data
- TYPESENSE_API_KEY=${TYPESENSE_API_KEY:?}
diff --git a/templates/compose/umami.yaml b/templates/compose/umami.yaml
index 99758aa2b..2111b3bc7 100644
--- a/templates/compose/umami.yaml
+++ b/templates/compose/umami.yaml
@@ -8,7 +8,7 @@ services:
umami:
image: ghcr.io/umami-software/umami:postgresql-latest
environment:
- - SERVICE_FQDN_UMAMI_3000
+ - SERVICE_URL_UMAMI_3000
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgresql:5432/$POSTGRES_DB
- DATABASE_TYPE=postgres
- APP_SECRET=$SERVICE_PASSWORD_64_UMAMI
diff --git a/templates/compose/unleash-with-postgresql.yaml b/templates/compose/unleash-with-postgresql.yaml
index f4b00ba4c..56598a383 100644
--- a/templates/compose/unleash-with-postgresql.yaml
+++ b/templates/compose/unleash-with-postgresql.yaml
@@ -8,8 +8,8 @@ services:
unleash:
image: "unleashorg/unleash-server:latest"
environment:
- - SERVICE_FQDN_UNLEASH_4242
- - UNLEASH_URL=${SERVICE_FQDN_UNLEASH}
+ - SERVICE_URL_UNLEASH_4242
+ - UNLEASH_URL=${SERVICE_URL_UNLEASH}
- UNLEASH_DEFAULT_ADMIN_PASSWORD=${SERVICE_PASSWORD_UNLEASH}
- "DATABASE_URL=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgres/db"
- DATABASE_SSL=false
diff --git a/templates/compose/unleash-without-database.yaml b/templates/compose/unleash-without-database.yaml
index 1e7e261b1..3360cecd6 100644
--- a/templates/compose/unleash-without-database.yaml
+++ b/templates/compose/unleash-without-database.yaml
@@ -8,8 +8,8 @@ services:
unleash:
image: 'unleashorg/unleash-server:latest'
environment:
- - SERVICE_FQDN_UNLEASH_4242
- - UNLEASH_URL=${SERVICE_FQDN_UNLEASH}
+ - SERVICE_URL_UNLEASH_4242
+ - UNLEASH_URL=${SERVICE_URL_UNLEASH}
- UNLEASH_DEFAULT_ADMIN_PASSWORD=${SERVICE_PASSWORD_UNLEASH}
- DATABASE_URL=${DATABASE_URL}
- DATABASE_SSL=${DATABASE_SSL:-false}
diff --git a/templates/compose/unsend.yaml b/templates/compose/unsend.yaml
index 32323f4bb..cdfdcc441 100644
--- a/templates/compose/unsend.yaml
+++ b/templates/compose/unsend.yaml
@@ -38,9 +38,9 @@ services:
expose:
- 3000
environment:
- - SERVICE_FQDN_UNSEND_3000
+ - SERVICE_URL_UNSEND_3000
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${SERVICE_DB_POSTGRES:-unsend}
- - NEXTAUTH_URL=${SERVICE_FQDN_UNSEND}
+ - NEXTAUTH_URL=${SERVICE_URL_UNSEND}
- NEXTAUTH_SECRET=${SERVICE_BASE64_64_NEXTAUTHSECRET}
- AWS_ACCESS_KEY=${AWS_ACCESS_KEY:?}
- AWS_SECRET_KEY=${AWS_SECRET_KEY:?}
diff --git a/templates/compose/unstructured.yaml b/templates/compose/unstructured.yaml
index a4f546be9..48ea7577a 100644
--- a/templates/compose/unstructured.yaml
+++ b/templates/compose/unstructured.yaml
@@ -8,7 +8,7 @@ services:
unstructured:
image: "downloads.unstructured.io/unstructured-io/unstructured-api:latest"
environment:
- - SERVICE_FQDN_UNSTRUCTURED_8000
+ - SERVICE_URL_UNSTRUCTURED_8000
- "UNSTRUCTURED_API_KEY=${SERVICE_PASSWORD_APIKEY}"
healthcheck:
test:
diff --git a/templates/compose/uptime-kuma.yaml b/templates/compose/uptime-kuma.yaml
index 43515be8b..ccd8d5602 100644
--- a/templates/compose/uptime-kuma.yaml
+++ b/templates/compose/uptime-kuma.yaml
@@ -8,7 +8,7 @@ services:
uptime-kuma:
image: louislam/uptime-kuma:1
environment:
- - SERVICE_FQDN_UPTIMEKUMA_3001
+ - SERVICE_URL_UPTIMEKUMA_3001
volumes:
- uptime-kuma:/app/data
healthcheck:
diff --git a/templates/compose/vaultwarden.yaml b/templates/compose/vaultwarden.yaml
index e6a7e1750..4200aed5d 100644
--- a/templates/compose/vaultwarden.yaml
+++ b/templates/compose/vaultwarden.yaml
@@ -8,8 +8,8 @@ services:
vaultwarden:
image: vaultwarden/server:latest
environment:
- - SERVICE_FQDN_VAULTWARDEN
- - DOMAIN=${SERVICE_FQDN_VAULTWARDEN}
+ - SERVICE_URL_VAULTWARDEN
+ - DOMAIN=${SERVICE_URL_VAULTWARDEN}
- DATABASE_URL=${VAULTWARDEN_DB_URL:-data/db.sqlite3}
- SIGNUPS_ALLOWED=${SIGNUP_ALLOWED:-true}
- ADMIN_TOKEN=${SERVICE_PASSWORD_64_ADMIN}
diff --git a/templates/compose/vert.yaml b/templates/compose/vert.yaml
index 09ee79aee..c49122c8c 100644
--- a/templates/compose/vert.yaml
+++ b/templates/compose/vert.yaml
@@ -8,8 +8,8 @@ services:
vert:
image: ghcr.io/vert-sh/vert:latest
environment:
- - SERVICE_FQDN_VERT_80
- - PUB_VERT_URL=${SERVICE_FQDN_VERT_80}
+ - SERVICE_URL_VERT_80
+ - PUB_VERT_URL=${SERVICE_URL_VERT_80}
- PUB_HOSTNAME=${SERVICE_URL_VERT_80}
- PUB_PORT=80
- PUB_ENV=production
diff --git a/templates/compose/vikunja-with-postgresql.yaml b/templates/compose/vikunja-with-postgresql.yaml
index 7551c9a56..0ac8ef419 100644
--- a/templates/compose/vikunja-with-postgresql.yaml
+++ b/templates/compose/vikunja-with-postgresql.yaml
@@ -8,8 +8,8 @@ services:
vikunja:
image: vikunja/vikunja
environment:
- - SERVICE_FQDN_VIKUNJA
- - VIKUNJA_SERVICE_PUBLICURL=$SERVICE_FQDN_VIKUNJA
+ - SERVICE_URL_VIKUNJA
+ - VIKUNJA_SERVICE_PUBLICURL=$SERVICE_URL_VIKUNJA
- VIKUNJA_SERVICE_JWTSECRET=$SERVICE_PASSWORD_JWTSECRET
- VIKUNJA_SERVICE_ENABLEREGISTRATION=true
- VIKUNJA_DATABASE_TYPE=postgres
diff --git a/templates/compose/vikunja.yaml b/templates/compose/vikunja.yaml
index 83f591589..f3b8ad27c 100644
--- a/templates/compose/vikunja.yaml
+++ b/templates/compose/vikunja.yaml
@@ -8,8 +8,8 @@ services:
vikunja:
image: vikunja/vikunja
environment:
- - SERVICE_FQDN_VIKUNJA
- - VIKUNJA_SERVICE_PUBLICURL=$SERVICE_FQDN_VIKUNJA
+ - SERVICE_URL_VIKUNJA
+ - VIKUNJA_SERVICE_PUBLICURL=$SERVICE_URL_VIKUNJA
- VIKUNJA_SERVICE_JWTSECRET=$SERVICE_PASSWORD_JWTSECRET
- VIKUNJA_SERVICE_ENABLEREGISTRATION=true
- VIKUNJA_DATABASE_PATH=/db/vikunja.db
diff --git a/templates/compose/vvveb-with-mariadb.yaml b/templates/compose/vvveb-with-mariadb.yaml
index a20c70a46..f192db3e0 100644
--- a/templates/compose/vvveb-with-mariadb.yaml
+++ b/templates/compose/vvveb-with-mariadb.yaml
@@ -10,7 +10,7 @@ services:
volumes:
- vvveb-data:/var/www/html
environment:
- - SERVICE_FQDN_VVVEB_80
+ - SERVICE_URL_VVVEB_80
- DB_ENGINE=mysqli
- DB_HOST=mariadb
- DB_USER=${SERVICE_USER_VVVEB}
diff --git a/templates/compose/vvveb-with-mysql.yaml b/templates/compose/vvveb-with-mysql.yaml
index 64b4b264a..7af7d1f09 100644
--- a/templates/compose/vvveb-with-mysql.yaml
+++ b/templates/compose/vvveb-with-mysql.yaml
@@ -10,7 +10,7 @@ services:
volumes:
- vvveb-data:/var/www/html
environment:
- - SERVICE_FQDN_VVVEB_80
+ - SERVICE_URL_VVVEB_80
- DB_ENGINE=mysqli
- DB_HOST=mysql
- DB_USER=${SERVICE_USER_VVVEB}
diff --git a/templates/compose/vvveb.yaml b/templates/compose/vvveb.yaml
index 11b71a7e9..bd5874471 100644
--- a/templates/compose/vvveb.yaml
+++ b/templates/compose/vvveb.yaml
@@ -10,7 +10,7 @@ services:
volumes:
- vvveb-data:/var/www/html
environment:
- - SERVICE_FQDN_VVVEB_80
+ - SERVICE_URL_VVVEB_80
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1"]
interval: 2s
diff --git a/templates/compose/wakapi.yaml b/templates/compose/wakapi.yaml
index 3fce21a80..26b2e5b39 100644
--- a/templates/compose/wakapi.yaml
+++ b/templates/compose/wakapi.yaml
@@ -8,7 +8,7 @@ services:
wakapi:
image: ghcr.io/muety/wakapi:latest
environment:
- - SERVICE_FQDN_WAKAPI_3000
+ - SERVICE_URL_WAKAPI_3000
- TZ=${TIMEZONE:-Europe/Berlin}
- WAKAPI_SERVER_LISTEN_IPV6="-"
diff --git a/templates/compose/weaviate.yaml b/templates/compose/weaviate.yaml
index 8a1fbc650..8e550ba67 100644
--- a/templates/compose/weaviate.yaml
+++ b/templates/compose/weaviate.yaml
@@ -18,7 +18,7 @@ services:
- "--scheme"
- http
environment:
- - SERVICE_FQDN_WEAVIATE_8080
+ - SERVICE_URL_WEAVIATE_8080
- DISABLE_TELEMETRY=${DISABLE_TELEMETRY:-true}
- QUERY_DEFAULTS_LIMIT=${QUERY_DEFAULTS_LIMIT:-1000}
- LOG_LEVEL=${LOG_LEVEL:-info}
diff --git a/templates/compose/web-check.yaml b/templates/compose/web-check.yaml
index 626014f39..0834f63b5 100644
--- a/templates/compose/web-check.yaml
+++ b/templates/compose/web-check.yaml
@@ -8,7 +8,7 @@ services:
web-check:
image: lissy93/web-check
environment:
- - SERVICE_FQDN_WEBCHECK_3000
+ - SERVICE_URL_WEBCHECK_3000
healthcheck:
test:
- CMD-SHELL
diff --git a/templates/compose/weblate.yaml b/templates/compose/weblate.yaml
index ca2b6a64d..c721f921c 100644
--- a/templates/compose/weblate.yaml
+++ b/templates/compose/weblate.yaml
@@ -8,7 +8,7 @@ services:
weblate:
image: weblate/weblate:latest
environment:
- - SERVICE_FQDN_WEBLATE_8080
+ - SERVICE_URL_WEBLATE_8080
- WEBLATE_SITE_DOMAIN=$SERVICE_URL_WEBLATE
- WEBLATE_ADMIN_NAME=${WEBLATE_ADMIN_NAME:-Admin}
- WEBLATE_ADMIN_EMAIL=${WEBLATE_ADMIN_EMAIL:-admin@example.com}
diff --git a/templates/compose/whoogle.yaml b/templates/compose/whoogle.yaml
index 0be303f9a..bf12c18a0 100644
--- a/templates/compose/whoogle.yaml
+++ b/templates/compose/whoogle.yaml
@@ -8,7 +8,7 @@ services:
whoogle:
image: benbusby/whoogle-search:latest
environment:
- - SERVICE_FQDN_WHOOGLE_5000
+ - SERVICE_URL_WHOOGLE_5000
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:5000"]
interval: 2s
diff --git a/templates/compose/wikijs.yaml b/templates/compose/wikijs.yaml
index e59ace74d..6c8876f66 100644
--- a/templates/compose/wikijs.yaml
+++ b/templates/compose/wikijs.yaml
@@ -10,7 +10,7 @@ services:
depends_on:
- postgres
environment:
- - SERVICE_FQDN_WIKIJS_3000
+ - SERVICE_URL_WIKIJS_3000
- DB_TYPE=postgres
- DB_HOST=postgres
- DB_PORT=5432
diff --git a/templates/compose/windmill.yaml b/templates/compose/windmill.yaml
index 1ce3a4652..a9f6ed25f 100644
--- a/templates/compose/windmill.yaml
+++ b/templates/compose/windmill.yaml
@@ -23,10 +23,10 @@ services:
windmill-server:
image: ghcr.io/windmill-labs/windmill:main
environment:
- - SERVICE_FQDN_WINDMILL_8000
+ - SERVICE_URL_WINDMILL_8000
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@db/${POSTGRES_DB:-windmill-db}
- MODE=server
- - BASE_URL=${SERVICE_FQDN_WINDMILL}
+ - BASE_URL=${SERVICE_URL_WINDMILL}
depends_on:
db:
condition: service_healthy
diff --git a/templates/compose/windows.yaml b/templates/compose/windows.yaml
index f1d2a8573..d69d9b76c 100644
--- a/templates/compose/windows.yaml
+++ b/templates/compose/windows.yaml
@@ -11,7 +11,7 @@ services:
volumes:
- windows-storage:/storage
environment:
- - SERVICE_FQDN_WINDOWS_8006
+ - SERVICE_URL_WINDOWS_8006
- VERSION=11
devices:
- /dev/kvm:/dev/kvm
diff --git a/templates/compose/wings.yaml b/templates/compose/wings.yaml
new file mode 100644
index 000000000..7a3c198a1
--- /dev/null
+++ b/templates/compose/wings.yaml
@@ -0,0 +1,44 @@
+# documentation: https://pterodactyl.io/
+# slogan: Wings is Pterodactyl's server control plane
+# tags: game, game server, management, panel, minecraft
+# logo: svgs/pterodactyl.png
+# port: 8443
+
+services:
+ wings:
+ image: "ghcr.io/pterodactyl/wings:latest"
+ environment:
+ - SERVICE_URL_WINGS_8443
+ - "TZ=${TIMEZONE:-UTC}"
+ - WINGS_USERNAME=$SERVICE_USER_WINGS
+ volumes:
+ - "/var/run/docker.sock:/var/run/docker.sock"
+ - "/var/lib/docker/containers/:/var/lib/docker/containers/"
+ - "/var/lib/pterodactyl/volumes:/var/lib/pterodactyl/volumes"
+ - "/tmp/pterodactyl:/tmp/pterodactyl"
+ - wings_lib:/var/lib/pterodactyl/
+ - wings_logs:/var/log/pterodactyl/
+ - type: bind
+ source: ./etc/config.yml
+ target: /etc/pterodactyl/config.yml
+ content: |
+ debug: false
+ uuid: ReplaceConfig
+ token_id: ReplaceConfig
+ token: ReplaceConfig
+ api:
+ host: 0.0.0.0
+ port: 8443 # Warning, panel must have 443 as daemon port, while here it should should be 8443, FQDN in Coolify for this service should be https://*:8443
+ ssl:
+ enabled: false
+ cert: ReplaceConfig
+ key: ReplaceConfig
+ upload_limit: 100
+ system:
+ data: /var/lib/pterodactyl/volumes
+ sftp:
+ bind_port: 2022
+ allowed_mounts: []
+ remote: ''
+ ports:
+ - '2022:2022'
\ No newline at end of file
diff --git a/templates/compose/wireguard-easy.yaml b/templates/compose/wireguard-easy.yaml
index 6d5451c2d..e5a185155 100644
--- a/templates/compose/wireguard-easy.yaml
+++ b/templates/compose/wireguard-easy.yaml
@@ -8,7 +8,7 @@ services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
environment:
- - SERVICE_FQDN_WIREGUARDEASY_51821
+ - SERVICE_URL_WIREGUARDEASY_51821
- WG_HOST=${SERVICE_URL_WIREGUARDEASY}
- LANG=${LANG:-en}
- WG_PORT=51820
diff --git a/templates/compose/wordpress-with-mariadb.yaml b/templates/compose/wordpress-with-mariadb.yaml
index 7077853d5..a268b0017 100644
--- a/templates/compose/wordpress-with-mariadb.yaml
+++ b/templates/compose/wordpress-with-mariadb.yaml
@@ -9,7 +9,7 @@ services:
volumes:
- wordpress-files:/var/www/html
environment:
- - SERVICE_FQDN_WORDPRESS
+ - SERVICE_URL_WORDPRESS
- WORDPRESS_DB_HOST=mariadb
- WORDPRESS_DB_USER=$SERVICE_USER_WORDPRESS
- WORDPRESS_DB_PASSWORD=$SERVICE_PASSWORD_WORDPRESS
diff --git a/templates/compose/wordpress-with-mysql.yaml b/templates/compose/wordpress-with-mysql.yaml
index bcd3460eb..60cc0d776 100644
--- a/templates/compose/wordpress-with-mysql.yaml
+++ b/templates/compose/wordpress-with-mysql.yaml
@@ -9,7 +9,7 @@ services:
volumes:
- wordpress-files:/var/www/html
environment:
- - SERVICE_FQDN_WORDPRESS
+ - SERVICE_URL_WORDPRESS
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_USER=$SERVICE_USER_WORDPRESS
- WORDPRESS_DB_PASSWORD=$SERVICE_PASSWORD_WORDPRESS
diff --git a/templates/compose/wordpress-without-database.yaml b/templates/compose/wordpress-without-database.yaml
index e9908854e..787f3bef3 100644
--- a/templates/compose/wordpress-without-database.yaml
+++ b/templates/compose/wordpress-without-database.yaml
@@ -9,7 +9,7 @@ services:
volumes:
- wordpress-files:/var/www/html
environment:
- - SERVICE_FQDN_WORDPRESS
+ - SERVICE_URL_WORDPRESS
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1"]
interval: 2s
diff --git a/templates/compose/yamtrack-with-postgresql.yaml b/templates/compose/yamtrack-with-postgresql.yaml
index 470cabfbd..4adc3796c 100644
--- a/templates/compose/yamtrack-with-postgresql.yaml
+++ b/templates/compose/yamtrack-with-postgresql.yaml
@@ -8,8 +8,8 @@ services:
yamtrack:
image: ghcr.io/fuzzygrim/yamtrack
environment:
- - SERVICE_FQDN_YAMTRACK_8000
- - URLS=${SERVICE_FQDN_YAMTRACK}
+ - SERVICE_URL_YAMTRACK_8000
+ - URLS=${SERVICE_URL_YAMTRACK}
- TZ=${TZ:-Europe/Berlin}
- SECRET=${SERVICE_PASSWORD_SECRET}
- REGISTRATION=${REGISTRATION_ENABLED:-true}
diff --git a/templates/compose/yamtrack.yaml b/templates/compose/yamtrack.yaml
index 49e760e8f..6e0258075 100644
--- a/templates/compose/yamtrack.yaml
+++ b/templates/compose/yamtrack.yaml
@@ -8,8 +8,8 @@ services:
yamtrack:
image: ghcr.io/fuzzygrim/yamtrack
environment:
- - SERVICE_FQDN_YAMTRACK_8000
- - URLS=${SERVICE_FQDN_YAMTRACK}
+ - SERVICE_URL_YAMTRACK_8000
+ - URLS=${SERVICE_URL_YAMTRACK}
- TZ=${TZ:-Europe/Berlin}
- SECRET=${SERVICE_PASSWORD_SECRET}
- REGISTRATION=${REGISTRATION_ENABLED:-true}
diff --git a/templates/compose/zep.yaml b/templates/compose/zep.yaml
index 1bc0912a3..b90e0a515 100644
--- a/templates/compose/zep.yaml
+++ b/templates/compose/zep.yaml
@@ -24,7 +24,7 @@ services:
nlp:
image: ghcr.io/getzep/zep-nlp-server:0.4
environment:
- - SERVICE_FQDN_NLP_5557
+ - SERVICE_URL_NLP_5557
- ZEP_OPENAI_API_KEY=${OPENAI_API_KEY}
- ZEP_AUTH_SECRET=${SERVICE_PASSWORD_AUTHSECRET}
- ZEP_SERVER_WEB_ENABLED=${ZEP_SERVER_WEB_ENABLED:-false}
@@ -42,7 +42,7 @@ services:
nlp:
condition: service_healthy
environment:
- - SERVICE_FQDN_ZEP_8000
+ - SERVICE_URL_ZEP_8000
- ZEP_STORE_POSTGRES_DSN=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/postgres?sslmode=disable
- ZEP_NLP_SERVER_URL=http://nlp:5557
- ZEP_EXTRACTORS_DOCUMENTS_EMBEDDINGS_SERVICE=${EXTRACTORS_DOCUMENTS_EMBEDDINGS_SERVICE:-openai}
diff --git a/templates/compose/zipline.yaml b/templates/compose/zipline.yaml
index 141a6db9b..8c5b2ae81 100644
--- a/templates/compose/zipline.yaml
+++ b/templates/compose/zipline.yaml
@@ -8,7 +8,7 @@ services:
zipline:
image: ghcr.io/diced/zipline:latest
environment:
- - SERVICE_FQDN_ZIPLINE_3000
+ - SERVICE_URL_ZIPLINE_3000
- CORE_RETURN_HTTPS=${CORE_RETURN_HTTPS:-false}
- CORE_SECRET=${SERVICE_PASSWORD_64_ZIPLINE}
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres/${POSTGRES_DB:-zipline-db}
diff --git a/templates/service-templates-latest.json b/templates/service-templates-latest.json
new file mode 100644
index 000000000..87946460f
--- /dev/null
+++ b/templates/service-templates-latest.json
@@ -0,0 +1,4043 @@
+{
+ "activepieces": {
+ "documentation": "https://www.activepieces.com/docs/getting-started/introduction?utm_source=coolify.io",
+ "slogan": "Open source no-code business automation.",
+ "compose": "c2VydmljZXM6CiAgYWN0aXZlcGllY2VzOgogICAgaW1hZ2U6ICdnaGNyLmlvL2FjdGl2ZXBpZWNlcy9hY3RpdmVwaWVjZXM6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQUNUSVZFUElFQ0VTCiAgICAgIC0gQVBfQVBJX0tFWT0kU0VSVklDRV9QQVNTV09SRF82NF9BUElLRVkKICAgICAgLSBBUF9FTkNSWVBUSU9OX0tFWT0kU0VSVklDRV9QQVNTV09SRF9FTkNSWVBUSU9OS0VZCiAgICAgIC0gJ0FQX0VOR0lORV9FWEVDVVRBQkxFX1BBVEg9JHtBUF9FTkdJTkVfRVhFQ1VUQUJMRV9QQVRIOi1kaXN0L3BhY2thZ2VzL2VuZ2luZS9tYWluLmpzfScKICAgICAgLSAnQVBfRU5WSVJPTk1FTlQ9JHtBUF9FTlZJUk9OTUVOVDotcHJvZH0nCiAgICAgIC0gJ0FQX0VYRUNVVElPTl9NT0RFPSR7QVBfRVhFQ1VUSU9OX01PREU6LVVOU0FOREJPWEVEfScKICAgICAgLSAnQVBfRlJPTlRFTkRfVVJMPSR7U0VSVklDRV9VUkxfQUNUSVZFUElFQ0VTfScKICAgICAgLSBBUF9KV1RfU0VDUkVUPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0pXVAogICAgICAtICdBUF9QT1NUR1JFU19EQVRBQkFTRT0ke1BPU1RHUkVTX0RCOi1hY3RpdmVwaWVjZXN9JwogICAgICAtICdBUF9QT1NUR1JFU19IT1NUPSR7UE9TVEdSRVNfSE9TVDotcG9zdGdyZXN9JwogICAgICAtICdBUF9QT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdBUF9QT1NUR1JFU19QT1JUPSR7UE9TVEdSRVNfUE9SVDotNTQzMn0nCiAgICAgIC0gQVBfUE9TVEdSRVNfVVNFUk5BTUU9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtICdBUF9SRURJU19IT1NUPSR7UkVESVNfSE9TVDotcmVkaXN9JwogICAgICAtICdBUF9SRURJU19QT1JUPSR7UkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ0FQX1NBTkRCT1hfUlVOX1RJTUVfU0VDT05EUz0ke0FQX1NBTkRCT1hfUlVOX1RJTUVfU0VDT05EUzotNjAwfScKICAgICAgLSAnQVBfVEVMRU1FVFJZX0VOQUJMRUQ9JHtBUF9URUxFTUVUUllfRU5BQkxFRDotZmFsc2V9JwogICAgICAtICdBUF9URU1QTEFURVNfU09VUkNFX1VSTD0ke0FQX1RFTVBMQVRFU19TT1VSQ0VfVVJMOi1odHRwczovL2Nsb3VkLmFjdGl2ZXBpZWNlcy5jb20vYXBpL3YxL2Zsb3ctdGVtcGxhdGVzfScKICAgICAgLSAnQVBfVFJJR0dFUl9ERUZBVUxUX1BPTExfSU5URVJWQUw9JHtBUF9UUklHR0VSX0RFRkFVTFRfUE9MTF9JTlRFUlZBTDotNX0nCiAgICAgIC0gJ0FQX1dFQkhPT0tfVElNRU9VVF9TRUNPTkRTPSR7QVBfV0VCSE9PS19USU1FT1VUX1NFQ09ORFM6LTMwfScKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LWFjdGl2ZXBpZWNlc30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QT1JUPSR7UE9TVEdSRVNfUE9SVDotNTQzMn0nCiAgICB2b2x1bWVzOgogICAgICAtICdwZy1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAncmVkaXNfZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "workflow",
+ "automation",
+ "no code",
+ "open source"
+ ],
+ "logo": "svgs/activepieces.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "actualbudget": {
+ "documentation": "https://actualbudget.org/docs/install/docker?utm_source=coolify.io",
+ "slogan": "A local-first personal finance app.",
+ "compose": "c2VydmljZXM6CiAgYWN0dWFsX3NlcnZlcjoKICAgIGltYWdlOiAnYWN0dWFsYnVkZ2V0L2FjdHVhbC1zZXJ2ZXI6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQUNUVUFMXzUwMDYKICAgICAgLSBBQ1RVQUxfTE9HSU5fTUVUSE9EPXBhc3N3b3JkCiAgICB2b2x1bWVzOgogICAgICAtICdhY3R1YWxfZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAiYmFzaCAtYyAnOj4gL2Rldi90Y3AvMTI3LjAuMC4xLzUwMDYnIHx8IGV4aXQgMSIKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAzCg==",
+ "tags": [
+ "budgeting",
+ "actual",
+ "finance",
+ "budget",
+ "money",
+ "expenses",
+ "income"
+ ],
+ "logo": "svgs/actualbudget.png",
+ "minversion": "0.0.0",
+ "port": "5006"
+ },
+ "affine": {
+ "documentation": "https://docs.affine.pro/docs/self-host-affine?utm_source=coolify.io",
+ "slogan": "Affine is an open-source, all-in-one workspace and OS for knowledge management, a Notion/Miro alternative.",
+ "compose": "c2VydmljZXM6CiAgYWZmaW5lOgogICAgaW1hZ2U6ICdnaGNyLmlvL3RvZXZlcnl0aGluZy9hZmZpbmUtZ3JhcGhxbDpzdGFibGUnCiAgICBkZXBlbmRzX29uOgogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnYWZmaW5lLWNvbmZpZzovcm9vdC8uYWZmaW5lL2NvbmZpZycKICAgICAgLSAnYWZmaW5lLXN0b3JhZ2U6L3Jvb3QvLmFmZmluZS9zdG9yYWdlJwogICAgbG9nZ2luZzoKICAgICAgZHJpdmVyOiBqc29uLWZpbGUKICAgICAgb3B0aW9uczoKICAgICAgICBtYXgtc2l6ZTogMTAwMG0KICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0FGRklORV8zMDEwCiAgICAgIC0gQUZGSU5FX0NPTkZJR19QQVRIPS9yb290Ly5hZmZpbmUvY29uZmlnCiAgICAgIC0gUkVESVNfU0VSVkVSX0hPU1Q9cmVkaXMKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1hZmZpbmV9JwogICAgICAtIE5PREVfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBBRkZJTkVfU0VSVkVSX0hPU1Q9JFNFUlZJQ0VfVVJMX0FGRklORQogICAgICAtIEFGRklORV9TRVJWRVJfRVhURVJOQUxfVVJMPSRTRVJWSUNFX1VSTF9BRkZJTkUKICAgICAgLSAnTUFJTEVSX0hPU1Q9JHtNQUlMRVJfSE9TVH0nCiAgICAgIC0gJ01BSUxFUl9QT1JUPSR7TUFJTEVSX1BPUlR9JwogICAgICAtICdNQUlMRVJfVVNFUj0ke01BSUxFUl9VU0VSfScKICAgICAgLSAnTUFJTEVSX1BBU1NXT1JEPSR7TUFJTEVSX1BBU1NXT1JEfScKICAgICAgLSAnTUFJTEVSX1NFTkRFUj0ke01BSUxFUl9TRU5ERVJ9JwogICAgICAtICdDT1BJTE9UX0ZBTF9BUElfS0VZPSR7Q09QSUxPVF9GQUxfQVBJX0tFWX0nCiAgICAgIC0gJ0NPUElMT1RfUEVSUExFWElUWV9BUElfS0VZPSR7Q09QSUxPVF9QRVJQTEVYSVRZX0FQSV9LRVl9JwogICAgICAtICdDT1BJTE9UX09QRU5BSV9BUElfS0VZPSR7Q09QSUxPVF9PUEVOQUlfQVBJX0tFWX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gImJhc2ggLWMgJzo+IC9kZXYvdGNwLzEyNy4wLjAuMS8zMDEwJyB8fCBleGl0IDEiCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMwogIGFmZmluZV9taWdyYXRpb246CiAgICBleGNsdWRlX2Zyb21faGM6IHRydWUKICAgIGltYWdlOiAnZ2hjci5pby90b2V2ZXJ5dGhpbmcvYWZmaW5lLWdyYXBocWw6JHtBRkZJTkVfUkVWSVNJT046LXN0YWJsZX0nCiAgICByZXN0YXJ0OiBvbi1mYWlsdXJlCiAgICB2b2x1bWVzOgogICAgICAtICdhZmZpbmUtc3RvcmFnZTovcm9vdC8uYWZmaW5lL3N0b3JhZ2UnCiAgICAgIC0gJ2FmZmluZS1jb25maWc6L3Jvb3QvLmFmZmluZS9jb25maWcnCiAgICBjb21tYW5kOgogICAgICAtIHNoCiAgICAgIC0gJy1jJwogICAgICAtICdub2RlIC4vc2NyaXB0cy9zZWxmLWhvc3QtcHJlZGVwbG95LmpzJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUkVESVNfU0VSVkVSX0hPU1Q9cmVkaXMKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1hZmZpbmV9JwogICAgICAtIEFGRklORV9JTkRFWEVSX0VOQUJMRUQ9ZmFsc2UKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgcmVkaXM6CiAgICBpbWFnZTogcmVkaXMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2FmZmluZS1yZWRpcy1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gJy0tcmF3JwogICAgICAgIC0gaW5jcgogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDUKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYnCiAgICB2b2x1bWVzOgogICAgICAtICdhZmZpbmUtcG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgYWZmaW5lJwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDUKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotYWZmaW5lfScKICAgICAgLSBQR0RBVEE9L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhL3BnZGF0YQo=",
+ "tags": [
+ "knowledge-management",
+ "notion",
+ "miro",
+ "workspace"
+ ],
+ "logo": "svgs/affine.svg",
+ "minversion": "0.0.0",
+ "port": "3010"
+ },
+ "anythingllm": {
+ "documentation": "https://docs.anythingllm.com/installation-docker/overview?utm_source=coolify.io",
+ "slogan": "AnythingLLM is the easiest to use, all-in-one AI application that can do RAG, AI Agents, and much more with no code or infrastructure headaches.",
+ "compose": "c2VydmljZXM6CiAgYW55dGhpbmctbGxtOgogICAgaW1hZ2U6IG1pbnRwbGV4bGFicy9hbnl0aGluZ2xsbQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQU5ZVEhJTkdMTE1fMzAwMQogICAgICAtIFNUT1JBR0VfRElSPS9hcHAvc2VydmVyL3N0b3JhZ2UKICAgICAgLSAnRElTQUJMRV9URUxFTUVUUlk9JHtESVNBQkxFX1RFTEVNRVRSWTotdHJ1ZX0nCiAgICAgIC0gJ1BBU1NXT1JETE9XRVJDQVNFPSR7UEFTU1dPUkRMT1dFUkNBU0U6LTF9JwogICAgICAtICdQQVNTV09SRE1BWENIQVI9JHtQQVNTV09SRE1BWENIQVI6LTI1MH0nCiAgICAgIC0gJ1BBU1NXT1JETUlOQ0hBUj0ke1BBU1NXT1JETUlOQ0hBUjotNn0nCiAgICAgIC0gJ1BBU1NXT1JETlVNRVJJQz0ke1BBU1NXT1JETlVNRVJJQzotMX0nCiAgICAgIC0gJ1BBU1NXT1JEUkVRVUlSRU1FTlRTPSR7UEFTU1dPUkRSRVFVSVJFTUVOVFM6LTF9JwogICAgICAtICdQQVNTV09SRFNZTUJPTD0ke1BBU1NXT1JEU1lNQk9MOi0xfScKICAgICAgLSAnUEFTU1dPUkRVUFBFUkNBU0U9JHtQQVNTV09SRFVQUEVSQ0FTRTotMX0nCiAgICAgIC0gJ1NJR19LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX1NJR0tFWX0nCiAgICAgIC0gJ1NJR19TQUxUPSR7U0VSVklDRV9QQVNTV09SRF9TSUdTQUxUfScKICAgICAgLSAnSldUX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfSldUU0VDUkVUfScKICAgICAgLSAnQVVUSF9UT0tFTj0ke1NFUlZJQ0VfUEFTU1dPUkRfQVVUSFRPS0VOfScKICAgICAgLSAnU0VSVkVSX1BPUlQ9JHtTRVJWRVJfUE9SVDotMzAwMX0nCiAgICAgIC0gVkVDVE9SX0RCPWxhbmNlZGIKICAgIGNhcF9hZGQ6CiAgICAgIC0gU1lTX0FETUlOCiAgICB2b2x1bWVzOgogICAgICAtICdhbnl0aGluZ2xsbS1zdG9yYWdlOi9hcHAvc2VydmVyL3N0b3JhZ2UnCiAgICAgIC0gJ2FueXRoaW5nbGxtLWhvdDovYXBwL2NvbGxlY3Rvci9ob3RkaXInCiAgICAgIC0gJ2FueXRoaW5nbGxtLW91dHB1dHM6L2FwcC9jb2xsZWN0b3Ivb3V0cHV0cycKICAgIHVzZXI6ICcke1VJRDotMTAwMH06JHtHSUQ6LTEwMDB9Jwo=",
+ "tags": [
+ "lowcode",
+ "nocode",
+ "ai",
+ "llm",
+ "openai",
+ "anthropic",
+ "machine-learning",
+ "rag",
+ "agents",
+ "chatbot",
+ "api",
+ "team",
+ "bot"
+ ],
+ "logo": "svgs/anythingllm.svg",
+ "minversion": "0.0.0",
+ "port": "3001"
+ },
+ "apprise-api": {
+ "documentation": "https://docs.linuxserver.io/images/docker-apprise-api/?utm_source=coolify.io",
+ "slogan": "Push Notifications API",
+ "compose": "c2VydmljZXM6CiAgYXBwcmlzZS1hcGk6CiAgICBpbWFnZTogJ2xpbnV4c2VydmVyL2FwcHJpc2UtYXBpOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0FQUFJJU0VfODAwMAogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtIFRaPVVUQwogICAgdm9sdW1lczoKICAgICAgLSAnL2FwcHJpc2UtYXBpL2NvbmZpZzovY29uZmlnJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC1xTy0gaHR0cDovLzEyNy4wLjAuMTo4MDAwLycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "api",
+ "apprise"
+ ],
+ "logo": "svgs/apprise.png",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "appsmith": {
+ "documentation": "https://appsmith.com?utm_source=coolify.io",
+ "slogan": "A low-code application platform for building internal tools.",
+ "compose": "c2VydmljZXM6CiAgYXBwc21pdGg6CiAgICBpbWFnZTogJ2luZGV4LmRvY2tlci5pby9hcHBzbWl0aC9hcHBzbWl0aC1jZTpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9BUFBTTUlUSAogICAgICAtICdBUFBTTUlUSF9NQUlMX0VOQUJMRUQ9JHtBUFBTTUlUSF9NQUlMX0VOQUJMRUQ6LWZhbHNlfScKICAgICAgLSAnQVBQU01JVEhfRElTQUJMRV9URUxFTUVUUlk9JHtBUFBTTUlUSF9ESVNBQkxFX1RFTEVNRVRSWTotZmFsc2V9JwogICAgICAtICdBUFBTTUlUSF9ESVNBQkxFX0lOVEVSQ09NPSR7QVBQU01JVEhfRElTQUJMRV9JTlRFUkNPTTotdHJ1ZX0nCiAgICAgIC0gJ0FQUFNNSVRIX1NFTlRSWV9EU049JHtBUFBTTUlUSF9TRU5UUllfRFNOfScKICAgICAgLSAnQVBQU01JVEhfU01BUlRfTE9PS19JRD0ke0FQUFNNSVRIX1NNQVJUX0xPT0tfSUR9JwogICAgdm9sdW1lczoKICAgICAgLSAnc3RhY2tzLWRhdGE6L2FwcHNtaXRoLXN0YWNrcycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "lowcode",
+ "nocode",
+ "no",
+ "low",
+ "platform"
+ ],
+ "logo": "svgs/appsmith.svg",
+ "minversion": "0.0.0"
+ },
+ "appwrite": {
+ "documentation": "https://appwrite.io?utm_source=coolify.io",
+ "slogan": "A backend-as-a-service platform that simplifies the web & mobile app development.",
+ "compose": "c2VydmljZXM6CiAgYXBwd3JpdGU6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlCiAgICB2b2x1bWVzOgogICAgICAtICdhcHB3cml0ZS11cGxvYWRzOi9zdG9yYWdlL3VwbG9hZHM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWltcG9ydHM6L3N0b3JhZ2UvaW1wb3J0czpydycKICAgICAgLSAnYXBwd3JpdGUtY2FjaGU6L3N0b3JhZ2UvY2FjaGU6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWNvbmZpZzovc3RvcmFnZS9jb25maWc6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWNlcnRpZmljYXRlczovc3RvcmFnZS9jZXJ0aWZpY2F0ZXM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWZ1bmN0aW9uczovc3RvcmFnZS9mdW5jdGlvbnM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLXNpdGVzOi9zdG9yYWdlL3NpdGVzOnJ3JwogICAgICAtICdhcHB3cml0ZS1idWlsZHM6L3N0b3JhZ2UvYnVpbGRzOnJ3JwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0FQUFdSSVRFPS8KICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtICdfQVBQX0xPQ0FMRT0ke19BUFBfTE9DQUxFOi1lbn0nCiAgICAgIC0gJ19BUFBfQ09NUFJFU1NJT05fTUlOX1NJWkVfQllURVM9JHtfQVBQX0NPTVBSRVNTSU9OX01JTl9TSVpFX0JZVEVTfScKICAgICAgLSAnX0FQUF9DT05TT0xFX1dISVRFTElTVF9ST09UPSR7X0FQUF9DT05TT0xFX1dISVRFTElTVF9ST09UOi1lbmFibGVkfScKICAgICAgLSAnX0FQUF9DT05TT0xFX1dISVRFTElTVF9FTUFJTFM9JHtfQVBQX0NPTlNPTEVfV0hJVEVMSVNUX0VNQUlMU30nCiAgICAgIC0gJ19BUFBfQ09OU09MRV9TRVNTSU9OX0FMRVJUUz0ke19BUFBfQ09OU09MRV9TRVNTSU9OX0FMRVJUU30nCiAgICAgIC0gJ19BUFBfQ09OU09MRV9XSElURUxJU1RfSVBTPSR7X0FQUF9DT05TT0xFX1dISVRFTElTVF9JUFN9JwogICAgICAtICdfQVBQX0NPTlNPTEVfSE9TVE5BTUVTPSR7X0FQUF9DT05TT0xFX0hPU1ROQU1FU30nCiAgICAgIC0gJ19BUFBfU1lTVEVNX0VNQUlMX05BTUU9JHtfQVBQX1NZU1RFTV9FTUFJTF9OQU1FOi1BcHB3cml0ZX0nCiAgICAgIC0gJ19BUFBfU1lTVEVNX0VNQUlMX0FERFJFU1M9JHtfQVBQX1NZU1RFTV9FTUFJTF9BRERSRVNTOi10ZWFtQGFwcHdyaXRlLmlvfScKICAgICAgLSAnX0FQUF9TWVNURU1fVEVBTV9FTUFJTD0ke19BUFBfU1lTVEVNX1RFQU1fRU1BSUw6LXRlYW1AYXBwd3JpdGUuaW99JwogICAgICAtICdfQVBQX0VNQUlMX1NFQ1VSSVRZPSR7X0FQUF9FTUFJTF9TRUNVUklUWTotY2VydHNAYXBwd3JpdGUuaW99JwogICAgICAtICdfQVBQX1NZU1RFTV9SRVNQT05TRV9GT1JNQVQ9JHtfQVBQX1NZU1RFTV9SRVNQT05TRV9GT1JNQVR9JwogICAgICAtICdfQVBQX09QVElPTlNfQUJVU0U9JHtfQVBQX09QVElPTlNfQUJVU0U6LWVuYWJsZWR9JwogICAgICAtICdfQVBQX09QVElPTlNfUk9VVEVSX1BST1RFQ1RJT049JHtfQVBQX09QVElPTlNfUk9VVEVSX1BST1RFQ1RJT046LWRpc2FibGVkfScKICAgICAgLSAnX0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTPSR7X0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTOi1kaXNhYmxlZH0nCiAgICAgIC0gJ19BUFBfT1BUSU9OU19ST1VURVJfRk9SQ0VfSFRUUFM9JHtfQVBQX09QVElPTlNfUk9VVEVSX0ZPUkNFX0hUVFBTOi1kaXNhYmxlZH0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtIF9BUFBfRE9NQUlOPSRTRVJWSUNFX1VSTF9BUFBXUklURQogICAgICAtICdfQVBQX0RPTUFJTl9UQVJHRVRfQ05BTUU9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQ05BTUU6LWxvY2FsaG9zdH0nCiAgICAgIC0gJ19BUFBfRE9NQUlOX1RBUkdFVF9BQUFBPSR7X0FQUF9ET01BSU5fVEFSR0VUX0FBQUE6LTo6MX0nCiAgICAgIC0gJ19BUFBfRE9NQUlOX1RBUkdFVF9BPSR7X0FQUF9ET01BSU5fVEFSR0VUX0E6LTEyNy4wLjAuMX0nCiAgICAgIC0gX0FQUF9ET01BSU5fRlVOQ1RJT05TPSRTRVJWSUNFX1VSTF9BUFBXUklURQogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX1NNVFBfSE9TVD0ke19BUFBfU01UUF9IT1NUfScKICAgICAgLSAnX0FQUF9TTVRQX1BPUlQ9JHtfQVBQX1NNVFBfUE9SVH0nCiAgICAgIC0gJ19BUFBfU01UUF9TRUNVUkU9JHtfQVBQX1NNVFBfU0VDVVJFfScKICAgICAgLSAnX0FQUF9TTVRQX1VTRVJOQU1FPSR7X0FQUF9TTVRQX1VTRVJOQU1FfScKICAgICAgLSAnX0FQUF9TTVRQX1BBU1NXT1JEPSR7X0FQUF9TTVRQX1BBU1NXT1JEfScKICAgICAgLSAnX0FQUF9VU0FHRV9TVEFUUz0ke19BUFBfVVNBR0VfU1RBVFM6LWVuYWJsZWR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElNSVQ9JHtfQVBQX1NUT1JBR0VfTElNSVQ6LTMwMDAwMDAwfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1BSRVZJRVdfTElNSVQ9JHtfQVBQX1NUT1JBR0VfUFJFVklFV19MSU1JVDotMjAwMDAwMDB9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQU5USVZJUlVTPSR7X0FQUF9TVE9SQUdFX0FOVElWSVJVUzotZGlzYWJsZWR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQU5USVZJUlVTX0hPU1Q9JHtfQVBQX1NUT1JBR0VfQU5USVZJUlVTX0hPU1Q6LWFwcHdyaXRlLWNsYW1hdn0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9BTlRJVklSVVNfUE9SVD0ke19BUFBfU1RPUkFHRV9BTlRJVklSVVNfUE9SVDotMzMxMH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ERVZJQ0U9JHtfQVBQX1NUT1JBR0VfREVWSUNFOi1sb2NhbH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1MzX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX1MzX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19SRUdJT049JHtfQVBQX1NUT1JBR0VfUzNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX1MzX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19FTkRQT0lOVD0ke19BUFBfU1RPUkFHRV9TM19FTkRQT0lOVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9SRUdJT046LXVzLXdlc3QtMDA0fScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9MSU5PREVfUkVHSU9OOi1ldS1jZW50cmFsLTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9MSU5PREVfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9SRUdJT046LWV1LWNlbnRyYWwtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVR9JwogICAgICAtICdfQVBQX0NPTVBVVEVfU0laRV9MSU1JVD0ke19BUFBfQ09NUFVURV9TSVpFX0xJTUlUOi0zMDAwMDAwMH0nCiAgICAgIC0gJ19BUFBfRlVOQ1RJT05TX1RJTUVPVVQ9JHtfQVBQX0ZVTkNUSU9OU19USU1FT1VUOi05MDB9JwogICAgICAtICdfQVBQX1NJVEVTX1RJTUVPVVQ9JHtfQVBQX1NJVEVTX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9CVUlMRF9USU1FT1VUPSR7X0FQUF9DT01QVVRFX0JVSUxEX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9DUFVTPSR7X0FQUF9DT01QVVRFX0NQVVM6LTB9JwogICAgICAtICdfQVBQX0NPTVBVVEVfTUVNT1JZPSR7X0FQUF9DT01QVVRFX01FTU9SWTotMH0nCiAgICAgIC0gJ19BUFBfRlVOQ1RJT05TX1JVTlRJTUVTPSR7X0FQUF9GVU5DVElPTlNfUlVOVElNRVM6LW5vZGUtMjAuMCxwaHAtOC4yLHB5dGhvbi0zLjExLHJ1YnktMy4yfScKICAgICAgLSAnX0FQUF9TSVRFU19SVU5USU1FUz0ke19BUFBfU0lURVNfUlVOVElNRVN9JwogICAgICAtICdfQVBQX0RPTUFJTl9TSVRFUz0ke19BUFBfRE9NQUlOX1NJVEVTOi1hcHB3cml0ZS5uZXR3b3JrfScKICAgICAgLSBfQVBQX0VYRUNVVE9SX1NFQ1JFVD0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX0VYRUNVVE9SX0hPU1Q9JHtfQVBQX0VYRUNVVE9SX0hPU1Q6LWh0dHA6Ly9hcHB3cml0ZS1leGVjdXRvci92MX0nCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9JTlRFUlZBTD0ke19BUFBfTUFJTlRFTkFOQ0VfSU5URVJWQUw6LTg2NDAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9ERUxBWT0ke19BUFBfTUFJTlRFTkFOQ0VfREVMQVl9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1NUQVJUX1RJTUU9JHtfQVBQX01BSU5URU5BTkNFX1NUQVJUX1RJTUV9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9FWEVDVVRJT049JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9FWEVDVVRJT046LTEyMDk2MDB9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9DQUNIRT0ke19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0NBQ0hFOi0yNTkyMDAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQUJVU0U9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BQlVTRTotODY0MDB9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVD0ke19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUOi0xMjA5NjAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVRfQ09OU09MRT0ke19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUX0NPTlNPTEV9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9VU0FHRV9IT1VSTFk9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9VU0FHRV9IT1VSTFk6LTg2NDAwMDB9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9TQ0hFRFVMRVM9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9TQ0hFRFVMRVM6LTg2NDAwfScKICAgICAgLSAnX0FQUF9TTVNfUFJPVklERVI9JHtfQVBQX1NNU19QUk9WSURFUn0nCiAgICAgIC0gJ19BUFBfU01TX0ZST009JHtfQVBQX1NNU19GUk9NfScKICAgICAgLSAnX0FQUF9HUkFQSFFMX01BWF9CQVRDSF9TSVpFPSR7X0FQUF9HUkFQSFFMX01BWF9CQVRDSF9TSVpFOi0xMH0nCiAgICAgIC0gJ19BUFBfR1JBUEhRTF9NQVhfQ09NUExFWElUWT0ke19BUFBfR1JBUEhRTF9NQVhfQ09NUExFWElUWTotMjUwfScKICAgICAgLSAnX0FQUF9HUkFQSFFMX01BWF9ERVBUSD0ke19BUFBfR1JBUEhRTF9NQVhfREVQVEg6LTN9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfQVBQX05BTUU9JHtfQVBQX1ZDU19HSVRIVUJfQVBQX05BTUV9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfUFJJVkFURV9LRVk9JHtfQVBQX1ZDU19HSVRIVUJfUFJJVkFURV9LRVl9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfQVBQX0lEPSR7X0FQUF9WQ1NfR0lUSFVCX0FQUF9JRH0nCiAgICAgIC0gJ19BUFBfVkNTX0dJVEhVQl9XRUJIT09LX1NFQ1JFVD0ke19BUFBfVkNTX0dJVEhVQl9XRUJIT09LX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfVkNTX0dJVEhVQl9DTElFTlRfU0VDUkVUPSR7X0FQUF9WQ1NfR0lUSFVCX0NMSUVOVF9TRUNSRVR9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfQ0xJRU5UX0lEPSR7X0FQUF9WQ1NfR0lUSFVCX0NMSUVOVF9JRH0nCiAgICAgIC0gJ19BUFBfTUlHUkFUSU9OU19GSVJFQkFTRV9DTElFTlRfSUQ9JHtfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX0lEfScKICAgICAgLSAnX0FQUF9NSUdSQVRJT05TX0ZJUkVCQVNFX0NMSUVOVF9TRUNSRVQ9JHtfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfQVNTSVNUQU5UX09QRU5BSV9BUElfS0VZPSR7X0FQUF9BU1NJU1RBTlRfT1BFTkFJX0FQSV9LRVl9JwogIGFwcHdyaXRlLWNvbnNvbGU6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2NvbnNvbGU6Ni4wLjEzJwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLWNvbnNvbGUKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0FQUFdSSVRFPS9jb25zb2xlCiAgYXBwd3JpdGUtcmVhbHRpbWU6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogcmVhbHRpbWUKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS1yZWFsdGltZQogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0FQUFdSSVRFPS92MS9yZWFsdGltZQogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gJ19BUFBfT1BUSU9OU19BQlVTRT0ke19BUFBfT1BUSU9OU19BQlVTRTotZW5hYmxlZH0nCiAgICAgIC0gJ19BUFBfT1BUSU9OU19ST1VURVJfUFJPVEVDVElPTj0ke19BUFBfT1BUSU9OU19ST1VURVJfUFJPVEVDVElPTjotZGlzYWJsZWR9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9VU0FHRV9TVEFUUz0ke19BUFBfVVNBR0VfU1RBVFM6LWVuYWJsZWR9JwogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgYXBwd3JpdGUtd29ya2VyLWF1ZGl0czoKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiB3b3JrZXItYXVkaXRzCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtd29ya2VyLWF1ZGl0cwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1yZWRpcwogICAgICAtIGFwcHdyaXRlLW1hcmlhZGIKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgYXBwd3JpdGUtd29ya2VyLXdlYmhvb2tzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci13ZWJob29rcwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXdvcmtlci13ZWJob29rcwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1yZWRpcwogICAgICAtIGFwcHdyaXRlLW1hcmlhZGIKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX0VNQUlMX1NFQ1VSSVRZPSR7X0FQUF9FTUFJTF9TRUNVUklUWTotY2VydHNAYXBwd3JpdGUuaW99JwogICAgICAtICdfQVBQX1NZU1RFTV9TRUNVUklUWV9FTUFJTF9BRERSRVNTPSR7X0FQUF9TWVNURU1fU0VDVVJJVFlfRU1BSUxfQUREUkVTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICBhcHB3cml0ZS13b3JrZXItZGVsZXRlczoKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiB3b3JrZXItZGVsZXRlcwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXdvcmtlci1kZWxldGVzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgdm9sdW1lczoKICAgICAgLSAnYXBwd3JpdGUtdXBsb2Fkczovc3RvcmFnZS91cGxvYWRzOnJ3JwogICAgICAtICdhcHB3cml0ZS1jYWNoZTovc3RvcmFnZS9jYWNoZTpydycKICAgICAgLSAnYXBwd3JpdGUtZnVuY3Rpb25zOi9zdG9yYWdlL2Z1bmN0aW9uczpydycKICAgICAgLSAnYXBwd3JpdGUtc2l0ZXM6L3N0b3JhZ2Uvc2l0ZXM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWJ1aWxkczovc3RvcmFnZS9idWlsZHM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWNlcnRpZmljYXRlczovc3RvcmFnZS9jZXJ0aWZpY2F0ZXM6cncnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RFVklDRT0ke19BUFBfU1RPUkFHRV9ERVZJQ0U6LWxvY2FsfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfUzNfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfUzNfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9TM19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfUzNfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX0VORFBPSU5UPSR7X0FQUF9TVE9SQUdFX1MzX0VORFBPSU5UfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9SRUdJT049JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1JFR0lPTjotdXMtd2VzdC0wMDR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9SRUdJT046LWV1LWNlbnRyYWwtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9XQVNBQklfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9SRUdJT049JHtfQVBQX1NUT1JBR0VfV0FTQUJJX1JFR0lPTjotZXUtY2VudHJhbC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICAgICAgLSBfQVBQX0VYRUNVVE9SX1NFQ1JFVD0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX0VYRUNVVE9SX0hPU1Q9JHtfQVBQX0VYRUNVVE9SX0hPU1Q6LWh0dHA6Ly9hcHB3cml0ZS1leGVjdXRvci92MX0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FCVVNFPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQUJVU0U6LTg2NDAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVQ9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVDotMTIwOTYwMH0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUX0NPTlNPTEU9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVF9DT05TT0xFfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fRVhFQ1VUSU9OPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fRVhFQ1VUSU9OOi0xMjA5NjAwfScKICAgICAgLSAnX0FQUF9TWVNURU1fU0VDVVJJVFlfRU1BSUxfQUREUkVTUz0ke19BUFBfU1lTVEVNX1NFQ1VSSVRZX0VNQUlMX0FERFJFU1N9JwogICAgICAtICdfQVBQX0VNQUlMX0NFUlRJRklDQVRFUz0ke19BUFBfRU1BSUxfQ0VSVElGSUNBVEVTfScKICBhcHB3cml0ZS13b3JrZXItZGF0YWJhc2VzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1kYXRhYmFzZXMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItZGF0YWJhc2VzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICBhcHB3cml0ZS13b3JrZXItYnVpbGRzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1idWlsZHMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItYnVpbGRzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgdm9sdW1lczoKICAgICAgLSAnYXBwd3JpdGUtZnVuY3Rpb25zOi9zdG9yYWdlL2Z1bmN0aW9uczpydycKICAgICAgLSAnYXBwd3JpdGUtc2l0ZXM6L3N0b3JhZ2Uvc2l0ZXM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWJ1aWxkczovc3RvcmFnZS9idWlsZHM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLXVwbG9hZHM6L3N0b3JhZ2UvdXBsb2FkczpydycKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtIF9BUFBfRVhFQ1VUT1JfU0VDUkVUPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfRVhFQ1VUT1JfSE9TVD0ke19BUFBfRVhFQ1VUT1JfSE9TVDotaHR0cDovL2FwcHdyaXRlLWV4ZWN1dG9yL3YxfScKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfQVBQX05BTUU9JHtfQVBQX1ZDU19HSVRIVUJfQVBQX05BTUV9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfUFJJVkFURV9LRVk9JHtfQVBQX1ZDU19HSVRIVUJfUFJJVkFURV9LRVl9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfQVBQX0lEPSR7X0FQUF9WQ1NfR0lUSFVCX0FQUF9JRH0nCiAgICAgIC0gJ19BUFBfRlVOQ1RJT05TX1RJTUVPVVQ9JHtfQVBQX0ZVTkNUSU9OU19USU1FT1VUOi05MDB9JwogICAgICAtICdfQVBQX1NJVEVTX1RJTUVPVVQ9JHtfQVBQX1NJVEVTX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9CVUlMRF9USU1FT1VUPSR7X0FQUF9DT01QVVRFX0JVSUxEX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9DUFVTPSR7X0FQUF9DT01QVVRFX0NQVVM6LTB9JwogICAgICAtICdfQVBQX0NPTVBVVEVfTUVNT1JZPSR7X0FQUF9DT01QVVRFX01FTU9SWTotMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9TSVpFX0xJTUlUPSR7X0FQUF9DT01QVVRFX1NJWkVfTElNSVQ6LTMwMDAwMDAwfScKICAgICAgLSAnX0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTPSR7X0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTOi1kaXNhYmxlZH0nCiAgICAgIC0gJ19BUFBfT1BUSU9OU19ST1VURVJfRk9SQ0VfSFRUUFM9JHtfQVBQX09QVElPTlNfUk9VVEVSX0ZPUkNFX0hUVFBTOi1kaXNhYmxlZH0nCiAgICAgIC0gX0FQUF9ET01BSU49JFNFUlZJQ0VfVVJMX0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ERVZJQ0U9JHtfQVBQX1NUT1JBR0VfREVWSUNFOi1sb2NhbH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1MzX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX1MzX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19SRUdJT049JHtfQVBQX1NUT1JBR0VfUzNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX1MzX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19FTkRQT0lOVD0ke19BUFBfU1RPUkFHRV9TM19FTkRQT0lOVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9SRUdJT046LXVzLXdlc3QtMDA0fScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9MSU5PREVfUkVHSU9OOi1ldS1jZW50cmFsLTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9MSU5PREVfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9SRUdJT046LWV1LWNlbnRyYWwtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVR9JwogICAgICAtICdfQVBQX0RPTUFJTl9TSVRFUz0ke19BUFBfRE9NQUlOX1NJVEVTfScKICBhcHB3cml0ZS13b3JrZXItY2VydGlmaWNhdGVzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1jZXJ0aWZpY2F0ZXMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItY2VydGlmaWNhdGVzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgdm9sdW1lczoKICAgICAgLSAnYXBwd3JpdGUtY29uZmlnOi9zdG9yYWdlL2NvbmZpZzpydycKICAgICAgLSAnYXBwd3JpdGUtY2VydGlmaWNhdGVzOi9zdG9yYWdlL2NlcnRpZmljYXRlczpydycKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtIF9BUFBfRE9NQUlOPSRTRVJWSUNFX1VSTF9BUFBXUklURQogICAgICAtICdfQVBQX0RPTUFJTl9UQVJHRVRfQ05BTUU9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQ05BTUV9JwogICAgICAtICdfQVBQX0RPTUFJTl9UQVJHRVRfQUFBQT0ke19BUFBfRE9NQUlOX1RBUkdFVF9BQUFBfScKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0E9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQX0nCiAgICAgIC0gX0FQUF9ET01BSU5fRlVOQ1RJT05TPSRTRVJWSUNFX1VSTF9BUFBXUklURQogICAgICAtICdfQVBQX0VNQUlMX0NFUlRJRklDQVRFUz0ke19BUFBfRU1BSUxfQ0VSVElGSUNBVEVTOi1lbmFibGVkfScKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogIGFwcHdyaXRlLXdvcmtlci1mdW5jdGlvbnM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogd29ya2VyLWZ1bmN0aW9ucwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXdvcmtlci1mdW5jdGlvbnMKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICAgIC0gb3BlbnJ1bnRpbWVzLWV4ZWN1dG9yCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSBfQVBQX0RPTUFJTj0kU0VSVklDRV9VUkxfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTPSR7X0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTOi1kaXNhYmxlZH0nCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfRlVOQ1RJT05TX1RJTUVPVVQ9JHtfQVBQX0ZVTkNUSU9OU19USU1FT1VUOi05MDB9JwogICAgICAtICdfQVBQX1NJVEVTX1RJTUVPVVQ9JHtfQVBQX1NJVEVTX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9CVUlMRF9USU1FT1VUPSR7X0FQUF9DT01QVVRFX0JVSUxEX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9DUFVTPSR7X0FQUF9DT01QVVRFX0NQVVM6LTB9JwogICAgICAtICdfQVBQX0NPTVBVVEVfTUVNT1JZPSR7X0FQUF9DT01QVVRFX01FTU9SWTotMH0nCiAgICAgIC0gX0FQUF9FWEVDVVRPUl9TRUNSRVQ9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9FWEVDVVRPUl9IT1NUPSR7X0FQUF9FWEVDVVRPUl9IT1NUOi1odHRwOi8vYXBwd3JpdGUtZXhlY3V0b3IvdjF9JwogICAgICAtICdfQVBQX1VTQUdFX1NUQVRTPSR7X0FQUF9VU0FHRV9TVEFUUzotZW5hYmxlZH0nCiAgICAgIC0gJ19BUFBfRE9DS0VSX0hVQl9VU0VSTkFNRT0ke19BUFBfRE9DS0VSX0hVQl9VU0VSTkFNRX0nCiAgICAgIC0gJ19BUFBfRE9DS0VSX0hVQl9QQVNTV09SRD0ke19BUFBfRE9DS0VSX0hVQl9QQVNTV09SRH0nCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICBhcHB3cml0ZS13b3JrZXItbWFpbHM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogd29ya2VyLW1haWxzCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtd29ya2VyLW1haWxzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9TWVNURU1fRU1BSUxfTkFNRT0ke19BUFBfU1lTVEVNX0VNQUlMX05BTUU6LUFwcHdyaXRlfScKICAgICAgLSAnX0FQUF9TWVNURU1fRU1BSUxfQUREUkVTUz0ke19BUFBfU1lTVEVNX0VNQUlMX0FERFJFU1M6LXRlYW1AYXBwd3JpdGUuaW99JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX1NNVFBfSE9TVD0ke19BUFBfU01UUF9IT1NUfScKICAgICAgLSAnX0FQUF9TTVRQX1BPUlQ9JHtfQVBQX1NNVFBfUE9SVH0nCiAgICAgIC0gJ19BUFBfU01UUF9TRUNVUkU9JHtfQVBQX1NNVFBfU0VDVVJFfScKICAgICAgLSAnX0FQUF9TTVRQX1VTRVJOQU1FPSR7X0FQUF9TTVRQX1VTRVJOQU1FfScKICAgICAgLSAnX0FQUF9TTVRQX1BBU1NXT1JEPSR7X0FQUF9TTVRQX1BBU1NXT1JEfScKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogICAgICAtIF9BUFBfRE9NQUlOPSRTRVJWSUNFX1VSTF9BUFBXUklURQogICAgICAtICdfQVBQX09QVElPTlNfRk9SQ0VfSFRUUFM9JHtfQVBQX09QVElPTlNfRk9SQ0VfSFRUUFM6LWRpc2FibGVkfScKICBhcHB3cml0ZS13b3JrZXItbWVzc2FnaW5nOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1tZXNzYWdpbmcKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItbWVzc2FnaW5nCiAgICB2b2x1bWVzOgogICAgICAtICdhcHB3cml0ZS11cGxvYWRzOi9zdG9yYWdlL3VwbG9hZHM6cncnCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogICAgICAtICdfQVBQX1NNU19GUk9NPSR7X0FQUF9TTVNfRlJPTX0nCiAgICAgIC0gJ19BUFBfU01TX1BST1ZJREVSPSR7X0FQUF9TTVNfUFJPVklERVJ9JwogICAgICAtICdfQVBQX1NUT1JBR0VfREVWSUNFPSR7X0FQUF9TVE9SQUdFX0RFVklDRTotbG9jYWx9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9TM19TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX1MzX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9TM19CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfRU5EUE9JTlQ9JHtfQVBQX1NUT1JBR0VfUzNfRU5EUE9JTlR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT049JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OOi11cy13ZXN0LTAwNH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfTElOT0RFX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9MSU5PREVfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9SRUdJT049JHtfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTjotZXUtY2VudHJhbC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9XQVNBQklfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9XQVNBQklfUkVHSU9OOi1ldS1jZW50cmFsLTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9XQVNBQklfQlVDS0VUfScKICBhcHB3cml0ZS13b3JrZXItbWlncmF0aW9uczoKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiB3b3JrZXItbWlncmF0aW9ucwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXdvcmtlci1taWdyYXRpb25zCiAgICB2b2x1bWVzOgogICAgICAtICdhcHB3cml0ZS1pbXBvcnRzOi9zdG9yYWdlL2ltcG9ydHM6cncnCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLW1hcmlhZGIKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtIF9BUFBfRE9NQUlOPSRTRVJWSUNFX1VSTF9BUFBXUklURQogICAgICAtICdfQVBQX0RPTUFJTl9UQVJHRVRfQ05BTUU9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQ05BTUV9JwogICAgICAtICdfQVBQX0RPTUFJTl9UQVJHRVRfQUFBQT0ke19BUFBfRE9NQUlOX1RBUkdFVF9BQUFBfScKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0E9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQX0nCiAgICAgIC0gJ19BUFBfRU1BSUxfU0VDVVJJVFk9JHtfQVBQX0VNQUlMX1NFQ1VSSVRZOi1jZXJ0c0BhcHB3cml0ZS5pb30nCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICAgICAgLSAnX0FQUF9NSUdSQVRJT05TX0ZJUkVCQVNFX0NMSUVOVF9JRD0ke19BUFBfTUlHUkFUSU9OU19GSVJFQkFTRV9DTElFTlRfSUR9JwogICAgICAtICdfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX1NFQ1JFVD0ke19BUFBfTUlHUkFUSU9OU19GSVJFQkFTRV9DTElFTlRfU0VDUkVUfScKICBhcHB3cml0ZS10YXNrLW1haW50ZW5hbmNlOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IG1haW50ZW5hbmNlCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtdGFzay1tYWludGVuYW5jZQogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1yZWRpcwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX0RPTUFJTj0kU0VSVklDRV9VUkxfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0NOQU1FPSR7X0FQUF9ET01BSU5fVEFSR0VUX0NOQU1FfScKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0FBQUE9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQUFBQX0nCiAgICAgIC0gJ19BUFBfRE9NQUlOX1RBUkdFVF9BPSR7X0FQUF9ET01BSU5fVEFSR0VUX0F9JwogICAgICAtIF9BUFBfRE9NQUlOX0ZVTkNUSU9OUz0kU0VSVklDRV9VUkxfQVBQV1JJVEUKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfSU5URVJWQUw9JHtfQVBQX01BSU5URU5BTkNFX0lOVEVSVkFMfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fRVhFQ1VUSU9OPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fRVhFQ1VUSU9OfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQ0FDSEU9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9DQUNIRTotMjU5MjAwMH0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FCVVNFPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQUJVU0U6LTg2NDAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVQ9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVDotMTIwOTYwMH0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUX0NPTlNPTEU9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVF9DT05TT0xFfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fVVNBR0VfSE9VUkxZPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fVVNBR0VfSE9VUkxZOi04NjQwMDAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fU0NIRURVTEVTPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fU0NIRURVTEVTOi04NjQwMH0nCiAgYXBwd3JpdGUtdGFzay1zdGF0cy1yZXNvdXJjZXM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXRhc2stc3RhdHMtcmVzb3VyY2VzCiAgICBlbnRyeXBvaW50OiBzdGF0cy1yZXNvdXJjZXMKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9VU0FHRV9TVEFUUz0ke19BUFBfVVNBR0VfU1RBVFM6LWVuYWJsZWR9JwogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgICAgIC0gJ19BUFBfREFUQUJBU0VfU0hBUkVEX1RBQkxFUz0ke19BUFBfREFUQUJBU0VfU0hBUkVEX1RBQkxFU30nCiAgICAgIC0gJ19BUFBfU1RBVFNfUkVTT1VSQ0VTX0lOVEVSVkFMPSR7X0FQUF9TVEFUU19SRVNPVVJDRVNfSU5URVJWQUx9JwogIGFwcHdyaXRlLXdvcmtlci1zdGF0cy1yZXNvdXJjZXM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogd29ya2VyLXN0YXRzLXJlc291cmNlcwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXdvcmtlci1zdGF0cy1yZXNvdXJjZXMKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9VU0FHRV9TVEFUUz0ke19BUFBfVVNBR0VfU1RBVFM6LWVuYWJsZWR9JwogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgICAgIC0gJ19BUFBfU1RBVFNfUkVTT1VSQ0VTX0lOVEVSVkFMPSR7X0FQUF9TVEFUU19SRVNPVVJDRVNfSU5URVJWQUx9JwogIGFwcHdyaXRlLXdvcmtlci1zdGF0cy11c2FnZToKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiB3b3JrZXItc3RhdHMtdXNhZ2UKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItc3RhdHMtdXNhZ2UKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9VU0FHRV9TVEFUUz0ke19BUFBfVVNBR0VfU1RBVFM6LWVuYWJsZWR9JwogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgICAgIC0gJ19BUFBfVVNBR0VfQUdHUkVHQVRJT05fSU5URVJWQUw9JHtfQVBQX1VTQUdFX0FHR1JFR0FUSU9OX0lOVEVSVkFMOi0zMH0nCiAgYXBwd3JpdGUtdGFzay1zY2hlZHVsZXItZnVuY3Rpb25zOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHNjaGVkdWxlLWZ1bmN0aW9ucwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXRhc2stc2NoZWR1bGVyLWZ1bmN0aW9ucwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogIGFwcHdyaXRlLXRhc2stc2NoZWR1bGVyLWV4ZWN1dGlvbnM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogc2NoZWR1bGUtZXhlY3V0aW9ucwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXRhc2stc2NoZWR1bGVyLWV4ZWN1dGlvbnMKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICBhcHB3cml0ZS10YXNrLXNjaGVkdWxlci1tZXNzYWdlczoKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiBzY2hlZHVsZS1tZXNzYWdlcwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXRhc2stc2NoZWR1bGVyLW1lc3NhZ2VzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLW1hcmlhZGIKICAgICAgLSBhcHB3cml0ZS1yZWRpcwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgYXBwd3JpdGUtYXNzaXN0YW50OgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hc3Npc3RhbnQ6MC40LjAnCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtYXNzaXN0YW50CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9BU1NJU1RBTlRfT1BFTkFJX0FQSV9LRVk9JHtfQVBQX0FTU0lTVEFOVF9PUEVOQUlfQVBJX0tFWX0nCiAgYXBwd3JpdGUtYnJvd3NlcjoKICAgIGltYWdlOiAnYXBwd3JpdGUvYnJvd3NlcjowLjIuNCcKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS1icm93c2VyCiAgb3BlbnJ1bnRpbWVzLWV4ZWN1dG9yOgogICAgY29udGFpbmVyX25hbWU6IG9wZW5ydW50aW1lcy1leGVjdXRvcgogICAgaG9zdG5hbWU6IGFwcHdyaXRlLWV4ZWN1dG9yCiAgICBzdG9wX3NpZ25hbDogU0lHSU5UCiAgICBpbWFnZTogJ29wZW5ydW50aW1lcy9leGVjdXRvcjowLjcuMTQnCiAgICBuZXR3b3JrczoKICAgICAgLSBydW50aW1lcwogICAgdm9sdW1lczoKICAgICAgLSAnL3Zhci9ydW4vZG9ja2VyLnNvY2s6L3Zhci9ydW4vZG9ja2VyLnNvY2snCiAgICAgIC0gJ2FwcHdyaXRlLWJ1aWxkczovc3RvcmFnZS9idWlsZHM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWZ1bmN0aW9uczovc3RvcmFnZS9mdW5jdGlvbnM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLXNpdGVzOi9zdG9yYWdlL3NpdGVzOnJ3JwogICAgICAtICcvdG1wOi90bXA6cncnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnT1BSX0VYRUNVVE9SX0lOQUNUSVZFX1RSRVNIT0xEPSR7X0FQUF9DT01QVVRFX0lOQUNUSVZFX1RIUkVTSE9MRH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9NQUlOVEVOQU5DRV9JTlRFUlZBTD0ke19BUFBfQ09NUFVURV9NQUlOVEVOQU5DRV9JTlRFUlZBTH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9ORVRXT1JLPSR7X0FQUF9DT01QVVRFX1JVTlRJTUVTX05FVFdPUks6LXJ1bnRpbWVzfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX0RPQ0tFUl9IVUJfVVNFUk5BTUU9JHtfQVBQX0RPQ0tFUl9IVUJfVVNFUk5BTUV9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfRE9DS0VSX0hVQl9QQVNTV09SRD0ke19BUFBfRE9DS0VSX0hVQl9QQVNTV09SRH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9SVU5USU1FUz0ke19BUFBfRlVOQ1RJT05TX1JVTlRJTUVTfSwke19BUFBfU0lURVNfUlVOVElNRVN9JwogICAgICAtIE9QUl9FWEVDVVRPUl9TRUNSRVQ9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSBPUFJfRVhFQ1VUT1JfUlVOVElNRV9WRVJTSU9OUz12NQogICAgICAtICdPUFJfRVhFQ1VUT1JfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfREVWSUNFPSR7X0FQUF9TVE9SQUdFX0RFVklDRTotbG9jYWx9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9TM19BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1MzX0FDQ0VTU19LRVl9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9TM19TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfUzNfU0VDUkVUfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfUzNfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX1MzX1JFR0lPTn0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX1MzX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9TM19CVUNLRVR9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9TM19FTkRQT0lOVD0ke19BUFBfU1RPUkFHRV9TM19FTkRQT0lOVH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0RPX1NQQUNFU19BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19BQ0NFU1NfS0VZfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfU0VDUkVUfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfUkVHSU9OfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQlVDS0VUfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVl9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9TRUNSRVR9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9SRUdJT059JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVR9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0xJTk9ERV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0xJTk9ERV9SRUdJT049JHtfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTn0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0xJTk9ERV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9XQVNBQklfU0VDUkVUfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfV0FTQUJJX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9XQVNBQklfUkVHSU9OfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9XQVNBQklfQlVDS0VUfScKICBhcHB3cml0ZS1tYXJpYWRiOgogICAgaW1hZ2U6ICdtYXJpYWRiOjEwLjExJwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLW1hcmlhZGIKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2FwcHdyaXRlLW1hcmlhZGI6L3Zhci9saWIvbXlzcWw6cncnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBNWVNRTF9ST09UX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREJST09UCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBNWVNRTF9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIE1ZU1FMX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSBNQVJJQURCX0FVVE9fVVBHUkFERT0xCiAgICBjb21tYW5kOiAnbXlzcWxkIC0taW5ub2RiLWZsdXNoLW1ldGhvZD1mc3luYycKICBhcHB3cml0ZS1yZWRpczoKICAgIGltYWdlOiAncmVkaXM6Ny4yLjQtYWxwaW5lJwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXJlZGlzCiAgICBjb21tYW5kOiAicmVkaXMtc2VydmVyIC0tbWF4bWVtb3J5ICAgICAgICAgICAgNTEybWIgLS1tYXhtZW1vcnktcG9saWN5ICAgICBhbGxrZXlzLWxydSAtLW1heG1lbW9yeS1zYW1wbGVzICAgIDVcbiIKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2FwcHdyaXRlLXJlZGlzOi9kYXRhOnJ3JwpuZXR3b3JrczoKICBydW50aW1lczoKICAgIG5hbWU6IHJ1bnRpbWVzCnZvbHVtZXM6CiAgYXBwd3JpdGUtbWFyaWFkYjogbnVsbAogIGFwcHdyaXRlLXJlZGlzOiBudWxsCiAgYXBwd3JpdGUtY2FjaGU6IG51bGwKICBhcHB3cml0ZS11cGxvYWRzOiBudWxsCiAgYXBwd3JpdGUtaW1wb3J0czogbnVsbAogIGFwcHdyaXRlLWNlcnRpZmljYXRlczogbnVsbAogIGFwcHdyaXRlLWZ1bmN0aW9uczogbnVsbAogIGFwcHdyaXRlLXNpdGVzOiBudWxsCiAgYXBwd3JpdGUtYnVpbGRzOiBudWxsCiAgYXBwd3JpdGUtY29uZmlnOiBudWxsCg==",
+ "tags": [
+ "backend-as-a-service",
+ "platform"
+ ],
+ "logo": "svgs/appwrite.svg",
+ "minversion": "0.0.0"
+ },
+ "argilla": {
+ "documentation": "https://docs.argilla.io/latest/?utm_source=coolify.io",
+ "slogan": "Argilla is a collaboration tool for AI engineers and domain experts who need to build high-quality datasets for their projects.",
+ "compose": "c2VydmljZXM6CiAgYXJnaWxsYToKICAgIGltYWdlOiAnYXJnaWxsYS9hcmdpbGxhLXNlcnZlcjp2Mi4yLjAnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9BUkdJTExBXzY5MDAKICAgICAgLSBBUkdJTExBX0hPTUVfUEFUSD0vdmFyL2xpYi9hcmdpbGxhCiAgICAgIC0gJ0FSR0lMTEFfRUxBU1RJQ1NFQVJDSD1odHRwOi8vZWxhc3RpY3NlYXJjaDo5MjAwJwogICAgICAtICdBUkdJTExBX0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsK2FzeW5jcGc6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREJ9JwogICAgICAtICdBUkdJTExBX1JFRElTX1VSTD1yZWRpczovL3JlZGlzOjYzNzkvMCcKICAgICAgLSAnQVJHSUxMQV9BVVRIX1NFQ1JFVF9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX0FVVEhTRUNSRVR9JwogICAgICAtICdBUkdJTExBX0VOQUJMRV9URUxFTUVUUlk9JHtBUkdJTExBX0VOQUJMRV9URUxFTUVUUlk6LTB9JwogICAgICAtICdIRl9IVUJfRElTQUJMRV9URUxFTUVUUlk9JHtIRl9IVUJfRElTQUJMRV9URUxFTUVUUlk6LTF9JwogICAgICAtICdSRUlOREVYX0RBVEFTRVRTPSR7UkVJTkRFWF9EQVRBU0VUUzotMX0nCiAgICAgIC0gJ0RFRkFVTFRfVVNFUl9FTkFCTEVEPSR7REVGQVVMVF9VU0VSX0VOQUJMRUQ6LXRydWV9JwogICAgICAtICdVU0VSTkFNRT0ke0FSR0lMTEFfVVNFUk5BTUU6LWFyZ2lsbGF9JwogICAgICAtICdQQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQVJHSUxMQX0nCiAgICAgIC0gJ0FQSV9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX0FQSUtFWX0nCiAgICAgIC0gJ0RFRkFVTFRfVVNFUl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQVJHSUxMQX0nCiAgICAgIC0gJ0RFRkFVTFRfVVNFUl9BUElfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9BUElLRVl9JwogICAgICAtICdXT1JLU1BBQ0U9JHtXT1JLU1BBQ0U6LWRlZmF1bHR9JwogICAgZGVwZW5kc19vbjoKICAgICAgZWxhc3RpY3NlYXJjaDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnYXJnaWxsYS1kYXRhOi92YXIvbGliL2FyZ2lsbGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3B5dGhvbiAtYyAiaW1wb3J0IHJlcXVlc3RzIGFzIHI7ci5nZXQoXCJodHRwOi8vbG9jYWxob3N0OjY5MDAvYXBpL19zdGF0dXNcIikucmFpc2VfZm9yX3N0YXR1cygpIicKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogIHdvcmtlcjoKICAgIGltYWdlOiAnYXJnaWxsYS9hcmdpbGxhLXNlcnZlcjp2Mi4yLjAnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBBUkdJTExBX0hPTUVfUEFUSD0vdmFyL2xpYi9hcmdpbGxhCiAgICAgIC0gJ0FSR0lMTEFfRUxBU1RJQ1NFQVJDSD1odHRwOi8vZWxhc3RpY3NlYXJjaDo5MjAwJwogICAgICAtICdBUkdJTExBX0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsK2FzeW5jcGc6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREJ9JwogICAgICAtICdBUkdJTExBX1JFRElTX1VSTD1yZWRpczovL3JlZGlzOjYzNzkvMCcKICAgICAgLSAnQVJHSUxMQV9BVVRIX1NFQ1JFVF9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX0FVVEhTRUNSRVR9JwogICAgICAtICdBUkdJTExBX0VOQUJMRV9URUxFTUVUUlk9JHtBUkdJTExBX0VOQUJMRV9URUxFTUVUUlk6LTB9JwogICAgICAtICdIRl9IVUJfRElTQUJMRV9URUxFTUVUUlk9JHtIRl9IVUJfRElTQUJMRV9URUxFTUVUUlk6LTF9JwogICAgICAtICdSRUlOREVYX0RBVEFTRVRTPSR7UkVJTkRFWF9EQVRBU0VUUzotMX0nCiAgICAgIC0gJ0RFRkFVTFRfVVNFUl9FTkFCTEVEPSR7REVGQVVMVF9VU0VSX0VOQUJMRUQ6LXRydWV9JwogICAgICAtICdVU0VSTkFNRT0ke0FSR0lMTEFfVVNFUk5BTUU6LWFyZ2lsbGF9JwogICAgICAtICdQQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQVJHSUxMQX0nCiAgICAgIC0gJ0FQSV9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX0FQSUtFWX0nCiAgICAgIC0gJ0RFRkFVTFRfVVNFUl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQVJHSUxMQX0nCiAgICAgIC0gJ0RFRkFVTFRfVVNFUl9BUElfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9BUElLRVl9JwogICAgICAtICdCQUNLR1JPVU5EX05VTV9XT1JLRVJTPSR7QkFDS0dST1VORF9OVU1fV09SS0VSUzotMX0nCiAgICAgIC0gJ1dPUktTUEFDRT0ke1dPUktTUEFDRTotZGVmYXVsdH0nCiAgICBkZXBlbmRzX29uOgogICAgICBlbGFzdGljc2VhcmNoOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICB2b2x1bWVzOgogICAgICAtICdhcmdpbGxhLWRhdGE6L3Zhci9saWIvYXJnaWxsYScKICAgIGNvbW1hbmQ6ICJzaCAtYyAncHl0aG9uIC1tIGFyZ2lsbGFfc2VydmVyIHdvcmtlciAtLW51bS13b3JrZXJzICQke0JBQ0tHUk9VTkRfTlVNX1dPUktFUlN9JyIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSBwd2QKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotYXJnaWxsYX0nCiAgICB2b2x1bWVzOgogICAgICAtICdwZy1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtaCBsb2NhbGhvc3QgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMwogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo3JwogICAgdm9sdW1lczoKICAgICAgLSAncmVkaXMtZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncmVkaXMtY2xpIC1oIGxvY2FsaG9zdCAtcCA2Mzc5IHBpbmcnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAzCiAgZWxhc3RpY3NlYXJjaDoKICAgIGltYWdlOiAnZG9ja2VyLmVsYXN0aWMuY28vZWxhc3RpY3NlYXJjaC9lbGFzdGljc2VhcmNoOjguMTIuMicKICAgIGVudmlyb25tZW50OgogICAgICAtICdub2RlLm5hbWU9JHtOT0RFX05BTUU6LWVsYXN0aWNzZWFyY2h9JwogICAgICAtICdjbHVzdGVyLm5hbWU9JHtDTFVTVEVSX05BTUU6LWVzLWFyZ2lsbGEtbG9jYWx9JwogICAgICAtICdkaXNjb3ZlcnkudHlwZT0ke0RJU0NPVkVSWV9UWVBFOi1zaW5nbGUtbm9kZX0nCiAgICAgIC0gJ0VTX0pBVkFfT1BUUz0ke0VTX0pBVkFfT1BUUzotIi1YbXM1MTJtIC1YbXg1MTJtIn0nCiAgICAgIC0gJ2NsdXN0ZXIucm91dGluZy5hbGxvY2F0aW9uLmRpc2sudGhyZXNob2xkX2VuYWJsZWQ9JHtDTFVTVEVSX1JPVVRJTkdfQUxMT0NBVElPTl9ESVNLX1RIUkVTSE9MRF9FTkFCTEVEOi1mYWxzZX0nCiAgICAgIC0gJ3hwYWNrLnNlY3VyaXR5LmVuYWJsZWQ9JHtYUEFDS19TRUNVUklUWV9FTkFCTEVEOi1mYWxzZX0nCiAgICB1bGltaXRzOgogICAgICBtZW1sb2NrOgogICAgICAgIHNvZnQ6IC0xCiAgICAgICAgaGFyZDogLTEKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2VsYXN0aWNzZWFyY2gtZGF0YTovdXNyL3NoYXJlL2VsYXN0aWNzZWFyY2gvZGF0YS8nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2N1cmwgLS1zaWxlbnQgLS1mYWlsIGh0dHA6Ly9lbGFzdGljc2VhcmNoOjkyMDAnCiAgICAgIGludGVydmFsOiAxMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDUK",
+ "tags": [
+ "workflow",
+ "orchestration",
+ "data-pipeline",
+ "python",
+ "argilla",
+ "ai",
+ "elasticsearch",
+ "datasets",
+ "data",
+ "machine-learning",
+ "data-science",
+ "nlp"
+ ],
+ "logo": "svgs/argilla.png",
+ "minversion": "0.0.0",
+ "port": "6900"
+ },
+ "audiobookshelf": {
+ "documentation": "https://www.audiobookshelf.org/?utm_source=coolify.io",
+ "slogan": "Self-hosted audiobook, ebook, and podcast server",
+ "compose": "c2VydmljZXM6CiAgYXVkaW9ib29rc2hlbGY6CiAgICBpbWFnZTogJ2doY3IuaW8vYWR2cGx5ci9hdWRpb2Jvb2tzaGVsZjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9BVURJT0JPT0tTSEVMRl84MAogICAgICAtICdUWj0ke1RJTUVaT05FOi1BbWVyaWNhL1Rvcm9udG99JwogICAgdm9sdW1lczoKICAgICAgLSAnYXVkaW9ib29rc2hlbGYtYXVkaW9ib29rczovYXVkaW9ib29rcycKICAgICAgLSAnYXVkaW9ib29rc2hlbGYtcG9kY2FzdHM6L3BvZGNhc3RzJwogICAgICAtICdhdWRpb2Jvb2tzaGVsZi1jb25maWc6L2NvbmZpZycKICAgICAgLSAnYXVkaW9ib29rc2hlbGYtbWV0YWRhdGE6L21ldGFkYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC0tcXVpZXQgLS10cmllcz0xIC0tdGltZW91dD01IGh0dHA6Ly9sb2NhbGhvc3Q6ODAvcGluZyAtTyAvZGV2L251bGwgfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgICAgIHN0YXJ0X3BlcmlvZDogMTVzCg==",
+ "tags": [
+ "audiobooks",
+ "ebooks",
+ "podcasts",
+ "server",
+ "self-hosted"
+ ],
+ "logo": "svgs/audiobookshelf.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "authentik": {
+ "documentation": "https://docs.goauthentik.io/docs/installation/docker-compose?utm_source=coolify.io",
+ "slogan": "An open-source Identity Provider, focused on flexibility and versatility.",
+ "compose": "c2VydmljZXM6CiAgYXV0aGVudGlrLXNlcnZlcjoKICAgIGltYWdlOiAnZ2hjci5pby9nb2F1dGhlbnRpay9zZXJ2ZXI6JHtBVVRIRU5USUtfVEFHOi0yMDI1LjYuNH0nCiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZAogICAgY29tbWFuZDogc2VydmVyCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9BVVRIRU5USUtTRVJWRVJfOTAwMAogICAgICAtICdBVVRIRU5USUtfUkVESVNfX0hPU1Q9JHtSRURJU19IT1NUOi1yZWRpc30nCiAgICAgIC0gJ0FVVEhFTlRJS19QT1NUR1JFU1FMX19IT1NUPSR7UE9TVEdSRVNfSE9TVDotcG9zdGdyZXNxbH0nCiAgICAgIC0gJ0FVVEhFTlRJS19QT1NUR1JFU1FMX19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTUUx9JwogICAgICAtICdBVVRIRU5USUtfUE9TVEdSRVNRTF9fTkFNRT0ke1BPU1RHUkVTX0RCOi1hdXRoZW50aWt9JwogICAgICAtICdBVVRIRU5USUtfUE9TVEdSRVNRTF9fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtICdBVVRIRU5USUtfU0VDUkVUX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfQVVUSEVOVElLU0VSVkVSfScKICAgICAgLSAnQVVUSEVOVElLX0VSUk9SX1JFUE9SVElOR19fRU5BQkxFRD0ke0FVVEhFTlRJS19FUlJPUl9SRVBPUlRJTkdfX0VOQUJMRUQ6LXRydWV9JwogICAgICAtICdBVVRIRU5USUtfRU1BSUxfX0hPU1Q9JHtBVVRIRU5USUtfRU1BSUxfX0hPU1R9JwogICAgICAtICdBVVRIRU5USUtfRU1BSUxfX1BPUlQ9JHtBVVRIRU5USUtfRU1BSUxfX1BPUlR9JwogICAgICAtICdBVVRIRU5USUtfRU1BSUxfX1VTRVJOQU1FPSR7QVVUSEVOVElLX0VNQUlMX19VU0VSTkFNRX0nCiAgICAgIC0gJ0FVVEhFTlRJS19FTUFJTF9fUEFTU1dPUkQ9JHtBVVRIRU5USUtfRU1BSUxfX1BBU1NXT1JEfScKICAgICAgLSAnQVVUSEVOVElLX0VNQUlMX19VU0VfVExTPSR7QVVUSEVOVElLX0VNQUlMX19VU0VfVExTfScKICAgICAgLSAnQVVUSEVOVElLX0VNQUlMX19VU0VfU1NMPSR7QVVUSEVOVElLX0VNQUlMX19VU0VfU1NMfScKICAgICAgLSAnQVVUSEVOVElLX0VNQUlMX19USU1FT1VUPSR7QVVUSEVOVElLX0VNQUlMX19USU1FT1VUfScKICAgICAgLSAnQVVUSEVOVElLX0VNQUlMX19GUk9NPSR7QVVUSEVOVElLX0VNQUlMX19GUk9NfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJy4vbWVkaWE6L21lZGlhJwogICAgICAtICcuL2N1c3RvbS10ZW1wbGF0ZXM6L3RlbXBsYXRlcycKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzcWw6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICBhdXRoZW50aWstd29ya2VyOgogICAgaW1hZ2U6ICdnaGNyLmlvL2dvYXV0aGVudGlrL3NlcnZlcjoke0FVVEhFTlRJS19UQUc6LTIwMjUuNi40fScKICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkCiAgICBjb21tYW5kOiB3b3JrZXIKICAgIGVudmlyb25tZW50OgogICAgICAtICdBVVRIRU5USUtfUkVESVNfX0hPU1Q9JHtSRURJU19IT1NUOi1yZWRpc30nCiAgICAgIC0gJ0FVVEhFTlRJS19QT1NUR1JFU1FMX19IT1NUPSR7UE9TVEdSRVNfSE9TVDotcG9zdGdyZXNxbH0nCiAgICAgIC0gJ0FVVEhFTlRJS19QT1NUR1JFU1FMX19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTUUx9JwogICAgICAtICdBVVRIRU5USUtfUE9TVEdSRVNRTF9fTkFNRT0ke1BPU1RHUkVTX0RCOi1hdXRoZW50aWt9JwogICAgICAtICdBVVRIRU5USUtfUE9TVEdSRVNRTF9fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtICdBVVRIRU5USUtfU0VDUkVUX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfQVVUSEVOVElLU0VSVkVSfScKICAgICAgLSAnQVVUSEVOVElLX0VSUk9SX1JFUE9SVElOR19fRU5BQkxFRD0ke0FVVEhFTlRJS19FUlJPUl9SRVBPUlRJTkdfX0VOQUJMRUR9JwogICAgICAtICdBVVRIRU5USUtfRU1BSUxfX0hPU1Q9JHtBVVRIRU5USUtfRU1BSUxfX0hPU1R9JwogICAgICAtICdBVVRIRU5USUtfRU1BSUxfX1BPUlQ9JHtBVVRIRU5USUtfRU1BSUxfX1BPUlR9JwogICAgICAtICdBVVRIRU5USUtfRU1BSUxfX1VTRVJOQU1FPSR7QVVUSEVOVElLX0VNQUlMX19VU0VSTkFNRX0nCiAgICAgIC0gJ0FVVEhFTlRJS19FTUFJTF9fUEFTU1dPUkQ9JHtBVVRIRU5USUtfRU1BSUxfX1BBU1NXT1JEfScKICAgICAgLSAnQVVUSEVOVElLX0VNQUlMX19VU0VfVExTPSR7QVVUSEVOVElLX0VNQUlMX19VU0VfVExTfScKICAgICAgLSAnQVVUSEVOVElLX0VNQUlMX19VU0VfU1NMPSR7QVVUSEVOVElLX0VNQUlMX19VU0VfU1NMfScKICAgICAgLSAnQVVUSEVOVElLX0VNQUlMX19USU1FT1VUPSR7QVVUSEVOVElLX0VNQUlMX19USU1FT1VUfScKICAgICAgLSAnQVVUSEVOVElLX0VNQUlMX19GUk9NPSR7QVVUSEVOVElLX0VNQUlMX19GUk9NfScKICAgIHVzZXI6IHJvb3QKICAgIHZvbHVtZXM6CiAgICAgIC0gJy92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrJwogICAgICAtICcuL21lZGlhOi9tZWRpYScKICAgICAgLSAnLi9jZXJ0czovY2VydHMnCiAgICAgIC0gJy4vY3VzdG9tLXRlbXBsYXRlczovdGVtcGxhdGVzJwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogIHBvc3RncmVzcWw6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLWQgJCR7UE9TVEdSRVNfREJ9IC1VICQke1BPU1RHUkVTX1VTRVJ9JwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1CiAgICB2b2x1bWVzOgogICAgICAtICdhdXRoZW50aWstZGI6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMfScKICAgICAgLSBQT1NUR1JFU19EQj1hdXRoZW50aWsKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6YWxwaW5lJwogICAgY29tbWFuZDogJy0tc2F2ZSA2MCAxIC0tbG9nbGV2ZWwgd2FybmluZycKICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3JlZGlzLWNsaSBwaW5nIHwgZ3JlcCBQT05HJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1CiAgICB2b2x1bWVzOgogICAgICAtICdyZWRpczovZGF0YScK",
+ "tags": [
+ "identity",
+ "login",
+ "user",
+ "oauth",
+ "openid",
+ "oidc",
+ "authentication",
+ "saml",
+ "auth0",
+ "okta"
+ ],
+ "logo": "svgs/authentik.png",
+ "minversion": "0.0.0",
+ "port": "9000"
+ },
+ "babybuddy": {
+ "documentation": "https://docs.baby-buddy.net?utm_source=coolify.io",
+ "slogan": "It helps parents track their baby's daily activities, growth, and health with ease.",
+ "compose": "c2VydmljZXM6CiAgYmFieWJ1ZGR5OgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL2JhYnlidWRkeTpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9CQUJZQlVERFkKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSBUWj1FdXJvcGUvTWFkcmlkCiAgICAgIC0gQ1NSRl9UUlVTVEVEX09SSUdJTlM9JFNFUlZJQ0VfVVJMX0JBQllCVUREWQogICAgdm9sdW1lczoKICAgICAgLSAnYmFieWJ1ZGR5LWNvbmZpZzovY29uZmlnJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwMDAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUK",
+ "tags": [
+ "baby",
+ "parents",
+ "health",
+ "growth",
+ "activities"
+ ],
+ "logo": "svgs/babybuddy.png",
+ "minversion": "0.0.0"
+ },
+ "beszel": {
+ "documentation": "https://github.com/henrygd/beszel?tab=readme-ov-file#getting-started?utm_source=coolify.io",
+ "slogan": "A lightweight server resource monitoring hub with historical data, docker stats, and alerts.",
+ "compose": "c2VydmljZXM6CiAgYmVzemVsOgogICAgaW1hZ2U6ICdoZW5yeWdkL2Jlc3plbDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9CRVNaRUxfODA5MAogICAgdm9sdW1lczoKICAgICAgLSAnYmVzemVsX2RhdGE6L2Jlc3plbF9kYXRhJwogIGJlc3plbC1hZ2VudDoKICAgIGltYWdlOiBoZW5yeWdkL2Jlc3plbC1hZ2VudAogICAgdm9sdW1lczoKICAgICAgLSAnL3Zhci9ydW4vZG9ja2VyLnNvY2s6L3Zhci9ydW4vZG9ja2VyLnNvY2s6cm8nCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1JUPTQ1ODc2CiAgICAgIC0gJ0tFWT0ke0tFWX0nCg==",
+ "tags": [
+ "beszel",
+ "monitoring",
+ "server",
+ "stats",
+ "alerts"
+ ],
+ "logo": "svgs/beszel.svg",
+ "minversion": "0.0.0",
+ "port": "8090"
+ },
+ "bitcoin-core": {
+ "documentation": "https://hub.docker.com/r/ruimarinho/bitcoin-core/?utm_source=coolify.io",
+ "slogan": "A self-hosted Bitcoin Core full node.",
+ "compose": "c2VydmljZXM6CiAgYml0Y29pbi1jb3JlOgogICAgaW1hZ2U6ICdydWltYXJpbmhvL2JpdGNvaW4tY29yZTpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnQklUQ09JTl9SUENVU0VSPSR7QklUQ09JTl9SUENVU0VSOi1iaXRjb2ludXNlcn0nCiAgICAgIC0gJ0JJVENPSU5fUlBDUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BBU1NXT1JENjR9JwogICAgICAtICdCSVRDT0lOX1BSSU5UVE9DT05TT0xFPSR7QklUQ09JTl9QUklOVFRPQ09OU09MRTotMX0nCiAgICAgIC0gJ0JJVENPSU5fVFhJTkRFWD0ke0JJVENPSU5fVFhJTkRFWDotMX0nCiAgICAgIC0gJ0JJVENPSU5fU0VSVkVSPSR7QklUQ09JTl9TRVJWRVI6LTF9JwogICAgdm9sdW1lczoKICAgICAgLSAnYmxvY2tjaGFpbi1kYXRhOi9ob21lL2JpdGNvaW4vLmJpdGNvaW4nCiAgICBjb21tYW5kOgogICAgICAtICctZGF0YWRpcj0vaG9tZS9iaXRjb2luLy5iaXRjb2luJwogICAgICAtICctcnBjYmluZD0xMjcuMC4wLjEnCiAgICAgIC0gJy1ycGNhbGxvd2lwPTEyNy4wLjAuMScKICAgICAgLSAnLXJwY3VzZXI9JHtCSVRDT0lOX1JQQ1VTRVJ9JwogICAgICAtICctcnBjcGFzc3dvcmQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BBU1NXT1JENjR9JwogICAgICAtICctcHJpbnR0b2NvbnNvbGU9JHtCSVRDT0lOX1BSSU5UVE9DT05TT0xFfScKICAgICAgLSAnLXR4aW5kZXg9JHtCSVRDT0lOX1RYSU5ERVh9JwogICAgICAtICctc2VydmVyPSR7QklUQ09JTl9TRVJWRVJ9Jwo=",
+ "tags": [
+ "cryptocurrency",
+ "node",
+ "blockchain",
+ "bitcoin"
+ ],
+ "logo": "svgs/bitcoin.svg",
+ "minversion": "0.0.0"
+ },
+ "bluesky-pds": {
+ "documentation": "https://github.com/bluesky-social/pds?utm_source=coolify.io",
+ "slogan": "Bluesky PDS (Personal Data Server)",
+ "compose": "c2VydmljZXM6CiAgcGRzOgogICAgaW1hZ2U6ICdnaGNyLmlvL2JsdWVza3ktc29jaWFsL3BkczpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICcuL3Bkcy1kYXRhOi9wZHMnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9QRFNfMzAwMAogICAgICAtICdQRFNfSE9TVE5BTUU9JHtTRVJWSUNFX1VSTF9QRFN9JwogICAgICAtICdQRFNfSldUX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfSldUX1NFQ1JFVH0nCiAgICAgIC0gJ1BEU19BRE1JTl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQURNSU59JwogICAgICAtICdQRFNfQURNSU5fRU1BSUw9JHtTRVJWSUNFX0VNQUlMX0FETUlOfScKICAgICAgLSAnUERTX1BMQ19ST1RBVElPTl9LRVlfSzI1Nl9QUklWQVRFX0tFWV9IRVg9JHtQRFNfUExDX1JPVEFUSU9OX0tFWV9LMjU2X1BSSVZBVEVfS0VZX0hFWH0nCiAgICAgIC0gJ1BEU19EQVRBX0RJUkVDVE9SWT0ke1BEU19EQVRBX0RJUkVDVE9SWTotL3Bkc30nCiAgICAgIC0gJ1BEU19CTE9CU1RPUkVfRElTS19MT0NBVElPTj0ke1BEU19EQVRBX0RJUkVDVE9SWTotL3Bkc30vYmxvY2tzJwogICAgICAtICdQRFNfQkxPQl9VUExPQURfTElNSVQ9JHtQRFNfQkxPQl9VUExPQURfTElNSVQ6LTUyNDI4ODAwfScKICAgICAgLSAnUERTX0RJRF9QTENfVVJMPSR7UERTX0RJRF9QTENfVVJMOi1odHRwczovL3BsYy5kaXJlY3Rvcnl9JwogICAgICAtICdQRFNfQlNLWV9BUFBfVklFV19VUkw9JHtQRFNfQlNLWV9BUFBfVklFV19VUkw6LWh0dHBzOi8vYXBpLmJza3kuYXBwfScKICAgICAgLSAnUERTX0JTS1lfQVBQX1ZJRVdfRElEPSR7UERTX0JTS1lfQVBQX1ZJRVdfRElEOi1kaWQ6d2ViOmFwaS5ic2t5LmFwcH0nCiAgICAgIC0gJ1BEU19SRVBPUlRfU0VSVklDRV9VUkw9JHtQRFNfUkVQT1JUX1NFUlZJQ0VfVVJMOi1odHRwczovL21vZC5ic2t5LmFwcC94cnBjL2NvbS5hdHByb3RvLm1vZGVyYXRpb24uY3JlYXRlUmVwb3J0fScKICAgICAgLSAnUERTX1JFUE9SVF9TRVJWSUNFX0RJRD0ke1BEU19SRVBPUlRfU0VSVklDRV9ESUQ6LWRpZDpwbGM6YXI3YzRieTQ2cWpkeWRoZGV2dnJuZGFjfScKICAgICAgLSAnUERTX0NSQVdMRVJTPSR7UERTX0NSQVdMRVJTOi1odHRwczovL2Jza3kubmV0d29ya30nCiAgICAgIC0gJ0xPR19FTkFCTEVEPSR7TE9HX0VOQUJMRUQ6LXRydWV9JwogICAgY29tbWFuZDogInNoIC1jICdcbiAgZWNobyBcIkluc3RhbGxpbmcgY3VybCwgYmFzaCwgYW5kIHBkc2FkbWluLi4uXCJcbiAgYXBrIGFkZCAtLW5vLWNhY2hlIGN1cmwgYmFzaCAmJiBcXFxuICBjdXJsIC1vIC91c3IvbG9jYWwvYmluL3Bkc2FkbWluLnNoIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9ibHVlc2t5LXNvY2lhbC9wZHMvbWFpbi9wZHNhZG1pbi5zaCAmJiBcXFxuICBjaG1vZCAreCAvdXNyL2xvY2FsL2Jpbi9wZHNhZG1pbi5zaCAmJiBcXFxuICBsbiAtc2YgL3Vzci9sb2NhbC9iaW4vcGRzYWRtaW4uc2ggL3Vzci9sb2NhbC9iaW4vcGRzYWRtaW5cblxuICBlY2hvIFwiR2VuZXJhdGluZyAvcGRzL3Bkcy5lbnYuLi5cIlxuICBwcmludGYgXCIlc1xcblwiIFxcXG4gIFwiU0VSVklDRV9GUUROX1BEU18zMDAwPSQke1NFUlZJQ0VfRlFETl9QRFNfMzAwMH1cIiBcXFxuICBcIlBEU19IT1NUTkFNRT0kJHtQRFNfSE9TVE5BTUV9XCIgXFxcbiAgXCJQRFNfSldUX1NFQ1JFVD0kJHtQRFNfSldUX1NFQ1JFVH1cIiBcXFxuICBcIlBEU19BRE1JTl9QQVNTV09SRD0kJHtQRFNfQURNSU5fUEFTU1dPUkR9XCIgXFxcbiAgXCJQRFNfQURNSU5fRU1BSUw9JCR7UERTX0FETUlOX0VNQUlMfVwiIFxcXG4gIFwiUERTX1BMQ19ST1RBVElPTl9LRVlfSzI1Nl9QUklWQVRFX0tFWV9IRVg9JCR7UERTX1BMQ19ST1RBVElPTl9LRVlfSzI1Nl9QUklWQVRFX0tFWV9IRVh9XCIgXFxcbiAgXCJQRFNfREFUQV9ESVJFQ1RPUlk9JCR7UERTX0RBVEFfRElSRUNUT1JZfVwiIFxcXG4gIFwiUERTX0JMT0JTVE9SRV9ESVNLX0xPQ0FUSU9OPSQke1BEU19EQVRBX0RJUkVDVE9SWX0vYmxvY2tzXCIgXFxcbiAgXCJQRFNfQkxPQl9VUExPQURfTElNSVQ9JCR7UERTX0JMT0JfVVBMT0FEX0xJTUlUfVwiIFxcXG4gIFwiUERTX0RJRF9QTENfVVJMPSQke1BEU19ESURfUExDX1VSTH1cIiBcXFxuICBcIlBEU19CU0tZX0FQUF9WSUVXX1VSTD0kJHtQRFNfQlNLWV9BUFBfVklFV19VUkx9XCIgXFxcbiAgXCJQRFNfQlNLWV9BUFBfVklFV19ESUQ9JCR7UERTX0JTS1lfQVBQX1ZJRVdfRElEfVwiIFxcXG4gIFwiUERTX1JFUE9SVF9TRVJWSUNFX1VSTD0kJHtQRFNfUkVQT1JUX1NFUlZJQ0VfVVJMfVwiIFxcXG4gIFwiUERTX1JFUE9SVF9TRVJWSUNFX0RJRD0kJHtQRFNfUkVQT1JUX1NFUlZJQ0VfRElEfVwiIFxcXG4gIFwiUERTX0NSQVdMRVJTPSQke1BEU19DUkFXTEVSU31cIiBcXFxuICBcIkxPR19FTkFCTEVEPSQke0xPR19FTkFCTEVEfVwiIFxcXG4gID4gL3Bkcy9wZHMuZW52XG5cbiAgZWNobyBcIkxhdW5jaGluZyBQRFMuLi5cIlxuICBleGVjIG5vZGUgLS1lbmFibGUtc291cmNlLW1hcHMgaW5kZXguanNcbidcbiIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTozMDAwL3hycGMvX2hlYWx0aCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "bluesky",
+ "pds",
+ "platform"
+ ],
+ "logo": "svgs/bluesky.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "bookstack": {
+ "documentation": "https://www.bookstackapp.com/docs/?utm_source=coolify.io",
+ "slogan": "BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information",
+ "compose": "c2VydmljZXM6CiAgYm9va3N0YWNrOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL2Jvb2tzdGFjazpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9CT09LU1RBQ0tfODAKICAgICAgLSAnQVBQX1VSTD0ke1NFUlZJQ0VfVVJMX0JPT0tTVEFDS30nCiAgICAgIC0gJ0FQUF9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX0FQUEtFWX0nCiAgICAgIC0gUFVJRD0xMDAwCiAgICAgIC0gUEdJRD0xMDAwCiAgICAgIC0gJ1RaPSR7VFo6LUV1cm9wZS9CZXJsaW59JwogICAgICAtIERCX0hPU1Q9bWFyaWFkYgogICAgICAtIERCX1BPUlQ9MzMwNgogICAgICAtICdEQl9VU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ0RCX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LWJvb2tzdGFja2FwcH0nCiAgICAgIC0gJ1FVRVVFX0NPTk5FQ1RJT049JHtRVUVVRV9DT05ORUNUSU9OfScKICAgICAgLSAnR0lUSFVCX0FQUF9JRD0ke0dJVEhVQl9BUFBfSUR9JwogICAgICAtICdHSVRIVUJfQVBQX1NFQ1JFVD0ke0dJVEhVQl9BUFBfU0VDUkVUfScKICAgICAgLSAnTUFJTF9EUklWRVI9JHtNQUlMX0RSSVZFUjotc210cH0nCiAgICAgIC0gJ01BSUxfSE9TVD0ke01BSUxfSE9TVH0nCiAgICAgIC0gJ01BSUxfUE9SVD0ke01BSUxfUE9SVDotNTg3fScKICAgICAgLSAnTUFJTF9FTkNSWVBUSU9OPSR7TUFJTF9FTkNSWVBUSU9OOi10bHN9JwogICAgICAtICdNQUlMX1VTRVJOQU1FPSR7TUFJTF9VU0VSTkFNRX0nCiAgICAgIC0gJ01BSUxfUEFTU1dPUkQ9JHtNQUlMX1BBU1NXT1JEfScKICAgICAgLSAnTUFJTF9GUk9NPSR7TUFJTF9GUk9NfScKICAgICAgLSAnTUFJTF9GUk9NX05BTUU9JHtNQUlMX0ZST01fTkFNRTotQm9va1N0YWNrfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2Jvb2tzdGFjay1kYXRhOi9jb25maWcnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2N1cmwgLWYgaHR0cDovLzEyNy4wLjAuMTo4MC8nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICAgIGRlcGVuZHNfb246CiAgICAgIG1hcmlhZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICBtYXJpYWRiOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL21hcmlhZGI6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUFVJRD0xMDAwCiAgICAgIC0gUEdJRD0xMDAwCiAgICAgIC0gJ1RaPSR7VFo6LUV1cm9wZS9CZXJsaW59JwogICAgICAtICdNWVNRTF9ST09UX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTFJPT1R9JwogICAgICAtICdNWVNRTF9EQVRBQkFTRT0ke01ZU1FMX0RBVEFCQVNFOi1ib29rc3RhY2t9JwogICAgICAtICdNWVNRTF9VU0VSPSR7U0VSVklDRV9VU0VSX01ZU1FMfScKICAgICAgLSAnTVlTUUxfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2Jvb2tzdGFjay1tYXJpYWRiLWRhdGE6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBteXNxbGFkbWluCiAgICAgICAgLSBwaW5nCiAgICAgICAgLSAnLWgnCiAgICAgICAgLSAxMjcuMC4wLjEKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "free-and-open-source",
+ "mfa",
+ "dark-light-themes",
+ "searchable",
+ "connected",
+ "simple-interface",
+ "diagramms",
+ "notes"
+ ],
+ "logo": "svgs/bookstack.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "browserless": {
+ "documentation": "https://docs.browserless.io/?utm_source=coolify.io",
+ "slogan": "A headless Chrome browser as a service .",
+ "compose": "c2VydmljZXM6CiAgYnJvd3Nlcmxlc3M6CiAgICBpbWFnZTogZ2hjci5pby9icm93c2VybGVzcy9jaHJvbWl1bQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQlJPV1NFUkxFU1NfMzAwMAogICAgICAtIFRPS0VOPSRTRVJWSUNFX1BBU1NXT1JEX0JST1dTRVJMRVNTCiAgICBleHBvc2U6CiAgICAgIC0gMzAwMAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjMwMDAvZG9jcycKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "chrome",
+ "headless",
+ "browser",
+ "service"
+ ],
+ "logo": "svgs/browserless.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "budge": {
+ "documentation": "https://github.com/linuxserver/budge?utm_source=coolify.io",
+ "slogan": "A budgeting personal finance app.",
+ "compose": "c2VydmljZXM6CiAgYnVkZ2U6CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvYnVkZ2U6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQlVER0UKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSBUWj1FdXJvcGUvTWFkcmlkCiAgICB2b2x1bWVzOgogICAgICAtICdidWRnZS1jb25maWc6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "personal finance",
+ "budgeting",
+ "expense tracking"
+ ],
+ "logo": "svgs/budge.png",
+ "minversion": "0.0.0"
+ },
+ "budibase": {
+ "documentation": "https://docs.budibase.com/docs/docker-compose?utm_source=coolify.io",
+ "slogan": "Low code platform for building business apps and workflows in minutes. Supports PostgreSQL, MySQL, MSSQL, MongoDB, Rest API, Docker, K8s, and more.",
+ "compose": "c2VydmljZXM6CiAgYXBwLXNlcnZpY2U6CiAgICBpbWFnZTogYnVkaWJhc2UuZG9ja2VyLnNjYXJmLnNoL2J1ZGliYXNlL2FwcHMKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFTEZfSE9TVEVEPTEKICAgICAgLSAnQ09VQ0hfREJfVVJMPWh0dHA6Ly8kU0VSVklDRV9VU0VSX0NPVUNIREI6JFNFUlZJQ0VfUEFTU1dPUkRfQ09VQ0hEQkBjb3VjaGRiLXNlcnZpY2U6NTk4NCcKICAgICAgLSAnV09SS0VSX1VSTD1odHRwOi8vd29ya2VyLXNlcnZpY2U6NDAwMycKICAgICAgLSAnTUlOSU9fVVJMPWh0dHA6Ly9taW5pby1zZXJ2aWNlOjkwMDAnCiAgICAgIC0gTUlOSU9fQUNDRVNTX0tFWT0kU0VSVklDRV9VU0VSX01JTklPCiAgICAgIC0gTUlOSU9fU0VDUkVUX0tFWT0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgICAtIElOVEVSTkFMX0FQSV9LRVk9JFNFUlZJQ0VfQkFTRTY0XzEyOF9CVURJQkFTRQogICAgICAtICdCVURJQkFTRV9FTlZJUk9OTUVOVD0ke0JVRElCQVNFX0VOVklST05NRU5UOi1QUk9EVUNUSU9OfScKICAgICAgLSBQT1JUPTQwMDIKICAgICAgLSBBUElfRU5DUllQVElPTl9LRVk9JFNFUlZJQ0VfQkFTRTY0XzY0X0JVRElCQVNFQVBJCiAgICAgIC0gRU5DUllQVElPTl9LRVk9JFNFUlZJQ0VfQkFTRTY0XzY0X0JVRElCQVNFCiAgICAgIC0gSldUX1NFQ1JFVD0kU0VSVklDRV9CQVNFNjRfNjRfQlVESUJBU0VKV1QKICAgICAgLSBMT0dfTEVWRUw9aW5mbwogICAgICAtICdFTkFCTEVfQU5BTFlUSUNTPSR7RU5BQkxFX0FOQUxZVElDUzotdHJ1ZX0nCiAgICAgIC0gJ1JFRElTX1VSTD1yZWRpcy1zZXJ2aWNlOjYzNzknCiAgICAgIC0gUkVESVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUkVESVMKICAgICAgLSBCQl9BRE1JTl9VU0VSX0VNQUlMPQogICAgICAtIEJCX0FETUlOX1VTRVJfUEFTU1dPUkQ9CiAgICBkZXBlbmRzX29uOgogICAgICAtIHdvcmtlci1zZXJ2aWNlCiAgICAgIC0gcmVkaXMtc2VydmljZQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHdnZXQKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICctcU8tJwogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NDAwMi9oZWFsdGgnCiAgICAgIGludGVydmFsOiAxNXMKICAgICAgdGltZW91dDogMTVzCiAgICAgIHJldHJpZXM6IDUKICAgICAgc3RhcnRfcGVyaW9kOiAxMHMKICB3b3JrZXItc2VydmljZToKICAgIGltYWdlOiBidWRpYmFzZS5kb2NrZXIuc2NhcmYuc2gvYnVkaWJhc2Uvd29ya2VyCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRUxGX0hPU1RFRD0xCiAgICAgIC0gUE9SVD00MDAzCiAgICAgIC0gQ0xVU1RFUl9QT1JUPTEwMDAwCiAgICAgIC0gQVBJX0VOQ1JZUFRJT05fS0VZPSRTRVJWSUNFX0JBU0U2NF82NF9CVURJQkFTRQogICAgICAtIEpXVF9TRUNSRVQ9JFNFUlZJQ0VfQkFTRTY0XzY0X0JVRElCQVNFCiAgICAgIC0gTUlOSU9fQUNDRVNTX0tFWT0kU0VSVklDRV9VU0VSX01JTklPCiAgICAgIC0gTUlOSU9fU0VDUkVUX0tFWT0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgICAtICdNSU5JT19VUkw9aHR0cDovL21pbmlvLXNlcnZpY2U6OTAwMCcKICAgICAgLSAnQVBQU19VUkw9aHR0cDovL2FwcC1zZXJ2aWNlOjQwMDInCiAgICAgIC0gQ09VQ0hfREJfVVNFUk5BTUU9JFNFUlZJQ0VfVVNFUl9DT1VDSERCCiAgICAgIC0gQ09VQ0hfREJfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfQ09VQ0hEQgogICAgICAtICdDT1VDSF9EQl9VUkw9aHR0cDovLyRTRVJWSUNFX1VTRVJfQ09VQ0hEQjokU0VSVklDRV9QQVNTV09SRF9DT1VDSERCQGNvdWNoZGItc2VydmljZTo1OTg0JwogICAgICAtIElOVEVSTkFMX0FQSV9LRVk9JFNFUlZJQ0VfQkFTRTY0XzEyOF9CVURJQkFTRQogICAgICAtICdSRURJU19VUkw9cmVkaXMtc2VydmljZTo2Mzc5JwogICAgICAtIFJFRElTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1JFRElTCiAgICBkZXBlbmRzX29uOgogICAgICAtIHJlZGlzLXNlcnZpY2UKICAgICAgLSBtaW5pby1zZXJ2aWNlCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJy1xTy0nCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo0MDAzL2hlYWx0aCcKICAgICAgaW50ZXJ2YWw6IDE1cwogICAgICB0aW1lb3V0OiAxNXMKICAgICAgcmV0cmllczogNQogICAgICBzdGFydF9wZXJpb2Q6IDEwcwogIG1pbmlvLXNlcnZpY2U6CiAgICBpbWFnZTogbWluaW8vbWluaW8KICAgIHZvbHVtZXM6CiAgICAgIC0gJ21pbmlvX2RhdGE6L2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBNSU5JT19ST09UX1VTRVI9JFNFUlZJQ0VfVVNFUl9NSU5JTwogICAgICAtIE1JTklPX1JPT1RfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfTUlOSU8KICAgICAgLSBNSU5JT19CUk9XU0VSPW9mZgogICAgY29tbWFuZDogJ3NlcnZlciAvZGF0YSAtLWNvbnNvbGUtYWRkcmVzcyAiOjkwMDEiJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjkwMDAvbWluaW8vaGVhbHRoL2xpdmUnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDMKICBwcm94eS1zZXJ2aWNlOgogICAgaW1hZ2U6IGJ1ZGliYXNlL3Byb3h5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9CVURJQkFTRV8xMDAwMAogICAgICAtIFBST1hZX1JBVEVfTElNSVRfV0VCSE9PS1NfUEVSX1NFQ09ORD0xMAogICAgICAtIFBST1hZX1JBVEVfTElNSVRfQVBJX1BFUl9TRUNPTkQ9MjAKICAgICAgLSAnQVBQU19VUFNUUkVBTV9VUkw9aHR0cDovL2FwcC1zZXJ2aWNlOjQwMDInCiAgICAgIC0gJ1dPUktFUl9VUFNUUkVBTV9VUkw9aHR0cDovL3dvcmtlci1zZXJ2aWNlOjQwMDMnCiAgICAgIC0gJ01JTklPX1VQU1RSRUFNX1VSTD1odHRwOi8vbWluaW8tc2VydmljZTo5MDAwJwogICAgICAtICdDT1VDSERCX1VQU1RSRUFNX1VSTD1odHRwOi8vY291Y2hkYi1zZXJ2aWNlOjU5ODQnCiAgICAgIC0gJ1dBVENIVE9XRVJfVVBTVFJFQU1fVVJMPWh0dHA6Ly93YXRjaHRvd2VyLXNlcnZpY2U6ODA4MCcKICAgICAgLSBSRVNPTFZFUj0xMjcuMC4wLjExCiAgICBkZXBlbmRzX29uOgogICAgICAtIG1pbmlvLXNlcnZpY2UKICAgICAgLSB3b3JrZXItc2VydmljZQogICAgICAtIGFwcC1zZXJ2aWNlCiAgICAgIC0gY291Y2hkYi1zZXJ2aWNlCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MTAwMDAvJwogICAgICBpbnRlcnZhbDogMTVzCiAgICAgIHRpbWVvdXQ6IDE1cwogICAgICByZXRyaWVzOiA1CiAgICAgIHN0YXJ0X3BlcmlvZDogMTBzCiAgY291Y2hkYi1zZXJ2aWNlOgogICAgaW1hZ2U6IGJ1ZGliYXNlL2NvdWNoZGIKICAgIGVudmlyb25tZW50OgogICAgICAtIENPVUNIREJfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfQ09VQ0hEQgogICAgICAtIENPVUNIREJfVVNFUj0kU0VSVklDRV9VU0VSX0NPVUNIREIKICAgICAgLSBUQVJHRVRCVUlMRD1kb2NrZXItY29tcG9zZQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjU5ODQvJwogICAgICBpbnRlcnZhbDogMTVzCiAgICAgIHRpbWVvdXQ6IDE1cwogICAgICByZXRyaWVzOiA1CiAgICAgIHN0YXJ0X3BlcmlvZDogMTBzCiAgICB2b2x1bWVzOgogICAgICAtICdjb3VjaGRiM19kYXRhOi9vcHQvY291Y2hkYi9kYXRhJwogIHJlZGlzLXNlcnZpY2U6CiAgICBpbWFnZTogcmVkaXMKICAgIGNvbW1hbmQ6ICdyZWRpcy1zZXJ2ZXIgLS1yZXF1aXJlcGFzcyAiJFNFUlZJQ0VfUEFTU1dPUkRfUkVESVMiJwogICAgdm9sdW1lczoKICAgICAgLSAncmVkaXNfZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtICctYScKICAgICAgICAtICRTRVJWSUNFX1BBU1NXT1JEX1JFRElTCiAgICAgICAgLSBwaW5nCiAgICAgIGludGVydmFsOiAxNXMKICAgICAgdGltZW91dDogMTVzCiAgICAgIHJldHJpZXM6IDUKICAgICAgc3RhcnRfcGVyaW9kOiAxMHMKICB3YXRjaHRvd2VyLXNlcnZpY2U6CiAgICByZXN0YXJ0OiBhbHdheXMKICAgIGltYWdlOiBjb250YWlucnJyL3dhdGNodG93ZXIKICAgIHZvbHVtZXM6CiAgICAgIC0gJy92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrJwogICAgY29tbWFuZDogJy0tZGVidWcgLS1odHRwLWFwaS11cGRhdGUgYmJhcHBzIGJid29ya2VyIGJicHJveHknCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBXQVRDSFRPV0VSX0hUVFBfQVBJPXRydWUKICAgICAgLSBXQVRDSFRPV0VSX0hUVFBfQVBJX1RPS0VOPSRTRVJWSUNFX1BBU1NXT1JEX1dBVENIVE9XRVIKICAgICAgLSBXQVRDSFRPV0VSX0NMRUFOVVA9dHJ1ZQogICAgbGFiZWxzOgogICAgICAtIGNvbS5jZW50dXJ5bGlua2xhYnMud2F0Y2h0b3dlci5lbmFibGU9ZmFsc2UKICAgIGV4Y2x1ZGVfZnJvbV9oYzogdHJ1ZQo=",
+ "tags": [
+ "budibase",
+ "low-code",
+ "business-apps",
+ "workflow",
+ "automation",
+ "postgresql",
+ "mysql",
+ "mssql",
+ "mongodb",
+ "docker",
+ "kubernetes"
+ ],
+ "logo": "svgs/budibase.svg",
+ "minversion": "0.0.0",
+ "port": "10000"
+ },
+ "bugsink": {
+ "documentation": "https://www.bugsink.com/docs/?utm_source=coolify.io",
+ "slogan": "Self-hosted Error Tracking",
+ "compose": "c2VydmljZXM6CiAgbXlzcWw6CiAgICBpbWFnZTogJ215c3FsOmxhdGVzdCcKICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUk9PVH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LWJ1Z3Npbmt9JwogICAgICAtICdNWVNRTF9VU0VSPSR7U0VSVklDRV9VU0VSX0JVR1NJTkt9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQlVHU0lOS30nCiAgICB2b2x1bWVzOgogICAgICAtICdteS1kYXRhdm9sdW1lOi92YXIvbGliL215c3FsJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG15c3FsYWRtaW4KICAgICAgICAtIHBpbmcKICAgICAgICAtICctaCcKICAgICAgICAtIDEyNy4wLjAuMQogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgd2ViOgogICAgaW1hZ2U6IGJ1Z3NpbmsvYnVnc2luawogICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWQKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFQ1JFVF9LRVk9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQlVHU0lOSwogICAgICAtICdDUkVBVEVfU1VQRVJVU0VSPWFkbWluOiRTRVJWSUNFX1BBU1NXT1JEX0JVR1NJTksnCiAgICAgIC0gU0VSVklDRV9VUkxfQlVHU0lOS184MDAwCiAgICAgIC0gQkFTRV9VUkw9JFNFUlZJQ0VfVVJMX0JVR1NJTktfODAwMAogICAgICAtICdEQVRBQkFTRV9VUkw9bXlzcWw6Ly8ke1NFUlZJQ0VfVVNFUl9CVUdTSU5LfTokU0VSVklDRV9QQVNTV09SRF9CVUdTSU5LQG15c3FsOjMzMDYvJHtNWVNRTF9EQVRBQkFTRTotYnVnc2lua30nCiAgICBkZXBlbmRzX29uOgogICAgICBteXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdweXRob24gLWMgJydpbXBvcnQgcmVxdWVzdHM7IHJlcXVlc3RzLmdldCgiaHR0cDovL2xvY2FsaG9zdDo4MDAwLyIpLnJhaXNlX2Zvcl9zdGF0dXMoKScnJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "python",
+ "error-tracking",
+ "django",
+ "mysql"
+ ],
+ "logo": "svgs/bugsink.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "calcom": {
+ "documentation": "https://cal.com/docs/developing/introduction?utm_source=coolify.io",
+ "slogan": "Scheduling infrastructure for everyone.",
+ "compose": "c2VydmljZXM6CiAgY2FsY29tOgogICAgaW1hZ2U6IGNhbGNvbS5kb2NrZXIuc2NhcmYuc2gvY2FsY29tL2NhbC5jb20KICAgIHBsYXRmb3JtOiBsaW51eC9hbWQ2NAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ0FMQ09NXzMwMDAKICAgICAgLSBORVhUX1BVQkxJQ19MSUNFTlNFX0NPTlNFTlQ9YWdyZWUKICAgICAgLSBOT0RFX0VOVj1wcm9kdWN0aW9uCiAgICAgIC0gJ05FWFRfUFVCTElDX1dFQkFQUF9VUkw9JHtTRVJWSUNFX1VSTF9DQUxDT019JwogICAgICAtICdORVhUX1BVQkxJQ19BUElfVjJfVVJMPSR7U0VSVklDRV9VUkxfQ0FMQ09NfS9hcGkvdjInCiAgICAgIC0gJ05FWFRBVVRIX1VSTD0ke1NFUlZJQ0VfVVJMX0NBTENPTX0vYXBpL2F1dGgnCiAgICAgIC0gJ05FWFRBVVRIX1NFQ1JFVD0ke1NFUlZJQ0VfQkFTRTY0X0NBTENPTVNFQ1JFVH0nCiAgICAgIC0gJ0NBTEVORFNPX0VOQ1JZUFRJT05fS0VZPSR7U0VSVklDRV9CQVNFNjRfQ0FMQ09NS0VZfScKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LWNhbGVuZHNvfScKICAgICAgLSBEQVRBQkFTRV9IT1NUPXBvc3RncmVzcWwKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzcWw6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUAke0RBVEFCQVNFX0hPU1Q6LXBvc3RncmVzcWx9LyR7UE9TVEdSRVNfREI6LWNhbGVuZHNvfScKICAgICAgLSAnREFUQUJBU0VfRElSRUNUX1VSTD1wb3N0Z3Jlc3FsOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AJHtEQVRBQkFTRV9IT1NUOi1wb3N0Z3Jlc3FsfS8ke1BPU1RHUkVTX0RCOi1jYWxlbmRzb30nCiAgICAgIC0gQ0FMQ09NX1RFTEVNRVRSWV9ESVNBQkxFRD0xCiAgICAgIC0gJ0VNQUlMX0ZST009JHtFTUFJTF9GUk9NfScKICAgICAgLSAnRU1BSUxfRlJPTV9OQU1FPSR7RU1BSUxfRlJPTV9OQU1FfScKICAgICAgLSAnRU1BSUxfU0VSVkVSX0hPU1Q9JHtFTUFJTF9TRVJWRVJfSE9TVH0nCiAgICAgIC0gJ0VNQUlMX1NFUlZFUl9QT1JUPSR7RU1BSUxfU0VSVkVSX1BPUlR9JwogICAgICAtICdFTUFJTF9TRVJWRVJfVVNFUj0ke0VNQUlMX1NFUlZFUl9VU0VSfScKICAgICAgLSAnRU1BSUxfU0VSVkVSX1BBU1NXT1JEPSR7RU1BSUxfU0VSVkVSX1BBU1NXT1JEfScKICAgICAgLSAnTkVYVF9QVUJMSUNfQVBQX05BTUU9IkNhbC5jb20iJwogICAgICAtICdBTExPV0VEX0hPU1ROQU1FUz1bIiR7U0VSVklDRV9VUkxfQ0FMQ09NfSJdJwogICAgZGVwZW5kc19vbjoKICAgICAgLSBwb3N0Z3Jlc3FsCiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1jYWxlbmRzb30nCiAgICB2b2x1bWVzOgogICAgICAtICdjYWxjb20tcG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "calcom",
+ "calendso",
+ "scheduling",
+ "open",
+ "source"
+ ],
+ "logo": "svgs/calcom.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "calibre-web": {
+ "documentation": "https://github.com/linuxserver/docker-calibre-web?utm_source=coolify.io",
+ "slogan": "Calibre-web is a web app providing a clean interface for browsing, reading and downloading eBooks.",
+ "compose": "c2VydmljZXM6CiAgY2FsaWJyZS13ZWI6CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvY2FsaWJyZS13ZWI6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ0FMSUJSRV84MDgzCiAgICAgIC0gUFVJRD0xMDAwCiAgICAgIC0gUEdJRD0xMDAwCiAgICAgIC0gJ1RaPSR7VFo6LUV0Yy9VVEN9JwogICAgICAtICdET0NLRVJfTU9EUz0ke0RPQ0tFUl9NT0RTOi1saW51eHNlcnZlci9tb2RzOnVuaXZlcnNhbC1jYWxpYnJlfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2NhbGlicmVfd2ViX2RhdGE6L2NvbmZpZycKICAgICAgLSAnY2FsaWJyZV9saWJyYXJ5Oi9ib29rcycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDgzJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "calibre",
+ "calibre-web",
+ "ebook",
+ "library",
+ "epub",
+ "ereader",
+ "kindle",
+ "book",
+ "reader"
+ ],
+ "logo": "svgs/calibre-web.svg",
+ "minversion": "0.0.0",
+ "port": "8083"
+ },
+ "castopod": {
+ "documentation": "https://docs.castopod.org/main/en/?utm_source=coolify.io",
+ "slogan": "Castopod is a free & open-source hosting platform made for podcasters who want engage and interact with their audience.",
+ "compose": "c2VydmljZXM6CiAgY2FzdG9wb2Q6CiAgICBpbWFnZTogJ2Nhc3RvcG9kL2Nhc3RvcG9kOmxhdGVzdCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2Nhc3RvcG9kLW1lZGlhOi92YXIvd3d3L2Nhc3RvcG9kL3B1YmxpYy9tZWRpYScKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0NBU1RPUE9EXzgwMDAKICAgICAgLSBNWVNRTF9EQVRBQkFTRT1jYXN0b3BvZAogICAgICAtIE1ZU1FMX1VTRVI9JFNFUlZJQ0VfVVNFUl9NWVNRTAogICAgICAtIE1ZU1FMX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX01ZU1FMCiAgICAgIC0gJ0NQX0RJU0FCTEVfSFRUUFM9JHtDUF9ESVNBQkxFX0hUVFBTOi0xfScKICAgICAgLSBDUF9CQVNFVVJMPSRTRVJWSUNFX1VSTF9DQVNUT1BPRAogICAgICAtIENQX0FOQUxZVElDU19TQUxUPSRTRVJWSUNFX1JFQUxCQVNFNjRfNjRfU0FMVAogICAgICAtIENQX0NBQ0hFX0hBTkRMRVI9cmVkaXMKICAgICAgLSBDUF9SRURJU19IT1NUPXJlZGlzCiAgICAgIC0gQ1BfUkVESVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUkVESVMKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL2hlYWx0aCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogICAgZGVwZW5kc19vbjoKICAgICAgbWFyaWFkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogIG1hcmlhZGI6CiAgICBpbWFnZTogJ21hcmlhZGI6MTEuMicKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2Nhc3RvcG9kLWRiOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gTVlTUUxfUk9PVF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NWVNRTAogICAgICAtIE1ZU1FMX0RBVEFCQVNFPWNhc3RvcG9kCiAgICAgIC0gTVlTUUxfVVNFUj0kU0VSVklDRV9VU0VSX01ZU1FMCiAgICAgIC0gTVlTUUxfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfTVlTUUwKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBoZWFsdGhjaGVjay5zaAogICAgICAgIC0gJy0tY29ubmVjdCcKICAgICAgICAtICctLWlubm9kYl9pbml0aWFsaXplZCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo3LjItYWxwaW5lJwogICAgY29tbWFuZDogJy0tcmVxdWlyZXBhc3MgJFNFUlZJQ0VfUEFTU1dPUkRfUkVESVMnCiAgICB2b2x1bWVzOgogICAgICAtICdjYXN0b3BvZC1jYWNoZTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncmVkaXMtY2xpIC1hICRTRVJWSUNFX1BBU1NXT1JEX1JFRElTIHBpbmcgfCBncmVwIFBPTkcnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "podcast",
+ "media",
+ "audio",
+ "video",
+ "streaming",
+ "hosting",
+ "platform",
+ "castopod"
+ ],
+ "logo": "svgs/castopod.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "changedetection": {
+ "documentation": "https://github.com/dgtlmoon/changedetection.io/?utm_source=coolify.io",
+ "slogan": "Website change detection monitor and notifications.",
+ "compose": "c2VydmljZXM6CiAgY2hhbmdlZGV0ZWN0aW9uOgogICAgaW1hZ2U6IGdoY3IuaW8vZGd0bG1vb24vY2hhbmdlZGV0ZWN0aW9uLmlvCiAgICB2b2x1bWVzOgogICAgICAtICdjaGFuZ2VkZXRlY3Rpb24tZGF0YTovZGF0YXN0b3JlJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ0hBTkdFREVURUNUSU9OXzUwMDAKICAgICAgLSAnQkFTRV9VUkw9JHtTRVJWSUNFX1VSTF9DSEFOR0VERVRFQ1RJT059JwogICAgICAtICdQVUlEPSR7UFVJRDotMTAwMH0nCiAgICAgIC0gJ1BHSUQ9JHtQR0lEOi0xMDAwfScKICAgICAgLSAnUExBWVdSSUdIVF9EUklWRVJfVVJMPSR7UExBWVdSSUdIVF9EUklWRVJfVVJMOi13czovL2Jyb3dzZXItc29ja3B1cHBldC1jaHJvbWU6MzAwMH0nCiAgICAgIC0gJ0hJREVfUkVGRVJFUj0ke0hJREVfUkVGRVJFUjotdHJ1ZX0nCiAgICAgIC0gJ0ZFVENIX1dPUktFUlM9JHtGRVRDSF9XT1JLRVJTOi0xMH0nCiAgICAgIC0gJ01JTklNVU1fU0VDT05EU19SRUNIRUNLX1RJTUU9JHtNSU5JTVVNX1NFQ09ORFNfUkVDSEVDS19USU1FOi0zfScKICAgICAgLSAnRElTQUJMRV9WRVJTSU9OX0NIRUNLPSR7RElTQUJMRV9WRVJTSU9OX0NIRUNLOi10cnVlfScKICAgICAgLSAnU0NSRUVOU0hPVF9NQVhfSEVJR0hUPSR7U0NSRUVOU0hPVF9NQVhfSEVJR0hUOi0xNjAwMH0nCiAgICAgIC0gJ1RaPSR7VFo6LVVUQ30nCiAgICAgIC0gJ0xPR0dFUl9MRVZFTD0ke0xPR0dFUl9MRVZFTDotREVCVUd9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGVjaG8KICAgICAgICAtIG9rCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICAgIGRlcGVuZHNfb246CiAgICAgIGJyb3dzZXItc29ja3B1cHBldC1jaHJvbWU6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX3N0YXJ0ZWQKICBicm93c2VyLXNvY2twdXBwZXQtY2hyb21lOgogICAgaG9zdG5hbWU6IGJyb3dzZXItc29ja3B1cHBldC1jaHJvbWUKICAgIGltYWdlOiAnZGd0bG1vb24vc29ja3B1cHBldGJyb3dzZXI6bGF0ZXN0JwogICAgY2FwX2FkZDoKICAgICAgLSBTWVNfQURNSU4KICAgIGVudmlyb25tZW50OgogICAgICAtICdTQ1JFRU5fV0lEVEg9JHtTQ1JFRU5fV0lEVEg6LTE5MjB9JwogICAgICAtICdTQ1JFRU5fSEVJR0hUPSR7U0NSRUVOX0hFSUdIVDotMTAyNH0nCiAgICAgIC0gJ1NDUkVFTl9ERVBUSD0ke1NDUkVFTl9ERVBUSDotMTZ9JwogICAgICAtICdNQVhfQ09OQ1VSUkVOVF9DSFJPTUVfUFJPQ0VTU0VTPSR7TUFYX0NPTkNVUlJFTlRfQ0hST01FX1BST0NFU1NFUzotMTB9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGVjaG8KICAgICAgICAtIG9rCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "web",
+ "alert",
+ "monitor"
+ ],
+ "logo": "svgs/changedetection.png",
+ "minversion": "0.0.0",
+ "port": "5000"
+ },
+ "chaskiq": {
+ "documentation": "https://chaskiq.io?utm_source=coolify.io",
+ "slogan": "Chaskiq is an messaging platform for marketing, support & sales",
+ "compose": "c2VydmljZXM6CiAgY2hhc2tpcToKICAgIGltYWdlOiAnY2hhc2tpcS9jaGFza2lxOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0NIQVNLSVFfMzAwMAogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LycKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlc3FsOjU0MzIvJHtQT1NUR1JFU19EQjotY2hhc2tpcX0nCiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gJ1NFUlZJQ0VfVVJMPSR7U0VSVklDRV9VUkxfQ0hBU0tJUX0nCiAgICAgIC0gJ0hPU1Q9JHtTRVJWSUNFX1VSTF9DSEFTS0lRXzMwMDB9JwogICAgICAtICdBU1NFVF9IT1NUPSR7U0VSVklDRV9VUkxfQ0hBU0tJUV8zMDAwfScKICAgICAgLSAnV1M9d3NzOi8vJHtTRVJWSUNFX1VSTF9DSEFTS0lRfS9jYWJsZScKICAgICAgLSBTTlNfQ09ORklHVVJBVElPTl9TRVQ9bWV0cmljcwogICAgICAtICdBV1NfQUNDRVNTX0tFWV9JRD0ke0FXU19BQ0NFU1NfS0VZX0lEOi19JwogICAgICAtICdBV1NfU0VDUkVUX0FDQ0VTU19LRVk9JHtBV1NfU0VDUkVUX0FDQ0VTU19LRVk6LX0nCiAgICAgIC0gJ0FXU19TM19CVUNLRVQ9JHtBV1NfUzNfQlVDS0VUOi19JwogICAgICAtICdBV1NfUzNfUkVHSU9OPSR7QVdTX1MzX1JFR0lPTjotfScKICAgICAgLSAnQURNSU5fRU1BSUw9JHtBRE1JTl9FTUFJTDotYWRtaW5AZXhhbXBsZX0nCiAgICAgIC0gJ0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICAgIC0gJ0RFRkFVTFRfU0VOREVSX0VNQUlMPSR7REVGQVVMVF9TRU5ERVJfRU1BSUw6LWFkbWluQGV4YW1wbGV9JwogICAgICAtIExPQ0FMX1NUT1JBR0VfUEFUSD0vZGF0YS9zdG9yYWdlCiAgICAgIC0gJ0FDVElWRV9TVE9SQUdFX1NFUlZJQ0U9JHtBQ1RJVkVfU1RPUkFHRV9TRVJWSUNFOi1sb2NhbH0nCiAgICAgIC0gJ1NNVFBfREVMSVZFUllfTUVUSE9EPSR7U01UUF9ERUxJVkVSWV9NRVRIT0Q6LX0nCiAgICAgIC0gJ1NNVFBfQUREUkVTUz0ke1NNVFBfQUREUkVTUzotfScKICAgICAgLSAnU01UUF9VU0VSTkFNRT0ke1NNVFBfVVNFUk5BTUU6LX0nCiAgICAgIC0gJ1NNVFBfUEFTU1dPUkQ9JHtTTVRQX1BBU1NXT1JEOi19JwogICAgICAtICdDSEFTS0lRX0FQUFNUT1JFX1RPS0VOPSR7Q0hBU0tJUV9BUFBTVE9SRV9UT0tFTjotfScKICAgICAgLSBBUFBfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBSQUlMU19FTlY9cHJvZHVjdGlvbgogICAgICAtIFJBQ0tfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBSQUlMU19TRVJWRV9TVEFUSUNfRklMRVM9dHJ1ZQogICAgICAtIFNFQ1JFVF9LRVlfQkFTRT0kU0VSVklDRV9QQVNTV09SRF82NF9TRUNSRVQKICAgICAgLSBSQUlMU19MT0dfVE9fU1RET1VUPXRydWUKICAgICAgLSBFTkFCTEVEX0FVRElUUz10cnVlCiAgICAgIC0gVFo9RXVyb3BlL01hZHJpZAogICAgZW50cnlwb2ludDoKICAgICAgLSAvZW50cnlwb2ludC5zaAogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnY2hhc2tpcS1zdG9yYWdlOi9kYXRhL3N0b3JhZ2UnCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2VudHJ5cG9pbnQuc2gKICAgICAgICB0YXJnZXQ6IC9lbnRyeXBvaW50LnNoCiAgICAgICAgY29udGVudDogIiMhL2Jpbi9zaFxuc2V0IC1lXG5ybSAtZiAvdXNyL3NyYy9hcHAvdG1wL3BpZHMvc2VydmVyLnBpZFxuZXhlYyBcIiRAXCJcbmVjaG8gXCJSdW5uaW5nIGRhdGFiYXNlIG1pZ3JhdGlvbnMuLi5cIlxuYnVuZGxlIGV4ZWMgcmFpbHMgZGI6c2V0dXAgfHwgdHJ1ZVxuYnVuZGxlIGV4ZWMgcmFpbHMgZGI6bWlncmF0ZVxuZWNobyBcIkZpbmlzaGVkIHJ1bm5pbmcgZGF0YWJhc2UgbWlncmF0aW9ucy5cIlxuZWNobyBcIlJ1bm5pbmcgcGFja2FnZXMgdXBkYXRlLi4uXCJcbmJ1bmRsZSBleGVjIHJhaWxzIHBhY2thZ2VzOnVwZGF0ZVxuZWNobyBcIkZpbmlzaGVkIHBhY2thZ2VzIHVwZGF0ZS5cIlxuaWYgWyAhIC1mIC91c3Ivc3JjL2FwcC9hZG1pbl9nZW5lcmF0ZWQgXTsgdGhlblxuICAgIGVjaG8gXCIvdXNyL3NyYy9hcHAvYWRtaW5fZ2VuZXJhdGVkIG5vdCBmb3VuZCwgZXhlY3V0aW5nIGFkbWluIGdlbmVyYXRpb24uLlwiXG4gICAgYnVuZGxlIGV4ZWMgcmFrZSBhZG1pbl9nZW5lcmF0b3JcbiAgICB0b3VjaCAvdXNyL3NyYy9hcHAvYWRtaW5fZ2VuZXJhdGVkXG4gICAgZWNobyBcIkFkbWluIGdlbmVyYXRpb24gZmluaXNoZWQgIVwiXG5maVxuYnVuZGxlIGV4ZWMgcmFpbHMgcyAtYiAwLjAuMC4wIC1wIDMwMDBcbiIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTozMDAwJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDE1CiAgc2lkZWtpcToKICAgIGltYWdlOiAnY2hhc2tpcS9jaGFza2lxOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LycKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlc3FsOjU0MzIvJHtQT1NUR1JFU19EQjotY2hhc2tpcX0nCiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gJ0hPU1Q9JHtTRVJWSUNFX1VSTF9DSEFTS0lRXzMwMDB9JwogICAgICAtICdBU1NFVF9IT1NUPSR7U0VSVklDRV9VUkxfQ0hBU0tJUV8zMDAwfScKICAgICAgLSAnV1M9d3NzOi8vJHtTRVJWSUNFX1VSTF9DSEFTS0lRfS9jYWJsZScKICAgICAgLSBTTlNfQ09ORklHVVJBVElPTl9TRVQ9bWV0cmljcwogICAgICAtICdBV1NfQUNDRVNTX0tFWV9JRD0ke0FXU19BQ0NFU1NfS0VZX0lEOi19JwogICAgICAtICdBV1NfU0VDUkVUX0FDQ0VTU19LRVk9JHtBV1NfU0VDUkVUX0FDQ0VTU19LRVk6LX0nCiAgICAgIC0gJ0FXU19TM19CVUNLRVQ9JHtBV1NfUzNfQlVDS0VUOi19JwogICAgICAtICdBV1NfUzNfUkVHSU9OPSR7QVdTX1MzX1JFR0lPTjotfScKICAgICAgLSAnQURNSU5fRU1BSUw9JHtBRE1JTl9FTUFJTDotYWRtaW5AZXhhbXBsZX0nCiAgICAgIC0gJ0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICAgIC0gJ0RFRkFVTFRfU0VOREVSX0VNQUlMPSR7REVGQVVMVF9TRU5ERVJfRU1BSUw6LWFkbWluQGV4YW1wbGV9JwogICAgICAtIExPQ0FMX1NUT1JBR0VfUEFUSD0vZGF0YS9zdG9yYWdlCiAgICAgIC0gJ0FDVElWRV9TVE9SQUdFX1NFUlZJQ0U9JHtBQ1RJVkVfU1RPUkFHRV9TRVJWSUNFOi1sb2NhbH0nCiAgICAgIC0gJ1NNVFBfREVMSVZFUllfTUVUSE9EPSR7U01UUF9ERUxJVkVSWV9NRVRIT0Q6LX0nCiAgICAgIC0gJ1NNVFBfQUREUkVTUz0ke1NNVFBfQUREUkVTUzotfScKICAgICAgLSAnU01UUF9VU0VSTkFNRT0ke1NNVFBfVVNFUk5BTUU6LX0nCiAgICAgIC0gJ1NNVFBfUEFTU1dPUkQ9JHtTTVRQX1BBU1NXT1JEOi19JwogICAgICAtICdDSEFTS0lRX0FQUFNUT1JFX1RPS0VOPSR7Q0hBU0tJUV9BUFBTVE9SRV9UT0tFTjotfScKICAgICAgLSBBUFBfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBSQUlMU19FTlY9cHJvZHVjdGlvbgogICAgICAtIFJBQ0tfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBSQUlMU19TRVJWRV9TVEFUSUNfRklMRVM9dHJ1ZQogICAgICAtIFNFQ1JFVF9LRVlfQkFTRT0kU0VSVklDRV9QQVNTV09SRF82NF9TRUNSRVQKICAgICAgLSBSQUlMU19MT0dfVE9fU1RET1VUPXRydWUKICAgICAgLSBFTkFCTEVEX0FVRElUUz10cnVlCiAgICAgIC0gVFo9RXVyb3BlL01hZHJpZAogICAgdm9sdW1lczoKICAgICAgLSAnY2hhc2tpcS1zdG9yYWdlOi9kYXRhL3N0b3JhZ2UnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIGNoYXNraXE6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGNvbW1hbmQ6CiAgICAgIC0gYnVuZGxlCiAgICAgIC0gZXhlYwogICAgICAtIHNpZGVraXEKICAgICAgLSAnLUMnCiAgICAgIC0gY29uZmlnL3NpZGVraXEueW1sCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gImJ1bmRsZSBleGVjIHJhaWxzIHJ1bm5lciAncHV0cyBTaWRla2lxLnJlZGlzKCY6aW5mbyknID4gL2Rldi9udWxsIDI+JjEiCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNC1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdwb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotY2hhc2tpcX0nCiAgICAgIC0gJ1BPU1RHUkVTX0lOSVREQl9BUkdTPSAtLWRhdGEtY2hlY2tzdW1zJwogICAgICAtIFBTUUxfSElTVEZJTEU9L3Jvb3QvbG9nLy5wc3FsX2hpc3RvcnkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMAogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo2LWFscGluZScKICAgIHJlc3RhcnQ6IGFsd2F5cwogICAgdm9sdW1lczoKICAgICAgLSAncmVkaXMtZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "chaskiq",
+ "messaging",
+ "chat",
+ "marketing",
+ "support",
+ "sales",
+ "open",
+ "source",
+ "rails",
+ "redis",
+ "postgresql",
+ "sidekiq"
+ ],
+ "logo": "svgs/chaskiq.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "chatwoot": {
+ "documentation": "https://www.chatwoot.com/docs/self-hosted/?utm_source=coolify.io",
+ "slogan": "Delightful customer relationships at scale.",
+ "compose": "c2VydmljZXM6CiAgY2hhdHdvb3Q6CiAgICBpbWFnZTogJ2NoYXR3b290L2NoYXR3b290OmxhdGVzdCcKICAgIGRlcGVuZHNfb246CiAgICAgIC0gcG9zdGdyZXMKICAgICAgLSByZWRpcwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ0hBVFdPT1RfMzAwMAogICAgICAtIFNFQ1JFVF9LRVlfQkFTRT0kU0VSVklDRV9QQVNTV09SRF9DSEFUV09PVAogICAgICAtICdGUk9OVEVORF9VUkw9JHtTRVJWSUNFX1VSTF9DSEFUV09PVH0nCiAgICAgIC0gJ0RFRkFVTFRfTE9DQUxFPSR7Q0hBVFdPT1RfREVGQVVMVF9MT0NBTEV9JwogICAgICAtICdGT1JDRV9TU0w9JHtGT1JDRV9TU0w6LWZhbHNlfScKICAgICAgLSAnRU5BQkxFX0FDQ09VTlRfU0lHTlVQPSR7RU5BQkxFX0FDQ09VTlRfU0lHTlVQOi1mYWxzZX0nCiAgICAgIC0gJ1JFRElTX1VSTD1yZWRpczovL2RlZmF1bHRAcmVkaXM6NjM3OScKICAgICAgLSBSRURJU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9SRURJUwogICAgICAtICdSRURJU19PUEVOU1NMX1ZFUklGWV9NT0RFPSR7UkVESVNfT1BFTlNTTF9WRVJJRllfTU9ERTotbm9uZX0nCiAgICAgIC0gJ1BPU1RHUkVTX0RBVEFCQVNFPSR7UE9TVEdSRVNfREI6LWNoYXR3b290fScKICAgICAgLSAnUE9TVEdSRVNfSE9TVD0ke1BPU1RHUkVTX0hPU1Q6LXBvc3RncmVzfScKICAgICAgLSBQT1NUR1JFU19VU0VSTkFNRT0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSAnUkFJTFNfTUFYX1RIUkVBRFM9JHtSQUlMU19NQVhfVEhSRUFEUzotNX0nCiAgICAgIC0gJ05PREVfRU5WPSR7Tk9ERV9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdSQUlMU19FTlY9JHtSQUlMU19FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdJTlNUQUxMQVRJT05fRU5WPSR7SU5TVEFMTEFUSU9OX0VOVjotZG9ja2VyfScKICAgICAgLSAnTUFJTEVSX1NFTkRFUl9FTUFJTD0ke0NIQVRXT09UX01BSUxFUl9TRU5ERVJfRU1BSUx9JwogICAgICAtICdTTVRQX0FERFJFU1M9JHtDSEFUV09PVF9TTVRQX0FERFJFU1N9JwogICAgICAtICdTTVRQX0FVVEhFTlRJQ0FUSU9OPSR7Q0hBVFdPT1RfU01UUF9BVVRIRU5USUNBVElPTn0nCiAgICAgIC0gJ1NNVFBfRE9NQUlOPSR7Q0hBVFdPT1RfU01UUF9ET01BSU59JwogICAgICAtICdTTVRQX0VOQUJMRV9TVEFSVFRMU19BVVRPPSR7Q0hBVFdPT1RfU01UUF9FTkFCTEVfU1RBUlRUTFNfQVVUT30nCiAgICAgIC0gJ1NNVFBfUE9SVD0ke0NIQVRXT09UX1NNVFBfUE9SVH0nCiAgICAgIC0gJ1NNVFBfVVNFUk5BTUU9JHtDSEFUV09PVF9TTVRQX1VTRVJOQU1FfScKICAgICAgLSAnU01UUF9QQVNTV09SRD0ke0NIQVRXT09UX1NNVFBfUEFTU1dPUkR9JwogICAgICAtICdBQ1RJVkVfU1RPUkFHRV9TRVJWSUNFPSR7QUNUSVZFX1NUT1JBR0VfU0VSVklDRTotbG9jYWx9JwogICAgZW50cnlwb2ludDogZG9ja2VyL2VudHJ5cG9pbnRzL3JhaWxzLnNoCiAgICBjb21tYW5kOiAnc2ggLWMgImJ1bmRsZSBleGVjIHJhaWxzIGRiOmNoYXR3b290X3ByZXBhcmUgJiYgYnVuZGxlIGV4ZWMgcmFpbHMgcyAtcCAzMDAwIC1iIDAuMC4wLjAiJwogICAgdm9sdW1lczoKICAgICAgLSAncmFpbHMtZGF0YTovYXBwL3N0b3JhZ2UnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJy1xJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHNpZGVraXE6CiAgICBpbWFnZTogJ2NoYXR3b290L2NoYXR3b290OmxhdGVzdCcKICAgIGRlcGVuZHNfb246CiAgICAgIC0gcG9zdGdyZXMKICAgICAgLSByZWRpcwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VDUkVUX0tFWV9CQVNFPSRTRVJWSUNFX1BBU1NXT1JEX0NIQVRXT09UCiAgICAgIC0gJ0ZST05URU5EX1VSTD0ke1NFUlZJQ0VfVVJMX0NIQVRXT09UfScKICAgICAgLSAnREVGQVVMVF9MT0NBTEU9JHtDSEFUV09PVF9ERUZBVUxUX0xPQ0FMRX0nCiAgICAgIC0gJ0ZPUkNFX1NTTD0ke0ZPUkNFX1NTTDotZmFsc2V9JwogICAgICAtICdFTkFCTEVfQUNDT1VOVF9TSUdOVVA9JHtFTkFCTEVfQUNDT1VOVF9TSUdOVVA6LWZhbHNlfScKICAgICAgLSAnUkVESVNfVVJMPXJlZGlzOi8vZGVmYXVsdEByZWRpczo2Mzc5JwogICAgICAtIFJFRElTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1JFRElTCiAgICAgIC0gJ1JFRElTX09QRU5TU0xfVkVSSUZZX01PREU9JHtSRURJU19PUEVOU1NMX1ZFUklGWV9NT0RFOi1ub25lfScKICAgICAgLSAnUE9TVEdSRVNfREFUQUJBU0U9JHtQT1NUR1JFU19EQjotY2hhdHdvb3R9JwogICAgICAtICdQT1NUR1JFU19IT1NUPSR7UE9TVEdSRVNfSE9TVDotcG9zdGdyZXN9JwogICAgICAtIFBPU1RHUkVTX1VTRVJOQU1FPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtICdSQUlMU19NQVhfVEhSRUFEUz0ke1JBSUxTX01BWF9USFJFQURTOi01fScKICAgICAgLSAnTk9ERV9FTlY9JHtOT0RFX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ1JBSUxTX0VOVj0ke1JBSUxTX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ0lOU1RBTExBVElPTl9FTlY9JHtJTlNUQUxMQVRJT05fRU5WOi1kb2NrZXJ9JwogICAgICAtICdNQUlMRVJfU0VOREVSX0VNQUlMPSR7Q0hBVFdPT1RfTUFJTEVSX1NFTkRFUl9FTUFJTH0nCiAgICAgIC0gJ1NNVFBfQUREUkVTUz0ke0NIQVRXT09UX1NNVFBfQUREUkVTU30nCiAgICAgIC0gJ1NNVFBfQVVUSEVOVElDQVRJT049JHtDSEFUV09PVF9TTVRQX0FVVEhFTlRJQ0FUSU9OfScKICAgICAgLSAnU01UUF9ET01BSU49JHtDSEFUV09PVF9TTVRQX0RPTUFJTn0nCiAgICAgIC0gJ1NNVFBfRU5BQkxFX1NUQVJUVExTX0FVVE89JHtDSEFUV09PVF9TTVRQX0VOQUJMRV9TVEFSVFRMU19BVVRPfScKICAgICAgLSAnU01UUF9QT1JUPSR7Q0hBVFdPT1RfU01UUF9QT1JUfScKICAgICAgLSAnU01UUF9VU0VSTkFNRT0ke0NIQVRXT09UX1NNVFBfVVNFUk5BTUV9JwogICAgICAtICdTTVRQX1BBU1NXT1JEPSR7Q0hBVFdPT1RfU01UUF9QQVNTV09SRH0nCiAgICAgIC0gJ0FDVElWRV9TVE9SQUdFX1NFUlZJQ0U9JHtBQ1RJVkVfU1RPUkFHRV9TRVJWSUNFOi1sb2NhbH0nCiAgICBjb21tYW5kOgogICAgICAtIGJ1bmRsZQogICAgICAtIGV4ZWMKICAgICAgLSBzaWRla2lxCiAgICAgIC0gJy1DJwogICAgICAtIGNvbmZpZy9zaWRla2lxLnltbAogICAgdm9sdW1lczoKICAgICAgLSAncmFpbHMtZGF0YTovYXBwL3N0b3JhZ2UnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gImJ1bmRsZSBleGVjIHJhaWxzIHJ1bm5lciAncHV0cyBTaWRla2lxLnJlZGlzKCY6aW5mbyknID4gL2Rldi9udWxsIDI+JjEiCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncGd2ZWN0b3IvcGd2ZWN0b3I6cGcxMicKICAgIHJlc3RhcnQ6IGFsd2F5cwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotY2hhdHdvb3R9JwogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUyAtZCBjaGF0d29vdCAtaCAxMjcuMC4wLjEnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDUKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6YWxwaW5lJwogICAgcmVzdGFydDogYWx3YXlzCiAgICBjb21tYW5kOgogICAgICAtIHNoCiAgICAgIC0gJy1jJwogICAgICAtICdyZWRpcy1zZXJ2ZXIgLS1yZXF1aXJlcGFzcyAiJFNFUlZJQ0VfUEFTU1dPUkRfUkVESVMiJwogICAgdm9sdW1lczoKICAgICAgLSAncmVkaXMtZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtICctYScKICAgICAgICAtICRTRVJWSUNFX1BBU1NXT1JEX1JFRElTCiAgICAgICAgLSBQSU5HCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDUK",
+ "tags": [
+ "chatwoot",
+ "chat",
+ "api",
+ "open",
+ "source",
+ "rails",
+ "redis",
+ "postgresql",
+ "sidekiq"
+ ],
+ "logo": "svgs/chatwoot.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "checkmate": {
+ "documentation": "https://bluewavelabs.gitbook.io/checkmate?utm_source=coolify.io",
+ "slogan": "An open source server monitoring application",
+ "compose": "c2VydmljZXM6CiAgY2xpZW50OgogICAgaW1hZ2U6ICdibHVld2F2ZXVwdGltZS91cHRpbWVfY2xpZW50OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0NIRUNLTUFURV84MAogICAgICAtICdVUFRJTUVfQVBQX0FQSV9CQVNFX1VSTD0ke1NFUlZJQ0VfVVJMX0NIRUNLTUFURVNFUlZFUl81MDAwfS9hcGkvdjEnCiAgICBkZXBlbmRzX29uOgogICAgICAtIHNlcnZlcgogIHNlcnZlcjoKICAgIGltYWdlOiAnYmx1ZXdhdmV1cHRpbWUvdXB0aW1lX3NlcnZlcjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9DSEVDS01BVEVTRVJWRVJfNTAwMAogICAgICAtICdKV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF82NF9KV1R9JwogICAgICAtICdSRUZSRVNIX1RPS0VOX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfUkVGUkVTSH0nCiAgICAgIC0gJ1NZU1RFTV9FTUFJTF9BRERSRVNTPSR7U1lTVEVNX0VNQUlMX0FERFJFU1M6LXRlc3RAZXhhbXBsZS5jb219JwogICAgICAtICdTWVNURU1fRU1BSUxfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X0VNQUlMfScKICAgICAgLSAnU1lTVEVNX0VNQUlMX0hPU1Q9JHtTWVNURU1fRU1BSUxfSE9TVH0nCiAgICAgIC0gJ1NZU1RFTV9FTUFJTF9QT1JUPSR7U1lTVEVNX0VNQUlMX1BPUlR9JwogICAgICAtICdQQUdFU1BFRURfQVBJX0tFWT0ke1BBR0VTUEVFRF9BUElfS0VZfScKICAgICAgLSAnREJfQ09OTkVDVElPTl9TVFJJTkc9JHtEQl9DT05ORUNUSU9OX1NUUklORzotbW9uZ29kYjovL21vbmdvZGI6MjcwMTcvdXB0aW1lX2RifScKICAgICAgLSAnUkVESVNfSE9TVD0ke1JFRElTX0hPU1Q6LXJlZGlzfScKICAgICAgLSAnUkVESVNfUE9SVD0ke1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdEQl9UWVBFPSR7REJfVFlQRTotTW9uZ29EQn0nCiAgICAgIC0gJ1RPS0VOX1RUTD0ke1RPS0VOX1RUTDotOTlkfScKICAgICAgLSAnUkVGUkVTSF9UT0tFTl9UVEw9JHtSRUZSRVNIX1RPS0VOX1RUTDotOTlkfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJy92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrJwogICAgZGVwZW5kc19vbjoKICAgICAgLSByZWRpcwogICAgICAtIG1vbmdvZGIKICByZWRpczoKICAgIGltYWdlOiAnYmx1ZXdhdmV1cHRpbWUvdXB0aW1lX3JlZGlzOmxhdGVzdCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3JlZGlzOi9kYXRhJwogIG1vbmdvZGI6CiAgICBpbWFnZTogJ2JsdWV3YXZldXB0aW1lL3VwdGltZV9kYXRhYmFzZV9tb25nbzpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdtb25nb2RiOi9kYXRhL2RiJwogICAgY29tbWFuZDoKICAgICAgLSBtb25nb2QKICAgICAgLSAnLS1xdWlldCcK",
+ "tags": [
+ "monitoring",
+ "server",
+ "uptime",
+ "healthcheck"
+ ],
+ "logo": "svgs/checkmate.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "chroma": {
+ "documentation": "https://cookbook.chromadb.dev/?utm_source=coolify.io",
+ "slogan": "Chroma is the open-source search and retrieval database for AI applications.",
+ "compose": "c2VydmljZXM6CiAgY2hyb21hZGI6CiAgICBpbWFnZTogJ2Nocm9tYWRiL2Nocm9tYToxLjAuMTUnCiAgICB2b2x1bWVzOgogICAgICAtICdjaHJvbWEtZGF0YTovZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0NIUk9NQV84MDAwCiAgICAgIC0gSVNfUEVSU0lTVEVOVD1UUlVFCiAgICAgIC0gUEVSU0lTVF9ESVJFQ1RPUlk9L2RhdGEKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSAvYmluL2Jhc2gKICAgICAgICAtICctYycKICAgICAgICAtICdjYXQgPCAvZGV2L251bGwgPiAvZGV2L3RjcC9sb2NhbGhvc3QvODAwMCcKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwo=",
+ "tags": [
+ "ai",
+ "vector-database",
+ "semantic-search",
+ "machine-learning",
+ "bm25",
+ "embeddings",
+ "llm"
+ ],
+ "logo": "svgs/chroma.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "classicpress-with-mariadb": {
+ "documentation": "https://www.classicpress.net/?utm_source=coolify.io",
+ "slogan": "A lightweight, stable, instantly familiar free open-source content management system, based on WordPress without the block editor (Gutenberg).",
+ "compose": "c2VydmljZXM6CiAgY2xhc3NpY3ByZXNzOgogICAgaW1hZ2U6ICdjbGFzc2ljcHJlc3MvY2xhc3NpY3ByZXNzOmxhdGVzdCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2NsYXNzaWNwcmVzcy1maWxlczovdmFyL3d3dy9odG1sJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ0xBU1NJQ1BSRVNTCiAgICAgIC0gQ0xBU1NJQ1BSRVNTX0RCX0hPU1Q9bWFyaWFkYgogICAgICAtIENMQVNTSUNQUkVTU19EQl9VU0VSPSRTRVJWSUNFX1VTRVJfQ0xBU1NJQ1BSRVNTCiAgICAgIC0gQ0xBU1NJQ1BSRVNTX0RCX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX0NMQVNTSUNQUkVTUwogICAgICAtIENMQVNTSUNQUkVTU19EQl9OQU1FPWNsYXNzaWNwcmVzcwogICAgZGVwZW5kc19vbjoKICAgICAgLSBtYXJpYWRiCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjEnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTAKICBtYXJpYWRiOgogICAgaW1hZ2U6ICdtYXJpYWRiOjExJwogICAgdm9sdW1lczoKICAgICAgLSAnbWFyaWFkYi1kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gTVlTUUxfUk9PVF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9ST09UCiAgICAgIC0gTVlTUUxfREFUQUJBU0U9Y2xhc3NpY3ByZXNzCiAgICAgIC0gTVlTUUxfVVNFUj0kU0VSVklDRV9VU0VSX0NMQVNTSUNQUkVTUwogICAgICAtIE1ZU1FMX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX0NMQVNTSUNQUkVTUwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGhlYWx0aGNoZWNrLnNoCiAgICAgICAgLSAnLS1jb25uZWN0JwogICAgICAgIC0gJy0taW5ub2RiX2luaXRpYWxpemVkJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "cms",
+ "blog",
+ "content",
+ "management"
+ ],
+ "logo": "svgs/classicpress.svg",
+ "minversion": "0.0.0"
+ },
+ "classicpress-with-mysql": {
+ "documentation": "https://www.classicpress.net/?utm_source=coolify.io",
+ "slogan": "A lightweight, stable, instantly familiar free open-source content management system, based on WordPress without the block editor (Gutenberg).",
+ "compose": "c2VydmljZXM6CiAgY2xhc3NpY3ByZXNzOgogICAgaW1hZ2U6ICdjbGFzc2ljcHJlc3MvY2xhc3NpY3ByZXNzOmxhdGVzdCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2NsYXNzaWNwcmVzcy1maWxlczovdmFyL3d3dy9odG1sJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ0xBU1NJQ1BSRVNTCiAgICAgIC0gQ0xBU1NJQ1BSRVNTX0RCX0hPU1Q9bXlzcWwKICAgICAgLSBDTEFTU0lDUFJFU1NfREJfVVNFUj0kU0VSVklDRV9VU0VSX0NMQVNTSUNQUkVTUwogICAgICAtIENMQVNTSUNQUkVTU19EQl9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9DTEFTU0lDUFJFU1MKICAgICAgLSBDTEFTU0lDUFJFU1NfREJfTkFNRT1jbGFzc2ljcHJlc3MKICAgIGRlcGVuZHNfb246CiAgICAgIC0gbXlzcWwKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMScKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxMAogIG15c3FsOgogICAgaW1hZ2U6ICdteXNxbDo4JwogICAgdm9sdW1lczoKICAgICAgLSAnbXlzcWwtZGF0YTovdmFyL2xpYi9teXNxbCcKICAgIGVudmlyb25tZW50OgogICAgICAtIE1ZU1FMX1JPT1RfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUk9PVAogICAgICAtIE1ZU1FMX0RBVEFCQVNFPWNsYXNzaWNwcmVzcwogICAgICAtIE1ZU1FMX1VTRVI9JFNFUlZJQ0VfVVNFUl9DTEFTU0lDUFJFU1MKICAgICAgLSBNWVNRTF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9DTEFTU0lDUFJFU1MKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBteXNxbGFkbWluCiAgICAgICAgLSBwaW5nCiAgICAgICAgLSAnLWgnCiAgICAgICAgLSAxMjcuMC4wLjEKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "cms",
+ "blog",
+ "content",
+ "management"
+ ],
+ "logo": "svgs/classicpress.svg",
+ "minversion": "0.0.0"
+ },
+ "classicpress-without-database": {
+ "documentation": "https://www.classicpress.net/?utm_source=coolify.io",
+ "slogan": "A lightweight, stable, instantly familiar free open-source content management system, based on WordPress without the block editor (Gutenberg).",
+ "compose": "c2VydmljZXM6CiAgY2xhc3NpY3ByZXNzOgogICAgaW1hZ2U6ICdjbGFzc2ljcHJlc3MvY2xhc3NpY3ByZXNzOmxhdGVzdCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2NsYXNzaWNwcmVzcy1maWxlczovdmFyL3d3dy9odG1sJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ0xBU1NJQ1BSRVNTCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjEnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "cms",
+ "blog",
+ "content",
+ "management"
+ ],
+ "logo": "svgs/classicpress.svg",
+ "minversion": "0.0.0"
+ },
+ "cloudbeaver": {
+ "documentation": "https://dbeaver.com/docs/cloudbeaver/?utm_source=coolify.io",
+ "slogan": "CloudBeaver is a lightweight web application designed for comprehensive data management.",
+ "compose": "c2VydmljZXM6CiAgY2xvdWRiZWF2ZXI6CiAgICBpbWFnZTogJ2RiZWF2ZXIvY2xvdWRiZWF2ZXI6MjQnCiAgICB2b2x1bWVzOgogICAgICAtICdjbG91ZGJlYXZlci1kYXRhOi9vcHQvY2xvdWRiZWF2ZXIvd29ya3NwYWNlJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ0xPVURCRUFWRVJfODk3OAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHdnZXQKICAgICAgICAtICctcScKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjg5NzgvJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "dbeaver",
+ "data management",
+ "data",
+ "database",
+ "mysql",
+ "postgres",
+ "sqlite",
+ "sql",
+ "mongodb"
+ ],
+ "logo": "svgs/cloudbeaver.svg",
+ "minversion": "0.0.0",
+ "port": "8978"
+ },
+ "cloudflared": {
+ "documentation": "https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/?utm_source=coolify.io",
+ "slogan": "Client for Cloudflare Tunnel, a daemon that exposes private services through the Cloudflare edge.",
+ "compose": "c2VydmljZXM6CiAgY2xvdWRmbGFyZWQ6CiAgICBjb250YWluZXJfbmFtZTogY2xvdWRmbGFyZS10dW5uZWwKICAgIGltYWdlOiAnY2xvdWRmbGFyZS9jbG91ZGZsYXJlZDpsYXRlc3QnCiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZAogICAgbmV0d29ya19tb2RlOiBob3N0CiAgICBjb21tYW5kOiAndHVubmVsIC0tbm8tYXV0b3VwZGF0ZSBydW4nCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnVFVOTkVMX1RPS0VOPSR7Q0xPVURGTEFSRV9UVU5ORUxfVE9LRU59JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGNsb3VkZmxhcmVkCiAgICAgICAgLSAnLS12ZXJzaW9uJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": null,
+ "logo": "svgs/cloudflared.svg",
+ "minversion": "0.0.0"
+ },
+ "cockpit": {
+ "documentation": "https://getcockpit.com/documentation/?utm_source=coolify.io",
+ "slogan": "Cockpit is a headless content platform that is lightweight, fast and ready for takeoff.",
+ "compose": "c2VydmljZXM6CiAgY29ja3BpdDoKICAgIGltYWdlOiAnY29ja3BpdGhxL2NvY2twaXQ6Y29yZS1sYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdjb2NrcGl0LWNvbmZpZzovdmFyL3d3dy9odG1sL2NvbmZpZycKICAgICAgLSAnY29ja3BpdC1zcGFjZXM6L3Zhci93d3cvaHRtbC8uc3BhY2VzJwogICAgICAtICdjb2NrcGl0LXN0b3JhZ2U6L3Zhci93d3cvaHRtbC9zdG9yYWdlJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHdnZXQKICAgICAgICAtICctcScKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xL2FwaS9zeXN0ZW0vaGVhbHRoY2hlY2snCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "cockpit",
+ "headless",
+ "cms",
+ "database",
+ "nosql"
+ ],
+ "logo": "svgs/cockpit.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "code-server": {
+ "documentation": "https://coder.com/docs/code-server/latest?utm_source=coolify.io",
+ "slogan": "Code-Server is a web-based code editor that enables remote coding and collaboration from any device, anywhere.",
+ "compose": "c2VydmljZXM6CiAgY29kZS1zZXJ2ZXI6CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvY29kZS1zZXJ2ZXI6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ09ERVNFUlZFUl84NDQzCiAgICAgIC0gUFVJRD0xMDAwCiAgICAgIC0gUEdJRD0xMDAwCiAgICAgIC0gVFo9RXVyb3BlL01hZHJpZAogICAgICAtIFBBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEXzY0X1BBU1NXT1JEQ09ERVNFUlZFUgogICAgICAtIFNVRE9fUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfU1VET0NPREVTRVJWRVIKICAgICAgLSBERUZBVUxUX1dPUktTUEFDRT0vY29uZmlnL3dvcmtzcGFjZQogICAgdm9sdW1lczoKICAgICAgLSAnY29kZS1zZXJ2ZXItY29uZmlnOi9jb25maWcnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODQ0MycKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "code",
+ "editor",
+ "remote",
+ "collaboration"
+ ],
+ "logo": "svgs/code-server.svg",
+ "minversion": "0.0.0",
+ "port": "8443"
+ },
+ "codimd": {
+ "documentation": "https://hackmd.io/c/codimd-documentation?utm_source=coolify.io",
+ "slogan": "Realtime collaborative markdown notes on all platforms",
+ "compose": "c2VydmljZXM6CiAgY29kaW1kOgogICAgaW1hZ2U6ICduYWJvLmNvZGltZC5kZXYvaGFja21kaW8vaGFja21kOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0NPRElNRF8zMDAwCiAgICAgIC0gJ0NNRF9ET01BSU49JHtTRVJWSUNFX1VSTF9DT0RJTUR9JwogICAgICAtICdDTURfUFJPVE9DT0xfVVNFU1NMPSR7Q01EX1BST1RPQ09MX1VTRVNTTDotZmFsc2V9JwogICAgICAtICdDTURfU0VTU0lPTl9TRUNSRVQ9JHtTRVJWSUNFX1BBU1NXT1JEX1NFU1NJT05TRUNSRVR9JwogICAgICAtICdDTURfVVNFQ0ROPSR7Q01EX1VTRUNETjotZmFsc2V9JwogICAgICAtICdDTURfREJfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1jb2RpbWQtZGJ9JwogICAgICAtICdDTURfRU1BSUw9JHtDTURfRU1BSUw6LXRydWV9JwogICAgICAtICdDTURfQUxMT1dfRU1BSUxfUkVHSVNURVI9JHtDTURfQUxMT1dfRU1BSUxfUkVHSVNURVI6LXRydWV9JwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnY3VybCAtZiBodHRwOi8vbG9jYWxob3N0OjMwMDAvIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiA1CiAgICB2b2x1bWVzOgogICAgICAtICd1cGxvYWRzX2RhdGE6L2hvbWUvaGFja21kL2FwcC9wdWJsaWMvdXBsb2FkcycKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAnY29kaW1kX3Bvc3RncmVzX2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1jb2RpbWQtZGJ9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "markdown",
+ "md",
+ "editor",
+ "opensource",
+ "collaborative",
+ "realtime-collaboration",
+ "notes"
+ ],
+ "logo": "svgs/codimd.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "convex": {
+ "documentation": "https://docs.convex.dev/?utm_source=coolify.io",
+ "slogan": "Convex is the open-source reactive database for app developers.",
+ "compose": "c2VydmljZXM6CiAgYmFja2VuZDoKICAgIGltYWdlOiAnZ2hjci5pby9nZXQtY29udmV4L2NvbnZleC1iYWNrZW5kOjUxNDNmZWM4MWYxNDZjYTY3NDk1YzEyYzZiN2ExNWM1ODAyYzM3ZTInCiAgICB2b2x1bWVzOgogICAgICAtICdkYXRhOi9jb252ZXgvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0JBQ0tFTkRfMzIxMAogICAgICAtICdJTlNUQU5DRV9OQU1FPSR7SU5TVEFOQ0VfTkFNRTotc2VsZi1ob3N0ZWQtY29udmV4fScKICAgICAgLSAnSU5TVEFOQ0VfU0VDUkVUPSR7U0VSVklDRV9IRVhfMzJfU0VDUkVUfScKICAgICAgLSAnQ09OVkVYX1JFTEVBU0VfVkVSU0lPTl9ERVY9JHtDT05WRVhfUkVMRUFTRV9WRVJTSU9OX0RFVjotfScKICAgICAgLSAnQUNUSU9OU19VU0VSX1RJTUVPVVRfU0VDUz0ke0FDVElPTlNfVVNFUl9USU1FT1VUX1NFQ1M6LX0nCiAgICAgIC0gJ0NPTlZFWF9DTE9VRF9PUklHSU49JHtTRVJWSUNFX1VSTF9DT05WRVhfMzIxMH0nCiAgICAgIC0gJ0NPTlZFWF9TSVRFX09SSUdJTj0ke1NFUlZJQ0VfVVJMX0NPTlZFWF8zMjExfScKICAgICAgLSAnREFUQUJBU0VfVVJMPSR7REFUQUJBU0VfVVJMOi19JwogICAgICAtICdESVNBQkxFX0JFQUNPTj0ke0RJU0FCTEVfQkVBQ09OOi19JwogICAgICAtICdSRURBQ1RfTE9HU19UT19DTElFTlQ9JHtSRURBQ1RfTE9HU19UT19DTElFTlQ6LX0nCiAgICAgIC0gJ0NPTlZFWF9TRUxGX0hPU1RFRF9VUkw9JHtTRVJWSUNFX1VSTF9DT05WRVhfNjc5MX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogJ2N1cmwgLWYgaHR0cDovLzEyNy4wLjAuMTozMjEwL3ZlcnNpb24nCiAgICAgIGludGVydmFsOiA1cwogICAgICBzdGFydF9wZXJpb2Q6IDVzCiAgZGFzaGJvYXJkOgogICAgaW1hZ2U6ICdnaGNyLmlvL2dldC1jb252ZXgvY29udmV4LWRhc2hib2FyZDo1MTQzZmVjODFmMTQ2Y2E2NzQ5NWMxMmM2YjdhMTVjNTgwMmMzN2UyJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ09OVkVYXzY3OTEKICAgICAgLSBORVhUX1BVQkxJQ19ERVBMT1lNRU5UX1VSTD0kU0VSVklDRV9VUkxfQkFDS0VORF8zMjEwCiAgICBkZXBlbmRzX29uOgogICAgICBiYWNrZW5kOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogJ3dnZXQgLXFPLSBodHRwOi8vMTI3LjAuMC4xOjY3OTEvJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgc3RhcnRfcGVyaW9kOiA1cwo=",
+ "tags": [
+ "database",
+ "reactive",
+ "database",
+ "ai",
+ "agents",
+ "chatbot",
+ "api",
+ "team",
+ "bot",
+ "flows"
+ ],
+ "logo": "svgs/convex.svg",
+ "minversion": "0.0.0",
+ "port": "6791"
+ },
+ "cryptgeon": {
+ "documentation": "https://github.com/cupcakearmy/cryptgeon?utm_source=coolify.io",
+ "slogan": "Secure note / file sharing service inspired by PrivNote.",
+ "compose": "c2VydmljZXM6CiAgYXBwOgogICAgaW1hZ2U6ICdjdXBjYWtlYXJteS9jcnlwdGdlb246bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ1JZUFRHRU9OXzgwMDAKICAgICAgLSAnU0laRV9MSU1JVD0ke1NJWkVfTElNSVQ6LTQgTWlCfScKICAgICAgLSAnTUFYX1ZJRVdTPSR7TUFYX1ZJRVdTOi0xMDB9JwogICAgICAtICdNQVhfRVhQSVJBVElPTj0ke01BWF9FWFBJUkFUSU9OOi0zNjB9JwogICAgICAtICdBTExPV19BRFZBTkNFRD0ke0FMTE9XX0FEVkFOQ0VEOi10cnVlfScKICAgICAgLSAnQUxMT1dfRklMRVM9JHtBTExPV19GSUxFUzotdHJ1ZX0nCiAgICBkZXBlbmRzX29uOgogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctLWZhaWwnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL2FwaS9saXZlLycKICAgICAgaW50ZXJ2YWw6IDFtCiAgICAgIHRpbWVvdXQ6IDNzCiAgICAgIHJldHJpZXM6IDIKICAgICAgc3RhcnRfcGVyaW9kOiA1cwogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo3LWFscGluZScKICAgIGNvbW1hbmQ6ICdyZWRpcy1zZXJ2ZXIgLS1tYXhtZW1vcnkgMjAwbWIgLS1tYXhtZW1vcnktcG9saWN5IGFsbGtleXMtbHJ1JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gUElORwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDIK",
+ "tags": [
+ "cryptgeon",
+ "secure",
+ "note",
+ "sharing",
+ "privnote",
+ "file",
+ "sharing"
+ ],
+ "logo": "svgs/cryptgeon.png",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "cyberchef": {
+ "documentation": "https://github.com/gchq/CyberChef?utm_source=coolify.io",
+ "slogan": "The Cyber Swiss Army Knife - a web app for encryption, encoding, compression and data analysis",
+ "compose": "c2VydmljZXM6CiAgY3liZXJjaGVmOgogICAgaW1hZ2U6ICdnaGNyLmlvL2djaHEvY3liZXJjaGVmOmxhdGVzdCcKICAgIHBsYXRmb3JtOiBsaW51eC9hbWQ2NAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQ1lCRVJDSEVGXzgwCiAgICB2b2x1bWVzOgogICAgICAtICdjeWJlcmNoZWYtZGF0YTovYXBwL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMK",
+ "tags": [
+ "encryption",
+ "encoding",
+ "compression",
+ "data analysis",
+ "tools",
+ "development"
+ ],
+ "logo": "svgs/cyberchef.jpeg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "dashy": {
+ "documentation": "https://dashy.to/docs?utm_source=coolify.io",
+ "slogan": "A self-hostable personal dashboard built for you. Includes status-checking, widgets, themes, icon packs, a UI editor and tons more!",
+ "compose": "c2VydmljZXM6CiAgZGFzaHk6CiAgICBpbWFnZTogbGlzc3k5My9kYXNoeQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfREFTSFlfODA4MAogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtICdUWj0ke1RJTUVaT05FOi1VVEN9JwogICAgdm9sdW1lczoKICAgICAgLSAnLi9kYXNoeS9jb25mLnltbDovYXBwL3B1YmxpYy9jb25mLnltbCcKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnd2dldCAtcU8tIGh0dHA6Ly8xMjcuMC4wLjE6ODA4MC8nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "dashboard",
+ "personal",
+ "self-hostable"
+ ],
+ "logo": "svgs/dashy.png",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "denoKV": {
+ "documentation": "https://docs.deno.com/deploy/kv/manual/?utm_source=coolify.io",
+ "slogan": "The Denoland key-value database",
+ "compose": "c2VydmljZXM6CiAgZGVub2t2OgogICAgaW1hZ2U6ICdnaGNyLmlvL2Rlbm9sYW5kL2Rlbm9rdjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnQUNDRVNTX1RPS0VOPSR7U0VSVklDRV9QQVNTV09SRF9ERU5PS1Z9JwogICAgICAtIFNFUlZJQ0VfVVJMX0RFTk9LVl80NTEyCiAgICB2b2x1bWVzOgogICAgICAtICcke0NPT0xJRllfVk9MVU1FX0FQUH06L2RhdGEnCiAgICBjb21tYW5kOiAnLS1zcWxpdGUtcGF0aCAvZGF0YS9kZW5va3Yuc3FsaXRlIHNlcnZlIC0tYWNjZXNzLXRva2VuICR7U0VSVklDRV9QQVNTV09SRF9ERU5PS1Z9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG5jCiAgICAgICAgLSAnLXp2JwogICAgICAgIC0gMTI3LjAuMC4xCiAgICAgICAgLSAnNDUxMicKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDMK",
+ "tags": [
+ "deno",
+ "kv",
+ "key-value",
+ "database"
+ ],
+ "logo": "svgs/denokv.svg",
+ "minversion": "0.0.0",
+ "port": "4512"
+ },
+ "directus-with-postgresql": {
+ "documentation": "https://directus.io?utm_source=coolify.io",
+ "slogan": "Directus wraps databases with a dynamic API, and provides an intuitive app for managing its content.",
+ "compose": "c2VydmljZXM6CiAgZGlyZWN0dXM6CiAgICBpbWFnZTogJ2RpcmVjdHVzL2RpcmVjdHVzOjExJwogICAgdm9sdW1lczoKICAgICAgLSAnZGlyZWN0dXMtdXBsb2FkczovZGlyZWN0dXMvdXBsb2FkcycKICAgICAgLSAnZGlyZWN0dXMtZXh0ZW5zaW9uczovZGlyZWN0dXMvZXh0ZW5zaW9ucycKICAgICAgLSAnZGlyZWN0dXMtdGVtcGxhdGVzOi9kaXJlY3R1cy90ZW1wbGF0ZXMnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9ESVJFQ1RVU184MDU1CiAgICAgIC0gS0VZPSRTRVJWSUNFX0JBU0U2NF82NF9LRVkKICAgICAgLSBTRUNSRVQ9JFNFUlZJQ0VfQkFTRTY0XzY0X1NFQ1JFVAogICAgICAtICdBRE1JTl9FTUFJTD0ke0FETUlOX0VNQUlMOi1hZG1pbkBleGFtcGxlLmNvbX0nCiAgICAgIC0gQURNSU5fUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfQURNSU4KICAgICAgLSBEQl9DTElFTlQ9cG9zdGdyZXMKICAgICAgLSBEQl9IT1NUPXBvc3RncmVzcWwKICAgICAgLSBEQl9QT1JUPTU0MzIKICAgICAgLSAnREJfREFUQUJBU0U9JHtQT1NUR1JFU1FMX0RBVEFCQVNFOi1kaXJlY3R1c30nCiAgICAgIC0gREJfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTUUwKICAgICAgLSBEQl9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMCiAgICAgIC0gUkVESVNfSE9TVD1yZWRpcwogICAgICAtIFJFRElTX1BPUlQ9NjM3OQogICAgICAtIFdFQlNPQ0tFVFNfRU5BQkxFRD10cnVlCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy1xJwogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODA1NS9hZG1pbi9sb2dpbicKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogIHBvc3RncmVzcWw6CiAgICBpbWFnZTogJ3Bvc3RnaXMvcG9zdGdpczoxNi0zLjQtYWxwaW5lJwogICAgcGxhdGZvcm06IGxpbnV4L2FtZDY0CiAgICB2b2x1bWVzOgogICAgICAtICdkaXJlY3R1cy1wb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVNRTH0nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU1FMX0RBVEFCQVNFOi1kaXJlY3R1c30nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjctYWxwaW5lJwogICAgY29tbWFuZDogJ3JlZGlzLXNlcnZlciAtLWFwcGVuZG9ubHkgeWVzJwogICAgdm9sdW1lczoKICAgICAgLSAnZGlyZWN0dXMtcmVkaXMtZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "directus",
+ "cms",
+ "database",
+ "sql"
+ ],
+ "logo": "svgs/directus.svg",
+ "minversion": "0.0.0",
+ "port": "8055"
+ },
+ "directus": {
+ "documentation": "https://directus.io?utm_source=coolify.io",
+ "slogan": "Directus wraps databases with a dynamic API, and provides an intuitive app for managing its content.",
+ "compose": "c2VydmljZXM6CiAgZGlyZWN0dXM6CiAgICBpbWFnZTogJ2RpcmVjdHVzL2RpcmVjdHVzOjExJwogICAgdm9sdW1lczoKICAgICAgLSAnZGlyZWN0dXMtZGF0YWJhc2U6L2RpcmVjdHVzL2RhdGFiYXNlJwogICAgICAtICdkaXJlY3R1cy11cGxvYWRzOi9kaXJlY3R1cy91cGxvYWRzJwogICAgICAtICdkaXJlY3R1cy1leHRlbnNpb25zOi9kaXJlY3R1cy9leHRlbnNpb25zJwogICAgICAtICdkaXJlY3R1cy10ZW1wbGF0ZXM6L2RpcmVjdHVzL3RlbXBsYXRlcycKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0RJUkVDVFVTXzgwNTUKICAgICAgLSBLRVk9JFNFUlZJQ0VfQkFTRTY0XzY0X0tFWQogICAgICAtIFNFQ1JFVD0kU0VSVklDRV9CQVNFNjRfNjRfU0VDUkVUCiAgICAgIC0gJ0FETUlOX0VNQUlMPSR7QURNSU5fRU1BSUw6LWFkbWluQGV4YW1wbGUuY29tfScKICAgICAgLSBBRE1JTl9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9BRE1JTgogICAgICAtIERCX0NMSUVOVD1zcWxpdGUzCiAgICAgIC0gREJfRklMRU5BTUU9L2RpcmVjdHVzL2RhdGFiYXNlL2RhdGEuZGIKICAgICAgLSBXRUJTT0NLRVRTX0VOQUJMRUQ9dHJ1ZQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHdnZXQKICAgICAgICAtICctcScKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwNTUvYWRtaW4vbG9naW4nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "directus",
+ "cms",
+ "database",
+ "sql"
+ ],
+ "logo": "svgs/directus.svg",
+ "minversion": "0.0.0",
+ "port": "8055"
+ },
+ "diun": {
+ "documentation": "https://crazymax.dev/diun/?utm_source=coolify.io",
+ "slogan": "Docker Image Update Notifier is a CLI application to receive notifications when a Docker image is updated on a Docker registry.",
+ "compose": "c2VydmljZXM6CiAgZGl1bjoKICAgIGltYWdlOiAnY3JhenltYXgvZGl1bjpsYXRlc3QnCiAgICBjb21tYW5kOiBzZXJ2ZQogICAgdm9sdW1lczoKICAgICAgLSAnZGl1bl9kYXRhOi9kYXRhJwogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaycKICAgIGVudmlyb25tZW50OgogICAgICAtICdUWj0ke1RJTUVfWk9ORTotRXVyb3BlL1ZpZW5uYX0nCiAgICAgIC0gJ0xPR19MRVZFTD0ke0xPR19MRVZFTDotaW5mb30nCiAgICAgIC0gJ0xPR19KU09OPSR7TE9HX0pTT046LWZhbHNlfScKICAgICAgLSAnRElVTl9XQVRDSF9XT1JLRVJTPSR7RElVTl9XQVRDSF9XT1JLRVJTOi0yMH0nCiAgICAgIC0gJ0RJVU5fV0FUQ0hfU0NIRURVTEU9JHtESVVOX1dBVENIX1NDSEVEVUxFOi0gKiAqLzYgKiAqICp9JwogICAgICAtICdESVVOX1dBVENIX0pJVFRFUj0ke0RJVU5fV0FUQ0hfSklUVEVSOi0zMHN9JwogICAgICAtICdESVVOX1BST1ZJREVSU19ET0NLRVI9JHtESVVOX1BST1ZJREVSU19ET0NLRVI6LXRydWV9JwogICAgICAtICdESVVOX1BST1ZJREVSU19ET0NLRVJfV0FUQ0hCWURFRkFVTFQ9JHtESVVOX1BST1ZJREVSU19ET0NLRVJfV0FUQ0hCWURFRkFVTFQ6LXRydWV9JwogICAgICAtICdESVVOX05PVElGX1NMQUNLX1dFQkhPT0tVUkw9JHtTRVJWSUNFX1dFQkhPT0tfVVJMX1NMQUNLfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBkaXVuCiAgICAgICAgLSAnLS12ZXJzaW9uJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDMK",
+ "tags": [
+ "docker",
+ "notifier",
+ "slack"
+ ],
+ "logo": "svgs/diun.svg",
+ "minversion": "0.0.0"
+ },
+ "docker-registry": {
+ "documentation": "https://docs.docker.com/registry/?utm_source=coolify.io",
+ "slogan": "The Docker Registry lets you distribute Docker images.",
+ "compose": "c2VydmljZXM6CiAgcmVnaXN0cnk6CiAgICBpbWFnZTogJ3JlZ2lzdHJ5OjInCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9SRUdJU1RSWV81MDAwCiAgICAgIC0gUkVHSVNUUllfQVVUSD1odHBhc3N3ZAogICAgICAtIFJFR0lTVFJZX0FVVEhfSFRQQVNTV0RfUkVBTE09UmVnaXN0cnkKICAgICAgLSBSRUdJU1RSWV9BVVRIX0hUUEFTU1dEX1BBVEg9L2F1dGgvcmVnaXN0cnkucGFzc3dvcmQKICAgICAgLSBSRUdJU1RSWV9TVE9SQUdFX0ZJTEVTWVNURU1fUk9PVERJUkVDVE9SWT0vZGF0YQogICAgdm9sdW1lczoKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vYXV0aC9yZWdpc3RyeS5wYXNzd29yZAogICAgICAgIHRhcmdldDogL2F1dGgvcmVnaXN0cnkucGFzc3dvcmQKICAgICAgICBpc0RpcmVjdG9yeTogZmFsc2UKICAgICAgICBjb250ZW50OiAndGVzdHVzZXI6JDJ5JDA1JC9vMkp2bUkyYmhFeFhJdDZPcXhhN2VrWUI3djNzY2oxd0ZFZjZ0QnNsSnZKT01vUFFMLkd5JwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9jb25maWcvY29uZmlnLnltbAogICAgICAgIHRhcmdldDogL2V0Yy9kb2NrZXIvcmVnaXN0cnkvY29uZmlnLnltbAogICAgICAgIGlzRGlyZWN0b3J5OiBmYWxzZQogICAgICAgIGNvbnRlbnQ6ICJ2ZXJzaW9uOiAwLjFcbmxvZzpcbiAgZmllbGRzOlxuICAgIHNlcnZpY2U6IHJlZ2lzdHJ5XG5zdG9yYWdlOlxuICBjYWNoZTpcbiAgICBibG9iZGVzY3JpcHRvcjogaW5tZW1vcnlcbiAgZmlsZXN5c3RlbTpcbiAgICByb290ZGlyZWN0b3J5OiAvdmFyL2xpYi9yZWdpc3RyeVxuaHR0cDpcbiAgYWRkcjogOjUwMDBcbiAgaGVhZGVyczpcbiAgICBYLUNvbnRlbnQtVHlwZS1PcHRpb25zOiBbbm9zbmlmZl1cbmhlYWx0aDpcbiAgc3RvcmFnZWRyaXZlcjpcbiAgICBlbmFibGVkOiB0cnVlXG4gICAgaW50ZXJ2YWw6IDEwc1xuICAgIHRocmVzaG9sZDogMyIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vZGF0YQogICAgICAgIHRhcmdldDogL2RhdGEKICAgICAgICBpc0RpcmVjdG9yeTogdHJ1ZQo=",
+ "tags": [
+ "registry",
+ "images",
+ "docker"
+ ],
+ "logo": "svgs/docker-registry.png",
+ "minversion": "0.0.0",
+ "port": "5000"
+ },
+ "docmost": {
+ "documentation": "https://docmost.com/docs/?utm_source=coolify.io",
+ "slogan": "Open-source collaborative wiki and documentation software",
+ "compose": "c2VydmljZXM6CiAgZG9jbW9zdDoKICAgIGltYWdlOiAnZG9jbW9zdC9kb2Ntb3N0OmxhdGVzdCcKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzcWw6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0RPQ01PU1RfMzAwMAogICAgICAtIEFQUF9TRUNSRVQ9JFNFUlZJQ0VfQkFTRTY0X0FQUEtFWQogICAgICAtIEFQUF9VUkw9JFNFUlZJQ0VfVVJMX0RPQ01PU1RfMzAwMAogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcG9zdGdyZXNxbC9kb2Ntb3N0P3NjaGVtYT1wdWJsaWMnCiAgICAgIC0gJ1JFRElTX1VSTD1yZWRpczovL3JlZGlzOjYzNzknCiAgICB2b2x1bWVzOgogICAgICAtICdkb2Ntb3N0Oi9hcHAvZGF0YS9zdG9yYWdlJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjMwMDAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMjAKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX0RCPWRvY21vc3QKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDIwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjcuMi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdyZWRpcy1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gUElORwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDIwCg==",
+ "tags": [
+ "documentation",
+ "opensource",
+ "wiki",
+ "confluence",
+ "knowledge-base",
+ "notion",
+ "realtime-collaboration",
+ "notion-alternative"
+ ],
+ "logo": "svgs/docmost.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "documenso": {
+ "documentation": "https://docs.documenso.com/?utm_source=coolify.io",
+ "slogan": "Document signing, finally open source",
+ "compose": "c2VydmljZXM6CiAgZG9jdW1lbnNvOgogICAgaW1hZ2U6IGRvY3VtZW5zby9kb2N1bWVuc28KICAgIGRlcGVuZHNfb246CiAgICAgIGRhdGFiYXNlOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9ET0NVTUVOU09fMzAwMAogICAgICAtICdORVhUQVVUSF9VUkw9JHtTRVJWSUNFX1VSTF9ET0NVTUVOU099JwogICAgICAtICdORVhUQVVUSF9TRUNSRVQ9JHtTRVJWSUNFX0JBU0U2NF9BVVRIU0VDUkVUfScKICAgICAgLSAnTkVYVF9QUklWQVRFX0VOQ1JZUFRJT05fS0VZPSR7U0VSVklDRV9CQVNFNjRfRU5DUllQVElPTktFWX0nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9FTkNSWVBUSU9OX1NFQ09OREFSWV9LRVk9JHtTRVJWSUNFX0JBU0U2NF9TRUNPTkRBUllFTkNSWVBUSU9OS0VZfScKICAgICAgLSAnTkVYVF9QVUJMSUNfV0VCQVBQX1VSTD0ke1NFUlZJQ0VfVVJMX0RPQ1VNRU5TT30nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9TTVRQX1RSQU5TUE9SVD0ke05FWFRfUFJJVkFURV9TTVRQX1RSQU5TUE9SVH0nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9TTVRQX0hPU1Q9JHtORVhUX1BSSVZBVEVfU01UUF9IT1NUfScKICAgICAgLSAnTkVYVF9QUklWQVRFX1NNVFBfUE9SVD0ke05FWFRfUFJJVkFURV9TTVRQX1BPUlR9JwogICAgICAtICdORVhUX1BSSVZBVEVfU01UUF9VU0VSTkFNRT0ke05FWFRfUFJJVkFURV9TTVRQX1VTRVJOQU1FfScKICAgICAgLSAnTkVYVF9QUklWQVRFX1NNVFBfUEFTU1dPUkQ9JHtORVhUX1BSSVZBVEVfU01UUF9QQVNTV09SRH0nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9TTVRQX0ZST01fTkFNRT0ke05FWFRfUFJJVkFURV9TTVRQX0ZST01fTkFNRX0nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9TTVRQX0ZST01fQUREUkVTUz0ke05FWFRfUFJJVkFURV9TTVRQX0ZST01fQUREUkVTU30nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9EQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGRhdGFiYXNlLyR7UE9TVEdSRVNfREI6LWRvY3VtZW5zby1kYn0/c2NoZW1hPXB1YmxpYycKICAgICAgLSAnTkVYVF9QUklWQVRFX0RJUkVDVF9EQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGRhdGFiYXNlLyR7UE9TVEdSRVNfREI6LWRvY3VtZW5zby1kYn0/c2NoZW1hPXB1YmxpYycKICAgICAgLSBORVhUX1BSSVZBVEVfU0lHTklOR19MT0NBTF9GSUxFX1BBVEg9L2FwcC9hcHBzL3JlbWl4L2NlcnRzL2NlcnRpZmljYXRlLnAxMgogICAgICAtICdORVhUX1BSSVZBVEVfU0lHTklOR19QQVNTUEhSQVNFPSR7U0VSVklDRV9QQVNTV09SRF9ET0NVTUVOU099JwogICAgICAtICdDRVJUX1ZBTElEX0RBWVM9JHtDRVJUX1ZBTElEX0RBWVM6LTM2NX0nCiAgICAgIC0gJ0NFUlRfSU5GT19DT1VOVFJZX05BTUU9JHtDRVJUX0lORk9fQ09VTlRSWV9OQU1FOi1ET30nCiAgICAgIC0gJ0NFUlRfSU5GT19TVEFURV9PUl9QUk9WSURFTkNFPSR7Q0VSVF9JTkZPX1NUQVRFX09SX1BST1ZJREVOQ0U6LVNhbnRpYWdvfScKICAgICAgLSAnQ0VSVF9JTkZPX0xPQ0FMSVRZX05BTUU9JHtDRVJUX0lORk9fTE9DQUxJVFlfTkFNRTotU2FudGlhZ299JwogICAgICAtICdDRVJUX0lORk9fT1JHQU5JWkFUSU9OX05BTUU9JHtDRVJUX0lORk9fT1JHQU5JWkFUSU9OX05BTUU6LUV4YW1wbGUgSU5DfScKICAgICAgLSAnQ0VSVF9JTkZPX09SR0FOSVpBVElPTkFMX1VOSVQ9JHtDRVJUX0lORk9fT1JHQU5JWkFUSU9OQUxfVU5JVDotSVQgRGVwYXJ0bWVudH0nCiAgICAgIC0gJ0NFUlRfSU5GT19FTUFJTD0ke0NFUlRfSU5GT19FTUFJTDotZXhhbXBsZUBnbWFpbC5jb219JwogICAgICAtICdORVhUX1BVQkxJQ19ESVNBQkxFX1NJR05VUD0ke0RJU0FCTEVfTE9HSU46LWZhbHNlfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAid2dldCAtcSAtTyAtIGh0dHA6Ly9kb2N1bWVuc286MzAwMC8gfCBncmVwIC1xICdTaWduIGluIHRvIHlvdXIgYWNjb3VudCciCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMjAKICAgIGVudHJ5cG9pbnQ6CiAgICAgIC0gL2Jpbi9zaAogICAgICAtICctYycKICAgICAgLSAiZWNobyBcIi4vY2VydHNcIiA+IC90bXAvY2VydHNfZGlyX3BhdGhcbmVjaG8gXCIuL21ha2UtY2VydHMuc2hcIiA+IC90bXAvY2VydF9zY3JpcHRfcGF0aFxuZWNobyBcIiR7U0VSVklDRV9QQVNTV09SRF9ET0NVTUVOU099XCIgPiAvdG1wL2NlcnRfcGFzc1xuXG50b3VjaCAvdG1wL2NlcnRfaW5mb19wYXRoXG5jYXQgPDxFT0YgPiAvdG1wL2NlcnRfaW5mb19wYXRoXG5bIHJlcSBdXG5kaXN0aW5ndWlzaGVkX25hbWUgPSByZXFfZGlzdGluZ3Vpc2hlZF9uYW1lXG5wcm9tcHQgPSBub1xuWyByZXFfZGlzdGluZ3Vpc2hlZF9uYW1lIF1cbkMgICAgICAgICAgICA9ICR7Q0VSVF9JTkZPX0NPVU5UUllfTkFNRX1cblNUICAgICAgICAgICA9ICR7Q0VSVF9JTkZPX1NUQVRFX09SX1BST1ZJREVOQ0V9XG5MICAgICAgICAgICAgPSAke0NFUlRfSU5GT19MT0NBTElUWV9OQU1FfVxuTyAgICAgICAgICAgID0gJHtDRVJUX0lORk9fT1JHQU5JWkFUSU9OX05BTUV9XG5PVSAgICAgICAgICAgPSAke0NFUlRfSU5GT19PUkdBTklaQVRJT05BTF9VTklUfVxuQ04gICAgICAgICAgID0gJHtTRVJWSUNFX1VSTF9ET0NVTUVOU099XG5lbWFpbEFkZHJlc3MgPSAke0NFUlRfSU5GT19FTUFJTH1cbkVPRlxuXG5jYXQgPDxFT0YgPiBcIiQoY2F0IC90bXAvY2VydF9zY3JpcHRfcGF0aClcIlxubWtkaXIgLXAgXCIkKGNhdCAvdG1wL2NlcnRzX2Rpcl9wYXRoKVwiICYmIGNkIFwiJChjYXQgL3RtcC9jZXJ0c19kaXJfcGF0aClcIlxuXG5vcGVuc3NsIGdlbnJzYSAtb3V0IHByaXZhdGUua2V5IDIwNDhcblxub3BlbnNzbCByZXEgXFxcbiAgLW5ldyBcXFxuICAteDUwOSBcXFxuICAta2V5IHByaXZhdGUua2V5IFxcXG4gIC1vdXQgY2VydGlmaWNhdGUuY3J0IFxcXG4gIC1kYXlzICR7Q0VSVF9WQUxJRF9EQVlTfSBcXFxuICAtY29uZmlnIC90bXAvY2VydF9pbmZvX3BhdGhcblxub3BlbnNzbCBwa2NzMTIgXFxcbiAgLWV4cG9ydCBcXFxuICAtb3V0IGNlcnRpZmljYXRlLnAxMiBcXFxuICAtaW5rZXkgcHJpdmF0ZS5rZXkgXFxcbiAgLWluIGNlcnRpZmljYXRlLmNydCBcXFxuICAtbGVnYWN5IFxcXG4gIC1wYXNzd29yZCBmaWxlOi90bXAvY2VydF9wYXNzXG5FT0ZcbmNobW9kICt4IFwiJChjYXQgL3RtcC9jZXJ0X3NjcmlwdF9wYXRoKVwiXG5cbnNoIFwiJChjYXQgL3RtcC9jZXJ0X3NjcmlwdF9wYXRoKVwiXG5cbi4vc3RhcnQuc2hcbiIKICBkYXRhYmFzZToKICAgIGltYWdlOiAncG9zdGdyZXM6MTcnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LWRvY3VtZW5zby1kYn0nCiAgICB2b2x1bWVzOgogICAgICAtICdkb2N1bWVuc29fcG9zdGdyZXNxbF9kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "signing",
+ "opensource",
+ "document",
+ "pdf",
+ "e-signature",
+ "digital-signature",
+ "document-signing",
+ "pdf-signing",
+ "docusign"
+ ],
+ "logo": "svgs/documenso.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "docuseal-with-postgres": {
+ "documentation": "https://www.docuseal.co/?utm_source=coolify.io",
+ "slogan": "Document Signing for Everyone free forever for individuals, extensible for businesses and developers. Open Source Alternative to DocuSign, PandaDoc and more.",
+ "compose": "c2VydmljZXM6CiAgZG9jdXNlYWw6CiAgICBpbWFnZTogJ2RvY3VzZWFsL2RvY3VzZWFsOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0RPQ1VTRUFMXzMwMDAKICAgICAgLSAnSE9TVD0ke1NFUlZJQ0VfVVJMX0RPQ1VTRUFMfScKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzcWw6Ly8kU0VSVklDRV9VU0VSX1BPU1RHUkVTOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQHBvc3RncmVzcWw6NTQzMi8ke1BPU1RHUkVTX0RCfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2RvY3VzZWFsLWRhdGE6L2RhdGEnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy1xJwogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBvc3RncmVzcWw6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1kb2N1c2VhbH0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "documentation"
+ ],
+ "logo": "svgs/docuseal.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "docuseal": {
+ "documentation": "https://www.docuseal.co/?utm_source=coolify.io",
+ "slogan": "Document Signing for Everyone free forever for individuals, extensible for businesses and developers. Open Source Alternative to DocuSign, PandaDoc and more.",
+ "compose": "c2VydmljZXM6CiAgZG9jdXNlYWw6CiAgICBpbWFnZTogJ2RvY3VzZWFsL2RvY3VzZWFsOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0RPQ1VTRUFMXzMwMDAKICAgICAgLSAnSE9TVD0ke1NFUlZJQ0VfVVJMX0RPQ1VTRUFMfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2RvY3VzZWFsLWRhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy1xJwogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "documentation"
+ ],
+ "logo": "svgs/docuseal.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "dokuwiki": {
+ "documentation": "https://www.dokuwiki.org/?utm_source=coolify.io",
+ "slogan": "A lightweight and easy-to-use wiki platform for creating and managing documentation and knowledge bases.",
+ "compose": "c2VydmljZXM6CiAgZG9rdXdpa2k6CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvZG9rdXdpa2k6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfRE9LVVdJS0kKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSBUWj1FdXJvcGUvTWFkcmlkCiAgICB2b2x1bWVzOgogICAgICAtICdkb2t1d2lraS1jb25maWc6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "wiki",
+ "documentation",
+ "knowledge",
+ "base"
+ ],
+ "logo": "svgs/dokuwiki.png",
+ "minversion": "0.0.0"
+ },
+ "dolibarr": {
+ "documentation": "https://www.dolibarr.org/documentation-home.php?utm_source=coolify.io",
+ "slogan": "Dolibarr is a modern software package to manage your organization's activity (contacts, quotes, invoices, orders, stocks, agenda, hr, expense reports, accountancy, ecm, manufacturing, ...).",
+ "compose": "c2VydmljZXM6CiAgZG9saWJhcnI6CiAgICBpbWFnZTogJ2RvbGliYXJyL2RvbGliYXJyOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0RPTElCQVJSXzgwCiAgICAgIC0gJ1dXV19VU0VSX0lEPSR7V1dXX1VTRVJfSUQ6LTEwMDB9JwogICAgICAtICdXV1dfR1JPVVBfSUQ9JHtXV1dfR1JPVVBfSUQ6LTEwMDB9JwogICAgICAtIERPTElfREJfSE9TVD1tYXJpYWRiCiAgICAgIC0gJ0RPTElfREJfTkFNRT0ke01ZU1FMX0RBVEFCQVNFOi1kb2xpYmFyci1kYn0nCiAgICAgIC0gJ0RPTElfREJfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ0RPTElfREJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMfScKICAgICAgLSAnRE9MSV9VUkxfUk9PVD0ke1NFUlZJQ0VfVVJMX0RPTElCQVJSfScKICAgICAgLSAnRE9MSV9BRE1JTl9MT0dJTj0ke1NFUlZJQ0VfVVNFUl9ET0xJQkFSUn0nCiAgICAgIC0gJ0RPTElfQURNSU5fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0RPTElCQVJSfScKICAgICAgLSAnRE9MSV9DUk9OPSR7RE9MSV9DUk9OOi0wfScKICAgICAgLSAnRE9MSV9JTklUX0RFTU89JHtET0xJX0lOSVRfREVNTzotMH0nCiAgICAgIC0gJ0RPTElfQ09NUEFOWV9OQU1FPSR7RE9MSV9DT01QQU5ZX05BTUU6LU15QmlnQ29tcGFueX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBtYXJpYWRiOgogICAgaW1hZ2U6ICdtYXJpYWRiOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdNWVNRTF9EQVRBQkFTRT0ke01ZU1FMX0RBVEFCQVNFOi1kb2xpYmFyci1kYn0nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgICAtICdNWVNRTF9ST09UX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9ST09UfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2RvbGliYXJyX21hcmlhZGJfZGF0YTovdmFyL2xpYi9teXNxbCcKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBoZWFsdGhjaGVjay5zaAogICAgICAgIC0gJy0tY29ubmVjdCcKICAgICAgICAtICctLWlubm9kYl9pbml0aWFsaXplZCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "crm",
+ "erp"
+ ],
+ "logo": "svgs/dolibarr.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "dozzle-with-auth": {
+ "documentation": "https://dozzle.dev/?utm_source=coolify.io",
+ "slogan": "Dozzle is a simple and lightweight web UI for Docker logs.",
+ "compose": "c2VydmljZXM6CiAgZG96emxlOgogICAgaW1hZ2U6ICdhbWlyMjAvZG96emxlOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0RPWlpMRV84MDgwCiAgICAgIC0gRE9aWkxFX0FVVEhfUFJPVklERVI9c2ltcGxlCiAgICB2b2x1bWVzOgogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaycKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vZGF0YS91c2Vycy55bWwKICAgICAgICB0YXJnZXQ6ICcvZGF0YS91c2Vycy55bWw6cm8nCiAgICAgICAgY29udGVudDogInVzZXJzOlxuICAjIFwiYWRtaW5cIiBpcyB0aGUgdXNlcm5hbWVcbiAgYWRtaW46XG4gICAgZW1haWw6IHRlc3RAZW1haWwuY29tXG4gICAgbmFtZTogQWRtaW5cbiAgICAjIEEgc2hhLTI1NiBoYXNoIG9mIHRoZSBwYXNzd29yZCB5b3Ugd2FudCB0byB1c2UuIENhbiBiZSBjb21wdXRlZCB3aXRoIFwiZWNobyAtbiBwYXNzd29yZCB8IHNoYXN1bSAtYSAyNTZcIi4gRGVmYXVsdCBwYXNzd29yZCBpcyBcIlRlc3RcIi5cbiAgICBwYXNzd29yZDogJDJhJDExJHZpdWNDdkZMbEhXdkJOT09JNnV5cHVWVS5EMDlVV2IuenN3UnhFZzBNa0RQaTFxL2JLYmRHXG4iCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gL2RvenpsZQogICAgICAgIC0gaGVhbHRoY2hlY2sKICAgICAgaW50ZXJ2YWw6IDNzCiAgICAgIHRpbWVvdXQ6IDMwcwogICAgICByZXRyaWVzOiA1Cg==",
+ "tags": [
+ "dozzle",
+ "docker",
+ "logs",
+ "web-ui"
+ ],
+ "logo": "svgs/dozzle.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "dozzle": {
+ "documentation": "https://dozzle.dev/guide/getting-started#running-with-docker?utm_source=coolify.io",
+ "slogan": "Dozzle is a simple and lightweight web UI for Docker logs.",
+ "compose": "c2VydmljZXM6CiAgZG96emxlOgogICAgaW1hZ2U6ICdhbWlyMjAvZG96emxlOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0RPWlpMRV84MDgwCiAgICB2b2x1bWVzOgogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSAvZG96emxlCiAgICAgICAgLSBoZWFsdGhjaGVjawogICAgICBpbnRlcnZhbDogM3MKICAgICAgdGltZW91dDogMzBzCiAgICAgIHJldHJpZXM6IDUKICAgICAgc3RhcnRfcGVyaW9kOiAzMHMK",
+ "tags": [
+ "dozzle",
+ "docker",
+ "logs",
+ "web-ui"
+ ],
+ "logo": "svgs/dozzle.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "drizzle-gateway": {
+ "documentation": "https://gateway.drizzle.team/?utm_source=coolify.io",
+ "slogan": "Free self-hosted Drizzle Studio on steroids",
+ "compose": "c2VydmljZXM6CiAgZHJpenpsZS1nYXRld2F5OgogICAgaW1hZ2U6ICdnaGNyLmlvL2RyaXp6bGUtdGVhbS9nYXRld2F5OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0RSSVpaTEVfNDk4MwogICAgICAtIFNUT1JFX1BBVEg9L2FwcAogICAgICAtIE1BU1RFUlBBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfRFJJWlpMRQogICAgdm9sdW1lczoKICAgICAgLSAnZHJpenpsZS1nYXRld2F5LWRhdGE6L2FwcCcK",
+ "tags": [
+ "drizzle",
+ "gateway",
+ "self-hosted",
+ "open-source",
+ "low-code"
+ ],
+ "logo": "svgs/drizzle.jpeg",
+ "minversion": "0.0.0",
+ "port": "4983"
+ },
+ "drupal-with-postgresql": {
+ "documentation": "https://www.drupal.org/about?utm_source=coolify.io",
+ "slogan": "Drupal is a free and open-source web content management system written in PHP and distributed under the GNU General Public License.",
+ "compose": "c2VydmljZXM6CiAgZHJ1cGFsOgogICAgaW1hZ2U6ICdkcnVwYWw6MTAtYXBhY2hlJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfRFJVUEFMCiAgICAgIC0gREJfSE9TVD1wb3N0Z3JlcwogICAgICAtIERCX05BTUU9cG9zdGdyZXMKICAgICAgLSBEQl9VU0VSPXBvc3RncmVzCiAgICAgIC0gREJfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgIHZvbHVtZXM6CiAgICAgIC0KICAgICAgICB0eXBlOiB2b2x1bWUKICAgICAgICBzb3VyY2U6IGRydXBhbF9tb2R1bGVzCiAgICAgICAgdGFyZ2V0OiAvdmFyL3d3dy9odG1sL21vZHVsZXMKICAgICAgICBpc19kaXJlY3Rvcnk6IHRydWUKICAgICAgLQogICAgICAgIHR5cGU6IHZvbHVtZQogICAgICAgIHNvdXJjZTogZHJ1cGFsX3Byb2ZpbGVzCiAgICAgICAgdGFyZ2V0OiAvdmFyL3d3dy9odG1sL3Byb2ZpbGVzCiAgICAgICAgaXNfZGlyZWN0b3J5OiB0cnVlCiAgICAgIC0KICAgICAgICB0eXBlOiB2b2x1bWUKICAgICAgICBzb3VyY2U6IGRydXBhbF90aGVtZXMKICAgICAgICB0YXJnZXQ6IC92YXIvd3d3L2h0bWwvdGhlbWVzCiAgICAgICAgaXNfZGlyZWN0b3J5OiB0cnVlCiAgICAgIC0KICAgICAgICB0eXBlOiB2b2x1bWUKICAgICAgICBzb3VyY2U6IGRydXBhbF9zaXRlcwogICAgICAgIHRhcmdldDogL3Zhci93d3cvaHRtbC9zaXRlcwogICAgICAgIGlzX2RpcmVjdG9yeTogdHJ1ZQogICAgZGVwZW5kc19vbjoKICAgICAgLSBwb3N0Z3JlcwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdjdXJsIC1mIGh0dHA6Ly9sb2NhbGhvc3Q6ODAgfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiA1CiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfREI9cG9zdGdyZXMKICAgICAgLSBQT1NUR1JFU19VU0VSPXBvc3RncmVzCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMjAK",
+ "tags": [
+ "cms",
+ "blog",
+ "content",
+ "management",
+ "postgresql"
+ ],
+ "logo": "svgs/drupal.svg",
+ "minversion": "0.0.0"
+ },
+ "duplicati": {
+ "documentation": "https://duplicati.readthedocs.io?utm_source=coolify.io",
+ "slogan": "Duplicati is a backup solution, allowing you to make scheduled backups with encryption.",
+ "compose": "c2VydmljZXM6CiAgZHVwbGljYXRpOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL2R1cGxpY2F0aTpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9EVVBMSUNBVElfODIwMAogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtICdUWj0ke1RaOi1FdXJvcGUvTG9uZG9ufScKICAgICAgLSAnU0VUVElOR1NfRU5DUllQVElPTl9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX0VOQ1JZUFR9JwogICAgICAtICdEVVBMSUNBVElfX1dFQlNFUlZJQ0VfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1dFQn0nCiAgICB2b2x1bWVzOgogICAgICAtICdkdXBsaWNhdGktY29uZmlnOi9jb25maWcnCiAgICAgIC0gJ2R1cGxpY2F0aS1iYWNrdXBzOi9iYWNrdXBzJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgyMDAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUK",
+ "tags": [
+ "backup",
+ "encryption"
+ ],
+ "logo": "svgs/duplicati.webp",
+ "minversion": "0.0.0",
+ "port": "8200"
+ },
+ "easyappointments": {
+ "documentation": "https://easyappointments.org/?utm_source=coolify.io",
+ "slogan": "Schedule Anything. Let's start with easy! Get the best free online appointment scheduler on your server, today.",
+ "compose": "c2VydmljZXM6CiAgZWFzeWFwcG9pbnRtZW50czoKICAgIGltYWdlOiAnYWxleHRzZWxlZ2lkaXMvZWFzeWFwcG9pbnRtZW50czpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9FQVNZQVBQT0lOVE1FTlRTXzgwCiAgICAgIC0gJ0JBU0VfVVJMPSR7U0VSVklDRV9VUkxfRUFTWUFQUE9JTlRNRU5UU30nCiAgICAgIC0gREJfSE9TVD1teXNxbAogICAgICAtIERCX05BTUU9ZWFzeWFwcG9pbnRtZW50cwogICAgICAtIERCX1VTRVJOQU1FPXJvb3QKICAgICAgLSAnREJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0VBU1lBUFBPSU5UTUVOVFN9JwogICAgZGVwZW5kc19vbjoKICAgICAgLSBteXNxbAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMwCiAgbXlzcWw6CiAgICBpbWFnZTogJ215c3FsOjgnCiAgICB2b2x1bWVzOgogICAgICAtICdlYXN5YXBwb2ludG1lbnRzLW15c3FsLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfRUFTWUFQUE9JTlRNRU5UU30nCiAgICAgIC0gTVlTUUxfREFUQUJBU0U9ZWFzeWFwcG9pbnRtZW50cwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG15c3FsYWRtaW4KICAgICAgICAtIHBpbmcKICAgICAgICAtICctaCcKICAgICAgICAtIDEyNy4wLjAuMQogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "calendar",
+ "scheduling",
+ "database"
+ ],
+ "logo": "svgs/easyappointments.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "emby": {
+ "documentation": "https://emby.media/support/articles/Home.html?utm_source=coolify.io",
+ "slogan": "A media server software that allows you to organize, stream, and access your multimedia content effortlessly.",
+ "compose": "c2VydmljZXM6CiAgZW1ieToKICAgIGltYWdlOiAnbHNjci5pby9saW51eHNlcnZlci9lbWJ5OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0VNQllfODA5NgogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtIFRaPUV1cm9wZS9NYWRyaWQKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2VtYnktY29uZmlnOi9jb25maWcnCiAgICAgIC0gJ2VtYnktdHZzaG93czovdHZzaG93cycKICAgICAgLSAnZW1ieS1tb3ZpZXM6L21vdmllcycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDk2JwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "tags": [
+ "media",
+ "server",
+ "movies",
+ "tv",
+ "music"
+ ],
+ "logo": "svgs/emby.png",
+ "minversion": "0.0.0",
+ "port": "8096"
+ },
+ "embystat": {
+ "documentation": "https://github.com/mregni/EmbyStat?utm_source=coolify.io",
+ "slogan": "EmbyStat is a web analytics tool, designed to provide insight into website traffic and user behavior.",
+ "compose": "c2VydmljZXM6CiAgZW1ieXN0YXQ6CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvZW1ieXN0YXQ6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfRU1CWVNUQVRfNjU1NQogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtIFRaPUV1cm9wZS9NYWRyaWQKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2VtYnlzdGF0LWNvbmZpZzovY29uZmlnJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjY1NTUnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUK",
+ "tags": [
+ "media",
+ "server",
+ "movies",
+ "tv",
+ "music"
+ ],
+ "logo": "svgs/default.webp",
+ "minversion": "0.0.0",
+ "port": "6555"
+ },
+ "evolution-api": {
+ "documentation": "https://doc.evolution-api.com/v1/pt/get-started/introduction?utm_source=coolify.io",
+ "slogan": "Evolution API Installation with Postgres and Redis",
+ "compose": "dmVyc2lvbjogJzMuOCcKc2VydmljZXM6CiAgYXBpOgogICAgaW1hZ2U6ICdldm9hcGljbG91ZC9ldm9sdXRpb24tYXBpOmxhdGVzdCcKICAgIHJlc3RhcnQ6IGFsd2F5cwogICAgZGVwZW5kc19vbjoKICAgICAgLSByZWRpcwogICAgICAtIHBvc3RncmVzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9FVk9fODA4MAogICAgICAtIFNFUlZFUl9VUkw9JFNFUlZJQ0VfVVJMX0VWTwogICAgICAtICdEQl9UWVBFPSR7REJfVFlQRTotcG9zdGdyZXNkYn0nCiAgICAgIC0gJ0RCX1BPU1RHUkVTREJfREFUQUJBU0U9JHtQT1NUR1JFU19EQjotcG9zdGdyZXN9JwogICAgICAtICdEQl9QT1NUR1JFU0RCX0hPU1Q9JHtEQl9QT1NUR1JFU0RCX0hPU1Q6LXBvc3RncmVzfScKICAgICAgLSAnREJfUE9TVEdSRVNEQl9QT1JUPSR7REJfUE9TVEdSRVNEQl9QT1JUOi01NDMyfScKICAgICAgLSAnREJfUE9TVEdSRVNEQl9VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnREJfUE9TVEdSRVNEQl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdEQVRBQkFTRV9QUk9WSURFUj0ke0RBVEFCQVNFX1BST1ZJREVSOi1wb3N0Z3Jlc3FsfScKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzcWw6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREI6LXBvc3RncmVzfScKICAgICAgLSAnREFUQUJBU0VfQ09OTkVDVElPTl9VUkk9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHBvc3RncmVzOjU0MzIvJHtQT1NUR1JFU19EQjotcG9zdGdyZXN9JwogICAgICAtICdERUxfSU5TVEFOQ0U9JHtERUxfSU5TVEFOQ0U6LWZhbHNlfScKICAgICAgLSAnREFUQUJBU0VfU0FWRV9EQVRBX0lOU1RBTkNFPSR7REFUQUJBU0VfU0FWRV9EQVRBX0lOU1RBTkNFOi10cnVlfScKICAgICAgLSAnREFUQUJBU0VfU0FWRV9EQVRBX05FV19NRVNTQUdFPSR7REFUQUJBU0VfU0FWRV9EQVRBX05FV19NRVNTQUdFOi10cnVlfScKICAgICAgLSAnREFUQUJBU0VfU0FWRV9NRVNTQUdFX1VQREFURT0ke0RBVEFCQVNFX1NBVkVfTUVTU0FHRV9VUERBVEU6LXRydWV9JwogICAgICAtICdEQVRBQkFTRV9TQVZFX0RBVEFfQ09OVEFDVFM9JHtEQVRBQkFTRV9TQVZFX0RBVEFfQ09OVEFDVFM6LXRydWV9JwogICAgICAtICdEQVRBQkFTRV9TQVZFX0RBVEFfQ0hBVFM9JHtEQVRBQkFTRV9TQVZFX0RBVEFfQ0hBVFM6LXRydWV9JwogICAgICAtICdEQVRBQkFTRV9TQVZFX0RBVEFfTEFCRUxTPSR7REFUQUJBU0VfU0FWRV9EQVRBX0xBQkVMUzotdHJ1ZX0nCiAgICAgIC0gJ0RBVEFCQVNFX1NBVkVfREFUQV9ISVNUT1JJQz0ke0RBVEFCQVNFX1NBVkVfREFUQV9ISVNUT1JJQzotdHJ1ZX0nCiAgICAgIC0gJ0RBVEFCQVNFX0NPTk5FQ1RJT05fQ0xJRU5UX05BTUU9JHtEQVRBQkFTRV9DT05ORUNUSU9OX0NMSUVOVF9OQU1FOi1ldm9sdXRpb25fdjJ9JwogICAgICAtICdSQUJCSVRNUV9FTkFCTEVEPSR7UkFCQklUTVFfRU5BQkxFRDotZmFsc2V9JwogICAgICAtICdSQUJCSVRNUV9VUkk9JHtSQUJCSVRNUV9VUkk6LWFtcXA6Ly9hZG1pbjphZG1pbkByYWJiaXRtcTo1NjcyL2RlZmF1bHR9JwogICAgICAtICdSQUJCSVRNUV9FWENIQU5HRV9OQU1FPSR7UkFCQklUTVFfRVhDSEFOR0VfTkFNRTotZXZvbHV0aW9uX3YyfScKICAgICAgLSAnUkFCQklUTVFfR0xPQkFMX0VOQUJMRUQ9JHtSQUJCSVRNUV9HTE9CQUxfRU5BQkxFRDotZmFsc2V9JwogICAgICAtICdSQUJCSVRNUV9FVkVOVFNfQVBQTElDQVRJT05fU1RBUlRVUD0ke1JBQkJJVE1RX0VWRU5UU19BUFBMSUNBVElPTl9TVEFSVFVQOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19JTlNUQU5DRV9DUkVBVEU9JHtSQUJCSVRNUV9FVkVOVFNfSU5TVEFOQ0VfQ1JFQVRFOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19JTlNUQU5DRV9ERUxFVEU9JHtSQUJCSVRNUV9FVkVOVFNfSU5TVEFOQ0VfREVMRVRFOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19RUkNPREVfVVBEQVRFRD0ke1JBQkJJVE1RX0VWRU5UU19RUkNPREVfVVBEQVRFRDotZmFsc2V9JwogICAgICAtICdSQUJCSVRNUV9FVkVOVFNfTUVTU0FHRVNfU0VUPSR7UkFCQklUTVFfRVZFTlRTX01FU1NBR0VTX1NFVDotZmFsc2V9JwogICAgICAtICdSQUJCSVRNUV9FVkVOVFNfTUVTU0FHRVNfVVBTRVJUPSR7UkFCQklUTVFfRVZFTlRTX01FU1NBR0VTX1VQU0VSVDotdHJ1ZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19NRVNTQUdFU19FRElURUQ9JHtSQUJCSVRNUV9FVkVOVFNfTUVTU0FHRVNfRURJVEVEOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19NRVNTQUdFU19VUERBVEU9JHtSQUJCSVRNUV9FVkVOVFNfTUVTU0FHRVNfVVBEQVRFOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19NRVNTQUdFU19ERUxFVEU9JHtSQUJCSVRNUV9FVkVOVFNfTUVTU0FHRVNfREVMRVRFOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19TRU5EX01FU1NBR0U9JHtSQUJCSVRNUV9FVkVOVFNfU0VORF9NRVNTQUdFOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19DT05UQUNUU19TRVQ9JHtSQUJCSVRNUV9FVkVOVFNfQ09OVEFDVFNfU0VUOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19DT05UQUNUU19VUFNFUlQ9JHtSQUJCSVRNUV9FVkVOVFNfQ09OVEFDVFNfVVBTRVJUOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19DT05UQUNUU19VUERBVEU9JHtSQUJCSVRNUV9FVkVOVFNfQ09OVEFDVFNfVVBEQVRFOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19QUkVTRU5DRV9VUERBVEU9JHtSQUJCSVRNUV9FVkVOVFNfUFJFU0VOQ0VfVVBEQVRFOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19DSEFUU19TRVQ9JHtSQUJCSVRNUV9FVkVOVFNfQ0hBVFNfU0VUOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19DSEFUU19VUFNFUlQ9JHtSQUJCSVRNUV9FVkVOVFNfQ0hBVFNfVVBTRVJUOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19DSEFUU19VUERBVEU9JHtSQUJCSVRNUV9FVkVOVFNfQ0hBVFNfVVBEQVRFOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19DSEFUU19ERUxFVEU9JHtSQUJCSVRNUV9FVkVOVFNfQ0hBVFNfREVMRVRFOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19HUk9VUFNfVVBTRVJUPSR7UkFCQklUTVFfRVZFTlRTX0dST1VQU19VUFNFUlQ6LWZhbHNlfScKICAgICAgLSAnUkFCQklUTVFfRVZFTlRTX0dST1VQX1VQREFURT0ke1JBQkJJVE1RX0VWRU5UU19HUk9VUF9VUERBVEU6LWZhbHNlfScKICAgICAgLSAnUkFCQklUTVFfRVZFTlRTX0dST1VQX1BBUlRJQ0lQQU5UU19VUERBVEU9JHtSQUJCSVRNUV9FVkVOVFNfR1JPVVBfUEFSVElDSVBBTlRTX1VQREFURTotZmFsc2V9JwogICAgICAtICdSQUJCSVRNUV9FVkVOVFNfQ09OTkVDVElPTl9VUERBVEU9JHtSQUJCSVRNUV9FVkVOVFNfQ09OTkVDVElPTl9VUERBVEU6LXRydWV9JwogICAgICAtICdSQUJCSVRNUV9FVkVOVFNfQ0FMTD0ke1JBQkJJVE1RX0VWRU5UU19DQUxMOi1mYWxzZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0VWRU5UU19UWVBFQk9UX1NUQVJUPSR7UkFCQklUTVFfRVZFTlRTX1RZUEVCT1RfU1RBUlQ6LWZhbHNlfScKICAgICAgLSAnUkFCQklUTVFfRVZFTlRTX1RZUEVCT1RfQ0hBTkdFX1NUQVRVUz0ke1JBQkJJVE1RX0VWRU5UU19UWVBFQk9UX0NIQU5HRV9TVEFUVVM6LWZhbHNlfScKICAgICAgLSAnU1FTX0VOQUJMRUQ9JHtTUVNfRU5BQkxFRDotZmFsc2V9JwogICAgICAtICdTUVNfQUNDRVNTX0tFWV9JRD0ke1NRU19BQ0NFU1NfS0VZX0lEOi19JwogICAgICAtICdTUVNfU0VDUkVUX0FDQ0VTU19LRVk9JHtTUVNfU0VDUkVUX0FDQ0VTU19LRVk6LX0nCiAgICAgIC0gJ1NRU19BQ0NPVU5UX0lEPSR7U1FTX0FDQ09VTlRfSUQ6LX0nCiAgICAgIC0gJ1NRU19SRUdJT049JHtTUVNfUkVHSU9OOi19JwogICAgICAtICdXRUJTT0NLRVRfRU5BQkxFRD0ke1dFQlNPQ0tFVF9FTkFCTEVEOi1mYWxzZX0nCiAgICAgIC0gJ1dFQlNPQ0tFVF9HTE9CQUxfRVZFTlRTPSR7V0VCU09DS0VUX0dMT0JBTF9FVkVOVFM6LWZhbHNlfScKICAgICAgLSAnV0FfQlVTSU5FU1NfVE9LRU5fV0VCSE9PSz0ke1dBX0JVU0lORVNTX1RPS0VOX1dFQkhPT0s6LWV2b2x1dGlvbn0nCiAgICAgIC0gJ1dBX0JVU0lORVNTX1VSTD0ke1dBX0JVU0lORVNTX1VSTDotaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb219JwogICAgICAtICdXQV9CVVNJTkVTU19WRVJTSU9OPSR7V0FfQlVTSU5FU1NfVkVSU0lPTjotdjIwLjB9JwogICAgICAtICdXQV9CVVNJTkVTU19MQU5HVUFHRT0ke1dBX0JVU0lORVNTX0xBTkdVQUdFOi1wdF9CUn0nCiAgICAgIC0gIldFQkhPT0tfR0xPQkFMX1VSTD0ke1dFQkhPT0tfR0xPQkFMX1VSTDotJyd9IgogICAgICAtICdXRUJIT09LX0dMT0JBTF9FTkFCTEVEPSR7V0VCSE9PS19HTE9CQUxfRU5BQkxFRDotZmFsc2V9JwogICAgICAtICdXRUJIT09LX0dMT0JBTF9XRUJIT09LX0JZX0VWRU5UUz0ke1dFQkhPT0tfR0xPQkFMX1dFQkhPT0tfQllfRVZFTlRTOi1mYWxzZX0nCiAgICAgIC0gJ1dFQkhPT0tfRVZFTlRTX0FQUExJQ0FUSU9OX1NUQVJUVVA9JHtXRUJIT09LX0VWRU5UU19BUFBMSUNBVElPTl9TVEFSVFVQOi1mYWxzZX0nCiAgICAgIC0gJ1dFQkhPT0tfRVZFTlRTX1FSQ09ERV9VUERBVEVEPSR7V0VCSE9PS19FVkVOVFNfUVJDT0RFX1VQREFURUQ6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19NRVNTQUdFU19TRVQ9JHtXRUJIT09LX0VWRU5UU19NRVNTQUdFU19TRVQ6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19NRVNTQUdFU19VUFNFUlQ9JHtXRUJIT09LX0VWRU5UU19NRVNTQUdFU19VUFNFUlQ6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19NRVNTQUdFU19FRElURUQ9JHtXRUJIT09LX0VWRU5UU19NRVNTQUdFU19FRElURUQ6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19NRVNTQUdFU19VUERBVEU9JHtXRUJIT09LX0VWRU5UU19NRVNTQUdFU19VUERBVEU6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19NRVNTQUdFU19ERUxFVEU9JHtXRUJIT09LX0VWRU5UU19NRVNTQUdFU19ERUxFVEU6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19TRU5EX01FU1NBR0U9JHtXRUJIT09LX0VWRU5UU19TRU5EX01FU1NBR0U6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19DT05UQUNUU19TRVQ9JHtXRUJIT09LX0VWRU5UU19DT05UQUNUU19TRVQ6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19DT05UQUNUU19VUFNFUlQ9JHtXRUJIT09LX0VWRU5UU19DT05UQUNUU19VUFNFUlQ6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19DT05UQUNUU19VUERBVEU9JHtXRUJIT09LX0VWRU5UU19DT05UQUNUU19VUERBVEU6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19QUkVTRU5DRV9VUERBVEU9JHtXRUJIT09LX0VWRU5UU19QUkVTRU5DRV9VUERBVEU6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19DSEFUU19TRVQ9JHtXRUJIT09LX0VWRU5UU19DSEFUU19TRVQ6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19DSEFUU19VUFNFUlQ9JHtXRUJIT09LX0VWRU5UU19DSEFUU19VUFNFUlQ6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19DSEFUU19VUERBVEU9JHtXRUJIT09LX0VWRU5UU19DSEFUU19VUERBVEU6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19DSEFUU19ERUxFVEU9JHtXRUJIT09LX0VWRU5UU19DSEFUU19ERUxFVEU6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19HUk9VUFNfVVBTRVJUPSR7V0VCSE9PS19FVkVOVFNfR1JPVVBTX1VQU0VSVDotdHJ1ZX0nCiAgICAgIC0gJ1dFQkhPT0tfRVZFTlRTX0dST1VQU19VUERBVEU9JHtXRUJIT09LX0VWRU5UU19HUk9VUFNfVVBEQVRFOi10cnVlfScKICAgICAgLSAnV0VCSE9PS19FVkVOVFNfR1JPVVBfUEFSVElDSVBBTlRTX1VQREFURT0ke1dFQkhPT0tfRVZFTlRTX0dST1VQX1BBUlRJQ0lQQU5UU19VUERBVEU6LXRydWV9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19DT05ORUNUSU9OX1VQREFURT0ke1dFQkhPT0tfRVZFTlRTX0NPTk5FQ1RJT05fVVBEQVRFOi10cnVlfScKICAgICAgLSAnV0VCSE9PS19FVkVOVFNfTEFCRUxTX0VESVQ9JHtXRUJIT09LX0VWRU5UU19MQUJFTFNfRURJVDotdHJ1ZX0nCiAgICAgIC0gJ1dFQkhPT0tfRVZFTlRTX0xBQkVMU19BU1NPQ0lBVElPTj0ke1dFQkhPT0tfRVZFTlRTX0xBQkVMU19BU1NPQ0lBVElPTjotdHJ1ZX0nCiAgICAgIC0gJ1dFQkhPT0tfRVZFTlRTX0NBTEw9JHtXRUJIT09LX0VWRU5UU19DQUxMOi10cnVlfScKICAgICAgLSAnV0VCSE9PS19FVkVOVFNfVFlQRUJPVF9TVEFSVD0ke1dFQkhPT0tfRVZFTlRTX1RZUEVCT1RfU1RBUlQ6LWZhbHNlfScKICAgICAgLSAnV0VCSE9PS19FVkVOVFNfVFlQRUJPVF9DSEFOR0VfU1RBVFVTPSR7V0VCSE9PS19FVkVOVFNfVFlQRUJPVF9DSEFOR0VfU1RBVFVTOi1mYWxzZX0nCiAgICAgIC0gJ1dFQkhPT0tfRVZFTlRTX0VSUk9SUz0ke1dFQkhPT0tfRVZFTlRTX0VSUk9SUzotZmFsc2V9JwogICAgICAtICdXRUJIT09LX0VWRU5UU19FUlJPUlNfV0VCSE9PSz0ke1dFQkhPT0tfRVZFTlRTX0VSUk9SU19XRUJIT09LOi19JwogICAgICAtICdDT05GSUdfU0VTU0lPTl9QSE9ORV9DTElFTlQ9JHtDT05GSUdfU0VTU0lPTl9QSE9ORV9DTElFTlQ6LUV2b2x1dGlvbiBBUEkgVjJ9JwogICAgICAtICdDT05GSUdfU0VTU0lPTl9QSE9ORV9OQU1FPSR7Q09ORklHX1NFU1NJT05fUEhPTkVfTkFNRTotQ2hyb21lfScKICAgICAgLSAnUVJDT0RFX0xJTUlUPSR7UVJDT0RFX0xJTUlUOi0zMH0nCiAgICAgIC0gJ09QRU5BSV9FTkFCTEVEPSR7T1BFTkFJX0VOQUJMRUQ6LXRydWV9JwogICAgICAtICdESUZZX0VOQUJMRUQ9JHtESUZZX0VOQUJMRUQ6LXRydWV9JwogICAgICAtICdGTE9XSVNFX0VOQUJMRUQ9JHtGTE9XSVNFX0VOQUJMRUQ6LXRydWV9JwogICAgICAtICdOOE5fRU5BQkxFRD0ke044Tl9FTkFCTEVEOi10cnVlfScKICAgICAgLSAnVFlQRUJPVF9FTkFCTEVEPSR7VFlQRUJPVF9FTkFCTEVEOi10cnVlfScKICAgICAgLSAnVFlQRUJPVF9BUElfVkVSU0lPTj0ke1RZUEVCT1RfQVBJX1ZFUlNJT046LWxhdGVzdH0nCiAgICAgIC0gJ0NIQVRXT09UX0VOQUJMRUQ9JHtDSEFUV09PVF9FTkFCTEVEOi10cnVlfScKICAgICAgLSAnQ0hBVFdPT1RfTUVTU0FHRV9SRUFEPSR7Q0hBVFdPT1RfTUVTU0FHRV9SRUFEOi10cnVlfScKICAgICAgLSAnQ0hBVFdPT1RfTUVTU0FHRV9ERUxFVEU9JHtDSEFUV09PVF9NRVNTQUdFX0RFTEVURTotdHJ1ZX0nCiAgICAgIC0gJ0NIQVRXT09UX0lNUE9SVF9EQVRBQkFTRV9DT05ORUNUSU9OX1VSST1wb3N0Z3Jlc3FsOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1jaGF0d29vdH0nCiAgICAgIC0gJ0NIQVRXT09UX0lNUE9SVF9QTEFDRUhPTERFUl9NRURJQV9NRVNTQUdFPSR7Q0hBVFdPT1RfSU1QT1JUX1BMQUNFSE9MREVSX01FRElBX01FU1NBR0U6LXRydWV9JwogICAgICAtICdDQUNIRV9SRURJU19FTkFCTEVEPSR7Q0FDSEVfUkVESVNfRU5BQkxFRDotdHJ1ZX0nCiAgICAgIC0gJ0NBQ0hFX1JFRElTX1VSST0ke0NBQ0hFX1JFRElTX1VSSTotcmVkaXM6Ly9yZWRpczo2Mzc5LzZ9JwogICAgICAtICdDQUNIRV9SRURJU19QUkVGSVhfS0VZPSR7Q0FDSEVfUkVESVNfUFJFRklYX0tFWTotZXZvbHV0aW9uX3YyfScKICAgICAgLSAnQ0FDSEVfUkVESVNfU0FWRV9JTlNUQU5DRVM9JHtDQUNIRV9SRURJU19TQVZFX0lOU1RBTkNFUzotZmFsc2V9JwogICAgICAtICdDQUNIRV9MT0NBTF9FTkFCTEVEPSR7Q0FDSEVfTE9DQUxfRU5BQkxFRDotZmFsc2V9JwogICAgICAtICdTM19FTkFCTEVEPSR7UzNfRU5BQkxFRDotZmFsc2V9JwogICAgICAtICdTM19BQ0NFU1NfS0VZPSR7UzNfQUNDRVNTX0tFWTotfScKICAgICAgLSAnUzNfU0VDUkVUX0tFWT0ke1MzX1NFQ1JFVF9LRVk6LX0nCiAgICAgIC0gJ1MzX0JVQ0tFVD0ke1MzX0JVQ0tFVDotZXZvbHV0aW9ufScKICAgICAgLSAnUzNfUE9SVD0ke1MzX1BPUlQ6LTQ0M30nCiAgICAgIC0gJ1MzX1JFR0lPTj0ke1MzX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgLSAnUzNfRU5EUE9JTlQ9JHtTM19FTkRQT0lOVDotZmlsZXMuc2l0ZS5jb219JwogICAgICAtICdTM19VU0VfU1NMPSR7UzNfVVNFX1NTTDotdHJ1ZX0nCiAgICAgIC0gJ0FVVEhFTlRJQ0FUSU9OX0FQSV9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX0FVVEhFTlRJQ0FUSU9OQVBJS0VZfScKICAgICAgLSAnQVVUSEVOVElDQVRJT05fRVhQT1NFX0lOX0ZFVENIX0lOU1RBTkNFUz0ke0FVVEhFTlRJQ0FUSU9OX0VYUE9TRV9JTl9GRVRDSF9JTlNUQU5DRVM6LXRydWV9JwogICAgICAtICdMQU5HVUFHRT0ke0xBTkdVQUdFOi1lbn0nCiAgICB2b2x1bWVzOgogICAgICAtICdldm9sdXRpb25faW5zdGFuY2VzOi9ldm9sdXRpb24vaW5zdGFuY2VzJwogICAgZXhwb3NlOgogICAgICAtIDgwODAKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6bGF0ZXN0JwogICAgY29tbWFuZDogInJlZGlzLXNlcnZlciAtLXBvcnQgNjM3OSAtLWFwcGVuZG9ubHkgeWVzXG4iCiAgICByZXN0YXJ0OiBhbHdheXMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2V2b2x1dGlvbl9yZWRpczovZGF0YScKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgY29tbWFuZDoKICAgICAgLSBwb3N0Z3JlcwogICAgICAtICctYycKICAgICAgLSBtYXhfY29ubmVjdGlvbnM9MTAwMAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1wb3N0Z3Jlc30nCiAgICAgIC0gJ0FVVEhFTlRJQ0FUSU9OX0FQSV9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX0FVVEhFTlRJQ0FUSU9OQVBJS0VZfScKICAgIHJlc3RhcnQ6IGFsd2F5cwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXNfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCnZvbHVtZXM6CiAgZXZvbHV0aW9uX2luc3RhbmNlczogbnVsbAogIGV2b2x1dGlvbl9yZWRpczogbnVsbAogIHBvc3RncmVzX2RhdGE6IG51bGwK",
+ "tags": [
+ "evolution-api",
+ "evo-api",
+ "evolution",
+ "whatsapp",
+ "api",
+ "postgres",
+ "redis"
+ ],
+ "logo": "svgs/evolution-api.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "excalidraw": {
+ "documentation": "https://docs.excalidraw.com/docs?utm_source=coolify.io",
+ "slogan": "Virtual whiteboard for sketching hand-drawn like diagrams",
+ "compose": "c2VydmljZXM6CiAgZXhjYWxpZHJhdzoKICAgIGltYWdlOiAnZXhjYWxpZHJhdy9leGNhbGlkcmF3OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0VYQ0FMSURSQVdfODAKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnLS1xdWlldCcKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0JwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "canvas",
+ "diagrams",
+ "drawing",
+ "productivity",
+ "whiteboard"
+ ],
+ "logo": "svgs/excalidraw.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "faraday": {
+ "documentation": "https://faradaysec.com/?utm_source=coolify.io",
+ "slogan": "Faraday is a powerful, open-source, web-based vulnerability management tool.",
+ "compose": "c2VydmljZXM6CiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnZmFyYWRheS1kYjovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTUUx9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1mYXJhZGF5fScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtZCAkJHtQT1NUR1JFU19EQn0gLVUgJCR7UE9TVEdSRVNfVVNFUn0nCiAgICAgIGludGVydmFsOiAxNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1CiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOmFscGluZScKICAgIGNvbW1hbmQ6ICctLXNhdmUgNjAgMSAtLWxvZ2xldmVsIHdhcm5pbmcnCiAgICB2b2x1bWVzOgogICAgICAtICdyZWRpczovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncmVkaXMtY2xpIHBpbmcgfCBncmVwIFBPTkcnCiAgICAgIGludGVydmFsOiAxNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1CiAgZmFyYWRheToKICAgIGltYWdlOiAnZmFyYWRheXNlYy9mYXJhZGF5OmxhdGVzdCcKICAgIGVudHJ5cG9pbnQ6IC9lbnRyeXBvaW50LnNoCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9GQVJBREFZXzU5ODUKICAgICAgLSAnQVVUSEVOVElLX1BPU1RHUkVTUUxfX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMfScKICAgICAgLSAnUEdTUUxfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMfScKICAgICAgLSAnUEdTUUxfUEFTU1dEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMfScKICAgICAgLSAnUEdTUUxfREJOQU1FPSR7UE9TVEdSRVNfREJ9JwogICAgICAtIFBHU1FMX0hPU1Q9cG9zdGdyZXNxbAogICAgICAtIFJFRElTX1NFUlZFUj1yZWRpcwogICAgdm9sdW1lczoKICAgICAgLSAnZmFyYWRheTovaG9tZS9mYXJhZGF5Ly5mYXJhZGF5OnJ3JwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG5jCiAgICAgICAgLSAnLXonCiAgICAgICAgLSBsb2NhbGhvc3QKICAgICAgICAtICc1OTg1JwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCg==",
+ "tags": [
+ "vulnerability",
+ "management",
+ "tool"
+ ],
+ "logo": "svgs/faraday.png",
+ "minversion": "0.0.0",
+ "port": "5985"
+ },
+ "fider": {
+ "documentation": "https://fider.io?utm_source=coolify.io",
+ "slogan": "Fider is a feedback platform for collecting and managing user feedback.",
+ "compose": "c2VydmljZXM6CiAgZmlkZXI6CiAgICBpbWFnZTogJ2dldGZpZGVyL2ZpZGVyOnN0YWJsZScKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0ZJREVSXzMwMDAKICAgICAgLSBCQVNFX1VSTD0kU0VSVklDRV9VUkxfRklERVJfMzAwMAogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8kU0VSVklDRV9VU0VSX1BPU1RHUkVTOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQGRhdGFiYXNlOjU0MzIvZmlkZXI/c3NsbW9kZT1kaXNhYmxlJwogICAgICAtIEpXVF9TRUNSRVQ9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfRklERVIKICAgICAgLSAnRU1BSUxfTk9SRVBMWT0ke0VNQUlMX05PUkVQTFk6LW5vcmVwbHlAZXhhbXBsZS5jb219JwogICAgICAtIEVNQUlMX01BSUxHVU5fQVBJPSRFTUFJTF9NQUlMR1VOX0FQSQogICAgICAtIEVNQUlMX01BSUxHVU5fRE9NQUlOPSRFTUFJTF9NQUlMR1VOX0RPTUFJTgogICAgICAtIEVNQUlMX01BSUxHVU5fUkVHSU9OPSRFTUFJTF9NQUlMR1VOX1JFR0lPTgogICAgICAtICdFTUFJTF9TTVRQX0hPU1Q9JHtFTUFJTF9TTVRQX0hPU1Q6LXNtdHAubWFpbGd1bi5jb219JwogICAgICAtICdFTUFJTF9TTVRQX1BPUlQ9JHtFTUFJTF9TTVRQX1BPUlQ6LTU4N30nCiAgICAgIC0gJ0VNQUlMX1NNVFBfVVNFUk5BTUU9JHtFTUFJTF9TTVRQX1VTRVJOQU1FOi1wb3N0bWFzdGVyQG1haWxndW4uY29tfScKICAgICAgLSBFTUFJTF9TTVRQX1BBU1NXT1JEPSRFTUFJTF9TTVRQX1BBU1NXT1JECiAgICAgIC0gRU1BSUxfU01UUF9FTkFCTEVfU1RBUlRUTFM9JEVNQUlMX1NNVFBfRU5BQkxFX1NUQVJUVExTCiAgICAgIC0gRU1BSUxfQVdTU0VTX1JFR0lPTj0kRU1BSUxfQVdTU0VTX1JFR0lPTgogICAgICAtIEVNQUlMX0FXU1NFU19BQ0NFU1NfS0VZX0lEPSRFTUFJTF9BV1NTRVNfQUNDRVNTX0tFWV9JRAogICAgICAtIEVNQUlMX0FXU1NFU19TRUNSRVRfQUNDRVNTX0tFWT0kRU1BSUxfQVdTU0VTX1NFQ1JFVF9BQ0NFU1NfS0VZCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gL2FwcC9maWRlcgogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDEwCiAgZGF0YWJhc2U6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjEyJwogICAgdm9sdW1lczoKICAgICAgLSAncGdfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1maWRlcn0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLWQgJCR7UE9TVEdSRVNfREJ9IC1VICQke1BPU1RHUkVTX1VTRVJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "feedback",
+ "user-feedback"
+ ],
+ "logo": "svgs/fider.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "filebrowser": {
+ "documentation": "https://filebrowser.org?utm_source=coolify.io",
+ "slogan": "FileBrowser is a web-based file manager and file explorer with a user-friendly interface.",
+ "compose": "c2VydmljZXM6CiAgZmlsZWJyb3dzZXI6CiAgICBpbWFnZTogJ2ZpbGVicm93c2VyL2ZpbGVicm93c2VyOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0ZJTEVCUk9XU0VSXzgwCiAgICB2b2x1bWVzOgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9zcnYKICAgICAgICB0YXJnZXQ6IC9zcnYKICAgICAgICBpc0RpcmVjdG9yeTogdHJ1ZQogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9kYXRhYmFzZS5kYgogICAgICAgIHRhcmdldDogL2RhdGFiYXNlLmRiCiAgICAgICAgaXNEaXJlY3Rvcnk6IGZhbHNlCiAgICAgICAgY29udGVudDogJycKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vZmlsZWJyb3dzZXIuanNvbgogICAgICAgIHRhcmdldDogLy5maWxlYnJvd3Nlci5qc29uCiAgICAgICAgcmVhZF9vbmx5OiB0cnVlCiAgICAgICAgY29udGVudDogIntcbiAgXCJhZGRyZXNzXCI6IFwiMC4wLjAuMFwiLFxuICBcInBvcnRcIjogODBcbn0iCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUK",
+ "tags": [
+ "file-management",
+ "storage-access",
+ "data-organization",
+ "file-utilization",
+ "administration-tool"
+ ],
+ "logo": "svgs/filebrowser.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "fileflows": {
+ "documentation": "https://fileflows.com/docs/?utm_source=coolify.io",
+ "slogan": "FileFlows can drastically reduce your files, up to 90%, saving you space and money. No need to buy more hard drives, just shrink your files and start saving.",
+ "compose": "c2VydmljZXM6CiAgZmlsZWZsb3dzOgogICAgaW1hZ2U6IHJldmVuei9maWxlZmxvd3MKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0ZJTEVGTE9XU181MDAwCiAgICAgIC0gX0FQUF9VUkw9JFNFUlZJQ0VfVVJMX0ZJTEVfRkxPV1MKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSAnVFo9JHtUWjotQW1lcmljYS9Ub3JvbnRvfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2ZpbGVmbG93c190ZW1wOi90ZW1wJwogICAgICAtICdmaWxlZmxvd3NfY29uZmlnczovYXBwL0RhdGEnCiAgICAgIC0gJ2ZpbGVmbG93c19sb2dzOi9hcHAvTG9ncycKICAgICAgLSAnZmlsZWZsb3dzX2NvbW1vbjovYXBwL2NvbW1vbicKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo1MDAwL2FwaS9zeXN0ZW0vdmVyc2lvbicKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "media",
+ "transcode",
+ "convert",
+ "h265"
+ ],
+ "logo": "svgs/fileflows.svg",
+ "minversion": "0.0.0",
+ "port": "5000"
+ },
+ "firefly": {
+ "documentation": "https://firefly-iii.org?utm_source=coolify.io",
+ "slogan": "A personal finances manager that can help you save money.",
+ "compose": "c2VydmljZXM6CiAgZmlyZWZseToKICAgIGltYWdlOiAnZmlyZWZseWlpaS9jb3JlOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0ZJUkVGTFlfODA4MAogICAgICAtIEFQUF9LRVk9JFNFUlZJQ0VfQkFTRTY0X0FQUEtFWQogICAgICAtIERCX0hPU1Q9bXlzcWwKICAgICAgLSBEQl9QT1JUPTMzMDYKICAgICAgLSBEQl9DT05ORUNUSU9OPW15c3FsCiAgICAgIC0gJ0RCX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LWZpcmVmbHl9JwogICAgICAtIERCX1VTRVJOQU1FPSRTRVJWSUNFX1VTRVJfTVlTUUwKICAgICAgLSBEQl9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NWVNRTAogICAgICAtIFNUQVRJQ19DUk9OX1RPS0VOPSRTRVJWSUNFX0JBU0U2NF9DUk9OVE9LRU4KICAgICAgLSAnVFJVU1RFRF9QUk9YSUVTPSonCiAgICB2b2x1bWVzOgogICAgICAtICdmaXJlZmx5LXVwbG9hZDovdmFyL3d3dy9odG1sL3N0b3JhZ2UvdXBsb2FkJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwODAnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICAgIGRlcGVuZHNfb246CiAgICAgIG15c3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgbXlzcWw6CiAgICBpbWFnZTogJ21hcmlhZGI6MTEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LWZpcmVmbHl9JwogICAgICAtICdNWVNRTF9ST09UX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTFJPT1R9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG1hcmlhZGItYWRtaW4KICAgICAgICAtIHBpbmcKICAgICAgICAtICctaCcKICAgICAgICAtIDEyNy4wLjAuMQogICAgICAgIC0gJy11cm9vdCcKICAgICAgICAtICctcCR7U0VSVklDRV9QQVNTV09SRF9NWVNRTFJPT1R9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgICB2b2x1bWVzOgogICAgICAtICdmaXJlZmx5LW15c3FsLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgY3JvbjoKICAgIGltYWdlOiBhbHBpbmUKICAgIGVudHJ5cG9pbnQ6CiAgICAgIC0gL2VudHJ5cG9pbnQuc2gKICAgIHZvbHVtZXM6CiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2VudHJ5cG9pbnQuc2gKICAgICAgICB0YXJnZXQ6IC9lbnRyeXBvaW50LnNoCiAgICAgICAgY29udGVudDogIiMhL2Jpbi9zaFxuIyBTdWJzdGl0dXRlIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbnRvIHRoZSBjcm9uIGNvbW1hbmRcbkNST05fQ09NTUFORD1cIjAgMyAqICogKiB3Z2V0IC1xTy0gaHR0cDovL2ZpcmVmbHk6ODA4MC9hcGkvdjEvY3Jvbi8ke1NUQVRJQ19DUk9OX1RPS0VOfVwiXG4jIEFkZCB0aGUgY3JvbiBjb21tYW5kIHRvIHRoZSBjcm9udGFiXG5lY2hvIFwiJENST05fQ09NTUFORFwiIHwgY3JvbnRhYiAtXG4jIFN0YXJ0IHRoZSBjcm9uIGRhZW1vbiBpbiB0aGUgZm9yZWdyb3VuZCB3aXRoIGxvZ2dpbmcgdG8gc3Rkb3V0XG5jcm9uZCAtZiAtTCAvZGV2L3N0ZG91dCIKICAgIGVudmlyb25tZW50OgogICAgICAtIFNUQVRJQ19DUk9OX1RPS0VOPSRTRVJWSUNFX0JBU0U2NF9DUk9OVE9LRU4KICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnbHMgL2VudHJ5cG9pbnQuc2ggfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgICAgIHN0YXJ0X3BlcmlvZDogNDBzCg==",
+ "tags": [
+ "finance",
+ "money",
+ "personal",
+ "manager"
+ ],
+ "logo": "svgs/firefly.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "firefox": {
+ "documentation": "https://github.com/jlesage/docker-firefox?utm_source=coolify.io",
+ "slogan": "Fast, private, and self-hosted secure browser for browsing without limits.",
+ "compose": "c2VydmljZXM6CiAgZmlyZWZveDoKICAgIGltYWdlOiBqbGVzYWdlL2ZpcmVmb3gKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0ZJUkVGT1hfNTgwMAogICAgdm9sdW1lczoKICAgICAgLSAnZmlyZWZveF9jb25maWc6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLXEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo1ODAwLycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "browser",
+ "web",
+ "privacy"
+ ],
+ "logo": "svgs/firefox.svg",
+ "minversion": "0.0.0",
+ "port": "5800"
+ },
+ "flipt": {
+ "documentation": "https://docs.flipt.io/cloud/overview?utm_source=coolify.io",
+ "slogan": "Flipt is a fully managed feature flag solution that enables you to keep your feature flags and remote config next to your code in Git.",
+ "compose": "c2VydmljZXM6CiAgZmxpcHQ6CiAgICBpbWFnZTogJ2RvY2tlci5mbGlwdC5pby9mbGlwdC9mbGlwdDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdmbGlwdC1kYXRhOi92YXIvb3B0L2ZsaXB0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfRkxJUFRfODA4MAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHdnZXQKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICctLXF1aWV0JwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "feature flags",
+ "devops",
+ "ci",
+ "cd"
+ ],
+ "logo": "svgs/flipt.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "flowise-with-databases": {
+ "documentation": "https://docs.flowiseai.com/?utm_source=coolify.io",
+ "slogan": "Flowise is an open source low-code tool for developers to build customized LLM orchestration flows & AI agents. Also deploys Redis, Postgres and other services.",
+ "compose": "c2VydmljZXM6CiAgZmxvd2lzZToKICAgIGltYWdlOiAnZmxvd2lzZWFpL2Zsb3dpc2U6bGF0ZXN0JwogICAgZGVwZW5kc19vbjoKICAgICAgcGctcmVjb3JkLW1hbmFnZXI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXMtY2FjaGU6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcWRyYW50OgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9GTE9XSVNFXzMwMDEKICAgICAgLSAnREVCVUc9JHtERUJVRzotZmFsc2V9JwogICAgICAtICdESVNBQkxFX0ZMT1dJU0VfVEVMRU1FVFJZPSR7RElTQUJMRV9GTE9XSVNFX1RFTEVNRVRSWTotdHJ1ZX0nCiAgICAgIC0gJ1BPUlQ9JHtQT1JUOi0zMDAxfScKICAgICAgLSBEQVRBQkFTRV9QQVRIPS9yb290Ly5mbG93aXNlCiAgICAgIC0gQVBJS0VZX1BBVEg9L3Jvb3QvLmZsb3dpc2UKICAgICAgLSBTRUNSRVRLRVlfUEFUSD0vcm9vdC8uZmxvd2lzZQogICAgICAtIExPR19QQVRIPS9yb290Ly5mbG93aXNlL2xvZ3MKICAgICAgLSBCTE9CX1NUT1JBR0VfUEFUSD0vcm9vdC8uZmxvd2lzZS9zdG9yYWdlCiAgICAgIC0gJ0ZMT1dJU0VfVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfRkxPV0lTRX0nCiAgICAgIC0gJ0ZMT1dJU0VfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0ZMT1dJU0V9JwogICAgdm9sdW1lczoKICAgICAgLSAnZmxvd2lzZS1kYXRhOi9yb290Ly5mbG93aXNlJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC1xTy0gaHR0cDovLzEyNy4wLjAuMTozMDAxIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDMKICBwZy1yZWNvcmQtbWFuYWdlcjoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LXBnLXJlY29yZC1tYW5hZ2VyfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3BnLXJlY29yZC1tYW5hZ2VyLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1oIGxvY2FsaG9zdCAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMAogICAgICBzdGFydF9wZXJpb2Q6IDIwcwogIHJlZGlzLWNhY2hlOgogICAgaW1hZ2U6ICdyZWRpczo3JwogICAgdm9sdW1lczoKICAgICAgLSAnZmxvd2lzZS1yZWRpcy1jYWNoZS1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdyZWRpcy1jbGkgLWggbG9jYWxob3N0IC1wIDYzNzkgcGluZycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDMKICBxZHJhbnQ6CiAgICBpbWFnZTogJ3FkcmFudC9xZHJhbnQ6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfUURSQU5UXzYzMzMKICAgICAgLSAnUURSQU5UX19TRVJWSUNFX19BUElfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9RRFJBTlRBUElLRVl9JwogICAgdm9sdW1lczoKICAgICAgLSAnZmxvd2lzZS1xZHJhbnQtZGF0YTovcWRyYW50L3N0b3JhZ2UnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gImJhc2ggLWMgJzo+IC9kZXYvdGNwLzEyNy4wLjAuMS82MzMzJyB8fCBleGl0IDEiCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAzCg==",
+ "tags": [
+ "lowcode",
+ "nocode",
+ "ai",
+ "llm",
+ "openai",
+ "anthropic",
+ "machine-learning",
+ "rag",
+ "agents",
+ "chatbot",
+ "api",
+ "team",
+ "bot",
+ "flows"
+ ],
+ "logo": "svgs/flowise.png",
+ "minversion": "0.0.0",
+ "port": "3001"
+ },
+ "flowise": {
+ "documentation": "https://docs.flowiseai.com/?utm_source=coolify.io",
+ "slogan": "Flowise is an open source low-code tool for developers to build customized LLM orchestration flows & AI agents.",
+ "compose": "c2VydmljZXM6CiAgZmxvd2lzZToKICAgIGltYWdlOiAnZmxvd2lzZWFpL2Zsb3dpc2U6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfRkxPV0lTRV8zMDAxCiAgICAgIC0gJ0RFQlVHPSR7REVCVUc6LWZhbHNlfScKICAgICAgLSAnRElTQUJMRV9GTE9XSVNFX1RFTEVNRVRSWT0ke0RJU0FCTEVfRkxPV0lTRV9URUxFTUVUUlk6LXRydWV9JwogICAgICAtICdQT1JUPSR7UE9SVDotMzAwMX0nCiAgICAgIC0gREFUQUJBU0VfUEFUSD0vcm9vdC8uZmxvd2lzZQogICAgICAtIEFQSUtFWV9QQVRIPS9yb290Ly5mbG93aXNlCiAgICAgIC0gU0VDUkVUS0VZX1BBVEg9L3Jvb3QvLmZsb3dpc2UKICAgICAgLSBMT0dfUEFUSD0vcm9vdC8uZmxvd2lzZS9sb2dzCiAgICAgIC0gQkxPQl9TVE9SQUdFX1BBVEg9L3Jvb3QvLmZsb3dpc2Uvc3RvcmFnZQogICAgICAtICdGTE9XSVNFX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX0ZMT1dJU0V9JwogICAgICAtICdGTE9XSVNFX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9GTE9XSVNFfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2Zsb3dpc2UtZGF0YTovcm9vdC8uZmxvd2lzZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnd2dldCAtcU8tIGh0dHA6Ly8xMjcuMC4wLjE6MzAwMSB8fCBleGl0IDEnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAzCg==",
+ "tags": [
+ "lowcode",
+ "nocode",
+ "ai",
+ "llm",
+ "openai",
+ "anthropic",
+ "machine-learning",
+ "rag",
+ "agents",
+ "chatbot",
+ "api",
+ "team",
+ "bot",
+ "flows"
+ ],
+ "logo": "svgs/flowise.png",
+ "minversion": "0.0.0",
+ "port": "3001"
+ },
+ "forgejo-with-mariadb": {
+ "documentation": "https://forgejo.org/docs?utm_source=coolify.io",
+ "slogan": "Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.",
+ "compose": "c2VydmljZXM6CiAgZm9yZ2VqbzoKICAgIGltYWdlOiAnY29kZWJlcmcub3JnL2Zvcmdlam8vZm9yZ2Vqbzo4JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfRk9SR0VKT18zMDAwCiAgICAgIC0gJ0ZPUkdFSk9fX3NlcnZlcl9fUk9PVF9VUkw9JHtTRVJWSUNFX1VSTF9GT1JHRUpPXzMwMDB9JwogICAgICAtICdGT1JHRUpPX19taWdyYXRpb25zX19BTExPV0VEX0RPTUFJTlM9JHtGT1JHRUpPX19taWdyYXRpb25zX19BTExPV0VEX0RPTUFJTlN9JwogICAgICAtICdGT1JHRUpPX19taWdyYXRpb25zX19BTExPV19MT0NBTE5FVFdPUktTPSR7Rk9SR0VKT19fbWlncmF0aW9uc19fQUxMT1dfTE9DQUxORVRXT1JLUy1mYWxzZX0nCiAgICAgIC0gVVNFUl9VSUQ9MTAwMAogICAgICAtIFVTRVJfR0lEPTEwMDAKICAgICAgLSBGT1JHRUpPX19kYXRhYmFzZV9fREJfVFlQRT1teXNxbAogICAgICAtIEZPUkdFSk9fX2RhdGFiYXNlX19IT1NUPW1hcmlhZGIKICAgICAgLSAnRk9SR0VKT19fZGF0YWJhc2VfX05BTUU9JHtNWVNRTF9EQVRBQkFTRS1mb3JnZWpvfScKICAgICAgLSBGT1JHRUpPX19kYXRhYmFzZV9fVVNFUj0kU0VSVklDRV9VU0VSX01ZU1FMCiAgICAgIC0gRk9SR0VKT19fZGF0YWJhc2VfX1BBU1NXRD0kU0VSVklDRV9QQVNTV09SRF9NWVNRTAogICAgdm9sdW1lczoKICAgICAgLSAnZm9yZ2Vqby1kYXRhOi9kYXRhJwogICAgICAtICdmb3JnZWpvLXRpbWV6b25lOi9ldGMvdGltZXpvbmU6cm8nCiAgICAgIC0gJ2Zvcmdlam8tbG9jYWx0aW1lOi9ldGMvbG9jYWx0aW1lOnJvJwogICAgcG9ydHM6CiAgICAgIC0gJzIyMjIyOjIyJwogICAgZGVwZW5kc19vbjoKICAgICAgbWFyaWFkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjMwMDAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBtYXJpYWRiOgogICAgaW1hZ2U6ICdtYXJpYWRiOjExJwogICAgdm9sdW1lczoKICAgICAgLSAnZm9yZ2Vqby1tYXJpYWRiLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0V9JwogICAgICAtICdNWVNRTF9ST09UX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTFJPT1R9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGhlYWx0aGNoZWNrLnNoCiAgICAgICAgLSAnLS1jb25uZWN0JwogICAgICAgIC0gJy0taW5ub2RiX2luaXRpYWxpemVkJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "version control",
+ "collaboration",
+ "code",
+ "hosting",
+ "lightweight",
+ "mariadb"
+ ],
+ "logo": "svgs/forgejo.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "forgejo-with-mysql": {
+ "documentation": "https://forgejo.org/docs?utm_source=coolify.io",
+ "slogan": "Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.",
+ "compose": "c2VydmljZXM6CiAgZm9yZ2VqbzoKICAgIGltYWdlOiAnY29kZWJlcmcub3JnL2Zvcmdlam8vZm9yZ2Vqbzo4JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfRk9SR0VKT18zMDAwCiAgICAgIC0gJ0ZPUkdFSk9fX3NlcnZlcl9fUk9PVF9VUkw9JHtTRVJWSUNFX1VSTF9GT1JHRUpPXzMwMDB9JwogICAgICAtICdGT1JHRUpPX19taWdyYXRpb25zX19BTExPV0VEX0RPTUFJTlM9JHtGT1JHRUpPX19taWdyYXRpb25zX19BTExPV0VEX0RPTUFJTlN9JwogICAgICAtICdGT1JHRUpPX19taWdyYXRpb25zX19BTExPV19MT0NBTE5FVFdPUktTPSR7Rk9SR0VKT19fbWlncmF0aW9uc19fQUxMT1dfTE9DQUxORVRXT1JLUy1mYWxzZX0nCiAgICAgIC0gVVNFUl9VSUQ9MTAwMAogICAgICAtIFVTRVJfR0lEPTEwMDAKICAgICAgLSBGT1JHRUpPX19kYXRhYmFzZV9fREJfVFlQRT1teXNxbAogICAgICAtIEZPUkdFSk9fX2RhdGFiYXNlX19IT1NUPW15c3FsCiAgICAgIC0gJ0ZPUkdFSk9fX2RhdGFiYXNlX19OQU1FPSR7TVlTUUxfREFUQUJBU0UtZm9yZ2Vqb30nCiAgICAgIC0gRk9SR0VKT19fZGF0YWJhc2VfX1VTRVI9JFNFUlZJQ0VfVVNFUl9NWVNRTAogICAgICAtIEZPUkdFSk9fX2RhdGFiYXNlX19QQVNTV0Q9JFNFUlZJQ0VfUEFTU1dPUkRfTVlTUUwKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2Zvcmdlam8tZGF0YTovZGF0YScKICAgICAgLSAnZm9yZ2Vqby10aW1lem9uZTovZXRjL3RpbWV6b25lOnJvJwogICAgICAtICdmb3JnZWpvLWxvY2FsdGltZTovZXRjL2xvY2FsdGltZTpybycKICAgIHBvcnRzOgogICAgICAtICcyMjIyMjoyMicKICAgIGRlcGVuZHNfb246CiAgICAgIG15c3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIG15c3FsOgogICAgaW1hZ2U6ICdteXNxbDo4JwogICAgdm9sdW1lczoKICAgICAgLSAnZm9yZ2Vqby1teXNxbC1kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgICAtICdNWVNRTF9EQVRBQkFTRT0ke01ZU1FMX0RBVEFCQVNFfScKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUxST09UfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBteXNxbGFkbWluCiAgICAgICAgLSBwaW5nCiAgICAgICAgLSAnLWgnCiAgICAgICAgLSAxMjcuMC4wLjEKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "version control",
+ "collaboration",
+ "code",
+ "hosting",
+ "lightweight",
+ "mysql"
+ ],
+ "logo": "svgs/forgejo.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "forgejo-with-postgresql": {
+ "documentation": "https://forgejo.org/docs?utm_source=coolify.io",
+ "slogan": "Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.",
+ "compose": "c2VydmljZXM6CiAgZm9yZ2VqbzoKICAgIGltYWdlOiAnY29kZWJlcmcub3JnL2Zvcmdlam8vZm9yZ2Vqbzo4JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfRk9SR0VKT18zMDAwCiAgICAgIC0gJ0ZPUkdFSk9fX3NlcnZlcl9fUk9PVF9VUkw9JHtTRVJWSUNFX1VSTF9GT1JHRUpPXzMwMDB9JwogICAgICAtICdGT1JHRUpPX19taWdyYXRpb25zX19BTExPV0VEX0RPTUFJTlM9JHtGT1JHRUpPX19taWdyYXRpb25zX19BTExPV0VEX0RPTUFJTlN9JwogICAgICAtICdGT1JHRUpPX19taWdyYXRpb25zX19BTExPV19MT0NBTE5FVFdPUktTPSR7Rk9SR0VKT19fbWlncmF0aW9uc19fQUxMT1dfTE9DQUxORVRXT1JLUy1mYWxzZX0nCiAgICAgIC0gVVNFUl9VSUQ9MTAwMAogICAgICAtIFVTRVJfR0lEPTEwMDAKICAgICAgLSBGT1JHRUpPX19kYXRhYmFzZV9fREJfVFlQRT1wb3N0Z3JlcwogICAgICAtIEZPUkdFSk9fX2RhdGFiYXNlX19IT1NUPXBvc3RncmVzcWwKICAgICAgLSAnRk9SR0VKT19fZGF0YWJhc2VfX05BTUU9JHtQT1NUR1JFU1FMX0RBVEFCQVNFLWZvcmdlam99JwogICAgICAtIEZPUkdFSk9fX2RhdGFiYXNlX19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVNRTAogICAgICAtIEZPUkdFSk9fX2RhdGFiYXNlX19QQVNTV0Q9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNRTAogICAgdm9sdW1lczoKICAgICAgLSAnZm9yZ2Vqby1kYXRhOi9kYXRhJwogICAgICAtICdmb3JnZWpvLXRpbWV6b25lOi9ldGMvdGltZXpvbmU6cm8nCiAgICAgIC0gJ2Zvcmdlam8tbG9jYWx0aW1lOi9ldGMvbG9jYWx0aW1lOnJvJwogICAgcG9ydHM6CiAgICAgIC0gJzIyMjIyOjIyJwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjMwMDAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdmb3JnZWpvLXBvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTUUxfREFUQUJBU0V9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "version control",
+ "collaboration",
+ "code",
+ "hosting",
+ "lightweight",
+ "postgresql"
+ ],
+ "logo": "svgs/forgejo.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "forgejo": {
+ "documentation": "https://forgejo.org/docs?utm_source=coolify.io",
+ "slogan": "Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.",
+ "compose": "c2VydmljZXM6CiAgZm9yZ2VqbzoKICAgIGltYWdlOiAnY29kZWJlcmcub3JnL2Zvcmdlam8vZm9yZ2Vqbzo4JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfRk9SR0VKT18zMDAwCiAgICAgIC0gJ0ZPUkdFSk9fX3NlcnZlcl9fUk9PVF9VUkw9JHtTRVJWSUNFX1VSTF9GT1JHRUpPXzMwMDB9JwogICAgICAtICdGT1JHRUpPX19taWdyYXRpb25zX19BTExPV0VEX0RPTUFJTlM9JHtGT1JHRUpPX19taWdyYXRpb25zX19BTExPV0VEX0RPTUFJTlN9JwogICAgICAtICdGT1JHRUpPX19taWdyYXRpb25zX19BTExPV19MT0NBTE5FVFdPUktTPSR7Rk9SR0VKT19fbWlncmF0aW9uc19fQUxMT1dfTE9DQUxORVRXT1JLUy1mYWxzZX0nCiAgICAgIC0gVVNFUl9VSUQ9MTAwMAogICAgICAtIFVTRVJfR0lEPTEwMDAKICAgIHBvcnRzOgogICAgICAtICcyMjIyMjoyMicKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2Zvcmdlam8tZGF0YTovZGF0YScKICAgICAgLSAnZm9yZ2Vqby10aW1lem9uZTovZXRjL3RpbWV6b25lOnJvJwogICAgICAtICdmb3JnZWpvLWxvY2FsdGltZTovZXRjL2xvY2FsdGltZTpybycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTozMDAwJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "tags": [
+ "version control",
+ "collaboration",
+ "code",
+ "hosting",
+ "lightweight"
+ ],
+ "logo": "svgs/forgejo.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "formbricks": {
+ "documentation": "https://formbricks.com/docs/self-hosting/configuration?utm_source=coolify.io",
+ "slogan": "Open Source Survey Platform",
+ "compose": "c2VydmljZXM6CiAgZm9ybWJyaWNrczoKICAgIGltYWdlOiAnZ2hjci5pby9mb3JtYnJpY2tzL2Zvcm1icmlja3M6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfRk9STUJSSUNLU18zMDAwCiAgICAgIC0gV0VCQVBQX1VSTD0kU0VSVklDRV9VUkxfRk9STUJSSUNLUwogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8kU0VSVklDRV9VU0VSX1BPU1RHUkVTUUw6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNRTEBwb3N0Z3Jlc3FsOjU0MzIvJHtQT1NUR1JFU1FMX0RBVEFCQVNFOi1mb3JtYnJpY2tzfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtIE5FWFRBVVRIX1NFQ1JFVD0kU0VSVklDRV9CQVNFNjRfTkVYVEFVVEgKICAgICAgLSBORVhUQVVUSF9VUkw9JFNFUlZJQ0VfVVJMX0ZPUk1CUklDS1MKICAgICAgLSBFTkNSWVBUSU9OX0tFWT0kU0VSVklDRV9CQVNFNjRfRU5DUllQVElPTgogICAgICAtIENST05fU0VDUkVUPSRTRVJWSUNFX0JBU0U2NF9DUk9OCiAgICAgIC0gJ0VOVEVSUFJJU0VfTElDRU5TRV9LRVk9JHtFTlRFUlBSSVNFX0xJQ0VOU0VfS0VZfScKICAgICAgLSAnTUFJTF9GUk9NPSR7TUFJTF9GUk9NOi10ZXN0QGV4YW1wbGUuY29tfScKICAgICAgLSAnU01UUF9IT1NUPSR7U01UUF9IT1NUOi10ZXN0LmV4YW1wbGUuY29tfScKICAgICAgLSAnU01UUF9QT1JUPSR7U01UUF9QT1JUOi01ODd9JwogICAgICAtICdTTVRQX1VTRVI9JHtTTVRQX1VTRVI6LXRlc3R9JwogICAgICAtICdTTVRQX1BBU1NXT1JEPSR7U01UUF9QQVNTV09SRDotdGVzdH0nCiAgICAgIC0gJ1NNVFBfU0VDVVJFX0VOQUJMRUQ9JHtTTVRQX1NFQ1VSRV9FTkFCTEVEOi0wfScKICAgICAgLSAnU01UUF9SRUpFQ1RfVU5BVVRIT1JJWkVEX1RMUz0ke1NNVFBfUkVKRUNUX1VOQVVUSE9SSVpFRF9UTFM6LTF9JwogICAgICAtICdTSE9SVF9VUkxfQkFTRT0ke1NIT1JUX1VSTF9CQVNFfScKICAgICAgLSAnRU1BSUxfVkVSSUZJQ0FUSU9OX0RJU0FCTEVEPSR7RU1BSUxfVkVSSUZJQ0FUSU9OX0RJU0FCTEVEOi0xfScKICAgICAgLSAnUEFTU1dPUkRfUkVTRVRfRElTQUJMRUQ9JHtQQVNTV09SRF9SRVNFVF9ESVNBQkxFRDotMX0nCiAgICAgIC0gJ0VNQUlMX0FVVEhfRElTQUJMRUQ9JHtFTUFJTF9BVVRIX0RJU0FCTEVEOi0wfScKICAgICAgLSAnSU5WSVRFX0RJU0FCTEVEPSR7SU5WSVRFX0RJU0FCTEVEOi0wfScKICAgICAgLSAnQVNTRVRfUFJFRklYX1VSTD0ke0FTU0VUX1BSRUZJWF9VUkx9JwogICAgICAtICdVTlNQTEFTSF9BQ0NFU1NfS0VZPSR7VU5TUExBU0hfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ0dJVEhVQl9JRD0ke0dJVEhVQl9JRH0nCiAgICAgIC0gJ0dJVEhVQl9TRUNSRVQ9JHtHSVRIVUJfU0VDUkVUfScKICAgICAgLSAnR09PR0xFX0NMSUVOVF9JRD0ke0dPT0dMRV9DTElFTlRfSUR9JwogICAgICAtICdHT09HTEVfQ0xJRU5UX1NFQ1JFVD0ke0dPT0dMRV9DTElFTlRfU0VDUkVUfScKICAgICAgLSAnQVpVUkVBRF9DTElFTlRfSUQ9JHtBWlVSRUFEX0NMSUVOVF9JRH0nCiAgICAgIC0gJ0FaVVJFQURfQ0xJRU5UX1NFQ1JFVD0ke0FaVVJFQURfQ0xJRU5UX1NFQ1JFVH0nCiAgICAgIC0gJ0FaVVJFQURfVEVOQU5UX0lEPSR7QVpVUkVBRF9URU5BTlRfSUR9JwogICAgICAtICdPSURDX0NMSUVOVF9JRD0ke09JRENfQ0xJRU5UX0lEfScKICAgICAgLSAnT0lEQ19DTElFTlRfU0VDUkVUPSR7T0lEQ19DTElFTlRfU0VDUkVUfScKICAgICAgLSAnT0lEQ19JU1NVRVI9JHtPSURDX0lTU1VFUn0nCiAgICAgIC0gJ09JRENfRElTUExBWV9OQU1FPSR7T0lEQ19ESVNQTEFZX05BTUV9JwogICAgICAtICdPSURDX1NJR05JTkdfQUxHT1JJVEhNPSR7T0lEQ19TSUdOSU5HX0FMR09SSVRITX0nCiAgICAgIC0gJ05PVElPTl9PQVVUSF9DTElFTlRfSUQ9JHtOT1RJT05fT0FVVEhfQ0xJRU5UX0lEfScKICAgICAgLSAnTk9USU9OX09BVVRIX0NMSUVOVF9TRUNSRVQ9JHtOT1RJT05fT0FVVEhfQ0xJRU5UX1NFQ1JFVH0nCiAgICAgIC0gJ0dPT0dMRV9TSEVFVFNfQ0xJRU5UX0lEPSR7R09PR0xFX1NIRUVUU19DTElFTlRfSUR9JwogICAgICAtICdHT09HTEVfU0hFRVRTX0NMSUVOVF9TRUNSRVQ9JHtHT09HTEVfU0hFRVRTX0NMSUVOVF9TRUNSRVR9JwogICAgICAtICdHT09HTEVfU0hFRVRTX1JFRElSRUNUX1VSTD0ke0dPT0dMRV9TSEVFVFNfUkVESVJFQ1RfVVJMfScKICAgICAgLSAnQUlSVEFCTEVfQ0xJRU5UX0lEPSR7QUlSVEFCTEVfQ0xJRU5UX0lEfScKICAgICAgLSAnU0xBQ0tfQ0xJRU5UX0lEPSR7U0xBQ0tfQ0xJRU5UX0lEfScKICAgICAgLSAnU0xBQ0tfQ0xJRU5UX1NFQ1JFVD0ke1NMQUNLX0NMSUVOVF9TRUNSRVR9JwogICAgICAtICdQUklWQUNZX1VSTD0ke1BSSVZBQ1lfVVJMfScKICAgICAgLSAnVEVSTVNfVVJMPSR7VEVSTVNfVVJMfScKICAgICAgLSAnSU1QUklOVF9VUkw9JHtJTVBSSU5UX1VSTH0nCiAgICAgIC0gJ1JBVEVfTElNSVRJTkdfRElTQUJMRUQ9JHtSQVRFX0xJTUlUSU5HX0RJU0FCTEVEOi0wfScKICAgICAgLSAnT1BFTlRFTEVNRVRSWV9MSVNURU5FUl9VUkw9JHtPUEVOVEVMRU1FVFJZX0xJU1RFTkVSX1VSTH0nCiAgICAgIC0gJ1JFRElTX1VSTD0ke1JFRElTX1VSTH0nCiAgICAgIC0gJ1JFRElTX0hUVFBfVVJMPSR7UkVESVNfSFRUUF9VUkx9JwogICAgICAtICdERUZBVUxUX09SR0FOSVpBVElPTl9JRD0ke0RFRkFVTFRfT1JHQU5JWkFUSU9OX0lEfScKICAgICAgLSAnREVGQVVMVF9PUkdBTklaQVRJT05fUk9MRT0ke0RFRkFVTFRfT1JHQU5JWkFUSU9OX1JPTEU6LW93bmVyfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2Zvcm1icmlja3MtdXBsb2FkczovYXBwcy93ZWIvdXBsb2Fkcy8nCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIHBvc3RncmVzcWw6CiAgICBpbWFnZTogJ3BndmVjdG9yL3BndmVjdG9yOnBnMTYnCiAgICB2b2x1bWVzOgogICAgICAtICdmb3JtYnJpY2tzLXBvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTUUxfREFUQUJBU0U6LWZvcm1icmlja3N9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "form",
+ "builder",
+ "forms",
+ "survey",
+ "open source",
+ "experience",
+ "management",
+ "self-hosted",
+ "docker"
+ ],
+ "logo": "svgs/formbricks.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "foundryvtt": {
+ "documentation": "https://foundryvtt.com/kb/?utm_source=coolify.io",
+ "slogan": "Foundry Virtual Tabletop is a self-hosted & modern roleplaying platform",
+ "compose": "c2VydmljZXM6CiAgZm91bmRyeXZ0dDoKICAgIGltYWdlOiAnZmVsZGR5L2ZvdW5kcnl2dHQ6cmVsZWFzZScKICAgIGV4cG9zZToKICAgICAgLSAzMDAwMAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfRk9VTkRSWV8zMDAwMAogICAgICAtICdGT1VORFJZX1VTRVJOQU1FPSR7Rk9VTkRSWV9VU0VSTkFNRX0nCiAgICAgIC0gJ0ZPVU5EUllfUEFTU1dPUkQ9JHtGT1VORFJZX1BBU1NXT1JEfScKICAgICAgLSAnRk9VTkRSWV9SRUxFQVNFX1VSTD0ke0ZPVU5EUllfUkVMRUFTRV9VUkx9JwogICAgICAtICdGT1VORFJZX0xJQ0VOU0VfS0VZPSR7Rk9VTkRSWV9MSUNFTlNFX0tFWX0nCiAgICAgIC0gJ0ZPVU5EUllfQURNSU5fS0VZPSR7Rk9VTkRSWV9BRE1JTjotYXRyb3Bvc30nCiAgICAgIC0gJ0ZPVU5EUllfSE9TVE5BTUU9JHtGT1VORFJZX0hPU1ROQU1FfScKICAgICAgLSAnRk9VTkRSWV9ST1VURV9QUkVGSVg9JHtGT1VORFJZX1JPVVRFX1BSRUZJWH0nCiAgICAgIC0gJ0ZPVU5EUllfUFJPWFlfUE9SVD0ke0ZPVU5EUllfUFJPWFlfUE9SVDotODB9JwogICAgICAtICdGT1VORFJZX1BST1hZX1NTTD0ke0ZPVU5EUllfUFJPWFlfU1NMOi10cnVlfScKICAgICAgLSAnRk9VTkRSWV9BV1NfQ09ORklHPSR7Rk9VTkRSWV9BV1NfQ09ORklHfScKICAgICAgLSAnRk9VTkRSWV9MQU5HVUFHRT0ke0ZPVU5EUllfTEFOR1VBR0U6LWVuLmNvcmV9JwogICAgICAtICdGT1VORFJZX0NTU19USEVNRT0ke0ZPVU5EUllfQ1NTX1RIRU1FOi1mb3VuZHJ5fScKICAgICAgLSAnRk9VTkRSWV9NSU5JRllfU1RBVElDX0ZJTEVTPSR7Rk9VTkRSWV9NSU5JRllfU1RBVElDX0ZJTEVTOi10cnVlfScKICAgICAgLSAnRk9VTkRSWV9XT1JMRD0ke0ZPVU5EUllfV09STER9JwogICAgICAtICdGT1VORFJZX1RFTEVNRVRSWT0ke0ZPVU5EUllfVEVMRU1FVFJZOi1mYWxzZX0nCiAgICAgIC0gJ1RJTUVaT05FPSR7VElNRVpPTkU6LVVUQ30nCiAgICAgIC0gQ09OVEFJTkVSX0NBQ0hFPS9kYXRhL2NvbnRhaW5lcl9jYWNoZQogICAgdm9sdW1lczoKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6ICcke0ZPVU5EUllfREFUQTotL2RhdGEvZm91bmRyeXZ0dH0nCiAgICAgICAgdGFyZ2V0OiAvZGF0YQogICAgICAgIGlzX2RpcmVjdG9yeTogdHJ1ZQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjMwMDAwJwogICAgICB0aW1lb3V0OiA1cwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHJldHJpZXM6IDMK",
+ "tags": [
+ "foundryvtt",
+ "foundry",
+ "vtt",
+ "ttrpg",
+ "roleplaying"
+ ],
+ "logo": "svgs/foundryvtt.png",
+ "minversion": "0.0.0",
+ "port": "30000"
+ },
+ "freescout": {
+ "documentation": "https://github.com/freescout-help-desk/freescout/wiki/?utm_source=coolify.io",
+ "slogan": "FreeScout is the super lightweight and powerful free open source help desk and shared inbox written in PHP (Laravel framework).",
+ "compose": "c2VydmljZXM6CiAgZnJlZXNjb3V0OgogICAgaW1hZ2U6ICd0aXJlZG9maXQvZnJlZXNjb3V0OmxhdGVzdCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2ZyZWVzY291dC1kYXRhOi9kYXRhJwogICAgICAtICdmcmVlc2NvdXQtbG9nczovd3d3L2xvZ3MnCiAgICBkZXBlbmRzX29uOgogICAgICBtYXJpYWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9GUkVFU0NPVVRfODAKICAgICAgLSBEQl9IT1NUPW1hcmlhZGIKICAgICAgLSAnREJfTkFNRT0ke01BUklBREJfREFUQUJBU0U6LWZyZWVzY291dH0nCiAgICAgIC0gJ0RCX1VTRVI9JHtTRVJWSUNFX1VTRVJfTUFSSUFEQjotZnJlZXNjb3V0fScKICAgICAgLSAnREJfUEFTUz0ke1NFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQn0nCiAgICAgIC0gJ1NJVEVfVVJMPSR7U0VSVklDRV9VUkxfRlJFRVNDT1VUfScKICAgICAgLSAnQURNSU5fRU1BSUw9JHtBRE1JTl9FTUFJTDotYWRtaW5AZXhhbXBsZS5jb219JwogICAgICAtICdBRE1JTl9QQVNTPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICAgIC0gJ0RJU1BMQVlfRVJST1JTPSR7RElTUExBWV9FUlJPUlM6LUZBTFNFfScKICAgICAgLSAnVElNRVpPTkU9JHtUSU1FWk9ORTotVVRDfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMScKICAgICAgc3RhcnRfcGVyaW9kOiAxMHMKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIG1hcmlhZGI6CiAgICBpbWFnZTogbWFyaWFkYgogICAgdm9sdW1lczoKICAgICAgLSAnbWFyaWFkYi1kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01BUklBREJfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUk9PVH0nCiAgICAgIC0gJ01BUklBREJfREFUQUJBU0U9JHtNQVJJQURCX0RBVEFCQVNFfScKICAgICAgLSAnTUFSSUFEQl9VU0VSPSR7U0VSVklDRV9VU0VSX01BUklBREJ9JwogICAgICAtICdNQVJJQURCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NQVJJQURCfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBoZWFsdGhjaGVjay5zaAogICAgICAgIC0gJy0tY29ubmVjdCcKICAgICAgICAtICctLWlubm9kYl9pbml0aWFsaXplZCcKICAgICAgc3RhcnRfcGVyaW9kOiAxMHMKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "helpdesk",
+ "support",
+ "ticketing",
+ "customer-support"
+ ],
+ "logo": "svgs/freescout.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "freshrss-with-mariadb": {
+ "documentation": "https://freshrss.org/index.html?utm_source=coolify.io",
+ "slogan": "A free, self-hostable feed aggregator.",
+ "compose": "c2VydmljZXM6CiAgZnJlc2hyc3M6CiAgICBpbWFnZTogJ2ZyZXNocnNzL2ZyZXNocnNzOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0ZSRVNIUlNTXzgwCiAgICAgIC0gJ0NST05fTUlOPSR7Q1JPTl9NSU46LTEsMzF9JwogICAgICAtICdNQVJJQURCX0RCPSR7TUFSSUFEQl9EQVRBQkFTRTotZnJlc2hyc3N9JwogICAgICAtICdNQVJJQURCX1VTRVI9JHtTRVJWSUNFX1VTRVJfTUFSSUFEQn0nCiAgICAgIC0gJ01BUklBREJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01BUklBREJ9JwogICAgdm9sdW1lczoKICAgICAgLSAnZnJlc2hyc3MtZGF0YTovdmFyL3d3dy9GcmVzaFJTUy9kYXRhJwogICAgICAtICdmcmVzaHJzcy1leHRlbnNpb25zOi92YXIvd3d3L0ZyZXNoUlNTL2V4dGVuc2lvbnMnCiAgICBkZXBlbmRzX29uOgogICAgICBmcmVzaHJzcy1kYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvODAnIHx8IGV4aXQgMSIKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAzCiAgZnJlc2hyc3MtZGI6CiAgICBpbWFnZTogJ21hcmlhZGI6MTEnCiAgICB2b2x1bWVzOgogICAgICAtICdtYXJpYWRiLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBNWVNRTF9ST09UX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1JPT1QKICAgICAgLSAnTVlTUUxfREFUQUJBU0U9JHtNQVJJQURCX0RBVEFCQVNFOi1mcmVzaHJzc30nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTUFSSUFEQn0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NQVJJQURCfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBoZWFsdGhjaGVjay5zaAogICAgICAgIC0gJy0tY29ubmVjdCcKICAgICAgICAtICctLWlubm9kYl9pbml0aWFsaXplZCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "rss",
+ "feed"
+ ],
+ "logo": "svgs/freshrss.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "freshrss-with-mysql": {
+ "documentation": "https://freshrss.org/index.html?utm_source=coolify.io",
+ "slogan": "A free, self-hostable feed aggregator.",
+ "compose": "c2VydmljZXM6CiAgZnJlc2hyc3M6CiAgICBpbWFnZTogJ2ZyZXNocnNzL2ZyZXNocnNzOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0ZSRVNIUlNTXzgwCiAgICAgIC0gJ0NST05fTUlOPSR7Q1JPTl9NSU46LTEsMzF9JwogICAgICAtICdNWVNRTF9EQj0ke01ZU1FMX0RBVEFCQVNFOi1mcmVzaHJzc30nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgdm9sdW1lczoKICAgICAgLSAnZnJlc2hyc3MtZGF0YTovdmFyL3d3dy9GcmVzaFJTUy9kYXRhJwogICAgICAtICdmcmVzaHJzcy1leHRlbnNpb25zOi92YXIvd3d3L0ZyZXNoUlNTL2V4dGVuc2lvbnMnCiAgICBkZXBlbmRzX29uOgogICAgICBmcmVzaHJzcy1kYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvODAnIHx8IGV4aXQgMSIKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAzCiAgZnJlc2hyc3MtZGI6CiAgICBpbWFnZTogJ215c3FsOjgnCiAgICB2b2x1bWVzOgogICAgICAtICdteXNxbC1kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gTVlTUUxfUk9PVF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9ST09UCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LWZyZXNocnNzfScKICAgICAgLSBNWVNRTF9VU0VSPSRTRVJWSUNFX1VTRVJfTVlTUUwKICAgICAgLSBNWVNRTF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NWVNRTAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG15c3FsYWRtaW4KICAgICAgICAtIHBpbmcKICAgICAgICAtICctaCcKICAgICAgICAtIDEyNy4wLjAuMQogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "rss",
+ "feed"
+ ],
+ "logo": "svgs/freshrss.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "freshrss-with-postgresql": {
+ "documentation": "https://freshrss.org/index.html?utm_source=coolify.io",
+ "slogan": "A free, self-hostable feed aggregator.",
+ "compose": "c2VydmljZXM6CiAgZnJlc2hyc3M6CiAgICBpbWFnZTogJ2ZyZXNocnNzL2ZyZXNocnNzOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0ZSRVNIUlNTXzgwCiAgICAgIC0gJ0NST05fTUlOPSR7Q1JPTl9NSU46LTEsMzF9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTUUxfREFUQUJBU0U6LWZyZXNocnNzfScKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtIFBPU1RHUkVTX0hPU1Q9cG9zdGdyZXNxbAogICAgdm9sdW1lczoKICAgICAgLSAnZnJlc2hyc3MtZGF0YTovdmFyL3d3dy9GcmVzaFJTUy9kYXRhJwogICAgICAtICdmcmVzaHJzcy1leHRlbnNpb25zOi92YXIvd3d3L0ZyZXNoUlNTL2V4dGVuc2lvbnMnCiAgICBkZXBlbmRzX29uOgogICAgICBmcmVzaHJzcy1kYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvODAnIHx8IGV4aXQgMSIKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAzCiAgZnJlc2hyc3MtZGI6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2JwogICAgdm9sdW1lczoKICAgICAgLSAnZnJlc2hyc3MtcG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTUUx9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNRTH0nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNRTF9EQVRBQkFTRTotZnJlc2hyc3N9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "rss",
+ "feed"
+ ],
+ "logo": "svgs/freshrss.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "freshrss": {
+ "documentation": "https://freshrss.org/index.html?utm_source=coolify.io",
+ "slogan": "A free, self-hostable feed aggregator.",
+ "compose": "c2VydmljZXM6CiAgZnJlc2hyc3M6CiAgICBpbWFnZTogJ2ZyZXNocnNzL2ZyZXNocnNzOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0ZSRVNIUlNTXzgwCiAgICAgIC0gJ0NST05fTUlOPSR7Q1JPTl9NSU46LTEsMzF9JwogICAgdm9sdW1lczoKICAgICAgLSAnZnJlc2hyc3MtZGF0YTovdmFyL3d3dy9GcmVzaFJTUy9kYXRhJwogICAgICAtICdmcmVzaHJzcy1leHRlbnNpb25zOi92YXIvd3d3L0ZyZXNoUlNTL2V4dGVuc2lvbnMnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gImJhc2ggLWMgJzo+IC9kZXYvdGNwLzEyNy4wLjAuMS84MCcgfHwgZXhpdCAxIgogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDMK",
+ "tags": [
+ "rss",
+ "feed"
+ ],
+ "logo": "svgs/freshrss.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "getoutline": {
+ "documentation": "https://docs.getoutline.com/s/hosting/doc/hosting-outline-nipGaCRBDu?utm_source=coolify.io",
+ "slogan": "Your team\u2019s knowledge base",
+ "compose": "c2VydmljZXM6CiAgb3V0bGluZToKICAgIGltYWdlOiAnZG9ja2VyLmdldG91dGxpbmUuY29tL291dGxpbmV3aWtpL291dGxpbmU6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnc3RvcmFnZS1kYXRhOi92YXIvbGliL291dGxpbmUvZGF0YScKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9PVVRMSU5FXzMwMDAKICAgICAgLSBOT0RFX0VOVj1wcm9kdWN0aW9uCiAgICAgIC0gJ1NFQ1JFVF9LRVk9JHtTRVJWSUNFX0JBU0U2NF9PVVRMSU5FfScKICAgICAgLSAnVVRJTFNfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF82NF9PVVRMSU5FfScKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF82NF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RBVEFCQVNFOi1vdXRsaW5lfScKICAgICAgLSAnUkVESVNfVVJMPXJlZGlzOi8vOiR7U0VSVklDRV9QQVNTV09SRF82NF9SRURJU31AcmVkaXM6NjM3OScKICAgICAgLSAnVVJMPSR7U0VSVklDRV9VUkxfT1VUTElORV8zMDAwfScKICAgICAgLSAnUE9SVD0ke09VVExJTkVfUE9SVDotMzAwMH0nCiAgICAgIC0gJ0ZJTEVfU1RPUkFHRT0ke0ZJTEVfU1RPUkFHRTotbG9jYWx9JwogICAgICAtICdGSUxFX1NUT1JBR0VfTE9DQUxfUk9PVF9ESVI9JHtGSUxFX1NUT1JBR0VfTE9DQUxfUk9PVF9ESVI6LS92YXIvbGliL291dGxpbmUvZGF0YX0nCiAgICAgIC0gJ0ZJTEVfU1RPUkFHRV9VUExPQURfTUFYX1NJWkU9JHtGSUxFX1NUT1JBR0VfVVBMT0FEX01BWF9TSVpFOi0yMDAwfScKICAgICAgLSAnRklMRV9TVE9SQUdFX0lNUE9SVF9NQVhfU0laRT0ke0ZJTEVfU1RPUkFHRV9JTVBPUlRfTUFYX1NJWkU6LTEwMH0nCiAgICAgIC0gJ0ZJTEVfU1RPUkFHRV9XT1JLU1BBQ0VfSU1QT1JUX01BWF9TSVpFPSR7RklMRV9TVE9SQUdFX1dPUktTUEFDRV9JTVBPUlRfTUFYX1NJWkV9JwogICAgICAtICdBV1NfQUNDRVNTX0tFWV9JRD0ke0FXU19BQ0NFU1NfS0VZX0lEfScKICAgICAgLSAnQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPSR7QVdTX1NFQ1JFVF9BQ0NFU1NfS0VZfScKICAgICAgLSAnQVdTX1JFR0lPTj0ke0FXU19SRUdJT059JwogICAgICAtICdBV1NfUzNfQUNDRUxFUkFURV9VUkw9JHtBV1NfUzNfQUNDRUxFUkFURV9VUkx9JwogICAgICAtICdBV1NfUzNfVVBMT0FEX0JVQ0tFVF9VUkw9JHtBV1NfUzNfVVBMT0FEX0JVQ0tFVF9VUkx9JwogICAgICAtICdBV1NfUzNfVVBMT0FEX0JVQ0tFVF9OQU1FPSR7QVdTX1MzX1VQTE9BRF9CVUNLRVRfTkFNRX0nCiAgICAgIC0gJ0FXU19TM19GT1JDRV9QQVRIX1NUWUxFPSR7QVdTX1MzX0ZPUkNFX1BBVEhfU1RZTEU6LXRydWV9JwogICAgICAtICdBV1NfUzNfQUNMPSR7QVdTX1MzX0FDTDotcHJpdmF0ZX0nCiAgICAgIC0gJ1NMQUNLX0NMSUVOVF9JRD0ke1NMQUNLX0NMSUVOVF9JRH0nCiAgICAgIC0gJ1NMQUNLX0NMSUVOVF9TRUNSRVQ9JHtTTEFDS19DTElFTlRfU0VDUkVUfScKICAgICAgLSAnR09PR0xFX0NMSUVOVF9JRD0ke0dPT0dMRV9DTElFTlRfSUR9JwogICAgICAtICdHT09HTEVfQ0xJRU5UX1NFQ1JFVD0ke0dPT0dMRV9DTElFTlRfU0VDUkVUfScKICAgICAgLSAnQVpVUkVfQ0xJRU5UX0lEPSR7QVpVUkVfQ0xJRU5UX0lEfScKICAgICAgLSAnQVpVUkVfQ0xJRU5UX1NFQ1JFVD0ke0FaVVJFX0NMSUVOVF9TRUNSRVR9JwogICAgICAtICdBWlVSRV9SRVNPVVJDRV9BUFBfSUQ9JHtBWlVSRV9SRVNPVVJDRV9BUFBfSUR9JwogICAgICAtICdPSURDX0NMSUVOVF9JRD0ke09JRENfQ0xJRU5UX0lEfScKICAgICAgLSAnT0lEQ19DTElFTlRfU0VDUkVUPSR7T0lEQ19DTElFTlRfU0VDUkVUfScKICAgICAgLSAnT0lEQ19BVVRIX1VSST0ke09JRENfQVVUSF9VUkl9JwogICAgICAtICdPSURDX1RPS0VOX1VSST0ke09JRENfVE9LRU5fVVJJfScKICAgICAgLSAnT0lEQ19VU0VSSU5GT19VUkk9JHtPSURDX1VTRVJJTkZPX1VSSX0nCiAgICAgIC0gJ09JRENfTE9HT1VUX1VSST0ke09JRENfTE9HT1VUX1VSSX0nCiAgICAgIC0gJ09JRENfVVNFUk5BTUVfQ0xBSU09JHtPSURDX1VTRVJOQU1FX0NMQUlNfScKICAgICAgLSAnT0lEQ19ESVNQTEFZX05BTUU9JHtPSURDX0RJU1BMQVlfTkFNRX0nCiAgICAgIC0gJ09JRENfU0NPUEVTPSR7T0lEQ19TQ09QRVN9JwogICAgICAtICdHSVRIVUJfQ0xJRU5UX0lEPSR7R0lUSFVCX0NMSUVOVF9JRH0nCiAgICAgIC0gJ0dJVEhVQl9DTElFTlRfU0VDUkVUPSR7R0lUSFVCX0NMSUVOVF9TRUNSRVR9JwogICAgICAtICdHSVRIVUJfQVBQX05BTUU9JHtHSVRIVUJfQVBQX05BTUV9JwogICAgICAtICdHSVRIVUJfQVBQX0lEPSR7R0lUSFVCX0FQUF9JRH0nCiAgICAgIC0gJ0dJVEhVQl9BUFBfUFJJVkFURV9LRVk9JHtHSVRIVUJfQVBQX1BSSVZBVEVfS0VZfScKICAgICAgLSAnRElTQ09SRF9DTElFTlRfSUQ9JHtESVNDT1JEX0NMSUVOVF9JRH0nCiAgICAgIC0gJ0RJU0NPUkRfQ0xJRU5UX1NFQ1JFVD0ke0RJU0NPUkRfQ0xJRU5UX1NFQ1JFVH0nCiAgICAgIC0gJ0RJU0NPUkRfU0VSVkVSX0lEPSR7RElTQ09SRF9TRVJWRVJfSUR9JwogICAgICAtICdESVNDT1JEX1NFUlZFUl9ST0xFUz0ke0RJU0NPUkRfU0VSVkVSX1JPTEVTfScKICAgICAgLSAnUEdTU0xNT0RFPSR7UEdTU0xNT0RFOi1kaXNhYmxlfScKICAgICAgLSAnRk9SQ0VfSFRUUFM9JHtGT1JDRV9IVFRQUzotdHJ1ZX0nCiAgICAgIC0gJ1NNVFBfSE9TVD0ke1NNVFBfSE9TVH0nCiAgICAgIC0gJ1NNVFBfUE9SVD0ke1NNVFBfUE9SVH0nCiAgICAgIC0gJ1NNVFBfVVNFUk5BTUU9JHtTTVRQX1VTRVJOQU1FfScKICAgICAgLSAnU01UUF9QQVNTV09SRD0ke1NNVFBfUEFTU1dPUkR9JwogICAgICAtICdTTVRQX0ZST01fRU1BSUw9JHtTTVRQX0ZST01fRU1BSUx9JwogICAgICAtICdTTVRQX1JFUExZX0VNQUlMPSR7U01UUF9SRVBMWV9FTUFJTH0nCiAgICAgIC0gJ1NNVFBfVExTX0NJUEhFUlM9JHtTTVRQX1RMU19DSVBIRVJTfScKICAgICAgLSAnU01UUF9TRUNVUkU9JHtTTVRQX1NFQ1VSRX0nCiAgICAgIC0gJ1NNVFBfTkFNRT0ke1NNVFBfTkFNRX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgZGlzYWJsZTogdHJ1ZQogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczphbHBpbmUnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUkVESVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X1JFRElTfScKICAgIGNvbW1hbmQ6CiAgICAgIC0gcmVkaXMtc2VydmVyCiAgICAgIC0gJy0tcmVxdWlyZXBhc3MnCiAgICAgIC0gJyR7U0VSVklDRV9QQVNTV09SRF82NF9SRURJU30nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSAnLWEnCiAgICAgICAgLSAnJHtTRVJWSUNFX1BBU1NXT1JEXzY0X1JFRElTfScKICAgICAgICAtIFBJTkcKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAzMHMKICAgICAgcmV0cmllczogMwogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxMi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdkYXRhYmFzZS1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQVRBQkFTRTotb3V0bGluZX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcGdfaXNyZWFkeQogICAgICAgIC0gJy1VJwogICAgICAgIC0gJyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgICAtICctZCcKICAgICAgICAtICcke1BPU1RHUkVTX0RBVEFCQVNFOi1vdXRsaW5lfScKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMwo=",
+ "tags": [
+ "knowledge base",
+ "documentation"
+ ],
+ "logo": "svgs/getoutline.jpeg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "ghost": {
+ "documentation": "https://ghost.org?utm_source=coolify.io",
+ "slogan": "Ghost is a content management system (CMS) and blogging platform.",
+ "compose": "c2VydmljZXM6CiAgZ2hvc3Q6CiAgICBpbWFnZTogJ2dob3N0OjUnCiAgICB2b2x1bWVzOgogICAgICAtICdnaG9zdC1jb250ZW50LWRhdGE6L3Zhci9saWIvZ2hvc3QvY29udGVudCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0dIT1NUXzIzNjgKICAgICAgLSB1cmw9JFNFUlZJQ0VfVVJMX0dIT1NUXzIzNjgKICAgICAgLSBkYXRhYmFzZV9fY2xpZW50PW15c3FsCiAgICAgIC0gZGF0YWJhc2VfX2Nvbm5lY3Rpb25fX2hvc3Q9bXlzcWwKICAgICAgLSBkYXRhYmFzZV9fY29ubmVjdGlvbl9fdXNlcj0kU0VSVklDRV9VU0VSX01ZU1FMCiAgICAgIC0gZGF0YWJhc2VfX2Nvbm5lY3Rpb25fX3Bhc3N3b3JkPSRTRVJWSUNFX1BBU1NXT1JEX01ZU1FMCiAgICAgIC0gJ2RhdGFiYXNlX19jb25uZWN0aW9uX19kYXRhYmFzZT0ke01ZU1FMX0RBVEFCQVNFLWdob3N0fScKICAgICAgLSBtYWlsX190cmFuc3BvcnQ9U01UUAogICAgICAtICdtYWlsX19vcHRpb25zX19hdXRoX19wYXNzPSR7TUFJTF9PUFRJT05TX0FVVEhfUEFTU30nCiAgICAgIC0gJ21haWxfX29wdGlvbnNfX2F1dGhfX3VzZXI9JHtNQUlMX09QVElPTlNfQVVUSF9VU0VSfScKICAgICAgLSAnbWFpbF9fb3B0aW9uc19fc2VjdXJlPSR7TUFJTF9PUFRJT05TX1NFQ1VSRTotdHJ1ZX0nCiAgICAgIC0gJ21haWxfX29wdGlvbnNfX3BvcnQ9JHtNQUlMX09QVElPTlNfUE9SVDotNDY1fScKICAgICAgLSAnbWFpbF9fb3B0aW9uc19fc2VydmljZT0ke01BSUxfT1BUSU9OU19TRVJWSUNFOi1NYWlsZ3VufScKICAgICAgLSAnbWFpbF9fb3B0aW9uc19faG9zdD0ke01BSUxfT1BUSU9OU19IT1NUfScKICAgIGRlcGVuZHNfb246CiAgICAgIG15c3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gZWNobwogICAgICAgIC0gb2sKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIG15c3FsOgogICAgaW1hZ2U6ICdteXNxbDo4LjAnCiAgICB2b2x1bWVzOgogICAgICAtICdnaG9zdC1teXNxbC1kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgICAtICdNWVNRTF9EQVRBQkFTRT0ke01ZU1FMX0RBVEFCQVNFfScKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUxST09UfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBteXNxbGFkbWluCiAgICAgICAgLSBwaW5nCiAgICAgICAgLSAnLWgnCiAgICAgICAgLSAxMjcuMC4wLjEKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "cms",
+ "blog",
+ "content",
+ "management",
+ "system"
+ ],
+ "logo": "svgs/ghost.svg",
+ "minversion": "0.0.0",
+ "port": "2368"
+ },
+ "gitea-with-mariadb": {
+ "documentation": "https://docs.gitea.com?utm_source=coolify.io",
+ "slogan": "Gitea is a self-hosted, lightweight Git service, offering version control, collaboration, and code hosting.",
+ "compose": "c2VydmljZXM6CiAgZ2l0ZWE6CiAgICBpbWFnZTogJ2dpdGVhL2dpdGVhOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0dJVEVBXzMwMDAKICAgICAgLSBVU0VSX1VJRD0xMDAwCiAgICAgIC0gVVNFUl9HSUQ9MTAwMAogICAgICAtIEdJVEVBX19kYXRhYmFzZV9fREJfVFlQRT1teXNxbAogICAgICAtIEdJVEVBX19kYXRhYmFzZV9fSE9TVD1tYXJpYWRiCiAgICAgIC0gJ0dJVEVBX19kYXRhYmFzZV9fTkFNRT0ke01ZU1FMX0RBVEFCQVNFLWdpdGVhfScKICAgICAgLSBHSVRFQV9fZGF0YWJhc2VfX1VTRVI9JFNFUlZJQ0VfVVNFUl9NWVNRTAogICAgICAtIEdJVEVBX19kYXRhYmFzZV9fUEFTU1dEPSRTRVJWSUNFX1BBU1NXT1JEX01ZU1FMCiAgICB2b2x1bWVzOgogICAgICAtICdnaXRlYS1kYXRhOi9kYXRhJwogICAgICAtICdnaXRlYS10aW1lem9uZTovZXRjL3RpbWV6b25lOnJvJwogICAgICAtICdnaXRlYS1sb2NhbHRpbWU6L2V0Yy9sb2NhbHRpbWU6cm8nCiAgICBwb3J0czoKICAgICAgLSAnMjIyMjI6MjInCiAgICBkZXBlbmRzX29uOgogICAgICBtYXJpYWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIG1hcmlhZGI6CiAgICBpbWFnZTogJ21hcmlhZGI6MTEnCiAgICB2b2x1bWVzOgogICAgICAtICdnaXRlYS1tYXJpYWRiLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0V9JwogICAgICAtICdNWVNRTF9ST09UX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTFJPT1R9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGhlYWx0aGNoZWNrLnNoCiAgICAgICAgLSAnLS1jb25uZWN0JwogICAgICAgIC0gJy0taW5ub2RiX2luaXRpYWxpemVkJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "version control",
+ "collaboration",
+ "code",
+ "hosting",
+ "lightweight",
+ "mariadb"
+ ],
+ "logo": "svgs/gitea.svg",
+ "minversion": "0.0.0"
+ },
+ "gitea-with-mysql": {
+ "documentation": "https://docs.gitea.com?utm_source=coolify.io",
+ "slogan": "Gitea is a self-hosted, lightweight Git service, offering version control, collaboration, and code hosting.",
+ "compose": "c2VydmljZXM6CiAgZ2l0ZWE6CiAgICBpbWFnZTogJ2dpdGVhL2dpdGVhOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0dJVEVBXzMwMDAKICAgICAgLSBVU0VSX1VJRD0xMDAwCiAgICAgIC0gVVNFUl9HSUQ9MTAwMAogICAgICAtIEdJVEVBX19kYXRhYmFzZV9fREJfVFlQRT1teXNxbAogICAgICAtIEdJVEVBX19kYXRhYmFzZV9fSE9TVD1teXNxbAogICAgICAtICdHSVRFQV9fZGF0YWJhc2VfX05BTUU9JHtNWVNRTF9EQVRBQkFTRS1naXRlYX0nCiAgICAgIC0gR0lURUFfX2RhdGFiYXNlX19VU0VSPSRTRVJWSUNFX1VTRVJfTVlTUUwKICAgICAgLSBHSVRFQV9fZGF0YWJhc2VfX1BBU1NXRD0kU0VSVklDRV9QQVNTV09SRF9NWVNRTAogICAgdm9sdW1lczoKICAgICAgLSAnZ2l0ZWEtZGF0YTovZGF0YScKICAgICAgLSAnZ2l0ZWEtdGltZXpvbmU6L2V0Yy90aW1lem9uZTpybycKICAgICAgLSAnZ2l0ZWEtbG9jYWx0aW1lOi9ldGMvbG9jYWx0aW1lOnJvJwogICAgcG9ydHM6CiAgICAgIC0gJzIyMjIyOjIyJwogICAgZGVwZW5kc19vbjoKICAgICAgbXlzcWw6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTozMDAwJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1CiAgbXlzcWw6CiAgICBpbWFnZTogJ215c3FsOjguMCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2dpdGVhLW15c3FsLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0V9JwogICAgICAtICdNWVNRTF9ST09UX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTFJPT1R9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG15c3FsYWRtaW4KICAgICAgICAtIHBpbmcKICAgICAgICAtICctaCcKICAgICAgICAtIDEyNy4wLjAuMQogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "version control",
+ "collaboration",
+ "code",
+ "hosting",
+ "lightweight",
+ "mysql"
+ ],
+ "logo": "svgs/gitea.svg",
+ "minversion": "0.0.0"
+ },
+ "gitea-with-postgresql": {
+ "documentation": "https://docs.gitea.com?utm_source=coolify.io",
+ "slogan": "Gitea is a self-hosted, lightweight Git service, offering version control, collaboration, and code hosting.",
+ "compose": "c2VydmljZXM6CiAgZ2l0ZWE6CiAgICBpbWFnZTogJ2dpdGVhL2dpdGVhOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0dJVEVBXzMwMDAKICAgICAgLSBVU0VSX1VJRD0xMDAwCiAgICAgIC0gVVNFUl9HSUQ9MTAwMAogICAgICAtIEdJVEVBX19kYXRhYmFzZV9fREJfVFlQRT1wb3N0Z3JlcwogICAgICAtIEdJVEVBX19kYXRhYmFzZV9fSE9TVD1wb3N0Z3Jlc3FsCiAgICAgIC0gJ0dJVEVBX19kYXRhYmFzZV9fTkFNRT0ke1BPU1RHUkVTUUxfREFUQUJBU0UtZ2l0ZWF9JwogICAgICAtIEdJVEVBX19kYXRhYmFzZV9fVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTUUwKICAgICAgLSBHSVRFQV9fZGF0YWJhc2VfX1BBU1NXRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMCiAgICB2b2x1bWVzOgogICAgICAtICdnaXRlYS1kYXRhOi9kYXRhJwogICAgICAtICdnaXRlYS10aW1lem9uZTovZXRjL3RpbWV6b25lOnJvJwogICAgICAtICdnaXRlYS1sb2NhbHRpbWU6L2V0Yy9sb2NhbHRpbWU6cm8nCiAgICBwb3J0czoKICAgICAgLSAnMjIyMjI6MjInCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIHBvc3RncmVzcWw6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2dpdGVhLXBvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTUUxfREFUQUJBU0V9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "version control",
+ "collaboration",
+ "code",
+ "hosting",
+ "lightweight",
+ "postgresql"
+ ],
+ "logo": "svgs/gitea.svg",
+ "minversion": "0.0.0"
+ },
+ "gitea": {
+ "documentation": "https://docs.gitea.com?utm_source=coolify.io",
+ "slogan": "Gitea is a self-hosted, lightweight Git service, offering version control, collaboration, and code hosting.",
+ "compose": "c2VydmljZXM6CiAgZ2l0ZWE6CiAgICBpbWFnZTogJ2dpdGVhL2dpdGVhOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0dJVEVBXzMwMDAKICAgICAgLSBVU0VSX1VJRD0xMDAwCiAgICAgIC0gVVNFUl9HSUQ9MTAwMAogICAgcG9ydHM6CiAgICAgIC0gJzIyMjIyOjIyJwogICAgdm9sdW1lczoKICAgICAgLSAnZ2l0ZWEtZGF0YTovZGF0YScKICAgICAgLSAnZ2l0ZWEtdGltZXpvbmU6L2V0Yy90aW1lem9uZTpybycKICAgICAgLSAnZ2l0ZWEtbG9jYWx0aW1lOi9ldGMvbG9jYWx0aW1lOnJvJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjMwMDAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUK",
+ "tags": [
+ "version control",
+ "collaboration",
+ "code",
+ "hosting",
+ "lightweight"
+ ],
+ "logo": "svgs/gitea.svg",
+ "minversion": "0.0.0"
+ },
+ "github-runner": {
+ "documentation": "https://github.com/myoung34/docker-github-actions-runner/wiki/Usage?utm_source=coolify.io",
+ "slogan": "A GitHub Actions runner for Docker",
+ "compose": "c2VydmljZXM6CiAgcnVubmVyOgogICAgaW1hZ2U6ICdteW91bmczNC9naXRodWItcnVubmVyOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdSRVBPX1VSTD0ke1JFUE9fVVJMfScKICAgICAgLSAnUlVOTkVSX05BTUVfUFJFRklYPSR7UlVOTkVSX05BTUVfUFJFRklYOi1jb29saWZ5LXJ1bm5lcn0nCiAgICAgIC0gJ1JVTk5FUl9OQU1FX1NVRkZJWD0ke1JVTk5FUl9OQU1FX1NVRkZJWDotZmFsc2V9JwogICAgICAtICdBQ0NFU1NfVE9LRU49JHtBQ0NFU1NfVE9LRU59JwogICAgICAtIFJVTk5FUl9XT1JLRElSPS9ydW5uZXIvd29yawogICAgICAtICdSVU5ORVJfU0NPUEU9JHtSVU5ORVJfU0NPUEU6LXJlcG99JwogICAgICAtICdMQUJFTFM9JHtMQUJFTFM6LWRlZmF1bHR9JwogICAgICAtICdPUkdfTkFNRT0ke09SR19OQU1FfScKICAgIHNlY3VyaXR5X29wdDoKICAgICAgLSAnbGFiZWw6ZGlzYWJsZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJy92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrJwogICAgICAtICdydW5uZXItZGF0YTovcnVubmVyJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJwcyBhdXggfCBncmVwICdbUl11bm5lcicgPiAvZGV2L251bGwgfHwgZXhpdCAxIgogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "tags": [
+ "github",
+ "actions",
+ "runner",
+ "docker"
+ ],
+ "logo": "svgs/github-runner.png",
+ "minversion": "0.0.0"
+ },
+ "gitlab": {
+ "documentation": "https://docs.gitlab.com/ee/install/docker.html?utm_source=coolify.io",
+ "slogan": "The all-in-one DevOps platform for seamless collaboration and continuous delivery.",
+ "compose": "c2VydmljZXM6CiAgZ2l0bGFiOgogICAgaW1hZ2U6ICdnaXRsYWIvZ2l0bGFiLWNlOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0dJVExBQl84MAogICAgICAtICdUWj0ke1RaOi1VVEN9JwogICAgICAtICdHSVRMQUJfVElNRVpPTkU9JHtHSVRMQUJfVElNRVpPTkU6LVVUQ30nCiAgICAgIC0gR0lUTEFCX1JPT1RfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfR0lUTEFCCiAgICAgIC0gRVhURVJOQUxfVVJMPSRTRVJWSUNFX1VSTF9HSVRMQUIKICAgICAgLSBHSVRMQUJfSE9TVD0kU0VSVklDRV9VUkxfR0lUTEFCCiAgICAgIC0gJ0dJVExBQl9TTVRQX0VOQUJMRT0ke0dJVExBQl9TTVRQX0VOQUJMRTotZmFsc2V9JwogICAgICAtIEdJVExBQl9TTVRQX0FERFJFU1M9JEdJVExBQl9TTVRQX0FERFJFU1MKICAgICAgLSAnR0lUTEFCX1NNVFBfUE9SVD0ke0dJVExBQl9TTVRQX1BPUlQ6LTU4N30nCiAgICAgIC0gJ0dJVExBQl9TTVRQX1VTRVJfTkFNRT0ke0dJVExBQl9TTVRQX1VTRVJfTkFNRX0nCiAgICAgIC0gJ0dJVExBQl9TTVRQX1BBU1NXT1JEPSR7R0lUTEFCX1NNVFBfUEFTU1dPUkR9JwogICAgICAtICdHSVRMQUJfU01UUF9ET01BSU49JHtHSVRMQUJfU01UUF9ET01BSU59JwogICAgICAtICdHSVRMQUJfU1RBUlRUTFNfQVVUTz0ke0dJVExBQl9TVEFSVFRMU19BVVRPOi10cnVlfScKICAgICAgLSAnR0lUTEFCX1NNVFBfVExTPSR7R0lUTEFCX1NNVFBfVExTOi1mYWxzZX0nCiAgICAgIC0gJ0dJVExBQl9FTUFJTF9GUk9NPSR7R0lUTEFCX0VNQUlMX0ZST019JwogICAgICAtIEdJVExBQl9FTUFJTF9SRVBMWV9UTz0kR0lUTEFCX0VNQUlMX1JFUExZX1RPCiAgICAgIC0gJ0dJVExBQl9PTU5JQlVTX0NPTkZJRz1leHRlcm5hbF91cmwgIiR7U0VSVklDRV9VUkxfR0lUTEFCfSI7IG5naW54WyJsaXN0ZW5faHR0cHMiXSA9IGZhbHNlOyBuZ2lueFsibGlzdGVuX3BvcnQiXSA9IDgwOyBnaXRsYWJfcmFpbHNbImdpdGxhYl9zaGVsbF9zc2hfcG9ydCJdID0gMjIyMjsgZ2l0bGFiX3JhaWxzWyJzbXRwX2VuYWJsZSJdID0gJHtHSVRMQUJfU01UUF9FTkFCTEV9OyBnaXRsYWJfcmFpbHNbInNtdHBfYWRkcmVzcyJdID0gIiR7R0lUTEFCX1NNVFBfQUREUkVTU30iOyBnaXRsYWJfcmFpbHNbInNtdHBfcG9ydCJdID0gJHtHSVRMQUJfU01UUF9QT1JUfTsgZ2l0bGFiX3JhaWxzWyJzbXRwX3VzZXJfbmFtZSJdID0gIiR7R0lUTEFCX1NNVFBfVVNFUl9OQU1FfSI7IGdpdGxhYl9yYWlsc1sic210cF9wYXNzd29yZCJdID0gIiR7R0lUTEFCX1NNVFBfUEFTU1dPUkR9IjsgZ2l0bGFiX3JhaWxzWyJzbXRwX2RvbWFpbiJdID0gIiR7R0lUTEFCX1NNVFBfRE9NQUlOfSI7IGdpdGxhYl9yYWlsc1sic210cF9hdXRoZW50aWNhdGlvbiJdID0gImxvZ2luIjsgZ2l0bGFiX3JhaWxzWyJzbXRwX2VuYWJsZV9zdGFydHRsc19hdXRvIl0gPSAke0dJVExBQl9TVEFSVFRMU19BVVRPfTsgZ2l0bGFiX3JhaWxzWyJzbXRwX3RscyJdID0gJHtHSVRMQUJfU01UUF9UTFN9OyBnaXRsYWJfcmFpbHNbImdpdGxhYl9lbWFpbF9mcm9tIl0gPSAiJHtHSVRMQUJfRU1BSUxfRlJPTX0iOyBnaXRsYWJfcmFpbHNbImdpdGxhYl9lbWFpbF9yZXBseV90byJdID0gIiR7R0lUTEFCX0VNQUlMX1JFUExZX1RPfSI7JwogICAgcG9ydHM6CiAgICAgIC0gJzIyMjI6MjInCiAgICB2b2x1bWVzOgogICAgICAtICdnaXRsYWItY29uZmlnOi9ldGMvZ2l0bGFiJwogICAgICAtICdnaXRsYWItbG9nczovdmFyL2xvZy9naXRsYWInCiAgICAgIC0gJ2dpdGxhYi1kYXRhOi92YXIvb3B0L2dpdGxhYicKICAgIHNobV9zaXplOiAyNTZtCg==",
+ "tags": [
+ "gitlab",
+ "devops",
+ "continuousintegration",
+ "continuousdelivery",
+ "versioncontrol",
+ "collaboration",
+ "ci/cd",
+ "sourcecodemanagement",
+ "automation",
+ "codereview",
+ "agiledevelopment",
+ "projectmanagement",
+ "opensource",
+ "repositoryhosting",
+ "pipelineautomation",
+ "git",
+ "softwaredevelopment",
+ "issuetracking",
+ "teamcollaboration",
+ "deploymentautomation",
+ "securityintegration"
+ ],
+ "logo": "svgs/gitlab.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "glance": {
+ "documentation": "https://github.com/glanceapp/glance?utm_source=coolify.io",
+ "slogan": "A self-hosted dashboard that puts all your feeds in one place.",
+ "compose": "c2VydmljZXM6CiAgZ2xhbmNlOgogICAgaW1hZ2U6ICdnbGFuY2VhcHAvZ2xhbmNlOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0dMQU5DRV84MDgwCiAgICB2b2x1bWVzOgogICAgICAtICcuL2NvbmZpZzovYXBwL2NvbmZpZycKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vY29uZmlnL2dsYW5jZS55bWwKICAgICAgICB0YXJnZXQ6IC9hcHAvY29uZmlnL2dsYW5jZS55bWwKICAgICAgICBjb250ZW50OiAicGFnZXM6XG4gIC0gbmFtZTogSG9tZVxuICAgIHNlcnZlcjpcbiAgICAgIGhvc3Q6IDAuMC4wLjBcbiAgICAgIHBvcnQ6IDgwODBcbiAgICAgIGFzc2V0cy1wYXRoOiAvdXNlci9hc3NldHNcbiAgICBjb2x1bW5zOlxuICAgICAgLSBzaXplOiBzbWFsbFxuICAgICAgICB3aWRnZXRzOlxuICAgICAgICAgIC0gdHlwZTogY2FsZW5kYXJcblxuICAgICAgICAgIC0gdHlwZTogcnNzXG4gICAgICAgICAgICBsaW1pdDogMTBcbiAgICAgICAgICAgIGNvbGxhcHNlLWFmdGVyOiAzXG4gICAgICAgICAgICBjYWNoZTogM2hcbiAgICAgICAgICAgIGZlZWRzOlxuICAgICAgICAgICAgICAtIHVybDogaHR0cHM6Ly9jaWVjaGFub3cuc2tpL2F0b20ueG1sXG4gICAgICAgICAgICAgIC0gdXJsOiBodHRwczovL3d3dy5qb3Nod2NvbWVhdS5jb20vcnNzLnhtbFxuICAgICAgICAgICAgICAgIHRpdGxlOiBKb3NoIENvbWVhdVxuICAgICAgICAgICAgICAtIHVybDogaHR0cHM6Ly9zYW13aG8uZGV2L3Jzcy54bWxcbiAgICAgICAgICAgICAgLSB1cmw6IGh0dHBzOi8vYXdlc29tZWtsaW5nLmdpdGh1Yi5pby9mZWVkLnhtbFxuICAgICAgICAgICAgICAtIHVybDogaHR0cHM6Ly9pc2hhZGVlZC5jb20vZmVlZC54bWxcbiAgICAgICAgICAgICAgICB0aXRsZTogQWhtYWQgU2hhZGVlZFxuXG4gICAgICAgICAgLSB0eXBlOiB0d2l0Y2gtY2hhbm5lbHNcbiAgICAgICAgICAgIGNoYW5uZWxzOlxuICAgICAgICAgICAgICAtIHRoZXByaW1lYWdlblxuICAgICAgICAgICAgICAtIGhleWFuZHJhc1xuICAgICAgICAgICAgICAtIGNvaGhjYXJuYWdlXG4gICAgICAgICAgICAgIC0gY2hyaXN0aXR1c3RlY2hcbiAgICAgICAgICAgICAgLSBibHVyYnNcbiAgICAgICAgICAgICAgLSBhc21vbmdvbGRcbiAgICAgICAgICAgICAgLSBqZW1iYXdsc1xuXG4gICAgICAtIHNpemU6IGZ1bGxcbiAgICAgICAgd2lkZ2V0czpcbiAgICAgICAgICAtIHR5cGU6IGhhY2tlci1uZXdzXG5cbiAgICAgICAgICAtIHR5cGU6IHZpZGVvc1xuICAgICAgICAgICAgY2hhbm5lbHM6XG4gICAgICAgICAgICAgIC0gVUNSLURYYzF2b292UzhuaEF2Y2NSWmhnICMgSmVmZiBHZWVybGluZ1xuICAgICAgICAgICAgICAtIFVDdjZKX2pKYThHSnFGd1FOZ05yTXV3dyAjIFNlcnZlVGhlSG9tZVxuICAgICAgICAgICAgICAtIFVDT2stZ0h5amNXWk5qM0JyNG94d2gwQSAjIFRlY2hubyBUaW1cblxuICAgICAgICAgIC0gdHlwZTogcmVkZGl0XG4gICAgICAgICAgICBzdWJyZWRkaXQ6IHNlbGZob3N0ZWRcblxuICAgICAgLSBzaXplOiBzbWFsbFxuICAgICAgICB3aWRnZXRzOlxuICAgICAgICAgIC0gdHlwZTogd2VhdGhlclxuICAgICAgICAgICAgbG9jYXRpb246IExvbmRvbiwgVW5pdGVkIEtpbmdkb21cblxuICAgICAgICAgIC0gdHlwZTogc3RvY2tzXG4gICAgICAgICAgICBzdG9ja3M6XG4gICAgICAgICAgICAgIC0gc3ltYm9sOiBTUFlcbiAgICAgICAgICAgICAgICBuYW1lOiBTJlAgNTAwXG4gICAgICAgICAgICAgIC0gc3ltYm9sOiBCVEMtVVNEXG4gICAgICAgICAgICAgICAgbmFtZTogQml0Y29pblxuICAgICAgICAgICAgICAtIHN5bWJvbDogTlZEQVxuICAgICAgICAgICAgICAgIG5hbWU6IE5WSURJQVxuICAgICAgICAgICAgICAtIHN5bWJvbDogQUFQTFxuICAgICAgICAgICAgICAgIG5hbWU6IEFwcGxlXG4gICAgICAgICAgICAgIC0gc3ltYm9sOiBNU0ZUXG4gICAgICAgICAgICAgICAgbmFtZTogTWljcm9zb2Z0XG4gICAgICAgICAgICAgIC0gc3ltYm9sOiBHT09HTFxuICAgICAgICAgICAgICAgIG5hbWU6IEdvb2dsZVxuICAgICAgICAgICAgICAtIHN5bWJvbDogQU1EXG4gICAgICAgICAgICAgICAgbmFtZTogQU1EXG4gICAgICAgICAgICAgIC0gc3ltYm9sOiBSRERUXG4gICAgICAgICAgICAgICAgbmFtZTogUmVkZGl0IgogICAgICAtICdnbGFuY2UtYXNzZXRzOi91c2VyL2Fzc2V0cycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBlY2hvCiAgICAgICAgLSAnWytdIFNob3VsZCBiZSB3b3JraW5nIGZpbmUuJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "dashboard",
+ "server",
+ "applications",
+ "interface",
+ "rrss"
+ ],
+ "logo": "svgs/glance.png",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "glances": {
+ "documentation": "https://nicolargo.github.io/glances/?utm_source=coolify.io",
+ "slogan": "An Eye on your system",
+ "compose": "c2VydmljZXM6CiAgZ2xhbmNlczoKICAgIGltYWdlOiAnbmljb2xhcmdvL2dsYW5jZXM6bGF0ZXN0JwogICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWQKICAgIGVudmlyb25tZW50OgogICAgICAtIEdMQU5DRVNfT1BUPS13CiAgICAgIC0gU0VSVklDRV9VUkxfR0xBTkNFU182MTIwOAogICAgdm9sdW1lczoKICAgICAgLSAnL3Zhci9ydW4vZG9ja2VyLnNvY2s6L3Zhci9ydW4vZG9ja2VyLnNvY2s6cm8nCiAgICAgIC0gJy9ydW4vdXNlci8xMDAwL3BvZG1hbi9wb2RtYW4uc29jazovcnVuL3VzZXIvMTAwMC9wb2RtYW4vcG9kbWFuLnNvY2s6cm8nCiAgICBwaWQ6IGhvc3QKICAgIHByaXZpbGVnZWQ6IHRydWUKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo2MTIwOCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzMAo=",
+ "tags": [
+ "monitoring tool python cross platform"
+ ],
+ "logo": "svgs/glances.png",
+ "minversion": "0.0.0",
+ "port": "61208"
+ },
+ "glitchtip": {
+ "documentation": "https://glitchtip.com?utm_source=coolify.io",
+ "slogan": "GlitchTip is a self-hosted, open-source error tracking system.",
+ "compose": "c2VydmljZXM6CiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTUUx9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNRTH0nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNRTF9EQVRBQkFTRTotZ2xpdGNodGlwfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2dsaXRjaHRpcC1wb3N0Z3Jlcy1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICByZWRpczoKICAgIGltYWdlOiByZWRpcwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgd2ViOgogICAgaW1hZ2U6IGdsaXRjaHRpcC9nbGl0Y2h0aXAKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9HTElUQ0hUSVBfODA4MAogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8kU0VSVklDRV9VU0VSX1BPU1RHUkVTUUw6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNRTEBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNRTF9EQVRBQkFTRTotZ2xpdGNodGlwfScKICAgICAgLSBTRUNSRVRfS0VZPSRTRVJWSUNFX0JBU0U2NF82NF9FTkNSWVBUSU9OCiAgICAgIC0gJ0VNQUlMX1VSTD0ke0VNQUlMX1VSTDotY29uc29sZW1haWw6Ly99JwogICAgICAtICdHTElUQ0hUSVBfRE9NQUlOPSR7U0VSVklDRV9VUkxfR0xJVENIVElQfScKICAgICAgLSAnREVGQVVMVF9GUk9NX0VNQUlMPSR7REVGQVVMVF9GUk9NX0VNQUlMOi10ZXN0QGV4YW1wbGUuY29tfScKICAgICAgLSAnQ0VMRVJZX1dPUktFUl9BVVRPU0NBTEU9JHtDRUxFUllfV09SS0VSX0FVVE9TQ0FMRTotMSwzfScKICAgICAgLSAnQ0VMRVJZX1dPUktFUl9NQVhfVEFTS1NfUEVSX0NISUxEPSR7Q0VMRVJZX1dPUktFUl9NQVhfVEFTS1NfUEVSX0NISUxEOi0xMDAwMH0nCiAgICB2b2x1bWVzOgogICAgICAtICd1cGxvYWRzOi9jb2RlL3VwbG9hZHMnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gZWNobwogICAgICAgIC0gb2sKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHdvcmtlcjoKICAgIGltYWdlOiBnbGl0Y2h0aXAvZ2xpdGNodGlwCiAgICBjb21tYW5kOiAuL2Jpbi9ydW4tY2VsZXJ5LXdpdGgtYmVhdC5zaAogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGVudmlyb25tZW50OgogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8kU0VSVklDRV9VU0VSX1BPU1RHUkVTUUw6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNRTEBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNRTF9EQVRBQkFTRTotZ2xpdGNodGlwfScKICAgICAgLSBTRUNSRVRfS0VZPSRTRVJWSUNFX0JBU0U2NF82NF9FTkNSWVBUSU9OCiAgICAgIC0gJ0VNQUlMX1VSTD0ke0VNQUlMX1VSTDotY29uc29sZW1haWw6Ly99JwogICAgICAtICdHTElUQ0hUSVBfRE9NQUlOPSR7U0VSVklDRV9VUkxfR0xJVENIVElQfScKICAgICAgLSAnREVGQVVMVF9GUk9NX0VNQUlMPSR7REVGQVVMVF9GUk9NX0VNQUlMOi10ZXN0QGV4YW1wbGUuY29tfScKICAgICAgLSAnQ0VMRVJZX1dPUktFUl9BVVRPU0NBTEU9JHtDRUxFUllfV09SS0VSX0FVVE9TQ0FMRTotMSwzfScKICAgICAgLSAnQ0VMRVJZX1dPUktFUl9NQVhfVEFTS1NfUEVSX0NISUxEPSR7Q0VMRVJZX1dPUktFUl9NQVhfVEFTS1NfUEVSX0NISUxEOi0xMDAwMH0nCiAgICB2b2x1bWVzOgogICAgICAtICd1cGxvYWRzOi9jb2RlL3VwbG9hZHMnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gZWNobwogICAgICAgIC0gb2sKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIG1pZ3JhdGU6CiAgICBpbWFnZTogZ2xpdGNodGlwL2dsaXRjaHRpcAogICAgcmVzdGFydDogJ25vJwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGNvbW1hbmQ6ICcuL21hbmFnZS5weSBtaWdyYXRlJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVNRTDokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMQHBvc3RncmVzOjU0MzIvJHtQT1NUR1JFU1FMX0RBVEFCQVNFOi1nbGl0Y2h0aXB9JwogICAgICAtIFNFQ1JFVF9LRVk9JFNFUlZJQ0VfQkFTRTY0XzY0X0VOQ1JZUFRJT04KICAgICAgLSAnRU1BSUxfVVJMPSR7RU1BSUxfVVJMOi1jb25zb2xlbWFpbDovL30nCiAgICAgIC0gJ0RFRkFVTFRfRlJPTV9FTUFJTD0ke0RFRkFVTFRfRlJPTV9FTUFJTDotdGVzdEBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ0NFTEVSWV9XT1JLRVJfQVVUT1NDQUxFPSR7Q0VMRVJZX1dPUktFUl9BVVRPU0NBTEU6LTEsM30nCiAgICAgIC0gJ0NFTEVSWV9XT1JLRVJfTUFYX1RBU0tTX1BFUl9DSElMRD0ke0NFTEVSWV9XT1JLRVJfTUFYX1RBU0tTX1BFUl9DSElMRDotMTAwMDB9Jwo=",
+ "tags": [
+ "error",
+ "tracking",
+ "open-source",
+ "self-hosted",
+ "sentry"
+ ],
+ "logo": "svgs/glitchtip.png",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "gotenberg": {
+ "documentation": "https://gotenberg.dev/docs/getting-started/introduction?utm_source=coolify.io",
+ "slogan": "Gotenberg is a Docker-powered stateless API for PDF files.",
+ "compose": "c2VydmljZXM6CiAgZ290ZW5iZXJnOgogICAgaW1hZ2U6ICdnb3RlbmJlcmcvZ290ZW5iZXJnOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0dPVEVOQkVSR18zMDAwCiAgICAgIC0gJ0dPVEVOQkVSR19BUElfQkFTSUNfQVVUSF9VU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9HT1RFTkJFUkd9JwogICAgICAtICdHT1RFTkJFUkdfQVBJX0JBU0lDX0FVVEhfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0dPVEVOQkVSR30nCiAgICBjb21tYW5kOgogICAgICAtIGdvdGVuYmVyZwogICAgICAtICctLWFwaS1lbmFibGUtYmFzaWMtYXV0aCcKICAgICAgLSAnLS1hcGktZGlzYWJsZS1oZWFsdGgtY2hlY2stbG9nZ2luZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTozMDAwL2hlYWx0aCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "api",
+ "backend",
+ "pdf",
+ "tool"
+ ],
+ "logo": "svgs/gotenberg.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "gowa": {
+ "documentation": "https://github.com/aldinokemal/go-whatsapp-web-multidevice?utm_source=coolify.io",
+ "slogan": "Golang WhatsApp - Built with Go for efficient memory use",
+ "compose": "c2VydmljZXM6CiAgZ293YToKICAgIGltYWdlOiAnYWxkaW5va2VtYWwyMTA0L2dvLXdoYXRzYXBwLXdlYi1tdWx0aWRldmljZTpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9HT1dBXzMwMDAKICAgICAgLSBTRVJWSUNFX1VTRVJfR09XQQogICAgICAtIFNFUlZJQ0VfUEFTU1dPUkRfR09XQQogICAgICAtICdBUFBfQkFTSUNfQVVUSD0ke1NFUlZJQ0VfVVNFUl9HT1dBfToke1NFUlZJQ0VfUEFTU1dPUkRfR09XQX0nCiAgICAgIC0gQVBQX1BPUlQ9MzAwMAogICAgICAtICdBUFBfREVCVUc9JHtBUFBfREVCVUc6LWZhbHNlfScKICAgICAgLSAnQVBQX0FDQ09VTlRfVkFMSURBVElPTj0ke0FQUF9BQ0NPVU5UX1ZBTElEQVRJT046LWZhbHNlfScKICAgICAgLSAnV0hBVFNBUFBfV0VCSE9PSz0ke1dIQVRTQVBQX1dFQkhPT0t9JwogICAgICAtICdXSEFUU0FQUF9XRUJIT09LX1NFQ1JFVD0ke1dIQVRTQVBQX1dFQkhPT0tfU0VDUkVUfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2dvd2FfZGF0YTovYXBwL3N0b3JhZ2VzJwo=",
+ "tags": [
+ "whatsapp",
+ "golang",
+ "multidevice",
+ "api",
+ "go-whatsapp"
+ ],
+ "logo": "svgs/gowa.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "grafana-with-postgresql": {
+ "documentation": "https://grafana.com?utm_source=coolify.io",
+ "slogan": "Grafana is the open source analytics & monitoring solution for every database.",
+ "compose": "c2VydmljZXM6CiAgZ3JhZmFuYToKICAgIGltYWdlOiBncmFmYW5hL2dyYWZhbmEtb3NzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9HUkFGQU5BXzMwMDAKICAgICAgLSAnR0ZfU0VSVkVSX1JPT1RfVVJMPSR7U0VSVklDRV9VUkxfR1JBRkFOQX0nCiAgICAgIC0gJ0dGX1NFUlZFUl9ET01BSU49JHtTRVJWSUNFX1VSTF9HUkFGQU5BfScKICAgICAgLSAnR0ZfU0VDVVJJVFlfQURNSU5fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0dSQUZBTkF9JwogICAgICAtIEdGX0RBVEFCQVNFX1RZUEU9cG9zdGdyZXMKICAgICAgLSBHRl9EQVRBQkFTRV9IT1NUPXBvc3RncmVzcWwKICAgICAgLSBHRl9EQVRBQkFTRV9VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBHRl9EQVRBQkFTRV9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtICdHRl9EQVRBQkFTRV9OQU1FPSR7UE9TVEdSRVNfREI6LWdyYWZhbmF9JwogICAgdm9sdW1lczoKICAgICAgLSAnZ3JhZmFuYS1kYXRhOi92YXIvbGliL2dyYWZhbmEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMC9hcGkvaGVhbHRoJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgICBkZXBlbmRzX29uOgogICAgICAtIHBvc3RncmVzcWwKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdwb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotZ3JhZmFuYX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "grafana",
+ "analytics",
+ "monitoring",
+ "dashboard"
+ ],
+ "logo": "svgs/grafana.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "grafana": {
+ "documentation": "https://grafana.com?utm_source=coolify.io",
+ "slogan": "Grafana is the open source analytics & monitoring solution for every database.",
+ "compose": "c2VydmljZXM6CiAgZ3JhZmFuYToKICAgIGltYWdlOiBncmFmYW5hL2dyYWZhbmEtb3NzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9HUkFGQU5BXzMwMDAKICAgICAgLSAnR0ZfU0VSVkVSX1JPT1RfVVJMPSR7U0VSVklDRV9VUkxfR1JBRkFOQX0nCiAgICAgIC0gJ0dGX1NFUlZFUl9ET01BSU49JHtTRVJWSUNFX1VSTF9HUkFGQU5BfScKICAgICAgLSAnR0ZfU0VDVVJJVFlfQURNSU5fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0dSQUZBTkF9JwogICAgdm9sdW1lczoKICAgICAgLSAnZ3JhZmFuYS1kYXRhOi92YXIvbGliL2dyYWZhbmEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMC9hcGkvaGVhbHRoJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "grafana",
+ "analytics",
+ "monitoring",
+ "dashboard"
+ ],
+ "logo": "svgs/grafana.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "grist": {
+ "documentation": "https://support.getgrist.com/?utm_source=coolify.io",
+ "slogan": "Grist is a modern relational spreadsheet. It combines the flexibility of a spreadsheet with the robustness of a database.",
+ "compose": "c2VydmljZXM6CiAgZ3Jpc3Q6CiAgICBpbWFnZTogJ2dyaXN0bGFicy9ncmlzdDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9HUklTVF80NDMKICAgICAgLSAnQVBQX0hPTUVfVVJMPSR7U0VSVklDRV9VUkxfR1JJU1R9JwogICAgICAtICdBUFBfRE9DX1VSTD0ke1NFUlZJQ0VfVVJMX0dSSVNUfScKICAgICAgLSAnR1JJU1RfRE9NQUlOPSR7U0VSVklDRV9VUkxfR1JJU1R9JwogICAgICAtICdUWj0ke1RaOi1VVEN9JwogICAgICAtICdHUklTVF9TVVBQT1JUX0FOT049JHtTVVBQT1JUX0FOT046LWZhbHNlfScKICAgICAgLSAnR1JJU1RfRk9SQ0VfTE9HSU49JHtGT1JDRV9MT0dJTjotdHJ1ZX0nCiAgICAgIC0gJ0NPT0tJRV9NQVhfQUdFPSR7Q09PS0lFX01BWF9BR0U6LTg2NDAwMDAwfScKICAgICAgLSAnR1JJU1RfUEFHRV9USVRMRV9TVUZGSVg9JHtQQUdFX1RJVExFX1NVRkZJWDotIC0gU3VmZml4fScKICAgICAgLSAnR1JJU1RfSElERV9VSV9FTEVNRU5UUz0ke0hJREVfVUlfRUxFTUVOVFM6LWJpbGxpbmcsc2VuZFRvRHJpdmUsc3VwcG9ydEdyaXN0LG11bHRpQWNjb3VudHMsdHV0b3JpYWxzfScKICAgICAgLSAnR1JJU1RfVUlfRkVBVFVSRVM9JHtVSV9GRUFUVVJFUzotaGVscENlbnRlcixiaWxsaW5nLHRlbXBsYXRlcyxjcmVhdGVTaXRlLG11bHRpU2l0ZSxzZW5kVG9Ecml2ZSx0dXRvcmlhbHMsc3VwcG9ydEdyaXN0fScKICAgICAgLSAnR1JJU1RfREVGQVVMVF9FTUFJTD0ke0RFRkFVTFRfRU1BSUw6LXRlc3RAZXhhbXBsZS5jb219JwogICAgICAtICdHUklTVF9PUkdfSU5fUEFUSD0ke09SR19JTl9QQVRIOi10cnVlfScKICAgICAgLSAnR1JJU1RfT0lEQ19TUF9IT1NUPSR7U0VSVklDRV9VUkxfR1JJU1R9JwogICAgICAtICdHUklTVF9PSURDX0lEUF9TQ09QRVM9JHtPSURDX0lEUF9TQ09QRVM6LW9wZW5pZCBwcm9maWxlIGVtYWlsfScKICAgICAgLSAnR1JJU1RfT0lEQ19JRFBfU0tJUF9FTkRfU0VTU0lPTl9FTkRQT0lOVD0ke09JRENfSURQX1NLSVBfRU5EX1NFU1NJT05fRU5EUE9JTlQ6LWZhbHNlfScKICAgICAgLSAnR1JJU1RfT0lEQ19JRFBfSVNTVUVSPSR7T0lEQ19JRFBfSVNTVUVSOj99JwogICAgICAtICdHUklTVF9PSURDX0lEUF9DTElFTlRfSUQ9JHtPSURDX0lEUF9DTElFTlRfSUQ6P30nCiAgICAgIC0gJ0dSSVNUX09JRENfSURQX0NMSUVOVF9TRUNSRVQ9JHtPSURDX0lEUF9DTElFTlRfU0VDUkVUOj99JwogICAgICAtICdHUklTVF9TRVNTSU9OX1NFQ1JFVD0ke1NFUlZJQ0VfUkVBTEJBU0U2NF8xMjh9JwogICAgICAtICdHUklTVF9IT01FX0lOQ0xVREVfU1RBVElDPSR7SE9NRV9JTkNMVURFX1NUQVRJQzotdHJ1ZX0nCiAgICAgIC0gJ0dSSVNUX1NBTkRCT1hfRkxBVk9SPSR7U0FOREJPWF9GTEFWT1I6LWd2aXNvcn0nCiAgICAgIC0gJ0FMTE9XRURfV0VCSE9PS19ET01BSU5TPSR7QUxMT1dFRF9XRUJIT09LX0RPTUFJTlN9JwogICAgICAtICdDT01NRU5UUz0ke0NPTU1FTlRTOi10cnVlfScKICAgICAgLSAnVFlQRU9STV9UWVBFPSR7VFlQRU9STV9UWVBFOi1wb3N0Z3Jlc30nCiAgICAgIC0gJ1RZUEVPUk1fREFUQUJBU0U9JHtQT1NUR1JFU19EQVRBQkFTRTotZ3Jpc3QtZGJ9JwogICAgICAtICdUWVBFT1JNX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnVFlQRU9STV9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdUWVBFT1JNX0hPU1Q9JHtUWVBFT1JNX0hPU1R9JwogICAgICAtICdUWVBFT1JNX1BPUlQ9JHtUWVBFT1JNX1BPUlQ6LTU0MzJ9JwogICAgICAtICdUWVBFT1JNX0xPR0dJTkc9JHtUWVBFT1JNX0xPR0dJTkc6LWZhbHNlfScKICAgICAgLSAnUkVESVNfVVJMPSR7UkVESVNfVVJMOi1yZWRpczovL3JlZGlzOjYzNzl9JwogICAgICAtICdHUklTVF9IRUxQX0NFTlRFUj0ke1NFUlZJQ0VfVVJMX0dSSVNUfS9oZWxwJwogICAgICAtICdHUklTVF9URVJNU19PRl9TRVJWSUNFX1VSTD0ke1NFUlZJQ0VfVVJMX0dSSVNUfS90ZXJtcycKICAgICAgLSAnRlJFRV9DT0FDSElOR19DQUxMX1VSTD0ke0ZSRUVfQ09BQ0hJTkdfQ0FMTF9VUkx9JwogICAgICAtICdHUklTVF9DT05UQUNUX1NVUFBPUlRfVVJMPSR7Q09OVEFDVF9TVVBQT1JUX1VSTH0nCiAgICB2b2x1bWVzOgogICAgICAtICdncmlzdC1kYXRhOi9wZXJzaXN0JwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBub2RlCiAgICAgICAgLSAnLWUnCiAgICAgICAgLSAicmVxdWlyZSgnaHR0cCcpLmdldCgnaHR0cDovL2xvY2FsaG9zdDo4NDg0L3N0YXR1cycsIHJlcyA9PiBwcm9jZXNzLmV4aXQocmVzLnN0YXR1c0NvZGUgPT09IDIwMCA/IDAgOiAxKSkiCiAgICAgICAgLSAnPiAvZGV2L251bGwgMj4mMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNicKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RBVEFCQVNFOi1ncmlzdC1kYn0nCiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgdm9sdW1lczoKICAgICAgLSAnZ3Jpc3RfcG9zdGdyZXNfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDIwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjcnCiAgICB2b2x1bWVzOgogICAgICAtICdncmlzdF9yZWRpc19kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gUElORwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDIwCg==",
+ "tags": [
+ "lowcode",
+ "nocode",
+ "spreadsheet",
+ "database",
+ "relational"
+ ],
+ "logo": "svgs/grist.svg",
+ "minversion": "0.0.0",
+ "port": "443"
+ },
+ "grocy": {
+ "documentation": "https://github.com/grocy/grocy?utm_source=coolify.io",
+ "slogan": "Grocy is a web-based household management and grocery list application.",
+ "compose": "c2VydmljZXM6CiAgZ3JvY3k6CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvZ3JvY3k6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfR1JPQ1kKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSBUWj1FdXJvcGUvTWFkcmlkCiAgICB2b2x1bWVzOgogICAgICAtICdncm9jeS1jb25maWc6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "groceries",
+ "household",
+ "management",
+ "grocery",
+ "shopping"
+ ],
+ "logo": "svgs/grocy.svg",
+ "minversion": "0.0.0"
+ },
+ "heimdall": {
+ "documentation": "https://github.com/linuxserver/Heimdall?utm_source=coolify.io",
+ "slogan": "Heimdall is a dashboard for managing and organizing your server applications.",
+ "compose": "c2VydmljZXM6CiAgaGVpbWRhbGw6CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvaGVpbWRhbGw6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfSEVJTURBTEwKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSBUWj1FdXJvcGUvTWFkcmlkCiAgICB2b2x1bWVzOgogICAgICAtICdoZWltZGFsbC1jb25maWc6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "dashboard",
+ "server",
+ "applications",
+ "interface"
+ ],
+ "logo": "svgs/heimdall.svg",
+ "minversion": "0.0.0"
+ },
+ "heyform": {
+ "documentation": "https://docs.heyform.net/open-source/self-hosting?utm_source=coolify.io",
+ "slogan": "Allows anyone to create engaging conversational forms for surveys, questionnaires, quizzes, and polls. No coding skills required.",
+ "compose": "c2VydmljZXM6CiAgaGV5Zm9ybToKICAgIGltYWdlOiAnaGV5Zm9ybS9jb21tdW5pdHktZWRpdGlvbjpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdoZXlmb3JtLWFzc2V0czovYXBwL3N0YXRpYy91cGxvYWQnCiAgICBkZXBlbmRzX29uOgogICAgICBtb25nbzoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBrZXlkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfSEVZRk9STV84MDAwCiAgICAgIC0gJ0FQUF9IT01FUEFHRV9VUkw9JHtTRVJWSUNFX1VSTF9IRVlGT1JNfScKICAgICAgLSAnU0VTU0lPTl9LRVk9JHtTRVJWSUNFX0JBU0U2NF82NF9TRVNTSU9OfScKICAgICAgLSAnRk9STV9FTkNSWVBUSU9OX0tFWT0ke1NFUlZJQ0VfQkFTRTY0XzY0X0ZPUk19JwogICAgICAtICdNT05HT19VUkk9bW9uZ29kYjovL21vbmdvOjI3MDE3L2hleWZvcm0nCiAgICAgIC0gUkVESVNfSE9TVD1rZXlkYgogICAgICAtIFJFRElTX1BPUlQ9NjM3OQogICAgICAtICdSRURJU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfS0VZREJ9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC1xTy0gaHR0cDovLzEyNy4wLjAuMTo4MDAwIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDMKICBtb25nbzoKICAgIGltYWdlOiAncGVyY29uYS9wZXJjb25hLXNlcnZlci1tb25nb2RiOmxhdGVzdCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2hleWZvcm0tbW9uZ28tZGF0YTovZGF0YS9kYicKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAiZWNobyAnb2snID4gL2Rldi9udWxsIDI+JjEiCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMAogICAgICBzdGFydF9wZXJpb2Q6IDVzCiAga2V5ZGI6CiAgICBpbWFnZTogJ2VxYWxwaGEva2V5ZGI6bGF0ZXN0JwogICAgY29tbWFuZDogJ2tleWRiLXNlcnZlciAtLWFwcGVuZG9ubHkgeWVzJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0tFWURCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9LRVlEQn0nCiAgICB2b2x1bWVzOgogICAgICAtICdoZXlmb3JtLWtleWRiLWRhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0ga2V5ZGItY2xpCiAgICAgICAgLSAnLS1wYXNzJwogICAgICAgIC0gJyR7U0VSVklDRV9QQVNTV09SRF9LRVlEQn0nCiAgICAgICAgLSBwaW5nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMAogICAgICBzdGFydF9wZXJpb2Q6IDVzCg==",
+ "tags": [
+ "form",
+ "builder",
+ "forms",
+ "survey",
+ "quiz",
+ "open source",
+ "self-hosted",
+ "docker"
+ ],
+ "logo": "svgs/heyform.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "homarr": {
+ "documentation": "https://homarr.dev?utm_source=coolify.io",
+ "slogan": "Homarr is a self-hosted homepage for your services.",
+ "compose": "c2VydmljZXM6CiAgaG9tYXJyOgogICAgaW1hZ2U6ICdnaGNyLmlvL2FqbmFydC9ob21hcnI6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfSE9NQVJSXzc1NzUKICAgIHZvbHVtZXM6CiAgICAgIC0gJy92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrJwogICAgICAtICcuL2hvbWFyci9jb25maWdzOi9hcHAvZGF0YS9jb25maWdzJwogICAgICAtICcuL2hvbWFyci9pY29uczovYXBwL3B1YmxpYy9pY29ucycKICAgICAgLSAnLi9ob21hcnIvZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLXEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo3NTc1JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "homarr",
+ "self-hosted",
+ "homepage"
+ ],
+ "logo": "svgs/homarr.svg",
+ "minversion": "0.0.0",
+ "port": "7575"
+ },
+ "homebox": {
+ "documentation": "https://github.com/sysadminsmedia/homebox?utm_source=coolify.io",
+ "slogan": "Homebox is the inventory and organization system built for the Home User.",
+ "compose": "c2VydmljZXM6CiAgaG9tZWJveDoKICAgIGltYWdlOiAnZ2hjci5pby9zeXNhZG1pbnNtZWRpYS9ob21lYm94OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0hPTUVCT1hfNzc0NQogICAgICAtICdIQk9YX09QVElPTlNfQUxMT1dfUkVHSVNUUkFUSU9OPSR7SEJPWF9PUFRJT05TX0FMTE9XX1JFR0lTVFJBVElPTjotZmFsc2V9JwogICAgICAtICdIQk9YX0xPR19MRVZFTD0ke0hCT1hfTE9HX0xFVkVMOi1pbmZvfScKICAgICAgLSAnSEJPWF9MT0dfRk9STUFUPSR7SEJPWF9MT0dfRk9STUFUOi10ZXh0fScKICAgICAgLSAnSEJPWF9XRUJfTUFYX1VQTE9BRF9TSVpFPSR7SEJPWF9XRUJfTUFYX1VQTE9BRF9TSVpFOi0xMH0nCiAgICAgIC0gJ0hCT1hfTUFJTEVSX0hPU1Q9JHtIQk9YX01BSUxFUl9IT1NUfScKICAgICAgLSAnSEJPWF9NQUlMRVJfUE9SVD0ke0hCT1hfTUFJTEVSX1BPUlQ6LTU4N30nCiAgICAgIC0gJ0hCT1hfTUFJTEVSX1VTRVJOQU1FPSR7SEJPWF9NQUlMRVJfVVNFUk5BTUV9JwogICAgICAtICdIQk9YX01BSUxFUl9QQVNTV09SRD0ke0hCT1hfTUFJTEVSX1BBU1NXT1JEfScKICAgICAgLSAnSEJPWF9NQUlMRVJfRlJPTT0ke0hCT1hfTUFJTEVSX0ZST019JwogICAgdm9sdW1lczoKICAgICAgLSAnaG9tZWJveC1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHNoCiAgICAgICAgLSAnLWMnCiAgICAgICAgLSAnd2dldCAtLW1ldGhvZD1HRVQgLXFPLSBodHRwOi8vbG9jYWxob3N0Ojc3NDUvYXBpL3YxL3N0YXR1cyA+IC9kZXYvbnVsbCB8fCBleGl0IDEnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "inventory",
+ "home",
+ "organize"
+ ],
+ "logo": "svgs/homebox.svg",
+ "minversion": "0.0.0",
+ "port": "7745"
+ },
+ "homepage": {
+ "documentation": "https://gethomepage.dev/latest/?utm_source=coolify.io",
+ "slogan": "A modern, fully static, fast, secure fully proxied, highly customizable application dashboard",
+ "compose": "c2VydmljZXM6CiAgaG9tZXBhZ2U6CiAgICBpbWFnZTogJ2doY3IuaW8vZ2V0aG9tZXBhZ2UvaG9tZXBhZ2U6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfSE9NRVBBR0VfMzAwMAogICAgICAtICdIT01FUEFHRV9WQVJfQkFTRT0ke1NFUlZJQ0VfVVJMX0hPTUVQQUdFfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJy92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrOnJvJwogICAgICAtICcuL2ltYWdlczovYXBwL3B1YmxpYy9pbWFnZXMnCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2NvbmZpZy9ib29rbWFya3MueWFtbAogICAgICAgIHRhcmdldDogL2FwcC9jb25maWcvYm9va21hcmtzLnlhbWwKICAgICAgICBjb250ZW50OiAiLS0tXG4jIEZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGV4YW1wbGVzLCBwbGVhc2Ugc2VlOlxuIyBodHRwczovL2dldGhvbWVwYWdlLmRldi9jb25maWdzL2Jvb2ttYXJrc1xuXG4tIERldmVsb3BlcjpcbiAgICAtIEdpdGh1YjpcbiAgICAgICAgLSBhYmJyOiBHSFxuICAgICAgICAgIGhyZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9cblxuLSBTb2NpYWw6XG4gICAgLSBSZWRkaXQ6XG4gICAgICAgIC0gYWJicjogUkVcbiAgICAgICAgICBocmVmOiBodHRwczovL3JlZGRpdC5jb20vXG5cbi0gRW50ZXJ0YWlubWVudDpcbiAgICAtIFlvdVR1YmU6XG4gICAgICAgIC0gYWJicjogWVRcbiAgICAgICAgICBocmVmOiBodHRwczovL3lvdXR1YmUuY29tL1xuIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9jb25maWcvY3VzdG9tLmNzcwogICAgICAgIHRhcmdldDogL2FwcC9jb25maWcvY3VzdG9tLmNzcwogICAgICAgIGNvbnRlbnQ6ICcnCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2NvbmZpZy9jdXN0b20uanMKICAgICAgICB0YXJnZXQ6IC9hcHAvY29uZmlnL2N1c3RvbS5qcwogICAgICAgIGNvbnRlbnQ6ICcnCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2NvbmZpZy9kb2NrZXIueWFtbAogICAgICAgIHRhcmdldDogL2FwcC9jb25maWcvZG9ja2VyLnlhbWwKICAgICAgICBjb250ZW50OiAiLS0tXG4jIEZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGV4YW1wbGVzLCBwbGVhc2Ugc2VlOlxuIyBodHRwczovL2dldGhvbWVwYWdlLmRldi9jb25maWdzL2RvY2tlci9cblxuIyBteS1kb2NrZXI6XG4jICAgaG9zdDogMTI3LjAuMC4xXG4jICAgcG9ydDogMjM3NVxuXG4jIG15LWRvY2tlcjpcbiMgICBzb2NrZXQ6IC92YXIvcnVuL2RvY2tlci5zb2NrXG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2NvbmZpZy9rdWJlcm5ldGVzLnlhbWwKICAgICAgICB0YXJnZXQ6IC9hcHAvY29uZmlnL2t1YmVybmV0ZXMueWFtbAogICAgICAgIGNvbnRlbnQ6ICItLS1cbiMgc2FtcGxlIGt1YmVybmV0ZXMgY29uZmlnXG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2NvbmZpZy9zZXJ2aWNlcy55YW1sCiAgICAgICAgdGFyZ2V0OiAvYXBwL2NvbmZpZy9zZXJ2aWNlcy55YW1sCiAgICAgICAgY29udGVudDogIi0tLVxuIyBGb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBleGFtcGxlcywgcGxlYXNlIHNlZTpcbiMgaHR0cHM6Ly9nZXRob21lcGFnZS5kZXYvY29uZmlncy9zZXJ2aWNlc1xuXG4tIE15IEZpcnN0IEdyb3VwOlxuICAgIC0gTXkgRmlyc3QgU2VydmljZTpcbiAgICAgICAgaHJlZjogaHR0cDovL2xvY2FsaG9zdC9cbiAgICAgICAgZGVzY3JpcHRpb246IEhvbWVwYWdlIGlzIGF3ZXNvbWVcblxuLSBNeSBTZWNvbmQgR3JvdXA6XG4gICAgLSBNeSBTZWNvbmQgU2VydmljZTpcbiAgICAgICAgaHJlZjogaHR0cDovL2xvY2FsaG9zdC9cbiAgICAgICAgZGVzY3JpcHRpb246IEhvbWVwYWdlIGlzIHRoZSBiZXN0XG5cbi0gTXkgVGhpcmQgR3JvdXA6XG4gICAgLSBNeSBUaGlyZCBTZXJ2aWNlOlxuICAgICAgICBocmVmOiBodHRwOi8vbG9jYWxob3N0L1xuICAgICAgICBkZXNjcmlwdGlvbjogSG9tZXBhZ2UgaXMg8J+YjlxuIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9jb25maWcvc2V0dGluZ3MueWFtbAogICAgICAgIHRhcmdldDogL2FwcC9jb25maWcvc2V0dGluZ3MueWFtbAogICAgICAgIGNvbnRlbnQ6ICItLS1cbiMgRm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZXhhbXBsZXMsIHBsZWFzZSBzZWU6XG4jIGh0dHBzOi8vZ2V0aG9tZXBhZ2UuZGV2L2NvbmZpZ3Mvc2V0dGluZ3NcblxucHJvdmlkZXJzOlxuICBvcGVud2VhdGhlcm1hcDogb3BlbndlYXRoZXJtYXBhcGlrZXlcbiAgd2VhdGhlcmFwaTogd2VhdGhlcmFwaWFwaWtleVxuIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9jb25maWcvd2lkZ2V0cy55YW1sCiAgICAgICAgdGFyZ2V0OiAvYXBwL2NvbmZpZy93aWRnZXRzLnlhbWwKICAgICAgICBjb250ZW50OiAiLS0tXG4jIEZvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGV4YW1wbGVzLCBwbGVhc2Ugc2VlOlxuIyBodHRwczovL2dldGhvbWVwYWdlLmRldi93aWRnZXRzL3NlcnZpY2VzXG5cbi0gcmVzb3VyY2VzOlxuICAgIGNwdTogdHJ1ZVxuICAgIG1lbW9yeTogdHJ1ZVxuICAgIGRpc2s6IC9cblxuLSBzZWFyY2g6XG4gICAgcHJvdmlkZXI6IGR1Y2tkdWNrZ29cbiAgICB0YXJnZXQ6IF9ibGFua1xuIgo=",
+ "tags": [
+ "dashboard",
+ "homepage"
+ ],
+ "logo": "svgs/homepage.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "hoppscotch": {
+ "documentation": "https://docs.hoppscotch.io?utm_source=coolify.io",
+ "slogan": "The Open Source API Development Platform",
+ "compose": "c2VydmljZXM6CiAgYmFja2VuZDoKICAgIGltYWdlOiAnaG9wcHNjb3RjaC9ob3Bwc2NvdGNoOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0hPUFBTQ09UQ0hfODAKICAgICAgLSAnVklURV9BTExPV0VEX0FVVEhfUFJPVklERVJTPSR7VklURV9BTExPV0VEX0FVVEhfUFJPVklERVJTOi1HT09HTEUsR0lUSFVCLE1JQ1JPU09GVCxFTUFJTH0nCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AaG9wcHNjb3RjaC1kYjo1NDMyLyR7UE9TVEdSRVNfREJ9JwogICAgICAtICdKV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtICdUT0tFTl9TQUxUX0NPTVBMRVhJVFk9JHtUT0tFTl9TQUxUX0NPTVBMRVhJVFk6LTEwfScKICAgICAgLSAnTUFHSUNfTElOS19UT0tFTl9WQUxJRElUWT0ke01BR0lDX0xJTktfVE9LRU5fVkFMSURJVFk6LTN9JwogICAgICAtICdSRUZSRVNIX1RPS0VOX1ZBTElESVRZPSR7UkVGUkVTSF9UT0tFTl9WQUxJRElUWTotNjA0ODAwMDAwfScKICAgICAgLSAnQUNDRVNTX1RPS0VOX1ZBTElESVRZPSR7QUNDRVNTX1RPS0VOX1ZBTElESVRZOi04NjQwMDAwMH0nCiAgICAgIC0gJ1NFU1NJT05fU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9TRUNSRVR9JwogICAgICAtICdBTExPV19TRUNVUkVfQ09PS0lFUz0ke0FMTE9XX1NFQ1VSRV9DT09LSUVTOi10cnVlfScKICAgICAgLSAnREFUQV9FTkNSWVBUSU9OX0tFWT0ke0RBVEFfRU5DUllQVElPTl9LRVk6LW11c3RiZWV4YWN0cnkzMmNoYXJhY3Rlcmxpa2V0aGF0fScKICAgICAgLSAnUkVESVJFQ1RfVVJMPSR7U0VSVklDRV9VUkxfSE9QUFNDT1RDSH0nCiAgICAgIC0gJ1dISVRFTElTVEVEX09SSUdJTlM9JHtTRVJWSUNFX1VSTF9IT1BQU0NPVENIfS9iYWNrZW5kLCR7U0VSVklDRV9VUkxfSE9QUFNDT1RDSH0sJHtTRVJWSUNFX1VSTF9IT1BQU0NPVENIfS9hZG1pbicKICAgICAgLSAnR09PR0xFX0NMSUVOVF9JRD0ke0dPT0dMRV9DTElFTlRfSUQ6LSoqKioqfScKICAgICAgLSAnR09PR0xFX0NMSUVOVF9TRUNSRVQ9JHtHT09HTEVfQ0xJRU5UX1NFQ1JFVDotKioqKip9JwogICAgICAtICdHT09HTEVfQ0FMTEJBQ0tfVVJMPSR7U0VSVklDRV9VUkxfSE9QUFNDT1RDSH0vYmFja2VuZC92MS9hdXRoL2dvb2dsZS9jYWxsYmFjaycKICAgICAgLSAnR09PR0xFX1NDT1BFPWVtYWlsLHByb2ZpbGUnCiAgICAgIC0gJ0dJVEhVQl9DTElFTlRfSUQ9JHtHSVRIVUJfQ0xJRU5UX0lEOi0qKioqKn0nCiAgICAgIC0gJ0dJVEhVQl9DTElFTlRfU0VDUkVUPSR7R0lUSFVCX0NMSUVOVF9TRUNSRVQ6LSoqKioqfScKICAgICAgLSAnR0lUSFVCX0NBTExCQUNLX1VSTD0ke1NFUlZJQ0VfVVJMX0hPUFBTQ09UQ0h9L2JhY2tlbmQvdjEvYXV0aC9naXRodWIvY2FsbGJhY2snCiAgICAgIC0gJ0dJVEhVQl9TQ09QRT11c2VyOmVtYWlsJwogICAgICAtICdNSUNST1NPRlRfQ0xJRU5UX0lEPSR7TUlDUk9TT0ZUX0NMSUVOVF9JRDotKioqKip9JwogICAgICAtICdNSUNST1NPRlRfQ0xJRU5UX1NFQ1JFVD0ke01JQ1JPU09GVF9DTElFTlRfU0VDUkVUOi0qKioqKn0nCiAgICAgIC0gJ01JQ1JPU09GVF9DQUxMQkFDS19VUkw9JHtTRVJWSUNFX1VSTF9IT1BQU0NPVENIfS9iYWNrZW5kL3YxL2F1dGgvbWljcm9zb2Z0L2NhbGxiYWNrJwogICAgICAtIE1JQ1JPU09GVF9TQ09QRT11c2VyLnJlYWQKICAgICAgLSBNSUNST1NPRlRfVEVOQU5UPWNvbW1vbgogICAgICAtICdNQUlMRVJfU01UUF9FTkFCTEU9JHtNQUlMRVJfU01UUF9FTkFCTEU6LWZhbHNlfScKICAgICAgLSAnTUFJTEVSX1VTRV9DVVNUT01fQ09ORklHUz0ke01BSUxFUl9VU0VfQ1VTVE9NX0NPTkZJR1M6LXRydWV9JwogICAgICAtICdNQUlMRVJfQUREUkVTU19GUk9NPSR7TUFJTEVSX0FERFJFU1NfRlJPTTotdXNlckBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ01BSUxFUl9TTVRQX1VSTD0ke01BSUxFUl9TTVRQX1VSTDotc210cHNfdXJsfScKICAgICAgLSAnTUFJTEVSX1NNVFBfSE9TVD0ke01BSUxFUl9TTVRQX0hPU1Q6LXNtdHAuZXhhbXBsZS5jb219JwogICAgICAtICdNQUlMRVJfU01UUF9QT1JUPSR7TUFJTEVSX1NNVFBfUE9SVDotNDY1fScKICAgICAgLSAnTUFJTEVSX1NNVFBfU0VDVVJFPSR7TUFJTEVSX1NNVFBfU0VDVVJFOi10cnVlfScKICAgICAgLSAnTUFJTEVSX1NNVFBfVVNFUj0ke01BSUxFUl9TTVRQX1VTRVI6LXVzZXJAZXhhbXBsZS5jb219JwogICAgICAtICdNQUlMRVJfU01UUF9QQVNTV09SRD0ke01BSUxFUl9TTVRQX1BBU1NXT1JEOi1tYWlscGFzc30nCiAgICAgIC0gJ01BSUxFUl9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRD0ke01BSUxFUl9UTFNfUkVKRUNUX1VOQVVUSE9SSVpFRDotZmFsc2V9JwogICAgICAtICdSQVRFX0xJTUlUX1RUTD0ke1JBVEVfTElNSVRfVFRMOi02MH0nCiAgICAgIC0gJ1JBVEVfTElNSVRfTUFYPSR7UkFURV9MSU1JVF9NQVg6LTEwMH0nCiAgICAgIC0gJ1ZJVEVfQkFTRV9VUkw9JHtTRVJWSUNFX1VSTF9IT1BQU0NPVENIfScKICAgICAgLSAnVklURV9TSE9SVENPREVfQkFTRV9VUkw9JHtTRVJWSUNFX1VSTF9IT1BQU0NPVENIfScKICAgICAgLSAnVklURV9BRE1JTl9VUkw9JHtTRVJWSUNFX1VSTF9IT1BQU0NPVENIfS9hZG1pbicKICAgICAgLSAnVklURV9CQUNLRU5EX0dRTF9VUkw9JHtTRVJWSUNFX1VSTF9IT1BQU0NPVENIfS9iYWNrZW5kL2dyYXBocWwnCiAgICAgIC0gJ1ZJVEVfQkFDS0VORF9XU19VUkw9d3NzOi8vJHtTRVJWSUNFX1VSTF9IT1BQU0NPVENIfS9iYWNrZW5kL2dyYXBocWwnCiAgICAgIC0gJ1ZJVEVfQkFDS0VORF9BUElfVVJMPSR7U0VSVklDRV9VUkxfSE9QUFNDT1RDSH0vYmFja2VuZC92MScKICAgICAgLSAnVklURV9BUFBfVE9TX0xJTks9aHR0cHM6Ly9kb2NzLmhvcHBzY290Y2guaW8vc3VwcG9ydC90ZXJtcycKICAgICAgLSAnVklURV9BUFBfUFJJVkFDWV9QT0xJQ1lfTElOSz1odHRwczovL2RvY3MuaG9wcHNjb3RjaC5pby9zdXBwb3J0L3ByaXZhY3knCiAgICAgIC0gRU5BQkxFX1NVQlBBVEhfQkFTRURfQUNDRVNTPXRydWUKICAgIGRlcGVuZHNfb246CiAgICAgIGRiLW1pZ3JhdGlvbjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfY29tcGxldGVkX3N1Y2Nlc3NmdWxseQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC1xTy0gaHR0cDovLzEyNy4wLjAuMTo4MC8nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICBob3Bwc2NvdGNoLWRiOgogICAgaW1hZ2U6ICdwb3N0Z3JlczpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdwb3N0Z3Jlc19kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotaG9wcHNjb3RjaH0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLWggbG9jYWxob3N0IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxMAogIGRiLW1pZ3JhdGlvbjoKICAgIGV4Y2x1ZGVfZnJvbV9oYzogdHJ1ZQogICAgaW1hZ2U6ICdob3Bwc2NvdGNoL2hvcHBzY290Y2g6bGF0ZXN0JwogICAgZGVwZW5kc19vbjoKICAgICAgaG9wcHNjb3RjaC1kYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgY29tbWFuZDogJ3BucHggcHJpc21hIG1pZ3JhdGUgZGVwbG95JwogICAgcmVzdGFydDogb24tZmFpbHVyZQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1ob3Bwc2NvdGNofScKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AaG9wcHNjb3RjaC1kYjo1NDMyLyR7UE9TVEdSRVNfREI6LWhvcHBzY290Y2h9Jwo=",
+ "tags": [
+ "api",
+ "development",
+ "platform"
+ ],
+ "logo": "svgs/hoppscotch.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "immich": {
+ "documentation": "https://immich.app/docs/overview/introduction?utm_source=coolify.io",
+ "slogan": "Self-hosted photo and video management solution.",
+ "compose": "c2VydmljZXM6CiAgaW1taWNoOgogICAgaW1hZ2U6ICdnaGNyLmlvL2ltbWljaC1hcHAvaW1taWNoLXNlcnZlcjoke0lNTUlDSF9WRVJTSU9OOi1yZWxlYXNlfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2ltbWljaC11cGxvYWRzOi91c3Ivc3JjL2FwcC91cGxvYWQnCiAgICAgIC0gJy9ldGMvbG9jYWx0aW1lOi9ldGMvbG9jYWx0aW1lOnJvJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfSU1NSUNIXzIyODMKICAgICAgLSBVUExPQURfTE9DQVRJT049Li9saWJyYXJ5CiAgICAgIC0gREJfREFUQV9MT0NBVElPTj0uL3Bvc3RncmVzCiAgICAgIC0gREJfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSBEQl9VU0VSTkFNRT0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gJ0RCX0RBVEFCQVNFX05BTUU9JHtEQl9EQVRBQkFTRV9OQU1FOi1pbW1pY2h9JwogICAgICAtICdUWj0ke1RaOi1FdGMvVVRDfScKICAgIGRlcGVuZHNfb246CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIGRhdGFiYXNlOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgZGlzYWJsZTogZmFsc2UKICBpbW1pY2gtbWFjaGluZS1sZWFybmluZzoKICAgIGNvbnRhaW5lcl9uYW1lOiBpbW1pY2hfbWFjaGluZV9sZWFybmluZwogICAgaW1hZ2U6ICdnaGNyLmlvL2ltbWljaC1hcHAvaW1taWNoLW1hY2hpbmUtbGVhcm5pbmc6JHtJTU1JQ0hfVkVSU0lPTjotcmVsZWFzZX0nCiAgICB2b2x1bWVzOgogICAgICAtICdpbW1pY2gtbW9kZWwtY2FjaGU6L2NhY2hlJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gVVBMT0FEX0xPQ0FUSU9OPS4vbGlicmFyeQogICAgICAtIERCX0RBVEFfTE9DQVRJT049Li9wb3N0Z3JlcwogICAgICAtIERCX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gREJfVVNFUk5BTUU9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtICdEQl9EQVRBQkFTRV9OQU1FPSR7REJfREFUQUJBU0VfTkFNRTotaW1taWNofScKICAgICAgLSAnVFo9JHtUWjotRXRjL1VUQ30nCiAgICBoZWFsdGhjaGVjazoKICAgICAgZGlzYWJsZTogZmFsc2UKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6Ny40LWFscGluZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIFBJTkcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAyMAogIGRhdGFiYXNlOgogICAgaW1hZ2U6ICdnaGNyLmlvL2ltbWljaC1hcHAvcG9zdGdyZXM6MTQtdmVjdG9yY2hvcmQwLjMuMC1wZ3ZlY3RvcnMwLjIuMCcKICAgIGVudmlyb25tZW50OgogICAgICBQT1NUR1JFU19QQVNTV09SRDogJyR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIFBPU1RHUkVTX1VTRVI6ICcke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIFBPU1RHUkVTX0RCOiAnJHtEQl9EQVRBQkFTRV9OQU1FOi1pbW1pY2h9JwogICAgICBQT1NUR1JFU19JTklUREJfQVJHUzogJy0tZGF0YS1jaGVja3N1bXMnCiAgICAgIERCX1NUT1JBR0VfVFlQRTogJyR7REJfU1RPUkFHRV9UWVBFOi1TU0R9JwogICAgdm9sdW1lczoKICAgICAgLSAnaW1taWNoLXBvc3RncmVzLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "photo",
+ "video",
+ "management",
+ "server",
+ "cloud",
+ "storage",
+ "sharing",
+ "metadata",
+ "face",
+ "recognition"
+ ],
+ "logo": "svgs/immich.svg",
+ "minversion": "0.0.0",
+ "port": "2283"
+ },
+ "infisical": {
+ "documentation": "https://infisical.com/docs/documentation/getting-started/introduction?utm_source=coolify.io",
+ "slogan": "Infisical is the open source secret management platform that developers use to centralize their application configuration and secrets like API keys and database credentials.",
+ "compose": "c2VydmljZXM6CiAgYmFja2VuZDoKICAgIGltYWdlOiAnaW5maXNpY2FsL2luZmlzaWNhbDpsYXRlc3QtcG9zdGdyZXMnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9CQUNLRU5EXzgwODAKICAgICAgLSAnU0lURV9VUkw9JHtTRVJWSUNFX1VSTF9CQUNLRU5EXzgwODB9JwogICAgICAtICdOT0RFX0VOVj0ke05PREVfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnRU5DUllQVElPTl9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX0VOQ1JZUFRJT05LRVl9JwogICAgICAtICdBVVRIX1NFQ1JFVD0ke1NFUlZJQ0VfUkVBTEJBU0U2NF82NF9BVVRIU0VDUkVUfScKICAgICAgLSAnU01UUF9IT1NUPSR7U01UUF9IT1NUfScKICAgICAgLSAnU01UUF9VU0VSTkFNRT0ke1NNVFBfVVNFUk5BTUV9JwogICAgICAtICdTTVRQX1BBU1NXT1JEPSR7U01UUF9QQVNTV09SRH0nCiAgICAgIC0gJ1NNVFBfUE9SVD0ke1NNVFBfUE9SVH0nCiAgICAgIC0gJ1NNVFBfRlJPTV9BRERSRVNTPSR7U01UUF9GUk9NX0FERFJFU1N9JwogICAgICAtICdTTVRQX0ZST01fTkFNRT0ke1NNVFBfRlJPTV9OQU1FfScKICAgICAgLSAnSU5GX0FQUF9DT05ORUNUSU9OX0dJVEhVQl9BUFBfQ0xJRU5UX0lEPSR7SU5GX0FQUF9DT05ORUNUSU9OX0dJVEhVQl9BUFBfQ0xJRU5UX0lEfScKICAgICAgLSAnSU5GX0FQUF9DT05ORUNUSU9OX0dJVEhVQl9BUFBfQ0xJRU5UX1NFQ1JFVD0ke0lORl9BUFBfQ09OTkVDVElPTl9HSVRIVUJfQVBQX0NMSUVOVF9TRUNSRVR9JwogICAgICAtICdJTkZfQVBQX0NPTk5FQ1RJT05fR0lUSFVCX0FQUF9TTFVHPSR7SU5GX0FQUF9DT05ORUNUSU9OX0dJVEhVQl9BUFBfU0xVR30nCiAgICAgIC0gJ0lORl9BUFBfQ09OTkVDVElPTl9HSVRIVUJfQVBQX0lEPSR7SU5GX0FQUF9DT05ORUNUSU9OX0dJVEhVQl9BUFBfSUR9JwogICAgICAtICdJTkZfQVBQX0NPTk5FQ1RJT05fR0lUSFVCX0FQUF9QUklWQVRFX0tFWT0ke0lORl9BUFBfQ09OTkVDVElPTl9HSVRIVUJfQVBQX1BSSVZBVEVfS0VZfScKICAgICAgLSAnREJfQ09OTkVDVElPTl9VUkk9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBkYjo1NDMyLyR7UE9TVEdSRVNfREJ9JwogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC0tbm8tdmVyYm9zZSAtLXRyaWVzPTEgLS1zcGlkZXIgaHR0cDovLzEyNy4wLjAuMTo4MDgwL2FwaS9zdGF0dXMgfHwgZXhpdCAxJwogICAgZGVwZW5kc19vbjoKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6NycKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3JlZGlzLWRhdGE6L2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnQUxMT1dfRU1QVFlfUEFTU1dPUkQ9JHtBTExPV19FTVBUWV9QQVNTV09SRDoteWVzfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncmVkaXMtY2xpIC1oIGxvY2FsaG9zdCAtcCA2Mzc5IHBpbmcnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAzCiAgZGI6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE0LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3BnX2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1pbmZpc2ljYWx9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1oIGxvY2FsaG9zdCAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "security",
+ "environment",
+ "secrets",
+ "infisical",
+ "database",
+ "configuration",
+ "secret",
+ "api",
+ "keys",
+ "auth",
+ "encryption"
+ ],
+ "logo": "svgs/infisical.png",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "invoice-ninja": {
+ "documentation": "https://invoiceninja.github.io/selfhost.html?utm_source=coolify.io",
+ "slogan": "The leading open-source invoicing platform",
+ "compose": "c2VydmljZXM6CiAgaW52b2ljZS1uaW5qYToKICAgIGltYWdlOiAnaW52b2ljZW5pbmphL2ludm9pY2VuaW5qYTo1JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfSU5WT0lDRU5JTkpBCiAgICAgIC0gJ0FQUF9OQU1FPSR7QVBQX05BTUU6LSJJbnZvaWNlIE5pbmphIn0nCiAgICAgIC0gJ0FQUF9FTlY9JHtBUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnQVBQX1VSTD0ke1NFUlZJQ0VfVVJMX0lOVk9JQ0VOSU5KQX0nCiAgICAgIC0gJ0FQUF9LRVk9YmFzZTY0OiR7U0VSVklDRV9SRUFMQkFTRTY0X0lOVk9JQ0VOSU5KQX0nCiAgICAgIC0gJ0FQUF9ERUJVRz0ke0FQUF9ERUJVRzotZmFsc2V9JwogICAgICAtICdSRVFVSVJFX0hUVFBTPSR7UkVRVUlSRV9IVFRQUzotZmFsc2V9JwogICAgICAtICdQSEFOVE9NSlNfUERGX0dFTkVSQVRJT049JHtQSEFOVE9NSlNfUERGX0dFTkVSQVRJT046LWZhbHNlfScKICAgICAgLSAnUERGX0dFTkVSQVRPUj0ke1BERl9HRU5FUkFUT1I6LWhvc3RlZF9uaW5qYX0nCiAgICAgIC0gJ1RSVVNURURfUFJPWElFUz0ke1RSVVNURURfUFJPWElFUzotKn0nCiAgICAgIC0gQ0FDSEVfRFJJVkVSPXJlZGlzCiAgICAgIC0gJ1FVRVVFX0NPTk5FQ1RJT049JHtRVUVVRV9DT05ORUNUSU9OOi1yZWRpc30nCiAgICAgIC0gU0VTU0lPTl9EUklWRVI9cmVkaXMKICAgICAgLSAnUkVESVNfSE9TVD0ke1JFRElTX0hPU1Q6LXJlZGlzfScKICAgICAgLSAnUkVESVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfScKICAgICAgLSAnUkVESVNfUE9SVD0ke1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdEQl9IT1NUPSR7REJfSE9TVDotbWFyaWFkYn0nCiAgICAgIC0gJ0RCX1BPUlQ9JHtEQl9QT1JUOi0zMzA2fScKICAgICAgLSAnREJfREFUQUJBU0U9JHtEQl9EQVRBQkFTRTotaW52b2ljZW5pbmphfScKICAgICAgLSAnREJfVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfTUFSSUFEQn0nCiAgICAgIC0gJ0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NQVJJQURCfScKICAgICAgLSAnSU5fVVNFUl9FTUFJTD0ke0lOX1VTRVJfRU1BSUw6LWFkbWluQGV4YW1wbGUuY29tfScKICAgICAgLSAnSU5fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0lOVk9JQ0VOSU5KQVVTRVJ9JwogICAgICAtICdNQUlMX01BSUxFUj0ke01BSUxfTUFJTEVSOi1sb2d9JwogICAgICAtICdNQUlMX0hPU1Q9JHtNQUlMX0hPU1R9JwogICAgICAtICdNQUlMX1BPUlQ9JHtNQUlMX1BPUlR9JwogICAgICAtICdNQUlMX1VTRVJOQU1FPSR7TUFJTF9VU0VSTkFNRX0nCiAgICAgIC0gJ01BSUxfUEFTU1dPUkQ9JHtNQUlMX1BBU1NXT1JEfScKICAgICAgLSAnTUFJTF9FTkNSWVBUSU9OPSR7TUFJTF9FTkNSWVBUSU9OfScKICAgICAgLSAnTUFJTF9GUk9NX0FERFJFU1M9JHtNQUlMX0ZST01fQUREUkVTU30nCiAgICAgIC0gJ01BSUxfRlJPTV9OQU1FPSR7TUFJTF9GUk9NX05BTUV9JwogICAgICAtICdBV1NfQUNDRVNTX0tFWV9JRD0ke0FXU19BQ0NFU1NfS0VZX0lEfScKICAgICAgLSAnQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPSR7QVdTX1NFQ1JFVF9BQ0NFU1NfS0VZfScKICAgICAgLSAnQVdTX0RFRkFVTFRfUkVHSU9OPSR7QVdTX0RFRkFVTFRfUkVHSU9OfScKICAgICAgLSAnQVdTX0JVQ0tFVD0ke0FXU19CVUNLRVR9JwogICAgICAtICdBV1NfVVJMPSR7QVdTX1VSTH0nCiAgICAgIC0gJ0FXU19FTkRQT0lOVD0ke0FXU19FTkRQT0lOVH0nCiAgICAgIC0gJ05PUkRJR0VOX1NFQ1JFVF9JRD0ke05PUkRJR0VOX1NFQ1JFVF9JRH0nCiAgICAgIC0gJ05PUkRJR0VOX1NFQ1JFVF9LRVk9JHtOT1JESUdFTl9TRUNSRVRfS0VZfScKICAgICAgLSBJU19ET0NLRVI9dHJ1ZQogICAgICAtICdTQ09VVF9EUklWRVI9JHtTQ09VVF9EUklWRVJ9JwogICAgICAtICdMSUNFTlNFX0tFWT0ke0xJQ0VOU0VfS0VZfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBlY2hvCiAgICAgICAgLSBvawogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgICB2b2x1bWVzOgogICAgICAtICdpbnZvaWNlLW5pbmphLXB1YmxpYzovdmFyL3d3dy9hcHAvcHVibGljJwogICAgICAtICdpbnZvaWNlLW5pbmphLXN0b3JhZ2U6L3Zhci93d3cvYXBwL3N0b3JhZ2UnCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL3N1cGVydmlzb3JkLmNvbmYKICAgICAgICB0YXJnZXQ6IC9ldGMvc3VwZXJ2aXNvcmQuY29uZgogICAgICAgIGNvbnRlbnQ6ICJbc3VwZXJ2aXNvcmRdXG5ub2RhZW1vbj10cnVlXG5waWRmaWxlPS90bXAvc3VwZXJ2aXNvcmQucGlkXG5sb2dmaWxlPS9kZXYvbnVsbCA7IG5vZGFlbW9uIHdpbGwgY2F1c2UgbG9ncyB0byBnbyB0byBzdGRvdXRcbmxvZ2ZpbGVfbWF4Ynl0ZXM9MFxubG9nbGV2ZWw9aW5mb1xuXG5bcHJvZ3JhbTpwaHAtZnBtXVxucmVkaXJlY3Rfc3RkZXJyPXRydWVcbnN0ZG91dF9sb2dmaWxlPS9kZXYvc3Rkb3V0XG5zdGRvdXRfbG9nZmlsZV9tYXhieXRlcz0wXG5zdGRlcnJfbG9nZmlsZT0vZGV2L3N0ZGVyclxuc3RkZXJyX2xvZ2ZpbGVfbWF4Ynl0ZXM9MFxuY29tbWFuZD1waHAgYXJ0aXNhbiBzZXJ2ZSAtLWhvc3QgMC4wLjAuMCAtLXBvcnQgOTAwMFxuXG5bcHJvZ3JhbTpzY2hlZHVsZXJdXG5hdXRvcmVzdGFydD10cnVlXG5yZWRpcmVjdF9zdGRlcnI9dHJ1ZVxuc3Rkb3V0X2xvZ2ZpbGU9L2Rldi9zdGRvdXRcbnN0ZG91dF9sb2dmaWxlX21heGJ5dGVzPTBcbnN0ZGVycl9sb2dmaWxlPS9kZXYvc3RkZXJyXG5zdGRlcnJfbG9nZmlsZV9tYXhieXRlcz0wXG5jb21tYW5kPXBocCBhcnRpc2FuIHNjaGVkdWxlOndvcmtcblxuW3Byb2dyYW06cXVldWUtd29ya2VyXVxucHJvY2Vzc19uYW1lPSUocHJvZ3JhbV9uYW1lKXNfJShwcm9jZXNzX251bSkwMmRcbmF1dG9yZXN0YXJ0PXRydWVcbnJlZGlyZWN0X3N0ZGVycj10cnVlXG5zdGRvdXRfbG9nZmlsZT0vZGV2L3N0ZG91dFxuc3Rkb3V0X2xvZ2ZpbGVfbWF4Ynl0ZXM9MFxuc3RkZXJyX2xvZ2ZpbGU9L2Rldi9zdGRlcnJcbnN0ZGVycl9sb2dmaWxlX21heGJ5dGVzPTBcbm51bXByb2NzPTJcbmNvbW1hbmQ9cGhwIGFydGlzYW4gcXVldWU6d29yayAtLXNsZWVwPTMgLS10cmllcz0xIC0tbWVtb3J5PTI1NiAtLXRpbWVvdXQ9MzYwMFxuXG5bZXZlbnRsaXN0ZW5lcjpzaHV0ZG93bl1cbmNvbW1hbmQ9c2h1dGRvd24uc2hcbmV2ZW50cz1QUk9DRVNTX1NUQVRFX1NUT1BQRUQsIFBST0NFU1NfU1RBVEVfRVhJVEVELCBQUk9DRVNTX1NUQVRFX0ZBVEFMXG5zdGRvdXRfbG9nZmlsZT0vZGV2L3N0ZG91dFxuc3Rkb3V0X2xvZ2ZpbGVfbWF4Ynl0ZXM9MFxuc3RkZXJyX2xvZ2ZpbGU9L2Rldi9zdGRlcnJcbnN0ZGVycl9sb2dmaWxlX21heGJ5dGVzPTBcbiIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vcGhwLmluaQogICAgICAgIHRhcmdldDogL3Vzci9sb2NhbC9ldGMvcGhwL3BocC5pbmkKICAgICAgICBjb250ZW50OiAic2Vzc2lvbi5hdXRvX3N0YXJ0ID0gT2ZmXG5zaG9ydF9vcGVuX3RhZyA9IE9mZlxuXG5lcnJvcl9yZXBvcnRpbmcgPSBFX0FMTCAmIH5FX05PVElDRSAmIH5FX1dBUk5JTkcgJiB+RV9TVFJJQ1QgJiB+RV9ERVBSRUNBVEVEXG5cbjsgb3BjYWNoZS5lbmFibGU9MVxuOyBvcGNhY2hlLnByZWxvYWQ9L3Nydi93d3cvaW52b2ljZW5pbmphL2N1cnJlbnQvcHJlbG9hZC5waHBcbjsgb3BjYWNoZS5wcmVsb2FkX3VzZXI9d3d3LWRhdGFcblxuOyA7IFRoZSBPUGNhY2hlIHNoYXJlZCBtZW1vcnkgc3RvcmFnZSBzaXplLlxuOyBvcGNhY2hlLm1heF9hY2NlbGVyYXRlZF9maWxlcz0zMDAwMDBcbjsgb3BjYWNoZS52YWxpZGF0ZV90aW1lc3RhbXBzPTFcbjsgb3BjYWNoZS5yZXZhbGlkYXRlX2ZyZXE9MzBcbjsgb3BjYWNoZS5qaXRfYnVmZmVyX3NpemU9MjU2TVxuOyBvcGNhY2hlLmppdD0xMjA1XG47IG9wY2FjaGUubWVtb3J5X2NvbnN1bXB0aW9uPTEwMjRNXG5cbnBvc3RfbWF4X3NpemUgPSA2ME1cbnVwbG9hZF9tYXhfZmlsZXNpemUgPSA1ME1cbm1lbW9yeV9saW1pdD01MTJNXG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL3BocC1jbGkuaW5pCiAgICAgICAgdGFyZ2V0OiAvdXNyL2xvY2FsL2V0Yy9waHAvcGhwLWNsaS5pbmkKICAgICAgICBjb250ZW50OiAic2Vzc2lvbi5hdXRvX3N0YXJ0ID0gT2ZmXG5zaG9ydF9vcGVuX3RhZyA9IE9mZlxuXG5lcnJvcl9yZXBvcnRpbmcgPSBFX0FMTCAmIH5FX05PVElDRSAmIH5FX1dBUk5JTkcgJiB+RV9TVFJJQ1QgJiB+RV9ERVBSRUNBVEVEXG5cbjsgb3BjYWNoZS5lbmFibGVfY2xpPTFcbjsgb3BjYWNoZS5mYXN0X3NodXRkb3duPTFcbjsgb3BjYWNoZS5tZW1vcnlfY29uc3VtcHRpb249MjU2XG47IG9wY2FjaGUuaW50ZXJuZWRfc3RyaW5nc19idWZmZXI9OFxuOyBvcGNhY2hlLm1heF9hY2NlbGVyYXRlZF9maWxlcz00MDAwXG47IG9wY2FjaGUucmV2YWxpZGF0ZV9mcmVxPTYwXG47ICMgaHR0cDovL3N5bWZvbnkuY29tL2RvYy9jdXJyZW50L3BlcmZvcm1hbmNlLmh0bWxcbjsgcmVhbHBhdGhfY2FjaGVfc2l6ZSA9IDQwOTZLXG47IHJlYWxwYXRoX2NhY2hlX3R0bCA9IDYwMFxuXG5tZW1vcnlfbGltaXQgPSAyR1xucG9zdF9tYXhfc2l6ZSA9IDYwTVxudXBsb2FkX21heF9maWxlc2l6ZSA9IDUwTVxuIgogICAgZGVwZW5kc19vbjoKICAgICAgbWFyaWFkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogIG1hcmlhZGI6CiAgICBpbWFnZTogJ21hcmlhZGI6MTEnCiAgICB2b2x1bWVzOgogICAgICAtICdtYXJpYWRiLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQlJPT1R9JwogICAgICAtICdNWVNRTF9EQVRBQkFTRT0ke0RCX0RBVEFCQVNFOi1pbnZvaWNlbmluamF9JwogICAgICAtICdNWVNRTF9VU0VSPSR7U0VSVklDRV9VU0VSX01BUklBREJ9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQn0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gaGVhbHRoY2hlY2suc2gKICAgICAgICAtICctLWNvbm5lY3QnCiAgICAgICAgLSAnLS1pbm5vZGJfaW5pdGlhbGl6ZWQnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6Ny40LWFscGluZScKICAgIGNvbW1hbmQ6ICdyZWRpcy1zZXJ2ZXIgLS1yZXF1aXJlcGFzcyAke1NFUlZJQ0VfUEFTU1dPUkRfUkVESVN9JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1JFRElTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9SRURJU30nCiAgICB2b2x1bWVzOgogICAgICAtICdpbnZvaWNlLW5pbmphLXJlZGlzLWRhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSAnLWEnCiAgICAgICAgLSAnJHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfScKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1Cg==",
+ "tags": [
+ "invoicing",
+ "billing",
+ "accounting",
+ "finance",
+ "self-hosted"
+ ],
+ "logo": "svgs/invoiceninja.png",
+ "minversion": "0.0.0",
+ "port": "9000"
+ },
+ "it-tools": {
+ "documentation": "https://github.com/corentinth/it-tools?utm_source=coolify.io",
+ "slogan": "IT Tools is a self-hosted solution for managing various IT tasks.",
+ "compose": "c2VydmljZXM6CiAgaXQtdG9vbHM6CiAgICBpbWFnZTogJ2NvcmVudGludGgvaXQtdG9vbHM6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfSVRUT09MU184MAogICAgdm9sdW1lczoKICAgICAgLSAnaXQtdG9vbHMtZGF0YTovYXBwL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMK",
+ "tags": [
+ "it-tools",
+ "management",
+ "self-hosted"
+ ],
+ "logo": "svgs/it-tools.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "jellyfin": {
+ "documentation": "https://jellyfin.org?utm_source=coolify.io",
+ "slogan": "Jellyfin is a media server for hosting and streaming your media collection.",
+ "compose": "c2VydmljZXM6CiAgamVsbHlmaW46CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvamVsbHlmaW46bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfSkVMTFlGSU5fODA5NgogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtIFRaPUV1cm9wZS9NYWRyaWQKICAgICAgLSBKRUxMWUZJTl9QdWJsaXNoZWRTZXJ2ZXJVcmw9JFNFUlZJQ0VfVVJMX0pFTExZRklOCiAgICB2b2x1bWVzOgogICAgICAtICdqZWxseWZpbi1jb25maWc6L2NvbmZpZycKICAgICAgLSAnamVsbHlmaW4tdHZzaG93czovZGF0YS90dnNob3dzJwogICAgICAtICdqZWxseWZpbi1tb3ZpZXM6L2RhdGEvbW92aWVzJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwOTYnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUK",
+ "tags": [
+ "media",
+ "server",
+ "movies",
+ "tv",
+ "music"
+ ],
+ "logo": "svgs/jellyfin.svg",
+ "minversion": "0.0.0",
+ "port": "8096"
+ },
+ "jenkins": {
+ "documentation": "https://www.jenkins.io/doc/?utm_source=coolify.io",
+ "slogan": "Jenkins is an open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.",
+ "compose": "c2VydmljZXM6CiAgamVua2luczoKICAgIGltYWdlOiAnamVua2lucy9qZW5raW5zOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0pFTktJTlNfODA4MAogICAgdm9sdW1lczoKICAgICAgLSAnamVua2lucy1ob21lOi92YXIvamVua2luc19ob21lJwogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo4MDgwL2xvZ2luJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgICAgIHN0YXJ0X3BlcmlvZDogNDBzCg==",
+ "tags": [
+ "jenkins",
+ "automation",
+ "open-source"
+ ],
+ "logo": "svgs/jenkins.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "joomla-with-mariadb": {
+ "documentation": "https://joomla.org?utm_source=coolify.io",
+ "slogan": "Joomla! is the mobile-ready and user-friendly way to build your website. Choose from thousands of features and designs. Joomla! is free and open source.",
+ "compose": "c2VydmljZXM6CiAgam9vbWxhOgogICAgaW1hZ2U6ICdqb29tbGE6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnam9vbWxhX2RhdGE6L3Zhci93d3cvaHRtbCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0pPT01MQQogICAgICAtIEpPT01MQV9EQl9IT1NUPW1hcmlhZGIKICAgICAgLSAnSk9PTUxBX0RCX1VTRVI9JHtTRVJWSUNFX1VTRVJfSk9PTUxBfScKICAgICAgLSAnSk9PTUxBX0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9KT09NTEF9JwogICAgICAtICdKT09NTEFfREJfTkFNRT0ke01ZU1FMX0RBVEFCQVNFOi1qb29tbGEtZGJ9JwogICAgZGVwZW5kc19vbjoKICAgICAgbWFyaWFkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDEwCiAgbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjoxMScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2pvb21sYV9tYXJpYWRiX2RhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUk9PVH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LWpvb21sYS1kYn0nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfSk9PTUxBfScKICAgICAgLSAnTVlTUUxfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0pPT01MQX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gaGVhbHRoY2hlY2suc2gKICAgICAgICAtICctLWNvbm5lY3QnCiAgICAgICAgLSAnLS1pbm5vZGJfaW5pdGlhbGl6ZWQnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "cms",
+ "blog",
+ "content",
+ "management",
+ "mariadb"
+ ],
+ "logo": "svgs/joomla.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "joplin": {
+ "documentation": "https://github.com/laurent22/joplin/blob/dev/packages/server/README.md?utm_source=coolify.io",
+ "slogan": "Self-hosted sync server for Joplin",
+ "compose": "c2VydmljZXM6CiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2JwogICAgdm9sdW1lczoKICAgICAgLSAnam9wbGluLXBvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gUE9TVEdSRVNfREI9am9wbGluCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcGdfaXNyZWFkeQogICAgICAgIC0gJy1kJwogICAgICAgIC0gam9wbGluCiAgICAgIGludGVydmFsOiAxMHMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogNQogIGpvcGxpbjoKICAgIGltYWdlOiAnam9wbGluL3NlcnZlcjpsYXRlc3QnCiAgICBwbGF0Zm9ybTogbGludXgvYW1kNjQKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9KT1BMSU5fMjIzMDAKICAgICAgLSAnQVBQX0JBU0VfVVJMPSR7U0VSVklDRV9VUkxfSk9QTElOfScKICAgICAgLSBEQl9DTElFTlQ9cGcKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X1BPU1RHUkVTfScKICAgICAgLSBQT1NUR1JFU19EQVRBQkFTRT1qb3BsaW4KICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gUE9TVEdSRVNfUE9SVD01NDMyCiAgICAgIC0gUE9TVEdSRVNfSE9TVD1wb3N0Z3JlcwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvMjIzMDAnIHx8IGV4aXQgMSIKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAzCg==",
+ "tags": [
+ "joplin"
+ ],
+ "logo": "svgs/joplin.png",
+ "minversion": "0.0.0",
+ "port": "22300"
+ },
+ "jupyter-notebook-python": {
+ "documentation": "https://jupyter.org/?utm_source=coolify.io",
+ "slogan": "Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations, and narrative text.",
+ "compose": "c2VydmljZXM6CiAganVweXRlci1ub3RlYm9vay1weXRob246CiAgICBpbWFnZTogJ3F1YXkuaW8vanVweXRlci9iYXNlLW5vdGVib29rOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0pVUFlURVJfODg4OAogICAgdm9sdW1lczoKICAgICAgLSAnL2p1cHl0ZXI6L2hvbWUvam92eWFuL3dvcmsnCiAgICBjb21tYW5kOiBzdGFydC1ub3RlYm9vay5zaAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC1xTy0gaHR0cDovLzEyNy4wLjAuMTo4ODg4LycKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "notebook",
+ "python",
+ "data",
+ "analysis"
+ ],
+ "logo": "svgs/jupyter.svg",
+ "minversion": "0.0.0",
+ "port": "8888"
+ },
+ "karakeep": {
+ "documentation": "https://docs.karakeep.app/?utm_source=coolify.io",
+ "slogan": "A self-hostable bookmark-everything app (links, notes and images) with AI-based automatic tagging and full text search",
+ "compose": "c2VydmljZXM6CiAgd2ViOgogICAgaW1hZ2U6ICdnaGNyLmlvL2thcmFrZWVwLWFwcC9rYXJha2VlcDpyZWxlYXNlJwogICAgdm9sdW1lczoKICAgICAgLSAna2FyYWtlZXAtZGF0YTovZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0tBUkFLRUVQCiAgICAgIC0gJ05FWFRBVVRIX1VSTD0ke1NFUlZJQ0VfVVJMX0tBUkFLRUVQfScKICAgICAgLSAnTkVYVEFVVEhfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9LQVJBS0VFUE5FWFRBVVRIfScKICAgICAgLSAnTUVJTElfTUFTVEVSX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfTUVJTEl9JwogICAgICAtICdNRUlMSV9BRERSPWh0dHA6Ly9tZWlsaXNlYXJjaDo3NzAwJwogICAgICAtICdCUk9XU0VSX1dFQl9VUkw9aHR0cDovL2Nocm9tZTo5MjIyJwogICAgICAtICdPUEVOQUlfQVBJX0tFWT0ke1NFUlZJQ0VfT1BFTkFJX0FQSV9LRVl9JwogICAgICAtICdESVNBQkxFX1NJR05VUFM9JHtTRVJWSUNFX0RJU0FCTEVfU0lHTlVQUzotZmFsc2V9JwogICAgICAtIERBVEFfRElSPS9kYXRhCiAgY2hyb21lOgogICAgaW1hZ2U6ICdnY3IuaW8vemVuaWthLWh1Yi9hbHBpbmUtY2hyb21lOjEyNCcKICAgIGNvbW1hbmQ6CiAgICAgIC0gJy0tbm8tc2FuZGJveCcKICAgICAgLSAnLS1kaXNhYmxlLWdwdScKICAgICAgLSAnLS1kaXNhYmxlLWRldi1zaG0tdXNhZ2UnCiAgICAgIC0gJy0tcmVtb3RlLWRlYnVnZ2luZy1hZGRyZXNzPTAuMC4wLjAnCiAgICAgIC0gJy0tcmVtb3RlLWRlYnVnZ2luZy1wb3J0PTkyMjInCiAgICAgIC0gJy0taGlkZS1zY3JvbGxiYXJzJwogIG1laWxpc2VhcmNoOgogICAgaW1hZ2U6ICdnZXRtZWlsaS9tZWlsaXNlYXJjaDp2MS4xMy4zJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01FSUxJX05PX0FOQUxZVElDUz0ke01FSUxJX05PX0FOQUxZVElDUzotdHJ1ZX0nCiAgICAgIC0gJ05FWFRBVVRIX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfS0FSQUtFRVBORVhUQVVUSH0nCiAgICAgIC0gJ01FSUxJX01BU1RFUl9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX01FSUxJfScKICAgICAgLSAnTkVYVEFVVEhfVVJMPSR7U0VSVklDRV9VUkxfS0FSQUtFRVB9JwogICAgdm9sdW1lczoKICAgICAgLSAna2FyYWtlZXAtbWVpbGlzZWFyY2g6L21laWxpX2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6NzcwMC9oZWFsdGgnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUK",
+ "tags": [
+ "media",
+ "read-it-later",
+ "pocket-alternative",
+ "omnivore-alternative",
+ "instapaper-alternative"
+ ],
+ "logo": "svgs/karakeep.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "keycloak-with-postgres": {
+ "documentation": "https://www.keycloak.org?utm_source=coolify.io",
+ "slogan": "Keycloak is an open-source Identity and Access Management tool.",
+ "compose": "c2VydmljZXM6CiAga2V5Y2xvYWs6CiAgICBpbWFnZTogJ3F1YXkuaW8va2V5Y2xvYWsva2V5Y2xvYWs6MjYuMScKICAgIGNvbW1hbmQ6CiAgICAgIC0gc3RhcnQKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0tFWUNMT0FLXzgwODAKICAgICAgLSAnVFo9JHtUSU1FWk9ORTotVVRDfScKICAgICAgLSAnS0NfQk9PVFNUUkFQX0FETUlOX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX0FETUlOfScKICAgICAgLSAnS0NfQk9PVFNUUkFQX0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICAgIC0gS0NfREI9cG9zdGdyZXMKICAgICAgLSAnS0NfREJfVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfREFUQUJBU0V9JwogICAgICAtICdLQ19EQl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfREFUQUJBU0V9JwogICAgICAtIEtDX0RCX1VSTF9QT1JUPTU0MzIKICAgICAgLSAnS0NfREJfVVJMPWpkYmM6cG9zdGdyZXNxbDovL3Bvc3RncmVzLyR7UE9TVEdSRVNRTF9EQVRBQkFTRTota2V5Y2xvYWt9JwogICAgICAtICdLQ19IT1NUTkFNRT0ke1NFUlZJQ0VfVVJMX0tFWUNMT0FLfScKICAgICAgLSAnS0NfSFRUUF9FTkFCTEVEPSR7S0NfSFRUUF9FTkFCTEVEOi10cnVlfScKICAgICAgLSAnS0NfSEVBTFRIX0VOQUJMRUQ9JHtLQ19IRUFMVEhfRU5BQkxFRDotdHJ1ZX0nCiAgICAgIC0gJ0tDX1BST1hZX0hFQURFUlM9JHtLQ19QUk9YWV9IRUFERVJTOi14Zm9yd2FyZGVkfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2tleWNsb2FrLWRhdGE6L29wdC9rZXljbG9hay9kYXRhJwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAiZXhlYyAzPD4vZGV2L3RjcC8xMjcuMC4wLjEvOTAwMDsgZWNobyAtZSAnR0VUIC9oZWFsdGgvcmVhZHkgSFRUUC8xLjFcclxuSG9zdDogbG9jYWxob3N0OjkwMDBcclxuQ29ubmVjdGlvbjogY2xvc2VcclxuXHJcbicgPiYzO2NhdCA8JjMgfCBncmVwIC1xICdcInN0YXR1c1wiOiBcIlVQXCInICYmIGV4aXQgMCB8fCBleGl0IDEiCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAna2V5Y2xvYWstcG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX0RBVEFCQVNFfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X0RBVEFCQVNFfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU1FMX0RBVEFCQVNFOi1rZXljbG9ha30nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "keycloak",
+ "identity",
+ "access",
+ "management",
+ "iam",
+ "authentication",
+ "authorization",
+ "security",
+ "oauth2",
+ "openid-connect",
+ "sso",
+ "single-sign-on",
+ "saml",
+ "rbac",
+ "ldap",
+ "jwt",
+ "social-login"
+ ],
+ "logo": "svgs/keycloak.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "keycloak": {
+ "documentation": "https://www.keycloak.org?utm_source=coolify.io",
+ "slogan": "Keycloak is an open-source Identity and Access Management tool.",
+ "compose": "c2VydmljZXM6CiAga2V5Y2xvYWs6CiAgICBpbWFnZTogJ3F1YXkuaW8va2V5Y2xvYWsva2V5Y2xvYWs6MjYuMScKICAgIGNvbW1hbmQ6CiAgICAgIC0gc3RhcnQKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0tFWUNMT0FLXzgwODAKICAgICAgLSAnVFo9JHtUSU1FWk9ORTotVVRDfScKICAgICAgLSAnS0NfQk9PVFNUUkFQX0FETUlOX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX0FETUlOfScKICAgICAgLSAnS0NfQk9PVFNUUkFQX0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICAgIC0gJ0tDX0hPU1ROQU1FPSR7U0VSVklDRV9VUkxfS0VZQ0xPQUt9JwogICAgICAtICdLQ19IVFRQX0VOQUJMRUQ9JHtLQ19IVFRQX0VOQUJMRUQ6LXRydWV9JwogICAgICAtICdLQ19IRUFMVEhfRU5BQkxFRD0ke0tDX0hFQUxUSF9FTkFCTEVEOi10cnVlfScKICAgICAgLSAnS0NfUFJPWFlfSEVBREVSUz0ke0tDX1BST1hZX0hFQURFUlM6LXhmb3J3YXJkZWR9JwogICAgdm9sdW1lczoKICAgICAgLSAna2V5Y2xvYWstZGF0YTovb3B0L2tleWNsb2FrL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gImV4ZWMgMzw+L2Rldi90Y3AvMTI3LjAuMC4xLzkwMDA7IGVjaG8gLWUgJ0dFVCAvaGVhbHRoL3JlYWR5IEhUVFAvMS4xXHJcbkhvc3Q6IGxvY2FsaG9zdDo5MDAwXHJcbkNvbm5lY3Rpb246IGNsb3NlXHJcblxyXG4nID4mMztjYXQgPCYzIHwgZ3JlcCAtcSAnXCJzdGF0dXNcIjogXCJVUFwiJyAmJiBleGl0IDAgfHwgZXhpdCAxIgogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "keycloak",
+ "identity",
+ "access",
+ "management",
+ "iam",
+ "authentication",
+ "authorization",
+ "security",
+ "oauth2",
+ "openid-connect",
+ "sso",
+ "single-sign-on",
+ "saml",
+ "rbac",
+ "ldap",
+ "jwt",
+ "social-login"
+ ],
+ "logo": "svgs/keycloak.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "kimai": {
+ "documentation": "https://www.kimai.org/?utm_source=coolify.io",
+ "slogan": "Open source time-tracking app.",
+ "compose": "c2VydmljZXM6CiAgbXlzcWw6CiAgICBpbWFnZTogJ215c3FsOjgnCiAgICB2b2x1bWVzOgogICAgICAtICdraW1haS1teXNxbC1kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LWtpbWFpfScKICAgICAgLSAnTVlTUUxfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1JPT1RfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1JPT1R9JwogICAgY29tbWFuZDogJy0tZGVmYXVsdC1zdG9yYWdlLWVuZ2luZSBpbm5vZGInCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gbXlzcWxhZG1pbgogICAgICAgIC0gcGluZwogICAgICAgIC0gJy1oJwogICAgICAgIC0gMTI3LjAuMC4xCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICBraW1haToKICAgIGltYWdlOiAna2ltYWkva2ltYWkyOmFwYWNoZScKICAgIGNvbnRhaW5lcl9uYW1lOiBraW1haQogICAgZGVwZW5kc19vbjoKICAgICAgbXlzcWw6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2tpbWFpLWRhdGE6L29wdC9raW1haS92YXIvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0tJTUFJXzgwMDEKICAgICAgLSAnQVBQX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfQVBQU0VDUkVUfScKICAgICAgLSAnTUFJTEVSX0ZST009JHtNQUlMRVJfRlJPTTota2ltYWlAZXhhbXBsZS5jb219JwogICAgICAtICdNQUlMRVJfVVJMPSR7TUFJTEVSX1VSTDotbnVsbDovL251bGx9JwogICAgICAtICdBRE1JTk1BSUw9JHtBRE1JTk1BSUw6LWFkbWluQGtpbWFpLmxvY2FsfScKICAgICAgLSAnQURNSU5QQVNTPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTlBBU1N9JwogICAgICAtICdEQVRBQkFTRV9VUkw9bXlzcWw6Ly8ke1NFUlZJQ0VfVVNFUl9NWVNRTH06JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMfUBteXNxbC8ke01ZU1FMX0RBVEFCQVNFfT9jaGFyc2V0PXV0ZjhtYjQmc2VydmVyVmVyc2lvbj04LjMuMCcKICAgICAgLSBUUlVTVEVEX0hPU1RTPWxvY2FsaG9zdAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwMDEnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUK",
+ "tags": [
+ "time-tracking",
+ "open-source"
+ ],
+ "logo": "svgs/kimai.svg",
+ "minversion": "0.0.0",
+ "port": "8001"
+ },
+ "kuzzle": {
+ "documentation": "https://kuzzle.io?utm_source=coolify.io",
+ "slogan": "Kuzzle is a generic backend offering the basic building blocks common to every application.",
+ "compose": "c2VydmljZXM6CiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjctYWxwaW5lJwogICAgY29tbWFuZDogJ3JlZGlzLXNlcnZlciAtLWFwcGVuZG9ubHkgeWVzJwogICAgdm9sdW1lczoKICAgICAgLSAnZWxhc3RpYy1yZWRpcy1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgZWxhc3RpY3NlYXJjaDoKICAgIGltYWdlOiAna3V6emxlaW8vZWxhc3RpY3NlYXJjaDo3JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjkyMDAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAycwogICAgICByZXRyaWVzOiAxMAogICAgdWxpbWl0czoKICAgICAgbm9maWxlOiA2NTUzNgogIGt1enpsZToKICAgIGltYWdlOiAna3V6emxlaW8va3V6emxlOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0tVWlpMRV83NTEyCiAgICAgIC0gJ2t1enpsZV9zZXJ2aWNlc19fc3RvcmFnZUVuZ2luZV9fY2xpZW50X19ub2RlPWh0dHA6Ly9lbGFzdGljc2VhcmNoOjkyMDAnCiAgICAgIC0ga3V6emxlX3NlcnZpY2VzX19zdG9yYWdlRW5naW5lX19jb21tb25NYXBwaW5nX19keW5hbWljPXRydWUKICAgICAgLSBrdXp6bGVfc2VydmljZXNfX2ludGVybmFsQ2FjaGVfX25vZGVfX2hvc3Q9cmVkaXMKICAgICAgLSBrdXp6bGVfc2VydmljZXNfX21lbW9yeVN0b3JhZ2VfX25vZGVfX2hvc3Q9cmVkaXMKICAgICAgLSBrdXp6bGVfc2VydmVyX19wcm90b2NvbHNfX21xdHRfX2VuYWJsZWQ9dHJ1ZQogICAgICAtIGt1enpsZV9zZXJ2ZXJfX3Byb3RvY29sc19fbXF0dF9fZGV2ZWxvcG1lbnRNb2RlPWZhbHNlCiAgICAgIC0ga3V6emxlX2xpbWl0c19fbG9naW5zUGVyU2Vjb25kPTUwCiAgICAgIC0gTk9ERV9FTlY9cHJvZHVjdGlvbgogICAgICAtICdERUJVRz0ke0RFQlVHOi1rdXp6bGU6Y2x1c3RlcjpzeW5jfScKICAgICAgLSAnREVCVUdfREVQVEg9JHtERUJVR19ERVBUSDotMH0nCiAgICAgIC0gJ0RFQlVHX01BWF9BUlJBWV9MRU5HVEg9JHtERUJVR19NQVhfQVJSQVk6LTEwMH0nCiAgICAgIC0gJ0RFQlVHX0VYUEFORD0ke0RFQlVHX0VYUEFORDotb2ZmfScKICAgICAgLSAnREVCVUdfU0hPV19ISURERU49eyRERUJVR19TSE9XX0hJRERFTjotb259JwogICAgICAtICdERUJVR19DT0xPUlM9JHtERUJVR19DT0xPUlM6LW9ufScKICAgIGNhcF9hZGQ6CiAgICAgIC0gU1lTX1BUUkFDRQogICAgdWxpbWl0czoKICAgICAgbm9maWxlOiA2NTUzNgogICAgc3lzY3RsczoKICAgICAgLSBuZXQuY29yZS5zb21heGNvbm49ODE5MgogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjc1MTIvX2hlYWx0aGNoZWNrJwogICAgICB0aW1lb3V0OiAxcwogICAgICBpbnRlcnZhbDogMnMKICAgICAgcmV0cmllczogMzAKICAgIGRlcGVuZHNfb246CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIGVsYXN0aWNzZWFyY2g6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkK",
+ "tags": [
+ "backend",
+ "api",
+ "realtime",
+ "websocket",
+ "mqtt",
+ "rest",
+ "sdk",
+ "iot",
+ "geofencing",
+ "low-code"
+ ],
+ "logo": "svgs/kuzzle.png",
+ "minversion": "0.0.0",
+ "port": "7512"
+ },
+ "labelstudio": {
+ "documentation": "https://labelstud.io/guide/?utm_source=coolify.io",
+ "slogan": "Label Studio is a multi-type data labeling and annotation tool with standardized output format",
+ "compose": "c2VydmljZXM6CiAgbGFiZWxzdHVkaW86CiAgICBpbWFnZTogJ2hlYXJ0ZXhsYWJzL2xhYmVsLXN0dWRpbzpsYXRlc3QnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfTEFCRUxTVFVESU9fODA4MAogICAgICAtICdDU1JGX1RSVVNURURfT1JJR0lOUz0ke1NFUlZJQ0VfVVJMX0xBQkVMU1RVRElPfScKICAgICAgLSAnRVhQRVJJTUVOVEFMX0ZFQVRVUkVTPSR7RVhQRVJJTUVOVEFMX0ZFQVRVUkVTOi1mYWxzZX0nCiAgICAgIC0gJ0RKQU5HT19EQj0ke0RKQU5HT19EQjotZGVmYXVsdH0nCiAgICAgIC0gJ1BPU1RHUkVfTkFNRT0ke1BPU1RHUkVTX0RCOi1sYWJlbHN0dWRpb30nCiAgICAgIC0gJ1BPU1RHUkVfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSBQT1NUR1JFX1BPUlQ9NTQzMgogICAgICAtIFBPU1RHUkVfSE9TVD1wb3N0Z3JlcwogICAgICAtICdMQUJFTF9TVFVESU9fSE9TVD0ke1NFUlZJQ0VfVVJMX0xBQkVMU1RVRElPfScKICAgICAgLSAnU1NSRl9QUk9URUNUSU9OX0VOQUJMRUQ9JHtTU1JGX1BST1RFQ1RJT05fRU5BQkxFRDotdHJ1ZX0nCiAgICAgIC0gJ0xBQkVMX1NUVURJT19ESVNBQkxFX1NJR05VUF9XSVRIT1VUX0xJTks9JHtMQUJFTF9TVFVESU9fRElTQUJMRV9TSUdOVVBfV0lUSE9VVF9MSU5LOi10cnVlfScKICAgICAgLSAnREFUQV9VUExPQURfTUFYX05VTUJFUl9GSUxFUz0ke0RBVEFfVVBMT0FEX01BWF9OVU1CRVJfRklMRVM6LTEwMDAwfScKICAgICAgLSAnTEFCRUxfU1RVRElPX1VTRVJOQU1FPSR7TEFCRUxfU1RVRElPX1VTRVJOQU1FOi1hZG1pbkBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ0xBQkVMX1NUVURJT19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTEFCRUxTVFVESU99JwogICAgICAtICdMQUJFTF9TVFVESU9fRElTQUJMRV9TSUdOVVBfV0lUSE9VVF9MSU5LPSR7TEFCRUxfU1RVRElPX0RJU0FCTEVfU0lHTlVQX1dJVEhPVVRfTElOSzotdHJ1ZX0nCiAgICB2b2x1bWVzOgogICAgICAtICdsYWJlbHN0dWRpby1kYXRhOi9sYWJlbC1zdHVkaW8vZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnY3VybCAtZiBodHRwOi8vbG9jYWxob3N0OjgwODAvaGVhbHRoIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAzCiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotbGFiZWxzdHVkaW99JwogICAgdm9sdW1lczoKICAgICAgLSAncGctZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLWggbG9jYWxob3N0IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAzCg==",
+ "tags": [
+ "workflow",
+ "orchestration",
+ "data-pipeline",
+ "python",
+ "labelstudio",
+ "ai",
+ "elasticsearch",
+ "datasets",
+ "data",
+ "machine-learning",
+ "data-science",
+ "nlp",
+ "images",
+ "vision"
+ ],
+ "logo": "svgs/labelstudio.png",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "langfuse": {
+ "documentation": "https://langfuse.com/docs?utm_source=coolify.io",
+ "slogan": "Langfuse is an open-source LLM engineering platform that helps teams collaboratively debug, analyze, and iterate on their LLM applications.",
+ "compose": "eC1hcHAtZW52OgogIC0gJ05FWFRBVVRIX1VSTD0ke1NFUlZJQ0VfVVJMX0xBTkdGVVNFfScKICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHBvc3RncmVzOjU0MzIvJHtQT1NUR1JFU19EQjotbGFuZ2Z1c2UtZGJ9JwogIC0gJ1NBTFQ9JHtTRVJWSUNFX1BBU1NXT1JEX1NBTFR9JwogIC0gJ0VOQ1JZUFRJT05fS0VZPSR7U0VSVklDRV9QQVNTV09SRF82NF9MQU5HRlVTRX0nCiAgLSAnVEVMRU1FVFJZX0VOQUJMRUQ9JHtURUxFTUVUUllfRU5BQkxFRDotZmFsc2V9JwogIC0gJ0xBTkdGVVNFX0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVM9JHtMQU5HRlVTRV9FTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTOi1mYWxzZX0nCiAgLSAnQ0xJQ0tIT1VTRV9NSUdSQVRJT05fVVJMPWNsaWNraG91c2U6Ly9jbGlja2hvdXNlOjkwMDAnCiAgLSAnQ0xJQ0tIT1VTRV9VUkw9aHR0cDovL2NsaWNraG91c2U6ODEyMycKICAtICdDTElDS0hPVVNFX1VTRVI9JHtTRVJWSUNFX1VTRVJfQ0xJQ0tIT1VTRX0nCiAgLSAnQ0xJQ0tIT1VTRV9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQ0xJQ0tIT1VTRX0nCiAgLSBDTElDS0hPVVNFX0NMVVNURVJfRU5BQkxFRD1mYWxzZQogIC0gJ0xBTkdGVVNFX1VTRV9BWlVSRV9CTE9CPSR7TEFOR0ZVU0VfVVNFX0FaVVJFX0JMT0I6LWZhbHNlfScKICAtICdMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfQlVDS0VUPSR7TEFOR0ZVU0VfUzNfRVZFTlRfVVBMT0FEX0JVQ0tFVDotbGFuZ2Z1c2V9JwogIC0gJ0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9SRUdJT049JHtMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfUkVHSU9OOi1hdXRvfScKICAtICdMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfQUNDRVNTX0tFWV9JRD0ke0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9BQ0NFU1NfS0VZX0lEfScKICAtICdMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfU0VDUkVUX0FDQ0VTU19LRVk9JHtMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfU0VDUkVUX0FDQ0VTU19LRVl9JwogIC0gJ0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9FTkRQT0lOVD0ke0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9FTkRQT0lOVH0nCiAgLSAnTEFOR0ZVU0VfUzNfRVZFTlRfVVBMT0FEX0ZPUkNFX1BBVEhfU1RZTEU9JHtMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfRk9SQ0VfUEFUSF9TVFlMRTotdHJ1ZX0nCiAgLSAnTEFOR0ZVU0VfUzNfRVZFTlRfVVBMT0FEX1BSRUZJWD0ke0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9QUkVGSVg6LWV2ZW50cy99JwogIC0gJ0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9CVUNLRVQ9JHtMQU5HRlVTRV9TM19NRURJQV9VUExPQURfQlVDS0VUOi1sYW5nZnVzZX0nCiAgLSAnTEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX1JFR0lPTj0ke0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9SRUdJT046LWF1dG99JwogIC0gJ0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9BQ0NFU1NfS0VZX0lEPSR7TEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX0FDQ0VTU19LRVlfSUR9JwogIC0gJ0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9TRUNSRVRfQUNDRVNTX0tFWT0ke0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9TRUNSRVRfQUNDRVNTX0tFWX0nCiAgLSAnTEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX0VORFBPSU5UPSR7TEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX0VORFBPSU5UfScKICAtICdMQU5HRlVTRV9TM19NRURJQV9VUExPQURfRk9SQ0VfUEFUSF9TVFlMRT0ke0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9GT1JDRV9QQVRIX1NUWUxFOi10cnVlfScKICAtICdMQU5HRlVTRV9TM19NRURJQV9VUExPQURfUFJFRklYPSR7TEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX1BSRUZJWDotbWVkaWEvfScKICAtICdMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRU5BQkxFRD0ke0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9FTkFCTEVEOi1mYWxzZX0nCiAgLSAnTEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX0JVQ0tFVD0ke0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9CVUNLRVQ6LWxhbmdmdXNlfScKICAtICdMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfUFJFRklYPSR7TEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX1BSRUZJWDotZXhwb3J0cy99JwogIC0gJ0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9SRUdJT049JHtMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfUkVHSU9OOi1hdXRvfScKICAtICdMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRU5EUE9JTlQ9JHtMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRU5EUE9JTlR9JwogIC0gJ0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9FWFRFUk5BTF9FTkRQT0lOVD0ke0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9FWFRFUk5BTF9FTkRQT0lOVH0nCiAgLSAnTEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX0FDQ0VTU19LRVlfSUQ9JHtMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfQUNDRVNTX0tFWV9JRH0nCiAgLSAnTEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX1NFQ1JFVF9BQ0NFU1NfS0VZPSR7TEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX1NFQ1JFVF9BQ0NFU1NfS0VZfScKICAtICdMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRk9SQ0VfUEFUSF9TVFlMRT0ke0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9GT1JDRV9QQVRIX1NUWUxFOi10cnVlfScKICAtICdMQU5HRlVTRV9JTkdFU1RJT05fUVVFVUVfREVMQVlfTVM9JHtMQU5HRlVTRV9JTkdFU1RJT05fUVVFVUVfREVMQVlfTVM6LTF9JwogIC0gJ0xBTkdGVVNFX0lOR0VTVElPTl9DTElDS0hPVVNFX1dSSVRFX0lOVEVSVkFMX01TPSR7TEFOR0ZVU0VfSU5HRVNUSU9OX0NMSUNLSE9VU0VfV1JJVEVfSU5URVJWQUxfTVM6LTEwMDB9JwogIC0gUkVESVNfSE9TVD1yZWRpcwogIC0gUkVESVNfUE9SVD02Mzc5CiAgLSAnUkVESVNfQVVUSD0ke1NFUlZJQ0VfUEFTU1dPUkRfUkVESVN9JwogIC0gJ0VNQUlMX0ZST01fQUREUkVTUz0ke0VNQUlMX0ZST01fQUREUkVTUzotYWRtaW5AZXhhbXBsZS5jb219JwogIC0gJ1NNVFBfQ09OTkVDVElPTl9VUkw9JHtTTVRQX0NPTk5FQ1RJT05fVVJMOi19JwogIC0gJ05FWFRBVVRIX1NFQ1JFVD0ke1NFUlZJQ0VfQkFTRTY0X05FWFRBVVRIU0VDUkVUfScKICAtICdBVVRIX0RJU0FCTEVfU0lHTlVQPSR7QVVUSF9ESVNBQkxFX1NJR05VUDotdHJ1ZX0nCiAgLSAnSE9TVE5BTUU9JHtIT1NUTkFNRTotMC4wLjAuMH0nCiAgLSAnTEFOR0ZVU0VfSU5JVF9PUkdfSUQ9JHtMQU5HRlVTRV9JTklUX09SR19JRDotbXktb3JnfScKICAtICdMQU5HRlVTRV9JTklUX09SR19OQU1FPSR7TEFOR0ZVU0VfSU5JVF9PUkdfTkFNRTotTXkgT3JnfScKICAtICdMQU5HRlVTRV9JTklUX1BST0pFQ1RfSUQ9JHtMQU5HRlVTRV9JTklUX1BST0pFQ1RfSUQ6LW15LXByb2plY3R9JwogIC0gJ0xBTkdGVVNFX0lOSVRfUFJPSkVDVF9OQU1FPSR7TEFOR0ZVU0VfSU5JVF9QUk9KRUNUX05BTUU6LU15IFByb2plY3R9JwogIC0gJ0xBTkdGVVNFX0lOSVRfVVNFUl9FTUFJTD0ke0xBTkdGVVNFX0lOSVRfVVNFUl9FTUFJTDotYWRtaW5AZXhhbXBsZS5jb219JwogIC0gJ0xBTkdGVVNFX0lOSVRfVVNFUl9OQU1FPSR7U0VSVklDRV9VU0VSX0xBTkdGVVNFfScKICAtICdMQU5HRlVTRV9JTklUX1VTRVJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0xBTkdGVVNFfScKc2VydmljZXM6CiAgbGFuZ2Z1c2U6CiAgICBpbWFnZTogJ2xhbmdmdXNlL2xhbmdmdXNlOjMnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBjbGlja2hvdXNlOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgMDogJ05FWFRBVVRIX1VSTD0ke1NFUlZJQ0VfVVJMX0xBTkdGVVNFfScKICAgICAgMTogJ0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1sYW5nZnVzZS1kYn0nCiAgICAgIDI6ICdTQUxUPSR7U0VSVklDRV9QQVNTV09SRF9TQUxUfScKICAgICAgMzogJ0VOQ1JZUFRJT05fS0VZPSR7U0VSVklDRV9QQVNTV09SRF82NF9MQU5HRlVTRX0nCiAgICAgIDQ6ICdURUxFTUVUUllfRU5BQkxFRD0ke1RFTEVNRVRSWV9FTkFCTEVEOi1mYWxzZX0nCiAgICAgIDU6ICdMQU5HRlVTRV9FTkFCTEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTPSR7TEFOR0ZVU0VfRU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFUzotZmFsc2V9JwogICAgICA2OiAnQ0xJQ0tIT1VTRV9NSUdSQVRJT05fVVJMPWNsaWNraG91c2U6Ly9jbGlja2hvdXNlOjkwMDAnCiAgICAgIDc6ICdDTElDS0hPVVNFX1VSTD1odHRwOi8vY2xpY2tob3VzZTo4MTIzJwogICAgICA4OiAnQ0xJQ0tIT1VTRV9VU0VSPSR7U0VSVklDRV9VU0VSX0NMSUNLSE9VU0V9JwogICAgICA5OiAnQ0xJQ0tIT1VTRV9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQ0xJQ0tIT1VTRX0nCiAgICAgIDEwOiBDTElDS0hPVVNFX0NMVVNURVJfRU5BQkxFRD1mYWxzZQogICAgICAxMTogJ0xBTkdGVVNFX1VTRV9BWlVSRV9CTE9CPSR7TEFOR0ZVU0VfVVNFX0FaVVJFX0JMT0I6LWZhbHNlfScKICAgICAgMTI6ICdMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfQlVDS0VUPSR7TEFOR0ZVU0VfUzNfRVZFTlRfVVBMT0FEX0JVQ0tFVDotbGFuZ2Z1c2V9JwogICAgICAxMzogJ0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9SRUdJT049JHtMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfUkVHSU9OOi1hdXRvfScKICAgICAgMTQ6ICdMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfQUNDRVNTX0tFWV9JRD0ke0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9BQ0NFU1NfS0VZX0lEfScKICAgICAgMTU6ICdMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfU0VDUkVUX0FDQ0VTU19LRVk9JHtMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfU0VDUkVUX0FDQ0VTU19LRVl9JwogICAgICAxNjogJ0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9FTkRQT0lOVD0ke0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9FTkRQT0lOVH0nCiAgICAgIDE3OiAnTEFOR0ZVU0VfUzNfRVZFTlRfVVBMT0FEX0ZPUkNFX1BBVEhfU1RZTEU9JHtMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfRk9SQ0VfUEFUSF9TVFlMRTotdHJ1ZX0nCiAgICAgIDE4OiAnTEFOR0ZVU0VfUzNfRVZFTlRfVVBMT0FEX1BSRUZJWD0ke0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9QUkVGSVg6LWV2ZW50cy99JwogICAgICAxOTogJ0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9CVUNLRVQ9JHtMQU5HRlVTRV9TM19NRURJQV9VUExPQURfQlVDS0VUOi1sYW5nZnVzZX0nCiAgICAgIDIwOiAnTEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX1JFR0lPTj0ke0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9SRUdJT046LWF1dG99JwogICAgICAyMTogJ0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9BQ0NFU1NfS0VZX0lEPSR7TEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX0FDQ0VTU19LRVlfSUR9JwogICAgICAyMjogJ0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9TRUNSRVRfQUNDRVNTX0tFWT0ke0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9TRUNSRVRfQUNDRVNTX0tFWX0nCiAgICAgIDIzOiAnTEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX0VORFBPSU5UPSR7TEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX0VORFBPSU5UfScKICAgICAgMjQ6ICdMQU5HRlVTRV9TM19NRURJQV9VUExPQURfRk9SQ0VfUEFUSF9TVFlMRT0ke0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9GT1JDRV9QQVRIX1NUWUxFOi10cnVlfScKICAgICAgMjU6ICdMQU5HRlVTRV9TM19NRURJQV9VUExPQURfUFJFRklYPSR7TEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX1BSRUZJWDotbWVkaWEvfScKICAgICAgMjY6ICdMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRU5BQkxFRD0ke0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9FTkFCTEVEOi1mYWxzZX0nCiAgICAgIDI3OiAnTEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX0JVQ0tFVD0ke0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9CVUNLRVQ6LWxhbmdmdXNlfScKICAgICAgMjg6ICdMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfUFJFRklYPSR7TEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX1BSRUZJWDotZXhwb3J0cy99JwogICAgICAyOTogJ0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9SRUdJT049JHtMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfUkVHSU9OOi1hdXRvfScKICAgICAgMzA6ICdMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRU5EUE9JTlQ9JHtMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRU5EUE9JTlR9JwogICAgICAzMTogJ0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9FWFRFUk5BTF9FTkRQT0lOVD0ke0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9FWFRFUk5BTF9FTkRQT0lOVH0nCiAgICAgIDMyOiAnTEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX0FDQ0VTU19LRVlfSUQ9JHtMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfQUNDRVNTX0tFWV9JRH0nCiAgICAgIDMzOiAnTEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX1NFQ1JFVF9BQ0NFU1NfS0VZPSR7TEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX1NFQ1JFVF9BQ0NFU1NfS0VZfScKICAgICAgMzQ6ICdMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRk9SQ0VfUEFUSF9TVFlMRT0ke0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9GT1JDRV9QQVRIX1NUWUxFOi10cnVlfScKICAgICAgMzU6ICdMQU5HRlVTRV9JTkdFU1RJT05fUVVFVUVfREVMQVlfTVM9JHtMQU5HRlVTRV9JTkdFU1RJT05fUVVFVUVfREVMQVlfTVM6LTF9JwogICAgICAzNjogJ0xBTkdGVVNFX0lOR0VTVElPTl9DTElDS0hPVVNFX1dSSVRFX0lOVEVSVkFMX01TPSR7TEFOR0ZVU0VfSU5HRVNUSU9OX0NMSUNLSE9VU0VfV1JJVEVfSU5URVJWQUxfTVM6LTEwMDB9JwogICAgICAzNzogUkVESVNfSE9TVD1yZWRpcwogICAgICAzODogUkVESVNfUE9SVD02Mzc5CiAgICAgIDM5OiAnUkVESVNfQVVUSD0ke1NFUlZJQ0VfUEFTU1dPUkRfUkVESVN9JwogICAgICA0MDogJ0VNQUlMX0ZST01fQUREUkVTUz0ke0VNQUlMX0ZST01fQUREUkVTUzotYWRtaW5AZXhhbXBsZS5jb219JwogICAgICA0MTogJ1NNVFBfQ09OTkVDVElPTl9VUkw9JHtTTVRQX0NPTk5FQ1RJT05fVVJMOi19JwogICAgICA0MjogJ05FWFRBVVRIX1NFQ1JFVD0ke1NFUlZJQ0VfQkFTRTY0X05FWFRBVVRIU0VDUkVUfScKICAgICAgNDM6ICdBVVRIX0RJU0FCTEVfU0lHTlVQPSR7QVVUSF9ESVNBQkxFX1NJR05VUDotdHJ1ZX0nCiAgICAgIDQ0OiAnSE9TVE5BTUU9JHtIT1NUTkFNRTotMC4wLjAuMH0nCiAgICAgIDQ1OiAnTEFOR0ZVU0VfSU5JVF9PUkdfSUQ9JHtMQU5HRlVTRV9JTklUX09SR19JRDotbXktb3JnfScKICAgICAgNDY6ICdMQU5HRlVTRV9JTklUX09SR19OQU1FPSR7TEFOR0ZVU0VfSU5JVF9PUkdfTkFNRTotTXkgT3JnfScKICAgICAgNDc6ICdMQU5HRlVTRV9JTklUX1BST0pFQ1RfSUQ9JHtMQU5HRlVTRV9JTklUX1BST0pFQ1RfSUQ6LW15LXByb2plY3R9JwogICAgICA0ODogJ0xBTkdGVVNFX0lOSVRfUFJPSkVDVF9OQU1FPSR7TEFOR0ZVU0VfSU5JVF9QUk9KRUNUX05BTUU6LU15IFByb2plY3R9JwogICAgICA0OTogJ0xBTkdGVVNFX0lOSVRfVVNFUl9FTUFJTD0ke0xBTkdGVVNFX0lOSVRfVVNFUl9FTUFJTDotYWRtaW5AZXhhbXBsZS5jb219JwogICAgICA1MDogJ0xBTkdGVVNFX0lOSVRfVVNFUl9OQU1FPSR7U0VSVklDRV9VU0VSX0xBTkdGVVNFfScKICAgICAgNTE6ICdMQU5HRlVTRV9JTklUX1VTRVJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0xBTkdGVVNFfScKICAgICAgU0VSVklDRV9VUkxfTEFOR0ZVU0VfMzAwMDogJyR7U0VSVklDRV9VUkxfTEFOR0ZVU0VfMzAwMH0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy1xJwogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMC9hcGkvcHVibGljL2hlYWx0aCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDMKICBsYW5nZnVzZS13b3JrZXI6CiAgICBpbWFnZTogJ2xhbmdmdXNlL2xhbmdmdXNlLXdvcmtlcjozJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ05FWFRBVVRIX1VSTD0ke1NFUlZJQ0VfVVJMX0xBTkdGVVNFfScKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzcWw6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREI6LWxhbmdmdXNlLWRifScKICAgICAgLSAnU0FMVD0ke1NFUlZJQ0VfUEFTU1dPUkRfU0FMVH0nCiAgICAgIC0gJ0VOQ1JZUFRJT05fS0VZPSR7U0VSVklDRV9QQVNTV09SRF82NF9MQU5HRlVTRX0nCiAgICAgIC0gJ1RFTEVNRVRSWV9FTkFCTEVEPSR7VEVMRU1FVFJZX0VOQUJMRUQ6LWZhbHNlfScKICAgICAgLSAnTEFOR0ZVU0VfRU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFUz0ke0xBTkdGVVNFX0VOQUJMRV9FWFBFUklNRU5UQUxfRkVBVFVSRVM6LWZhbHNlfScKICAgICAgLSAnQ0xJQ0tIT1VTRV9NSUdSQVRJT05fVVJMPWNsaWNraG91c2U6Ly9jbGlja2hvdXNlOjkwMDAnCiAgICAgIC0gJ0NMSUNLSE9VU0VfVVJMPWh0dHA6Ly9jbGlja2hvdXNlOjgxMjMnCiAgICAgIC0gJ0NMSUNLSE9VU0VfVVNFUj0ke1NFUlZJQ0VfVVNFUl9DTElDS0hPVVNFfScKICAgICAgLSAnQ0xJQ0tIT1VTRV9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQ0xJQ0tIT1VTRX0nCiAgICAgIC0gQ0xJQ0tIT1VTRV9DTFVTVEVSX0VOQUJMRUQ9ZmFsc2UKICAgICAgLSAnTEFOR0ZVU0VfVVNFX0FaVVJFX0JMT0I9JHtMQU5HRlVTRV9VU0VfQVpVUkVfQkxPQjotZmFsc2V9JwogICAgICAtICdMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfQlVDS0VUPSR7TEFOR0ZVU0VfUzNfRVZFTlRfVVBMT0FEX0JVQ0tFVDotbGFuZ2Z1c2V9JwogICAgICAtICdMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfUkVHSU9OPSR7TEFOR0ZVU0VfUzNfRVZFTlRfVVBMT0FEX1JFR0lPTjotYXV0b30nCiAgICAgIC0gJ0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9BQ0NFU1NfS0VZX0lEPSR7TEFOR0ZVU0VfUzNfRVZFTlRfVVBMT0FEX0FDQ0VTU19LRVlfSUR9JwogICAgICAtICdMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfU0VDUkVUX0FDQ0VTU19LRVk9JHtMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfU0VDUkVUX0FDQ0VTU19LRVl9JwogICAgICAtICdMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfRU5EUE9JTlQ9JHtMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfRU5EUE9JTlR9JwogICAgICAtICdMQU5HRlVTRV9TM19FVkVOVF9VUExPQURfRk9SQ0VfUEFUSF9TVFlMRT0ke0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9GT1JDRV9QQVRIX1NUWUxFOi10cnVlfScKICAgICAgLSAnTEFOR0ZVU0VfUzNfRVZFTlRfVVBMT0FEX1BSRUZJWD0ke0xBTkdGVVNFX1MzX0VWRU5UX1VQTE9BRF9QUkVGSVg6LWV2ZW50cy99JwogICAgICAtICdMQU5HRlVTRV9TM19NRURJQV9VUExPQURfQlVDS0VUPSR7TEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX0JVQ0tFVDotbGFuZ2Z1c2V9JwogICAgICAtICdMQU5HRlVTRV9TM19NRURJQV9VUExPQURfUkVHSU9OPSR7TEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX1JFR0lPTjotYXV0b30nCiAgICAgIC0gJ0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9BQ0NFU1NfS0VZX0lEPSR7TEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX0FDQ0VTU19LRVlfSUR9JwogICAgICAtICdMQU5HRlVTRV9TM19NRURJQV9VUExPQURfU0VDUkVUX0FDQ0VTU19LRVk9JHtMQU5HRlVTRV9TM19NRURJQV9VUExPQURfU0VDUkVUX0FDQ0VTU19LRVl9JwogICAgICAtICdMQU5HRlVTRV9TM19NRURJQV9VUExPQURfRU5EUE9JTlQ9JHtMQU5HRlVTRV9TM19NRURJQV9VUExPQURfRU5EUE9JTlR9JwogICAgICAtICdMQU5HRlVTRV9TM19NRURJQV9VUExPQURfRk9SQ0VfUEFUSF9TVFlMRT0ke0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9GT1JDRV9QQVRIX1NUWUxFOi10cnVlfScKICAgICAgLSAnTEFOR0ZVU0VfUzNfTUVESUFfVVBMT0FEX1BSRUZJWD0ke0xBTkdGVVNFX1MzX01FRElBX1VQTE9BRF9QUkVGSVg6LW1lZGlhL30nCiAgICAgIC0gJ0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9FTkFCTEVEPSR7TEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX0VOQUJMRUQ6LWZhbHNlfScKICAgICAgLSAnTEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX0JVQ0tFVD0ke0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9CVUNLRVQ6LWxhbmdmdXNlfScKICAgICAgLSAnTEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX1BSRUZJWD0ke0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9QUkVGSVg6LWV4cG9ydHMvfScKICAgICAgLSAnTEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX1JFR0lPTj0ke0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9SRUdJT046LWF1dG99JwogICAgICAtICdMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRU5EUE9JTlQ9JHtMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRU5EUE9JTlR9JwogICAgICAtICdMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRVhURVJOQUxfRU5EUE9JTlQ9JHtMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRVhURVJOQUxfRU5EUE9JTlR9JwogICAgICAtICdMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfQUNDRVNTX0tFWV9JRD0ke0xBTkdGVVNFX1MzX0JBVENIX0VYUE9SVF9BQ0NFU1NfS0VZX0lEfScKICAgICAgLSAnTEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX1NFQ1JFVF9BQ0NFU1NfS0VZPSR7TEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX1NFQ1JFVF9BQ0NFU1NfS0VZfScKICAgICAgLSAnTEFOR0ZVU0VfUzNfQkFUQ0hfRVhQT1JUX0ZPUkNFX1BBVEhfU1RZTEU9JHtMQU5HRlVTRV9TM19CQVRDSF9FWFBPUlRfRk9SQ0VfUEFUSF9TVFlMRTotdHJ1ZX0nCiAgICAgIC0gJ0xBTkdGVVNFX0lOR0VTVElPTl9RVUVVRV9ERUxBWV9NUz0ke0xBTkdGVVNFX0lOR0VTVElPTl9RVUVVRV9ERUxBWV9NUzotMX0nCiAgICAgIC0gJ0xBTkdGVVNFX0lOR0VTVElPTl9DTElDS0hPVVNFX1dSSVRFX0lOVEVSVkFMX01TPSR7TEFOR0ZVU0VfSU5HRVNUSU9OX0NMSUNLSE9VU0VfV1JJVEVfSU5URVJWQUxfTVM6LTEwMDB9JwogICAgICAtIFJFRElTX0hPU1Q9cmVkaXMKICAgICAgLSBSRURJU19QT1JUPTYzNzkKICAgICAgLSAnUkVESVNfQVVUSD0ke1NFUlZJQ0VfUEFTU1dPUkRfUkVESVN9JwogICAgICAtICdFTUFJTF9GUk9NX0FERFJFU1M9JHtFTUFJTF9GUk9NX0FERFJFU1M6LWFkbWluQGV4YW1wbGUuY29tfScKICAgICAgLSAnU01UUF9DT05ORUNUSU9OX1VSTD0ke1NNVFBfQ09OTkVDVElPTl9VUkw6LX0nCiAgICAgIC0gJ05FWFRBVVRIX1NFQ1JFVD0ke1NFUlZJQ0VfQkFTRTY0X05FWFRBVVRIU0VDUkVUfScKICAgICAgLSAnQVVUSF9ESVNBQkxFX1NJR05VUD0ke0FVVEhfRElTQUJMRV9TSUdOVVA6LXRydWV9JwogICAgICAtICdIT1NUTkFNRT0ke0hPU1ROQU1FOi0wLjAuMC4wfScKICAgICAgLSAnTEFOR0ZVU0VfSU5JVF9PUkdfSUQ9JHtMQU5HRlVTRV9JTklUX09SR19JRDotbXktb3JnfScKICAgICAgLSAnTEFOR0ZVU0VfSU5JVF9PUkdfTkFNRT0ke0xBTkdGVVNFX0lOSVRfT1JHX05BTUU6LU15IE9yZ30nCiAgICAgIC0gJ0xBTkdGVVNFX0lOSVRfUFJPSkVDVF9JRD0ke0xBTkdGVVNFX0lOSVRfUFJPSkVDVF9JRDotbXktcHJvamVjdH0nCiAgICAgIC0gJ0xBTkdGVVNFX0lOSVRfUFJPSkVDVF9OQU1FPSR7TEFOR0ZVU0VfSU5JVF9QUk9KRUNUX05BTUU6LU15IFByb2plY3R9JwogICAgICAtICdMQU5HRlVTRV9JTklUX1VTRVJfRU1BSUw9JHtMQU5HRlVTRV9JTklUX1VTRVJfRU1BSUw6LWFkbWluQGV4YW1wbGUuY29tfScKICAgICAgLSAnTEFOR0ZVU0VfSU5JVF9VU0VSX05BTUU9JHtTRVJWSUNFX1VTRVJfTEFOR0ZVU0V9JwogICAgICAtICdMQU5HRlVTRV9JTklUX1VTRVJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0xBTkdGVVNFfScKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIGNsaWNraG91c2U6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTctYWxwaW5lJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LWxhbmdmdXNlLWRifScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICB2b2x1bWVzOgogICAgICAtICdsYW5nZnVzZV9wb3N0Z3Jlc19kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtaCBsb2NhbGhvc3QgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTAKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6OCcKICAgIGNvbW1hbmQ6CiAgICAgIC0gc2gKICAgICAgLSAnLWMnCiAgICAgIC0gJ3JlZGlzLXNlcnZlciAtLXJlcXVpcmVwYXNzICIkU0VSVklDRV9QQVNTV09SRF9SRURJUyInCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUkVESVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2xhbmdmdXNlX3JlZGlzX2RhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSAnLWEnCiAgICAgICAgLSAkU0VSVklDRV9QQVNTV09SRF9SRURJUwogICAgICAgIC0gUElORwogICAgICBpbnRlcnZhbDogM3MKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDEwCiAgY2xpY2tob3VzZToKICAgIGltYWdlOiAnY2xpY2tob3VzZS9jbGlja2hvdXNlLXNlcnZlcjpsYXRlc3QnCiAgICB1c2VyOiAnMTAxOjEwMScKICAgIGVudmlyb25tZW50OgogICAgICAtICdDTElDS0hPVVNFX0RCPSR7Q0xJQ0tIT1VTRV9EQjotZGVmYXVsdH0nCiAgICAgIC0gJ0NMSUNLSE9VU0VfVVNFUj0ke1NFUlZJQ0VfVVNFUl9DTElDS0hPVVNFfScKICAgICAgLSAnQ0xJQ0tIT1VTRV9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQ0xJQ0tIT1VTRX0nCiAgICB2b2x1bWVzOgogICAgICAtICdsYW5nZnVzZV9jbGlja2hvdXNlX2RhdGE6L3Zhci9saWIvY2xpY2tob3VzZScKICAgICAgLSAnbGFuZ2Z1c2VfY2xpY2tob3VzZV9sb2dzOi92YXIvbG9nL2NsaWNraG91c2Utc2VydmVyJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6ICd3Z2V0IC0tbm8tdmVyYm9zZSAtLXRyaWVzPTEgLS1zcGlkZXIgaHR0cDovL2xvY2FsaG9zdDo4MTIzL3BpbmcgfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "ai",
+ "qdrant",
+ "weaviate",
+ "langchain",
+ "openai",
+ "gpt",
+ "llm",
+ "lmops",
+ "langfuse",
+ "llmops",
+ "tracing",
+ "observation",
+ "metrics"
+ ],
+ "logo": "svgs/langfuse.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "leantime": {
+ "documentation": "https://leantime.io?utm_source=coolify.io",
+ "slogan": "Leantime is a goals focused project management system for non-project managers.",
+ "compose": "c2VydmljZXM6CiAgbGVhbnRpbWU6CiAgICBpbWFnZTogJ2xlYW50aW1lL2xlYW50aW1lOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0xFQU5USU1FXzgwODAKICAgICAgLSAnTEVBTl9BUFBfVVJMPSR7U0VSVklDRV9VUkxfTEVBTlRJTUV9JwogICAgICAtIExFQU5fREJfSE9TVD1teXNxbAogICAgICAtICdMRUFOX0RCX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUxEQn0nCiAgICAgIC0gJ0xFQU5fREJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMREJ9JwogICAgICAtICdMRUFOX0RCX0RBVEFCQVNFPSR7REJfTkFNRTotbGVhbnRpbWUtZGJ9JwogICAgICAtICdMRUFOX1NFU1NJT05fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X1NBTFR9JwogICAgICAtICdMRUFOX1NFU1NJT05fRVhQSVJBVElPTj0ke1NFU1NJT05fRVhQSVJBVElPTjotMjg4MDB9JwogICAgICAtICdMRUFOX1VTRV9SRURJUz0ke1VTRV9SRURJUzotdHJ1ZX0nCiAgICAgIC0gTEVBTl9SRURJU19IT1NUPXJlZGlzCiAgICAgIC0gJ0xFQU5fUkVESVNfUE9SVD0ke1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdMRUFOX1JFRElTX1NDSEVNRT0ke1JFRElTX1NDSEVNRTotdGNwfScKICAgIGRlcGVuZHNfb246CiAgICAgIG15c3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkCiAgICB2b2x1bWVzOgogICAgICAtICdwdWJsaWMtdXNlcmZpbGVzOi92YXIvd3d3L2h0bWwvcHVibGljL3VzZXJmaWxlcycKICAgICAgLSAndXNlcmZpbGVzOi92YXIvd3d3L2h0bWwvdXNlcmZpbGVzJwogICAgICAtICdwbHVnaW5zOi92YXIvd3d3L2h0bWwvYXBwL1BsdWdpbnMnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIG15c3FsOgogICAgaW1hZ2U6ICdteXNxbDo4LjQnCiAgICB2b2x1bWVzOgogICAgICAtICdsZWFudGltZV9teXNxbF9kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01ZU1FMX1JPT1RfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMUk9PVH0nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUxEQn0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTERCfScKICAgICAgLSAnTVlTUUxfREFUQUJBU0U9JHtEQl9OQU1FOi1sZWFudGltZS1kYn0nCiAgICBjb21tYW5kOiAnLS1jaGFyYWN0ZXItc2V0LXNlcnZlcj1VVEY4TUI0IC0tY29sbGF0aW9uLXNlcnZlcj1VVEY4TUI0X3VuaWNvZGVfY2knCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gbXlzcWxhZG1pbgogICAgICAgIC0gcGluZwogICAgICAgIC0gJy1oJwogICAgICAgIC0gbG9jYWxob3N0CiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6Ny1hbHBpbmUnCiAgICBjb21tYW5kOiAncmVkaXMtc2VydmVyIC0tYXBwZW5kb25seSB5ZXMnCiAgICB2b2x1bWVzOgogICAgICAtICdsZWFudGltZV9yZWRpc19kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMwo=",
+ "tags": [
+ "project management",
+ "productivity",
+ "php",
+ "mysql",
+ "laravel",
+ "open source"
+ ],
+ "logo": "svgs/leantime.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "librechat": {
+ "documentation": "https://docs.librechat.ai/install/configuration/dotenv.html?utm_source=coolify.io",
+ "slogan": "Self-hosted, powerful, and privacy-focused chat UI for multiple AI models",
+ "compose": "c2VydmljZXM6CiAgbGlicmVjaGF0OgogICAgaW1hZ2U6ICdnaGNyLmlvL2Rhbm55LWF2aWxhL2xpYnJlY2hhdC1kZXYtYXBpOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0xJQlJFQ0hBVF8zMDgwCiAgICAgIC0gJ0RPTUFJTl9DTElFTlQ9JHtTRVJWSUNFX1VSTF9MSUJSRUNIQVR9JwogICAgICAtICdET01BSU5fU0VSVkVSPSR7U0VSVklDRV9VUkxfTElCUkVDSEFUfScKICAgICAgLSBIT1NUPTAuMC4wLjAKICAgICAgLSBQT1JUPTMwODAKICAgICAgLSAnTU9OR09fVVJJPW1vbmdvZGI6Ly8ke1NFUlZJQ0VfVVNFUl9NT05HT306JHtTRVJWSUNFX1BBU1NXT1JEX01PTkdPfUBtb25nb2RiOjI3MDE3L2xpYnJlY2hhdD9hdXRoU291cmNlPWFkbWluJwogICAgICAtICdNRUlMSV9IT1NUPWh0dHA6Ly9tZWlsaXNlYXJjaDo3NzAwJwogICAgICAtICdNRUlMSV9NQVNURVJfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9NRUlMSX0nCiAgICAgIC0gUkFHX1BPUlQ9ODAwMAogICAgICAtICdSQUdfQVBJX1VSTD1odHRwOi8vcmFnLWFwaTo4MDAwJwogICAgICAtICdKV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtICdKV1RfUkVGUkVTSF9TRUNSRVQ9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X0pXVH0nCiAgICAgIC0gJ0FQUF9USVRMRT0ke0FQUF9USVRMRTotTGlicmVDaGF0fScKICAgICAgLSAnQUxMT1dfRU1BSUxfTE9HSU49JHtBTExPV19FTUFJTF9MT0dJTjotdHJ1ZX0nCiAgICAgIC0gJ0FMTE9XX1JFR0lTVFJBVElPTj0ke0FMTE9XX1JFR0lTVFJBVElPTjotdHJ1ZX0nCiAgICAgIC0gJ0FMTE9XX1NPQ0lBTF9MT0dJTj0ke0FMTE9XX1NPQ0lBTF9MT0dJTjotZmFsc2V9JwogICAgICAtICdBTExPV19TT0NJQUxfUkVHSVNUUkFUSU9OPSR7QUxMT1dfU09DSUFMX1JFR0lTVFJBVElPTjotZmFsc2V9JwogICAgICAtICdBTExPV19QQVNTV09SRF9SRVNFVD0ke0FMTE9XX1BBU1NXT1JEX1JFU0VUOi1mYWxzZX0nCiAgICAgIC0gJ0FMTE9XX1VOVkVSSUZJRURfRU1BSUxfTE9HSU49JHtBTExPV19VTlZFUklGSUVEX0VNQUlMX0xPR0lOOi10cnVlfScKICAgICAgLSAnQ1JFRFNfS0VZPSR7U0VSVklDRV9QQVNTV09SRF82NF9DUkVEU30nCiAgICAgIC0gJ0NSRURTX0lWPSR7U0VSVklDRV9QQVNTV09SRF9DUkVEU30nCiAgICAgIC0gJ0FOVEhST1BJQ19BUElfS0VZPSR7U0VSVklDRV9BTlRIUk9QSUNfQVBJX0tFWTotdXNlcl9wcm92aWRlZH0nCiAgICAgIC0gJ0dPT0dMRV9LRVk9JHtTRVJWSUNFX0dPT0dMRV9BUElfS0VZOi11c2VyX3Byb3ZpZGVkfScKICAgICAgLSAnT1BFTkFJX0FQSV9LRVk9JHtTRVJWSUNFX09QRU5BSV9BUElfS0VZOi11c2VyX3Byb3ZpZGVkfScKICAgICAgLSAnQVNTSVNUQU5UU19BUElfS0VZPSR7U0VSVklDRV9BU1NJU1RBTlRTX0FQSV9LRVk6LXVzZXJfcHJvdmlkZWR9JwogICAgICAtICdERUJVR19MT0dHSU5HPSR7REVCVUdfTE9HR0lORzotZmFsc2V9JwogICAgICAtICdERUJVR19PUEVOQUk9JHtERUJVR19PUEVOQUk6LWZhbHNlfScKICAgICAgLSAnREVCVUdfUExVR0lOUz0ke0RFQlVHX09QRU5BSTotZmFsc2V9JwogICAgICAtICdOT19JTkRFWD0ke05PX0lOREVYOi10cnVlfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2xpYnJlY2hhdC1pbWFnZXM6L2FwcC9jbGllbnQvcHVibGljL2ltYWdlcycKICAgICAgLSAnbGlicmVjaGF0LWxvZ3M6L2FwcC9hcGkvbG9ncycKICAgICAgLSAnbGlicmVjaGF0LXVwbG9hZHM6L2FwcC91cGxvYWRzJwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9saWJyZWNoYXQueWFtbAogICAgICAgIHRhcmdldDogL2FwcC9saWJyZWNoYXQueWFtbAogICAgICAgIGNvbnRlbnQ6ICJ2ZXJzaW9uOiAxLjIuOFxuIgogICAgZGVwZW5kc19vbjoKICAgICAgbW9uZ29kYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBtZWlsaXNlYXJjaDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICB2ZWN0b3JkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByYWctYXBpOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy0tbm8tdmVyYm9zZScKICAgICAgICAtICctLXRyaWVzPTEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTozMDgwL2FwaS9oZWFsdGgnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogIG1vbmdvZGI6CiAgICBpbWFnZTogJ21vbmdvOjgnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTU9OR09fSU5JVERCX1JPT1RfVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfTU9OR099JwogICAgICAtICdNT05HT19JTklUREJfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTU9OR099JwogICAgdm9sdW1lczoKICAgICAgLSAnbW9uZ29kYi1kYXRhOi9kYXRhL2RiJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG1vbmdvc2gKICAgICAgICAtICctLWV2YWwnCiAgICAgICAgLSAiZGIucnVuQ29tbWFuZCgncGluZycpLm9rIgogICAgICAgIC0gJzEyNy4wLjAuMToyNzAxNy90ZXN0JwogICAgICAgIC0gJy0tcXVpZXQnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogIG1laWxpc2VhcmNoOgogICAgaW1hZ2U6ICdnZXRtZWlsaS9tZWlsaXNlYXJjaDp2MS4xMi4zJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01FSUxJX01BU1RFUl9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX01FSUxJfScKICAgICAgLSAnTUVJTElfTk9fQU5BTFlUSUNTPSR7TUVJTElfTk9fQU5BTFlUSUNTOi1mYWxzZX0nCiAgICAgIC0gTUVJTElfRU5WPXByb2R1Y3Rpb24KICAgICAgLSAnTUVJTElfSE9TVD1odHRwOi8vbWVpbGlzZWFyY2g6NzcwMCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ21laWxpc2VhcmNoLWRhdGE6L21laWxpX2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6NzcwMC9oZWFsdGgnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICB2ZWN0b3JkYjoKICAgIGltYWdlOiAnYW5rYW5lL3BndmVjdG9yOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX0RCPXJhZwogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSBQT1NUR1JFU19IT1NUX0FVVEhfTUVUSE9EPXRydXN0CiAgICB2b2x1bWVzOgogICAgICAtICd2ZWN0b3JkYi1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBwZ19pc3JlYWR5CiAgICAgICAgLSAnLS11c2VybmFtZT0kU0VSVklDRV9VU0VSX1BPU1RHUkVTJwogICAgICAgIC0gJy0taG9zdD0xMjcuMC4wLjEnCiAgICAgICAgLSAnLS1wb3J0PTU0MzInCiAgICAgICAgLSAnLS1kYm5hbWU9cmFnJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMW0KICAgICAgcmV0cmllczogNQogICAgICBzdGFydF9wZXJpb2Q6IDEwcwogIHJhZy1hcGk6CiAgICBpbWFnZTogJ2doY3IuaW8vZGFubnktYXZpbGEvbGlicmVjaGF0LXJhZy1hcGktZGV2LWxpdGU6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfREI9cmFnCiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtIERCX0hPU1Q9dmVjdG9yZGIKICAgICAgLSAnREJfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gREJfTkFNRT1yYWcKICAgICAgLSBSQUdfUE9SVD04MDAwCiAgICAgIC0gJ1JBR19PUEVOQUlfQVBJX0tFWT0ke1NFUlZJQ0VfT1BFTkFJX0FQSV9LRVk6LXVzZXJfcHJvdmlkZWR9JwogICAgZGVwZW5kc19vbjoKICAgICAgdmVjdG9yZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBweXRob24KICAgICAgICAtICctYycKICAgICAgICAtICJpbXBvcnQgdXJsbGliLnJlcXVlc3Q7IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oZWFsdGgnKSIKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "ai",
+ "chat",
+ "gpt",
+ "claude",
+ "palm",
+ "openai",
+ "azure",
+ "huggingface",
+ "anthropic",
+ "ollama",
+ "llm"
+ ],
+ "logo": "svgs/librechat.svg",
+ "minversion": "0.0.0",
+ "port": "3080"
+ },
+ "libreoffice": {
+ "documentation": "https://docs.linuxserver.io/images/docker-libreoffice/?utm_source=coolify.io",
+ "slogan": "LibreOffice is a free and powerful office suite.",
+ "compose": "c2VydmljZXM6CiAgbGlicmVvZmZpY2U6CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvbGlicmVvZmZpY2U6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfTElCUkVPRkZJQ0VfMzAwMAogICAgICAtICdQVUlEPSR7UFVJRDotMTAwMH0nCiAgICAgIC0gJ1BHSUQ9JHtQR0lEOi0xMDAwfScKICAgICAgLSAnVFo9JHtUWjotRXRjL1VUQ30nCiAgICB2b2x1bWVzOgogICAgICAtICdsaWJyZW9mZmljZS1jb25maWc6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLXEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDozMDAwJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCg==",
+ "tags": [
+ "office",
+ "document",
+ "spreadsheet",
+ "presentation",
+ "open-source"
+ ],
+ "logo": "svgs/libreoffice.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "libretranslate": {
+ "documentation": "https://libretranslate.com/docs/?utm_source=coolify.io",
+ "slogan": "Free and open-source machine translation API, entirely self-hosted.",
+ "compose": "c2VydmljZXM6CiAgbGlicmV0cmFuc2xhdGU6CiAgICBpbWFnZTogJ2xpYnJldHJhbnNsYXRlL2xpYnJldHJhbnNsYXRlOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0xJQlJFVFJBTlNMQVRFXzUwMDAKICAgICAgLSAnTFRfU1NMPSR7TFRfU1NMOi10cnVlfScKICAgICAgLSAnTFRfVVBEQVRFX01PREVMUz0ke0xUX1VQREFURV9NT0RFTFM6LXRydWV9JwogICAgICAtICdMVF9MT0FEX09OTFk9JHtMVF9MT0FEX09OTFk6LWVuLGVzLGZyLGRlLGphfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2xpYnJldHJhbnNsYXRlLWFwaS1rZXlzOi9hcHAvZGInCiAgICAgIC0gJ2xpYnJldHJhbnNsYXRlLW1vZGVsczovaG9tZS9saWJyZXRyYW5zbGF0ZS8ubG9jYWwnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJy4vdmVudi9iaW4vcHl0aG9uIHNjcmlwdHMvaGVhbHRoY2hlY2sucHknCg==",
+ "tags": [
+ "translate",
+ "api"
+ ],
+ "logo": "svgs/libretranslate.svg",
+ "minversion": "0.0.0",
+ "port": "5000"
+ },
+ "limesurvey": {
+ "documentation": "https://www.limesurvey.org/manual/?utm_source=coolify.io",
+ "slogan": "Simple, quick and anonymous online survey tool that's bursting with juicy insights.",
+ "compose": "c2VydmljZXM6CiAgbGltZXN1cnZleToKICAgIGltYWdlOiAnYWRhbXphbW1pdC9saW1lc3VydmV5OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0xJTUVTVVJWRVlfODAKICAgICAgLSBMSU1FU1VSVkVZX0RCX0hPU1Q9bWFyaWFkYgogICAgICAtICdMSU1FU1VSVkVZX0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ0xJTUVTVVJWRVlfREJfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ0xJTUVTVVJWRVlfREJfTkFNRT0ke01ZU1FMX0RBVEFCQVNFOi1saW1lc3VydmV5LWRifScKICAgICAgLSAnTElNRVNVUlZFWV9BRE1JTl9VU0VSPSR7TElNRVNVUlZFWV9BRE1JTl9VU0VSOi1hZG1pbn0nCiAgICAgIC0gJ0xJTUVTVVJWRVlfQURNSU5fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0FETUlOfScKICAgICAgLSAnTElNRVNVUlZFWV9BRE1JTl9OQU1FPSR7TElNRVNVUlZFWV9BRE1JTl9OQU1FOi1BZG1pbn0nCiAgICAgIC0gJ0xJTUVTVVJWRVlfQURNSU5fRU1BSUw9JHtMSU1FU1VSVkVZX0FETUlOX0VNQUlMOi1hZG1pbkBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ0xJTUVTVVJWRVlfRlJPTV9FTUFJTD0ke0xJTUVTVVJWRVlfRlJPTV9FTUFJTH0nCiAgICAgIC0gJ0xJTUVTVVJWRVlfU01UUF9IT1NUPSR7TElNRVNVUlZFWV9TTVRQX0hPU1R9JwogICAgICAtICdMSU1FU1VSVkVZX1NNVFBfVVNFUj0ke0xJTUVTVVJWRVlfU01UUF9VU0VSfScKICAgICAgLSAnTElNRVNVUlZFWV9TTVRQX1BBU1NXT1JEPSR7TElNRVNVUlZFWV9TTVRQX1BBU1NXT1JEfScKICAgICAgLSAnTElNRVNVUlZFWV9TTVRQX1NTTD0ke0xJTUVTVVJWRVlfU01UUF9TU0x9JwogICAgICAtIExJTUVTVVJWRVlfUEhQX1NFU1NJT05fU0FWRV9IQU5ETEVSPXJlZGlzCiAgICAgIC0gJ0xJTUVTVVJWRVlfUEhQX1NFU1NJT05fU0FWRV9QQVRIPXRjcDovL3JlZGlzOjYzNzknCiAgICAgIC0gJ1RaPSR7VFo6LUFtZXJpY2EvSmFtYWljYX0nCiAgICB2b2x1bWVzOgogICAgICAtICdsaW1lc3VydmV5X3BsdWdpbnNfZGF0YTovdmFyL3d3dy9odG1sL3BsdWdpbnMnCiAgICAgIC0gJ2xpbWVzdXJ2ZXlfdXBsb2FkX2RhdGE6L3Zhci93d3cvaHRtbC91cGxvYWQnCiAgICAgIC0gJ2xpbWVzdXJ2ZXlfY29uZmlnX2RhdGE6L3Zhci93d3cvaHRtbC9hcHBsaWNhdGlvbi9jb25maWcnCiAgICAgIC0gJ2xpbWVzdXJ2ZXlfc2Vzc2lvbnNfZGF0YTovdmFyL2xpbWUvc2Vzc2lvbnMnCiAgICBkZXBlbmRzX29uOgogICAgICBtYXJpYWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjEnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTAKICBtYXJpYWRiOgogICAgaW1hZ2U6ICdtYXJpYWRiOjExJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgICAtICdNWVNRTF9EQVRBQkFTRT0ke01ZU1FMX0RBVEFCQVNFOi1saW1lc3VydmV5LWRifScKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUxST09UfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2xpbWVzdXJ2ZXlfbWFyaWFkYl9kYXRhOi92YXIvbGliL215c3FsJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGhlYWx0aGNoZWNrLnNoCiAgICAgICAgLSAnLS1jb25uZWN0JwogICAgICAgIC0gJy0taW5ub2RiX2luaXRpYWxpemVkJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjctYWxwaW5lJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogM3MKICAgICAgcmV0cmllczogMwo=",
+ "tags": [
+ "online survey",
+ "forms",
+ "no code",
+ "open source"
+ ],
+ "logo": "svgs/limesurvey.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "listmonk": {
+ "documentation": "https://listmonk.app/?utm_source=coolify.io",
+ "slogan": "Self-hosted newsletter and mailing list manager",
+ "compose": "c2VydmljZXM6CiAgbGlzdG1vbms6CiAgICBpbWFnZTogJ2xpc3Rtb25rL2xpc3Rtb25rOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0xJU1RNT05LXzkwMDAKICAgICAgLSAnTElTVE1PTktfYXBwX19hZGRyZXNzPTAuMC4wLjA6OTAwMCcKICAgICAgLSBMSVNUTU9OS19kYl9faG9zdD1wb3N0Z3JlcwogICAgICAtIExJU1RNT05LX2RiX19uYW1lPWxpc3Rtb25rCiAgICAgIC0gTElTVE1PTktfZGJfX3VzZXI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIExJU1RNT05LX2RiX19wYXNzd29yZD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtIExJU1RNT05LX2RiX19wb3J0PTU0MzIKICAgICAgLSBUWj1FdGMvVVRDCiAgICB2b2x1bWVzOgogICAgICAtICdsaXN0bW9uay1kYXRhOi9saXN0bW9uay91cGxvYWRzJwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLXEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo5MDAwJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgbGlzdG1vbmstaW5pdGlhbC1kYXRhYmFzZS1zZXR1cDoKICAgIGltYWdlOiAnbGlzdG1vbmsvbGlzdG1vbms6bGF0ZXN0JwogICAgY29tbWFuZDogJy4vbGlzdG1vbmsgLS1pbnN0YWxsIC0teWVzIC0taWRlbXBvdGVudCcKICAgIHJlc3RhcnQ6ICdubycKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBMSVNUTU9OS19kYl9faG9zdD1wb3N0Z3JlcwogICAgICAtIExJU1RNT05LX2RiX19uYW1lPWxpc3Rtb25rCiAgICAgIC0gTElTVE1PTktfZGJfX3VzZXI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIExJU1RNT05LX2RiX19wYXNzd29yZD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtIExJU1RNT05LX2RiX19wb3J0PTU0MzIKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfREI9bGlzdG1vbmsKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgdm9sdW1lczoKICAgICAgLSAncGctZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "newsletter",
+ "mailing list",
+ "self-hosted",
+ "open source"
+ ],
+ "logo": "svgs/listmonk.svg",
+ "minversion": "0.0.0",
+ "port": "9000"
+ },
+ "litellm": {
+ "documentation": "https://docs.litellm.ai?utm_source=coolify.io",
+ "slogan": "Call all LLM APIs using the OpenAI format. Use Bedrock, Azure, OpenAI, Cohere, Anthropic, Ollama, Sagemaker, HuggingFace, Replicate, Groq (100+ LLMs)",
+ "compose": "c2VydmljZXM6CiAgbGl0ZWxsbToKICAgIGltYWdlOiAnZ2hjci5pby9iZXJyaWFpL2xpdGVsbG0tZGF0YWJhc2U6bWFpbi1zdGFibGUnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfTElURUxMTV80MDAwCiAgICAgIC0gJ0xJVEVMTE1fTE9HPSR7TElURUxMTV9MT0c6LUVSUk9SfScKICAgICAgLSAnTElURUxMTV9NT0RFPSR7TElURUxMTV9NT0RFOi1QUk9EVUNUSU9OfScKICAgICAgLSAnTElURUxMTV9NQVNURVJfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9NQVNURVJLRVl9JwogICAgICAtICdVSV9VU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9VSX0nCiAgICAgIC0gJ1VJX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9VSX0nCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1saXRlbGxtfScKICAgICAgLSAnUkVESVNfSE9TVD0ke1JFRElTX0hPU1Q6LXJlZGlzfScKICAgICAgLSAnUkVESVNfUE9SVD0ke1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotbGl0ZWxsbX0nCiAgICAgIC0gJ09QRU5BSV9BUElfS0VZPSR7T1BFTkFJX0FQSV9LRVl9JwogICAgICAtICdPUEVOQUlfQVBJX0JBU0U9JHtPUEVOQUlfQVBJX0JBU0V9JwogICAgICAtICdBTlRIUk9QSUNfQVBJX0tFWT0ke0FOVEhST1BJQ19BUElfS0VZfScKICAgICAgLSAnQU5USFJPUElDX0FQSV9CQVNFPSR7QU5USFJPUElDX0FQSV9CQVNFfScKICAgICAgLSAnVk9ZQUdFX0FQSV9LRVk9JHtWT1lBR0VfQVBJX0tFWX0nCiAgICAgIC0gJ1ZPWUFHRV9BUElfQkFTRT0ke1ZPWUFHRV9BUElfQkFTRX0nCiAgICB2b2x1bWVzOgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9saXRlbGxtLWNvbmZpZy55YW1sCiAgICAgICAgdGFyZ2V0OiAvYXBwL2NvbmZpZy55YW1sCiAgICAgICAgY29udGVudDogImdlbmVyYWxfc2V0dGluZ3M6XG4gIHByb3h5X2JhdGNoX3dyaXRlX2F0OiA2MFxuXG5yb3V0ZXJfc2V0dGluZ3M6XG4gIHJlZGlzX2hvc3Q6IG9zLmVudmlyb24vUkVESVNfSE9TVFxuICByZWRpc19wb3J0OiBvcy5lbnZpcm9uL1JFRElTX1BPUlRcbiAgcmVkaXNfcGFzc3dvcmQ6IG9zLmVudmlyb24vUkVESVNfUEFTU1dPUkRcbiAgZW5hYmxlX3ByZV9jYWxsX2NoZWNrOiB0cnVlXG5cbmxpdGVsbG1fc2V0dGluZ3M6XG4gIHNldF92ZXJib3NlOiBmYWxzZVxuICBqc29uX2xvZ3M6IHRydWVcbiAgbG9nX3Jhd19yZXF1ZXN0X3Jlc3BvbnNlOiB0cnVlXG4gICMgdHVybl9vZmZfbWVzc2FnZV9sb2dnaW5nOiBmYWxzZVxuICAjIHJlZGFjdF91c2VyX2FwaV9rZXlfaW5mbzogZmFsc2VcbiAgc2VydmljZV9jYWxsYmFjazogW1wicHJvbWV0aGV1c19zeXN0ZW1cIl1cbiAgZHJvcF9wYXJhbXM6IHRydWVcbiAgIyBtYXhfYnVkZ2V0OiAxMDBcbiAgIyBidWRnZXRfZHVyYXRpb246IDMwZFxuICBudW1fcmV0cmllczogM1xuICByZXF1ZXN0X3RpbWVvdXQ6IDYwMFxuICB0ZWxlbWV0cnk6IGZhbHNlXG4gIGNhY2hlOiB0cnVlXG4gIGNhY2hlX3BhcmFtczpcbiAgICB0eXBlOiByZWRpc1xuICAgIGhvc3Q6IG9zLmVudmlyb24vUkVESVNfSE9TVFxuICAgIHBvcnQ6IG9zLmVudmlyb24vUkVESVNfUE9SVFxuICAgIHBhc3N3b3JkOiBvcy5lbnZpcm9uL1JFRElTX1BBU1NXT1JEXG4gICAgbmFtZXNwYWNlOiBcImxpdGVsbG1fY2FjaGVcIlxuICAgIHR0bDogNjAwXG4gIHN1Y2Nlc3NfY2FsbGJhY2s6XG4gICAgIyAtIFwibGFuZ2Z1c2VcIlxuICAgIC0gXCJwcm9tZXRoZXVzXCJcbiAgZmFpbHVyZV9jYWxsYmFjazpcbiAgICAjIC0gXCJsYW5nZnVzZVwiXG4gICAgLSBcInByb21ldGhldXNcIlxubW9kZWxfbGlzdDpcbiAgIyBPcGVuQUlcbiAgLSBtb2RlbF9uYW1lOiBncHQtNFxuICAgIGxpdGVsbG1fcGFyYW1zOlxuICAgICAgbW9kZWw6IG9wZW5haS9ncHQtNFxuICAgICAgYXBpX2tleTogb3MuZW52aXJvbi9PUEVOQUlfQVBJX0tFWVxuICAgICAgYXBpX2Jhc2U6IG9zLmVudmlyb24vT1BFTkFJX0FQSV9CQVNFXG4gIC0gbW9kZWxfbmFtZTogZ3B0LTRvXG4gICAgbGl0ZWxsbV9wYXJhbXM6XG4gICAgICBtb2RlbDogb3BlbmFpL2dwdC00b1xuICAgICAgYXBpX2tleTogb3MuZW52aXJvbi9PUEVOQUlfQVBJX0tFWVxuICAgICAgYXBpX2Jhc2U6IG9zLmVudmlyb24vT1BFTkFJX0FQSV9CQVNFXG4gIC0gbW9kZWxfbmFtZTogZ3B0LTRvLW1pbmlcbiAgICBsaXRlbGxtX3BhcmFtczpcbiAgICAgIG1vZGVsOiBvcGVuYWkvZ3B0LTRvLW1pbmlcbiAgICAgIGFwaV9rZXk6IG9zLmVudmlyb24vT1BFTkFJX0FQSV9LRVlcbiAgICAgIGFwaV9iYXNlOiBvcy5lbnZpcm9uL09QRU5BSV9BUElfQkFTRVxuICAjIEFudGhyb3BpY1xuICAtIG1vZGVsX25hbWU6IGNsYXVkZS0zLWhhaWt1XG4gICAgbGl0ZWxsbV9wYXJhbXM6XG4gICAgICBtb2RlbDogY2xhdWRlLTMtaGFpa3UtMjAyNDAzMDdcbiAgICAgIGFwaV9rZXk6IFwib3MuZW52aXJvbi9BTlRIUk9QSUNfQVBJX0tFWVwiXG4gICAgICBhcGlfYmFzZTogXCJvcy5lbnZpcm9uL0FOVEhST1BJQ19BUElfQkFTRVwiXG4gIC0gbW9kZWxfbmFtZTogY2xhdWRlLTMuNS1zb25uZXRcbiAgICBsaXRlbGxtX3BhcmFtczpcbiAgICAgIG1vZGVsOiBjbGF1ZGUtMy01LXNvbm5ldC0yMDI0MDYyMFxuICAgICAgYXBpX2tleTogXCJvcy5lbnZpcm9uL0FOVEhST1BJQ19BUElfS0VZXCJcbiAgICAgIGFwaV9iYXNlOiBcIm9zLmVudmlyb24vQU5USFJPUElDX0FQSV9CQVNFXCJcbiAgIyBWb3lhZ2VBSVxuICAtIG1vZGVsX25hbWU6IHZveWFnZS1sYXctMlxuICAgIG1vZGVsX2luZm86XG4gICAgICBvdXRwdXRfdmVjdG9yX3NpemU6IDEwMjRcbiAgICBsaXRlbGxtX3BhcmFtczpcbiAgICAgIG1vZGVsOiB2b3lhZ2Uvdm95YWdlLWxhdy0yXG4gICAgICBhcGlfa2V5OiBcIm9zLmVudmlyb24vVk9ZQUdFX0FQSV9LRVlcIlxuICAgICAgYXBpX2Jhc2U6IFwib3MuZW52aXJvbi9WT1lBR0VfQVBJX0JBU0VcIlxuICAgICAgIyBycG06IDMwMFxuICAgICAgIyB0cG06IDEwMDAwMDBcbiAgLSBtb2RlbF9uYW1lOiB2b3lhZ2UtbXVsdGlsaW5ndWFsLTJcbiAgICBtb2RlbF9pbmZvOlxuICAgICAgbW9kZTogZW1iZWRkaW5nXG4gICAgICBtYXhfdG9rZW5zOiAzMjAwMFxuICAgICAgbWF4X2lucHV0X3Rva2VuczogMzIwMDBcbiAgICAgIG91dHB1dF92ZWN0b3Jfc2l6ZTogMTAyNFxuICAgIGxpdGVsbG1fcGFyYW1zOlxuICAgICAgbW9kZWw6IHZveWFnZS92b3lhZ2UtbXVsdGlsaW5ndWFsLTJcbiAgICAgIGFwaV9rZXk6IFwib3MuZW52aXJvbi9WT1lBR0VfQVBJX0tFWVwiXG4gICAgICBhcGlfYmFzZTogXCJvcy5lbnZpcm9uL1ZPWUFHRV9BUElfQkFTRVwiXG4gICAgICBpbnB1dF9jb3N0X3Blcl90b2tlbjogMC4wMDAwMDAxMlxuICAgICAgb3V0cHV0X2Nvc3RfcGVyX3Rva2VuOiAwXG4gICAgICAjIHJwbTogMzAwXG4gICAgICAjIHRwbTogMTAwMDAwMCIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBweXRob24KICAgICAgICAtICctYycKICAgICAgICAtICJpbXBvcnQgcmVxdWVzdHMgYXMgcjtyLmdldCgnaHR0cDovLzEyNy4wLjAuMTo0MDAwL2hlYWx0aC9saXZlbGluZXNzJykucmFpc2VfZm9yX3N0YXR1cygpIgogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMwogICAgY29tbWFuZDoKICAgICAgLSAnLS1jb25maWcnCiAgICAgIC0gL2FwcC9jb25maWcueWFtbAogICAgICAtICctLXBvcnQnCiAgICAgIC0gJzQwMDAnCiAgICAgIC0gJy0tbnVtX3dvcmtlcnMnCiAgICAgIC0gJzgnCiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1saXRlbGxtfScKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgdm9sdW1lczoKICAgICAgLSAncGctZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLWggbG9jYWxob3N0IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDMKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6Ny1hbHBpbmUnCiAgICBjb21tYW5kOiAncmVkaXMtc2VydmVyIC0tYXBwZW5kb25seSB5ZXMnCiAgICB2b2x1bWVzOgogICAgICAtICdyZWRpcy1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMwo=",
+ "tags": [
+ "ai",
+ "qdrant",
+ "weaviate",
+ "langchain",
+ "openai",
+ "gpt",
+ "llm",
+ "lmops",
+ "anthropic",
+ "cohere",
+ "ollama",
+ "sagemaker",
+ "huggingface",
+ "replicate",
+ "groq"
+ ],
+ "logo": "svgs/litellm.svg",
+ "minversion": "0.0.0",
+ "port": "4000"
+ },
+ "litequeen": {
+ "documentation": "https://litequeen.com/?utm_source=coolify.io",
+ "slogan": "Lite Queen is an open-source SQLite database management software that runs on your server.",
+ "compose": "c2VydmljZXM6CiAgbGl0ZXF1ZWVuOgogICAgaW1hZ2U6ICdraXZzZWdyb2IvbGl0ZS1xdWVlbjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9MSVRFUVVFRU5fODAwMAogICAgdm9sdW1lczoKICAgICAgLSAnbGl0ZXF1ZWVuLWRhdGE6L2hvbWUvbGl0ZXF1ZWVuL2RhdGEnCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2RhdGFiYXNlcwogICAgICAgIHRhcmdldDogL3NydgogICAgICAgIGlzX2RpcmVjdG9yeTogdHJ1ZQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvODAwMCcgfHwgZXhpdCAxIgogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMwo=",
+ "tags": [
+ "sqlite",
+ "sqlite-database-management",
+ "self-hosted",
+ "vps",
+ "database"
+ ],
+ "logo": "svgs/litequeen.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "logto": {
+ "documentation": "https://docs.logto.io/docs/tutorials/get-started/#logto-oss-self-hosted?utm_source=coolify.io",
+ "slogan": "A comprehensive identity solution covering both the front and backend, complete with pre-built infrastructure and enterprise-grade solutions.",
+ "compose": "c2VydmljZXM6CiAgbG9ndG86CiAgICBpbWFnZTogJ3N2aGQvbG9ndG86JHtUQUctbGF0ZXN0fScKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnRyeXBvaW50OgogICAgICAtIHNoCiAgICAgIC0gJy1jJwogICAgICAtICducG0gcnVuIGNsaSBkYiBzZWVkIC0tIC0tc3dlICYmIG5wbSBzdGFydCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0xPR1RPCiAgICAgIC0gVFJVU1RfUFJPWFlfSEVBREVSPTEKICAgICAgLSAnREJfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1sb2d0b30nCiAgICAgIC0gRU5EUE9JTlQ9JExPR1RPX0VORFBPSU5UCiAgICAgIC0gQURNSU5fRU5EUE9JTlQ9JExPR1RPX0FETUlOX0VORFBPSU5UCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2V4aXQgMCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNC1hbHBpbmUnCiAgICB1c2VyOiBwb3N0Z3JlcwogICAgZW52aXJvbm1lbnQ6CiAgICAgIFBPU1RHUkVTX1VTRVI6ICcke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAnJHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgUE9TVEdSRVNfREI6ICcke1BPU1RHUkVTX0RCOi1sb2d0b30nCiAgICB2b2x1bWVzOgogICAgICAtICdsb2d0by1wb3N0Z3Jlcy1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBwZ19pc3JlYWR5CiAgICAgICAgLSAnLVUnCiAgICAgICAgLSAkU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgICAgLSAnLWQnCiAgICAgICAgLSAkUE9TVEdSRVNfREIKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "logto",
+ "identity",
+ "login",
+ "authentication",
+ "oauth",
+ "oidc",
+ "openid"
+ ],
+ "logo": "svgs/logto_dark.svg",
+ "minversion": "0.0.0"
+ },
+ "lowcoder": {
+ "documentation": "https://docs.lowcoder.cloud/?utm_source=coolify.io",
+ "slogan": "Lowcoder (forked from OpenBlocks) is a self-hosted, open-source, low-code platform for building internal tools.",
+ "compose": "c2VydmljZXM6CiAgbG93Y29kZXI6CiAgICBpbWFnZTogbG93Y29kZXJvcmcvbG93Y29kZXItY2UKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0xPV0NPREVSXzMwMDAKICAgICAgLSAnTE9XQ09ERVJfRU1BSUxfU0lHTlVQX0VOQUJMRUQ9JHtMT1dDT0RFUl9FTUFJTF9TSUdOVVBfRU5BQkxFRDotdHJ1ZX0nCiAgICAgIC0gJ0xPV0NPREVSX0RCX0VOQ1JZUFRJT05fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0VOQ1JZUFRJT059JwogICAgICAtICdMT1dDT0RFUl9EQl9FTkNSWVBUSU9OX1NBTFQ9JHtTRVJWSUNFX1BBU1NXT1JEX1NBTFR9JwogICAgdm9sdW1lczoKICAgICAgLSAnbG93Y29kZXJfZGF0YTovbG93Y29kZXItc3RhY2tzJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjMwMDAvaGVhbHRoJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "lowcoder",
+ "openblocks",
+ "low",
+ "code",
+ "platform",
+ "open",
+ "source",
+ "low",
+ "code"
+ ],
+ "logo": "svgs/lowcoder.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "mailpit": {
+ "documentation": "https://mailpit.axllent.org/docs/?utm_source=coolify.io",
+ "slogan": "Email & SMTP testing tool with API for developers",
+ "compose": "c2VydmljZXM6CiAgbWFpbHBpdDoKICAgIGltYWdlOiBheGxsZW50L21haWxwaXQKICAgIHBvcnRzOgogICAgICAtICcxMDI1OjEwMjUnCiAgICB2b2x1bWVzOgogICAgICAtICdtYWlscGl0LWRhdGE6L2RhdGEnCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2h0cGFzc3dkCiAgICAgICAgdGFyZ2V0OiAvZGF0YS9odHBhc3N3ZAogICAgICAgIGlzRGlyZWN0b3J5OiBmYWxzZQogICAgICAgIGNvbnRlbnQ6ICcnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9NQUlMUElUXzgwMjUKICAgICAgLSBNUF9NQVhfTUVTU0FHRVM9NTAwMAogICAgICAtIE1QX0RBVEFCQVNFPS9kYXRhL21haWxwaXQuZGIKICAgICAgLSBNUF9TTVRQX0FVVEhfQUNDRVBUX0FOWT0xCiAgICAgIC0gTVBfU01UUF9BVVRIX0FMTE9XX0lOU0VDVVJFPTEKICAgICAgLSBNUF9VSV9BVVRIX0ZJTEU9L2RhdGEvaHRwYXNzd2QKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSAvbWFpbHBpdAogICAgICAgIC0gcmVhZHl6CiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "mailpit",
+ "email",
+ "testing",
+ "smtp"
+ ],
+ "logo": "svgs/mailpit.svg",
+ "minversion": "0.0.0",
+ "port": "8025"
+ },
+ "martin": {
+ "documentation": "https://maplibre.org/martin/introduction.html/?utm_source=coolify.io",
+ "slogan": "Martin is a tile server able to generate and serve vector tiles on the fly from large PostGIS databases, PMTiles (local or remote), and MBTiles files, allowing multiple tile sources to be dynamically combined into one.",
+ "compose": "c2VydmljZXM6CiAgbWFydGluOgogICAgaW1hZ2U6ICdnaGNyLmlvL21hcGxpYnJlL21hcnRpbjp2MC4xMy4wJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfTUFSVElOXzMwMDAKICAgICAgLSAnSE9TVD0ke1NFUlZJQ0VfVVJMX01BUlRJTn0nCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXNxbDo1NDMyLyR7UE9TVEdSRVNfREI6LW1hcnRpbi1kYn0nCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy1xJwogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBvc3RncmVzcWw6CiAgICBpbWFnZTogJ3Bvc3RnaXMvcG9zdGdpczoxNi0zLjQtYWxwaW5lJwogICAgcGxhdGZvcm06IGxpbnV4L2FtZDY0CiAgICB2b2x1bWVzOgogICAgICAtICdtYXJ0aW4tcG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LW1hcnRpbi1kYn0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "postgis",
+ "vector",
+ "tiles"
+ ],
+ "logo": "svgs/martin.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "matrix": {
+ "documentation": "https://matrix.org/docs/chat_basics/matrix-for-im/?utm_source=coolify.io",
+ "slogan": "Chat securely with your family, friends, community, or build great apps with Matrix!",
+ "compose": "c2VydmljZXM6CiAgbWF0cml4OgogICAgaW1hZ2U6ICdtYXRyaXhkb3Rvcmcvc3luYXBzZTpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9NQVRSSVhfODAwOAogICAgICAtICdTWU5BUFNFX1NFUlZFUl9OQU1FPSR7U0VSVklDRV9VUkxfTUFUUklYfScKICAgICAgLSAnU1lOQVBTRV9SRVBPUlRfU1RBVFM9JHtTWU5BUFNFX1JFUE9SVF9TVEFUUzotbm99JwogICAgICAtICdFTkFCTEVfUkVHSVNUUkFUSU9OPSR7RU5BQkxFX1JFR0lTVFJBVElPTjotZmFsc2V9JwogICAgICAtICdSRUNBUFRDSEFfUFVCTElDX0tFWT0ke1JFQ0FQVENIQV9QVUJMSUNfS0VZfScKICAgICAgLSAnUkVDQVBUQ0hBX1BSSVZBVEVfS0VZPSR7UkVDQVBUQ0hBX1BSSVZBVEVfS0VZfScKICAgICAgLSAnX1NFUlZFUl9OQU1FPSR7U0VSVklDRV9VUkxfTUFUUklYfScKICAgICAgLSAnX0FETUlOX05BTUU9JHtTRVJWSUNFX1VTRVJfQURNSU59JwogICAgICAtICdfQURNSU5fUEFTUz0ke1NFUlZJQ0VfUEFTU1dPUkRfQURNSU59JwogICAgdm9sdW1lczoKICAgICAgLSAnbWF0cml4LWRhdGE6L2RhdGEnCiAgICBlbnRyeXBvaW50OgogICAgICAtIC9iaW4vYmFzaAogICAgICAtICctYycKICAgICAgLSAiISB0ZXN0IC1mIC9kYXRhL2hvbWVzZXJ2ZXIueWFtbCAmJiAvc3RhcnQucHkgZ2VuZXJhdGVcblxuIyByZWdpc3RyYXRpb25fc2hhcmVkX3NlY3JldFxuZ3JlcCBcInJlZ2lzdHJhdGlvbl9zaGFyZWRfc2VjcmV0XCIgL2RhdGEvaG9tZXNlcnZlci55YW1sIFxcXG58IGF3ayAne3ByaW50ICQyfScgPiAuL3JlZ2lzdHJhdGlvbl9zaGFyZWRfc2VjcmV0XG5cbiMgbWFjYXJvb25fc2VjcmV0X2tleVxuZ3JlcCBcIm1hY2Fyb29uX3NlY3JldF9rZXlcIiAvZGF0YS9ob21lc2VydmVyLnlhbWwgXFxcbnwgYXdrICd7cHJpbnQgJDJ9JyA+IC4vbWFjYXJvb25fc2VjcmV0X2tleVxuXG4jIGZvcm1fc2VjcmV0XG5ncmVwIFwiZm9ybV9zZWNyZXRcIiAvZGF0YS9ob21lc2VydmVyLnlhbWwgXFxcbnwgYXdrICd7cHJpbnQgJDJ9JyA+IC4vZm9ybV9zZWNyZXRcblxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbiMgICAgICAgICAgICAgICAgICAgICAgICAjXG4jIGhvbWVzZXJ2ZXIueWFtbDogc3RhcnQgI1xuIyAgICAgICAgICAgICAgICAgICAgICAgICNcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5jYXQgPDxFT0YgPiAvZGF0YS9ob21lc2VydmVyLnlhbWxcbnNlcnZlcl9uYW1lOiBcIiR7U0VSVklDRV9VUkxfTUFUUklYfVwiXG5waWRfZmlsZTogL2RhdGEvaG9tZXNlcnZlci5waWRcblxuIyBzZXJ2ZXJcbmxpc3RlbmVyczpcbiAgLSBwb3J0OiA4MDA4XG4gICAgdGxzOiBmYWxzZVxuICAgIHR5cGU6IGh0dHBcbiAgICB4X2ZvcndhcmRlZDogdHJ1ZVxuICAgIHJlc291cmNlczpcbiAgICAgIC0gbmFtZXM6IFtjbGllbnQsIGZlZGVyYXRpb25dXG4gICAgICAgIGNvbXByZXNzOiBmYWxzZVxuXG4jIGRhdGFiYXNlXG5kYXRhYmFzZTpcbiAgbmFtZTogc3FsaXRlM1xuICBhcmdzOlxuICAgIGRhdGFiYXNlOiAvZGF0YS9ob21lc2VydmVyLmRiXG5cbiMgZ2VuZXJhbFxubG9nX2NvbmZpZzogXCIvZGF0YS8ke1NFUlZJQ0VfVVJMX01BVFJJWH0ubG9nLmNvbmZpZ1wiXG5tZWRpYV9zdG9yZV9wYXRoOiAvZGF0YS9tZWRpYV9zdG9yZVxucmVwb3J0X3N0YXRzOiBmYWxzZVxuXG4jIHNlY3JldHNcbnJlZ2lzdHJhdGlvbl9zaGFyZWRfc2VjcmV0OiAkKDwuL3JlZ2lzdHJhdGlvbl9zaGFyZWRfc2VjcmV0KVxubWFjYXJvb25fc2VjcmV0X2tleTogJCg8Li9tYWNhcm9vbl9zZWNyZXRfa2V5KVxuZm9ybV9zZWNyZXQ6ICQoPC4vZm9ybV9zZWNyZXQpXG5zaWduaW5nX2tleV9wYXRoOiBcIi9kYXRhLyR7U0VSVklDRV9VUkxfTUFUUklYfS5zaWduaW5nLmtleVwiXG5cbiNyb29tc1xuYXV0b19qb2luX3Jvb21zOlxuICAtIFwiI2dlbmVyYWw6JHtTRVJWSUNFX1VSTF9NQVRSSVh9XCJcblxuIyBmZWRlcmF0aW9uXG50cnVzdGVkX2tleV9zZXJ2ZXJzOlxuICAtIHNlcnZlcl9uYW1lOiBcIm1hdHJpeC5vcmdcIlxuYXV0b2NyZWF0ZV9hdXRvX2pvaW5fcm9vbXNfZmVkZXJhdGVkOiBmYWxzZVxuYWxsb3dfcHVibGljX3Jvb21zX292ZXJfZmVkZXJhdGlvbjogZmFsc2VcbkVPRlxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG4jICAgICAgICAgICAgICAgICAgICAgICNcbiMgaG9tZXNlcnZlci55YW1sOiBlbmQgI1xuIyAgICAgICAgICAgICAgICAgICAgICAjXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuWyBcIiR7RU5BQkxFX1JFR0lTVFJBVElPTn1cIiA9IFwidHJ1ZVwiIF0gJiYgISBncmVwIFwiI3JlZ2lzdHJhdGlvblwiIC9kYXRhL2hvbWVzZXJ2ZXIueWFtbCAmPi9kZXYvbnVsbCBcXFxuJiYgZWNobyA+PiAvZGF0YS9ob21lc2VydmVyLnlhbWwgXFxcbiYmIGNhdCA8PEVPRiA+PiAvZGF0YS9ob21lc2VydmVyLnlhbWxcbiNyZWdpc3RyYXRpb25cbmVuYWJsZV9yZWdpc3RyYXRpb246IHRydWUgICMgQWxsb3dzIHVzZXJzIHRvIHJlZ2lzdGVyIG9uIHlvdXIgc2VydmVyLlxuRU9GXG5cblsgLW4gXCIke1JFQ0FQVENIQV9QVUJMSUNfS0VZfVwiIF0gJiYgISBncmVwIFwiJHtSRUNBUFRDSEFfUFVCTElDX0tFWX1cIiAvZGF0YS9ob21lc2VydmVyLnlhbWwgJj4vZGV2L251bGwgXFxcbiYmIGVjaG8gPj4gL2RhdGEvaG9tZXNlcnZlci55YW1sIFxcXG4mJiBjYXQgPDxFT0YgPj4gL2RhdGEvaG9tZXNlcnZlci55YW1sXG4jIHJlQ0FQVENIQSBzZXR0aW5nc1xuZW5hYmxlX3JlZ2lzdHJhdGlvbl9jYXB0Y2hhOiB0cnVlICAjIEVuYWJsZXMgQ0FQVENIQSBmb3IgcmVnaXN0cmF0aW9ucy5cbnJlY2FwdGNoYV9wdWJsaWNfa2V5OiBcIiR7UkVDQVBUQ0hBX1BVQkxJQ19LRVl9XCJcbnJlY2FwdGNoYV9wcml2YXRlX2tleTogXCIke1JFQ0FQVENIQV9QUklWQVRFX0tFWX1cIlxucmVjYXB0Y2hhX3NpdGV2ZXJpZnlfYXBpOiBcImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS9zaXRldmVyaWZ5XCJcbkVPRlxuXG5yZWdpc3Rlcl9hZG1pbigpe1xuICB3aGlsZSAhIGN1cmwgLUkgbG9jYWxob3N0OjgwMDggJj4vZGV2L251bGw7IGRvXG4gICAgc2xlZXAgMVxuICBkb25lXG4gIHJlZ2lzdGVyX25ld19tYXRyaXhfdXNlciBcXFxuICAgIC1hIFxcXG4gICAgLXUgJHtTRVJWSUNFX1VTRVJfQURNSU59IFxcXG4gICAgLXAgJHtTRVJWSUNFX1BBU1NXT1JEX0FETUlOfSBcXFxuICAgIC1jIC9kYXRhL2hvbWVzZXJ2ZXIueWFtbCBcXFxuICAgIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwOCAmPi9kZXYvbnVsbFxufVxucmVnaXN0ZXJfYWRtaW4gJlxuXG4vc3RhcnQucHlcbiIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLUknCiAgICAgICAgLSAnbG9jYWxob3N0OjgwMDgnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAzcwogICAgICByZXRyaWVzOiA1Cg==",
+ "tags": [
+ "chat",
+ "slack",
+ "discord",
+ "voip",
+ "video",
+ "call"
+ ],
+ "logo": "svgs/matrix.svg",
+ "minversion": "0.0.0",
+ "port": "8008"
+ },
+ "mattermost": {
+ "documentation": "https://docs.mattermost.com?utm_source=coolify.io",
+ "slogan": "Mattermost is an open source, self-hosted Slack-alternative.",
+ "compose": "c2VydmljZXM6CiAgbWF0dGVybW9zdDoKICAgIGltYWdlOiAnbWF0dGVybW9zdC9tYXR0ZXJtb3N0LXRlYW0tZWRpdGlvbjpyZWxlYXNlLTEwJwogICAgcGxhdGZvcm06IGxpbnV4L2FtZDY0CiAgICB2b2x1bWVzOgogICAgICAtICdtYXR0ZXJtb3N0LWRhdGEtY29uZmlnOi9tYXR0ZXJtb3N0L2NvbmZpZzpydycKICAgICAgLSAnbWF0dGVybW9zdC1kYXRhLWRhdGE6L21hdHRlcm1vc3QvZGF0YTpydycKICAgICAgLSAnbWF0dGVybW9zdC1kYXRhLWxvZ3M6L21hdHRlcm1vc3QvbG9nczpydycKICAgICAgLSAnbWF0dGVybW9zdC1kYXRhLXBsdWdpbnM6L21hdHRlcm1vc3QvcGx1Z2luczpydycKICAgICAgLSAnbWF0dGVybW9zdC1kYXRhLWNsaWVudC1wbHVnaW5zOi9tYXR0ZXJtb3N0L2NsaWVudC9wbHVnaW5zOnJ3JwogICAgICAtICdtYXR0ZXJtb3N0LWRhdGEtYmxldmUtaW5kZXhlczovbWF0dGVybW9zdC9ibGV2ZS1pbmRleGVzOnJ3JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfTUFUVEVSTU9TVF84MDY1CiAgICAgIC0gJ01NX1NFUlZJQ0VTRVRUSU5HU19TSVRFVVJMPSR7U0VSVklDRV9VUkxfTUFUVEVSTU9TVH0nCiAgICAgIC0gJ1RaPSR7VFo6LVVUQ30nCiAgICAgIC0gTU1fU1FMU0VUVElOR1NfRFJJVkVSTkFNRT1wb3N0Z3JlcwogICAgICAtICdNTV9TUUxTRVRUSU5HU19EQVRBU09VUkNFPXBvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlczo1NDMyLyRQT1NUR1JFU19EQj9zc2xtb2RlPWRpc2FibGUmY29ubmVjdF90aW1lb3V0PTEwJwogICAgICAtIE1NX0JMRVZFU0VUVElOR1NfSU5ERVhESVI9L21hdHRlcm1vc3QvYmxldmUtaW5kZXhlcwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDY1JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1tYXR0ZXJtb3N0fScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "mattermost",
+ "slack",
+ "alternative"
+ ],
+ "logo": "svgs/mattermost.svg",
+ "minversion": "0.0.0",
+ "port": "8065"
+ },
+ "mautic5": {
+ "documentation": "https://www.mautic.org/?utm_source=coolify.io",
+ "slogan": "Mautic v5 Open Source Marketing Automation",
+ "compose": "c2VydmljZXM6CiAgbXlzcWw6CiAgICBpbWFnZTogJ215c3FsOjguMCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdNWVNRTF9ST09UX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF82NF9NWVNRTFJPT1R9JwogICAgICAtICdNWVNRTF9EQVRBQkFTRT0ke01ZU1FMX0RBVEFCQVNFOi1tYXV0aWN9JwogICAgICAtICdNWVNRTF9VU0VSPSR7U0VSVklDRV9VU0VSX01ZU1FMfScKICAgICAgLSAnTVlTUUxfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X01ZU1FMfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ215c3FsLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogJ215c3FsYWRtaW4gcGluZyAtLXNpbGVudCAtLXVzZXI9JCRTRVJWSUNFX1VTRVJfTVlTUUwgLS1wYXNzd29yZD0kJFNFUlZJQ0VfUEFTU1dPUkRfNjRfTVlTUUwnCiAgICAgIHN0YXJ0X3BlcmlvZDogMzBzCiAgICAgIGludGVydmFsOiAxMHMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogNQogIHJhYmJpdG1xOgogICAgaW1hZ2U6ICdyYWJiaXRtcTozJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1JBQkJJVE1RX0RFRkFVTFRfVkhPU1Q9JHtSQUJCSVRNUV9ERUZBVUxUX1ZIT1NUOi1tYXV0aWN9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6ICdyYWJiaXRtcS1kaWFnbm9zdGljcyAtcSBwaW5nJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMzBzCiAgICAgIHJldHJpZXM6IDEwCiAgICB2b2x1bWVzOgogICAgICAtICdyYWJiaXRtcS1kYXRhOi92YXIvbGliL3JhYmJpdG1xJwogIG1hdXRpY193ZWI6CiAgICBpbWFnZTogJ21hdXRpYy9tYXV0aWM6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnbWF1dGljX2RhdGEvY29uZmlnOi92YXIvd3d3L2h0bWwvY29uZmlnOnonCiAgICAgIC0gJ21hdXRpY19kYXRhL2xvZ3M6L3Zhci93d3cvaHRtbC92YXIvbG9nczp6JwogICAgICAtICdtYXV0aWNfZGF0YS9tZWRpYS9maWxlczovdmFyL3d3dy9odG1sL2RvY3Jvb3QvbWVkaWEvZmlsZXM6eicKICAgICAgLSAnbWF1dGljX2RhdGEvbWVkaWEvaW1hZ2VzOi92YXIvd3d3L2h0bWwvZG9jcm9vdC9tZWRpYS9pbWFnZXM6eicKICAgICAgLSAnbWF1dGljX2RhdGEvcGx1Z2luczovdmFyL3d3dy9odG1sL2RvY3Jvb3QvcGx1Z2luczp6JwogICAgICAtICdtYXV0aWNfZGF0YS92ZW5kb3I6L3Zhci93d3cvaHRtbC92ZW5kb3I6eicKICAgICAgLSAnbWF1dGljX2RhdGEvYmluOi92YXIvd3d3L2h0bWwvYmluOnonCiAgICAgIC0gJ21hdXRpY19kYXRhL2Nyb246L29wdC9tYXV0aWMvY3Jvbjp6JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfTUFVVElDXzgwCiAgICAgIC0gJ0RPQ0tFUl9NQVVUSUNfTE9BRF9URVNUX0RBVEE9JHtNQVVUSUNfTE9BRF9URVNUX0RBVEE6LWZhbHNlfScKICAgICAgLSAnRE9DS0VSX01BVVRJQ19SVU5fTUlHUkFUSU9OUz0ke01BVVRJQ19SVU5fTUlHUkFUSU9OUzotZmFsc2V9JwogICAgICAtICdNQVVUSUNfREJfSE9TVD0ke01ZU1FMX0hPU1Q6LW15c3FsfScKICAgICAgLSAnTUFVVElDX0RCX1BPUlQ9JHtNWVNRTF9QT1JUOi0zMzA2fScKICAgICAgLSAnTUFVVElDX0RCX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LW1hdXRpY30nCiAgICAgIC0gJ01BVVRJQ19EQl9VU0VSPSR7U0VSVklDRV9VU0VSX01ZU1FMfScKICAgICAgLSAnTUFVVElDX0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF82NF9NWVNRTH0nCiAgICAgIC0gJ01BVVRJQ19NRVNTRU5HRVJfRFNOX0VNQUlMPSR7TUFVVElDX01FU1NFTkdFUl9EU05fRU1BSUw6LWFtcXA6Ly9ndWVzdDpndWVzdEByYWJiaXRtcTo1NjcyL21hdXRpYy9tZXNzYWdlc30nCiAgICAgIC0gJ01BVVRJQ19NRVNTRU5HRVJfRFNOX0hJVD0ke01BVVRJQ19NRVNTRU5HRVJfRFNOX0hJVDotYW1xcDovL2d1ZXN0Omd1ZXN0QHJhYmJpdG1xOjU2NzIvbWF1dGljL21lc3NhZ2VzfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdCcKICAgICAgaW50ZXJ2YWw6IDE1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBtYXV0aWNfY3JvbjoKICAgIGltYWdlOiAnbWF1dGljL21hdXRpYzpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdtYXV0aWNfZGF0YS9jb25maWc6L3Zhci93d3cvaHRtbC9jb25maWc6eicKICAgICAgLSAnbWF1dGljX2RhdGEvbG9nczovdmFyL3d3dy9odG1sL3Zhci9sb2dzOnonCiAgICAgIC0gJ21hdXRpY19kYXRhL21lZGlhL2ZpbGVzOi92YXIvd3d3L2h0bWwvZG9jcm9vdC9tZWRpYS9maWxlczp6JwogICAgICAtICdtYXV0aWNfZGF0YS9tZWRpYS9pbWFnZXM6L3Zhci93d3cvaHRtbC9kb2Nyb290L21lZGlhL2ltYWdlczp6JwogICAgICAtICdtYXV0aWNfZGF0YS9wbHVnaW5zOi92YXIvd3d3L2h0bWwvZG9jcm9vdC9wbHVnaW5zOnonCiAgICAgIC0gJ21hdXRpY19kYXRhL3ZlbmRvcjovdmFyL3d3dy9odG1sL3ZlbmRvcjp6JwogICAgICAtICdtYXV0aWNfZGF0YS9iaW46L3Zhci93d3cvaHRtbC9iaW46eicKICAgICAgLSAnbWF1dGljX2RhdGEvY3Jvbjovb3B0L21hdXRpYy9jcm9uOnonCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBET0NLRVJfTUFVVElDX1JPTEU9bWF1dGljX2Nyb24KICAgICAgLSAnTUFVVElDX0RCX0hPU1Q9JHtNWVNRTF9IT1NUOi1teXNxbH0nCiAgICAgIC0gJ01BVVRJQ19EQl9QT1JUPSR7TVlTUUxfUE9SVDotMzMwNn0nCiAgICAgIC0gJ01BVVRJQ19EQl9EQVRBQkFTRT0ke01ZU1FMX0RBVEFCQVNFOi1tYXV0aWN9JwogICAgICAtICdNQVVUSUNfREJfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ01BVVRJQ19EQl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfTVlTUUx9JwogICAgICAtICdNQVVUSUNfTUVTU0VOR0VSX0RTTl9FTUFJTD0ke01BVVRJQ19NRVNTRU5HRVJfRFNOX0VNQUlMOi1hbXFwOi8vZ3Vlc3Q6Z3Vlc3RAcmFiYml0bXE6NTY3Mi9tYXV0aWMvbWVzc2FnZXN9JwogICAgICAtICdNQVVUSUNfTUVTU0VOR0VSX0RTTl9ISVQ9JHtNQVVUSUNfTUVTU0VOR0VSX0RTTl9ISVQ6LWFtcXA6Ly9ndWVzdDpndWVzdEByYWJiaXRtcTo1NjcyL21hdXRpYy9tZXNzYWdlc30nCiAgICBkZXBlbmRzX29uOgogICAgICBtYXV0aWNfd2ViOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2V4aXQgMCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIG1hdXRpY193b3JrZXI6CiAgICBpbWFnZTogJ21hdXRpYy9tYXV0aWM6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnbWF1dGljX2RhdGEvY29uZmlnOi92YXIvd3d3L2h0bWwvY29uZmlnOnonCiAgICAgIC0gJ21hdXRpY19kYXRhL2xvZ3M6L3Zhci93d3cvaHRtbC92YXIvbG9nczp6JwogICAgICAtICdtYXV0aWNfZGF0YS9tZWRpYS9maWxlczovdmFyL3d3dy9odG1sL2RvY3Jvb3QvbWVkaWEvZmlsZXM6eicKICAgICAgLSAnbWF1dGljX2RhdGEvbWVkaWEvaW1hZ2VzOi92YXIvd3d3L2h0bWwvZG9jcm9vdC9tZWRpYS9pbWFnZXM6eicKICAgICAgLSAnbWF1dGljX2RhdGEvcGx1Z2luczovdmFyL3d3dy9odG1sL2RvY3Jvb3QvcGx1Z2luczp6JwogICAgICAtICdtYXV0aWNfZGF0YS92ZW5kb3I6L3Zhci93d3cvaHRtbC92ZW5kb3I6eicKICAgICAgLSAnbWF1dGljX2RhdGEvYmluOi92YXIvd3d3L2h0bWwvYmluOnonCiAgICAgIC0gJ21hdXRpY19kYXRhL2Nyb246L29wdC9tYXV0aWMvY3Jvbjp6JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gRE9DS0VSX01BVVRJQ19ST0xFPW1hdXRpY193b3JrZXIKICAgICAgLSAnTUFVVElDX0RCX0hPU1Q9JHtNWVNRTF9IT1NUOi1teXNxbH0nCiAgICAgIC0gJ01BVVRJQ19EQl9QT1JUPSR7TVlTUUxfUE9SVDotMzMwNn0nCiAgICAgIC0gJ01BVVRJQ19EQl9EQVRBQkFTRT0ke01ZU1FMX0RBVEFCQVNFOi1tYXV0aWN9JwogICAgICAtICdNQVVUSUNfREJfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ01BVVRJQ19EQl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfTVlTUUx9JwogICAgICAtICdNQVVUSUNfTUVTU0VOR0VSX0RTTl9FTUFJTD0ke01BVVRJQ19NRVNTRU5HRVJfRFNOX0VNQUlMOi1hbXFwOi8vZ3Vlc3Q6Z3Vlc3RAcmFiYml0bXE6NTY3Mi9tYXV0aWMvbWVzc2FnZXN9JwogICAgICAtICdNQVVUSUNfTUVTU0VOR0VSX0RTTl9ISVQ9JHtNQVVUSUNfTUVTU0VOR0VSX0RTTl9ISVQ6LWFtcXA6Ly9ndWVzdDpndWVzdEByYWJiaXRtcTo1NjcyL21hdXRpYy9tZXNzYWdlc30nCiAgICBkZXBlbmRzX29uOgogICAgICBtYXV0aWNfd2ViOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2V4aXQgMCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "php",
+ "mautic",
+ "marketing",
+ "automation",
+ "email",
+ "service",
+ "5",
+ "open",
+ "source",
+ "crm"
+ ],
+ "logo": "svgs/mautic.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "maybe": {
+ "documentation": "https://github.com/maybe-finance/maybe?utm_source=coolify.io",
+ "slogan": "Maybe, the OS for your personal finances.",
+ "compose": "c2VydmljZXM6CiAgbWF5YmU6CiAgICBpbWFnZTogJ2doY3IuaW8vbWF5YmUtZmluYW5jZS9tYXliZTpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdhcHBfc3RvcmFnZTovcmFpbHMvc3RvcmFnZScKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX01BWUJFCiAgICAgIC0gU0VMRl9IT1NURUQ9dHJ1ZQogICAgICAtICdSQUlMU19GT1JDRV9TU0w9JHtSQUlMU19GT1JDRV9TU0w6LWZhbHNlfScKICAgICAgLSAnUkFJTFNfQVNTVU1FX1NTTD0ke1JBSUxTX0FTU1VNRV9TU0w6LWZhbHNlfScKICAgICAgLSAnR09PRF9KT0JfRVhFQ1VUSU9OX01PREU9JHtHT09EX0pPQl9FWEVDVVRJT05fTU9ERTotYXN5bmN9JwogICAgICAtICdTRUNSRVRfS0VZX0JBU0U9JHtTRVJWSUNFX0JBU0U2NF82NF9TRUNSRVRLRVlCQVNFfScKICAgICAgLSBEQl9IT1NUPXBvc3RncmVzCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LW1heWJlLWRifScKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gREJfUE9SVD01NDMyCiAgICAgIC0gJ1JFRElTX1VSTD1yZWRpczovL2RlZmF1bHQ6JHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfUByZWRpczo2Mzc5LzEnCiAgICAgIC0gJ09QRU5BSV9BQ0NFU1NfVE9LRU49JHtPUEVOQUlfQUNDRVNTX1RPS0VOfScKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogIHdvcmtlcjoKICAgIGltYWdlOiAnZ2hjci5pby9tYXliZS1maW5hbmNlL21heWJlOmxhdGVzdCcKICAgIGNvbW1hbmQ6ICdidW5kbGUgZXhlYyBzaWRla2lxJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1tYXliZS1kYn0nCiAgICAgIC0gJ1NFQ1JFVF9LRVlfQkFTRT0ke1NFUlZJQ0VfQkFTRTY0XzY0X1NFQ1JFVEtFWUJBU0V9JwogICAgICAtIFNFTEZfSE9TVEVEPXRydWUKICAgICAgLSAnUkFJTFNfRk9SQ0VfU1NMPSR7UkFJTFNfRk9SQ0VfU1NMOi1mYWxzZX0nCiAgICAgIC0gJ1JBSUxTX0FTU1VNRV9TU0w9JHtSQUlMU19BU1NVTUVfU1NMOi1mYWxzZX0nCiAgICAgIC0gJ0dPT0RfSk9CX0VYRUNVVElPTl9NT0RFPSR7R09PRF9KT0JfRVhFQ1VUSU9OX01PREU6LWFzeW5jfScKICAgICAgLSBEQl9IT1NUPXBvc3RncmVzCiAgICAgIC0gREJfUE9SVD01NDMyCiAgICAgIC0gJ1JFRElTX1VSTD1yZWRpczovL2RlZmF1bHQ6JHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfUByZWRpczo2Mzc5LzEnCiAgICAgIC0gJ09QRU5BSV9BQ0NFU1NfVE9LRU49JHtPUEVOQUlfQUNDRVNTX1RPS0VOfScKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBleGNsdWRlX2Zyb21faGM6IHRydWUKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAnbWF5YmVfcG9zdGdyZXNfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LW1heWJlLWRifScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6OC1hbHBpbmUnCiAgICBjb21tYW5kOiAncmVkaXMtc2VydmVyIC0tYXBwZW5kb25seSB5ZXMgLS1yZXF1aXJlcGFzcyAke1NFUlZJQ0VfUEFTU1dPUkRfUkVESVN9JwogICAgdm9sdW1lczoKICAgICAgLSAncmVkaXNfZGF0YTovZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtICdSRURJU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUkVESVN9JwogICAgICAtIFJFRElTX1BPUlQ9NjM3OQogICAgICAtIFJFRElTX0RCPTEKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtICctLXBhc3MnCiAgICAgICAgLSAnJHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfScKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAzcwogICAgICByZXRyaWVzOiAzCg==",
+ "tags": [
+ "finances",
+ "wallets",
+ "coins",
+ "stocks",
+ "investments",
+ "open",
+ "source"
+ ],
+ "logo": "svgs/maybe.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "mealie": {
+ "documentation": "https://docs.mealie.io/?utm_source=coolify.io",
+ "slogan": "A recipe manager and meal planner.",
+ "compose": "c2VydmljZXM6CiAgbWVhbGllOgogICAgaW1hZ2U6ICdnaGNyLmlvL21lYWxpZS1yZWNpcGVzL21lYWxpZTpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9NRUFMSUVfOTAwMAogICAgICAtICdBTExPV19TSUdOVVA9JHtBTExPV19TSUdOVVA6LXRydWV9JwogICAgICAtICdQVUlEPSR7UFVJRDotMTAwMH0nCiAgICAgIC0gJ1BHSUQ9JHtQR0lEOi0xMDAwfScKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Jlcmxpbn0nCiAgICAgIC0gJ01BWF9XT1JLRVJTPSR7TUFYX1dPUktFUlM6LTF9JwogICAgICAtICdXRUJfQ09OQ1VSUkVOQ1k9JHtXRUJfQ09OQ1VSUkVOQ1k6LTF9JwogICAgdm9sdW1lczoKICAgICAgLSAnbWVhbGllX2RhdGE6L2FwcC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvOTAwMCcgfHwgZXhpdCAxIgogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDUK",
+ "tags": [
+ "recipe manager",
+ "meal planner",
+ "cooking",
+ "food"
+ ],
+ "logo": "svgs/mealie.png",
+ "minversion": "0.0.0",
+ "port": "9000"
+ },
+ "mediawiki": {
+ "documentation": "https://www.mediawiki.org?utm_source=coolify.io",
+ "slogan": "MediaWiki is a collaboration and documentation platform brought to you by a vibrant community.",
+ "compose": "c2VydmljZXM6CiAgbWVkaWF3aWtpOgogICAgaW1hZ2U6ICdtZWRpYXdpa2k6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfTUVESUFXSUtJXzgwCiAgICB2b2x1bWVzOgogICAgICAtICdtZWRpYXdpa2ktaW1hZ2VzOi92YXIvd3d3L2h0bWwvaW1hZ2VzJwogICAgICAtICdtZWRpYXdpa2ktc3FsaXRlOi92YXIvd3d3L2h0bWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo4MCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "wiki",
+ "collaboration",
+ "documentation"
+ ],
+ "logo": "svgs/mediawiki.ico",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "meilisearch": {
+ "documentation": "https://www.meilisearch.com?utm_source=coolify.io",
+ "slogan": "MeiliSearch is a powerful, fast, easy to use and deploy search engine.",
+ "compose": "c2VydmljZXM6CiAgbWVpbGlzZWFyY2g6CiAgICBpbWFnZTogJ2dldG1laWxpL21laWxpc2VhcmNoOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX01FSUxJU0VBUkNIXzc3MDAKICAgICAgLSAnTUVJTElfTk9fQU5BTFlUSUNTPSR7TUVJTElfTk9fQU5BTFlUSUNTOi10cnVlfScKICAgICAgLSAnTUVJTElfRU5WPSR7TUVJTElfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnTUVJTElfTUFTVEVSX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfTUVJTElTRUFSQ0h9JwogICAgdm9sdW1lczoKICAgICAgLSAnbWVpbGlzZWFyY2gtZGF0YTovbWVpbGlfZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo3NzAwL2hlYWx0aCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "search",
+ "engine",
+ "fulltext",
+ "full",
+ "text",
+ "meilisearch"
+ ],
+ "logo": "svgs/meilisearch.svg",
+ "minversion": "0.0.0",
+ "port": "7700"
+ },
+ "memos": {
+ "documentation": "https://github.com/usememos/memos?utm_source=coolify.io",
+ "slogan": "An open-source, lightweight note-taking solution. The pain-less way to create your meaningful notes. Your Notes, Your Way.",
+ "compose": "c2VydmljZXM6CiAgbWVtb3M6CiAgICBpbWFnZTogJ25lb3NtZW1vL21lbW9zOnN0YWJsZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ21lbW9zLzovdmFyL29wdC9tZW1vcycKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX01FTU9TXzUyMzAK",
+ "tags": [
+ "note-taking",
+ "microblog",
+ "social-network",
+ "markdown"
+ ],
+ "logo": "svgs/memos.png",
+ "minversion": "0.0.0",
+ "port": "5230"
+ },
+ "metabase": {
+ "documentation": "https://www.metabase.com?utm_source=coolify.io",
+ "slogan": "Fast analytics with the friendly UX and integrated tooling to let your company explore data on their own.",
+ "compose": "c2VydmljZXM6CiAgbWV0YWJhc2U6CiAgICBpbWFnZTogJ21ldGFiYXNlL21ldGFiYXNlOmxhdGVzdCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJy9kZXYvdXJhbmRvbTovZGV2L3JhbmRvbTpybycKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX01FVEFCQVNFXzMwMDAKICAgICAgLSBNQl9EQl9UWVBFPXBvc3RncmVzCiAgICAgIC0gTUJfREJfSE9TVD1wb3N0Z3Jlc3FsCiAgICAgIC0gTUJfREJfUE9SVD01NDMyCiAgICAgIC0gJ01CX0RCX0RCTkFNRT0ke1BPU1RHUkVTUUxfREFUQUJBU0U6LW1ldGFiYXNlfScKICAgICAgLSBNQl9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVNRTAogICAgICAtIE1CX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNRTAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6ICdjdXJsIC0tZmFpbCAtSSBodHRwOi8vMTI3LjAuMC4xOjMwMDAvYXBpL2hlYWx0aCB8fCBleGl0IDEnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdtZXRhYmFzZS1wb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVNRTH0nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU1FMX0RBVEFCQVNFOi1tZXRhYmFzZX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "analytics",
+ "bi",
+ "business",
+ "intelligence"
+ ],
+ "logo": "svgs/metabase.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "metube": {
+ "documentation": "https://github.com/alexta69/metube?utm_source=coolify.io",
+ "slogan": "A web GUI for youtube-dl with playlist support. It enables you to effortlessly download videos from YouTube and dozens of other sites.",
+ "compose": "c2VydmljZXM6CiAgbWV0dWJlOgogICAgaW1hZ2U6ICdnaGNyLmlvL2FsZXh0YTY5L21ldHViZTpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9NRVRVQkVfODA4MQogICAgICAtIFVJRD0xMDAwCiAgICAgIC0gR0lEPTEwMDAKICAgIHZvbHVtZXM6CiAgICAgIC0gJ21ldHViZS1kb3dubG9hZHM6L2Rvd25sb2FkcycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDgxJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "tags": [
+ "youtube",
+ "download",
+ "videos",
+ "playlist"
+ ],
+ "logo": "svgs/default.webp",
+ "minversion": "0.0.0",
+ "port": "8081"
+ },
+ "mindsdb": {
+ "documentation": "https://docs.mindsdb.com/what-is-mindsdb?utm_source=coolify.io",
+ "slogan": "MindsDB is the platform for building AI from enterprise data, enabling smarter organizations.",
+ "compose": "c2VydmljZXM6CiAgbWluZHNkYjoKICAgIGltYWdlOiAnbWluZHNkYi9taW5kc2RiOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX01JTkRTREJfNDczMzQKICAgICAgLSBTRVJWSUNFX1VSTF9BUElfNDczMzU9L2FwaQogICAgICAtIE1JTkRTREJfRE9DS0VSX0VOVj10cnVlCiAgICAgIC0gTUlORFNEQl9TVE9SQUdFX0RJUj0vbWluZHNkYi92YXIKICAgICAgLSAnRkxBU0tfREVCVUc9JHtGTEFTS19ERUJVRzotMX0nCiAgICAgIC0gJ09QRU5BSV9BUElfS0VZPSR7T1BFTkFJX0FQSV9LRVl9JwogICAgICAtICdMQU5HRlVTRV9IT1NUPSR7TEFOR0ZVU0VfSE9TVH0nCiAgICAgIC0gJ0xBTkdGVVNFX1BVQkxJQ19LRVk9JHtMQU5HRlVTRV9QVUJMSUNfS0VZfScKICAgICAgLSAnTEFOR0ZVU0VfU0VDUkVUX0tFWT0ke0xBTkdGVVNFX1NFQ1JFVF9LRVl9JwogICAgICAtICdMQU5HRlVTRV9SRUxFQVNFPSR7TEFOR0ZVU0VfUkVMRUFTRTotbG9jYWx9JwogICAgICAtICdMQU5HRlVTRV9ERUJVRz0ke0xBTkdGVVNFX0RFQlVHOi1GYWxzZX0nCiAgICAgIC0gJ0xBTkdGVVNFX1RJTUVPVVQ9JHtMQU5HRlVTRV9USU1FT1VUOi0xMH0nCiAgICAgIC0gJ0xBTkdGVVNFX1NBTVBMRV9SQVRFPSR7TEFOR0ZVU0VfU0FNUExFX1JBVEU6LTEuMH0nCiAgICAgIC0gJ01JTkRTREJfREJfQ09OPXBvc3RncmVzcWw6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlc3FsLyR7UE9TVEdSRVNfREI6LW1pbmRzZGItZGJ9JwogICAgdm9sdW1lczoKICAgICAgLSAnbWluZHNkYi1kYXRhOi9taW5kc2RiL3ZhcicKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzcWw6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo0NzMzNC9hcGkvdXRpbC9waW5nJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDE1CiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAnbWluZHNkYi1wb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1taW5kc2RiLWRifScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiAxMHMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTUK",
+ "tags": [
+ "mysql",
+ "postgresdb",
+ "machine-learning",
+ "ai"
+ ],
+ "logo": "svgs/mindsdb.svg",
+ "minversion": "0.0.0",
+ "port": "47334"
+ },
+ "minecraft": {
+ "documentation": "https://github.com/itzg/docker-minecraft-server?utm_source=coolify.io",
+ "slogan": "Minecraft Server that will automatically download selected version at startup.",
+ "compose": "c2VydmljZXM6CiAgbWM6CiAgICBpbWFnZTogaXR6Zy9taW5lY3JhZnQtc2VydmVyCiAgICBwb3J0czoKICAgICAgLSAnJHtQT1JUfToyNTU2NScKICAgIGVudmlyb25tZW50OgogICAgICAtIEVVTEE9dHJ1ZQogICAgICAtICdWRVJTSU9OPSR7TUlORUNSQUZUX1ZFUlNJT046LWxhdGVzdH0nCiAgICAgIC0gJ1RZUEU9JHtNSU5FQ1JBRlRfVFlQRTotVkFOSUxMQX0nCiAgICAgIC0gJ1NFUlZFUl9OQU1FPSR7TUlORUNSQUZUX1NFUlZFUl9OQU1FOi1NaW5lY3JhZnQgU2VydmVyfScKICAgICAgLSAnTU9URD0ke01JTkVDUkFGVF9NT1REOi1NaW5lY3JhZnQgU2VydmVyIHBvd2VyZWQgYnkgwqdhQ29vbGlmecKncn0nCiAgICAgIC0gJ0RJRkZJQ1VMVFk9JHtNSU5FQ1JBRlRfRElGRklDVUxUWTotbm9ybWFsfScKICAgICAgLSAnTUFYX1BMQVlFUlM9JHtNSU5FQ1JBRlRfTUFYX1BMQVlFUlM6LTEwfScKICAgICAgLSAnTUFYX1dPUkxEX1NJWkU9JHtNSU5FQ1JBRlRfTUFYX1dPUkxEX1NJWkU6LTEwMDAwfScKICAgICAgLSAnVklFV19ESVNUQU5DRT0ke01JTkVDUkFGVF9WSUVXX0RJU1RBTkNFOi0xMH0nCiAgICAgIC0gJ01BWF9CVUlMRF9IRUlHSFQ9JHtNSU5FQ1JBRlRfTUFYX0JVSUxEX0hFSUdIVDotMjU2fScKICAgICAgLSAnTUFYX1RJQ0tfVElNRT0ke01JTkVDUkFGVF9NQVhfVElDS19USU1FOi02MDAwMH0nCiAgICAgIC0gJ0FMTE9XX05FVEhFUj0ke01JTkVDUkFGVF9BTExPV19ORVRIRVI6LXRydWV9JwogICAgICAtICdBTk5PVU5DRV9QTEFZRVJfQUNISUVWRU1FTlRTPSR7TUlORUNSQUZUX0FOTk9VTkNFX1BMQVlFUl9BQ0hJRVZFTUVOVFM6LXRydWV9JwogICAgICAtICdHRU5FUkFURV9TVFJVQ1RVUkVTPSR7TUlORUNSQUZUX0dFTkVSQVRFX1NUUlVDVFVSRVM6LXRydWV9JwogICAgICAtICdQVlA9JHtNSU5FQ1JBRlRfUFZQOi10cnVlfScKICAgICAgLSAnTU9ERT0ke01JTkVDUkFGVF9HQU1FX01PREU6LXN1cnZpdmFsfScKICAgICAgLSAnRk9SQ0VfR0FNRU1PREU9JHtNSU5FQ1JBRlRfRk9SQ0VfR0FNRU1PREU6LWZhbHNlfScKICAgICAgLSAnSEFSRENPUkU9JHtNSU5FQ1JBRlRfSEFSRENPUkU6LWZhbHNlfScKICAgICAgLSAnRU5BQkxFX0NPTU1BTkRfQkxPQ0s9JHtNSU5FQ1JBRlRfRU5BQkxFX0NPTU1BTkRfQkxPQ0s6LWZhbHNlfScKICAgICAgLSAnU1BBV05fQU5JTUFMUz0ke01JTkVDUkFGVF9TUEFXTl9BTklNQUxTOi10cnVlfScKICAgICAgLSAnU1BBV05fTU9OU1RFUlM9JHtNSU5FQ1JBRlRfU1BBV05fTU9OU1RFUlM6LXRydWV9JwogICAgICAtICdTUEFXTl9OUENTPSR7TUlORUNSQUZUX1NQQVdOX05QQ1M6LXRydWV9JwogICAgICAtICdTTk9PUEVSX0VOQUJMRUQ9JHtNSU5FQ1JBRlRfU05PT1BFUl9FTkFCTEVEOi1mYWxzZX0nCiAgICAgIC0gJ09OTElORV9NT0RFPSR7TUlORUNSQUZUX09OTElORV9NT0RFOi10cnVlfScKICAgICAgLSAnUExBWUVSX0lETEVfVElNRU9VVD0ke01JTkVDUkFGVF9QTEFZRVJfSURMRV9USU1FT1VUOi0wfScKICAgICAgLSAnSU5JVF9NRU1PUlk9JHtNSU5FQ1JBRlRfSU5JVF9NRU1PUlk6LTI1Nk19JwogICAgICAtICdNQVhfTUVNT1JZPSR7TUlORUNSQUZUX01BWF9NRU1PUlk6LTFHfScKICAgICAgLSAnR1VJPSR7TUlORUNSQUZUX0dVSTotZmFsc2V9JwogICAgICAtICdFTkFCTEVfQVVUT1BBVVNFPSR7TUlORUNSQUZUX0VOQUJMRV9BVVRPUEFVU0U6LWZhbHNlfScKICAgICAgLSAnUkNPTl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUkNPTn0nCiAgICAgIC0gJ1BPUlQ9JHtQT1JUOi0yNTU2NX0nCiAgICB2b2x1bWVzOgogICAgICAtICcuL21pbmVjcmFmdC1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIC91c3IvbG9jYWwvYmluL21jLW1vbml0b3IKICAgICAgICAtIHN0YXR1cwogICAgICAgIC0gJy0taG9zdCcKICAgICAgICAtIGxvY2FsaG9zdAogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "tags": [
+ "minecraft"
+ ],
+ "logo": "svgs/minecraft.svg",
+ "minversion": "0.0.0",
+ "port": "25565"
+ },
+ "miniflux": {
+ "documentation": "https://miniflux.app/docs/index.html?utm_source=coolify.io",
+ "slogan": "Miniflux is a minimalist and opinionated feed reader.",
+ "compose": "c2VydmljZXM6CiAgbWluaWZsdXg6CiAgICBpbWFnZTogJ2doY3IuaW8vbWluaWZsdXgvbWluaWZsdXg6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfTUlOSUZMVVgKICAgICAgLSAnQkFTRV9VUkw9JHtTRVJWSUNFX1VSTF9NSU5JRkxVWH0nCiAgICAgIC0gJ1BPUlQ9JHtQT1JUOi04MDgwfScKICAgICAgLSAnUlVOX01JR1JBVElPTlM9JHtSVU5fTUlHUkFUSU9OUzotMX0nCiAgICAgIC0gJ0NSRUFURV9BRE1JTj0ke0NSRUFURV9BRE1JTjotMX0nCiAgICAgIC0gJ0FETUlOX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX0FETUlOfScKICAgICAgLSAnQURNSU5fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X0FETUlOfScKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1taW5pZmx1eC1kYn0/c3NsbW9kZT1kaXNhYmxlJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC1xTy0gaHR0cDovLzEyNy4wLjAuMTo4MDgwLycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAnbWluaWZsdXgtcG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LW1pbmlmbHV4LWRifScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "miniflux",
+ "rss",
+ "feed",
+ "self",
+ "hosted"
+ ],
+ "logo": "svgs/miniflux.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "minio": {
+ "documentation": "https://min.io/docs/minio/container/index.html?utm_source=coolify.io",
+ "slogan": "MinIO is a high performance object storage server compatible with Amazon S3 APIs.",
+ "compose": "c2VydmljZXM6CiAgbWluaW86CiAgICBpbWFnZTogJ3F1YXkuaW8vbWluaW8vbWluaW86bGF0ZXN0JwogICAgY29tbWFuZDogJ3NlcnZlciAvZGF0YSAtLWNvbnNvbGUtYWRkcmVzcyAiOjkwMDEiJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gTUlOSU9fU0VSVkVSX1VSTD0kTUlOSU9fU0VSVkVSX1VSTAogICAgICAtIE1JTklPX0JST1dTRVJfUkVESVJFQ1RfVVJMPSRNSU5JT19CUk9XU0VSX1JFRElSRUNUX1VSTAogICAgICAtIE1JTklPX1JPT1RfVVNFUj0kU0VSVklDRV9VU0VSX01JTklPCiAgICAgIC0gTUlOSU9fUk9PVF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgdm9sdW1lczoKICAgICAgLSAnbWluaW8tZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBtYwogICAgICAgIC0gcmVhZHkKICAgICAgICAtIGxvY2FsCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "object",
+ "storage",
+ "server",
+ "s3",
+ "api"
+ ],
+ "logo": "svgs/minio.svg",
+ "minversion": "0.0.0"
+ },
+ "mixpost": {
+ "documentation": "https://docs.mixpost.app/lite?utm_source=coolify.io",
+ "slogan": "Mixpost is a robust and versatile social media management software, designed to streamline social media operations and enhance content marketing strategies.",
+ "compose": "c2VydmljZXM6CiAgbWl4cG9zdDoKICAgIGltYWdlOiAnaW5vdmVjdG9yL21peHBvc3Q6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfTUlYUE9TVAogICAgICAtIEFQUF9OQU1FPU1peHBvc3QKICAgICAgLSAnQVBQX0tFWT0ke1NFUlZJQ0VfQkFTRTY0X01JWFBPU1R9JwogICAgICAtIEFQUF9ERUJVRz1mYWxzZQogICAgICAtICdBUFBfRE9NQUlOPSR7U0VSVklDRV9VUkxfTUlYUE9TVH0nCiAgICAgIC0gJ0FQUF9VUkw9JHtTRVJWSUNFX1VSTF9NSVhQT1NUfScKICAgICAgLSAnREJfREFUQUJBU0U9JHtNWVNRTF9EQVRBQkFTRTotbWl4cG9zdF9kYn0nCiAgICAgIC0gJ0RCX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX01ZU1FMfScKICAgICAgLSAnREJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMfScKICAgICAgLSAnU1NMX0VNQUlMPSR7U1NMX0VNQUlMOi11c2VyQGV4YW1wbGUuY29tfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ21peHBvc3Qtc3RvcmFnZTovdmFyL3d3dy9odG1sL3N0b3JhZ2UvYXBwJwogICAgICAtICdtaXhwb3N0LWxvZ3M6L3Zhci93d3cvaHRtbC9zdG9yYWdlL2xvZ3MnCiAgICBkZXBlbmRzX29uOgogICAgICAtIG15c3FsCiAgICAgIC0gcmVkaXMKICBteXNxbDoKICAgIGltYWdlOiAnbXlzcWwvbXlzcWwtc2VydmVyOjguMCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdNWVNRTF9EQVRBQkFTRT0ke01ZU1FMX0RBVEFCQVNFOi1taXhwb3N0X2RifScKICAgICAgLSAnTVlTUUxfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1JPT1RfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMUk9PVH0nCiAgICB2b2x1bWVzOgogICAgICAtICdtaXhwb3N0LW15c3FsOi92YXIvbGliL215c3FsJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG15c3FsYWRtaW4KICAgICAgICAtIHBpbmcKICAgICAgICAtICctaCcKICAgICAgICAtIDEyNy4wLjAuMQogICAgICAgIC0gJy11cm9vdCcKICAgICAgICAtICctcCR7U0VSVklDRV9QQVNTV09SRF9NWVNRTFJPT1R9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOmFscGluZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtICctLXJhdycKICAgICAgICAtIGluY3IKICAgICAgICAtIHBpbmcK",
+ "tags": [
+ "social media",
+ "marketing",
+ "content",
+ "management",
+ "automation",
+ "self-hosted"
+ ],
+ "logo": "svgs/mixpost.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "moodle": {
+ "documentation": "https://moodle.org?utm_source=coolify.io",
+ "slogan": "Moodle is the world\u2019s most customisable and trusted eLearning solution that empowers educators to improve our world.",
+ "compose": "c2VydmljZXM6CiAgbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjoxMS4xJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gQUxMT1dfRU1QVFlfUEFTU1dPUkQ9bm8KICAgICAgLSBNWVNRTF9ST09UX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1JPT1QKICAgICAgLSBNWVNRTF9EQVRBQkFTRT1iaXRuYW1pX21vb2RsZQogICAgICAtIE1ZU1FMX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gTVlTUUxfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtIE1BUklBREJfQ0hBUkFDVEVSX1NFVD11dGY4bWI0CiAgICAgIC0gTUFSSUFEQl9DT0xMQVRFPXV0ZjhtYjRfdW5pY29kZV9jaQogICAgdm9sdW1lczoKICAgICAgLSAnbWFyaWFkYi1kYXRhOi92YXIvbGliL215c3FsJwogIG1vb2RsZToKICAgIGltYWdlOiAnZG9ja2VyLmlvL2JpdG5hbWkvbW9vZGxlOjQuMycKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX01PT0RMRV84MDgwCiAgICAgIC0gTU9PRExFX0RBVEFCQVNFX0hPU1Q9bWFyaWFkYgogICAgICAtIE1PT0RMRV9EQVRBQkFTRV9QT1JUX05VTUJFUj0zMzA2CiAgICAgIC0gTU9PRExFX0RBVEFCQVNFX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gTU9PRExFX0RBVEFCQVNFX05BTUU9Yml0bmFtaV9tb29kbGUKICAgICAgLSBNT09ETEVfREFUQUJBU0VfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtIEFMTE9XX0VNUFRZX1BBU1NXT1JEPW5vCiAgICAgIC0gJ01PT0RMRV9VU0VSTkFNRT0ke01PT0RMRV9VU0VSTkFNRTotdXNlcn0nCiAgICAgIC0gTU9PRExFX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX01PT0RMRQogICAgICAtIE1PT0RMRV9FTUFJTD11c2VyQGV4YW1wbGUuY29tCiAgICAgIC0gJ01PT0RMRV9TSVRFX05BTUU9JHtNT09ETEVfU0lURV9OQU1FOi1OZXcgU2l0ZX0nCiAgICB2b2x1bWVzOgogICAgICAtICdtb29kbGUtZGF0YTovYml0bmFtaS9tb29kbGUnCiAgICAgIC0gJ21vb2RsZWRhdGEtZGF0YTovYml0bmFtaS9tb29kbGVkYXRhJwogICAgZGVwZW5kc19vbjoKICAgICAgLSBtYXJpYWRiCg==",
+ "tags": [
+ "moodle",
+ "elearning",
+ "education",
+ "lms",
+ "cms",
+ "open",
+ "source",
+ "low",
+ "code"
+ ],
+ "logo": "svgs/moodle.png",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "mosquitto": {
+ "documentation": "https://mosquitto.org/documentation/?utm_source=coolify.io",
+ "slogan": "Mosquitto is lightweight and suitable for use on all devices, from low-power single-board computers to full servers.",
+ "compose": "c2VydmljZXM6CiAgbW9zcXVpdHRvOgogICAgaW1hZ2U6IGVjbGlwc2UtbW9zcXVpdHRvCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9NT1NRVUlUVE9fMTg4MwogICAgICAtICdNUVRUX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX01PU1FVSVRUT30nCiAgICAgIC0gJ01RVFRfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01PU1FVSVRUT30nCiAgICAgIC0gJ1JFUVVJUkVfQ0VSVElGSUNBVEU9JHtSRVFVSVJFX0NFUlRJRklDQVRFOi1mYWxzZX0nCiAgICAgIC0gJ0FMTE9XX0FOT05ZTU9VUz0ke0FMTE9XX0FOT05ZTU9VUzotdHJ1ZX0nCiAgICB2b2x1bWVzOgogICAgICAtICdtb3NxdWl0dG8tY29uZmlnOi9tb3NxdWl0dG8vY29uZmlnJwogICAgICAtICdtb3NxdWl0dG8tY2VydHM6L2NlcnRzJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdleGl0IDAnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMKICAgIGVudHJ5cG9pbnQ6ICJzaCAtYyBcIiBpZiBbICckUkVRVUlSRV9DRVJUSUZJQ0FURScgPSAndHJ1ZScgXTsgdGhlbiBlY2hvICdsaXN0ZW5lciA4ODgzJyA+IC9tb3NxdWl0dG8vY29uZmlnL21vc3F1aXR0by5jb25mICYmIGVjaG8gJ2NhZmlsZSAvY2VydHMvY2EuY3J0JyA+PiAvbW9zcXVpdHRvL2NvbmZpZy9tb3NxdWl0dG8uY29uZiAmJiBlY2hvICdjZXJ0ZmlsZSAvY2VydHMvc2VydmVyLmNydCcgPj4gL21vc3F1aXR0by9jb25maWcvbW9zcXVpdHRvLmNvbmYgJiYgZWNobyAna2V5ZmlsZSAgL2NlcnRzL3NlcnZlci5rZXknID4+IC9tb3NxdWl0dG8vY29uZmlnL21vc3F1aXR0by5jb25mOyBlbHNlIGVjaG8gJ2xpc3RlbmVyIDE4ODMnID4gL21vc3F1aXR0by9jb25maWcvbW9zcXVpdHRvLmNvbmY7IGZpICYmIGVjaG8gJ3JlcXVpcmVfY2VydGlmaWNhdGUgJyRSRVFVSVJFX0NFUlRJRklDQVRFID4+IC9tb3NxdWl0dG8vY29uZmlnL21vc3F1aXR0by5jb25mICYmIGVjaG8gJ2FsbG93X2Fub255bW91cyAnJEFMTE9XX0FOT05ZTU9VUyA+PiAvbW9zcXVpdHRvL2NvbmZpZy9tb3NxdWl0dG8uY29uZjsgaWYgWyAtbiAnJFNFUlZJQ0VfVVNFUl9NT1NRVUlUVE8nXSAmJiBbIC1uICckU0VSVklDRV9QQVNTV09SRF9NT1NRVUlUVE8nIF07IHRoZW4gZWNobyAncGFzc3dvcmRfZmlsZSAvbW9zcXVpdHRvL2NvbmZpZy9wYXNzd29yZHMnID4+IC9tb3NxdWl0dG8vY29uZmlnL21vc3F1aXR0by5jb25mICYmIHRvdWNoIC9tb3NxdWl0dG8vY29uZmlnL3Bhc3N3b3JkcyAmJiBjaG1vZCAwNzAwIC9tb3NxdWl0dG8vY29uZmlnL3Bhc3N3b3JkcyAmJiBjaG93biByb290OnJvb3QgL21vc3F1aXR0by9jb25maWcvcGFzc3dvcmRzICYmIG1vc3F1aXR0b19wYXNzd2QgLWIgLWMgL21vc3F1aXR0by9jb25maWcvcGFzc3dvcmRzICRTRVJWSUNFX1VTRVJfTU9TUVVJVFRPICRTRVJWSUNFX1BBU1NXT1JEX01PU1FVSVRUTyAmJiBjaG93biBtb3NxdWl0dG86bW9zcXVpdHRvIC9tb3NxdWl0dG8vY29uZmlnL3Bhc3N3b3JkczsgZmkgJiYgZXhlYyBtb3NxdWl0dG8gLWMgL21vc3F1aXR0by9jb25maWcvbW9zcXVpdHRvLmNvbmYgXCIiCiAgICBsYWJlbHM6CiAgICAgIC0gdHJhZWZpay50Y3Aucm91dGVycy5tcXR0LmVudHJ5cG9pbnRzPW1xdHQKICAgICAgLSB0cmFlZmlrLnRjcC5yb3V0ZXJzLm1xdHRzLmVudHJ5cG9pbnRzPW1xdHRzCg==",
+ "tags": [
+ "mosquitto",
+ "mqtt",
+ "open-source"
+ ],
+ "logo": "svgs/mosquitto.svg",
+ "minversion": "0.0.0",
+ "port": "1883"
+ },
+ "n8n-with-postgresql": {
+ "documentation": "https://n8n.io?utm_source=coolify.io",
+ "slogan": "n8n is an extendable workflow automation tool.",
+ "compose": "c2VydmljZXM6CiAgbjhuOgogICAgaW1hZ2U6IGRvY2tlci5uOG4uaW8vbjhuaW8vbjhuCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9OOE5fNTY3OAogICAgICAtICdOOE5fRURJVE9SX0JBU0VfVVJMPSR7U0VSVklDRV9VUkxfTjhOfScKICAgICAgLSAnV0VCSE9PS19VUkw9JHtTRVJWSUNFX1VSTF9OOE59JwogICAgICAtICdOOE5fSE9TVD0ke1NFUlZJQ0VfVVJMX044Tn0nCiAgICAgIC0gJ0dFTkVSSUNfVElNRVpPTkU9JHtHRU5FUklDX1RJTUVaT05FOi1FdXJvcGUvQmVybGlufScKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Jlcmxpbn0nCiAgICAgIC0gREJfVFlQRT1wb3N0Z3Jlc2RiCiAgICAgIC0gJ0RCX1BPU1RHUkVTREJfREFUQUJBU0U9JHtQT1NUR1JFU19EQjotbjhufScKICAgICAgLSBEQl9QT1NUR1JFU0RCX0hPU1Q9cG9zdGdyZXNxbAogICAgICAtIERCX1BPU1RHUkVTREJfUE9SVD01NDMyCiAgICAgIC0gREJfUE9TVEdSRVNEQl9VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBEQl9QT1NUR1JFU0RCX1NDSEVNQT1wdWJsaWMKICAgICAgLSBEQl9QT1NUR1JFU0RCX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICB2b2x1bWVzOgogICAgICAtICduOG4tZGF0YTovaG9tZS9ub2RlLy5uOG4nCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3dnZXQgLXFPLSBodHRwOi8vMTI3LjAuMC4xOjU2NzgvJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LW44bn0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "n8n",
+ "workflow",
+ "automation",
+ "open",
+ "source",
+ "low",
+ "code"
+ ],
+ "logo": "svgs/n8n.png",
+ "minversion": "0.0.0",
+ "port": "5678"
+ },
+ "n8n": {
+ "documentation": "https://n8n.io?utm_source=coolify.io",
+ "slogan": "n8n is an extendable workflow automation tool.",
+ "compose": "c2VydmljZXM6CiAgbjhuOgogICAgaW1hZ2U6IGRvY2tlci5uOG4uaW8vbjhuaW8vbjhuCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9OOE5fNTY3OAogICAgICAtICdOOE5fRURJVE9SX0JBU0VfVVJMPSR7U0VSVklDRV9VUkxfTjhOfScKICAgICAgLSAnV0VCSE9PS19VUkw9JHtTRVJWSUNFX1VSTF9OOE59JwogICAgICAtICdOOE5fSE9TVD0ke1NFUlZJQ0VfVVJMX044Tn0nCiAgICAgIC0gJ0dFTkVSSUNfVElNRVpPTkU9JHtHRU5FUklDX1RJTUVaT05FOi1FdXJvcGUvQmVybGlufScKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Jlcmxpbn0nCiAgICB2b2x1bWVzOgogICAgICAtICduOG4tZGF0YTovaG9tZS9ub2RlLy5uOG4nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3dnZXQgLXFPLSBodHRwOi8vMTI3LjAuMC4xOjU2NzgvJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "n8n",
+ "workflow",
+ "automation",
+ "open",
+ "source",
+ "low",
+ "code"
+ ],
+ "logo": "svgs/n8n.png",
+ "minversion": "0.0.0",
+ "port": "5678"
+ },
+ "navidrome": {
+ "documentation": "https://www.navidrome.org/docs/?utm_source=coolify.io",
+ "slogan": "Standalone server, that allows you to browse and listen to your music collection using a web browser or any Subsonic-compatible client.",
+ "compose": "c2VydmljZXM6CiAgbmF2aWRyb21lOgogICAgaW1hZ2U6ICdkZWx1YW4vbmF2aWRyb21lOmxhdGVzdCcKICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9OQVZJRFJPTUVfNDUzMwogICAgICAtICdORF9CQVNFVVJMPSR7U0VSVklDRV9VUkxfTkFWSURST01FfScKICAgICAgLSAnTkRfU0NBTlNDSEVEVUxFPSR7TkRfU0NBTlNDSEVEVUxFOi0xaH0nCiAgICAgIC0gJ05EX0xPR0xFVkVMPSR7TkRfTE9HTEVWRUw6LWluZm99JwogICAgICAtICdORF9TRVNTSU9OVElNRU9VVD0ke05EX1NFU1NJT05USU1FT1VUOi0yNGh9JwogICAgICAtICdORF9FTkFCTEVJTlNJR0hUU0NPTExFQ1RPUj0ke05EX0VOQUJMRUlOU0lHSFRTQ09MTEVDVE9SOi1mYWxzZX0nCiAgICB2b2x1bWVzOgogICAgICAtICcuL2RhdGE6L2RhdGEnCiAgICAgIC0gJy4vbXVzaWM6L211c2ljOnJvJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHdnZXQKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICctLXF1aWV0JwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6NDUzMy9waW5nJwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDUK",
+ "tags": [
+ "media",
+ "server",
+ "music",
+ "subsonic"
+ ],
+ "logo": "svgs/navidrome.svg",
+ "minversion": "0.0.0",
+ "port": "4533"
+ },
+ "neon-ws-proxy": {
+ "documentation": "https://neon.tech?utm_source=coolify.io",
+ "slogan": "The database you love, on a serverless platform designed to help you build reliable and scalable applications faster.",
+ "compose": "c2VydmljZXM6CiAgbmVvbi1wcm94eToKICAgIGltYWdlOiAnZ2hjci5pby9uZW9uZGF0YWJhc2Uvd3Nwcm94eTpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9ORU9OUFJPWFkKICAgICAgLSBTRVJWSUNFX1VSTF9ORU9OUFJPTUVUSEVVU18yMTEyCiAgICAgIC0gJ0FQUEVORF9QT1JUPXBvc3RncmVzOjU0MzInCiAgICAgIC0gJ0FMTE9XX0FERFJfUkVHRVg9LionCiAgICAgIC0gTE9HX1RSQUZGSUM9ZmFsc2UKICAgICAgLSBMT0dfQ09OTl9JTkZPPXRydWUKICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkCiAgICBkZXBlbmRzX29uOgogICAgICAtIHBvc3RncmVzCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ25jIC16IDEyNy4wLjAuMSA4MCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDJzCiAgICAgIHJldHJpZXM6IDIwCiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE3LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTUUxfREFUQUJBU0U6LXBvc3RncmVzfScKICAgICAgLSBQT1NUR1JFU19IT1NUX0FVVEhfTUVUSE9EPXBhc3N3b3JkCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "proxy",
+ "neon",
+ "postgresql"
+ ],
+ "logo": "svgs/neon.svg",
+ "minversion": "0.0.0",
+ "port": "80, 2112"
+ },
+ "netbird-client": {
+ "documentation": "https://docs.netbird.io/how-to/examples#net-bird-client-in-docker?utm_source=coolify.io",
+ "slogan": "Connect your devices into a secure WireGuard\u00ae-based overlay network with SSO, MFA and granular access controls.",
+ "compose": "c2VydmljZXM6CiAgbmV0YmlyZC1jbGllbnQ6CiAgICBpbWFnZTogJ25ldGJpcmRpby9uZXRiaXJkOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdOQl9TRVRVUF9LRVk9JHtOQl9TRVRVUF9LRVl9JwogICAgICAtICdOQl9FTkFCTEVfUk9TRU5QQVNTPSR7TkJfRU5BQkxFX1JPU0VOUEFTUzotZmFsc2V9JwogICAgICAtICdOQl9FTkFCTEVfRVhQRVJJTUVOVEFMX0xBWllfQ09OTj0ke05CX0VOQUJMRV9FWFBFUklNRU5UQUxfTEFaWV9DT05OOi1mYWxzZX0nCiAgICB2b2x1bWVzOgogICAgICAtICduZXRiaXJkLWNsaWVudDovZXRjL25ldGJpcmQnCiAgICBjYXBfYWRkOgogICAgICAtIE5FVF9BRE1JTgogICAgICAtIFNZU19BRE1JTgogICAgICAtIFNZU19SRVNPVVJDRQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG5ldGJpcmQKICAgICAgICAtIHZlcnNpb24KICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "wireguard",
+ "mesh-networks",
+ "vpn",
+ "zero-trust-network-access",
+ "open source"
+ ],
+ "logo": "svgs/netbird.png",
+ "minversion": "0.0.0"
+ },
+ "next-image-transformation": {
+ "documentation": "https://github.com/coollabsio/next-image-transformation?utm_source=coolify.io",
+ "slogan": "Drop-in replacement for Vercel's Nextjs image optimization service.",
+ "compose": "c2VydmljZXM6CiAgbmV4dC1pbWFnZS10cmFuc2Zvcm1hdGlvbjoKICAgIGltYWdlOiAnZ2hjci5pby9jb29sbGFic2lvL25leHQtaW1hZ2UtdHJhbnNmb3JtYXRpb246bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfVFJBTlNGT1JNQVRJT05fMzAwMAogICAgICAtIE5PREVfRU5WPXByb2R1Y3Rpb24KICAgICAgLSAnQUxMT1dFRF9SRU1PVEVfRE9NQUlOUz0ke0FMTE9XRURfUkVNT1RFX0RPTUFJTlM6LSp9JwogICAgICAtICdJTUdQUk9YWV9VUkw9JHtJTUdQUk9YWV9VUkw6LWh0dHA6Ly9pbWdwcm94eTo4MDgwfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiAnd2dldCAtcU8tIGh0dHA6Ly8xMjcuMC4wLjE6MzAwMC9oZWFsdGggfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDUKICBpbWdwcm94eToKICAgIGltYWdlOiBkYXJ0aHNpbS9pbWdwcm94eQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gSU1HUFJPWFlfRU5BQkxFX1dFQlBfREVURUNUSU9OPXRydWUKICAgICAgLSBJTUdQUk9YWV9KUEVHX1BST0dSRVNTSVZFPXRydWUKICAgICAgLSBJTUdQUk9YWV9VU0VfRVRBRz10cnVlCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gaW1ncHJveHkKICAgICAgICAtIGhlYWx0aAogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDUK",
+ "tags": [
+ "nextjs",
+ "image",
+ "transformation",
+ "service"
+ ],
+ "logo": "coolify-logo.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "nextcloud-with-mariadb": {
+ "documentation": "https://docs.nextcloud.com?utm_source=coolify.io",
+ "slogan": "NextCloud is a self-hosted, open-source platform that provides file storage, collaboration, and communication tools for seamless data management.",
+ "compose": "c2VydmljZXM6CiAgbmV4dGNsb3VkOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL25leHRjbG91ZDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9ORVhUQ0xPVURfODAKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL1BhcmlzfScKICAgICAgLSAnTVlTUUxfREFUQUJBU0U9JHtNQVJJQURCX0RBVEFCQVNFOi1uZXh0Y2xvdWR9JwogICAgICAtICdNWVNRTF9VU0VSPSR7U0VSVklDRV9VU0VSX01BUklBREJ9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQn0nCiAgICAgIC0gTVlTUUxfSE9TVD1uZXh0Y2xvdWQtZGIKICAgICAgLSBSRURJU19IT1NUPXJlZGlzCiAgICAgIC0gUkVESVNfUE9SVD02Mzc5CiAgICB2b2x1bWVzOgogICAgICAtICduZXh0Y2xvdWQtY29uZmlnOi9jb25maWcnCiAgICAgIC0gJ25leHRjbG91ZC1kYXRhOi9kYXRhJwogICAgZGVwZW5kc19vbjoKICAgICAgbmV4dGNsb3VkLWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBuZXh0Y2xvdWQtZGI6CiAgICBpbWFnZTogJ21hcmlhZGI6MTEnCiAgICB2b2x1bWVzOgogICAgICAtICduZXh0Y2xvdWQtbWFyaWFkYi1kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01ZU1FMX1JPT1RfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1JPT1R9JwogICAgICAtICdNWVNRTF9EQVRBQkFTRT0ke01BUklBREJfREFUQUJBU0U6LW5leHRjbG91ZH0nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTUFSSUFEQn0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NQVJJQURCfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBoZWFsdGhjaGVjay5zaAogICAgICAgIC0gJy0tY29ubmVjdCcKICAgICAgICAtICctLWlubm9kYl9pbml0aWFsaXplZCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo3LjQtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAnbmV4dGNsb3VkLXJlZGlzLWRhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSBQSU5HCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMjAK",
+ "tags": [
+ "cloud",
+ "collaboration",
+ "communication",
+ "filestorage",
+ "data"
+ ],
+ "logo": "svgs/nextcloud.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "nextcloud-with-mysql": {
+ "documentation": "https://docs.nextcloud.com?utm_source=coolify.io",
+ "slogan": "NextCloud is a self-hosted, open-source platform that provides file storage, collaboration, and communication tools for seamless data management.",
+ "compose": "c2VydmljZXM6CiAgbmV4dGNsb3VkOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL25leHRjbG91ZDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9ORVhUQ0xPVURfODAKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL1BhcmlzfScKICAgICAgLSAnTVlTUUxfREFUQUJBU0U9JHtNWVNRTF9EQVRBQkFTRTotbmV4dGNsb3VkfScKICAgICAgLSAnTVlTUUxfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gTVlTUUxfSE9TVD1uZXh0Y2xvdWQtZGIKICAgICAgLSBSRURJU19IT1NUPXJlZGlzCiAgICAgIC0gUkVESVNfUE9SVD02Mzc5CiAgICB2b2x1bWVzOgogICAgICAtICduZXh0Y2xvdWQtY29uZmlnOi9jb25maWcnCiAgICAgIC0gJ25leHRjbG91ZC1kYXRhOi9kYXRhJwogICAgZGVwZW5kc19vbjoKICAgICAgbmV4dGNsb3VkLWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBuZXh0Y2xvdWQtZGI6CiAgICBpbWFnZTogJ215c3FsOjguNC4yJwogICAgdm9sdW1lczoKICAgICAgLSAnbmV4dGNsb3VkLW15c3FsLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUk9PVH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LW5leHRjbG91ZH0nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG15c3FsYWRtaW4KICAgICAgICAtIHBpbmcKICAgICAgICAtICctaCcKICAgICAgICAtIDEyNy4wLjAuMQogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjcuNC1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICduZXh0Y2xvdWQtcmVkaXMtZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIFBJTkcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAyMAo=",
+ "tags": [
+ "cloud",
+ "collaboration",
+ "communication",
+ "filestorage",
+ "data"
+ ],
+ "logo": "svgs/nextcloud.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "nextcloud-with-postgres": {
+ "documentation": "https://docs.nextcloud.com?utm_source=coolify.io",
+ "slogan": "NextCloud is a self-hosted, open-source platform that provides file storage, collaboration, and communication tools for seamless data management.",
+ "compose": "c2VydmljZXM6CiAgbmV4dGNsb3VkOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL25leHRjbG91ZDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9ORVhUQ0xPVURfODAKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL1BhcmlzfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotbmV4dGNsb3VkfScKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gUE9TVEdSRVNfSE9TVD1uZXh0Y2xvdWQtZGIKICAgICAgLSBSRURJU19IT1NUPXJlZGlzCiAgICAgIC0gUkVESVNfUE9SVD02Mzc5CiAgICB2b2x1bWVzOgogICAgICAtICduZXh0Y2xvdWQtY29uZmlnOi9jb25maWcnCiAgICAgIC0gJ25leHRjbG91ZC1kYXRhOi9kYXRhJwogICAgZGVwZW5kc19vbjoKICAgICAgbmV4dGNsb3VkLWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBuZXh0Y2xvdWQtZGI6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ25leHRjbG91ZC1wb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1uZXh0Y2xvdWR9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo3LjQtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAnbmV4dGNsb3VkLXJlZGlzLWRhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSBQSU5HCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMjAK",
+ "tags": [
+ "cloud",
+ "collaboration",
+ "communication",
+ "filestorage",
+ "data"
+ ],
+ "logo": "svgs/nextcloud.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "nextcloud": {
+ "documentation": "https://docs.nextcloud.com?utm_source=coolify.io",
+ "slogan": "NextCloud is a self-hosted, open-source platform that provides file storage, collaboration, and communication tools for seamless data management.",
+ "compose": "c2VydmljZXM6CiAgbmV4dGNsb3VkOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL25leHRjbG91ZDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9ORVhUQ0xPVURfODAKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL01hZHJpZH0nCiAgICB2b2x1bWVzOgogICAgICAtICduZXh0Y2xvdWQtY29uZmlnOi9jb25maWcnCiAgICAgIC0gJ25leHRjbG91ZC1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "tags": [
+ "cloud",
+ "collaboration",
+ "communication",
+ "filestorage",
+ "data"
+ ],
+ "logo": "svgs/nextcloud.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "nexus-arm": {
+ "documentation": "https://help.sonatype.com/en/sonatype-nexus-repository.html?utm_source=coolify.io",
+ "slogan": "Open source Universal Repository Manager (ARM version, community edition), default credentials: admin/admin123",
+ "compose": "c2VydmljZXM6CiAgbmV4dXM6CiAgICBpbWFnZTogc29uYXR5cGVjb21tdW5pdHkvbmV4dXMzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9ORVhVU184MDgxCiAgICAgIC0gTkVYVVNfU0VDVVJJVFlfUkFORE9NUEFTU1dPUkQ9ZmFsc2UKICAgICAgLSAnSU5TVEFMTDRKX0FERF9WTV9QQVJBTVM9LVhtczI3MDNtIC1YbXgyNzAzbSAtWFg6TWF4RGlyZWN0TWVtb3J5U2l6ZT0yNzAzbSAtRGphdmEudXRpbC5wcmVmcy51c2VyUm9vdD0vbmV4dXMtZGF0YS9qYXZhcHJlZnMnCiAgICB2b2x1bWVzOgogICAgICAtICduZXh1c19kYXRhOi9uZXh1cy1kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjgwODEvc2VydmljZS9yZXN0L3YxL3N0YXR1cycKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogICAgICBzdGFydF9wZXJpb2Q6IDYwcwo=",
+ "tags": [
+ "repository",
+ "manager",
+ "open source",
+ "docker",
+ "docker",
+ "registry",
+ "container"
+ ],
+ "logo": "svgs/nexus.png",
+ "minversion": "0.0.0",
+ "port": "8081"
+ },
+ "nexus": {
+ "documentation": "https://help.sonatype.com/en/sonatype-nexus-repository.html?utm_source=coolify.io",
+ "slogan": "Open source Universal Repository Manager (x86_64 version, official), default credentials: admin/admin123",
+ "compose": "c2VydmljZXM6CiAgbmV4dXM6CiAgICBpbWFnZTogc29uYXR5cGUvbmV4dXMzCiAgICBwbGF0Zm9ybTogbGludXgvYW1kNjQKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX05FWFVTXzgwODEKICAgICAgLSAnTkVYVVNfU0VDVVJJVFlfUkFORE9NUEFTU1dPUkQ9JHtORVhVU19TRUNVUklUWV9SQU5ET01QQVNTV09SRDotZmFsc2V9JwogICAgICAtICdJTlNUQUxMNEpfQUREX1ZNX1BBUkFNUz0tWG1zMjcwM20gLVhteDI3MDNtIC1YWDpNYXhEaXJlY3RNZW1vcnlTaXplPTI3MDNtIC1EamF2YS51dGlsLnByZWZzLnVzZXJSb290PS9uZXh1cy1kYXRhL2phdmFwcmVmcycKICAgIHZvbHVtZXM6CiAgICAgIC0gJ25leHVzX2RhdGE6L25leHVzLWRhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MS9zZXJ2aWNlL3Jlc3QvdjEvc3RhdHVzJwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgICAgIHN0YXJ0X3BlcmlvZDogNjBzCg==",
+ "tags": [
+ "repository",
+ "manager",
+ "open source",
+ "docker",
+ "docker",
+ "registry",
+ "container"
+ ],
+ "logo": "svgs/nexus.png",
+ "minversion": "0.0.0",
+ "port": "8081"
+ },
+ "nitropage-with-postgresql": {
+ "documentation": "https://nitropage.org?utm_source=coolify.io",
+ "slogan": "Nitropage is an extensible, visual website builder, offering a growing library of versatile building blocks, focal-point image cropping and sovereign font management.",
+ "compose": "c2VydmljZXM6CiAgbml0cm9wYWdlOgogICAgaW1hZ2U6IG5pdHJvcGFnZS9uaXRyb3BhZ2UKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX05JVFJPUEFHRV8zMDAwCiAgICAgIC0gJ05QX0FVVEhfU0FMVD0ke1NFUlZJQ0VfQkFTRTY0X1NBTFR9JwogICAgICAtICdOUF9BVVRIX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF82NF9TRVNTSU9OfScKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzcWw6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNRTH1AcG9zdGdyZXNxbDo1NDMyLyR7UE9TVEdSRVNRTF9EQVRBQkFTRTotbml0cm9wYWdlfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ25pdHJvcGFnZS1kYXRhOi9hcHAvLmRhdGEnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMC9hZG1pbicKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIHBvc3RncmVzcWw6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ25pdHJvcGFnZS1wb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVNRTH0nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU1FMX0RBVEFCQVNFOi1uaXRyb3BhZ2V9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "nitropage",
+ "builder",
+ "editor",
+ "wysiwyg",
+ "cms",
+ "content",
+ "management"
+ ],
+ "logo": "svgs/nitropage.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "nitropage": {
+ "documentation": "https://nitropage.org?utm_source=coolify.io",
+ "slogan": "Nitropage is an extensible, visual website builder, offering a growing library of versatile building blocks, focal-point image cropping and sovereign font management.",
+ "compose": "c2VydmljZXM6CiAgbml0cm9wYWdlOgogICAgaW1hZ2U6ICduaXRyb3BhZ2Uvbml0cm9wYWdlOnNxbGl0ZScKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX05JVFJPUEFHRV8zMDAwCiAgICAgIC0gJ05QX0FVVEhfU0FMVD0ke1NFUlZJQ0VfQkFTRTY0X1NBTFR9JwogICAgICAtICdOUF9BVVRIX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF82NF9TRVNTSU9OfScKICAgICAgLSAnREFUQUJBU0VfVVJMPWZpbGU6Li4vLmRhdGEvZGV2LmRiJwogICAgdm9sdW1lczoKICAgICAgLSAnbml0cm9wYWdlLWRhdGE6L2FwcC8uZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTozMDAwL2FkbWluJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "tags": [
+ "nitropage",
+ "builder",
+ "editor",
+ "wysiwyg",
+ "cms",
+ "content",
+ "management"
+ ],
+ "logo": "svgs/nitropage.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "nocodb": {
+ "documentation": "https://nocodb.com/?utm_source=coolify.io",
+ "slogan": "NocoDB is an open source Airtable alternative. Turns any MySQL, PostgreSQL, SQL Server, SQLite & MariaDB into a smart-spreadsheet.",
+ "compose": "c2VydmljZXM6CiAgbm9jb2RiOgogICAgaW1hZ2U6IG5vY29kYi9ub2NvZGIKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX05PQ09EQl84MDgwCiAgICB2b2x1bWVzOgogICAgICAtICdub2NvZGItZGF0YTovdXNyL2FwcC9kYXRhLycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLXEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDgwL2FwaS92MS9oZWFsdGgnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "nocodb",
+ "airtable",
+ "mysql",
+ "postgresql",
+ "sqlserver",
+ "sqlite",
+ "mariadb"
+ ],
+ "logo": "svgs/nocodb.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "nodebb": {
+ "documentation": "https://docs.nodebb.org/?utm_source=coolify.io",
+ "slogan": "A next-generation discussion platform.",
+ "compose": "c2VydmljZXM6CiAgbm9kZWJiOgogICAgaW1hZ2U6ICdnaGNyLmlvL25vZGViYi9ub2RlYmI6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfTk9ERUJCXzQ1NjcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ25vZGViYl9idWlsZDovdXNyL3NyYy9hcHAvYnVpbGQnCiAgICAgIC0gJ25vZGViYl91cGxvYWRzOi91c3Ivc3JjL2FwcC9wdWJsaWMvdXBsb2FkcycKICAgICAgLSAnbm9kZWJiX2NvbmZpZzovb3B0L2NvbmZpZycKICAgIGNvbW1hbmQ6ICIvYmluL2Jhc2ggLWMgXCIgY2F0ID4gL3Vzci9zcmMvYXBwL3NldHVwLmpzb24gPDxFT0wge1xuICAgIFxcXCJkZWZhdWx0c1xcXCI6IHtcbiAgICAgICAgXFxcInBvc3RncmVzXFxcIjoge1xuICAgICAgICAgICAgXFxcImhvc3RcXFwiOiBcXFwicG9zdGdyZXNcXFwiLFxuICAgICAgICAgICAgXFxcInBvcnRcXFwiOiA1NDMyLFxuICAgICAgICAgICAgXFxcImRhdGFiYXNlXFxcIjogXFxcIm5vZGViYlxcXCIsXG4gICAgICAgICAgICBcXFwidXNlcm5hbWVcXFwiOiBcXFwiJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9XFxcIixcbiAgICAgICAgICAgIFxcXCJwYXNzd29yZFxcXCI6IFxcXCIke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9XFxcIlxuICAgICAgICB9XG4gICAgfVxufSBFT0wgJiYgdGluaSAtLSBlbnRyeXBvaW50LnNoIFwiXG4iCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvNDU2NycgfHwgZXhpdCAxIgogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDMKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTcuMi1hbHBpbmUnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gUE9TVEdSRVNfREI9bm9kZWJiCiAgICB2b2x1bWVzOgogICAgICAtICdub2RlYmJfcG9zdGdyZXNfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "communication",
+ "forums",
+ "discussion"
+ ],
+ "logo": "svgs/nodebb.svg",
+ "minversion": "0.0.0",
+ "port": "4567"
+ },
+ "ntfy": {
+ "documentation": "https://docs.ntfy.sh/?utm_source=coolify.io",
+ "slogan": "ntfy is a simple HTTP-based pub-sub notification service. It allows you to send notifications to your phone or desktop via scripts from any computer, and/or using a REST API.",
+ "compose": "c2VydmljZXM6CiAgbnRmeToKICAgIGltYWdlOiBiaW53aWVkZXJoaWVyL250ZnkKICAgIGNvbW1hbmQ6CiAgICAgIC0gc2VydmUKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX05URllfODAKICAgICAgLSAnTlRGWV9CQVNFX1VSTD0ke1NFUlZJQ0VfVVJMX05URll9JwogICAgICAtICdUWj0ke1RaOi1VVEN9JwogICAgICAtIE5URllfQ0FDSEVfRklMRT0vdmFyL2NhY2hlL250ZnkvY2FjaGUuZGIKICAgICAgLSBOVEZZX0FVVEhfRklMRT0vdmFyL2xpYi9udGZ5L2F1dGguZGIKICAgICAgLSBOVEZZX1dFQl9QVVNIX0ZJTEU9L3Zhci9jYWNoZS9udGZ5L3dlYnB1c2guZGIKICAgICAgLSAnTlRGWV9CRUhJTkRfUFJPWFk9JHtOVEZZX0JFSElORF9QUk9YWTotdHJ1ZX0nCiAgICAgIC0gJ05URllfVVBTVFJFQU1fQkFTRV9VUkw9JHtVUFNUUkVBTV9CQVNFX1VSTDotaHR0cHM6Ly9udGZ5LnNofScKICAgICAgLSAnTlRGWV9FTkFCTEVfU0lHTlVQPSR7TlRGWV9FTkFCTEVfU0lHTlVQOi10cnVlfScKICAgICAgLSAnTlRGWV9FTkFCTEVfTE9HSU49JHtOVEZZX0VOQUJMRV9MT0dJTjotdHJ1ZX0nCiAgICAgIC0gJ05URllfQ0FDSEVfRFVSQVRJT049JHtOVEZZX0NBQ0hFX0RVUkFUSU9OOi0yNGh9JwogICAgICAtICdOVEZZX0FUVEFDSE1FTlRfVE9UQUxfU0laRV9MSU1JVD0ke05URllfQVRUQUNITUVOVF9UT1RBTF9TSVpFX0xJTUlUOi0xR30nCiAgICAgIC0gJ05URllfQVRUQUNITUVOVF9GSUxFX1NJWkVfTElNSVQ9JHtOVEZZX0FUVEFDSE1FTlRfRklMRV9TSVpFX0xJTUlUOi0xME19JwogICAgICAtICdOVEZZX0FUVEFDSE1FTlRfRVhQSVJZX0RVUkFUSU9OPSR7TlRGWV9BVFRBQ0hNRU5UX0VYUElSWV9EVVJBVElPTjotMjRofScKICAgICAgLSAnTlRGWV9TTVRQX1NFTkRFUl9BRERSPSR7TlRGWV9TTVRQX1NFTkRFUl9BRERSOi1zbXRwLnlvdXItZG9tYWluLmRlfScKICAgICAgLSAnTlRGWV9TTVRQX1NFTkRFUl9VU0VSPSR7TlRGWV9TTVRQX1NFTkRFUl9VU0VSOi1uby1yZXBseUBkZX0nCiAgICAgIC0gJ05URllfU01UUF9TRU5ERVJfUEFTUz0ke05URllfU01UUF9TRU5ERVJfUEFTUzotcGFzc3dvcmR9JwogICAgICAtICdOVEZZX1NNVFBfU0VOREVSX0ZST009JHtOVEZZX1NNVFBfU0VOREVSX0ZST006LW5vLXJlcGx5QGRlfScKICAgICAgLSAnTlRGWV9LRUVQQUxJVkVfSU5URVJWQUw9JHtOVEZZX0tFRVBBTElWRV9JTlRFUlZBTDotNW19JwogICAgICAtICdOVEZZX01BTkFHRVJfSU5URVJWQUw9JHtOVEZZX01BTkFHRVJfSU5URVJWQUw6LTVtfScKICAgICAgLSAnTlRGWV9WSVNJVE9SX01FU1NBR0VfREFJTFlfTElNSVQ9JHtOVEZZX1ZJU0lUT1JfTUVTU0FHRV9EQUlMWV9MSU1JVDotMTAwfScKICAgICAgLSAnTlRGWV9WSVNJVE9SX0FUVEFDSE1FTlRfREFJTFlfQkFORFdJRFRIX0xJTUlUPSR7TlRGWV9WSVNJVE9SX0FUVEFDSE1FTlRfREFJTFlfQkFORFdJRFRIX0xJTUlUOi0xR30nCiAgICAgIC0gJ05URllfVVBTVFJFQU1fQUNDRVNTX1RPS0VOPSR7VVBTVFJFQU1fQUNDRVNTX1RPS0VOfScKICAgICAgLSAnTlRGWV9BVVRIX0RFRkFVTFRfQUNDRVNTPSR7TlRGWV9BVVRIX0RFRkFVTFRfQUNDRVNTOi1yZWFkLXdyaXRlfScKICAgICAgLSAnTlRGWV9XRUJfUFVTSF9QVUJMSUNfS0VZPSR7TlRGWV9XRUJfUFVTSF9QVUJMSUNfS0VZfScKICAgICAgLSAnTlRGWV9XRUJfUFVTSF9QUklWQVRFX0tFWT0ke05URllfV0VCX1BVU0hfUFJJVkFURV9LRVl9JwogICAgICAtICdOVEZZX1dFQl9QVVNIX0VNQUlMX0FERFJFU1M9JHtOVEZZX1dFQl9QVVNIX0VNQUlMX0FERFJFU1N9JwogICAgdm9sdW1lczoKICAgICAgLSAnbnRmeS1jYWNoZTovdmFyL2NhY2hlL250ZnknCiAgICAgIC0gJ250ZnktZGI6L3Zhci9saWIvbnRmeS8nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3dnZXQgLXEgLS10cmllcz0xIGh0dHA6Ly9sb2NhbGhvc3Q6ODAvdjEvaGVhbHRoIC1PIC0gfCBncmVwIC1FbyAnJyJoZWFsdGh5IlxzKjpccyp0cnVlJycgfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogNjBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgICAgIHN0YXJ0X3BlcmlvZDogNDBzCg==",
+ "tags": [
+ "ntfy",
+ "notification",
+ "push notification",
+ "pub-sub",
+ "notify"
+ ],
+ "logo": "svgs/ntfy.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "observium": {
+ "documentation": "https://docs.observium.org/?utm_source=coolify.io",
+ "slogan": "Observium is a comprehensive network monitoring platform designed to deliver powerful monitoring capabilities, combined with an elegant and intuitive user interface.",
+ "compose": "c2VydmljZXM6CiAgb2JzZXJ2aXVtOgogICAgaW1hZ2U6ICdtYml4dGVjaC9vYnNlcnZpdW06bGF0ZXN0JwogICAgcGxhdGZvcm06IGxpbnV4L2FtZDY0CiAgICB2b2x1bWVzOgogICAgICAtICdvYnNlcnZpdW1fbG9nczovb3B0L29ic2Vydml1bS9sb2dzJwogICAgICAtICdvYnNlcnZpdW1fcnJkOi9vcHQvb2JzZXJ2aXVtL3JyZCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdTRVJWSUNFX1VSTF9PQlNFUlZJVU09JHtTRVJWSUNFX1VSTF9PQlNFUlZJVU19JwogICAgICAtICdPQlNFUlZJVU1fQURNSU5fUEFTUz0ke1NFUlZJQ0VfUEFTU1dPUkRfT0JTRVJWSVVNQURNSU59JwogICAgICAtICdPQlNFUlZJVU1fQURNSU5fVVNFUj0ke1NFUlZJQ0VfVVNFUl9PQlNFUlZJVU1BRE1JTn0nCiAgICAgIC0gT0JTRVJWSVVNX0RCX0hPU1Q9bWFyaWFkYgogICAgICAtICdPQlNFUlZJVU1fREJfTkFNRT0ke09CU0VSVklVTV9EQl9OQU1FOi1vYnNlcnZpdW0tZGJ9JwogICAgICAtICdPQlNFUlZJVU1fREJfUEFTUz0ke1NFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQn0nCiAgICAgIC0gJ09CU0VSVklVTV9EQl9VU0VSPSR7U0VSVklDRV9VU0VSX01BUklBREJ9JwogICAgZGVwZW5kc19vbjoKICAgICAgbWFyaWFkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0LycKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogICAgICBzdGFydF9wZXJpb2Q6IDVzCiAgbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjpsdHMnCiAgICB2b2x1bWVzOgogICAgICAtICdvYnNlcnZpdW1fbWFyaWFkYl9kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01BUklBREJfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQlJPT1R9JwogICAgICAtICdNQVJJQURCX1VTRVI9JHtTRVJWSUNFX1VTRVJfTUFSSUFEQn0nCiAgICAgIC0gJ01BUklBREJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01BUklBREJ9JwogICAgICAtICdNQVJJQURCX0RBVEFCQVNFPSR7TUFSSUFEQl9EQVRBQkFTRTotb2JzZXJ2aXVtLWRifScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBoZWFsdGhjaGVjay5zaAogICAgICAgIC0gJy0tY29ubmVjdCcKICAgICAgICAtICctLWlubm9kYl9pbml0aWFsaXplZCcKICAgICAgc3RhcnRfcGVyaW9kOiAxMHMKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAzCg==",
+ "tags": [
+ "networking",
+ "monitoring"
+ ],
+ "logo": "svgs/observium.webp",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "odoo": {
+ "documentation": "https://www.odoo.com/?utm_source=coolify.io",
+ "slogan": "Odoo is a suite of open-source business apps that cover all your company needs.",
+ "compose": "c2VydmljZXM6CiAgb2RvbzoKICAgIGltYWdlOiAnb2RvbzoxOCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX09ET09fODA2OQogICAgICAtIEhPU1Q9cG9zdGdyZXNxbAogICAgICAtIFVTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICB2b2x1bWVzOgogICAgICAtICdvZG9vLXdlYi1kYXRhOi92YXIvbGliL29kb28nCiAgICAgIC0gJ29kb28tZXh0cmEtYWRkb25zOi9tbnQvZXh0cmEtYWRkb25zJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwNjknCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMzAKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdwb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19EQj1wb3N0Z3JlcwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kIHBvc3RncmVzJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "business",
+ "apps",
+ "crm",
+ "ecommerce",
+ "accounting",
+ "inventory",
+ "point of sale",
+ "project management",
+ "open-source"
+ ],
+ "logo": "svgs/odoo.svg",
+ "minversion": "0.0.0",
+ "port": "8069"
+ },
+ "ollama-with-open-webui": {
+ "documentation": "https://docs.openwebui.com?utm_source=coolify.io",
+ "slogan": "Ollama with Open Web UI integrates AI model deployment with a user-friendly interface.",
+ "compose": "c2VydmljZXM6CiAgb2xsYW1hLWFwaToKICAgIGltYWdlOiAnb2xsYW1hL29sbGFtYTpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdvbGxhbWE6L3Jvb3QvLm9sbGFtYScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBvbGxhbWEKICAgICAgICAtIGxpc3QKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDMwcwogICAgICByZXRyaWVzOiAxMAogIG9wZW4td2VidWk6CiAgICBpbWFnZTogJ2doY3IuaW8vb3Blbi13ZWJ1aS9vcGVuLXdlYnVpOm1haW4nCiAgICB2b2x1bWVzOgogICAgICAtICdvcGVuLXdlYnVpOi9hcHAvYmFja2VuZC9kYXRhJwogICAgZGVwZW5kc19vbjoKICAgICAgLSBvbGxhbWEtYXBpCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9PTExBTUFfODA4MAogICAgICAtICdPTExBTUFfQkFTRV9VUkw9aHR0cDovL29sbGFtYS1hcGk6MTE0MzQnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDMwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "ollama",
+ "ai",
+ "models",
+ "deployment",
+ "open-web-ui",
+ "integration"
+ ],
+ "logo": "svgs/ollama.svg",
+ "minversion": "0.0.0"
+ },
+ "onedev": {
+ "documentation": "https://docs.onedev.io/?utm_source=coolify.io",
+ "slogan": "Git server with CI/CD, kanban, and packages. Seamless integration. Unparalleled experience.",
+ "compose": "c2VydmljZXM6CiAgb25lZGV2OgogICAgaW1hZ2U6ICcxZGV2L3NlcnZlcjpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdvbmVkZXYtZG9ja2VyLXNvY2s6L3Zhci9ydW4vZG9ja2VyLnNvY2snCiAgICAgIC0gJ29uZWRldi1kYXRhOi9vcHQvb25lZGV2JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfT05FREVWXzY2MTAKICAgICAgLSBoaWJlcm5hdGVfZGlhbGVjdD1pby5vbmVkZXYuc2VydmVyLnBlcnNpc3RlbmNlLlBvc3RncmVTUUxEaWFsZWN0CiAgICAgIC0gaGliZXJuYXRlX2Nvbm5lY3Rpb25fZHJpdmVyX2NsYXNzPW9yZy5wb3N0Z3Jlc3FsLkRyaXZlcgogICAgICAtICdoaWJlcm5hdGVfY29ubmVjdGlvbl91cmw9amRiYzpwb3N0Z3Jlc3FsOi8vcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTUUxfREFUQUJBU0U6LW9uZWRldn0nCiAgICAgIC0gJ2hpYmVybmF0ZV9jb25uZWN0aW9uX3VzZXJuYW1lPSR7U0VSVklDRV9VU0VSX0RBVEFCQVNFfScKICAgICAgLSAnaGliZXJuYXRlX2Nvbm5lY3Rpb25fcGFzc3dvcmQ9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X0RBVEFCQVNFfScKICAgICAgLSAnaW5pdGlhbF91c2VyPSR7U0VSVklDRV9VU0VSX09ORURFVn0nCiAgICAgIC0gJ2luaXRpYWxfcGFzc3dvcmQ9JHtTRVJWSUNFX1BBU1NXT1JEX09ORURFVn0nCiAgICAgIC0gJ2luaXRpYWxfZW1haWw9JHtPTkVERVZfRU1BSUw6LW1haWxAZXhhbXBsZS5jb219JwogICAgICAtICdpbml0aWFsX3NlcnZlcl91cmw9JHtTRVJWSUNFX1VSTF9PTkVERVZ9JwogICAgICAtICdpbml0aWFsX3NzaF9yb290X3VybD0ke1NTSF9ST09UX1VSTDotc3NoOi8vY2hhbmdlbWU6MjJ9JwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSAndHJ1ZScKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAnb25lZGV2LXBvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9EQVRBQkFTRX0nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF82NF9EQVRBQkFTRX0nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNRTF9EQVRBQkFTRTotb25lZGV2fScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSBwZ19pc3JlYWR5CiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "git",
+ "scm",
+ "ci",
+ "cd",
+ "kanban",
+ "packages",
+ "devops",
+ "collaboration",
+ "code",
+ "repository",
+ "management"
+ ],
+ "logo": "svgs/onedev.svg",
+ "minversion": "0.0.0",
+ "port": "6610"
+ },
+ "onetimesecret": {
+ "documentation": "https://docs.onetimesecret.com?utm_source=coolify.io",
+ "slogan": "Share sensitive information securely with self-destructing links that are only viewable once.",
+ "compose": "c2VydmljZXM6CiAgb25ldGltZXNlY3JldDoKICAgIGltYWdlOiAnb25ldGltZXNlY3JldC9vbmV0aW1lc2VjcmV0OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX09ORVRJTUVTRUNSRVRfMzAwMAogICAgICAtICdBVVRIX0FVVE9WRVJJRlk9JHtBVVRIX0FVVE9WRVJJRlk6LXRydWV9JwogICAgICAtICdBVVRIX1NJR05VUD0ke0FVVEhfU0lHTlVQOi10cnVlfScKICAgICAgLSAnQ09MT05FTD0ke0NPTE9ORUw6LWFkbWluQGV4YW1wbGUuY29tfScKICAgICAgLSAnSE9TVD0ke0hPU1Q6LWxvY2FsaG9zdH0nCiAgICAgIC0gJ1JFRElTX1VSTD1yZWRpczovLzoke1NFUlZJQ0VfUEFTU1dPUkRfUkVESVN9QHJlZGlzOjYzNzkvMCcKICAgICAgLSAnU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9PTkVUSU1FU0VDUkVUfScKICAgICAgLSAnU1NMPSR7U1NMOi1mYWxzZX0nCiAgICAgIC0gUkFDS19FTlY9cHJvZHVjdGlvbgogICAgZGVwZW5kc19vbjoKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBydWJ5CiAgICAgICAgLSAnLXJuZXQvaHR0cCcKICAgICAgICAtICctZScKICAgICAgICAtICJleGl0KE5ldDo6SFRUUC5nZXRfcmVzcG9uc2UoVVJJKCdodHRwOi8vbG9jYWxob3N0OjMwMDAnKSkuaXNfYT8oTmV0OjpIVFRQU3VjY2VzcykgPyAwIDogMSkiCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6OC1hbHBpbmUnCiAgICBjb21tYW5kOiAncmVkaXMtc2VydmVyIC0tcmVxdWlyZXBhc3MgJHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwo=",
+ "tags": [
+ "auth",
+ "password",
+ "secret",
+ "secure"
+ ],
+ "logo": "svgs/onetimesecret.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "open-webui": {
+ "documentation": "https://docs.openwebui.com?utm_source=coolify.io",
+ "slogan": "User-friendly AI Interface (Supports Ollama, OpenAI API, ...)",
+ "compose": "c2VydmljZXM6CiAgb3Blbi13ZWJ1aToKICAgIGltYWdlOiAnZ2hjci5pby9vcGVuLXdlYnVpL29wZW4td2VidWk6bWFpbicKICAgIHZvbHVtZXM6CiAgICAgIC0gJ29wZW4td2VidWk6L2FwcC9iYWNrZW5kL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9PUEVOV0VCVUlfODA4MAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwODAnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAzMHMKICAgICAgcmV0cmllczogMTAKdm9sdW1lczoKICBvcGVuLXdlYnVpOiBudWxsCg==",
+ "tags": [
+ "ai",
+ "models",
+ "deployment",
+ "open-web-ui",
+ "integration"
+ ],
+ "logo": "svgs/openwebui.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "openpanel": {
+ "documentation": "https://openpanel.dev/docs?utm_source=coolify.io",
+ "slogan": "Open source alternative to Mixpanel and Plausible for product analytics",
+ "compose": "c2VydmljZXM6CiAgb3BlbnBhbmVsLWRhc2hib2FyZDoKICAgIGltYWdlOiAnbGluZGVzdmFyZC9vcGVucGFuZWwtZGFzaGJvYXJkOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIE5PREVfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBORVhUX1BVQkxJQ19TRUxGX0hPU1RFRD10cnVlCiAgICAgIC0gU0VSVklDRV9VUkxfT1BEQVNIQk9BUkRfMzAwMAogICAgICAtICdORVhUX1BVQkxJQ19BUElfVVJMPSR7U0VSVklDRV9VUkxfT1BBUEl9JwogICAgICAtICdORVhUX1BVQkxJQ19EQVNIQk9BUkRfVVJMPSR7U0VSVklDRV9VUkxfT1BEQVNIQk9BUkR9JwogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7T1BFTlBBTkVMX1BPU1RHUkVTX0RCOi1vcGVucGFuZWwtZGJ9P3NjaGVtYT1wdWJsaWMnCiAgICAgIC0gJ1JFRElTX1VSTD1yZWRpczovL2RlZmF1bHQ6JHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfUByZWRpczo2Mzc5JwogICAgICAtICdDTElDS0hPVVNFX1VSTD1odHRwOi8vY2xpY2tob3VzZTo4MTIzL29wZW5wYW5lbCcKICAgIGRlcGVuZHNfb246CiAgICAgIG9wZW5wYW5lbC1hcGk6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgb3BlbnBhbmVsLXdvcmtlcjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBjbGlja2hvdXNlOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2N1cmwgLWYgaHR0cDovL2xvY2FsaG9zdDozMDAwL2FwaS9oZWFsdGhjaGVjayB8fCBleGl0IDEnCiAgICAgIGludGVydmFsOiAxMHMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogNQogICAgICBzdGFydF9wZXJpb2Q6IDE1cwogIG9wZW5wYW5lbC1hcGk6CiAgICBpbWFnZTogJ2xpbmRlc3ZhcmQvb3BlbnBhbmVsLWFwaTpsYXRlc3QnCiAgICBjb21tYW5kOiAic2ggLWMgXCJcbiAgZWNobyAnUnVubmluZyBtaWdyYXRpb25zLi4uJ1xuICBDST10cnVlIHBucG0gLXIgcnVuIG1pZ3JhdGU6ZGVwbG95XG5cbiAgcG5wbSBzdGFydFxuXCJcbiIKICAgIGVudmlyb25tZW50OgogICAgICAtIE5PREVfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBORVhUX1BVQkxJQ19TRUxGX0hPU1RFRD10cnVlCiAgICAgIC0gU0VSVklDRV9VUkxfT1BBUEkKICAgICAgLSAnTkVYVF9QVUJMSUNfQVBJX1VSTD0ke1NFUlZJQ0VfVVJMX09QQVBJfScKICAgICAgLSAnTkVYVF9QVUJMSUNfREFTSEJPQVJEX1VSTD0ke1NFUlZJQ0VfVVJMX09QREFTSEJPQVJEfScKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke09QRU5QQU5FTF9QT1NUR1JFU19EQjotb3BlbnBhbmVsLWRifT9zY2hlbWE9cHVibGljJwogICAgICAtICdEQVRBQkFTRV9VUkxfRElSRUNUPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke09QRU5QQU5FTF9QT1NUR1JFU19EQjotb3BlbnBhbmVsLWRifT9zY2hlbWE9cHVibGljJwogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9kZWZhdWx0OiR7U0VSVklDRV9QQVNTV09SRF9SRURJU31AcmVkaXM6NjM3OScKICAgICAgLSAnQ0xJQ0tIT1VTRV9VUkw9aHR0cDovL2NsaWNraG91c2U6ODEyMy9vcGVucGFuZWwnCiAgICAgIC0gJ0NPT0tJRV9TRUNSRVQ9JHtTRVJWSUNFX0JBU0U2NF9DT09LSUVTRUNSRVR9JwogICAgICAtICdBTExPV19SRUdJU1RSQVRJT049JHtPUEVOUEFORUxfQUxMT1dfUkVHSVNUUkFUSU9OOi1mYWxzZX0nCiAgICAgIC0gJ0FMTE9XX0lOVklUQVRJT049JHtPUEVOUEFORUxfQUxMT1dfSU5WSVRBVElPTjotZmFsc2V9JwogICAgICAtICdFTUFJTF9TRU5ERVI9JHtPUEVOUEFORUxfRU1BSUxfU0VOREVSfScKICAgICAgLSAnUkVTRU5EX0FQSV9LRVk9JHtSRVNFTkRfQVBJX0tFWX0nCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBjbGlja2hvdXNlOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2N1cmwgLWYgaHR0cDovL2xvY2FsaG9zdDozMDAwL2hlYWx0aGNoZWNrIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1CiAgb3BlbnBhbmVsLXdvcmtlcjoKICAgIGltYWdlOiAnbGluZGVzdmFyZC9vcGVucGFuZWwtd29ya2VyOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIE5PREVfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBORVhUX1BVQkxJQ19TRUxGX0hPU1RFRD10cnVlCiAgICAgIC0gU0VSVklDRV9VUkxfT1BCVUxMQk9BUkQKICAgICAgLSAnTkVYVF9QVUJMSUNfQVBJX1VSTD0ke1NFUlZJQ0VfVVJMX09QQVBJfScKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke09QRU5QQU5FTF9QT1NUR1JFU19EQjotb3BlbnBhbmVsLWRifT9zY2hlbWE9cHVibGljJwogICAgICAtICdEQVRBQkFTRV9VUkxfRElSRUNUPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke09QRU5QQU5FTF9QT1NUR1JFU19EQjotb3BlbnBhbmVsLWRifT9zY2hlbWE9cHVibGljJwogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9kZWZhdWx0OiR7U0VSVklDRV9QQVNTV09SRF9SRURJU31AcmVkaXM6NjM3OScKICAgICAgLSAnQ0xJQ0tIT1VTRV9VUkw9aHR0cDovL2NsaWNraG91c2U6ODEyMy9vcGVucGFuZWwnCiAgICBkZXBlbmRzX29uOgogICAgICBvcGVucGFuZWwtYXBpOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIGNsaWNraG91c2U6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnY3VybCAtZiBodHRwOi8vbG9jYWxob3N0OjMwMDAvaGVhbHRoY2hlY2sgfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDUKICAgICAgc3RhcnRfcGVyaW9kOiA1cwogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdvcGVucGFuZWxfcG9zdGdyZXNfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfREI9JHtPUEVOUEFORUxfUE9TVEdSRVNfREI6LW9wZW5wYW5lbC1kYn0nCiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1CiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjcuNC1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdvcGVucGFuZWxfcmVkaXNfZGF0YTovZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtICdSRURJU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUkVESVN9JwogICAgY29tbWFuZDogJ3JlZGlzLXNlcnZlciAtLXJlcXVpcmVwYXNzICR7U0VSVklDRV9QQVNTV09SRF9SRURJU30gLS1tYXhtZW1vcnktcG9saWN5IG5vZXZpY3Rpb24nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSAnLWEnCiAgICAgICAgLSAnJHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfScKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1CiAgY2xpY2tob3VzZToKICAgIGltYWdlOiAnY2xpY2tob3VzZS9jbGlja2hvdXNlLXNlcnZlcjoyNC4zLjItYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAnb3BlbnBhbmVsX2NsaWNraG91c2VfZGF0YTovdmFyL2xpYi9jbGlja2hvdXNlJwogICAgICAtICdvcGVucGFuZWxfY2xpY2tob3VzZV9sb2dzOi92YXIvbG9nL2NsaWNraG91c2Utc2VydmVyJwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9jbGlja2hvdXNlLWNvbmZpZy54bWwKICAgICAgICB0YXJnZXQ6IC9ldGMvY2xpY2tob3VzZS1zZXJ2ZXIvY29uZmlnLmQvb3AtY29uZmlnLnhtbAogICAgICAgIHJlYWRfb25seTogdHJ1ZQogICAgICAgIGNvbnRlbnQ6ICI8Y2xpY2tob3VzZT5cbiAgICA8bG9nZ2VyPlxuICAgICAgICA8bGV2ZWw+d2FybmluZzwvbGV2ZWw+XG4gICAgICAgIDxjb25zb2xlPnRydWU8L2NvbnNvbGU+XG4gICAgPC9sb2dnZXI+XG4gICAgPGtlZXBfYWxpdmVfdGltZW91dD4xMDwva2VlcF9hbGl2ZV90aW1lb3V0PlxuICAgIDwhLS0gU3RvcCBhbGwgdGhlIHVubmVjZXNzYXJ5IGxvZ2dpbmcgLS0+XG4gICAgPHF1ZXJ5X3RocmVhZF9sb2cgcmVtb3ZlPVwicmVtb3ZlXCIvPlxuICAgIDxxdWVyeV9sb2cgcmVtb3ZlPVwicmVtb3ZlXCIvPlxuICAgIDx0ZXh0X2xvZyByZW1vdmU9XCJyZW1vdmVcIi8+XG4gICAgPHRyYWNlX2xvZyByZW1vdmU9XCJyZW1vdmVcIi8+XG4gICAgPG1ldHJpY19sb2cgcmVtb3ZlPVwicmVtb3ZlXCIvPlxuICAgIDxhc3luY2hyb25vdXNfbWV0cmljX2xvZyByZW1vdmU9XCJyZW1vdmVcIi8+XG4gICAgPHNlc3Npb25fbG9nIHJlbW92ZT1cInJlbW92ZVwiLz5cbiAgICA8cGFydF9sb2cgcmVtb3ZlPVwicmVtb3ZlXCIvPlxuICAgIDxsaXN0ZW5faG9zdD4wLjAuMC4wPC9saXN0ZW5faG9zdD5cbiAgICA8aW50ZXJzZXJ2ZXJfbGlzdGVuX2hvc3Q+MC4wLjAuMDwvaW50ZXJzZXJ2ZXJfbGlzdGVuX2hvc3Q+XG4gICAgPGludGVyc2VydmVyX2h0dHBfaG9zdD5vcGNoPC9pbnRlcnNlcnZlcl9odHRwX2hvc3Q+XG4gICAgPCEtLSBEaXNhYmxlIGNncm91cCBtZW1vcnkgb2JzZXJ2ZXIgLS0+XG4gICAgPGNncm91cHNfbWVtb3J5X3VzYWdlX29ic2VydmVyX3dhaXRfdGltZT4wPC9jZ3JvdXBzX21lbW9yeV91c2FnZV9vYnNlcnZlcl93YWl0X3RpbWU+XG4gICAgPCEtLSBOb3QgdXNlZCBhbnltb3JlLCBidXQga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgLS0+XG4gICAgPG1hY3Jvcz5cbiAgICAgICAgPHNoYXJkPjE8L3NoYXJkPlxuICAgICAgICA8cmVwbGljYT5yZXBsaWNhMTwvcmVwbGljYT5cbiAgICAgICAgPGNsdXN0ZXI+b3BlbnBhbmVsX2NsdXN0ZXI8L2NsdXN0ZXI+XG4gICAgPC9tYWNyb3M+XG48L2NsaWNraG91c2U+IgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9jbGlja2hvdXNlLXVzZXItY29uZmlnLnhtbAogICAgICAgIHRhcmdldDogL2V0Yy9jbGlja2hvdXNlLXNlcnZlci91c2Vycy5kL29wLXVzZXItY29uZmlnLnhtbAogICAgICAgIHJlYWRfb25seTogdHJ1ZQogICAgICAgIGNvbnRlbnQ6ICI8Y2xpY2tob3VzZT5cbiAgICA8cHJvZmlsZXM+XG4gICAgICAgIDxkZWZhdWx0PlxuICAgICAgICAgICAgPGxvZ19xdWVyaWVzPjA8L2xvZ19xdWVyaWVzPlxuICAgICAgICAgICAgPGxvZ19xdWVyeV90aHJlYWRzPjA8L2xvZ19xdWVyeV90aHJlYWRzPlxuICAgICAgICA8L2RlZmF1bHQ+XG4gICAgPC9wcm9maWxlcz5cbjwvY2xpY2tob3VzZT5cbiIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vaW5pdC1kYi5zaAogICAgICAgIHRhcmdldDogL2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL2luaXQtZGIuc2gKICAgICAgICBjb250ZW50OiAiIyEvYmluL3NoXG5zZXQgLWVcblxuY2xpY2tob3VzZSBjbGllbnQgLW4gPDwtRU9TUUxcbiAgQ1JFQVRFIERBVEFCQVNFIElGIE5PVCBFWElTVFMgb3BlbnBhbmVsO1xuRU9TUUwiCiAgICB1bGltaXRzOgogICAgICBub2ZpbGU6CiAgICAgICAgc29mdDogMjYyMTQ0CiAgICAgICAgaGFyZDogMjYyMTQ0CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2NsaWNraG91c2UtY2xpZW50IC0tcXVlcnkgIlNFTEVDVCAxIicKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1Cg==",
+ "tags": [
+ "analytics",
+ "insights",
+ "privacy",
+ "mixpanel",
+ "plausible",
+ "google",
+ "alternative"
+ ],
+ "logo": "svgs/openpanel.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "orangehrm": {
+ "documentation": "https://starterhelp.orangehrm.com/hc/en-us?utm_source=coolify.io",
+ "slogan": "OrangeHRM open source HR management software.",
+ "compose": "c2VydmljZXM6CiAgb3JhbmdlaHJtOgogICAgaW1hZ2U6ICdvcmFuZ2Vocm0vb3JhbmdlaHJtOmxhdGVzdCcKICAgIHBsYXRmb3JtOiBsaW51eC9hbWQ2NAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfT1JBTkdFSFJNXzgwCiAgICAgIC0gT1JBTkdFSFJNX0RBVEFCQVNFX0hPU1Q9bWFyaWFkYgogICAgICAtICdPUkFOR0VIUk1fREFUQUJBU0VfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ09SQU5HRUhSTV9EQVRBQkFTRV9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgICAtICdPUkFOR0VIUk1fREFUQUJBU0VfTkFNRT0ke01ZU1FMX0RBVEFCQVNFOi1vcmFuZ2Vocm0tZGJ9JwogICAgdm9sdW1lczoKICAgICAgLSAnb3JhbmdlaHJtLWRhdGE6L29yYW5nZWhybScKICAgIGRlcGVuZHNfb246CiAgICAgIG1hcmlhZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMScKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxMAogIG1hcmlhZGI6CiAgICBpbWFnZTogJ21hcmlhZGI6MTEnCiAgICB2b2x1bWVzOgogICAgICAtICdvcmFuZ2Vocm1fbWFyaWFkYl9kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01ZU1FMX1JPT1RfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMUk9PVH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LW9yYW5nZWhybS1kYn0nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGhlYWx0aGNoZWNrLnNoCiAgICAgICAgLSAnLS1jb25uZWN0JwogICAgICAgIC0gJy0taW5ub2RiX2luaXRpYWxpemVkJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "hr",
+ "hris",
+ "hrms",
+ "human resource management",
+ "orangehrm",
+ "hr management"
+ ],
+ "logo": "svgs/orangehrm.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "organizr": {
+ "documentation": "https://docs.organizr.app/?utm_source=coolify.io",
+ "slogan": "Homelab Services Organizer",
+ "compose": "c2VydmljZXM6CiAgb3JnYW5penI6CiAgICBpbWFnZTogJ29yZ2FuaXpyL29yZ2FuaXpyOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX09SR0FOSVpSXzgwCiAgICAgIC0gJ2JyYW5jaD0ke2JyYW5jaDotdjItbWFzdGVyfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ29yZ2FuaXpyLWRhdGE6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnY3VybCAtc2YgaHR0cDovL2xvY2FsaG9zdDo4MCB8fCBleGl0IDEnCiAgICAgIGludGVydmFsOiAxMHMKICAgICAgdGltZW91dDogMXMKICAgICAgcmV0cmllczogMwo=",
+ "tags": [
+ "tool"
+ ],
+ "logo": "svgs/organizr.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "osticket": {
+ "documentation": "https://docs.osticket.com/en/latest/?utm_source=coolify.io",
+ "slogan": "osTicket is a widely-used open source support ticket system.",
+ "compose": "c2VydmljZXM6CiAgb3N0aWNrZXQ6CiAgICBpbWFnZTogJ3RpcmVkb2ZpdC9vc3RpY2tldDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9PU1RJQ0tFVF84MAogICAgICAtICdBUFBfVVJMPSR7U0VSVklDRV9VUkxfT1NUSUNLRVR9JwogICAgICAtICdDUk9OX0lOVEVSVkFMPSR7Q1JPTl9JTlRFUlZBTDotMTB9JwogICAgICAtIERCX0hPU1Q9bWFyaWFkYgogICAgICAtICdEQl9OQU1FPSR7T1NUSUNLRVRfREFUQUJBU0U6LW9zdGlja2V0LWRifScKICAgICAgLSAnREJfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NQVJJQURCfScKICAgICAgLSAnREJfUEFTUz0ke1NFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQn0nCiAgICAgIC0gJ0lOU1RBTExfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9PU1RJQ0tFVFNFQ1JFVH0nCiAgICAgIC0gJ0FETUlOX0ZJUlNUTkFNRT0ke09TVElDS0VUX0ZJUlNUTkFNRTotQWRtaW59JwogICAgICAtICdBRE1JTl9MQVNUTkFNRT0ke09TVElDS0VUX0xBU1ROQU1FOi1pc3RyYXRvcn0nCiAgICAgIC0gJ0FETUlOX0VNQUlMPSR7T1NUSUNLRVRfQURNSU5fRU1BSUw6LWFkbWluQGV4YW1wbGUuY29tfScKICAgICAgLSAnQURNSU5fVVNFUj0ke1NFUlZJQ0VfVVNFUl9PU1RJQ0tFVEFETUlOfScKICAgICAgLSAnQURNSU5fUEFTUz0ke1NFUlZJQ0VfUEFTU1dPUkRfT1NUSUNLRVRBRE1JTlBBU1N9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xLycKICAgICAgc3RhcnRfcGVyaW9kOiAxMHMKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAzCiAgICBkZXBlbmRzX29uOgogICAgICBtYXJpYWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICB2b2x1bWVzOgogICAgICAtICdvc3RpY2tldC1kYXRhOi93d3cvb3N0aWNrZXQnCiAgbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjoxMScKICAgIGVudmlyb25tZW50OgogICAgICBNQVJJQURCX1JPT1RfUEFTU1dPUkQ6ICcke1NFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQlJPT1R9JwogICAgICBNQVJJQURCX0RBVEFCQVNFOiAnJHtPU1RJQ0tFVF9EQVRBQkFTRTotb3N0aWNrZXQtZGJ9JwogICAgICBNQVJJQURCX1VTRVI6ICcke1NFUlZJQ0VfVVNFUl9NQVJJQURCfScKICAgICAgTUFSSUFEQl9QQVNTV09SRDogJyR7U0VSVklDRV9QQVNTV09SRF9NQVJJQURCfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBoZWFsdGhjaGVjay5zaAogICAgICAgIC0gJy0tY29ubmVjdCcKICAgICAgICAtICctLWlubm9kYl9pbml0aWFsaXplZCcKICAgICAgc3RhcnRfcGVyaW9kOiAxMHMKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAzCiAgICB2b2x1bWVzOgogICAgICAtICdvc3RpY2tldC1tYXJpYWRiLWRhdGE6L3Zhci9saWIvbXlzcWwnCg==",
+ "tags": [
+ "helpdesk",
+ "ticketing",
+ "support",
+ "open-source"
+ ],
+ "logo": "svgs/osticket.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "overseerr": {
+ "documentation": "https://docs.overseerr.dev/getting-started/installation#docker?utm_source=coolify.io",
+ "slogan": "Overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem.",
+ "compose": "c2VydmljZXM6CiAgb3ZlcnNlZXJyOgogICAgaW1hZ2U6ICdzY3R4L292ZXJzZWVycjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9PVkVSU0VFUlJfNTA1NQogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtICdUWj0ke1RaOi1BbWVyaWNhL1Rvcm9udG99JwogICAgdm9sdW1lczoKICAgICAgLSAnb3ZlcnNlZXJyLWNvbmZpZzovYXBwL2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLS10cmllcycKICAgICAgICAtICcxJwogICAgICAgIC0gJy0tbm8tdmVyYm9zZScKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjUwNTUvYXBpL3YxL3N0YXR1cycKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "media",
+ "request",
+ "plex",
+ "sonarr",
+ "radarr"
+ ],
+ "logo": "svgs/overseerr.svg",
+ "minversion": "0.0.0",
+ "port": "5055"
+ },
+ "owncloud": {
+ "documentation": "https://owncloud.com/docs-guides/?utm_source=coolify.io",
+ "slogan": "OwnCloud with Open Web UI integrates file management with a powerful, user-friendly interface.",
+ "compose": "c2VydmljZXM6CiAgb3duY2xvdWQ6CiAgICBpbWFnZTogJ293bmNsb3VkL3NlcnZlcjpsYXRlc3QnCiAgICBkZXBlbmRzX29uOgogICAgICBtYXJpYWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9PV05DTE9VRF84MDgwCiAgICAgIC0gJ09XTkNMT1VEX0RPTUFJTj0ke1NFUlZJQ0VfVVJMX09XTkNMT1VEfScKICAgICAgLSAnT1dOQ0xPVURfVFJVU1RFRF9ET01BSU5TPSR7U0VSVklDRV9VUkxfT1dOQ0xPVUR9JwogICAgICAtIE9XTkNMT1VEX0RCX1RZUEU9bXlzcWwKICAgICAgLSBPV05DTE9VRF9EQl9IT1NUPW1hcmlhZGIKICAgICAgLSAnT1dOQ0xPVURfREJfTkFNRT0ke0RCX05BTUU6LW93bmNsb3VkfScKICAgICAgLSAnT1dOQ0xPVURfREJfVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfTUFSSUFEQn0nCiAgICAgIC0gJ09XTkNMT1VEX0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NQVJJQURCfScKICAgICAgLSAnT1dOQ0xPVURfQURNSU5fVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfT1dOQ0xPVUR9JwogICAgICAtICdPV05DTE9VRF9BRE1JTl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfT1dOQ0xPVUR9JwogICAgICAtICdPV05DTE9VRF9NWVNRTF9VVEY4TUI0PSR7TVlTUUxfVVRGOE1CNDotdHJ1ZX0nCiAgICAgIC0gJ09XTkNMT1VEX1JFRElTX0VOQUJMRUQ9JHtSRURJU19FTkFCTEVEOi10cnVlfScKICAgICAgLSBPV05DTE9VRF9SRURJU19IT1NUPXJlZGlzCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gL3Vzci9iaW4vaGVhbHRoY2hlY2sKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogICAgdm9sdW1lczoKICAgICAgLSAnb3duY2xvdWQtZGF0YTovbW50L2RhdGEnCiAgbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQlJPT1R9JwogICAgICAtICdNWVNRTF9VU0VSPSR7U0VSVklDRV9VU0VSX01BUklBREJ9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQn0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7REJfTkFNRTotb3duY2xvdWR9JwogICAgICAtIFRaPWF1dG8KICAgIGNvbW1hbmQ6CiAgICAgIC0gJy0tY2hhcmFjdGVyLXNldC1zZXJ2ZXI9dXRmOG1iNCcKICAgICAgLSAnLS1jb2xsYXRpb24tc2VydmVyPXV0ZjhtYjRfYmluJwogICAgICAtICctLW1heC1hbGxvd2VkLXBhY2tldD0xMjhNJwogICAgICAtICctLWlubm9kYi1sb2ctZmlsZS1zaXplPTY0TScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBoZWFsdGhjaGVjay5zaAogICAgICAgIC0gJy0tY29ubmVjdCcKICAgICAgICAtICctLWlubm9kYl9pbml0aWFsaXplZCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogICAgdm9sdW1lczoKICAgICAgLSAnb3duY2xvdWQtbXlzcWwtZGF0YTovdmFyL2xpYi9teXNxbCcKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6NicKICAgIGNvbW1hbmQ6CiAgICAgIC0gJy0tZGF0YWJhc2VzJwogICAgICAtICcxJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDUK",
+ "tags": [
+ "owncloud",
+ "file-management",
+ "open-web-ui",
+ "integration",
+ "cloud"
+ ],
+ "logo": "svgs/owncloud.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "pairdrop": {
+ "documentation": "https://pairdrop.net/?utm_source=coolify.io",
+ "slogan": "Pairdrop is a self-hosted file sharing and collaboration platform, offering secure file sharing and collaboration capabilities for efficient teamwork.",
+ "compose": "c2VydmljZXM6CiAgcGFpcmRyb3A6CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvcGFpcmRyb3A6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfUEFJUkRST1BfMzAwMAogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtIFRaPUV1cm9wZS9NYWRyaWQKICAgICAgLSBERUJVR19NT0RFPWZhbHNlCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "file",
+ "sharing",
+ "collaboration",
+ "teamwork"
+ ],
+ "logo": "svgs/pairdrop.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "paperless": {
+ "documentation": "https://docs.paperless-ngx.com/configuration/?utm_source=coolify.io",
+ "slogan": "Paperless-ngx is a community-supported open-source document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.",
+ "compose": "c2VydmljZXM6CiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjcuNCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3BhcGVybGVzcy1yZWRpczovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIHBpbmcKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMKICBwYXBlcmxlc3M6CiAgICBpbWFnZTogJ3BhcGVybGVzc25neC9wYXBlcmxlc3Mtbmd4OmxhdGVzdCcKICAgIGRlcGVuZHNfb246CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mcycKICAgICAgICAtICctUycKICAgICAgICAtICctLW1heC10aW1lJwogICAgICAgIC0gJzInCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo4MDAwJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiA1CiAgICB2b2x1bWVzOgogICAgICAtICdwYXBlcmxlc3MtZGF0YTovdXNyL3NyYy9wYXBlcmxlc3MvZGF0YScKICAgICAgLSAncGFwZXJsZXNzLW1lZGlhOi91c3Ivc3JjL3BhcGVybGVzcy9tZWRpYScKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vZXhwb3J0CiAgICAgICAgdGFyZ2V0OiAvdXNyL3NyYy9wYXBlcmxlc3MvZXhwb3J0CiAgICAgICAgaXNfZGlyZWN0b3J5OiB0cnVlCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2NvbnN1bWUKICAgICAgICB0YXJnZXQ6IC91c3Ivc3JjL3BhcGVybGVzcy9jb25zdW1lCiAgICAgICAgaXNfZGlyZWN0b3J5OiB0cnVlCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9QQVBFUkxFU1NfODAwMAogICAgICAtIFBBUEVSTEVTU19VUkw9JFNFUlZJQ0VfVVJMX1BBUEVSTEVTU184MDAwCiAgICAgIC0gJ1BBUEVSTEVTU19BRE1JTl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUEFQRVJMRVNTfScKICAgICAgLSAnUEFQRVJMRVNTX0FETUlOX1VTRVI9JHtTRVJWSUNFX1VTRVJfUEFQRVJMRVNTfScKICAgICAgLSAnUEFQRVJMRVNTX1JFRElTPXJlZGlzOi8vcmVkaXM6NjM3OScKICAgICAgLSAnUEFQRVJMRVNTX1NFQ1JFVF9LRVk9JHtTRVJWSUNFX1JFQUxCQVNFNjRfNjRfUEFQRVJMRVNTfScK",
+ "tags": null,
+ "logo": "svgs/paperless.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "passbolt": {
+ "documentation": "https://www.passbolt.com/ce/docker?utm_source=coolify.io",
+ "slogan": "Passbolt Community Edition (CE) API. The JSON API for the open source password manager for teams!",
+ "compose": "c2VydmljZXM6CiAgcGFzc2JvbHQ6CiAgICBpbWFnZTogJ3Bhc3Nib2x0L3Bhc3Nib2x0OmxhdGVzdC1jZScKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1BBU1NCT0xUCiAgICAgIC0gJ0FQUF9GVUxMX0JBU0VfVVJMPSR7U0VSVklDRV9VUkxfUEFTU0JPTFR9JwogICAgICAtIERBVEFTT1VSQ0VTX0RFRkFVTFRfSE9TVD1tYXJpYWRiCiAgICAgIC0gJ0RBVEFTT1VSQ0VTX0RFRkFVTFRfVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfUEFTU0JPTFR9JwogICAgICAtICdEQVRBU09VUkNFU19ERUZBVUxUX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QQVNTQk9MVH0nCiAgICAgIC0gJ0RBVEFTT1VSQ0VTX0RFRkFVTFRfREFUQUJBU0U9JHtNWVNRTF9EQjotcGFzc2JvbHQtZGJ9JwogICAgdm9sdW1lczoKICAgICAgLSAnZ3BnX3ZvbHVtZTovZXRjL3Bhc3Nib2x0L2dwZycKICAgICAgLSAnand0X3ZvbHVtZTovZXRjL3Bhc3Nib2x0L2p3dCcKICAgIGNvbW1hbmQ6CiAgICAgIC0gL3Vzci9iaW4vd2FpdC1mb3Iuc2gKICAgICAgLSAnLXQnCiAgICAgIC0gJzAnCiAgICAgIC0gJ21hcmlhZGI6MzMwNicKICAgICAgLSAnLS0nCiAgICAgIC0gL2RvY2tlci1lbnRyeXBvaW50LnNoCiAgICBkZXBlbmRzX29uOgogICAgICBtYXJpYWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICBtYXJpYWRiOgogICAgaW1hZ2U6ICdtYXJpYWRiOjExJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01BUklBREJfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUk9PVE1BUklBREJ9JwogICAgICAtICdNQVJJQURCX0RBVEFCQVNFPSR7TVlTUUxfREI6LXBhc3Nib2x0LWRifScKICAgICAgLSAnTUFSSUFEQl9VU0VSPSR7U0VSVklDRV9VU0VSX1BBU1NCT0xUfScKICAgICAgLSAnTUFSSUFEQl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUEFTU0JPTFR9JwogICAgdm9sdW1lczoKICAgICAgLSAncGFzc2JvbHRfbWFyaWFkYl9kYXRhOi92YXIvbGliL215c3FsJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGhlYWx0aGNoZWNrLnNoCiAgICAgICAgLSAnLS1jb25uZWN0JwogICAgICAgIC0gJy0taW5ub2RiX2luaXRpYWxpemVkJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "security",
+ "credentials",
+ "password-manager",
+ "open source"
+ ],
+ "logo": "svgs/passbolt.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "paymenter": {
+ "documentation": "https://paymenter.org/docs/guides/docker?utm_source=coolify.io",
+ "slogan": "Open-Source Billing, Built for Hosting",
+ "compose": "c2VydmljZXM6CiAgcGF5bWVudGVyOgogICAgaW1hZ2U6ICdnaGNyLmlvL3BheW1lbnRlci9wYXltZW50ZXI6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnYXBwX2xvZ3M6L2FwcC9zdG9yYWdlL2xvZ3MnCiAgICAgIC0gJ2FwcF9wdWJsaWM6L2FwcC9zdG9yYWdlL3B1YmxpYycKICAgIGVudmlyb25tZW50OgogICAgICBTRVJWSUNFX1VSTF9QQVlNRU5URVI6ICcke1NFUlZJQ0VfVVJMX1BBWU1FTlRFUl84MH0nCiAgICAgIERCX0RBVEFCQVNFOiAnJHtNWVNRTF9EQVRBQkFTRTotcGF5bWVudGVyLWRifScKICAgICAgREJfUEFTU1dPUkQ6ICcke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgICBEQl9VU0VSTkFNRTogJyR7U0VSVklDRV9VU0VSX01ZU1FMfScKICAgICAgQVBQX0VOVjogcHJvZHVjdGlvbgogICAgICBDQUNIRV9TVE9SRTogcmVkaXMKICAgICAgU0VTU0lPTl9EUklWRVI6IHJlZGlzCiAgICAgIFFVRVVFX0NPTk5FQ1RJT046IHJlZGlzCiAgICAgIFJFRElTX0hPU1Q6IHJlZGlzCiAgICAgIFJFRElTX1VTRVJOQU1FOiBkZWZhdWx0CiAgICAgIFJFRElTX1BBU1NXT1JEOiAnJHtTRVJWSUNFX1BBU1NXT1JEXzY0X1JFRElTfScKICAgICAgREJfQ09OTkVDVElPTjogbWFyaWFkYgogICAgICBEQl9IT1NUOiBtYXJpYWRiCiAgICAgIERCX1BPUlQ6IDMzMDYKICAgICAgQVBQX0tFWTogJyR7U0VSVklDRV9CQVNFNjRfS0VZfScKICAgIGRlcGVuZHNfb246CiAgICAgIG1hcmlhZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX3N0YXJ0ZWQKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnY3VybCAtc2YgaHR0cDovL2xvY2FsaG9zdDo4MCB8fCBleGl0IDEnCiAgICAgIGludGVydmFsOiAxMHMKICAgICAgdGltZW91dDogMXMKICAgICAgcmV0cmllczogMwogIG1hcmlhZGI6CiAgICBpbWFnZTogJ21hcmlhZGI6MTEnCiAgICB2b2x1bWVzOgogICAgICAtICdwYXltZW50ZXJfbWFyaWFkYl9kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01ZU1FMX1JPT1RfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMUk9PVH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LXBheW1lbnRlci1kYn0nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGhlYWx0aGNoZWNrLnNoCiAgICAgICAgLSAnLS1jb25uZWN0JwogICAgICAgIC0gJy0taW5ub2RiX2luaXRpYWxpemVkJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOmFscGluZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncmVkaXMtY2xpIHBpbmcgfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDFzCiAgICAgIHJldHJpZXM6IDMK",
+ "tags": [
+ "automation",
+ "billing",
+ "open source"
+ ],
+ "logo": "svgs/paymenter.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "penpot": {
+ "documentation": "https://help.penpot.app/technical-guide/getting-started/#install-with-docker?utm_source=coolify.io",
+ "slogan": "Penpot is the first Open Source design and prototyping platform for product teams.",
+ "compose": "c2VydmljZXM6CiAgZnJvbnRlbmQ6CiAgICBpbWFnZTogJ3BlbnBvdGFwcC9mcm9udGVuZDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdwZW5wb3QtYXNzZXRzOi9vcHQvZGF0YS9hc3NldHMnCiAgICBkZXBlbmRzX29uOgogICAgICBwZW5wb3QtYmFja2VuZDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBwZW5wb3QtZXhwb3J0ZXI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0ZST05URU5EXzgwODAKICAgICAgLSAnUEVOUE9UX0ZMQUdTPSR7UEVOUE9UX0ZST05URU5EX0ZMQUdTOi1lbmFibGUtbG9naW4td2l0aC1wYXNzd29yZH0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIHBlbnBvdC1iYWNrZW5kOgogICAgaW1hZ2U6ICdwZW5wb3RhcHAvYmFja2VuZDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdwZW5wb3QtYXNzZXRzOi9vcHQvZGF0YS9hc3NldHMnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BFTlBPVF9GTEFHUz0ke1BFTlBPVF9CQUNLRU5EX0ZMQUdTOi1lbmFibGUtbG9naW4td2l0aC1wYXNzd29yZCBlbmFibGUtc210cCBlbmFibGUtcHJlcGwtc2VydmVyfScKICAgICAgLSBQRU5QT1RfSFRUUF9TRVJWRVJfUE9SVD02MDYwCiAgICAgIC0gUEVOUE9UX1NFQ1JFVF9LRVk9JFNFUlZJQ0VfUkVBTEJBU0U2NF82NF9QRU5QT1QKICAgICAgLSBQRU5QT1RfUFVCTElDX1VSST0kU0VSVklDRV9VUkxfRlJPTlRFTkRfODA4MAogICAgICAtICdQRU5QT1RfQkFDS0VORF9VUkk9aHR0cDovL3BlbnBvdC1iYWNrZW5kJwogICAgICAtICdQRU5QT1RfRVhQT1JURVJfVVJJPWh0dHA6Ly9wZW5wb3QtZXhwb3J0ZXInCiAgICAgIC0gJ1BFTlBPVF9EQVRBQkFTRV9VUkk9cG9zdGdyZXNxbDovL3Bvc3RncmVzLyR7UE9TVEdSRVNfREI6LXBlbnBvdH0nCiAgICAgIC0gJ1BFTlBPVF9EQVRBQkFTRV9VU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BFTlBPVF9EQVRBQkFTRV9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQRU5QT1RfUkVESVNfVVJJPXJlZGlzOi8vcmVkaXMvMCcKICAgICAgLSBQRU5QT1RfQVNTRVRTX1NUT1JBR0VfQkFDS0VORD1hc3NldHMtZnMKICAgICAgLSBQRU5QT1RfU1RPUkFHRV9BU1NFVFNfRlNfRElSRUNUT1JZPS9vcHQvZGF0YS9hc3NldHMKICAgICAgLSAnUEVOUE9UX1RFTEVNRVRSWV9FTkFCTEVEPSR7UEVOUE9UX1RFTEVNRVRSWV9FTkFCTEVEOi1mYWxzZX0nCiAgICAgIC0gJ1BFTlBPVF9TTVRQX0RFRkFVTFRfRlJPTT0ke1BFTlBPVF9TTVRQX0RFRkFVTFRfRlJPTTotbm8tcmVwbHlAZXhhbXBsZS5jb219JwogICAgICAtICdQRU5QT1RfU01UUF9ERUZBVUxUX1JFUExZX1RPPSR7UEVOUE9UX1NNVFBfREVGQVVMVF9SRVBMWV9UTzotbm8tcmVwbHlAZXhhbXBsZS5jb219JwogICAgICAtICdQRU5QT1RfU01UUF9IT1NUPSR7UEVOUE9UX1NNVFBfSE9TVDotbWFpbHBpdH0nCiAgICAgIC0gJ1BFTlBPVF9TTVRQX1BPUlQ9JHtQRU5QT1RfU01UUF9QT1JUOi0xMDI1fScKICAgICAgLSAnUEVOUE9UX1NNVFBfVVNFUk5BTUU9JHtQRU5QT1RfU01UUF9VU0VSTkFNRTotcGVucG90fScKICAgICAgLSAnUEVOUE9UX1NNVFBfUEFTU1dPUkQ9JHtQRU5QT1RfU01UUF9QQVNTV09SRDotcGVucG90fScKICAgICAgLSAnUEVOUE9UX1NNVFBfVExTPSR7UEVOUE9UX1NNVFBfVExTOi1mYWxzZX0nCiAgICAgIC0gJ1BFTlBPVF9TTVRQX1NTTD0ke1BFTlBPVF9TTVRQX1NTTDotZmFsc2V9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG5vZGUKICAgICAgICAtICctZScKICAgICAgICAtICJyZXF1aXJlKCdodHRwJykuZ2V0KHtob3N0OicxMjcuMC4wLjEnLCBwb3J0OjYwNjAsIHBhdGg6Jy9yZWFkeXonfSwgcmVzID0+IHByb2Nlc3MuZXhpdChyZXMuc3RhdHVzQ29kZT09PTIwMCA/IDAgOiAxKSkub24oJ2Vycm9yJywgKCkgPT4gcHJvY2Vzcy5leGl0KDEpKTsiCiAgICAgIGludGVydmFsOiAxMHMKICAgICAgdGltZW91dDogMzBzCiAgICAgIHJldHJpZXM6IDE1CiAgcGVucG90LWV4cG9ydGVyOgogICAgaW1hZ2U6ICdwZW5wb3RhcHAvZXhwb3J0ZXI6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUEVOUE9UX1BVQkxJQ19VUkk9JFNFUlZJQ0VfVVJMX0ZST05URU5EXzgwODAKICAgICAgLSAnUEVOUE9UX1JFRElTX1VSST1yZWRpczovL3JlZGlzLzAnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6NjA2MS9yZWFkeXonCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBtYWlscGl0OgogICAgaW1hZ2U6ICdheGxsZW50L21haWxwaXQ6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfTUFJTFBJVF84MDI1CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gL21haWxwaXQKICAgICAgICAtIHJlYWR5egogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE1JwogICAgdm9sdW1lczoKICAgICAgLSAncGVucG90LXBvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19JTklUREJfQVJHUz0tLWRhdGEtY2hlY2tzdW1zCiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotcGVucG90fScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6Ny1hbHBpbmUnCiAgICBjb21tYW5kOiAncmVkaXMtc2VydmVyIC0tYXBwZW5kb25seSB5ZXMnCiAgICB2b2x1bWVzOgogICAgICAtICdwZW5wb3QtcmVkaXMtZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "penpot",
+ "design",
+ "prototyping",
+ "figma",
+ "open",
+ "source"
+ ],
+ "logo": "svgs/penpot.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "pgbackweb": {
+ "documentation": "https://github.com/eduardolat/pgbackweb?utm_source=coolify.io",
+ "slogan": "Effortless PostgreSQL backups with a user-friendly web interface!",
+ "compose": "c2VydmljZXM6CiAgcGdiYWNrd2ViOgogICAgaW1hZ2U6ICdlZHVhcmRvbGF0L3BnYmFja3dlYjpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdwZ2JhY2t3ZWJfYmFja3VwczovYmFja3VwcycKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1BHQkFDS1dFQl84MDg1CiAgICAgIC0gJ1BCV19FTkNSWVBUSU9OX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfUEdCQUNLV0VCfScKICAgICAgLSAnUEJXX1BPU1RHUkVTX0NPTk5fU1RSSU5HPXBvc3RncmVzcWw6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREI6LXBnYmFja3dlYi1kYn0/c3NsbW9kZT1kaXNhYmxlJwogICAgICAtICdUWj0ke1RJTUVfWk9ORTotVVRDfScKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBleGNsdWRlX2Zyb21faGM6IHRydWUKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTcnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LXBnYmFja3dlYi1kYn0nCiAgICB2b2x1bWVzOgogICAgICAtICdwZ2JhY2t3ZWJfcG9zdGdyZXNfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9IC1kIHBnYmFja3dlYicKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDUK",
+ "tags": [
+ "backup",
+ "postgresql",
+ "web-interface"
+ ],
+ "logo": "svgs/pgbackweb.svg",
+ "minversion": "0.0.0",
+ "port": "8085"
+ },
+ "phpmyadmin": {
+ "documentation": "https://phpmyadmin.net?utm_source=coolify.io",
+ "slogan": "phpMyAdmin is a web-based database management tool for administering your MySQL and MariaDB databases through a user-friendly interface.",
+ "compose": "c2VydmljZXM6CiAgcGhwbXlhZG1pbjoKICAgIGltYWdlOiAnbHNjci5pby9saW51eHNlcnZlci9waHBteWFkbWluOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1BIUE1ZQURNSU4KICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSBUWj1FdXJvcGUvTWFkcmlkCiAgICAgIC0gUE1BX0FSQklUUkFSWT0xCiAgICAgIC0gUE1BX0FCU09MVVRFX1VSST0kU0VSVklDRV9VUkxfUEhQTVlBRE1JTgogICAgdm9sdW1lczoKICAgICAgLSAncGhwbXlhZG1pbi1jb25maWc6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "database management"
+ ],
+ "logo": "svgs/phpmyadmin.svg",
+ "minversion": "0.0.0"
+ },
+ "pi-hole": {
+ "documentation": "https://pi-hole.net/?utm_source=coolify.io",
+ "slogan": "Network-wide Ad Blocking",
+ "compose": "c2VydmljZXM6CiAgcGlob2xlOgogICAgaW1hZ2U6ICdwaWhvbGUvcGlob2xlOmxhdGVzdCcKICAgIHBvcnRzOgogICAgICAtICc1Mzo1My90Y3AnCiAgICAgIC0gJzUzOjUzL3VkcCcKICAgICAgLSAnNjc6NjcvdWRwJwogICAgICAtICcxMjM6MTIzL3VkcCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1BJSE9MRV84MAogICAgICAtICdUWj0ke1RaOi1FdXJvcGUvTG9uZG9ufScKICAgICAgLSAnRlRMQ09ORl93ZWJzZXJ2ZXJfYXBpX3Bhc3N3b3JkPSR7U0VSVklDRV9QQVNTV09SRF9QSUhPTEV9JwogICAgICAtICdGVExDT05GX2Ruc19saXN0ZW5pbmdNb2RlPSR7RlRMQ09ORl9kbnNfbGlzdGVuaW5nTW9kZTotYWxsfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3BpaG9sZS1kYXRhOi9ldGMvcGlob2xlJwogICAgY2FwX2FkZDoKICAgICAgLSBORVRfQURNSU4KICAgICAgLSBTWVNfVElNRQo=",
+ "tags": [
+ "ad-block",
+ "dns",
+ "sinkhole",
+ "ntp",
+ "dhcp"
+ ],
+ "logo": "svgs/pihole.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "pingvinshare-with-clamav": {
+ "documentation": "https://github.com/stonith404/pingvin-share?utm_source=coolify.io",
+ "slogan": "A self-hosted file sharing platform that combines lightness and beauty, perfect for seamless and efficient file sharing.",
+ "compose": "c2VydmljZXM6CiAgcGluZ3ZpbnNoYXJlOgogICAgaW1hZ2U6IGdoY3IuaW8vc3Rvbml0aDQwNC9waW5ndmluLXNoYXJlCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9QSU5HVklOU0hBUkVfMzAwMAogICAgICAtICdUUlVTVF9QUk9YWT0ke1RSVVNUX1BST1hZOi10cnVlfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bpbmd2aW5zaGFyZV9kYXRhOi9vcHQvYXBwL2JhY2tlbmQvZGF0YScKICAgICAgLSAncGluZ3ZpbnNoYXJlX2ltYWdlczovb3B0L2FwcC9mcm9udGVuZC9wdWJsaWMvaW1nJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC0tcXVpZXQgLS10cmllcz0xIC0tc3BpZGVyIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGkvaGVhbHRoIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogICAgZGVwZW5kc19vbjoKICAgICAgY2xhbWF2OgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgY2xhbWF2OgogICAgaW1hZ2U6IGNsYW1hdi9jbGFtYXYKICAgIHBsYXRmb3JtOiBsaW51eC9hbWQ2NAo=",
+ "tags": [
+ "self-hosted",
+ "file-sharing",
+ "files",
+ "cloud",
+ "sharing"
+ ],
+ "logo": "svgs/pingvinshare.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "pingvinshare": {
+ "documentation": "https://github.com/stonith404/pingvin-share?utm_source=coolify.io",
+ "slogan": "A self-hosted file sharing platform that combines lightness and beauty, perfect for seamless and efficient file sharing.",
+ "compose": "c2VydmljZXM6CiAgcGluZ3ZpbnNoYXJlOgogICAgaW1hZ2U6IGdoY3IuaW8vc3Rvbml0aDQwNC9waW5ndmluLXNoYXJlCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9QSU5HVklOU0hBUkVfMzAwMAogICAgICAtICdUUlVTVF9QUk9YWT0ke1RSVVNUX1BST1hZOi10cnVlfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bpbmd2aW5zaGFyZV9kYXRhOi9vcHQvYXBwL2JhY2tlbmQvZGF0YScKICAgICAgLSAncGluZ3ZpbnNoYXJlX2ltYWdlczovb3B0L2FwcC9mcm9udGVuZC9wdWJsaWMvaW1nJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC0tcXVpZXQgLS10cmllcz0xIC0tc3BpZGVyIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9hcGkvaGVhbHRoIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "self-hosted",
+ "file-sharing",
+ "files",
+ "cloud",
+ "sharing"
+ ],
+ "logo": "svgs/pingvinshare.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "plane": {
+ "documentation": "https://docs.plane.so/self-hosting/methods/docker-compose?utm_source=coolify.io",
+ "slogan": "The open source project management tool",
+ "compose": "eC1hcHAtZW52OgogIGVudmlyb25tZW50OgogICAgLSAnQVBQX1JFTEVBU0U9JHtBUFBfUkVMRUFTRTotdjAuMjUuMn0nCiAgICAtICdXRUJfVVJMPSR7U0VSVklDRV9VUkxfUExBTkV9JwogICAgLSAnREVCVUc9JHtERUJVRzotMH0nCiAgICAtICdDT1JTX0FMTE9XRURfT1JJR0lOUz0ke0NPUlNfQUxMT1dFRF9PUklHSU46LWh0dHA6Ly9sb2NhbGhvc3R9JwogICAgLSAnR1VOSUNPUk5fV09SS0VSUz0ke0dVTklDT1JOX1dPUktFUlM6LTF9JwogICAgLSBQR0hPU1Q9cGxhbmUtZGIKICAgIC0gUEdEQVRBQkFTRT1wbGFuZQogICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgIC0gUE9TVEdSRVNfREI9cGxhbmUKICAgIC0gUE9TVEdSRVNfUE9SVD01NDMyCiAgICAtIFBHREFUQT0vdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEKICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0BwbGFuZS1kYi9wbGFuZScKICAgIC0gUkVESVNfSE9TVD1wbGFuZS1yZWRpcwogICAgLSBSRURJU19QT1JUPTYzNzkKICAgIC0gJ1JFRElTX1VSTD0ke1JFRElTX1VSTDotcmVkaXM6Ly9wbGFuZS1yZWRpczo2Mzc5L30nCiAgICAtIFJBQkJJVE1RX0hPU1Q9cGxhbmUtbXEKICAgIC0gJ1JBQkJJVE1RX1BPUlQ9JHtSQUJCSVRNUV9QT1JUOi01NjcyfScKICAgIC0gJ1JBQkJJVE1RX0RFRkFVTFRfVVNFUj0ke1NFUlZJQ0VfVVNFUl9SQUJCSVRNUTotcGxhbmV9JwogICAgLSAnUkFCQklUTVFfREVGQVVMVF9QQVNTPSR7U0VSVklDRV9QQVNTV09SRF9SQUJCSVRNUTotcGxhbmV9JwogICAgLSAnUkFCQklUTVFfREVGQVVMVF9WSE9TVD0ke1JBQkJJVE1RX1ZIT1NUOi1wbGFuZX0nCiAgICAtICdSQUJCSVRNUV9WSE9TVD0ke1JBQkJJVE1RX1ZIT1NUOi1wbGFuZX0nCiAgICAtICdBTVFQX1VSTD1hbXFwOi8vJHtTRVJWSUNFX1VTRVJfUkFCQklUTVF9OiR7U0VSVklDRV9QQVNTV09SRF9SQUJCSVRNUX1AcGxhbmUtbXE6JHtSQUJCSVRNUV9QT1JUfS9wbGFuZScKICAgIC0gU0VDUkVUX0tFWT0kU0VSVklDRV9QQVNTV09SRF82NF9TRUNSRVRLRVkKICAgIC0gJ1VTRV9NSU5JTz0ke1VTRV9NSU5JTzotMX0nCiAgICAtICdBV1NfUkVHSU9OPSR7QVdTX1JFR0lPTn0nCiAgICAtIEFXU19BQ0NFU1NfS0VZX0lEPSRTRVJWSUNFX1VTRVJfTUlOSU8KICAgIC0gQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPSRTRVJWSUNFX1BBU1NXT1JEX01JTklPCiAgICAtICdBV1NfUzNfRU5EUE9JTlRfVVJMPSR7QVdTX1MzX0VORFBPSU5UX1VSTDotaHR0cDovL3BsYW5lLW1pbmlvOjkwMDB9JwogICAgLSAnQVdTX1MzX0JVQ0tFVF9OQU1FPSR7QVdTX1MzX0JVQ0tFVF9OQU1FOi11cGxvYWRzfScKICAgIC0gTUlOSU9fUk9PVF9VU0VSPSRTRVJWSUNFX1VTRVJfTUlOSU8KICAgIC0gTUlOSU9fUk9PVF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgLSAnQlVDS0VUX05BTUU9JHtCVUNLRVRfTkFNRTotdXBsb2Fkc30nCiAgICAtICdGSUxFX1NJWkVfTElNSVQ9JHtGSUxFX1NJWkVfTElNSVQ6LTUyNDI4ODB9JwogICAgLSAnQVBJX0JBU0VfVVJMPSR7QVBJX0JBU0VfVVJMOi1odHRwOi8vYXBpOjgwMDB9JwpzZXJ2aWNlczoKICBwcm94eToKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1BMQU5FCiAgICAgIC0gJ0ZJTEVfU0laRV9MSU1JVD0ke0ZJTEVfU0laRV9MSU1JVDotNTI0Mjg4MH0nCiAgICAgIC0gJ0JVQ0tFVF9OQU1FPSR7QlVDS0VUX05BTUU6LXVwbG9hZHN9JwogICAgaW1hZ2U6ICdtYWtlcGxhbmUvcGxhbmUtcHJveHk6JHtBUFBfUkVMRUFTRTotdjAuMjUuMX0nCiAgICBkZXBlbmRzX29uOgogICAgICAtIHdlYgogICAgICAtIGFwaQogICAgICAtIHNwYWNlCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICB3ZWI6CiAgICBpbWFnZTogJ21ha2VwbGFuZS9wbGFuZS1mcm9udGVuZDoke0FQUF9SRUxFQVNFOi12MC4yNS4xfScKICAgIGNvbW1hbmQ6ICdub2RlIHdlYi9zZXJ2ZXIuanMgd2ViJwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcGkKICAgICAgLSB3b3JrZXIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiAnd2dldCAtcU8tIGh0dHA6Ly9gaG9zdG5hbWVgOjMwMDAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBzcGFjZToKICAgIGltYWdlOiAnbWFrZXBsYW5lL3BsYW5lLXNwYWNlOiR7QVBQX1JFTEVBU0U6LXYwLjI1LjF9JwogICAgY29tbWFuZDogJ25vZGUgc3BhY2Uvc2VydmVyLmpzIHNwYWNlJwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcGkKICAgICAgLSB3b3JrZXIKICAgICAgLSB3ZWIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBlY2hvCiAgICAgICAgLSAnaGV5IHdoYXRzIHVwJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1CiAgYWRtaW46CiAgICBpbWFnZTogJ21ha2VwbGFuZS9wbGFuZS1hZG1pbjoke0FQUF9SRUxFQVNFOi12MC4yNS4xfScKICAgIGNvbW1hbmQ6ICdub2RlIGFkbWluL3NlcnZlci5qcyBhZG1pbicKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBpCiAgICAgIC0gd2ViCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gZWNobwogICAgICAgIC0gJ2hleSB3aGF0cyB1cCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIGxpdmU6CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnQVBQX1JFTEVBU0U9JHtBUFBfUkVMRUFTRTotdjAuMjUuMn0nCiAgICAgIC0gJ1dFQl9VUkw9JHtTRVJWSUNFX1VSTF9QTEFORX0nCiAgICAgIC0gJ0RFQlVHPSR7REVCVUc6LTB9JwogICAgICAtICdDT1JTX0FMTE9XRURfT1JJR0lOUz0ke0NPUlNfQUxMT1dFRF9PUklHSU46LWh0dHA6Ly9sb2NhbGhvc3R9JwogICAgICAtICdHVU5JQ09STl9XT1JLRVJTPSR7R1VOSUNPUk5fV09SS0VSUzotMX0nCiAgICAgIC0gUEdIT1NUPXBsYW5lLWRiCiAgICAgIC0gUEdEQVRBQkFTRT1wbGFuZQogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfREI9cGxhbmUKICAgICAgLSBQT1NUR1JFU19QT1JUPTU0MzIKICAgICAgLSBQR0RBVEE9L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0BwbGFuZS1kYi9wbGFuZScKICAgICAgLSBSRURJU19IT1NUPXBsYW5lLXJlZGlzCiAgICAgIC0gUkVESVNfUE9SVD02Mzc5CiAgICAgIC0gJ1JFRElTX1VSTD0ke1JFRElTX1VSTDotcmVkaXM6Ly9wbGFuZS1yZWRpczo2Mzc5L30nCiAgICAgIC0gUkFCQklUTVFfSE9TVD1wbGFuZS1tcQogICAgICAtICdSQUJCSVRNUV9QT1JUPSR7UkFCQklUTVFfUE9SVDotNTY3Mn0nCiAgICAgIC0gJ1JBQkJJVE1RX0RFRkFVTFRfVVNFUj0ke1NFUlZJQ0VfVVNFUl9SQUJCSVRNUTotcGxhbmV9JwogICAgICAtICdSQUJCSVRNUV9ERUZBVUxUX1BBU1M9JHtTRVJWSUNFX1BBU1NXT1JEX1JBQkJJVE1ROi1wbGFuZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0RFRkFVTFRfVkhPU1Q9JHtSQUJCSVRNUV9WSE9TVDotcGxhbmV9JwogICAgICAtICdSQUJCSVRNUV9WSE9TVD0ke1JBQkJJVE1RX1ZIT1NUOi1wbGFuZX0nCiAgICAgIC0gJ0FNUVBfVVJMPWFtcXA6Ly8ke1NFUlZJQ0VfVVNFUl9SQUJCSVRNUX06JHtTRVJWSUNFX1BBU1NXT1JEX1JBQkJJVE1RfUBwbGFuZS1tcToke1JBQkJJVE1RX1BPUlR9L3BsYW5lJwogICAgICAtIFNFQ1JFVF9LRVk9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfU0VDUkVUS0VZCiAgICAgIC0gJ1VTRV9NSU5JTz0ke1VTRV9NSU5JTzotMX0nCiAgICAgIC0gJ0FXU19SRUdJT049JHtBV1NfUkVHSU9OfScKICAgICAgLSBBV1NfQUNDRVNTX0tFWV9JRD0kU0VSVklDRV9VU0VSX01JTklPCiAgICAgIC0gQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPSRTRVJWSUNFX1BBU1NXT1JEX01JTklPCiAgICAgIC0gJ0FXU19TM19FTkRQT0lOVF9VUkw9JHtBV1NfUzNfRU5EUE9JTlRfVVJMOi1odHRwOi8vcGxhbmUtbWluaW86OTAwMH0nCiAgICAgIC0gJ0FXU19TM19CVUNLRVRfTkFNRT0ke0FXU19TM19CVUNLRVRfTkFNRTotdXBsb2Fkc30nCiAgICAgIC0gTUlOSU9fUk9PVF9VU0VSPSRTRVJWSUNFX1VTRVJfTUlOSU8KICAgICAgLSBNSU5JT19ST09UX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX01JTklPCiAgICAgIC0gJ0JVQ0tFVF9OQU1FPSR7QlVDS0VUX05BTUU6LXVwbG9hZHN9JwogICAgICAtICdGSUxFX1NJWkVfTElNSVQ9JHtGSUxFX1NJWkVfTElNSVQ6LTUyNDI4ODB9JwogICAgICAtICdBUElfQkFTRV9VUkw9JHtBUElfQkFTRV9VUkw6LWh0dHA6Ly9hcGk6ODAwMH0nCiAgICBpbWFnZTogJ21ha2VwbGFuZS9wbGFuZS1saXZlOiR7QVBQX1JFTEVBU0U6LXYwLjI1LjF9JwogICAgY29tbWFuZDogJ25vZGUgbGl2ZS9kaXN0L3NlcnZlci5qcyBsaXZlJwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcGkKICAgICAgLSB3ZWIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBlY2hvCiAgICAgICAgLSAnaGV5IHdoYXRzIHVwJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1CiAgYXBpOgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0FQUF9SRUxFQVNFPSR7QVBQX1JFTEVBU0U6LXYwLjI1LjJ9JwogICAgICAtICdXRUJfVVJMPSR7U0VSVklDRV9VUkxfUExBTkV9JwogICAgICAtICdERUJVRz0ke0RFQlVHOi0wfScKICAgICAgLSAnQ09SU19BTExPV0VEX09SSUdJTlM9JHtDT1JTX0FMTE9XRURfT1JJR0lOOi1odHRwOi8vbG9jYWxob3N0fScKICAgICAgLSAnR1VOSUNPUk5fV09SS0VSUz0ke0dVTklDT1JOX1dPUktFUlM6LTF9JwogICAgICAtIFBHSE9TVD1wbGFuZS1kYgogICAgICAtIFBHREFUQUJBU0U9cGxhbmUKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX0RCPXBsYW5lCiAgICAgIC0gUE9TVEdSRVNfUE9SVD01NDMyCiAgICAgIC0gUEdEQVRBPS92YXIvbGliL3Bvc3RncmVzcWwvZGF0YQogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcGxhbmUtZGIvcGxhbmUnCiAgICAgIC0gUkVESVNfSE9TVD1wbGFuZS1yZWRpcwogICAgICAtIFJFRElTX1BPUlQ9NjM3OQogICAgICAtICdSRURJU19VUkw9JHtSRURJU19VUkw6LXJlZGlzOi8vcGxhbmUtcmVkaXM6NjM3OS99JwogICAgICAtIFJBQkJJVE1RX0hPU1Q9cGxhbmUtbXEKICAgICAgLSAnUkFCQklUTVFfUE9SVD0ke1JBQkJJVE1RX1BPUlQ6LTU2NzJ9JwogICAgICAtICdSQUJCSVRNUV9ERUZBVUxUX1VTRVI9JHtTRVJWSUNFX1VTRVJfUkFCQklUTVE6LXBsYW5lfScKICAgICAgLSAnUkFCQklUTVFfREVGQVVMVF9QQVNTPSR7U0VSVklDRV9QQVNTV09SRF9SQUJCSVRNUTotcGxhbmV9JwogICAgICAtICdSQUJCSVRNUV9ERUZBVUxUX1ZIT1NUPSR7UkFCQklUTVFfVkhPU1Q6LXBsYW5lfScKICAgICAgLSAnUkFCQklUTVFfVkhPU1Q9JHtSQUJCSVRNUV9WSE9TVDotcGxhbmV9JwogICAgICAtICdBTVFQX1VSTD1hbXFwOi8vJHtTRVJWSUNFX1VTRVJfUkFCQklUTVF9OiR7U0VSVklDRV9QQVNTV09SRF9SQUJCSVRNUX1AcGxhbmUtbXE6JHtSQUJCSVRNUV9QT1JUfS9wbGFuZScKICAgICAgLSBTRUNSRVRfS0VZPSRTRVJWSUNFX1BBU1NXT1JEXzY0X1NFQ1JFVEtFWQogICAgICAtICdVU0VfTUlOSU89JHtVU0VfTUlOSU86LTF9JwogICAgICAtICdBV1NfUkVHSU9OPSR7QVdTX1JFR0lPTn0nCiAgICAgIC0gQVdTX0FDQ0VTU19LRVlfSUQ9JFNFUlZJQ0VfVVNFUl9NSU5JTwogICAgICAtIEFXU19TRUNSRVRfQUNDRVNTX0tFWT0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgICAtICdBV1NfUzNfRU5EUE9JTlRfVVJMPSR7QVdTX1MzX0VORFBPSU5UX1VSTDotaHR0cDovL3BsYW5lLW1pbmlvOjkwMDB9JwogICAgICAtICdBV1NfUzNfQlVDS0VUX05BTUU9JHtBV1NfUzNfQlVDS0VUX05BTUU6LXVwbG9hZHN9JwogICAgICAtIE1JTklPX1JPT1RfVVNFUj0kU0VSVklDRV9VU0VSX01JTklPCiAgICAgIC0gTUlOSU9fUk9PVF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgICAtICdCVUNLRVRfTkFNRT0ke0JVQ0tFVF9OQU1FOi11cGxvYWRzfScKICAgICAgLSAnRklMRV9TSVpFX0xJTUlUPSR7RklMRV9TSVpFX0xJTUlUOi01MjQyODgwfScKICAgICAgLSAnQVBJX0JBU0VfVVJMPSR7QVBJX0JBU0VfVVJMOi1odHRwOi8vYXBpOjgwMDB9JwogICAgaW1hZ2U6ICdtYWtlcGxhbmUvcGxhbmUtYmFja2VuZDoke0FQUF9SRUxFQVNFOi12MC4yNS4xfScKICAgIGNvbW1hbmQ6IC4vYmluL2RvY2tlci1lbnRyeXBvaW50LWFwaS5zaAogICAgdm9sdW1lczoKICAgICAgLSAnbG9nc19hcGk6L2NvZGUvcGxhbmUvbG9ncycKICAgIGRlcGVuZHNfb246CiAgICAgIC0gcGxhbmUtZGIKICAgICAgLSBwbGFuZS1yZWRpcwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGVjaG8KICAgICAgICAtICdoZXkgd2hhdHMgdXAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICB3b3JrZXI6CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnQVBQX1JFTEVBU0U9JHtBUFBfUkVMRUFTRTotdjAuMjUuMn0nCiAgICAgIC0gJ1dFQl9VUkw9JHtTRVJWSUNFX1VSTF9QTEFORX0nCiAgICAgIC0gJ0RFQlVHPSR7REVCVUc6LTB9JwogICAgICAtICdDT1JTX0FMTE9XRURfT1JJR0lOUz0ke0NPUlNfQUxMT1dFRF9PUklHSU46LWh0dHA6Ly9sb2NhbGhvc3R9JwogICAgICAtICdHVU5JQ09STl9XT1JLRVJTPSR7R1VOSUNPUk5fV09SS0VSUzotMX0nCiAgICAgIC0gUEdIT1NUPXBsYW5lLWRiCiAgICAgIC0gUEdEQVRBQkFTRT1wbGFuZQogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfREI9cGxhbmUKICAgICAgLSBQT1NUR1JFU19QT1JUPTU0MzIKICAgICAgLSBQR0RBVEE9L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0BwbGFuZS1kYi9wbGFuZScKICAgICAgLSBSRURJU19IT1NUPXBsYW5lLXJlZGlzCiAgICAgIC0gUkVESVNfUE9SVD02Mzc5CiAgICAgIC0gJ1JFRElTX1VSTD0ke1JFRElTX1VSTDotcmVkaXM6Ly9wbGFuZS1yZWRpczo2Mzc5L30nCiAgICAgIC0gUkFCQklUTVFfSE9TVD1wbGFuZS1tcQogICAgICAtICdSQUJCSVRNUV9QT1JUPSR7UkFCQklUTVFfUE9SVDotNTY3Mn0nCiAgICAgIC0gJ1JBQkJJVE1RX0RFRkFVTFRfVVNFUj0ke1NFUlZJQ0VfVVNFUl9SQUJCSVRNUTotcGxhbmV9JwogICAgICAtICdSQUJCSVRNUV9ERUZBVUxUX1BBU1M9JHtTRVJWSUNFX1BBU1NXT1JEX1JBQkJJVE1ROi1wbGFuZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0RFRkFVTFRfVkhPU1Q9JHtSQUJCSVRNUV9WSE9TVDotcGxhbmV9JwogICAgICAtICdSQUJCSVRNUV9WSE9TVD0ke1JBQkJJVE1RX1ZIT1NUOi1wbGFuZX0nCiAgICAgIC0gJ0FNUVBfVVJMPWFtcXA6Ly8ke1NFUlZJQ0VfVVNFUl9SQUJCSVRNUX06JHtTRVJWSUNFX1BBU1NXT1JEX1JBQkJJVE1RfUBwbGFuZS1tcToke1JBQkJJVE1RX1BPUlR9L3BsYW5lJwogICAgICAtIFNFQ1JFVF9LRVk9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfU0VDUkVUS0VZCiAgICAgIC0gJ1VTRV9NSU5JTz0ke1VTRV9NSU5JTzotMX0nCiAgICAgIC0gJ0FXU19SRUdJT049JHtBV1NfUkVHSU9OfScKICAgICAgLSBBV1NfQUNDRVNTX0tFWV9JRD0kU0VSVklDRV9VU0VSX01JTklPCiAgICAgIC0gQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPSRTRVJWSUNFX1BBU1NXT1JEX01JTklPCiAgICAgIC0gJ0FXU19TM19FTkRQT0lOVF9VUkw9JHtBV1NfUzNfRU5EUE9JTlRfVVJMOi1odHRwOi8vcGxhbmUtbWluaW86OTAwMH0nCiAgICAgIC0gJ0FXU19TM19CVUNLRVRfTkFNRT0ke0FXU19TM19CVUNLRVRfTkFNRTotdXBsb2Fkc30nCiAgICAgIC0gTUlOSU9fUk9PVF9VU0VSPSRTRVJWSUNFX1VTRVJfTUlOSU8KICAgICAgLSBNSU5JT19ST09UX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX01JTklPCiAgICAgIC0gJ0JVQ0tFVF9OQU1FPSR7QlVDS0VUX05BTUU6LXVwbG9hZHN9JwogICAgICAtICdGSUxFX1NJWkVfTElNSVQ9JHtGSUxFX1NJWkVfTElNSVQ6LTUyNDI4ODB9JwogICAgICAtICdBUElfQkFTRV9VUkw9JHtBUElfQkFTRV9VUkw6LWh0dHA6Ly9hcGk6ODAwMH0nCiAgICBpbWFnZTogJ21ha2VwbGFuZS9wbGFuZS1iYWNrZW5kOiR7QVBQX1JFTEVBU0U6LXYwLjI1LjF9JwogICAgY29tbWFuZDogLi9iaW4vZG9ja2VyLWVudHJ5cG9pbnQtd29ya2VyLnNoCiAgICB2b2x1bWVzOgogICAgICAtICdsb2dzX3dvcmtlcjovY29kZS9wbGFuZS9sb2dzJwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcGkKICAgICAgLSBwbGFuZS1kYgogICAgICAtIHBsYW5lLXJlZGlzCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gZWNobwogICAgICAgIC0gJ2hleSB3aGF0cyB1cCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIGJlYXQtd29ya2VyOgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0FQUF9SRUxFQVNFPSR7QVBQX1JFTEVBU0U6LXYwLjI1LjJ9JwogICAgICAtICdXRUJfVVJMPSR7U0VSVklDRV9VUkxfUExBTkV9JwogICAgICAtICdERUJVRz0ke0RFQlVHOi0wfScKICAgICAgLSAnQ09SU19BTExPV0VEX09SSUdJTlM9JHtDT1JTX0FMTE9XRURfT1JJR0lOOi1odHRwOi8vbG9jYWxob3N0fScKICAgICAgLSAnR1VOSUNPUk5fV09SS0VSUz0ke0dVTklDT1JOX1dPUktFUlM6LTF9JwogICAgICAtIFBHSE9TVD1wbGFuZS1kYgogICAgICAtIFBHREFUQUJBU0U9cGxhbmUKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX0RCPXBsYW5lCiAgICAgIC0gUE9TVEdSRVNfUE9SVD01NDMyCiAgICAgIC0gUEdEQVRBPS92YXIvbGliL3Bvc3RncmVzcWwvZGF0YQogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcGxhbmUtZGIvcGxhbmUnCiAgICAgIC0gUkVESVNfSE9TVD1wbGFuZS1yZWRpcwogICAgICAtIFJFRElTX1BPUlQ9NjM3OQogICAgICAtICdSRURJU19VUkw9JHtSRURJU19VUkw6LXJlZGlzOi8vcGxhbmUtcmVkaXM6NjM3OS99JwogICAgICAtIFJBQkJJVE1RX0hPU1Q9cGxhbmUtbXEKICAgICAgLSAnUkFCQklUTVFfUE9SVD0ke1JBQkJJVE1RX1BPUlQ6LTU2NzJ9JwogICAgICAtICdSQUJCSVRNUV9ERUZBVUxUX1VTRVI9JHtTRVJWSUNFX1VTRVJfUkFCQklUTVE6LXBsYW5lfScKICAgICAgLSAnUkFCQklUTVFfREVGQVVMVF9QQVNTPSR7U0VSVklDRV9QQVNTV09SRF9SQUJCSVRNUTotcGxhbmV9JwogICAgICAtICdSQUJCSVRNUV9ERUZBVUxUX1ZIT1NUPSR7UkFCQklUTVFfVkhPU1Q6LXBsYW5lfScKICAgICAgLSAnUkFCQklUTVFfVkhPU1Q9JHtSQUJCSVRNUV9WSE9TVDotcGxhbmV9JwogICAgICAtICdBTVFQX1VSTD1hbXFwOi8vJHtTRVJWSUNFX1VTRVJfUkFCQklUTVF9OiR7U0VSVklDRV9QQVNTV09SRF9SQUJCSVRNUX1AcGxhbmUtbXE6JHtSQUJCSVRNUV9QT1JUfS9wbGFuZScKICAgICAgLSBTRUNSRVRfS0VZPSRTRVJWSUNFX1BBU1NXT1JEXzY0X1NFQ1JFVEtFWQogICAgICAtICdVU0VfTUlOSU89JHtVU0VfTUlOSU86LTF9JwogICAgICAtICdBV1NfUkVHSU9OPSR7QVdTX1JFR0lPTn0nCiAgICAgIC0gQVdTX0FDQ0VTU19LRVlfSUQ9JFNFUlZJQ0VfVVNFUl9NSU5JTwogICAgICAtIEFXU19TRUNSRVRfQUNDRVNTX0tFWT0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgICAtICdBV1NfUzNfRU5EUE9JTlRfVVJMPSR7QVdTX1MzX0VORFBPSU5UX1VSTDotaHR0cDovL3BsYW5lLW1pbmlvOjkwMDB9JwogICAgICAtICdBV1NfUzNfQlVDS0VUX05BTUU9JHtBV1NfUzNfQlVDS0VUX05BTUU6LXVwbG9hZHN9JwogICAgICAtIE1JTklPX1JPT1RfVVNFUj0kU0VSVklDRV9VU0VSX01JTklPCiAgICAgIC0gTUlOSU9fUk9PVF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgICAtICdCVUNLRVRfTkFNRT0ke0JVQ0tFVF9OQU1FOi11cGxvYWRzfScKICAgICAgLSAnRklMRV9TSVpFX0xJTUlUPSR7RklMRV9TSVpFX0xJTUlUOi01MjQyODgwfScKICAgICAgLSAnQVBJX0JBU0VfVVJMPSR7QVBJX0JBU0VfVVJMOi1odHRwOi8vYXBpOjgwMDB9JwogICAgaW1hZ2U6ICdtYWtlcGxhbmUvcGxhbmUtYmFja2VuZDoke0FQUF9SRUxFQVNFOi12MC4yNS4xfScKICAgIGNvbW1hbmQ6IC4vYmluL2RvY2tlci1lbnRyeXBvaW50LWJlYXQuc2gKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2xvZ3NfYmVhdC13b3JrZXI6L2NvZGUvcGxhbmUvbG9ncycKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBpCiAgICAgIC0gcGxhbmUtZGIKICAgICAgLSBwbGFuZS1yZWRpcwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGVjaG8KICAgICAgICAtICdoZXkgd2hhdHMgdXAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBtaWdyYXRvcjoKICAgIGVudmlyb25tZW50OgogICAgICAtICdBUFBfUkVMRUFTRT0ke0FQUF9SRUxFQVNFOi12MC4yNS4yfScKICAgICAgLSAnV0VCX1VSTD0ke1NFUlZJQ0VfVVJMX1BMQU5FfScKICAgICAgLSAnREVCVUc9JHtERUJVRzotMH0nCiAgICAgIC0gJ0NPUlNfQUxMT1dFRF9PUklHSU5TPSR7Q09SU19BTExPV0VEX09SSUdJTjotaHR0cDovL2xvY2FsaG9zdH0nCiAgICAgIC0gJ0dVTklDT1JOX1dPUktFUlM9JHtHVU5JQ09STl9XT1JLRVJTOi0xfScKICAgICAgLSBQR0hPU1Q9cGxhbmUtZGIKICAgICAgLSBQR0RBVEFCQVNFPXBsYW5lCiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19EQj1wbGFuZQogICAgICAtIFBPU1RHUkVTX1BPUlQ9NTQzMgogICAgICAtIFBHREFUQT0vdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzcWw6Ly8kU0VSVklDRV9VU0VSX1BPU1RHUkVTOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQHBsYW5lLWRiL3BsYW5lJwogICAgICAtIFJFRElTX0hPU1Q9cGxhbmUtcmVkaXMKICAgICAgLSBSRURJU19QT1JUPTYzNzkKICAgICAgLSAnUkVESVNfVVJMPSR7UkVESVNfVVJMOi1yZWRpczovL3BsYW5lLXJlZGlzOjYzNzkvfScKICAgICAgLSBSQUJCSVRNUV9IT1NUPXBsYW5lLW1xCiAgICAgIC0gJ1JBQkJJVE1RX1BPUlQ9JHtSQUJCSVRNUV9QT1JUOi01NjcyfScKICAgICAgLSAnUkFCQklUTVFfREVGQVVMVF9VU0VSPSR7U0VSVklDRV9VU0VSX1JBQkJJVE1ROi1wbGFuZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0RFRkFVTFRfUEFTUz0ke1NFUlZJQ0VfUEFTU1dPUkRfUkFCQklUTVE6LXBsYW5lfScKICAgICAgLSAnUkFCQklUTVFfREVGQVVMVF9WSE9TVD0ke1JBQkJJVE1RX1ZIT1NUOi1wbGFuZX0nCiAgICAgIC0gJ1JBQkJJVE1RX1ZIT1NUPSR7UkFCQklUTVFfVkhPU1Q6LXBsYW5lfScKICAgICAgLSAnQU1RUF9VUkw9YW1xcDovLyR7U0VSVklDRV9VU0VSX1JBQkJJVE1RfToke1NFUlZJQ0VfUEFTU1dPUkRfUkFCQklUTVF9QHBsYW5lLW1xOiR7UkFCQklUTVFfUE9SVH0vcGxhbmUnCiAgICAgIC0gU0VDUkVUX0tFWT0kU0VSVklDRV9QQVNTV09SRF82NF9TRUNSRVRLRVkKICAgICAgLSAnVVNFX01JTklPPSR7VVNFX01JTklPOi0xfScKICAgICAgLSAnQVdTX1JFR0lPTj0ke0FXU19SRUdJT059JwogICAgICAtIEFXU19BQ0NFU1NfS0VZX0lEPSRTRVJWSUNFX1VTRVJfTUlOSU8KICAgICAgLSBBV1NfU0VDUkVUX0FDQ0VTU19LRVk9JFNFUlZJQ0VfUEFTU1dPUkRfTUlOSU8KICAgICAgLSAnQVdTX1MzX0VORFBPSU5UX1VSTD0ke0FXU19TM19FTkRQT0lOVF9VUkw6LWh0dHA6Ly9wbGFuZS1taW5pbzo5MDAwfScKICAgICAgLSAnQVdTX1MzX0JVQ0tFVF9OQU1FPSR7QVdTX1MzX0JVQ0tFVF9OQU1FOi11cGxvYWRzfScKICAgICAgLSBNSU5JT19ST09UX1VTRVI9JFNFUlZJQ0VfVVNFUl9NSU5JTwogICAgICAtIE1JTklPX1JPT1RfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfTUlOSU8KICAgICAgLSAnQlVDS0VUX05BTUU9JHtCVUNLRVRfTkFNRTotdXBsb2Fkc30nCiAgICAgIC0gJ0ZJTEVfU0laRV9MSU1JVD0ke0ZJTEVfU0laRV9MSU1JVDotNTI0Mjg4MH0nCiAgICAgIC0gJ0FQSV9CQVNFX1VSTD0ke0FQSV9CQVNFX1VSTDotaHR0cDovL2FwaTo4MDAwfScKICAgIGltYWdlOiAnbWFrZXBsYW5lL3BsYW5lLWJhY2tlbmQ6JHtBUFBfUkVMRUFTRTotdjAuMjUuMX0nCiAgICByZXN0YXJ0OiAnbm8nCiAgICBjb21tYW5kOiAuL2Jpbi9kb2NrZXItZW50cnlwb2ludC1taWdyYXRvci5zaAogICAgdm9sdW1lczoKICAgICAgLSAnbG9nc19taWdyYXRvcjovY29kZS9wbGFuZS9sb2dzJwogICAgZGVwZW5kc19vbjoKICAgICAgLSBwbGFuZS1kYgogICAgICAtIHBsYW5lLXJlZGlzCiAgcGxhbmUtZGI6CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnQVBQX1JFTEVBU0U9JHtBUFBfUkVMRUFTRTotdjAuMjUuMn0nCiAgICAgIC0gJ1dFQl9VUkw9JHtTRVJWSUNFX1VSTF9QTEFORX0nCiAgICAgIC0gJ0RFQlVHPSR7REVCVUc6LTB9JwogICAgICAtICdDT1JTX0FMTE9XRURfT1JJR0lOUz0ke0NPUlNfQUxMT1dFRF9PUklHSU46LWh0dHA6Ly9sb2NhbGhvc3R9JwogICAgICAtICdHVU5JQ09STl9XT1JLRVJTPSR7R1VOSUNPUk5fV09SS0VSUzotMX0nCiAgICAgIC0gUEdIT1NUPXBsYW5lLWRiCiAgICAgIC0gUEdEQVRBQkFTRT1wbGFuZQogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfREI9cGxhbmUKICAgICAgLSBQT1NUR1JFU19QT1JUPTU0MzIKICAgICAgLSBQR0RBVEE9L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0BwbGFuZS1kYi9wbGFuZScKICAgICAgLSBSRURJU19IT1NUPXBsYW5lLXJlZGlzCiAgICAgIC0gUkVESVNfUE9SVD02Mzc5CiAgICAgIC0gJ1JFRElTX1VSTD0ke1JFRElTX1VSTDotcmVkaXM6Ly9wbGFuZS1yZWRpczo2Mzc5L30nCiAgICAgIC0gUkFCQklUTVFfSE9TVD1wbGFuZS1tcQogICAgICAtICdSQUJCSVRNUV9QT1JUPSR7UkFCQklUTVFfUE9SVDotNTY3Mn0nCiAgICAgIC0gJ1JBQkJJVE1RX0RFRkFVTFRfVVNFUj0ke1NFUlZJQ0VfVVNFUl9SQUJCSVRNUTotcGxhbmV9JwogICAgICAtICdSQUJCSVRNUV9ERUZBVUxUX1BBU1M9JHtTRVJWSUNFX1BBU1NXT1JEX1JBQkJJVE1ROi1wbGFuZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0RFRkFVTFRfVkhPU1Q9JHtSQUJCSVRNUV9WSE9TVDotcGxhbmV9JwogICAgICAtICdSQUJCSVRNUV9WSE9TVD0ke1JBQkJJVE1RX1ZIT1NUOi1wbGFuZX0nCiAgICAgIC0gJ0FNUVBfVVJMPWFtcXA6Ly8ke1NFUlZJQ0VfVVNFUl9SQUJCSVRNUX06JHtTRVJWSUNFX1BBU1NXT1JEX1JBQkJJVE1RfUBwbGFuZS1tcToke1JBQkJJVE1RX1BPUlR9L3BsYW5lJwogICAgICAtIFNFQ1JFVF9LRVk9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfU0VDUkVUS0VZCiAgICAgIC0gJ1VTRV9NSU5JTz0ke1VTRV9NSU5JTzotMX0nCiAgICAgIC0gJ0FXU19SRUdJT049JHtBV1NfUkVHSU9OfScKICAgICAgLSBBV1NfQUNDRVNTX0tFWV9JRD0kU0VSVklDRV9VU0VSX01JTklPCiAgICAgIC0gQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPSRTRVJWSUNFX1BBU1NXT1JEX01JTklPCiAgICAgIC0gJ0FXU19TM19FTkRQT0lOVF9VUkw9JHtBV1NfUzNfRU5EUE9JTlRfVVJMOi1odHRwOi8vcGxhbmUtbWluaW86OTAwMH0nCiAgICAgIC0gJ0FXU19TM19CVUNLRVRfTkFNRT0ke0FXU19TM19CVUNLRVRfTkFNRTotdXBsb2Fkc30nCiAgICAgIC0gTUlOSU9fUk9PVF9VU0VSPSRTRVJWSUNFX1VTRVJfTUlOSU8KICAgICAgLSBNSU5JT19ST09UX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX01JTklPCiAgICAgIC0gJ0JVQ0tFVF9OQU1FPSR7QlVDS0VUX05BTUU6LXVwbG9hZHN9JwogICAgICAtICdGSUxFX1NJWkVfTElNSVQ9JHtGSUxFX1NJWkVfTElNSVQ6LTUyNDI4ODB9JwogICAgICAtICdBUElfQkFTRV9VUkw9JHtBUElfQkFTRV9VUkw6LWh0dHA6Ly9hcGk6ODAwMH0nCiAgICBpbWFnZTogJ3Bvc3RncmVzOjE1LjctYWxwaW5lJwogICAgY29tbWFuZDogInBvc3RncmVzIC1jICdtYXhfY29ubmVjdGlvbnM9MTAwMCciCiAgICB2b2x1bWVzOgogICAgICAtICdwZ2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBsYW5lLXJlZGlzOgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0FQUF9SRUxFQVNFPSR7QVBQX1JFTEVBU0U6LXYwLjI1LjJ9JwogICAgICAtICdXRUJfVVJMPSR7U0VSVklDRV9VUkxfUExBTkV9JwogICAgICAtICdERUJVRz0ke0RFQlVHOi0wfScKICAgICAgLSAnQ09SU19BTExPV0VEX09SSUdJTlM9JHtDT1JTX0FMTE9XRURfT1JJR0lOOi1odHRwOi8vbG9jYWxob3N0fScKICAgICAgLSAnR1VOSUNPUk5fV09SS0VSUz0ke0dVTklDT1JOX1dPUktFUlM6LTF9JwogICAgICAtIFBHSE9TVD1wbGFuZS1kYgogICAgICAtIFBHREFUQUJBU0U9cGxhbmUKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX0RCPXBsYW5lCiAgICAgIC0gUE9TVEdSRVNfUE9SVD01NDMyCiAgICAgIC0gUEdEQVRBPS92YXIvbGliL3Bvc3RncmVzcWwvZGF0YQogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcGxhbmUtZGIvcGxhbmUnCiAgICAgIC0gUkVESVNfSE9TVD1wbGFuZS1yZWRpcwogICAgICAtIFJFRElTX1BPUlQ9NjM3OQogICAgICAtICdSRURJU19VUkw9JHtSRURJU19VUkw6LXJlZGlzOi8vcGxhbmUtcmVkaXM6NjM3OS99JwogICAgICAtIFJBQkJJVE1RX0hPU1Q9cGxhbmUtbXEKICAgICAgLSAnUkFCQklUTVFfUE9SVD0ke1JBQkJJVE1RX1BPUlQ6LTU2NzJ9JwogICAgICAtICdSQUJCSVRNUV9ERUZBVUxUX1VTRVI9JHtTRVJWSUNFX1VTRVJfUkFCQklUTVE6LXBsYW5lfScKICAgICAgLSAnUkFCQklUTVFfREVGQVVMVF9QQVNTPSR7U0VSVklDRV9QQVNTV09SRF9SQUJCSVRNUTotcGxhbmV9JwogICAgICAtICdSQUJCSVRNUV9ERUZBVUxUX1ZIT1NUPSR7UkFCQklUTVFfVkhPU1Q6LXBsYW5lfScKICAgICAgLSAnUkFCQklUTVFfVkhPU1Q9JHtSQUJCSVRNUV9WSE9TVDotcGxhbmV9JwogICAgICAtICdBTVFQX1VSTD1hbXFwOi8vJHtTRVJWSUNFX1VTRVJfUkFCQklUTVF9OiR7U0VSVklDRV9QQVNTV09SRF9SQUJCSVRNUX1AcGxhbmUtbXE6JHtSQUJCSVRNUV9QT1JUfS9wbGFuZScKICAgICAgLSBTRUNSRVRfS0VZPSRTRVJWSUNFX1BBU1NXT1JEXzY0X1NFQ1JFVEtFWQogICAgICAtICdVU0VfTUlOSU89JHtVU0VfTUlOSU86LTF9JwogICAgICAtICdBV1NfUkVHSU9OPSR7QVdTX1JFR0lPTn0nCiAgICAgIC0gQVdTX0FDQ0VTU19LRVlfSUQ9JFNFUlZJQ0VfVVNFUl9NSU5JTwogICAgICAtIEFXU19TRUNSRVRfQUNDRVNTX0tFWT0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgICAtICdBV1NfUzNfRU5EUE9JTlRfVVJMPSR7QVdTX1MzX0VORFBPSU5UX1VSTDotaHR0cDovL3BsYW5lLW1pbmlvOjkwMDB9JwogICAgICAtICdBV1NfUzNfQlVDS0VUX05BTUU9JHtBV1NfUzNfQlVDS0VUX05BTUU6LXVwbG9hZHN9JwogICAgICAtIE1JTklPX1JPT1RfVVNFUj0kU0VSVklDRV9VU0VSX01JTklPCiAgICAgIC0gTUlOSU9fUk9PVF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgICAtICdCVUNLRVRfTkFNRT0ke0JVQ0tFVF9OQU1FOi11cGxvYWRzfScKICAgICAgLSAnRklMRV9TSVpFX0xJTUlUPSR7RklMRV9TSVpFX0xJTUlUOi01MjQyODgwfScKICAgICAgLSAnQVBJX0JBU0VfVVJMPSR7QVBJX0JBU0VfVVJMOi1odHRwOi8vYXBpOjgwMDB9JwogICAgaW1hZ2U6ICd2YWxrZXkvdmFsa2V5OjcuMi41LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3JlZGlzZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBsYW5lLW1xOgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0FQUF9SRUxFQVNFPSR7QVBQX1JFTEVBU0U6LXYwLjI1LjJ9JwogICAgICAtICdXRUJfVVJMPSR7U0VSVklDRV9VUkxfUExBTkV9JwogICAgICAtICdERUJVRz0ke0RFQlVHOi0wfScKICAgICAgLSAnQ09SU19BTExPV0VEX09SSUdJTlM9JHtDT1JTX0FMTE9XRURfT1JJR0lOOi1odHRwOi8vbG9jYWxob3N0fScKICAgICAgLSAnR1VOSUNPUk5fV09SS0VSUz0ke0dVTklDT1JOX1dPUktFUlM6LTF9JwogICAgICAtIFBHSE9TVD1wbGFuZS1kYgogICAgICAtIFBHREFUQUJBU0U9cGxhbmUKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX0RCPXBsYW5lCiAgICAgIC0gUE9TVEdSRVNfUE9SVD01NDMyCiAgICAgIC0gUEdEQVRBPS92YXIvbGliL3Bvc3RncmVzcWwvZGF0YQogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcGxhbmUtZGIvcGxhbmUnCiAgICAgIC0gUkVESVNfSE9TVD1wbGFuZS1yZWRpcwogICAgICAtIFJFRElTX1BPUlQ9NjM3OQogICAgICAtICdSRURJU19VUkw9JHtSRURJU19VUkw6LXJlZGlzOi8vcGxhbmUtcmVkaXM6NjM3OS99JwogICAgICAtIFJBQkJJVE1RX0hPU1Q9cGxhbmUtbXEKICAgICAgLSAnUkFCQklUTVFfUE9SVD0ke1JBQkJJVE1RX1BPUlQ6LTU2NzJ9JwogICAgICAtICdSQUJCSVRNUV9ERUZBVUxUX1VTRVI9JHtTRVJWSUNFX1VTRVJfUkFCQklUTVE6LXBsYW5lfScKICAgICAgLSAnUkFCQklUTVFfREVGQVVMVF9QQVNTPSR7U0VSVklDRV9QQVNTV09SRF9SQUJCSVRNUTotcGxhbmV9JwogICAgICAtICdSQUJCSVRNUV9ERUZBVUxUX1ZIT1NUPSR7UkFCQklUTVFfVkhPU1Q6LXBsYW5lfScKICAgICAgLSAnUkFCQklUTVFfVkhPU1Q9JHtSQUJCSVRNUV9WSE9TVDotcGxhbmV9JwogICAgICAtICdBTVFQX1VSTD1hbXFwOi8vJHtTRVJWSUNFX1VTRVJfUkFCQklUTVF9OiR7U0VSVklDRV9QQVNTV09SRF9SQUJCSVRNUX1AcGxhbmUtbXE6JHtSQUJCSVRNUV9QT1JUfS9wbGFuZScKICAgICAgLSBTRUNSRVRfS0VZPSRTRVJWSUNFX1BBU1NXT1JEXzY0X1NFQ1JFVEtFWQogICAgICAtICdVU0VfTUlOSU89JHtVU0VfTUlOSU86LTF9JwogICAgICAtICdBV1NfUkVHSU9OPSR7QVdTX1JFR0lPTn0nCiAgICAgIC0gQVdTX0FDQ0VTU19LRVlfSUQ9JFNFUlZJQ0VfVVNFUl9NSU5JTwogICAgICAtIEFXU19TRUNSRVRfQUNDRVNTX0tFWT0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgICAtICdBV1NfUzNfRU5EUE9JTlRfVVJMPSR7QVdTX1MzX0VORFBPSU5UX1VSTDotaHR0cDovL3BsYW5lLW1pbmlvOjkwMDB9JwogICAgICAtICdBV1NfUzNfQlVDS0VUX05BTUU9JHtBV1NfUzNfQlVDS0VUX05BTUU6LXVwbG9hZHN9JwogICAgICAtIE1JTklPX1JPT1RfVVNFUj0kU0VSVklDRV9VU0VSX01JTklPCiAgICAgIC0gTUlOSU9fUk9PVF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgICAtICdCVUNLRVRfTkFNRT0ke0JVQ0tFVF9OQU1FOi11cGxvYWRzfScKICAgICAgLSAnRklMRV9TSVpFX0xJTUlUPSR7RklMRV9TSVpFX0xJTUlUOi01MjQyODgwfScKICAgICAgLSAnQVBJX0JBU0VfVVJMPSR7QVBJX0JBU0VfVVJMOi1odHRwOi8vYXBpOjgwMDB9JwogICAgaW1hZ2U6ICdyYWJiaXRtcTozLjEzLjYtbWFuYWdlbWVudC1hbHBpbmUnCiAgICByZXN0YXJ0OiBhbHdheXMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3JhYmJpdG1xX2RhdGE6L3Zhci9saWIvcmFiYml0bXEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogJ3JhYmJpdG1xLWRpYWdub3N0aWNzIC1xIHBpbmcnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMzBzCiAgICAgIHJldHJpZXM6IDMKICBwbGFuZS1taW5pbzoKICAgIGVudmlyb25tZW50OgogICAgICAtICdBUFBfUkVMRUFTRT0ke0FQUF9SRUxFQVNFOi12MC4yNS4yfScKICAgICAgLSAnV0VCX1VSTD0ke1NFUlZJQ0VfVVJMX1BMQU5FfScKICAgICAgLSAnREVCVUc9JHtERUJVRzotMH0nCiAgICAgIC0gJ0NPUlNfQUxMT1dFRF9PUklHSU5TPSR7Q09SU19BTExPV0VEX09SSUdJTjotaHR0cDovL2xvY2FsaG9zdH0nCiAgICAgIC0gJ0dVTklDT1JOX1dPUktFUlM9JHtHVU5JQ09STl9XT1JLRVJTOi0xfScKICAgICAgLSBQR0hPU1Q9cGxhbmUtZGIKICAgICAgLSBQR0RBVEFCQVNFPXBsYW5lCiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19EQj1wbGFuZQogICAgICAtIFBPU1RHUkVTX1BPUlQ9NTQzMgogICAgICAtIFBHREFUQT0vdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzcWw6Ly8kU0VSVklDRV9VU0VSX1BPU1RHUkVTOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQHBsYW5lLWRiL3BsYW5lJwogICAgICAtIFJFRElTX0hPU1Q9cGxhbmUtcmVkaXMKICAgICAgLSBSRURJU19QT1JUPTYzNzkKICAgICAgLSAnUkVESVNfVVJMPSR7UkVESVNfVVJMOi1yZWRpczovL3BsYW5lLXJlZGlzOjYzNzkvfScKICAgICAgLSBSQUJCSVRNUV9IT1NUPXBsYW5lLW1xCiAgICAgIC0gJ1JBQkJJVE1RX1BPUlQ9JHtSQUJCSVRNUV9QT1JUOi01NjcyfScKICAgICAgLSAnUkFCQklUTVFfREVGQVVMVF9VU0VSPSR7U0VSVklDRV9VU0VSX1JBQkJJVE1ROi1wbGFuZX0nCiAgICAgIC0gJ1JBQkJJVE1RX0RFRkFVTFRfUEFTUz0ke1NFUlZJQ0VfUEFTU1dPUkRfUkFCQklUTVE6LXBsYW5lfScKICAgICAgLSAnUkFCQklUTVFfREVGQVVMVF9WSE9TVD0ke1JBQkJJVE1RX1ZIT1NUOi1wbGFuZX0nCiAgICAgIC0gJ1JBQkJJVE1RX1ZIT1NUPSR7UkFCQklUTVFfVkhPU1Q6LXBsYW5lfScKICAgICAgLSAnQU1RUF9VUkw9YW1xcDovLyR7U0VSVklDRV9VU0VSX1JBQkJJVE1RfToke1NFUlZJQ0VfUEFTU1dPUkRfUkFCQklUTVF9QHBsYW5lLW1xOiR7UkFCQklUTVFfUE9SVH0vcGxhbmUnCiAgICAgIC0gU0VDUkVUX0tFWT0kU0VSVklDRV9QQVNTV09SRF82NF9TRUNSRVRLRVkKICAgICAgLSAnVVNFX01JTklPPSR7VVNFX01JTklPOi0xfScKICAgICAgLSAnQVdTX1JFR0lPTj0ke0FXU19SRUdJT059JwogICAgICAtIEFXU19BQ0NFU1NfS0VZX0lEPSRTRVJWSUNFX1VTRVJfTUlOSU8KICAgICAgLSBBV1NfU0VDUkVUX0FDQ0VTU19LRVk9JFNFUlZJQ0VfUEFTU1dPUkRfTUlOSU8KICAgICAgLSAnQVdTX1MzX0VORFBPSU5UX1VSTD0ke0FXU19TM19FTkRQT0lOVF9VUkw6LWh0dHA6Ly9wbGFuZS1taW5pbzo5MDAwfScKICAgICAgLSAnQVdTX1MzX0JVQ0tFVF9OQU1FPSR7QVdTX1MzX0JVQ0tFVF9OQU1FOi11cGxvYWRzfScKICAgICAgLSBNSU5JT19ST09UX1VTRVI9JFNFUlZJQ0VfVVNFUl9NSU5JTwogICAgICAtIE1JTklPX1JPT1RfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfTUlOSU8KICAgICAgLSAnQlVDS0VUX05BTUU9JHtCVUNLRVRfTkFNRTotdXBsb2Fkc30nCiAgICAgIC0gJ0ZJTEVfU0laRV9MSU1JVD0ke0ZJTEVfU0laRV9MSU1JVDotNTI0Mjg4MH0nCiAgICAgIC0gJ0FQSV9CQVNFX1VSTD0ke0FQSV9CQVNFX1VSTDotaHR0cDovL2FwaTo4MDAwfScKICAgIGltYWdlOiAnbWluaW8vbWluaW86bGF0ZXN0JwogICAgY29tbWFuZDogJ3NlcnZlciAvZXhwb3J0IC0tY29uc29sZS1hZGRyZXNzICI6OTA5MCInCiAgICB2b2x1bWVzOgogICAgICAtICd1cGxvYWRzOi9leHBvcnQnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gbWMKICAgICAgICAtIHJlYWR5CiAgICAgICAgLSBsb2NhbAogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "plane",
+ "project-management",
+ "tool",
+ "open",
+ "source",
+ "api",
+ "nextjs",
+ "redis",
+ "postgresql",
+ "django",
+ "pm"
+ ],
+ "logo": "svgs/plane.svg",
+ "minversion": "0.0.0"
+ },
+ "plex": {
+ "documentation": "https://docs.linuxserver.io/images/docker-plex/?utm_source=coolify.io",
+ "slogan": "Plex organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices.",
+ "compose": "c2VydmljZXM6CiAgcGxleDoKICAgIGltYWdlOiAnbHNjci5pby9saW51eHNlcnZlci9wbGV4OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1BMRVhfMzI0MDAKICAgICAgLSBfQVBQX1VSTD0kU0VSVklDRV9VUkxfUExFWAogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtICdUWj0ke1RaOi1BbWVyaWNhL1Rvcm9udG99JwogICAgICAtICdQTEVYX0NMQUlNPSR7UExFWF9DTEFJTX0nCiAgICB2b2x1bWVzOgogICAgICAtICdwbGV4LWNvbmZpZzovY29uZmlnJwogICAgICAtICdwbGV4LXR2Oi90dicKICAgICAgLSAncGxleC1tb3ZpZXM6L21vdmllcycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDozMjQwMC9pZGVudGl0eScKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "media",
+ "server",
+ "movies",
+ "tv",
+ "music"
+ ],
+ "logo": "svgs/plex.svg",
+ "minversion": "0.0.0",
+ "port": "32400"
+ },
+ "plunk": {
+ "documentation": "https://docs.useplunk.com/getting-started/introduction?utm_source=coolify.io",
+ "slogan": "Plunk, The Open-Source Email Platform for AWS",
+ "compose": "c2VydmljZXM6CiAgcGx1bms6CiAgICBpbWFnZTogJ2RyaWF1Zy9wbHVuazpsYXRlc3QnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9QTFVOS18zMDAwCiAgICAgIC0gJ1JFRElTX1VSTD1yZWRpczovL3JlZGlzOjYzNzknCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXNxbC9wbHVuay1kYj9zY2hlbWE9cHVibGljJwogICAgICAtICdKV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1RTRUNSRVR9JwogICAgICAtICdBV1NfUkVHSU9OPSR7QVdTX1JFR0lPTjo/fScKICAgICAgLSAnQVdTX0FDQ0VTU19LRVlfSUQ9JHtBV1NfQUNDRVNTX0tFWV9JRDo/fScKICAgICAgLSAnQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPSR7QVdTX1NFQ1JFVF9BQ0NFU1NfS0VZOj99JwogICAgICAtICdBV1NfU0VTX0NPTkZJR1VSQVRJT05fU0VUPSR7QVdTX1NFU19DT05GSUdVUkFUSU9OX1NFVDo/fScKICAgICAgLSAnTkVYVF9QVUJMSUNfQVBJX1VSST0ke1NFUlZJQ0VfVVJMX1BMVU5LfS9hcGknCiAgICAgIC0gJ0FQUF9VUkk9JHtTRVJWSUNFX1VSTF9QTFVOS30nCiAgICAgIC0gJ0FQSV9VUkk9JHtTRVJWSUNFX1VSTF9QTFVOS30vYXBpJwogICAgICAtICdESVNBQkxFX1NJR05VUFM9JHtESVNBQkxFX1NJR05VUFM6LUZhbHNlfScKICAgICAgLSBOT0RFX09QVElPTlM9LS1uby1uZXR3b3JrLWZhbWlseS1hdXRvc2VsZWN0aW9uCiAgICBlbnRyeXBvaW50OgogICAgICAtIC9hcHAvZW50cnkuc2gKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnKHdnZXQgLVMgLS1zcGlkZXIgaHR0cDovLzEyNy4wLjAuMTozMDAwL2FwaS9oZWFsdGggMj4mMSB8IGdyZXAgLXEgIkhUVFAvMS4xIFsxLTNdIiknCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LXBsdW5rLWRifScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3BsdW5rLXBvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjcuNC1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdwbHVuay1yZWRpcy1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gUElORwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDIwCg==",
+ "tags": [
+ "plunk",
+ "email",
+ "automation",
+ "aws"
+ ],
+ "logo": "svgs/plunk.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "pocketbase": {
+ "documentation": "https://pocketbase.io/docs/?utm_source=coolify.io",
+ "slogan": "Open Source backend for your next SaaS and Mobile app in 1 file",
+ "compose": "c2VydmljZXM6CiAgcG9ja2V0YmFzZToKICAgIGltYWdlOiAnZ2hjci5pby9jb29sbGFic2lvL3BvY2tldGJhc2U6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfUE9DS0VUQkFTRV84MDgwCiAgICB2b2x1bWVzOgogICAgICAtICdwb2NrZXRiYXNlLWRhdGE6L2FwcC9wYl9kYXRhJwogICAgICAtICdwb2NrZXRiYXNlLWhvb2tzOi9hcHAvcGJfaG9va3MnCg==",
+ "tags": [
+ "pocketbase",
+ "backend",
+ "saas",
+ "mobile",
+ "api"
+ ],
+ "logo": "svgs/pocketbase.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "portainer": {
+ "documentation": "https://docs.portainer.io?utm_source=coolify.io",
+ "slogan": "Portainer is a lightweight management UI for Docker",
+ "compose": "c2VydmljZXM6CiAgcG9ydGFpbmVyOgogICAgaW1hZ2U6ICdwb3J0YWluZXIvcG9ydGFpbmVyLWNlOmFscGluZScKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1BPUlRBSU5FUl85MDAwCiAgICB2b2x1bWVzOgogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaycKICAgICAgLSAncG9ydGFpbmVyX2RhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3dnZXQgLXFPLSBodHRwOi8vMTI3LjAuMC4xOjkwMDAvJwogICAgICBpbnRlcnZhbDogMjBzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "docker",
+ "management",
+ "ui"
+ ],
+ "logo": "svgs/portainer.png",
+ "minversion": "0.0.0",
+ "port": "9000"
+ },
+ "posthog": {
+ "documentation": "https://posthog.com?utm_source=coolify.io",
+ "slogan": "The single platform to analyze, test, observe, and deploy new features",
+ "compose": "c2VydmljZXM6CiAgZGI6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjEyLWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3Rob2ctcG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPXBvc3Rob2cKICAgICAgLSBQT1NUR1JFU19EQj1wb3N0aG9nCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSBwb3N0aG9nJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1CiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjYuMi43LWFscGluZScKICAgIGNvbW1hbmQ6ICdyZWRpcy1zZXJ2ZXIgLS1tYXhtZW1vcnktcG9saWN5IGFsbGtleXMtbHJ1IC0tbWF4bWVtb3J5IDIwMG1iJwogIGNsaWNraG91c2U6CiAgICBpbWFnZTogJ2NsaWNraG91c2UvY2xpY2tob3VzZS1zZXJ2ZXI6MjMuMTEuMi4xMS1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9pZGwvZXZlbnRzX2RlYWRfbGV0dGVyX3F1ZXVlLmpzb24KICAgICAgICB0YXJnZXQ6IC9pZGwvZXZlbnRzX2RlYWRfbGV0dGVyX3F1ZXVlLmpzb24KICAgICAgICBjb250ZW50OiAie1xuICBcIiRzY2hlbWFcIjogXCJodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL3NjaGVtYVwiLFxuICBcIiRpZFwiOiBcImZpbGU6Ly9wb3N0aG9nL2lkbC9ldmVudHNfZGVhZF9sZXR0ZXJfcXVldWUuanNvblwiLFxuICBcInRpdGxlXCI6IFwiZXZlbnRzX2RlYWRfbGV0dGVyX3F1ZXVlXCIsXG4gIFwiZGVzY3JpcHRpb25cIjogXCJFdmVudHMgdGhhdCBmYWlsZWQgdG8gYmUgdmFsaWRhdGVkIG9yIHByb2Nlc3NlZCBhbmQgYXJlIHNlbnQgdG8gdGhlIERMUVwiLFxuICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgIFwiaWRcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJ1dWlkIGZvciB0aGUgc3VibWlzc2lvblwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICB9LFxuICAgICAgXCJldmVudF91dWlkXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwidXVpZCBmb3IgdGhlIGV2ZW50XCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcImV2ZW50XCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiZXZlbnQgdHlwZVwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICB9LFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwcm9wZXJ0aWVzIGpzb24gb2JqZWN0XCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcImRpc3RpbmN0X2lkXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiUG9zdEhvZyBkaXN0aW5jdF9pZFwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICB9LFxuICAgICAgXCJ0ZWFtX2lkXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwidGVhbV9pZCAobWFwcyB0byB0aGUgcHJvamVjdCB1bmRlciB0aGUgb3JnYW5pemF0aW9uKVwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICB9LFxuICAgICAgXCJlbGVtZW50c19jaGFpblwiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlVzZWQgZm9yIGF1dG9jYXB0dXJlLiBET00gZWxlbWVudCBoaWVyYXJjaHlcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgfSxcbiAgICAgIFwiY3JlYXRlZF9hdFwiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlVzZWQgZm9yIGF1dG9jYXB0dXJlLiBET00gZWxlbWVudCBoaWVyYXJjaHlcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgICAgfSxcbiAgICAgIFwiaXBcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJJUCBBZGRyZXNzIG9mIHRoZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50XCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcInNpdGVfdXJsXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiU2l0ZSBVUkwgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudCB0aGUgZXZlbnRcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgfSxcbiAgICAgIFwibm93XCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGltZXN0YW1wIG9mIHRoZSBETFEgZXZlbnRcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgICAgfSxcbiAgICAgIFwicmF3X3BheWxvYWRcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJSYXcgcGF5bG9hZCBvZiB0aGUgZXZlbnQgdGhhdCBmYWlsZWQgdG8gYmUgY29uc3VtZWRcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgfSxcbiAgICAgIFwiZXJyb3JfdGltZXN0YW1wXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGltZXN0YW1wIHRoYXQgdGhlIGVycm9yIG9mIGluZ2VzdGlvbiBvY2N1cnJlZFwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICB9LFxuICAgICAgXCJlcnJvcl9sb2NhdGlvblwiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlNvdXJjZSBvZiBlcnJvciBpZiBrbm93blwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICB9LFxuICAgICAgXCJlcnJvclwiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkVycm9yIGlmIGtub3duXCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcInRhZ3NcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUYWdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXJyb3Igb3IgZXZlbnRcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJhcnJheVwiLFxuICAgICAgICAgIFwiaXRlbXNcIjoge1xuICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgfSxcbiAgXCJyZXF1aXJlZFwiOiBbXCJyYXdfcGF5bG9hZFwiXVxufVxuIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9pZGwvZXZlbnRzX2pzb24uanNvbgogICAgICAgIHRhcmdldDogL2lkbC9ldmVudHNfanNvbi5qc29uCiAgICAgICAgY29udGVudDogIntcbiAgXCIkc2NoZW1hXCI6IFwiaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWFcIixcbiAgXCIkaWRcIjogXCJmaWxlOi8vcG9zdGhvZy9pZGwvZXZlbnRzX2pzb24uanNvblwiLFxuICBcInRpdGxlXCI6IFwiZXZlbnRzX2pzb25cIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIkV2ZW50IHNjaGVtYSB0aGF0IGlzIGRlc3RpbmVkIGZvciBDbGlja0hvdXNlXCIsXG4gIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgXCJ1dWlkXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwidXVpZCBmb3IgdGhlIGV2ZW50XCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcImV2ZW50XCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiZXZlbnQgdHlwZVwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICB9LFxuICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwcm9wZXJ0aWVzIGpzb24gb2JqZWN0XCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcInRpbWVzdGFtcFwiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRpbWVzdGFtcCB0aGF0IHRoZSBldmVudCBvY2N1cnJlZFwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICB9LFxuICAgICAgXCJ0ZWFtX2lkXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwidGVhbV9pZCAobWFwcyB0byB0aGUgcHJvamVjdCB1bmRlciB0aGUgb3JnYW5pemF0aW9uKVwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICB9LFxuICAgICAgXCJkaXN0aW5jdF9pZFwiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlBvc3RIb2cgZGlzdGluY3RfaWRcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgfSxcbiAgICAgIFwiZWxlbWVudHNfY2hhaW5cIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJVc2VkIGZvciBhdXRvY2FwdHVyZS4gRE9NIGVsZW1lbnQgaGllcmFyY2h5XCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcImNyZWF0ZWRfYXRcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaW1lc3RhbXAgd2hlbiBldmVudCB3YXMgY3JlYXRlZFwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICB9LFxuICAgICAgXCJwZXJzb25faWRcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJVVUlEIGZvciB0aGUgYXNzb2NpYXRlZCBwZXJzb24gaWYgYXZhaWxhYmxlXCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcInBlcnNvbl9jcmVhdGVkX2F0XCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGltZXN0YW1wIGZvciB3aGVuIHRoZSBhc3NvY2lhdGVkIHBlcnNvbiB3YXMgY3JlYXRlZFwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICB9LFxuICAgICAgXCJwZXJzb25fcHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGVyc29uIEpTT04gb2JqZWN0XCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcImdyb3VwMF9wcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZ3JvdXAncyBwcm9wZXJ0aWVzXCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcImdyb3VwMV9wcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZ3JvdXAncyBwcm9wZXJ0aWVzXCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcImdyb3VwMl9wcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZ3JvdXAncyBwcm9wZXJ0aWVzXCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcImdyb3VwM19wcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZ3JvdXAncyBwcm9wZXJ0aWVzXCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcImdyb3VwNF9wcm9wZXJ0aWVzXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgZ3JvdXAncyBwcm9wZXJ0aWVzXCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcImdyb3VwMF9jcmVhdGVkX2F0XCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiR3JvdXAncyBjcmVhdGlvbiB0aW1lc3RhbXBcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgICAgfSxcbiAgICAgIFwiZ3JvdXAxX2NyZWF0ZWRfYXRcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJHcm91cCdzIGNyZWF0aW9uIHRpbWVzdGFtcFwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICB9LFxuICAgICAgXCJncm91cDJfY3JlYXRlZF9hdFwiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkdyb3VwJ3MgY3JlYXRpb24gdGltZXN0YW1wXCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCJcbiAgICAgIH0sXG4gICAgICBcImdyb3VwM19jcmVhdGVkX2F0XCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiR3JvdXAncyBjcmVhdGlvbiB0aW1lc3RhbXBcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgICAgfSxcbiAgICAgIFwiZ3JvdXA0X2NyZWF0ZWRfYXRcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJHcm91cCdzIGNyZWF0aW9uIHRpbWVzdGFtcFwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICB9XG4gIH0sXG4gIFwicmVxdWlyZWRcIjogW1widXVpZFwiLCBcImV2ZW50XCIsIFwicHJvcGVydGllc1wiLCBcInRpbWVzdGFtcFwiLCBcInRlYW1faWRcIl1cbn1cbiIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vaWRsL2dyb3Vwcy5qc29uCiAgICAgICAgdGFyZ2V0OiAvaWRsL2dyb3Vwcy5qc29uCiAgICAgICAgY29udGVudDogIntcbiAgXCIkc2NoZW1hXCI6IFwiaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWFcIixcbiAgXCIkaWRcIjogXCJmaWxlOi8vcG9zdGhvZy9pZGwvZ3JvdXBzLmpzb25cIixcbiAgXCJ0aXRsZVwiOiBcImdyb3Vwc1wiLFxuICBcImRlc2NyaXB0aW9uXCI6IFwiR3JvdXBzIHNjaGVtYSB0aGF0IGlzIGRlc3RpbmVkIGZvciBDbGlja0hvdXNlXCIsXG4gIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgXCJncm91cF90eXBlX2luZGV4XCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiR3JvdXAgdHlwZSBpbmRleFwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICB9LFxuICAgICAgXCJncm91cF9rZXlcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJHcm91cCBLZXlcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgfSxcbiAgICAgIFwiY3JlYXRlZF9hdFwiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkdyb3VwIGNyZWF0aW9uIHRpbWVzdGFtcFwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICB9LFxuICAgICAgXCJ0ZWFtX2lkXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGVhbSBJRCBhc3NvY2lhdGVkIHdpdGggZ3JvdXBcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgICAgfSxcbiAgICAgIFwiZ3JvdXBfcHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBncm91cCBKU09OIHByb3BlcnRpZXMgb2JqZWN0XCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH1cbiAgfSxcbiAgXCJyZXF1aXJlZFwiOiBbXCJncm91cF90eXBlX2luZGV4XCIsIFwiZ3JvdXBfa2V5XCIsIFwiY3JlYXRlZF9hdFwiLCBcInRlYW1faWRcIiwgXCJncm91cF9wcm9wZXJ0aWVzXCJdXG59XG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2lkbC9pZGwubWQKICAgICAgICB0YXJnZXQ6IC9pZGwvaWRsLm1kCiAgICAgICAgY29udGVudDogIiMgSURMIC0gSW50ZXJmYWNlIERlZmluaXRpb24gTGFuZ3VhZ2VcblxuVGhpcyBkaXJlY3RvcnkgaXMgcmVzcG9uc2libGUgZm9yIGRlZmluaW5nIHRoZSBzY2hlbWFzIG9mIHRoZSBkYXRhIGJldHdlZW4gc2VydmljZXMuXG5QcmltYXJpbHkgdGhpcyB3aWxsIGJlIGJldHdlZW4gc2VydmljZXMgYW5kIENsaWNrSG91c2UsIGJ1dCBjYW4gYmUgcmVhbGx5IGFueSB0aGluZyBhdCB0aGUgYm91bmRyeSBvZiBzZXJ2aWNlcy5cblxuVGhlIHJlYXNvbiB3aHkgd2UgZG8gdGhpcyBpcyBiZWNhdXNlIGl0IG1ha2VzIGdlbmVyYXRpbmcgY29kZSwgdmFsaWRhdGluZyBkYXRhLCBhbmQgdW5kZXJzdGFuZGluZyB0aGUgc3lzdGVtIGEgd2hvbGUgbG90IGVhc2llci4gV2UndmUgaGFkIGEgZmV3IGN1c3RvbWVycyByZXF1ZXN0IHRoaXMgb2YgdXMgZm9yIGVuZ2luZWVyaW5nIGEgZGVlcGVyIGludGVncmF0aW9uIHdpdGggdXMuXG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2lkbC9wZXJzb24uanNvbgogICAgICAgIHRhcmdldDogL2lkbC9wZXJzb24uanNvbgogICAgICAgIGNvbnRlbnQ6ICJ7XG4gIFwiJHNjaGVtYVwiOiBcImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1hXCIsXG4gIFwiJGlkXCI6IFwiZmlsZTovL3Bvc3Rob2cvaWRsL3BlcnNvbi5qc29uXCIsXG4gIFwidGl0bGVcIjogXCJwZXJzb25cIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIlBlcnNvbiBzY2hlbWEgdGhhdCBpcyBkZXN0aW5lZCBmb3IgQ2xpY2tIb3VzZVwiLFxuICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgIFwiaWRcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJVVUlEIGZvciB0aGUgcGVyc29uXCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgIH0sXG4gICAgICBcImNyZWF0ZWRfYXRcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJQZXJzb24gY3JlYXRpb24gdGltZXN0YW1wXCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCJcbiAgICAgIH0sXG4gICAgICBcInRlYW1faWRcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUZWFtIElEIGFzc29jaWF0ZWQgd2l0aCBwZXJzb25cIixcbiAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgICAgfSxcbiAgICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBwZXJzb24gSlNPTiBwcm9wZXJ0aWVzIG9iamVjdFwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICB9LFxuICAgICAgXCJpc19pZGVudGlmaWVkXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQm9vbGVhbiBpcyB0aGUgcGVyc29uIGlkZW50aWZpZWQ/XCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiXG4gICAgICB9LFxuICAgICAgXCJpc19kZWxldGVkXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQm9vbGVhbiBpcyB0aGUgcGVyc29uIGRlbGV0ZWQ/XCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbGVhblwiXG4gICAgICB9LFxuICAgICAgXCJ2ZXJzaW9uXCI6IHtcbiAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVmVyc2lvbiBmaWVsZCBmb3IgY29sbGFwc2luZyBsYXRlciAocHN1ZWRvLXRvbWJzdG9uZSlcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgICAgfVxuICB9LFxuICBcInJlcXVpcmVkXCI6IFtcImlkXCIsIFwiY3JlYXRlZF9hdFwiLCBcInRlYW1faWRcIiwgXCJwcm9wZXJ0aWVzXCIsIFwiaXNfaWRlbnRpZmllZFwiLCBcImlzX2RlbGV0ZWRcIiwgXCJ2ZXJzaW9uXCJdXG59XG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2lkbC9wZXJzb25fZGlzdGluY3RfaWQuanNvbgogICAgICAgIHRhcmdldDogL2lkbC9wZXJzb25fZGlzdGluY3RfaWQuanNvbgogICAgICAgIGNvbnRlbnQ6ICJ7XG4gIFwiJHNjaGVtYVwiOiBcImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1hXCIsXG4gIFwiJGlkXCI6IFwiZmlsZTovL3Bvc3Rob2cvaWRsL3BlcnNvbl9kaXN0aW5jdF9pZC5qc29uXCIsXG4gIFwidGl0bGVcIjogXCJwZXJzb25fZGlzdGluY3RfaWRcIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIlBlcnNvbiBkaXN0aW5jdCBpZCBzY2hlbWEgdGhhdCBpcyBkZXN0aW5lZCBmb3IgQ2xpY2tIb3VzZVwiLFxuICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgXCJwcm9wZXJ0aWVzXCI6IHtcbiAgICAgIFwiZGlzdGluY3RfaWRcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJVc2VyIHByb3ZpZGVkIElEIGZvciB0aGUgZGlzdGluY3QgdXNlclwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICB9LFxuICAgICAgXCJwZXJzb25faWRcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJVVUlEIG9mIHRoZSBwZXJzb25cIixcbiAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgfSxcbiAgICAgIFwidGVhbV9pZFwiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlRlYW0gSUQgYXNzb2NpYXRlZCB3aXRoIHBlcnNvbl9kaXN0aW5jdF9pZFwiLFxuICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICB9LFxuICAgICAgXCJfc2lnblwiOiB7XG4gICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlVzZWQgZm9yIGNvbGxhcHNpbmcgbGF0ZXIgZGlmZmVyZW50IHZlcnNpb25zIG9mIGEgZGlzdGluY3QgaWQgKHBzdWVkby10b21ic3RvbmUpXCIsXG4gICAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCJcbiAgICAgIH0sXG4gICAgICBcImlzX2RlbGV0ZWRcIjoge1xuICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJCb29sZWFuIGlzIHRoZSBwZXJzb24gZGlzdGluY3RfaWQgZGVsZXRlZD9cIixcbiAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCJcbiAgICAgIH1cbiAgfSxcbiAgXCJyZXF1aXJlZFwiOiBbXCJkaXN0aW5jdF9pZFwiLCBcInBlcnNvbl9pZFwiLCBcInRlYW1faWRcIiwgXCJfc2lnblwiLCBcImlzX2RlbGV0ZWRcIl1cbiB9XG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2lkbC9wZXJzb25fZGlzdGluY3RfaWQyLmpzb24KICAgICAgICB0YXJnZXQ6IC9pZGwvcGVyc29uX2Rpc3RpbmN0X2lkMi5qc29uCiAgICAgICAgY29udGVudDogIntcbiAgICBcIiRzY2hlbWFcIjogXCJodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL3NjaGVtYVwiLFxuICAgIFwiJGlkXCI6IFwiZmlsZTovL3Bvc3Rob2cvaWRsL3BlcnNvbl9kaXN0aW5jdF9pZDIuanNvblwiLFxuICAgIFwidGl0bGVcIjogXCJwZXJzb25fZGlzdGluY3RfaWQyXCIsXG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIlBlcnNvbiBkaXN0aW5jdCBpZDIgc2NoZW1hIHRoYXQgaXMgZGVzdGluZWQgZm9yIENsaWNrSG91c2VcIixcbiAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICBcInByb3BlcnRpZXNcIjoge1xuICAgICAgICBcImRpc3RpbmN0X2lkXCI6IHtcbiAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJVc2VyIHByb3ZpZGVkIElEIGZvciB0aGUgZGlzdGluY3QgdXNlclwiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJwZXJzb25faWRcIjoge1xuICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlVVSUQgb2YgdGhlIHBlcnNvblwiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJ0ZWFtX2lkXCI6IHtcbiAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUZWFtIElEIGFzc29jaWF0ZWQgd2l0aCBwZXJzb25fZGlzdGluY3RfaWRcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidmVyc2lvblwiOiB7XG4gICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVXNlZCBmb3IgY29sbGFwc2luZyBsYXRlciBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgYSBkaXN0aW5jdCBpZCAocHN1ZWRvLXRvbWJzdG9uZSlcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICAgIH0sXG4gICAgICAgIFwiaXNfZGVsZXRlZFwiOiB7XG4gICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiQm9vbGVhbiBpcyB0aGUgcGVyc29uIGRpc3RpbmN0X2lkIGRlbGV0ZWQ/XCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJib29sZWFuXCJcbiAgICAgICAgfVxuICAgIH0sXG4gICAgXCJyZXF1aXJlZFwiOiBbXCJkaXN0aW5jdF9pZFwiLCBcInBlcnNvbl9pZFwiLCBcInRlYW1faWRcIiwgXCJ2ZXJzaW9uXCIsIFwiaXNfZGVsZXRlZFwiXVxufVxuIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9pZGwvcGx1Z2luX2xvZ19lbnRyaWVzLmpzb24KICAgICAgICB0YXJnZXQ6IC9pZGwvcGx1Z2luX2xvZ19lbnRyaWVzLmpzb24KICAgICAgICBjb250ZW50OiAie1xuICAgIFwiJHNjaGVtYVwiOiBcImh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1hXCIsXG4gICAgXCIkaWRcIjogXCJmaWxlOi8vcG9zdGhvZy9pZGwvcGx1Z2luX2xvZ19lbnRyaWVzLmpzb25cIixcbiAgICBcInRpdGxlXCI6IFwicGx1Z2luX2xvZ19lbnRyaWVzXCIsXG4gICAgXCJkZXNjcmlwdGlvblwiOiBcIlBsdWdpbiBsb2cgZW50cmllcyB0aGF0IGFyZSBkZXN0aW5lZCBmb3IgQ2xpY2tIb3VzZVwiLFxuICAgIFwidHlwZVwiOiBcIm9iamVjdFwiLFxuICAgIFwicHJvcGVydGllc1wiOiB7XG4gICAgICAgIFwiaWRcIjoge1xuICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlVVSUQgZm9yIHRoZSBsb2cgZW50cnlcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGVhbV9pZFwiOiB7XG4gICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiVGVhbSBJRCBhc3NvY2lhdGVkIHdpdGggcGVyc29uX2Rpc3RpbmN0X2lkXCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgICAgICB9LFxuICAgICAgICBcInBsdWdpbl9pZFwiOiB7XG4gICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiUGx1Z2luIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgbG9nIGVudHJ5XCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJudW1iZXJcIlxuICAgICAgICB9LFxuICAgICAgICBcInBsdWdpbl9jb25maWdfaWRcIjoge1xuICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlBsdWdpbiBDb25maWcgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBsb2cgZW50cnlcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcIm51bWJlclwiXG4gICAgICAgIH0sXG4gICAgICAgIFwidGltZXN0YW1wXCI6IHtcbiAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJUaW1lc3RhbXAgZm9yIHdoZW4gdGhlIGxvZyBlbnRyeSB3YXMgY3JlYXRlZFwiLFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwibnVtYmVyXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJzb3VyY2VcIjoge1xuICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlNvdXJjZSBvZiB0aGUgbG9nIGVudHJ5XCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcInR5cGVcIjoge1xuICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkxvZyBlbnRyeSB0eXBlXCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1lc3NhZ2VcIjoge1xuICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIkxvZyBlbnRyeSBib2R5XCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9LFxuICAgICAgICBcImluc3RhbmNlX2lkXCI6IHtcbiAgICAgICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJVVUlEIG9mIHRoZSBpbnN0YW5jZSB0aGF0IGdlbmVyYXRlZCB0aGUgbG9nIGVudHJ5XCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIlxuICAgICAgICB9XG4gICAgfSxcbiAgICBcInJlcXVpcmVkXCI6IFtcbiAgICAgICAgXCJpZFwiLFxuICAgICAgICBcInRlYW1faWRcIixcbiAgICAgICAgXCJwbHVnaW5faWRcIixcbiAgICAgICAgXCJwbHVnaW5fY29uZmlnX2lkXCIsXG4gICAgICAgIFwidGltZXN0YW1wXCIsXG4gICAgICAgIFwic291cmNlXCIsXG4gICAgICAgIFwidHlwZVwiLFxuICAgICAgICBcIm1lc3NhZ2VcIixcbiAgICAgICAgXCJpbnN0YW5jZV9pZFwiXG4gICAgXVxufVxuIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9kb2NrZXIvY2xpY2tob3VzZS9kb2NrZXItZW50cnlwb2ludC1pbml0ZGIuZC9pbml0LWRiLnNoCiAgICAgICAgdGFyZ2V0OiAvZG9ja2VyLWVudHJ5cG9pbnQtaW5pdGRiLmQvaW5pdC1kYi5zaAogICAgICAgIGNvbnRlbnQ6ICIjIS9iaW4vYmFzaFxuc2V0IC1lXG5cbmNwIC1yIC9pZGwvKiAvdmFyL2xpYi9jbGlja2hvdXNlL2Zvcm1hdF9zY2hlbWFzL1xuIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9kb2NrZXIvY2xpY2tob3VzZS9jb25maWcueG1sCiAgICAgICAgdGFyZ2V0OiAvZXRjL2NsaWNraG91c2Utc2VydmVyL2NvbmZpZy54bWwKICAgICAgICBjb250ZW50OiAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz5cbjwhLS1cbiAgTk9URTogVXNlciBhbmQgcXVlcnkgbGV2ZWwgc2V0dGluZ3MgYXJlIHNldCB1cCBpbiBcInVzZXJzLnhtbFwiIGZpbGUuXG4gIElmIHlvdSBoYXZlIGFjY2lkZW50YWxseSBzcGVjaWZpZWQgdXNlci1sZXZlbCBzZXR0aW5ncyBoZXJlLCBzZXJ2ZXIgd29uJ3Qgc3RhcnQuXG4gIFlvdSBjYW4gZWl0aGVyIG1vdmUgdGhlIHNldHRpbmdzIHRvIHRoZSByaWdodCBwbGFjZSBpbnNpZGUgXCJ1c2Vycy54bWxcIiBmaWxlXG4gIG9yIGFkZCA8c2tpcF9jaGVja19mb3JfaW5jb3JyZWN0X3NldHRpbmdzPjE8L3NraXBfY2hlY2tfZm9yX2luY29ycmVjdF9zZXR0aW5ncz4gaGVyZS5cbi0tPlxuPHlhbmRleD5cbiAgICA8bG9nZ2VyPlxuICAgICAgICA8IS0tIFBvc3NpYmxlIGxldmVscyBbMV06XG5cbiAgICAgICAgICAtIG5vbmUgKHR1cm5zIG9mZiBsb2dnaW5nKVxuICAgICAgICAgIC0gZmF0YWxcbiAgICAgICAgICAtIGNyaXRpY2FsXG4gICAgICAgICAgLSBlcnJvclxuICAgICAgICAgIC0gd2FybmluZ1xuICAgICAgICAgIC0gbm90aWNlXG4gICAgICAgICAgLSBpbmZvcm1hdGlvblxuICAgICAgICAgIC0gZGVidWdcbiAgICAgICAgICAtIHRyYWNlXG4gICAgICAgICAgLSB0ZXN0IChub3QgZm9yIHByb2R1Y3Rpb24gdXNhZ2UpXG5cbiAgICAgICAgICAgIFsxXTpcbiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3BvY29wcm9qZWN0L3BvY28vYmxvYi9wb2NvLTEuOS40LXJlbGVhc2UvRm91bmRhdGlvbi9pbmNsdWRlL1BvY28vTG9nZ2VyLmgjTDEwNS1MMTE0XG4gICAgICAgIC0tPlxuICAgICAgICA8bGV2ZWw+dHJhY2U8L2xldmVsPlxuICAgICAgICA8bG9nPi92YXIvbG9nL2NsaWNraG91c2Utc2VydmVyL2NsaWNraG91c2Utc2VydmVyLmxvZzwvbG9nPlxuICAgICAgICA8ZXJyb3Jsb2c+L3Zhci9sb2cvY2xpY2tob3VzZS1zZXJ2ZXIvY2xpY2tob3VzZS1zZXJ2ZXIuZXJyLmxvZzwvZXJyb3Jsb2c+XG4gICAgICAgIDwhLS0gUm90YXRpb24gcG9saWN5XG4gICAgICAgICAgICBTZWVcbiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3BvY29wcm9qZWN0L3BvY28vYmxvYi9wb2NvLTEuOS40LXJlbGVhc2UvRm91bmRhdGlvbi9pbmNsdWRlL1BvY28vRmlsZUNoYW5uZWwuaCNMNTQtTDg1XG4gICAgICAgICAgLS0+XG4gICAgICAgIDxzaXplPjEwMDBNPC9zaXplPlxuICAgICAgICA8Y291bnQ+MTA8L2NvdW50PlxuICAgICAgICA8IS0tIDxjb25zb2xlPjE8L2NvbnNvbGU+IC0tPiA8IS0tIERlZmF1bHQgYmVoYXZpb3IgaXMgYXV0b2RldGVjdGlvbiAobG9nIHRvIGNvbnNvbGUgaWYgbm90IGRhZW1vbiBtb2RlXG4gICAgICAgIGFuZCBpcyB0dHkpIC0tPlxuXG4gICAgICAgIDwhLS0gUGVyIGxldmVsIG92ZXJyaWRlcyAobGVnYWN5KTpcblxuICAgICAgICBGb3IgZXhhbXBsZSB0byBzdXBwcmVzcyBsb2dnaW5nIG9mIHRoZSBDb25maWdSZWxvYWRlciB5b3UgY2FuIHVzZTpcbiAgICAgICAgTk9URTogbGV2ZWxzLmxvZ2dlciBpcyByZXNlcnZlZCwgc2VlIGJlbG93LlxuICAgICAgICAtLT5cbiAgICAgICAgPCEtLVxuICAgICAgICA8bGV2ZWxzPlxuICAgICAgICAgIDxDb25maWdSZWxvYWRlcj5ub25lPC9Db25maWdSZWxvYWRlcj5cbiAgICAgICAgPC9sZXZlbHM+XG4gICAgICAgIC0tPlxuXG4gICAgICAgIDwhLS0gUGVyIGxldmVsIG92ZXJyaWRlczpcblxuICAgICAgICBGb3IgZXhhbXBsZSB0byBzdXBwcmVzcyBsb2dnaW5nIG9mIHRoZSBSQkFDIGZvciBkZWZhdWx0IHVzZXIgeW91IGNhbiB1c2U6XG4gICAgICAgIChCdXQgcGxlYXNlIG5vdGUgdGhhdCB0aGUgbG9nZ2VyIG5hbWUgbWF5YmUgY2hhbmdlZCBmcm9tIHZlcnNpb24gdG8gdmVyc2lvbiwgZXZlbiBhZnRlciBtaW5vclxuICAgICAgICB1cGdyYWRlKVxuICAgICAgICAtLT5cbiAgICAgICAgPCEtLVxuICAgICAgICA8bGV2ZWxzPlxuICAgICAgICAgIDxsb2dnZXI+XG4gICAgICAgICAgICA8bmFtZT5Db250ZXh0QWNjZXNzIChkZWZhdWx0KTwvbmFtZT5cbiAgICAgICAgICAgIDxsZXZlbD5ub25lPC9sZXZlbD5cbiAgICAgICAgICA8L2xvZ2dlcj5cbiAgICAgICAgICA8bG9nZ2VyPlxuICAgICAgICAgICAgPG5hbWU+RGF0YWJhc2VPcmRpbmFyeSAodGVzdCk8L25hbWU+XG4gICAgICAgICAgICA8bGV2ZWw+bm9uZTwvbGV2ZWw+XG4gICAgICAgICAgPC9sb2dnZXI+XG4gICAgICAgIDwvbGV2ZWxzPlxuICAgICAgICAtLT5cbiAgICA8L2xvZ2dlcj5cblxuICAgIDwhLS0gQWRkIGhlYWRlcnMgdG8gcmVzcG9uc2UgaW4gb3B0aW9ucyByZXF1ZXN0LiBPUFRJT05TIG1ldGhvZCBpcyB1c2VkIGluIENPUlMgcHJlZmxpZ2h0XG4gICAgcmVxdWVzdHMuIC0tPlxuICAgIDwhLS0gSXQgaXMgb2ZmIGJ5IGRlZmF1bHQuIE5leHQgaGVhZGVycyBhcmUgb2JsaWdhdGUgZm9yIENPUlMuLS0+XG4gICAgPCEtLSBodHRwX29wdGlvbnNfcmVzcG9uc2U+XG4gICAgICAgIDxoZWFkZXI+XG4gICAgICAgICAgICA8bmFtZT5BY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW48L25hbWU+XG4gICAgICAgICAgICA8dmFsdWU+KjwvdmFsdWU+XG4gICAgICAgIDwvaGVhZGVyPlxuICAgICAgICA8aGVhZGVyPlxuICAgICAgICAgICAgPG5hbWU+QWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVyczwvbmFtZT5cbiAgICAgICAgICAgIDx2YWx1ZT5vcmlnaW4sIHgtcmVxdWVzdGVkLXdpdGg8L3ZhbHVlPlxuICAgICAgICA8L2hlYWRlcj5cbiAgICAgICAgPGhlYWRlcj5cbiAgICAgICAgICAgIDxuYW1lPkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHM8L25hbWU+XG4gICAgICAgICAgICA8dmFsdWU+UE9TVCwgR0VULCBPUFRJT05TPC92YWx1ZT5cbiAgICAgICAgPC9oZWFkZXI+XG4gICAgICAgIDxoZWFkZXI+XG4gICAgICAgICAgICA8bmFtZT5BY2Nlc3MtQ29udHJvbC1NYXgtQWdlPC9uYW1lPlxuICAgICAgICAgICAgPHZhbHVlPjg2NDAwPC92YWx1ZT5cbiAgICAgICAgPC9oZWFkZXI+XG4gICAgPC9odHRwX29wdGlvbnNfcmVzcG9uc2UgLS0+XG5cbiAgICA8IS0tIEl0IGlzIHRoZSBuYW1lIHRoYXQgd2lsbCBiZSBzaG93biBpbiB0aGUgY2xpY2tob3VzZS1jbGllbnQuXG4gICAgICAgIEJ5IGRlZmF1bHQsIGFueXRoaW5nIHdpdGggXCJwcm9kdWN0aW9uXCIgd2lsbCBiZSBoaWdobGlnaHRlZCBpbiByZWQgaW4gcXVlcnkgcHJvbXB0LlxuICAgIC0tPlxuICAgIDwhLS1kaXNwbGF5X25hbWU+cHJvZHVjdGlvbjwvZGlzcGxheV9uYW1lLS0+XG5cbiAgICA8IS0tIFBvcnQgZm9yIEhUVFAgQVBJLiBTZWUgYWxzbyAnaHR0cHNfcG9ydCcgZm9yIHNlY3VyZSBjb25uZWN0aW9ucy5cbiAgICAgICAgVGhpcyBpbnRlcmZhY2UgaXMgYWxzbyB1c2VkIGJ5IE9EQkMgYW5kIEpEQkMgZHJpdmVycyAoRGF0YUdyaXAsIERiZWF2ZXIsIC4uLilcbiAgICAgICAgYW5kIGJ5IG1vc3Qgb2Ygd2ViIGludGVyZmFjZXMgKGVtYmVkZGVkIFVJLCBHcmFmYW5hLCBSZWRhc2gsIC4uLikuXG4gICAgICAtLT5cbiAgICA8aHR0cF9wb3J0PjgxMjM8L2h0dHBfcG9ydD5cblxuICAgIDwhLS0gUG9ydCBmb3IgaW50ZXJhY3Rpb24gYnkgbmF0aXZlIHByb3RvY29sIHdpdGg6XG4gICAgICAgIC0gY2xpY2tob3VzZS1jbGllbnQgYW5kIG90aGVyIG5hdGl2ZSBDbGlja0hvdXNlIHRvb2xzIChjbGlja2hvdXNlLWJlbmNobWFyaywgY2xpY2tob3VzZS1jb3BpZXIpO1xuICAgICAgICAtIGNsaWNraG91c2Utc2VydmVyIHdpdGggb3RoZXIgY2xpY2tob3VzZS1zZXJ2ZXJzIGZvciBkaXN0cmlidXRlZCBxdWVyeSBwcm9jZXNzaW5nO1xuICAgICAgICAtIENsaWNrSG91c2UgZHJpdmVycyBhbmQgYXBwbGljYXRpb25zIHN1cHBvcnRpbmcgbmF0aXZlIHByb3RvY29sXG4gICAgICAgICh0aGlzIHByb3RvY29sIGlzIGFsc28gaW5mb3JtYWxseSBjYWxsZWQgYXMgXCJ0aGUgVENQIHByb3RvY29sXCIpO1xuICAgICAgICBTZWUgYWxzbyAndGNwX3BvcnRfc2VjdXJlJyBmb3Igc2VjdXJlIGNvbm5lY3Rpb25zLlxuICAgIC0tPlxuICAgIDx0Y3BfcG9ydD45MDAwPC90Y3BfcG9ydD5cblxuICAgIDwhLS0gQ29tcGF0aWJpbGl0eSB3aXRoIE15U1FMIHByb3RvY29sLlxuICAgICAgICBDbGlja0hvdXNlIHdpbGwgcHJldGVuZCB0byBiZSBNeVNRTCBmb3IgYXBwbGljYXRpb25zIGNvbm5lY3RpbmcgdG8gdGhpcyBwb3J0LlxuICAgIC0tPlxuICAgIDxteXNxbF9wb3J0PjkwMDQ8L215c3FsX3BvcnQ+XG5cbiAgICA8IS0tIENvbXBhdGliaWxpdHkgd2l0aCBQb3N0Z3JlU1FMIHByb3RvY29sLlxuICAgICAgICBDbGlja0hvdXNlIHdpbGwgcHJldGVuZCB0byBiZSBQb3N0Z3JlU1FMIGZvciBhcHBsaWNhdGlvbnMgY29ubmVjdGluZyB0byB0aGlzIHBvcnQuXG4gICAgLS0+XG4gICAgPHBvc3RncmVzcWxfcG9ydD45MDA1PC9wb3N0Z3Jlc3FsX3BvcnQ+XG5cbiAgICA8IS0tIEhUVFAgQVBJIHdpdGggVExTIChIVFRQUykuXG4gICAgICAgIFlvdSBoYXZlIHRvIGNvbmZpZ3VyZSBjZXJ0aWZpY2F0ZSB0byBlbmFibGUgdGhpcyBpbnRlcmZhY2UuXG4gICAgICAgIFNlZSB0aGUgb3BlblNTTCBzZWN0aW9uIGJlbG93LlxuICAgIC0tPlxuICAgIDxodHRwc19wb3J0Pjg0NDM8L2h0dHBzX3BvcnQ+XG5cbiAgICA8IS0tIE5hdGl2ZSBpbnRlcmZhY2Ugd2l0aCBUTFMuXG4gICAgICAgIFlvdSBoYXZlIHRvIGNvbmZpZ3VyZSBjZXJ0aWZpY2F0ZSB0byBlbmFibGUgdGhpcyBpbnRlcmZhY2UuXG4gICAgICAgIFNlZSB0aGUgb3BlblNTTCBzZWN0aW9uIGJlbG93LlxuICAgIC0tPlxuICAgIDx0Y3BfcG9ydF9zZWN1cmU+OTQ0MDwvdGNwX3BvcnRfc2VjdXJlPlxuXG4gICAgPCEtLSBOYXRpdmUgaW50ZXJmYWNlIHdyYXBwZWQgd2l0aCBQUk9YWXYxIHByb3RvY29sXG4gICAgICAgIFBST1hZdjEgaGVhZGVyIHNlbnQgZm9yIGV2ZXJ5IGNvbm5lY3Rpb24uXG4gICAgICAgIENsaWNrSG91c2Ugd2lsbCBleHRyYWN0IGluZm9ybWF0aW9uIGFib3V0IHByb3h5LWZvcndhcmRlZCBjbGllbnQgYWRkcmVzcyBmcm9tIHRoZSBoZWFkZXIuXG4gICAgLS0+XG4gICAgPCEtLSA8dGNwX3dpdGhfcHJveHlfcG9ydD45MDExPC90Y3Bfd2l0aF9wcm94eV9wb3J0PiAtLT5cblxuICAgIDwhLS0gUG9ydCBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHJlcGxpY2FzLiBVc2VkIGZvciBkYXRhIGV4Y2hhbmdlLlxuICAgICAgICBJdCBwcm92aWRlcyBsb3ctbGV2ZWwgZGF0YSBhY2Nlc3MgYmV0d2VlbiBzZXJ2ZXJzLlxuICAgICAgICBUaGlzIHBvcnQgc2hvdWxkIG5vdCBiZSBhY2Nlc3NpYmxlIGZyb20gdW50cnVzdGVkIG5ldHdvcmtzLlxuICAgICAgICBTZWUgYWxzbyAnaW50ZXJzZXJ2ZXJfaHR0cF9jcmVkZW50aWFscycuXG4gICAgICAgIERhdGEgdHJhbnNmZXJyZWQgb3ZlciBjb25uZWN0aW9ucyB0byB0aGlzIHBvcnQgc2hvdWxkIG5vdCBnbyB0aHJvdWdoIHVudHJ1c3RlZCBuZXR3b3Jrcy5cbiAgICAgICAgU2VlIGFsc28gJ2ludGVyc2VydmVyX2h0dHBzX3BvcnQnLlxuICAgICAgLS0+XG4gICAgPGludGVyc2VydmVyX2h0dHBfcG9ydD45MDA5PC9pbnRlcnNlcnZlcl9odHRwX3BvcnQ+XG5cbiAgICA8IS0tIFBvcnQgZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiByZXBsaWNhcyB3aXRoIFRMUy5cbiAgICAgICAgWW91IGhhdmUgdG8gY29uZmlndXJlIGNlcnRpZmljYXRlIHRvIGVuYWJsZSB0aGlzIGludGVyZmFjZS5cbiAgICAgICAgU2VlIHRoZSBvcGVuU1NMIHNlY3Rpb24gYmVsb3cuXG4gICAgICAgIFNlZSBhbHNvICdpbnRlcnNlcnZlcl9odHRwX2NyZWRlbnRpYWxzJy5cbiAgICAgIC0tPlxuICAgIDwhLS0gPGludGVyc2VydmVyX2h0dHBzX3BvcnQ+OTAxMDwvaW50ZXJzZXJ2ZXJfaHR0cHNfcG9ydD4gLS0+XG5cbiAgICA8IS0tIEhvc3RuYW1lIHRoYXQgaXMgdXNlZCBieSBvdGhlciByZXBsaWNhcyB0byByZXF1ZXN0IHRoaXMgc2VydmVyLlxuICAgICAgICBJZiBub3Qgc3BlY2lmaWVkLCB0aGFuIGl0IGlzIGRldGVybWluZWQgYW5hbG9nb3VzIHRvICdob3N0bmFtZSAtZicgY29tbWFuZC5cbiAgICAgICAgVGhpcyBzZXR0aW5nIGNvdWxkIGJlIHVzZWQgdG8gc3dpdGNoIHJlcGxpY2F0aW9uIHRvIGFub3RoZXIgbmV0d29yayBpbnRlcmZhY2VcbiAgICAgICAgKHRoZSBzZXJ2ZXIgbWF5IGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBuZXR3b3JrcyB2aWEgbXVsdGlwbGUgYWRkcmVzc2VzKVxuICAgICAgLS0+XG5cbiAgICA8IS0tXG4gICAgPGludGVyc2VydmVyX2h0dHBfaG9zdD5leGFtcGxlLnlhbmRleC5ydTwvaW50ZXJzZXJ2ZXJfaHR0cF9ob3N0PlxuICAgIC0tPlxuXG4gICAgPCEtLSBZb3UgY2FuIHNwZWNpZnkgY3JlZGVudGlhbHMgZm9yIGF1dGhlbnRoaWNhdGlvbiBiZXR3ZWVuIHJlcGxpY2FzLlxuICAgICAgICBUaGlzIGlzIHJlcXVpcmVkIHdoZW4gaW50ZXJzZXJ2ZXJfaHR0cHNfcG9ydCBpcyBhY2Nlc3NpYmxlIGZyb20gdW50cnVzdGVkIG5ldHdvcmtzLFxuICAgICAgICBhbmQgYWxzbyByZWNvbW1lbmRlZCB0byBhdm9pZCBTU1JGIGF0dGFja3MgZnJvbSBwb3NzaWJseSBjb21wcm9taXNlZCBzZXJ2aWNlcyBpbiB5b3VyIG5ldHdvcmsuXG4gICAgICAtLT5cbiAgICA8IS0tPGludGVyc2VydmVyX2h0dHBfY3JlZGVudGlhbHM+XG4gICAgICAgIDx1c2VyPmludGVyc2VydmVyPC91c2VyPlxuICAgICAgICA8cGFzc3dvcmQ+PC9wYXNzd29yZD5cbiAgICA8L2ludGVyc2VydmVyX2h0dHBfY3JlZGVudGlhbHM+LS0+XG5cbiAgICA8IS0tIExpc3RlbiBzcGVjaWZpZWQgYWRkcmVzcy5cbiAgICAgICAgVXNlIDo6ICh3aWxkY2FyZCBJUHY2IGFkZHJlc3MpLCBpZiB5b3Ugd2FudCB0byBhY2NlcHQgY29ubmVjdGlvbnMgYm90aCB3aXRoIElQdjQgYW5kIElQdjYgZnJvbVxuICAgIGV2ZXJ5d2hlcmUuXG4gICAgICAgIE5vdGVzOlxuICAgICAgICBJZiB5b3Ugb3BlbiBjb25uZWN0aW9ucyBmcm9tIHdpbGRjYXJkIGFkZHJlc3MsIG1ha2Ugc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nXG4gICAgbWVhc3VyZXMgYXBwbGllZDpcbiAgICAgICAgLSBzZXJ2ZXIgaXMgcHJvdGVjdGVkIGJ5IGZpcmV3YWxsIGFuZCBub3QgYWNjZXNzaWJsZSBmcm9tIHVudHJ1c3RlZCBuZXR3b3JrcztcbiAgICAgICAgLSBhbGwgdXNlcnMgYXJlIHJlc3RyaWN0ZWQgdG8gc3Vic2V0IG9mIG5ldHdvcmsgYWRkcmVzc2VzIChzZWUgdXNlcnMueG1sKTtcbiAgICAgICAgLSBhbGwgdXNlcnMgaGF2ZSBzdHJvbmcgcGFzc3dvcmRzLCBvbmx5IHNlY3VyZSAoVExTKSBpbnRlcmZhY2VzIGFyZSBhY2Nlc3NpYmxlLCBvciBjb25uZWN0aW9ucyBhcmVcbiAgICBvbmx5IG1hZGUgdmlhIFRMUyBpbnRlcmZhY2VzLlxuICAgICAgICAtIHVzZXJzIHdpdGhvdXQgcGFzc3dvcmQgaGF2ZSByZWFkb25seSBhY2Nlc3MuXG4gICAgICAgIFNlZSBhbHNvOiBodHRwczovL3d3dy5zaG9kYW4uaW8vc2VhcmNoP3F1ZXJ5PWNsaWNraG91c2VcbiAgICAgIC0tPlxuICAgIDwhLS0gPGxpc3Rlbl9ob3N0Pjo6PC9saXN0ZW5faG9zdD4gLS0+XG5cblxuICAgIDwhLS0gU2FtZSBmb3IgaG9zdHMgd2l0aG91dCBzdXBwb3J0IGZvciBJUHY2OiAtLT5cbiAgICA8IS0tIDxsaXN0ZW5faG9zdD4wLjAuMC4wPC9saXN0ZW5faG9zdD4gLS0+XG5cbiAgICA8IS0tIERlZmF1bHQgdmFsdWVzIC0gdHJ5IGxpc3RlbiBsb2NhbGhvc3Qgb24gSVB2NCBhbmQgSVB2Ni4gLS0+XG4gICAgPCEtLVxuICAgIDxsaXN0ZW5faG9zdD46OjE8L2xpc3Rlbl9ob3N0PlxuICAgIDxsaXN0ZW5faG9zdD4xMjcuMC4wLjE8L2xpc3Rlbl9ob3N0PlxuICAgIC0tPlxuXG4gICAgPCEtLSBEb24ndCBleGl0IGlmIElQdjYgb3IgSVB2NCBuZXR3b3JrcyBhcmUgdW5hdmFpbGFibGUgd2hpbGUgdHJ5aW5nIHRvIGxpc3Rlbi4gLS0+XG4gICAgPCEtLSA8bGlzdGVuX3RyeT4wPC9saXN0ZW5fdHJ5PiAtLT5cblxuICAgIDwhLS0gQWxsb3cgbXVsdGlwbGUgc2VydmVycyB0byBsaXN0ZW4gb24gdGhlIHNhbWUgYWRkcmVzczpwb3J0LiBUaGlzIGlzIG5vdCByZWNvbW1lbmRlZC5cbiAgICAgIC0tPlxuICAgIDwhLS0gPGxpc3Rlbl9yZXVzZV9wb3J0PjA8L2xpc3Rlbl9yZXVzZV9wb3J0PiAtLT5cblxuICAgIDwhLS0gPGxpc3Rlbl9iYWNrbG9nPjQwOTY8L2xpc3Rlbl9iYWNrbG9nPiAtLT5cblxuICAgIDxtYXhfY29ubmVjdGlvbnM+NDA5NjwvbWF4X2Nvbm5lY3Rpb25zPlxuXG4gICAgPCEtLSBGb3IgJ0Nvbm5lY3Rpb246IGtlZXAtYWxpdmUnIGluIEhUVFAgMS4xIC0tPlxuICAgIDxrZWVwX2FsaXZlX3RpbWVvdXQ+Mzwva2VlcF9hbGl2ZV90aW1lb3V0PlxuXG4gICAgPCEtLSBnUlBDIHByb3RvY29sIChzZWUgc3JjL1NlcnZlci9ncnBjX3Byb3Rvcy9jbGlja2hvdXNlX2dycGMucHJvdG8gZm9yIHRoZSBBUEkpIC0tPlxuICAgIDwhLS0gPGdycGNfcG9ydD45MTAwPC9ncnBjX3BvcnQ+IC0tPlxuICAgIDxncnBjPlxuICAgICAgICA8ZW5hYmxlX3NzbD5mYWxzZTwvZW5hYmxlX3NzbD5cblxuICAgICAgICA8IS0tIFRoZSBmb2xsb3dpbmcgdHdvIGZpbGVzIGFyZSB1c2VkIG9ubHkgaWYgZW5hYmxlX3NzbD0xIC0tPlxuICAgICAgICA8c3NsX2NlcnRfZmlsZT4vcGF0aC90by9zc2xfY2VydF9maWxlPC9zc2xfY2VydF9maWxlPlxuICAgICAgICA8c3NsX2tleV9maWxlPi9wYXRoL3RvL3NzbF9rZXlfZmlsZTwvc3NsX2tleV9maWxlPlxuXG4gICAgICAgIDwhLS0gV2hldGhlciBzZXJ2ZXIgd2lsbCByZXF1ZXN0IGNsaWVudCBmb3IgYSBjZXJ0aWZpY2F0ZSAtLT5cbiAgICAgICAgPHNzbF9yZXF1aXJlX2NsaWVudF9hdXRoPmZhbHNlPC9zc2xfcmVxdWlyZV9jbGllbnRfYXV0aD5cblxuICAgICAgICA8IS0tIFRoZSBmb2xsb3dpbmcgZmlsZSBpcyB1c2VkIG9ubHkgaWYgc3NsX3JlcXVpcmVfY2xpZW50X2F1dGg9MSAtLT5cbiAgICAgICAgPHNzbF9jYV9jZXJ0X2ZpbGU+L3BhdGgvdG8vc3NsX2NhX2NlcnRfZmlsZTwvc3NsX2NhX2NlcnRfZmlsZT5cblxuICAgICAgICA8IS0tIERlZmF1bHQgdHJhbnNwb3J0IGNvbXByZXNzaW9uIHR5cGUgKGNhbiBiZSBvdmVycmlkZGVuIGJ5IGNsaWVudCwgc2VlIHRoZVxuICAgICAgICB0cmFuc3BvcnRfY29tcHJlc3Npb25fdHlwZSBmaWVsZCBpbiBRdWVyeUluZm8pLlxuICAgICAgICAgICAgU3VwcG9ydGVkIGFsZ29yaXRobXM6IG5vbmUsIGRlZmxhdGUsIGd6aXAsIHN0cmVhbV9nemlwIC0tPlxuICAgICAgICA8dHJhbnNwb3J0X2NvbXByZXNzaW9uX3R5cGU+bm9uZTwvdHJhbnNwb3J0X2NvbXByZXNzaW9uX3R5cGU+XG5cbiAgICAgICAgPCEtLSBEZWZhdWx0IHRyYW5zcG9ydCBjb21wcmVzc2lvbiBsZXZlbC4gU3VwcG9ydGVkIGxldmVsczogMC4uMyAtLT5cbiAgICAgICAgPHRyYW5zcG9ydF9jb21wcmVzc2lvbl9sZXZlbD4wPC90cmFuc3BvcnRfY29tcHJlc3Npb25fbGV2ZWw+XG5cbiAgICAgICAgPCEtLSBTZW5kL3JlY2VpdmUgbWVzc2FnZSBzaXplIGxpbWl0cyBpbiBieXRlcy4gLTEgbWVhbnMgdW5saW1pdGVkIC0tPlxuICAgICAgICA8bWF4X3NlbmRfbWVzc2FnZV9zaXplPi0xPC9tYXhfc2VuZF9tZXNzYWdlX3NpemU+XG4gICAgICAgIDxtYXhfcmVjZWl2ZV9tZXNzYWdlX3NpemU+LTE8L21heF9yZWNlaXZlX21lc3NhZ2Vfc2l6ZT5cblxuICAgICAgICA8IS0tIEVuYWJsZSBpZiB5b3Ugd2FudCB2ZXJ5IGRldGFpbGVkIGxvZ3MgLS0+XG4gICAgICAgIDx2ZXJib3NlX2xvZ3M+ZmFsc2U8L3ZlcmJvc2VfbG9ncz5cbiAgICA8L2dycGM+XG5cbiAgICA8IS0tIFVzZWQgd2l0aCBodHRwc19wb3J0IGFuZCB0Y3BfcG9ydF9zZWN1cmUuIEZ1bGwgc3NsIG9wdGlvbnMgbGlzdDpcbiAgICBodHRwczovL2dpdGh1Yi5jb20vQ2xpY2tIb3VzZS1FeHRyYXMvcG9jby9ibG9iL21hc3Rlci9OZXRTU0xfT3BlblNTTC9pbmNsdWRlL1BvY28vTmV0L1NTTE1hbmFnZXIuaCNMNzEgLS0+XG4gICAgPG9wZW5TU0w+XG4gICAgICAgIDxzZXJ2ZXI+IDwhLS0gVXNlZCBmb3IgaHR0cHMgc2VydmVyIEFORCBzZWN1cmUgdGNwIHBvcnQgLS0+XG4gICAgICAgICAgICA8IS0tIG9wZW5zc2wgcmVxIC1zdWJqIFwiL0NOPWxvY2FsaG9zdFwiIC1uZXcgLW5ld2tleSByc2E6MjA0OCAtZGF5cyAzNjUgLW5vZGVzIC14NTA5XG4gICAgICAgICAgICAta2V5b3V0IC9ldGMvY2xpY2tob3VzZS1zZXJ2ZXIvc2VydmVyLmtleSAtb3V0IC9ldGMvY2xpY2tob3VzZS1zZXJ2ZXIvc2VydmVyLmNydCAtLT5cbiAgICAgICAgICAgIDxjZXJ0aWZpY2F0ZUZpbGU+L2V0Yy9jbGlja2hvdXNlLXNlcnZlci9zZXJ2ZXIuY3J0PC9jZXJ0aWZpY2F0ZUZpbGU+XG4gICAgICAgICAgICA8cHJpdmF0ZUtleUZpbGU+L2V0Yy9jbGlja2hvdXNlLXNlcnZlci9zZXJ2ZXIua2V5PC9wcml2YXRlS2V5RmlsZT5cbiAgICAgICAgICAgIDwhLS0gZGhwYXJhbXMgYXJlIG9wdGlvbmFsLiBZb3UgY2FuIGRlbGV0ZSB0aGUgPGRoUGFyYW1zRmlsZT4gZWxlbWVudC5cbiAgICAgICAgICAgICAgICBUbyBnZW5lcmF0ZSBkaHBhcmFtcywgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDpcbiAgICAgICAgICAgICAgICAgIG9wZW5zc2wgZGhwYXJhbSAtb3V0IC9ldGMvY2xpY2tob3VzZS1zZXJ2ZXIvZGhwYXJhbS5wZW0gNDA5NlxuICAgICAgICAgICAgICAgIE9ubHkgZmlsZSBmb3JtYXQgd2l0aCBCRUdJTiBESCBQQVJBTUVURVJTIGlzIHN1cHBvcnRlZC5cbiAgICAgICAgICAgICAgLS0+XG4gICAgICAgICAgICA8ZGhQYXJhbXNGaWxlPi9ldGMvY2xpY2tob3VzZS1zZXJ2ZXIvZGhwYXJhbS5wZW08L2RoUGFyYW1zRmlsZT5cbiAgICAgICAgICAgIDx2ZXJpZmljYXRpb25Nb2RlPm5vbmU8L3ZlcmlmaWNhdGlvbk1vZGU+XG4gICAgICAgICAgICA8bG9hZERlZmF1bHRDQUZpbGU+dHJ1ZTwvbG9hZERlZmF1bHRDQUZpbGU+XG4gICAgICAgICAgICA8Y2FjaGVTZXNzaW9ucz50cnVlPC9jYWNoZVNlc3Npb25zPlxuICAgICAgICAgICAgPGRpc2FibGVQcm90b2NvbHM+c3NsdjIsc3NsdjM8L2Rpc2FibGVQcm90b2NvbHM+XG4gICAgICAgICAgICA8cHJlZmVyU2VydmVyQ2lwaGVycz50cnVlPC9wcmVmZXJTZXJ2ZXJDaXBoZXJzPlxuICAgICAgICA8L3NlcnZlcj5cblxuICAgICAgICA8Y2xpZW50PiA8IS0tIFVzZWQgZm9yIGNvbm5lY3RpbmcgdG8gaHR0cHMgZGljdGlvbmFyeSBzb3VyY2UgYW5kIHNlY3VyZWQgWm9va2VlcGVyXG4gICAgICAgICAgICBjb21tdW5pY2F0aW9uIC0tPlxuICAgICAgICAgICAgPGxvYWREZWZhdWx0Q0FGaWxlPnRydWU8L2xvYWREZWZhdWx0Q0FGaWxlPlxuICAgICAgICAgICAgPGNhY2hlU2Vzc2lvbnM+dHJ1ZTwvY2FjaGVTZXNzaW9ucz5cbiAgICAgICAgICAgIDxkaXNhYmxlUHJvdG9jb2xzPnNzbHYyLHNzbHYzPC9kaXNhYmxlUHJvdG9jb2xzPlxuICAgICAgICAgICAgPHByZWZlclNlcnZlckNpcGhlcnM+dHJ1ZTwvcHJlZmVyU2VydmVyQ2lwaGVycz5cbiAgICAgICAgICAgIDwhLS0gVXNlIGZvciBzZWxmLXNpZ25lZDogPHZlcmlmaWNhdGlvbk1vZGU+bm9uZTwvdmVyaWZpY2F0aW9uTW9kZT4gLS0+XG4gICAgICAgICAgICA8aW52YWxpZENlcnRpZmljYXRlSGFuZGxlcj5cbiAgICAgICAgICAgICAgICA8IS0tIFVzZSBmb3Igc2VsZi1zaWduZWQ6IDxuYW1lPkFjY2VwdENlcnRpZmljYXRlSGFuZGxlcjwvbmFtZT4gLS0+XG4gICAgICAgICAgICAgICAgPG5hbWU+UmVqZWN0Q2VydGlmaWNhdGVIYW5kbGVyPC9uYW1lPlxuICAgICAgICAgICAgPC9pbnZhbGlkQ2VydGlmaWNhdGVIYW5kbGVyPlxuICAgICAgICA8L2NsaWVudD5cbiAgICA8L29wZW5TU0w+XG5cbiAgICA8IS0tIERlZmF1bHQgcm9vdCBwYWdlIG9uIGh0dHBbc10gc2VydmVyLiBGb3IgZXhhbXBsZSBsb2FkIFVJIGZyb20gaHR0cHM6Ly90YWJpeC5pby8gd2hlblxuICAgIG9wZW5pbmcgaHR0cDovL2xvY2FsaG9zdDo4MTIzIC0tPlxuICAgIDwhLS1cbiAgICA8aHR0cF9zZXJ2ZXJfZGVmYXVsdF9yZXNwb25zZT48IVtDREFUQVs8aHRtbCBuZy1hcHA9XCJTTUkyXCI+PGhlYWQ+PGJhc2VcbiAgICBocmVmPVwiaHR0cDovL3VpLnRhYml4LmlvL1wiPjwvaGVhZD48Ym9keT48ZGl2IHVpLXZpZXc9XCJcIiBjbGFzcz1cImNvbnRlbnQtdWlcIj48L2Rpdj48c2NyaXB0XG4gICAgc3JjPVwiaHR0cDovL2xvYWRlci50YWJpeC5pby9tYXN0ZXIuanNcIj48L3NjcmlwdD48L2JvZHk+PC9odG1sPl1dPjwvaHR0cF9zZXJ2ZXJfZGVmYXVsdF9yZXNwb25zZT5cbiAgICAtLT5cblxuICAgIDwhLS0gTWF4aW11bSBudW1iZXIgb2YgY29uY3VycmVudCBxdWVyaWVzLiAtLT5cbiAgICA8bWF4X2NvbmN1cnJlbnRfcXVlcmllcz4xMDA8L21heF9jb25jdXJyZW50X3F1ZXJpZXM+XG5cbiAgICA8IS0tIE1heGltdW0gbWVtb3J5IHVzYWdlIChyZXNpZGVudCBzZXQgc2l6ZSkgZm9yIHNlcnZlciBwcm9jZXNzLlxuICAgICAgICBaZXJvIHZhbHVlIG9yIHVuc2V0IG1lYW5zIGRlZmF1bHQuIERlZmF1bHQgaXMgXCJtYXhfc2VydmVyX21lbW9yeV91c2FnZV90b19yYW1fcmF0aW9cIiBvZiBhdmFpbGFibGVcbiAgICBwaHlzaWNhbCBSQU0uXG4gICAgICAgIElmIHRoZSB2YWx1ZSBpcyBsYXJnZXIgdGhhbiBcIm1heF9zZXJ2ZXJfbWVtb3J5X3VzYWdlX3RvX3JhbV9yYXRpb1wiIG9mIGF2YWlsYWJsZSBwaHlzaWNhbCBSQU0sIGl0XG4gICAgd2lsbCBiZSBjdXQgZG93bi5cblxuICAgICAgICBUaGUgY29uc3RyYWludCBpcyBjaGVja2VkIG9uIHF1ZXJ5IGV4ZWN1dGlvbiB0aW1lLlxuICAgICAgICBJZiBhIHF1ZXJ5IHRyaWVzIHRvIGFsbG9jYXRlIG1lbW9yeSBhbmQgdGhlIGN1cnJlbnQgbWVtb3J5IHVzYWdlIHBsdXMgYWxsb2NhdGlvbiBpcyBncmVhdGVyXG4gICAgICAgICAgdGhhbiBzcGVjaWZpZWQgdGhyZXNob2xkLCBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uXG5cbiAgICAgICAgSXQgaXMgbm90IHByYWN0aWNhbCB0byBzZXQgdGhpcyBjb25zdHJhaW50IHRvIHNtYWxsIHZhbHVlcyBsaWtlIGp1c3QgYSBmZXcgZ2lnYWJ5dGVzLFxuICAgICAgICAgIGJlY2F1c2UgbWVtb3J5IGFsbG9jYXRvciB3aWxsIGtlZXAgdGhpcyBhbW91bnQgb2YgbWVtb3J5IGluIGNhY2hlcyBhbmQgdGhlIHNlcnZlciB3aWxsIGRlbnkgc2VydmljZVxuICAgIG9mIHF1ZXJpZXMuXG4gICAgICAtLT5cbiAgICA8bWF4X3NlcnZlcl9tZW1vcnlfdXNhZ2U+MDwvbWF4X3NlcnZlcl9tZW1vcnlfdXNhZ2U+XG5cbiAgICA8IS0tIE1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMgaW4gdGhlIEdsb2JhbCB0aHJlYWQgcG9vbC5cbiAgICBUaGlzIHdpbGwgZGVmYXVsdCB0byBhIG1heGltdW0gb2YgMTAwMDAgdGhyZWFkcyBpZiBub3Qgc3BlY2lmaWVkLlxuICAgIFRoaXMgc2V0dGluZyB3aWxsIGJlIHVzZWZ1bCBpbiBzY2VuYXJpb3Mgd2hlcmUgdGhlcmUgYXJlIGEgbGFyZ2UgbnVtYmVyXG4gICAgb2YgZGlzdHJpYnV0ZWQgcXVlcmllcyB0aGF0IGFyZSBydW5uaW5nIGNvbmN1cnJlbnRseSBidXQgYXJlIGlkbGluZyBtb3N0XG4gICAgb2YgdGhlIHRpbWUsIGluIHdoaWNoIGNhc2UgYSBoaWdoZXIgbnVtYmVyIG9mIHRocmVhZHMgbWlnaHQgYmUgcmVxdWlyZWQuXG4gICAgLS0+XG5cbiAgICA8bWF4X3RocmVhZF9wb29sX3NpemU+MTAwMDA8L21heF90aHJlYWRfcG9vbF9zaXplPlxuXG4gICAgPCEtLSBOdW1iZXIgb2Ygd29ya2VycyB0byByZWN5Y2xlIGNvbm5lY3Rpb25zIGluIGJhY2tncm91bmQgKHNlZSBhbHNvIGRyYWluX3RpbWVvdXQpLlxuICAgICAgICBJZiB0aGUgcG9vbCBpcyBmdWxsLCBjb25uZWN0aW9uIHdpbGwgYmUgZHJhaW5lZCBzeW5jaHJvbm91c2x5LiAtLT5cbiAgICA8IS0tIDxtYXhfdGhyZWFkc19mb3JfY29ubmVjdGlvbl9jb2xsZWN0b3I+MTA8L21heF90aHJlYWRzX2Zvcl9jb25uZWN0aW9uX2NvbGxlY3Rvcj4gLS0+XG5cbiAgICA8IS0tIE9uIG1lbW9yeSBjb25zdHJhaW5lZCBlbnZpcm9ubWVudHMgeW91IG1heSBoYXZlIHRvIHNldCB0aGlzIHRvIHZhbHVlIGxhcmdlciB0aGFuIDEuXG4gICAgICAtLT5cbiAgICA8bWF4X3NlcnZlcl9tZW1vcnlfdXNhZ2VfdG9fcmFtX3JhdGlvPjAuOTwvbWF4X3NlcnZlcl9tZW1vcnlfdXNhZ2VfdG9fcmFtX3JhdGlvPlxuXG4gICAgPCEtLSBTaW1wbGUgc2VydmVyLXdpZGUgbWVtb3J5IHByb2ZpbGVyLiBDb2xsZWN0IGEgc3RhY2sgdHJhY2UgYXQgZXZlcnkgcGVhayBhbGxvY2F0aW9uIHN0ZXAgKGluXG4gICAgYnl0ZXMpLlxuICAgICAgICBEYXRhIHdpbGwgYmUgc3RvcmVkIGluIHN5c3RlbS50cmFjZV9sb2cgdGFibGUgd2l0aCBxdWVyeV9pZCA9IGVtcHR5IHN0cmluZy5cbiAgICAgICAgWmVybyBtZWFucyBkaXNhYmxlZC5cbiAgICAgIC0tPlxuICAgIDx0b3RhbF9tZW1vcnlfcHJvZmlsZXJfc3RlcD40MTk0MzA0PC90b3RhbF9tZW1vcnlfcHJvZmlsZXJfc3RlcD5cblxuICAgIDwhLS0gQ29sbGVjdCByYW5kb20gYWxsb2NhdGlvbnMgYW5kIGRlYWxsb2NhdGlvbnMgYW5kIHdyaXRlIHRoZW0gaW50byBzeXN0ZW0udHJhY2VfbG9nIHdpdGhcbiAgICAnTWVtb3J5U2FtcGxlJyB0cmFjZV90eXBlLlxuICAgICAgICBUaGUgcHJvYmFiaWxpdHkgaXMgZm9yIGV2ZXJ5IGFsbG9jL2ZyZWUgcmVnYXJkbGVzcyB0byB0aGUgc2l6ZSBvZiB0aGUgYWxsb2NhdGlvbi5cbiAgICAgICAgTm90ZSB0aGF0IHNhbXBsaW5nIGhhcHBlbnMgb25seSB3aGVuIHRoZSBhbW91bnQgb2YgdW50cmFja2VkIG1lbW9yeSBleGNlZWRzIHRoZSB1bnRyYWNrZWQgbWVtb3J5XG4gICAgbGltaXQsXG4gICAgICAgICAgd2hpY2ggaXMgNCBNaUIgYnkgZGVmYXVsdCBidXQgY2FuIGJlIGxvd2VyZWQgaWYgJ3RvdGFsX21lbW9yeV9wcm9maWxlcl9zdGVwJyBpcyBsb3dlcmVkLlxuICAgICAgICBZb3UgbWF5IHdhbnQgdG8gc2V0ICd0b3RhbF9tZW1vcnlfcHJvZmlsZXJfc3RlcCcgdG8gMSBmb3IgZXh0cmEgZmluZSBncmFpbmVkIHNhbXBsaW5nLlxuICAgICAgLS0+XG4gICAgPHRvdGFsX21lbW9yeV90cmFja2VyX3NhbXBsZV9wcm9iYWJpbGl0eT4wPC90b3RhbF9tZW1vcnlfdHJhY2tlcl9zYW1wbGVfcHJvYmFiaWxpdHk+XG5cbiAgICA8IS0tIFNldCBsaW1pdCBvbiBudW1iZXIgb2Ygb3BlbiBmaWxlcyAoZGVmYXVsdDogbWF4aW11bSkuIFRoaXMgc2V0dGluZyBtYWtlcyBzZW5zZSBvbiBNYWMgT1MgWFxuICAgIGJlY2F1c2UgZ2V0cmxpbWl0KCkgZmFpbHMgdG8gcmV0cmlldmVcbiAgICAgICAgY29ycmVjdCBtYXhpbXVtIHZhbHVlLiAtLT5cbiAgICA8IS0tIDxtYXhfb3Blbl9maWxlcz4yNjIxNDQ8L21heF9vcGVuX2ZpbGVzPiAtLT5cblxuICAgIDwhLS0gU2l6ZSBvZiBjYWNoZSBvZiB1bmNvbXByZXNzZWQgYmxvY2tzIG9mIGRhdGEsIHVzZWQgaW4gdGFibGVzIG9mIE1lcmdlVHJlZSBmYW1pbHkuXG4gICAgICAgIEluIGJ5dGVzLiBDYWNoZSBpcyBzaW5nbGUgZm9yIHNlcnZlci4gTWVtb3J5IGlzIGFsbG9jYXRlZCBvbmx5IG9uIGRlbWFuZC5cbiAgICAgICAgQ2FjaGUgaXMgdXNlZCB3aGVuICd1c2VfdW5jb21wcmVzc2VkX2NhY2hlJyB1c2VyIHNldHRpbmcgdHVybmVkIG9uIChvZmYgYnkgZGVmYXVsdCkuXG4gICAgICAgIFVuY29tcHJlc3NlZCBjYWNoZSBpcyBhZHZhbnRhZ2VvdXMgb25seSBmb3IgdmVyeSBzaG9ydCBxdWVyaWVzIGFuZCBpbiByYXJlIGNhc2VzLlxuXG4gICAgICAgIE5vdGU6IHVuY29tcHJlc3NlZCBjYWNoZSBjYW4gYmUgcG9pbnRsZXNzIGZvciBsejQsIGJlY2F1c2UgbWVtb3J5IGJhbmR3aWR0aFxuICAgICAgICBpcyBzbG93ZXIgdGhhbiBtdWx0aS1jb3JlIGRlY29tcHJlc3Npb24gb24gc29tZSBzZXJ2ZXIgY29uZmlndXJhdGlvbnMuXG4gICAgICAgIEVuYWJsaW5nIGl0IGNhbiBzb21ldGltZXMgcGFyYWRveGljYWxseSBtYWtlIHF1ZXJpZXMgc2xvd2VyLlxuICAgICAgLS0+XG4gICAgPHVuY29tcHJlc3NlZF9jYWNoZV9zaXplPjg1ODk5MzQ1OTI8L3VuY29tcHJlc3NlZF9jYWNoZV9zaXplPlxuXG4gICAgPCEtLSBBcHByb3hpbWF0ZSBzaXplIG9mIG1hcmsgY2FjaGUsIHVzZWQgaW4gdGFibGVzIG9mIE1lcmdlVHJlZSBmYW1pbHkuXG4gICAgICAgIEluIGJ5dGVzLiBDYWNoZSBpcyBzaW5nbGUgZm9yIHNlcnZlci4gTWVtb3J5IGlzIGFsbG9jYXRlZCBvbmx5IG9uIGRlbWFuZC5cbiAgICAgICAgWW91IHNob3VsZCBub3QgbG93ZXIgdGhpcyB2YWx1ZS5cbiAgICAgIC0tPlxuICAgIDxtYXJrX2NhY2hlX3NpemU+NTM2ODcwOTEyMDwvbWFya19jYWNoZV9zaXplPlxuXG5cbiAgICA8IS0tIElmIHlvdSBlbmFibGUgdGhlIGBtaW5fYnl0ZXNfdG9fdXNlX21tYXBfaW9gIHNldHRpbmcsXG4gICAgICAgIHRoZSBkYXRhIGluIE1lcmdlVHJlZSB0YWJsZXMgY2FuIGJlIHJlYWQgd2l0aCBtbWFwIHRvIGF2b2lkIGNvcHlpbmcgZnJvbSBrZXJuZWwgdG8gdXNlcnNwYWNlLlxuICAgICAgICBJdCBtYWtlcyBzZW5zZSBvbmx5IGZvciBsYXJnZSBmaWxlcyBhbmQgaGVscHMgb25seSBpZiBkYXRhIHJlc2lkZSBpbiBwYWdlIGNhY2hlLlxuICAgICAgICBUbyBhdm9pZCBmcmVxdWVudCBvcGVuL21tYXAvbXVubWFwL2Nsb3NlIGNhbGxzICh3aGljaCBhcmUgdmVyeSBleHBlbnNpdmUgZHVlIHRvIGNvbnNlcXVlbnQgcGFnZVxuICAgIGZhdWx0cylcbiAgICAgICAgYW5kIHRvIHJldXNlIG1hcHBpbmdzIGZyb20gc2V2ZXJhbCB0aHJlYWRzIGFuZCBxdWVyaWVzLFxuICAgICAgICB0aGUgY2FjaGUgb2YgbWFwcGVkIGZpbGVzIGlzIG1haW50YWluZWQuIEl0cyBzaXplIGlzIHRoZSBudW1iZXIgb2YgbWFwcGVkIHJlZ2lvbnMgKHVzdWFsbHkgZXF1YWwgdG9cbiAgICB0aGUgbnVtYmVyIG9mIG1hcHBlZCBmaWxlcykuXG4gICAgICAgIFRoZSBhbW91bnQgb2YgZGF0YSBpbiBtYXBwZWQgZmlsZXMgY2FuIGJlIG1vbml0b3JlZFxuICAgICAgICBpbiBzeXN0ZW0ubWV0cmljcywgc3lzdGVtLm1ldHJpY19sb2cgYnkgdGhlIE1NYXBwZWRGaWxlcywgTU1hcHBlZEZpbGVCeXRlcyBtZXRyaWNzXG4gICAgICAgIGFuZCBpbiBzeXN0ZW0uYXN5bmNocm9ub3VzX21ldHJpY3MsIHN5c3RlbS5hc3luY2hyb25vdXNfbWV0cmljc19sb2cgYnkgdGhlIE1NYXBDYWNoZUNlbGxzIG1ldHJpYyxcbiAgICAgICAgYW5kIGFsc28gaW4gc3lzdGVtLmV2ZW50cywgc3lzdGVtLnByb2Nlc3Nlcywgc3lzdGVtLnF1ZXJ5X2xvZywgc3lzdGVtLnF1ZXJ5X3RocmVhZF9sb2csXG4gICAgc3lzdGVtLnF1ZXJ5X3ZpZXdzX2xvZyBieSB0aGVcbiAgICAgICAgQ3JlYXRlZFJlYWRCdWZmZXJNTWFwLCBDcmVhdGVkUmVhZEJ1ZmZlck1NYXBGYWlsZWQsIE1NYXBwZWRGaWxlQ2FjaGVIaXRzLCBNTWFwcGVkRmlsZUNhY2hlTWlzc2VzXG4gICAgZXZlbnRzLlxuICAgICAgICBOb3RlIHRoYXQgdGhlIGFtb3VudCBvZiBkYXRhIGluIG1hcHBlZCBmaWxlcyBkb2VzIG5vdCBjb25zdW1lIG1lbW9yeSBkaXJlY3RseSBhbmQgaXMgbm90IGFjY291bnRlZFxuICAgICAgICBpbiBxdWVyeSBvciBzZXJ2ZXIgbWVtb3J5IHVzYWdlIC0gYmVjYXVzZSB0aGlzIG1lbW9yeSBjYW4gYmUgZGlzY2FyZGVkIHNpbWlsYXIgdG8gT1MgcGFnZSBjYWNoZS5cbiAgICAgICAgVGhlIGNhY2hlIGlzIGRyb3BwZWQgKHRoZSBmaWxlcyBhcmUgY2xvc2VkKSBhdXRvbWF0aWNhbGx5IG9uIHJlbW92YWwgb2Ygb2xkIHBhcnRzIGluIE1lcmdlVHJlZSxcbiAgICAgICAgYWxzbyBpdCBjYW4gYmUgZHJvcHBlZCBtYW51YWxseSBieSB0aGUgU1lTVEVNIERST1AgTU1BUCBDQUNIRSBxdWVyeS5cbiAgICAgIC0tPlxuICAgIDxtbWFwX2NhY2hlX3NpemU+MTAwMDwvbW1hcF9jYWNoZV9zaXplPlxuXG4gICAgPCEtLSBDYWNoZSBzaXplIGluIGJ5dGVzIGZvciBjb21waWxlZCBleHByZXNzaW9ucy4tLT5cbiAgICA8Y29tcGlsZWRfZXhwcmVzc2lvbl9jYWNoZV9zaXplPjEzNDIxNzcyODwvY29tcGlsZWRfZXhwcmVzc2lvbl9jYWNoZV9zaXplPlxuXG4gICAgPCEtLSBDYWNoZSBzaXplIGluIGVsZW1lbnRzIGZvciBjb21waWxlZCBleHByZXNzaW9ucy4tLT5cbiAgICA8Y29tcGlsZWRfZXhwcmVzc2lvbl9jYWNoZV9lbGVtZW50c19zaXplPjEwMDAwPC9jb21waWxlZF9leHByZXNzaW9uX2NhY2hlX2VsZW1lbnRzX3NpemU+XG5cbiAgICA8IS0tIFBhdGggdG8gZGF0YSBkaXJlY3RvcnksIHdpdGggdHJhaWxpbmcgc2xhc2guIC0tPlxuICAgIDxwYXRoPi92YXIvbGliL2NsaWNraG91c2UvPC9wYXRoPlxuXG4gICAgPCEtLSBQYXRoIHRvIHRlbXBvcmFyeSBkYXRhIGZvciBwcm9jZXNzaW5nIGhhcmQgcXVlcmllcy4gLS0+XG4gICAgPHRtcF9wYXRoPi92YXIvbGliL2NsaWNraG91c2UvdG1wLzwvdG1wX3BhdGg+XG5cbiAgICA8IS0tIFBvbGljeSBmcm9tIHRoZSA8c3RvcmFnZV9jb25maWd1cmF0aW9uPiBmb3IgdGhlIHRlbXBvcmFyeSBmaWxlcy5cbiAgICAgICAgSWYgbm90IHNldCA8dG1wX3BhdGg+IGlzIHVzZWQsIG90aGVyd2lzZSA8dG1wX3BhdGg+IGlzIGlnbm9yZWQuXG5cbiAgICAgICAgTm90ZXM6XG4gICAgICAgIC0gbW92ZV9mYWN0b3IgICAgICAgICAgICAgIGlzIGlnbm9yZWRcbiAgICAgICAgLSBrZWVwX2ZyZWVfc3BhY2VfYnl0ZXMgICAgaXMgaWdub3JlZFxuICAgICAgICAtIG1heF9kYXRhX3BhcnRfc2l6ZV9ieXRlcyBpcyBpZ25vcmVkXG4gICAgICAgIC0geW91IG11c3QgaGF2ZSBleGFjdGx5IG9uZSB2b2x1bWUgaW4gdGhhdCBwb2xpY3lcbiAgICAtLT5cbiAgICA8IS0tIDx0bXBfcG9saWN5PnRtcDwvdG1wX3BvbGljeT4gLS0+XG5cbiAgICA8IS0tIERpcmVjdG9yeSB3aXRoIHVzZXIgcHJvdmlkZWQgZmlsZXMgdGhhdCBhcmUgYWNjZXNzaWJsZSBieSAnZmlsZScgdGFibGUgZnVuY3Rpb24uIC0tPlxuICAgIDx1c2VyX2ZpbGVzX3BhdGg+L3Zhci9saWIvY2xpY2tob3VzZS91c2VyX2ZpbGVzLzwvdXNlcl9maWxlc19wYXRoPlxuXG4gICAgPCEtLSBMREFQIHNlcnZlciBkZWZpbml0aW9ucy4gLS0+XG4gICAgPGxkYXBfc2VydmVycz5cbiAgICAgICAgPCEtLSBMaXN0IExEQVAgc2VydmVycyB3aXRoIHRoZWlyIGNvbm5lY3Rpb24gcGFyYW1ldGVycyBoZXJlIHRvIGxhdGVyIDEpIHVzZSB0aGVtIGFzXG4gICAgICAgIGF1dGhlbnRpY2F0b3JzIGZvciBkZWRpY2F0ZWQgbG9jYWwgdXNlcnMsXG4gICAgICAgICAgICAgIHdobyBoYXZlICdsZGFwJyBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gc3BlY2lmaWVkIGluc3RlYWQgb2YgJ3Bhc3N3b3JkJywgb3IgdG8gMikgdXNlIHRoZW0gYXNcbiAgICAgICAgcmVtb3RlIHVzZXIgZGlyZWN0b3JpZXMuXG4gICAgICAgICAgICBQYXJhbWV0ZXJzOlxuICAgICAgICAgICAgICAgIGhvc3QgLSBMREFQIHNlcnZlciBob3N0bmFtZSBvciBJUCwgdGhpcyBwYXJhbWV0ZXIgaXMgbWFuZGF0b3J5IGFuZCBjYW5ub3QgYmUgZW1wdHkuXG4gICAgICAgICAgICAgICAgcG9ydCAtIExEQVAgc2VydmVyIHBvcnQsIGRlZmF1bHQgaXMgNjM2IGlmIGVuYWJsZV90bHMgaXMgc2V0IHRvIHRydWUsIDM4OSBvdGhlcndpc2UuXG4gICAgICAgICAgICAgICAgYmluZF9kbiAtIHRlbXBsYXRlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBETiB0byBiaW5kIHRvLlxuICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdGluZyBETiB3aWxsIGJlIGNvbnN0cnVjdGVkIGJ5IHJlcGxhY2luZyBhbGwgJ3t1c2VyX25hbWV9JyBzdWJzdHJpbmdzIG9mIHRoZSB0ZW1wbGF0ZSB3aXRoXG4gICAgICAgIHRoZSBhY3R1YWxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgbmFtZSBkdXJpbmcgZWFjaCBhdXRoZW50aWNhdGlvbiBhdHRlbXB0LlxuICAgICAgICAgICAgICAgIHVzZXJfZG5fZGV0ZWN0aW9uIC0gc2VjdGlvbiB3aXRoIExEQVAgc2VhcmNoIHBhcmFtZXRlcnMgZm9yIGRldGVjdGluZyB0aGUgYWN0dWFsIHVzZXIgRE4gb2YgdGhlXG4gICAgICAgIGJvdW5kIHVzZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG1haW5seSB1c2VkIGluIHNlYXJjaCBmaWx0ZXJzIGZvciBmdXJ0aGVyIHJvbGUgbWFwcGluZyB3aGVuIHRoZSBzZXJ2ZXIgaXMgQWN0aXZlIERpcmVjdG9yeS5cbiAgICAgICAgVGhlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRpbmcgdXNlciBETiB3aWxsIGJlIHVzZWQgd2hlbiByZXBsYWNpbmcgJ3t1c2VyX2RufScgc3Vic3RyaW5ncyB3aGVyZXZlciB0aGV5IGFyZSBhbGxvd2VkLiBCeVxuICAgICAgICBkZWZhdWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlciBETiBpcyBzZXQgZXF1YWwgdG8gYmluZCBETiwgYnV0IG9uY2Ugc2VhcmNoIGlzIHBlcmZvcm1lZCwgaXQgd2lsbCBiZSB1cGRhdGVkIHdpdGggdG8gdGhlXG4gICAgICAgIGFjdHVhbCBkZXRlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlciBETiB2YWx1ZS5cbiAgICAgICAgICAgICAgICAgICAgYmFzZV9kbiAtIHRlbXBsYXRlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBiYXNlIEROIGZvciB0aGUgTERBUCBzZWFyY2guXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdGluZyBETiB3aWxsIGJlIGNvbnN0cnVjdGVkIGJ5IHJlcGxhY2luZyBhbGwgJ3t1c2VyX25hbWV9JyBhbmQgJ3tiaW5kX2RufScgc3Vic3RyaW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB0ZW1wbGF0ZSB3aXRoIHRoZSBhY3R1YWwgdXNlciBuYW1lIGFuZCBiaW5kIEROIGR1cmluZyB0aGUgTERBUCBzZWFyY2guXG4gICAgICAgICAgICAgICAgICAgIHNjb3BlIC0gc2NvcGUgb2YgdGhlIExEQVAgc2VhcmNoLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2VwdGVkIHZhbHVlcyBhcmU6ICdiYXNlJywgJ29uZV9sZXZlbCcsICdjaGlsZHJlbicsICdzdWJ0cmVlJyAodGhlIGRlZmF1bHQpLlxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hfZmlsdGVyIC0gdGVtcGxhdGUgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIHNlYXJjaCBmaWx0ZXIgZm9yIHRoZSBMREFQIHNlYXJjaC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0aW5nIGZpbHRlciB3aWxsIGJlIGNvbnN0cnVjdGVkIGJ5IHJlcGxhY2luZyBhbGwgJ3t1c2VyX25hbWV9JywgJ3tiaW5kX2RufScsIGFuZFxuICAgICAgICAne2Jhc2VfZG59J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0cmluZ3Mgb2YgdGhlIHRlbXBsYXRlIHdpdGggdGhlIGFjdHVhbCB1c2VyIG5hbWUsIGJpbmQgRE4sIGFuZCBiYXNlIEROIGR1cmluZyB0aGUgTERBUCBzZWFyY2guXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZSwgdGhhdCB0aGUgc3BlY2lhbCBjaGFyYWN0ZXJzIG11c3QgYmUgZXNjYXBlZCBwcm9wZXJseSBpbiBYTUwuXG4gICAgICAgICAgICAgICAgdmVyaWZpY2F0aW9uX2Nvb2xkb3duIC0gYSBwZXJpb2Qgb2YgdGltZSwgaW4gc2Vjb25kcywgYWZ0ZXIgYSBzdWNjZXNzZnVsIGJpbmQgYXR0ZW1wdCwgZHVyaW5nIHdoaWNoXG4gICAgICAgIGEgdXNlciB3aWxsIGJlIGFzc3VtZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJlIHN1Y2Nlc3NmdWxseSBhdXRoZW50aWNhdGVkIGZvciBhbGwgY29uc2VjdXRpdmUgcmVxdWVzdHMgd2l0aG91dCBjb250YWN0aW5nIHRoZSBMREFQIHNlcnZlci5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZnkgMCAodGhlIGRlZmF1bHQpIHRvIGRpc2FibGUgY2FjaGluZyBhbmQgZm9yY2UgY29udGFjdGluZyB0aGUgTERBUCBzZXJ2ZXIgZm9yIGVhY2hcbiAgICAgICAgYXV0aGVudGljYXRpb24gcmVxdWVzdC5cbiAgICAgICAgICAgICAgICBlbmFibGVfdGxzIC0gZmxhZyB0byB0cmlnZ2VyIHVzZSBvZiBzZWN1cmUgY29ubmVjdGlvbiB0byB0aGUgTERBUCBzZXJ2ZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZ5ICdubycgZm9yIHBsYWluIHRleHQgKGxkYXA6Ly8pIHByb3RvY29sIChub3QgcmVjb21tZW5kZWQpLlxuICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmeSAneWVzJyBmb3IgTERBUCBvdmVyIFNTTC9UTFMgKGxkYXBzOi8vKSBwcm90b2NvbCAocmVjb21tZW5kZWQsIHRoZSBkZWZhdWx0KS5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZnkgJ3N0YXJ0dGxzJyBmb3IgbGVnYWN5IFN0YXJ0VExTIHByb3RvY29sIChwbGFpbiB0ZXh0IChsZGFwOi8vKSBwcm90b2NvbCwgdXBncmFkZWQgdG8gVExTKS5cbiAgICAgICAgICAgICAgICB0bHNfbWluaW11bV9wcm90b2NvbF92ZXJzaW9uIC0gdGhlIG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbiBvZiBTU0wvVExTLlxuICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXB0ZWQgdmFsdWVzIGFyZTogJ3NzbDInLCAnc3NsMycsICd0bHMxLjAnLCAndGxzMS4xJywgJ3RsczEuMicgKHRoZSBkZWZhdWx0KS5cbiAgICAgICAgICAgICAgICB0bHNfcmVxdWlyZV9jZXJ0IC0gU1NML1RMUyBwZWVyIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBiZWhhdmlvci5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFjY2VwdGVkIHZhbHVlcyBhcmU6ICduZXZlcicsICdhbGxvdycsICd0cnknLCAnZGVtYW5kJyAodGhlIGRlZmF1bHQpLlxuICAgICAgICAgICAgICAgIHRsc19jZXJ0X2ZpbGUgLSBwYXRoIHRvIGNlcnRpZmljYXRlIGZpbGUuXG4gICAgICAgICAgICAgICAgdGxzX2tleV9maWxlIC0gcGF0aCB0byBjZXJ0aWZpY2F0ZSBrZXkgZmlsZS5cbiAgICAgICAgICAgICAgICB0bHNfY2FfY2VydF9maWxlIC0gcGF0aCB0byBDQSBjZXJ0aWZpY2F0ZSBmaWxlLlxuICAgICAgICAgICAgICAgIHRsc19jYV9jZXJ0X2RpciAtIHBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIENBIGNlcnRpZmljYXRlcy5cbiAgICAgICAgICAgICAgICB0bHNfY2lwaGVyX3N1aXRlIC0gYWxsb3dlZCBjaXBoZXIgc3VpdGUgKGluIE9wZW5TU0wgbm90YXRpb24pLlxuICAgICAgICAgICAgRXhhbXBsZTpcbiAgICAgICAgICAgICAgICA8bXlfbGRhcF9zZXJ2ZXI+XG4gICAgICAgICAgICAgICAgICAgIDxob3N0PmxvY2FsaG9zdDwvaG9zdD5cbiAgICAgICAgICAgICAgICAgICAgPHBvcnQ+NjM2PC9wb3J0PlxuICAgICAgICAgICAgICAgICAgICA8YmluZF9kbj51aWQ9e3VzZXJfbmFtZX0sb3U9dXNlcnMsZGM9ZXhhbXBsZSxkYz1jb208L2JpbmRfZG4+XG4gICAgICAgICAgICAgICAgICAgIDx2ZXJpZmljYXRpb25fY29vbGRvd24+MzAwPC92ZXJpZmljYXRpb25fY29vbGRvd24+XG4gICAgICAgICAgICAgICAgICAgIDxlbmFibGVfdGxzPnllczwvZW5hYmxlX3Rscz5cbiAgICAgICAgICAgICAgICAgICAgPHRsc19taW5pbXVtX3Byb3RvY29sX3ZlcnNpb24+dGxzMS4yPC90bHNfbWluaW11bV9wcm90b2NvbF92ZXJzaW9uPlxuICAgICAgICAgICAgICAgICAgICA8dGxzX3JlcXVpcmVfY2VydD5kZW1hbmQ8L3Rsc19yZXF1aXJlX2NlcnQ+XG4gICAgICAgICAgICAgICAgICAgIDx0bHNfY2VydF9maWxlPi9wYXRoL3RvL3Rsc19jZXJ0X2ZpbGU8L3Rsc19jZXJ0X2ZpbGU+XG4gICAgICAgICAgICAgICAgICAgIDx0bHNfa2V5X2ZpbGU+L3BhdGgvdG8vdGxzX2tleV9maWxlPC90bHNfa2V5X2ZpbGU+XG4gICAgICAgICAgICAgICAgICAgIDx0bHNfY2FfY2VydF9maWxlPi9wYXRoL3RvL3Rsc19jYV9jZXJ0X2ZpbGU8L3Rsc19jYV9jZXJ0X2ZpbGU+XG4gICAgICAgICAgICAgICAgICAgIDx0bHNfY2FfY2VydF9kaXI+L3BhdGgvdG8vdGxzX2NhX2NlcnRfZGlyPC90bHNfY2FfY2VydF9kaXI+XG4gICAgICAgIDx0bHNfY2lwaGVyX3N1aXRlPkVDREhFLUVDRFNBLUFFUzI1Ni1HQ00tU0hBMzg0OkVDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NDpBRVMyNTYtR0NNLVNIQTM4NDwvdGxzX2NpcGhlcl9zdWl0ZT5cbiAgICAgICAgICAgICAgICA8L215X2xkYXBfc2VydmVyPlxuICAgICAgICAgICAgRXhhbXBsZSAodHlwaWNhbCBBY3RpdmUgRGlyZWN0b3J5IHdpdGggY29uZmlndXJlZCB1c2VyIEROIGRldGVjdGlvbiBmb3IgZnVydGhlciByb2xlIG1hcHBpbmcpOlxuICAgICAgICAgICAgICAgIDxteV9hZF9zZXJ2ZXI+XG4gICAgICAgICAgICAgICAgICAgIDxob3N0PmxvY2FsaG9zdDwvaG9zdD5cbiAgICAgICAgICAgICAgICAgICAgPHBvcnQ+Mzg5PC9wb3J0PlxuICAgICAgICAgICAgICAgICAgICA8YmluZF9kbj5FWEFNUExFXFx7dXNlcl9uYW1lfTwvYmluZF9kbj5cbiAgICAgICAgICAgICAgICAgICAgPHVzZXJfZG5fZGV0ZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJhc2VfZG4+Q049VXNlcnMsREM9ZXhhbXBsZSxEQz1jb208L2Jhc2VfZG4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VhcmNoX2ZpbHRlcj4oJmFtcDsob2JqZWN0Q2xhc3M9dXNlcikoc0FNQWNjb3VudE5hbWU9e3VzZXJfbmFtZX0pKTwvc2VhcmNoX2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgPC91c2VyX2RuX2RldGVjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPGVuYWJsZV90bHM+bm88L2VuYWJsZV90bHM+XG4gICAgICAgICAgICAgICAgPC9teV9hZF9zZXJ2ZXI+XG4gICAgICAgIC0tPlxuICAgIDwvbGRhcF9zZXJ2ZXJzPlxuXG4gICAgPCEtLSBUbyBlbmFibGUgS2VyYmVyb3MgYXV0aGVudGljYXRpb24gc3VwcG9ydCBmb3IgSFRUUCByZXF1ZXN0cyAoR1NTLVNQTkVHTyksIGZvciB0aG9zZSB1c2Vyc1xuICAgIHdobyBhcmUgZXhwbGljaXRseSBjb25maWd1cmVkXG4gICAgICAgICAgdG8gYXV0aGVudGljYXRlIHZpYSBLZXJiZXJvcywgZGVmaW5lIGEgc2luZ2xlICdrZXJiZXJvcycgc2VjdGlvbiBoZXJlLlxuICAgICAgICBQYXJhbWV0ZXJzOlxuICAgICAgICAgICAgcHJpbmNpcGFsIC0gY2Fub25pY2FsIHNlcnZpY2UgcHJpbmNpcGFsIG5hbWUsIHRoYXQgd2lsbCBiZSBhY3F1aXJlZCBhbmQgdXNlZCB3aGVuIGFjY2VwdGluZ1xuICAgIHNlY3VyaXR5IGNvbnRleHRzLlxuICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBpcyBvcHRpb25hbCwgaWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgcHJpbmNpcGFsIHdpbGwgYmUgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoICdyZWFsbScgcGFyYW1ldGVyLlxuICAgICAgICAgICAgcmVhbG0gLSBhIHJlYWxtLCB0aGF0IHdpbGwgYmUgdXNlZCB0byByZXN0cmljdCBhdXRoZW50aWNhdGlvbiB0byBvbmx5IHRob3NlIHJlcXVlc3RzIHdob3NlXG4gICAgaW5pdGlhdG9yJ3MgcmVhbG0gbWF0Y2hlcyBpdC5cbiAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwsIGlmIG9taXR0ZWQsIG5vIGFkZGl0aW9uYWwgZmlsdGVyaW5nIGJ5IHJlYWxtIHdpbGwgYmUgYXBwbGllZC5cbiAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoICdwcmluY2lwYWwnIHBhcmFtZXRlci5cbiAgICAgICAgRXhhbXBsZTpcbiAgICAgICAgICAgIDxrZXJiZXJvcyAvPlxuICAgICAgICBFeGFtcGxlOlxuICAgICAgICAgICAgPGtlcmJlcm9zPlxuICAgICAgICAgICAgICAgIDxwcmluY2lwYWw+SFRUUC9jbGlja2hvdXNlLmV4YW1wbGUuY29tQEVYQU1QTEUuQ09NPC9wcmluY2lwYWw+XG4gICAgICAgICAgICA8L2tlcmJlcm9zPlxuICAgICAgICBFeGFtcGxlOlxuICAgICAgICAgICAgPGtlcmJlcm9zPlxuICAgICAgICAgICAgICAgIDxyZWFsbT5FWEFNUExFLkNPTTwvcmVhbG0+XG4gICAgICAgICAgICA8L2tlcmJlcm9zPlxuICAgIC0tPlxuXG4gICAgPCEtLSBTb3VyY2VzIHRvIHJlYWQgdXNlcnMsIHJvbGVzLCBhY2Nlc3MgcmlnaHRzLCBwcm9maWxlcyBvZiBzZXR0aW5ncywgcXVvdGFzLiAtLT5cbiAgICA8dXNlcl9kaXJlY3Rvcmllcz5cbiAgICAgICAgPHVzZXJzX3htbD5cbiAgICAgICAgICAgIDwhLS0gUGF0aCB0byBjb25maWd1cmF0aW9uIGZpbGUgd2l0aCBwcmVkZWZpbmVkIHVzZXJzLiAtLT5cbiAgICAgICAgICAgIDxwYXRoPnVzZXJzLnhtbDwvcGF0aD5cbiAgICAgICAgPC91c2Vyc194bWw+XG4gICAgICAgIDxsb2NhbF9kaXJlY3Rvcnk+XG4gICAgICAgICAgICA8IS0tIFBhdGggdG8gZm9sZGVyIHdoZXJlIHVzZXJzIGNyZWF0ZWQgYnkgU1FMIGNvbW1hbmRzIGFyZSBzdG9yZWQuIC0tPlxuICAgICAgICAgICAgPHBhdGg+L3Zhci9saWIvY2xpY2tob3VzZS9hY2Nlc3MvPC9wYXRoPlxuICAgICAgICA8L2xvY2FsX2RpcmVjdG9yeT5cblxuICAgICAgICA8IS0tIFRvIGFkZCBhbiBMREFQIHNlcnZlciBhcyBhIHJlbW90ZSB1c2VyIGRpcmVjdG9yeSBvZiB1c2VycyB0aGF0IGFyZSBub3QgZGVmaW5lZCBsb2NhbGx5LFxuICAgICAgICBkZWZpbmUgYSBzaW5nbGUgJ2xkYXAnIHNlY3Rpb25cbiAgICAgICAgICAgICAgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4gICAgICAgICAgICAgICAgc2VydmVyIC0gb25lIG9mIExEQVAgc2VydmVyIG5hbWVzIGRlZmluZWQgaW4gJ2xkYXBfc2VydmVycycgY29uZmlnIHNlY3Rpb24gYWJvdmUuXG4gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBpcyBtYW5kYXRvcnkgYW5kIGNhbm5vdCBiZSBlbXB0eS5cbiAgICAgICAgICAgICAgICByb2xlcyAtIHNlY3Rpb24gd2l0aCBhIGxpc3Qgb2YgbG9jYWxseSBkZWZpbmVkIHJvbGVzIHRoYXQgd2lsbCBiZSBhc3NpZ25lZCB0byBlYWNoIHVzZXIgcmV0cmlldmVkXG4gICAgICAgIGZyb20gdGhlIExEQVAgc2VydmVyLlxuICAgICAgICAgICAgICAgICAgICAgICAgSWYgbm8gcm9sZXMgYXJlIHNwZWNpZmllZCBoZXJlIG9yIGFzc2lnbmVkIGR1cmluZyByb2xlIG1hcHBpbmcgKGJlbG93KSwgdXNlciB3aWxsIG5vdCBiZSBhYmxlIHRvXG4gICAgICAgIHBlcmZvcm0gYW55XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zIGFmdGVyIGF1dGhlbnRpY2F0aW9uLlxuICAgICAgICAgICAgICAgIHJvbGVfbWFwcGluZyAtIHNlY3Rpb24gd2l0aCBMREFQIHNlYXJjaCBwYXJhbWV0ZXJzIGFuZCBtYXBwaW5nIHJ1bGVzLlxuICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBhIHVzZXIgYXV0aGVudGljYXRlcywgd2hpbGUgc3RpbGwgYm91bmQgdG8gTERBUCwgYW4gTERBUCBzZWFyY2ggaXMgcGVyZm9ybWVkIHVzaW5nXG4gICAgICAgIHNlYXJjaF9maWx0ZXIgYW5kIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSBvZiB0aGUgbG9nZ2VkIGluIHVzZXIuIEZvciBlYWNoIGVudHJ5IGZvdW5kIGR1cmluZyB0aGF0IHNlYXJjaCwgdGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWRcbiAgICAgICAgYXR0cmlidXRlIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0ZWQuIEZvciBlYWNoIGF0dHJpYnV0ZSB2YWx1ZSB0aGF0IGhhcyB0aGUgc3BlY2lmaWVkIHByZWZpeCwgdGhlIHByZWZpeCBpcyByZW1vdmVkLCBhbmQgdGhlXG4gICAgICAgIHJlc3Qgb2YgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBiZWNvbWVzIHRoZSBuYW1lIG9mIGEgbG9jYWwgcm9sZSBkZWZpbmVkIGluIENsaWNrSG91c2UsIHdoaWNoIGlzIGV4cGVjdGVkIHRvIGJlIGNyZWF0ZWRcbiAgICAgICAgYmVmb3JlaGFuZCBieVxuICAgICAgICAgICAgICAgICAgICAgICAgQ1JFQVRFIFJPTEUgY29tbWFuZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIFRoZXJlIGNhbiBiZSBtdWx0aXBsZSAncm9sZV9tYXBwaW5nJyBzZWN0aW9ucyBkZWZpbmVkIGluc2lkZSB0aGUgc2FtZSAnbGRhcCcgc2VjdGlvbi4gQWxsIG9mIHRoZW1cbiAgICAgICAgd2lsbCBiZVxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGllZC5cbiAgICAgICAgICAgICAgICAgICAgYmFzZV9kbiAtIHRlbXBsYXRlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBiYXNlIEROIGZvciB0aGUgTERBUCBzZWFyY2guXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdGluZyBETiB3aWxsIGJlIGNvbnN0cnVjdGVkIGJ5IHJlcGxhY2luZyBhbGwgJ3t1c2VyX25hbWV9JywgJ3tiaW5kX2RufScsIGFuZCAne3VzZXJfZG59J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN0cmluZ3Mgb2YgdGhlIHRlbXBsYXRlIHdpdGggdGhlIGFjdHVhbCB1c2VyIG5hbWUsIGJpbmQgRE4sIGFuZCB1c2VyIEROIGR1cmluZyBlYWNoIExEQVAgc2VhcmNoLlxuICAgICAgICAgICAgICAgICAgICBzY29wZSAtIHNjb3BlIG9mIHRoZSBMREFQIHNlYXJjaC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY2NlcHRlZCB2YWx1ZXMgYXJlOiAnYmFzZScsICdvbmVfbGV2ZWwnLCAnY2hpbGRyZW4nLCAnc3VidHJlZScgKHRoZSBkZWZhdWx0KS5cbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2ZpbHRlciAtIHRlbXBsYXRlIHVzZWQgdG8gY29uc3RydWN0IHRoZSBzZWFyY2ggZmlsdGVyIGZvciB0aGUgTERBUCBzZWFyY2guXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdGluZyBmaWx0ZXIgd2lsbCBiZSBjb25zdHJ1Y3RlZCBieSByZXBsYWNpbmcgYWxsICd7dXNlcl9uYW1lfScsICd7YmluZF9kbn0nLCAne3VzZXJfZG59JyxcbiAgICAgICAgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3tiYXNlX2RufScgc3Vic3RyaW5ncyBvZiB0aGUgdGVtcGxhdGUgd2l0aCB0aGUgYWN0dWFsIHVzZXIgbmFtZSwgYmluZCBETiwgdXNlciBETiwgYW5kIGJhc2UgRE5cbiAgICAgICAgZHVyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFjaCBMREFQIHNlYXJjaC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlLCB0aGF0IHRoZSBzcGVjaWFsIGNoYXJhY3RlcnMgbXVzdCBiZSBlc2NhcGVkIHByb3Blcmx5IGluIFhNTC5cbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIC0gYXR0cmlidXRlIG5hbWUgd2hvc2UgdmFsdWVzIHdpbGwgYmUgcmV0dXJuZWQgYnkgdGhlIExEQVAgc2VhcmNoLiAnY24nLCBieSBkZWZhdWx0LlxuICAgICAgICAgICAgICAgICAgICBwcmVmaXggLSBwcmVmaXgsIHRoYXQgd2lsbCBiZSBleHBlY3RlZCB0byBiZSBpbiBmcm9udCBvZiBlYWNoIHN0cmluZyBpbiB0aGUgb3JpZ2luYWwgbGlzdCBvZlxuICAgICAgICBzdHJpbmdzIHJldHVybmVkIGJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIExEQVAgc2VhcmNoLiBQcmVmaXggd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIG9yaWdpbmFsIHN0cmluZ3MgYW5kIHJlc3VsdGluZyBzdHJpbmdzIHdpbGwgYmVcbiAgICAgICAgdHJlYXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGxvY2FsIHJvbGUgbmFtZXMuIEVtcHR5LCBieSBkZWZhdWx0LlxuICAgICAgICAgICAgRXhhbXBsZTpcbiAgICAgICAgICAgICAgICA8bGRhcD5cbiAgICAgICAgICAgICAgICAgICAgPHNlcnZlcj5teV9sZGFwX3NlcnZlcjwvc2VydmVyPlxuICAgICAgICAgICAgICAgICAgICA8cm9sZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bXlfbG9jYWxfcm9sZTEgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxteV9sb2NhbF9yb2xlMiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3JvbGVzPlxuICAgICAgICAgICAgICAgICAgICA8cm9sZV9tYXBwaW5nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJhc2VfZG4+b3U9Z3JvdXBzLGRjPWV4YW1wbGUsZGM9Y29tPC9iYXNlX2RuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNjb3BlPnN1YnRyZWU8L3Njb3BlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlYXJjaF9maWx0ZXI+KCZhbXA7KG9iamVjdENsYXNzPWdyb3VwT2ZOYW1lcykobWVtYmVyPXtiaW5kX2RufSkpPC9zZWFyY2hfZmlsdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZT5jbjwvYXR0cmlidXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHByZWZpeD5jbGlja2hvdXNlXzwvcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICA8L3JvbGVfbWFwcGluZz5cbiAgICAgICAgICAgICAgICA8L2xkYXA+XG4gICAgICAgICAgICBFeGFtcGxlICh0eXBpY2FsIEFjdGl2ZSBEaXJlY3Rvcnkgd2l0aCByb2xlIG1hcHBpbmcgdGhhdCByZWxpZXMgb24gdGhlIGRldGVjdGVkIHVzZXIgRE4pOlxuICAgICAgICAgICAgICAgIDxsZGFwPlxuICAgICAgICAgICAgICAgICAgICA8c2VydmVyPm15X2FkX3NlcnZlcjwvc2VydmVyPlxuICAgICAgICAgICAgICAgICAgICA8cm9sZV9tYXBwaW5nPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJhc2VfZG4+Q049VXNlcnMsREM9ZXhhbXBsZSxEQz1jb208L2Jhc2VfZG4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlPkNOPC9hdHRyaWJ1dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2NvcGU+c3VidHJlZTwvc2NvcGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VhcmNoX2ZpbHRlcj4oJmFtcDsob2JqZWN0Q2xhc3M9Z3JvdXApKG1lbWJlcj17dXNlcl9kbn0pKTwvc2VhcmNoX2ZpbHRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmVmaXg+Y2xpY2tob3VzZV88L3ByZWZpeD5cbiAgICAgICAgICAgICAgICAgICAgPC9yb2xlX21hcHBpbmc+XG4gICAgICAgICAgICAgICAgPC9sZGFwPlxuICAgICAgICAtLT5cbiAgICA8L3VzZXJfZGlyZWN0b3JpZXM+XG5cbiAgICA8IS0tIERlZmF1bHQgcHJvZmlsZSBvZiBzZXR0aW5ncy4gLS0+XG4gICAgPGRlZmF1bHRfcHJvZmlsZT5kZWZhdWx0PC9kZWZhdWx0X3Byb2ZpbGU+XG5cbiAgICA8IS0tIENvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHByZWZpeGVzIGZvciB1c2VyLWRlZmluZWQgc2V0dGluZ3MuIC0tPlxuICAgIDxjdXN0b21fc2V0dGluZ3NfcHJlZml4ZXM+PC9jdXN0b21fc2V0dGluZ3NfcHJlZml4ZXM+XG5cbiAgICA8IS0tIFN5c3RlbSBwcm9maWxlIG9mIHNldHRpbmdzLiBUaGlzIHNldHRpbmdzIGFyZSB1c2VkIGJ5IGludGVybmFsIHByb2Nlc3NlcyAoRGlzdHJpYnV0ZWQgRERMXG4gICAgd29ya2VyIGFuZCBzbyBvbikuIC0tPlxuICAgIDwhLS0gPHN5c3RlbV9wcm9maWxlPmRlZmF1bHQ8L3N5c3RlbV9wcm9maWxlPiAtLT5cblxuICAgIDwhLS0gQnVmZmVyIHByb2ZpbGUgb2Ygc2V0dGluZ3MuXG4gICAgICAgIFRoaXMgc2V0dGluZ3MgYXJlIHVzZWQgYnkgQnVmZmVyIHN0b3JhZ2UgdG8gZmx1c2ggZGF0YSB0byB0aGUgdW5kZXJseWluZyB0YWJsZS5cbiAgICAgICAgRGVmYXVsdDogdXNlZCBmcm9tIHN5c3RlbV9wcm9maWxlIGRpcmVjdGl2ZS5cbiAgICAtLT5cbiAgICA8IS0tIDxidWZmZXJfcHJvZmlsZT5kZWZhdWx0PC9idWZmZXJfcHJvZmlsZT4gLS0+XG5cbiAgICA8IS0tIERlZmF1bHQgZGF0YWJhc2UuIC0tPlxuICAgIDxkZWZhdWx0X2RhdGFiYXNlPmRlZmF1bHQ8L2RlZmF1bHRfZGF0YWJhc2U+XG5cbiAgICA8IS0tIFNlcnZlciB0aW1lIHpvbmUgY291bGQgYmUgc2V0IGhlcmUuXG5cbiAgICAgICAgVGltZSB6b25lIGlzIHVzZWQgd2hlbiBjb252ZXJ0aW5nIGJldHdlZW4gU3RyaW5nIGFuZCBEYXRlVGltZSB0eXBlcyxcbiAgICAgICAgICB3aGVuIHByaW50aW5nIERhdGVUaW1lIGluIHRleHQgZm9ybWF0cyBhbmQgcGFyc2luZyBEYXRlVGltZSBmcm9tIHRleHQsXG4gICAgICAgICAgaXQgaXMgdXNlZCBpbiBkYXRlIGFuZCB0aW1lIHJlbGF0ZWQgZnVuY3Rpb25zLCBpZiBzcGVjaWZpYyB0aW1lIHpvbmUgd2FzIG5vdCBwYXNzZWQgYXMgYW4gYXJndW1lbnQuXG5cbiAgICAgICAgVGltZSB6b25lIGlzIHNwZWNpZmllZCBhcyBpZGVudGlmaWVyIGZyb20gSUFOQSB0aW1lIHpvbmUgZGF0YWJhc2UsIGxpa2UgVVRDIG9yIEFmcmljYS9BYmlkamFuLlxuICAgICAgICBJZiBub3Qgc3BlY2lmaWVkLCBzeXN0ZW0gdGltZSB6b25lIGF0IHNlcnZlciBzdGFydHVwIGlzIHVzZWQuXG5cbiAgICAgICAgUGxlYXNlIG5vdGUsIHRoYXQgc2VydmVyIGNvdWxkIGRpc3BsYXkgdGltZSB6b25lIGFsaWFzIGluc3RlYWQgb2Ygc3BlY2lmaWVkIG5hbWUuXG4gICAgICAgIEV4YW1wbGU6IFctU1UgaXMgYW4gYWxpYXMgZm9yIEV1cm9wZS9Nb3Njb3cgYW5kIFp1bHUgaXMgYW4gYWxpYXMgZm9yIFVUQy5cbiAgICAtLT5cbiAgICA8IS0tIDx0aW1lem9uZT5FdXJvcGUvTW9zY293PC90aW1lem9uZT4gLS0+XG5cbiAgICA8IS0tIFlvdSBjYW4gc3BlY2lmeSB1bWFzayBoZXJlIChzZWUgXCJtYW4gdW1hc2tcIikuIFNlcnZlciB3aWxsIGFwcGx5IGl0IG9uIHN0YXJ0dXAuXG4gICAgICAgIE51bWJlciBpcyBhbHdheXMgcGFyc2VkIGFzIG9jdGFsLiBEZWZhdWx0IHVtYXNrIGlzIDAyNyAob3RoZXIgdXNlcnMgY2Fubm90IHJlYWQgbG9ncywgZGF0YSBmaWxlcyxcbiAgICBldGM7IGdyb3VwIGNhbiBvbmx5IHJlYWQpLlxuICAgIC0tPlxuICAgIDwhLS0gPHVtYXNrPjAyMjwvdW1hc2s+IC0tPlxuXG4gICAgPCEtLSBQZXJmb3JtIG1sb2NrYWxsIGFmdGVyIHN0YXJ0dXAgdG8gbG93ZXIgZmlyc3QgcXVlcmllcyBsYXRlbmN5XG4gICAgICAgICAgYW5kIHRvIHByZXZlbnQgY2xpY2tob3VzZSBleGVjdXRhYmxlIGZyb20gYmVpbmcgcGFnZWQgb3V0IHVuZGVyIGhpZ2ggSU8gbG9hZC5cbiAgICAgICAgRW5hYmxpbmcgdGhpcyBvcHRpb24gaXMgcmVjb21tZW5kZWQgYnV0IHdpbGwgbGVhZCB0byBpbmNyZWFzZWQgc3RhcnR1cCB0aW1lIGZvciB1cCB0byBhIGZld1xuICAgIHNlY29uZHMuXG4gICAgLS0+XG4gICAgPG1sb2NrX2V4ZWN1dGFibGU+dHJ1ZTwvbWxvY2tfZXhlY3V0YWJsZT5cblxuICAgIDwhLS0gUmVhbGxvY2F0ZSBtZW1vcnkgZm9yIG1hY2hpbmUgY29kZSAoXCJ0ZXh0XCIpIHVzaW5nIGh1Z2UgcGFnZXMuIEhpZ2hseSBleHBlcmltZW50YWwuIC0tPlxuICAgIDxyZW1hcF9leGVjdXRhYmxlPmZhbHNlPC9yZW1hcF9leGVjdXRhYmxlPlxuXG4gICAgPCFbQ0RBVEFbXG4gICAgICAgIFVuY29tbWVudCBiZWxvdyBpbiBvcmRlciB0byB1c2UgSkRCQyB0YWJsZSBlbmdpbmUgYW5kIGZ1bmN0aW9uLlxuXG4gICAgICAgIFRvIGluc3RhbGwgYW5kIHJ1biBKREJDIGJyaWRnZSBpbiBiYWNrZ3JvdW5kOlxuICAgICAgICAqIFtEZWJpYW4vVWJ1bnR1XVxuICAgICAgICAgIGV4cG9ydCBNVk5fVVJMPWh0dHBzOi8vcmVwbzEubWF2ZW4ub3JnL21hdmVuMi9ydS95YW5kZXgvY2xpY2tob3VzZS9jbGlja2hvdXNlLWpkYmMtYnJpZGdlXG4gICAgICAgICAgZXhwb3J0IFBLR19WRVI9JChjdXJsIC1zTCAkTVZOX1VSTC9tYXZlbi1tZXRhZGF0YS54bWwgfCBncmVwICc8cmVsZWFzZT4nIHwgc2VkIC1lICdzfC4qPlxcKC4qXFwpPC4qfFxcMXwnKVxuICAgICAgICAgIHdnZXQgaHR0cHM6Ly9naXRodWIuY29tL0NsaWNrSG91c2UvY2xpY2tob3VzZS1qZGJjLWJyaWRnZS9yZWxlYXNlcy9kb3dubG9hZC92JFBLR19WRVIvY2xpY2tob3VzZS1qZGJjLWJyaWRnZV8kUEtHX1ZFUi0xX2FsbC5kZWJcbiAgICAgICAgICBhcHQgaW5zdGFsbCAtLW5vLWluc3RhbGwtcmVjb21tZW5kcyAtZiAuL2NsaWNraG91c2UtamRiYy1icmlkZ2VfJFBLR19WRVItMV9hbGwuZGViXG4gICAgICAgICAgY2xpY2tob3VzZS1qZGJjLWJyaWRnZSAmXG5cbiAgICAgICAgKiBbQ2VudE9TL1JIRUxdXG4gICAgICAgICAgZXhwb3J0IE1WTl9VUkw9aHR0cHM6Ly9yZXBvMS5tYXZlbi5vcmcvbWF2ZW4yL3J1L3lhbmRleC9jbGlja2hvdXNlL2NsaWNraG91c2UtamRiYy1icmlkZ2VcbiAgICAgICAgICBleHBvcnQgUEtHX1ZFUj0kKGN1cmwgLXNMICRNVk5fVVJML21hdmVuLW1ldGFkYXRhLnhtbCB8IGdyZXAgJzxyZWxlYXNlPicgfCBzZWQgLWUgJ3N8Lio+XFwoLipcXCk8Lip8XFwxfCcpXG4gICAgICAgICAgd2dldCBodHRwczovL2dpdGh1Yi5jb20vQ2xpY2tIb3VzZS9jbGlja2hvdXNlLWpkYmMtYnJpZGdlL3JlbGVhc2VzL2Rvd25sb2FkL3YkUEtHX1ZFUi9jbGlja2hvdXNlLWpkYmMtYnJpZGdlLSRQS0dfVkVSLTEubm9hcmNoLnJwbVxuICAgICAgICAgIHl1bSBsb2NhbGluc3RhbGwgLXkgY2xpY2tob3VzZS1qZGJjLWJyaWRnZS0kUEtHX1ZFUi0xLm5vYXJjaC5ycG1cbiAgICAgICAgICBjbGlja2hvdXNlLWpkYmMtYnJpZGdlICZcblxuICAgICAgICBQbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL0NsaWNrSG91c2UvY2xpY2tob3VzZS1qZGJjLWJyaWRnZSN1c2FnZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICBdXT5cbiAgICA8IS0tXG4gICAgPGpkYmNfYnJpZGdlPlxuICAgICAgICA8aG9zdD4xMjcuMC4wLjE8L2hvc3Q+XG4gICAgICAgIDxwb3J0PjkwMTk8L3BvcnQ+XG4gICAgPC9qZGJjX2JyaWRnZT5cbiAgICAtLT5cblxuICAgIDwhLS0gQ29uZmlndXJhdGlvbiBvZiBjbHVzdGVycyB0aGF0IGNvdWxkIGJlIHVzZWQgaW4gRGlzdHJpYnV0ZWQgdGFibGVzLlxuICAgICAgICBodHRwczovL2NsaWNraG91c2UuY29tL2RvY3MvZW4vb3BlcmF0aW9ucy90YWJsZV9lbmdpbmVzL2Rpc3RyaWJ1dGVkL1xuICAgICAgLS0+XG4gICAgPHJlbW90ZV9zZXJ2ZXJzPlxuXG4gICAgICAgIDwhLS0gVGVzdCBvbmx5IHNoYXJkIGNvbmZpZyBmb3IgdGVzdGluZyBkaXN0cmlidXRlZCBzdG9yYWdlIC0tPlxuICAgICAgICA8cG9zdGhvZz5cbiAgICAgICAgICAgIDwhLS0gSW50ZXItc2VydmVyIHBlci1jbHVzdGVyIHNlY3JldCBmb3IgRGlzdHJpYnV0ZWQgcXVlcmllc1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IG5vIHNlY3JldCAobm8gYXV0aGVudGljYXRpb24gd2lsbCBiZSBwZXJmb3JtZWQpXG5cbiAgICAgICAgICAgICAgICBJZiBzZXQsIHRoZW4gRGlzdHJpYnV0ZWQgcXVlcmllcyB3aWxsIGJlIHZhbGlkYXRlZCBvbiBzaGFyZHMsIHNvIGF0IGxlYXN0OlxuICAgICAgICAgICAgICAgIC0gc3VjaCBjbHVzdGVyIHNob3VsZCBleGlzdCBvbiB0aGUgc2hhcmQsXG4gICAgICAgICAgICAgICAgLSBzdWNoIGNsdXN0ZXIgc2hvdWxkIGhhdmUgdGhlIHNhbWUgc2VjcmV0LlxuXG4gICAgICAgICAgICAgICAgQW5kIGFsc28gKGFuZCB3aGljaCBpcyBtb3JlIGltcG9ydGFudCksIHRoZSBpbml0aWFsX3VzZXIgd2lsbFxuICAgICAgICAgICAgICAgIGJlIHVzZWQgYXMgY3VycmVudCB1c2VyIGZvciB0aGUgcXVlcnkuXG5cbiAgICAgICAgICAgICAgICBSaWdodCBub3cgdGhlIHByb3RvY29sIGlzIHByZXR0eSBzaW1wbGUgYW5kIGl0IG9ubHkgdGFrZXMgaW50byBhY2NvdW50OlxuICAgICAgICAgICAgICAgIC0gY2x1c3RlciBuYW1lXG4gICAgICAgICAgICAgICAgLSBxdWVyeVxuXG4gICAgICAgICAgICAgICAgQWxzbyBpdCB3aWxsIGJlIG5pY2UgaWYgdGhlIGZvbGxvd2luZyB3aWxsIGJlIGltcGxlbWVudGVkOlxuICAgICAgICAgICAgICAgIC0gc291cmNlIGhvc3RuYW1lIChzZWUgaW50ZXJzZXJ2ZXJfaHR0cF9ob3N0KSwgYnV0IHRoZW4gaXQgd2lsbCBkZXBlbmRzIGZyb20gRE5TLFxuICAgICAgICAgICAgICAgICAgaXQgY2FuIHVzZSBJUCBhZGRyZXNzIGluc3RlYWQsIGJ1dCB0aGVuIHRoZSB5b3UgbmVlZCB0byBnZXQgY29ycmVjdCBvbiB0aGUgaW5pdGlhdG9yIG5vZGUuXG4gICAgICAgICAgICAgICAgLSB0YXJnZXQgaG9zdG5hbWUgLyBpcCBhZGRyZXNzIChzYW1lIG5vdGVzIGFzIGZvciBzb3VyY2UgaG9zdG5hbWUpXG4gICAgICAgICAgICAgICAgLSB0aW1lLWJhc2VkIHNlY3VyaXR5IHRva2Vuc1xuICAgICAgICAgICAgLS0+XG4gICAgICAgICAgICA8IS0tIDxzZWNyZXQ+PC9zZWNyZXQ+IC0tPlxuXG4gICAgICAgICAgICA8c2hhcmQ+XG4gICAgICAgICAgICAgICAgPCEtLSBPcHRpb25hbC4gV2hldGhlciB0byB3cml0ZSBkYXRhIHRvIGp1c3Qgb25lIG9mIHRoZSByZXBsaWNhcy4gRGVmYXVsdDogZmFsc2VcbiAgICAgICAgICAgICAgICAod3JpdGUgZGF0YSB0byBhbGwgcmVwbGljYXMpLiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxpbnRlcm5hbF9yZXBsaWNhdGlvbj5mYWxzZTwvaW50ZXJuYWxfcmVwbGljYXRpb24+IC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gT3B0aW9uYWwuIFNoYXJkIHdlaWdodCB3aGVuIHdyaXRpbmcgZGF0YS4gRGVmYXVsdDogMS4gLS0+XG4gICAgICAgICAgICAgICAgPCEtLSA8d2VpZ2h0PjE8L3dlaWdodD4gLS0+XG4gICAgICAgICAgICAgICAgPHJlcGxpY2E+XG4gICAgICAgICAgICAgICAgICAgIDxob3N0PmxvY2FsaG9zdDwvaG9zdD5cbiAgICAgICAgICAgICAgICAgICAgPHBvcnQ+OTAwMDwvcG9ydD5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBPcHRpb25hbC4gUHJpb3JpdHkgb2YgdGhlIHJlcGxpY2EgZm9yIGxvYWRfYmFsYW5jaW5nLiBEZWZhdWx0OiAxIChsZXNzXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlIGhhcyBtb3JlIHByaW9yaXR5KS4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHByaW9yaXR5PjE8L3ByaW9yaXR5PiAtLT5cbiAgICAgICAgICAgICAgICA8L3JlcGxpY2E+XG4gICAgICAgICAgICA8L3NoYXJkPlxuICAgICAgICA8L3Bvc3Rob2c+XG4gICAgPC9yZW1vdGVfc2VydmVycz5cblxuICAgIDwhLS0gVGhlIGxpc3Qgb2YgaG9zdHMgYWxsb3dlZCB0byB1c2UgaW4gVVJMLXJlbGF0ZWQgc3RvcmFnZSBlbmdpbmVzIGFuZCB0YWJsZSBmdW5jdGlvbnMuXG4gICAgICAgIElmIHRoaXMgc2VjdGlvbiBpcyBub3QgcHJlc2VudCBpbiBjb25maWd1cmF0aW9uLCBhbGwgaG9zdHMgYXJlIGFsbG93ZWQuXG4gICAgLS0+XG4gICAgPHJlbW90ZV91cmxfYWxsb3dfaG9zdHM+XG4gICAgICAgIDwhLS0gSG9zdCBzaG91bGQgYmUgc3BlY2lmaWVkIGV4YWN0bHkgYXMgaW4gVVJMLiBUaGUgbmFtZSBpcyBjaGVja2VkIGJlZm9yZSBETlMgcmVzb2x1dGlvbi5cbiAgICAgICAgICAgIEV4YW1wbGU6IFwieWFuZGV4LnJ1XCIsIFwieWFuZGV4LnJ1LlwiIGFuZCBcInd3dy55YW5kZXgucnVcIiBhcmUgZGlmZmVyZW50IGhvc3RzLlxuICAgICAgICAgICAgICAgICAgICBJZiBwb3J0IGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIFVSTCwgdGhlIGhvc3Q6cG9ydCBpcyBjaGVja2VkIGFzIGEgd2hvbGUuXG4gICAgICAgICAgICAgICAgICAgIElmIGhvc3Qgc3BlY2lmaWVkIGhlcmUgd2l0aG91dCBwb3J0LCBhbnkgcG9ydCB3aXRoIHRoaXMgaG9zdCBhbGxvd2VkLlxuICAgICAgICAgICAgICAgICAgICBcInlhbmRleC5ydVwiIC0+IFwieWFuZGV4LnJ1OjQ0M1wiLCBcInlhbmRleC5ydTo4MFwiIGV0Yy4gaXMgYWxsb3dlZCwgYnV0IFwieWFuZGV4LnJ1OjgwXCIgLT4gb25seVxuICAgICAgICBcInlhbmRleC5ydTo4MFwiIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICBJZiB0aGUgaG9zdCBpcyBzcGVjaWZpZWQgYXMgSVAgYWRkcmVzcywgaXQgaXMgY2hlY2tlZCBhcyBzcGVjaWZpZWQgaW4gVVJMLiBFeGFtcGxlOlxuICAgICAgICBcIlsyYTAyOjZiODphOjphXVwiLlxuICAgICAgICAgICAgSWYgdGhlcmUgYXJlIHJlZGlyZWN0cyBhbmQgc3VwcG9ydCBmb3IgcmVkaXJlY3RzIGlzIGVuYWJsZWQsIGV2ZXJ5IHJlZGlyZWN0ICh0aGUgTG9jYXRpb24gZmllbGQpIGlzXG4gICAgICAgIGNoZWNrZWQuXG4gICAgICAgICAgICBIb3N0IHNob3VsZCBiZSBzcGVjaWZpZWQgdXNpbmcgdGhlIGhvc3QgeG1sIHRhZzpcbiAgICAgICAgICAgICAgICAgICAgPGhvc3Q+eWFuZGV4LnJ1PC9ob3N0PlxuICAgICAgICAtLT5cblxuICAgICAgICA8IS0tIFJlZ3VsYXIgZXhwcmVzc2lvbiBjYW4gYmUgc3BlY2lmaWVkLiBSRTIgZW5naW5lIGlzIHVzZWQgZm9yIHJlZ2V4cHMuXG4gICAgICAgICAgICBSZWdleHBzIGFyZSBub3QgYWxpZ25lZDogZG9uJ3QgZm9yZ2V0IHRvIGFkZCBeIGFuZCAkLiBBbHNvIGRvbid0IGZvcmdldCB0byBlc2NhcGUgZG90ICguKVxuICAgICAgICBtZXRhY2hhcmFjdGVyXG4gICAgICAgICAgICAoZm9yZ2V0dGluZyB0byBkbyBzbyBpcyBhIGNvbW1vbiBzb3VyY2Ugb2YgZXJyb3IpLlxuICAgICAgICAtLT5cbiAgICAgICAgPGhvc3RfcmVnZXhwPi4qPC9ob3N0X3JlZ2V4cD5cbiAgICA8L3JlbW90ZV91cmxfYWxsb3dfaG9zdHM+XG5cbiAgICA8IS0tIElmIGVsZW1lbnQgaGFzICdpbmNsJyBhdHRyaWJ1dGUsIHRoZW4gZm9yIGl0J3MgdmFsdWUgd2lsbCBiZSB1c2VkIGNvcnJlc3BvbmRpbmdcbiAgICBzdWJzdGl0dXRpb24gZnJvbSBhbm90aGVyIGZpbGUuXG4gICAgICAgIEJ5IGRlZmF1bHQsIHBhdGggdG8gZmlsZSB3aXRoIHN1YnN0aXR1dGlvbnMgaXMgL2V0Yy9tZXRyaWthLnhtbC4gSXQgY291bGQgYmUgY2hhbmdlZCBpbiBjb25maWcgaW5cbiAgICAnaW5jbHVkZV9mcm9tJyBlbGVtZW50LlxuICAgICAgICBWYWx1ZXMgZm9yIHN1YnN0aXR1dGlvbnMgYXJlIHNwZWNpZmllZCBpbiAvY2xpY2tob3VzZS9uYW1lX29mX3N1YnN0aXR1dGlvbiBlbGVtZW50cyBpbiB0aGF0IGZpbGUuXG4gICAgICAtLT5cblxuICAgIDwhLS0gWm9vS2VlcGVyIGlzIHVzZWQgdG8gc3RvcmUgbWV0YWRhdGEgYWJvdXQgcmVwbGljYXMsIHdoZW4gdXNpbmcgUmVwbGljYXRlZCB0YWJsZXMuXG4gICAgICAgIE9wdGlvbmFsLiBJZiB5b3UgZG9uJ3QgdXNlIHJlcGxpY2F0ZWQgdGFibGVzLCB5b3UgY291bGQgb21pdCB0aGF0LlxuXG4gICAgICAgIFNlZSBodHRwczovL2NsaWNraG91c2UuY29tL2RvY3MvZW4vZW5naW5lcy90YWJsZS1lbmdpbmVzL21lcmdldHJlZS1mYW1pbHkvcmVwbGljYXRpb24vXG4gICAgICAtLT5cblxuICAgIDx6b29rZWVwZXI+XG4gICAgICAgIDxub2RlPlxuICAgICAgICAgICAgPGhvc3Q+em9va2VlcGVyPC9ob3N0PlxuICAgICAgICAgICAgPHBvcnQ+MjE4MTwvcG9ydD5cbiAgICAgICAgPC9ub2RlPlxuICAgIDwvem9va2VlcGVyPlxuXG4gICAgPCEtLSBTdWJzdGl0dXRpb25zIGZvciBwYXJhbWV0ZXJzIG9mIHJlcGxpY2F0ZWQgdGFibGVzLlxuICAgICAgICAgIE9wdGlvbmFsLiBJZiB5b3UgZG9uJ3QgdXNlIHJlcGxpY2F0ZWQgdGFibGVzLCB5b3UgY291bGQgb21pdCB0aGF0LlxuXG4gICAgICAgIFNlZVxuICAgIGh0dHBzOi8vY2xpY2tob3VzZS5jb20vZG9jcy9lbi9lbmdpbmVzL3RhYmxlLWVuZ2luZXMvbWVyZ2V0cmVlLWZhbWlseS9yZXBsaWNhdGlvbi8jY3JlYXRpbmctcmVwbGljYXRlZC10YWJsZXNcbiAgICAgIC0tPlxuXG4gICAgPG1hY3Jvcz5cbiAgICAgICAgPHNoYXJkPjAxPC9zaGFyZD5cbiAgICAgICAgPHJlcGxpY2E+Y2gxPC9yZXBsaWNhPlxuICAgIDwvbWFjcm9zPlxuXG5cbiAgICA8IS0tIFJlbG9hZGluZyBpbnRlcnZhbCBmb3IgZW1iZWRkZWQgZGljdGlvbmFyaWVzLCBpbiBzZWNvbmRzLiBEZWZhdWx0OiAzNjAwLiAtLT5cbiAgICA8YnVpbHRpbl9kaWN0aW9uYXJpZXNfcmVsb2FkX2ludGVydmFsPjM2MDA8L2J1aWx0aW5fZGljdGlvbmFyaWVzX3JlbG9hZF9pbnRlcnZhbD5cblxuXG4gICAgPCEtLSBNYXhpbXVtIHNlc3Npb24gdGltZW91dCwgaW4gc2Vjb25kcy4gRGVmYXVsdDogMzYwMC4gLS0+XG4gICAgPG1heF9zZXNzaW9uX3RpbWVvdXQ+MzYwMDwvbWF4X3Nlc3Npb25fdGltZW91dD5cblxuICAgIDwhLS0gRGVmYXVsdCBzZXNzaW9uIHRpbWVvdXQsIGluIHNlY29uZHMuIERlZmF1bHQ6IDYwLiAtLT5cbiAgICA8ZGVmYXVsdF9zZXNzaW9uX3RpbWVvdXQ+NjA8L2RlZmF1bHRfc2Vzc2lvbl90aW1lb3V0PlxuXG4gICAgPCEtLSBTZW5kaW5nIGRhdGEgdG8gR3JhcGhpdGUgZm9yIG1vbml0b3JpbmcuIFNldmVyYWwgc2VjdGlvbnMgY2FuIGJlIGRlZmluZWQuIC0tPlxuICAgIDwhLS1cbiAgICAgICAgaW50ZXJ2YWwgLSBzZW5kIGV2ZXJ5IFggc2Vjb25kXG4gICAgICAgIHJvb3RfcGF0aCAtIHByZWZpeCBmb3Iga2V5c1xuICAgICAgICBob3N0bmFtZV9pbl9wYXRoIC0gYXBwZW5kIGhvc3RuYW1lIHRvIHJvb3RfcGF0aCAoZGVmYXVsdCA9IHRydWUpXG4gICAgICAgIG1ldHJpY3MgLSBzZW5kIGRhdGEgZnJvbSB0YWJsZSBzeXN0ZW0ubWV0cmljc1xuICAgICAgICBldmVudHMgLSBzZW5kIGRhdGEgZnJvbSB0YWJsZSBzeXN0ZW0uZXZlbnRzXG4gICAgICAgIGFzeW5jaHJvbm91c19tZXRyaWNzIC0gc2VuZCBkYXRhIGZyb20gdGFibGUgc3lzdGVtLmFzeW5jaHJvbm91c19tZXRyaWNzXG4gICAgLS0+XG4gICAgPCEtLVxuICAgIDxncmFwaGl0ZT5cbiAgICAgICAgPGhvc3Q+bG9jYWxob3N0PC9ob3N0PlxuICAgICAgICA8cG9ydD40MjAwMDwvcG9ydD5cbiAgICAgICAgPHRpbWVvdXQ+MC4xPC90aW1lb3V0PlxuICAgICAgICA8aW50ZXJ2YWw+NjA8L2ludGVydmFsPlxuICAgICAgICA8cm9vdF9wYXRoPm9uZV9taW48L3Jvb3RfcGF0aD5cbiAgICAgICAgPGhvc3RuYW1lX2luX3BhdGg+dHJ1ZTwvaG9zdG5hbWVfaW5fcGF0aD5cblxuICAgICAgICA8bWV0cmljcz50cnVlPC9tZXRyaWNzPlxuICAgICAgICA8ZXZlbnRzPnRydWU8L2V2ZW50cz5cbiAgICAgICAgPGV2ZW50c19jdW11bGF0aXZlPmZhbHNlPC9ldmVudHNfY3VtdWxhdGl2ZT5cbiAgICAgICAgPGFzeW5jaHJvbm91c19tZXRyaWNzPnRydWU8L2FzeW5jaHJvbm91c19tZXRyaWNzPlxuICAgIDwvZ3JhcGhpdGU+XG4gICAgPGdyYXBoaXRlPlxuICAgICAgICA8aG9zdD5sb2NhbGhvc3Q8L2hvc3Q+XG4gICAgICAgIDxwb3J0PjQyMDAwPC9wb3J0PlxuICAgICAgICA8dGltZW91dD4wLjE8L3RpbWVvdXQ+XG4gICAgICAgIDxpbnRlcnZhbD4xPC9pbnRlcnZhbD5cbiAgICAgICAgPHJvb3RfcGF0aD5vbmVfc2VjPC9yb290X3BhdGg+XG5cbiAgICAgICAgPG1ldHJpY3M+dHJ1ZTwvbWV0cmljcz5cbiAgICAgICAgPGV2ZW50cz50cnVlPC9ldmVudHM+XG4gICAgICAgIDxldmVudHNfY3VtdWxhdGl2ZT5mYWxzZTwvZXZlbnRzX2N1bXVsYXRpdmU+XG4gICAgICAgIDxhc3luY2hyb25vdXNfbWV0cmljcz5mYWxzZTwvYXN5bmNocm9ub3VzX21ldHJpY3M+XG4gICAgPC9ncmFwaGl0ZT5cbiAgICAtLT5cblxuICAgIDwhLS0gU2VydmUgZW5kcG9pbnQgZm9yIFByb21ldGhldXMgbW9uaXRvcmluZy4gLS0+XG4gICAgPCEtLVxuICAgICAgICBlbmRwb2ludCAtIG1lcnRpY3MgcGF0aCAocmVsYXRpdmUgdG8gcm9vdCwgc3RhdHJpbmcgd2l0aCBcIi9cIilcbiAgICAgICAgcG9ydCAtIHBvcnQgdG8gc2V0dXAgc2VydmVyLiBJZiBub3QgZGVmaW5lZCBvciAwIHRoYW4gaHR0cF9wb3J0IHVzZWRcbiAgICAgICAgbWV0cmljcyAtIHNlbmQgZGF0YSBmcm9tIHRhYmxlIHN5c3RlbS5tZXRyaWNzXG4gICAgICAgIGV2ZW50cyAtIHNlbmQgZGF0YSBmcm9tIHRhYmxlIHN5c3RlbS5ldmVudHNcbiAgICAgICAgYXN5bmNocm9ub3VzX21ldHJpY3MgLSBzZW5kIGRhdGEgZnJvbSB0YWJsZSBzeXN0ZW0uYXN5bmNocm9ub3VzX21ldHJpY3NcbiAgICAgICAgc3RhdHVzX2luZm8gLSBzZW5kIGRhdGEgZnJvbSBkaWZmZXJlbnQgY29tcG9uZW50IGZyb20gQ0gsIGV4OiBEaWN0aW9uYXJpZXMgc3RhdHVzXG4gICAgLS0+XG4gICAgPCEtLVxuICAgIDxwcm9tZXRoZXVzPlxuICAgICAgICA8ZW5kcG9pbnQ+L21ldHJpY3M8L2VuZHBvaW50PlxuICAgICAgICA8cG9ydD45MzYzPC9wb3J0PlxuXG4gICAgICAgIDxtZXRyaWNzPnRydWU8L21ldHJpY3M+XG4gICAgICAgIDxldmVudHM+dHJ1ZTwvZXZlbnRzPlxuICAgICAgICA8YXN5bmNocm9ub3VzX21ldHJpY3M+dHJ1ZTwvYXN5bmNocm9ub3VzX21ldHJpY3M+XG4gICAgICAgIDxzdGF0dXNfaW5mbz50cnVlPC9zdGF0dXNfaW5mbz5cbiAgICA8L3Byb21ldGhldXM+XG4gICAgLS0+XG5cbiAgICA8IS0tIFF1ZXJ5IGxvZy4gVXNlZCBvbmx5IGZvciBxdWVyaWVzIHdpdGggc2V0dGluZyBsb2dfcXVlcmllcyA9IDEuIC0tPlxuICAgIDxxdWVyeV9sb2c+XG4gICAgICAgIDwhLS0gV2hhdCB0YWJsZSB0byBpbnNlcnQgZGF0YS4gSWYgdGFibGUgaXMgbm90IGV4aXN0LCBpdCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAgICAgICAgICBXaGVuIHF1ZXJ5IGxvZyBzdHJ1Y3R1cmUgaXMgY2hhbmdlZCBhZnRlciBzeXN0ZW0gdXBkYXRlLFxuICAgICAgICAgICAgICB0aGVuIG9sZCB0YWJsZSB3aWxsIGJlIHJlbmFtZWQgYW5kIG5ldyB0YWJsZSB3aWxsIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS5cbiAgICAgICAgLS0+XG4gICAgICAgIDxkYXRhYmFzZT5zeXN0ZW08L2RhdGFiYXNlPlxuICAgICAgICA8dGFibGU+cXVlcnlfbG9nPC90YWJsZT5cbiAgICAgICAgPCEtLVxuICAgICAgICAgICAgUEFSVElUSU9OIEJZIGV4cHI6XG4gICAgICAgIGh0dHBzOi8vY2xpY2tob3VzZS5jb20vZG9jcy9lbi90YWJsZV9lbmdpbmVzL21lcmdldHJlZS1mYW1pbHkvY3VzdG9tX3BhcnRpdGlvbmluZ19rZXkvXG4gICAgICAgICAgICBFeGFtcGxlOlxuICAgICAgICAgICAgICAgIGV2ZW50X2RhdGVcbiAgICAgICAgICAgICAgICB0b01vbmRheShldmVudF9kYXRlKVxuICAgICAgICAgICAgICAgIHRvWVlZWU1NKGV2ZW50X2RhdGUpXG4gICAgICAgICAgICAgICAgdG9TdGFydE9mSG91cihldmVudF90aW1lKVxuICAgICAgICAtLT5cbiAgICAgICAgPHBhcnRpdGlvbl9ieT50b1lZWVlNTShldmVudF9kYXRlKTwvcGFydGl0aW9uX2J5PlxuICAgICAgICA8IS0tXG4gICAgICAgICAgICBUYWJsZSBUVEwgc3BlY2lmaWNhdGlvbjpcbiAgICAgICAgaHR0cHM6Ly9jbGlja2hvdXNlLmNvbS9kb2NzL2VuL2VuZ2luZXMvdGFibGUtZW5naW5lcy9tZXJnZXRyZWUtZmFtaWx5L21lcmdldHJlZS8jbWVyZ2V0cmVlLXRhYmxlLXR0bFxuICAgICAgICAgICAgRXhhbXBsZTpcbiAgICAgICAgICAgICAgICBldmVudF9kYXRlICsgSU5URVJWQUwgMSBXRUVLXG4gICAgICAgICAgICAgICAgZXZlbnRfZGF0ZSArIElOVEVSVkFMIDcgREFZIERFTEVURVxuICAgICAgICAgICAgICAgIGV2ZW50X2RhdGUgKyBJTlRFUlZBTCAyIFdFRUsgVE8gRElTSyAnYmJiJ1xuXG4gICAgICAgIDx0dGw+ZXZlbnRfZGF0ZSArIElOVEVSVkFMIDMwIERBWSBERUxFVEU8L3R0bD5cbiAgICAgICAgLS0+XG5cbiAgICAgICAgPCEtLSBJbnN0ZWFkIG9mIHBhcnRpdGlvbl9ieSwgeW91IGNhbiBwcm92aWRlIGZ1bGwgZW5naW5lIGV4cHJlc3Npb24gKHN0YXJ0aW5nIHdpdGggRU5HSU5FID1cbiAgICAgICAgKSB3aXRoIHBhcmFtZXRlcnMsXG4gICAgICAgICAgICBFeGFtcGxlOiA8ZW5naW5lPkVOR0lORSA9IE1lcmdlVHJlZSBQQVJUSVRJT04gQlkgdG9ZWVlZTU0oZXZlbnRfZGF0ZSkgT1JERVIgQlkgKGV2ZW50X2RhdGUsXG4gICAgICAgIGV2ZW50X3RpbWUpIFNFVFRJTkdTIGluZGV4X2dyYW51bGFyaXR5ID0gMTAyNDwvZW5naW5lPlxuICAgICAgICAgIC0tPlxuXG4gICAgICAgIDwhLS0gSW50ZXJ2YWwgb2YgZmx1c2hpbmcgZGF0YS4gLS0+XG4gICAgICAgIDxmbHVzaF9pbnRlcnZhbF9taWxsaXNlY29uZHM+NzUwMDwvZmx1c2hfaW50ZXJ2YWxfbWlsbGlzZWNvbmRzPlxuICAgIDwvcXVlcnlfbG9nPlxuXG4gICAgPCEtLSBUcmFjZSBsb2cuIFN0b3JlcyBzdGFjayB0cmFjZXMgY29sbGVjdGVkIGJ5IHF1ZXJ5IHByb2ZpbGVycy5cbiAgICAgICAgU2VlIHF1ZXJ5X3Byb2ZpbGVyX3JlYWxfdGltZV9wZXJpb2RfbnMgYW5kIHF1ZXJ5X3Byb2ZpbGVyX2NwdV90aW1lX3BlcmlvZF9ucyBzZXR0aW5ncy4gLS0+XG4gICAgPHRyYWNlX2xvZz5cbiAgICAgICAgPGRhdGFiYXNlPnN5c3RlbTwvZGF0YWJhc2U+XG4gICAgICAgIDx0YWJsZT50cmFjZV9sb2c8L3RhYmxlPlxuXG4gICAgICAgIDxwYXJ0aXRpb25fYnk+dG9ZWVlZTU0oZXZlbnRfZGF0ZSk8L3BhcnRpdGlvbl9ieT5cbiAgICAgICAgPGZsdXNoX2ludGVydmFsX21pbGxpc2Vjb25kcz43NTAwPC9mbHVzaF9pbnRlcnZhbF9taWxsaXNlY29uZHM+XG4gICAgPC90cmFjZV9sb2c+XG5cbiAgICA8IS0tIFF1ZXJ5IHRocmVhZCBsb2cuIEhhcyBpbmZvcm1hdGlvbiBhYm91dCBhbGwgdGhyZWFkcyBwYXJ0aWNpcGF0ZWQgaW4gcXVlcnkgZXhlY3V0aW9uLlxuICAgICAgICBVc2VkIG9ubHkgZm9yIHF1ZXJpZXMgd2l0aCBzZXR0aW5nIGxvZ19xdWVyeV90aHJlYWRzID0gMS4gLS0+XG4gICAgPHF1ZXJ5X3RocmVhZF9sb2c+XG4gICAgICAgIDxkYXRhYmFzZT5zeXN0ZW08L2RhdGFiYXNlPlxuICAgICAgICA8dGFibGU+cXVlcnlfdGhyZWFkX2xvZzwvdGFibGU+XG4gICAgICAgIDxwYXJ0aXRpb25fYnk+dG9ZWVlZTU0oZXZlbnRfZGF0ZSk8L3BhcnRpdGlvbl9ieT5cbiAgICAgICAgPGZsdXNoX2ludGVydmFsX21pbGxpc2Vjb25kcz43NTAwPC9mbHVzaF9pbnRlcnZhbF9taWxsaXNlY29uZHM+XG4gICAgPC9xdWVyeV90aHJlYWRfbG9nPlxuXG4gICAgPCEtLSBRdWVyeSB2aWV3cyBsb2cuIEhhcyBpbmZvcm1hdGlvbiBhYm91dCBhbGwgZGVwZW5kZW50IHZpZXdzIGFzc29jaWF0ZWQgd2l0aCBhIHF1ZXJ5LlxuICAgICAgICBVc2VkIG9ubHkgZm9yIHF1ZXJpZXMgd2l0aCBzZXR0aW5nIGxvZ19xdWVyeV92aWV3cyA9IDEuIC0tPlxuICAgIDxxdWVyeV92aWV3c19sb2c+XG4gICAgICAgIDxkYXRhYmFzZT5zeXN0ZW08L2RhdGFiYXNlPlxuICAgICAgICA8dGFibGU+cXVlcnlfdmlld3NfbG9nPC90YWJsZT5cbiAgICAgICAgPHBhcnRpdGlvbl9ieT50b1lZWVlNTShldmVudF9kYXRlKTwvcGFydGl0aW9uX2J5PlxuICAgICAgICA8Zmx1c2hfaW50ZXJ2YWxfbWlsbGlzZWNvbmRzPjc1MDA8L2ZsdXNoX2ludGVydmFsX21pbGxpc2Vjb25kcz5cbiAgICA8L3F1ZXJ5X3ZpZXdzX2xvZz5cblxuICAgIDwhLS0gVW5jb21tZW50IGlmIHVzZSBwYXJ0IGxvZy5cbiAgICAgICAgUGFydCBsb2cgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYWxsIGFjdGlvbnMgd2l0aCBwYXJ0cyBpbiBNZXJnZVRyZWUgdGFibGVzIChjcmVhdGlvbiwgZGVsZXRpb24sXG4gICAgbWVyZ2VzLCBkb3dubG9hZHMpLi0tPlxuICAgIDxwYXJ0X2xvZz5cbiAgICAgICAgPGRhdGFiYXNlPnN5c3RlbTwvZGF0YWJhc2U+XG4gICAgICAgIDx0YWJsZT5wYXJ0X2xvZzwvdGFibGU+XG4gICAgICAgIDxwYXJ0aXRpb25fYnk+dG9ZWVlZTU0oZXZlbnRfZGF0ZSk8L3BhcnRpdGlvbl9ieT5cbiAgICAgICAgPGZsdXNoX2ludGVydmFsX21pbGxpc2Vjb25kcz43NTAwPC9mbHVzaF9pbnRlcnZhbF9taWxsaXNlY29uZHM+XG4gICAgPC9wYXJ0X2xvZz5cblxuICAgIDwhLS0gVW5jb21tZW50IHRvIHdyaXRlIHRleHQgbG9nIGludG8gdGFibGUuXG4gICAgICAgIFRleHQgbG9nIGNvbnRhaW5zIGFsbCBpbmZvcm1hdGlvbiBmcm9tIHVzdWFsIHNlcnZlciBsb2cgYnV0IHN0b3JlcyBpdCBpbiBzdHJ1Y3R1cmVkIGFuZCBlZmZpY2llbnRcbiAgICB3YXkuXG4gICAgICAgIFRoZSBsZXZlbCBvZiB0aGUgbWVzc2FnZXMgdGhhdCBnb2VzIHRvIHRoZSB0YWJsZSBjYW4gYmUgbGltaXRlZCAoPGxldmVsPiksIGlmIG5vdCBzcGVjaWZpZWQgYWxsXG4gICAgbWVzc2FnZXMgd2lsbCBnbyB0byB0aGUgdGFibGUuXG4gICAgPHRleHRfbG9nPlxuICAgICAgICA8ZGF0YWJhc2U+c3lzdGVtPC9kYXRhYmFzZT5cbiAgICAgICAgPHRhYmxlPnRleHRfbG9nPC90YWJsZT5cbiAgICAgICAgPGZsdXNoX2ludGVydmFsX21pbGxpc2Vjb25kcz43NTAwPC9mbHVzaF9pbnRlcnZhbF9taWxsaXNlY29uZHM+XG4gICAgICAgIDxsZXZlbD48L2xldmVsPlxuICAgIDwvdGV4dF9sb2c+XG4gICAgLS0+XG5cbiAgICA8IS0tIE1ldHJpYyBsb2cgY29udGFpbnMgcm93cyB3aXRoIGN1cnJlbnQgdmFsdWVzIG9mIFByb2ZpbGVFdmVudHMsIEN1cnJlbnRNZXRyaWNzIGNvbGxlY3RlZFxuICAgIHdpdGggXCJjb2xsZWN0X2ludGVydmFsX21pbGxpc2Vjb25kc1wiIGludGVydmFsLiAtLT5cbiAgICA8bWV0cmljX2xvZz5cbiAgICAgICAgPGRhdGFiYXNlPnN5c3RlbTwvZGF0YWJhc2U+XG4gICAgICAgIDx0YWJsZT5tZXRyaWNfbG9nPC90YWJsZT5cbiAgICAgICAgPGZsdXNoX2ludGVydmFsX21pbGxpc2Vjb25kcz43NTAwPC9mbHVzaF9pbnRlcnZhbF9taWxsaXNlY29uZHM+XG4gICAgICAgIDxjb2xsZWN0X2ludGVydmFsX21pbGxpc2Vjb25kcz4xMDAwPC9jb2xsZWN0X2ludGVydmFsX21pbGxpc2Vjb25kcz5cbiAgICA8L21ldHJpY19sb2c+XG5cbiAgICA8IS0tXG4gICAgICAgIEFzeW5jaHJvbm91cyBtZXRyaWMgbG9nIGNvbnRhaW5zIHZhbHVlcyBvZiBtZXRyaWNzIGZyb21cbiAgICAgICAgc3lzdGVtLmFzeW5jaHJvbm91c19tZXRyaWNzLlxuICAgIC0tPlxuICAgIDxhc3luY2hyb25vdXNfbWV0cmljX2xvZz5cbiAgICAgICAgPGRhdGFiYXNlPnN5c3RlbTwvZGF0YWJhc2U+XG4gICAgICAgIDx0YWJsZT5hc3luY2hyb25vdXNfbWV0cmljX2xvZzwvdGFibGU+XG4gICAgICAgIDwhLS1cbiAgICAgICAgICAgIEFzeW5jaHJvbm91cyBtZXRyaWNzIGFyZSB1cGRhdGVkIG9uY2UgYSBtaW51dGUsIHNvIHRoZXJlIGlzXG4gICAgICAgICAgICBubyBuZWVkIHRvIGZsdXNoIG1vcmUgb2Z0ZW4uXG4gICAgICAgIC0tPlxuICAgICAgICA8Zmx1c2hfaW50ZXJ2YWxfbWlsbGlzZWNvbmRzPjcwMDA8L2ZsdXNoX2ludGVydmFsX21pbGxpc2Vjb25kcz5cbiAgICA8L2FzeW5jaHJvbm91c19tZXRyaWNfbG9nPlxuXG4gICAgPCEtLVxuICAgICAgICBPcGVuVGVsZW1ldHJ5IGxvZyBjb250YWlucyBPcGVuVGVsZW1ldHJ5IHRyYWNlIHNwYW5zLlxuICAgIC0tPlxuICAgIDxvcGVudGVsZW1ldHJ5X3NwYW5fbG9nPlxuICAgICAgICA8IS0tXG4gICAgICAgICAgICBUaGUgZGVmYXVsdCB0YWJsZSBjcmVhdGlvbiBjb2RlIGlzIGluc3VmZmljaWVudCwgdGhpcyA8ZW5naW5lPiBzcGVjXG4gICAgICAgICAgICBpcyBhIHdvcmthcm91bmQuIFRoZXJlIGlzIG5vICdldmVudF90aW1lJyBmb3IgdGhpcyBsb2csIGJ1dCB0d28gdGltZXMsXG4gICAgICAgICAgICBzdGFydCBhbmQgZmluaXNoLiBJdCBpcyBzb3J0ZWQgYnkgZmluaXNoIHRpbWUsIHRvIGF2b2lkIGluc2VydGluZ1xuICAgICAgICAgICAgZGF0YSB0b28gZmFyIGF3YXkgaW4gdGhlIHBhc3QgKHByb2JhYmx5IHdlIGNhbiBzb21ldGltZXMgaW5zZXJ0IGEgc3BhblxuICAgICAgICAgICAgdGhhdCBpcyBzZWNvbmRzIGVhcmxpZXIgdGhhbiB0aGUgbGFzdCBzcGFuIGluIHRoZSB0YWJsZSwgZHVlIHRvIGEgcmFjZVxuICAgICAgICAgICAgYmV0d2VlbiBzZXZlcmFsIHNwYW5zIGluc2VydGVkIGluIHBhcmFsbGVsKS4gVGhpcyBnaXZlcyB0aGUgc3BhbnMgYVxuICAgICAgICAgICAgZ2xvYmFsIG9yZGVyIHRoYXQgd2UgY2FuIHVzZSB0byBlLmcuIHJldHJ5IGluc2VydGlvbiBpbnRvIHNvbWUgZXh0ZXJuYWxcbiAgICAgICAgICAgIHN5c3RlbS5cbiAgICAgICAgLS0+XG4gICAgICAgIDxlbmdpbmU+XG4gICAgICAgICAgICBlbmdpbmUgTWVyZ2VUcmVlXG4gICAgICAgICAgICBwYXJ0aXRpb24gYnkgdG9ZWVlZTU0oZmluaXNoX2RhdGUpXG4gICAgICAgICAgICBvcmRlciBieSAoZmluaXNoX2RhdGUsIGZpbmlzaF90aW1lX3VzLCB0cmFjZV9pZClcbiAgICAgICAgPC9lbmdpbmU+XG4gICAgICAgIDxkYXRhYmFzZT5zeXN0ZW08L2RhdGFiYXNlPlxuICAgICAgICA8dGFibGU+b3BlbnRlbGVtZXRyeV9zcGFuX2xvZzwvdGFibGU+XG4gICAgICAgIDxmbHVzaF9pbnRlcnZhbF9taWxsaXNlY29uZHM+NzUwMDwvZmx1c2hfaW50ZXJ2YWxfbWlsbGlzZWNvbmRzPlxuICAgIDwvb3BlbnRlbGVtZXRyeV9zcGFuX2xvZz5cblxuXG4gICAgPCEtLSBDcmFzaCBsb2cuIFN0b3JlcyBzdGFjayB0cmFjZXMgZm9yIGZhdGFsIGVycm9ycy5cbiAgICAgICAgVGhpcyB0YWJsZSBpcyBub3JtYWxseSBlbXB0eS4gLS0+XG4gICAgPGNyYXNoX2xvZz5cbiAgICAgICAgPGRhdGFiYXNlPnN5c3RlbTwvZGF0YWJhc2U+XG4gICAgICAgIDx0YWJsZT5jcmFzaF9sb2c8L3RhYmxlPlxuXG4gICAgICAgIDxwYXJ0aXRpb25fYnkgLz5cbiAgICAgICAgPGZsdXNoX2ludGVydmFsX21pbGxpc2Vjb25kcz4xMDAwPC9mbHVzaF9pbnRlcnZhbF9taWxsaXNlY29uZHM+XG4gICAgPC9jcmFzaF9sb2c+XG5cbiAgICA8IS0tIFNlc3Npb24gbG9nLiBTdG9yZXMgdXNlciBsb2cgaW4gKHN1Y2Nlc3NmdWwgb3Igbm90KSBhbmQgbG9nIG91dCBldmVudHMuIC0tPlxuICAgIDxzZXNzaW9uX2xvZz5cbiAgICAgICAgPGRhdGFiYXNlPnN5c3RlbTwvZGF0YWJhc2U+XG4gICAgICAgIDx0YWJsZT5zZXNzaW9uX2xvZzwvdGFibGU+XG5cbiAgICAgICAgPHBhcnRpdGlvbl9ieT50b1lZWVlNTShldmVudF9kYXRlKTwvcGFydGl0aW9uX2J5PlxuICAgICAgICA8Zmx1c2hfaW50ZXJ2YWxfbWlsbGlzZWNvbmRzPjc1MDA8L2ZsdXNoX2ludGVydmFsX21pbGxpc2Vjb25kcz5cbiAgICA8L3Nlc3Npb25fbG9nPlxuXG4gICAgPCEtLSBQYXJhbWV0ZXJzIGZvciBlbWJlZGRlZCBkaWN0aW9uYXJpZXMsIHVzZWQgaW4gWWFuZGV4Lk1ldHJpY2EuXG4gICAgICAgIFNlZSBodHRwczovL2NsaWNraG91c2UuY29tL2RvY3MvZW4vZGljdHMvaW50ZXJuYWxfZGljdHMvXG4gICAgLS0+XG5cbiAgICA8IS0tIFBhdGggdG8gZmlsZSB3aXRoIHJlZ2lvbiBoaWVyYXJjaHkuIC0tPlxuICAgIDwhLS1cbiAgICA8cGF0aF90b19yZWdpb25zX2hpZXJhcmNoeV9maWxlPi9vcHQvZ2VvL3JlZ2lvbnNfaGllcmFyY2h5LnR4dDwvcGF0aF90b19yZWdpb25zX2hpZXJhcmNoeV9maWxlPiAtLT5cblxuICAgIDwhLS0gUGF0aCB0byBkaXJlY3Rvcnkgd2l0aCBmaWxlcyBjb250YWluaW5nIG5hbWVzIG9mIHJlZ2lvbnMgLS0+XG4gICAgPCEtLSA8cGF0aF90b19yZWdpb25zX25hbWVzX2ZpbGVzPi9vcHQvZ2VvLzwvcGF0aF90b19yZWdpb25zX25hbWVzX2ZpbGVzPiAtLT5cblxuXG4gICAgPCEtLSA8dG9wX2xldmVsX2RvbWFpbnNfcGF0aD4vdmFyL2xpYi9jbGlja2hvdXNlL3RvcF9sZXZlbF9kb21haW5zLzwvdG9wX2xldmVsX2RvbWFpbnNfcGF0aD4gLS0+XG4gICAgPCEtLSBDdXN0b20gVExEIGxpc3RzLlxuICAgICAgICBGb3JtYXQ6IDxuYW1lPi9wYXRoL3RvL2ZpbGU8L25hbWU+XG5cbiAgICAgICAgQ2hhbmdlcyB3aWxsIG5vdCBiZSBhcHBsaWVkIHcvbyBzZXJ2ZXIgcmVzdGFydC5cbiAgICAgICAgUGF0aCB0byB0aGUgbGlzdCBpcyB1bmRlciB0b3BfbGV2ZWxfZG9tYWluc19wYXRoIChzZWUgYWJvdmUpLlxuICAgIC0tPlxuICAgIDx0b3BfbGV2ZWxfZG9tYWluc19saXN0cz5cbiAgICAgICAgPCEtLVxuICAgICAgICA8cHVibGljX3N1ZmZpeF9saXN0Pi9wYXRoL3RvL3B1YmxpY19zdWZmaXhfbGlzdC5kYXQ8L3B1YmxpY19zdWZmaXhfbGlzdD5cbiAgICAgICAgLS0+XG4gICAgPC90b3BfbGV2ZWxfZG9tYWluc19saXN0cz5cblxuICAgIDwhLS0gQ29uZmlndXJhdGlvbiBvZiBleHRlcm5hbCBkaWN0aW9uYXJpZXMuIFNlZTpcbiAgICAgICAgaHR0cHM6Ly9jbGlja2hvdXNlLmNvbS9kb2NzL2VuL3NxbC1yZWZlcmVuY2UvZGljdGlvbmFyaWVzL2V4dGVybmFsLWRpY3Rpb25hcmllcy9leHRlcm5hbC1kaWN0c1xuICAgIC0tPlxuICAgIDxkaWN0aW9uYXJpZXNfY29uZmlnPipfZGljdGlvbmFyeS54bWw8L2RpY3Rpb25hcmllc19jb25maWc+XG5cbiAgICA8IS0tIENvbmZpZ3VyYXRpb24gb2YgdXNlciBkZWZpbmVkIGV4ZWN1dGFibGUgZnVuY3Rpb25zIC0tPlxuICAgIDx1c2VyX2RlZmluZWRfZXhlY3V0YWJsZV9mdW5jdGlvbnNfY29uZmlnPipfZnVuY3Rpb24ueG1sPC91c2VyX2RlZmluZWRfZXhlY3V0YWJsZV9mdW5jdGlvbnNfY29uZmlnPlxuXG4gICAgPCEtLSBVbmNvbW1lbnQgaWYgeW91IHdhbnQgZGF0YSB0byBiZSBjb21wcmVzc2VkIDMwLTEwMCUgYmV0dGVyLlxuICAgICAgICBEb24ndCBkbyB0aGF0IGlmIHlvdSBqdXN0IHN0YXJ0ZWQgdXNpbmcgQ2xpY2tIb3VzZS5cbiAgICAgIC0tPlxuICAgIDwhLS1cbiAgICA8Y29tcHJlc3Npb24+XG4gICAgICAgIDwhLSAtIFNldCBvZiB2YXJpYW50cy4gQ2hlY2tlZCBpbiBvcmRlci4gTGFzdCBtYXRjaGluZyBjYXNlIHdpbnMuIElmIG5vdGhpbmcgbWF0Y2hlcywgbHo0IHdpbGwgYmVcbiAgICB1c2VkLiAtIC0+XG4gICAgICAgIDxjYXNlPlxuXG4gICAgICAgICAgICA8IS0gLSBDb25kaXRpb25zLiBBbGwgbXVzdCBiZSBzYXRpc2ZpZWQuIFNvbWUgY29uZGl0aW9ucyBtYXkgYmUgb21pdHRlZC4gLSAtPlxuICAgICAgICAgICAgPG1pbl9wYXJ0X3NpemU+MTAwMDAwMDAwMDA8L21pbl9wYXJ0X3NpemU+ICAgICAgICA8IS0gLSBNaW4gcGFydCBzaXplIGluIGJ5dGVzLiAtIC0+XG4gICAgICAgICAgICA8bWluX3BhcnRfc2l6ZV9yYXRpbz4wLjAxPC9taW5fcGFydF9zaXplX3JhdGlvPiAgIDwhLSAtIE1pbiBzaXplIG9mIHBhcnQgcmVsYXRpdmUgdG8gd2hvbGUgdGFibGVcbiAgICBzaXplLiAtIC0+XG5cbiAgICAgICAgICAgIDwhLSAtIFdoYXQgY29tcHJlc3Npb24gbWV0aG9kIHRvIHVzZS4gLSAtPlxuICAgICAgICAgICAgPG1ldGhvZD56c3RkPC9tZXRob2Q+XG4gICAgICAgIDwvY2FzZT5cbiAgICA8L2NvbXByZXNzaW9uPlxuICAgIC0tPlxuXG4gICAgPCEtLSBDb25maWd1cmF0aW9uIG9mIGVuY3J5cHRpb24uIFRoZSBzZXJ2ZXIgZXhlY3V0ZXMgYSBjb21tYW5kIHRvXG4gICAgICAgIG9idGFpbiBhbiBlbmNyeXB0aW9uIGtleSBhdCBzdGFydHVwIGlmIHN1Y2ggYSBjb21tYW5kIGlzXG4gICAgICAgIGRlZmluZWQsIG9yIGVuY3J5cHRpb24gY29kZWNzIHdpbGwgYmUgZGlzYWJsZWQgb3RoZXJ3aXNlLiBUaGVcbiAgICAgICAgY29tbWFuZCBpcyBleGVjdXRlZCB0aHJvdWdoIC9iaW4vc2ggYW5kIGlzIGV4cGVjdGVkIHRvIHdyaXRlXG4gICAgICAgIGEgQmFzZTY0LWVuY29kZWQga2V5IHRvIHRoZSBzdGRvdXQuIC0tPlxuICAgIDxlbmNyeXB0aW9uX2NvZGVjcz5cbiAgICAgICAgPCEtLSBhZXNfMTI4X2djbV9zaXYgLS0+XG4gICAgICAgIDwhLS0gRXhhbXBsZSBvZiBnZXR0aW5nIGhleCBrZXkgZnJvbSBlbnYgLS0+XG4gICAgICAgIDwhLS0gdGhlIGNvZGUgc2hvdWxkIHVzZSB0aGlzIGtleSBhbmQgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGl0cyBsZW5ndGggaXMgbm90IDE2IGJ5dGVzIC0tPlxuICAgICAgICA8IS0ta2V5X2hleFxuICAgICAgICBmcm9tX2Vudj1cIi4uLlwiPjwva2V5X2hleCAtLT5cblxuICAgICAgICA8IS0tIEV4YW1wbGUgb2YgbXVsdGlwbGUgaGV4IGtleXMuIFRoZXkgY2FuIGJlIGltcG9ydGVkIGZyb20gZW52IG9yIGJlIHdyaXR0ZW4gZG93biBpblxuICAgICAgICBjb25maWctLT5cbiAgICAgICAgPCEtLSB0aGUgY29kZSBzaG91bGQgdXNlIHRoZXNlIGtleXMgYW5kIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGVpciBsZW5ndGggaXMgbm90IDE2IGJ5dGVzIC0tPlxuICAgICAgICA8IS0tIGtleV9oZXggaWQ9XCIwXCI+Li4uPC9rZXlfaGV4IC0tPlxuICAgICAgICA8IS0tIGtleV9oZXggaWQ9XCIxXCIgZnJvbV9lbnY9XCIuLlwiPjwva2V5X2hleCAtLT5cbiAgICAgICAgPCEtLSBrZXlfaGV4IGlkPVwiMlwiPi4uLjwva2V5X2hleCAtLT5cbiAgICAgICAgPCEtLSBjdXJyZW50X2tleV9pZD4yPC9jdXJyZW50X2tleV9pZCAtLT5cblxuICAgICAgICA8IS0tIEV4YW1wbGUgb2YgZ2V0dGluZyBoZXgga2V5IGZyb20gY29uZmlnIC0tPlxuICAgICAgICA8IS0tIHRoZSBjb2RlIHNob3VsZCB1c2UgdGhpcyBrZXkgYW5kIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBpdHMgbGVuZ3RoIGlzIG5vdCAxNiBieXRlcyAtLT5cbiAgICAgICAgPCEtLSBrZXk+Li4uPC9rZXkgLS0+XG5cbiAgICAgICAgPCEtLSBleGFtcGxlIG9mIGFkZGluZyBub25jZSAtLT5cbiAgICAgICAgPCEtLSBub25jZT4uLi48L25vbmNlIC0tPlxuXG4gICAgICAgIDwhLS0gL2Flc18xMjhfZ2NtX3NpdiAtLT5cbiAgICA8L2VuY3J5cHRpb25fY29kZWNzPlxuXG4gICAgPCEtLSBBbGxvdyB0byBleGVjdXRlIGRpc3RyaWJ1dGVkIERETCBxdWVyaWVzIChDUkVBVEUsIERST1AsIEFMVEVSLCBSRU5BTUUpIG9uIGNsdXN0ZXIuXG4gICAgICAgIFdvcmtzIG9ubHkgaWYgWm9vS2VlcGVyIGlzIGVuYWJsZWQuIENvbW1lbnQgaXQgaWYgc3VjaCBmdW5jdGlvbmFsaXR5IGlzbid0IHJlcXVpcmVkLiAtLT5cbiAgICA8ZGlzdHJpYnV0ZWRfZGRsPlxuICAgICAgICA8IS0tIFBhdGggaW4gWm9vS2VlcGVyIHRvIHF1ZXVlIHdpdGggRERMIHF1ZXJpZXMgLS0+XG4gICAgICAgIDxwYXRoPi9jbGlja2hvdXNlL3Rhc2tfcXVldWUvZGRsPC9wYXRoPlxuXG4gICAgICAgIDwhLS0gU2V0dGluZ3MgZnJvbSB0aGlzIHByb2ZpbGUgd2lsbCBiZSB1c2VkIHRvIGV4ZWN1dGUgRERMIHF1ZXJpZXMgLS0+XG4gICAgICAgIDwhLS0gPHByb2ZpbGU+ZGVmYXVsdDwvcHJvZmlsZT4gLS0+XG5cbiAgICAgICAgPCEtLSBDb250cm9scyBob3cgbXVjaCBPTiBDTFVTVEVSIHF1ZXJpZXMgY2FuIGJlIHJ1biBzaW11bHRhbmVvdXNseS4gLS0+XG4gICAgICAgIDwhLS0gPHBvb2xfc2l6ZT4xPC9wb29sX3NpemU+IC0tPlxuXG4gICAgICAgIDwhLS1cbiAgICAgICAgICAgIENsZWFudXAgc2V0dGluZ3MgKGFjdGl2ZSB0YXNrcyB3aWxsIG5vdCBiZSByZW1vdmVkKVxuICAgICAgICAtLT5cblxuICAgICAgICA8IS0tIENvbnRyb2xzIHRhc2sgVFRMIChkZWZhdWx0IDEgd2VlaykgLS0+XG4gICAgICAgIDwhLS0gPHRhc2tfbWF4X2xpZmV0aW1lPjYwNDgwMDwvdGFza19tYXhfbGlmZXRpbWU+IC0tPlxuXG4gICAgICAgIDwhLS0gQ29udHJvbHMgaG93IG9mdGVuIGNsZWFudXAgc2hvdWxkIGJlIHBlcmZvcm1lZCAoaW4gc2Vjb25kcykgLS0+XG4gICAgICAgIDwhLS0gPGNsZWFudXBfZGVsYXlfcGVyaW9kPjYwPC9jbGVhbnVwX2RlbGF5X3BlcmlvZD4gLS0+XG5cbiAgICAgICAgPCEtLSBDb250cm9scyBob3cgbWFueSB0YXNrcyBjb3VsZCBiZSBpbiB0aGUgcXVldWUgLS0+XG4gICAgICAgIDwhLS0gPG1heF90YXNrc19pbl9xdWV1ZT4xMDAwPC9tYXhfdGFza3NfaW5fcXVldWU+IC0tPlxuICAgIDwvZGlzdHJpYnV0ZWRfZGRsPlxuXG4gICAgPCEtLSBTZXR0aW5ncyB0byBmaW5lIHR1bmUgTWVyZ2VUcmVlIHRhYmxlcy4gU2VlIGRvY3VtZW50YXRpb24gaW4gc291cmNlIGNvZGUsIGluXG4gICAgTWVyZ2VUcmVlU2V0dGluZ3MuaCAtLT5cbiAgICA8IS0tXG4gICAgPG1lcmdlX3RyZWU+XG4gICAgICAgIDxtYXhfc3VzcGljaW91c19icm9rZW5fcGFydHM+NTwvbWF4X3N1c3BpY2lvdXNfYnJva2VuX3BhcnRzPlxuICAgIDwvbWVyZ2VfdHJlZT5cbiAgICAtLT5cblxuICAgIDwhLS0gUHJvdGVjdGlvbiBmcm9tIGFjY2lkZW50YWwgRFJPUC5cbiAgICAgICAgSWYgc2l6ZSBvZiBhIE1lcmdlVHJlZSB0YWJsZSBpcyBncmVhdGVyIHRoYW4gbWF4X3RhYmxlX3NpemVfdG9fZHJvcCAoaW4gYnl0ZXMpIHRoYW4gdGFibGUgY291bGQgbm90XG4gICAgYmUgZHJvcHBlZCB3aXRoIGFueSBEUk9QIHF1ZXJ5LlxuICAgICAgICBJZiB5b3Ugd2FudCBkbyBkZWxldGUgb25lIHRhYmxlIGFuZCBkb24ndCB3YW50IHRvIGNoYW5nZSBjbGlja2hvdXNlLXNlcnZlciBjb25maWcsIHlvdSBjb3VsZCBjcmVhdGVcbiAgICBzcGVjaWFsIGZpbGUgPGNsaWNraG91c2UtcGF0aD4vZmxhZ3MvZm9yY2VfZHJvcF90YWJsZSBhbmQgbWFrZSBEUk9QIG9uY2UuXG4gICAgICAgIEJ5IGRlZmF1bHQgbWF4X3RhYmxlX3NpemVfdG9fZHJvcCBpcyA1MEdCOyBtYXhfdGFibGVfc2l6ZV90b19kcm9wPTAgYWxsb3dzIHRvIERST1AgYW55IHRhYmxlcy5cbiAgICAgICAgVGhlIHNhbWUgZm9yIG1heF9wYXJ0aXRpb25fc2l6ZV90b19kcm9wLlxuICAgICAgICBVbmNvbW1lbnQgdG8gZGlzYWJsZSBwcm90ZWN0aW9uLlxuICAgIC0tPlxuICAgIDwhLS0gPG1heF90YWJsZV9zaXplX3RvX2Ryb3A+MDwvbWF4X3RhYmxlX3NpemVfdG9fZHJvcD4gLS0+XG4gICAgPCEtLSA8bWF4X3BhcnRpdGlvbl9zaXplX3RvX2Ryb3A+MDwvbWF4X3BhcnRpdGlvbl9zaXplX3RvX2Ryb3A+IC0tPlxuXG4gICAgPCEtLSBFeGFtcGxlIG9mIHBhcmFtZXRlcnMgZm9yIEdyYXBoaXRlTWVyZ2VUcmVlIHRhYmxlIGVuZ2luZSAtLT5cbiAgICA8Z3JhcGhpdGVfcm9sbHVwX2V4YW1wbGU+XG4gICAgICAgIDxwYXR0ZXJuPlxuICAgICAgICAgICAgPHJlZ2V4cD5jbGlja19jb3N0PC9yZWdleHA+XG4gICAgICAgICAgICA8ZnVuY3Rpb24+YW55PC9mdW5jdGlvbj5cbiAgICAgICAgICAgIDxyZXRlbnRpb24+XG4gICAgICAgICAgICAgICAgPGFnZT4wPC9hZ2U+XG4gICAgICAgICAgICAgICAgPHByZWNpc2lvbj4zNjAwPC9wcmVjaXNpb24+XG4gICAgICAgICAgICA8L3JldGVudGlvbj5cbiAgICAgICAgICAgIDxyZXRlbnRpb24+XG4gICAgICAgICAgICAgICAgPGFnZT44NjQwMDwvYWdlPlxuICAgICAgICAgICAgICAgIDxwcmVjaXNpb24+NjA8L3ByZWNpc2lvbj5cbiAgICAgICAgICAgIDwvcmV0ZW50aW9uPlxuICAgICAgICA8L3BhdHRlcm4+XG4gICAgICAgIDxkZWZhdWx0PlxuICAgICAgICAgICAgPGZ1bmN0aW9uPm1heDwvZnVuY3Rpb24+XG4gICAgICAgICAgICA8cmV0ZW50aW9uPlxuICAgICAgICAgICAgICAgIDxhZ2U+MDwvYWdlPlxuICAgICAgICAgICAgICAgIDxwcmVjaXNpb24+NjA8L3ByZWNpc2lvbj5cbiAgICAgICAgICAgIDwvcmV0ZW50aW9uPlxuICAgICAgICAgICAgPHJldGVudGlvbj5cbiAgICAgICAgICAgICAgICA8YWdlPjM2MDA8L2FnZT5cbiAgICAgICAgICAgICAgICA8cHJlY2lzaW9uPjMwMDwvcHJlY2lzaW9uPlxuICAgICAgICAgICAgPC9yZXRlbnRpb24+XG4gICAgICAgICAgICA8cmV0ZW50aW9uPlxuICAgICAgICAgICAgICAgIDxhZ2U+ODY0MDA8L2FnZT5cbiAgICAgICAgICAgICAgICA8cHJlY2lzaW9uPjM2MDA8L3ByZWNpc2lvbj5cbiAgICAgICAgICAgIDwvcmV0ZW50aW9uPlxuICAgICAgICA8L2RlZmF1bHQ+XG4gICAgPC9ncmFwaGl0ZV9yb2xsdXBfZXhhbXBsZT5cblxuICAgIDwhLS0gRGlyZWN0b3J5IGluIDxjbGlja2hvdXNlLXBhdGg+IGNvbnRhaW5pbmcgc2NoZW1hIGZpbGVzIGZvciB2YXJpb3VzIGlucHV0IGZvcm1hdHMuXG4gICAgICAgIFRoZSBkaXJlY3Rvcnkgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gICAgICAtLT5cbiAgICA8Zm9ybWF0X3NjaGVtYV9wYXRoPi92YXIvbGliL2NsaWNraG91c2UvZm9ybWF0X3NjaGVtYXMvPC9mb3JtYXRfc2NoZW1hX3BhdGg+XG5cbiAgICA8IS0tIERlZmF1bHQgcXVlcnkgbWFza2luZyBydWxlcywgbWF0Y2hpbmcgbGluZXMgd291bGQgYmUgcmVwbGFjZWQgd2l0aCBzb21ldGhpbmcgZWxzZSBpbiB0aGVcbiAgICBsb2dzXG4gICAgICAgIChib3RoIHRleHQgbG9ncyBhbmQgc3lzdGVtLnF1ZXJ5X2xvZykuXG4gICAgICAgIG5hbWUgLSBuYW1lIGZvciB0aGUgcnVsZSAob3B0aW9uYWwpXG4gICAgICAgIHJlZ2V4cCAtIFJFMiBjb21wYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbiAobWFuZGF0b3J5KVxuICAgICAgICByZXBsYWNlIC0gc3Vic3RpdHV0aW9uIHN0cmluZyBmb3Igc2Vuc2l0aXZlIGRhdGEgKG9wdGlvbmFsLCBieSBkZWZhdWx0IC0gc2l4IGFzdGVyaXNrcylcbiAgICAtLT5cbiAgICA8cXVlcnlfbWFza2luZ19ydWxlcz5cbiAgICAgICAgPHJ1bGU+XG4gICAgICAgICAgICA8bmFtZT5oaWRlIGVuY3J5cHQvZGVjcnlwdCBhcmd1bWVudHM8L25hbWU+XG4gICAgICAgICAgICA8cmVnZXhwPigoPzphZXNfKT8oPzplbmNyeXB0fGRlY3J5cHQpKD86X215c3FsKT8pXFxzKlxcKFxccyooPzonKD86XFxcXCd8LikrJ3wuKj8pXFxzKlxcKTwvcmVnZXhwPlxuICAgICAgICAgICAgPCEtLSBvciBtb3JlIHNlY3VyZSwgYnV0IGFsc28gbW9yZSBpbnZhc2l2ZTpcbiAgICAgICAgICAgICAgICAoYWVzX1xcdyspXFxzKlxcKC4qXFwpXG4gICAgICAgICAgICAtLT5cbiAgICAgICAgICAgIDxyZXBsYWNlPlxcMSg/Pz8pPC9yZXBsYWNlPlxuICAgICAgICA8L3J1bGU+XG4gICAgPC9xdWVyeV9tYXNraW5nX3J1bGVzPlxuXG4gICAgPCEtLSBVbmNvbW1lbnQgdG8gdXNlIGN1c3RvbSBodHRwIGhhbmRsZXJzLlxuICAgICAgICBydWxlcyBhcmUgY2hlY2tlZCBmcm9tIHRvcCB0byBib3R0b20sIGZpcnN0IG1hdGNoIHJ1bnMgdGhlIGhhbmRsZXJcbiAgICAgICAgICAgIHVybCAtIHRvIG1hdGNoIHJlcXVlc3QgVVJMLCB5b3UgY2FuIHVzZSAncmVnZXg6JyBwcmVmaXggdG8gdXNlIHJlZ2V4IG1hdGNoKG9wdGlvbmFsKVxuICAgICAgICAgICAgbWV0aG9kcyAtIHRvIG1hdGNoIHJlcXVlc3QgbWV0aG9kLCB5b3UgY2FuIHVzZSBjb21tYXMgdG8gc2VwYXJhdGUgbXVsdGlwbGUgbWV0aG9kIG1hdGNoZXMob3B0aW9uYWwpXG4gICAgICAgICAgICBoZWFkZXJzIC0gdG8gbWF0Y2ggcmVxdWVzdCBoZWFkZXJzLCBtYXRjaCBlYWNoIGNoaWxkIGVsZW1lbnQoY2hpbGQgZWxlbWVudCBuYW1lIGlzIGhlYWRlciBuYW1lKSxcbiAgICB5b3UgY2FuIHVzZSAncmVnZXg6JyBwcmVmaXggdG8gdXNlIHJlZ2V4IG1hdGNoKG9wdGlvbmFsKVxuICAgICAgICBoYW5kbGVyIGlzIHJlcXVlc3QgaGFuZGxlclxuICAgICAgICAgICAgdHlwZSAtIHN1cHBvcnRlZCB0eXBlczogc3RhdGljLCBkeW5hbWljX3F1ZXJ5X2hhbmRsZXIsIHByZWRlZmluZWRfcXVlcnlfaGFuZGxlclxuICAgICAgICAgICAgcXVlcnkgLSB1c2Ugd2l0aCBwcmVkZWZpbmVkX3F1ZXJ5X2hhbmRsZXIgdHlwZSwgZXhlY3V0ZXMgcXVlcnkgd2hlbiB0aGUgaGFuZGxlciBpcyBjYWxsZWRcbiAgICAgICAgICAgIHF1ZXJ5X3BhcmFtX25hbWUgLSB1c2Ugd2l0aCBkeW5hbWljX3F1ZXJ5X2hhbmRsZXIgdHlwZSwgZXh0cmFjdHMgYW5kIGV4ZWN1dGVzIHRoZSB2YWx1ZVxuICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIDxxdWVyeV9wYXJhbV9uYW1lPiB2YWx1ZSBpbiBIVFRQIHJlcXVlc3QgcGFyYW1zXG4gICAgICAgICAgICBzdGF0dXMgLSB1c2Ugd2l0aCBzdGF0aWMgdHlwZSwgcmVzcG9uc2Ugc3RhdHVzIGNvZGVcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZSAtIHVzZSB3aXRoIHN0YXRpYyB0eXBlLCByZXNwb25zZSBjb250ZW50LXR5cGVcbiAgICAgICAgICAgIHJlc3BvbnNlX2NvbnRlbnQgLSB1c2Ugd2l0aCBzdGF0aWMgdHlwZSwgUmVzcG9uc2UgY29udGVudCBzZW50IHRvIGNsaWVudCwgd2hlbiB1c2luZyB0aGUgcHJlZml4XG4gICAgJ2ZpbGU6Ly8nIG9yICdjb25maWc6Ly8nLCBmaW5kIHRoZSBjb250ZW50IGZyb20gdGhlIGZpbGUgb3IgY29uZmlndXJhdGlvbiBzZW5kIHRvIGNsaWVudC5cblxuICAgIDxodHRwX2hhbmRsZXJzPlxuICAgICAgICA8cnVsZT5cbiAgICAgICAgICAgIDx1cmw+LzwvdXJsPlxuICAgICAgICAgICAgPG1ldGhvZHM+UE9TVCxHRVQ8L21ldGhvZHM+XG4gICAgICAgICAgICA8aGVhZGVycz48cHJhZ21hPm5vLWNhY2hlPC9wcmFnbWE+PC9oZWFkZXJzPlxuICAgICAgICAgICAgPGhhbmRsZXI+XG4gICAgICAgICAgICAgICAgPHR5cGU+ZHluYW1pY19xdWVyeV9oYW5kbGVyPC90eXBlPlxuICAgICAgICAgICAgICAgIDxxdWVyeV9wYXJhbV9uYW1lPnF1ZXJ5PC9xdWVyeV9wYXJhbV9uYW1lPlxuICAgICAgICAgICAgPC9oYW5kbGVyPlxuICAgICAgICA8L3J1bGU+XG5cbiAgICAgICAgPHJ1bGU+XG4gICAgICAgICAgICA8dXJsPi9wcmVkZWZpbmVkX3F1ZXJ5PC91cmw+XG4gICAgICAgICAgICA8bWV0aG9kcz5QT1NULEdFVDwvbWV0aG9kcz5cbiAgICAgICAgICAgIDxoYW5kbGVyPlxuICAgICAgICAgICAgICAgIDx0eXBlPnByZWRlZmluZWRfcXVlcnlfaGFuZGxlcjwvdHlwZT5cbiAgICAgICAgICAgICAgICA8cXVlcnk+U0VMRUNUICogRlJPTSBzeXN0ZW0uc2V0dGluZ3M8L3F1ZXJ5PlxuICAgICAgICAgICAgPC9oYW5kbGVyPlxuICAgICAgICA8L3J1bGU+XG5cbiAgICAgICAgPHJ1bGU+XG4gICAgICAgICAgICA8aGFuZGxlcj5cbiAgICAgICAgICAgICAgICA8dHlwZT5zdGF0aWM8L3R5cGU+XG4gICAgICAgICAgICAgICAgPHN0YXR1cz4yMDA8L3N0YXR1cz5cbiAgICAgICAgICAgICAgICA8Y29udGVudF90eXBlPnRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTg8L2NvbnRlbnRfdHlwZT5cbiAgICAgICAgICAgICAgICA8cmVzcG9uc2VfY29udGVudD5jb25maWc6Ly9odHRwX3NlcnZlcl9kZWZhdWx0X3Jlc3BvbnNlPC9yZXNwb25zZV9jb250ZW50PlxuICAgICAgICAgICAgPC9oYW5kbGVyPlxuICAgICAgICA8L3J1bGU+XG4gICAgPC9odHRwX2hhbmRsZXJzPlxuICAgIC0tPlxuXG4gICAgPHNlbmRfY3Jhc2hfcmVwb3J0cz5cbiAgICAgICAgPCEtLSBDaGFuZ2luZyA8ZW5hYmxlZD4gdG8gdHJ1ZSBhbGxvd3Mgc2VuZGluZyBjcmFzaCByZXBvcnRzIHRvIC0tPlxuICAgICAgICA8IS0tIHRoZSBDbGlja0hvdXNlIGNvcmUgZGV2ZWxvcGVycyB0ZWFtIHZpYSBTZW50cnkgaHR0cHM6Ly9zZW50cnkuaW8gLS0+XG4gICAgICAgIDwhLS0gRG9pbmcgc28gYXQgbGVhc3QgaW4gcHJlLXByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIGlzIGhpZ2hseSBhcHByZWNpYXRlZCAtLT5cbiAgICAgICAgPGVuYWJsZWQ+ZmFsc2U8L2VuYWJsZWQ+XG4gICAgICAgIDwhLS0gQ2hhbmdlIDxhbm9ueW1pemU+IHRvIHRydWUgaWYgeW91IGRvbid0IGZlZWwgY29tZm9ydGFibGUgYXR0YWNoaW5nIHRoZSBzZXJ2ZXIgaG9zdG5hbWVcbiAgICAgICAgdG8gdGhlIGNyYXNoIHJlcG9ydCAtLT5cbiAgICAgICAgPGFub255bWl6ZT5mYWxzZTwvYW5vbnltaXplPlxuICAgICAgICA8IS0tIERlZmF1bHQgZW5kcG9pbnQgc2hvdWxkIGJlIGNoYW5nZWQgdG8gZGlmZmVyZW50IFNlbnRyeSBEU04gb25seSBpZiB5b3UgaGF2ZSAtLT5cbiAgICAgICAgPCEtLSBzb21lIGluLWhvdXNlIGVuZ2luZWVycyBvciBoaXJlZCBjb25zdWx0YW50cyB3aG8ncmUgZ29pbmcgdG8gZGVidWcgQ2xpY2tIb3VzZSBpc3N1ZXNcbiAgICAgICAgZm9yIHlvdSAtLT5cbiAgICAgICAgPGVuZHBvaW50Pmh0dHBzOi8vNmYzMzAzNGNmZTY4NGRkN2EzYWI5ODc1ZTU3YjFjOGRAbzM4ODg3MC5pbmdlc3Quc2VudHJ5LmlvLzUyMjYyNzc8L2VuZHBvaW50PlxuICAgIDwvc2VuZF9jcmFzaF9yZXBvcnRzPlxuXG4gICAgPCEtLSBVbmNvbW1lbnQgdG8gZGlzYWJsZSBDbGlja0hvdXNlIGludGVybmFsIEROUyBjYWNoaW5nLiAtLT5cbiAgICA8IS0tIDxkaXNhYmxlX2ludGVybmFsX2Ruc19jYWNoZT4xPC9kaXNhYmxlX2ludGVybmFsX2Ruc19jYWNoZT4gLS0+XG5cbiAgICA8IS0tIFlvdSBjYW4gYWxzbyBjb25maWd1cmUgcm9ja3NkYiBsaWtlIHRoaXM6IC0tPlxuICAgIDwhLS1cbiAgICA8cm9ja3NkYj5cbiAgICAgICAgPG9wdGlvbnM+XG4gICAgICAgICAgICA8bWF4X2JhY2tncm91bmRfam9icz44PC9tYXhfYmFja2dyb3VuZF9qb2JzPlxuICAgICAgICA8L29wdGlvbnM+XG4gICAgICAgIDxjb2x1bW5fZmFtaWx5X29wdGlvbnM+XG4gICAgICAgICAgICA8bnVtX2xldmVscz4yPC9udW1fbGV2ZWxzPlxuICAgICAgICA8L2NvbHVtbl9mYW1pbHlfb3B0aW9ucz5cbiAgICAgICAgPHRhYmxlcz5cbiAgICAgICAgICAgIDx0YWJsZT5cbiAgICAgICAgICAgICAgICA8bmFtZT5UQUJMRTwvbmFtZT5cbiAgICAgICAgICAgICAgICA8b3B0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAgPG1heF9iYWNrZ3JvdW5kX2pvYnM+ODwvbWF4X2JhY2tncm91bmRfam9icz5cbiAgICAgICAgICAgICAgICA8L29wdGlvbnM+XG4gICAgICAgICAgICAgICAgPGNvbHVtbl9mYW1pbHlfb3B0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAgPG51bV9sZXZlbHM+MjwvbnVtX2xldmVscz5cbiAgICAgICAgICAgICAgICA8L2NvbHVtbl9mYW1pbHlfb3B0aW9ucz5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvdGFibGVzPlxuICAgIDwvcm9ja3NkYj5cbiAgICAtLT5cbjwveWFuZGV4PiIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vZG9ja2VyL2NsaWNraG91c2UvdXNlcnMueG1sCiAgICAgICAgdGFyZ2V0OiAvZXRjL2NsaWNraG91c2Utc2VydmVyL3VzZXJzLnhtbAogICAgICAgIGNvbnRlbnQ6ICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PlxuPHlhbmRleD5cbiAgICA8IS0tIFNlZSBhbHNvIHRoZSBmaWxlcyBpbiB1c2Vycy5kIGRpcmVjdG9yeSB3aGVyZSB0aGUgc2V0dGluZ3MgY2FuIGJlIG92ZXJyaWRkZW4uIC0tPlxuXG4gICAgPCEtLSBQcm9maWxlcyBvZiBzZXR0aW5ncy4gLS0+XG4gICAgPHByb2ZpbGVzPlxuICAgICAgICA8IS0tIERlZmF1bHQgc2V0dGluZ3MuIC0tPlxuICAgICAgICA8ZGVmYXVsdD5cbiAgICAgICAgICAgIDwhLS0gTWF4aW11bSBtZW1vcnkgdXNhZ2UgZm9yIHByb2Nlc3Npbmcgc2luZ2xlIHF1ZXJ5LCBpbiBieXRlcy4gLS0+XG4gICAgICAgICAgICA8bWF4X21lbW9yeV91c2FnZT4xMDAwMDAwMDAwMDwvbWF4X21lbW9yeV91c2FnZT5cblxuICAgICAgICAgICAgPCEtLSBIb3cgdG8gY2hvb3NlIGJldHdlZW4gcmVwbGljYXMgZHVyaW5nIGRpc3RyaWJ1dGVkIHF1ZXJ5IHByb2Nlc3NpbmcuXG4gICAgICAgICAgICAgICAgcmFuZG9tIC0gY2hvb3NlIHJhbmRvbSByZXBsaWNhIGZyb20gc2V0IG9mIHJlcGxpY2FzIHdpdGggbWluaW11bSBudW1iZXIgb2YgZXJyb3JzXG4gICAgICAgICAgICAgICAgbmVhcmVzdF9ob3N0bmFtZSAtIGZyb20gc2V0IG9mIHJlcGxpY2FzIHdpdGggbWluaW11bSBudW1iZXIgb2YgZXJyb3JzLCBjaG9vc2UgcmVwbGljYVxuICAgICAgICAgICAgICAgICAgd2l0aCBtaW5pbXVtIG51bWJlciBvZiBkaWZmZXJlbnQgc3ltYm9scyBiZXR3ZWVuIHJlcGxpY2EncyBob3N0bmFtZSBhbmQgbG9jYWwgaG9zdG5hbWVcbiAgICAgICAgICAgICAgICAgIChIYW1taW5nIGRpc3RhbmNlKS5cbiAgICAgICAgICAgICAgICBpbl9vcmRlciAtIGZpcnN0IGxpdmUgcmVwbGljYSBpcyBjaG9zZW4gaW4gc3BlY2lmaWVkIG9yZGVyLlxuICAgICAgICAgICAgICAgIGZpcnN0X29yX3JhbmRvbSAtIGlmIGZpcnN0IHJlcGxpY2Egb25lIGhhcyBoaWdoZXIgbnVtYmVyIG9mIGVycm9ycywgcGljayBhIHJhbmRvbSBvbmUgZnJvbSByZXBsaWNhc1xuICAgICAgICAgICAgd2l0aCBtaW5pbXVtIG51bWJlciBvZiBlcnJvcnMuXG4gICAgICAgICAgICAtLT5cbiAgICAgICAgICAgIDxsb2FkX2JhbGFuY2luZz5yYW5kb208L2xvYWRfYmFsYW5jaW5nPlxuXG4gICAgICAgICAgICA8YWxsb3dfbm9uZGV0ZXJtaW5pc3RpY19tdXRhdGlvbnM+MTwvYWxsb3dfbm9uZGV0ZXJtaW5pc3RpY19tdXRhdGlvbnM+XG5cbiAgICAgICAgPC9kZWZhdWx0PlxuXG4gICAgICAgIDwhLS0gUHJvZmlsZSB0aGF0IGFsbG93cyBvbmx5IHJlYWQgcXVlcmllcy4gLS0+XG4gICAgICAgIDxyZWFkb25seT5cbiAgICAgICAgICAgIDxyZWFkb25seT4xPC9yZWFkb25seT5cbiAgICAgICAgPC9yZWFkb25seT5cblxuICAgIDwvcHJvZmlsZXM+XG5cbiAgICA8IS0tIFVzZXJzIGFuZCBBQ0wuIC0tPlxuICAgIDx1c2Vycz5cbiAgICAgICAgPCEtLSBJZiB1c2VyIG5hbWUgd2FzIG5vdCBzcGVjaWZpZWQsICdkZWZhdWx0JyB1c2VyIGlzIHVzZWQuIC0tPlxuICAgICAgICA8ZGVmYXVsdD5cbiAgICAgICAgICAgIDwhLS0gU2VlIGFsc28gdGhlIGZpbGVzIGluIHVzZXJzLmQgZGlyZWN0b3J5IHdoZXJlIHRoZSBwYXNzd29yZCBjYW4gYmUgb3ZlcnJpZGRlbi5cblxuICAgICAgICAgICAgICAgIFBhc3N3b3JkIGNvdWxkIGJlIHNwZWNpZmllZCBpbiBwbGFpbnRleHQgb3IgaW4gU0hBMjU2IChpbiBoZXggZm9ybWF0KS5cblxuICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHNwZWNpZnkgcGFzc3dvcmQgaW4gcGxhaW50ZXh0IChub3QgcmVjb21tZW5kZWQpLCBwbGFjZSBpdCBpbiAncGFzc3dvcmQnIGVsZW1lbnQuXG4gICAgICAgICAgICAgICAgRXhhbXBsZTogPHBhc3N3b3JkPnF3ZXJ0eTwvcGFzc3dvcmQ+LlxuICAgICAgICAgICAgICAgIFBhc3N3b3JkIGNvdWxkIGJlIGVtcHR5LlxuXG4gICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gc3BlY2lmeSBTSEEyNTYsIHBsYWNlIGl0IGluICdwYXNzd29yZF9zaGEyNTZfaGV4JyBlbGVtZW50LlxuICAgICAgICAgICAgICAgIEV4YW1wbGU6XG4gICAgICAgICAgICA8cGFzc3dvcmRfc2hhMjU2X2hleD42NWU4NGJlMzM1MzJmYjc4NGM0ODEyOTY3NWY5ZWZmM2E2ODJiMjcxNjhjMGVhNzQ0YjJjZjU4ZWUwMjMzN2M1PC9wYXNzd29yZF9zaGEyNTZfaGV4PlxuICAgICAgICAgICAgICAgIFJlc3RyaWN0aW9ucyBvZiBTSEEyNTY6IGltcG9zc2liaWxpdHkgdG8gY29ubmVjdCB0byBDbGlja0hvdXNlIHVzaW5nIE15U1FMIEpTIGNsaWVudCAoYXMgb2YgSnVseVxuICAgICAgICAgICAgMjAxOSkuXG5cbiAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0byBzcGVjaWZ5IGRvdWJsZSBTSEExLCBwbGFjZSBpdCBpbiAncGFzc3dvcmRfZG91YmxlX3NoYTFfaGV4JyBlbGVtZW50LlxuICAgICAgICAgICAgICAgIEV4YW1wbGU6XG4gICAgICAgICAgICA8cGFzc3dvcmRfZG91YmxlX3NoYTFfaGV4PmUzOTU3OTZkNjU0NmIxYjY1ZGI5ZDY2NWNkNDNmMGU4NThkZDQzMDM8L3Bhc3N3b3JkX2RvdWJsZV9zaGExX2hleD5cblxuICAgICAgICAgICAgICAgIElmIHlvdSB3YW50IHRvIHNwZWNpZnkgYSBwcmV2aW91c2x5IGRlZmluZWQgTERBUCBzZXJ2ZXIgKHNlZSAnbGRhcF9zZXJ2ZXJzJyBpbiB0aGUgbWFpbiBjb25maWcpIGZvclxuICAgICAgICAgICAgYXV0aGVudGljYXRpb24sXG4gICAgICAgICAgICAgICAgICBwbGFjZSBpdHMgbmFtZSBpbiAnc2VydmVyJyBlbGVtZW50IGluc2lkZSAnbGRhcCcgZWxlbWVudC5cbiAgICAgICAgICAgICAgICBFeGFtcGxlOiA8bGRhcD48c2VydmVyPm15X2xkYXBfc2VydmVyPC9zZXJ2ZXI+PC9sZGFwPlxuXG4gICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyIHZpYSBLZXJiZXJvcyAoYXNzdW1pbmcgS2VyYmVyb3MgaXMgZW5hYmxlZCwgc2VlICdrZXJiZXJvcycgaW5cbiAgICAgICAgICAgIHRoZSBtYWluIGNvbmZpZyksXG4gICAgICAgICAgICAgICAgICBwbGFjZSAna2VyYmVyb3MnIGVsZW1lbnQgaW5zdGVhZCBvZiAncGFzc3dvcmQnIChhbmQgc2ltaWxhcikgZWxlbWVudHMuXG4gICAgICAgICAgICAgICAgVGhlIG5hbWUgcGFydCBvZiB0aGUgY2Fub25pY2FsIHByaW5jaXBhbCBuYW1lIG9mIHRoZSBpbml0aWF0b3IgbXVzdCBtYXRjaCB0aGUgdXNlciBuYW1lIGZvclxuICAgICAgICAgICAgYXV0aGVudGljYXRpb24gdG8gc3VjY2VlZC5cbiAgICAgICAgICAgICAgICBZb3UgY2FuIGFsc28gcGxhY2UgJ3JlYWxtJyBlbGVtZW50IGluc2lkZSAna2VyYmVyb3MnIGVsZW1lbnQgdG8gZnVydGhlciByZXN0cmljdCBhdXRoZW50aWNhdGlvbiB0b1xuICAgICAgICAgICAgb25seSB0aG9zZSByZXF1ZXN0c1xuICAgICAgICAgICAgICAgICAgd2hvc2UgaW5pdGlhdG9yJ3MgcmVhbG0gbWF0Y2hlcyBpdC5cbiAgICAgICAgICAgICAgICBFeGFtcGxlOiA8a2VyYmVyb3MgLz5cbiAgICAgICAgICAgICAgICBFeGFtcGxlOiA8a2VyYmVyb3M+PHJlYWxtPkVYQU1QTEUuQ09NPC9yZWFsbT48L2tlcmJlcm9zPlxuXG4gICAgICAgICAgICAgICAgSG93IHRvIGdlbmVyYXRlIGRlY2VudCBwYXNzd29yZDpcbiAgICAgICAgICAgICAgICBFeGVjdXRlOiBQQVNTV09SRD0kKGJhc2U2NCA8IC9kZXYvdXJhbmRvbSB8IGhlYWQgLWM4KTsgZWNobyBcIiRQQVNTV09SRFwiOyBlY2hvIC1uIFwiJFBBU1NXT1JEXCIgfFxuICAgICAgICAgICAgc2hhMjU2c3VtIHwgdHIgLWQgJy0nXG4gICAgICAgICAgICAgICAgSW4gZmlyc3QgbGluZSB3aWxsIGJlIHBhc3N3b3JkIGFuZCBpbiBzZWNvbmQgLSBjb3JyZXNwb25kaW5nIFNIQTI1Ni5cblxuICAgICAgICAgICAgICAgIEhvdyB0byBnZW5lcmF0ZSBkb3VibGUgU0hBMTpcbiAgICAgICAgICAgICAgICBFeGVjdXRlOiBQQVNTV09SRD0kKGJhc2U2NCA8IC9kZXYvdXJhbmRvbSB8IGhlYWQgLWM4KTsgZWNobyBcIiRQQVNTV09SRFwiOyBlY2hvIC1uIFwiJFBBU1NXT1JEXCIgfFxuICAgICAgICAgICAgc2hhMXN1bSB8IHRyIC1kICctJyB8IHh4ZCAtciAtcCB8IHNoYTFzdW0gfCB0ciAtZCAnLSdcbiAgICAgICAgICAgICAgICBJbiBmaXJzdCBsaW5lIHdpbGwgYmUgcGFzc3dvcmQgYW5kIGluIHNlY29uZCAtIGNvcnJlc3BvbmRpbmcgZG91YmxlIFNIQTEuXG4gICAgICAgICAgICAtLT5cbiAgICAgICAgICAgIDxwYXNzd29yZD48L3Bhc3N3b3JkPlxuXG4gICAgICAgICAgICA8IS0tIExpc3Qgb2YgbmV0d29ya3Mgd2l0aCBvcGVuIGFjY2Vzcy5cblxuICAgICAgICAgICAgICAgIFRvIG9wZW4gYWNjZXNzIGZyb20gZXZlcnl3aGVyZSwgc3BlY2lmeTpcbiAgICAgICAgICAgICAgICAgICAgPGlwPjo6LzA8L2lwPlxuXG4gICAgICAgICAgICAgICAgVG8gb3BlbiBhY2Nlc3Mgb25seSBmcm9tIGxvY2FsaG9zdCwgc3BlY2lmeTpcbiAgICAgICAgICAgICAgICAgICAgPGlwPjo6MTwvaXA+XG4gICAgICAgICAgICAgICAgICAgIDxpcD4xMjcuMC4wLjE8L2lwPlxuXG4gICAgICAgICAgICAgICAgRWFjaCBlbGVtZW50IG9mIGxpc3QgaGFzIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZvcm1zOlxuICAgICAgICAgICAgICAgIDxpcD4gSVAtYWRkcmVzcyBvciBuZXR3b3JrIG1hc2suIEV4YW1wbGVzOiAyMTMuMTgwLjIwNC4zIG9yIDEwLjAuMC4xLzggb3IgMTAuMC4wLjEvMjU1LjI1NS4yNTUuMFxuICAgICAgICAgICAgICAgICAgICAyYTAyOjZiODo6MyBvciAyYTAyOjZiODo6My82NCBvciAyYTAyOjZiODo6My9mZmZmOmZmZmY6ZmZmZjpmZmZmOjouXG4gICAgICAgICAgICAgICAgPGhvc3Q+IEhvc3RuYW1lLiBFeGFtcGxlOiBzZXJ2ZXIwMS55YW5kZXgucnUuXG4gICAgICAgICAgICAgICAgICAgIFRvIGNoZWNrIGFjY2VzcywgRE5TIHF1ZXJ5IGlzIHBlcmZvcm1lZCwgYW5kIGFsbCByZWNlaXZlZCBhZGRyZXNzZXMgY29tcGFyZWQgdG8gcGVlciBhZGRyZXNzLlxuICAgICAgICAgICAgICAgIDxob3N0X3JlZ2V4cD4gUmVndWxhciBleHByZXNzaW9uIGZvciBob3N0IG5hbWVzLiBFeGFtcGxlLCBec2VydmVyXFxkXFxkLVxcZFxcZC1cXGRcXC55YW5kZXhcXC5ydSRcbiAgICAgICAgICAgICAgICAgICAgVG8gY2hlY2sgYWNjZXNzLCBETlMgUFRSIHF1ZXJ5IGlzIHBlcmZvcm1lZCBmb3IgcGVlciBhZGRyZXNzIGFuZCB0aGVuIHJlZ2V4cCBpcyBhcHBsaWVkLlxuICAgICAgICAgICAgICAgICAgICBUaGVuLCBmb3IgcmVzdWx0IG9mIFBUUiBxdWVyeSwgYW5vdGhlciBETlMgcXVlcnkgaXMgcGVyZm9ybWVkIGFuZCBhbGwgcmVjZWl2ZWQgYWRkcmVzc2VzIGNvbXBhcmVkXG4gICAgICAgICAgICB0byBwZWVyIGFkZHJlc3MuXG4gICAgICAgICAgICAgICAgICAgIFN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgcmVnZXhwIGlzIGVuZHMgd2l0aCAkXG4gICAgICAgICAgICAgICAgQWxsIHJlc3VsdHMgb2YgRE5TIHJlcXVlc3RzIGFyZSBjYWNoZWQgdGlsbCBzZXJ2ZXIgcmVzdGFydC5cbiAgICAgICAgICAgIC0tPlxuICAgICAgICAgICAgPG5ldHdvcmtzPlxuICAgICAgICAgICAgICAgIDxpcD46Oi8wPC9pcD5cbiAgICAgICAgICAgIDwvbmV0d29ya3M+XG5cbiAgICAgICAgICAgIDwhLS0gU2V0dGluZ3MgcHJvZmlsZSBmb3IgdXNlci4gLS0+XG4gICAgICAgICAgICA8cHJvZmlsZT5kZWZhdWx0PC9wcm9maWxlPlxuXG4gICAgICAgICAgICA8IS0tIFF1b3RhIGZvciB1c2VyLiAtLT5cbiAgICAgICAgICAgIDxxdW90YT5kZWZhdWx0PC9xdW90YT5cblxuICAgICAgICAgICAgPCEtLSBVc2VyIGNhbiBjcmVhdGUgb3RoZXIgdXNlcnMgYW5kIGdyYW50IHJpZ2h0cyB0byB0aGVtLiAtLT5cbiAgICAgICAgICAgIDwhLS0gPGFjY2Vzc19tYW5hZ2VtZW50PjE8L2FjY2Vzc19tYW5hZ2VtZW50PiAtLT5cbiAgICAgICAgPC9kZWZhdWx0PlxuICAgIDwvdXNlcnM+XG5cbiAgICA8IS0tIFF1b3Rhcy4gLS0+XG4gICAgPHF1b3Rhcz5cbiAgICAgICAgPCEtLSBOYW1lIG9mIHF1b3RhLiAtLT5cbiAgICAgICAgPGRlZmF1bHQ+XG4gICAgICAgICAgICA8IS0tIExpbWl0cyBmb3IgdGltZSBpbnRlcnZhbC4gWW91IGNvdWxkIHNwZWNpZnkgbWFueSBpbnRlcnZhbHMgd2l0aCBkaWZmZXJlbnQgbGltaXRzLiAtLT5cbiAgICAgICAgICAgIDxpbnRlcnZhbD5cbiAgICAgICAgICAgICAgICA8IS0tIExlbmd0aCBvZiBpbnRlcnZhbC4gLS0+XG4gICAgICAgICAgICAgICAgPGR1cmF0aW9uPjM2MDA8L2R1cmF0aW9uPlxuXG4gICAgICAgICAgICAgICAgPCEtLSBObyBsaW1pdHMuIEp1c3QgY2FsY3VsYXRlIHJlc291cmNlIHVzYWdlIGZvciB0aW1lIGludGVydmFsLiAtLT5cbiAgICAgICAgICAgICAgICA8cXVlcmllcz4wPC9xdWVyaWVzPlxuICAgICAgICAgICAgICAgIDxlcnJvcnM+MDwvZXJyb3JzPlxuICAgICAgICAgICAgICAgIDxyZXN1bHRfcm93cz4wPC9yZXN1bHRfcm93cz5cbiAgICAgICAgICAgICAgICA8cmVhZF9yb3dzPjA8L3JlYWRfcm93cz5cbiAgICAgICAgICAgICAgICA8ZXhlY3V0aW9uX3RpbWU+MDwvZXhlY3V0aW9uX3RpbWU+XG4gICAgICAgICAgICA8L2ludGVydmFsPlxuICAgICAgICA8L2RlZmF1bHQ+XG4gICAgPC9xdW90YXM+XG48L3lhbmRleD5cbiIKICAgICAgLSAnY2xpY2tob3VzZS1kYXRhOi92YXIvbGliL2NsaWNraG91c2UnCiAgICBkZXBlbmRzX29uOgogICAgICAtIGthZmthCiAgICAgIC0gem9va2VlcGVyCiAgem9va2VlcGVyOgogICAgaW1hZ2U6ICd6b29rZWVwZXI6My43LjAnCiAgICB2b2x1bWVzOgogICAgICAtICd6b29rZWVwZXItZGF0YWxvZzovZGF0YWxvZycKICAgICAgLSAnem9va2VlcGVyLWRhdGE6L2RhdGEnCiAgICAgIC0gJ3pvb2tlZXBlci1sb2dzOi9sb2dzJwogIGthZmthOgogICAgaW1hZ2U6ICdnaGNyLmlvL3Bvc3Rob2cva2Fma2EtY29udGFpbmVyOnYyLjguMicKICAgIGRlcGVuZHNfb246CiAgICAgIC0gem9va2VlcGVyCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBLQUZLQV9CUk9LRVJfSUQ9MTAwMQogICAgICAtIEtBRktBX0NGR19SRVNFUlZFRF9CUk9LRVJfTUFYX0lEPTEwMDEKICAgICAgLSAnS0FGS0FfQ0ZHX0xJU1RFTkVSUz1QTEFJTlRFWFQ6Ly86OTA5MicKICAgICAgLSAnS0FGS0FfQ0ZHX0FEVkVSVElTRURfTElTVEVORVJTPVBMQUlOVEVYVDovL2thZmthOjkwOTInCiAgICAgIC0gJ0tBRktBX0NGR19aT09LRUVQRVJfQ09OTkVDVD16b29rZWVwZXI6MjE4MScKICAgICAgLSBBTExPV19QTEFJTlRFWFRfTElTVEVORVI9eWVzCiAgb2JqZWN0X3N0b3JhZ2U6CiAgICBpbWFnZTogJ21pbmlvL21pbmlvOlJFTEVBU0UuMjAyMi0wNi0yNVQxNS01MC0xNlonCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBNSU5JT19ST09UX1VTRVI9JFNFUlZJQ0VfVVNFUl9NSU5JTwogICAgICAtIE1JTklPX1JPT1RfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfTUlOSU8KICAgIGVudHJ5cG9pbnQ6IHNoCiAgICBjb21tYW5kOiAnLWMgJydta2RpciAtcCAvZGF0YS9wb3N0aG9nICYmIG1pbmlvIHNlcnZlciAtLWFkZHJlc3MgIjoxOTAwMCIgLS1jb25zb2xlLWFkZHJlc3MgIjoxOTAwMSIgL2RhdGEnJycKICAgIHZvbHVtZXM6CiAgICAgIC0gJ29iamVjdF9zdG9yYWdlOi9kYXRhJwogIG1haWxkZXY6CiAgICBpbWFnZTogJ21haWxkZXYvbWFpbGRldjoyLjAuNScKICBmbG93ZXI6CiAgICBpbWFnZTogJ21oZXIvZmxvd2VyOjIuMC4wJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIEZMT1dFUl9QT1JUOiA1NTU1CiAgICAgIENFTEVSWV9CUk9LRVJfVVJMOiAncmVkaXM6Ly9yZWRpczo2Mzc5JwogIHdlYjoKICAgIGltYWdlOiAncG9zdGhvZy9wb3N0aG9nOmxhdGVzdCcKICAgIGNvbW1hbmQ6IC9jb21wb3NlL3N0YXJ0CiAgICB2b2x1bWVzOgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9jb21wb3NlL3N0YXJ0CiAgICAgICAgdGFyZ2V0OiAvY29tcG9zZS9zdGFydAogICAgICAgIGNvbnRlbnQ6ICIjIS9iaW4vYmFzaFxuL2NvbXBvc2Uvd2FpdFxuLi9iaW4vbWlncmF0ZVxuLi9iaW4vZG9ja2VyLXNlcnZlclxuIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9jb21wb3NlL3dhaXQKICAgICAgICB0YXJnZXQ6IC9jb21wb3NlL3dhaXQKICAgICAgICBjb250ZW50OiAiIyEvdXNyL2Jpbi9lbnYgcHl0aG9uM1xuXG5pbXBvcnQgc29ja2V0XG5pbXBvcnQgdGltZVxuXG5kZWYgbG9vcCgpOlxuICAgIHByaW50KFwiV2FpdGluZyBmb3IgQ2xpY2tIb3VzZSBhbmQgUG9zdGdyZXMgdG8gYmUgcmVhZHlcIilcbiAgICB0cnk6XG4gICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOlxuICAgICAgICAgICAgcy5jb25uZWN0KCgnY2xpY2tob3VzZScsIDkwMDApKVxuICAgICAgICBwcmludChcIkNsaWNraG91c2UgaXMgcmVhZHlcIilcbiAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHM6XG4gICAgICAgICAgICBzLmNvbm5lY3QoKCdkYicsIDU0MzIpKVxuICAgICAgICBwcmludChcIlBvc3RncmVzIGlzIHJlYWR5XCIpXG4gICAgZXhjZXB0IENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IgYXMgZTpcbiAgICAgICAgdGltZS5zbGVlcCg1KVxuICAgICAgICBsb29wKClcblxubG9vcCgpXG4iCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9XRUJfODAwMAogICAgICAtIE9QVF9PVVRfQ0FQVFVSSU5HPXRydWUKICAgICAgLSBESVNBQkxFX1NFQ1VSRV9TU0xfUkVESVJFQ1Q9dHJ1ZQogICAgICAtIElTX0JFSElORF9QUk9YWT10cnVlCiAgICAgIC0gVFJVU1RfQUxMX1BST1hJRVM9dHJ1ZQogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly9wb3N0aG9nOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQGRiOjU0MzIvcG9zdGhvZycKICAgICAgLSBDTElDS0hPVVNFX0hPU1Q9Y2xpY2tob3VzZQogICAgICAtIENMSUNLSE9VU0VfREFUQUJBU0U9cG9zdGhvZwogICAgICAtIENMSUNLSE9VU0VfU0VDVVJFPWZhbHNlCiAgICAgIC0gQ0xJQ0tIT1VTRV9WRVJJRlk9ZmFsc2UKICAgICAgLSBLQUZLQV9IT1NUUz1rYWZrYQogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LycKICAgICAgLSBQR0hPU1Q9ZGIKICAgICAgLSBQR1VTRVI9cG9zdGhvZwogICAgICAtIFBHUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSBERVBMT1lNRU5UPWhvYmJ5CiAgICAgIC0gU0lURV9VUkw9JFNFUlZJQ0VfVVJMX1dFQgogICAgICAtIFNFQ1JFVF9LRVk9JFNFUlZJQ0VfQkFTRTY0XzY0X1NFQ1JFVEtFWQogICAgICAtICdFTkNSWVBUSU9OX1NBTFRfS0VZUz0ke1NFUlZJQ0VfRU5DUllQVElPTl9TQUxUX0tFWVM6LTAwYmVlZjAwMDBiZWVmMDAwMGJlZWYwMDAwYmVlZjAwfScKICAgIGRlcGVuZHNfb246CiAgICAgIC0gZGIKICAgICAgLSByZWRpcwogICAgICAtIGNsaWNraG91c2UKICAgICAgLSBrYWZrYQogICAgICAtIG9iamVjdF9zdG9yYWdlCiAgd29ya2VyOgogICAgaW1hZ2U6ICdwb3N0aG9nL3Bvc3Rob2c6bGF0ZXN0JwogICAgY29tbWFuZDogJy4vYmluL2RvY2tlci13b3JrZXItY2VsZXJ5IC0td2l0aC1zY2hlZHVsZXInCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBPUFRfT1VUX0NBUFRVUklORz10cnVlCiAgICAgIC0gRElTQUJMRV9TRUNVUkVfU1NMX1JFRElSRUNUPXRydWUKICAgICAgLSBJU19CRUhJTkRfUFJPWFk9dHJ1ZQogICAgICAtIFRSVVNUX0FMTF9QUk9YSUVTPXRydWUKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vcG9zdGhvZzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0BkYjo1NDMyL3Bvc3Rob2cnCiAgICAgIC0gQ0xJQ0tIT1VTRV9IT1NUPWNsaWNraG91c2UKICAgICAgLSBDTElDS0hPVVNFX0RBVEFCQVNFPXBvc3Rob2cKICAgICAgLSBDTElDS0hPVVNFX1NFQ1VSRT1mYWxzZQogICAgICAtIENMSUNLSE9VU0VfVkVSSUZZPWZhbHNlCiAgICAgIC0gS0FGS0FfSE9TVFM9a2Fma2EKICAgICAgLSAnUkVESVNfVVJMPXJlZGlzOi8vcmVkaXM6NjM3OS8nCiAgICAgIC0gUEdIT1NUPWRiCiAgICAgIC0gUEdVU0VSPXBvc3Rob2cKICAgICAgLSBQR1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gREVQTE9ZTUVOVD1ob2JieQogICAgICAtIFNJVEVfVVJMPSRTRVJWSUNFX1VSTF9XRUIKICAgICAgLSBTRUNSRVRfS0VZPSRTRVJWSUNFX0JBU0U2NF82NF9TRUNSRVRLRVkKICAgICAgLSAnRU5DUllQVElPTl9TQUxUX0tFWVM9JHtTRVJWSUNFX0VOQ1JZUFRJT05fU0FMVF9LRVlTOi0wMGJlZWYwMDAwYmVlZjAwMDBiZWVmMDAwMGJlZWYwMH0nCiAgICBkZXBlbmRzX29uOgogICAgICAtIGRiCiAgICAgIC0gcmVkaXMKICAgICAgLSBjbGlja2hvdXNlCiAgICAgIC0ga2Fma2EKICAgICAgLSBvYmplY3Rfc3RvcmFnZQogIHBsdWdpbnM6CiAgICBpbWFnZTogJ3Bvc3Rob2cvcG9zdGhvZzpsYXRlc3QnCiAgICBjb21tYW5kOiAnLi9iaW4vcGx1Z2luLXNlcnZlciAtLW5vLXJlc3RhcnQtbG9vcCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly9wb3N0aG9nOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQGRiOjU0MzIvcG9zdGhvZycKICAgICAgLSAnS0FGS0FfSE9TVFM9a2Fma2E6OTA5MicKICAgICAgLSAnUkVESVNfVVJMPXJlZGlzOi8vcmVkaXM6NjM3OS8nCiAgICAgIC0gQ0xJQ0tIT1VTRV9IT1NUPWNsaWNraG91c2UKICAgICAgLSBDTElDS0hPVVNFX0RBVEFCQVNFPXBvc3Rob2cKICAgICAgLSBDTElDS0hPVVNFX1NFQ1VSRT1mYWxzZQogICAgICAtIENMSUNLSE9VU0VfVkVSSUZZPWZhbHNlCiAgICAgIC0gU0lURV9VUkw9JFNFUlZJQ0VfVVJMX1dFQgogICAgICAtIFNFQ1JFVF9LRVk9JFNFUlZJQ0VfQkFTRTY0XzY0X1NFQ1JFVEtFWQogICAgICAtICdFTkNSWVBUSU9OX1NBTFRfS0VZUz0ke1NFUlZJQ0VfRU5DUllQVElPTl9TQUxUX0tFWVM6LTAwYmVlZjAwMDBiZWVmMDAwMGJlZWYwMDAwYmVlZjAwfScKICAgIGRlcGVuZHNfb246CiAgICAgIC0gZGIKICAgICAgLSByZWRpcwogICAgICAtIGNsaWNraG91c2UKICAgICAgLSBrYWZrYQogICAgICAtIG9iamVjdF9zdG9yYWdlCiAgZWxhc3RpY3NlYXJjaDoKICAgIGltYWdlOiAnZWxhc3RpY3NlYXJjaDo3LjE2LjInCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBjbHVzdGVyLnJvdXRpbmcuYWxsb2NhdGlvbi5kaXNrLnRocmVzaG9sZF9lbmFibGVkPXRydWUKICAgICAgLSBjbHVzdGVyLnJvdXRpbmcuYWxsb2NhdGlvbi5kaXNrLndhdGVybWFyay5sb3c9NTEybWIKICAgICAgLSBjbHVzdGVyLnJvdXRpbmcuYWxsb2NhdGlvbi5kaXNrLndhdGVybWFyay5oaWdoPTI1Nm1iCiAgICAgIC0gY2x1c3Rlci5yb3V0aW5nLmFsbG9jYXRpb24uZGlzay53YXRlcm1hcmsuZmxvb2Rfc3RhZ2U9MTI4bWIKICAgICAgLSBkaXNjb3ZlcnkudHlwZT1zaW5nbGUtbm9kZQogICAgICAtICdFU19KQVZBX09QVFM9LVhtczI1Nm0gLVhteDI1Nm0nCiAgICAgIC0geHBhY2suc2VjdXJpdHkuZW5hYmxlZD1mYWxzZQogICAgdm9sdW1lczoKICAgICAgLSAnZWxhc3RpY3NlYXJjaC1kYXRhOi92YXIvbGliL2VsYXN0aWNzZWFyY2gvZGF0YScKICB0ZW1wb3JhbDoKICAgIGltYWdlOiAndGVtcG9yYWxpby9hdXRvLXNldHVwOjEuMjAuMCcKICAgIGVudmlyb25tZW50OgogICAgICAtIERCPXBvc3RncmVzcWwKICAgICAgLSBEQl9QT1JUPTU0MzIKICAgICAgLSBQT1NUR1JFU19VU0VSPXBvc3Rob2cKICAgICAgLSBQT1NUR1JFU19QV0Q9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19TRUVEUz1kYgogICAgICAtIERZTkFNSUNfQ09ORklHX0ZJTEVfUEFUSD1jb25maWcvZHluYW1pY2NvbmZpZy9kZXZlbG9wbWVudC1zcWwueWFtbAogICAgICAtIEVOQUJMRV9FUz10cnVlCiAgICAgIC0gRVNfU0VFRFM9ZWxhc3RpY3NlYXJjaAogICAgICAtIEVTX1ZFUlNJT049djcKICAgICAgLSBFTkFCTEVfRVM9ZmFsc2UKICAgIGRlcGVuZHNfb246CiAgICAgIGRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICB2b2x1bWVzOgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9kb2NrZXIvdGVtcG9yYWwvZHluYW1pY2NvbmZpZy9kZXZlbG9wbWVudC1zcWwueWFtbAogICAgICAgIHRhcmdldDogL2V0Yy90ZW1wb3JhbC9jb25maWcvZHluYW1pY2NvbmZpZy9kZXZlbG9wbWVudC1zcWwueWFtbAogICAgICAgIGNvbnRlbnQ6ICJsaW1pdC5tYXhJRExlbmd0aDpcbiAgICAtIHZhbHVlOiAyNTVcbiAgICAgIGNvbnN0cmFpbnRzOiB7fVxuc3lzdGVtLmZvcmNlU2VhcmNoQXR0cmlidXRlc0NhY2hlUmVmcmVzaE9uUmVhZDpcbiAgICAtIHZhbHVlOiBmYWxzZVxuICAgICAgY29uc3RyYWludHM6IHt9XG4iCiAgdGVtcG9yYWwtYWRtaW4tdG9vbHM6CiAgICBpbWFnZTogJ3RlbXBvcmFsaW8vYWRtaW4tdG9vbHM6MS4yMC4wJwogICAgZGVwZW5kc19vbjoKICAgICAgLSB0ZW1wb3JhbAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1RFTVBPUkFMX0NMSV9BRERSRVNTPXRlbXBvcmFsOjcyMzMnCiAgICBzdGRpbl9vcGVuOiB0cnVlCiAgICB0dHk6IHRydWUKICB0ZW1wb3JhbC11aToKICAgIGltYWdlOiAndGVtcG9yYWxpby91aToyLjEwLjMnCiAgICBkZXBlbmRzX29uOgogICAgICAtIHRlbXBvcmFsCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnVEVNUE9SQUxfQUREUkVTUz10ZW1wb3JhbDo3MjMzJwogICAgICAtICdURU1QT1JBTF9DT1JTX09SSUdJTlM9aHR0cDovL2xvY2FsaG9zdDozMDAwJwogIHRlbXBvcmFsLWRqYW5nby13b3JrZXI6CiAgICBpbWFnZTogJ3Bvc3Rob2cvcG9zdGhvZzpsYXRlc3QnCiAgICBjb21tYW5kOiAuL2Jpbi90ZW1wb3JhbC1kamFuZ28td29ya2VyCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBESVNBQkxFX1NFQ1VSRV9TU0xfUkVESVJFQ1Q9dHJ1ZQogICAgICAtIElTX0JFSElORF9QUk9YWT10cnVlCiAgICAgIC0gVFJVU1RfQUxMX1BST1hJRVM9dHJ1ZQogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly9wb3N0aG9nOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQGRiOjU0MzIvcG9zdGhvZycKICAgICAgLSBDTElDS0hPVVNFX0hPU1Q9Y2xpY2tob3VzZQogICAgICAtIENMSUNLSE9VU0VfREFUQUJBU0U9cG9zdGhvZwogICAgICAtIENMSUNLSE9VU0VfU0VDVVJFPWZhbHNlCiAgICAgIC0gQ0xJQ0tIT1VTRV9WRVJJRlk9ZmFsc2UKICAgICAgLSBLQUZLQV9IT1NUUz1rYWZrYQogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LycKICAgICAgLSBQR0hPU1Q9ZGIKICAgICAgLSBQR1VTRVI9cG9zdGhvZwogICAgICAtIFBHUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSBERVBMT1lNRU5UPWhvYmJ5CiAgICAgIC0gU0lURV9VUkw9JFNFUlZJQ0VfVVJMX1dFQgogICAgICAtIFNFQ1JFVF9LRVk9JFNFUlZJQ0VfQkFTRTY0XzY0X1NFQ1JFVEtFWQogICAgICAtICdFTkNSWVBUSU9OX1NBTFRfS0VZUz0ke1NFUlZJQ0VfRU5DUllQVElPTl9TQUxUX0tFWVM6LTAwYmVlZjAwMDBiZWVmMDAwMGJlZWYwMDAwYmVlZjAwfScKICAgICAgLSBURU1QT1JBTF9IT1NUPXRlbXBvcmFsCiAgICBkZXBlbmRzX29uOgogICAgICAtIGRiCiAgICAgIC0gcmVkaXMKICAgICAgLSBjbGlja2hvdXNlCiAgICAgIC0ga2Fma2EKICAgICAgLSBvYmplY3Rfc3RvcmFnZQogICAgICAtIHRlbXBvcmFsCg==",
+ "tags": [
+ "analytics",
+ "product",
+ "open-source",
+ "self-hosted",
+ "ab-testing",
+ "event-tracking"
+ ],
+ "logo": "svgs/posthog.svg",
+ "minversion": "4.0.0-beta.222"
+ },
+ "postiz": {
+ "documentation": "https://docs.postiz.com?utm_source=coolify.io",
+ "slogan": "Open source social media scheduling tool.",
+ "compose": "c2VydmljZXM6CiAgcG9zdGl6OgogICAgaW1hZ2U6ICdnaGNyLmlvL2dpdHJvb21ocS9wb3N0aXotYXBwOnYxLjYwLjEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9QT1NUSVpfNTAwMAogICAgICAtICdNQUlOX1VSTD0ke1NFUlZJQ0VfVVJMX1BPU1RJWn0nCiAgICAgIC0gJ0ZST05URU5EX1VSTD0ke1NFUlZJQ0VfVVJMX1BPU1RJWn0nCiAgICAgIC0gJ05FWFRfUFVCTElDX0JBQ0tFTkRfVVJMPSR7U0VSVklDRV9VUkxfUE9TVElafS9hcGknCiAgICAgIC0gJ0pXVF9TRUNSRVQ9JHtTRVJWSUNFX1BBU1NXT1JEX0pXVFNFQ1JFVH0nCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsOi8vcG9zdGdyZXM6JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9QHBvc3RncmVzOjU0MzIvJHtQT1NUR1JFU1FMX0RBVEFCQVNFOi1wb3N0aXotZGJ9JwogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9kZWZhdWx0OiR7U0VSVklDRV9QQVNTV09SRF9SRURJU31AcmVkaXM6NjM3OScKICAgICAgLSAnQkFDS0VORF9JTlRFUk5BTF9VUkw9aHR0cDovL2xvY2FsaG9zdDozMDAwJwogICAgICAtICdDTE9VREZMQVJFX0FDQ09VTlRfSUQ9JHtDTE9VREZMQVJFX0FDQ09VTlRfSUR9JwogICAgICAtICdDTE9VREZMQVJFX0FDQ0VTU19LRVk9JHtDTE9VREZMQVJFX0FDQ0VTU19LRVl9JwogICAgICAtICdDTE9VREZMQVJFX1NFQ1JFVF9BQ0NFU1NfS0VZPSR7Q0xPVURGTEFSRV9TRUNSRVRfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ0NMT1VERkxBUkVfQlVDS0VUTkFNRT0ke0NMT1VERkxBUkVfQlVDS0VUTkFNRX0nCiAgICAgIC0gJ0NMT1VERkxBUkVfQlVDS0VUX1VSTD0ke0NMT1VERkxBUkVfQlVDS0VUX1VSTH0nCiAgICAgIC0gJ0NMT1VERkxBUkVfUkVHSU9OPSR7Q0xPVURGTEFSRV9SRUdJT059JwogICAgICAtICdTVE9SQUdFX1BST1ZJREVSPSR7U1RPUkFHRV9QUk9WSURFUjotbG9jYWx9JwogICAgICAtICdVUExPQURfRElSRUNUT1JZPSR7VVBMT0FEX0RJUkVDVE9SWTotL3VwbG9hZHN9JwogICAgICAtICdORVhUX1BVQkxJQ19VUExPQURfRElSRUNUT1JZPSR7TkVYVF9QVUJMSUNfVVBMT0FEX0RJUkVDVE9SWTotL3VwbG9hZHN9JwogICAgICAtICdORVhUX1BVQkxJQ19VUExPQURfU1RBVElDX0RJUkVDVE9SWT0ke05FWFRfUFVCTElDX1VQTE9BRF9TVEFUSUNfRElSRUNUT1JZfScKICAgICAgLSAnUkVTRU5EX0FQSV9LRVk9JHtSRVNFTkRfQVBJX0tFWX0nCiAgICAgIC0gJ0VNQUlMX0ZST01fQUREUkVTUz0ke0VNQUlMX0ZST01fQUREUkVTU30nCiAgICAgIC0gJ0VNQUlMX0ZST01fTkFNRT0ke0VNQUlMX0ZST01fTkFNRX0nCiAgICAgIC0gJ0VNQUlMX1BST1ZJREVSPSR7RU1BSUxfUFJPVklERVJ9JwogICAgICAtICdYX0FQSV9LRVk9JHtTRVJWSUNFX1hfQVBJfScKICAgICAgLSAnWF9BUElfU0VDUkVUPSR7U0VSVklDRV9YX1NFQ1JFVH0nCiAgICAgIC0gJ0xJTktFRElOX0NMSUVOVF9JRD0ke1NFUlZJQ0VfTElOS0VESU5fSUR9JwogICAgICAtICdMSU5LRURJTl9DTElFTlRfU0VDUkVUPSR7U0VSVklDRV9MSU5LRURJTl9TRUNSRVR9JwogICAgICAtICdSRURESVRfQ0xJRU5UX0lEPSR7U0VSVklDRV9SRURESVRfQVBJfScKICAgICAgLSAnUkVERElUX0NMSUVOVF9TRUNSRVQ9JHtTRVJWSUNFX1JFRERJVF9TRUNSRVR9JwogICAgICAtICdHSVRIVUJfQ0xJRU5UX0lEPSR7U0VSVklDRV9HSVRIVUJfSUR9JwogICAgICAtICdHSVRIVUJfQ0xJRU5UX1NFQ1JFVD0ke1NFUlZJQ0VfR0lUSFVCX1NFQ1JFVH0nCiAgICAgIC0gJ1RIUkVBRFNfQVBQX0lEPSR7U0VSVklDRV9USFJFQURTX0lEfScKICAgICAgLSAnVEhSRUFEU19BUFBfU0VDUkVUPSR7U0VSVklDRV9USFJFQURTX1NFQ1JFVH0nCiAgICAgIC0gJ0ZBQ0VCT09LX0FQUF9JRD0ke1NFUlZJQ0VfRkFDRUJPT0tfSUR9JwogICAgICAtICdGQUNFQk9PS19BUFBfU0VDUkVUPSR7U0VSVklDRV9GQUNFQk9PS19TRUNSRVR9JwogICAgICAtICdZT1VUVUJFX0NMSUVOVF9JRD0ke1NFUlZJQ0VfWU9VVFVCRV9JRH0nCiAgICAgIC0gJ1lPVVRVQkVfQ0xJRU5UX1NFQ1JFVD0ke1NFUlZJQ0VfWU9VVFVCRV9TRUNSRVR9JwogICAgICAtICdUSUtUT0tfQ0xJRU5UX0lEPSR7U0VSVklDRV9USUtUT0tfSUR9JwogICAgICAtICdUSUtUT0tfQ0xJRU5UX1NFQ1JFVD0ke1NFUlZJQ0VfVElLVE9LX1NFQ1JFVH0nCiAgICAgIC0gJ1BJTlRFUkVTVF9DTElFTlRfSUQ9JHtTRVJWSUNFX1BJTlRFUkVTVF9JRH0nCiAgICAgIC0gJ1BJTlRFUkVTVF9DTElFTlRfU0VDUkVUPSR7U0VSVklDRV9QSU5URVJFU1RfU0VDUkVUfScKICAgICAgLSAnRFJJQkJCTEVfQ0xJRU5UX0lEPSR7U0VSVklDRV9EUklCQkxFX0lEfScKICAgICAgLSAnRFJJQkJCTEVfQ0xJRU5UX1NFQ1JFVD0ke1NFUlZJQ0VfRFJJQkJMRV9TRUNSRVR9JwogICAgICAtICdESVNDT1JEX0NMSUVOVF9JRD0ke1NFUlZJQ0VfRElTQ09SRF9JRH0nCiAgICAgIC0gJ0RJU0NPUkRfQ0xJRU5UX1NFQ1JFVD0ke1NFUlZJQ0VfRElTQ09SRF9TRUNSRVR9JwogICAgICAtICdESVNDT1JEX0JPVF9UT0tFTl9JRD0ke1NFUlZJQ0VfRElTQ09SRF9UT0tFTn0nCiAgICAgIC0gJ1NMQUNLX0lEPSR7U0VSVklDRV9TTEFDS19JRH0nCiAgICAgIC0gJ1NMQUNLX1NFQ1JFVD0ke1NFUlZJQ0VfU0xBQ0tfU0VDUkVUfScKICAgICAgLSAnU0xBQ0tfU0lHTklOR19TRUNSRVQ9JHtTTEFDS19TSUdOSU5HX1NFQ1JFVH0nCiAgICAgIC0gJ01BU1RPRE9OX0NMSUVOVF9JRD0ke1NFUlZJQ0VfTUFTVE9ET05fSUR9JwogICAgICAtICdNQVNUT0RPTl9DTElFTlRfU0VDUkVUPSR7U0VSVklDRV9NQVNUT0RPTl9TRUNSRVR9JwogICAgICAtICdCRUVISUlWRV9BUElfS0VZPSR7U0VSVklDRV9CRUVISUlWRV9LRVl9JwogICAgICAtICdCRUVISUlWRV9QVUJMSUNBVElPTl9JRD0ke1NFUlZJQ0VfQkVFSElJVkVfUFVCSUR9JwogICAgICAtICdPUEVOQUlfQVBJX0tFWT0ke1NFUlZJQ0VfT1BFTkFJX0tFWX0nCiAgICAgIC0gJ05FWFRfUFVCTElDX0RJU0NPUkRfU1VQUE9SVD0ke05FWFRfUFVCTElDX0RJU0NPUkRfU1VQUE9SVH0nCiAgICAgIC0gJ05FWFRfUFVCTElDX1BPTE9UTk89JHtORVhUX1BVQkxJQ19QT0xPVE5PfScKICAgICAgLSBJU19HRU5FUkFMPXRydWUKICAgICAgLSAnTlhfQUREX1BMVUdJTlM9JHtOWF9BRERfUExVR0lOUzotZmFsc2V9JwogICAgICAtICdOT1RfU0VDVVJFRD0ke05PVF9TRUNVUkVEOi1mYWxzZX0nCiAgICAgIC0gJ0ZFRV9BTU9VTlQ9JHtGRUVfQU1PVU5UOi0wLjA1fScKICAgICAgLSAnU1RSSVBFX1BVQkxJU0hBQkxFX0tFWT0ke1NUUklQRV9QVUJMSVNIQUJMRV9LRVl9JwogICAgICAtICdTVFJJUEVfU0VDUkVUX0tFWT0ke1NUUklQRV9TRUNSRVRfS0VZfScKICAgICAgLSAnU1RSSVBFX1NJR05JTkdfS0VZPSR7U1RSSVBFX1NJR05JTkdfS0VZfScKICAgICAgLSAnU1RSSVBFX1NJR05JTkdfS0VZX0NPTk5FQ1Q9JHtTVFJJUEVfU0lHTklOR19LRVlfQ09OTkVDVH0nCiAgICB2b2x1bWVzOgogICAgICAtICdwb3N0aXpfY29uZmlnOi9jb25maWcvJwogICAgICAtICdwb3N0aXpfdXBsb2FkczovdXBsb2Fkcy8nCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC1xTy0gaHR0cDovLzEyNy4wLjAuMTo1MDAwLycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNC41JwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGl6X3Bvc3RncmVzcWxfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPXBvc3RncmVzCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU1FMX0RBVEFCQVNFOi1wb3N0aXotZGJ9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCOi1wb3N0aXotZGJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjcuMicKICAgIGVudmlyb25tZW50OgogICAgICAtICdSRURJU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUkVESVN9JwogICAgY29tbWFuZDogJ3JlZGlzLXNlcnZlciAtLXJlcXVpcmVwYXNzICR7U0VSVklDRV9QQVNTV09SRF9SRURJU30nCiAgICB2b2x1bWVzOgogICAgICAtICdwb3N0aXpfcmVkaXNfZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtICctYScKICAgICAgICAtICcke1NFUlZJQ0VfUEFTU1dPUkRfUkVESVN9JwogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDIwCg==",
+ "tags": [
+ "post everywhere",
+ "social media",
+ "planning"
+ ],
+ "logo": "svgs/postiz.svg",
+ "minversion": "0.0.0",
+ "port": "5000"
+ },
+ "prefect": {
+ "documentation": "https://www.prefect.io/?utm_source=coolify.io",
+ "slogan": "Prefect is an orchestration and observability platform that empowers developers to build and scale workflows quickly.",
+ "compose": "c2VydmljZXM6CiAgcHJlZmVjdDoKICAgIGltYWdlOiAncHJlZmVjdGhxL3ByZWZlY3Q6My1sYXRlc3QnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9QUkVGRUNUXzQyMDAKICAgICAgLSAnUFJFRkVDVF9BUElfVVJMPSR7U0VSVklDRV9VUkxfUFJFRkVDVH0vYXBpJwogICAgICAtICdQUkVGRUNUX0FQSV9EQVRBQkFTRV9DT05ORUNUSU9OX1VSTD1wb3N0Z3Jlc3FsK2FzeW5jcGc6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlc3FsOjU0MzIvJHtQT1NUR1JFU19EQjotcHJlZmVjdH0nCiAgICAgIC0gJ1BSRUZFQ1RfQVBJX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfQVBJS0VZfScKICAgICAgLSAnUFJFRkVDVF9FWFBFUklNRU5UQUxfV0FSTj0ke1BSRUZFQ1RfRVhQRVJJTUVOVEFMX1dBUk46LWZhbHNlfScKICAgICAgLSAnUFJFRkVDVF9FWFBFUklNRU5UQUxfRU5BQkxFX1NDSEVEVUxFX0NPTkNVUlJFTkNZPSR7UFJFRkVDVF9FWFBFUklNRU5UQUxfRU5BQkxFX1NDSEVEVUxFX0NPTkNVUlJFTkNZOi1mYWxzZX0nCiAgICAgIC0gJ1BSRUZFQ1RfUlVOTkVSX1NFUlZFUl9FTkFCTEU9JHtQUkVGRUNUX1JVTk5FUl9TRVJWRVJfRU5BQkxFOi1mYWxzZX0nCiAgICAgIC0gJ1BSRUZFQ1RfREVGQVVMVF9XT1JLX1BPT0xfTkFNRT0ke0RFRkFVTFRfUE9PTF9OQU1FOi1kZWZhdWx0fScKICAgIGNvbW1hbmQ6CiAgICAgIC0gcHJlZmVjdAogICAgICAtIHNlcnZlcgogICAgICAtIHN0YXJ0CiAgICAgIC0gJy0taG9zdCcKICAgICAgLSAwLjAuMC4wCiAgICAgIC0gJy0tcG9ydCcKICAgICAgLSAnNDIwMCcKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBweXRob24KICAgICAgICAtICctYycKICAgICAgICAtICJpbXBvcnQgcmVxdWVzdHMgYXMgcjtyLmdldCgnaHR0cDovLzEyNy4wLjAuMTo0MjAwL2FwaS9oZWFsdGgnKS5yYWlzZV9mb3Jfc3RhdHVzKCkiCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAzCiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAncGctZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1wcmVmZWN0fScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAzCiAgYWdlbnQ6CiAgICBpbWFnZTogJ3ByZWZlY3RocS9wcmVmZWN0OjMtcHl0aG9uMy4xMicKICAgIGRlcGVuZHNfb246CiAgICAgIHByZWZlY3Q6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGVudHJ5cG9pbnQ6CiAgICAgIC0gL29wdC9wcmVmZWN0L2VudHJ5cG9pbnQuc2gKICAgICAgLSBwcmVmZWN0CiAgICAgIC0gd29ya2VyCiAgICAgIC0gc3RhcnQKICAgICAgLSAnLS1wb29sPSR7REVGQVVMVF9QT09MX05BTUV9JwogICAgICAtICctLXdpdGgtaGVhbHRoY2hlY2snCiAgICAgIC0gJy0tbmFtZT0ke0RFRkFVTFRfV09SS0VSX05BTUV9JwogICAgICAtICctLWxpbWl0PSR7REVGQVVMVF9QT09MX0xJTUlUfScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQUkVGRUNUX0FQSV9VUkw9aHR0cDovL3ByZWZlY3Q6NDIwMC9hcGknCiAgICAgIC0gJ1BSRUZFQ1RfQVBJX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfQVBJS0VZfScKICAgICAgLSAnREVGQVVMVF9QT09MX05BTUU9JHtERUZBVUxUX1BPT0xfTkFNRTotZGVmYXVsdH0nCiAgICAgIC0gJ0RFRkFVTFRfUE9PTF9MSU1JVD0ke0RFRkFVTFRfUE9PTF9MSU1JVDotMX0nCiAgICAgIC0gJ0RFRkFVTFRfV09SS0VSX05BTUU9JHtERUZBVUxUX1dPUktFUl9OQU1FOi13b3JrZXIxfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSBwd2QKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDMK",
+ "tags": [
+ "workflow",
+ "orchestration",
+ "data-pipeline",
+ "python",
+ "automation",
+ "data-processing",
+ "data-integration",
+ "etl"
+ ],
+ "logo": "svgs/prefect.png",
+ "minversion": "0.0.0",
+ "port": "4200"
+ },
+ "privatebin": {
+ "documentation": "https://github.com/PrivateBin/PrivateBin/blob/master/doc/README.md?utm_source=coolify.io",
+ "slogan": "PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data.",
+ "compose": "c2VydmljZXM6CiAgcHJpdmF0ZWJpbjoKICAgIGltYWdlOiBwcml2YXRlYmluL25naW54LWZwbS1hbHBpbmUKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1BSSVZBVEVCSU5fODA4MAogICAgdm9sdW1lczoKICAgICAgLSAncHJpdmF0ZWJpbl9kYXRhOi9zcnYvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnd2dldCAtcU8tIGh0dHA6Ly8xMjcuMC4wLjE6ODA4MC8nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "text",
+ "sharing"
+ ],
+ "logo": "svgs/privatebin.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "prowlarr": {
+ "documentation": "https://hub.docker.com/r/linuxserver/prowlarr?utm_source=coolify.io",
+ "slogan": "Prowlarr\u2060 is a indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with your various PVR apps.",
+ "compose": "c2VydmljZXM6CiAgcHJvd2xhcnI6CiAgICBpbWFnZTogJ2xzY3IuaW8vbGludXhzZXJ2ZXIvcHJvd2xhcnI6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfUFJPV0xBUlJfOTY5NgogICAgICAtIF9BUFBfVVJMPSRTRVJWSUNFX1VSTF9QUk9XTEFSUgogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtICdUWj0ke1RaOi1BbWVyaWNhL1Rvcm9udG99JwogICAgdm9sdW1lczoKICAgICAgLSAncHJvd2xhcnItY29uZmlnOi9jb25maWcnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6OTY5Ni9waW5nJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "tags": [
+ "media",
+ "server",
+ "movies",
+ "tv",
+ "indexer",
+ "torrent",
+ "nzb",
+ "usenet"
+ ],
+ "logo": "svgs/prowlarr.svg",
+ "minversion": "0.0.0",
+ "port": "9696"
+ },
+ "pterodactyl-with-wings": {
+ "documentation": "https://pterodactyl.io/?utm_source=coolify.io",
+ "slogan": "Pterodactyl is a free, open-source game server management panel",
+ "compose": "c2VydmljZXM6CiAgbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjoxMC41JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdoZWFsdGhjaGVjay5zaCAtLWNvbm5lY3QgLS1pbm5vZGJfaW5pdGlhbGl6ZWQgfHwgZXhpdCAxJwogICAgICBzdGFydF9wZXJpb2Q6IDEwcwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDFzCiAgICAgIHJldHJpZXM6IDMKICAgIGVudmlyb25tZW50OgogICAgICAtIE1ZU1FMX1JPT1RfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfTVlTUUxST09UCiAgICAgIC0gTVlTUUxfREFUQUJBU0U9cHRlcm9kYWN0eWwtZGIKICAgICAgLSBNWVNRTF9VU0VSPSRTRVJWSUNFX1VTRVJfTVlTUUwKICAgICAgLSBNWVNRTF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NWVNRTAogICAgdm9sdW1lczoKICAgICAgLSAncHRlcm9kYWN0eWwtZGI6L3Zhci9saWIvbXlzcWwnCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOmFscGluZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncmVkaXMtY2xpIHBpbmcgfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDFzCiAgICAgIHJldHJpZXM6IDMKICBwdGVyb2RhY3R5bDoKICAgIGltYWdlOiAnZ2hjci5pby9wdGVyb2RhY3R5bC9wYW5lbDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdwYW5lbC12YXI6L2FwcC92YXIvJwogICAgICAtICdwYW5lbC1uZ2lueDovZXRjL25naW54L2h0dHAuZC8nCiAgICAgIC0gJ3BhbmVsLWNlcnRzOi9ldGMvbGV0c2VuY3J5cHQvJwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9ldGMvZW50cnlwb2ludC5zaAogICAgICAgIHRhcmdldDogL2VudHJ5cG9pbnQuc2gKICAgICAgICBtb2RlOiAnMDc1NScKICAgICAgICBjb250ZW50OiAiIyEvYmluL3NoXG5zZXQgLWVcblxuIGVjaG8gXCJTZXR0aW5nIGxvZ3MgcGVybWlzc2lvbnMuLi5cIlxuIGNob3duIC1SIG5naW54OiAvYXBwL3N0b3JhZ2UvbG9ncy9cblxuIFVTRVJfRVhJU1RTPSQocGhwIGFydGlzYW4gdGlua2VyIC0tbm8tYW5zaSAtLWV4ZWN1dGU9J2VjaG8gXFxQdGVyb2RhY3R5bFxcTW9kZWxzXFxVc2VyOjp3aGVyZShcImVtYWlsXCIsIFwiJ1wiJEFETUlOX0VNQUlMXCInXCIpLT5leGlzdHMoKSA/IFwiMVwiIDogXCIwXCI7JylcblxuIGlmIFsgXCIkVVNFUl9FWElTVFNcIiA9IFwiMFwiIF07IHRoZW5cbiAgIGVjaG8gXCJBZG1pbiBVc2VyIGRvZXMgbm90IGV4aXN0LCBjcmVhdGluZyB1c2VyIG5vdy5cIlxuICAgcGhwIGFydGlzYW4gcDp1c2VyOm1ha2UgLS1uby1pbnRlcmFjdGlvbiBcXFxuICAgICAtLWFkbWluPTEgXFxcbiAgICAgLS1lbWFpbD1cIiRBRE1JTl9FTUFJTFwiIFxcXG4gICAgIC0tdXNlcm5hbWU9XCIkQURNSU5fVVNFUk5BTUVcIiBcXFxuICAgICAtLW5hbWUtZmlyc3Q9XCIkQURNSU5fRklSU1ROQU1FXCIgXFxcbiAgICAgLS1uYW1lLWxhc3Q9XCIkQURNSU5fTEFTVE5BTUVcIiBcXFxuICAgICAtLXBhc3N3b3JkPVwiJEFETUlOX1BBU1NXT1JEXCJcbiAgIGVjaG8gXCJBZG1pbiB1c2VyIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IVwiXG4gZWxzZVxuICAgZWNobyBcIkFkbWluIFVzZXIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIGNyZWF0aW9uLlwiXG4gZmlcblxuIGV4ZWMgc3VwZXJ2aXNvcmQgLS1ub2RhZW1vblxuIgogICAgY29tbWFuZDoKICAgICAgLSAvZW50cnlwb2ludC5zaAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdjdXJsIC1zZiBodHRwOi8vbG9jYWxob3N0OjgwIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAxcwogICAgICByZXRyaWVzOiAzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9QVEVST0RBQ1RZTF84MAogICAgICAtICdBRE1JTl9FTUFJTD0ke0FETUlOX0VNQUlMOi1hZG1pbkBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ0FETUlOX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX0FETUlOfScKICAgICAgLSAnQURNSU5fRklSU1ROQU1FPSR7QURNSU5fRklSU1ROQU1FOi1BZG1pbn0nCiAgICAgIC0gJ0FETUlOX0xBU1ROQU1FPSR7QURNSU5fTEFTVE5BTUU6LVVzZXJ9JwogICAgICAtICdBRE1JTl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQURNSU59JwogICAgICAtICdQVEVST0RBQ1RZTF9IVFRQUz0ke1BURVJPREFDVFlMX0hUVFBTOi1mYWxzZX0nCiAgICAgIC0gQVBQX0VOVj1wcm9kdWN0aW9uCiAgICAgIC0gQVBQX0VOVklST05NRU5UX09OTFk9ZmFsc2UKICAgICAgLSBBUFBfVVJMPSRTRVJWSUNFX1VSTF9QVEVST0RBQ1RZTAogICAgICAtICdBUFBfVElNRVpPTkU9JHtUSU1FWk9ORTotVVRDfScKICAgICAgLSAnQVBQX1NFUlZJQ0VfQVVUSE9SPSR7QVBQX1NFUlZJQ0VfQVVUSE9SOi1hdXRob3JAZXhhbXBsZS5jb219JwogICAgICAtICdMT0dfTEVWRUw9JHtMT0dfTEVWRUw6LWRlYnVnfScKICAgICAgLSBDQUNIRV9EUklWRVI9cmVkaXMKICAgICAgLSBTRVNTSU9OX0RSSVZFUj1yZWRpcwogICAgICAtIFFVRVVFX0RSSVZFUj1yZWRpcwogICAgICAtIFJFRElTX0hPU1Q9cmVkaXMKICAgICAgLSBEQl9EQVRBQkFTRT1wdGVyb2RhY3R5bC1kYgogICAgICAtIERCX1VTRVJOQU1FPSRTRVJWSUNFX1VTRVJfTVlTUUwKICAgICAgLSBEQl9IT1NUPW1hcmlhZGIKICAgICAgLSBEQl9QT1JUPTMzMDYKICAgICAgLSBEQl9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NWVNRTAogICAgICAtIE1BSUxfRlJPTT0kTUFJTF9GUk9NCiAgICAgIC0gTUFJTF9EUklWRVI9JE1BSUxfRFJJVkVSCiAgICAgIC0gTUFJTF9IT1NUPSRNQUlMX0hPU1QKICAgICAgLSBNQUlMX1BPUlQ9JE1BSUxfUE9SVAogICAgICAtIE1BSUxfVVNFUk5BTUU9JE1BSUxfVVNFUk5BTUUKICAgICAgLSBNQUlMX1BBU1NXT1JEPSRNQUlMX1BBU1NXT1JECiAgICAgIC0gTUFJTF9FTkNSWVBUSU9OPSRNQUlMX0VOQ1JZUFRJT04KICB3aW5nczoKICAgIGltYWdlOiAnZ2hjci5pby9wdGVyb2RhY3R5bC93aW5nczpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9XSU5HU184NDQzCiAgICAgIC0gJ1RaPSR7VElNRVpPTkU6LVVUQ30nCiAgICAgIC0gV0lOR1NfVVNFUk5BTUU9JFNFUlZJQ0VfVVNFUl9XSU5HUwogICAgdm9sdW1lczoKICAgICAgLSAnL3Zhci9ydW4vZG9ja2VyLnNvY2s6L3Zhci9ydW4vZG9ja2VyLnNvY2snCiAgICAgIC0gJy92YXIvbGliL2RvY2tlci9jb250YWluZXJzLzovdmFyL2xpYi9kb2NrZXIvY29udGFpbmVycy8nCiAgICAgIC0gJy92YXIvbGliL3B0ZXJvZGFjdHlsL3ZvbHVtZXM6L3Zhci9saWIvcHRlcm9kYWN0eWwvdm9sdW1lcycKICAgICAgLSAnL3RtcC9wdGVyb2RhY3R5bDovdG1wL3B0ZXJvZGFjdHlsJwogICAgICAtICd3aW5nc19saWI6L3Zhci9saWIvcHRlcm9kYWN0eWwvJwogICAgICAtICd3aW5nc19sb2dzOi92YXIvbG9nL3B0ZXJvZGFjdHlsLycKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vZXRjL2NvbmZpZy55bWwKICAgICAgICB0YXJnZXQ6IC9ldGMvcHRlcm9kYWN0eWwvY29uZmlnLnltbAogICAgICAgIGNvbnRlbnQ6ICJkZWJ1ZzogZmFsc2VcbnV1aWQ6IFJlcGxhY2VDb25maWdcbnRva2VuX2lkOiBSZXBsYWNlQ29uZmlnXG50b2tlbjogUmVwbGFjZUNvbmZpZ1xuYXBpOlxuICBob3N0OiAwLjAuMC4wXG4gIHBvcnQ6IDg0NDMgIyBXYXJuaW5nLCBwYW5lbCBtdXN0IGhhdmUgNDQzIGFzIGRhZW1vbiBwb3J0LCB3aGlsZSBoZXJlIGl0IHNob3VsZCBzaG91bGQgYmUgODQ0MywgRlFETiBpbiBDb29saWZ5IGZvciB0aGlzIHNlcnZpY2Ugc2hvdWxkIGJlIGh0dHBzOi8vKjo4NDQzXG4gIHNzbDpcbiAgICBlbmFibGVkOiBmYWxzZVxuICAgIGNlcnQ6IFJlcGxhY2VDb25maWdcbiAgICBrZXk6IFJlcGxhY2VDb25maWdcbiAgdXBsb2FkX2xpbWl0OiAxMDBcbnN5c3RlbTpcbiAgZGF0YTogL3Zhci9saWIvcHRlcm9kYWN0eWwvdm9sdW1lc1xuICBzZnRwOlxuICAgIGJpbmRfcG9ydDogMjAyMlxuYWxsb3dlZF9tb3VudHM6IFtdXG5yZW1vdGU6ICcnIgogICAgcG9ydHM6CiAgICAgIC0gJzIwMjI6MjAyMicK",
+ "tags": [
+ "game",
+ "game server",
+ "management",
+ "panel",
+ "minecraft"
+ ],
+ "logo": "svgs/pterodactyl.png",
+ "minversion": "0.0.0",
+ "port": "80, 8443"
+ },
+ "pterodactyl": {
+ "documentation": "https://pterodactyl.io/?utm_source=coolify.io",
+ "slogan": "Pterodactyl is a free, open-source game server management panel",
+ "compose": "c2VydmljZXM6CiAgbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjoxMC41JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdoZWFsdGhjaGVjay5zaCAtLWNvbm5lY3QgLS1pbm5vZGJfaW5pdGlhbGl6ZWQgfHwgZXhpdCAxJwogICAgICBzdGFydF9wZXJpb2Q6IDEwcwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDFzCiAgICAgIHJldHJpZXM6IDMKICAgIGVudmlyb25tZW50OgogICAgICAtIE1ZU1FMX1JPT1RfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfTVlTUUxST09UCiAgICAgIC0gTVlTUUxfREFUQUJBU0U9cHRlcm9kYWN0eWwtZGIKICAgICAgLSBNWVNRTF9VU0VSPSRTRVJWSUNFX1VTRVJfTVlTUUwKICAgICAgLSBNWVNRTF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NWVNRTAogICAgdm9sdW1lczoKICAgICAgLSAncHRlcm9kYWN0eWwtZGI6L3Zhci9saWIvbXlzcWwnCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOmFscGluZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncmVkaXMtY2xpIHBpbmcgfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDFzCiAgICAgIHJldHJpZXM6IDMKICBwdGVyb2RhY3R5bDoKICAgIGltYWdlOiAnZ2hjci5pby9wdGVyb2RhY3R5bC9wYW5lbDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdwYW5lbC12YXI6L2FwcC92YXIvJwogICAgICAtICdwYW5lbC1uZ2lueDovZXRjL25naW54L2h0dHAuZC8nCiAgICAgIC0gJ3BhbmVsLWNlcnRzOi9ldGMvbGV0c2VuY3J5cHQvJwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9ldGMvZW50cnlwb2ludC5zaAogICAgICAgIHRhcmdldDogL2VudHJ5cG9pbnQuc2gKICAgICAgICBtb2RlOiAnMDc1NScKICAgICAgICBjb250ZW50OiAiIyEvYmluL3NoXG5zZXQgLWVcblxuIGVjaG8gXCJTZXR0aW5nIGxvZ3MgcGVybWlzc2lvbnMuLi5cIlxuIGNob3duIC1SIG5naW54OiAvYXBwL3N0b3JhZ2UvbG9ncy9cblxuIFVTRVJfRVhJU1RTPSQocGhwIGFydGlzYW4gdGlua2VyIC0tbm8tYW5zaSAtLWV4ZWN1dGU9J2VjaG8gXFxQdGVyb2RhY3R5bFxcTW9kZWxzXFxVc2VyOjp3aGVyZShcImVtYWlsXCIsIFwiJ1wiJEFETUlOX0VNQUlMXCInXCIpLT5leGlzdHMoKSA/IFwiMVwiIDogXCIwXCI7JylcblxuIGlmIFsgXCIkVVNFUl9FWElTVFNcIiA9IFwiMFwiIF07IHRoZW5cbiAgIGVjaG8gXCJBZG1pbiBVc2VyIGRvZXMgbm90IGV4aXN0LCBjcmVhdGluZyB1c2VyIG5vdy5cIlxuICAgcGhwIGFydGlzYW4gcDp1c2VyOm1ha2UgLS1uby1pbnRlcmFjdGlvbiBcXFxuICAgICAtLWFkbWluPTEgXFxcbiAgICAgLS1lbWFpbD1cIiRBRE1JTl9FTUFJTFwiIFxcXG4gICAgIC0tdXNlcm5hbWU9XCIkQURNSU5fVVNFUk5BTUVcIiBcXFxuICAgICAtLW5hbWUtZmlyc3Q9XCIkQURNSU5fRklSU1ROQU1FXCIgXFxcbiAgICAgLS1uYW1lLWxhc3Q9XCIkQURNSU5fTEFTVE5BTUVcIiBcXFxuICAgICAtLXBhc3N3b3JkPVwiJEFETUlOX1BBU1NXT1JEXCJcbiAgIGVjaG8gXCJBZG1pbiB1c2VyIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IVwiXG4gZWxzZVxuICAgZWNobyBcIkFkbWluIFVzZXIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIGNyZWF0aW9uLlwiXG4gZmlcblxuIGV4ZWMgc3VwZXJ2aXNvcmQgLS1ub2RhZW1vblxuIgogICAgY29tbWFuZDoKICAgICAgLSAvZW50cnlwb2ludC5zaAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdjdXJsIC1zZiBodHRwOi8vbG9jYWxob3N0OjgwIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAxcwogICAgICByZXRyaWVzOiAzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9QVEVST0RBQ1RZTF84MAogICAgICAtICdBRE1JTl9FTUFJTD0ke0FETUlOX0VNQUlMOi1hZG1pbkBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ0FETUlOX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX0FETUlOfScKICAgICAgLSAnQURNSU5fRklSU1ROQU1FPSR7QURNSU5fRklSU1ROQU1FOi1BZG1pbn0nCiAgICAgIC0gJ0FETUlOX0xBU1ROQU1FPSR7QURNSU5fTEFTVE5BTUU6LVVzZXJ9JwogICAgICAtICdBRE1JTl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQURNSU59JwogICAgICAtICdQVEVST0RBQ1RZTF9IVFRQUz0ke1BURVJPREFDVFlMX0hUVFBTOi1mYWxzZX0nCiAgICAgIC0gQVBQX0VOVj1wcm9kdWN0aW9uCiAgICAgIC0gQVBQX0VOVklST05NRU5UX09OTFk9ZmFsc2UKICAgICAgLSBBUFBfVVJMPSRTRVJWSUNFX1VSTF9QVEVST0RBQ1RZTAogICAgICAtICdBUFBfVElNRVpPTkU9JHtUSU1FWk9ORTotVVRDfScKICAgICAgLSAnQVBQX1NFUlZJQ0VfQVVUSE9SPSR7QVBQX1NFUlZJQ0VfQVVUSE9SOi1hdXRob3JAZXhhbXBsZS5jb219JwogICAgICAtICdMT0dfTEVWRUw9JHtMT0dfTEVWRUw6LWRlYnVnfScKICAgICAgLSBDQUNIRV9EUklWRVI9cmVkaXMKICAgICAgLSBTRVNTSU9OX0RSSVZFUj1yZWRpcwogICAgICAtIFFVRVVFX0RSSVZFUj1yZWRpcwogICAgICAtIFJFRElTX0hPU1Q9cmVkaXMKICAgICAgLSBEQl9EQVRBQkFTRT1wdGVyb2RhY3R5bC1kYgogICAgICAtIERCX1VTRVJOQU1FPSRTRVJWSUNFX1VTRVJfTVlTUUwKICAgICAgLSBEQl9IT1NUPW1hcmlhZGIKICAgICAgLSBEQl9QT1JUPTMzMDYKICAgICAgLSBEQl9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NWVNRTAogICAgICAtIE1BSUxfRlJPTT0kTUFJTF9GUk9NCiAgICAgIC0gTUFJTF9EUklWRVI9JE1BSUxfRFJJVkVSCiAgICAgIC0gTUFJTF9IT1NUPSRNQUlMX0hPU1QKICAgICAgLSBNQUlMX1BPUlQ9JE1BSUxfUE9SVAogICAgICAtIE1BSUxfVVNFUk5BTUU9JE1BSUxfVVNFUk5BTUUKICAgICAgLSBNQUlMX1BBU1NXT1JEPSRNQUlMX1BBU1NXT1JECiAgICAgIC0gTUFJTF9FTkNSWVBUSU9OPSRNQUlMX0VOQ1JZUFRJT04KICB3aW5nczoKICAgIGltYWdlOiAnZ2hjci5pby9wdGVyb2RhY3R5bC93aW5nczpsYXRlc3QnCiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfV0lOR1NfODA4MAogICAgICAtICdUWj0ke1RJTUVaT05FOi1VVEN9JwogICAgICAtIFdJTkdTX1VTRVJOQU1FPXB0ZXJvZGFjdHlsCiAgICB2b2x1bWVzOgogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaycKICAgICAgLSAnL3Zhci9saWIvZG9ja2VyL2NvbnRhaW5lcnMvOi92YXIvbGliL2RvY2tlci9jb250YWluZXJzLycKICAgICAgLSAnL3Zhci9saWIvcHRlcm9kYWN0eWwvOi92YXIvbGliL3B0ZXJvZGFjdHlsLycKICAgICAgLSAnL3RtcC9wdGVyb2RhY3R5bC86L3RtcC9wdGVyb2RhY3R5bC8nCiAgICAgIC0gJ3dpbmdzLWxvZ3M6L3Zhci9sb2cvcHRlcm9kYWN0eWwvJwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9ldGMvY29uZmlnLnltbAogICAgICAgIHRhcmdldDogL2V0Yy9wdGVyb2RhY3R5bC9jb25maWcueW1sCiAgICAgICAgY29udGVudDogImRvY2tlcjpcbiAgbmV0d29yazpcbiAgICBpbnRlcmZhY2U6IDE3Mi4yOC4wLjFcbiAgICBkbnM6XG4gICAgLSAxLjEuMS4xXG4gICAgLSAxLjAuMC4xXG4gICAgbmFtZTogcHRlcm9kYWN0eWxfbndcbiAgICBpc3BuOiBmYWxzZVxuICAgIGRyaXZlcjogXCJcIlxuICAgIG5ldHdvcmtfbW9kZTogcHRlcm9kYWN0eWxfbndcbiAgICBpc19pbnRlcm5hbDogZmFsc2VcbiAgICBlbmFibGVfaWNjOiB0cnVlXG4gICAgbmV0d29ya19tdHU6IDE1MDBcbiAgICBpbnRlcmZhY2VzOlxuICAgICAgdjQ6XG4gICAgICAgIHN1Ym5ldDogMTcyLjI4LjAuMC8xNlxuICAgICAgICBnYXRld2F5OiAxNzIuMjguMC4xXG4gICAgICB2NjpcbiAgICAgICAgc3VibmV0OiBmZGJhOjE3Yzg6NmM5NDo6LzY0XG4gICAgICAgIGdhdGV3YXk6IGZkYmE6MTdjODo2Yzk0OjoxMDExXG4iCg==",
+ "tags": [
+ "game",
+ "game server",
+ "management",
+ "panel",
+ "minecraft"
+ ],
+ "logo": "svgs/pterodactyl.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "qbittorrent": {
+ "documentation": "https://docs.linuxserver.io/images/docker-qbittorrent/?utm_source=coolify.io",
+ "slogan": "The qBittorrent project aims to provide an open-source software alternative to \u03bcTorrent.",
+ "compose": "c2VydmljZXM6CiAgcWJpdDoKICAgIGltYWdlOiAnbHNjci5pby9saW51eHNlcnZlci9xYml0dG9ycmVudDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnV0VCVUlfUE9SVD0ke1dFQlVJX1BPUlQ6LTgwODB9JwogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgdm9sdW1lczoKICAgICAgLSAncWJpdHRvcnJlbnQtY29uZmlnOi9jb25maWcnCiAgICAgIC0gJ3FiaXR0b3JyZW50LWRvd25sb2FkczovZG93bmxvYWRzJwogICAgICAtICdxYml0dG9ycmVudC10b3JyZW50czovdG9ycmVudHMnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy1xJwogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MC8nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICB2dWV0b3JyZW50LWJhY2tlbmQ6CiAgICBpbWFnZTogJ2doY3IuaW8vdnVldG9ycmVudC92dWV0b3JyZW50LWJhY2tlbmQ6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfUUJJVE9SUkVOVF84MDgwCiAgICAgIC0gJ1BPUlQ9JHtXRUJVSV9QT1JUOi04MDgwfScKICAgICAgLSAnUUJJVF9CQVNFPSR7U0VSVklDRV9VUkxfUUJJVE9SUkVOVH0nCiAgICAgIC0gJ1JFTEVBU0VfVFlQRT0ke1JFTEVBU0VfVFlQRTotc3RhYmxlfScKICAgICAgLSAnVVBEQVRFX1ZUX0NST049JHtVUERBVEVfVlRfQ1JPTjotIjAgKiAqICogKiJ9JwogICAgdm9sdW1lczoKICAgICAgLSAndnVldG9ycmVudC1jb25maWc6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLXEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDgwLycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "torrent",
+ "streaming",
+ "webui"
+ ],
+ "logo": "svgs/qbittorrent.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "qdrant": {
+ "documentation": "https://qdrant.tech/documentation/?utm_source=coolify.io",
+ "slogan": "Qdrant is a vector similarity search engine that provides a production-ready service with a convenient API to store, search, and manage points (i.e. vectors) with an additional payload.",
+ "compose": "c2VydmljZXM6CiAgcWRyYW50OgogICAgaW1hZ2U6ICdxZHJhbnQvcWRyYW50OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1FEUkFOVF82MzMzCiAgICAgIC0gJ1FEUkFOVF9fU0VSVklDRV9fQVBJX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfUURSQU5UQVBJS0VZfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3FkcmFudC1zdG9yYWdlOi9xZHJhbnQvc3RvcmFnZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAiYmFzaCAtYyAnOj4gL2Rldi90Y3AvMTI3LjAuMC4xLzYzMzMnIHx8IGV4aXQgMSIKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDMK",
+ "tags": [
+ "ai",
+ "vector-database",
+ "semantic-search",
+ "machine-learning",
+ "bm25",
+ "embeddings",
+ "llm"
+ ],
+ "logo": "svgs/qdrant.png",
+ "minversion": "0.0.0",
+ "port": "6333"
+ },
+ "rabbitmq": {
+ "documentation": "https://www.rabbitmq.com/documentation.html?utm_source=coolify.io",
+ "slogan": "With tens of thousands of users, RabbitMQ is one of the most popular open source message brokers.",
+ "compose": "c2VydmljZXM6CiAgcmFiYml0bXE6CiAgICBpbWFnZTogJ3JhYmJpdG1xOjMtbWFuYWdlbWVudCcKICAgIGhvc3RuYW1lOiByYWJiaXRtcQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfUkFCQklUTVFfMTU2NzIKICAgICAgLSBSQUJCSVRNUV9ERUZBVUxUX1VTRVI9JFNFUlZJQ0VfVVNFUl9SQUJCSVRNUQogICAgICAtIFJBQkJJVE1RX0RFRkFVTFRfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9SQUJCSVRNUQogICAgICAtICdQT1JUPSR7UE9SVDotNTY3Mn0nCiAgICBwb3J0czoKICAgICAgLSAnJHtQT1JUfTo1NjcyJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6ICdyYWJiaXRtcS1kaWFnbm9zdGljcyAtcSBwaW5nJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMzBzCiAgICAgIHJldHJpZXM6IDEwCiAgICB2b2x1bWVzOgogICAgICAtICdyYWJiaXRtcS1kYXRhOi92YXIvbGliL3JhYmJpdG1xLycK",
+ "tags": [
+ "message broker",
+ "message queue",
+ "message-oriented middleware",
+ "mom",
+ "amqp",
+ "mqtt",
+ "stomp",
+ "messaging"
+ ],
+ "logo": "svgs/rabbitmq.svg",
+ "minversion": "0.0.0",
+ "port": "15672"
+ },
+ "radarr": {
+ "documentation": "https://hub.docker.com/r/linuxserver/radarr?utm_source=coolify.io",
+ "slogan": "Radarr\u2060 - A fork of Sonarr to work with movies \u00e0 la Couchpotato.",
+ "compose": "c2VydmljZXM6CiAgcmFkYXJyOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL3JhZGFycjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9SQURBUlJfNzg3OAogICAgICAtIF9BUFBfVVJMPSRTRVJWSUNFX1VSTF9SQURBUlIKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSAnVFo9JHtUWjotQW1lcmljYS9Ub3JvbnRvfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3JhZGFyci1jb25maWc6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo3ODc4L3BpbmcnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUK",
+ "tags": [
+ "media",
+ "server",
+ "movies"
+ ],
+ "logo": "svgs/radarr.svg",
+ "minversion": "0.0.0",
+ "port": "7878"
+ },
+ "rallly": {
+ "documentation": "https://support.rallly.co/self-hosting/introduction?utm_source=coolify.io",
+ "slogan": "Rallly is an open-source scheduling and collaboration tool designed to make organizing events and meetings easier.",
+ "compose": "c2VydmljZXM6CiAgcmFsbGx5X2RiOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNC4yJwogICAgdm9sdW1lczoKICAgICAgLSAncmFsbGx5X2RiX2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1yYWxsbHl9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1kICQke1BPU1RHUkVTX0RCfSAtVSAkJHtQT1NUR1JFU19VU0VSfScKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIHJhbGxseToKICAgIGltYWdlOiAnbHVrZXZlbGxhL3JhbGxseTpsYXRlc3QnCiAgICBwbGF0Zm9ybTogbGludXgvYW1kNjQKICAgIGRlcGVuZHNfb246CiAgICAgIHJhbGxseV9kYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfUkFMTExZXzMwMDAKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcmFsbGx5X2RiOjU0MzIvJHtQT1NUR1JFU19EQjotcmFsbGx5fScKICAgICAgLSAnU0VDUkVUX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF82NF9SQUxMTFl9JwogICAgICAtICdORVhUX1BVQkxJQ19CQVNFX1VSTD1odHRwczovLyR7U0VSVklDRV9VUkxfUkFMTExZfScKICAgICAgLSAnQUxMT1dFRF9FTUFJTFM9JHtBTExPV0VEX0VNQUlMU30nCiAgICAgIC0gJ1NVUFBPUlRfRU1BSUw9JHtTVVBQT1JUX0VNQUlMOi1zdXBwb3J0QGV4YW1wbGUuY29tfScKICAgICAgLSAnU01UUF9IT1NUPSR7U01UUF9IT1NUfScKICAgICAgLSAnU01UUF9QT1JUPSR7U01UUF9QT1JUfScKICAgICAgLSAnU01UUF9TRUNVUkU9JHtTTVRQX1NFQ1VSRX0nCiAgICAgIC0gJ1NNVFBfVVNFUj0ke1NNVFBfVVNFUn0nCiAgICAgIC0gJ1NNVFBfUFdEPSR7U01UUF9QV0R9JwogICAgICAtICdTTVRQX1RMU19FTkFCTEVEPSR7U01UUF9UTFNfRU5BQkxFRH0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gImJhc2ggLWMgJzo+IC9kZXYvdGNwLzEyNy4wLjAuMS8zMDAwJyB8fCBleGl0IDEiCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "scheduling",
+ "rallly",
+ "events",
+ "meeting",
+ "doodle"
+ ],
+ "logo": "svgs/rallly.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "reactive-resume": {
+ "documentation": "https://rxresu.me/?utm_source=coolify.io",
+ "slogan": "A one-of-a-kind resume builder that keeps your privacy in mind.",
+ "compose": "c2VydmljZXM6CiAgcmVhY3RpdmUtcmVzdW1lOgogICAgaW1hZ2U6ICdhbXJ1dGhwaWxsYWkvcmVhY3RpdmUtcmVzdW1lOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1JFQUNUSVZFUkVTVU1FXzMwMDAKICAgICAgLSBQVUJMSUNfVVJMPSRTRVJWSUNFX1VSTF9SRUFDVElWRVJFU1VNRQogICAgICAtICdTVE9SQUdFX1VSTD0ke1NFUlZJQ0VfVVJMX01JTklPfS9kZWZhdWx0JwogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1wb3N0Z3Jlc30nCiAgICAgIC0gQUNDRVNTX1RPS0VOX1NFQ1JFVD0kU0VSVklDRV9QQVNTV09SRF9BQ0NFU1NUT0tFTgogICAgICAtIFJFRlJFU0hfVE9LRU5fU0VDUkVUPSRTRVJWSUNFX1BBU1NXT1JEX1JFRlJFU0hUT0tFTgogICAgICAtIENIUk9NRV9UT0tFTj0kU0VSVklDRV9QQVNTV09SRF9DSFJPTUVUT0tFTgogICAgICAtICdDSFJPTUVfVVJMPXdzOi8vY2hyb21lOjMwMDAvY2hyb21lJwogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5JwogICAgICAtIFNUT1JBR0VfRU5EUE9JTlQ9bWluaW8KICAgICAgLSBTVE9SQUdFX1BPUlQ9OTAwMAogICAgICAtIFNUT1JBR0VfUkVHSU9OPXVzLWVhc3QtMQogICAgICAtIFNUT1JBR0VfQlVDS0VUPWRlZmF1bHQKICAgICAgLSBTVE9SQUdFX0FDQ0VTU19LRVk9JFNFUlZJQ0VfVVNFUl9NSU5JTwogICAgICAtIFNUT1JBR0VfU0VDUkVUX0tFWT0kU0VSVklDRV9QQVNTV09SRF9NSU5JTwogICAgICAtIFNUT1JBR0VfVVNFX1NTTD1mYWxzZQogICAgICAtICdESVNBQkxFX1NJR05VUFM9JHtTRVJWSUNFX0RJU0FCTEVfU0lHTlVQUzotZmFsc2V9JwogICAgICAtICdESVNBQkxFX0VNQUlMX0FVVEg9JHtTRVJWSUNFX0RJU0FCTEVfRU1BSUxfQVVUSDotZmFsc2V9JwogICAgZGVwZW5kc19vbjoKICAgICAgLSBwb3N0Z3JlcwogICAgICAtIG1pbmlvCiAgICAgIC0gY2hyb21lCiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1wb3N0Z3Jlc30nCiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIG1pbmlvOgogICAgaW1hZ2U6ICdxdWF5LmlvL21pbmlvL21pbmlvOmxhdGVzdCcKICAgIGNvbW1hbmQ6ICdzZXJ2ZXIgL2RhdGEgLS1jb25zb2xlLWFkZHJlc3MgIjo5MDAxIicKICAgIGVudmlyb25tZW50OgogICAgICAtIE1JTklPX1NFUlZFUl9VUkw9JE1JTklPX1NFUlZFUl9VUkwKICAgICAgLSBNSU5JT19CUk9XU0VSX1JFRElSRUNUX1VSTD0kTUlOSU9fQlJPV1NFUl9SRURJUkVDVF9VUkwKICAgICAgLSBNSU5JT19ST09UX1VTRVI9JFNFUlZJQ0VfVVNFUl9NSU5JTwogICAgICAtIE1JTklPX1JPT1RfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfTUlOSU8KICAgIHZvbHVtZXM6CiAgICAgIC0gJ21pbmlvLWRhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gbWMKICAgICAgICAtIHJlYWR5CiAgICAgICAgLSBsb2NhbAogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgY2hyb21lOgogICAgaW1hZ2U6ICdnaGNyLmlvL2Jyb3dzZXJsZXNzL2Nocm9tZTpsYXRlc3QnCiAgICBwbGF0Zm9ybTogbGludXgvYW1kNjQKICAgIGVudmlyb25tZW50OgogICAgICAtIEhFQUxUSD10cnVlCiAgICAgIC0gVElNRU9VVD0xMDAwMAogICAgICAtIENPTkNVUlJFTlQ9MTAKICAgICAgLSBUT0tFTj0kU0VSVklDRV9QQVNTV09SRF9DSFJPTUVUT0tFTgogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo3LWFscGluZScKICAgIGNvbW1hbmQ6IHJlZGlzLXNlcnZlcgogICAgdm9sdW1lczoKICAgICAgLSAncmVkaXNfZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "reactive-resume",
+ "resume-builder",
+ "open-source",
+ "2fa"
+ ],
+ "logo": "svgs/rxresume.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "readeck": {
+ "documentation": "https://readeck.org/en/docs/?utm_source=coolify.io",
+ "slogan": "Simple web application that lets you save the precious readable content of web pages you like and want to keep forever.",
+ "compose": "c2VydmljZXM6CiAgcmVhZGVjazoKICAgIGltYWdlOiAnY29kZWJlcmcub3JnL3JlYWRlY2svcmVhZGVjazpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9SRUFERUNLCiAgICAgIC0gJ1JFQURFQ0tfVVNFX1hfRk9SV0FSREVEPSR7UkVBREVDS19VU0VfWF9GT1JXQVJERUQ6LXRydWV9JwogICAgdm9sdW1lczoKICAgICAgLSAncmVhZGVja19kYXRhOi9yZWFkZWNrJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIC9iaW4vcmVhZGVjawogICAgICAgIC0gaGVhbHRoY2hlY2sKICAgICAgICAtICctY29uZmlnJwogICAgICAgIC0gY29uZmlnLnRvbWwKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAycwogICAgICByZXRyaWVzOiAzCg==",
+ "tags": [
+ "read-it-later",
+ "pocket-alternative",
+ "omnivore-alternative",
+ "instapaper-alternative"
+ ],
+ "logo": "svgs/readeck.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "redlib": {
+ "documentation": "https://github.com/redlib-org/redlib?utm_source=coolify.io",
+ "slogan": "An alternative private front-end to Reddit, with its origins in Libreddit.",
+ "compose": "c2VydmljZXM6CiAgcmVkbGliOgogICAgaW1hZ2U6ICdxdWF5LmlvL3JlZGxpYi9yZWRsaWI6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfUkVETElCXzgwODAKICAgICAgLSAnUkVETElCX1NGV19PTkxZPSR7UkVETElCX1NGV19PTkxZOi1vZmZ9JwogICAgICAtICdSRURMSUJfQkFOTkVSPSR7UkVETElCX0JBTk5FUjotIiJ9JwogICAgICAtICdSRURMSUJfUk9CT1RTX0RJU0FCTEVfSU5ERVhJTkc9JHtSRURMSUJfUk9CT1RTX0RJU0FCTEVfSU5ERVhJTkc6LW9mZn0nCiAgICAgIC0gJ1JFRExJQl9ERUZBVUxUX0ZST05UX1BBR0U9JHtSRURMSUJfREVGQVVMVF9GUk9OVF9QQUdFOi13b3JsZG5ld3N9JwogICAgICAtICdSRURMSUJfUFVTSFNISUZUX0ZST05URU5EPSR7UkVETElCX1BVU0hTSElGVF9GUk9OVEVORDotdW5kZWxldGUucHVsbHB1c2guaW99JwogICAgICAtICdSRURMSUJfREVGQVVMVF9MQVlPVVQ9JHtSRURMSUJfREVGQVVMVF9MQVlPVVQ6LWNhcmR9JwogICAgICAtICdSRURMSUJfREVGQVVMVF9XSURFPSR7UkVETElCX0RFRkFVTFRfV0lERTotb2ZmfScKICAgICAgLSAnUkVETElCX0RFRkFVTFRfUE9TVF9TT1JUPSR7UkVETElCX0RFRkFVTFRfUE9TVF9TT1JUOi1ob3R9JwogICAgICAtICdSRURMSUJfREVGQVVMVF9DT01NRU5UX1NPUlQ9JHtSRURMSUJfREVGQVVMVF9DT01NRU5UX1NPUlQ6LWNvbmZpZGVuY2V9JwogICAgICAtICdSRURMSUJfREVGQVVMVF9CTFVSX1NQT0lMRVI9JHtSRURMSUJfREVGQVVMVF9CTFVSX1NQT0lMRVI6LW9mZn0nCiAgICAgIC0gJ1JFRExJQl9ERUZBVUxUX1NIT1dfTlNGVz0ke1JFRExJQl9ERUZBVUxUX1NIT1dfTlNGVzotb2ZmfScKICAgICAgLSAnUkVETElCX0RFRkFVTFRfQkxVUl9OU0ZXPSR7UkVETElCX0RFRkFVTFRfQkxVUl9OU0ZXOi1vZmZ9JwogICAgICAtICdSRURMSUJfREVGQVVMVF9VU0VfSExTPSR7UkVETElCX0RFRkFVTFRfVVNFX0hMUzotb2ZmfScKICAgICAgLSAnUkVETElCX0RFRkFVTFRfSElERV9ITFNfTk9USUZJQ0FUSU9OPSR7UkVETElCX0RFRkFVTFRfSElERV9ITFNfTk9USUZJQ0FUSU9OOi1vZmZ9JwogICAgICAtICdSRURMSUJfREVGQVVMVF9BVVRPUExBWV9WSURFT1M9JHtSRURMSUJfREVGQVVMVF9BVVRPUExBWV9WSURFT1M6LW9mZn0nCiAgICAgIC0gJ1JFRExJQl9ERUZBVUxUX1NVQlNDUklQVElPTlM9JHtSRURMSUJfREVGQVVMVF9TVUJTQ1JJUFRJT05TOi0iIn0nCiAgICAgIC0gJ1JFRExJQl9ERUZBVUxUX0hJREVfQVdBUkRTPSR7UkVETElCX0RFRkFVTFRfSElERV9BV0FSRFM6LW9mZn0nCiAgICAgIC0gJ1JFRExJQl9ERUZBVUxUX0hJREVfU0lERUJBUl9BTkRfU1VNTUFSWT0ke1JFRExJQl9ERUZBVUxUX0hJREVfU0lERUJBUl9BTkRfU1VNTUFSWTotb2ZmfScKICAgICAgLSAnUkVETElCX0RFRkFVTFRfRElTQUJMRV9WSVNJVF9SRURESVRfQ09ORklSTUFUSU9OPSR7UkVETElCX0RFRkFVTFRfRElTQUJMRV9WSVNJVF9SRURESVRfQ09ORklSTUFUSU9OOi1vZmZ9JwogICAgICAtICdSRURMSUJfREVGQVVMVF9ISURFX1NDT1JFPSR7UkVETElCX0RFRkFVTFRfSElERV9TQ09SRTotb2ZmfScKICAgICAgLSAnUkVETElCX0RFRkFVTFRfRklYRURfTkFWQkFSPSR7UkVETElCX0RFRkFVTFRfRklYRURfTkFWQkFSOi1vbn0nCiAgICB1c2VyOiBub2JvZHkKICAgIHNlY3VyaXR5X29wdDoKICAgICAgLSAnbm8tbmV3LXByaXZpbGVnZXM6dHJ1ZScKICAgIGNhcF9kcm9wOgogICAgICAtIEFMTAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC1xTy0gaHR0cDovLzEyNy4wLjAuMTo4MDgwLycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "frontend",
+ "feed"
+ ],
+ "logo": "svgs/redlib.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "rocketchat": {
+ "documentation": "https://github.com/RocketChat/Rocket.Chat?utm_source=coolify.io",
+ "slogan": "Self-hosted, secure and highly customizable open-source communication platform for organizations with sophisticated security and privacy concerns.",
+ "compose": "c2VydmljZXM6CiAgcm9ja2V0Y2hhdDoKICAgIGltYWdlOiAncmVnaXN0cnkucm9ja2V0LmNoYXQvcm9ja2V0Y2hhdC9yb2NrZXQuY2hhdDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9ST0NLRVRDSEFUXzMwMDAKICAgICAgLSAnTU9OR09fVVJMPW1vbmdvZGI6Ly8ke01PTkdPREJfQURWRVJUSVNFRF9IT1NUTkFNRTotbW9uZ29kYn06JHtNT05HT0RCX0lOSVRJQUxfUFJJTUFSWV9QT1JUX05VTUJFUjotMjcwMTd9LyR7TU9OR09EQl9EQVRBQkFTRTotcm9ja2V0Y2hhdH0/cmVwbGljYVNldD0ke01PTkdPREJfUkVQTElDQV9TRVRfTkFNRTotcnMwfScKICAgICAgLSAnTU9OR09fT1BMT0dfVVJMPW1vbmdvZGI6Ly8ke01PTkdPREJfQURWRVJUSVNFRF9IT1NUTkFNRTotbW9uZ29kYn06JHtNT05HT0RCX0lOSVRJQUxfUFJJTUFSWV9QT1JUX05VTUJFUjotMjcwMTd9L2xvY2FsP3JlcGxpY2FTZXQ9JHtNT05HT0RCX1JFUExJQ0FfU0VUX05BTUU6LXJzMH0nCiAgICAgIC0gUk9PVF9VUkw9JFNFUlZJQ0VfVVJMX1JPQ0tFVENIQVQKICAgICAgLSBERVBMT1lfTUVUSE9EPWRvY2tlcgogICAgICAtIFJFR19UT0tFTj0kUkVHX1RPS0VOCiAgICBkZXBlbmRzX29uOgogICAgICBtb25nb2RiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gbm9kZQogICAgICAgIC0gJy0tZXZhbCcKICAgICAgICAtICJjb25zdCBodHRwID0gcmVxdWlyZSgnaHR0cCcpOyBjb25zdCBvcHRpb25zID0geyBob3N0OiAnMC4wLjAuMCcsIHBvcnQ6IDMwMDAsIHRpbWVvdXQ6IDIwMDAsIHBhdGg6ICcvaGVhbHRoJyB9OyBjb25zdCBoZWFsdGhDaGVjayA9IGh0dHAucmVxdWVzdChvcHRpb25zLCAocmVzKSA9PiB7IGNvbnNvbGUubG9nKCdIRUFMVEhDSEVDSyBTVEFUVVM6JywgcmVzLnN0YXR1c0NvZGUpOyBpZiAocmVzLnN0YXR1c0NvZGUgPT0gMjAwKSB7IHByb2Nlc3MuZXhpdCgwKTsgfSBlbHNlIHsgcHJvY2Vzcy5leGl0KDEpOyB9IH0pOyBoZWFsdGhDaGVjay5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7IGNvbnNvbGUuZXJyb3IoJ0VSUk9SJyk7IHByb2Nlc3MuZXhpdCgxKTsgfSk7IGhlYWx0aENoZWNrLmVuZCgpOyIKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIG1vbmdvZGI6CiAgICBpbWFnZTogJ2RvY2tlci5pby9iaXRuYW1pL21vbmdvZGI6NS4wJwogICAgdm9sdW1lczoKICAgICAgLSAnbW9uZ29kYl9kYXRhOi9iaXRuYW1pL21vbmdvZGInCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBNT05HT0RCX1JFUExJQ0FfU0VUX01PREU9cHJpbWFyeQogICAgICAtICdNT05HT0RCX1JFUExJQ0FfU0VUX05BTUU9JHtNT05HT0RCX1JFUExJQ0FfU0VUX05BTUU6LXJzMH0nCiAgICAgIC0gJ01PTkdPREJfUE9SVF9OVU1CRVI9JHtNT05HT0RCX1BPUlRfTlVNQkVSOi0yNzAxN30nCiAgICAgIC0gJ01PTkdPREJfSU5JVElBTF9QUklNQVJZX0hPU1Q9JHtNT05HT0RCX0lOSVRJQUxfUFJJTUFSWV9IT1NUOi1tb25nb2RifScKICAgICAgLSAnTU9OR09EQl9JTklUSUFMX1BSSU1BUllfUE9SVF9OVU1CRVI9JHtNT05HT0RCX0lOSVRJQUxfUFJJTUFSWV9QT1JUX05VTUJFUjotMjcwMTd9JwogICAgICAtICdNT05HT0RCX0FEVkVSVElTRURfSE9TVE5BTUU9JHtNT05HT0RCX0FEVkVSVElTRURfSE9TVE5BTUU6LW1vbmdvZGJ9JwogICAgICAtICdNT05HT0RCX0VOQUJMRV9KT1VSTkFMPSR7TU9OR09EQl9FTkFCTEVfSk9VUk5BTDotdHJ1ZX0nCiAgICAgIC0gJ0FMTE9XX0VNUFRZX1BBU1NXT1JEPSR7QUxMT1dfRU1QVFlfUEFTU1dPUkQ6LXllc30nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogImVjaG8gJ2RiLnN0YXRzKCkub2snIHwgbW9uZ28gbG9jYWxob3N0OjI3MDE3L3Rlc3QgLS1xdWlldCIKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "rocketchat",
+ "chat",
+ "communication",
+ "privacy",
+ "mongodb",
+ "open",
+ "source"
+ ],
+ "logo": "svgs/rocketchat.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "ryot": {
+ "documentation": "https://github.com/ignisda/ryot?utm_source=coolify.io",
+ "slogan": "Roll your own tracker! Ryot is a self-hosted platform for tracking various aspects of life such as media consumption, fitness activities, and more.",
+ "compose": "c2VydmljZXM6CiAgcnlvdDoKICAgIGltYWdlOiAnaWduaXNkYS9yeW90OnY4JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfUllPVF84MDAwCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHBvc3RncmVzcWw6NTQzMi8ke1BPU1RHUkVTX0RCfScKICAgICAgLSAnU0VSVkVSX0FETUlOX0FDQ0VTU19UT0tFTj0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfUllPVH0nCiAgICAgIC0gJ1RaPSR7VFo6LUV1cm9wZS9BbXN0ZXJkYW19JwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGVhbHRoJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAncnlvdF9wb3N0Z3Jlc3FsX2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1yeW90LWRifScKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Ftc3RlcmRhbX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "rss",
+ "reader",
+ "self-hosted",
+ "automation",
+ "tracker",
+ "media",
+ "fitness"
+ ],
+ "logo": "svgs/ryot.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "seafile": {
+ "documentation": "https://manual.seafile.com?utm_source=coolify.io",
+ "slogan": "Open source cloud storage system for file sync, share and document collaboration",
+ "compose": "c2VydmljZXM6CiAgc2VhZmlsZToKICAgIGltYWdlOiAnc2VhZmlsZWx0ZC9zZWFmaWxlLW1jOjEyLjAtbGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnc2VhZmlsZS1kYXRhOi9zaGFyZWQnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9TRUFGSUxFXzgwCiAgICAgIC0gJ1NFQUZJTEVfU0VSVkVSX0hPU1ROQU1FPSR7U0VSVklDRV9VUkxfU0VBRklMRV84MH0nCiAgICAgIC0gREJfSE9TVD1tYXJpYWRiCiAgICAgIC0gREJfUE9SVD0zMzA2CiAgICAgIC0gJ0RCX1JPT1RfUEFTU1dEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTFJPT1R9JwogICAgICAtICdEQl9VU0VSPSR7U0VSVklDRV9VU0VSX01ZU1FMfScKICAgICAgLSAnREJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMfScKICAgICAgLSAnU0VBRklMRV9NWVNRTF9EQl9DQ05FVF9EQl9OQU1FPSR7U0VBRklMRV9NWVNRTF9EQl9DQ05FVF9EQl9OQU1FOi1jY25ldF9kYn0nCiAgICAgIC0gJ1NFQUZJTEVfTVlTUUxfREJfU0VBRklMRV9EQl9OQU1FPSR7U0VBRklMRV9NWVNRTF9EQl9TRUFGSUxFX0RCX05BTUU6LXNlYWZpbGVfZGJ9JwogICAgICAtICdTRUFGSUxFX01ZU1FMX0RCX1NFQUhVQl9EQl9OQU1FPSR7U0VBRklMRV9NWVNRTF9EQl9TRUFIVUJfREJfTkFNRTotc2VhaHViX2RifScKICAgICAgLSAnVElNRV9aT05FPSR7VElNRV9aT05FOi1VVEN9JwogICAgICAtICdJTklUX1NFQUZJTEVfQURNSU5fRU1BSUw9JHtJTklUX1NFQUZJTEVfQURNSU5fRU1BSUw6LXRlc3RAZXhhbXBsZS5jb219JwogICAgICAtICdJTklUX1NFQUZJTEVfQURNSU5fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0FETUlOfScKICAgICAgLSAnU0VBRklMRV9TRVJWRVJfUFJPVE9DT0w9JHtTRUFGSUxFX1NFUlZFUl9QUk9UT0NPTDotaHR0cH0nCiAgICAgIC0gJ1NJVEVfUk9PVD0ke1NJVEVfUk9PVDotL30nCiAgICAgIC0gJ05PTl9ST09UPSR7Tk9OX1JPT1Q6LWZhbHNlfScKICAgICAgLSAnSldUX1BSSVZBVEVfS0VZPSR7U0VSVklDRV9QQVNTV09SRF82NF9KV1R9JwogICAgICAtICdTRUFGSUxFX0xPR19UT19TVERPVVQ9JHtTRUFGSUxFX0xPR19UT19TVERPVVQ6LXRydWV9JwogICAgZGVwZW5kc19vbjoKICAgICAgbWFyaWFkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBtZW1jYWNoZWQ6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX3N0YXJ0ZWQKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MC9hcGkyL3BpbmcnCiAgICAgIGludGVydmFsOiAyMHMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTAKICBtYXJpYWRiOgogICAgaW1hZ2U6ICdtYXJpYWRiOjExJwogICAgdm9sdW1lczoKICAgICAgLSAnc2VhZmlsZV9tYXJpYWRiX2RhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUxST09UfScKICAgICAgLSAnTVlTUUxfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LXNlYWZpbGUtZGJ9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGhlYWx0aGNoZWNrLnNoCiAgICAgICAgLSAnLS1jb25uZWN0JwogICAgICAgIC0gJy0taW5ub2RiX2luaXRpYWxpemVkJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgbWVtY2FjaGVkOgogICAgaW1hZ2U6ICdtZW1jYWNoZWQ6bGF0ZXN0JwogICAgZW50cnlwb2ludDogJ21lbWNhY2hlZCAtbSAyNTYnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2Jhc2ggLWMgImVjaG8gdmVyc2lvbiB8IChleGVjIDM8Pi9kZXYvdGNwL2xvY2FsaG9zdC8xMTIxMTsgY2F0ID4mMzsgdGltZW91dCAwLjUgY2F0IDwmMzsgZXhlYyAzPCYtKSInCiAgICAgIGludGVydmFsOiAyMHMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "file-manager",
+ "file-sharing",
+ "storage"
+ ],
+ "logo": "svgs/seafile.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "searxng": {
+ "documentation": "https://docs.searxng.org?utm_source=coolify.io",
+ "slogan": "SearXNG is a free internet metasearch engine which aggregates results from more than 70 search services.",
+ "compose": "c2VydmljZXM6CiAgc2VhcnhuZzoKICAgIGltYWdlOiBzZWFyeG5nL3NlYXJ4bmcKICAgIGRlcGVuZHNfb246CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9TRUFSWE5HXzgwODAKICAgICAgLSAnSU5TVEFOQ0VfTkFNRT0ke0lOU1RBTkNFX05BTUU6LWNvb2xpZnl9JwogICAgICAtICdCQVNFX1VSTD0ke1NFUlZJQ0VfVVJMX1NFQVJYTkdfODA4MH0nCiAgICAgIC0gJ1NFQVJYTkdfVVJMPSR7U0VSVklDRV9VUkxfU0VBUlhOR184MDgwfScKICAgICAgLSAnU0VBUlhOR19CSU5EX0FERFJFU1M9JHtTRUFSWE5HX0JJTkRfQUREUkVTUzotMC4wLjAuMH0nCiAgICAgIC0gJ1NFQVJYTkdfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9TRUFSWE5HU0VDUkVUfScKICAgICAgLSAnU0VBUlhOR19SRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LzAnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy1xJwogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MC9oZWFsdGh6JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMwogICAgdm9sdW1lczoKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vc2V0dGluZ3MueW1sCiAgICAgICAgdGFyZ2V0OiAvZXRjL3NlYXJ4bmcvc2V0dGluZ3MueW1sCiAgICAgICAgY29udGVudDogIiMgc2VlIGh0dHBzOi8vZG9jcy5zZWFyeG5nLm9yZy9hZG1pbi9zZXR0aW5ncy9zZXR0aW5ncy5odG1sI3NldHRpbmdzLXVzZS1kZWZhdWx0LXNldHRpbmdzXG51c2VfZGVmYXVsdF9zZXR0aW5nczogdHJ1ZVxuc2VydmVyOlxuICBsaW1pdGVyOiBmYWxzZVxuICBpbWFnZV9wcm94eTogdHJ1ZVxuc2VhcmNoOlxuICBmb3JtYXRzOlxuICAgIC0gaHRtbFxuICAgIC0gY3N2XG4gICAgLSBqc29uXG4gICAgLSByc3NcbnVpOlxuICBzdGF0aWNfdXNlX2hhc2g6IHRydWVcbiIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vbGltaXRlci50b21sCiAgICAgICAgdGFyZ2V0OiAvZXRjL3NlYXJ4bmcvbGltaXRlci50b21sCiAgICAgICAgY29udGVudDogIiMgVGhpcyBjb25maWd1cmF0aW9uIGZpbGUgdXBkYXRlcyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGVcbiMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyeG5nL3NlYXJ4bmcvYmxvYi9tYXN0ZXIvc2VhcngvYm90ZGV0ZWN0aW9uL2xpbWl0ZXIudG9tbFxuXG5bYm90ZGV0ZWN0aW9uLmlwX2xpbWl0XVxuIyBhY3RpdmF0ZSBsaW5rX3Rva2VuIG1ldGhvZCBpbiB0aGUgaXBfbGltaXQgbWV0aG9kXG5saW5rX3Rva2VuID0gdHJ1ZVxuIgogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo3JwogICAgcmVzdGFydDogYWx3YXlzCiAgICB2b2x1bWVzOgogICAgICAtICdyZWRpcy1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMwo=",
+ "tags": [
+ "search",
+ "google",
+ "engine",
+ "images",
+ "documents",
+ "rss",
+ "proxy",
+ "news",
+ "web",
+ "api"
+ ],
+ "logo": "svgs/searxng.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "sequin": {
+ "documentation": "https://sequinstream.com/docs/?utm_source=coolify.io",
+ "slogan": "The fastest Postgres change data capture",
+ "compose": "c2VydmljZXM6CiAgc2VxdWluOgogICAgaW1hZ2U6ICdzZXF1aW4vc2VxdWluOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1NFUVVJTl83Mzc2CiAgICAgIC0gJ1NFUlZFUl9IT1NUPSR7U0VSVklDRV9VUkxfU0VRVUlOfScKICAgICAgLSBQR19IT1NUTkFNRT1wb3N0Z3JlcwogICAgICAtICdQR19EQVRBQkFTRT0ke1BPU1RHUkVTX0RCOi1zZXF1aW4tZGJ9JwogICAgICAtIFBHX1BPUlQ9NTQzMgogICAgICAtICdQR19VU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BHX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gUEdfUE9PTF9TSVpFPTIwCiAgICAgIC0gJ1NFQ1JFVF9LRVlfQkFTRT0ke1NFUlZJQ0VfUkVBTEJBU0U2NF82NF9TRUNSRVRLRVl9JwogICAgICAtICdWQVVMVF9LRVk9JHtTRVJWSUNFX1JFQUxCQVNFNjRfVkFVTFRLRVl9JwogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5JwogICAgICAtIENPTkZJR19GSUxFX1BBVEg9L2NvbmZpZy9wbGF5Z3JvdW5kLnltbAogICAgICAtICdGRUFUVVJFX0FDQ09VTlRfU0VMRl9TSUdOVVA9JHtGRUFUVVJFX0FDQ09VTlRfU0VMRl9TSUdOVVA6LWZhbHNlfScKICAgICAgLSAnU0VRVUlOX1RFTEVNRVRSWV9ESVNBQkxFRD0ke1NFUVVJTl9URUxFTUVUUllfRElTQUJMRUQ6LWZhbHNlfScKICAgICAgLSAnQ1JBU0hfUkVQT1JUSU5HX0RJU0FCTEVEPSR7Q1JBU0hfUkVQT1JUSU5HX0RJU0FCTEVEOi1mYWxzZX0nCiAgICBkZXBlbmRzX29uOgogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0OjczNzYvaGVhbHRoJwogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNicKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1zZXF1aW4tZGJ9JwogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgIGNvbW1hbmQ6CiAgICAgIC0gcG9zdGdyZXMKICAgICAgLSAnLWMnCiAgICAgIC0gd2FsX2xldmVsPWxvZ2ljYWwKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30gLWQgc2VxdWluJwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDJzCiAgICAgIHJldHJpZXM6IDUKICAgICAgc3RhcnRfcGVyaW9kOiAycwogICAgICBzdGFydF9pbnRlcnZhbDogMXMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzX2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo3JwogICAgY29tbWFuZDoKICAgICAgLSByZWRpcy1zZXJ2ZXIKICAgICAgLSAnLS1wb3J0JwogICAgICAtICc2Mzc5JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgICB2b2x1bWVzOgogICAgICAtICdyZWRpc19kYXRhOi9kYXRhJwo=",
+ "tags": [
+ "postgres",
+ "sync",
+ "data"
+ ],
+ "logo": "svgs/sequin.svg",
+ "minversion": "0.0.0",
+ "port": "7376"
+ },
+ "shlink": {
+ "documentation": "https://shlink.io/?utm_source=coolify.io",
+ "slogan": "The definitive self-hosted URL shortener",
+ "compose": "c2VydmljZXM6CiAgc2hsaW5rOgogICAgaW1hZ2U6ICdzaGxpbmtpby9zaGxpbms6c3RhYmxlJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfU0hMSU5LXzgwODAKICAgICAgLSAnREVGQVVMVF9ET01BSU49JHtTRVJWSUNFX1VSTF9TSExJTkt9JwogICAgICAtIElTX0hUVFBTX0VOQUJMRUQ9ZmFsc2UKICAgICAgLSAnSU5JVElBTF9BUElfS0VZPSR7U0VSVklDRV9CQVNFNjRfU0hMSU5LQVBJS0VZfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3NobGluay1kYXRhOi9ldGMvc2hsaW5rL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MC9yZXN0L3YzL2hlYWx0aCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIHNobGluay13ZWI6CiAgICBpbWFnZTogc2hsaW5raW8vc2hsaW5rLXdlYi1jbGllbnQKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1NITElOS1dFQl84MDgwCiAgICAgIC0gJ1NITElOS19TRVJWRVJfQVBJX0tFWT0ke1NFUlZJQ0VfQkFTRTY0X1NITElOS0FQSUtFWX0nCiAgICAgIC0gJ1NITElOS19TRVJWRVJfVVJMPSR7U0VSVklDRV9VUkxfU0hMSU5LfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDgwJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "tags": [
+ "links",
+ "shortener",
+ "sharing",
+ "url",
+ "short",
+ "link",
+ "sharing"
+ ],
+ "logo": "svgs/default.webp",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "slash": {
+ "documentation": "https://github.com/yourselfhosted/slash?utm_source=coolify.io",
+ "slogan": "An open source, self-hosted links shortener and sharing platform.",
+ "compose": "c2VydmljZXM6CiAgc2xhc2g6CiAgICBpbWFnZTogeW91cnNlbGZob3N0ZWQvc2xhc2gKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1NMQVNIXzUyMzEKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3NsYXNoLWRhdGE6L3Zhci9vcHQvc2xhc2gnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy1xJwogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6NTIzMScKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "links",
+ "shortener",
+ "sharing",
+ "url",
+ "short",
+ "link",
+ "sharing"
+ ],
+ "logo": "svgs/default.webp",
+ "minversion": "0.0.0",
+ "port": "5231"
+ },
+ "snapdrop": {
+ "documentation": "https://github.com/RobinLinus/snapdrop?utm_source=coolify.io",
+ "slogan": "A self-hosted file-sharing service for secure and convenient file transfers, whether on a local network or the internet.",
+ "compose": "c2VydmljZXM6CiAgc25hcGRyb3A6CiAgICBpbWFnZTogJ2xpbnV4c2VydmVyL3NuYXBkcm9wOnZlcnNpb24tYjhiNzhjYzInCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9TTkFQRFJPUAogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtIFRaPUV1cm9wZS9NYWRyaWQKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3NuYXBkcm9wLWNvbmZpZzovY29uZmlnJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "tags": [
+ "file",
+ "sharing",
+ "transfer",
+ "local",
+ "network",
+ "internet"
+ ],
+ "logo": "svgs/default.webp",
+ "minversion": "0.0.0"
+ },
+ "soketi": {
+ "documentation": "https://docs.soketi.app?utm_source=coolify.io",
+ "slogan": "Soketi is your simple, fast, and resilient open-source WebSockets server.",
+ "compose": "c2VydmljZXM6CiAgc29rZXRpOgogICAgaW1hZ2U6ICdxdWF5LmlvL3Nva2V0aS9zb2tldGk6MS42LTE2LWRlYmlhbicKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1NPS0VUSV82MDAxCiAgICAgIC0gJ1NPS0VUSV9ERUJVRz0ke0RFQlVHOi0wfScKICAgICAgLSAnU09LRVRJX0RFRkFVTFRfQVBQX0lEPSR7U0VSVklDRV9VU0VSX1NPS0VUSX0nCiAgICAgIC0gJ1NPS0VUSV9ERUZBVUxUX0FQUF9LRVk9JHtTRVJWSUNFX1JFQUxCQVNFNjRfNjRfU09LRVRJS0VZfScKICAgICAgLSAnU09LRVRJX0RFRkFVTFRfQVBQX1NFQ1JFVD0ke1NFUlZJQ0VfUkVBTEJBU0U2NF82NF9TT0tFVElTRUNSRVR9JwogICAgICAtICdTT0tFVElfUFVTSEVSX1NDSEVNRT0ke1NPS0VUSV9QVVNIRVJfU0NIRU1FOi1odHRwc30nCiAgICAgIC0gJ1NPS0VUSV9ERUZBVUxUX0FQUF9FTkFCTEVfQ0xJRU5UX01FU1NBR0VTPSR7REVGQVVMVF9BUFBfRU5BQkxFX0NMSUVOVF9NRVNTQUdFU30nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gImJhc2ggLWMgJzo+IC9kZXYvdGNwLzEyNy4wLjAuMS82MDAxJyB8fCBleGl0IDEiCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMwo=",
+ "tags": [
+ "websockets",
+ "open",
+ "source",
+ "messaging"
+ ],
+ "logo": "svgs/soketi.jpeg",
+ "minversion": "0.0.0",
+ "port": "6001"
+ },
+ "sonarr": {
+ "documentation": "https://hub.docker.com/r/linuxserver/sonarr?utm_source=coolify.io",
+ "slogan": "Sonarr\u2060 (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.",
+ "compose": "c2VydmljZXM6CiAgc29uYXJyOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL3NvbmFycjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9TT05BUlJfODk4OQogICAgICAtIF9BUFBfVVJMPSRTRVJWSUNFX1VSTF9TT05BUlIKICAgICAgLSBQVUlEPTEwMDAKICAgICAgLSBQR0lEPTEwMDAKICAgICAgLSAnVFo9JHtUWjotQW1lcmljYS9Ub3JvbnRvfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3NvbmFyci1jb25maWc6L2NvbmZpZycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo4OTg5L3BpbmcnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUK",
+ "tags": [
+ "media",
+ "server",
+ "tv"
+ ],
+ "logo": "svgs/sonarr.svg",
+ "minversion": "0.0.0",
+ "port": "8989"
+ },
+ "statusnook": {
+ "documentation": "https://statusnook.com?utm_source=coolify.io",
+ "slogan": "Effortlessly deploy a status page and start monitoring endpoints in minutes",
+ "compose": "c2VydmljZXM6CiAgc3RhdHVzbm9vazoKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1NUQVRVU05PT0tfODAwMAogICAgdm9sdW1lczoKICAgICAgLSAnc3RhdHVzbm9vay1kYXRhOi9hcHAvc3RhdHVzbm9vay1kYXRhJwogICAgaW1hZ2U6IGdva3Nhbi9zdGF0dXNub29rCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy1xJwogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "go",
+ "html",
+ "monitoring",
+ "sqlite",
+ "self",
+ "hosted",
+ "status",
+ "page",
+ "htmx",
+ "smtp",
+ "slack"
+ ],
+ "logo": "svgs/statusnook.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "stirling-pdf": {
+ "documentation": "https://github.com/Stirling-Tools/Stirling-PDF?utm_source=coolify.io",
+ "slogan": "Stirling is a powerful web based PDF manipulation tool",
+ "compose": "c2VydmljZXM6CiAgc3RpcmxpbmctcGRmOgogICAgaW1hZ2U6ICdzdGlybGluZ3Rvb2xzL3N0aXJsaW5nLXBkZjpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdzdGlybGluZy10cmFpbmluZy1kYXRhOi91c3Ivc2hhcmUvdGVzc2VyYWN0LW9jci81L3Rlc3NkYXRhJwogICAgICAtICdzdGlybGluZy1jb25maWdzOi9jb25maWdzJwogICAgICAtICdzdGlybGluZy1jdXN0b20tZmlsZXM6L2N1c3RvbUZpbGVzLycKICAgICAgLSAnc3RpcmxpbmctbG9nczovbG9ncy8nCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9TUERGXzgwODAKICAgICAgLSBET0NLRVJfRU5BQkxFX1NFQ1VSSVRZPWZhbHNlCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogJ2N1cmwgLS1mYWlsIC0tc2lsZW50IGh0dHA6Ly8xMjcuMC4wLjE6ODA4MC9hcGkvdjEvaW5mby9zdGF0dXMgfCBncmVwIC1xICJVUCIgfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "pdf",
+ "manipulation",
+ "web",
+ "tool"
+ ],
+ "logo": "svgs/stirling.png",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "strapi": {
+ "documentation": "https://docs.strapi.io/?utm_source=coolify.io",
+ "slogan": "Open-source headless CMS to build powerful APIs with built-in content management.",
+ "compose": "c2VydmljZXM6CiAgc3RyYXBpOgogICAgaW1hZ2U6ICdlbGVzdGlvL3N0cmFwaS1kZXZlbG9wbWVudDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9TVFJBUElfMTMzNwogICAgICAtIERBVEFCQVNFX0NMSUVOVD1wb3N0Z3JlcwogICAgICAtIERBVEFCQVNFX0hPU1Q9cG9zdGdyZXNxbAogICAgICAtIERBVEFCQVNFX1BPUlQ9NTQzMgogICAgICAtICdEQVRBQkFTRV9OQU1FPSR7UE9TVEdSRVNRTF9EQVRBQkFTRTotc3RyYXBpfScKICAgICAgLSBEQVRBQkFTRV9VU0VSTkFNRT0kU0VSVklDRV9VU0VSX1BPU1RHUkVTUUwKICAgICAgLSBEQVRBQkFTRV9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMCiAgICAgIC0gSldUX1NFQ1JFVD0kU0VSVklDRV9CQVNFNjRfNjRfU0VDUkVUCiAgICAgIC0gQURNSU5fSldUX1NFQ1JFVD0kU0VSVklDRV9CQVNFNjRfNjRfU0VDUkVUCiAgICAgIC0gQVBQX0tFWVM9JFNFUlZJQ0VfQkFTRTY0XzY0X0tFWQogICAgICAtICdTVFJBUElfVEVMRU1FVFJZX0RJU0FCTEVEPSR7U1RSQVBJX1RFTEVNRVRSWV9ESVNBQkxFRDotdHJ1ZX0nCiAgICAgIC0gJ1NUUkFQSV9MSUNFTlNFPSR7U1RSQVBJX0xJQ0VOU0V9JwogICAgICAtICdOT0RFX0VOVj0ke05PREVfRU5WOi1kZXZlbG9wbWVudH0nCiAgICAgIC0gJ0JST1dTRVI9JHtCUk9XU0VSOi10cnVlfScKICAgICAgLSAnU1RSQVBJX1BMVUdJTl9JMThOX0lOSVRfTE9DQUxFX0NPREU9JHtTVFJBUElfUExVR0lOX0kxOE5fSU5JVF9MT0NBTEVfQ09ERTotZW59JwogICAgICAtICdTVFJBUElfRU5GT1JDRV9TT1VSQ0VNQVBTPSR7U1RSQVBJX0VORk9SQ0VfU09VUkNFTUFQUzotZmFsc2V9JwogICAgICAtICdGQVNUX1JFRlJFU0g9JHtGQVNUX1JFRlJFU0g6LXRydWV9JwogICAgdm9sdW1lczoKICAgICAgLSAnc3RyYXBpLWNvbmZpZzovb3B0L2FwcC9jb25maWcnCiAgICAgIC0gJ3N0cmFwaS1zcmM6L29wdC9hcHAvc3JjJwogICAgICAtICdzdHJhcGktdXBsb2Fkczovb3B0L2FwcC9wdWJsaWMvdXBsb2FkcycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLXEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMToxMzM3LycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogIHBvc3RncmVzcWw6CiAgICBpbWFnZTogJ2VsZXN0aW8vcG9zdGdyZXM6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNRTF9EQVRBQkFTRTotc3RyYXBpfScKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVNRTAogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUwKICAgICAgLSBQR0RBVEE9L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhCiAgICB2b2x1bWVzOgogICAgICAtICdzdHJhcGktcG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "cms",
+ "headless",
+ "mysql",
+ "api"
+ ],
+ "logo": "svgs/strapi.svg",
+ "minversion": "0.0.0",
+ "port": "1337"
+ },
+ "supabase": {
+ "documentation": "https://supabase.io?utm_source=coolify.io",
+ "slogan": "The open source Firebase alternative.",
+ "compose": "c2VydmljZXM6CiAgc3VwYWJhc2Uta29uZzoKICAgIGltYWdlOiAna29uZzoyLjguMScKICAgIGVudHJ5cG9pbnQ6ICdiYXNoIC1jICcnZXZhbCAiZWNobyBcIiQkKGNhdCB+L3RlbXAueW1sKVwiIiA+IH4va29uZy55bWwgJiYgL2RvY2tlci1lbnRyeXBvaW50LnNoIGtvbmcgZG9ja2VyLXN0YXJ0JycnCiAgICBkZXBlbmRzX29uOgogICAgICBzdXBhYmFzZS1hbmFseXRpY3M6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1NVUEFCQVNFS09OR184MDAwCiAgICAgIC0gJ0tPTkdfUE9SVF9NQVBTPTQ0Mzo4MDAwJwogICAgICAtICdKV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtIEtPTkdfREFUQUJBU0U9b2ZmCiAgICAgIC0gS09OR19ERUNMQVJBVElWRV9DT05GSUc9L2hvbWUva29uZy9rb25nLnltbAogICAgICAtICdLT05HX0ROU19PUkRFUj1MQVNULEEsQ05BTUUnCiAgICAgIC0gJ0tPTkdfUExVR0lOUz1yZXF1ZXN0LXRyYW5zZm9ybWVyLGNvcnMsa2V5LWF1dGgsYWNsLGJhc2ljLWF1dGgnCiAgICAgIC0gS09OR19OR0lOWF9QUk9YWV9QUk9YWV9CVUZGRVJfU0laRT0xNjBrCiAgICAgIC0gJ0tPTkdfTkdJTlhfUFJPWFlfUFJPWFlfQlVGRkVSUz02NCAxNjBrJwogICAgICAtICdTVVBBQkFTRV9BTk9OX0tFWT0ke1NFUlZJQ0VfU1VQQUJBU0VBTk9OX0tFWX0nCiAgICAgIC0gJ1NVUEFCQVNFX1NFUlZJQ0VfS0VZPSR7U0VSVklDRV9TVVBBQkFTRVNFUlZJQ0VfS0VZfScKICAgICAgLSAnREFTSEJPQVJEX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX0FETUlOfScKICAgICAgLSAnREFTSEJPQVJEX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICB2b2x1bWVzOgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi92b2x1bWVzL2FwaS9rb25nLnltbAogICAgICAgIHRhcmdldDogL2hvbWUva29uZy90ZW1wLnltbAogICAgICAgIGNvbnRlbnQ6ICJfZm9ybWF0X3ZlcnNpb246ICcyLjEnXG5fdHJhbnNmb3JtOiB0cnVlXG5cbiMjI1xuIyMjIENvbnN1bWVycyAvIFVzZXJzXG4jIyNcbmNvbnN1bWVyczpcbiAgLSB1c2VybmFtZTogREFTSEJPQVJEXG4gIC0gdXNlcm5hbWU6IGFub25cbiAgICBrZXlhdXRoX2NyZWRlbnRpYWxzOlxuICAgICAgLSBrZXk6ICRTVVBBQkFTRV9BTk9OX0tFWVxuICAtIHVzZXJuYW1lOiBzZXJ2aWNlX3JvbGVcbiAgICBrZXlhdXRoX2NyZWRlbnRpYWxzOlxuICAgICAgLSBrZXk6ICRTVVBBQkFTRV9TRVJWSUNFX0tFWVxuXG4jIyNcbiMjIyBBY2Nlc3MgQ29udHJvbCBMaXN0XG4jIyNcbmFjbHM6XG4gIC0gY29uc3VtZXI6IGFub25cbiAgICBncm91cDogYW5vblxuICAtIGNvbnN1bWVyOiBzZXJ2aWNlX3JvbGVcbiAgICBncm91cDogYWRtaW5cblxuIyMjXG4jIyMgRGFzaGJvYXJkIGNyZWRlbnRpYWxzXG4jIyNcbmJhc2ljYXV0aF9jcmVkZW50aWFsczpcbi0gY29uc3VtZXI6IERBU0hCT0FSRFxuICB1c2VybmFtZTogJERBU0hCT0FSRF9VU0VSTkFNRVxuICBwYXNzd29yZDogJERBU0hCT0FSRF9QQVNTV09SRFxuXG5cbiMjI1xuIyMjIEFQSSBSb3V0ZXNcbiMjI1xuc2VydmljZXM6XG5cbiAgIyMgT3BlbiBBdXRoIHJvdXRlc1xuICAtIG5hbWU6IGF1dGgtdjEtb3BlblxuICAgIHVybDogaHR0cDovL3N1cGFiYXNlLWF1dGg6OTk5OS92ZXJpZnlcbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IGF1dGgtdjEtb3BlblxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL2F1dGgvdjEvdmVyaWZ5XG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuICAtIG5hbWU6IGF1dGgtdjEtb3Blbi1jYWxsYmFja1xuICAgIHVybDogaHR0cDovL3N1cGFiYXNlLWF1dGg6OTk5OS9jYWxsYmFja1xuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogYXV0aC12MS1vcGVuLWNhbGxiYWNrXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvYXV0aC92MS9jYWxsYmFja1xuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IGNvcnNcbiAgLSBuYW1lOiBhdXRoLXYxLW9wZW4tYXV0aG9yaXplXG4gICAgdXJsOiBodHRwOi8vc3VwYWJhc2UtYXV0aDo5OTk5L2F1dGhvcml6ZVxuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogYXV0aC12MS1vcGVuLWF1dGhvcml6ZVxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL2F1dGgvdjEvYXV0aG9yaXplXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuXG4gICMjIFNlY3VyZSBBdXRoIHJvdXRlc1xuICAtIG5hbWU6IGF1dGgtdjFcbiAgICBfY29tbWVudDogJ0dvVHJ1ZTogL2F1dGgvdjEvKiAtPiBodHRwOi8vc3VwYWJhc2UtYXV0aDo5OTk5LyonXG4gICAgdXJsOiBodHRwOi8vc3VwYWJhc2UtYXV0aDo5OTk5L1xuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogYXV0aC12MS1hbGxcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9hdXRoL3YxL1xuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IGNvcnNcbiAgICAgIC0gbmFtZToga2V5LWF1dGhcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGhpZGVfY3JlZGVudGlhbHM6IGZhbHNlXG4gICAgICAtIG5hbWU6IGFjbFxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgaGlkZV9ncm91cHNfaGVhZGVyOiB0cnVlXG4gICAgICAgICAgYWxsb3c6XG4gICAgICAgICAgICAtIGFkbWluXG4gICAgICAgICAgICAtIGFub25cblxuICAjIyBTZWN1cmUgUkVTVCByb3V0ZXNcbiAgLSBuYW1lOiByZXN0LXYxXG4gICAgX2NvbW1lbnQ6ICdQb3N0Z1JFU1Q6IC9yZXN0L3YxLyogLT4gaHR0cDovL3N1cGFiYXNlLXJlc3Q6MzAwMC8qJ1xuICAgIHVybDogaHR0cDovL3N1cGFiYXNlLXJlc3Q6MzAwMC9cbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IHJlc3QtdjEtYWxsXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvcmVzdC92MS9cbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gICAgICAtIG5hbWU6IGtleS1hdXRoXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2NyZWRlbnRpYWxzOiB0cnVlXG4gICAgICAtIG5hbWU6IGFjbFxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgaGlkZV9ncm91cHNfaGVhZGVyOiB0cnVlXG4gICAgICAgICAgYWxsb3c6XG4gICAgICAgICAgICAtIGFkbWluXG4gICAgICAgICAgICAtIGFub25cblxuICAjIyBTZWN1cmUgR3JhcGhRTCByb3V0ZXNcbiAgLSBuYW1lOiBncmFwaHFsLXYxXG4gICAgX2NvbW1lbnQ6ICdQb3N0Z1JFU1Q6IC9ncmFwaHFsL3YxLyogLT4gaHR0cDovL3N1cGFiYXNlLXJlc3Q6MzAwMC9ycGMvZ3JhcGhxbCdcbiAgICB1cmw6IGh0dHA6Ly9zdXBhYmFzZS1yZXN0OjMwMDAvcnBjL2dyYXBocWxcbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IGdyYXBocWwtdjEtYWxsXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvZ3JhcGhxbC92MVxuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IGNvcnNcbiAgICAgIC0gbmFtZToga2V5LWF1dGhcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGhpZGVfY3JlZGVudGlhbHM6IHRydWVcbiAgICAgIC0gbmFtZTogcmVxdWVzdC10cmFuc2Zvcm1lclxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgYWRkOlxuICAgICAgICAgICAgaGVhZGVyczpcbiAgICAgICAgICAgICAgLSBDb250ZW50LVByb2ZpbGU6Z3JhcGhxbF9wdWJsaWNcbiAgICAgIC0gbmFtZTogYWNsXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2dyb3Vwc19oZWFkZXI6IHRydWVcbiAgICAgICAgICBhbGxvdzpcbiAgICAgICAgICAgIC0gYWRtaW5cbiAgICAgICAgICAgIC0gYW5vblxuXG4gICMjIFNlY3VyZSBSZWFsdGltZSByb3V0ZXNcbiAgLSBuYW1lOiByZWFsdGltZS12MS13c1xuICAgIF9jb21tZW50OiAnUmVhbHRpbWU6IC9yZWFsdGltZS92MS8qIC0+IHdzOi8vcmVhbHRpbWU6NDAwMC9zb2NrZXQvKidcbiAgICB1cmw6IGh0dHA6Ly9yZWFsdGltZS1kZXY6NDAwMC9zb2NrZXRcbiAgICBwcm90b2NvbDogd3NcbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IHJlYWx0aW1lLXYxLXdzXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvcmVhbHRpbWUvdjEvXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuICAgICAgLSBuYW1lOiBrZXktYXV0aFxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgaGlkZV9jcmVkZW50aWFsczogZmFsc2VcbiAgICAgIC0gbmFtZTogYWNsXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2dyb3Vwc19oZWFkZXI6IHRydWVcbiAgICAgICAgICBhbGxvdzpcbiAgICAgICAgICAgIC0gYWRtaW5cbiAgICAgICAgICAgIC0gYW5vblxuICAtIG5hbWU6IHJlYWx0aW1lLXYxLXJlc3RcbiAgICBfY29tbWVudDogJ1JlYWx0aW1lOiAvcmVhbHRpbWUvdjEvKiAtPiB3czovL3JlYWx0aW1lOjQwMDAvc29ja2V0LyonXG4gICAgdXJsOiBodHRwOi8vcmVhbHRpbWUtZGV2OjQwMDAvYXBpXG4gICAgcHJvdG9jb2w6IGh0dHBcbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IHJlYWx0aW1lLXYxLXJlc3RcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9yZWFsdGltZS92MS9hcGlcbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gICAgICAtIG5hbWU6IGtleS1hdXRoXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2NyZWRlbnRpYWxzOiBmYWxzZVxuICAgICAgLSBuYW1lOiBhY2xcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGhpZGVfZ3JvdXBzX2hlYWRlcjogdHJ1ZVxuICAgICAgICAgIGFsbG93OlxuICAgICAgICAgICAgLSBhZG1pblxuICAgICAgICAgICAgLSBhbm9uXG5cbiAgIyMgU3RvcmFnZSByb3V0ZXM6IHRoZSBzdG9yYWdlIHNlcnZlciBtYW5hZ2VzIGl0cyBvd24gYXV0aFxuICAtIG5hbWU6IHN0b3JhZ2UtdjFcbiAgICBfY29tbWVudDogJ1N0b3JhZ2U6IC9zdG9yYWdlL3YxLyogLT4gaHR0cDovL3N1cGFiYXNlLXN0b3JhZ2U6NTAwMC8qJ1xuICAgIHVybDogaHR0cDovL3N1cGFiYXNlLXN0b3JhZ2U6NTAwMC9cbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IHN0b3JhZ2UtdjEtYWxsXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvc3RvcmFnZS92MS9cbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG5cbiAgIyMgRWRnZSBGdW5jdGlvbnMgcm91dGVzXG4gIC0gbmFtZTogZnVuY3Rpb25zLXYxXG4gICAgX2NvbW1lbnQ6ICdFZGdlIEZ1bmN0aW9uczogL2Z1bmN0aW9ucy92MS8qIC0+IGh0dHA6Ly9zdXBhYmFzZS1lZGdlLWZ1bmN0aW9uczo5MDAwLyonXG4gICAgdXJsOiBodHRwOi8vc3VwYWJhc2UtZWRnZS1mdW5jdGlvbnM6OTAwMC9cbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IGZ1bmN0aW9ucy12MS1hbGxcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9mdW5jdGlvbnMvdjEvXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuXG4gICMjIEFuYWx5dGljcyByb3V0ZXNcbiAgLSBuYW1lOiBhbmFseXRpY3MtdjFcbiAgICBfY29tbWVudDogJ0FuYWx5dGljczogL2FuYWx5dGljcy92MS8qIC0+IGh0dHA6Ly9sb2dmbGFyZTo0MDAwLyonXG4gICAgdXJsOiBodHRwOi8vc3VwYWJhc2UtYW5hbHl0aWNzOjQwMDAvXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiBhbmFseXRpY3MtdjEtYWxsXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvYW5hbHl0aWNzL3YxL1xuXG4gICMjIFNlY3VyZSBEYXRhYmFzZSByb3V0ZXNcbiAgLSBuYW1lOiBtZXRhXG4gICAgX2NvbW1lbnQ6ICdwZy1tZXRhOiAvcGcvKiAtPiBodHRwOi8vc3VwYWJhc2UtbWV0YTo4MDgwLyonXG4gICAgdXJsOiBodHRwOi8vc3VwYWJhc2UtbWV0YTo4MDgwL1xuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogbWV0YS1hbGxcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9wZy9cbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBrZXktYXV0aFxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgaGlkZV9jcmVkZW50aWFsczogZmFsc2VcbiAgICAgIC0gbmFtZTogYWNsXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2dyb3Vwc19oZWFkZXI6IHRydWVcbiAgICAgICAgICBhbGxvdzpcbiAgICAgICAgICAgIC0gYWRtaW5cblxuICAjIyBQcm90ZWN0ZWQgRGFzaGJvYXJkIC0gY2F0Y2ggYWxsIHJlbWFpbmluZyByb3V0ZXNcbiAgLSBuYW1lOiBkYXNoYm9hcmRcbiAgICBfY29tbWVudDogJ1N0dWRpbzogLyogLT4gaHR0cDovL3N0dWRpbzozMDAwLyonXG4gICAgdXJsOiBodHRwOi8vc3VwYWJhc2Utc3R1ZGlvOjMwMDAvXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiBkYXNoYm9hcmQtYWxsXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuICAgICAgLSBuYW1lOiBiYXNpYy1hdXRoXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2NyZWRlbnRpYWxzOiB0cnVlXG4iCiAgc3VwYWJhc2Utc3R1ZGlvOgogICAgaW1hZ2U6ICdzdXBhYmFzZS9zdHVkaW86MjAyNS4wNi4wMi1zaGEtOGYyOTkzZCcKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBub2RlCiAgICAgICAgLSAnLWUnCiAgICAgICAgLSAiZmV0Y2goJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMC9hcGkvcGxhdGZvcm0vcHJvZmlsZScpLnRoZW4oKHIpID0+IHtpZiAoci5zdGF0dXMgIT09IDIwMCkgdGhyb3cgbmV3IEVycm9yKHIuc3RhdHVzKX0pIgogICAgICB0aW1lb3V0OiA1cwogICAgICBpbnRlcnZhbDogNXMKICAgICAgcmV0cmllczogMwogICAgZGVwZW5kc19vbjoKICAgICAgc3VwYWJhc2UtYW5hbHl0aWNzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBIT1NUTkFNRT0wLjAuMC4wCiAgICAgIC0gJ1NUVURJT19QR19NRVRBX1VSTD1odHRwOi8vc3VwYWJhc2UtbWV0YTo4MDgwJwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdERUZBVUxUX09SR0FOSVpBVElPTl9OQU1FPSR7U1RVRElPX0RFRkFVTFRfT1JHQU5JWkFUSU9OOi1EZWZhdWx0IE9yZ2FuaXphdGlvbn0nCiAgICAgIC0gJ0RFRkFVTFRfUFJPSkVDVF9OQU1FPSR7U1RVRElPX0RFRkFVTFRfUFJPSkVDVDotRGVmYXVsdCBQcm9qZWN0fScKICAgICAgLSAnU1VQQUJBU0VfVVJMPWh0dHA6Ly9zdXBhYmFzZS1rb25nOjgwMDAnCiAgICAgIC0gJ1NVUEFCQVNFX1BVQkxJQ19VUkw9JHtTRVJWSUNFX1VSTF9TVVBBQkFTRUtPTkd9JwogICAgICAtICdTVVBBQkFTRV9BTk9OX0tFWT0ke1NFUlZJQ0VfU1VQQUJBU0VBTk9OX0tFWX0nCiAgICAgIC0gJ1NVUEFCQVNFX1NFUlZJQ0VfS0VZPSR7U0VSVklDRV9TVVBBQkFTRVNFUlZJQ0VfS0VZfScKICAgICAgLSAnQVVUSF9KV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtICdMT0dGTEFSRV9BUElfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9MT0dGTEFSRX0nCiAgICAgIC0gJ0xPR0ZMQVJFX1VSTD1odHRwOi8vc3VwYWJhc2UtYW5hbHl0aWNzOjQwMDAnCiAgICAgIC0gJ1NVUEFCQVNFX1BVQkxJQ19BUEk9JHtTRVJWSUNFX1VSTF9TVVBBQkFTRUtPTkd9JwogICAgICAtIE5FWFRfUFVCTElDX0VOQUJMRV9MT0dTPXRydWUKICAgICAgLSBORVhUX0FOQUxZVElDU19CQUNLRU5EX1BST1ZJREVSPXBvc3RncmVzCiAgICAgIC0gJ09QRU5BSV9BUElfS0VZPSR7T1BFTkFJX0FQSV9LRVl9JwogIHN1cGFiYXNlLWRiOgogICAgaW1hZ2U6ICdzdXBhYmFzZS9wb3N0Z3JlczoxNS44LjEuMDQ4JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6ICdwZ19pc3JlYWR5IC1VIHBvc3RncmVzIC1oIDEyNy4wLjAuMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEwCiAgICBkZXBlbmRzX29uOgogICAgICBzdXBhYmFzZS12ZWN0b3I6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGNvbW1hbmQ6CiAgICAgIC0gcG9zdGdyZXMKICAgICAgLSAnLWMnCiAgICAgIC0gY29uZmlnX2ZpbGU9L2V0Yy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWwuY29uZgogICAgICAtICctYycKICAgICAgLSBsb2dfbWluX21lc3NhZ2VzPWZhdGFsCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19IT1NUPS92YXIvcnVuL3Bvc3RncmVzcWwKICAgICAgLSAnUEdQT1JUPSR7UE9TVEdSRVNfUE9SVDotNTQzMn0nCiAgICAgIC0gJ1BPU1RHUkVTX1BPUlQ9JHtQT1NUR1JFU19QT1JUOi01NDMyfScKICAgICAgLSAnUEdQQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQR0RBVEFCQVNFPSR7UE9TVEdSRVNfREI6LXBvc3RncmVzfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotcG9zdGdyZXN9JwogICAgICAtICdKV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtICdKV1RfRVhQPSR7SldUX0VYUElSWTotMzYwMH0nCiAgICB2b2x1bWVzOgogICAgICAtICdzdXBhYmFzZS1kYi1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vdm9sdW1lcy9kYi9yZWFsdGltZS5zcWwKICAgICAgICB0YXJnZXQ6IC9kb2NrZXItZW50cnlwb2ludC1pbml0ZGIuZC9taWdyYXRpb25zLzk5LXJlYWx0aW1lLnNxbAogICAgICAgIGNvbnRlbnQ6ICJcXHNldCBwZ3VzZXIgYGVjaG8gXCJzdXBhYmFzZV9hZG1pblwiYFxuXG5jcmVhdGUgc2NoZW1hIGlmIG5vdCBleGlzdHMgX3JlYWx0aW1lO1xuYWx0ZXIgc2NoZW1hIF9yZWFsdGltZSBvd25lciB0byA6cGd1c2VyO1xuIgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi92b2x1bWVzL2RiL19zdXBhYmFzZS5zcWwKICAgICAgICB0YXJnZXQ6IC9kb2NrZXItZW50cnlwb2ludC1pbml0ZGIuZC9taWdyYXRpb25zLzk3LV9zdXBhYmFzZS5zcWwKICAgICAgICBjb250ZW50OiAiXFxzZXQgcGd1c2VyIGBlY2hvIFwiJFBPU1RHUkVTX1VTRVJcImBcblxuQ1JFQVRFIERBVEFCQVNFIF9zdXBhYmFzZSBXSVRIIE9XTkVSIDpwZ3VzZXI7XG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL3ZvbHVtZXMvZGIvcG9vbGVyLnNxbAogICAgICAgIHRhcmdldDogL2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL21pZ3JhdGlvbnMvOTktcG9vbGVyLnNxbAogICAgICAgIGNvbnRlbnQ6ICJcXHNldCBwZ3VzZXIgYGVjaG8gXCJzdXBhYmFzZV9hZG1pblwiYFxuXFxjIF9zdXBhYmFzZVxuY3JlYXRlIHNjaGVtYSBpZiBub3QgZXhpc3RzIF9zdXBhdmlzb3I7XG5hbHRlciBzY2hlbWEgX3N1cGF2aXNvciBvd25lciB0byA6cGd1c2VyO1xuXFxjIHBvc3RncmVzXG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL3ZvbHVtZXMvZGIvd2ViaG9va3Muc3FsCiAgICAgICAgdGFyZ2V0OiAvZG9ja2VyLWVudHJ5cG9pbnQtaW5pdGRiLmQvaW5pdC1zY3JpcHRzLzk4LXdlYmhvb2tzLnNxbAogICAgICAgIGNvbnRlbnQ6ICJCRUdJTjtcbi0tIENyZWF0ZSBwZ19uZXQgZXh0ZW5zaW9uXG5DUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGdfbmV0IFNDSEVNQSBleHRlbnNpb25zO1xuLS0gQ3JlYXRlIHN1cGFiYXNlX2Z1bmN0aW9ucyBzY2hlbWFcbkNSRUFURSBTQ0hFTUEgc3VwYWJhc2VfZnVuY3Rpb25zIEFVVEhPUklaQVRJT04gc3VwYWJhc2VfYWRtaW47XG5HUkFOVCBVU0FHRSBPTiBTQ0hFTUEgc3VwYWJhc2VfZnVuY3Rpb25zIFRPIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG5BTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMgSU4gU0NIRU1BIHN1cGFiYXNlX2Z1bmN0aW9ucyBHUkFOVCBBTEwgT04gVEFCTEVTIFRPIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG5BTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMgSU4gU0NIRU1BIHN1cGFiYXNlX2Z1bmN0aW9ucyBHUkFOVCBBTEwgT04gRlVOQ1RJT05TIFRPIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG5BTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMgSU4gU0NIRU1BIHN1cGFiYXNlX2Z1bmN0aW9ucyBHUkFOVCBBTEwgT04gU0VRVUVOQ0VTIFRPIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG4tLSBzdXBhYmFzZV9mdW5jdGlvbnMubWlncmF0aW9ucyBkZWZpbml0aW9uXG5DUkVBVEUgVEFCTEUgc3VwYWJhc2VfZnVuY3Rpb25zLm1pZ3JhdGlvbnMgKFxuICB2ZXJzaW9uIHRleHQgUFJJTUFSWSBLRVksXG4gIGluc2VydGVkX2F0IHRpbWVzdGFtcHR6IE5PVCBOVUxMIERFRkFVTFQgTk9XKClcbik7XG4tLSBJbml0aWFsIHN1cGFiYXNlX2Z1bmN0aW9ucyBtaWdyYXRpb25cbklOU0VSVCBJTlRPIHN1cGFiYXNlX2Z1bmN0aW9ucy5taWdyYXRpb25zICh2ZXJzaW9uKSBWQUxVRVMgKCdpbml0aWFsJyk7XG4tLSBzdXBhYmFzZV9mdW5jdGlvbnMuaG9va3MgZGVmaW5pdGlvblxuQ1JFQVRFIFRBQkxFIHN1cGFiYXNlX2Z1bmN0aW9ucy5ob29rcyAoXG4gIGlkIGJpZ3NlcmlhbCBQUklNQVJZIEtFWSxcbiAgaG9va190YWJsZV9pZCBpbnRlZ2VyIE5PVCBOVUxMLFxuICBob29rX25hbWUgdGV4dCBOT1QgTlVMTCxcbiAgY3JlYXRlZF9hdCB0aW1lc3RhbXB0eiBOT1QgTlVMTCBERUZBVUxUIE5PVygpLFxuICByZXF1ZXN0X2lkIGJpZ2ludFxuKTtcbkNSRUFURSBJTkRFWCBzdXBhYmFzZV9mdW5jdGlvbnNfaG9va3NfcmVxdWVzdF9pZF9pZHggT04gc3VwYWJhc2VfZnVuY3Rpb25zLmhvb2tzIFVTSU5HIGJ0cmVlIChyZXF1ZXN0X2lkKTtcbkNSRUFURSBJTkRFWCBzdXBhYmFzZV9mdW5jdGlvbnNfaG9va3NfaF90YWJsZV9pZF9oX25hbWVfaWR4IE9OIHN1cGFiYXNlX2Z1bmN0aW9ucy5ob29rcyBVU0lORyBidHJlZSAoaG9va190YWJsZV9pZCwgaG9va19uYW1lKTtcbkNPTU1FTlQgT04gVEFCTEUgc3VwYWJhc2VfZnVuY3Rpb25zLmhvb2tzIElTICdTdXBhYmFzZSBGdW5jdGlvbnMgSG9va3M6IEF1ZGl0IHRyYWlsIGZvciB0cmlnZ2VyZWQgaG9va3MuJztcbkNSRUFURSBGVU5DVElPTiBzdXBhYmFzZV9mdW5jdGlvbnMuaHR0cF9yZXF1ZXN0KClcbiAgUkVUVVJOUyB0cmlnZ2VyXG4gIExBTkdVQUdFIHBscGdzcWxcbiAgQVMgJGZ1bmN0aW9uJFxuICBERUNMQVJFXG4gICAgcmVxdWVzdF9pZCBiaWdpbnQ7XG4gICAgcGF5bG9hZCBqc29uYjtcbiAgICB1cmwgdGV4dCA6PSBUR19BUkdWWzBdOjp0ZXh0O1xuICAgIG1ldGhvZCB0ZXh0IDo9IFRHX0FSR1ZbMV06OnRleHQ7XG4gICAgaGVhZGVycyBqc29uYiBERUZBVUxUICd7fSc6Ompzb25iO1xuICAgIHBhcmFtcyBqc29uYiBERUZBVUxUICd7fSc6Ompzb25iO1xuICAgIHRpbWVvdXRfbXMgaW50ZWdlciBERUZBVUxUIDEwMDA7XG4gIEJFR0lOXG4gICAgSUYgdXJsIElTIE5VTEwgT1IgdXJsID0gJ251bGwnIFRIRU5cbiAgICAgIFJBSVNFIEVYQ0VQVElPTiAndXJsIGFyZ3VtZW50IGlzIG1pc3NpbmcnO1xuICAgIEVORCBJRjtcblxuICAgIElGIG1ldGhvZCBJUyBOVUxMIE9SIG1ldGhvZCA9ICdudWxsJyBUSEVOXG4gICAgICBSQUlTRSBFWENFUFRJT04gJ21ldGhvZCBhcmd1bWVudCBpcyBtaXNzaW5nJztcbiAgICBFTkQgSUY7XG5cbiAgICBJRiBUR19BUkdWWzJdIElTIE5VTEwgT1IgVEdfQVJHVlsyXSA9ICdudWxsJyBUSEVOXG4gICAgICBoZWFkZXJzID0gJ3tcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIn0nOjpqc29uYjtcbiAgICBFTFNFXG4gICAgICBoZWFkZXJzID0gVEdfQVJHVlsyXTo6anNvbmI7XG4gICAgRU5EIElGO1xuXG4gICAgSUYgVEdfQVJHVlszXSBJUyBOVUxMIE9SIFRHX0FSR1ZbM10gPSAnbnVsbCcgVEhFTlxuICAgICAgcGFyYW1zID0gJ3t9Jzo6anNvbmI7XG4gICAgRUxTRVxuICAgICAgcGFyYW1zID0gVEdfQVJHVlszXTo6anNvbmI7XG4gICAgRU5EIElGO1xuXG4gICAgSUYgVEdfQVJHVls0XSBJUyBOVUxMIE9SIFRHX0FSR1ZbNF0gPSAnbnVsbCcgVEhFTlxuICAgICAgdGltZW91dF9tcyA9IDEwMDA7XG4gICAgRUxTRVxuICAgICAgdGltZW91dF9tcyA9IFRHX0FSR1ZbNF06OmludGVnZXI7XG4gICAgRU5EIElGO1xuXG4gICAgQ0FTRVxuICAgICAgV0hFTiBtZXRob2QgPSAnR0VUJyBUSEVOXG4gICAgICAgIFNFTEVDVCBodHRwX2dldCBJTlRPIHJlcXVlc3RfaWQgRlJPTSBuZXQuaHR0cF9nZXQoXG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgIHRpbWVvdXRfbXNcbiAgICAgICAgKTtcbiAgICAgIFdIRU4gbWV0aG9kID0gJ1BPU1QnIFRIRU5cbiAgICAgICAgcGF5bG9hZCA9IGpzb25iX2J1aWxkX29iamVjdChcbiAgICAgICAgICAnb2xkX3JlY29yZCcsIE9MRCxcbiAgICAgICAgICAncmVjb3JkJywgTkVXLFxuICAgICAgICAgICd0eXBlJywgVEdfT1AsXG4gICAgICAgICAgJ3RhYmxlJywgVEdfVEFCTEVfTkFNRSxcbiAgICAgICAgICAnc2NoZW1hJywgVEdfVEFCTEVfU0NIRU1BXG4gICAgICAgICk7XG5cbiAgICAgICAgU0VMRUNUIGh0dHBfcG9zdCBJTlRPIHJlcXVlc3RfaWQgRlJPTSBuZXQuaHR0cF9wb3N0KFxuICAgICAgICAgIHVybCxcbiAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgIHRpbWVvdXRfbXNcbiAgICAgICAgKTtcbiAgICAgIEVMU0VcbiAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdtZXRob2QgYXJndW1lbnQgJSBpcyBpbnZhbGlkJywgbWV0aG9kO1xuICAgIEVORCBDQVNFO1xuXG4gICAgSU5TRVJUIElOVE8gc3VwYWJhc2VfZnVuY3Rpb25zLmhvb2tzXG4gICAgICAoaG9va190YWJsZV9pZCwgaG9va19uYW1lLCByZXF1ZXN0X2lkKVxuICAgIFZBTFVFU1xuICAgICAgKFRHX1JFTElELCBUR19OQU1FLCByZXF1ZXN0X2lkKTtcblxuICAgIFJFVFVSTiBORVc7XG4gIEVORFxuJGZ1bmN0aW9uJDtcbi0tIFN1cGFiYXNlIHN1cGVyIGFkbWluXG5ET1xuJCRcbkJFR0lOXG4gIElGIE5PVCBFWElTVFMgKFxuICAgIFNFTEVDVCAxXG4gICAgRlJPTSBwZ19yb2xlc1xuICAgIFdIRVJFIHJvbG5hbWUgPSAnc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluJ1xuICApXG4gIFRIRU5cbiAgICBDUkVBVEUgVVNFUiBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4gTk9JTkhFUklUIENSRUFURVJPTEUgTE9HSU4gTk9SRVBMSUNBVElPTjtcbiAgRU5EIElGO1xuRU5EXG4kJDtcbkdSQU5UIEFMTCBQUklWSUxFR0VTIE9OIFNDSEVNQSBzdXBhYmFzZV9mdW5jdGlvbnMgVE8gc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluO1xuR1JBTlQgQUxMIFBSSVZJTEVHRVMgT04gQUxMIFRBQkxFUyBJTiBTQ0hFTUEgc3VwYWJhc2VfZnVuY3Rpb25zIFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbjtcbkdSQU5UIEFMTCBQUklWSUxFR0VTIE9OIEFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIHN1cGFiYXNlX2Z1bmN0aW9ucyBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW47XG5BTFRFUiBVU0VSIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbiBTRVQgc2VhcmNoX3BhdGggPSBcInN1cGFiYXNlX2Z1bmN0aW9uc1wiO1xuQUxURVIgdGFibGUgXCJzdXBhYmFzZV9mdW5jdGlvbnNcIi5taWdyYXRpb25zIE9XTkVSIFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbjtcbkFMVEVSIHRhYmxlIFwic3VwYWJhc2VfZnVuY3Rpb25zXCIuaG9va3MgT1dORVIgVE8gc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluO1xuQUxURVIgZnVuY3Rpb24gXCJzdXBhYmFzZV9mdW5jdGlvbnNcIi5odHRwX3JlcXVlc3QoKSBPV05FUiBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW47XG5HUkFOVCBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4gVE8gcG9zdGdyZXM7XG4tLSBSZW1vdmUgdW51c2VkIHN1cGFiYXNlX3BnX25ldF9hZG1pbiByb2xlXG5ET1xuJCRcbkJFR0lOXG4gIElGIEVYSVNUUyAoXG4gICAgU0VMRUNUIDFcbiAgICBGUk9NIHBnX3JvbGVzXG4gICAgV0hFUkUgcm9sbmFtZSA9ICdzdXBhYmFzZV9wZ19uZXRfYWRtaW4nXG4gIClcbiAgVEhFTlxuICAgIFJFQVNTSUdOIE9XTkVEIEJZIHN1cGFiYXNlX3BnX25ldF9hZG1pbiBUTyBzdXBhYmFzZV9hZG1pbjtcbiAgICBEUk9QIE9XTkVEIEJZIHN1cGFiYXNlX3BnX25ldF9hZG1pbjtcbiAgICBEUk9QIFJPTEUgc3VwYWJhc2VfcGdfbmV0X2FkbWluO1xuICBFTkQgSUY7XG5FTkRcbiQkO1xuLS0gcGdfbmV0IGdyYW50cyB3aGVuIGV4dGVuc2lvbiBpcyBhbHJlYWR5IGVuYWJsZWRcbkRPXG4kJFxuQkVHSU5cbiAgSUYgRVhJU1RTIChcbiAgICBTRUxFQ1QgMVxuICAgIEZST00gcGdfZXh0ZW5zaW9uXG4gICAgV0hFUkUgZXh0bmFtZSA9ICdwZ19uZXQnXG4gIClcbiAgVEhFTlxuICAgIEdSQU5UIFVTQUdFIE9OIFNDSEVNQSBuZXQgVE8gc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluLCBwb3N0Z3JlcywgYW5vbiwgYXV0aGVudGljYXRlZCwgc2VydmljZV9yb2xlO1xuICAgIEFMVEVSIGZ1bmN0aW9uIG5ldC5odHRwX2dldCh1cmwgdGV4dCwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBTRUNVUklUWSBERUZJTkVSO1xuICAgIEFMVEVSIGZ1bmN0aW9uIG5ldC5odHRwX3Bvc3QodXJsIHRleHQsIGJvZHkganNvbmIsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgU0VDVVJJVFkgREVGSU5FUjtcbiAgICBBTFRFUiBmdW5jdGlvbiBuZXQuaHR0cF9nZXQodXJsIHRleHQsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgU0VUIHNlYXJjaF9wYXRoID0gbmV0O1xuICAgIEFMVEVSIGZ1bmN0aW9uIG5ldC5odHRwX3Bvc3QodXJsIHRleHQsIGJvZHkganNvbmIsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgU0VUIHNlYXJjaF9wYXRoID0gbmV0O1xuICAgIFJFVk9LRSBBTEwgT04gRlVOQ1RJT04gbmV0Lmh0dHBfZ2V0KHVybCB0ZXh0LCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIEZST00gUFVCTElDO1xuICAgIFJFVk9LRSBBTEwgT04gRlVOQ1RJT04gbmV0Lmh0dHBfcG9zdCh1cmwgdGV4dCwgYm9keSBqc29uYiwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBGUk9NIFBVQkxJQztcbiAgICBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIG5ldC5odHRwX2dldCh1cmwgdGV4dCwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4sIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG4gICAgR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBuZXQuaHR0cF9wb3N0KHVybCB0ZXh0LCBib2R5IGpzb25iLCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbiwgcG9zdGdyZXMsIGFub24sIGF1dGhlbnRpY2F0ZWQsIHNlcnZpY2Vfcm9sZTtcbiAgRU5EIElGO1xuRU5EXG4kJDtcbi0tIEV2ZW50IHRyaWdnZXIgZm9yIHBnX25ldFxuQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZXh0ZW5zaW9ucy5ncmFudF9wZ19uZXRfYWNjZXNzKClcblJFVFVSTlMgZXZlbnRfdHJpZ2dlclxuTEFOR1VBR0UgcGxwZ3NxbFxuQVMgJCRcbkJFR0lOXG4gIElGIEVYSVNUUyAoXG4gICAgU0VMRUNUIDFcbiAgICBGUk9NIHBnX2V2ZW50X3RyaWdnZXJfZGRsX2NvbW1hbmRzKCkgQVMgZXZcbiAgICBKT0lOIHBnX2V4dGVuc2lvbiBBUyBleHRcbiAgICBPTiBldi5vYmppZCA9IGV4dC5vaWRcbiAgICBXSEVSRSBleHQuZXh0bmFtZSA9ICdwZ19uZXQnXG4gIClcbiAgVEhFTlxuICAgIEdSQU5UIFVTQUdFIE9OIFNDSEVNQSBuZXQgVE8gc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluLCBwb3N0Z3JlcywgYW5vbiwgYXV0aGVudGljYXRlZCwgc2VydmljZV9yb2xlO1xuICAgIEFMVEVSIGZ1bmN0aW9uIG5ldC5odHRwX2dldCh1cmwgdGV4dCwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBTRUNVUklUWSBERUZJTkVSO1xuICAgIEFMVEVSIGZ1bmN0aW9uIG5ldC5odHRwX3Bvc3QodXJsIHRleHQsIGJvZHkganNvbmIsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgU0VDVVJJVFkgREVGSU5FUjtcbiAgICBBTFRFUiBmdW5jdGlvbiBuZXQuaHR0cF9nZXQodXJsIHRleHQsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgU0VUIHNlYXJjaF9wYXRoID0gbmV0O1xuICAgIEFMVEVSIGZ1bmN0aW9uIG5ldC5odHRwX3Bvc3QodXJsIHRleHQsIGJvZHkganNvbmIsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgU0VUIHNlYXJjaF9wYXRoID0gbmV0O1xuICAgIFJFVk9LRSBBTEwgT04gRlVOQ1RJT04gbmV0Lmh0dHBfZ2V0KHVybCB0ZXh0LCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIEZST00gUFVCTElDO1xuICAgIFJFVk9LRSBBTEwgT04gRlVOQ1RJT04gbmV0Lmh0dHBfcG9zdCh1cmwgdGV4dCwgYm9keSBqc29uYiwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBGUk9NIFBVQkxJQztcbiAgICBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIG5ldC5odHRwX2dldCh1cmwgdGV4dCwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4sIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG4gICAgR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBuZXQuaHR0cF9wb3N0KHVybCB0ZXh0LCBib2R5IGpzb25iLCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbiwgcG9zdGdyZXMsIGFub24sIGF1dGhlbnRpY2F0ZWQsIHNlcnZpY2Vfcm9sZTtcbiAgRU5EIElGO1xuRU5EO1xuJCQ7XG5DT01NRU5UIE9OIEZVTkNUSU9OIGV4dGVuc2lvbnMuZ3JhbnRfcGdfbmV0X2FjY2VzcyBJUyAnR3JhbnRzIGFjY2VzcyB0byBwZ19uZXQnO1xuRE9cbiQkXG5CRUdJTlxuICBJRiBOT1QgRVhJU1RTIChcbiAgICBTRUxFQ1QgMVxuICAgIEZST00gcGdfZXZlbnRfdHJpZ2dlclxuICAgIFdIRVJFIGV2dG5hbWUgPSAnaXNzdWVfcGdfbmV0X2FjY2VzcydcbiAgKSBUSEVOXG4gICAgQ1JFQVRFIEVWRU5UIFRSSUdHRVIgaXNzdWVfcGdfbmV0X2FjY2VzcyBPTiBkZGxfY29tbWFuZF9lbmQgV0hFTiBUQUcgSU4gKCdDUkVBVEUgRVhURU5TSU9OJylcbiAgICBFWEVDVVRFIFBST0NFRFVSRSBleHRlbnNpb25zLmdyYW50X3BnX25ldF9hY2Nlc3MoKTtcbiAgRU5EIElGO1xuRU5EXG4kJDtcbklOU0VSVCBJTlRPIHN1cGFiYXNlX2Z1bmN0aW9ucy5taWdyYXRpb25zICh2ZXJzaW9uKSBWQUxVRVMgKCcyMDIxMDgwOTE4MzQyM191cGRhdGVfZ3JhbnRzJyk7XG5BTFRFUiBmdW5jdGlvbiBzdXBhYmFzZV9mdW5jdGlvbnMuaHR0cF9yZXF1ZXN0KCkgU0VDVVJJVFkgREVGSU5FUjtcbkFMVEVSIGZ1bmN0aW9uIHN1cGFiYXNlX2Z1bmN0aW9ucy5odHRwX3JlcXVlc3QoKSBTRVQgc2VhcmNoX3BhdGggPSBzdXBhYmFzZV9mdW5jdGlvbnM7XG5SRVZPS0UgQUxMIE9OIEZVTkNUSU9OIHN1cGFiYXNlX2Z1bmN0aW9ucy5odHRwX3JlcXVlc3QoKSBGUk9NIFBVQkxJQztcbkdSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gc3VwYWJhc2VfZnVuY3Rpb25zLmh0dHBfcmVxdWVzdCgpIFRPIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG5DT01NSVQ7XG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL3ZvbHVtZXMvZGIvcm9sZXMuc3FsCiAgICAgICAgdGFyZ2V0OiAvZG9ja2VyLWVudHJ5cG9pbnQtaW5pdGRiLmQvaW5pdC1zY3JpcHRzLzk5LXJvbGVzLnNxbAogICAgICAgIGNvbnRlbnQ6ICItLSBOT1RFOiBjaGFuZ2UgdG8geW91ciBvd24gcGFzc3dvcmRzIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50c1xuIFxcc2V0IHBncGFzcyBgZWNobyBcIiRQT1NUR1JFU19QQVNTV09SRFwiYFxuXG4gQUxURVIgVVNFUiBhdXRoZW50aWNhdG9yIFdJVEggUEFTU1dPUkQgOidwZ3Bhc3MnO1xuIEFMVEVSIFVTRVIgcGdib3VuY2VyIFdJVEggUEFTU1dPUkQgOidwZ3Bhc3MnO1xuIEFMVEVSIFVTRVIgc3VwYWJhc2VfYXV0aF9hZG1pbiBXSVRIIFBBU1NXT1JEIDoncGdwYXNzJztcbiBBTFRFUiBVU0VSIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbiBXSVRIIFBBU1NXT1JEIDoncGdwYXNzJztcbiBBTFRFUiBVU0VSIHN1cGFiYXNlX3N0b3JhZ2VfYWRtaW4gV0lUSCBQQVNTV09SRCA6J3BncGFzcyc7XG4iCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL3ZvbHVtZXMvZGIvand0LnNxbAogICAgICAgIHRhcmdldDogL2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL2luaXQtc2NyaXB0cy85OS1qd3Quc3FsCiAgICAgICAgY29udGVudDogIlxcc2V0IGp3dF9zZWNyZXQgYGVjaG8gXCIkSldUX1NFQ1JFVFwiYFxuXFxzZXQgand0X2V4cCBgZWNobyBcIiRKV1RfRVhQXCJgXG5cXHNldCBkYl9uYW1lIGBlY2hvIFwiJHtQT1NUR1JFU19EQjotcG9zdGdyZXN9XCJgXG5cbkFMVEVSIERBVEFCQVNFIDpkYl9uYW1lIFNFVCBcImFwcC5zZXR0aW5ncy5qd3Rfc2VjcmV0XCIgVE8gOidqd3Rfc2VjcmV0JztcbkFMVEVSIERBVEFCQVNFIDpkYl9uYW1lIFNFVCBcImFwcC5zZXR0aW5ncy5qd3RfZXhwXCIgVE8gOidqd3RfZXhwJztcbiIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vdm9sdW1lcy9kYi9sb2dzLnNxbAogICAgICAgIHRhcmdldDogL2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL21pZ3JhdGlvbnMvOTktbG9ncy5zcWwKICAgICAgICBjb250ZW50OiAiXFxzZXQgcGd1c2VyIGBlY2hvIFwic3VwYWJhc2VfYWRtaW5cImBcblxcYyBfc3VwYWJhc2VcbmNyZWF0ZSBzY2hlbWEgaWYgbm90IGV4aXN0cyBfYW5hbHl0aWNzO1xuYWx0ZXIgc2NoZW1hIF9hbmFseXRpY3Mgb3duZXIgdG8gOnBndXNlcjtcblxcYyBwb3N0Z3Jlc1xuIgogICAgICAtICdzdXBhYmFzZS1kYi1jb25maWc6L2V0Yy9wb3N0Z3Jlc3FsLWN1c3RvbScKICBzdXBhYmFzZS1hbmFseXRpY3M6CiAgICBpbWFnZTogJ3N1cGFiYXNlL2xvZ2ZsYXJlOjEuNC4wJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjQwMDAvaGVhbHRoJwogICAgICB0aW1lb3V0OiA1cwogICAgICBpbnRlcnZhbDogNXMKICAgICAgcmV0cmllczogMTAKICAgIGRlcGVuZHNfb246CiAgICAgIHN1cGFiYXNlLWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBMT0dGTEFSRV9OT0RFX0hPU1Q9MTI3LjAuMC4xCiAgICAgIC0gREJfVVNFUk5BTUU9c3VwYWJhc2VfYWRtaW4KICAgICAgLSBEQl9EQVRBQkFTRT1fc3VwYWJhc2UKICAgICAgLSAnREJfSE9TVE5BTUU9JHtQT1NUR1JFU19IT1NUTkFNRTotc3VwYWJhc2UtZGJ9JwogICAgICAtICdEQl9QT1JUPSR7UE9TVEdSRVNfUE9SVDotNTQzMn0nCiAgICAgIC0gJ0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gREJfU0NIRU1BPV9hbmFseXRpY3MKICAgICAgLSAnTE9HRkxBUkVfQVBJX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfTE9HRkxBUkV9JwogICAgICAtIExPR0ZMQVJFX1NJTkdMRV9URU5BTlQ9dHJ1ZQogICAgICAtIExPR0ZMQVJFX1NJTkdMRV9URU5BTlRfTU9ERT10cnVlCiAgICAgIC0gTE9HRkxBUkVfU1VQQUJBU0VfTU9ERT10cnVlCiAgICAgIC0gTE9HRkxBUkVfTUlOX0NMVVNURVJfU0laRT0xCiAgICAgIC0gJ1BPU1RHUkVTX0JBQ0tFTkRfVVJMPXBvc3RncmVzcWw6Ly9zdXBhYmFzZV9hZG1pbjoke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QCR7UE9TVEdSRVNfSE9TVE5BTUU6LXN1cGFiYXNlLWRifToke1BPU1RHUkVTX1BPUlQ6LTU0MzJ9L19zdXBhYmFzZScKICAgICAgLSBQT1NUR1JFU19CQUNLRU5EX1NDSEVNQT1fYW5hbHl0aWNzCiAgICAgIC0gTE9HRkxBUkVfRkVBVFVSRV9GTEFHX09WRVJSSURFPW11bHRpYmFja2VuZD10cnVlCiAgc3VwYWJhc2UtdmVjdG9yOgogICAgaW1hZ2U6ICd0aW1iZXJpby92ZWN0b3I6MC4yOC4xLWFscGluZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLS1uby12ZXJib3NlJwogICAgICAgIC0gJy0tdHJpZXM9MScKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICdodHRwOi8vc3VwYWJhc2UtdmVjdG9yOjkwMDEvaGVhbHRoJwogICAgICB0aW1lb3V0OiA1cwogICAgICBpbnRlcnZhbDogNXMKICAgICAgcmV0cmllczogMwogICAgdm9sdW1lczoKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vdm9sdW1lcy9sb2dzL3ZlY3Rvci55bWwKICAgICAgICB0YXJnZXQ6IC9ldGMvdmVjdG9yL3ZlY3Rvci55bWwKICAgICAgICByZWFkX29ubHk6IHRydWUKICAgICAgICBjb250ZW50OiAiYXBpOlxuICBlbmFibGVkOiB0cnVlXG4gIGFkZHJlc3M6IDAuMC4wLjA6OTAwMVxuXG5zb3VyY2VzOlxuICBkb2NrZXJfaG9zdDpcbiAgICB0eXBlOiBkb2NrZXJfbG9nc1xuICAgIGV4Y2x1ZGVfY29udGFpbmVyczpcbiAgICAgIC0gc3VwYWJhc2UtdmVjdG9yXG5cbnRyYW5zZm9ybXM6XG4gIHByb2plY3RfbG9nczpcbiAgICB0eXBlOiByZW1hcFxuICAgIGlucHV0czpcbiAgICAgIC0gZG9ja2VyX2hvc3RcbiAgICBzb3VyY2U6IHwtXG4gICAgICAucHJvamVjdCA9IFwiZGVmYXVsdFwiXG4gICAgICAuZXZlbnRfbWVzc2FnZSA9IGRlbCgubWVzc2FnZSlcbiAgICAgIC5hcHBuYW1lID0gZGVsKC5jb250YWluZXJfbmFtZSlcbiAgICAgIGRlbCguY29udGFpbmVyX2NyZWF0ZWRfYXQpXG4gICAgICBkZWwoLmNvbnRhaW5lcl9pZClcbiAgICAgIGRlbCguc291cmNlX3R5cGUpXG4gICAgICBkZWwoLnN0cmVhbSlcbiAgICAgIGRlbCgubGFiZWwpXG4gICAgICBkZWwoLmltYWdlKVxuICAgICAgZGVsKC5ob3N0KVxuICAgICAgZGVsKC5zdHJlYW0pXG4gIHJvdXRlcjpcbiAgICB0eXBlOiByb3V0ZVxuICAgIGlucHV0czpcbiAgICAgIC0gcHJvamVjdF9sb2dzXG4gICAgcm91dGU6XG4gICAgICBrb25nOiAnc3RhcnRzX3dpdGgoc3RyaW5nISguYXBwbmFtZSksIFwic3VwYWJhc2Uta29uZ1wiKSdcbiAgICAgIGF1dGg6ICdzdGFydHNfd2l0aChzdHJpbmchKC5hcHBuYW1lKSwgXCJzdXBhYmFzZS1hdXRoXCIpJ1xuICAgICAgcmVzdDogJ3N0YXJ0c193aXRoKHN0cmluZyEoLmFwcG5hbWUpLCBcInN1cGFiYXNlLXJlc3RcIiknXG4gICAgICByZWFsdGltZTogJ3N0YXJ0c193aXRoKHN0cmluZyEoLmFwcG5hbWUpLCBcInJlYWx0aW1lLWRldlwiKSdcbiAgICAgIHN0b3JhZ2U6ICdzdGFydHNfd2l0aChzdHJpbmchKC5hcHBuYW1lKSwgXCJzdXBhYmFzZS1zdG9yYWdlXCIpJ1xuICAgICAgZnVuY3Rpb25zOiAnc3RhcnRzX3dpdGgoc3RyaW5nISguYXBwbmFtZSksIFwic3VwYWJhc2UtZnVuY3Rpb25zXCIpJ1xuICAgICAgZGI6ICdzdGFydHNfd2l0aChzdHJpbmchKC5hcHBuYW1lKSwgXCJzdXBhYmFzZS1kYlwiKSdcbiAgIyBJZ25vcmVzIG5vbiBuZ2lueCBlcnJvcnMgc2luY2UgdGhleSBhcmUgcmVsYXRlZCB3aXRoIGtvbmcgYm9vdGluZyB1cFxuICBrb25nX2xvZ3M6XG4gICAgdHlwZTogcmVtYXBcbiAgICBpbnB1dHM6XG4gICAgICAtIHJvdXRlci5rb25nXG4gICAgc291cmNlOiB8LVxuICAgICAgcmVxLCBlcnIgPSBwYXJzZV9uZ2lueF9sb2coLmV2ZW50X21lc3NhZ2UsIFwiY29tYmluZWRcIilcbiAgICAgIGlmIGVyciA9PSBudWxsIHtcbiAgICAgICAgICAudGltZXN0YW1wID0gcmVxLnRpbWVzdGFtcFxuICAgICAgICAgIC5tZXRhZGF0YS5yZXF1ZXN0LmhlYWRlcnMucmVmZXJlciA9IHJlcS5yZWZlcmVyXG4gICAgICAgICAgLm1ldGFkYXRhLnJlcXVlc3QuaGVhZGVycy51c2VyX2FnZW50ID0gcmVxLmFnZW50XG4gICAgICAgICAgLm1ldGFkYXRhLnJlcXVlc3QuaGVhZGVycy5jZl9jb25uZWN0aW5nX2lwID0gcmVxLmNsaWVudFxuICAgICAgICAgIC5tZXRhZGF0YS5yZXF1ZXN0Lm1ldGhvZCA9IHJlcS5tZXRob2RcbiAgICAgICAgICAubWV0YWRhdGEucmVxdWVzdC5wYXRoID0gcmVxLnBhdGhcbiAgICAgICAgICAubWV0YWRhdGEucmVxdWVzdC5wcm90b2NvbCA9IHJlcS5wcm90b2NvbFxuICAgICAgICAgIC5tZXRhZGF0YS5yZXNwb25zZS5zdGF0dXNfY29kZSA9IHJlcS5zdGF0dXNcbiAgICAgIH1cbiAgICAgIGlmIGVyciAhPSBudWxsIHtcbiAgICAgICAgYWJvcnRcbiAgICAgIH1cbiAgIyBJZ25vcmVzIG5vbiBuZ2lueCBlcnJvcnMgc2luY2UgdGhleSBhcmUgcmVsYXRlZCB3aXRoIGtvbmcgYm9vdGluZyB1cFxuICBrb25nX2VycjpcbiAgICB0eXBlOiByZW1hcFxuICAgIGlucHV0czpcbiAgICAgIC0gcm91dGVyLmtvbmdcbiAgICBzb3VyY2U6IHwtXG4gICAgICAubWV0YWRhdGEucmVxdWVzdC5tZXRob2QgPSBcIkdFVFwiXG4gICAgICAubWV0YWRhdGEucmVzcG9uc2Uuc3RhdHVzX2NvZGUgPSAyMDBcbiAgICAgIHBhcnNlZCwgZXJyID0gcGFyc2VfbmdpbnhfbG9nKC5ldmVudF9tZXNzYWdlLCBcImVycm9yXCIpXG4gICAgICBpZiBlcnIgPT0gbnVsbCB7XG4gICAgICAgICAgLnRpbWVzdGFtcCA9IHBhcnNlZC50aW1lc3RhbXBcbiAgICAgICAgICAuc2V2ZXJpdHkgPSBwYXJzZWQuc2V2ZXJpdHlcbiAgICAgICAgICAubWV0YWRhdGEucmVxdWVzdC5ob3N0ID0gcGFyc2VkLmhvc3RcbiAgICAgICAgICAubWV0YWRhdGEucmVxdWVzdC5oZWFkZXJzLmNmX2Nvbm5lY3RpbmdfaXAgPSBwYXJzZWQuY2xpZW50XG4gICAgICAgICAgdXJsLCBlcnIgPSBzcGxpdChwYXJzZWQucmVxdWVzdCwgXCIgXCIpXG4gICAgICAgICAgaWYgZXJyID09IG51bGwge1xuICAgICAgICAgICAgICAubWV0YWRhdGEucmVxdWVzdC5tZXRob2QgPSB1cmxbMF1cbiAgICAgICAgICAgICAgLm1ldGFkYXRhLnJlcXVlc3QucGF0aCA9IHVybFsxXVxuICAgICAgICAgICAgICAubWV0YWRhdGEucmVxdWVzdC5wcm90b2NvbCA9IHVybFsyXVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIGVyciAhPSBudWxsIHtcbiAgICAgICAgYWJvcnRcbiAgICAgIH1cbiAgIyBHb3RydWUgbG9ncyBhcmUgc3RydWN0dXJlZCBqc29uIHN0cmluZ3Mgd2hpY2ggZnJvbnRlbmQgcGFyc2VzIGRpcmVjdGx5LiBCdXQgd2Uga2VlcCBtZXRhZGF0YSBmb3IgY29uc2lzdGVuY3kuXG4gIGF1dGhfbG9nczpcbiAgICB0eXBlOiByZW1hcFxuICAgIGlucHV0czpcbiAgICAgIC0gcm91dGVyLmF1dGhcbiAgICBzb3VyY2U6IHwtXG4gICAgICBwYXJzZWQsIGVyciA9IHBhcnNlX2pzb24oLmV2ZW50X21lc3NhZ2UpXG4gICAgICBpZiBlcnIgPT0gbnVsbCB7XG4gICAgICAgICAgLm1ldGFkYXRhLnRpbWVzdGFtcCA9IHBhcnNlZC50aW1lXG4gICAgICAgICAgLm1ldGFkYXRhID0gbWVyZ2UhKC5tZXRhZGF0YSwgcGFyc2VkKVxuICAgICAgfVxuICAjIFBvc3RnUkVTVCBsb2dzIGFyZSBzdHJ1Y3R1cmVkIHNvIHdlIHNlcGFyYXRlIHRpbWVzdGFtcCBmcm9tIG1lc3NhZ2UgdXNpbmcgcmVnZXhcbiAgcmVzdF9sb2dzOlxuICAgIHR5cGU6IHJlbWFwXG4gICAgaW5wdXRzOlxuICAgICAgLSByb3V0ZXIucmVzdFxuICAgIHNvdXJjZTogfC1cbiAgICAgIHBhcnNlZCwgZXJyID0gcGFyc2VfcmVnZXgoLmV2ZW50X21lc3NhZ2UsIHInXig/UDx0aW1lPi4qKTogKD9QPG1zZz4uKikkJylcbiAgICAgIGlmIGVyciA9PSBudWxsIHtcbiAgICAgICAgICAuZXZlbnRfbWVzc2FnZSA9IHBhcnNlZC5tc2dcbiAgICAgICAgICAudGltZXN0YW1wID0gdG9fdGltZXN0YW1wIShwYXJzZWQudGltZSlcbiAgICAgICAgICAubWV0YWRhdGEuaG9zdCA9IC5wcm9qZWN0XG4gICAgICB9XG4gICMgUmVhbHRpbWUgbG9ncyBhcmUgc3RydWN0dXJlZCBzbyB3ZSBwYXJzZSB0aGUgc2V2ZXJpdHkgbGV2ZWwgdXNpbmcgcmVnZXggKGlnbm9yZSB0aW1lIGJlY2F1c2UgaXQgaGFzIG5vIGRhdGUpXG4gIHJlYWx0aW1lX2xvZ3M6XG4gICAgdHlwZTogcmVtYXBcbiAgICBpbnB1dHM6XG4gICAgICAtIHJvdXRlci5yZWFsdGltZVxuICAgIHNvdXJjZTogfC1cbiAgICAgIC5tZXRhZGF0YS5wcm9qZWN0ID0gZGVsKC5wcm9qZWN0KVxuICAgICAgLm1ldGFkYXRhLmV4dGVybmFsX2lkID0gLm1ldGFkYXRhLnByb2plY3RcbiAgICAgIHBhcnNlZCwgZXJyID0gcGFyc2VfcmVnZXgoLmV2ZW50X21lc3NhZ2UsIHInXig/UDx0aW1lPlxcZCs6XFxkKzpcXGQrXFwuXFxkKykgXFxbKD9QPGxldmVsPlxcdyspXFxdICg/UDxtc2c+LiopJCcpXG4gICAgICBpZiBlcnIgPT0gbnVsbCB7XG4gICAgICAgICAgLmV2ZW50X21lc3NhZ2UgPSBwYXJzZWQubXNnXG4gICAgICAgICAgLm1ldGFkYXRhLmxldmVsID0gcGFyc2VkLmxldmVsXG4gICAgICB9XG4gICMgU3RvcmFnZSBsb2dzIG1heSBjb250YWluIGpzb24gb2JqZWN0cyBzbyB3ZSBwYXJzZSB0aGVtIGZvciBjb21wbGV0ZW5lc3NcbiAgc3RvcmFnZV9sb2dzOlxuICAgIHR5cGU6IHJlbWFwXG4gICAgaW5wdXRzOlxuICAgICAgLSByb3V0ZXIuc3RvcmFnZVxuICAgIHNvdXJjZTogfC1cbiAgICAgIC5tZXRhZGF0YS5wcm9qZWN0ID0gZGVsKC5wcm9qZWN0KVxuICAgICAgLm1ldGFkYXRhLnRlbmFudElkID0gLm1ldGFkYXRhLnByb2plY3RcbiAgICAgIHBhcnNlZCwgZXJyID0gcGFyc2VfanNvbiguZXZlbnRfbWVzc2FnZSlcbiAgICAgIGlmIGVyciA9PSBudWxsIHtcbiAgICAgICAgICAuZXZlbnRfbWVzc2FnZSA9IHBhcnNlZC5tc2dcbiAgICAgICAgICAubWV0YWRhdGEubGV2ZWwgPSBwYXJzZWQubGV2ZWxcbiAgICAgICAgICAubWV0YWRhdGEudGltZXN0YW1wID0gcGFyc2VkLnRpbWVcbiAgICAgICAgICAubWV0YWRhdGEuY29udGV4dFswXS5ob3N0ID0gcGFyc2VkLmhvc3RuYW1lXG4gICAgICAgICAgLm1ldGFkYXRhLmNvbnRleHRbMF0ucGlkID0gcGFyc2VkLnBpZFxuICAgICAgfVxuICAjIFBvc3RncmVzIGxvZ3Mgc29tZSBtZXNzYWdlcyB0byBzdGRlcnIgd2hpY2ggd2UgbWFwIHRvIHdhcm5pbmcgc2V2ZXJpdHkgbGV2ZWxcbiAgZGJfbG9nczpcbiAgICB0eXBlOiByZW1hcFxuICAgIGlucHV0czpcbiAgICAgIC0gcm91dGVyLmRiXG4gICAgc291cmNlOiB8LVxuICAgICAgLm1ldGFkYXRhLmhvc3QgPSBcImRiLWRlZmF1bHRcIlxuICAgICAgLm1ldGFkYXRhLnBhcnNlZC50aW1lc3RhbXAgPSAudGltZXN0YW1wXG5cbiAgICAgIHBhcnNlZCwgZXJyID0gcGFyc2VfcmVnZXgoLmV2ZW50X21lc3NhZ2UsIHInLiooP1A8bGV2ZWw+SU5GT3xOT1RJQ0V8V0FSTklOR3xFUlJPUnxMT0d8RkFUQUx8UEFOSUM/KTouKicsIG51bWVyaWNfZ3JvdXBzOiB0cnVlKVxuXG4gICAgICBpZiBlcnIgIT0gbnVsbCB8fCBwYXJzZWQgPT0gbnVsbCB7XG4gICAgICAgIC5tZXRhZGF0YS5wYXJzZWQuZXJyb3Jfc2V2ZXJpdHkgPSBcImluZm9cIlxuICAgICAgfVxuICAgICAgaWYgcGFyc2VkICE9IG51bGwge1xuICAgICAgLm1ldGFkYXRhLnBhcnNlZC5lcnJvcl9zZXZlcml0eSA9IHBhcnNlZC5sZXZlbFxuICAgICAgfVxuICAgICAgaWYgLm1ldGFkYXRhLnBhcnNlZC5lcnJvcl9zZXZlcml0eSA9PSBcImluZm9cIiB7XG4gICAgICAgICAgLm1ldGFkYXRhLnBhcnNlZC5lcnJvcl9zZXZlcml0eSA9IFwibG9nXCJcbiAgICAgIH1cbiAgICAgIC5tZXRhZGF0YS5wYXJzZWQuZXJyb3Jfc2V2ZXJpdHkgPSB1cGNhc2UhKC5tZXRhZGF0YS5wYXJzZWQuZXJyb3Jfc2V2ZXJpdHkpXG5cbnNpbmtzOlxuICBsb2dmbGFyZV9hdXRoOlxuICAgIHR5cGU6ICdodHRwJ1xuICAgIGlucHV0czpcbiAgICAgIC0gYXV0aF9sb2dzXG4gICAgZW5jb2Rpbmc6XG4gICAgICBjb2RlYzogJ2pzb24nXG4gICAgbWV0aG9kOiAncG9zdCdcbiAgICByZXF1ZXN0OlxuICAgICAgcmV0cnlfbWF4X2R1cmF0aW9uX3NlY3M6IDEwXG4gICAgdXJpOiAnaHR0cDovL3N1cGFiYXNlLWFuYWx5dGljczo0MDAwL2FwaS9sb2dzP3NvdXJjZV9uYW1lPWdvdHJ1ZS5sb2dzLnByb2QmYXBpX2tleT0ke0xPR0ZMQVJFX0FQSV9LRVk/TE9HRkxBUkVfQVBJX0tFWSBpcyByZXF1aXJlZH0nXG4gIGxvZ2ZsYXJlX3JlYWx0aW1lOlxuICAgIHR5cGU6ICdodHRwJ1xuICAgIGlucHV0czpcbiAgICAgIC0gcmVhbHRpbWVfbG9nc1xuICAgIGVuY29kaW5nOlxuICAgICAgY29kZWM6ICdqc29uJ1xuICAgIG1ldGhvZDogJ3Bvc3QnXG4gICAgcmVxdWVzdDpcbiAgICAgIHJldHJ5X21heF9kdXJhdGlvbl9zZWNzOiAxMFxuICAgIHVyaTogJ2h0dHA6Ly9zdXBhYmFzZS1hbmFseXRpY3M6NDAwMC9hcGkvbG9ncz9zb3VyY2VfbmFtZT1yZWFsdGltZS5sb2dzLnByb2QmYXBpX2tleT0ke0xPR0ZMQVJFX0FQSV9LRVk/TE9HRkxBUkVfQVBJX0tFWSBpcyByZXF1aXJlZH0nXG4gIGxvZ2ZsYXJlX3Jlc3Q6XG4gICAgdHlwZTogJ2h0dHAnXG4gICAgaW5wdXRzOlxuICAgICAgLSByZXN0X2xvZ3NcbiAgICBlbmNvZGluZzpcbiAgICAgIGNvZGVjOiAnanNvbidcbiAgICBtZXRob2Q6ICdwb3N0J1xuICAgIHJlcXVlc3Q6XG4gICAgICByZXRyeV9tYXhfZHVyYXRpb25fc2VjczogMTBcbiAgICB1cmk6ICdodHRwOi8vc3VwYWJhc2UtYW5hbHl0aWNzOjQwMDAvYXBpL2xvZ3M/c291cmNlX25hbWU9cG9zdGdSRVNULmxvZ3MucHJvZCZhcGlfa2V5PSR7TE9HRkxBUkVfQVBJX0tFWT9MT0dGTEFSRV9BUElfS0VZIGlzIHJlcXVpcmVkfSdcbiAgbG9nZmxhcmVfZGI6XG4gICAgdHlwZTogJ2h0dHAnXG4gICAgaW5wdXRzOlxuICAgICAgLSBkYl9sb2dzXG4gICAgZW5jb2Rpbmc6XG4gICAgICBjb2RlYzogJ2pzb24nXG4gICAgbWV0aG9kOiAncG9zdCdcbiAgICByZXF1ZXN0OlxuICAgICAgcmV0cnlfbWF4X2R1cmF0aW9uX3NlY3M6IDEwXG4gICAgIyBXZSBtdXN0IHJvdXRlIHRoZSBzaW5rIHRocm91Z2gga29uZyBiZWNhdXNlIGluZ2VzdGluZyBsb2dzIGJlZm9yZSBsb2dmbGFyZSBpcyBmdWxseSBpbml0aWFsaXNlZCB3aWxsXG4gICAgIyBsZWFkIHRvIGJyb2tlbiBxdWVyaWVzIGZyb20gc3R1ZGlvLiBUaGlzIHdvcmtzIGJ5IHRoZSBhc3N1bXB0aW9uIHRoYXQgY29udGFpbmVycyBhcmUgc3RhcnRlZCBpbiB0aGVcbiAgICAjIGZvbGxvd2luZyBvcmRlcjogdmVjdG9yID4gZGIgPiBsb2dmbGFyZSA+IGtvbmdcbiAgICB1cmk6ICdodHRwOi8vc3VwYWJhc2Uta29uZzo4MDAwL2FuYWx5dGljcy92MS9hcGkvbG9ncz9zb3VyY2VfbmFtZT1wb3N0Z3Jlcy5sb2dzJmFwaV9rZXk9JHtMT0dGTEFSRV9BUElfS0VZP0xPR0ZMQVJFX0FQSV9LRVkgaXMgcmVxdWlyZWR9J1xuICBsb2dmbGFyZV9mdW5jdGlvbnM6XG4gICAgdHlwZTogJ2h0dHAnXG4gICAgaW5wdXRzOlxuICAgICAgLSByb3V0ZXIuZnVuY3Rpb25zXG4gICAgZW5jb2Rpbmc6XG4gICAgICBjb2RlYzogJ2pzb24nXG4gICAgbWV0aG9kOiAncG9zdCdcbiAgICByZXF1ZXN0OlxuICAgICAgcmV0cnlfbWF4X2R1cmF0aW9uX3NlY3M6IDEwXG4gICAgdXJpOiAnaHR0cDovL3N1cGFiYXNlLWFuYWx5dGljczo0MDAwL2FwaS9sb2dzP3NvdXJjZV9uYW1lPWRlbm8tcmVsYXktbG9ncyZhcGlfa2V5PSR7TE9HRkxBUkVfQVBJX0tFWT9MT0dGTEFSRV9BUElfS0VZIGlzIHJlcXVpcmVkfSdcbiAgbG9nZmxhcmVfc3RvcmFnZTpcbiAgICB0eXBlOiAnaHR0cCdcbiAgICBpbnB1dHM6XG4gICAgICAtIHN0b3JhZ2VfbG9nc1xuICAgIGVuY29kaW5nOlxuICAgICAgY29kZWM6ICdqc29uJ1xuICAgIG1ldGhvZDogJ3Bvc3QnXG4gICAgcmVxdWVzdDpcbiAgICAgIHJldHJ5X21heF9kdXJhdGlvbl9zZWNzOiAxMFxuICAgIHVyaTogJ2h0dHA6Ly9zdXBhYmFzZS1hbmFseXRpY3M6NDAwMC9hcGkvbG9ncz9zb3VyY2VfbmFtZT1zdG9yYWdlLmxvZ3MucHJvZC4yJmFwaV9rZXk9JHtMT0dGTEFSRV9BUElfS0VZP0xPR0ZMQVJFX0FQSV9LRVkgaXMgcmVxdWlyZWR9J1xuICBsb2dmbGFyZV9rb25nOlxuICAgIHR5cGU6ICdodHRwJ1xuICAgIGlucHV0czpcbiAgICAgIC0ga29uZ19sb2dzXG4gICAgICAtIGtvbmdfZXJyXG4gICAgZW5jb2Rpbmc6XG4gICAgICBjb2RlYzogJ2pzb24nXG4gICAgbWV0aG9kOiAncG9zdCdcbiAgICByZXF1ZXN0OlxuICAgICAgcmV0cnlfbWF4X2R1cmF0aW9uX3NlY3M6IDEwXG4gICAgdXJpOiAnaHR0cDovL3N1cGFiYXNlLWFuYWx5dGljczo0MDAwL2FwaS9sb2dzP3NvdXJjZV9uYW1lPWNsb3VkZmxhcmUubG9ncy5wcm9kJmFwaV9rZXk9JHtMT0dGTEFSRV9BUElfS0VZP0xPR0ZMQVJFX0FQSV9LRVkgaXMgcmVxdWlyZWR9J1xuIgogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jazpybycKICAgIGVudmlyb25tZW50OgogICAgICAtICdMT0dGTEFSRV9BUElfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9MT0dGTEFSRX0nCiAgICBjb21tYW5kOgogICAgICAtICctLWNvbmZpZycKICAgICAgLSBldGMvdmVjdG9yL3ZlY3Rvci55bWwKICBzdXBhYmFzZS1yZXN0OgogICAgaW1hZ2U6ICdwb3N0Z3Jlc3QvcG9zdGdyZXN0OnYxMi4yLjEyJwogICAgZGVwZW5kc19vbjoKICAgICAgc3VwYWJhc2UtZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgc3VwYWJhc2UtYW5hbHl0aWNzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUEdSU1RfREJfVVJJPXBvc3RncmVzOi8vYXV0aGVudGljYXRvcjoke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QCR7UE9TVEdSRVNfSE9TVE5BTUU6LXN1cGFiYXNlLWRifToke1BPU1RHUkVTX1BPUlQ6LTU0MzJ9LyR7UE9TVEdSRVNfREI6LXBvc3RncmVzfScKICAgICAgLSAnUEdSU1RfREJfU0NIRU1BUz0ke1BHUlNUX0RCX1NDSEVNQVM6LXB1YmxpYyxzdG9yYWdlLGdyYXBocWxfcHVibGljfScKICAgICAgLSBQR1JTVF9EQl9BTk9OX1JPTEU9YW5vbgogICAgICAtICdQR1JTVF9KV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtIFBHUlNUX0RCX1VTRV9MRUdBQ1lfR1VDUz1mYWxzZQogICAgICAtICdQR1JTVF9BUFBfU0VUVElOR1NfSldUX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfSldUfScKICAgICAgLSAnUEdSU1RfQVBQX1NFVFRJTkdTX0pXVF9FWFA9JHtKV1RfRVhQSVJZOi0zNjAwfScKICAgIGNvbW1hbmQ6IHBvc3RncmVzdAogICAgZXhjbHVkZV9mcm9tX2hjOiB0cnVlCiAgc3VwYWJhc2UtYXV0aDoKICAgIGltYWdlOiAnc3VwYWJhc2UvZ290cnVlOnYyLjE3NC4wJwogICAgZGVwZW5kc19vbjoKICAgICAgc3VwYWJhc2UtZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgc3VwYWJhc2UtYW5hbHl0aWNzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy0tbm8tdmVyYm9zZScKICAgICAgICAtICctLXRyaWVzPTEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo5OTk5L2hlYWx0aCcKICAgICAgdGltZW91dDogNXMKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHJldHJpZXM6IDMKICAgIGVudmlyb25tZW50OgogICAgICAtIEdPVFJVRV9BUElfSE9TVD0wLjAuMC4wCiAgICAgIC0gR09UUlVFX0FQSV9QT1JUPTk5OTkKICAgICAgLSAnQVBJX0VYVEVSTkFMX1VSTD0ke0FQSV9FWFRFUk5BTF9VUkw6LWh0dHA6Ly9zdXBhYmFzZS1rb25nOjgwMDB9JwogICAgICAtIEdPVFJVRV9EQl9EUklWRVI9cG9zdGdyZXMKICAgICAgLSAnR09UUlVFX0RCX0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovL3N1cGFiYXNlX2F1dGhfYWRtaW46JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUAke1BPU1RHUkVTX0hPU1ROQU1FOi1zdXBhYmFzZS1kYn06JHtQT1NUR1JFU19QT1JUOi01NDMyfS8ke1BPU1RHUkVTX0RCOi1wb3N0Z3Jlc30nCiAgICAgIC0gJ0dPVFJVRV9TSVRFX1VSTD0ke1NFUlZJQ0VfVVJMX1NVUEFCQVNFS09OR30nCiAgICAgIC0gJ0dPVFJVRV9VUklfQUxMT1dfTElTVD0ke0FERElUSU9OQUxfUkVESVJFQ1RfVVJMU30nCiAgICAgIC0gJ0dPVFJVRV9ESVNBQkxFX1NJR05VUD0ke0RJU0FCTEVfU0lHTlVQOi1mYWxzZX0nCiAgICAgIC0gR09UUlVFX0pXVF9BRE1JTl9ST0xFUz1zZXJ2aWNlX3JvbGUKICAgICAgLSBHT1RSVUVfSldUX0FVRD1hdXRoZW50aWNhdGVkCiAgICAgIC0gR09UUlVFX0pXVF9ERUZBVUxUX0dST1VQX05BTUU9YXV0aGVudGljYXRlZAogICAgICAtICdHT1RSVUVfSldUX0VYUD0ke0pXVF9FWFBJUlk6LTM2MDB9JwogICAgICAtICdHT1RSVUVfSldUX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfSldUfScKICAgICAgLSAnR09UUlVFX0VYVEVSTkFMX0VNQUlMX0VOQUJMRUQ9JHtFTkFCTEVfRU1BSUxfU0lHTlVQOi10cnVlfScKICAgICAgLSAnR09UUlVFX0VYVEVSTkFMX0FOT05ZTU9VU19VU0VSU19FTkFCTEVEPSR7RU5BQkxFX0FOT05ZTU9VU19VU0VSUzotZmFsc2V9JwogICAgICAtICdHT1RSVUVfTUFJTEVSX0FVVE9DT05GSVJNPSR7RU5BQkxFX0VNQUlMX0FVVE9DT05GSVJNOi1mYWxzZX0nCiAgICAgIC0gJ0dPVFJVRV9TTVRQX0FETUlOX0VNQUlMPSR7U01UUF9BRE1JTl9FTUFJTH0nCiAgICAgIC0gJ0dPVFJVRV9TTVRQX0hPU1Q9JHtTTVRQX0hPU1R9JwogICAgICAtICdHT1RSVUVfU01UUF9QT1JUPSR7U01UUF9QT1JUOi01ODd9JwogICAgICAtICdHT1RSVUVfU01UUF9VU0VSPSR7U01UUF9VU0VSfScKICAgICAgLSAnR09UUlVFX1NNVFBfUEFTUz0ke1NNVFBfUEFTU30nCiAgICAgIC0gJ0dPVFJVRV9TTVRQX1NFTkRFUl9OQU1FPSR7U01UUF9TRU5ERVJfTkFNRX0nCiAgICAgIC0gJ0dPVFJVRV9NQUlMRVJfVVJMUEFUSFNfSU5WSVRFPSR7TUFJTEVSX1VSTFBBVEhTX0lOVklURTotL2F1dGgvdjEvdmVyaWZ5fScKICAgICAgLSAnR09UUlVFX01BSUxFUl9VUkxQQVRIU19DT05GSVJNQVRJT049JHtNQUlMRVJfVVJMUEFUSFNfQ09ORklSTUFUSU9OOi0vYXV0aC92MS92ZXJpZnl9JwogICAgICAtICdHT1RSVUVfTUFJTEVSX1VSTFBBVEhTX1JFQ09WRVJZPSR7TUFJTEVSX1VSTFBBVEhTX1JFQ09WRVJZOi0vYXV0aC92MS92ZXJpZnl9JwogICAgICAtICdHT1RSVUVfTUFJTEVSX1VSTFBBVEhTX0VNQUlMX0NIQU5HRT0ke01BSUxFUl9VUkxQQVRIU19FTUFJTF9DSEFOR0U6LS9hdXRoL3YxL3ZlcmlmeX0nCiAgICAgIC0gJ0dPVFJVRV9NQUlMRVJfVEVNUExBVEVTX0lOVklURT0ke01BSUxFUl9URU1QTEFURVNfSU5WSVRFfScKICAgICAgLSAnR09UUlVFX01BSUxFUl9URU1QTEFURVNfQ09ORklSTUFUSU9OPSR7TUFJTEVSX1RFTVBMQVRFU19DT05GSVJNQVRJT059JwogICAgICAtICdHT1RSVUVfTUFJTEVSX1RFTVBMQVRFU19SRUNPVkVSWT0ke01BSUxFUl9URU1QTEFURVNfUkVDT1ZFUll9JwogICAgICAtICdHT1RSVUVfTUFJTEVSX1RFTVBMQVRFU19NQUdJQ19MSU5LPSR7TUFJTEVSX1RFTVBMQVRFU19NQUdJQ19MSU5LfScKICAgICAgLSAnR09UUlVFX01BSUxFUl9URU1QTEFURVNfRU1BSUxfQ0hBTkdFPSR7TUFJTEVSX1RFTVBMQVRFU19FTUFJTF9DSEFOR0V9JwogICAgICAtICdHT1RSVUVfTUFJTEVSX1NVQkpFQ1RTX0NPTkZJUk1BVElPTj0ke01BSUxFUl9TVUJKRUNUU19DT05GSVJNQVRJT059JwogICAgICAtICdHT1RSVUVfTUFJTEVSX1NVQkpFQ1RTX1JFQ09WRVJZPSR7TUFJTEVSX1NVQkpFQ1RTX1JFQ09WRVJZfScKICAgICAgLSAnR09UUlVFX01BSUxFUl9TVUJKRUNUU19NQUdJQ19MSU5LPSR7TUFJTEVSX1NVQkpFQ1RTX01BR0lDX0xJTkt9JwogICAgICAtICdHT1RSVUVfTUFJTEVSX1NVQkpFQ1RTX0VNQUlMX0NIQU5HRT0ke01BSUxFUl9TVUJKRUNUU19FTUFJTF9DSEFOR0V9JwogICAgICAtICdHT1RSVUVfTUFJTEVSX1NVQkpFQ1RTX0lOVklURT0ke01BSUxFUl9TVUJKRUNUU19JTlZJVEV9JwogICAgICAtICdHT1RSVUVfRVhURVJOQUxfUEhPTkVfRU5BQkxFRD0ke0VOQUJMRV9QSE9ORV9TSUdOVVA6LXRydWV9JwogICAgICAtICdHT1RSVUVfU01TX0FVVE9DT05GSVJNPSR7RU5BQkxFX1BIT05FX0FVVE9DT05GSVJNOi10cnVlfScKICByZWFsdGltZS1kZXY6CiAgICBpbWFnZTogJ3N1cGFiYXNlL3JlYWx0aW1lOnYyLjM0LjQ3JwogICAgY29udGFpbmVyX25hbWU6IHJlYWx0aW1lLWRldi5zdXBhYmFzZS1yZWFsdGltZQogICAgZGVwZW5kc19vbjoKICAgICAgc3VwYWJhc2UtZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgc3VwYWJhc2UtYW5hbHl0aWNzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1zU2ZMJwogICAgICAgIC0gJy0taGVhZCcKICAgICAgICAtICctbycKICAgICAgICAtIC9kZXYvbnVsbAogICAgICAgIC0gJy1IJwogICAgICAgIC0gJ0F1dGhvcml6YXRpb246IEJlYXJlciAke1NFUlZJQ0VfU1VQQUJBU0VBTk9OX0tFWX0nCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo0MDAwL2FwaS90ZW5hbnRzL3JlYWx0aW1lLWRldi9oZWFsdGgnCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIGludGVydmFsOiA1cwogICAgICByZXRyaWVzOiAzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1JUPTQwMDAKICAgICAgLSAnREJfSE9TVD0ke1BPU1RHUkVTX0hPU1ROQU1FOi1zdXBhYmFzZS1kYn0nCiAgICAgIC0gJ0RCX1BPUlQ9JHtQT1NUR1JFU19QT1JUOi01NDMyfScKICAgICAgLSBEQl9VU0VSPXN1cGFiYXNlX2FkbWluCiAgICAgIC0gJ0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ0RCX05BTUU9JHtQT1NUR1JFU19EQjotcG9zdGdyZXN9JwogICAgICAtICdEQl9BRlRFUl9DT05ORUNUX1FVRVJZPVNFVCBzZWFyY2hfcGF0aCBUTyBfcmVhbHRpbWUnCiAgICAgIC0gREJfRU5DX0tFWT1zdXBhYmFzZXJlYWx0aW1lCiAgICAgIC0gJ0FQSV9KV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtIEZMWV9BTExPQ19JRD1mbHkxMjMKICAgICAgLSBGTFlfQVBQX05BTUU9cmVhbHRpbWUKICAgICAgLSAnU0VDUkVUX0tFWV9CQVNFPSR7U0VDUkVUX1BBU1NXT1JEX1JFQUxUSU1FfScKICAgICAgLSAnRVJMX0FGTEFHUz0tcHJvdG9fZGlzdCBpbmV0X3RjcCcKICAgICAgLSBFTkFCTEVfVEFJTFNDQUxFPWZhbHNlCiAgICAgIC0gIkROU19OT0RFUz0nJyIKICAgICAgLSBSTElNSVRfTk9GSUxFPTEwMDAwCiAgICAgIC0gQVBQX05BTUU9cmVhbHRpbWUKICAgICAgLSBTRUVEX1NFTEZfSE9TVD10cnVlCiAgICAgIC0gTE9HX0xFVkVMPWVycm9yCiAgICAgIC0gUlVOX0pBTklUT1I9dHJ1ZQogICAgICAtIEpBTklUT1JfSU5URVJWQUw9NjAwMDAKICAgIGNvbW1hbmQ6ICJzaCAtYyBcIi9hcHAvYmluL21pZ3JhdGUgJiYgL2FwcC9iaW4vcmVhbHRpbWUgZXZhbCAnUmVhbHRpbWUuUmVsZWFzZS5zZWVkcyhSZWFsdGltZS5SZXBvKScgJiYgL2FwcC9iaW4vc2VydmVyXCJcbiIKICBzdXBhYmFzZS1taW5pbzoKICAgIGltYWdlOiBtaW5pby9taW5pbwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01JTklPX1JPT1RfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NSU5JT30nCiAgICAgIC0gJ01JTklPX1JPT1RfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01JTklPfScKICAgIGNvbW1hbmQ6ICdzZXJ2ZXIgLS1jb25zb2xlLWFkZHJlc3MgIjo5MDAxIiAvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiAnc2xlZXAgNSAmJiBleGl0IDAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogICAgdm9sdW1lczoKICAgICAgLSAnLi92b2x1bWVzL3N0b3JhZ2U6L2RhdGEnCiAgbWluaW8tY3JlYXRlYnVja2V0OgogICAgaW1hZ2U6IG1pbmlvL21jCiAgICByZXN0YXJ0OiAnbm8nCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTUlOSU9fUk9PVF9VU0VSPSR7U0VSVklDRV9VU0VSX01JTklPfScKICAgICAgLSAnTUlOSU9fUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTUlOSU99JwogICAgZGVwZW5kc19vbjoKICAgICAgc3VwYWJhc2UtbWluaW86CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGVudHJ5cG9pbnQ6CiAgICAgIC0gL2VudHJ5cG9pbnQuc2gKICAgIHZvbHVtZXM6CiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2VudHJ5cG9pbnQuc2gKICAgICAgICB0YXJnZXQ6IC9lbnRyeXBvaW50LnNoCiAgICAgICAgY29udGVudDogIiMhL2Jpbi9zaFxuL3Vzci9iaW4vbWMgYWxpYXMgc2V0IHN1cGFiYXNlLW1pbmlvIGh0dHA6Ly9zdXBhYmFzZS1taW5pbzo5MDAwICR7TUlOSU9fUk9PVF9VU0VSfSAke01JTklPX1JPT1RfUEFTU1dPUkR9O1xuL3Vzci9iaW4vbWMgbWIgLS1pZ25vcmUtZXhpc3Rpbmcgc3VwYWJhc2UtbWluaW8vc3R1YjtcbmV4aXQgMFxuIgogIHN1cGFiYXNlLXN0b3JhZ2U6CiAgICBpbWFnZTogJ3N1cGFiYXNlL3N0b3JhZ2UtYXBpOnYxLjE0LjYnCiAgICBkZXBlbmRzX29uOgogICAgICBzdXBhYmFzZS1kYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBzdXBhYmFzZS1yZXN0OgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkCiAgICAgIGltZ3Byb3h5OgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy0tbm8tdmVyYm9zZScKICAgICAgICAtICctLXRyaWVzPTEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo1MDAwL3N0YXR1cycKICAgICAgdGltZW91dDogNXMKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHJldHJpZXM6IDMKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZFUl9QT1JUPTUwMDAKICAgICAgLSBTRVJWRVJfUkVHSU9OPWxvY2FsCiAgICAgIC0gTVVMVElfVEVOQU5UPWZhbHNlCiAgICAgIC0gJ0FVVEhfSldUX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfSldUfScKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vc3VwYWJhc2Vfc3RvcmFnZV9hZG1pbjoke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QCR7UE9TVEdSRVNfSE9TVE5BTUU6LXN1cGFiYXNlLWRifToke1BPU1RHUkVTX1BPUlQ6LTU0MzJ9LyR7UE9TVEdSRVNfREI6LXBvc3RncmVzfScKICAgICAgLSBEQl9JTlNUQUxMX1JPTEVTPWZhbHNlCiAgICAgIC0gU1RPUkFHRV9CQUNLRU5EPXMzCiAgICAgIC0gU1RPUkFHRV9TM19CVUNLRVQ9c3R1YgogICAgICAtICdTVE9SQUdFX1MzX0VORFBPSU5UPWh0dHA6Ly9zdXBhYmFzZS1taW5pbzo5MDAwJwogICAgICAtIFNUT1JBR0VfUzNfRk9SQ0VfUEFUSF9TVFlMRT10cnVlCiAgICAgIC0gU1RPUkFHRV9TM19SRUdJT049dXMtZWFzdC0xCiAgICAgIC0gJ0FXU19BQ0NFU1NfS0VZX0lEPSR7U0VSVklDRV9VU0VSX01JTklPfScKICAgICAgLSAnQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9NSU5JT30nCiAgICAgIC0gVVBMT0FEX0ZJTEVfU0laRV9MSU1JVD01MjQyODgwMDAKICAgICAgLSBVUExPQURfRklMRV9TSVpFX0xJTUlUX1NUQU5EQVJEPTUyNDI4ODAwMAogICAgICAtIFVQTE9BRF9TSUdORURfVVJMX0VYUElSQVRJT05fVElNRT0xMjAKICAgICAgLSBUVVNfVVJMX1BBVEg9dXBsb2FkL3Jlc3VtYWJsZQogICAgICAtIFRVU19NQVhfU0laRT0zNjAwMDAwCiAgICAgIC0gRU5BQkxFX0lNQUdFX1RSQU5TRk9STUFUSU9OPXRydWUKICAgICAgLSAnSU1HUFJPWFlfVVJMPWh0dHA6Ly9pbWdwcm94eTo4MDgwJwogICAgICAtIElNR1BST1hZX1JFUVVFU1RfVElNRU9VVD0xNQogICAgICAtIERBVEFCQVNFX1NFQVJDSF9QQVRIPXN0b3JhZ2UKICAgICAgLSBOT0RFX0VOVj1wcm9kdWN0aW9uCiAgICAgIC0gUkVRVUVTVF9BTExPV19YX0ZPUldBUkRFRF9QQVRIPXRydWUKICAgIHZvbHVtZXM6CiAgICAgIC0gJy4vdm9sdW1lcy9zdG9yYWdlOi92YXIvbGliL3N0b3JhZ2UnCiAgaW1ncHJveHk6CiAgICBpbWFnZTogJ2RhcnRoc2ltL2ltZ3Byb3h5OnYzLjguMCcKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBpbWdwcm94eQogICAgICAgIC0gaGVhbHRoCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIGludGVydmFsOiA1cwogICAgICByZXRyaWVzOiAzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBJTUdQUk9YWV9MT0NBTF9GSUxFU1lTVEVNX1JPT1Q9LwogICAgICAtIElNR1BST1hZX1VTRV9FVEFHPXRydWUKICAgICAgLSAnSU1HUFJPWFlfRU5BQkxFX1dFQlBfREVURUNUSU9OPSR7SU1HUFJPWFlfRU5BQkxFX1dFQlBfREVURUNUSU9OOi10cnVlfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJy4vdm9sdW1lcy9zdG9yYWdlOi92YXIvbGliL3N0b3JhZ2UnCiAgc3VwYWJhc2UtbWV0YToKICAgIGltYWdlOiAnc3VwYWJhc2UvcG9zdGdyZXMtbWV0YTp2MC44OS4zJwogICAgZGVwZW5kc19vbjoKICAgICAgc3VwYWJhc2UtZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgc3VwYWJhc2UtYW5hbHl0aWNzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQR19NRVRBX1BPUlQ9ODA4MAogICAgICAtICdQR19NRVRBX0RCX0hPU1Q9JHtQT1NUR1JFU19IT1NUTkFNRTotc3VwYWJhc2UtZGJ9JwogICAgICAtICdQR19NRVRBX0RCX1BPUlQ9JHtQT1NUR1JFU19QT1JUOi01NDMyfScKICAgICAgLSAnUEdfTUVUQV9EQl9OQU1FPSR7UE9TVEdSRVNfREI6LXBvc3RncmVzfScKICAgICAgLSBQR19NRVRBX0RCX1VTRVI9c3VwYWJhc2VfYWRtaW4KICAgICAgLSAnUEdfTUVUQV9EQl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogIHN1cGFiYXNlLWVkZ2UtZnVuY3Rpb25zOgogICAgaW1hZ2U6ICdzdXBhYmFzZS9lZGdlLXJ1bnRpbWU6djEuNjcuNCcKICAgIGRlcGVuZHNfb246CiAgICAgIHN1cGFiYXNlLWFuYWx5dGljczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGVjaG8KICAgICAgICAtICdFZGdlIEZ1bmN0aW9ucyBpcyBoZWFsdGh5JwogICAgICB0aW1lb3V0OiA1cwogICAgICBpbnRlcnZhbDogNXMKICAgICAgcmV0cmllczogMwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0pXVF9TRUNSRVQ9JHtTRVJWSUNFX1BBU1NXT1JEX0pXVH0nCiAgICAgIC0gJ1NVUEFCQVNFX1VSTD0ke1NFUlZJQ0VfVVJMX1NVUEFCQVNFS09OR30nCiAgICAgIC0gJ1NVUEFCQVNFX0FOT05fS0VZPSR7U0VSVklDRV9TVVBBQkFTRUFOT05fS0VZfScKICAgICAgLSAnU1VQQUJBU0VfU0VSVklDRV9ST0xFX0tFWT0ke1NFUlZJQ0VfU1VQQUJBU0VTRVJWSUNFX0tFWX0nCiAgICAgIC0gJ1NVUEFCQVNFX0RCX1VSTD1wb3N0Z3Jlc3FsOi8vcG9zdGdyZXM6JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUAke1BPU1RHUkVTX0hPU1ROQU1FOi1zdXBhYmFzZS1kYn06JHtQT1NUR1JFU19QT1JUOi01NDMyfS8ke1BPU1RHUkVTX0RCOi1wb3N0Z3Jlc30nCiAgICAgIC0gJ1ZFUklGWV9KV1Q9JHtGVU5DVElPTlNfVkVSSUZZX0pXVDotZmFsc2V9JwogICAgdm9sdW1lczoKICAgICAgLSAnLi92b2x1bWVzL2Z1bmN0aW9uczovaG9tZS9kZW5vL2Z1bmN0aW9ucycKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vdm9sdW1lcy9mdW5jdGlvbnMvbWFpbi9pbmRleC50cwogICAgICAgIHRhcmdldDogL2hvbWUvZGVuby9mdW5jdGlvbnMvbWFpbi9pbmRleC50cwogICAgICAgIGNvbnRlbnQ6ICJpbXBvcnQgeyBzZXJ2ZSB9IGZyb20gJ2h0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjEzMS4wL2h0dHAvc2VydmVyLnRzJ1xuaW1wb3J0ICogYXMgam9zZSBmcm9tICdodHRwczovL2Rlbm8ubGFuZC94L2pvc2VAdjQuMTQuNC9pbmRleC50cydcblxuY29uc29sZS5sb2coJ21haW4gZnVuY3Rpb24gc3RhcnRlZCcpXG5cbmNvbnN0IEpXVF9TRUNSRVQgPSBEZW5vLmVudi5nZXQoJ0pXVF9TRUNSRVQnKVxuY29uc3QgVkVSSUZZX0pXVCA9IERlbm8uZW52LmdldCgnVkVSSUZZX0pXVCcpID09PSAndHJ1ZSdcblxuZnVuY3Rpb24gZ2V0QXV0aFRva2VuKHJlcTogUmVxdWVzdCkge1xuICBjb25zdCBhdXRoSGVhZGVyID0gcmVxLmhlYWRlcnMuZ2V0KCdhdXRob3JpemF0aW9uJylcbiAgaWYgKCFhdXRoSGVhZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGF1dGhvcml6YXRpb24gaGVhZGVyJylcbiAgfVxuICBjb25zdCBbYmVhcmVyLCB0b2tlbl0gPSBhdXRoSGVhZGVyLnNwbGl0KCcgJylcbiAgaWYgKGJlYXJlciAhPT0gJ0JlYXJlcicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEF1dGggaGVhZGVyIGlzIG5vdCAnQmVhcmVyIHt0b2tlbn0nYClcbiAgfVxuICByZXR1cm4gdG9rZW5cbn1cblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5SldUKGp3dDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKVxuICBjb25zdCBzZWNyZXRLZXkgPSBlbmNvZGVyLmVuY29kZShKV1RfU0VDUkVUKVxuICB0cnkge1xuICAgIGF3YWl0IGpvc2Uuand0VmVyaWZ5KGp3dCwgc2VjcmV0S2V5KVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycilcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG5zZXJ2ZShhc3luYyAocmVxOiBSZXF1ZXN0KSA9PiB7XG4gIGlmIChyZXEubWV0aG9kICE9PSAnT1BUSU9OUycgJiYgVkVSSUZZX0pXVCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGdldEF1dGhUb2tlbihyZXEpXG4gICAgICBjb25zdCBpc1ZhbGlkSldUID0gYXdhaXQgdmVyaWZ5SldUKHRva2VuKVxuXG4gICAgICBpZiAoIWlzVmFsaWRKV1QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IG1zZzogJ0ludmFsaWQgSldUJyB9KSwge1xuICAgICAgICAgIHN0YXR1czogNDAxLFxuICAgICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSlcbiAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoeyBtc2c6IGUudG9TdHJpbmcoKSB9KSwge1xuICAgICAgICBzdGF0dXM6IDQwMSxcbiAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybClcbiAgY29uc3QgeyBwYXRobmFtZSB9ID0gdXJsXG4gIGNvbnN0IHBhdGhfcGFydHMgPSBwYXRobmFtZS5zcGxpdCgnLycpXG4gIGNvbnN0IHNlcnZpY2VfbmFtZSA9IHBhdGhfcGFydHNbMV1cblxuICBpZiAoIXNlcnZpY2VfbmFtZSB8fCBzZXJ2aWNlX25hbWUgPT09ICcnKSB7XG4gICAgY29uc3QgZXJyb3IgPSB7IG1zZzogJ21pc3NpbmcgZnVuY3Rpb24gbmFtZSBpbiByZXF1ZXN0JyB9XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeShlcnJvciksIHtcbiAgICAgIHN0YXR1czogNDAwLFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHNlcnZpY2VQYXRoID0gYC9ob21lL2Rlbm8vZnVuY3Rpb25zLyR7c2VydmljZV9uYW1lfWBcbiAgY29uc29sZS5lcnJvcihgc2VydmluZyB0aGUgcmVxdWVzdCB3aXRoICR7c2VydmljZVBhdGh9YClcblxuICBjb25zdCBtZW1vcnlMaW1pdE1iID0gMTUwXG4gIGNvbnN0IHdvcmtlclRpbWVvdXRNcyA9IDEgKiA2MCAqIDEwMDBcbiAgY29uc3Qgbm9Nb2R1bGVDYWNoZSA9IGZhbHNlXG4gIGNvbnN0IGltcG9ydE1hcFBhdGggPSBudWxsXG4gIGNvbnN0IGVudlZhcnNPYmogPSBEZW5vLmVudi50b09iamVjdCgpXG4gIGNvbnN0IGVudlZhcnMgPSBPYmplY3Qua2V5cyhlbnZWYXJzT2JqKS5tYXAoKGspID0+IFtrLCBlbnZWYXJzT2JqW2tdXSlcblxuICB0cnkge1xuICAgIGNvbnN0IHdvcmtlciA9IGF3YWl0IEVkZ2VSdW50aW1lLnVzZXJXb3JrZXJzLmNyZWF0ZSh7XG4gICAgICBzZXJ2aWNlUGF0aCxcbiAgICAgIG1lbW9yeUxpbWl0TWIsXG4gICAgICB3b3JrZXJUaW1lb3V0TXMsXG4gICAgICBub01vZHVsZUNhY2hlLFxuICAgICAgaW1wb3J0TWFwUGF0aCxcbiAgICAgIGVudlZhcnMsXG4gICAgfSlcbiAgICByZXR1cm4gYXdhaXQgd29ya2VyLmZldGNoKHJlcSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnN0IGVycm9yID0geyBtc2c6IGUudG9TdHJpbmcoKSB9XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeShlcnJvciksIHtcbiAgICAgIHN0YXR1czogNTAwLFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgfSlcbiAgfVxufSlcbiIKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vdm9sdW1lcy9mdW5jdGlvbnMvaGVsbG8vaW5kZXgudHMKICAgICAgICB0YXJnZXQ6IC9ob21lL2Rlbm8vZnVuY3Rpb25zL2hlbGxvL2luZGV4LnRzCiAgICAgICAgY29udGVudDogIi8vIEZvbGxvdyB0aGlzIHNldHVwIGd1aWRlIHRvIGludGVncmF0ZSB0aGUgRGVubyBsYW5ndWFnZSBzZXJ2ZXIgd2l0aCB5b3VyIGVkaXRvcjpcbi8vIGh0dHBzOi8vZGVuby5sYW5kL21hbnVhbC9nZXR0aW5nX3N0YXJ0ZWQvc2V0dXBfeW91cl9lbnZpcm9ubWVudFxuLy8gVGhpcyBlbmFibGVzIGF1dG9jb21wbGV0ZSwgZ28gdG8gZGVmaW5pdGlvbiwgZXRjLlxuXG5pbXBvcnQgeyBzZXJ2ZSB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNzcuMS9odHRwL3NlcnZlci50c1wiXG5cbnNlcnZlKGFzeW5jICgpID0+IHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICBgXCJIZWxsbyBmcm9tIEVkZ2UgRnVuY3Rpb25zIVwiYCxcbiAgICB7IGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSB9LFxuICApXG59KVxuXG4vLyBUbyBpbnZva2U6XG4vLyBjdXJsICdodHRwOi8vbG9jYWxob3N0OjxLT05HX0hUVFBfUE9SVD4vZnVuY3Rpb25zL3YxL2hlbGxvJyBcXFxuLy8gICAtLWhlYWRlciAnQXV0aG9yaXphdGlvbjogQmVhcmVyIDxhbm9uL3NlcnZpY2Vfcm9sZSBBUEkga2V5PidcbiIKICAgIGNvbW1hbmQ6CiAgICAgIC0gc3RhcnQKICAgICAgLSAnLS1tYWluLXNlcnZpY2UnCiAgICAgIC0gL2hvbWUvZGVuby9mdW5jdGlvbnMvbWFpbgogIHN1cGFiYXNlLXN1cGF2aXNvcjoKICAgIGltYWdlOiAnc3VwYWJhc2Uvc3VwYXZpc29yOjIuNS4xJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctc1NmTCcKICAgICAgICAtICctbycKICAgICAgICAtIC9kZXYvbnVsbAogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6NDAwMC9hcGkvaGVhbHRoJwogICAgICB0aW1lb3V0OiA1cwogICAgICBpbnRlcnZhbDogNXMKICAgICAgcmV0cmllczogMTAKICAgIGRlcGVuZHNfb246CiAgICAgIHN1cGFiYXNlLWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHN1cGFiYXNlLWFuYWx5dGljczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9PTEVSX1RFTkFOVF9JRD1kZXZfdGVuYW50CiAgICAgIC0gUE9PTEVSX1BPT0xfTU9ERT10cmFuc2FjdGlvbgogICAgICAtICdQT09MRVJfREVGQVVMVF9QT09MX1NJWkU9JHtQT09MRVJfREVGQVVMVF9QT09MX1NJWkU6LTIwfScKICAgICAgLSAnUE9PTEVSX01BWF9DTElFTlRfQ09OTj0ke1BPT0xFUl9NQVhfQ0xJRU5UX0NPTk46LTEwMH0nCiAgICAgIC0gUE9SVD00MDAwCiAgICAgIC0gJ1BPU1RHUkVTX1BPUlQ9JHtQT1NUR1JFU19QT1JUOi01NDMyfScKICAgICAgLSAnUE9TVEdSRVNfSE9TVE5BTUU9JHtQT1NUR1JFU19IT1NUTkFNRTotc3VwYWJhc2UtZGJ9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1wb3N0Z3Jlc30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1lY3RvOi8vc3VwYWJhc2VfYWRtaW46JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUAke1BPU1RHUkVTX0hPU1ROQU1FOi1zdXBhYmFzZS1kYn06JHtQT1NUR1JFU19QT1JUOi01NDMyfS9fc3VwYWJhc2UnCiAgICAgIC0gQ0xVU1RFUl9QT1NUR1JFUz10cnVlCiAgICAgIC0gJ1NFQ1JFVF9LRVlfQkFTRT0ke1NFUlZJQ0VfUEFTU1dPUkRfU1VQQVZJU09SU0VDUkVUfScKICAgICAgLSAnVkFVTFRfRU5DX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfVkFVTFRFTkN9JwogICAgICAtICdBUElfSldUX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfSldUfScKICAgICAgLSAnTUVUUklDU19KV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtIFJFR0lPTj1sb2NhbAogICAgICAtICdFUkxfQUZMQUdTPS1wcm90b19kaXN0IGluZXRfdGNwJwogICAgY29tbWFuZDoKICAgICAgLSAvYmluL3NoCiAgICAgIC0gJy1jJwogICAgICAtICcvYXBwL2Jpbi9taWdyYXRlICYmIC9hcHAvYmluL3N1cGF2aXNvciBldmFsICIkJChjYXQgL2V0Yy9wb29sZXIvcG9vbGVyLmV4cykiICYmIC9hcHAvYmluL3NlcnZlcicKICAgIHZvbHVtZXM6CiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL3ZvbHVtZXMvcG9vbGVyL3Bvb2xlci5leHMKICAgICAgICB0YXJnZXQ6IC9ldGMvcG9vbGVyL3Bvb2xlci5leHMKICAgICAgICBjb250ZW50OiAiezpvaywgX30gPSBBcHBsaWNhdGlvbi5lbnN1cmVfYWxsX3N0YXJ0ZWQoOnN1cGF2aXNvcilcbns6b2ssIHZlcnNpb259ID1cbiAgICBjYXNlIFN1cGF2aXNvci5SZXBvLnF1ZXJ5IShcInNlbGVjdCB2ZXJzaW9uKClcIikgZG9cbiAgICAle3Jvd3M6IFtbdmVyXV19IC0+IFN1cGF2aXNvci5IZWxwZXJzLnBhcnNlX3BnX3ZlcnNpb24odmVyKVxuICAgIF8gLT4gbmlsXG4gICAgZW5kXG5wYXJhbXMgPSAle1xuICAgIFwiZXh0ZXJuYWxfaWRcIiA9PiBTeXN0ZW0uZ2V0X2VudihcIlBPT0xFUl9URU5BTlRfSURcIiksXG4gICAgXCJkYl9ob3N0XCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT1NUR1JFU19IT1NUTkFNRVwiKSxcbiAgICBcImRiX3BvcnRcIiA9PiBTeXN0ZW0uZ2V0X2VudihcIlBPU1RHUkVTX1BPUlRcIikgfD4gU3RyaW5nLnRvX2ludGVnZXIoKSxcbiAgICBcImRiX2RhdGFiYXNlXCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT1NUR1JFU19EQlwiKSxcbiAgICBcInJlcXVpcmVfdXNlclwiID0+IGZhbHNlLFxuICAgIFwiYXV0aF9xdWVyeVwiID0+IFwiU0VMRUNUICogRlJPTSBwZ2JvdW5jZXIuZ2V0X2F1dGgoJDEpXCIsXG4gICAgXCJkZWZhdWx0X21heF9jbGllbnRzXCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT09MRVJfTUFYX0NMSUVOVF9DT05OXCIpLFxuICAgIFwiZGVmYXVsdF9wb29sX3NpemVcIiA9PiBTeXN0ZW0uZ2V0X2VudihcIlBPT0xFUl9ERUZBVUxUX1BPT0xfU0laRVwiKSxcbiAgICBcImRlZmF1bHRfcGFyYW1ldGVyX3N0YXR1c1wiID0+ICV7XCJzZXJ2ZXJfdmVyc2lvblwiID0+IHZlcnNpb259LFxuICAgIFwidXNlcnNcIiA9PiBbJXtcbiAgICBcImRiX3VzZXJcIiA9PiBcInBnYm91bmNlclwiLFxuICAgIFwiZGJfcGFzc3dvcmRcIiA9PiBTeXN0ZW0uZ2V0X2VudihcIlBPU1RHUkVTX1BBU1NXT1JEXCIpLFxuICAgIFwibW9kZV90eXBlXCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT09MRVJfUE9PTF9NT0RFXCIpLFxuICAgIFwicG9vbF9zaXplXCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT09MRVJfREVGQVVMVF9QT09MX1NJWkVcIiksXG4gICAgXCJpc19tYW5hZ2VyXCIgPT4gdHJ1ZVxuICAgIH1dXG59XG5cbnRlbmFudCA9IFN1cGF2aXNvci5UZW5hbnRzLmdldF90ZW5hbnRfYnlfZXh0ZXJuYWxfaWQocGFyYW1zW1wiZXh0ZXJuYWxfaWRcIl0pXG5cbmlmIHRlbmFudCBkb1xuICB7Om9rLCBffSA9IFN1cGF2aXNvci5UZW5hbnRzLnVwZGF0ZV90ZW5hbnQodGVuYW50LCBwYXJhbXMpXG5lbHNlXG4gIHs6b2ssIF99ID0gU3VwYXZpc29yLlRlbmFudHMuY3JlYXRlX3RlbmFudChwYXJhbXMpXG5lbmRcbiIK",
+ "tags": [
+ "firebase",
+ "alternative",
+ "open-source"
+ ],
+ "logo": "svgs/supabase.svg",
+ "minversion": "4.0.0-beta.228",
+ "port": "8000"
+ },
+ "superset-with-postgresql": {
+ "documentation": "https://github.com/amancevice/docker-superset?utm_source=coolify.io",
+ "slogan": "Modern data exploration and visualization platform (unofficial community docker image)",
+ "compose": "c2VydmljZXM6CiAgc3VwZXJzZXQ6CiAgICBpbWFnZTogJ2FtYW5jZXZpY2Uvc3VwZXJzZXQ6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfU1VQRVJTRVRfODA4OAogICAgICAtICdTRUNSRVRfS0VZPSR7U0VSVklDRV9CQVNFNjRfNjRfU1VQRVJTRVRTRUNSRVRLRVl9JwogICAgICAtICdNQVBCT1hfQVBJX0tFWT0ke01BUEJPWF9BUElfS0VZfScKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LXN1cGVyc2V0LWRifScKICAgICAgLSAnUkVESVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfScKICAgIHZvbHVtZXM6CiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL3N1cGVyc2V0L3N1cGVyc2V0X2NvbmZpZy5weQogICAgICAgIHRhcmdldDogL2V0Yy9zdXBlcnNldC9zdXBlcnNldF9jb25maWcucHkKICAgICAgICBjb250ZW50OiAiXCJcIlwiXG5Gb3IgbW9yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNlZTpcbi0gaHR0cHM6Ly9zdXBlcnNldC5hcGFjaGUub3JnL2RvY3MvY29uZmlndXJhdGlvbi9jb25maWd1cmluZy1zdXBlcnNldFxuXCJcIlwiXG5cbmltcG9ydCBvc1xuXG5TRUNSRVRfS0VZID0gb3MuZ2V0ZW52KFwiU0VDUkVUX0tFWVwiKVxuTUFQQk9YX0FQSV9LRVkgPSBvcy5nZXRlbnYoXCJNQVBCT1hfQVBJX0tFWVwiLCBcIlwiKVxuXG5DQUNIRV9DT05GSUcgPSB7XG4gIFwiQ0FDSEVfVFlQRVwiOiBcIlJlZGlzQ2FjaGVcIixcbiAgXCJDQUNIRV9ERUZBVUxUX1RJTUVPVVRcIjogMzAwLFxuICBcIkNBQ0hFX0tFWV9QUkVGSVhcIjogXCJzdXBlcnNldF9cIixcbiAgXCJDQUNIRV9SRURJU19IT1NUXCI6IFwicmVkaXNcIixcbiAgXCJDQUNIRV9SRURJU19QT1JUXCI6IDYzNzksXG4gIFwiQ0FDSEVfUkVESVNfREJcIjogMSxcbiAgXCJDQUNIRV9SRURJU19VUkxcIjogZlwicmVkaXM6Ly86e29zLmdldGVudignUkVESVNfUEFTU1dPUkQnKX1AcmVkaXM6NjM3OS8xXCIsXG59XG5cbkZJTFRFUl9TVEFURV9DQUNIRV9DT05GSUcgPSB7KipDQUNIRV9DT05GSUcsIFwiQ0FDSEVfS0VZX1BSRUZJWFwiOiBcInN1cGVyc2V0X2ZpbHRlcl9cIn1cbkVYUExPUkVfRk9STV9EQVRBX0NBQ0hFX0NPTkZJRyA9IHsqKkNBQ0hFX0NPTkZJRywgXCJDQUNIRV9LRVlfUFJFRklYXCI6IFwic3VwZXJzZXRfZXhwbG9yZV9mb3JtX1wifVxuXG5TUUxBTENIRU1ZX1RSQUNLX01PRElGSUNBVElPTlMgPSBUcnVlXG5TUUxBTENIRU1ZX0RBVEFCQVNFX1VSSSA9IGZcInBvc3RncmVzcWwrcHN5Y29wZzI6Ly97b3MuZ2V0ZW52KCdQT1NUR1JFU19VU0VSJyl9Ontvcy5nZXRlbnYoJ1BPU1RHUkVTX1BBU1NXT1JEJyl9QHBvc3RncmVzOjU0MzIve29zLmdldGVudignUE9TVEdSRVNfREInKX1cIlxuXG4jIFVuY29tbWVudCBpZiB5b3Ugd2FudCB0byBsb2FkIGV4YW1wbGUgZGF0YSAodXNpbmcgXCJzdXBlcnNldCBsb2FkX2V4YW1wbGVzXCIpIGF0IHRoZVxuIyBzYW1lIGxvY2F0aW9uIGFzIHlvdXIgbWV0YWRhdGEgcG9zdGdyZXNxbCBpbnN0YW5jZS4gT3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBzcWxpdGVcbiMgd2lsbCBiZSB1c2VkLCB3aGljaCB3aWxsIG5vdCBwZXJzaXN0IGluIHZvbHVtZSB3aGVuIHJlc3RhcnRpbmcgc3VwZXJzZXQgYnkgZGVmYXVsdC5cbiNTUUxBTENIRU1ZX0VYQU1QTEVTX1VSSSA9IFNRTEFMQ0hFTVlfREFUQUJBU0VfVVJJIgogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDg4L2hlYWx0aCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNy1hbHBpbmUnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LXN1cGVyc2V0LWRifScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3N1cGVyc2V0X3Bvc3RncmVzX2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo4LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3N1cGVyc2V0X3JlZGlzX2RhdGE6L2RhdGEnCiAgICBjb21tYW5kOiAncmVkaXMtc2VydmVyIC0tcmVxdWlyZXBhc3MgJHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiAncmVkaXMtY2xpIHBpbmcnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "analytics",
+ "bi",
+ "dashboard",
+ "database",
+ "sql",
+ "unofficial"
+ ],
+ "logo": "svgs/superset.svg",
+ "minversion": "0.0.0",
+ "port": "8088"
+ },
+ "supertokens-with-mysql": {
+ "documentation": "https://supertokens.com/docs/guides?utm_source=coolify.io",
+ "slogan": "An open-source authentication solution that simplifies the implementation of secure user authentication and session management for web and mobile applications.",
+ "compose": "c2VydmljZXM6CiAgc3VwZXJ0b2tlbnM6CiAgICBpbWFnZTogJ3JlZ2lzdHJ5LnN1cGVydG9rZW5zLmlvL3N1cGVydG9rZW5zL3N1cGVydG9rZW5zLW15c3FsOmxhdGVzdCcKICAgIGRlcGVuZHNfb246CiAgICAgIG15c3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9TVVBFUlRPS0VOU18zNTY3CiAgICAgIC0gJ0FQSV9LRVlTPSR7QVBJX0tFWVM6LX0nCiAgICAgIC0gJ01ZU1FMX0NPTk5FQ1RJT05fVVJJPW15c3FsOi8vJFNFUlZJQ0VfVVNFUl9NWVNRTDokU0VSVklDRV9QQVNTV09SRF9NWVNRTEBteXNxbDozMzA2LyR7TVlTUUxfREFUQUJBU0U6LXN1cGVydG9rZW5zfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiAiYmFzaCAtYyAnZXhlYyAzPD4vZGV2L3RjcC8xMjcuMC4wLjEvMzU2NyAmJiBlY2hvIC1lIFwiR0VUIC9oZWxsbyBIVFRQLzEuMVxcclxcbmhvc3Q6IDEyNy4wLjAuMTozNTY3XFxyXFxuQ29ubmVjdGlvbjogY2xvc2VcXHJcXG5cXHJcXG5cIiA+JjMgJiYgY2F0IDwmMyB8IGdyZXAgXCJIZWxsb1wiJ1xuIgogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDUKICBteXNxbDoKICAgIGltYWdlOiAnbXlzcWw6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gTVlTUUxfUk9PVF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NWVNRTAogICAgICAtIE1ZU1FMX1VTRVI9JFNFUlZJQ0VfVVNFUl9NWVNRTAogICAgICAtIE1ZU1FMX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX01ZU1FMCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LXN1cGVydG9rZW5zfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3N1cGVydG9rZW5zLW15c3FsLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gbXlzcWxhZG1pbgogICAgICAgIC0gcGluZwogICAgICAgIC0gJy1oJwogICAgICAgIC0gbG9jYWxob3N0CiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "supertokens",
+ "login",
+ "authentication",
+ "authorization",
+ "oauth",
+ "user-management",
+ "session-management",
+ "access-control",
+ "otp",
+ "magic-link",
+ "passwordless"
+ ],
+ "logo": "svgs/supertokens.svg",
+ "minversion": "0.0.0",
+ "port": "3567"
+ },
+ "supertokens-with-postgresql": {
+ "documentation": "https://supertokens.com/docs/guides?utm_source=coolify.io",
+ "slogan": "An open-source authentication solution that simplifies the implementation of secure user authentication and session management for web and mobile applications.",
+ "compose": "c2VydmljZXM6CiAgc3VwZXJ0b2tlbnM6CiAgICBpbWFnZTogJ3JlZ2lzdHJ5LnN1cGVydG9rZW5zLmlvL3N1cGVydG9rZW5zL3N1cGVydG9rZW5zLXBvc3RncmVzcWw6bGF0ZXN0JwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1NVUEVSVE9LRU5TXzM1NjcKICAgICAgLSAnQVBJX0tFWVM9JHtBUElfS0VZUzotfScKICAgICAgLSAnUE9TVEdSRVNRTF9DT05ORUNUSU9OX1VSST0icG9zdGdyZXNxbDovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVNRTDokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMQHBvc3RncmVzOjU0MzIvJHtQT1NUR1JFU19EQjotc3VwZXJ0b2tlbnN9IicKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiAiYmFzaCAtYyAnZXhlYyAzPD4vZGV2L3RjcC8xMjcuMC4wLjEvMzU2NyAmJiBlY2hvIC1lIFwiR0VUIC9oZWxsbyBIVFRQLzEuMVxcclxcbmhvc3Q6IDEyNy4wLjAuMTozNTY3XFxyXFxuQ29ubmVjdGlvbjogY2xvc2VcXHJcXG5cXHJcXG5cIiA+JjMgJiYgY2F0IDwmMyB8IGdyZXAgXCJIZWxsb1wiJ1xuIgogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDUKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVNRTAogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUwKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotc3VwZXJ0b2tlbnN9JwogICAgdm9sdW1lczoKICAgICAgLSAnc3VwZXJ0b2tlbnMtcG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcGdfaXNyZWFkeQogICAgICAgIC0gJy1VJwogICAgICAgIC0gJFNFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMCiAgICAgICAgLSAnLWQnCiAgICAgICAgLSAnJHtQT1NUR1JFU19EQjotc3VwZXJ0b2tlbnN9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogNQo=",
+ "tags": [
+ "supertokens",
+ "login",
+ "authentication",
+ "authorization",
+ "oauth",
+ "user-management",
+ "session-management",
+ "access-control",
+ "otp",
+ "magic-link",
+ "passwordless"
+ ],
+ "logo": "svgs/supertokens.svg",
+ "minversion": "0.0.0",
+ "port": "3567"
+ },
+ "syncthing": {
+ "documentation": "https://syncthing.net/?utm_source=coolify.io",
+ "slogan": "Syncthing synchronizes files between two or more computers in real time.",
+ "compose": "c2VydmljZXM6CiAgc3luY3RoaW5nOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL3N5bmN0aGluZzpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9TWU5DVEhJTkdfODM4NAogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtICdUWj0ke1RaOi1FdGMvVVRDfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3N5bmN0aGluZ19jb25maWc6L2NvbmZpZycKICAgICAgLSAnc3luY3RoaW5nX2RhdGExOi9kYXRhMScKICAgICAgLSAnc3luY3RoaW5nX2RhdGEyOi9kYXRhMicKICAgIHBvcnRzOgogICAgICAtICcyMjAwMDoyMjAwMC90Y3AnCiAgICAgIC0gJzIyMDAwOjIyMDAwL3VkcCcKICAgICAgLSAnMjEwMjc6MjEwMjcvdWRwJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC1xTy0gaHR0cDovLzEyNy4wLjAuMTo4Mzg0LycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "filestorage",
+ "data",
+ "synchronization"
+ ],
+ "logo": "svgs/syncthing.svg",
+ "minversion": "0.0.0",
+ "port": "8384"
+ },
+ "teable": {
+ "documentation": "https://help.teable.io/?utm_source=coolify.io",
+ "slogan": "Teable is a powerful visual interface built on relational databases (PostgreSQL).",
+ "compose": "c2VydmljZXM6CiAgdGVhYmxlOgogICAgaW1hZ2U6ICdnaGNyLmlvL3RlYWJsZWlvL3RlYWJsZTpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICd0ZWFibGVfZGF0YTovYXBwLy5hc3NldHM6cncnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9URUFCTEVfMzAwMAogICAgICAtICdQVUJMSUNfT1JJR0lOPSR7U0VSVklDRV9VUkxfVEVBQkxFfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnU0VDUkVUX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfU0VDUkVUfScKICAgICAgLSAnVFo9JHtUSU1FWk9ORX0nCiAgICAgIC0gJ1BSSVNNQV9EQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHRlYWJsZS1kYjoke1BPU1RHUkVTX1BPUlR9LyR7UE9TVEdSRVNfREJ9JwogICAgICAtIE5FWFRfRU5WX0lNQUdFU19BTExfUkVNT1RFPXRydWUKICAgICAgLSBQT1JUPTMwMDAKICAgICAgLSAnUkVESVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfScKICAgICAgLSBCQUNLRU5EX0NBQ0hFX1BST1ZJREVSPXJlZGlzCiAgICAgIC0gJ0JBQ0tFTkRfQ0FDSEVfUkVESVNfVVJJPXJlZGlzOi8vZGVmYXVsdDoke1NFUlZJQ0VfUEFTU1dPUkRfUkVESVN9QHRlYWJsZS1jYWNoZTo2Mzc5LzAnCiAgICAgIC0gJ0JBQ0tFTkRfTUFJTF9IT1NUPSR7QkFDS0VORF9NQUlMX0hPU1R9JwogICAgICAtICdCQUNLRU5EX01BSUxfUE9SVD0ke0JBQ0tFTkRfTUFJTF9QT1JUfScKICAgICAgLSAnQkFDS0VORF9NQUlMX1NFQ1VSRT0ke0JBQ0tFTkRfTUFJTF9TRUNVUkV9JwogICAgICAtICdCQUNLRU5EX01BSUxfU0VOREVSPSR7QkFDS0VORF9NQUlMX1NFTkRFUn0nCiAgICAgIC0gJ0JBQ0tFTkRfTUFJTF9TRU5ERVJfTkFNRT0ke0JBQ0tFTkRfTUFJTF9TRU5ERVJfTkFNRX0nCiAgICAgIC0gJ0JBQ0tFTkRfTUFJTF9BVVRIX1VTRVI9JHtCQUNLRU5EX01BSUxfQVVUSF9VU0VSfScKICAgICAgLSAnQkFDS0VORF9NQUlMX0FVVEhfUEFTUz0ke0JBQ0tFTkRfTUFJTF9BVVRIX1BBU1N9JwogICAgZGVwZW5kc19vbjoKICAgICAgdGVhYmxlLWNhY2hlOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHRlYWJsZS1kYjoKICAgIGltYWdlOiAncG9zdGdyZXM6MTUuNCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3RlYWJsZV9kYl9kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YTpydycKICAgIGVudmlyb25tZW50OgogICAgICAtICdUWj0ke1RJTUVaT05FfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotdGVhYmxlfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BPUlQ9JHtQT1NUR1JFU19QT1JUOi01NDMyfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICB0ZWFibGUtZGItbWlncmF0ZToKICAgIGltYWdlOiAnZ2hjci5pby90ZWFibGVpby90ZWFibGUtZGItbWlncmF0ZTpsYXRlc3QnCiAgICByZXN0YXJ0OiAnbm8nCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnVFo9JHtUSU1FWk9ORX0nCiAgICAgIC0gJ1BSSVNNQV9EQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHRlYWJsZS1kYjoke1BPU1RHUkVTX1BPUlR9LyR7UE9TVEdSRVNfREJ9JwogICAgZGVwZW5kc19vbjoKICAgICAgdGVhYmxlLWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgdGVhYmxlLWNhY2hlOgogICAgaW1hZ2U6ICdyZWRpczo3LjIuNCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFJFRElTX1BPUlQ9NjM3OQogICAgICAtIFJFRElTX0RCPTAKICAgICAgLSAnUkVESVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3RlYWJsZV9jYWNoZV9kYXRhOi9kYXRhOnJ3JwogICAgY29tbWFuZDogJ3JlZGlzLXNlcnZlciAtLWFwcGVuZG9ubHkgeWVzIC0tcmVxdWlyZXBhc3MgJHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtICctLXJhdycKICAgICAgICAtIGluY3IKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAzcwogICAgICByZXRyaWVzOiAzCg==",
+ "tags": [
+ "airtable",
+ "teable",
+ "database",
+ "visual",
+ "interface",
+ "relational",
+ "postgresql"
+ ],
+ "logo": "svgs/teable.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "tolgee": {
+ "documentation": "https://tolgee.io/?utm_source=coolify.io",
+ "slogan": "Tolgee is a localization management platform for developers and translators.",
+ "compose": "c2VydmljZXM6CiAgdG9sZ2VlOgogICAgaW1hZ2U6IHRvbGdlZS90b2xnZWUKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1RPTEdFRV84MDgwCiAgICAgIC0gVE9MR0VFX0FVVEhFTlRJQ0FUSU9OX0VOQUJMRUQ9dHJ1ZQogICAgICAtIFRPTEdFRV9BVVRIRU5USUNBVElPTl9JTklUSUFMX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1RPTEdFRQogICAgICAtIFRPTEdFRV9BVVRIRU5USUNBVElPTl9JTklUSUFMX1VTRVJOQU1FPWFkbWluCiAgICAgIC0gVE9MR0VFX0FVVEhFTlRJQ0FUSU9OX0pXVF9TRUNSRVQ9JFNFUlZJQ0VfUEFTU1dPUkRfSldUCiAgICAgIC0gVE9MR0VFX1BPU1RHUkVTX0FVVE9TVEFSVF9FTkFCTEVEPWZhbHNlCiAgICAgIC0gJ1NQUklOR19EQVRBU09VUkNFX1VSTD1qZGJjOnBvc3RncmVzcWw6Ly9wb3N0Z3Jlc3FsOjU0MzIvJHtQT1NUR1JFU19EQjotdG9sZ2VlfScKICAgICAgLSAnU1BSSU5HX0RBVEFTT1VSQ0VfVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVNRTH0nCiAgICAgIC0gJ1NQUklOR19EQVRBU09VUkNFX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3RvbGdlZS1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHdnZXQKICAgICAgICAtICctcScKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwODAnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzcWw6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICd0b2xnZWUtcG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTUUx9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNRTH0nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNRTF9EQVRBQkFTRTotdG9sZ2VlfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "localization",
+ "translation",
+ "management",
+ "platform"
+ ],
+ "logo": "svgs/tolgee.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "traccar": {
+ "documentation": "https://www.traccar.org/documentation/?utm_source=coolify.io",
+ "slogan": "Traccar is a free and open source modern GPS tracking system.",
+ "compose": "c2VydmljZXM6CiAgdHJhY2NhcjoKICAgIGltYWdlOiAndHJhY2Nhci90cmFjY2FyOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1RSQUNDQVJfODA4MgogICAgICAtIFNFUlZJQ0VfVVJMX1RSQUNDQVJBUElfNTE1OQogICAgICAtICdDT05GSUdfVVNFX0VOVklST05NRU5UX1ZBUklBQkxFUz0ke0NPTkZJR19VU0VfRU5WSVJPTk1FTlRfVkFSSUFCTEVTOi10cnVlfScKICAgICAgLSAnREFUQUJBU0VfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ0RBVEFCQVNFX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICB2b2x1bWVzOgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9zcnYvdHJhY2Nhci9jb25mL3RyYWNjYXIueG1sCiAgICAgICAgdGFyZ2V0OiAvb3B0L3RyYWNjYXIvY29uZi90cmFjY2FyLnhtbAogICAgICAgIGNvbnRlbnQ6ICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdVVEYtOCc/PlxuPCFET0NUWVBFIHByb3BlcnRpZXMgU1lTVEVNICdodHRwOi8vamF2YS5zdW4uY29tL2R0ZC9wcm9wZXJ0aWVzLmR0ZCc+XG48cHJvcGVydGllcz5cbiAgICA8ZW50cnkga2V5PSdjb25maWcuZGVmYXVsdCc+Li9jb25mL2RlZmF1bHQueG1sPC9lbnRyeT5cbiAgICA8ZW50cnkga2V5PSdkYXRhYmFzZS5kcml2ZXInPm9yZy5wb3N0Z3Jlc3FsLkRyaXZlcjwvZW50cnk+XG4gICAgPGVudHJ5IGtleT0nZGF0YWJhc2UudXJsJz5qZGJjOnBvc3RncmVzcWw6Ly9wb3N0Z3Jlczo1NDMyL3RyYWNjYXI8L2VudHJ5PlxuPC9wcm9wZXJ0aWVzPlxuIgogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLS1uby12ZXJib3NlJwogICAgICAgIC0gJy0tdHJpZXM9MScKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwODIvcGluZycKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogICAgICBzdGFydF9wZXJpb2Q6IDE1cwogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU1FMX0RBVEFCQVNFOi10cmFjY2FyfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3RyYWNjYXItcG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YS8nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "traccar",
+ "gps",
+ "tracking",
+ "open",
+ "source"
+ ],
+ "logo": "svgs/traccar.png",
+ "minversion": "0.0.0",
+ "port": "8082"
+ },
+ "transmission": {
+ "documentation": "https://docs.linuxserver.io/images/docker-transmission/?utm_source=coolify.io",
+ "slogan": "Fast, easy, and free BitTorrent client.",
+ "compose": "c2VydmljZXM6CiAgdHJhbnNtaXNzaW9uOgogICAgaW1hZ2U6ICdsc2NyLmlvL2xpbnV4c2VydmVyL3RyYW5zbWlzc2lvbjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9UUkFOU01JU1NJT05fOTA5MQogICAgICAtIFBVSUQ9MTAwMAogICAgICAtIFBHSUQ9MTAwMAogICAgICAtICdVU0VSPSR7U0VSVklDRV9VU0VSX0FETUlOfScKICAgICAgLSAnUEFTUz0ke1NFUlZJQ0VfUEFTU1dPUkRfQURNSU59JwogICAgdm9sdW1lczoKICAgICAgLSAndHJhbnNtaXNzaW9uLWNvbmZpZzovY29uZmlnJwogICAgICAtICd0cmFuc21pc3Npb24tZG93bmxvYWRzOi9kb3dubG9hZHMnCiAgICAgIC0gJ3RyYW5zbWlzc2lvbi13YXRjaDovd2F0Y2gnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1zU2ZMJwogICAgICAgIC0gJy11JwogICAgICAgIC0gJyR7U0VSVklDRV9VU0VSX0FETUlOfToke1NFUlZJQ0VfUEFTU1dPUkRfQURNSU59JwogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6OTA5MS8nCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMK",
+ "tags": [
+ "bittorrent",
+ "torrent",
+ "peer-to-peer"
+ ],
+ "logo": "svgs/transmission.svg",
+ "minversion": "0.0.0",
+ "port": "9091"
+ },
+ "trigger-with-external-database": {
+ "documentation": "https://trigger.dev?utm_source=coolify.io",
+ "slogan": "The open source Background Jobs framework for TypeScript",
+ "compose": "c2VydmljZXM6CiAgdHJpZ2dlcjoKICAgIGltYWdlOiAnZ2hjci5pby90cmlnZ2VyZG90ZGV2L3RyaWdnZXIuZGV2Om1haW4nCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9UUklHR0VSXzMwMDAKICAgICAgLSBMT0dJTl9PUklHSU49JFNFUlZJQ0VfVVJMX1RSSUdHRVIKICAgICAgLSBBUFBfT1JJR0lOPSRTRVJWSUNFX1VSTF9UUklHR0VSCiAgICAgIC0gTUFHSUNfTElOS19TRUNSRVQ9JFNFUlZJQ0VfUEFTU1dPUkRfMzJfTUFHSUMKICAgICAgLSBFTkNSWVBUSU9OX0tFWT0kU0VSVklDRV9QQVNTV09SRF8zMl9FTkNSWVBUSU9OCiAgICAgIC0gU0VTU0lPTl9TRUNSRVQ9JFNFUlZJQ0VfUEFTU1dPUkRfMzJfU0VTU0lPTgogICAgICAtICdEQVRBQkFTRV9VUkw9JHtEQVRBQkFTRV9VUkw6P30nCiAgICAgIC0gJ0RJUkVDVF9VUkw9JHtEQVRBQkFTRV9VUkw6P30nCiAgICAgIC0gUlVOVElNRV9QTEFURk9STT1kb2NrZXItY29tcG9zZQogICAgICAtIE5PREVfRU5WPXByb2R1Y3Rpb24KICAgICAgLSAnQVVUSF9HSVRIVUJfQ0xJRU5UX0lEPSR7QVVUSF9HSVRIVUJfQ0xJRU5UX0lEfScKICAgICAgLSAnQVVUSF9HSVRIVUJfQ0xJRU5UX1NFQ1JFVD0ke0FVVEhfR0lUSFVCX0NMSUVOVF9TRUNSRVR9JwogICAgICAtICdSRVNFTkRfQVBJX0tFWT0ke1JFU0VORF9BUElfS0VZfScKICAgICAgLSAnRlJPTV9FTUFJTD0ke0ZST01fRU1BSUx9JwogICAgICAtICdSRVBMWV9UT19FTUFJTD0ke1JFUExZX1RPX0VNQUlMfScKICAgICAgLSAnUkVESVNfSE9TVD0ke1JFRElTX0hPU1R9JwogICAgICAtICdSRURJU19QT1JUPSR7UkVESVNfUE9SVH0nCiAgICAgIC0gJ1JFRElTX1VTRVJOQU1FPSR7UkVESVNfVVNFUk5BTUV9JwogICAgICAtICdSRURJU19QQVNTV09SRD0ke1JFRElTX1BBU1NXT1JEfScKICAgICAgLSAnUkVESVNfVExTX0RJU0FCTEVEPSR7UkVESVNfVExTX0RJU0FCTEVEOi10cnVlfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiAidGltZW91dCAxMHMgYmFzaCAtYyAnOj4gL2Rldi90Y3AvMTI3LjAuMC4xLzMwMDAnIHx8IGV4aXQgMSIKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1Cg==",
+ "tags": [
+ "trigger.dev",
+ "background jobs",
+ "typescript",
+ "trigger",
+ "jobs",
+ "cron",
+ "scheduler"
+ ],
+ "logo": "svgs/trigger.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "trigger": {
+ "documentation": "https://trigger.dev?utm_source=coolify.io",
+ "slogan": "The open source Background Jobs framework for TypeScript",
+ "compose": "eC1jb21tb24tZW52OgogIFJFTUlYX0FQUF9QT1JUOiAzMDAwCiAgTk9ERV9FTlY6IHByb2R1Y3Rpb24KICBSVU5USU1FX1BMQVRGT1JNOiBkb2NrZXItY29tcG9zZQogIFYzX0VOQUJMRUQ6IHRydWUKICBJTlRFUk5BTF9PVEVMX1RSQUNFX0RJU0FCTEVEOiAxCiAgSU5URVJOQUxfT1RFTF9UUkFDRV9MT0dHSU5HX0VOQUJMRUQ6IDAKICBQT1NUR1JFU19VU0VSOiAkU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgUE9TVEdSRVNfUEFTU1dPUkQ6ICRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgUE9TVEdSRVNfREI6ICcke1BPU1RHUkVTX0RCOi10cmlnZ2VyfScKICBNQUdJQ19MSU5LX1NFQ1JFVDogJFNFUlZJQ0VfUEFTU1dPUkRfMzJfTUFHSUMKICBTRVNTSU9OX1NFQ1JFVDogJFNFUlZJQ0VfUEFTU1dPUkRfMzJfU0VTU0lPTgogIEVOQ1JZUFRJT05fS0VZOiAkU0VSVklDRV9QQVNTV09SRF8zMl9FTkNSWVBUSU9OCiAgUFJPVklERVJfU0VDUkVUOiAkU0VSVklDRV9QQVNTV09SRF82NF9QUk9WSURFUgogIENPT1JESU5BVE9SX1NFQ1JFVDogJFNFUlZJQ0VfUEFTU1dPUkRfNjRfQ09PUkRJTkFUT1IKICBEQVRBQkFTRV9IT1NUOiAncG9zdGdyZXNxbDo1NDMyJwogIERBVEFCQVNFX1VSTDogJ3Bvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlc3FsOjU0MzIvJFBPU1RHUkVTX0RCP3NzbG1vZGU9ZGlzYWJsZScKICBESVJFQ1RfVVJMOiAncG9zdGdyZXM6Ly8kU0VSVklDRV9VU0VSX1BPU1RHUkVTOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQHBvc3RncmVzcWw6NTQzMi8kUE9TVEdSRVNfREI/c3NsbW9kZT1kaXNhYmxlJwogIFJFRElTX0hPU1Q6IHJlZGlzCiAgUkVESVNfUE9SVDogNjM3OQogIFJFRElTX1RMU19ESVNBQkxFRDogdHJ1ZQogIENPT1JESU5BVE9SX0hPU1Q6IDEyNy4wLjAuMQogIENPT1JESU5BVE9SX1BPUlQ6IDkwMjAKICBXSElURUxJU1RFRF9FTUFJTFM6ICcnCiAgQURNSU5fRU1BSUxTOiAnJwogIERFRkFVTFRfT1JHX0VYRUNVVElPTl9DT05DVVJSRU5DWV9MSU1JVDogMzAwCiAgREVGQVVMVF9FTlZfRVhFQ1VUSU9OX0NPTkNVUlJFTkNZX0xJTUlUOiAxMDAKICBERVBMT1lfUkVHSVNUUllfSE9TVDogZG9ja2VyLmlvCiAgREVQTE9ZX1JFR0lTVFJZX05BTUVTUEFDRTogdHJpZ2dlcgogIFJFR0lTVFJZX0hPU1Q6ICcke0RFUExPWV9SRUdJU1RSWV9IT1NUfScKICBSRUdJU1RSWV9OQU1FU1BBQ0U6ICcke0RFUExPWV9SRUdJU1RSWV9OQU1FU1BBQ0V9JwogIEFVVEhfR0lUSFVCX0NMSUVOVF9JRDogJyR7QVVUSF9HSVRIVUJfQ0xJRU5UX0lEfScKICBBVVRIX0dJVEhVQl9DTElFTlRfU0VDUkVUOiAnJHtBVVRIX0dJVEhVQl9DTElFTlRfU0VDUkVUfScKICBSRVNFTkRfQVBJX0tFWTogJyR7UkVTRU5EX0FQSV9LRVl9JwogIEZST01fRU1BSUw6ICcke0ZST01fRU1BSUx9JwogIFJFUExZX1RPX0VNQUlMOiAnJHtSRVBMWV9UT19FTUFJTH0nCiAgTE9HSU5fT1JJR0lOOiAkU0VSVklDRV9VUkxfVFJJR0dFUl8zMDAwCiAgQVBQX09SSUdJTjogJFNFUlZJQ0VfVVJMX1RSSUdHRVJfMzAwMAogIERFVl9PVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQ6ICRTRVJWSUNFX1VSTF9UUklHR0VSXzMwMDAvb3RlbAogIE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVDogJFNFUlZJQ0VfVVJMX1RSSUdHRVJfMzAwMC9vdGVsCiAgRUxFQ1RSSUNfT1JJR0lOOiAnaHR0cDovL2VsZWN0cmljOjMwMDAnCnNlcnZpY2VzOgogIHRyaWdnZXI6CiAgICBpbWFnZTogJ2doY3IuaW8vdHJpZ2dlcmRvdGRldi90cmlnZ2VyLmRldjp2MycKICAgIGVudmlyb25tZW50OgogICAgICBTRVJWSUNFX1VSTF9UUklHR0VSXzMwMDA6ICcnCiAgICAgIFJFTUlYX0FQUF9QT1JUOiAzMDAwCiAgICAgIE5PREVfRU5WOiBwcm9kdWN0aW9uCiAgICAgIFJVTlRJTUVfUExBVEZPUk06IGRvY2tlci1jb21wb3NlCiAgICAgIFYzX0VOQUJMRUQ6IHRydWUKICAgICAgSU5URVJOQUxfT1RFTF9UUkFDRV9ESVNBQkxFRDogMQogICAgICBJTlRFUk5BTF9PVEVMX1RSQUNFX0xPR0dJTkdfRU5BQkxFRDogMAogICAgICBQT1NUR1JFU19VU0VSOiAkU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAkU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICBQT1NUR1JFU19EQjogJyR7UE9TVEdSRVNfREI6LXRyaWdnZXJ9JwogICAgICBNQUdJQ19MSU5LX1NFQ1JFVDogJFNFUlZJQ0VfUEFTU1dPUkRfMzJfTUFHSUMKICAgICAgU0VTU0lPTl9TRUNSRVQ6ICRTRVJWSUNFX1BBU1NXT1JEXzMyX1NFU1NJT04KICAgICAgRU5DUllQVElPTl9LRVk6ICRTRVJWSUNFX1BBU1NXT1JEXzMyX0VOQ1JZUFRJT04KICAgICAgUFJPVklERVJfU0VDUkVUOiAkU0VSVklDRV9QQVNTV09SRF82NF9QUk9WSURFUgogICAgICBDT09SRElOQVRPUl9TRUNSRVQ6ICRTRVJWSUNFX1BBU1NXT1JEXzY0X0NPT1JESU5BVE9SCiAgICAgIERBVEFCQVNFX0hPU1Q6ICdwb3N0Z3Jlc3FsOjU0MzInCiAgICAgIERBVEFCQVNFX1VSTDogJ3Bvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlc3FsOjU0MzIvJFBPU1RHUkVTX0RCP3NzbG1vZGU9ZGlzYWJsZScKICAgICAgRElSRUNUX1VSTDogJ3Bvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlc3FsOjU0MzIvJFBPU1RHUkVTX0RCP3NzbG1vZGU9ZGlzYWJsZScKICAgICAgUkVESVNfSE9TVDogcmVkaXMKICAgICAgUkVESVNfUE9SVDogNjM3OQogICAgICBSRURJU19UTFNfRElTQUJMRUQ6IHRydWUKICAgICAgQ09PUkRJTkFUT1JfSE9TVDogMTI3LjAuMC4xCiAgICAgIENPT1JESU5BVE9SX1BPUlQ6IDkwMjAKICAgICAgV0hJVEVMSVNURURfRU1BSUxTOiAnJwogICAgICBBRE1JTl9FTUFJTFM6ICcnCiAgICAgIERFRkFVTFRfT1JHX0VYRUNVVElPTl9DT05DVVJSRU5DWV9MSU1JVDogMzAwCiAgICAgIERFRkFVTFRfRU5WX0VYRUNVVElPTl9DT05DVVJSRU5DWV9MSU1JVDogMTAwCiAgICAgIERFUExPWV9SRUdJU1RSWV9IT1NUOiBkb2NrZXIuaW8KICAgICAgREVQTE9ZX1JFR0lTVFJZX05BTUVTUEFDRTogdHJpZ2dlcgogICAgICBSRUdJU1RSWV9IT1NUOiAnJHtERVBMT1lfUkVHSVNUUllfSE9TVH0nCiAgICAgIFJFR0lTVFJZX05BTUVTUEFDRTogJyR7REVQTE9ZX1JFR0lTVFJZX05BTUVTUEFDRX0nCiAgICAgIEFVVEhfR0lUSFVCX0NMSUVOVF9JRDogJyR7QVVUSF9HSVRIVUJfQ0xJRU5UX0lEfScKICAgICAgQVVUSF9HSVRIVUJfQ0xJRU5UX1NFQ1JFVDogJyR7QVVUSF9HSVRIVUJfQ0xJRU5UX1NFQ1JFVH0nCiAgICAgIFJFU0VORF9BUElfS0VZOiAnJHtSRVNFTkRfQVBJX0tFWX0nCiAgICAgIEZST01fRU1BSUw6ICcke0ZST01fRU1BSUx9JwogICAgICBSRVBMWV9UT19FTUFJTDogJyR7UkVQTFlfVE9fRU1BSUx9JwogICAgICBMT0dJTl9PUklHSU46ICRTRVJWSUNFX1VSTF9UUklHR0VSXzMwMDAKICAgICAgQVBQX09SSUdJTjogJFNFUlZJQ0VfVVJMX1RSSUdHRVJfMzAwMAogICAgICBERVZfT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UOiAkU0VSVklDRV9VUkxfVFJJR0dFUl8zMDAwL290ZWwKICAgICAgT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UOiAkU0VSVklDRV9VUkxfVFJJR0dFUl8zMDAwL290ZWwKICAgICAgRUxFQ1RSSUNfT1JJR0lOOiAnaHR0cDovL2VsZWN0cmljOjMwMDAnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIGVsZWN0cmljOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogInRpbWVvdXQgMTBzIGJhc2ggLWMgJzo+IC9kZXYvdGNwLzEyNy4wLjAuMS8zMDAwJyB8fCBleGl0IDEiCiAgICAgIGludGVydmFsOiAxMHMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogNQogIGVsZWN0cmljOgogICAgaW1hZ2U6IGVsZWN0cmljc3FsL2VsZWN0cmljCiAgICBlbnZpcm9ubWVudDoKICAgICAgUkVNSVhfQVBQX1BPUlQ6IDMwMDAKICAgICAgTk9ERV9FTlY6IHByb2R1Y3Rpb24KICAgICAgUlVOVElNRV9QTEFURk9STTogZG9ja2VyLWNvbXBvc2UKICAgICAgVjNfRU5BQkxFRDogdHJ1ZQogICAgICBJTlRFUk5BTF9PVEVMX1RSQUNFX0RJU0FCTEVEOiAxCiAgICAgIElOVEVSTkFMX09URUxfVFJBQ0VfTE9HR0lOR19FTkFCTEVEOiAwCiAgICAgIFBPU1RHUkVTX1VTRVI6ICRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6ICRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIFBPU1RHUkVTX0RCOiAnJHtQT1NUR1JFU19EQjotdHJpZ2dlcn0nCiAgICAgIE1BR0lDX0xJTktfU0VDUkVUOiAkU0VSVklDRV9QQVNTV09SRF8zMl9NQUdJQwogICAgICBTRVNTSU9OX1NFQ1JFVDogJFNFUlZJQ0VfUEFTU1dPUkRfMzJfU0VTU0lPTgogICAgICBFTkNSWVBUSU9OX0tFWTogJFNFUlZJQ0VfUEFTU1dPUkRfMzJfRU5DUllQVElPTgogICAgICBQUk9WSURFUl9TRUNSRVQ6ICRTRVJWSUNFX1BBU1NXT1JEXzY0X1BST1ZJREVSCiAgICAgIENPT1JESU5BVE9SX1NFQ1JFVDogJFNFUlZJQ0VfUEFTU1dPUkRfNjRfQ09PUkRJTkFUT1IKICAgICAgREFUQUJBU0VfSE9TVDogJ3Bvc3RncmVzcWw6NTQzMicKICAgICAgREFUQUJBU0VfVVJMOiAncG9zdGdyZXM6Ly8kU0VSVklDRV9VU0VSX1BPU1RHUkVTOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQHBvc3RncmVzcWw6NTQzMi8kUE9TVEdSRVNfREI/c3NsbW9kZT1kaXNhYmxlJwogICAgICBESVJFQ1RfVVJMOiAncG9zdGdyZXM6Ly8kU0VSVklDRV9VU0VSX1BPU1RHUkVTOiRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTQHBvc3RncmVzcWw6NTQzMi8kUE9TVEdSRVNfREI/c3NsbW9kZT1kaXNhYmxlJwogICAgICBSRURJU19IT1NUOiByZWRpcwogICAgICBSRURJU19QT1JUOiA2Mzc5CiAgICAgIFJFRElTX1RMU19ESVNBQkxFRDogdHJ1ZQogICAgICBDT09SRElOQVRPUl9IT1NUOiAxMjcuMC4wLjEKICAgICAgQ09PUkRJTkFUT1JfUE9SVDogOTAyMAogICAgICBXSElURUxJU1RFRF9FTUFJTFM6ICcnCiAgICAgIEFETUlOX0VNQUlMUzogJycKICAgICAgREVGQVVMVF9PUkdfRVhFQ1VUSU9OX0NPTkNVUlJFTkNZX0xJTUlUOiAzMDAKICAgICAgREVGQVVMVF9FTlZfRVhFQ1VUSU9OX0NPTkNVUlJFTkNZX0xJTUlUOiAxMDAKICAgICAgREVQTE9ZX1JFR0lTVFJZX0hPU1Q6IGRvY2tlci5pbwogICAgICBERVBMT1lfUkVHSVNUUllfTkFNRVNQQUNFOiB0cmlnZ2VyCiAgICAgIFJFR0lTVFJZX0hPU1Q6ICcke0RFUExPWV9SRUdJU1RSWV9IT1NUfScKICAgICAgUkVHSVNUUllfTkFNRVNQQUNFOiAnJHtERVBMT1lfUkVHSVNUUllfTkFNRVNQQUNFfScKICAgICAgQVVUSF9HSVRIVUJfQ0xJRU5UX0lEOiAnJHtBVVRIX0dJVEhVQl9DTElFTlRfSUR9JwogICAgICBBVVRIX0dJVEhVQl9DTElFTlRfU0VDUkVUOiAnJHtBVVRIX0dJVEhVQl9DTElFTlRfU0VDUkVUfScKICAgICAgUkVTRU5EX0FQSV9LRVk6ICcke1JFU0VORF9BUElfS0VZfScKICAgICAgRlJPTV9FTUFJTDogJyR7RlJPTV9FTUFJTH0nCiAgICAgIFJFUExZX1RPX0VNQUlMOiAnJHtSRVBMWV9UT19FTUFJTH0nCiAgICAgIExPR0lOX09SSUdJTjogJFNFUlZJQ0VfVVJMX1RSSUdHRVJfMzAwMAogICAgICBBUFBfT1JJR0lOOiAkU0VSVklDRV9VUkxfVFJJR0dFUl8zMDAwCiAgICAgIERFVl9PVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQ6ICRTRVJWSUNFX1VSTF9UUklHR0VSXzMwMDAvb3RlbAogICAgICBPVEVMX0VYUE9SVEVSX09UTFBfRU5EUE9JTlQ6ICRTRVJWSUNFX1VSTF9UUklHR0VSXzMwMDAvb3RlbAogICAgICBFTEVDVFJJQ19PUklHSU46ICdodHRwOi8vZWxlY3RyaWM6MzAwMCcKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzcWw6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSBwd2QKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6NycKICAgIGVudmlyb25tZW50OgogICAgICAtIEFMTE9XX0VNUFRZX1BBU1NXT1JEPXllcwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdyZWRpcy1jbGkgLWggbG9jYWxob3N0IC1wIDYzNzkgcGluZycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3JlZGlzLWRhdGE6L2RhdGEnCiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICBSRU1JWF9BUFBfUE9SVDogMzAwMAogICAgICBOT0RFX0VOVjogcHJvZHVjdGlvbgogICAgICBSVU5USU1FX1BMQVRGT1JNOiBkb2NrZXItY29tcG9zZQogICAgICBWM19FTkFCTEVEOiB0cnVlCiAgICAgIElOVEVSTkFMX09URUxfVFJBQ0VfRElTQUJMRUQ6IDEKICAgICAgSU5URVJOQUxfT1RFTF9UUkFDRV9MT0dHSU5HX0VOQUJMRUQ6IDAKICAgICAgUE9TVEdSRVNfVVNFUjogJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICBQT1NUR1JFU19QQVNTV09SRDogJFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgUE9TVEdSRVNfREI6ICcke1BPU1RHUkVTX0RCOi10cmlnZ2VyfScKICAgICAgTUFHSUNfTElOS19TRUNSRVQ6ICRTRVJWSUNFX1BBU1NXT1JEXzMyX01BR0lDCiAgICAgIFNFU1NJT05fU0VDUkVUOiAkU0VSVklDRV9QQVNTV09SRF8zMl9TRVNTSU9OCiAgICAgIEVOQ1JZUFRJT05fS0VZOiAkU0VSVklDRV9QQVNTV09SRF8zMl9FTkNSWVBUSU9OCiAgICAgIFBST1ZJREVSX1NFQ1JFVDogJFNFUlZJQ0VfUEFTU1dPUkRfNjRfUFJPVklERVIKICAgICAgQ09PUkRJTkFUT1JfU0VDUkVUOiAkU0VSVklDRV9QQVNTV09SRF82NF9DT09SRElOQVRPUgogICAgICBEQVRBQkFTRV9IT1NUOiAncG9zdGdyZXNxbDo1NDMyJwogICAgICBEQVRBQkFTRV9VUkw6ICdwb3N0Z3JlczovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcG9zdGdyZXNxbDo1NDMyLyRQT1NUR1JFU19EQj9zc2xtb2RlPWRpc2FibGUnCiAgICAgIERJUkVDVF9VUkw6ICdwb3N0Z3JlczovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcG9zdGdyZXNxbDo1NDMyLyRQT1NUR1JFU19EQj9zc2xtb2RlPWRpc2FibGUnCiAgICAgIFJFRElTX0hPU1Q6IHJlZGlzCiAgICAgIFJFRElTX1BPUlQ6IDYzNzkKICAgICAgUkVESVNfVExTX0RJU0FCTEVEOiB0cnVlCiAgICAgIENPT1JESU5BVE9SX0hPU1Q6IDEyNy4wLjAuMQogICAgICBDT09SRElOQVRPUl9QT1JUOiA5MDIwCiAgICAgIFdISVRFTElTVEVEX0VNQUlMUzogJycKICAgICAgQURNSU5fRU1BSUxTOiAnJwogICAgICBERUZBVUxUX09SR19FWEVDVVRJT05fQ09OQ1VSUkVOQ1lfTElNSVQ6IDMwMAogICAgICBERUZBVUxUX0VOVl9FWEVDVVRJT05fQ09OQ1VSUkVOQ1lfTElNSVQ6IDEwMAogICAgICBERVBMT1lfUkVHSVNUUllfSE9TVDogZG9ja2VyLmlvCiAgICAgIERFUExPWV9SRUdJU1RSWV9OQU1FU1BBQ0U6IHRyaWdnZXIKICAgICAgUkVHSVNUUllfSE9TVDogJyR7REVQTE9ZX1JFR0lTVFJZX0hPU1R9JwogICAgICBSRUdJU1RSWV9OQU1FU1BBQ0U6ICcke0RFUExPWV9SRUdJU1RSWV9OQU1FU1BBQ0V9JwogICAgICBBVVRIX0dJVEhVQl9DTElFTlRfSUQ6ICcke0FVVEhfR0lUSFVCX0NMSUVOVF9JRH0nCiAgICAgIEFVVEhfR0lUSFVCX0NMSUVOVF9TRUNSRVQ6ICcke0FVVEhfR0lUSFVCX0NMSUVOVF9TRUNSRVR9JwogICAgICBSRVNFTkRfQVBJX0tFWTogJyR7UkVTRU5EX0FQSV9LRVl9JwogICAgICBGUk9NX0VNQUlMOiAnJHtGUk9NX0VNQUlMfScKICAgICAgUkVQTFlfVE9fRU1BSUw6ICcke1JFUExZX1RPX0VNQUlMfScKICAgICAgTE9HSU5fT1JJR0lOOiAkU0VSVklDRV9VUkxfVFJJR0dFUl8zMDAwCiAgICAgIEFQUF9PUklHSU46ICRTRVJWSUNFX1VSTF9UUklHR0VSXzMwMDAKICAgICAgREVWX09URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVDogJFNFUlZJQ0VfVVJMX1RSSUdHRVJfMzAwMC9vdGVsCiAgICAgIE9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVDogJFNFUlZJQ0VfVVJMX1RSSUdHRVJfMzAwMC9vdGVsCiAgICAgIEVMRUNUUklDX09SSUdJTjogJ2h0dHA6Ly9lbGVjdHJpYzozMDAwJwogICAgY29tbWFuZDoKICAgICAgLSAnLWMnCiAgICAgIC0gd2FsX2xldmVsPWxvZ2ljYWwKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICBkb2NrZXItcHJvdmlkZXI6CiAgICBpbWFnZTogJ2doY3IuaW8vdHJpZ2dlcmRvdGRldi9wcm92aWRlci9kb2NrZXI6djMnCiAgICBwbGF0Zm9ybTogbGludXgvYW1kNjQKICAgIHZvbHVtZXM6CiAgICAgIC0gJy92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrJwogICAgdXNlcjogcm9vdAogICAgZGVwZW5kc19vbjoKICAgICAgdHJpZ2dlcjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgZW52aXJvbm1lbnQ6CiAgICAgIFJFTUlYX0FQUF9QT1JUOiAzMDAwCiAgICAgIE5PREVfRU5WOiBwcm9kdWN0aW9uCiAgICAgIFJVTlRJTUVfUExBVEZPUk06IGRvY2tlci1jb21wb3NlCiAgICAgIFYzX0VOQUJMRUQ6IHRydWUKICAgICAgSU5URVJOQUxfT1RFTF9UUkFDRV9ESVNBQkxFRDogMQogICAgICBJTlRFUk5BTF9PVEVMX1RSQUNFX0xPR0dJTkdfRU5BQkxFRDogMAogICAgICBQT1NUR1JFU19VU0VSOiAkU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAkU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICBQT1NUR1JFU19EQjogJyR7UE9TVEdSRVNfREI6LXRyaWdnZXJ9JwogICAgICBNQUdJQ19MSU5LX1NFQ1JFVDogJFNFUlZJQ0VfUEFTU1dPUkRfMzJfTUFHSUMKICAgICAgU0VTU0lPTl9TRUNSRVQ6ICRTRVJWSUNFX1BBU1NXT1JEXzMyX1NFU1NJT04KICAgICAgRU5DUllQVElPTl9LRVk6ICRTRVJWSUNFX1BBU1NXT1JEXzMyX0VOQ1JZUFRJT04KICAgICAgUFJPVklERVJfU0VDUkVUOiAkU0VSVklDRV9QQVNTV09SRF82NF9QUk9WSURFUgogICAgICBDT09SRElOQVRPUl9TRUNSRVQ6ICRTRVJWSUNFX1BBU1NXT1JEXzY0X0NPT1JESU5BVE9SCiAgICAgIERBVEFCQVNFX0hPU1Q6ICdwb3N0Z3Jlc3FsOjU0MzInCiAgICAgIERBVEFCQVNFX1VSTDogJ3Bvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlc3FsOjU0MzIvJFBPU1RHUkVTX0RCP3NzbG1vZGU9ZGlzYWJsZScKICAgICAgRElSRUNUX1VSTDogJ3Bvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlc3FsOjU0MzIvJFBPU1RHUkVTX0RCP3NzbG1vZGU9ZGlzYWJsZScKICAgICAgUkVESVNfSE9TVDogcmVkaXMKICAgICAgUkVESVNfUE9SVDogNjM3OQogICAgICBSRURJU19UTFNfRElTQUJMRUQ6IHRydWUKICAgICAgQ09PUkRJTkFUT1JfSE9TVDogMTI3LjAuMC4xCiAgICAgIENPT1JESU5BVE9SX1BPUlQ6IDkwMjAKICAgICAgV0hJVEVMSVNURURfRU1BSUxTOiAnJwogICAgICBBRE1JTl9FTUFJTFM6ICcnCiAgICAgIERFRkFVTFRfT1JHX0VYRUNVVElPTl9DT05DVVJSRU5DWV9MSU1JVDogMzAwCiAgICAgIERFRkFVTFRfRU5WX0VYRUNVVElPTl9DT05DVVJSRU5DWV9MSU1JVDogMTAwCiAgICAgIERFUExPWV9SRUdJU1RSWV9IT1NUOiBkb2NrZXIuaW8KICAgICAgREVQTE9ZX1JFR0lTVFJZX05BTUVTUEFDRTogdHJpZ2dlcgogICAgICBSRUdJU1RSWV9IT1NUOiAnJHtERVBMT1lfUkVHSVNUUllfSE9TVH0nCiAgICAgIFJFR0lTVFJZX05BTUVTUEFDRTogJyR7REVQTE9ZX1JFR0lTVFJZX05BTUVTUEFDRX0nCiAgICAgIEFVVEhfR0lUSFVCX0NMSUVOVF9JRDogJyR7QVVUSF9HSVRIVUJfQ0xJRU5UX0lEfScKICAgICAgQVVUSF9HSVRIVUJfQ0xJRU5UX1NFQ1JFVDogJyR7QVVUSF9HSVRIVUJfQ0xJRU5UX1NFQ1JFVH0nCiAgICAgIFJFU0VORF9BUElfS0VZOiAnJHtSRVNFTkRfQVBJX0tFWX0nCiAgICAgIEZST01fRU1BSUw6ICcke0ZST01fRU1BSUx9JwogICAgICBSRVBMWV9UT19FTUFJTDogJyR7UkVQTFlfVE9fRU1BSUx9JwogICAgICBMT0dJTl9PUklHSU46ICRTRVJWSUNFX1VSTF9UUklHR0VSXzMwMDAKICAgICAgQVBQX09SSUdJTjogJFNFUlZJQ0VfVVJMX1RSSUdHRVJfMzAwMAogICAgICBERVZfT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UOiAkU0VSVklDRV9VUkxfVFJJR0dFUl8zMDAwL290ZWwKICAgICAgT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UOiAkU0VSVklDRV9VUkxfVFJJR0dFUl8zMDAwL290ZWwKICAgICAgRUxFQ1RSSUNfT1JJR0lOOiAnaHR0cDovL2VsZWN0cmljOjMwMDAnCiAgICAgIFBMQVRGT1JNX0hPU1Q6IHRyaWdnZXIKICAgICAgUExBVEZPUk1fV1NfUE9SVDogMzAwMAogICAgICBTRUNVUkVfQ09OTkVDVElPTjogJ2ZhbHNlJwogICAgICBQTEFURk9STV9TRUNSRVQ6ICRTRVJWSUNFX1BBU1NXT1JEXzY0X1BST1ZJREVSCiAgICAgIEhUVFBfU0VSVkVSX1BPUlQ6IDkwMjAKICBjb29yZGluYXRvcjoKICAgIGltYWdlOiAnZ2hjci5pby90cmlnZ2VyZG90ZGV2L2Nvb3JkaW5hdG9yOnYzJwogICAgcGxhdGZvcm06IGxpbnV4L2FtZDY0CiAgICB2b2x1bWVzOgogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaycKICAgIHVzZXI6IHJvb3QKICAgIHBvcnRzOgogICAgICAtICcxMjcuMC4wLjE6OTAyMDo5MDIwJwogICAgZGVwZW5kc19vbjoKICAgICAgdHJpZ2dlcjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgZW52aXJvbm1lbnQ6CiAgICAgIFJFTUlYX0FQUF9QT1JUOiAzMDAwCiAgICAgIE5PREVfRU5WOiBwcm9kdWN0aW9uCiAgICAgIFJVTlRJTUVfUExBVEZPUk06IGRvY2tlci1jb21wb3NlCiAgICAgIFYzX0VOQUJMRUQ6IHRydWUKICAgICAgSU5URVJOQUxfT1RFTF9UUkFDRV9ESVNBQkxFRDogMQogICAgICBJTlRFUk5BTF9PVEVMX1RSQUNFX0xPR0dJTkdfRU5BQkxFRDogMAogICAgICBQT1NUR1JFU19VU0VSOiAkU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAkU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICBQT1NUR1JFU19EQjogJyR7UE9TVEdSRVNfREI6LXRyaWdnZXJ9JwogICAgICBNQUdJQ19MSU5LX1NFQ1JFVDogJFNFUlZJQ0VfUEFTU1dPUkRfMzJfTUFHSUMKICAgICAgU0VTU0lPTl9TRUNSRVQ6ICRTRVJWSUNFX1BBU1NXT1JEXzMyX1NFU1NJT04KICAgICAgRU5DUllQVElPTl9LRVk6ICRTRVJWSUNFX1BBU1NXT1JEXzMyX0VOQ1JZUFRJT04KICAgICAgUFJPVklERVJfU0VDUkVUOiAkU0VSVklDRV9QQVNTV09SRF82NF9QUk9WSURFUgogICAgICBDT09SRElOQVRPUl9TRUNSRVQ6ICRTRVJWSUNFX1BBU1NXT1JEXzY0X0NPT1JESU5BVE9SCiAgICAgIERBVEFCQVNFX0hPU1Q6ICdwb3N0Z3Jlc3FsOjU0MzInCiAgICAgIERBVEFCQVNFX1VSTDogJ3Bvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlc3FsOjU0MzIvJFBPU1RHUkVTX0RCP3NzbG1vZGU9ZGlzYWJsZScKICAgICAgRElSRUNUX1VSTDogJ3Bvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlc3FsOjU0MzIvJFBPU1RHUkVTX0RCP3NzbG1vZGU9ZGlzYWJsZScKICAgICAgUkVESVNfSE9TVDogcmVkaXMKICAgICAgUkVESVNfUE9SVDogNjM3OQogICAgICBSRURJU19UTFNfRElTQUJMRUQ6IHRydWUKICAgICAgQ09PUkRJTkFUT1JfSE9TVDogMTI3LjAuMC4xCiAgICAgIENPT1JESU5BVE9SX1BPUlQ6IDkwMjAKICAgICAgV0hJVEVMSVNURURfRU1BSUxTOiAnJwogICAgICBBRE1JTl9FTUFJTFM6ICcnCiAgICAgIERFRkFVTFRfT1JHX0VYRUNVVElPTl9DT05DVVJSRU5DWV9MSU1JVDogMzAwCiAgICAgIERFRkFVTFRfRU5WX0VYRUNVVElPTl9DT05DVVJSRU5DWV9MSU1JVDogMTAwCiAgICAgIERFUExPWV9SRUdJU1RSWV9IT1NUOiBkb2NrZXIuaW8KICAgICAgREVQTE9ZX1JFR0lTVFJZX05BTUVTUEFDRTogdHJpZ2dlcgogICAgICBSRUdJU1RSWV9IT1NUOiAnJHtERVBMT1lfUkVHSVNUUllfSE9TVH0nCiAgICAgIFJFR0lTVFJZX05BTUVTUEFDRTogJyR7REVQTE9ZX1JFR0lTVFJZX05BTUVTUEFDRX0nCiAgICAgIEFVVEhfR0lUSFVCX0NMSUVOVF9JRDogJyR7QVVUSF9HSVRIVUJfQ0xJRU5UX0lEfScKICAgICAgQVVUSF9HSVRIVUJfQ0xJRU5UX1NFQ1JFVDogJyR7QVVUSF9HSVRIVUJfQ0xJRU5UX1NFQ1JFVH0nCiAgICAgIFJFU0VORF9BUElfS0VZOiAnJHtSRVNFTkRfQVBJX0tFWX0nCiAgICAgIEZST01fRU1BSUw6ICcke0ZST01fRU1BSUx9JwogICAgICBSRVBMWV9UT19FTUFJTDogJyR7UkVQTFlfVE9fRU1BSUx9JwogICAgICBMT0dJTl9PUklHSU46ICRTRVJWSUNFX1VSTF9UUklHR0VSXzMwMDAKICAgICAgQVBQX09SSUdJTjogJFNFUlZJQ0VfVVJMX1RSSUdHRVJfMzAwMAogICAgICBERVZfT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UOiAkU0VSVklDRV9VUkxfVFJJR0dFUl8zMDAwL290ZWwKICAgICAgT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UOiAkU0VSVklDRV9VUkxfVFJJR0dFUl8zMDAwL290ZWwKICAgICAgRUxFQ1RSSUNfT1JJR0lOOiAnaHR0cDovL2VsZWN0cmljOjMwMDAnCiAgICAgIFBMQVRGT1JNX0hPU1Q6IHRyaWdnZXIKICAgICAgUExBVEZPUk1fV1NfUE9SVDogMzAwMAogICAgICBTRUNVUkVfQ09OTkVDVElPTjogJ2ZhbHNlJwogICAgICBQTEFURk9STV9TRUNSRVQ6ICRTRVJWSUNFX1BBU1NXT1JEXzY0X0NPT1JESU5BVE9SCiAgICAgIEhUVFBfU0VSVkVSX1BPUlQ6IDkwMjAKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSBwd2QK",
+ "tags": [
+ "trigger.dev",
+ "background jobs",
+ "typescript",
+ "trigger",
+ "jobs",
+ "cron",
+ "scheduler"
+ ],
+ "logo": "svgs/trigger.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "triliumnext": {
+ "documentation": "https://github.com/TriliumNext/Trilium?utm_source=coolify.io",
+ "slogan": "Build your personal knowledge base with TriliumNext Notes.",
+ "compose": "c2VydmljZXM6CiAgdHJpbGl1bW5leHQ6CiAgICBpbWFnZTogJ2doY3IuaW8vdHJpbGl1bW5leHQvdHJpbGl1bTpzdGFibGUnCiAgICBwbGF0Zm9ybTogbGludXgvYW1kNjQKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1RSSUxJVU1ORVhUXzgwODAKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Jlcmxpbn0nCiAgICB2b2x1bWVzOgogICAgICAtICd0cmlsaXVtbmV4dF9kYXRhOi9ob21lL25vZGUvdHJpbGl1bS1kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC0tcXVpZXQgLS10cmllcz0xIC0tc3BpZGVyIGh0dHA6Ly8xMjcuMC4wLjE6ODA4MC9hcGkvaGVhbHRoLWNoZWNrIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "self-hosted",
+ "notes",
+ "todo",
+ "organize",
+ "markdown",
+ "wiki"
+ ],
+ "logo": "svgs/triliumnext.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "typesense": {
+ "documentation": "https://typesense.org/docs?utm_source=coolify.io",
+ "slogan": "Cutting-edge, in-memory search engine for mere mortals. Knowledge of rocket science optional.",
+ "compose": "c2VydmljZXM6CiAgdHlwZXNlbnNlOgogICAgaW1hZ2U6ICd0eXBlc2Vuc2UvdHlwZXNlbnNlOjI4LjAnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9UWVBFU0VOU0VfODEwOAogICAgICAtICdUWVBFU0VOU0VfRU5BQkxFX0NPUlM9JHtUWVBFU0VOU0VfRU5BQkxFX0NPUlM6LXRydWV9JwogICAgICAtIFRZUEVTRU5TRV9EQVRBX0RJUj0vZGF0YQogICAgICAtICdUWVBFU0VOU0VfQVBJX0tFWT0ke1RZUEVTRU5TRV9BUElfS0VZOj99JwogICAgdm9sdW1lczoKICAgICAgLSAndHlwZXNlbnNlX2RhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gYmFzaAogICAgICAgIC0gJy1jJwogICAgICAgIC0gJ2V4ZWMgMzw+L2Rldi90Y3AvbG9jYWxob3N0LzgxMDggJiYgcHJpbnRmICcnR0VUIC9oZWFsdGggSFRUUC8xLjFcclxuQ29ubmVjdGlvbjogY2xvc2VcclxuXHJcbicnID4mMyAmJiBoZWFkIC1uMSA8JjMgfCBncmVwICcnMjAwJycgJiYgZXhlYyAzPiYtJwogICAgICByZXRyaWVzOiA1CiAgICAgIHRpbWVvdXQ6IDdzCg==",
+ "tags": [
+ "search",
+ "search-engine",
+ "search-api",
+ "elasticsearch-alternative"
+ ],
+ "logo": "svgs/typesense.png",
+ "minversion": "0.0.0",
+ "port": "8108"
+ },
+ "umami": {
+ "documentation": "https://umami.is?utm_source=coolify.io",
+ "slogan": "Umami is web analytics platform which provides insights into visitor behavior without compromising user privacy.",
+ "compose": "c2VydmljZXM6CiAgdW1hbWk6CiAgICBpbWFnZTogJ2doY3IuaW8vdW1hbWktc29mdHdhcmUvdW1hbWk6cG9zdGdyZXNxbC1sYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9VTUFNSV8zMDAwCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcG9zdGdyZXNxbDo1NDMyLyRQT1NUR1JFU19EQicKICAgICAgLSBEQVRBQkFTRV9UWVBFPXBvc3RncmVzCiAgICAgIC0gQVBQX1NFQ1JFVD0kU0VSVklDRV9QQVNTV09SRF82NF9VTUFNSQogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjMwMDAvYXBpL2hlYXJ0YmVhdCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBvc3RncmVzcWw6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi11bWFtaX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "analytics",
+ "insights",
+ "privacy"
+ ],
+ "logo": "svgs/umami.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "unleash-with-postgresql": {
+ "documentation": "https://docs.getunleash.io?utm_source=coolify.io",
+ "slogan": "Open source feature flag management for enterprises.",
+ "compose": "c2VydmljZXM6CiAgdW5sZWFzaDoKICAgIGltYWdlOiAndW5sZWFzaG9yZy91bmxlYXNoLXNlcnZlcjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9VTkxFQVNIXzQyNDIKICAgICAgLSAnVU5MRUFTSF9VUkw9JHtTRVJWSUNFX1VSTF9VTkxFQVNIfScKICAgICAgLSAnVU5MRUFTSF9ERUZBVUxUX0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9VTkxFQVNIfScKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlcy9kYicKICAgICAgLSBEQVRBQkFTRV9TU0w9ZmFsc2UKICAgICAgLSBMT0dfTEVWRUw9d2FybgogICAgICAtICdJTklUX0ZST05URU5EX0FQSV9UT0tFTlM9ZGVmYXVsdDpkZWZhdWx0OmRldmVsb3BtZW50LnVubGVhc2gtaW5zZWN1cmUtZnJvbnRlbmQtYXBpLXRva2VuJwogICAgICAtICdJTklUX0NMSUVOVF9BUElfVE9LRU5TPWRlZmF1bHQ6ZGV2ZWxvcG1lbnQudW5sZWFzaC1pbnNlY3VyZS1hcGktdG9rZW4nCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgY29tbWFuZDoKICAgICAgLSBub2RlCiAgICAgIC0gaW5kZXguanMKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiAnd2dldCAtLW5vLXZlcmJvc2UgLS10cmllcz0xIC0tc3BpZGVyIGh0dHA6Ly8xMjcuMC4wLjE6NDI0Mi9oZWFsdGggfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMXMKICAgICAgdGltZW91dDogMW0KICAgICAgcmV0cmllczogNQogICAgICBzdGFydF9wZXJpb2Q6IDE1cwogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX0RCPWRiCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcGdfaXNyZWFkeQogICAgICAgIC0gJy0tdXNlcm5hbWU9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUycKICAgICAgICAtICctLWhvc3Q9MTI3LjAuMC4xJwogICAgICAgIC0gJy0tcG9ydD01NDMyJwogICAgICAgIC0gJy0tZGJuYW1lPWRiJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMW0KICAgICAgcmV0cmllczogNQogICAgICBzdGFydF9wZXJpb2Q6IDEwcwo=",
+ "tags": [
+ "unleash",
+ "feature flags",
+ "feature toggles",
+ "ab testing",
+ "open source"
+ ],
+ "logo": "svgs/unleash.svg",
+ "minversion": "0.0.0",
+ "port": "4242"
+ },
+ "unleash-without-database": {
+ "documentation": "https://docs.getunleash.io?utm_source=coolify.io",
+ "slogan": "Open source feature flag management for enterprises.",
+ "compose": "c2VydmljZXM6CiAgdW5sZWFzaDoKICAgIGltYWdlOiAndW5sZWFzaG9yZy91bmxlYXNoLXNlcnZlcjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9VTkxFQVNIXzQyNDIKICAgICAgLSAnVU5MRUFTSF9VUkw9JHtTRVJWSUNFX1VSTF9VTkxFQVNIfScKICAgICAgLSAnVU5MRUFTSF9ERUZBVUxUX0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9VTkxFQVNIfScKICAgICAgLSAnREFUQUJBU0VfVVJMPSR7REFUQUJBU0VfVVJMfScKICAgICAgLSAnREFUQUJBU0VfU1NMPSR7REFUQUJBU0VfU1NMOi1mYWxzZX0nCiAgICAgIC0gTE9HX0xFVkVMPXdhcm4KICAgICAgLSAnSU5JVF9GUk9OVEVORF9BUElfVE9LRU5TPWRlZmF1bHQ6ZGVmYXVsdDpkZXZlbG9wbWVudC51bmxlYXNoLWluc2VjdXJlLWZyb250ZW5kLWFwaS10b2tlbicKICAgICAgLSAnSU5JVF9DTElFTlRfQVBJX1RPS0VOUz1kZWZhdWx0OmRldmVsb3BtZW50LnVubGVhc2gtaW5zZWN1cmUtYXBpLXRva2VuJwogICAgY29tbWFuZDoKICAgICAgLSBub2RlCiAgICAgIC0gaW5kZXguanMKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiAnd2dldCAtLW5vLXZlcmJvc2UgLS10cmllcz0xIC0tc3BpZGVyIGh0dHA6Ly8xMjcuMC4wLjE6NDI0Mi9oZWFsdGggfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMXMKICAgICAgdGltZW91dDogMW0KICAgICAgcmV0cmllczogNQogICAgICBzdGFydF9wZXJpb2Q6IDE1cwo=",
+ "tags": [
+ "unleash",
+ "feature flags",
+ "feature toggles",
+ "ab testing",
+ "open source"
+ ],
+ "logo": "svgs/unleash.svg",
+ "minversion": "0.0.0",
+ "port": "4242"
+ },
+ "unsend": {
+ "documentation": "https://docs.unsend.dev/get-started/self-hosting?utm_source=coolify.io",
+ "slogan": "Unsend is an open-source alternative to Resend, Sendgrid, Mailgun and Postmark etc.",
+ "compose": "c2VydmljZXM6CiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1NFUlZJQ0VfREJfUE9TVEdSRVM6LXVuc2VuZH0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgICB2b2x1bWVzOgogICAgICAtICd1bnNlbmQtcG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjcnCiAgICB2b2x1bWVzOgogICAgICAtICd1bnNlbmQtcmVkaXMtZGF0YTovZGF0YScKICAgIGNvbW1hbmQ6CiAgICAgIC0gcmVkaXMtc2VydmVyCiAgICAgIC0gJy0tbWF4bWVtb3J5LXBvbGljeScKICAgICAgLSBub2V2aWN0aW9uCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSBQSU5HCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMjAKICB1bnNlbmQ6CiAgICBpbWFnZTogJ3Vuc2VuZC91bnNlbmQ6bGF0ZXN0JwogICAgZXhwb3NlOgogICAgICAtIDMwMDAKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1VOU0VORF8zMDAwCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3Jlc3FsOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1NFUlZJQ0VfREJfUE9TVEdSRVM6LXVuc2VuZH0nCiAgICAgIC0gJ05FWFRBVVRIX1VSTD0ke1NFUlZJQ0VfVVJMX1VOU0VORH0nCiAgICAgIC0gJ05FWFRBVVRIX1NFQ1JFVD0ke1NFUlZJQ0VfQkFTRTY0XzY0X05FWFRBVVRIU0VDUkVUfScKICAgICAgLSAnQVdTX0FDQ0VTU19LRVk9JHtBV1NfQUNDRVNTX0tFWTo/fScKICAgICAgLSAnQVdTX1NFQ1JFVF9LRVk9JHtBV1NfU0VDUkVUX0tFWTo/fScKICAgICAgLSAnQVdTX0RFRkFVTFRfUkVHSU9OPSR7QVdTX0RFRkFVTFRfUkVHSU9OOj99JwogICAgICAtICdHSVRIVUJfSUQ9JHtHSVRIVUJfSUR9JwogICAgICAtICdHSVRIVUJfU0VDUkVUPSR7R0lUSFVCX1NFQ1JFVH0nCiAgICAgIC0gJ1JFRElTX1VSTD1yZWRpczovL3JlZGlzOjYzNzknCiAgICAgIC0gJ05FWFRfUFVCTElDX0lTX0NMT1VEPSR7TkVYVF9QVUJMSUNfSVNfQ0xPVUQ6LWZhbHNlfScKICAgICAgLSAnQVBJX1JBVEVfTElNSVQ9JHtBUElfUkFURV9MSU1JVDotMX0nCiAgICAgIC0gSE9TVE5BTUU9MC4wLjAuMAogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnd2dldCAtcU8tIGh0dHA6Ly91bnNlbmQ6MzAwMCB8fCBleGl0IDEnCiAgICAgIGludGVydmFsOiA1cwogICAgICByZXRyaWVzOiAxMAogICAgICB0aW1lb3V0OiAycwo=",
+ "tags": [
+ "resend",
+ "mailer",
+ "marketing emails",
+ "transaction emails",
+ "self-hosting",
+ "postmark"
+ ],
+ "logo": "svgs/unsend.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "unstructured": {
+ "documentation": "https://github.com/Unstructured-IO/unstructured-api?tab=readme-ov-file#--general-pre-processing-pipeline-for-documents?utm_source=coolify.io",
+ "slogan": "Unstructured provides a platform and tools to ingest and process unstructured documents for Retrieval Augmented Generation (RAG) and model fine-tuning.",
+ "compose": "c2VydmljZXM6CiAgdW5zdHJ1Y3R1cmVkOgogICAgaW1hZ2U6ICdkb3dubG9hZHMudW5zdHJ1Y3R1cmVkLmlvL3Vuc3RydWN0dXJlZC1pby91bnN0cnVjdHVyZWQtYXBpOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1VOU1RSVUNUVVJFRF84MDAwCiAgICAgIC0gJ1VOU1RSVUNUVVJFRF9BUElfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9BUElLRVl9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHdnZXQKICAgICAgICAtICctcU8tJwogICAgICAgIC0gJ2h0dHA6Ly8wLjAuMC4wOjgwMDAvaGVhbHRoY2hlY2snCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAzMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "workflow",
+ "orchestration",
+ "data-pipeline",
+ "python",
+ "data",
+ "machine-learning",
+ "data-science",
+ "nlp",
+ "unstructured",
+ "ocr",
+ "data-extraction"
+ ],
+ "logo": "svgs/unstructured.png",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "uptime-kuma": {
+ "documentation": "https://github.com/louislam/uptime-kuma?tab=readme-ov-file?utm_source=coolify.io",
+ "slogan": "Uptime Kuma is a monitoring tool for tracking the status and performance of your applications in real-time.",
+ "compose": "c2VydmljZXM6CiAgdXB0aW1lLWt1bWE6CiAgICBpbWFnZTogJ2xvdWlzbGFtL3VwdGltZS1rdW1hOjEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9VUFRJTUVLVU1BXzMwMDEKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3VwdGltZS1rdW1hOi9hcHAvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSBleHRyYS9oZWFsdGhjaGVjawogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "tags": [
+ "monitoring",
+ "status",
+ "performance",
+ "web",
+ "services",
+ "applications",
+ "real-time"
+ ],
+ "logo": "svgs/uptime-kuma.svg",
+ "minversion": "0.0.0",
+ "port": "3001"
+ },
+ "vaultwarden": {
+ "documentation": "https://github.com/dani-garcia/vaultwarden?utm_source=coolify.io",
+ "slogan": "Vaultwarden is a password manager that allows you to securely store and manage your passwords.",
+ "compose": "c2VydmljZXM6CiAgdmF1bHR3YXJkZW46CiAgICBpbWFnZTogJ3ZhdWx0d2FyZGVuL3NlcnZlcjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9WQVVMVFdBUkRFTgogICAgICAtICdET01BSU49JHtTRVJWSUNFX1VSTF9WQVVMVFdBUkRFTn0nCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD0ke1ZBVUxUV0FSREVOX0RCX1VSTDotZGF0YS9kYi5zcWxpdGUzfScKICAgICAgLSAnU0lHTlVQU19BTExPV0VEPSR7U0lHTlVQX0FMTE9XRUQ6LXRydWV9JwogICAgICAtICdBRE1JTl9UT0tFTj0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfQURNSU59JwogICAgICAtIElQX0hFQURFUj1YLUZvcndhcmRlZC1Gb3IKICAgICAgLSAnUFVTSF9FTkFCTEVEPSR7UFVTSF9FTkFCTEVEOi1mYWxzZX0nCiAgICAgIC0gJ1BVU0hfSU5TVEFMTEFUSU9OX0lEPSR7UFVTSF9TRVJWSUNFX0lEfScKICAgICAgLSAnUFVTSF9JTlNUQUxMQVRJT05fS0VZPSR7UFVTSF9TRVJWSUNFX0tFWX0nCiAgICB2b2x1bWVzOgogICAgICAtICd2YXVsdHdhcmRlbi1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "tags": [
+ "password manager",
+ "security"
+ ],
+ "logo": "svgs/bitwarden.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "vert": {
+ "documentation": "https://github.com/VERT-sh/VERT?utm_source=coolify.io",
+ "slogan": "The next-generation file converter. Open source, fully local and free forever.",
+ "compose": "c2VydmljZXM6CiAgdmVydDoKICAgIGltYWdlOiAnZ2hjci5pby92ZXJ0LXNoL3ZlcnQ6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfVkVSVF84MAogICAgICAtICdQVUJfVkVSVF9VUkw9JHtTRVJWSUNFX1VSTF9WRVJUXzgwfScKICAgICAgLSAnUFVCX0hPU1ROQU1FPSR7U0VSVklDRV9VUkxfVkVSVF84MH0nCiAgICAgIC0gUFVCX1BPUlQ9ODAKICAgICAgLSBQVUJfRU5WPXByb2R1Y3Rpb24K",
+ "tags": [
+ "converter",
+ "file",
+ "documents",
+ "files",
+ "ffmpeg",
+ "wasm"
+ ],
+ "logo": "svgs/vert.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "vikunja-with-postgresql": {
+ "documentation": "https://vikunja.io?utm_source=coolify.io",
+ "slogan": "The open-source, self-hostable to-do app. Organize everything, on all platforms.",
+ "compose": "c2VydmljZXM6CiAgdmlrdW5qYToKICAgIGltYWdlOiB2aWt1bmphL3Zpa3VuamEKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1ZJS1VOSkEKICAgICAgLSBWSUtVTkpBX1NFUlZJQ0VfUFVCTElDVVJMPSRTRVJWSUNFX1VSTF9WSUtVTkpBCiAgICAgIC0gVklLVU5KQV9TRVJWSUNFX0pXVFNFQ1JFVD0kU0VSVklDRV9QQVNTV09SRF9KV1RTRUNSRVQKICAgICAgLSBWSUtVTkpBX1NFUlZJQ0VfRU5BQkxFUkVHSVNUUkFUSU9OPXRydWUKICAgICAgLSBWSUtVTkpBX0RBVEFCQVNFX1RZUEU9cG9zdGdyZXMKICAgICAgLSBWSUtVTkpBX0RBVEFCQVNFX0hPU1Q9cG9zdGdyZXNxbAogICAgICAtICdWSUtVTkpBX0RBVEFCQVNFX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU1FMfScKICAgICAgLSAnVklLVU5KQV9EQVRBQkFTRV9VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTUUx9JwogICAgICAtICdWSUtVTkpBX0RBVEFCQVNFX0RBVEFCQVNFPSR7UE9TVEdSRVNRTF9EQVRBQkFTRX0nCiAgICB2b2x1bWVzOgogICAgICAtICd2aWt1bmphLWRhdGE6L2FwcC92aWt1bmphLycKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzcWw6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICd2aWt1bmphLXBvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTUUxfREFUQUJBU0V9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "productivity",
+ "todo"
+ ],
+ "logo": "svgs/vikunja.svg",
+ "minversion": "0.0.0",
+ "port": "3456"
+ },
+ "vikunja": {
+ "documentation": "https://vikunja.io?utm_source=coolify.io",
+ "slogan": "The open-source, self-hostable to-do app. Organize everything, on all platforms.",
+ "compose": "c2VydmljZXM6CiAgdmlrdW5qYToKICAgIGltYWdlOiB2aWt1bmphL3Zpa3VuamEKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1ZJS1VOSkEKICAgICAgLSBWSUtVTkpBX1NFUlZJQ0VfUFVCTElDVVJMPSRTRVJWSUNFX1VSTF9WSUtVTkpBCiAgICAgIC0gVklLVU5KQV9TRVJWSUNFX0pXVFNFQ1JFVD0kU0VSVklDRV9QQVNTV09SRF9KV1RTRUNSRVQKICAgICAgLSBWSUtVTkpBX1NFUlZJQ0VfRU5BQkxFUkVHSVNUUkFUSU9OPXRydWUKICAgICAgLSBWSUtVTkpBX0RBVEFCQVNFX1BBVEg9L2RiL3Zpa3VuamEuZGIKICAgICAgLSBWSUtVTkpBX0RBVEFCQVNFX1RZUEU9c3FsaXRlCiAgICB2b2x1bWVzOgogICAgICAtICd2aWt1bmphLWRhdGE6L2FwcC92aWt1bmphLycKICAgICAgLSAndmlrdW5qYS1zcWxpdGUtZGF0YTovZGInCiAgICBkZXBlbmRzX29uOgogICAgICAtIGluaXQKICBpbml0OgogICAgaW1hZ2U6IGJ1c3lib3gKICAgIHJlc3RhcnQ6ICdubycKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Zpa3VuamEtc3FsaXRlLWRhdGE6L2RiJwogICAgY29tbWFuZDoKICAgICAgLSBzaAogICAgICAtICctYycKICAgICAgLSAndG91Y2ggL2RiL3Zpa3VuamEuZGIgJiYgY2hvd24gLVIgMTAwMCAvZGInCg==",
+ "tags": [
+ "productivity",
+ "todo"
+ ],
+ "logo": "svgs/vikunja.svg",
+ "minversion": "0.0.0",
+ "port": "3456"
+ },
+ "vvveb-with-mariadb": {
+ "documentation": "https://docs.vvveb.com?utm_source=coolify.io",
+ "slogan": "Powerful and easy to use cms to build websites, blogs or ecommerce stores.",
+ "compose": "c2VydmljZXM6CiAgdnZ2ZWI6CiAgICBpbWFnZTogJ3Z2dmViL3Z2dmViY21zOmxhdGVzdCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Z2dmViLWRhdGE6L3Zhci93d3cvaHRtbCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1ZWVkVCXzgwCiAgICAgIC0gREJfRU5HSU5FPW15c3FsaQogICAgICAtIERCX0hPU1Q9bWFyaWFkYgogICAgICAtICdEQl9VU0VSPSR7U0VSVklDRV9VU0VSX1ZWVkVCfScKICAgICAgLSAnREJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1ZWVkVCfScKICAgICAgLSAnREJfTkFNRT0ke01BUklBREJfREFUQUJBU0U6LXZ2dmVifScKICAgIGRlcGVuZHNfb246CiAgICAgIG1hcmlhZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMScKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxMAogIG1hcmlhZGI6CiAgICBpbWFnZTogJ21hcmlhZGI6MTEnCiAgICB2b2x1bWVzOgogICAgICAtICd2dnZlYi1tYXJpYWRiLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUk9PVH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TUFSSUFEQl9EQVRBQkFTRTotdnZ2ZWJ9JwogICAgICAtICdNWVNRTF9VU0VSPSR7U0VSVklDRV9VU0VSX1ZWVkVCfScKICAgICAgLSAnTVlTUUxfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1ZWVkVCfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBoZWFsdGhjaGVjay5zaAogICAgICAgIC0gJy0tY29ubmVjdCcKICAgICAgICAtICctLWlubm9kYl9pbml0aWFsaXplZCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "cms",
+ "blog",
+ "content",
+ "management",
+ "ecommerce",
+ "page-builder",
+ "nocode",
+ "mysql",
+ "sqlite",
+ "pgsql"
+ ],
+ "logo": "svgs/vvveb.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "vvveb-with-mysql": {
+ "documentation": "https://docs.vvveb.com?utm_source=coolify.io",
+ "slogan": "Powerful and easy to use cms to build websites, blogs or ecommerce stores.",
+ "compose": "c2VydmljZXM6CiAgdnZ2ZWI6CiAgICBpbWFnZTogJ3Z2dmViL3Z2dmViY21zOmxhdGVzdCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Z2dmViLWRhdGE6L3Zhci93d3cvaHRtbCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1ZWVkVCXzgwCiAgICAgIC0gREJfRU5HSU5FPW15c3FsaQogICAgICAtIERCX0hPU1Q9bXlzcWwKICAgICAgLSAnREJfVVNFUj0ke1NFUlZJQ0VfVVNFUl9WVlZFQn0nCiAgICAgIC0gJ0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9WVlZFQn0nCiAgICAgIC0gJ0RCX05BTUU9JHtNWVNRTF9EQVRBQkFTRTotdnZ2ZWJ9JwogICAgZGVwZW5kc19vbjoKICAgICAgbXlzcWw6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMScKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxMAogIG15c3FsOgogICAgaW1hZ2U6ICdteXNxbDo4LjQuMicKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Z2dmViLW15c3FsLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUk9PVH0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LXZ2dmVifScKICAgICAgLSAnTVlTUUxfVVNFUj0ke1NFUlZJQ0VfVVNFUl9WVlZFQn0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9WVlZFQn0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gbXlzcWxhZG1pbgogICAgICAgIC0gcGluZwogICAgICAgIC0gJy1oJwogICAgICAgIC0gMTI3LjAuMC4xCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "cms",
+ "blog",
+ "content",
+ "management",
+ "ecommerce",
+ "page-builder",
+ "nocode",
+ "mysql",
+ "sqlite",
+ "pgsql"
+ ],
+ "logo": "svgs/vvveb.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "vvveb": {
+ "documentation": "https://docs.vvveb.com?utm_source=coolify.io",
+ "slogan": "Powerful and easy to use cms to build websites, blogs or ecommerce stores.",
+ "compose": "c2VydmljZXM6CiAgdnZ2ZWI6CiAgICBpbWFnZTogJ3Z2dmViL3Z2dmViY21zOmxhdGVzdCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Z2dmViLWRhdGE6L3Zhci93d3cvaHRtbCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1ZWVkVCXzgwCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjEnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "cms",
+ "blog",
+ "content",
+ "management",
+ "ecommerce",
+ "page-builder",
+ "nocode",
+ "mysql",
+ "sqlite",
+ "pgsql"
+ ],
+ "logo": "svgs/vvveb.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "wakapi": {
+ "documentation": "https://wakapi.dev/?utm_source=coolify.io",
+ "slogan": "A minimalist, self-hosted WakaTime-compatible backend for coding statistics",
+ "compose": "c2VydmljZXM6CiAgd2FrYXBpOgogICAgaW1hZ2U6ICdnaGNyLmlvL211ZXR5L3dha2FwaTpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9XQUtBUElfMzAwMAogICAgICAtICdUWj0ke1RJTUVaT05FOi1FdXJvcGUvQmVybGlufScKICAgICAgLSAnV0FLQVBJX1NFUlZFUl9MSVNURU5fSVBWNj0iLSInCiAgICAgIC0gJ1dBS0FQSV9FTlY9JHtXQUtBUElfRU5WSVJPTk1FTlQ6LXByb2R1Y3Rpb259JwogICAgICAtICdXQUtBUElfU0VDVVJJVFlfUEFTU1dPUkRfU0FMVD0ke1NFUlZJQ0VfQkFTRTY0XzY0X1BBU1NXT1JEU0FMVH0nCiAgICAgIC0gJ1dBS0FQSV9TRUNVUklUWV9FWFBPU0VfTUVUUklDUz0ke1dBS0FQSV9TRUNVUklUWV9FWFBPU0VfTUVUUklDUzotZmFsc2V9JwogICAgICAtIFdBS0FQSV9EQl9UWVBFPXBvc3RncmVzCiAgICAgIC0gJ1dBS0FQSV9EQl9OQU1FPSR7V0FLQVBJX0RCX05BTUU6LXdha2FwaX0nCiAgICAgIC0gJ1dBS0FQSV9EQl9VU0VSPSR7U0VSVklDRV9VU0VSX0RBVEFCQVNFfScKICAgICAgLSAnV0FLQVBJX0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9EQVRBQkFTRX0nCiAgICAgIC0gJ1dBS0FQSV9EQl9IT1NUPSR7V0FLQVBJX0RCX0hPU1Q6LXBvc3RncmVzfScKICAgICAgLSAnV0FLQVBJX0RCX1BPUlQ9JHtXQUtBUElfREJfUE9SVDotNTQzMn0nCiAgICAgIC0gJ1dBS0FQSV9NQUlMX0VOQUJMRUQ9JHtXQUtBUElfTUFJTF9FTkFCTEVEOi1mYWxzZX0nCiAgICAgIC0gV0FLQVBJX01BSUxfUFJPVklERVI9c210cAogICAgICAtICdXQUtBUElfTUFJTF9TRU5ERVI9JHtXQUtBUElfTUFJTF9TRU5ERVJ9JwogICAgICAtICdXQUtBUElfTUFJTF9TTVRQX0hPU1Q9JHtXQUtBUElfTUFJTF9TTVRQX0hPU1R9JwogICAgICAtICdXQUtBUElfTUFJTF9TTVRQX1BPUlQ9JHtXQUtBUElfTUFJTF9TTVRQX1BPUlQ6LTU4N30nCiAgICAgIC0gJ1dBS0FQSV9NQUlMX1NNVFBfVVNFUj0ke1dBS0FQSV9NQUlMX1NNVFBfVVNFUk5BTUV9JwogICAgICAtICdXQUtBUElfTUFJTF9TTVRQX1BBU1M9JHtXQUtBUElfTUFJTF9TTVRQX1BBU1NXT1JEfScKICAgICAgLSAnV0FLQVBJX01BSUxfU01UUF9UTFM9JHtXQUtBUElfTUFJTF9TTVRQX1RMUzotdHJ1ZX0nCiAgICAgIC0gJ1dBS0FQSV9BTExPV19TSUdOVVA9JHtXQUtBUElfQUxMT1dfU0lHTlVQOi10cnVlfScKICAgICAgLSAnV0FLQVBJX0xFQURFUkJPQVJEX0VOQUJMRUQ9JHtXQUtBUElfTEVBREVSQk9BUkRfRU5BQkxFRDotdHJ1ZX0nCiAgICAgIC0gJ1dBS0FQSV9ESVNBQkxFX0ZST05UUEFHRT0ke1dBS0FQSV9ESVNBQkxFX0ZST05UUEFHRTotdHJ1ZX0nCiAgICAgIC0gJ1dBS0FQSV9QVUJMSUNfVVJMPSR7V0FLQVBJX1BVQkxJQ19VUkx9JwogICAgdm9sdW1lczoKICAgICAgLSAnd2FrYXBpLWRhdGE6L2RhdGEnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC1xTy0gaHR0cDovLzEyNy4wLjAuMTozMDAwLycKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICd3YWthcGktcG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9EQVRBQkFTRX0nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9EQVRBQkFTRX0nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7V0FLQVBJX0RCX05BTUU6LXdha2FwaX0nCiAgICAgIC0gJ1BPU1RHUkVTX1BPUlQ9JHtXQUtBUElfREJfUE9SVDotNTQzMn0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "productivity",
+ "self-hosted",
+ "developer-tools",
+ "time-tracker",
+ "wakatime",
+ "wakatime-api",
+ "coding-statistics",
+ "statistics",
+ "timetracking",
+ "analytics"
+ ],
+ "logo": "svgs/wakapi.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "weaviate": {
+ "documentation": "https://weaviate.io/developers/weaviate?utm_source=coolify.io",
+ "slogan": "Weaviate is an open-source vector database that stores both objects and vectors, allowing for combining vector search with structured filtering.",
+ "compose": "c2VydmljZXM6CiAgd2VhdmlhdGU6CiAgICBpbWFnZTogJ2NyLndlYXZpYXRlLmlvL3NlbWl0ZWNobm9sb2dpZXMvd2VhdmlhdGU6MS4yNi40JwogICAgdm9sdW1lczoKICAgICAgLSAnd2VhdmlhdGUtZGF0YTovdmFyL2xpYi93ZWF2aWF0ZScKICAgIGNvbW1hbmQ6CiAgICAgIC0gJy0taG9zdCcKICAgICAgLSAwLjAuMC4wCiAgICAgIC0gJy0tcG9ydCcKICAgICAgLSAnODA4MCcKICAgICAgLSAnLS1zY2hlbWUnCiAgICAgIC0gaHR0cAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfV0VBVklBVEVfODA4MAogICAgICAtICdESVNBQkxFX1RFTEVNRVRSWT0ke0RJU0FCTEVfVEVMRU1FVFJZOi10cnVlfScKICAgICAgLSAnUVVFUllfREVGQVVMVFNfTElNSVQ9JHtRVUVSWV9ERUZBVUxUU19MSU1JVDotMTAwMH0nCiAgICAgIC0gJ0xPR19MRVZFTD0ke0xPR19MRVZFTDotaW5mb30nCiAgICAgIC0gJ0dPTUVNTElNSVQ9JHtHT01FTUxJTUlUOi0xMDI0TWlCfScKICAgICAgLSAnR09NQVhQUk9DUz0ke0dPTUFYUFJPQ1M6LTJ9JwogICAgICAtICdBVVRIRU5USUNBVElPTl9BTk9OWU1PVVNfQUNDRVNTX0VOQUJMRUQ9JHtBVVRIRU5USUNBVElPTl9BTk9OWU1PVVNfQUNDRVNTX0VOQUJMRUQ6LWZhbHNlfScKICAgICAgLSAnQVVUSE9SSVpBVElPTl9BRE1JTkxJU1RfVVNFUlM9JHtBVVRIT1JJWkFUSU9OX0FETUlOTElTVF9VU0VSUzotYWRtaW5AZXhhbXBsZS5jb219JwogICAgICAtICdBVVRIRU5USUNBVElPTl9BUElLRVlfVVNFUlM9JHtBVVRIRU5USUNBVElPTl9BUElLRVlfVVNFUlM6LWFkbWluQGV4YW1wbGUuY29tfScKICAgICAgLSAnQVVUSEVOVElDQVRJT05fQVBJS0VZX0VOQUJMRUQ9JHtBVVRIRU5USUNBVElPTl9BUElLRVlfRU5BQkxFRDotdHJ1ZX0nCiAgICAgIC0gJ0FVVEhFTlRJQ0FUSU9OX0FQSUtFWV9BTExPV0VEX0tFWVM9JHtTRVJWSUNFX1BBU1NXT1JEX0FQSUtFWVN9JwogICAgICAtIFBFUlNJU1RFTkNFX0RBVEFfUEFUSD0vdmFyL2xpYi93ZWF2aWF0ZQogICAgICAtICdERUZBVUxUX1ZFQ1RPUklaRVJfTU9EVUxFPSR7REVGQVVMVF9WRUNUT1JJWkVSX01PRFVMRTotbm9uZX0nCiAgICAgIC0gJ0VOQUJMRV9NT0RVTEVTPSR7RU5BQkxFX01PRFVMRVM6LXRleHQydmVjLW9wZW5haSxnZW5lcmF0aXZlLW9wZW5haSxxbmEtb3BlbmFpfScKICAgICAgLSAnQ0xVU1RFUl9IT1NUTkFNRT0ke0NMVVNURVJfSE9TVE5BTUU6LW5vZGUxfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLXEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo4MDgwL3YxLy53ZWxsLWtub3duL3JlYWR5JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMzBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "ai",
+ "vector-database",
+ "semantic-search",
+ "machine-learning",
+ "bm25",
+ "embeddings",
+ "llm"
+ ],
+ "logo": "svgs/weaviate.png",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "web-check": {
+ "documentation": "https://github.com/lissy93/web-check?utm_source=coolify.io",
+ "slogan": "All-in-one OSINT tool for analysing any website",
+ "compose": "c2VydmljZXM6CiAgd2ViLWNoZWNrOgogICAgaW1hZ2U6IGxpc3N5OTMvd2ViLWNoZWNrCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9XRUJDSEVDS18zMDAwCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3dnZXQgLXFPLSBodHRwOi8vMTI3LjAuMC4xOjMwMDAvJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "osint",
+ "website",
+ "analysis"
+ ],
+ "logo": "svgs/web-check.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "weblate": {
+ "documentation": "https://weblate.org?utm_source=coolify.io",
+ "slogan": "Weblate is a libre software web-based continuous localization system.",
+ "compose": "c2VydmljZXM6CiAgd2VibGF0ZToKICAgIGltYWdlOiAnd2VibGF0ZS93ZWJsYXRlOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1dFQkxBVEVfODA4MAogICAgICAtIFdFQkxBVEVfU0lURV9ET01BSU49JFNFUlZJQ0VfVVJMX1dFQkxBVEUKICAgICAgLSAnV0VCTEFURV9BRE1JTl9OQU1FPSR7V0VCTEFURV9BRE1JTl9OQU1FOi1BZG1pbn0nCiAgICAgIC0gJ1dFQkxBVEVfQURNSU5fRU1BSUw9JHtXRUJMQVRFX0FETUlOX0VNQUlMOi1hZG1pbkBleGFtcGxlLmNvbX0nCiAgICAgIC0gV0VCTEFURV9BRE1JTl9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9XRUJMQVRFCiAgICAgIC0gJ0RFRkFVTFRfRlJPTV9FTUFJTD0ke1dFQkxBVEVfQURNSU5fRU1BSUw6LWFkbWluQGV4YW1wbGUuY29tfScKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtICdQT1NUR1JFU19EQVRBQkFTRT0ke1BPU1RHUkVTX0RCOi13ZWJsYXRlfScKICAgICAgLSBQT1NUR1JFU19IT1NUPXBvc3RncmVzcWwKICAgICAgLSBQT1NUR1JFU19QT1JUPTU0MzIKICAgICAgLSBSRURJU19IT1NUPXJlZGlzCiAgICAgIC0gUkVESVNfUE9SVD02Mzc5CiAgICAgIC0gUkVESVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUkVESVMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3dlYmxhdGUtZGF0YTovYXBwL2RhdGEnCiAgICAgIC0gJ3dlYmxhdGUtY2FjaGU6L2FwcC9jYWNoZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDgwJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMwCiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LXdlYmxhdGV9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo3LWFscGluZScKICAgIGNvbW1hbmQ6ICItLWFwcGVuZG9ubHkgeWVzIC0tcmVxdWlyZXBhc3MgJHtTRVJWSUNFX1BBU1NXT1JEX1JFRElTfVxuIgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUkVESVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUkVESVMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3dlYmxhdGUtcmVkaXMtZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "localization",
+ "translation",
+ "web",
+ "web-based",
+ "continuous",
+ "libre",
+ "software"
+ ],
+ "logo": "svgs/weblate.webp",
+ "minversion": "0.0.0",
+ "port": "8080"
+ },
+ "whoogle": {
+ "documentation": "https://github.com/benbusby/whoogle-search?tab=readme-ov-file?utm_source=coolify.io",
+ "slogan": "Whoogle is a self-hosted, privacy-focused search engine front-end for accessing Google search results without tracking and data collection.",
+ "compose": "c2VydmljZXM6CiAgd2hvb2dsZToKICAgIGltYWdlOiAnYmVuYnVzYnkvd2hvb2dsZS1zZWFyY2g6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfV0hPT0dMRV81MDAwCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6NTAwMCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
+ "tags": [
+ "privacy",
+ "search engine"
+ ],
+ "logo": "svgs/whoogle.png",
+ "minversion": "0.0.0",
+ "port": "5000"
+ },
+ "wikijs": {
+ "documentation": "https://docs.requarks.io?utm_source=coolify.io",
+ "slogan": "The most powerful and extensible open source Wiki software.",
+ "compose": "c2VydmljZXM6CiAgd2lraWpzOgogICAgaW1hZ2U6ICdnaGNyLmlvL3JlcXVhcmtzL3dpa2k6MicKICAgIGRlcGVuZHNfb246CiAgICAgIC0gcG9zdGdyZXMKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1dJS0lKU18zMDAwCiAgICAgIC0gREJfVFlQRT1wb3N0Z3JlcwogICAgICAtIERCX0hPU1Q9cG9zdGdyZXMKICAgICAgLSBEQl9QT1JUPTU0MzIKICAgICAgLSAnREJfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ0RCX1BBU1M9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnREJfTkFNRT0ke1BPU1RHUkVTUUxfREFUQUJBU0U6LXdpa2ktZGJ9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6ICdjdXJsIC0tZmFpbCBodHRwOi8vbG9jYWxob3N0OjMwMDAgfHwgZXhpdCAxJwogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU1FMX0RBVEFCQVNFOi13aWtpLWRifScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgICBsb2dnaW5nOgogICAgICBkcml2ZXI6IG5vbmUKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3dpa2lqcy1wb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwo=",
+ "tags": [
+ "wiki",
+ "collaboration",
+ "documentation"
+ ],
+ "logo": "svgs/wikijs.svg",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
+ "windmill": {
+ "documentation": "https://www.windmill.dev/docs/?utm_source=coolify.io",
+ "slogan": "Windmill is a developer platform to build production-grade multi-steps automations and internal apps.",
+ "compose": "c2VydmljZXM6CiAgZGI6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2JwogICAgc2htX3NpemU6IDFnCiAgICB2b2x1bWVzOgogICAgICAtICdkYi1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotd2luZG1pbGwtZGJ9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiA1CiAgd2luZG1pbGwtc2VydmVyOgogICAgaW1hZ2U6ICdnaGNyLmlvL3dpbmRtaWxsLWxhYnMvd2luZG1pbGw6bWFpbicKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1dJTkRNSUxMXzgwMDAKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AZGIvJHtQT1NUR1JFU19EQjotd2luZG1pbGwtZGJ9JwogICAgICAtIE1PREU9c2VydmVyCiAgICAgIC0gJ0JBU0VfVVJMPSR7U0VSVklDRV9VUkxfV0lORE1JTEx9JwogICAgZGVwZW5kc19vbjoKICAgICAgZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3dvcmtlci1sb2dzOi90bXAvd2luZG1pbGwvbG9ncycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL2hlYWx0aCcKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogIHdpbmRtaWxsLXdvcmtlci0xOgogICAgaW1hZ2U6ICdnaGNyLmlvL3dpbmRtaWxsLWxhYnMvd2luZG1pbGw6bWFpbicKICAgIGVudmlyb25tZW50OgogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBkYi8ke1BPU1RHUkVTX0RCOi13aW5kbWlsbC1kYn0nCiAgICAgIC0gTU9ERT13b3JrZXIKICAgICAgLSBXT1JLRVJfR1JPVVA9ZGVmYXVsdAogICAgZGVwZW5kc19vbjoKICAgICAgZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIHZvbHVtZXM6CiAgICAgIC0gJy92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrJwogICAgICAtICd3b3JrZXItZGVwZW5kZW5jeS1jYWNoZTovdG1wL3dpbmRtaWxsL2NhY2hlJwogICAgICAtICd3b3JrZXItbG9nczovdG1wL3dpbmRtaWxsL2xvZ3MnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2V4aXQgMCcKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogIHdpbmRtaWxsLXdvcmtlci0yOgogICAgaW1hZ2U6ICdnaGNyLmlvL3dpbmRtaWxsLWxhYnMvd2luZG1pbGw6bWFpbicKICAgIGVudmlyb25tZW50OgogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBkYi8ke1BPU1RHUkVTX0RCOi13aW5kbWlsbC1kYn0nCiAgICAgIC0gTU9ERT13b3JrZXIKICAgICAgLSBXT1JLRVJfR1JPVVA9ZGVmYXVsdAogICAgZGVwZW5kc19vbjoKICAgICAgZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIHZvbHVtZXM6CiAgICAgIC0gJy92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrJwogICAgICAtICd3b3JrZXItZGVwZW5kZW5jeS1jYWNoZTovdG1wL3dpbmRtaWxsL2NhY2hlJwogICAgICAtICd3b3JrZXItbG9nczovdG1wL3dpbmRtaWxsL2xvZ3MnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2V4aXQgMCcKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogIHdpbmRtaWxsLXdvcmtlci0zOgogICAgaW1hZ2U6ICdnaGNyLmlvL3dpbmRtaWxsLWxhYnMvd2luZG1pbGw6bWFpbicKICAgIGVudmlyb25tZW50OgogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBkYi8ke1BPU1RHUkVTX0RCOi13aW5kbWlsbC1kYn0nCiAgICAgIC0gTU9ERT13b3JrZXIKICAgICAgLSBXT1JLRVJfR1JPVVA9ZGVmYXVsdAogICAgZGVwZW5kc19vbjoKICAgICAgZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIHZvbHVtZXM6CiAgICAgIC0gJy92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrJwogICAgICAtICd3b3JrZXItZGVwZW5kZW5jeS1jYWNoZTovdG1wL3dpbmRtaWxsL2NhY2hlJwogICAgICAtICd3b3JrZXItbG9nczovdG1wL3dpbmRtaWxsL2xvZ3MnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2V4aXQgMCcKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogIHdpbmRtaWxsLXdvcmtlci1uYXRpdmU6CiAgICBpbWFnZTogJ2doY3IuaW8vd2luZG1pbGwtbGFicy93aW5kbWlsbDptYWluJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGRiLyR7UE9TVEdSRVNfREI6LXdpbmRtaWxsLWRifScKICAgICAgLSBNT0RFPXdvcmtlcgogICAgICAtIFdPUktFUl9HUk9VUD1uYXRpdmUKICAgICAgLSBOVU1fV09SS0VSUz04CiAgICAgIC0gU0xFRVBfUVVFVUU9MjAwCiAgICBkZXBlbmRzX29uOgogICAgICBkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnd29ya2VyLWxvZ3M6L3RtcC93aW5kbWlsbC9sb2dzJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdleGl0IDAnCiAgICAgIGludGVydmFsOiAzMHMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDMKICBsc3A6CiAgICBpbWFnZTogJ2doY3IuaW8vd2luZG1pbGwtbGFicy93aW5kbWlsbC1sc3A6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnbHNwLWNhY2hlOi9yb290Ly5jYWNoZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnZXhpdCAwJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgICAgIHN0YXJ0X3BlcmlvZDogMjBzCg==",
+ "tags": [
+ "windmill",
+ "workflow",
+ "automation",
+ "developer",
+ "platform"
+ ],
+ "logo": "svgs/windmill.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "wings": {
+ "documentation": "https://pterodactyl.io/?utm_source=coolify.io",
+ "slogan": "Wings is Pterodactyl's server control plane",
+ "compose": "c2VydmljZXM6CiAgd2luZ3M6CiAgICBpbWFnZTogJ2doY3IuaW8vcHRlcm9kYWN0eWwvd2luZ3M6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfV0lOR1NfODQ0MwogICAgICAtICdUWj0ke1RJTUVaT05FOi1VVEN9JwogICAgICAtIFdJTkdTX1VTRVJOQU1FPSRTRVJWSUNFX1VTRVJfV0lOR1MKICAgIHZvbHVtZXM6CiAgICAgIC0gJy92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrJwogICAgICAtICcvdmFyL2xpYi9kb2NrZXIvY29udGFpbmVycy86L3Zhci9saWIvZG9ja2VyL2NvbnRhaW5lcnMvJwogICAgICAtICcvdmFyL2xpYi9wdGVyb2RhY3R5bC92b2x1bWVzOi92YXIvbGliL3B0ZXJvZGFjdHlsL3ZvbHVtZXMnCiAgICAgIC0gJy90bXAvcHRlcm9kYWN0eWw6L3RtcC9wdGVyb2RhY3R5bCcKICAgICAgLSAnd2luZ3NfbGliOi92YXIvbGliL3B0ZXJvZGFjdHlsLycKICAgICAgLSAnd2luZ3NfbG9nczovdmFyL2xvZy9wdGVyb2RhY3R5bC8nCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2V0Yy9jb25maWcueW1sCiAgICAgICAgdGFyZ2V0OiAvZXRjL3B0ZXJvZGFjdHlsL2NvbmZpZy55bWwKICAgICAgICBjb250ZW50OiAiZGVidWc6IGZhbHNlXG51dWlkOiBSZXBsYWNlQ29uZmlnXG50b2tlbl9pZDogUmVwbGFjZUNvbmZpZ1xudG9rZW46IFJlcGxhY2VDb25maWdcbmFwaTpcbiAgaG9zdDogMC4wLjAuMFxuICBwb3J0OiA4NDQzICMgV2FybmluZywgcGFuZWwgbXVzdCBoYXZlIDQ0MyBhcyBkYWVtb24gcG9ydCwgd2hpbGUgaGVyZSBpdCBzaG91bGQgc2hvdWxkIGJlIDg0NDMsIEZRRE4gaW4gQ29vbGlmeSBmb3IgdGhpcyBzZXJ2aWNlIHNob3VsZCBiZSBodHRwczovLyo6ODQ0M1xuICBzc2w6XG4gICAgZW5hYmxlZDogZmFsc2VcbiAgICBjZXJ0OiBSZXBsYWNlQ29uZmlnXG4gICAga2V5OiBSZXBsYWNlQ29uZmlnXG4gIHVwbG9hZF9saW1pdDogMTAwXG5zeXN0ZW06XG4gIGRhdGE6IC92YXIvbGliL3B0ZXJvZGFjdHlsL3ZvbHVtZXNcbiAgc2Z0cDpcbiAgICBiaW5kX3BvcnQ6IDIwMjJcbmFsbG93ZWRfbW91bnRzOiBbXVxucmVtb3RlOiAnJyIKICAgIHBvcnRzOgogICAgICAtICcyMDIyOjIwMjInCg==",
+ "tags": [
+ "game",
+ "game server",
+ "management",
+ "panel",
+ "minecraft"
+ ],
+ "logo": "svgs/pterodactyl.png",
+ "minversion": "0.0.0",
+ "port": "8443"
+ },
+ "wireguard-easy": {
+ "documentation": "https://github.com/wg-easy/wg-easy?utm_source=coolify.io",
+ "slogan": "The easiest way to run WireGuard VPN + Web-based Admin UI.",
+ "compose": "c2VydmljZXM6CiAgd2ctZWFzeToKICAgIGltYWdlOiAnZ2hjci5pby93Zy1lYXN5L3dnLWVhc3k6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfV0lSRUdVQVJERUFTWV81MTgyMQogICAgICAtICdXR19IT1NUPSR7U0VSVklDRV9VUkxfV0lSRUdVQVJERUFTWX0nCiAgICAgIC0gJ0xBTkc9JHtMQU5HOi1lbn0nCiAgICAgIC0gV0dfUE9SVD01MTgyMAogICAgICAtICdfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0FETUlOfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3dnLWVhc3k6L2V0Yy93aXJlZ3VhcmQnCiAgICBwb3J0czoKICAgICAgLSAnNTE4MjA6NTE4MjAvdWRwJwogICAgY2FwX2FkZDoKICAgICAgLSBORVRfQURNSU4KICAgICAgLSBTWVNfTU9EVUxFCiAgICBzeXNjdGxzOgogICAgICAtIG5ldC5pcHY0LmNvbmYuYWxsLnNyY192YWxpZF9tYXJrPTEKICAgICAgLSBuZXQuaXB2NC5pcF9mb3J3YXJkPTEKICAgIGVudHJ5cG9pbnQ6CiAgICAgIC0gL2Jpbi9iYXNoCiAgICAgIC0gJy1jJwogICAgICAtICJldmFsIFwid2dwdyAnJHtTRVJWSUNFX1BBU1NXT1JEX0FETUlOfScgPiAvcGFzcy1oYXNoXCJcbmV2YWwgXCIkKGNhdCAvcGFzcy1oYXNoKSBkdW1iLWluaXQgbm9kZSBzZXJ2ZXIuanNcIlxuIgo=",
+ "tags": [
+ "wireguard",
+ "vpn",
+ "web",
+ "admin"
+ ],
+ "logo": "svgs/wireguard.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "wordpress-with-mariadb": {
+ "documentation": "https://wordpress.org?utm_source=coolify.io",
+ "slogan": "WordPress is open source software you can use to create a beautiful website, blog, or app.",
+ "compose": "c2VydmljZXM6CiAgd29yZHByZXNzOgogICAgaW1hZ2U6ICd3b3JkcHJlc3M6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnd29yZHByZXNzLWZpbGVzOi92YXIvd3d3L2h0bWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9XT1JEUFJFU1MKICAgICAgLSBXT1JEUFJFU1NfREJfSE9TVD1tYXJpYWRiCiAgICAgIC0gV09SRFBSRVNTX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9XT1JEUFJFU1MKICAgICAgLSBXT1JEUFJFU1NfREJfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfV09SRFBSRVNTCiAgICAgIC0gV09SRFBSRVNTX0RCX05BTUU9d29yZHByZXNzCiAgICBkZXBlbmRzX29uOgogICAgICAtIG1hcmlhZGIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMScKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxMAogIG1hcmlhZGI6CiAgICBpbWFnZTogJ21hcmlhZGI6MTEnCiAgICB2b2x1bWVzOgogICAgICAtICdtYXJpYWRiLWRhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBNWVNRTF9ST09UX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1JPT1QKICAgICAgLSBNWVNRTF9EQVRBQkFTRT13b3JkcHJlc3MKICAgICAgLSBNWVNRTF9VU0VSPSRTRVJWSUNFX1VTRVJfV09SRFBSRVNTCiAgICAgIC0gTVlTUUxfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfV09SRFBSRVNTCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gaGVhbHRoY2hlY2suc2gKICAgICAgICAtICctLWNvbm5lY3QnCiAgICAgICAgLSAnLS1pbm5vZGJfaW5pdGlhbGl6ZWQnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "cms",
+ "blog",
+ "content",
+ "management",
+ "mariadb"
+ ],
+ "logo": "svgs/wordpress.svg",
+ "minversion": "0.0.0"
+ },
+ "wordpress-with-mysql": {
+ "documentation": "https://wordpress.org?utm_source=coolify.io",
+ "slogan": "WordPress is open source software you can use to create a beautiful website, blog, or app.",
+ "compose": "c2VydmljZXM6CiAgd29yZHByZXNzOgogICAgaW1hZ2U6ICd3b3JkcHJlc3M6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnd29yZHByZXNzLWZpbGVzOi92YXIvd3d3L2h0bWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9XT1JEUFJFU1MKICAgICAgLSBXT1JEUFJFU1NfREJfSE9TVD1teXNxbAogICAgICAtIFdPUkRQUkVTU19EQl9VU0VSPSRTRVJWSUNFX1VTRVJfV09SRFBSRVNTCiAgICAgIC0gV09SRFBSRVNTX0RCX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1dPUkRQUkVTUwogICAgICAtIFdPUkRQUkVTU19EQl9OQU1FPXdvcmRwcmVzcwogICAgZGVwZW5kc19vbjoKICAgICAgLSBteXNxbAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDEwCiAgbXlzcWw6CiAgICBpbWFnZTogJ215c3FsOjgnCiAgICB2b2x1bWVzOgogICAgICAtICdteXNxbC1kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gTVlTUUxfUk9PVF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9ST09UCiAgICAgIC0gTVlTUUxfREFUQUJBU0U9d29yZHByZXNzCiAgICAgIC0gTVlTUUxfVVNFUj0kU0VSVklDRV9VU0VSX1dPUkRQUkVTUwogICAgICAtIE1ZU1FMX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1dPUkRQUkVTUwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG15c3FsYWRtaW4KICAgICAgICAtIHBpbmcKICAgICAgICAtICctaCcKICAgICAgICAtIDEyNy4wLjAuMQogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "cms",
+ "blog",
+ "content",
+ "management",
+ "mysql"
+ ],
+ "logo": "svgs/wordpress.svg",
+ "minversion": "0.0.0"
+ },
+ "wordpress-without-database": {
+ "documentation": "https://wordpress.org?utm_source=coolify.io",
+ "slogan": "WordPress is open source software you can use to create a beautiful website, blog, or app.",
+ "compose": "c2VydmljZXM6CiAgd29yZHByZXNzOgogICAgaW1hZ2U6ICd3b3JkcHJlc3M6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnd29yZHByZXNzLWZpbGVzOi92YXIvd3d3L2h0bWwnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9XT1JEUFJFU1MKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMScKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "cms",
+ "blog",
+ "content",
+ "management"
+ ],
+ "logo": "svgs/wordpress.svg",
+ "minversion": "0.0.0"
+ },
+ "yamtrack-with-postgresql": {
+ "documentation": "https://github.com/FuzzyGrim/Yamtrack/wiki?utm_source=coolify.io",
+ "slogan": "Yamtrack is a self hosted media tracker for movies, tv shows, anime, manga, video games and books.",
+ "compose": "c2VydmljZXM6CiAgeWFtdHJhY2s6CiAgICBpbWFnZTogZ2hjci5pby9mdXp6eWdyaW0veWFtdHJhY2sKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1lBTVRSQUNLXzgwMDAKICAgICAgLSAnVVJMUz0ke1NFUlZJQ0VfVVJMX1lBTVRSQUNLfScKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Jlcmxpbn0nCiAgICAgIC0gJ1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfU0VDUkVUfScKICAgICAgLSAnUkVHSVNUUkFUSU9OPSR7UkVHSVNUUkFUSU9OX0VOQUJMRUQ6LXRydWV9JwogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5JwogICAgICAtIERCX0hPU1Q9cG9zdGdyZXMKICAgICAgLSAnREJfTkFNRT0ke1BPU1RHUkVTUUxfREFUQUJBU0U6LXlhbXRyYWNrLWRifScKICAgICAgLSAnREJfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMfScKICAgICAgLSAnREJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtIERCX1BPUlQ9NTQzMgogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLS1uby12ZXJib3NlJwogICAgICAgIC0gJy0tdHJpZXM9MScKICAgICAgICAtICctLXNwaWRlcicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwMDAvaGVhbHRoLycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU1FMfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTUUx9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTUUxfREFUQUJBU0U6LXlhbXRyYWNrLWRifScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3lhbXRyYWNrX3Bvc3RncmVzX2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo3LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3lhbXRyYWNrX3JlZGlzX2RhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSBwaW5nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "self-hosted",
+ "automation",
+ "tracker",
+ "media",
+ "movies",
+ "shows",
+ "anime",
+ "manga",
+ "games",
+ "books",
+ "comics"
+ ],
+ "logo": "svgs/yamtrack.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "yamtrack": {
+ "documentation": "https://github.com/FuzzyGrim/Yamtrack/wiki?utm_source=coolify.io",
+ "slogan": "Yamtrack is a self hosted media tracker for movies, tv shows, anime, manga, video games and books.",
+ "compose": "c2VydmljZXM6CiAgeWFtdHJhY2s6CiAgICBpbWFnZTogZ2hjci5pby9mdXp6eWdyaW0veWFtdHJhY2sKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1lBTVRSQUNLXzgwMDAKICAgICAgLSAnVVJMUz0ke1NFUlZJQ0VfVVJMX1lBTVRSQUNLfScKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Jlcmxpbn0nCiAgICAgIC0gJ1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfU0VDUkVUfScKICAgICAgLSAnUkVHSVNUUkFUSU9OPSR7UkVHSVNUUkFUSU9OX0VOQUJMRUQ6LXRydWV9JwogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5JwogICAgdm9sdW1lczoKICAgICAgLSAneWFtdHJhY2tfZGF0YToveWFtdHJhY2svZGInCiAgICBkZXBlbmRzX29uOgogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC0tcXVpZXQgLS10cmllcz0xIC0tc3BpZGVyIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oZWFsdGgvIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo3LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3lhbXRyYWNrX3JlZGlzX2RhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSBwaW5nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "tags": [
+ "self-hosted",
+ "automation",
+ "tracker",
+ "media",
+ "movies",
+ "shows",
+ "anime",
+ "manga",
+ "games",
+ "books",
+ "comics"
+ ],
+ "logo": "svgs/yamtrack.svg",
+ "minversion": "0.0.0",
+ "port": "8000"
+ },
+ "zipline": {
+ "documentation": "https://zipline.diced.sh/docs/config?utm_source=coolify.io",
+ "slogan": "A ShareX/file upload server that is easy to use, packed with features, and with an easy setup!",
+ "compose": "c2VydmljZXM6CiAgemlwbGluZToKICAgIGltYWdlOiAnZ2hjci5pby9kaWNlZC96aXBsaW5lOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX1pJUExJTkVfMzAwMAogICAgICAtICdDT1JFX1JFVFVSTl9IVFRQUz0ke0NPUkVfUkVUVVJOX0hUVFBTOi1mYWxzZX0nCiAgICAgIC0gJ0NPUkVfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF82NF9aSVBMSU5FfScKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXMvJHtQT1NUR1JFU19EQjotemlwbGluZS1kYn0nCiAgICAgIC0gJ0NPUkVfTE9HR0VSPSR7Q09SRV9MT0dHRVI6LXRydWV9JwogICAgdm9sdW1lczoKICAgICAgLSAnemlwbGluZS11cGxvYWRzOi96aXBsaW5lL3VwbG9hZHMnCiAgICAgIC0gJ3ppcGxpbmUtcHVibGljOi96aXBsaW5lL3B1YmxpYycKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy1xJwogICAgICAgIC0gJy0tc3BpZGVyJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6MzAwMC9hdXRoL2xvZ2luJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3ppcGxpbmUtcG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LXppcGxpbmUtZGJ9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "zipline",
+ "file-sharing",
+ "upload",
+ "sharing"
+ ],
+ "logo": "svgs/zipline.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "convertx": {
+ "documentation": "https://github.com/C4illin/ConvertX?utm_source=coolify.io",
+ "slogan": "A self-hosted online file converter. Supports over a thousand different formats.",
+ "compose": "c2VydmljZXM6CiAgY29udmVydHg6CiAgICBpbWFnZTogJ2doY3IuaW8vYzRpbGxpbi9jb252ZXJ0eDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX1VSTF9DT05WRVJUWAogICAgICAtICdBQ0NPVU5UX1JFR0lTVFJBVElPTj0ke0FDQ09VTlRfUkVHSVNUUkFUSU9OOi1mYWxzZX0nCiAgICAgIC0gJ0hUVFBfQUxMT1dFRD0ke0hUVFBfQUxMT1dFRDotdHJ1ZX0nCiAgICAgIC0gJ0FMTE9XX1VOQVVUSEVOVElDQVRFRD0ke0FMTE9XX1VOQVVUSEVOVElDQVRFRDotZmFsc2V9JwogICAgICAtICdBVVRPX0RFTEVURV9FVkVSWV9OX0hPVVJTPSR7QVVUT19ERUxFVEVfRVZFUllfTl9IT1VSUzotMjR9JwogICAgICAtICdKV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9DT05WRVJUWEpXVFNFQ1JFVH0nCiAgICB2b2x1bWVzOgogICAgICAtICdjb252ZXJ0eF9kYXRhOi9hcHAvZGF0YScK",
+ "tags": [
+ "converter",
+ "file",
+ "documents",
+ "files",
+ "directories"
+ ],
+ "logo": "svgs/convertx.png",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
+ "marimo": {
+ "documentation": "https://marimo.io/?utm_source=coolify.io",
+ "slogan": "An open-source reactive notebook for Python \u2014 reproducible, git-friendly, SQL built-in, executable as a script, and shareable as an app.",
+ "compose": "c2VydmljZXM6CiAgbWFyaW1vOgogICAgaW1hZ2U6ICdnaGNyLmlvL21hcmltby10ZWFtL21hcmltbzpsYXRlc3Qtc3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfTUFSSU1PXzgwODAKICAgICAgLSBUT0tFTl9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NQVJJTU8KICAgIHZvbHVtZXM6CiAgICAgIC0gJ21hcmltbzovYXBwJwogICAgY29tbWFuZDoKICAgICAgLSBtYXJpbW8KICAgICAgLSBlZGl0CiAgICAgIC0gJy0tdG9rZW4tcGFzc3dvcmQnCiAgICAgIC0gJyR7U0VSVklDRV9QQVNTV09SRF9NQVJJTU99JwogICAgICAtICctLXBvcnQnCiAgICAgIC0gJzgwODAnCiAgICAgIC0gJy0taG9zdCcKICAgICAgLSAwLjAuMC4wCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gdXZ4CiAgICAgICAgLSAnLS13aXRoJwogICAgICAgIC0gJ2h0dHB4W2NsaV0nCiAgICAgICAgLSBodHRweAogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9oZWFsdGgnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAzCg==",
+ "tags": [
+ "notebook",
+ "python",
+ "data",
+ "analysis"
+ ],
+ "logo": "svgs/marimo.svg",
+ "minversion": "0.0.0",
+ "port": "8080"
+ }
+}
diff --git a/templates/service-templates.json b/templates/service-templates.json
index 9f2c0a773..0daa122c2 100644
--- a/templates/service-templates.json
+++ b/templates/service-templates.json
@@ -96,7 +96,7 @@
"appwrite": {
"documentation": "https://appwrite.io?utm_source=coolify.io",
"slogan": "A backend-as-a-service platform that simplifies the web & mobile app development.",
- "compose": "c2VydmljZXM6CiAgYXBwd3JpdGU6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlCiAgICB2b2x1bWVzOgogICAgICAtICdhcHB3cml0ZS11cGxvYWRzOi9zdG9yYWdlL3VwbG9hZHM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWltcG9ydHM6L3N0b3JhZ2UvaW1wb3J0czpydycKICAgICAgLSAnYXBwd3JpdGUtY2FjaGU6L3N0b3JhZ2UvY2FjaGU6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWNvbmZpZzovc3RvcmFnZS9jb25maWc6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWNlcnRpZmljYXRlczovc3RvcmFnZS9jZXJ0aWZpY2F0ZXM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWZ1bmN0aW9uczovc3RvcmFnZS9mdW5jdGlvbnM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLXNpdGVzOi9zdG9yYWdlL3NpdGVzOnJ3JwogICAgICAtICdhcHB3cml0ZS1idWlsZHM6L3N0b3JhZ2UvYnVpbGRzOnJ3JwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9BUFBXUklURT0vCiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSAnX0FQUF9MT0NBTEU9JHtfQVBQX0xPQ0FMRTotZW59JwogICAgICAtICdfQVBQX0NPTVBSRVNTSU9OX01JTl9TSVpFX0JZVEVTPSR7X0FQUF9DT01QUkVTU0lPTl9NSU5fU0laRV9CWVRFU30nCiAgICAgIC0gJ19BUFBfQ09OU09MRV9XSElURUxJU1RfUk9PVD0ke19BUFBfQ09OU09MRV9XSElURUxJU1RfUk9PVDotZW5hYmxlZH0nCiAgICAgIC0gJ19BUFBfQ09OU09MRV9XSElURUxJU1RfRU1BSUxTPSR7X0FQUF9DT05TT0xFX1dISVRFTElTVF9FTUFJTFN9JwogICAgICAtICdfQVBQX0NPTlNPTEVfU0VTU0lPTl9BTEVSVFM9JHtfQVBQX0NPTlNPTEVfU0VTU0lPTl9BTEVSVFN9JwogICAgICAtICdfQVBQX0NPTlNPTEVfV0hJVEVMSVNUX0lQUz0ke19BUFBfQ09OU09MRV9XSElURUxJU1RfSVBTfScKICAgICAgLSAnX0FQUF9DT05TT0xFX0hPU1ROQU1FUz0ke19BUFBfQ09OU09MRV9IT1NUTkFNRVN9JwogICAgICAtICdfQVBQX1NZU1RFTV9FTUFJTF9OQU1FPSR7X0FQUF9TWVNURU1fRU1BSUxfTkFNRTotQXBwd3JpdGV9JwogICAgICAtICdfQVBQX1NZU1RFTV9FTUFJTF9BRERSRVNTPSR7X0FQUF9TWVNURU1fRU1BSUxfQUREUkVTUzotdGVhbUBhcHB3cml0ZS5pb30nCiAgICAgIC0gJ19BUFBfU1lTVEVNX1RFQU1fRU1BSUw9JHtfQVBQX1NZU1RFTV9URUFNX0VNQUlMOi10ZWFtQGFwcHdyaXRlLmlvfScKICAgICAgLSAnX0FQUF9FTUFJTF9TRUNVUklUWT0ke19BUFBfRU1BSUxfU0VDVVJJVFk6LWNlcnRzQGFwcHdyaXRlLmlvfScKICAgICAgLSAnX0FQUF9TWVNURU1fUkVTUE9OU0VfRk9STUFUPSR7X0FQUF9TWVNURU1fUkVTUE9OU0VfRk9STUFUfScKICAgICAgLSAnX0FQUF9PUFRJT05TX0FCVVNFPSR7X0FQUF9PUFRJT05TX0FCVVNFOi1lbmFibGVkfScKICAgICAgLSAnX0FQUF9PUFRJT05TX1JPVVRFUl9QUk9URUNUSU9OPSR7X0FQUF9PUFRJT05TX1JPVVRFUl9QUk9URUNUSU9OOi1kaXNhYmxlZH0nCiAgICAgIC0gJ19BUFBfT1BUSU9OU19GT1JDRV9IVFRQUz0ke19BUFBfT1BUSU9OU19GT1JDRV9IVFRQUzotZGlzYWJsZWR9JwogICAgICAtICdfQVBQX09QVElPTlNfUk9VVEVSX0ZPUkNFX0hUVFBTPSR7X0FQUF9PUFRJT05TX1JPVVRFUl9GT1JDRV9IVFRQUzotZGlzYWJsZWR9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSBfQVBQX0RPTUFJTj0kU0VSVklDRV9VUkxfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0NOQU1FPSR7X0FQUF9ET01BSU5fVEFSR0VUX0NOQU1FOi1sb2NhbGhvc3R9JwogICAgICAtICdfQVBQX0RPTUFJTl9UQVJHRVRfQUFBQT0ke19BUFBfRE9NQUlOX1RBUkdFVF9BQUFBOi06OjF9JwogICAgICAtICdfQVBQX0RPTUFJTl9UQVJHRVRfQT0ke19BUFBfRE9NQUlOX1RBUkdFVF9BOi0xMjcuMC4wLjF9JwogICAgICAtIF9BUFBfRE9NQUlOX0ZVTkNUSU9OUz0kU0VSVklDRV9VUkxfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9TTVRQX0hPU1Q9JHtfQVBQX1NNVFBfSE9TVH0nCiAgICAgIC0gJ19BUFBfU01UUF9QT1JUPSR7X0FQUF9TTVRQX1BPUlR9JwogICAgICAtICdfQVBQX1NNVFBfU0VDVVJFPSR7X0FQUF9TTVRQX1NFQ1VSRX0nCiAgICAgIC0gJ19BUFBfU01UUF9VU0VSTkFNRT0ke19BUFBfU01UUF9VU0VSTkFNRX0nCiAgICAgIC0gJ19BUFBfU01UUF9QQVNTV09SRD0ke19BUFBfU01UUF9QQVNTV09SRH0nCiAgICAgIC0gJ19BUFBfVVNBR0VfU1RBVFM9JHtfQVBQX1VTQUdFX1NUQVRTOi1lbmFibGVkfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTUlUPSR7X0FQUF9TVE9SQUdFX0xJTUlUOi0zMDAwMDAwMH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9QUkVWSUVXX0xJTUlUPSR7X0FQUF9TVE9SQUdFX1BSRVZJRVdfTElNSVQ6LTIwMDAwMDAwfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0FOVElWSVJVUz0ke19BUFBfU1RPUkFHRV9BTlRJVklSVVM6LWRpc2FibGVkfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0FOVElWSVJVU19IT1NUPSR7X0FQUF9TVE9SQUdFX0FOVElWSVJVU19IT1NUOi1hcHB3cml0ZS1jbGFtYXZ9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQU5USVZJUlVTX1BPUlQ9JHtfQVBQX1NUT1JBR0VfQU5USVZJUlVTX1BPUlQ6LTMzMTB9JwogICAgICAtICdfQVBQX1NUT1JBR0VfREVWSUNFPSR7X0FQUF9TVE9SQUdFX0RFVklDRTotbG9jYWx9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9TM19TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX1MzX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9TM19CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfRU5EUE9JTlQ9JHtfQVBQX1NUT1JBR0VfUzNfRU5EUE9JTlR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT049JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OOi11cy13ZXN0LTAwNH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfTElOT0RFX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9MSU5PREVfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9SRUdJT049JHtfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTjotZXUtY2VudHJhbC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9XQVNBQklfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9XQVNBQklfUkVHSU9OOi1ldS1jZW50cmFsLTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9XQVNBQklfQlVDS0VUfScKICAgICAgLSAnX0FQUF9DT01QVVRFX1NJWkVfTElNSVQ9JHtfQVBQX0NPTVBVVEVfU0laRV9MSU1JVDotMzAwMDAwMDB9JwogICAgICAtICdfQVBQX0ZVTkNUSU9OU19USU1FT1VUPSR7X0FQUF9GVU5DVElPTlNfVElNRU9VVDotOTAwfScKICAgICAgLSAnX0FQUF9TSVRFU19USU1FT1VUPSR7X0FQUF9TSVRFU19USU1FT1VUOi05MDB9JwogICAgICAtICdfQVBQX0NPTVBVVEVfQlVJTERfVElNRU9VVD0ke19BUFBfQ09NUFVURV9CVUlMRF9USU1FT1VUOi05MDB9JwogICAgICAtICdfQVBQX0NPTVBVVEVfQ1BVUz0ke19BUFBfQ09NUFVURV9DUFVTOi0wfScKICAgICAgLSAnX0FQUF9DT01QVVRFX01FTU9SWT0ke19BUFBfQ09NUFVURV9NRU1PUlk6LTB9JwogICAgICAtICdfQVBQX0ZVTkNUSU9OU19SVU5USU1FUz0ke19BUFBfRlVOQ1RJT05TX1JVTlRJTUVTOi1ub2RlLTIwLjAscGhwLTguMixweXRob24tMy4xMSxydWJ5LTMuMn0nCiAgICAgIC0gJ19BUFBfU0lURVNfUlVOVElNRVM9JHtfQVBQX1NJVEVTX1JVTlRJTUVTfScKICAgICAgLSAnX0FQUF9ET01BSU5fU0lURVM9JHtfQVBQX0RPTUFJTl9TSVRFUzotYXBwd3JpdGUubmV0d29ya30nCiAgICAgIC0gX0FQUF9FWEVDVVRPUl9TRUNSRVQ9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9FWEVDVVRPUl9IT1NUPSR7X0FQUF9FWEVDVVRPUl9IT1NUOi1odHRwOi8vYXBwd3JpdGUtZXhlY3V0b3IvdjF9JwogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfSU5URVJWQUw9JHtfQVBQX01BSU5URU5BTkNFX0lOVEVSVkFMOi04NjQwMH0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfREVMQVk9JHtfQVBQX01BSU5URU5BTkNFX0RFTEFZfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9TVEFSVF9USU1FPSR7X0FQUF9NQUlOVEVOQU5DRV9TVEFSVF9USU1FfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fRVhFQ1VUSU9OPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fRVhFQ1VUSU9OOi0xMjA5NjAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQ0FDSEU9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9DQUNIRTotMjU5MjAwMH0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FCVVNFPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQUJVU0U6LTg2NDAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVQ9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVDotMTIwOTYwMH0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUX0NPTlNPTEU9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVF9DT05TT0xFfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fVVNBR0VfSE9VUkxZPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fVVNBR0VfSE9VUkxZOi04NjQwMDAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fU0NIRURVTEVTPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fU0NIRURVTEVTOi04NjQwMH0nCiAgICAgIC0gJ19BUFBfU01TX1BST1ZJREVSPSR7X0FQUF9TTVNfUFJPVklERVJ9JwogICAgICAtICdfQVBQX1NNU19GUk9NPSR7X0FQUF9TTVNfRlJPTX0nCiAgICAgIC0gJ19BUFBfR1JBUEhRTF9NQVhfQkFUQ0hfU0laRT0ke19BUFBfR1JBUEhRTF9NQVhfQkFUQ0hfU0laRTotMTB9JwogICAgICAtICdfQVBQX0dSQVBIUUxfTUFYX0NPTVBMRVhJVFk9JHtfQVBQX0dSQVBIUUxfTUFYX0NPTVBMRVhJVFk6LTI1MH0nCiAgICAgIC0gJ19BUFBfR1JBUEhRTF9NQVhfREVQVEg9JHtfQVBQX0dSQVBIUUxfTUFYX0RFUFRIOi0zfScKICAgICAgLSAnX0FQUF9WQ1NfR0lUSFVCX0FQUF9OQU1FPSR7X0FQUF9WQ1NfR0lUSFVCX0FQUF9OQU1FfScKICAgICAgLSAnX0FQUF9WQ1NfR0lUSFVCX1BSSVZBVEVfS0VZPSR7X0FQUF9WQ1NfR0lUSFVCX1BSSVZBVEVfS0VZfScKICAgICAgLSAnX0FQUF9WQ1NfR0lUSFVCX0FQUF9JRD0ke19BUFBfVkNTX0dJVEhVQl9BUFBfSUR9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfV0VCSE9PS19TRUNSRVQ9JHtfQVBQX1ZDU19HSVRIVUJfV0VCSE9PS19TRUNSRVR9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfQ0xJRU5UX1NFQ1JFVD0ke19BUFBfVkNTX0dJVEhVQl9DTElFTlRfU0VDUkVUfScKICAgICAgLSAnX0FQUF9WQ1NfR0lUSFVCX0NMSUVOVF9JRD0ke19BUFBfVkNTX0dJVEhVQl9DTElFTlRfSUR9JwogICAgICAtICdfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX0lEPSR7X0FQUF9NSUdSQVRJT05TX0ZJUkVCQVNFX0NMSUVOVF9JRH0nCiAgICAgIC0gJ19BUFBfTUlHUkFUSU9OU19GSVJFQkFTRV9DTElFTlRfU0VDUkVUPSR7X0FQUF9NSUdSQVRJT05TX0ZJUkVCQVNFX0NMSUVOVF9TRUNSRVR9JwogICAgICAtICdfQVBQX0FTU0lTVEFOVF9PUEVOQUlfQVBJX0tFWT0ke19BUFBfQVNTSVNUQU5UX09QRU5BSV9BUElfS0VZfScKICBhcHB3cml0ZS1jb25zb2xlOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9jb25zb2xlOjYuMC4xMycKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS1jb25zb2xlCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fQVBQV1JJVEU9L2NvbnNvbGUKICBhcHB3cml0ZS1yZWFsdGltZToKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiByZWFsdGltZQogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXJlYWx0aW1lCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLW1hcmlhZGIKICAgICAgLSBhcHB3cml0ZS1yZWRpcwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX0FQUFdSSVRFPS92MS9yZWFsdGltZQogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gJ19BUFBfT1BUSU9OU19BQlVTRT0ke19BUFBfT1BUSU9OU19BQlVTRTotZW5hYmxlZH0nCiAgICAgIC0gJ19BUFBfT1BUSU9OU19ST1VURVJfUFJPVEVDVElPTj0ke19BUFBfT1BUSU9OU19ST1VURVJfUFJPVEVDVElPTjotZGlzYWJsZWR9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9VU0FHRV9TVEFUUz0ke19BUFBfVVNBR0VfU1RBVFM6LWVuYWJsZWR9JwogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgYXBwd3JpdGUtd29ya2VyLWF1ZGl0czoKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiB3b3JrZXItYXVkaXRzCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtd29ya2VyLWF1ZGl0cwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1yZWRpcwogICAgICAtIGFwcHdyaXRlLW1hcmlhZGIKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgYXBwd3JpdGUtd29ya2VyLXdlYmhvb2tzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci13ZWJob29rcwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXdvcmtlci13ZWJob29rcwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1yZWRpcwogICAgICAtIGFwcHdyaXRlLW1hcmlhZGIKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX0VNQUlMX1NFQ1VSSVRZPSR7X0FQUF9FTUFJTF9TRUNVUklUWTotY2VydHNAYXBwd3JpdGUuaW99JwogICAgICAtICdfQVBQX1NZU1RFTV9TRUNVUklUWV9FTUFJTF9BRERSRVNTPSR7X0FQUF9TWVNURU1fU0VDVVJJVFlfRU1BSUxfQUREUkVTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICBhcHB3cml0ZS13b3JrZXItZGVsZXRlczoKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiB3b3JrZXItZGVsZXRlcwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXdvcmtlci1kZWxldGVzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgdm9sdW1lczoKICAgICAgLSAnYXBwd3JpdGUtdXBsb2Fkczovc3RvcmFnZS91cGxvYWRzOnJ3JwogICAgICAtICdhcHB3cml0ZS1jYWNoZTovc3RvcmFnZS9jYWNoZTpydycKICAgICAgLSAnYXBwd3JpdGUtZnVuY3Rpb25zOi9zdG9yYWdlL2Z1bmN0aW9uczpydycKICAgICAgLSAnYXBwd3JpdGUtc2l0ZXM6L3N0b3JhZ2Uvc2l0ZXM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWJ1aWxkczovc3RvcmFnZS9idWlsZHM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWNlcnRpZmljYXRlczovc3RvcmFnZS9jZXJ0aWZpY2F0ZXM6cncnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RFVklDRT0ke19BUFBfU1RPUkFHRV9ERVZJQ0U6LWxvY2FsfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfUzNfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfUzNfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9TM19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfUzNfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX0VORFBPSU5UPSR7X0FQUF9TVE9SQUdFX1MzX0VORFBPSU5UfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9SRUdJT049JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1JFR0lPTjotdXMtd2VzdC0wMDR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9SRUdJT046LWV1LWNlbnRyYWwtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9XQVNBQklfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9SRUdJT049JHtfQVBQX1NUT1JBR0VfV0FTQUJJX1JFR0lPTjotZXUtY2VudHJhbC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICAgICAgLSBfQVBQX0VYRUNVVE9SX1NFQ1JFVD0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX0VYRUNVVE9SX0hPU1Q9JHtfQVBQX0VYRUNVVE9SX0hPU1Q6LWh0dHA6Ly9hcHB3cml0ZS1leGVjdXRvci92MX0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FCVVNFPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQUJVU0U6LTg2NDAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVQ9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVDotMTIwOTYwMH0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUX0NPTlNPTEU9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVF9DT05TT0xFfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fRVhFQ1VUSU9OPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fRVhFQ1VUSU9OOi0xMjA5NjAwfScKICAgICAgLSAnX0FQUF9TWVNURU1fU0VDVVJJVFlfRU1BSUxfQUREUkVTUz0ke19BUFBfU1lTVEVNX1NFQ1VSSVRZX0VNQUlMX0FERFJFU1N9JwogICAgICAtICdfQVBQX0VNQUlMX0NFUlRJRklDQVRFUz0ke19BUFBfRU1BSUxfQ0VSVElGSUNBVEVTfScKICBhcHB3cml0ZS13b3JrZXItZGF0YWJhc2VzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1kYXRhYmFzZXMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItZGF0YWJhc2VzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICBhcHB3cml0ZS13b3JrZXItYnVpbGRzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1idWlsZHMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItYnVpbGRzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgdm9sdW1lczoKICAgICAgLSAnYXBwd3JpdGUtZnVuY3Rpb25zOi9zdG9yYWdlL2Z1bmN0aW9uczpydycKICAgICAgLSAnYXBwd3JpdGUtc2l0ZXM6L3N0b3JhZ2Uvc2l0ZXM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWJ1aWxkczovc3RvcmFnZS9idWlsZHM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLXVwbG9hZHM6L3N0b3JhZ2UvdXBsb2FkczpydycKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtIF9BUFBfRVhFQ1VUT1JfU0VDUkVUPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfRVhFQ1VUT1JfSE9TVD0ke19BUFBfRVhFQ1VUT1JfSE9TVDotaHR0cDovL2FwcHdyaXRlLWV4ZWN1dG9yL3YxfScKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfQVBQX05BTUU9JHtfQVBQX1ZDU19HSVRIVUJfQVBQX05BTUV9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfUFJJVkFURV9LRVk9JHtfQVBQX1ZDU19HSVRIVUJfUFJJVkFURV9LRVl9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfQVBQX0lEPSR7X0FQUF9WQ1NfR0lUSFVCX0FQUF9JRH0nCiAgICAgIC0gJ19BUFBfRlVOQ1RJT05TX1RJTUVPVVQ9JHtfQVBQX0ZVTkNUSU9OU19USU1FT1VUOi05MDB9JwogICAgICAtICdfQVBQX1NJVEVTX1RJTUVPVVQ9JHtfQVBQX1NJVEVTX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9CVUlMRF9USU1FT1VUPSR7X0FQUF9DT01QVVRFX0JVSUxEX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9DUFVTPSR7X0FQUF9DT01QVVRFX0NQVVM6LTB9JwogICAgICAtICdfQVBQX0NPTVBVVEVfTUVNT1JZPSR7X0FQUF9DT01QVVRFX01FTU9SWTotMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9TSVpFX0xJTUlUPSR7X0FQUF9DT01QVVRFX1NJWkVfTElNSVQ6LTMwMDAwMDAwfScKICAgICAgLSAnX0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTPSR7X0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTOi1kaXNhYmxlZH0nCiAgICAgIC0gJ19BUFBfT1BUSU9OU19ST1VURVJfRk9SQ0VfSFRUUFM9JHtfQVBQX09QVElPTlNfUk9VVEVSX0ZPUkNFX0hUVFBTOi1kaXNhYmxlZH0nCiAgICAgIC0gX0FQUF9ET01BSU49JFNFUlZJQ0VfVVJMX0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ERVZJQ0U9JHtfQVBQX1NUT1JBR0VfREVWSUNFOi1sb2NhbH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1MzX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX1MzX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19SRUdJT049JHtfQVBQX1NUT1JBR0VfUzNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX1MzX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19FTkRQT0lOVD0ke19BUFBfU1RPUkFHRV9TM19FTkRQT0lOVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9SRUdJT046LXVzLXdlc3QtMDA0fScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9MSU5PREVfUkVHSU9OOi1ldS1jZW50cmFsLTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9MSU5PREVfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9SRUdJT046LWV1LWNlbnRyYWwtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVR9JwogICAgICAtICdfQVBQX0RPTUFJTl9TSVRFUz0ke19BUFBfRE9NQUlOX1NJVEVTfScKICBhcHB3cml0ZS13b3JrZXItY2VydGlmaWNhdGVzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1jZXJ0aWZpY2F0ZXMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItY2VydGlmaWNhdGVzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgdm9sdW1lczoKICAgICAgLSAnYXBwd3JpdGUtY29uZmlnOi9zdG9yYWdlL2NvbmZpZzpydycKICAgICAgLSAnYXBwd3JpdGUtY2VydGlmaWNhdGVzOi9zdG9yYWdlL2NlcnRpZmljYXRlczpydycKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtIF9BUFBfRE9NQUlOPSRTRVJWSUNFX1VSTF9BUFBXUklURQogICAgICAtICdfQVBQX0RPTUFJTl9UQVJHRVRfQ05BTUU9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQ05BTUV9JwogICAgICAtICdfQVBQX0RPTUFJTl9UQVJHRVRfQUFBQT0ke19BUFBfRE9NQUlOX1RBUkdFVF9BQUFBfScKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0E9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQX0nCiAgICAgIC0gX0FQUF9ET01BSU5fRlVOQ1RJT05TPSRTRVJWSUNFX1VSTF9BUFBXUklURQogICAgICAtICdfQVBQX0VNQUlMX0NFUlRJRklDQVRFUz0ke19BUFBfRU1BSUxfQ0VSVElGSUNBVEVTOi1lbmFibGVkfScKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogIGFwcHdyaXRlLXdvcmtlci1mdW5jdGlvbnM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogd29ya2VyLWZ1bmN0aW9ucwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXdvcmtlci1mdW5jdGlvbnMKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICAgIC0gb3BlbnJ1bnRpbWVzLWV4ZWN1dG9yCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSBfQVBQX0RPTUFJTj0kU0VSVklDRV9VUkxfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTPSR7X0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTOi1kaXNhYmxlZH0nCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfRlVOQ1RJT05TX1RJTUVPVVQ9JHtfQVBQX0ZVTkNUSU9OU19USU1FT1VUOi05MDB9JwogICAgICAtICdfQVBQX1NJVEVTX1RJTUVPVVQ9JHtfQVBQX1NJVEVTX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9CVUlMRF9USU1FT1VUPSR7X0FQUF9DT01QVVRFX0JVSUxEX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9DUFVTPSR7X0FQUF9DT01QVVRFX0NQVVM6LTB9JwogICAgICAtICdfQVBQX0NPTVBVVEVfTUVNT1JZPSR7X0FQUF9DT01QVVRFX01FTU9SWTotMH0nCiAgICAgIC0gX0FQUF9FWEVDVVRPUl9TRUNSRVQ9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9FWEVDVVRPUl9IT1NUPSR7X0FQUF9FWEVDVVRPUl9IT1NUOi1odHRwOi8vYXBwd3JpdGUtZXhlY3V0b3IvdjF9JwogICAgICAtICdfQVBQX1VTQUdFX1NUQVRTPSR7X0FQUF9VU0FHRV9TVEFUUzotZW5hYmxlZH0nCiAgICAgIC0gJ19BUFBfRE9DS0VSX0hVQl9VU0VSTkFNRT0ke19BUFBfRE9DS0VSX0hVQl9VU0VSTkFNRX0nCiAgICAgIC0gJ19BUFBfRE9DS0VSX0hVQl9QQVNTV09SRD0ke19BUFBfRE9DS0VSX0hVQl9QQVNTV09SRH0nCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICBhcHB3cml0ZS13b3JrZXItbWFpbHM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogd29ya2VyLW1haWxzCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtd29ya2VyLW1haWxzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9TWVNURU1fRU1BSUxfTkFNRT0ke19BUFBfU1lTVEVNX0VNQUlMX05BTUU6LUFwcHdyaXRlfScKICAgICAgLSAnX0FQUF9TWVNURU1fRU1BSUxfQUREUkVTUz0ke19BUFBfU1lTVEVNX0VNQUlMX0FERFJFU1M6LXRlYW1AYXBwd3JpdGUuaW99JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX1NNVFBfSE9TVD0ke19BUFBfU01UUF9IT1NUfScKICAgICAgLSAnX0FQUF9TTVRQX1BPUlQ9JHtfQVBQX1NNVFBfUE9SVH0nCiAgICAgIC0gJ19BUFBfU01UUF9TRUNVUkU9JHtfQVBQX1NNVFBfU0VDVVJFfScKICAgICAgLSAnX0FQUF9TTVRQX1VTRVJOQU1FPSR7X0FQUF9TTVRQX1VTRVJOQU1FfScKICAgICAgLSAnX0FQUF9TTVRQX1BBU1NXT1JEPSR7X0FQUF9TTVRQX1BBU1NXT1JEfScKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogICAgICAtIF9BUFBfRE9NQUlOPSRTRVJWSUNFX1VSTF9BUFBXUklURQogICAgICAtICdfQVBQX09QVElPTlNfRk9SQ0VfSFRUUFM9JHtfQVBQX09QVElPTlNfRk9SQ0VfSFRUUFM6LWRpc2FibGVkfScKICBhcHB3cml0ZS13b3JrZXItbWVzc2FnaW5nOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1tZXNzYWdpbmcKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItbWVzc2FnaW5nCiAgICB2b2x1bWVzOgogICAgICAtICdhcHB3cml0ZS11cGxvYWRzOi9zdG9yYWdlL3VwbG9hZHM6cncnCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogICAgICAtICdfQVBQX1NNU19GUk9NPSR7X0FQUF9TTVNfRlJPTX0nCiAgICAgIC0gJ19BUFBfU01TX1BST1ZJREVSPSR7X0FQUF9TTVNfUFJPVklERVJ9JwogICAgICAtICdfQVBQX1NUT1JBR0VfREVWSUNFPSR7X0FQUF9TVE9SQUdFX0RFVklDRTotbG9jYWx9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9TM19TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX1MzX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9TM19CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfRU5EUE9JTlQ9JHtfQVBQX1NUT1JBR0VfUzNfRU5EUE9JTlR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT049JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OOi11cy13ZXN0LTAwNH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfTElOT0RFX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9MSU5PREVfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9SRUdJT049JHtfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTjotZXUtY2VudHJhbC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9XQVNBQklfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9XQVNBQklfUkVHSU9OOi1ldS1jZW50cmFsLTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9XQVNBQklfQlVDS0VUfScKICBhcHB3cml0ZS13b3JrZXItbWlncmF0aW9uczoKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiB3b3JrZXItbWlncmF0aW9ucwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXdvcmtlci1taWdyYXRpb25zCiAgICB2b2x1bWVzOgogICAgICAtICdhcHB3cml0ZS1pbXBvcnRzOi9zdG9yYWdlL2ltcG9ydHM6cncnCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLW1hcmlhZGIKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtIF9BUFBfRE9NQUlOPSRTRVJWSUNFX1VSTF9BUFBXUklURQogICAgICAtICdfQVBQX0RPTUFJTl9UQVJHRVRfQ05BTUU9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQ05BTUV9JwogICAgICAtICdfQVBQX0RPTUFJTl9UQVJHRVRfQUFBQT0ke19BUFBfRE9NQUlOX1RBUkdFVF9BQUFBfScKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0E9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQX0nCiAgICAgIC0gJ19BUFBfRU1BSUxfU0VDVVJJVFk9JHtfQVBQX0VNQUlMX1NFQ1VSSVRZOi1jZXJ0c0BhcHB3cml0ZS5pb30nCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICAgICAgLSAnX0FQUF9NSUdSQVRJT05TX0ZJUkVCQVNFX0NMSUVOVF9JRD0ke19BUFBfTUlHUkFUSU9OU19GSVJFQkFTRV9DTElFTlRfSUR9JwogICAgICAtICdfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX1NFQ1JFVD0ke19BUFBfTUlHUkFUSU9OU19GSVJFQkFTRV9DTElFTlRfU0VDUkVUfScKICBhcHB3cml0ZS10YXNrLW1haW50ZW5hbmNlOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IG1haW50ZW5hbmNlCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtdGFzay1tYWludGVuYW5jZQogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1yZWRpcwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX0RPTUFJTj0kU0VSVklDRV9VUkxfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0NOQU1FPSR7X0FQUF9ET01BSU5fVEFSR0VUX0NOQU1FfScKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0FBQUE9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQUFBQX0nCiAgICAgIC0gJ19BUFBfRE9NQUlOX1RBUkdFVF9BPSR7X0FQUF9ET01BSU5fVEFSR0VUX0F9JwogICAgICAtIF9BUFBfRE9NQUlOX0ZVTkNUSU9OUz0kU0VSVklDRV9VUkxfQVBQV1JJVEUKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfSU5URVJWQUw9JHtfQVBQX01BSU5URU5BTkNFX0lOVEVSVkFMfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fRVhFQ1VUSU9OPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fRVhFQ1VUSU9OfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQ0FDSEU9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9DQUNIRTotMjU5MjAwMH0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FCVVNFPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQUJVU0U6LTg2NDAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVQ9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVDotMTIwOTYwMH0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUX0NPTlNPTEU9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVF9DT05TT0xFfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fVVNBR0VfSE9VUkxZPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fVVNBR0VfSE9VUkxZOi04NjQwMDAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fU0NIRURVTEVTPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fU0NIRURVTEVTOi04NjQwMH0nCiAgYXBwd3JpdGUtdGFzay1zdGF0cy1yZXNvdXJjZXM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXRhc2stc3RhdHMtcmVzb3VyY2VzCiAgICBlbnRyeXBvaW50OiBzdGF0cy1yZXNvdXJjZXMKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9VU0FHRV9TVEFUUz0ke19BUFBfVVNBR0VfU1RBVFM6LWVuYWJsZWR9JwogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgICAgIC0gJ19BUFBfREFUQUJBU0VfU0hBUkVEX1RBQkxFUz0ke19BUFBfREFUQUJBU0VfU0hBUkVEX1RBQkxFU30nCiAgICAgIC0gJ19BUFBfU1RBVFNfUkVTT1VSQ0VTX0lOVEVSVkFMPSR7X0FQUF9TVEFUU19SRVNPVVJDRVNfSU5URVJWQUx9JwogIGFwcHdyaXRlLXdvcmtlci1zdGF0cy1yZXNvdXJjZXM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogd29ya2VyLXN0YXRzLXJlc291cmNlcwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXdvcmtlci1zdGF0cy1yZXNvdXJjZXMKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9VU0FHRV9TVEFUUz0ke19BUFBfVVNBR0VfU1RBVFM6LWVuYWJsZWR9JwogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgICAgIC0gJ19BUFBfU1RBVFNfUkVTT1VSQ0VTX0lOVEVSVkFMPSR7X0FQUF9TVEFUU19SRVNPVVJDRVNfSU5URVJWQUx9JwogIGFwcHdyaXRlLXdvcmtlci1zdGF0cy11c2FnZToKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiB3b3JrZXItc3RhdHMtdXNhZ2UKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItc3RhdHMtdXNhZ2UKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9VU0FHRV9TVEFUUz0ke19BUFBfVVNBR0VfU1RBVFM6LWVuYWJsZWR9JwogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgICAgIC0gJ19BUFBfVVNBR0VfQUdHUkVHQVRJT05fSU5URVJWQUw9JHtfQVBQX1VTQUdFX0FHR1JFR0FUSU9OX0lOVEVSVkFMOi0zMH0nCiAgYXBwd3JpdGUtdGFzay1zY2hlZHVsZXItZnVuY3Rpb25zOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHNjaGVkdWxlLWZ1bmN0aW9ucwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXRhc2stc2NoZWR1bGVyLWZ1bmN0aW9ucwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogIGFwcHdyaXRlLXRhc2stc2NoZWR1bGVyLWV4ZWN1dGlvbnM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogc2NoZWR1bGUtZXhlY3V0aW9ucwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXRhc2stc2NoZWR1bGVyLWV4ZWN1dGlvbnMKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICBhcHB3cml0ZS10YXNrLXNjaGVkdWxlci1tZXNzYWdlczoKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiBzY2hlZHVsZS1tZXNzYWdlcwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXRhc2stc2NoZWR1bGVyLW1lc3NhZ2VzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLW1hcmlhZGIKICAgICAgLSBhcHB3cml0ZS1yZWRpcwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgYXBwd3JpdGUtYXNzaXN0YW50OgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hc3Npc3RhbnQ6MC40LjAnCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtYXNzaXN0YW50CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9BU1NJU1RBTlRfT1BFTkFJX0FQSV9LRVk9JHtfQVBQX0FTU0lTVEFOVF9PUEVOQUlfQVBJX0tFWX0nCiAgYXBwd3JpdGUtYnJvd3NlcjoKICAgIGltYWdlOiAnYXBwd3JpdGUvYnJvd3NlcjowLjIuNCcKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS1icm93c2VyCiAgb3BlbnJ1bnRpbWVzLWV4ZWN1dG9yOgogICAgY29udGFpbmVyX25hbWU6IG9wZW5ydW50aW1lcy1leGVjdXRvcgogICAgaG9zdG5hbWU6IGFwcHdyaXRlLWV4ZWN1dG9yCiAgICBzdG9wX3NpZ25hbDogU0lHSU5UCiAgICBpbWFnZTogJ29wZW5ydW50aW1lcy9leGVjdXRvcjowLjcuMTQnCiAgICBuZXR3b3JrczoKICAgICAgLSBydW50aW1lcwogICAgdm9sdW1lczoKICAgICAgLSAnL3Zhci9ydW4vZG9ja2VyLnNvY2s6L3Zhci9ydW4vZG9ja2VyLnNvY2snCiAgICAgIC0gJ2FwcHdyaXRlLWJ1aWxkczovc3RvcmFnZS9idWlsZHM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWZ1bmN0aW9uczovc3RvcmFnZS9mdW5jdGlvbnM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLXNpdGVzOi9zdG9yYWdlL3NpdGVzOnJ3JwogICAgICAtICcvdG1wOi90bXA6cncnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnT1BSX0VYRUNVVE9SX0lOQUNUSVZFX1RSRVNIT0xEPSR7X0FQUF9DT01QVVRFX0lOQUNUSVZFX1RIUkVTSE9MRH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9NQUlOVEVOQU5DRV9JTlRFUlZBTD0ke19BUFBfQ09NUFVURV9NQUlOVEVOQU5DRV9JTlRFUlZBTH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9ORVRXT1JLPSR7X0FQUF9DT01QVVRFX1JVTlRJTUVTX05FVFdPUks6LXJ1bnRpbWVzfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX0RPQ0tFUl9IVUJfVVNFUk5BTUU9JHtfQVBQX0RPQ0tFUl9IVUJfVVNFUk5BTUV9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfRE9DS0VSX0hVQl9QQVNTV09SRD0ke19BUFBfRE9DS0VSX0hVQl9QQVNTV09SRH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9SVU5USU1FUz0ke19BUFBfRlVOQ1RJT05TX1JVTlRJTUVTfSwke19BUFBfU0lURVNfUlVOVElNRVN9JwogICAgICAtIE9QUl9FWEVDVVRPUl9TRUNSRVQ9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSBPUFJfRVhFQ1VUT1JfUlVOVElNRV9WRVJTSU9OUz12NQogICAgICAtICdPUFJfRVhFQ1VUT1JfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfREVWSUNFPSR7X0FQUF9TVE9SQUdFX0RFVklDRTotbG9jYWx9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9TM19BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1MzX0FDQ0VTU19LRVl9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9TM19TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfUzNfU0VDUkVUfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfUzNfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX1MzX1JFR0lPTn0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX1MzX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9TM19CVUNLRVR9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9TM19FTkRQT0lOVD0ke19BUFBfU1RPUkFHRV9TM19FTkRQT0lOVH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0RPX1NQQUNFU19BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19BQ0NFU1NfS0VZfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfU0VDUkVUfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfUkVHSU9OfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQlVDS0VUfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVl9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9TRUNSRVR9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9SRUdJT059JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVR9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0xJTk9ERV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0xJTk9ERV9SRUdJT049JHtfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTn0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0xJTk9ERV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9XQVNBQklfU0VDUkVUfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfV0FTQUJJX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9XQVNBQklfUkVHSU9OfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9XQVNBQklfQlVDS0VUfScKICBhcHB3cml0ZS1tYXJpYWRiOgogICAgaW1hZ2U6ICdtYXJpYWRiOjEwLjExJwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLW1hcmlhZGIKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2FwcHdyaXRlLW1hcmlhZGI6L3Zhci9saWIvbXlzcWw6cncnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBNWVNRTF9ST09UX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREJST09UCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBNWVNRTF9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIE1ZU1FMX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSBNQVJJQURCX0FVVE9fVVBHUkFERT0xCiAgICBjb21tYW5kOiAnbXlzcWxkIC0taW5ub2RiLWZsdXNoLW1ldGhvZD1mc3luYycKICBhcHB3cml0ZS1yZWRpczoKICAgIGltYWdlOiAncmVkaXM6Ny4yLjQtYWxwaW5lJwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXJlZGlzCiAgICBjb21tYW5kOiAicmVkaXMtc2VydmVyIC0tbWF4bWVtb3J5ICAgICAgICAgICAgNTEybWIgLS1tYXhtZW1vcnktcG9saWN5ICAgICBhbGxrZXlzLWxydSAtLW1heG1lbW9yeS1zYW1wbGVzICAgIDVcbiIKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2FwcHdyaXRlLXJlZGlzOi9kYXRhOnJ3JwpuZXR3b3JrczoKICBydW50aW1lczoKICAgIG5hbWU6IHJ1bnRpbWVzCnZvbHVtZXM6CiAgYXBwd3JpdGUtbWFyaWFkYjogbnVsbAogIGFwcHdyaXRlLXJlZGlzOiBudWxsCiAgYXBwd3JpdGUtY2FjaGU6IG51bGwKICBhcHB3cml0ZS11cGxvYWRzOiBudWxsCiAgYXBwd3JpdGUtaW1wb3J0czogbnVsbAogIGFwcHdyaXRlLWNlcnRpZmljYXRlczogbnVsbAogIGFwcHdyaXRlLWZ1bmN0aW9uczogbnVsbAogIGFwcHdyaXRlLXNpdGVzOiBudWxsCiAgYXBwd3JpdGUtYnVpbGRzOiBudWxsCiAgYXBwd3JpdGUtY29uZmlnOiBudWxsCg==",
+ "compose": "c2VydmljZXM6CiAgYXBwd3JpdGU6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlCiAgICB2b2x1bWVzOgogICAgICAtICdhcHB3cml0ZS11cGxvYWRzOi9zdG9yYWdlL3VwbG9hZHM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWltcG9ydHM6L3N0b3JhZ2UvaW1wb3J0czpydycKICAgICAgLSAnYXBwd3JpdGUtY2FjaGU6L3N0b3JhZ2UvY2FjaGU6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWNvbmZpZzovc3RvcmFnZS9jb25maWc6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWNlcnRpZmljYXRlczovc3RvcmFnZS9jZXJ0aWZpY2F0ZXM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWZ1bmN0aW9uczovc3RvcmFnZS9mdW5jdGlvbnM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLXNpdGVzOi9zdG9yYWdlL3NpdGVzOnJ3JwogICAgICAtICdhcHB3cml0ZS1idWlsZHM6L3N0b3JhZ2UvYnVpbGRzOnJ3JwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9BUFBXUklURT0vCiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSAnX0FQUF9MT0NBTEU9JHtfQVBQX0xPQ0FMRTotZW59JwogICAgICAtICdfQVBQX0NPTVBSRVNTSU9OX01JTl9TSVpFX0JZVEVTPSR7X0FQUF9DT01QUkVTU0lPTl9NSU5fU0laRV9CWVRFU30nCiAgICAgIC0gJ19BUFBfQ09OU09MRV9XSElURUxJU1RfUk9PVD0ke19BUFBfQ09OU09MRV9XSElURUxJU1RfUk9PVDotZW5hYmxlZH0nCiAgICAgIC0gJ19BUFBfQ09OU09MRV9XSElURUxJU1RfRU1BSUxTPSR7X0FQUF9DT05TT0xFX1dISVRFTElTVF9FTUFJTFN9JwogICAgICAtICdfQVBQX0NPTlNPTEVfU0VTU0lPTl9BTEVSVFM9JHtfQVBQX0NPTlNPTEVfU0VTU0lPTl9BTEVSVFN9JwogICAgICAtICdfQVBQX0NPTlNPTEVfV0hJVEVMSVNUX0lQUz0ke19BUFBfQ09OU09MRV9XSElURUxJU1RfSVBTfScKICAgICAgLSAnX0FQUF9DT05TT0xFX0hPU1ROQU1FUz0ke19BUFBfQ09OU09MRV9IT1NUTkFNRVN9JwogICAgICAtICdfQVBQX1NZU1RFTV9FTUFJTF9OQU1FPSR7X0FQUF9TWVNURU1fRU1BSUxfTkFNRTotQXBwd3JpdGV9JwogICAgICAtICdfQVBQX1NZU1RFTV9FTUFJTF9BRERSRVNTPSR7X0FQUF9TWVNURU1fRU1BSUxfQUREUkVTUzotdGVhbUBhcHB3cml0ZS5pb30nCiAgICAgIC0gJ19BUFBfU1lTVEVNX1RFQU1fRU1BSUw9JHtfQVBQX1NZU1RFTV9URUFNX0VNQUlMOi10ZWFtQGFwcHdyaXRlLmlvfScKICAgICAgLSAnX0FQUF9FTUFJTF9TRUNVUklUWT0ke19BUFBfRU1BSUxfU0VDVVJJVFk6LWNlcnRzQGFwcHdyaXRlLmlvfScKICAgICAgLSAnX0FQUF9TWVNURU1fUkVTUE9OU0VfRk9STUFUPSR7X0FQUF9TWVNURU1fUkVTUE9OU0VfRk9STUFUfScKICAgICAgLSAnX0FQUF9PUFRJT05TX0FCVVNFPSR7X0FQUF9PUFRJT05TX0FCVVNFOi1lbmFibGVkfScKICAgICAgLSAnX0FQUF9PUFRJT05TX1JPVVRFUl9QUk9URUNUSU9OPSR7X0FQUF9PUFRJT05TX1JPVVRFUl9QUk9URUNUSU9OOi1kaXNhYmxlZH0nCiAgICAgIC0gJ19BUFBfT1BUSU9OU19GT1JDRV9IVFRQUz0ke19BUFBfT1BUSU9OU19GT1JDRV9IVFRQUzotZGlzYWJsZWR9JwogICAgICAtICdfQVBQX09QVElPTlNfUk9VVEVSX0ZPUkNFX0hUVFBTPSR7X0FQUF9PUFRJT05TX1JPVVRFUl9GT1JDRV9IVFRQUzotZGlzYWJsZWR9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSBfQVBQX0RPTUFJTj0kU0VSVklDRV9GUUROX0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfRE9NQUlOX1RBUkdFVF9DTkFNRT0ke19BUFBfRE9NQUlOX1RBUkdFVF9DTkFNRTotbG9jYWxob3N0fScKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0FBQUE9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQUFBQTotOjoxfScKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0E9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQTotMTI3LjAuMC4xfScKICAgICAgLSBfQVBQX0RPTUFJTl9GVU5DVElPTlM9JFNFUlZJQ0VfRlFETl9BUFBXUklURQogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX1NNVFBfSE9TVD0ke19BUFBfU01UUF9IT1NUfScKICAgICAgLSAnX0FQUF9TTVRQX1BPUlQ9JHtfQVBQX1NNVFBfUE9SVH0nCiAgICAgIC0gJ19BUFBfU01UUF9TRUNVUkU9JHtfQVBQX1NNVFBfU0VDVVJFfScKICAgICAgLSAnX0FQUF9TTVRQX1VTRVJOQU1FPSR7X0FQUF9TTVRQX1VTRVJOQU1FfScKICAgICAgLSAnX0FQUF9TTVRQX1BBU1NXT1JEPSR7X0FQUF9TTVRQX1BBU1NXT1JEfScKICAgICAgLSAnX0FQUF9VU0FHRV9TVEFUUz0ke19BUFBfVVNBR0VfU1RBVFM6LWVuYWJsZWR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElNSVQ9JHtfQVBQX1NUT1JBR0VfTElNSVQ6LTMwMDAwMDAwfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1BSRVZJRVdfTElNSVQ9JHtfQVBQX1NUT1JBR0VfUFJFVklFV19MSU1JVDotMjAwMDAwMDB9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQU5USVZJUlVTPSR7X0FQUF9TVE9SQUdFX0FOVElWSVJVUzotZGlzYWJsZWR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQU5USVZJUlVTX0hPU1Q9JHtfQVBQX1NUT1JBR0VfQU5USVZJUlVTX0hPU1Q6LWFwcHdyaXRlLWNsYW1hdn0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9BTlRJVklSVVNfUE9SVD0ke19BUFBfU1RPUkFHRV9BTlRJVklSVVNfUE9SVDotMzMxMH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ERVZJQ0U9JHtfQVBQX1NUT1JBR0VfREVWSUNFOi1sb2NhbH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1MzX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX1MzX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19SRUdJT049JHtfQVBQX1NUT1JBR0VfUzNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX1MzX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19FTkRQT0lOVD0ke19BUFBfU1RPUkFHRV9TM19FTkRQT0lOVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9SRUdJT046LXVzLXdlc3QtMDA0fScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9MSU5PREVfUkVHSU9OOi1ldS1jZW50cmFsLTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9MSU5PREVfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9SRUdJT046LWV1LWNlbnRyYWwtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVR9JwogICAgICAtICdfQVBQX0NPTVBVVEVfU0laRV9MSU1JVD0ke19BUFBfQ09NUFVURV9TSVpFX0xJTUlUOi0zMDAwMDAwMH0nCiAgICAgIC0gJ19BUFBfRlVOQ1RJT05TX1RJTUVPVVQ9JHtfQVBQX0ZVTkNUSU9OU19USU1FT1VUOi05MDB9JwogICAgICAtICdfQVBQX1NJVEVTX1RJTUVPVVQ9JHtfQVBQX1NJVEVTX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9CVUlMRF9USU1FT1VUPSR7X0FQUF9DT01QVVRFX0JVSUxEX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9DUFVTPSR7X0FQUF9DT01QVVRFX0NQVVM6LTB9JwogICAgICAtICdfQVBQX0NPTVBVVEVfTUVNT1JZPSR7X0FQUF9DT01QVVRFX01FTU9SWTotMH0nCiAgICAgIC0gJ19BUFBfRlVOQ1RJT05TX1JVTlRJTUVTPSR7X0FQUF9GVU5DVElPTlNfUlVOVElNRVM6LW5vZGUtMjAuMCxwaHAtOC4yLHB5dGhvbi0zLjExLHJ1YnktMy4yfScKICAgICAgLSAnX0FQUF9TSVRFU19SVU5USU1FUz0ke19BUFBfU0lURVNfUlVOVElNRVN9JwogICAgICAtICdfQVBQX0RPTUFJTl9TSVRFUz0ke19BUFBfRE9NQUlOX1NJVEVTOi1hcHB3cml0ZS5uZXR3b3JrfScKICAgICAgLSBfQVBQX0VYRUNVVE9SX1NFQ1JFVD0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX0VYRUNVVE9SX0hPU1Q9JHtfQVBQX0VYRUNVVE9SX0hPU1Q6LWh0dHA6Ly9hcHB3cml0ZS1leGVjdXRvci92MX0nCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9JTlRFUlZBTD0ke19BUFBfTUFJTlRFTkFOQ0VfSU5URVJWQUw6LTg2NDAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9ERUxBWT0ke19BUFBfTUFJTlRFTkFOQ0VfREVMQVl9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1NUQVJUX1RJTUU9JHtfQVBQX01BSU5URU5BTkNFX1NUQVJUX1RJTUV9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9FWEVDVVRJT049JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9FWEVDVVRJT046LTEyMDk2MDB9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9DQUNIRT0ke19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0NBQ0hFOi0yNTkyMDAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQUJVU0U9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BQlVTRTotODY0MDB9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVD0ke19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUOi0xMjA5NjAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVRfQ09OU09MRT0ke19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUX0NPTlNPTEV9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9VU0FHRV9IT1VSTFk9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9VU0FHRV9IT1VSTFk6LTg2NDAwMDB9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9TQ0hFRFVMRVM9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9TQ0hFRFVMRVM6LTg2NDAwfScKICAgICAgLSAnX0FQUF9TTVNfUFJPVklERVI9JHtfQVBQX1NNU19QUk9WSURFUn0nCiAgICAgIC0gJ19BUFBfU01TX0ZST009JHtfQVBQX1NNU19GUk9NfScKICAgICAgLSAnX0FQUF9HUkFQSFFMX01BWF9CQVRDSF9TSVpFPSR7X0FQUF9HUkFQSFFMX01BWF9CQVRDSF9TSVpFOi0xMH0nCiAgICAgIC0gJ19BUFBfR1JBUEhRTF9NQVhfQ09NUExFWElUWT0ke19BUFBfR1JBUEhRTF9NQVhfQ09NUExFWElUWTotMjUwfScKICAgICAgLSAnX0FQUF9HUkFQSFFMX01BWF9ERVBUSD0ke19BUFBfR1JBUEhRTF9NQVhfREVQVEg6LTN9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfQVBQX05BTUU9JHtfQVBQX1ZDU19HSVRIVUJfQVBQX05BTUV9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfUFJJVkFURV9LRVk9JHtfQVBQX1ZDU19HSVRIVUJfUFJJVkFURV9LRVl9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfQVBQX0lEPSR7X0FQUF9WQ1NfR0lUSFVCX0FQUF9JRH0nCiAgICAgIC0gJ19BUFBfVkNTX0dJVEhVQl9XRUJIT09LX1NFQ1JFVD0ke19BUFBfVkNTX0dJVEhVQl9XRUJIT09LX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfVkNTX0dJVEhVQl9DTElFTlRfU0VDUkVUPSR7X0FQUF9WQ1NfR0lUSFVCX0NMSUVOVF9TRUNSRVR9JwogICAgICAtICdfQVBQX1ZDU19HSVRIVUJfQ0xJRU5UX0lEPSR7X0FQUF9WQ1NfR0lUSFVCX0NMSUVOVF9JRH0nCiAgICAgIC0gJ19BUFBfTUlHUkFUSU9OU19GSVJFQkFTRV9DTElFTlRfSUQ9JHtfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX0lEfScKICAgICAgLSAnX0FQUF9NSUdSQVRJT05TX0ZJUkVCQVNFX0NMSUVOVF9TRUNSRVQ9JHtfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfQVNTSVNUQU5UX09QRU5BSV9BUElfS0VZPSR7X0FQUF9BU1NJU1RBTlRfT1BFTkFJX0FQSV9LRVl9JwogIGFwcHdyaXRlLWNvbnNvbGU6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2NvbnNvbGU6Ni4wLjEzJwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLWNvbnNvbGUKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9BUFBXUklURT0vY29uc29sZQogIGFwcHdyaXRlLXJlYWx0aW1lOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHJlYWx0aW1lCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtcmVhbHRpbWUKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fQVBQV1JJVEU9L3YxL3JlYWx0aW1lCiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSAnX0FQUF9PUFRJT05TX0FCVVNFPSR7X0FQUF9PUFRJT05TX0FCVVNFOi1lbmFibGVkfScKICAgICAgLSAnX0FQUF9PUFRJT05TX1JPVVRFUl9QUk9URUNUSU9OPSR7X0FQUF9PUFRJT05TX1JPVVRFUl9QUk9URUNUSU9OOi1kaXNhYmxlZH0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX1VTQUdFX1NUQVRTPSR7X0FQUF9VU0FHRV9TVEFUUzotZW5hYmxlZH0nCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICBhcHB3cml0ZS13b3JrZXItYXVkaXRzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1hdWRpdHMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItYXVkaXRzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICBhcHB3cml0ZS13b3JrZXItd2ViaG9va3M6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogd29ya2VyLXdlYmhvb2tzCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtd29ya2VyLXdlYmhvb2tzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfRU1BSUxfU0VDVVJJVFk9JHtfQVBQX0VNQUlMX1NFQ1VSSVRZOi1jZXJ0c0BhcHB3cml0ZS5pb30nCiAgICAgIC0gJ19BUFBfU1lTVEVNX1NFQ1VSSVRZX0VNQUlMX0FERFJFU1M9JHtfQVBQX1NZU1RFTV9TRUNVUklUWV9FTUFJTF9BRERSRVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogIGFwcHdyaXRlLXdvcmtlci1kZWxldGVzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1kZWxldGVzCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtd29ya2VyLWRlbGV0ZXMKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICB2b2x1bWVzOgogICAgICAtICdhcHB3cml0ZS11cGxvYWRzOi9zdG9yYWdlL3VwbG9hZHM6cncnCiAgICAgIC0gJ2FwcHdyaXRlLWNhY2hlOi9zdG9yYWdlL2NhY2hlOnJ3JwogICAgICAtICdhcHB3cml0ZS1mdW5jdGlvbnM6L3N0b3JhZ2UvZnVuY3Rpb25zOnJ3JwogICAgICAtICdhcHB3cml0ZS1zaXRlczovc3RvcmFnZS9zaXRlczpydycKICAgICAgLSAnYXBwd3JpdGUtYnVpbGRzOi9zdG9yYWdlL2J1aWxkczpydycKICAgICAgLSAnYXBwd3JpdGUtY2VydGlmaWNhdGVzOi9zdG9yYWdlL2NlcnRpZmljYXRlczpydycKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX1NUT1JBR0VfREVWSUNFPSR7X0FQUF9TVE9SQUdFX0RFVklDRTotbG9jYWx9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9TM19TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX1MzX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9TM19CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfRU5EUE9JTlQ9JHtfQVBQX1NUT1JBR0VfUzNfRU5EUE9JTlR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT049JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OOi11cy13ZXN0LTAwNH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfTElOT0RFX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9MSU5PREVfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9SRUdJT049JHtfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTjotZXUtY2VudHJhbC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9XQVNBQklfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9XQVNBQklfUkVHSU9OOi1ldS1jZW50cmFsLTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9XQVNBQklfQlVDS0VUfScKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogICAgICAtIF9BUFBfRVhFQ1VUT1JfU0VDUkVUPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfRVhFQ1VUT1JfSE9TVD0ke19BUFBfRVhFQ1VUT1JfSE9TVDotaHR0cDovL2FwcHdyaXRlLWV4ZWN1dG9yL3YxfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQUJVU0U9JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BQlVTRTotODY0MDB9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVD0ke19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUOi0xMjA5NjAwfScKICAgICAgLSAnX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVRfQ09OU09MRT0ke19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUX0NPTlNPTEV9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9FWEVDVVRJT049JHtfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9FWEVDVVRJT046LTEyMDk2MDB9JwogICAgICAtICdfQVBQX1NZU1RFTV9TRUNVUklUWV9FTUFJTF9BRERSRVNTPSR7X0FQUF9TWVNURU1fU0VDVVJJVFlfRU1BSUxfQUREUkVTU30nCiAgICAgIC0gJ19BUFBfRU1BSUxfQ0VSVElGSUNBVEVTPSR7X0FQUF9FTUFJTF9DRVJUSUZJQ0FURVN9JwogIGFwcHdyaXRlLXdvcmtlci1kYXRhYmFzZXM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogd29ya2VyLWRhdGFiYXNlcwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXdvcmtlci1kYXRhYmFzZXMKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogIGFwcHdyaXRlLXdvcmtlci1idWlsZHM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogd29ya2VyLWJ1aWxkcwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLXdvcmtlci1idWlsZHMKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICB2b2x1bWVzOgogICAgICAtICdhcHB3cml0ZS1mdW5jdGlvbnM6L3N0b3JhZ2UvZnVuY3Rpb25zOnJ3JwogICAgICAtICdhcHB3cml0ZS1zaXRlczovc3RvcmFnZS9zaXRlczpydycKICAgICAgLSAnYXBwd3JpdGUtYnVpbGRzOi9zdG9yYWdlL2J1aWxkczpydycKICAgICAgLSAnYXBwd3JpdGUtdXBsb2Fkczovc3RvcmFnZS91cGxvYWRzOnJ3JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gX0FQUF9FWEVDVVRPUl9TRUNSRVQ9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9FWEVDVVRPUl9IT1NUPSR7X0FQUF9FWEVDVVRPUl9IT1NUOi1odHRwOi8vYXBwd3JpdGUtZXhlY3V0b3IvdjF9JwogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgICAgIC0gJ19BUFBfVkNTX0dJVEhVQl9BUFBfTkFNRT0ke19BUFBfVkNTX0dJVEhVQl9BUFBfTkFNRX0nCiAgICAgIC0gJ19BUFBfVkNTX0dJVEhVQl9QUklWQVRFX0tFWT0ke19BUFBfVkNTX0dJVEhVQl9QUklWQVRFX0tFWX0nCiAgICAgIC0gJ19BUFBfVkNTX0dJVEhVQl9BUFBfSUQ9JHtfQVBQX1ZDU19HSVRIVUJfQVBQX0lEfScKICAgICAgLSAnX0FQUF9GVU5DVElPTlNfVElNRU9VVD0ke19BUFBfRlVOQ1RJT05TX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfU0lURVNfVElNRU9VVD0ke19BUFBfU0lURVNfVElNRU9VVDotOTAwfScKICAgICAgLSAnX0FQUF9DT01QVVRFX0JVSUxEX1RJTUVPVVQ9JHtfQVBQX0NPTVBVVEVfQlVJTERfVElNRU9VVDotOTAwfScKICAgICAgLSAnX0FQUF9DT01QVVRFX0NQVVM9JHtfQVBQX0NPTVBVVEVfQ1BVUzotMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9NRU1PUlk9JHtfQVBQX0NPTVBVVEVfTUVNT1JZOi0wfScKICAgICAgLSAnX0FQUF9DT01QVVRFX1NJWkVfTElNSVQ9JHtfQVBQX0NPTVBVVEVfU0laRV9MSU1JVDotMzAwMDAwMDB9JwogICAgICAtICdfQVBQX09QVElPTlNfRk9SQ0VfSFRUUFM9JHtfQVBQX09QVElPTlNfRk9SQ0VfSFRUUFM6LWRpc2FibGVkfScKICAgICAgLSAnX0FQUF9PUFRJT05TX1JPVVRFUl9GT1JDRV9IVFRQUz0ke19BUFBfT1BUSU9OU19ST1VURVJfRk9SQ0VfSFRUUFM6LWRpc2FibGVkfScKICAgICAgLSBfQVBQX0RPTUFJTj0kU0VSVklDRV9GUUROX0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ERVZJQ0U9JHtfQVBQX1NUT1JBR0VfREVWSUNFOi1sb2NhbH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1MzX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX1MzX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19SRUdJT049JHtfQVBQX1NUT1JBR0VfUzNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfUzNfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX1MzX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19FTkRQT0lOVD0ke19BUFBfU1RPUkFHRV9TM19FTkRQT0lOVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9SRUdJT046LXVzLXdlc3QtMDA0fScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0JVQ0tFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9TRUNSRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9MSU5PREVfUkVHSU9OOi1ldS1jZW50cmFsLTF9JwogICAgICAtICdfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9MSU5PREVfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9SRUdJT046LWV1LWNlbnRyYWwtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9XQVNBQklfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVR9JwogICAgICAtICdfQVBQX0RPTUFJTl9TSVRFUz0ke19BUFBfRE9NQUlOX1NJVEVTfScKICBhcHB3cml0ZS13b3JrZXItY2VydGlmaWNhdGVzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1jZXJ0aWZpY2F0ZXMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItY2VydGlmaWNhdGVzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgdm9sdW1lczoKICAgICAgLSAnYXBwd3JpdGUtY29uZmlnOi9zdG9yYWdlL2NvbmZpZzpydycKICAgICAgLSAnYXBwd3JpdGUtY2VydGlmaWNhdGVzOi9zdG9yYWdlL2NlcnRpZmljYXRlczpydycKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtIF9BUFBfRE9NQUlOPSRTRVJWSUNFX0ZRRE5fQVBQV1JJVEUKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0NOQU1FPSR7X0FQUF9ET01BSU5fVEFSR0VUX0NOQU1FfScKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0FBQUE9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQUFBQX0nCiAgICAgIC0gJ19BUFBfRE9NQUlOX1RBUkdFVF9BPSR7X0FQUF9ET01BSU5fVEFSR0VUX0F9JwogICAgICAtIF9BUFBfRE9NQUlOX0ZVTkNUSU9OUz0kU0VSVklDRV9GUUROX0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfRU1BSUxfQ0VSVElGSUNBVEVTPSR7X0FQUF9FTUFJTF9DRVJUSUZJQ0FURVM6LWVuYWJsZWR9JwogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgYXBwd3JpdGUtd29ya2VyLWZ1bmN0aW9uczoKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiB3b3JrZXItZnVuY3Rpb25zCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtd29ya2VyLWZ1bmN0aW9ucwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1yZWRpcwogICAgICAtIGFwcHdyaXRlLW1hcmlhZGIKICAgICAgLSBvcGVucnVudGltZXMtZXhlY3V0b3IKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtIF9BUFBfRE9NQUlOPSRTRVJWSUNFX0ZRRE5fQVBQV1JJVEUKICAgICAgLSAnX0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTPSR7X0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTOi1kaXNhYmxlZH0nCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfRlVOQ1RJT05TX1RJTUVPVVQ9JHtfQVBQX0ZVTkNUSU9OU19USU1FT1VUOi05MDB9JwogICAgICAtICdfQVBQX1NJVEVTX1RJTUVPVVQ9JHtfQVBQX1NJVEVTX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9CVUlMRF9USU1FT1VUPSR7X0FQUF9DT01QVVRFX0JVSUxEX1RJTUVPVVQ6LTkwMH0nCiAgICAgIC0gJ19BUFBfQ09NUFVURV9DUFVTPSR7X0FQUF9DT01QVVRFX0NQVVM6LTB9JwogICAgICAtICdfQVBQX0NPTVBVVEVfTUVNT1JZPSR7X0FQUF9DT01QVVRFX01FTU9SWTotMH0nCiAgICAgIC0gX0FQUF9FWEVDVVRPUl9TRUNSRVQ9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9FWEVDVVRPUl9IT1NUPSR7X0FQUF9FWEVDVVRPUl9IT1NUOi1odHRwOi8vYXBwd3JpdGUtZXhlY3V0b3IvdjF9JwogICAgICAtICdfQVBQX1VTQUdFX1NUQVRTPSR7X0FQUF9VU0FHRV9TVEFUUzotZW5hYmxlZH0nCiAgICAgIC0gJ19BUFBfRE9DS0VSX0hVQl9VU0VSTkFNRT0ke19BUFBfRE9DS0VSX0hVQl9VU0VSTkFNRX0nCiAgICAgIC0gJ19BUFBfRE9DS0VSX0hVQl9QQVNTV09SRD0ke19BUFBfRE9DS0VSX0hVQl9QQVNTV09SRH0nCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICBhcHB3cml0ZS13b3JrZXItbWFpbHM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogd29ya2VyLW1haWxzCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtd29ya2VyLW1haWxzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9TWVNURU1fRU1BSUxfTkFNRT0ke19BUFBfU1lTVEVNX0VNQUlMX05BTUU6LUFwcHdyaXRlfScKICAgICAgLSAnX0FQUF9TWVNURU1fRU1BSUxfQUREUkVTUz0ke19BUFBfU1lTVEVNX0VNQUlMX0FERFJFU1M6LXRlYW1AYXBwd3JpdGUuaW99JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX1NNVFBfSE9TVD0ke19BUFBfU01UUF9IT1NUfScKICAgICAgLSAnX0FQUF9TTVRQX1BPUlQ9JHtfQVBQX1NNVFBfUE9SVH0nCiAgICAgIC0gJ19BUFBfU01UUF9TRUNVUkU9JHtfQVBQX1NNVFBfU0VDVVJFfScKICAgICAgLSAnX0FQUF9TTVRQX1VTRVJOQU1FPSR7X0FQUF9TTVRQX1VTRVJOQU1FfScKICAgICAgLSAnX0FQUF9TTVRQX1BBU1NXT1JEPSR7X0FQUF9TTVRQX1BBU1NXT1JEfScKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogICAgICAtIF9BUFBfRE9NQUlOPSRTRVJWSUNFX0ZRRE5fQVBQV1JJVEUKICAgICAgLSAnX0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTPSR7X0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTOi1kaXNhYmxlZH0nCiAgYXBwd3JpdGUtd29ya2VyLW1lc3NhZ2luZzoKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiB3b3JrZXItbWVzc2FnaW5nCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtd29ya2VyLW1lc3NhZ2luZwogICAgdm9sdW1lczoKICAgICAgLSAnYXBwd3JpdGUtdXBsb2Fkczovc3RvcmFnZS91cGxvYWRzOnJ3JwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1yZWRpcwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gJ19BUFBfTE9HR0lOR19DT05GSUc9JHtfQVBQX0xPR0dJTkdfQ09ORklHfScKICAgICAgLSAnX0FQUF9TTVNfRlJPTT0ke19BUFBfU01TX0ZST019JwogICAgICAtICdfQVBQX1NNU19QUk9WSURFUj0ke19BUFBfU01TX1BST1ZJREVSfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RFVklDRT0ke19BUFBfU1RPUkFHRV9ERVZJQ0U6LWxvY2FsfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfUzNfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfUzNfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9TM19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9TM19CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfUzNfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1MzX0VORFBPSU5UPSR7X0FQUF9TVE9SQUdFX1MzX0VORFBPSU5UfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9SRUdJT049JHtfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1JFR0lPTjotdXMtd2VzdC0wMDR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9BQ0NFU1NfS0VZfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX0xJTk9ERV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVH0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9SRUdJT046LWV1LWNlbnRyYWwtMX0nCiAgICAgIC0gJ19BUFBfU1RPUkFHRV9MSU5PREVfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9CVUNLRVR9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX0FDQ0VTU19LRVl9JwogICAgICAtICdfQVBQX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9XQVNBQklfU0VDUkVUfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9SRUdJT049JHtfQVBQX1NUT1JBR0VfV0FTQUJJX1JFR0lPTjotZXUtY2VudHJhbC0xfScKICAgICAgLSAnX0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVH0nCiAgYXBwd3JpdGUtd29ya2VyLW1pZ3JhdGlvbnM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogd29ya2VyLW1pZ3JhdGlvbnMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItbWlncmF0aW9ucwogICAgdm9sdW1lczoKICAgICAgLSAnYXBwd3JpdGUtaW1wb3J0czovc3RvcmFnZS9pbXBvcnRzOnJ3JwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSBfQVBQX0RPTUFJTj0kU0VSVklDRV9GUUROX0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfRE9NQUlOX1RBUkdFVF9DTkFNRT0ke19BUFBfRE9NQUlOX1RBUkdFVF9DTkFNRX0nCiAgICAgIC0gJ19BUFBfRE9NQUlOX1RBUkdFVF9BQUFBPSR7X0FQUF9ET01BSU5fVEFSR0VUX0FBQUF9JwogICAgICAtICdfQVBQX0RPTUFJTl9UQVJHRVRfQT0ke19BUFBfRE9NQUlOX1RBUkdFVF9BfScKICAgICAgLSAnX0FQUF9FTUFJTF9TRUNVUklUWT0ke19BUFBfRU1BSUxfU0VDVVJJVFk6LWNlcnRzQGFwcHdyaXRlLmlvfScKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogICAgICAtICdfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX0lEPSR7X0FQUF9NSUdSQVRJT05TX0ZJUkVCQVNFX0NMSUVOVF9JRH0nCiAgICAgIC0gJ19BUFBfTUlHUkFUSU9OU19GSVJFQkFTRV9DTElFTlRfU0VDUkVUPSR7X0FQUF9NSUdSQVRJT05TX0ZJUkVCQVNFX0NMSUVOVF9TRUNSRVR9JwogIGFwcHdyaXRlLXRhc2stbWFpbnRlbmFuY2U6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogbWFpbnRlbmFuY2UKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS10YXNrLW1haW50ZW5hbmNlCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfRE9NQUlOPSRTRVJWSUNFX0ZRRE5fQVBQV1JJVEUKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0NOQU1FPSR7X0FQUF9ET01BSU5fVEFSR0VUX0NOQU1FfScKICAgICAgLSAnX0FQUF9ET01BSU5fVEFSR0VUX0FBQUE9JHtfQVBQX0RPTUFJTl9UQVJHRVRfQUFBQX0nCiAgICAgIC0gJ19BUFBfRE9NQUlOX1RBUkdFVF9BPSR7X0FQUF9ET01BSU5fVEFSR0VUX0F9JwogICAgICAtIF9BUFBfRE9NQUlOX0ZVTkNUSU9OUz0kU0VSVklDRV9GUUROX0FQUFdSSVRFCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogICAgICAtICdfQVBQX01BSU5URU5BTkNFX0lOVEVSVkFMPSR7X0FQUF9NQUlOVEVOQU5DRV9JTlRFUlZBTH0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0VYRUNVVElPTj0ke19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0VYRUNVVElPTn0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0NBQ0hFPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQ0FDSEU6LTI1OTIwMDB9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BQlVTRT0ke19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FCVVNFOi04NjQwMH0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FVRElUPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVQ6LTEyMDk2MDB9JwogICAgICAtICdfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVF9DT05TT0xFPSR7X0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVRfQ09OU09MRX0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX1VTQUdFX0hPVVJMWT0ke19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX1VTQUdFX0hPVVJMWTotODY0MDAwMH0nCiAgICAgIC0gJ19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX1NDSEVEVUxFUz0ke19BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX1NDSEVEVUxFUzotODY0MDB9JwogIGFwcHdyaXRlLXRhc2stc3RhdHMtcmVzb3VyY2VzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS10YXNrLXN0YXRzLXJlc291cmNlcwogICAgZW50cnlwb2ludDogc3RhdHMtcmVzb3VyY2VzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfVVNBR0VfU1RBVFM9JHtfQVBQX1VTQUdFX1NUQVRTOi1lbmFibGVkfScKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogICAgICAtICdfQVBQX0RBVEFCQVNFX1NIQVJFRF9UQUJMRVM9JHtfQVBQX0RBVEFCQVNFX1NIQVJFRF9UQUJMRVN9JwogICAgICAtICdfQVBQX1NUQVRTX1JFU09VUkNFU19JTlRFUlZBTD0ke19BUFBfU1RBVFNfUkVTT1VSQ0VTX0lOVEVSVkFMfScKICBhcHB3cml0ZS13b3JrZXItc3RhdHMtcmVzb3VyY2VzOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1zdGF0cy1yZXNvdXJjZXMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS13b3JrZXItc3RhdHMtcmVzb3VyY2VzCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfVVNBR0VfU1RBVFM9JHtfQVBQX1VTQUdFX1NUQVRTOi1lbmFibGVkfScKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogICAgICAtICdfQVBQX1NUQVRTX1JFU09VUkNFU19JTlRFUlZBTD0ke19BUFBfU1RBVFNfUkVTT1VSQ0VTX0lOVEVSVkFMfScKICBhcHB3cml0ZS13b3JrZXItc3RhdHMtdXNhZ2U6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogd29ya2VyLXN0YXRzLXVzYWdlCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtd29ya2VyLXN0YXRzLXVzYWdlCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfVVNBR0VfU1RBVFM9JHtfQVBQX1VTQUdFX1NUQVRTOi1lbmFibGVkfScKICAgICAgLSAnX0FQUF9MT0dHSU5HX0NPTkZJRz0ke19BUFBfTE9HR0lOR19DT05GSUd9JwogICAgICAtICdfQVBQX1VTQUdFX0FHR1JFR0FUSU9OX0lOVEVSVkFMPSR7X0FQUF9VU0FHRV9BR0dSRUdBVElPTl9JTlRFUlZBTDotMzB9JwogIGFwcHdyaXRlLXRhc2stc2NoZWR1bGVyLWZ1bmN0aW9uczoKICAgIGltYWdlOiAnYXBwd3JpdGUvYXBwd3JpdGU6MS43LjQnCiAgICBlbnRyeXBvaW50OiBzY2hlZHVsZS1mdW5jdGlvbnMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS10YXNrLXNjaGVkdWxlci1mdW5jdGlvbnMKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwd3JpdGUtbWFyaWFkYgogICAgICAtIGFwcHdyaXRlLXJlZGlzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnX0FQUF9FTlY9JHtfQVBQX0VOVjotcHJvZHVjdGlvbn0nCiAgICAgIC0gJ19BUFBfV09SS0VSX1BFUl9DT1JFPSR7X0FQUF9XT1JLRVJfUEVSX0NPUkU6LTZ9JwogICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjE9JFNFUlZJQ0VfUEFTU1dPUkRfNjRfQVBQV1JJVEUKICAgICAgLSAnX0FQUF9SRURJU19IT1NUPSR7X0FQUF9SRURJU19IT1NUOi1hcHB3cml0ZS1yZWRpc30nCiAgICAgIC0gJ19BUFBfUkVESVNfUE9SVD0ke19BUFBfUkVESVNfUE9SVDotNjM3OX0nCiAgICAgIC0gJ19BUFBfUkVESVNfVVNFUj0ke19BUFBfUkVESVNfVVNFUn0nCiAgICAgIC0gJ19BUFBfUkVESVNfUEFTUz0ke19BUFBfUkVESVNfUEFTU30nCiAgICAgIC0gJ19BUFBfREJfSE9TVD0ke19BUFBfREJfSE9TVDotYXBwd3JpdGUtbWFyaWFkYn0nCiAgICAgIC0gJ19BUFBfREJfUE9SVD0ke19BUFBfREJfUE9SVDotMzMwNn0nCiAgICAgIC0gJ19BUFBfREJfU0NIRU1BPSR7X0FQUF9EQl9TQ0hFTUE6LWFwcHdyaXRlfScKICAgICAgLSBfQVBQX0RCX1VTRVI9JFNFUlZJQ0VfVVNFUl9NQVJJQURCCiAgICAgIC0gX0FQUF9EQl9QQVNTPSRTRVJWSUNFX1BBU1NXT1JEX01BUklBREIKICBhcHB3cml0ZS10YXNrLXNjaGVkdWxlci1leGVjdXRpb25zOgogICAgaW1hZ2U6ICdhcHB3cml0ZS9hcHB3cml0ZToxLjcuNCcKICAgIGVudHJ5cG9pbnQ6IHNjaGVkdWxlLWV4ZWN1dGlvbnMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS10YXNrLXNjaGVkdWxlci1leGVjdXRpb25zCiAgICBkZXBlbmRzX29uOgogICAgICAtIGFwcHdyaXRlLW1hcmlhZGIKICAgICAgLSBhcHB3cml0ZS1yZWRpcwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdfQVBQX1dPUktFUl9QRVJfQ09SRT0ke19BUFBfV09SS0VSX1BFUl9DT1JFOi02fScKICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gJ19BUFBfUkVESVNfSE9TVD0ke19BUFBfUkVESVNfSE9TVDotYXBwd3JpdGUtcmVkaXN9JwogICAgICAtICdfQVBQX1JFRElTX1BPUlQ9JHtfQVBQX1JFRElTX1BPUlQ6LTYzNzl9JwogICAgICAtICdfQVBQX1JFRElTX1VTRVI9JHtfQVBQX1JFRElTX1VTRVJ9JwogICAgICAtICdfQVBQX1JFRElTX1BBU1M9JHtfQVBQX1JFRElTX1BBU1N9JwogICAgICAtICdfQVBQX0RCX0hPU1Q9JHtfQVBQX0RCX0hPU1Q6LWFwcHdyaXRlLW1hcmlhZGJ9JwogICAgICAtICdfQVBQX0RCX1BPUlQ9JHtfQVBQX0RCX1BPUlQ6LTMzMDZ9JwogICAgICAtICdfQVBQX0RCX1NDSEVNQT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gX0FQUF9EQl9VU0VSPSRTRVJWSUNFX1VTRVJfTUFSSUFEQgogICAgICAtIF9BUFBfREJfUEFTUz0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgYXBwd3JpdGUtdGFzay1zY2hlZHVsZXItbWVzc2FnZXM6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2FwcHdyaXRlOjEuNy40JwogICAgZW50cnlwb2ludDogc2NoZWR1bGUtbWVzc2FnZXMKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS10YXNrLXNjaGVkdWxlci1tZXNzYWdlcwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHB3cml0ZS1tYXJpYWRiCiAgICAgIC0gYXBwd3JpdGUtcmVkaXMKICAgIGVudmlyb25tZW50OgogICAgICAtICdfQVBQX0VOVj0ke19BUFBfRU5WOi1wcm9kdWN0aW9ufScKICAgICAgLSAnX0FQUF9XT1JLRVJfUEVSX0NPUkU9JHtfQVBQX1dPUktFUl9QRVJfQ09SRTotNn0nCiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMT0kU0VSVklDRV9QQVNTV09SRF82NF9BUFBXUklURQogICAgICAtICdfQVBQX1JFRElTX0hPU1Q9JHtfQVBQX1JFRElTX0hPU1Q6LWFwcHdyaXRlLXJlZGlzfScKICAgICAgLSAnX0FQUF9SRURJU19QT1JUPSR7X0FQUF9SRURJU19QT1JUOi02Mzc5fScKICAgICAgLSAnX0FQUF9SRURJU19VU0VSPSR7X0FQUF9SRURJU19VU0VSfScKICAgICAgLSAnX0FQUF9SRURJU19QQVNTPSR7X0FQUF9SRURJU19QQVNTfScKICAgICAgLSAnX0FQUF9EQl9IT1NUPSR7X0FQUF9EQl9IT1NUOi1hcHB3cml0ZS1tYXJpYWRifScKICAgICAgLSAnX0FQUF9EQl9QT1JUPSR7X0FQUF9EQl9QT1JUOi0zMzA2fScKICAgICAgLSAnX0FQUF9EQl9TQ0hFTUE9JHtfQVBQX0RCX1NDSEVNQTotYXBwd3JpdGV9JwogICAgICAtIF9BUFBfREJfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBfQVBQX0RCX1BBU1M9JFNFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQgogIGFwcHdyaXRlLWFzc2lzdGFudDoKICAgIGltYWdlOiAnYXBwd3JpdGUvYXNzaXN0YW50OjAuNC4wJwogICAgY29udGFpbmVyX25hbWU6IGFwcHdyaXRlLWFzc2lzdGFudAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ19BUFBfQVNTSVNUQU5UX09QRU5BSV9BUElfS0VZPSR7X0FQUF9BU1NJU1RBTlRfT1BFTkFJX0FQSV9LRVl9JwogIGFwcHdyaXRlLWJyb3dzZXI6CiAgICBpbWFnZTogJ2FwcHdyaXRlL2Jyb3dzZXI6MC4yLjQnCiAgICBjb250YWluZXJfbmFtZTogYXBwd3JpdGUtYnJvd3NlcgogIG9wZW5ydW50aW1lcy1leGVjdXRvcjoKICAgIGNvbnRhaW5lcl9uYW1lOiBvcGVucnVudGltZXMtZXhlY3V0b3IKICAgIGhvc3RuYW1lOiBhcHB3cml0ZS1leGVjdXRvcgogICAgc3RvcF9zaWduYWw6IFNJR0lOVAogICAgaW1hZ2U6ICdvcGVucnVudGltZXMvZXhlY3V0b3I6MC43LjE0JwogICAgbmV0d29ya3M6CiAgICAgIC0gcnVudGltZXMKICAgIHZvbHVtZXM6CiAgICAgIC0gJy92YXIvcnVuL2RvY2tlci5zb2NrOi92YXIvcnVuL2RvY2tlci5zb2NrJwogICAgICAtICdhcHB3cml0ZS1idWlsZHM6L3N0b3JhZ2UvYnVpbGRzOnJ3JwogICAgICAtICdhcHB3cml0ZS1mdW5jdGlvbnM6L3N0b3JhZ2UvZnVuY3Rpb25zOnJ3JwogICAgICAtICdhcHB3cml0ZS1zaXRlczovc3RvcmFnZS9zaXRlczpydycKICAgICAgLSAnL3RtcDovdG1wOnJ3JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ09QUl9FWEVDVVRPUl9JTkFDVElWRV9UUkVTSE9MRD0ke19BUFBfQ09NUFVURV9JTkFDVElWRV9USFJFU0hPTER9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfTUFJTlRFTkFOQ0VfSU5URVJWQUw9JHtfQVBQX0NPTVBVVEVfTUFJTlRFTkFOQ0VfSU5URVJWQUx9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfTkVUV09SSz0ke19BUFBfQ09NUFVURV9SVU5USU1FU19ORVRXT1JLOi1ydW50aW1lc30nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9ET0NLRVJfSFVCX1VTRVJOQU1FPSR7X0FQUF9ET0NLRVJfSFVCX1VTRVJOQU1FfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX0RPQ0tFUl9IVUJfUEFTU1dPUkQ9JHtfQVBQX0RPQ0tFUl9IVUJfUEFTU1dPUkR9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfRU5WPSR7X0FQUF9FTlY6LXByb2R1Y3Rpb259JwogICAgICAtICdPUFJfRVhFQ1VUT1JfUlVOVElNRVM9JHtfQVBQX0ZVTkNUSU9OU19SVU5USU1FU30sJHtfQVBQX1NJVEVTX1JVTlRJTUVTfScKICAgICAgLSBPUFJfRVhFQ1VUT1JfU0VDUkVUPSRTRVJWSUNFX1BBU1NXT1JEXzY0X0FQUFdSSVRFCiAgICAgIC0gT1BSX0VYRUNVVE9SX1JVTlRJTUVfVkVSU0lPTlM9djUKICAgICAgLSAnT1BSX0VYRUNVVE9SX0xPR0dJTkdfQ09ORklHPSR7X0FQUF9MT0dHSU5HX0NPTkZJR30nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0RFVklDRT0ke19BUFBfU1RPUkFHRV9ERVZJQ0U6LWxvY2FsfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfUzNfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfUzNfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX1MzX1NFQ1JFVH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX1MzX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9TM19SRUdJT059JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9TM19CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfUzNfQlVDS0VUfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfUzNfRU5EUE9JTlQ9JHtfQVBQX1NUT1JBR0VfUzNfRU5EUE9JTlR9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT049JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTn0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZPSR7X0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfQkFDS0JMQVpFX1NFQ1JFVD0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfQkFDS0JMQVpFX1JFR0lPTj0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfQkFDS0JMQVpFX0JVQ0tFVD0ke19BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUfScKICAgICAgLSAnT1BSX0VYRUNVVE9SX1NUT1JBR0VfTElOT0RFX0FDQ0VTU19LRVk9JHtfQVBQX1NUT1JBR0VfTElOT0RFX0FDQ0VTU19LRVl9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9MSU5PREVfU0VDUkVUPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9TRUNSRVR9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9MSU5PREVfUkVHSU9OPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9SRUdJT059JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9MSU5PREVfQlVDS0VUPSR7X0FQUF9TVE9SQUdFX0xJTk9ERV9CVUNLRVR9JwogICAgICAtICdPUFJfRVhFQ1VUT1JfU1RPUkFHRV9XQVNBQklfQUNDRVNTX0tFWT0ke19BUFBfU1RPUkFHRV9XQVNBQklfQUNDRVNTX0tFWX0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX1dBU0FCSV9TRUNSRVQ9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVH0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX1dBU0FCSV9SRUdJT049JHtfQVBQX1NUT1JBR0VfV0FTQUJJX1JFR0lPTn0nCiAgICAgIC0gJ09QUl9FWEVDVVRPUl9TVE9SQUdFX1dBU0FCSV9CVUNLRVQ9JHtfQVBQX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVH0nCiAgYXBwd3JpdGUtbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjoxMC4xMScKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS1tYXJpYWRiCiAgICB2b2x1bWVzOgogICAgICAtICdhcHB3cml0ZS1tYXJpYWRiOi92YXIvbGliL215c3FsOnJ3JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gTVlTUUxfUk9PVF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCUk9PVAogICAgICAtICdNWVNRTF9EQVRBQkFTRT0ke19BUFBfREJfU0NIRU1BOi1hcHB3cml0ZX0nCiAgICAgIC0gTVlTUUxfVVNFUj0kU0VSVklDRV9VU0VSX01BUklBREIKICAgICAgLSBNWVNRTF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NQVJJQURCCiAgICAgIC0gTUFSSUFEQl9BVVRPX1VQR1JBREU9MQogICAgY29tbWFuZDogJ215c3FsZCAtLWlubm9kYi1mbHVzaC1tZXRob2Q9ZnN5bmMnCiAgYXBwd3JpdGUtcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjcuMi40LWFscGluZScKICAgIGNvbnRhaW5lcl9uYW1lOiBhcHB3cml0ZS1yZWRpcwogICAgY29tbWFuZDogInJlZGlzLXNlcnZlciAtLW1heG1lbW9yeSAgICAgICAgICAgIDUxMm1iIC0tbWF4bWVtb3J5LXBvbGljeSAgICAgYWxsa2V5cy1scnUgLS1tYXhtZW1vcnktc2FtcGxlcyAgICA1XG4iCiAgICB2b2x1bWVzOgogICAgICAtICdhcHB3cml0ZS1yZWRpczovZGF0YTpydycKbmV0d29ya3M6CiAgcnVudGltZXM6CiAgICBuYW1lOiBydW50aW1lcwp2b2x1bWVzOgogIGFwcHdyaXRlLW1hcmlhZGI6IG51bGwKICBhcHB3cml0ZS1yZWRpczogbnVsbAogIGFwcHdyaXRlLWNhY2hlOiBudWxsCiAgYXBwd3JpdGUtdXBsb2FkczogbnVsbAogIGFwcHdyaXRlLWltcG9ydHM6IG51bGwKICBhcHB3cml0ZS1jZXJ0aWZpY2F0ZXM6IG51bGwKICBhcHB3cml0ZS1mdW5jdGlvbnM6IG51bGwKICBhcHB3cml0ZS1zaXRlczogbnVsbAogIGFwcHdyaXRlLWJ1aWxkczogbnVsbAogIGFwcHdyaXRlLWNvbmZpZzogbnVsbAo=",
"tags": [
"backend-as-a-service",
"platform"
@@ -203,6 +203,19 @@
"logo": "svgs/bitcoin.svg",
"minversion": "0.0.0"
},
+ "bluesky-pds": {
+ "documentation": "https://github.com/bluesky-social/pds?utm_source=coolify.io",
+ "slogan": "Bluesky PDS (Personal Data Server)",
+ "compose": "c2VydmljZXM6CiAgcGRzOgogICAgaW1hZ2U6ICdnaGNyLmlvL2JsdWVza3ktc29jaWFsL3BkczpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICcuL3Bkcy1kYXRhOi9wZHMnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fUERTXzMwMDAKICAgICAgLSAnUERTX0hPU1ROQU1FPSR7U0VSVklDRV9GUUROX1BEU30nCiAgICAgIC0gJ1BEU19KV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1RfU0VDUkVUfScKICAgICAgLSAnUERTX0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICAgIC0gJ1BEU19BRE1JTl9FTUFJTD0ke1NFUlZJQ0VfRU1BSUxfQURNSU59JwogICAgICAtICdQRFNfUExDX1JPVEFUSU9OX0tFWV9LMjU2X1BSSVZBVEVfS0VZX0hFWD0ke1BEU19QTENfUk9UQVRJT05fS0VZX0syNTZfUFJJVkFURV9LRVlfSEVYfScKICAgICAgLSAnUERTX0RBVEFfRElSRUNUT1JZPSR7UERTX0RBVEFfRElSRUNUT1JZOi0vcGRzfScKICAgICAgLSAnUERTX0JMT0JTVE9SRV9ESVNLX0xPQ0FUSU9OPSR7UERTX0RBVEFfRElSRUNUT1JZOi0vcGRzfS9ibG9ja3MnCiAgICAgIC0gJ1BEU19CTE9CX1VQTE9BRF9MSU1JVD0ke1BEU19CTE9CX1VQTE9BRF9MSU1JVDotNTI0Mjg4MDB9JwogICAgICAtICdQRFNfRElEX1BMQ19VUkw9JHtQRFNfRElEX1BMQ19VUkw6LWh0dHBzOi8vcGxjLmRpcmVjdG9yeX0nCiAgICAgIC0gJ1BEU19CU0tZX0FQUF9WSUVXX1VSTD0ke1BEU19CU0tZX0FQUF9WSUVXX1VSTDotaHR0cHM6Ly9hcGkuYnNreS5hcHB9JwogICAgICAtICdQRFNfQlNLWV9BUFBfVklFV19ESUQ9JHtQRFNfQlNLWV9BUFBfVklFV19ESUQ6LWRpZDp3ZWI6YXBpLmJza3kuYXBwfScKICAgICAgLSAnUERTX1JFUE9SVF9TRVJWSUNFX0ZRRE49JHtQRFNfUkVQT1JUX1NFUlZJQ0VfRlFETjotaHR0cHM6Ly9tb2QuYnNreS5hcHAveHJwYy9jb20uYXRwcm90by5tb2RlcmF0aW9uLmNyZWF0ZVJlcG9ydH0nCiAgICAgIC0gJ1BEU19SRVBPUlRfU0VSVklDRV9ESUQ9JHtQRFNfUkVQT1JUX1NFUlZJQ0VfRElEOi1kaWQ6cGxjOmFyN2M0Ynk0NnFqZHlkaGRldnZybmRhY30nCiAgICAgIC0gJ1BEU19DUkFXTEVSUz0ke1BEU19DUkFXTEVSUzotaHR0cHM6Ly9ic2t5Lm5ldHdvcmt9JwogICAgICAtICdMT0dfRU5BQkxFRD0ke0xPR19FTkFCTEVEOi10cnVlfScKICAgIGNvbW1hbmQ6ICJzaCAtYyAnXG4gIGVjaG8gXCJJbnN0YWxsaW5nIGN1cmwsIGJhc2gsIGFuZCBwZHNhZG1pbi4uLlwiXG4gIGFwayBhZGQgLS1uby1jYWNoZSBjdXJsIGJhc2ggJiYgXFxcbiAgY3VybCAtbyAvdXNyL2xvY2FsL2Jpbi9wZHNhZG1pbi5zaCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmx1ZXNreS1zb2NpYWwvcGRzL21haW4vcGRzYWRtaW4uc2ggJiYgXFxcbiAgY2htb2QgK3ggL3Vzci9sb2NhbC9iaW4vcGRzYWRtaW4uc2ggJiYgXFxcbiAgbG4gLXNmIC91c3IvbG9jYWwvYmluL3Bkc2FkbWluLnNoIC91c3IvbG9jYWwvYmluL3Bkc2FkbWluXG5cbiAgZWNobyBcIkdlbmVyYXRpbmcgL3Bkcy9wZHMuZW52Li4uXCJcbiAgcHJpbnRmIFwiJXNcXG5cIiBcXFxuICBcIlNFUlZJQ0VfRlFETl9QRFNfMzAwMD0kJHtTRVJWSUNFX0ZRRE5fUERTXzMwMDB9XCIgXFxcbiAgXCJQRFNfSE9TVE5BTUU9JCR7UERTX0hPU1ROQU1FfVwiIFxcXG4gIFwiUERTX0pXVF9TRUNSRVQ9JCR7UERTX0pXVF9TRUNSRVR9XCIgXFxcbiAgXCJQRFNfQURNSU5fUEFTU1dPUkQ9JCR7UERTX0FETUlOX1BBU1NXT1JEfVwiIFxcXG4gIFwiUERTX0FETUlOX0VNQUlMPSQke1BEU19BRE1JTl9FTUFJTH1cIiBcXFxuICBcIlBEU19QTENfUk9UQVRJT05fS0VZX0syNTZfUFJJVkFURV9LRVlfSEVYPSQke1BEU19QTENfUk9UQVRJT05fS0VZX0syNTZfUFJJVkFURV9LRVlfSEVYfVwiIFxcXG4gIFwiUERTX0RBVEFfRElSRUNUT1JZPSQke1BEU19EQVRBX0RJUkVDVE9SWX1cIiBcXFxuICBcIlBEU19CTE9CU1RPUkVfRElTS19MT0NBVElPTj0kJHtQRFNfREFUQV9ESVJFQ1RPUll9L2Jsb2Nrc1wiIFxcXG4gIFwiUERTX0JMT0JfVVBMT0FEX0xJTUlUPSQke1BEU19CTE9CX1VQTE9BRF9MSU1JVH1cIiBcXFxuICBcIlBEU19ESURfUExDX1VSTD0kJHtQRFNfRElEX1BMQ19VUkx9XCIgXFxcbiAgXCJQRFNfQlNLWV9BUFBfVklFV19VUkw9JCR7UERTX0JTS1lfQVBQX1ZJRVdfVVJMfVwiIFxcXG4gIFwiUERTX0JTS1lfQVBQX1ZJRVdfRElEPSQke1BEU19CU0tZX0FQUF9WSUVXX0RJRH1cIiBcXFxuICBcIlBEU19SRVBPUlRfU0VSVklDRV9GUUROPSQke1BEU19SRVBPUlRfU0VSVklDRV9GUUROfVwiIFxcXG4gIFwiUERTX1JFUE9SVF9TRVJWSUNFX0RJRD0kJHtQRFNfUkVQT1JUX1NFUlZJQ0VfRElEfVwiIFxcXG4gIFwiUERTX0NSQVdMRVJTPSQke1BEU19DUkFXTEVSU31cIiBcXFxuICBcIkxPR19FTkFCTEVEPSQke0xPR19FTkFCTEVEfVwiIFxcXG4gID4gL3Bkcy9wZHMuZW52XG5cbiAgZWNobyBcIkxhdW5jaGluZyBQRFMuLi5cIlxuICBleGVjIG5vZGUgLS1lbmFibGUtc291cmNlLW1hcHMgaW5kZXguanNcbidcbiIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSB3Z2V0CiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTozMDAwL3hycGMvX2hlYWx0aCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "bluesky",
+ "pds",
+ "platform"
+ ],
+ "logo": "svgs/bluesky.svg",
+ "minversion": "0.0.0",
+ "port": "3000"
+ },
"bookstack": {
"documentation": "https://www.bookstackapp.com/docs/?utm_source=coolify.io",
"slogan": "BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information",
@@ -350,7 +363,7 @@
"chaskiq": {
"documentation": "https://chaskiq.io?utm_source=coolify.io",
"slogan": "Chaskiq is an messaging platform for marketing, support & sales",
- "compose": "c2VydmljZXM6CiAgY2hhc2tpcToKICAgIGltYWdlOiAnY2hhc2tpcS9jaGFza2lxOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9DSEFTS0lRXzMwMDAKICAgICAgLSAnUkVESVNfVVJMPXJlZGlzOi8vcmVkaXM6NjM3OS8nCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcG9zdGdyZXNxbDo1NDMyLyR7UE9TVEdSRVNfREI6LWNoYXNraXF9JwogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtICdTRVJWSUNFX1VSTD0ke1NFUlZJQ0VfVVJMX0NIQVNLSVF9JwogICAgICAtICdIT1NUPSR7U0VSVklDRV9GUUROX0NIQVNLSVFfMzAwMH0nCiAgICAgIC0gJ0FTU0VUX0hPU1Q9JHtTRVJWSUNFX0ZRRE5fQ0hBU0tJUV8zMDAwfScKICAgICAgLSAnV1M9d3NzOi8vJHtTRVJWSUNFX1VSTF9DSEFTS0lRfS9jYWJsZScKICAgICAgLSBTTlNfQ09ORklHVVJBVElPTl9TRVQ9bWV0cmljcwogICAgICAtICdBV1NfQUNDRVNTX0tFWV9JRD0ke0FXU19BQ0NFU1NfS0VZX0lEOi19JwogICAgICAtICdBV1NfU0VDUkVUX0FDQ0VTU19LRVk9JHtBV1NfU0VDUkVUX0FDQ0VTU19LRVk6LX0nCiAgICAgIC0gJ0FXU19TM19CVUNLRVQ9JHtBV1NfUzNfQlVDS0VUOi19JwogICAgICAtICdBV1NfUzNfUkVHSU9OPSR7QVdTX1MzX1JFR0lPTjotfScKICAgICAgLSAnQURNSU5fRU1BSUw9JHtBRE1JTl9FTUFJTDotYWRtaW5AZXhhbXBsZX0nCiAgICAgIC0gJ0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICAgIC0gJ0RFRkFVTFRfU0VOREVSX0VNQUlMPSR7REVGQVVMVF9TRU5ERVJfRU1BSUw6LWFkbWluQGV4YW1wbGV9JwogICAgICAtIExPQ0FMX1NUT1JBR0VfUEFUSD0vZGF0YS9zdG9yYWdlCiAgICAgIC0gJ0FDVElWRV9TVE9SQUdFX1NFUlZJQ0U9JHtBQ1RJVkVfU1RPUkFHRV9TRVJWSUNFOi1sb2NhbH0nCiAgICAgIC0gJ1NNVFBfREVMSVZFUllfTUVUSE9EPSR7U01UUF9ERUxJVkVSWV9NRVRIT0Q6LX0nCiAgICAgIC0gJ1NNVFBfQUREUkVTUz0ke1NNVFBfQUREUkVTUzotfScKICAgICAgLSAnU01UUF9VU0VSTkFNRT0ke1NNVFBfVVNFUk5BTUU6LX0nCiAgICAgIC0gJ1NNVFBfUEFTU1dPUkQ9JHtTTVRQX1BBU1NXT1JEOi19JwogICAgICAtICdDSEFTS0lRX0FQUFNUT1JFX1RPS0VOPSR7Q0hBU0tJUV9BUFBTVE9SRV9UT0tFTjotfScKICAgICAgLSBBUFBfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBSQUlMU19FTlY9cHJvZHVjdGlvbgogICAgICAtIFJBQ0tfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBSQUlMU19TRVJWRV9TVEFUSUNfRklMRVM9dHJ1ZQogICAgICAtIFNFQ1JFVF9LRVlfQkFTRT0kU0VSVklDRV9QQVNTV09SRF82NF9TRUNSRVQKICAgICAgLSBSQUlMU19MT0dfVE9fU1RET1VUPXRydWUKICAgICAgLSBFTkFCTEVEX0FVRElUUz10cnVlCiAgICAgIC0gVFo9RXVyb3BlL01hZHJpZAogICAgZW50cnlwb2ludDoKICAgICAgLSAvZW50cnlwb2ludC5zaAogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnY2hhc2tpcS1zdG9yYWdlOi9kYXRhL3N0b3JhZ2UnCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2VudHJ5cG9pbnQuc2gKICAgICAgICB0YXJnZXQ6IC9lbnRyeXBvaW50LnNoCiAgICAgICAgY29udGVudDogIiMhL2Jpbi9zaFxuc2V0IC1lXG5ybSAtZiAvdXNyL3NyYy9hcHAvdG1wL3BpZHMvc2VydmVyLnBpZFxuZXhlYyBcIiRAXCJcbmVjaG8gXCJSdW5uaW5nIGRhdGFiYXNlIG1pZ3JhdGlvbnMuLi5cIlxuYnVuZGxlIGV4ZWMgcmFpbHMgZGI6c2V0dXAgfHwgdHJ1ZVxuYnVuZGxlIGV4ZWMgcmFpbHMgZGI6bWlncmF0ZVxuZWNobyBcIkZpbmlzaGVkIHJ1bm5pbmcgZGF0YWJhc2UgbWlncmF0aW9ucy5cIlxuZWNobyBcIlJ1bm5pbmcgcGFja2FnZXMgdXBkYXRlLi4uXCJcbmJ1bmRsZSBleGVjIHJhaWxzIHBhY2thZ2VzOnVwZGF0ZVxuZWNobyBcIkZpbmlzaGVkIHBhY2thZ2VzIHVwZGF0ZS5cIlxuaWYgWyAhIC1mIC91c3Ivc3JjL2FwcC9hZG1pbl9nZW5lcmF0ZWQgXTsgdGhlblxuICAgIGVjaG8gXCIvdXNyL3NyYy9hcHAvYWRtaW5fZ2VuZXJhdGVkIG5vdCBmb3VuZCwgZXhlY3V0aW5nIGFkbWluIGdlbmVyYXRpb24uLlwiXG4gICAgYnVuZGxlIGV4ZWMgcmFrZSBhZG1pbl9nZW5lcmF0b3JcbiAgICB0b3VjaCAvdXNyL3NyYy9hcHAvYWRtaW5fZ2VuZXJhdGVkXG4gICAgZWNobyBcIkFkbWluIGdlbmVyYXRpb24gZmluaXNoZWQgIVwiXG5maVxuYnVuZGxlIGV4ZWMgcmFpbHMgcyAtYiAwLjAuMC4wIC1wIDMwMDBcbiIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTozMDAwJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDE1CiAgc2lkZWtpcToKICAgIGltYWdlOiAnY2hhc2tpcS9jaGFza2lxOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LycKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlc3FsOjU0MzIvJHtQT1NUR1JFU19EQjotY2hhc2tpcX0nCiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gJ0hPU1Q9JHtTRVJWSUNFX0ZRRE5fQ0hBU0tJUV8zMDAwfScKICAgICAgLSAnQVNTRVRfSE9TVD0ke1NFUlZJQ0VfRlFETl9DSEFTS0lRXzMwMDB9JwogICAgICAtICdXUz13c3M6Ly8ke1NFUlZJQ0VfVVJMX0NIQVNLSVF9L2NhYmxlJwogICAgICAtIFNOU19DT05GSUdVUkFUSU9OX1NFVD1tZXRyaWNzCiAgICAgIC0gJ0FXU19BQ0NFU1NfS0VZX0lEPSR7QVdTX0FDQ0VTU19LRVlfSUQ6LX0nCiAgICAgIC0gJ0FXU19TRUNSRVRfQUNDRVNTX0tFWT0ke0FXU19TRUNSRVRfQUNDRVNTX0tFWTotfScKICAgICAgLSAnQVdTX1MzX0JVQ0tFVD0ke0FXU19TM19CVUNLRVQ6LX0nCiAgICAgIC0gJ0FXU19TM19SRUdJT049JHtBV1NfUzNfUkVHSU9OOi19JwogICAgICAtICdBRE1JTl9FTUFJTD0ke0FETUlOX0VNQUlMOi1hZG1pbkBleGFtcGxlfScKICAgICAgLSAnQURNSU5fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0FETUlOfScKICAgICAgLSAnREVGQVVMVF9TRU5ERVJfRU1BSUw9JHtERUZBVUxUX1NFTkRFUl9FTUFJTDotYWRtaW5AZXhhbXBsZX0nCiAgICAgIC0gTE9DQUxfU1RPUkFHRV9QQVRIPS9kYXRhL3N0b3JhZ2UKICAgICAgLSAnQUNUSVZFX1NUT1JBR0VfU0VSVklDRT0ke0FDVElWRV9TVE9SQUdFX1NFUlZJQ0U6LWxvY2FsfScKICAgICAgLSAnU01UUF9ERUxJVkVSWV9NRVRIT0Q9JHtTTVRQX0RFTElWRVJZX01FVEhPRDotfScKICAgICAgLSAnU01UUF9BRERSRVNTPSR7U01UUF9BRERSRVNTOi19JwogICAgICAtICdTTVRQX1VTRVJOQU1FPSR7U01UUF9VU0VSTkFNRTotfScKICAgICAgLSAnU01UUF9QQVNTV09SRD0ke1NNVFBfUEFTU1dPUkQ6LX0nCiAgICAgIC0gJ0NIQVNLSVFfQVBQU1RPUkVfVE9LRU49JHtDSEFTS0lRX0FQUFNUT1JFX1RPS0VOOi19JwogICAgICAtIEFQUF9FTlY9cHJvZHVjdGlvbgogICAgICAtIFJBSUxTX0VOVj1wcm9kdWN0aW9uCiAgICAgIC0gUkFDS19FTlY9cHJvZHVjdGlvbgogICAgICAtIFJBSUxTX1NFUlZFX1NUQVRJQ19GSUxFUz10cnVlCiAgICAgIC0gU0VDUkVUX0tFWV9CQVNFPSRTRVJWSUNFX1BBU1NXT1JEXzY0X1NFQ1JFVAogICAgICAtIFJBSUxTX0xPR19UT19TVERPVVQ9dHJ1ZQogICAgICAtIEVOQUJMRURfQVVESVRTPXRydWUKICAgICAgLSBUWj1FdXJvcGUvTWFkcmlkCiAgICB2b2x1bWVzOgogICAgICAtICdjaGFza2lxLXN0b3JhZ2U6L2RhdGEvc3RvcmFnZScKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzcWw6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgY2hhc2tpcToKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgY29tbWFuZDoKICAgICAgLSBidW5kbGUKICAgICAgLSBleGVjCiAgICAgIC0gc2lkZWtpcQogICAgICAtICctQycKICAgICAgLSBjb25maWcvc2lkZWtpcS55bWwKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAiYnVuZGxlIGV4ZWMgcmFpbHMgcnVubmVyICdwdXRzIFNpZGVraXEucmVkaXMoJjppbmZvKScgPiAvZGV2L251bGwgMj4mMSIKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIHBvc3RncmVzcWw6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE0LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1jaGFza2lxfScKICAgICAgLSAnUE9TVEdSRVNfSU5JVERCX0FSR1M9IC0tZGF0YS1jaGVja3N1bXMnCiAgICAgIC0gUFNRTF9ISVNURklMRT0vcm9vdC9sb2cvLnBzcWxfaGlzdG9yeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjYtYWxwaW5lJwogICAgcmVzdGFydDogYWx3YXlzCiAgICB2b2x1bWVzOgogICAgICAtICdyZWRpcy1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTAK",
+ "compose": "c2VydmljZXM6CiAgY2hhc2tpcToKICAgIGltYWdlOiAnY2hhc2tpcS9jaGFza2lxOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9DSEFTS0lRXzMwMDAKICAgICAgLSAnUkVESVNfVVJMPXJlZGlzOi8vcmVkaXM6NjM3OS8nCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyRTRVJWSUNFX1VTRVJfUE9TVEdSRVM6JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVNAcG9zdGdyZXNxbDo1NDMyLyR7UE9TVEdSRVNfREI6LWNoYXNraXF9JwogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtICdTRVJWSUNFX0ZRRE49JHtTRVJWSUNFX0ZRRE5fQ0hBU0tJUX0nCiAgICAgIC0gJ0hPU1Q9JHtTRVJWSUNFX0ZRRE5fQ0hBU0tJUV8zMDAwfScKICAgICAgLSAnQVNTRVRfSE9TVD0ke1NFUlZJQ0VfRlFETl9DSEFTS0lRXzMwMDB9JwogICAgICAtICdXUz13c3M6Ly8ke1NFUlZJQ0VfRlFETl9DSEFTS0lRfS9jYWJsZScKICAgICAgLSBTTlNfQ09ORklHVVJBVElPTl9TRVQ9bWV0cmljcwogICAgICAtICdBV1NfQUNDRVNTX0tFWV9JRD0ke0FXU19BQ0NFU1NfS0VZX0lEOi19JwogICAgICAtICdBV1NfU0VDUkVUX0FDQ0VTU19LRVk9JHtBV1NfU0VDUkVUX0FDQ0VTU19LRVk6LX0nCiAgICAgIC0gJ0FXU19TM19CVUNLRVQ9JHtBV1NfUzNfQlVDS0VUOi19JwogICAgICAtICdBV1NfUzNfUkVHSU9OPSR7QVdTX1MzX1JFR0lPTjotfScKICAgICAgLSAnQURNSU5fRU1BSUw9JHtBRE1JTl9FTUFJTDotYWRtaW5AZXhhbXBsZX0nCiAgICAgIC0gJ0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICAgIC0gJ0RFRkFVTFRfU0VOREVSX0VNQUlMPSR7REVGQVVMVF9TRU5ERVJfRU1BSUw6LWFkbWluQGV4YW1wbGV9JwogICAgICAtIExPQ0FMX1NUT1JBR0VfUEFUSD0vZGF0YS9zdG9yYWdlCiAgICAgIC0gJ0FDVElWRV9TVE9SQUdFX1NFUlZJQ0U9JHtBQ1RJVkVfU1RPUkFHRV9TRVJWSUNFOi1sb2NhbH0nCiAgICAgIC0gJ1NNVFBfREVMSVZFUllfTUVUSE9EPSR7U01UUF9ERUxJVkVSWV9NRVRIT0Q6LX0nCiAgICAgIC0gJ1NNVFBfQUREUkVTUz0ke1NNVFBfQUREUkVTUzotfScKICAgICAgLSAnU01UUF9VU0VSTkFNRT0ke1NNVFBfVVNFUk5BTUU6LX0nCiAgICAgIC0gJ1NNVFBfUEFTU1dPUkQ9JHtTTVRQX1BBU1NXT1JEOi19JwogICAgICAtICdDSEFTS0lRX0FQUFNUT1JFX1RPS0VOPSR7Q0hBU0tJUV9BUFBTVE9SRV9UT0tFTjotfScKICAgICAgLSBBUFBfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBSQUlMU19FTlY9cHJvZHVjdGlvbgogICAgICAtIFJBQ0tfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBSQUlMU19TRVJWRV9TVEFUSUNfRklMRVM9dHJ1ZQogICAgICAtIFNFQ1JFVF9LRVlfQkFTRT0kU0VSVklDRV9QQVNTV09SRF82NF9TRUNSRVQKICAgICAgLSBSQUlMU19MT0dfVE9fU1RET1VUPXRydWUKICAgICAgLSBFTkFCTEVEX0FVRElUUz10cnVlCiAgICAgIC0gVFo9RXVyb3BlL01hZHJpZAogICAgZW50cnlwb2ludDoKICAgICAgLSAvZW50cnlwb2ludC5zaAogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgdm9sdW1lczoKICAgICAgLSAnY2hhc2tpcS1zdG9yYWdlOi9kYXRhL3N0b3JhZ2UnCiAgICAgIC0KICAgICAgICB0eXBlOiBiaW5kCiAgICAgICAgc291cmNlOiAuL2VudHJ5cG9pbnQuc2gKICAgICAgICB0YXJnZXQ6IC9lbnRyeXBvaW50LnNoCiAgICAgICAgY29udGVudDogIiMhL2Jpbi9zaFxuc2V0IC1lXG5ybSAtZiAvdXNyL3NyYy9hcHAvdG1wL3BpZHMvc2VydmVyLnBpZFxuZXhlYyBcIiRAXCJcbmVjaG8gXCJSdW5uaW5nIGRhdGFiYXNlIG1pZ3JhdGlvbnMuLi5cIlxuYnVuZGxlIGV4ZWMgcmFpbHMgZGI6c2V0dXAgfHwgdHJ1ZVxuYnVuZGxlIGV4ZWMgcmFpbHMgZGI6bWlncmF0ZVxuZWNobyBcIkZpbmlzaGVkIHJ1bm5pbmcgZGF0YWJhc2UgbWlncmF0aW9ucy5cIlxuZWNobyBcIlJ1bm5pbmcgcGFja2FnZXMgdXBkYXRlLi4uXCJcbmJ1bmRsZSBleGVjIHJhaWxzIHBhY2thZ2VzOnVwZGF0ZVxuZWNobyBcIkZpbmlzaGVkIHBhY2thZ2VzIHVwZGF0ZS5cIlxuaWYgWyAhIC1mIC91c3Ivc3JjL2FwcC9hZG1pbl9nZW5lcmF0ZWQgXTsgdGhlblxuICAgIGVjaG8gXCIvdXNyL3NyYy9hcHAvYWRtaW5fZ2VuZXJhdGVkIG5vdCBmb3VuZCwgZXhlY3V0aW5nIGFkbWluIGdlbmVyYXRpb24uLlwiXG4gICAgYnVuZGxlIGV4ZWMgcmFrZSBhZG1pbl9nZW5lcmF0b3JcbiAgICB0b3VjaCAvdXNyL3NyYy9hcHAvYWRtaW5fZ2VuZXJhdGVkXG4gICAgZWNobyBcIkFkbWluIGdlbmVyYXRpb24gZmluaXNoZWQgIVwiXG5maVxuYnVuZGxlIGV4ZWMgcmFpbHMgcyAtYiAwLjAuMC4wIC1wIDMwMDBcbiIKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTozMDAwJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDE1CiAgc2lkZWtpcToKICAgIGltYWdlOiAnY2hhc2tpcS9jaGFza2lxOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdSRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5LycKICAgICAgLSAnREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJFNFUlZJQ0VfVVNFUl9QT1NUR1JFUzokU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU0Bwb3N0Z3Jlc3FsOjU0MzIvJHtQT1NUR1JFU19EQjotY2hhc2tpcX0nCiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gJ0hPU1Q9JHtTRVJWSUNFX0ZRRE5fQ0hBU0tJUV8zMDAwfScKICAgICAgLSAnQVNTRVRfSE9TVD0ke1NFUlZJQ0VfRlFETl9DSEFTS0lRXzMwMDB9JwogICAgICAtICdXUz13c3M6Ly8ke1NFUlZJQ0VfRlFETl9DSEFTS0lRfS9jYWJsZScKICAgICAgLSBTTlNfQ09ORklHVVJBVElPTl9TRVQ9bWV0cmljcwogICAgICAtICdBV1NfQUNDRVNTX0tFWV9JRD0ke0FXU19BQ0NFU1NfS0VZX0lEOi19JwogICAgICAtICdBV1NfU0VDUkVUX0FDQ0VTU19LRVk9JHtBV1NfU0VDUkVUX0FDQ0VTU19LRVk6LX0nCiAgICAgIC0gJ0FXU19TM19CVUNLRVQ9JHtBV1NfUzNfQlVDS0VUOi19JwogICAgICAtICdBV1NfUzNfUkVHSU9OPSR7QVdTX1MzX1JFR0lPTjotfScKICAgICAgLSAnQURNSU5fRU1BSUw9JHtBRE1JTl9FTUFJTDotYWRtaW5AZXhhbXBsZX0nCiAgICAgIC0gJ0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICAgIC0gJ0RFRkFVTFRfU0VOREVSX0VNQUlMPSR7REVGQVVMVF9TRU5ERVJfRU1BSUw6LWFkbWluQGV4YW1wbGV9JwogICAgICAtIExPQ0FMX1NUT1JBR0VfUEFUSD0vZGF0YS9zdG9yYWdlCiAgICAgIC0gJ0FDVElWRV9TVE9SQUdFX1NFUlZJQ0U9JHtBQ1RJVkVfU1RPUkFHRV9TRVJWSUNFOi1sb2NhbH0nCiAgICAgIC0gJ1NNVFBfREVMSVZFUllfTUVUSE9EPSR7U01UUF9ERUxJVkVSWV9NRVRIT0Q6LX0nCiAgICAgIC0gJ1NNVFBfQUREUkVTUz0ke1NNVFBfQUREUkVTUzotfScKICAgICAgLSAnU01UUF9VU0VSTkFNRT0ke1NNVFBfVVNFUk5BTUU6LX0nCiAgICAgIC0gJ1NNVFBfUEFTU1dPUkQ9JHtTTVRQX1BBU1NXT1JEOi19JwogICAgICAtICdDSEFTS0lRX0FQUFNUT1JFX1RPS0VOPSR7Q0hBU0tJUV9BUFBTVE9SRV9UT0tFTjotfScKICAgICAgLSBBUFBfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBSQUlMU19FTlY9cHJvZHVjdGlvbgogICAgICAtIFJBQ0tfRU5WPXByb2R1Y3Rpb24KICAgICAgLSBSQUlMU19TRVJWRV9TVEFUSUNfRklMRVM9dHJ1ZQogICAgICAtIFNFQ1JFVF9LRVlfQkFTRT0kU0VSVklDRV9QQVNTV09SRF82NF9TRUNSRVQKICAgICAgLSBSQUlMU19MT0dfVE9fU1RET1VUPXRydWUKICAgICAgLSBFTkFCTEVEX0FVRElUUz10cnVlCiAgICAgIC0gVFo9RXVyb3BlL01hZHJpZAogICAgdm9sdW1lczoKICAgICAgLSAnY2hhc2tpcS1zdG9yYWdlOi9kYXRhL3N0b3JhZ2UnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIGNoYXNraXE6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGNvbW1hbmQ6CiAgICAgIC0gYnVuZGxlCiAgICAgIC0gZXhlYwogICAgICAtIHNpZGVraXEKICAgICAgLSAnLUMnCiAgICAgIC0gY29uZmlnL3NpZGVraXEueW1sCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gImJ1bmRsZSBleGVjIHJhaWxzIHJ1bm5lciAncHV0cyBTaWRla2lxLnJlZGlzKCY6aW5mbyknID4gL2Rldi9udWxsIDI+JjEiCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNC1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdwb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotY2hhc2tpcX0nCiAgICAgIC0gJ1BPU1RHUkVTX0lOSVREQl9BUkdTPSAtLWRhdGEtY2hlY2tzdW1zJwogICAgICAtIFBTUUxfSElTVEZJTEU9L3Jvb3QvbG9nLy5wc3FsX2hpc3RvcnkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMAogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo2LWFscGluZScKICAgIHJlc3RhcnQ6IGFsd2F5cwogICAgdm9sdW1lczoKICAgICAgLSAncmVkaXMtZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEwCg==",
"tags": [
"chaskiq",
"messaging",
@@ -517,7 +530,7 @@
"codimd": {
"documentation": "https://hackmd.io/c/codimd-documentation?utm_source=coolify.io",
"slogan": "Realtime collaborative markdown notes on all platforms",
- "compose": "c2VydmljZXM6CiAgY29kaW1kOgogICAgaW1hZ2U6ICduYWJvLmNvZGltZC5kZXYvaGFja21kaW8vaGFja21kOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9DT0RJTURfMzAwMAogICAgICAtICdDTURfRE9NQUlOPSR7U0VSVklDRV9VUkxfQ09ESU1EfScKICAgICAgLSAnQ01EX1BST1RPQ09MX1VTRVNTTD0ke0NNRF9QUk9UT0NPTF9VU0VTU0w6LWZhbHNlfScKICAgICAgLSAnQ01EX1NFU1NJT05fU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9TRVNTSU9OU0VDUkVUfScKICAgICAgLSAnQ01EX1VTRUNETj0ke0NNRF9VU0VDRE46LWZhbHNlfScKICAgICAgLSAnQ01EX0RCX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHBvc3RncmVzOjU0MzIvJHtQT1NUR1JFU19EQjotY29kaW1kLWRifScKICAgICAgLSAnQ01EX0VNQUlMPSR7Q01EX0VNQUlMOi10cnVlfScKICAgICAgLSAnQ01EX0FMTE9XX0VNQUlMX1JFR0lTVEVSPSR7Q01EX0FMTE9XX0VNQUlMX1JFR0lTVEVSOi10cnVlfScKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ2N1cmwgLWYgaHR0cDovL2xvY2FsaG9zdDozMDAwLyB8fCBleGl0IDEnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogNQogICAgdm9sdW1lczoKICAgICAgLSAndXBsb2Fkc19kYXRhOi9ob21lL2hhY2ttZC9hcHAvcHVibGljL3VwbG9hZHMnCiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2NvZGltZF9wb3N0Z3Jlc19kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotY29kaW1kLWRifScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "compose": "c2VydmljZXM6CiAgY29kaW1kOgogICAgaW1hZ2U6ICduYWJvLmNvZGltZC5kZXYvaGFja21kaW8vaGFja21kOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9DT0RJTURfMzAwMAogICAgICAtICdDTURfRE9NQUlOPSR7U0VSVklDRV9GUUROX0NPRElNRH0nCiAgICAgIC0gJ0NNRF9QUk9UT0NPTF9VU0VTU0w9JHtDTURfUFJPVE9DT0xfVVNFU1NMOi1mYWxzZX0nCiAgICAgIC0gJ0NNRF9TRVNTSU9OX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfU0VTU0lPTlNFQ1JFVH0nCiAgICAgIC0gJ0NNRF9VU0VDRE49JHtDTURfVVNFQ0ROOi1mYWxzZX0nCiAgICAgIC0gJ0NNRF9EQl9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREI6LWNvZGltZC1kYn0nCiAgICAgIC0gJ0NNRF9FTUFJTD0ke0NNRF9FTUFJTDotdHJ1ZX0nCiAgICAgIC0gJ0NNRF9BTExPV19FTUFJTF9SRUdJU1RFUj0ke0NNRF9BTExPV19FTUFJTF9SRUdJU1RFUjotdHJ1ZX0nCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdjdXJsIC1mIGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC8gfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDUKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3VwbG9hZHNfZGF0YTovaG9tZS9oYWNrbWQvYXBwL3B1YmxpYy91cGxvYWRzJwogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdjb2RpbWRfcG9zdGdyZXNfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LWNvZGltZC1kYn0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
"tags": [
"markdown",
"md",
@@ -685,7 +698,7 @@
"documenso": {
"documentation": "https://docs.documenso.com/?utm_source=coolify.io",
"slogan": "Document signing, finally open source",
- "compose": "c2VydmljZXM6CiAgZG9jdW1lbnNvOgogICAgaW1hZ2U6IGRvY3VtZW5zby9kb2N1bWVuc28KICAgIGRlcGVuZHNfb246CiAgICAgIGRhdGFiYXNlOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fRE9DVU1FTlNPXzMwMDAKICAgICAgLSAnTkVYVEFVVEhfVVJMPSR7U0VSVklDRV9GUUROX0RPQ1VNRU5TT30nCiAgICAgIC0gJ05FWFRBVVRIX1NFQ1JFVD0ke1NFUlZJQ0VfQkFTRTY0X0FVVEhTRUNSRVR9JwogICAgICAtICdORVhUX1BSSVZBVEVfRU5DUllQVElPTl9LRVk9JHtTRVJWSUNFX0JBU0U2NF9FTkNSWVBUSU9OS0VZfScKICAgICAgLSAnTkVYVF9QUklWQVRFX0VOQ1JZUFRJT05fU0VDT05EQVJZX0tFWT0ke1NFUlZJQ0VfQkFTRTY0X1NFQ09OREFSWUVOQ1JZUFRJT05LRVl9JwogICAgICAtICdORVhUX1BVQkxJQ19XRUJBUFBfVVJMPSR7U0VSVklDRV9GUUROX0RPQ1VNRU5TT30nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9TTVRQX1RSQU5TUE9SVD0ke05FWFRfUFJJVkFURV9TTVRQX1RSQU5TUE9SVH0nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9TTVRQX0hPU1Q9JHtORVhUX1BSSVZBVEVfU01UUF9IT1NUfScKICAgICAgLSAnTkVYVF9QUklWQVRFX1NNVFBfUE9SVD0ke05FWFRfUFJJVkFURV9TTVRQX1BPUlR9JwogICAgICAtICdORVhUX1BSSVZBVEVfU01UUF9VU0VSTkFNRT0ke05FWFRfUFJJVkFURV9TTVRQX1VTRVJOQU1FfScKICAgICAgLSAnTkVYVF9QUklWQVRFX1NNVFBfUEFTU1dPUkQ9JHtORVhUX1BSSVZBVEVfU01UUF9QQVNTV09SRH0nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9TTVRQX0ZST01fTkFNRT0ke05FWFRfUFJJVkFURV9TTVRQX0ZST01fTkFNRX0nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9TTVRQX0ZST01fQUREUkVTUz0ke05FWFRfUFJJVkFURV9TTVRQX0ZST01fQUREUkVTU30nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9EQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGRhdGFiYXNlLyR7UE9TVEdSRVNfREI6LWRvY3VtZW5zby1kYn0/c2NoZW1hPXB1YmxpYycKICAgICAgLSAnTkVYVF9QUklWQVRFX0RJUkVDVF9EQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGRhdGFiYXNlLyR7UE9TVEdSRVNfREI6LWRvY3VtZW5zby1kYn0/c2NoZW1hPXB1YmxpYycKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAid2dldCAtcSAtTyAtIGh0dHA6Ly9kb2N1bWVuc286MzAwMC8gfCBncmVwIC1xICdTaWduIGluIHRvIHlvdXIgYWNjb3VudCciCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMjAKICBkYXRhYmFzZToKICAgIGltYWdlOiAncG9zdGdyZXM6MTcnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LWRvY3VtZW5zby1kYn0nCiAgICB2b2x1bWVzOgogICAgICAtICdkb2N1bWVuc29fcG9zdGdyZXNxbF9kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "compose": "c2VydmljZXM6CiAgZG9jdW1lbnNvOgogICAgaW1hZ2U6IGRvY3VtZW5zby9kb2N1bWVuc28KICAgIGRlcGVuZHNfb246CiAgICAgIGRhdGFiYXNlOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fRE9DVU1FTlNPXzMwMDAKICAgICAgLSAnTkVYVEFVVEhfVVJMPSR7U0VSVklDRV9GUUROX0RPQ1VNRU5TT30nCiAgICAgIC0gJ05FWFRBVVRIX1NFQ1JFVD0ke1NFUlZJQ0VfQkFTRTY0X0FVVEhTRUNSRVR9JwogICAgICAtICdORVhUX1BSSVZBVEVfRU5DUllQVElPTl9LRVk9JHtTRVJWSUNFX0JBU0U2NF9FTkNSWVBUSU9OS0VZfScKICAgICAgLSAnTkVYVF9QUklWQVRFX0VOQ1JZUFRJT05fU0VDT05EQVJZX0tFWT0ke1NFUlZJQ0VfQkFTRTY0X1NFQ09OREFSWUVOQ1JZUFRJT05LRVl9JwogICAgICAtICdORVhUX1BVQkxJQ19XRUJBUFBfVVJMPSR7U0VSVklDRV9GUUROX0RPQ1VNRU5TT30nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9TTVRQX1RSQU5TUE9SVD0ke05FWFRfUFJJVkFURV9TTVRQX1RSQU5TUE9SVH0nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9TTVRQX0hPU1Q9JHtORVhUX1BSSVZBVEVfU01UUF9IT1NUfScKICAgICAgLSAnTkVYVF9QUklWQVRFX1NNVFBfUE9SVD0ke05FWFRfUFJJVkFURV9TTVRQX1BPUlR9JwogICAgICAtICdORVhUX1BSSVZBVEVfU01UUF9VU0VSTkFNRT0ke05FWFRfUFJJVkFURV9TTVRQX1VTRVJOQU1FfScKICAgICAgLSAnTkVYVF9QUklWQVRFX1NNVFBfUEFTU1dPUkQ9JHtORVhUX1BSSVZBVEVfU01UUF9QQVNTV09SRH0nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9TTVRQX0ZST01fTkFNRT0ke05FWFRfUFJJVkFURV9TTVRQX0ZST01fTkFNRX0nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9TTVRQX0ZST01fQUREUkVTUz0ke05FWFRfUFJJVkFURV9TTVRQX0ZST01fQUREUkVTU30nCiAgICAgIC0gJ05FWFRfUFJJVkFURV9EQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGRhdGFiYXNlLyR7UE9TVEdSRVNfREI6LWRvY3VtZW5zby1kYn0/c2NoZW1hPXB1YmxpYycKICAgICAgLSAnTkVYVF9QUklWQVRFX0RJUkVDVF9EQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGRhdGFiYXNlLyR7UE9TVEdSRVNfREI6LWRvY3VtZW5zby1kYn0/c2NoZW1hPXB1YmxpYycKICAgICAgLSBORVhUX1BSSVZBVEVfU0lHTklOR19MT0NBTF9GSUxFX1BBVEg9L2FwcC9hcHBzL3JlbWl4L2NlcnRzL2NlcnRpZmljYXRlLnAxMgogICAgICAtICdORVhUX1BSSVZBVEVfU0lHTklOR19QQVNTUEhSQVNFPSR7U0VSVklDRV9QQVNTV09SRF9ET0NVTUVOU099JwogICAgICAtICdDRVJUX1ZBTElEX0RBWVM9JHtDRVJUX1ZBTElEX0RBWVM6LTM2NX0nCiAgICAgIC0gJ0NFUlRfSU5GT19DT1VOVFJZX05BTUU9JHtDRVJUX0lORk9fQ09VTlRSWV9OQU1FOi1ET30nCiAgICAgIC0gJ0NFUlRfSU5GT19TVEFURV9PUl9QUk9WSURFTkNFPSR7Q0VSVF9JTkZPX1NUQVRFX09SX1BST1ZJREVOQ0U6LVNhbnRpYWdvfScKICAgICAgLSAnQ0VSVF9JTkZPX0xPQ0FMSVRZX05BTUU9JHtDRVJUX0lORk9fTE9DQUxJVFlfTkFNRTotU2FudGlhZ299JwogICAgICAtICdDRVJUX0lORk9fT1JHQU5JWkFUSU9OX05BTUU9JHtDRVJUX0lORk9fT1JHQU5JWkFUSU9OX05BTUU6LUV4YW1wbGUgSU5DfScKICAgICAgLSAnQ0VSVF9JTkZPX09SR0FOSVpBVElPTkFMX1VOSVQ9JHtDRVJUX0lORk9fT1JHQU5JWkFUSU9OQUxfVU5JVDotSVQgRGVwYXJ0bWVudH0nCiAgICAgIC0gJ0NFUlRfSU5GT19FTUFJTD0ke0NFUlRfSU5GT19FTUFJTDotZXhhbXBsZUBnbWFpbC5jb219JwogICAgICAtICdORVhUX1BVQkxJQ19ESVNBQkxFX1NJR05VUD0ke0RJU0FCTEVfTE9HSU46LWZhbHNlfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAid2dldCAtcSAtTyAtIGh0dHA6Ly9kb2N1bWVuc286MzAwMC8gfCBncmVwIC1xICdTaWduIGluIHRvIHlvdXIgYWNjb3VudCciCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMjAKICAgIGVudHJ5cG9pbnQ6CiAgICAgIC0gL2Jpbi9zaAogICAgICAtICctYycKICAgICAgLSAiZWNobyBcIi4vY2VydHNcIiA+IC90bXAvY2VydHNfZGlyX3BhdGhcbmVjaG8gXCIuL21ha2UtY2VydHMuc2hcIiA+IC90bXAvY2VydF9zY3JpcHRfcGF0aFxuZWNobyBcIiR7U0VSVklDRV9QQVNTV09SRF9ET0NVTUVOU099XCIgPiAvdG1wL2NlcnRfcGFzc1xuXG50b3VjaCAvdG1wL2NlcnRfaW5mb19wYXRoXG5jYXQgPDxFT0YgPiAvdG1wL2NlcnRfaW5mb19wYXRoXG5bIHJlcSBdXG5kaXN0aW5ndWlzaGVkX25hbWUgPSByZXFfZGlzdGluZ3Vpc2hlZF9uYW1lXG5wcm9tcHQgPSBub1xuWyByZXFfZGlzdGluZ3Vpc2hlZF9uYW1lIF1cbkMgICAgICAgICAgICA9ICR7Q0VSVF9JTkZPX0NPVU5UUllfTkFNRX1cblNUICAgICAgICAgICA9ICR7Q0VSVF9JTkZPX1NUQVRFX09SX1BST1ZJREVOQ0V9XG5MICAgICAgICAgICAgPSAke0NFUlRfSU5GT19MT0NBTElUWV9OQU1FfVxuTyAgICAgICAgICAgID0gJHtDRVJUX0lORk9fT1JHQU5JWkFUSU9OX05BTUV9XG5PVSAgICAgICAgICAgPSAke0NFUlRfSU5GT19PUkdBTklaQVRJT05BTF9VTklUfVxuQ04gICAgICAgICAgID0gJHtTRVJWSUNFX0ZRRE5fRE9DVU1FTlNPfVxuZW1haWxBZGRyZXNzID0gJHtDRVJUX0lORk9fRU1BSUx9XG5FT0ZcblxuY2F0IDw8RU9GID4gXCIkKGNhdCAvdG1wL2NlcnRfc2NyaXB0X3BhdGgpXCJcbm1rZGlyIC1wIFwiJChjYXQgL3RtcC9jZXJ0c19kaXJfcGF0aClcIiAmJiBjZCBcIiQoY2F0IC90bXAvY2VydHNfZGlyX3BhdGgpXCJcblxub3BlbnNzbCBnZW5yc2EgLW91dCBwcml2YXRlLmtleSAyMDQ4XG5cbm9wZW5zc2wgcmVxIFxcXG4gIC1uZXcgXFxcbiAgLXg1MDkgXFxcbiAgLWtleSBwcml2YXRlLmtleSBcXFxuICAtb3V0IGNlcnRpZmljYXRlLmNydCBcXFxuICAtZGF5cyAke0NFUlRfVkFMSURfREFZU30gXFxcbiAgLWNvbmZpZyAvdG1wL2NlcnRfaW5mb19wYXRoXG5cbm9wZW5zc2wgcGtjczEyIFxcXG4gIC1leHBvcnQgXFxcbiAgLW91dCBjZXJ0aWZpY2F0ZS5wMTIgXFxcbiAgLWlua2V5IHByaXZhdGUua2V5IFxcXG4gIC1pbiBjZXJ0aWZpY2F0ZS5jcnQgXFxcbiAgLWxlZ2FjeSBcXFxuICAtcGFzc3dvcmQgZmlsZTovdG1wL2NlcnRfcGFzc1xuRU9GXG5jaG1vZCAreCBcIiQoY2F0IC90bXAvY2VydF9zY3JpcHRfcGF0aClcIlxuXG5zaCBcIiQoY2F0IC90bXAvY2VydF9zY3JpcHRfcGF0aClcIlxuXG4uL3N0YXJ0LnNoXG4iCiAgZGF0YWJhc2U6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE3JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1kb2N1bWVuc28tZGJ9JwogICAgdm9sdW1lczoKICAgICAgLSAnZG9jdW1lbnNvX3Bvc3RncmVzcWxfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
"tags": [
"signing",
"opensource",
@@ -739,7 +752,7 @@
"dolibarr": {
"documentation": "https://www.dolibarr.org/documentation-home.php?utm_source=coolify.io",
"slogan": "Dolibarr is a modern software package to manage your organization's activity (contacts, quotes, invoices, orders, stocks, agenda, hr, expense reports, accountancy, ecm, manufacturing, ...).",
- "compose": "c2VydmljZXM6CiAgZG9saWJhcnI6CiAgICBpbWFnZTogJ2RvbGliYXJyL2RvbGliYXJyOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9ET0xJQkFSUl84MAogICAgICAtICdXV1dfVVNFUl9JRD0ke1dXV19VU0VSX0lEOi0xMDAwfScKICAgICAgLSAnV1dXX0dST1VQX0lEPSR7V1dXX0dST1VQX0lEOi0xMDAwfScKICAgICAgLSBET0xJX0RCX0hPU1Q9bWFyaWFkYgogICAgICAtICdET0xJX0RCX05BTUU9JHtNWVNRTF9EQVRBQkFTRTotZG9saWJhcnItZGJ9JwogICAgICAtICdET0xJX0RCX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdET0xJX0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ0RPTElfVVJMX1JPT1Q9JHtTRVJWSUNFX1VSTF9ET0xJQkFSUn0nCiAgICAgIC0gJ0RPTElfQURNSU5fTE9HSU49JHtTRVJWSUNFX1VTRVJfRE9MSUJBUlJ9JwogICAgICAtICdET0xJX0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9ET0xJQkFSUn0nCiAgICAgIC0gJ0RPTElfQ1JPTj0ke0RPTElfQ1JPTjotMH0nCiAgICAgIC0gJ0RPTElfSU5JVF9ERU1PPSR7RE9MSV9JTklUX0RFTU86LTB9JwogICAgICAtICdET0xJX0NPTVBBTllfTkFNRT0ke0RPTElfQ09NUEFOWV9OQU1FOi1NeUJpZ0NvbXBhbnl9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1CiAgbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfREFUQUJBU0U9JHtNWVNRTF9EQVRBQkFTRTotZG9saWJhcnItZGJ9JwogICAgICAtICdNWVNRTF9VU0VSPSR7U0VSVklDRV9VU0VSX01ZU1FMfScKICAgICAgLSAnTVlTUUxfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMfScKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUk9PVH0nCiAgICB2b2x1bWVzOgogICAgICAtICdkb2xpYmFycl9tYXJpYWRiX2RhdGE6L3Zhci9saWIvbXlzcWwnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gaGVhbHRoY2hlY2suc2gKICAgICAgICAtICctLWNvbm5lY3QnCiAgICAgICAgLSAnLS1pbm5vZGJfaW5pdGlhbGl6ZWQnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "compose": "c2VydmljZXM6CiAgZG9saWJhcnI6CiAgICBpbWFnZTogJ2RvbGliYXJyL2RvbGliYXJyOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9ET0xJQkFSUl84MAogICAgICAtICdXV1dfVVNFUl9JRD0ke1dXV19VU0VSX0lEOi0xMDAwfScKICAgICAgLSAnV1dXX0dST1VQX0lEPSR7V1dXX0dST1VQX0lEOi0xMDAwfScKICAgICAgLSBET0xJX0RCX0hPU1Q9bWFyaWFkYgogICAgICAtICdET0xJX0RCX05BTUU9JHtNWVNRTF9EQVRBQkFTRTotZG9saWJhcnItZGJ9JwogICAgICAtICdET0xJX0RCX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdET0xJX0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ0RPTElfVVJMX1JPT1Q9JHtTRVJWSUNFX0ZRRE5fRE9MSUJBUlJ9JwogICAgICAtICdET0xJX0FETUlOX0xPR0lOPSR7U0VSVklDRV9VU0VSX0RPTElCQVJSfScKICAgICAgLSAnRE9MSV9BRE1JTl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfRE9MSUJBUlJ9JwogICAgICAtICdET0xJX0NST049JHtET0xJX0NST046LTB9JwogICAgICAtICdET0xJX0lOSVRfREVNTz0ke0RPTElfSU5JVF9ERU1POi0wfScKICAgICAgLSAnRE9MSV9DT01QQU5ZX05BTUU9JHtET0xJX0NPTVBBTllfTkFNRTotTXlCaWdDb21wYW55fScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIG1hcmlhZGI6CiAgICBpbWFnZTogJ21hcmlhZGI6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LWRvbGliYXJyLWRifScKICAgICAgLSAnTVlTUUxfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1JPT1RfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1JPT1R9JwogICAgdm9sdW1lczoKICAgICAgLSAnZG9saWJhcnJfbWFyaWFkYl9kYXRhOi92YXIvbGliL215c3FsJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGhlYWx0aGNoZWNrLnNoCiAgICAgICAgLSAnLS1jb25uZWN0JwogICAgICAgIC0gJy0taW5ub2RiX2luaXRpYWxpemVkJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
"tags": [
"crm",
"erp"
@@ -776,6 +789,21 @@
"minversion": "0.0.0",
"port": "8080"
},
+ "drizzle-gateway": {
+ "documentation": "https://gateway.drizzle.team/?utm_source=coolify.io",
+ "slogan": "Free self-hosted Drizzle Studio on steroids",
+ "compose": "c2VydmljZXM6CiAgZHJpenpsZS1nYXRld2F5OgogICAgaW1hZ2U6ICdnaGNyLmlvL2RyaXp6bGUtdGVhbS9nYXRld2F5OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9EUklaWkxFXzQ5ODMKICAgICAgLSBTVE9SRV9QQVRIPS9hcHAKICAgICAgLSBNQVNURVJQQVNTPSRTRVJWSUNFX1BBU1NXT1JEX0RSSVpaTEUKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2RyaXp6bGUtZ2F0ZXdheS1kYXRhOi9hcHAnCg==",
+ "tags": [
+ "drizzle",
+ "gateway",
+ "self-hosted",
+ "open-source",
+ "low-code"
+ ],
+ "logo": "svgs/drizzle.jpeg",
+ "minversion": "0.0.0",
+ "port": "4983"
+ },
"drupal-with-postgresql": {
"documentation": "https://www.drupal.org/about?utm_source=coolify.io",
"slogan": "Drupal is a free and open-source web content management system written in PHP and distributed under the GNU General Public License.",
@@ -1410,7 +1438,7 @@
"grist": {
"documentation": "https://support.getgrist.com/?utm_source=coolify.io",
"slogan": "Grist is a modern relational spreadsheet. It combines the flexibility of a spreadsheet with the robustness of a database.",
- "compose": "c2VydmljZXM6CiAgZ3Jpc3Q6CiAgICBpbWFnZTogJ2dyaXN0bGFicy9ncmlzdDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fR1JJU1RfNDQzCiAgICAgIC0gJ0FQUF9IT01FX1VSTD0ke1NFUlZJQ0VfRlFETl9HUklTVH0nCiAgICAgIC0gJ0FQUF9ET0NfVVJMPSR7U0VSVklDRV9GUUROX0dSSVNUfScKICAgICAgLSAnR1JJU1RfRE9NQUlOPSR7U0VSVklDRV9VUkxfR1JJU1R9JwogICAgICAtICdUWj0ke1RaOi1VVEN9JwogICAgICAtICdHUklTVF9TVVBQT1JUX0FOT049JHtTVVBQT1JUX0FOT046LWZhbHNlfScKICAgICAgLSAnR1JJU1RfRk9SQ0VfTE9HSU49JHtGT1JDRV9MT0dJTjotdHJ1ZX0nCiAgICAgIC0gJ0NPT0tJRV9NQVhfQUdFPSR7Q09PS0lFX01BWF9BR0U6LTg2NDAwMDAwfScKICAgICAgLSAnR1JJU1RfUEFHRV9USVRMRV9TVUZGSVg9JHtQQUdFX1RJVExFX1NVRkZJWDotIC0gU3VmZml4fScKICAgICAgLSAnR1JJU1RfSElERV9VSV9FTEVNRU5UUz0ke0hJREVfVUlfRUxFTUVOVFM6LWJpbGxpbmcsc2VuZFRvRHJpdmUsc3VwcG9ydEdyaXN0LG11bHRpQWNjb3VudHMsdHV0b3JpYWxzfScKICAgICAgLSAnR1JJU1RfVUlfRkVBVFVSRVM9JHtVSV9GRUFUVVJFUzotaGVscENlbnRlcixiaWxsaW5nLHRlbXBsYXRlcyxjcmVhdGVTaXRlLG11bHRpU2l0ZSxzZW5kVG9Ecml2ZSx0dXRvcmlhbHMsc3VwcG9ydEdyaXN0fScKICAgICAgLSAnR1JJU1RfREVGQVVMVF9FTUFJTD0ke0RFRkFVTFRfRU1BSUw6LXRlc3RAZXhhbXBsZS5jb219JwogICAgICAtICdHUklTVF9PUkdfSU5fUEFUSD0ke09SR19JTl9QQVRIOi10cnVlfScKICAgICAgLSAnR1JJU1RfT0lEQ19TUF9IT1NUPSR7U0VSVklDRV9GUUROX0dSSVNUfScKICAgICAgLSAnR1JJU1RfT0lEQ19JRFBfU0NPUEVTPSR7T0lEQ19JRFBfU0NPUEVTOi1vcGVuaWQgcHJvZmlsZSBlbWFpbH0nCiAgICAgIC0gJ0dSSVNUX09JRENfSURQX1NLSVBfRU5EX1NFU1NJT05fRU5EUE9JTlQ9JHtPSURDX0lEUF9TS0lQX0VORF9TRVNTSU9OX0VORFBPSU5UOi1mYWxzZX0nCiAgICAgIC0gJ0dSSVNUX09JRENfSURQX0lTU1VFUj0ke09JRENfSURQX0lTU1VFUjo/fScKICAgICAgLSAnR1JJU1RfT0lEQ19JRFBfQ0xJRU5UX0lEPSR7T0lEQ19JRFBfQ0xJRU5UX0lEOj99JwogICAgICAtICdHUklTVF9PSURDX0lEUF9DTElFTlRfU0VDUkVUPSR7T0lEQ19JRFBfQ0xJRU5UX1NFQ1JFVDo/fScKICAgICAgLSAnR1JJU1RfU0VTU0lPTl9TRUNSRVQ9JHtTRVJWSUNFX1JFQUxCQVNFNjRfMTI4fScKICAgICAgLSAnR1JJU1RfSE9NRV9JTkNMVURFX1NUQVRJQz0ke0hPTUVfSU5DTFVERV9TVEFUSUM6LXRydWV9JwogICAgICAtICdHUklTVF9TQU5EQk9YX0ZMQVZPUj0ke1NBTkRCT1hfRkxBVk9SOi1ndmlzb3J9JwogICAgICAtICdBTExPV0VEX1dFQkhPT0tfRE9NQUlOUz0ke0FMTE9XRURfV0VCSE9PS19ET01BSU5TfScKICAgICAgLSAnQ09NTUVOVFM9JHtDT01NRU5UUzotdHJ1ZX0nCiAgICAgIC0gJ1RZUEVPUk1fVFlQRT0ke1RZUEVPUk1fVFlQRTotcG9zdGdyZXN9JwogICAgICAtICdUWVBFT1JNX0RBVEFCQVNFPSR7UE9TVEdSRVNfREFUQUJBU0U6LWdyaXN0LWRifScKICAgICAgLSAnVFlQRU9STV9VU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1RZUEVPUk1fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnVFlQRU9STV9IT1NUPSR7VFlQRU9STV9IT1NUfScKICAgICAgLSAnVFlQRU9STV9QT1JUPSR7VFlQRU9STV9QT1JUOi01NDMyfScKICAgICAgLSAnVFlQRU9STV9MT0dHSU5HPSR7VFlQRU9STV9MT0dHSU5HOi1mYWxzZX0nCiAgICAgIC0gJ1JFRElTX1VSTD0ke1JFRElTX1VSTDotcmVkaXM6Ly9yZWRpczo2Mzc5fScKICAgICAgLSAnR1JJU1RfSEVMUF9DRU5URVI9JHtTRVJWSUNFX0ZRRE5fR1JJU1R9L2hlbHAnCiAgICAgIC0gJ0dSSVNUX1RFUk1TX09GX1NFUlZJQ0VfVVJMPSR7U0VSVklDRV9GUUROX0dSSVNUfS90ZXJtcycKICAgICAgLSAnRlJFRV9DT0FDSElOR19DQUxMX1VSTD0ke0ZSRUVfQ09BQ0hJTkdfQ0FMTF9VUkx9JwogICAgICAtICdHUklTVF9DT05UQUNUX1NVUFBPUlRfVVJMPSR7Q09OVEFDVF9TVVBQT1JUX1VSTH0nCiAgICB2b2x1bWVzOgogICAgICAtICdncmlzdC1kYXRhOi9wZXJzaXN0JwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBub2RlCiAgICAgICAgLSAnLWUnCiAgICAgICAgLSAicmVxdWlyZSgnaHR0cCcpLmdldCgnaHR0cDovL2xvY2FsaG9zdDo4NDg0L3N0YXR1cycsIHJlcyA9PiBwcm9jZXNzLmV4aXQocmVzLnN0YXR1c0NvZGUgPT09IDIwMCA/IDAgOiAxKSkiCiAgICAgICAgLSAnPiAvZGV2L251bGwgMj4mMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNicKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RBVEFCQVNFOi1ncmlzdC1kYn0nCiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgdm9sdW1lczoKICAgICAgLSAnZ3Jpc3RfcG9zdGdyZXNfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDIwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjcnCiAgICB2b2x1bWVzOgogICAgICAtICdncmlzdF9yZWRpc19kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gUElORwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDIwCg==",
+ "compose": "c2VydmljZXM6CiAgZ3Jpc3Q6CiAgICBpbWFnZTogJ2dyaXN0bGFicy9ncmlzdDpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fR1JJU1RfNDQzCiAgICAgIC0gJ0FQUF9IT01FX1VSTD0ke1NFUlZJQ0VfRlFETl9HUklTVH0nCiAgICAgIC0gJ0FQUF9ET0NfVVJMPSR7U0VSVklDRV9GUUROX0dSSVNUfScKICAgICAgLSAnR1JJU1RfRE9NQUlOPSR7U0VSVklDRV9GUUROX0dSSVNUfScKICAgICAgLSAnVFo9JHtUWjotVVRDfScKICAgICAgLSAnR1JJU1RfU1VQUE9SVF9BTk9OPSR7U1VQUE9SVF9BTk9OOi1mYWxzZX0nCiAgICAgIC0gJ0dSSVNUX0ZPUkNFX0xPR0lOPSR7Rk9SQ0VfTE9HSU46LXRydWV9JwogICAgICAtICdDT09LSUVfTUFYX0FHRT0ke0NPT0tJRV9NQVhfQUdFOi04NjQwMDAwMH0nCiAgICAgIC0gJ0dSSVNUX1BBR0VfVElUTEVfU1VGRklYPSR7UEFHRV9USVRMRV9TVUZGSVg6LSAtIFN1ZmZpeH0nCiAgICAgIC0gJ0dSSVNUX0hJREVfVUlfRUxFTUVOVFM9JHtISURFX1VJX0VMRU1FTlRTOi1iaWxsaW5nLHNlbmRUb0RyaXZlLHN1cHBvcnRHcmlzdCxtdWx0aUFjY291bnRzLHR1dG9yaWFsc30nCiAgICAgIC0gJ0dSSVNUX1VJX0ZFQVRVUkVTPSR7VUlfRkVBVFVSRVM6LWhlbHBDZW50ZXIsYmlsbGluZyx0ZW1wbGF0ZXMsY3JlYXRlU2l0ZSxtdWx0aVNpdGUsc2VuZFRvRHJpdmUsdHV0b3JpYWxzLHN1cHBvcnRHcmlzdH0nCiAgICAgIC0gJ0dSSVNUX0RFRkFVTFRfRU1BSUw9JHtERUZBVUxUX0VNQUlMOi10ZXN0QGV4YW1wbGUuY29tfScKICAgICAgLSAnR1JJU1RfT1JHX0lOX1BBVEg9JHtPUkdfSU5fUEFUSDotdHJ1ZX0nCiAgICAgIC0gJ0dSSVNUX09JRENfU1BfSE9TVD0ke1NFUlZJQ0VfRlFETl9HUklTVH0nCiAgICAgIC0gJ0dSSVNUX09JRENfSURQX1NDT1BFUz0ke09JRENfSURQX1NDT1BFUzotb3BlbmlkIHByb2ZpbGUgZW1haWx9JwogICAgICAtICdHUklTVF9PSURDX0lEUF9TS0lQX0VORF9TRVNTSU9OX0VORFBPSU5UPSR7T0lEQ19JRFBfU0tJUF9FTkRfU0VTU0lPTl9FTkRQT0lOVDotZmFsc2V9JwogICAgICAtICdHUklTVF9PSURDX0lEUF9JU1NVRVI9JHtPSURDX0lEUF9JU1NVRVI6P30nCiAgICAgIC0gJ0dSSVNUX09JRENfSURQX0NMSUVOVF9JRD0ke09JRENfSURQX0NMSUVOVF9JRDo/fScKICAgICAgLSAnR1JJU1RfT0lEQ19JRFBfQ0xJRU5UX1NFQ1JFVD0ke09JRENfSURQX0NMSUVOVF9TRUNSRVQ6P30nCiAgICAgIC0gJ0dSSVNUX1NFU1NJT05fU0VDUkVUPSR7U0VSVklDRV9SRUFMQkFTRTY0XzEyOH0nCiAgICAgIC0gJ0dSSVNUX0hPTUVfSU5DTFVERV9TVEFUSUM9JHtIT01FX0lOQ0xVREVfU1RBVElDOi10cnVlfScKICAgICAgLSAnR1JJU1RfU0FOREJPWF9GTEFWT1I9JHtTQU5EQk9YX0ZMQVZPUjotZ3Zpc29yfScKICAgICAgLSAnQUxMT1dFRF9XRUJIT09LX0RPTUFJTlM9JHtBTExPV0VEX1dFQkhPT0tfRE9NQUlOU30nCiAgICAgIC0gJ0NPTU1FTlRTPSR7Q09NTUVOVFM6LXRydWV9JwogICAgICAtICdUWVBFT1JNX1RZUEU9JHtUWVBFT1JNX1RZUEU6LXBvc3RncmVzfScKICAgICAgLSAnVFlQRU9STV9EQVRBQkFTRT0ke1BPU1RHUkVTX0RBVEFCQVNFOi1ncmlzdC1kYn0nCiAgICAgIC0gJ1RZUEVPUk1fVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdUWVBFT1JNX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1RZUEVPUk1fSE9TVD0ke1RZUEVPUk1fSE9TVH0nCiAgICAgIC0gJ1RZUEVPUk1fUE9SVD0ke1RZUEVPUk1fUE9SVDotNTQzMn0nCiAgICAgIC0gJ1RZUEVPUk1fTE9HR0lORz0ke1RZUEVPUk1fTE9HR0lORzotZmFsc2V9JwogICAgICAtICdSRURJU19VUkw9JHtSRURJU19VUkw6LXJlZGlzOi8vcmVkaXM6NjM3OX0nCiAgICAgIC0gJ0dSSVNUX0hFTFBfQ0VOVEVSPSR7U0VSVklDRV9GUUROX0dSSVNUfS9oZWxwJwogICAgICAtICdHUklTVF9URVJNU19PRl9TRVJWSUNFX0ZRRE49JHtTRVJWSUNFX0ZRRE5fR1JJU1R9L3Rlcm1zJwogICAgICAtICdGUkVFX0NPQUNISU5HX0NBTExfVVJMPSR7RlJFRV9DT0FDSElOR19DQUxMX1VSTH0nCiAgICAgIC0gJ0dSSVNUX0NPTlRBQ1RfU1VQUE9SVF9VUkw9JHtDT05UQUNUX1NVUFBPUlRfVVJMfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2dyaXN0LWRhdGE6L3BlcnNpc3QnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG5vZGUKICAgICAgICAtICctZScKICAgICAgICAtICJyZXF1aXJlKCdodHRwJykuZ2V0KCdodHRwOi8vbG9jYWxob3N0Ojg0ODQvc3RhdHVzJywgcmVzID0+IHByb2Nlc3MuZXhpdChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwID8gMCA6IDEpKSIKICAgICAgICAtICc+IC9kZXYvbnVsbCAyPiYxJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREFUQUJBU0U6LWdyaXN0LWRifScKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICB2b2x1bWVzOgogICAgICAtICdncmlzdF9wb3N0Z3Jlc19kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMjAKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6NycKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2dyaXN0X3JlZGlzX2RhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSBQSU5HCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMjAK",
"tags": [
"lowcode",
"nocode",
@@ -1480,6 +1508,19 @@
"minversion": "0.0.0",
"port": "7575"
},
+ "homebox": {
+ "documentation": "https://github.com/sysadminsmedia/homebox?utm_source=coolify.io",
+ "slogan": "Homebox is the inventory and organization system built for the Home User.",
+ "compose": "c2VydmljZXM6CiAgaG9tZWJveDoKICAgIGltYWdlOiAnZ2hjci5pby9zeXNhZG1pbnNtZWRpYS9ob21lYm94OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9IT01FQk9YXzc3NDUKICAgICAgLSAnSEJPWF9PUFRJT05TX0FMTE9XX1JFR0lTVFJBVElPTj0ke0hCT1hfT1BUSU9OU19BTExPV19SRUdJU1RSQVRJT046LWZhbHNlfScKICAgICAgLSAnSEJPWF9MT0dfTEVWRUw9JHtIQk9YX0xPR19MRVZFTDotaW5mb30nCiAgICAgIC0gJ0hCT1hfTE9HX0ZPUk1BVD0ke0hCT1hfTE9HX0ZPUk1BVDotdGV4dH0nCiAgICAgIC0gJ0hCT1hfV0VCX01BWF9VUExPQURfU0laRT0ke0hCT1hfV0VCX01BWF9VUExPQURfU0laRTotMTB9JwogICAgICAtICdIQk9YX01BSUxFUl9IT1NUPSR7SEJPWF9NQUlMRVJfSE9TVH0nCiAgICAgIC0gJ0hCT1hfTUFJTEVSX1BPUlQ9JHtIQk9YX01BSUxFUl9QT1JUOi01ODd9JwogICAgICAtICdIQk9YX01BSUxFUl9VU0VSTkFNRT0ke0hCT1hfTUFJTEVSX1VTRVJOQU1FfScKICAgICAgLSAnSEJPWF9NQUlMRVJfUEFTU1dPUkQ9JHtIQk9YX01BSUxFUl9QQVNTV09SRH0nCiAgICAgIC0gJ0hCT1hfTUFJTEVSX0ZST009JHtIQk9YX01BSUxFUl9GUk9NfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2hvbWVib3gtZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBzaAogICAgICAgIC0gJy1jJwogICAgICAgIC0gJ3dnZXQgLS1tZXRob2Q9R0VUIC1xTy0gaHR0cDovL2xvY2FsaG9zdDo3NzQ1L2FwaS92MS9zdGF0dXMgPiAvZGV2L251bGwgfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "tags": [
+ "inventory",
+ "home",
+ "organize"
+ ],
+ "logo": "svgs/homebox.svg",
+ "minversion": "0.0.0",
+ "port": "7745"
+ },
"homepage": {
"documentation": "https://gethomepage.dev/latest/?utm_source=coolify.io",
"slogan": "A modern, fully static, fast, secure fully proxied, highly customizable application dashboard",
@@ -1495,7 +1536,7 @@
"hoppscotch": {
"documentation": "https://docs.hoppscotch.io?utm_source=coolify.io",
"slogan": "The Open Source API Development Platform",
- "compose": "c2VydmljZXM6CiAgYmFja2VuZDoKICAgIGltYWdlOiAnaG9wcHNjb3RjaC9ob3Bwc2NvdGNoOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9IT1BQU0NPVENIXzgwCiAgICAgIC0gJ1ZJVEVfQUxMT1dFRF9BVVRIX1BST1ZJREVSUz0ke1ZJVEVfQUxMT1dFRF9BVVRIX1BST1ZJREVSUzotR09PR0xFLEdJVEhVQixNSUNST1NPRlQsRU1BSUx9JwogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGhvcHBzY290Y2gtZGI6NTQzMi8ke1BPU1RHUkVTX0RCfScKICAgICAgLSAnSldUX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfSldUfScKICAgICAgLSAnVE9LRU5fU0FMVF9DT01QTEVYSVRZPSR7VE9LRU5fU0FMVF9DT01QTEVYSVRZOi0xMH0nCiAgICAgIC0gJ01BR0lDX0xJTktfVE9LRU5fVkFMSURJVFk9JHtNQUdJQ19MSU5LX1RPS0VOX1ZBTElESVRZOi0zfScKICAgICAgLSAnUkVGUkVTSF9UT0tFTl9WQUxJRElUWT0ke1JFRlJFU0hfVE9LRU5fVkFMSURJVFk6LTYwNDgwMDAwMH0nCiAgICAgIC0gJ0FDQ0VTU19UT0tFTl9WQUxJRElUWT0ke0FDQ0VTU19UT0tFTl9WQUxJRElUWTotODY0MDAwMDB9JwogICAgICAtICdTRVNTSU9OX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfU0VDUkVUfScKICAgICAgLSAnQUxMT1dfU0VDVVJFX0NPT0tJRVM9JHtBTExPV19TRUNVUkVfQ09PS0lFUzotdHJ1ZX0nCiAgICAgIC0gJ0RBVEFfRU5DUllQVElPTl9LRVk9JHtEQVRBX0VOQ1JZUFRJT05fS0VZOi1tdXN0YmVleGFjdHJ5MzJjaGFyYWN0ZXJsaWtldGhhdH0nCiAgICAgIC0gJ1JFRElSRUNUX1VSTD0ke1NFUlZJQ0VfRlFETl9IT1BQU0NPVENIfScKICAgICAgLSAnV0hJVEVMSVNURURfT1JJR0lOUz0ke1NFUlZJQ0VfRlFETl9IT1BQU0NPVENIfS9iYWNrZW5kLCR7U0VSVklDRV9GUUROX0hPUFBTQ09UQ0h9LCR7U0VSVklDRV9GUUROX0hPUFBTQ09UQ0h9L2FkbWluJwogICAgICAtICdHT09HTEVfQ0xJRU5UX0lEPSR7R09PR0xFX0NMSUVOVF9JRDotKioqKip9JwogICAgICAtICdHT09HTEVfQ0xJRU5UX1NFQ1JFVD0ke0dPT0dMRV9DTElFTlRfU0VDUkVUOi0qKioqKn0nCiAgICAgIC0gJ0dPT0dMRV9DQUxMQkFDS19VUkw9JHtTRVJWSUNFX0ZRRE5fSE9QUFNDT1RDSH0vYmFja2VuZC92MS9hdXRoL2dvb2dsZS9jYWxsYmFjaycKICAgICAgLSAnR09PR0xFX1NDT1BFPWVtYWlsLHByb2ZpbGUnCiAgICAgIC0gJ0dJVEhVQl9DTElFTlRfSUQ9JHtHSVRIVUJfQ0xJRU5UX0lEOi0qKioqKn0nCiAgICAgIC0gJ0dJVEhVQl9DTElFTlRfU0VDUkVUPSR7R0lUSFVCX0NMSUVOVF9TRUNSRVQ6LSoqKioqfScKICAgICAgLSAnR0lUSFVCX0NBTExCQUNLX1VSTD0ke1NFUlZJQ0VfRlFETl9IT1BQU0NPVENIfS9iYWNrZW5kL3YxL2F1dGgvZ2l0aHViL2NhbGxiYWNrJwogICAgICAtICdHSVRIVUJfU0NPUEU9dXNlcjplbWFpbCcKICAgICAgLSAnTUlDUk9TT0ZUX0NMSUVOVF9JRD0ke01JQ1JPU09GVF9DTElFTlRfSUQ6LSoqKioqfScKICAgICAgLSAnTUlDUk9TT0ZUX0NMSUVOVF9TRUNSRVQ9JHtNSUNST1NPRlRfQ0xJRU5UX1NFQ1JFVDotKioqKip9JwogICAgICAtICdNSUNST1NPRlRfQ0FMTEJBQ0tfVVJMPSR7U0VSVklDRV9GUUROX0hPUFBTQ09UQ0h9L2JhY2tlbmQvdjEvYXV0aC9taWNyb3NvZnQvY2FsbGJhY2snCiAgICAgIC0gTUlDUk9TT0ZUX1NDT1BFPXVzZXIucmVhZAogICAgICAtIE1JQ1JPU09GVF9URU5BTlQ9Y29tbW9uCiAgICAgIC0gJ01BSUxFUl9TTVRQX0VOQUJMRT0ke01BSUxFUl9TTVRQX0VOQUJMRTotZmFsc2V9JwogICAgICAtICdNQUlMRVJfVVNFX0NVU1RPTV9DT05GSUdTPSR7TUFJTEVSX1VTRV9DVVNUT01fQ09ORklHUzotdHJ1ZX0nCiAgICAgIC0gJ01BSUxFUl9BRERSRVNTX0ZST009JHtNQUlMRVJfQUREUkVTU19GUk9NOi11c2VyQGV4YW1wbGUuY29tfScKICAgICAgLSAnTUFJTEVSX1NNVFBfVVJMPSR7TUFJTEVSX1NNVFBfVVJMOi1zbXRwc191cmx9JwogICAgICAtICdNQUlMRVJfU01UUF9IT1NUPSR7TUFJTEVSX1NNVFBfSE9TVDotc210cC5leGFtcGxlLmNvbX0nCiAgICAgIC0gJ01BSUxFUl9TTVRQX1BPUlQ9JHtNQUlMRVJfU01UUF9QT1JUOi00NjV9JwogICAgICAtICdNQUlMRVJfU01UUF9TRUNVUkU9JHtNQUlMRVJfU01UUF9TRUNVUkU6LXRydWV9JwogICAgICAtICdNQUlMRVJfU01UUF9VU0VSPSR7TUFJTEVSX1NNVFBfVVNFUjotdXNlckBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ01BSUxFUl9TTVRQX1BBU1NXT1JEPSR7TUFJTEVSX1NNVFBfUEFTU1dPUkQ6LW1haWxwYXNzfScKICAgICAgLSAnTUFJTEVSX1RMU19SRUpFQ1RfVU5BVVRIT1JJWkVEPSR7TUFJTEVSX1RMU19SRUpFQ1RfVU5BVVRIT1JJWkVEOi1mYWxzZX0nCiAgICAgIC0gJ1JBVEVfTElNSVRfVFRMPSR7UkFURV9MSU1JVF9UVEw6LTYwfScKICAgICAgLSAnUkFURV9MSU1JVF9NQVg9JHtSQVRFX0xJTUlUX01BWDotMTAwfScKICAgICAgLSAnVklURV9CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9IT1BQU0NPVENIfScKICAgICAgLSAnVklURV9TSE9SVENPREVfQkFTRV9VUkw9JHtTRVJWSUNFX0ZRRE5fSE9QUFNDT1RDSH0nCiAgICAgIC0gJ1ZJVEVfQURNSU5fVVJMPSR7U0VSVklDRV9GUUROX0hPUFBTQ09UQ0h9L2FkbWluJwogICAgICAtICdWSVRFX0JBQ0tFTkRfR1FMX1VSTD0ke1NFUlZJQ0VfRlFETl9IT1BQU0NPVENIfS9iYWNrZW5kL2dyYXBocWwnCiAgICAgIC0gJ1ZJVEVfQkFDS0VORF9XU19VUkw9d3NzOi8vJHtTRVJWSUNFX1VSTF9IT1BQU0NPVENIfS9iYWNrZW5kL2dyYXBocWwnCiAgICAgIC0gJ1ZJVEVfQkFDS0VORF9BUElfVVJMPSR7U0VSVklDRV9GUUROX0hPUFBTQ09UQ0h9L2JhY2tlbmQvdjEnCiAgICAgIC0gJ1ZJVEVfQVBQX1RPU19MSU5LPWh0dHBzOi8vZG9jcy5ob3Bwc2NvdGNoLmlvL3N1cHBvcnQvdGVybXMnCiAgICAgIC0gJ1ZJVEVfQVBQX1BSSVZBQ1lfUE9MSUNZX0xJTks9aHR0cHM6Ly9kb2NzLmhvcHBzY290Y2guaW8vc3VwcG9ydC9wcml2YWN5JwogICAgICAtIEVOQUJMRV9TVUJQQVRIX0JBU0VEX0FDQ0VTUz10cnVlCiAgICBkZXBlbmRzX29uOgogICAgICBkYi1taWdyYXRpb246CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2NvbXBsZXRlZF9zdWNjZXNzZnVsbHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnd2dldCAtcU8tIGh0dHA6Ly8xMjcuMC4wLjE6ODAvJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgaG9wcHNjb3RjaC1kYjoKICAgIGltYWdlOiAncG9zdGdyZXM6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXNfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LWhvcHBzY290Y2h9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1oIGxvY2FsaG9zdCAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTAKICBkYi1taWdyYXRpb246CiAgICBleGNsdWRlX2Zyb21faGM6IHRydWUKICAgIGltYWdlOiAnaG9wcHNjb3RjaC9ob3Bwc2NvdGNoOmxhdGVzdCcKICAgIGRlcGVuZHNfb246CiAgICAgIGhvcHBzY290Y2gtZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGNvbW1hbmQ6ICdwbnB4IHByaXNtYSBtaWdyYXRlIGRlcGxveScKICAgIHJlc3RhcnQ6IG9uLWZhaWx1cmUKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotaG9wcHNjb3RjaH0nCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGhvcHBzY290Y2gtZGI6NTQzMi8ke1BPU1RHUkVTX0RCOi1ob3Bwc2NvdGNofScK",
+ "compose": "c2VydmljZXM6CiAgYmFja2VuZDoKICAgIGltYWdlOiAnaG9wcHNjb3RjaC9ob3Bwc2NvdGNoOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9IT1BQU0NPVENIXzgwCiAgICAgIC0gJ1ZJVEVfQUxMT1dFRF9BVVRIX1BST1ZJREVSUz0ke1ZJVEVfQUxMT1dFRF9BVVRIX1BST1ZJREVSUzotR09PR0xFLEdJVEhVQixNSUNST1NPRlQsRU1BSUx9JwogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXNxbDovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QGhvcHBzY290Y2gtZGI6NTQzMi8ke1BPU1RHUkVTX0RCfScKICAgICAgLSAnSldUX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfSldUfScKICAgICAgLSAnVE9LRU5fU0FMVF9DT01QTEVYSVRZPSR7VE9LRU5fU0FMVF9DT01QTEVYSVRZOi0xMH0nCiAgICAgIC0gJ01BR0lDX0xJTktfVE9LRU5fVkFMSURJVFk9JHtNQUdJQ19MSU5LX1RPS0VOX1ZBTElESVRZOi0zfScKICAgICAgLSAnUkVGUkVTSF9UT0tFTl9WQUxJRElUWT0ke1JFRlJFU0hfVE9LRU5fVkFMSURJVFk6LTYwNDgwMDAwMH0nCiAgICAgIC0gJ0FDQ0VTU19UT0tFTl9WQUxJRElUWT0ke0FDQ0VTU19UT0tFTl9WQUxJRElUWTotODY0MDAwMDB9JwogICAgICAtICdTRVNTSU9OX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfU0VDUkVUfScKICAgICAgLSAnQUxMT1dfU0VDVVJFX0NPT0tJRVM9JHtBTExPV19TRUNVUkVfQ09PS0lFUzotdHJ1ZX0nCiAgICAgIC0gJ0RBVEFfRU5DUllQVElPTl9LRVk9JHtEQVRBX0VOQ1JZUFRJT05fS0VZOi1tdXN0YmVleGFjdHJ5MzJjaGFyYWN0ZXJsaWtldGhhdH0nCiAgICAgIC0gJ1JFRElSRUNUX1VSTD0ke1NFUlZJQ0VfRlFETl9IT1BQU0NPVENIfScKICAgICAgLSAnV0hJVEVMSVNURURfT1JJR0lOUz0ke1NFUlZJQ0VfRlFETl9IT1BQU0NPVENIfS9iYWNrZW5kLCR7U0VSVklDRV9GUUROX0hPUFBTQ09UQ0h9LCR7U0VSVklDRV9GUUROX0hPUFBTQ09UQ0h9L2FkbWluJwogICAgICAtICdHT09HTEVfQ0xJRU5UX0lEPSR7R09PR0xFX0NMSUVOVF9JRDotKioqKip9JwogICAgICAtICdHT09HTEVfQ0xJRU5UX1NFQ1JFVD0ke0dPT0dMRV9DTElFTlRfU0VDUkVUOi0qKioqKn0nCiAgICAgIC0gJ0dPT0dMRV9DQUxMQkFDS19VUkw9JHtTRVJWSUNFX0ZRRE5fSE9QUFNDT1RDSH0vYmFja2VuZC92MS9hdXRoL2dvb2dsZS9jYWxsYmFjaycKICAgICAgLSAnR09PR0xFX1NDT1BFPWVtYWlsLHByb2ZpbGUnCiAgICAgIC0gJ0dJVEhVQl9DTElFTlRfSUQ9JHtHSVRIVUJfQ0xJRU5UX0lEOi0qKioqKn0nCiAgICAgIC0gJ0dJVEhVQl9DTElFTlRfU0VDUkVUPSR7R0lUSFVCX0NMSUVOVF9TRUNSRVQ6LSoqKioqfScKICAgICAgLSAnR0lUSFVCX0NBTExCQUNLX1VSTD0ke1NFUlZJQ0VfRlFETl9IT1BQU0NPVENIfS9iYWNrZW5kL3YxL2F1dGgvZ2l0aHViL2NhbGxiYWNrJwogICAgICAtICdHSVRIVUJfU0NPUEU9dXNlcjplbWFpbCcKICAgICAgLSAnTUlDUk9TT0ZUX0NMSUVOVF9JRD0ke01JQ1JPU09GVF9DTElFTlRfSUQ6LSoqKioqfScKICAgICAgLSAnTUlDUk9TT0ZUX0NMSUVOVF9TRUNSRVQ9JHtNSUNST1NPRlRfQ0xJRU5UX1NFQ1JFVDotKioqKip9JwogICAgICAtICdNSUNST1NPRlRfQ0FMTEJBQ0tfVVJMPSR7U0VSVklDRV9GUUROX0hPUFBTQ09UQ0h9L2JhY2tlbmQvdjEvYXV0aC9taWNyb3NvZnQvY2FsbGJhY2snCiAgICAgIC0gTUlDUk9TT0ZUX1NDT1BFPXVzZXIucmVhZAogICAgICAtIE1JQ1JPU09GVF9URU5BTlQ9Y29tbW9uCiAgICAgIC0gJ01BSUxFUl9TTVRQX0VOQUJMRT0ke01BSUxFUl9TTVRQX0VOQUJMRTotZmFsc2V9JwogICAgICAtICdNQUlMRVJfVVNFX0NVU1RPTV9DT05GSUdTPSR7TUFJTEVSX1VTRV9DVVNUT01fQ09ORklHUzotdHJ1ZX0nCiAgICAgIC0gJ01BSUxFUl9BRERSRVNTX0ZST009JHtNQUlMRVJfQUREUkVTU19GUk9NOi11c2VyQGV4YW1wbGUuY29tfScKICAgICAgLSAnTUFJTEVSX1NNVFBfVVJMPSR7TUFJTEVSX1NNVFBfVVJMOi1zbXRwc191cmx9JwogICAgICAtICdNQUlMRVJfU01UUF9IT1NUPSR7TUFJTEVSX1NNVFBfSE9TVDotc210cC5leGFtcGxlLmNvbX0nCiAgICAgIC0gJ01BSUxFUl9TTVRQX1BPUlQ9JHtNQUlMRVJfU01UUF9QT1JUOi00NjV9JwogICAgICAtICdNQUlMRVJfU01UUF9TRUNVUkU9JHtNQUlMRVJfU01UUF9TRUNVUkU6LXRydWV9JwogICAgICAtICdNQUlMRVJfU01UUF9VU0VSPSR7TUFJTEVSX1NNVFBfVVNFUjotdXNlckBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ01BSUxFUl9TTVRQX1BBU1NXT1JEPSR7TUFJTEVSX1NNVFBfUEFTU1dPUkQ6LW1haWxwYXNzfScKICAgICAgLSAnTUFJTEVSX1RMU19SRUpFQ1RfVU5BVVRIT1JJWkVEPSR7TUFJTEVSX1RMU19SRUpFQ1RfVU5BVVRIT1JJWkVEOi1mYWxzZX0nCiAgICAgIC0gJ1JBVEVfTElNSVRfVFRMPSR7UkFURV9MSU1JVF9UVEw6LTYwfScKICAgICAgLSAnUkFURV9MSU1JVF9NQVg9JHtSQVRFX0xJTUlUX01BWDotMTAwfScKICAgICAgLSAnVklURV9CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9IT1BQU0NPVENIfScKICAgICAgLSAnVklURV9TSE9SVENPREVfQkFTRV9VUkw9JHtTRVJWSUNFX0ZRRE5fSE9QUFNDT1RDSH0nCiAgICAgIC0gJ1ZJVEVfQURNSU5fVVJMPSR7U0VSVklDRV9GUUROX0hPUFBTQ09UQ0h9L2FkbWluJwogICAgICAtICdWSVRFX0JBQ0tFTkRfR1FMX1VSTD0ke1NFUlZJQ0VfRlFETl9IT1BQU0NPVENIfS9iYWNrZW5kL2dyYXBocWwnCiAgICAgIC0gJ1ZJVEVfQkFDS0VORF9XU19VUkw9d3NzOi8vJHtTRVJWSUNFX0ZRRE5fSE9QUFNDT1RDSH0vYmFja2VuZC9ncmFwaHFsJwogICAgICAtICdWSVRFX0JBQ0tFTkRfQVBJX1VSTD0ke1NFUlZJQ0VfRlFETl9IT1BQU0NPVENIfS9iYWNrZW5kL3YxJwogICAgICAtICdWSVRFX0FQUF9UT1NfTElOSz1odHRwczovL2RvY3MuaG9wcHNjb3RjaC5pby9zdXBwb3J0L3Rlcm1zJwogICAgICAtICdWSVRFX0FQUF9QUklWQUNZX1BPTElDWV9MSU5LPWh0dHBzOi8vZG9jcy5ob3Bwc2NvdGNoLmlvL3N1cHBvcnQvcHJpdmFjeScKICAgICAgLSBFTkFCTEVfU1VCUEFUSF9CQVNFRF9BQ0NFU1M9dHJ1ZQogICAgZGVwZW5kc19vbjoKICAgICAgZGItbWlncmF0aW9uOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9jb21wbGV0ZWRfc3VjY2Vzc2Z1bGx5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3dnZXQgLXFPLSBodHRwOi8vMTI3LjAuMC4xOjgwLycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIGhvcHBzY290Y2gtZGI6CiAgICBpbWFnZTogJ3Bvc3RncmVzOmxhdGVzdCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzX2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1ob3Bwc2NvdGNofScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtaCBsb2NhbGhvc3QgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDEwCiAgZGItbWlncmF0aW9uOgogICAgZXhjbHVkZV9mcm9tX2hjOiB0cnVlCiAgICBpbWFnZTogJ2hvcHBzY290Y2gvaG9wcHNjb3RjaDpsYXRlc3QnCiAgICBkZXBlbmRzX29uOgogICAgICBob3Bwc2NvdGNoLWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBjb21tYW5kOiAncG5weCBwcmlzbWEgbWlncmF0ZSBkZXBsb3knCiAgICByZXN0YXJ0OiBvbi1mYWlsdXJlCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LWhvcHBzY290Y2h9JwogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBob3Bwc2NvdGNoLWRiOjU0MzIvJHtQT1NUR1JFU19EQjotaG9wcHNjb3RjaH0nCg==",
"tags": [
"api",
"development",
@@ -1806,6 +1847,27 @@
"minversion": "0.0.0",
"port": "8080"
},
+ "librechat": {
+ "documentation": "https://docs.librechat.ai/install/configuration/dotenv.html?utm_source=coolify.io",
+ "slogan": "Self-hosted, powerful, and privacy-focused chat UI for multiple AI models",
+ "compose": "c2VydmljZXM6CiAgbGlicmVjaGF0OgogICAgaW1hZ2U6ICdnaGNyLmlvL2Rhbm55LWF2aWxhL2xpYnJlY2hhdC1kZXYtYXBpOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9MSUJSRUNIQVRfMzA4MAogICAgICAtICdET01BSU5fQ0xJRU5UPSR7U0VSVklDRV9GUUROX0xJQlJFQ0hBVH0nCiAgICAgIC0gJ0RPTUFJTl9TRVJWRVI9JHtTRVJWSUNFX0ZRRE5fTElCUkVDSEFUfScKICAgICAgLSBIT1NUPTAuMC4wLjAKICAgICAgLSBQT1JUPTMwODAKICAgICAgLSAnTU9OR09fVVJJPW1vbmdvZGI6Ly8ke1NFUlZJQ0VfVVNFUl9NT05HT306JHtTRVJWSUNFX1BBU1NXT1JEX01PTkdPfUBtb25nb2RiOjI3MDE3L2xpYnJlY2hhdD9hdXRoU291cmNlPWFkbWluJwogICAgICAtICdNRUlMSV9IT1NUPWh0dHA6Ly9tZWlsaXNlYXJjaDo3NzAwJwogICAgICAtICdNRUlMSV9NQVNURVJfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9NRUlMSX0nCiAgICAgIC0gUkFHX1BPUlQ9ODAwMAogICAgICAtICdSQUdfQVBJX1VSTD1odHRwOi8vcmFnLWFwaTo4MDAwJwogICAgICAtICdKV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtICdKV1RfUkVGUkVTSF9TRUNSRVQ9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X0pXVH0nCiAgICAgIC0gJ0FQUF9USVRMRT0ke0FQUF9USVRMRTotTGlicmVDaGF0fScKICAgICAgLSAnQUxMT1dfRU1BSUxfTE9HSU49JHtBTExPV19FTUFJTF9MT0dJTjotdHJ1ZX0nCiAgICAgIC0gJ0FMTE9XX1JFR0lTVFJBVElPTj0ke0FMTE9XX1JFR0lTVFJBVElPTjotdHJ1ZX0nCiAgICAgIC0gJ0FMTE9XX1NPQ0lBTF9MT0dJTj0ke0FMTE9XX1NPQ0lBTF9MT0dJTjotZmFsc2V9JwogICAgICAtICdBTExPV19TT0NJQUxfUkVHSVNUUkFUSU9OPSR7QUxMT1dfU09DSUFMX1JFR0lTVFJBVElPTjotZmFsc2V9JwogICAgICAtICdBTExPV19QQVNTV09SRF9SRVNFVD0ke0FMTE9XX1BBU1NXT1JEX1JFU0VUOi1mYWxzZX0nCiAgICAgIC0gJ0FMTE9XX1VOVkVSSUZJRURfRU1BSUxfTE9HSU49JHtBTExPV19VTlZFUklGSUVEX0VNQUlMX0xPR0lOOi10cnVlfScKICAgICAgLSAnQ1JFRFNfS0VZPSR7U0VSVklDRV9QQVNTV09SRF82NF9DUkVEU30nCiAgICAgIC0gJ0NSRURTX0lWPSR7U0VSVklDRV9QQVNTV09SRF9DUkVEU30nCiAgICAgIC0gJ0FOVEhST1BJQ19BUElfS0VZPSR7U0VSVklDRV9BTlRIUk9QSUNfQVBJX0tFWTotdXNlcl9wcm92aWRlZH0nCiAgICAgIC0gJ0dPT0dMRV9LRVk9JHtTRVJWSUNFX0dPT0dMRV9BUElfS0VZOi11c2VyX3Byb3ZpZGVkfScKICAgICAgLSAnT1BFTkFJX0FQSV9LRVk9JHtTRVJWSUNFX09QRU5BSV9BUElfS0VZOi11c2VyX3Byb3ZpZGVkfScKICAgICAgLSAnQVNTSVNUQU5UU19BUElfS0VZPSR7U0VSVklDRV9BU1NJU1RBTlRTX0FQSV9LRVk6LXVzZXJfcHJvdmlkZWR9JwogICAgICAtICdERUJVR19MT0dHSU5HPSR7REVCVUdfTE9HR0lORzotZmFsc2V9JwogICAgICAtICdERUJVR19PUEVOQUk9JHtERUJVR19PUEVOQUk6LWZhbHNlfScKICAgICAgLSAnREVCVUdfUExVR0lOUz0ke0RFQlVHX09QRU5BSTotZmFsc2V9JwogICAgICAtICdOT19JTkRFWD0ke05PX0lOREVYOi10cnVlfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ2xpYnJlY2hhdC1pbWFnZXM6L2FwcC9jbGllbnQvcHVibGljL2ltYWdlcycKICAgICAgLSAnbGlicmVjaGF0LWxvZ3M6L2FwcC9hcGkvbG9ncycKICAgICAgLSAnbGlicmVjaGF0LXVwbG9hZHM6L2FwcC91cGxvYWRzJwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9saWJyZWNoYXQueWFtbAogICAgICAgIHRhcmdldDogL2FwcC9saWJyZWNoYXQueWFtbAogICAgICAgIGNvbnRlbnQ6ICJ2ZXJzaW9uOiAxLjIuOFxuIgogICAgZGVwZW5kc19vbjoKICAgICAgbW9uZ29kYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBtZWlsaXNlYXJjaDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICB2ZWN0b3JkYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByYWctYXBpOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gd2dldAogICAgICAgIC0gJy0tbm8tdmVyYm9zZScKICAgICAgICAtICctLXRyaWVzPTEnCiAgICAgICAgLSAnLS1zcGlkZXInCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTozMDgwL2FwaS9oZWFsdGgnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogIG1vbmdvZGI6CiAgICBpbWFnZTogJ21vbmdvOjgnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTU9OR09fSU5JVERCX1JPT1RfVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfTU9OR099JwogICAgICAtICdNT05HT19JTklUREJfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTU9OR099JwogICAgdm9sdW1lczoKICAgICAgLSAnbW9uZ29kYi1kYXRhOi9kYXRhL2RiJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG1vbmdvc2gKICAgICAgICAtICctLWV2YWwnCiAgICAgICAgLSAiZGIucnVuQ29tbWFuZCgncGluZycpLm9rIgogICAgICAgIC0gJzEyNy4wLjAuMToyNzAxNy90ZXN0JwogICAgICAgIC0gJy0tcXVpZXQnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogIG1laWxpc2VhcmNoOgogICAgaW1hZ2U6ICdnZXRtZWlsaS9tZWlsaXNlYXJjaDp2MS4xMi4zJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01FSUxJX01BU1RFUl9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX01FSUxJfScKICAgICAgLSAnTUVJTElfTk9fQU5BTFlUSUNTPSR7TUVJTElfTk9fQU5BTFlUSUNTOi1mYWxzZX0nCiAgICAgIC0gTUVJTElfRU5WPXByb2R1Y3Rpb24KICAgICAgLSAnTUVJTElfSE9TVD1odHRwOi8vbWVpbGlzZWFyY2g6NzcwMCcKICAgIHZvbHVtZXM6CiAgICAgIC0gJ21laWxpc2VhcmNoLWRhdGE6L21laWxpX2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6NzcwMC9oZWFsdGgnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICB2ZWN0b3JkYjoKICAgIGltYWdlOiAnYW5rYW5lL3BndmVjdG9yOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX0RCPXJhZwogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSBQT1NUR1JFU19IT1NUX0FVVEhfTUVUSE9EPXRydXN0CiAgICB2b2x1bWVzOgogICAgICAtICd2ZWN0b3JkYi1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBwZ19pc3JlYWR5CiAgICAgICAgLSAnLS11c2VybmFtZT0kU0VSVklDRV9VU0VSX1BPU1RHUkVTJwogICAgICAgIC0gJy0taG9zdD0xMjcuMC4wLjEnCiAgICAgICAgLSAnLS1wb3J0PTU0MzInCiAgICAgICAgLSAnLS1kYm5hbWU9cmFnJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMW0KICAgICAgcmV0cmllczogNQogICAgICBzdGFydF9wZXJpb2Q6IDEwcwogIHJhZy1hcGk6CiAgICBpbWFnZTogJ2doY3IuaW8vZGFubnktYXZpbGEvbGlicmVjaGF0LXJhZy1hcGktZGV2LWxpdGU6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfREI9cmFnCiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtIERCX0hPU1Q9dmVjdG9yZGIKICAgICAgLSAnREJfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gREJfTkFNRT1yYWcKICAgICAgLSBSQUdfUE9SVD04MDAwCiAgICAgIC0gJ1JBR19PUEVOQUlfQVBJX0tFWT0ke1NFUlZJQ0VfT1BFTkFJX0FQSV9LRVk6LXVzZXJfcHJvdmlkZWR9JwogICAgZGVwZW5kc19vbjoKICAgICAgdmVjdG9yZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBweXRob24KICAgICAgICAtICctYycKICAgICAgICAtICJpbXBvcnQgdXJsbGliLnJlcXVlc3Q7IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oJ2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9oZWFsdGgnKSIKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxMAo=",
+ "tags": [
+ "ai",
+ "chat",
+ "gpt",
+ "claude",
+ "palm",
+ "openai",
+ "azure",
+ "huggingface",
+ "anthropic",
+ "ollama",
+ "llm"
+ ],
+ "logo": "svgs/librechat.svg",
+ "minversion": "0.0.0",
+ "port": "3080"
+ },
"libreoffice": {
"documentation": "https://docs.linuxserver.io/images/docker-libreoffice/?utm_source=coolify.io",
"slogan": "LibreOffice is a free and powerful office suite.",
@@ -1966,7 +2028,7 @@
"matrix": {
"documentation": "https://matrix.org/docs/chat_basics/matrix-for-im/?utm_source=coolify.io",
"slogan": "Chat securely with your family, friends, community, or build great apps with Matrix!",
- "compose": "c2VydmljZXM6CiAgbWF0cml4OgogICAgaW1hZ2U6ICdtYXRyaXhkb3Rvcmcvc3luYXBzZTpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fTUFUUklYXzgwMDgKICAgICAgLSAnU1lOQVBTRV9TRVJWRVJfTkFNRT0ke1NFUlZJQ0VfVVJMX01BVFJJWH0nCiAgICAgIC0gJ1NZTkFQU0VfUkVQT1JUX1NUQVRTPSR7U1lOQVBTRV9SRVBPUlRfU1RBVFM6LW5vfScKICAgICAgLSAnRU5BQkxFX1JFR0lTVFJBVElPTj0ke0VOQUJMRV9SRUdJU1RSQVRJT046LWZhbHNlfScKICAgICAgLSAnUkVDQVBUQ0hBX1BVQkxJQ19LRVk9JHtSRUNBUFRDSEFfUFVCTElDX0tFWX0nCiAgICAgIC0gJ1JFQ0FQVENIQV9QUklWQVRFX0tFWT0ke1JFQ0FQVENIQV9QUklWQVRFX0tFWX0nCiAgICAgIC0gJ19TRVJWRVJfTkFNRT0ke1NFUlZJQ0VfVVJMX01BVFJJWH0nCiAgICAgIC0gJ19BRE1JTl9OQU1FPSR7U0VSVklDRV9VU0VSX0FETUlOfScKICAgICAgLSAnX0FETUlOX1BBU1M9JHtTRVJWSUNFX1BBU1NXT1JEX0FETUlOfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ21hdHJpeC1kYXRhOi9kYXRhJwogICAgZW50cnlwb2ludDoKICAgICAgLSAvYmluL2Jhc2gKICAgICAgLSAnLWMnCiAgICAgIC0gIiEgdGVzdCAtZiAvZGF0YS9ob21lc2VydmVyLnlhbWwgJiYgL3N0YXJ0LnB5IGdlbmVyYXRlXG5cbiMgcmVnaXN0cmF0aW9uX3NoYXJlZF9zZWNyZXRcbmdyZXAgXCJyZWdpc3RyYXRpb25fc2hhcmVkX3NlY3JldFwiIC9kYXRhL2hvbWVzZXJ2ZXIueWFtbCBcXFxufCBhd2sgJ3twcmludCAkMn0nID4gLi9yZWdpc3RyYXRpb25fc2hhcmVkX3NlY3JldFxuXG4jIG1hY2Fyb29uX3NlY3JldF9rZXlcbmdyZXAgXCJtYWNhcm9vbl9zZWNyZXRfa2V5XCIgL2RhdGEvaG9tZXNlcnZlci55YW1sIFxcXG58IGF3ayAne3ByaW50ICQyfScgPiAuL21hY2Fyb29uX3NlY3JldF9rZXlcblxuIyBmb3JtX3NlY3JldFxuZ3JlcCBcImZvcm1fc2VjcmV0XCIgL2RhdGEvaG9tZXNlcnZlci55YW1sIFxcXG58IGF3ayAne3ByaW50ICQyfScgPiAuL2Zvcm1fc2VjcmV0XG5cbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG4jICAgICAgICAgICAgICAgICAgICAgICAgI1xuIyBob21lc2VydmVyLnlhbWw6IHN0YXJ0ICNcbiMgICAgICAgICAgICAgICAgICAgICAgICAjXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuY2F0IDw8RU9GID4gL2RhdGEvaG9tZXNlcnZlci55YW1sXG5zZXJ2ZXJfbmFtZTogXCIke1NFUlZJQ0VfVVJMX01BVFJJWH1cIlxucGlkX2ZpbGU6IC9kYXRhL2hvbWVzZXJ2ZXIucGlkXG5cbiMgc2VydmVyXG5saXN0ZW5lcnM6XG4gIC0gcG9ydDogODAwOFxuICAgIHRsczogZmFsc2VcbiAgICB0eXBlOiBodHRwXG4gICAgeF9mb3J3YXJkZWQ6IHRydWVcbiAgICByZXNvdXJjZXM6XG4gICAgICAtIG5hbWVzOiBbY2xpZW50LCBmZWRlcmF0aW9uXVxuICAgICAgICBjb21wcmVzczogZmFsc2VcblxuIyBkYXRhYmFzZVxuZGF0YWJhc2U6XG4gIG5hbWU6IHNxbGl0ZTNcbiAgYXJnczpcbiAgICBkYXRhYmFzZTogL2RhdGEvaG9tZXNlcnZlci5kYlxuXG4jIGdlbmVyYWxcbmxvZ19jb25maWc6IFwiL2RhdGEvJHtTRVJWSUNFX1VSTF9NQVRSSVh9LmxvZy5jb25maWdcIlxubWVkaWFfc3RvcmVfcGF0aDogL2RhdGEvbWVkaWFfc3RvcmVcbnJlcG9ydF9zdGF0czogZmFsc2VcblxuIyBzZWNyZXRzXG5yZWdpc3RyYXRpb25fc2hhcmVkX3NlY3JldDogJCg8Li9yZWdpc3RyYXRpb25fc2hhcmVkX3NlY3JldClcbm1hY2Fyb29uX3NlY3JldF9rZXk6ICQoPC4vbWFjYXJvb25fc2VjcmV0X2tleSlcbmZvcm1fc2VjcmV0OiAkKDwuL2Zvcm1fc2VjcmV0KVxuc2lnbmluZ19rZXlfcGF0aDogXCIvZGF0YS8ke1NFUlZJQ0VfVVJMX01BVFJJWH0uc2lnbmluZy5rZXlcIlxuXG4jcm9vbXNcbmF1dG9fam9pbl9yb29tczpcbiAgLSBcIiNnZW5lcmFsOiR7U0VSVklDRV9VUkxfTUFUUklYfVwiXG5cbiMgZmVkZXJhdGlvblxudHJ1c3RlZF9rZXlfc2VydmVyczpcbiAgLSBzZXJ2ZXJfbmFtZTogXCJtYXRyaXgub3JnXCJcbmF1dG9jcmVhdGVfYXV0b19qb2luX3Jvb21zX2ZlZGVyYXRlZDogZmFsc2VcbmFsbG93X3B1YmxpY19yb29tc19vdmVyX2ZlZGVyYXRpb246IGZhbHNlXG5FT0ZcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuIyAgICAgICAgICAgICAgICAgICAgICAjXG4jIGhvbWVzZXJ2ZXIueWFtbDogZW5kICNcbiMgICAgICAgICAgICAgICAgICAgICAgI1xuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cblsgXCIke0VOQUJMRV9SRUdJU1RSQVRJT059XCIgPSBcInRydWVcIiBdICYmICEgZ3JlcCBcIiNyZWdpc3RyYXRpb25cIiAvZGF0YS9ob21lc2VydmVyLnlhbWwgJj4vZGV2L251bGwgXFxcbiYmIGVjaG8gPj4gL2RhdGEvaG9tZXNlcnZlci55YW1sIFxcXG4mJiBjYXQgPDxFT0YgPj4gL2RhdGEvaG9tZXNlcnZlci55YW1sXG4jcmVnaXN0cmF0aW9uXG5lbmFibGVfcmVnaXN0cmF0aW9uOiB0cnVlICAjIEFsbG93cyB1c2VycyB0byByZWdpc3RlciBvbiB5b3VyIHNlcnZlci5cbkVPRlxuXG5bIC1uIFwiJHtSRUNBUFRDSEFfUFVCTElDX0tFWX1cIiBdICYmICEgZ3JlcCBcIiR7UkVDQVBUQ0hBX1BVQkxJQ19LRVl9XCIgL2RhdGEvaG9tZXNlcnZlci55YW1sICY+L2Rldi9udWxsIFxcXG4mJiBlY2hvID4+IC9kYXRhL2hvbWVzZXJ2ZXIueWFtbCBcXFxuJiYgY2F0IDw8RU9GID4+IC9kYXRhL2hvbWVzZXJ2ZXIueWFtbFxuIyByZUNBUFRDSEEgc2V0dGluZ3NcbmVuYWJsZV9yZWdpc3RyYXRpb25fY2FwdGNoYTogdHJ1ZSAgIyBFbmFibGVzIENBUFRDSEEgZm9yIHJlZ2lzdHJhdGlvbnMuXG5yZWNhcHRjaGFfcHVibGljX2tleTogXCIke1JFQ0FQVENIQV9QVUJMSUNfS0VZfVwiXG5yZWNhcHRjaGFfcHJpdmF0ZV9rZXk6IFwiJHtSRUNBUFRDSEFfUFJJVkFURV9LRVl9XCJcbnJlY2FwdGNoYV9zaXRldmVyaWZ5X2FwaTogXCJodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkvc2l0ZXZlcmlmeVwiXG5FT0ZcblxucmVnaXN0ZXJfYWRtaW4oKXtcbiAgd2hpbGUgISBjdXJsIC1JIGxvY2FsaG9zdDo4MDA4ICY+L2Rldi9udWxsOyBkb1xuICAgIHNsZWVwIDFcbiAgZG9uZVxuICByZWdpc3Rlcl9uZXdfbWF0cml4X3VzZXIgXFxcbiAgICAtYSBcXFxuICAgIC11ICR7U0VSVklDRV9VU0VSX0FETUlOfSBcXFxuICAgIC1wICR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0gXFxcbiAgICAtYyAvZGF0YS9ob21lc2VydmVyLnlhbWwgXFxcbiAgICBodHRwOi8vbG9jYWxob3N0OjgwMDggJj4vZGV2L251bGxcbn1cbnJlZ2lzdGVyX2FkbWluICZcblxuL3N0YXJ0LnB5XG4iCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1JJwogICAgICAgIC0gJ2xvY2FsaG9zdDo4MDA4JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogM3MKICAgICAgcmV0cmllczogNQo=",
+ "compose": "c2VydmljZXM6CiAgbWF0cml4OgogICAgaW1hZ2U6ICdtYXRyaXhkb3Rvcmcvc3luYXBzZTpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fTUFUUklYXzgwMDgKICAgICAgLSAnU1lOQVBTRV9TRVJWRVJfTkFNRT0ke1NFUlZJQ0VfRlFETl9NQVRSSVh9JwogICAgICAtICdTWU5BUFNFX1JFUE9SVF9TVEFUUz0ke1NZTkFQU0VfUkVQT1JUX1NUQVRTOi1ub30nCiAgICAgIC0gJ0VOQUJMRV9SRUdJU1RSQVRJT049JHtFTkFCTEVfUkVHSVNUUkFUSU9OOi1mYWxzZX0nCiAgICAgIC0gJ1JFQ0FQVENIQV9QVUJMSUNfS0VZPSR7UkVDQVBUQ0hBX1BVQkxJQ19LRVl9JwogICAgICAtICdSRUNBUFRDSEFfUFJJVkFURV9LRVk9JHtSRUNBUFRDSEFfUFJJVkFURV9LRVl9JwogICAgICAtICdfU0VSVkVSX05BTUU9JHtTRVJWSUNFX0ZRRE5fTUFUUklYfScKICAgICAgLSAnX0FETUlOX05BTUU9JHtTRVJWSUNFX1VTRVJfQURNSU59JwogICAgICAtICdfQURNSU5fUEFTUz0ke1NFUlZJQ0VfUEFTU1dPUkRfQURNSU59JwogICAgdm9sdW1lczoKICAgICAgLSAnbWF0cml4LWRhdGE6L2RhdGEnCiAgICBlbnRyeXBvaW50OgogICAgICAtIC9iaW4vYmFzaAogICAgICAtICctYycKICAgICAgLSAiISB0ZXN0IC1mIC9kYXRhL2hvbWVzZXJ2ZXIueWFtbCAmJiAvc3RhcnQucHkgZ2VuZXJhdGVcblxuIyByZWdpc3RyYXRpb25fc2hhcmVkX3NlY3JldFxuZ3JlcCBcInJlZ2lzdHJhdGlvbl9zaGFyZWRfc2VjcmV0XCIgL2RhdGEvaG9tZXNlcnZlci55YW1sIFxcXG58IGF3ayAne3ByaW50ICQyfScgPiAuL3JlZ2lzdHJhdGlvbl9zaGFyZWRfc2VjcmV0XG5cbiMgbWFjYXJvb25fc2VjcmV0X2tleVxuZ3JlcCBcIm1hY2Fyb29uX3NlY3JldF9rZXlcIiAvZGF0YS9ob21lc2VydmVyLnlhbWwgXFxcbnwgYXdrICd7cHJpbnQgJDJ9JyA+IC4vbWFjYXJvb25fc2VjcmV0X2tleVxuXG4jIGZvcm1fc2VjcmV0XG5ncmVwIFwiZm9ybV9zZWNyZXRcIiAvZGF0YS9ob21lc2VydmVyLnlhbWwgXFxcbnwgYXdrICd7cHJpbnQgJDJ9JyA+IC4vZm9ybV9zZWNyZXRcblxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbiMgICAgICAgICAgICAgICAgICAgICAgICAjXG4jIGhvbWVzZXJ2ZXIueWFtbDogc3RhcnQgI1xuIyAgICAgICAgICAgICAgICAgICAgICAgICNcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5jYXQgPDxFT0YgPiAvZGF0YS9ob21lc2VydmVyLnlhbWxcbnNlcnZlcl9uYW1lOiBcIiR7U0VSVklDRV9GUUROX01BVFJJWH1cIlxucGlkX2ZpbGU6IC9kYXRhL2hvbWVzZXJ2ZXIucGlkXG5cbiMgc2VydmVyXG5saXN0ZW5lcnM6XG4gIC0gcG9ydDogODAwOFxuICAgIHRsczogZmFsc2VcbiAgICB0eXBlOiBodHRwXG4gICAgeF9mb3J3YXJkZWQ6IHRydWVcbiAgICByZXNvdXJjZXM6XG4gICAgICAtIG5hbWVzOiBbY2xpZW50LCBmZWRlcmF0aW9uXVxuICAgICAgICBjb21wcmVzczogZmFsc2VcblxuIyBkYXRhYmFzZVxuZGF0YWJhc2U6XG4gIG5hbWU6IHNxbGl0ZTNcbiAgYXJnczpcbiAgICBkYXRhYmFzZTogL2RhdGEvaG9tZXNlcnZlci5kYlxuXG4jIGdlbmVyYWxcbmxvZ19jb25maWc6IFwiL2RhdGEvJHtTRVJWSUNFX0ZRRE5fTUFUUklYfS5sb2cuY29uZmlnXCJcbm1lZGlhX3N0b3JlX3BhdGg6IC9kYXRhL21lZGlhX3N0b3JlXG5yZXBvcnRfc3RhdHM6IGZhbHNlXG5cbiMgc2VjcmV0c1xucmVnaXN0cmF0aW9uX3NoYXJlZF9zZWNyZXQ6ICQoPC4vcmVnaXN0cmF0aW9uX3NoYXJlZF9zZWNyZXQpXG5tYWNhcm9vbl9zZWNyZXRfa2V5OiAkKDwuL21hY2Fyb29uX3NlY3JldF9rZXkpXG5mb3JtX3NlY3JldDogJCg8Li9mb3JtX3NlY3JldClcbnNpZ25pbmdfa2V5X3BhdGg6IFwiL2RhdGEvJHtTRVJWSUNFX0ZRRE5fTUFUUklYfS5zaWduaW5nLmtleVwiXG5cbiNyb29tc1xuYXV0b19qb2luX3Jvb21zOlxuICAtIFwiI2dlbmVyYWw6JHtTRVJWSUNFX0ZRRE5fTUFUUklYfVwiXG5cbiMgZmVkZXJhdGlvblxudHJ1c3RlZF9rZXlfc2VydmVyczpcbiAgLSBzZXJ2ZXJfbmFtZTogXCJtYXRyaXgub3JnXCJcbmF1dG9jcmVhdGVfYXV0b19qb2luX3Jvb21zX2ZlZGVyYXRlZDogZmFsc2VcbmFsbG93X3B1YmxpY19yb29tc19vdmVyX2ZlZGVyYXRpb246IGZhbHNlXG5FT0ZcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuIyAgICAgICAgICAgICAgICAgICAgICAjXG4jIGhvbWVzZXJ2ZXIueWFtbDogZW5kICNcbiMgICAgICAgICAgICAgICAgICAgICAgI1xuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cblsgXCIke0VOQUJMRV9SRUdJU1RSQVRJT059XCIgPSBcInRydWVcIiBdICYmICEgZ3JlcCBcIiNyZWdpc3RyYXRpb25cIiAvZGF0YS9ob21lc2VydmVyLnlhbWwgJj4vZGV2L251bGwgXFxcbiYmIGVjaG8gPj4gL2RhdGEvaG9tZXNlcnZlci55YW1sIFxcXG4mJiBjYXQgPDxFT0YgPj4gL2RhdGEvaG9tZXNlcnZlci55YW1sXG4jcmVnaXN0cmF0aW9uXG5lbmFibGVfcmVnaXN0cmF0aW9uOiB0cnVlICAjIEFsbG93cyB1c2VycyB0byByZWdpc3RlciBvbiB5b3VyIHNlcnZlci5cbkVPRlxuXG5bIC1uIFwiJHtSRUNBUFRDSEFfUFVCTElDX0tFWX1cIiBdICYmICEgZ3JlcCBcIiR7UkVDQVBUQ0hBX1BVQkxJQ19LRVl9XCIgL2RhdGEvaG9tZXNlcnZlci55YW1sICY+L2Rldi9udWxsIFxcXG4mJiBlY2hvID4+IC9kYXRhL2hvbWVzZXJ2ZXIueWFtbCBcXFxuJiYgY2F0IDw8RU9GID4+IC9kYXRhL2hvbWVzZXJ2ZXIueWFtbFxuIyByZUNBUFRDSEEgc2V0dGluZ3NcbmVuYWJsZV9yZWdpc3RyYXRpb25fY2FwdGNoYTogdHJ1ZSAgIyBFbmFibGVzIENBUFRDSEEgZm9yIHJlZ2lzdHJhdGlvbnMuXG5yZWNhcHRjaGFfcHVibGljX2tleTogXCIke1JFQ0FQVENIQV9QVUJMSUNfS0VZfVwiXG5yZWNhcHRjaGFfcHJpdmF0ZV9rZXk6IFwiJHtSRUNBUFRDSEFfUFJJVkFURV9LRVl9XCJcbnJlY2FwdGNoYV9zaXRldmVyaWZ5X2FwaTogXCJodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkvc2l0ZXZlcmlmeVwiXG5FT0ZcblxucmVnaXN0ZXJfYWRtaW4oKXtcbiAgd2hpbGUgISBjdXJsIC1JIGxvY2FsaG9zdDo4MDA4ICY+L2Rldi9udWxsOyBkb1xuICAgIHNsZWVwIDFcbiAgZG9uZVxuICByZWdpc3Rlcl9uZXdfbWF0cml4X3VzZXIgXFxcbiAgICAtYSBcXFxuICAgIC11ICR7U0VSVklDRV9VU0VSX0FETUlOfSBcXFxuICAgIC1wICR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0gXFxcbiAgICAtYyAvZGF0YS9ob21lc2VydmVyLnlhbWwgXFxcbiAgICBodHRwOi8vbG9jYWxob3N0OjgwMDggJj4vZGV2L251bGxcbn1cbnJlZ2lzdGVyX2FkbWluICZcblxuL3N0YXJ0LnB5XG4iCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1JJwogICAgICAgIC0gJ2xvY2FsaG9zdDo4MDA4JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogM3MKICAgICAgcmV0cmllczogNQo=",
"tags": [
"chat",
"slack",
@@ -2171,7 +2233,7 @@
"mixpost": {
"documentation": "https://docs.mixpost.app/lite?utm_source=coolify.io",
"slogan": "Mixpost is a robust and versatile social media management software, designed to streamline social media operations and enhance content marketing strategies.",
- "compose": "c2VydmljZXM6CiAgbWl4cG9zdDoKICAgIGltYWdlOiAnaW5vdmVjdG9yL21peHBvc3Q6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX01JWFBPU1QKICAgICAgLSBBUFBfTkFNRT1NaXhwb3N0CiAgICAgIC0gJ0FQUF9LRVk9JHtTRVJWSUNFX0JBU0U2NF9NSVhQT1NUfScKICAgICAgLSBBUFBfREVCVUc9ZmFsc2UKICAgICAgLSAnQVBQX0RPTUFJTj0ke1NFUlZJQ0VfVVJMX01JWFBPU1R9JwogICAgICAtICdBUFBfVVJMPSR7U0VSVklDRV9GUUROX01JWFBPU1R9JwogICAgICAtICdEQl9EQVRBQkFTRT0ke01ZU1FMX0RBVEFCQVNFOi1taXhwb3N0X2RifScKICAgICAgLSAnREJfVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdEQl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgICAtICdTU0xfRU1BSUw9JHtTU0xfRU1BSUw6LXVzZXJAZXhhbXBsZS5jb219JwogICAgdm9sdW1lczoKICAgICAgLSAnbWl4cG9zdC1zdG9yYWdlOi92YXIvd3d3L2h0bWwvc3RvcmFnZS9hcHAnCiAgICAgIC0gJ21peHBvc3QtbG9nczovdmFyL3d3dy9odG1sL3N0b3JhZ2UvbG9ncycKICAgIGRlcGVuZHNfb246CiAgICAgIC0gbXlzcWwKICAgICAgLSByZWRpcwogIG15c3FsOgogICAgaW1hZ2U6ICdteXNxbC9teXNxbC1zZXJ2ZXI6OC4wJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7TVlTUUxfREFUQUJBU0U6LW1peHBvc3RfZGJ9JwogICAgICAtICdNWVNRTF9VU0VSPSR7U0VSVklDRV9VU0VSX01ZU1FMfScKICAgICAgLSAnTVlTUUxfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMfScKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUxST09UfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ21peHBvc3QtbXlzcWw6L3Zhci9saWIvbXlzcWwnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gbXlzcWxhZG1pbgogICAgICAgIC0gcGluZwogICAgICAgIC0gJy1oJwogICAgICAgIC0gMTI3LjAuMC4xCiAgICAgICAgLSAnLXVyb290JwogICAgICAgIC0gJy1wJHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMUk9PVH0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6YWxwaW5lJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gJy0tcmF3JwogICAgICAgIC0gaW5jcgogICAgICAgIC0gcGluZwo=",
+ "compose": "c2VydmljZXM6CiAgbWl4cG9zdDoKICAgIGltYWdlOiAnaW5vdmVjdG9yL21peHBvc3Q6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX01JWFBPU1QKICAgICAgLSBBUFBfTkFNRT1NaXhwb3N0CiAgICAgIC0gJ0FQUF9LRVk9JHtTRVJWSUNFX0JBU0U2NF9NSVhQT1NUfScKICAgICAgLSBBUFBfREVCVUc9ZmFsc2UKICAgICAgLSAnQVBQX0RPTUFJTj0ke1NFUlZJQ0VfRlFETl9NSVhQT1NUfScKICAgICAgLSAnQVBQX1VSTD0ke1NFUlZJQ0VfRlFETl9NSVhQT1NUfScKICAgICAgLSAnREJfREFUQUJBU0U9JHtNWVNRTF9EQVRBQkFTRTotbWl4cG9zdF9kYn0nCiAgICAgIC0gJ0RCX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX01ZU1FMfScKICAgICAgLSAnREJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMfScKICAgICAgLSAnU1NMX0VNQUlMPSR7U1NMX0VNQUlMOi11c2VyQGV4YW1wbGUuY29tfScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ21peHBvc3Qtc3RvcmFnZTovdmFyL3d3dy9odG1sL3N0b3JhZ2UvYXBwJwogICAgICAtICdtaXhwb3N0LWxvZ3M6L3Zhci93d3cvaHRtbC9zdG9yYWdlL2xvZ3MnCiAgICBkZXBlbmRzX29uOgogICAgICAtIG15c3FsCiAgICAgIC0gcmVkaXMKICBteXNxbDoKICAgIGltYWdlOiAnbXlzcWwvbXlzcWwtc2VydmVyOjguMCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdNWVNRTF9EQVRBQkFTRT0ke01ZU1FMX0RBVEFCQVNFOi1taXhwb3N0X2RifScKICAgICAgLSAnTVlTUUxfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ01ZU1FMX1JPT1RfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMUk9PVH0nCiAgICB2b2x1bWVzOgogICAgICAtICdtaXhwb3N0LW15c3FsOi92YXIvbGliL215c3FsJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG15c3FsYWRtaW4KICAgICAgICAtIHBpbmcKICAgICAgICAtICctaCcKICAgICAgICAtIDEyNy4wLjAuMQogICAgICAgIC0gJy11cm9vdCcKICAgICAgICAtICctcCR7U0VSVklDRV9QQVNTV09SRF9NWVNRTFJPT1R9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOmFscGluZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtICctLXJhdycKICAgICAgICAtIGluY3IKICAgICAgICAtIHBpbmcK",
"tags": [
"social media",
"marketing",
@@ -2219,7 +2281,7 @@
"n8n-with-postgresql": {
"documentation": "https://n8n.io?utm_source=coolify.io",
"slogan": "n8n is an extendable workflow automation tool.",
- "compose": "c2VydmljZXM6CiAgbjhuOgogICAgaW1hZ2U6IGRvY2tlci5uOG4uaW8vbjhuaW8vbjhuCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fTjhOXzU2NzgKICAgICAgLSAnTjhOX0VESVRPUl9CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9OOE59JwogICAgICAtICdXRUJIT09LX1VSTD0ke1NFUlZJQ0VfRlFETl9OOE59JwogICAgICAtICdOOE5fSE9TVD0ke1NFUlZJQ0VfVVJMX044Tn0nCiAgICAgIC0gJ0dFTkVSSUNfVElNRVpPTkU9JHtHRU5FUklDX1RJTUVaT05FOi1FdXJvcGUvQmVybGlufScKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Jlcmxpbn0nCiAgICAgIC0gREJfVFlQRT1wb3N0Z3Jlc2RiCiAgICAgIC0gJ0RCX1BPU1RHUkVTREJfREFUQUJBU0U9JHtQT1NUR1JFU19EQjotbjhufScKICAgICAgLSBEQl9QT1NUR1JFU0RCX0hPU1Q9cG9zdGdyZXNxbAogICAgICAtIERCX1BPU1RHUkVTREJfUE9SVD01NDMyCiAgICAgIC0gREJfUE9TVEdSRVNEQl9VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBEQl9QT1NUR1JFU0RCX1NDSEVNQT1wdWJsaWMKICAgICAgLSBEQl9QT1NUR1JFU0RCX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICB2b2x1bWVzOgogICAgICAtICduOG4tZGF0YTovaG9tZS9ub2RlLy5uOG4nCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3Jlc3FsOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3dnZXQgLXFPLSBodHRwOi8vMTI3LjAuMC4xOjU2NzgvJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcG9zdGdyZXNxbDoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYtYWxwaW5lJwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LW44bn0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "compose": "c2VydmljZXM6CiAgbjhuOgogICAgaW1hZ2U6IGRvY2tlci5uOG4uaW8vbjhuaW8vbjhuCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fTjhOXzU2NzgKICAgICAgLSAnTjhOX0VESVRPUl9CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9OOE59JwogICAgICAtICdXRUJIT09LX1VSTD0ke1NFUlZJQ0VfRlFETl9OOE59JwogICAgICAtICdOOE5fSE9TVD0ke1NFUlZJQ0VfRlFETl9OOE59JwogICAgICAtICdHRU5FUklDX1RJTUVaT05FPSR7R0VORVJJQ19USU1FWk9ORTotRXVyb3BlL0Jlcmxpbn0nCiAgICAgIC0gJ1RaPSR7VFo6LUV1cm9wZS9CZXJsaW59JwogICAgICAtIERCX1RZUEU9cG9zdGdyZXNkYgogICAgICAtICdEQl9QT1NUR1JFU0RCX0RBVEFCQVNFPSR7UE9TVEdSRVNfREI6LW44bn0nCiAgICAgIC0gREJfUE9TVEdSRVNEQl9IT1NUPXBvc3RncmVzcWwKICAgICAgLSBEQl9QT1NUR1JFU0RCX1BPUlQ9NTQzMgogICAgICAtIERCX1BPU1RHUkVTREJfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gREJfUE9TVEdSRVNEQl9TQ0hFTUE9cHVibGljCiAgICAgIC0gREJfUE9TVEdSRVNEQl9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgdm9sdW1lczoKICAgICAgLSAnbjhuLWRhdGE6L2hvbWUvbm9kZS8ubjhuJwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXNxbDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC1xTy0gaHR0cDovLzEyNy4wLjAuMTo1Njc4LycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBvc3RncmVzcWw6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1uOG59JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
"tags": [
"n8n",
"workflow",
@@ -2236,7 +2298,7 @@
"n8n": {
"documentation": "https://n8n.io?utm_source=coolify.io",
"slogan": "n8n is an extendable workflow automation tool.",
- "compose": "c2VydmljZXM6CiAgbjhuOgogICAgaW1hZ2U6IGRvY2tlci5uOG4uaW8vbjhuaW8vbjhuCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fTjhOXzU2NzgKICAgICAgLSAnTjhOX0VESVRPUl9CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9OOE59JwogICAgICAtICdXRUJIT09LX1VSTD0ke1NFUlZJQ0VfRlFETl9OOE59JwogICAgICAtICdOOE5fSE9TVD0ke1NFUlZJQ0VfVVJMX044Tn0nCiAgICAgIC0gJ0dFTkVSSUNfVElNRVpPTkU9JHtHRU5FUklDX1RJTUVaT05FOi1FdXJvcGUvQmVybGlufScKICAgICAgLSAnVFo9JHtUWjotRXVyb3BlL0Jlcmxpbn0nCiAgICB2b2x1bWVzOgogICAgICAtICduOG4tZGF0YTovaG9tZS9ub2RlLy5uOG4nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3dnZXQgLXFPLSBodHRwOi8vMTI3LjAuMC4xOjU2NzgvJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "compose": "c2VydmljZXM6CiAgbjhuOgogICAgaW1hZ2U6IGRvY2tlci5uOG4uaW8vbjhuaW8vbjhuCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fTjhOXzU2NzgKICAgICAgLSAnTjhOX0VESVRPUl9CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9OOE59JwogICAgICAtICdXRUJIT09LX1VSTD0ke1NFUlZJQ0VfRlFETl9OOE59JwogICAgICAtICdOOE5fSE9TVD0ke1NFUlZJQ0VfRlFETl9OOE59JwogICAgICAtICdHRU5FUklDX1RJTUVaT05FPSR7R0VORVJJQ19USU1FWk9ORTotRXVyb3BlL0Jlcmxpbn0nCiAgICAgIC0gJ1RaPSR7VFo6LUV1cm9wZS9CZXJsaW59JwogICAgdm9sdW1lczoKICAgICAgLSAnbjhuLWRhdGE6L2hvbWUvbm9kZS8ubjhuJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICd3Z2V0IC1xTy0gaHR0cDovLzEyNy4wLjAuMTo1Njc4LycKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
"tags": [
"n8n",
"workflow",
@@ -2650,7 +2712,7 @@
"owncloud": {
"documentation": "https://owncloud.com/docs-guides/?utm_source=coolify.io",
"slogan": "OwnCloud with Open Web UI integrates file management with a powerful, user-friendly interface.",
- "compose": "c2VydmljZXM6CiAgb3duY2xvdWQ6CiAgICBpbWFnZTogJ293bmNsb3VkL3NlcnZlcjpsYXRlc3QnCiAgICBkZXBlbmRzX29uOgogICAgICBtYXJpYWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fT1dOQ0xPVURfODA4MAogICAgICAtICdPV05DTE9VRF9ET01BSU49JHtTRVJWSUNFX0ZRRE5fT1dOQ0xPVUR9JwogICAgICAtICdPV05DTE9VRF9UUlVTVEVEX0RPTUFJTlM9JHtTRVJWSUNFX1VSTF9PV05DTE9VRH0nCiAgICAgIC0gT1dOQ0xPVURfREJfVFlQRT1teXNxbAogICAgICAtIE9XTkNMT1VEX0RCX0hPU1Q9bWFyaWFkYgogICAgICAtICdPV05DTE9VRF9EQl9OQU1FPSR7REJfTkFNRTotb3duY2xvdWR9JwogICAgICAtICdPV05DTE9VRF9EQl9VU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9NQVJJQURCfScKICAgICAgLSAnT1dOQ0xPVURfREJfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01BUklBREJ9JwogICAgICAtICdPV05DTE9VRF9BRE1JTl9VU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9PV05DTE9VRH0nCiAgICAgIC0gJ09XTkNMT1VEX0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9PV05DTE9VRH0nCiAgICAgIC0gJ09XTkNMT1VEX01ZU1FMX1VURjhNQjQ9JHtNWVNRTF9VVEY4TUI0Oi10cnVlfScKICAgICAgLSAnT1dOQ0xPVURfUkVESVNfRU5BQkxFRD0ke1JFRElTX0VOQUJMRUQ6LXRydWV9JwogICAgICAtIE9XTkNMT1VEX1JFRElTX0hPU1Q9cmVkaXMKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSAvdXNyL2Jpbi9oZWFsdGhjaGVjawogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiA1CiAgICB2b2x1bWVzOgogICAgICAtICdvd25jbG91ZC1kYXRhOi9tbnQvZGF0YScKICBtYXJpYWRiOgogICAgaW1hZ2U6ICdtYXJpYWRiOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdNWVNRTF9ST09UX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NQVJJQURCUk9PVH0nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTUFSSUFEQn0nCiAgICAgIC0gJ01ZU1FMX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NQVJJQURCfScKICAgICAgLSAnTVlTUUxfREFUQUJBU0U9JHtEQl9OQU1FOi1vd25jbG91ZH0nCiAgICAgIC0gVFo9YXV0bwogICAgY29tbWFuZDoKICAgICAgLSAnLS1jaGFyYWN0ZXItc2V0LXNlcnZlcj11dGY4bWI0JwogICAgICAtICctLWNvbGxhdGlvbi1zZXJ2ZXI9dXRmOG1iNF9iaW4nCiAgICAgIC0gJy0tbWF4LWFsbG93ZWQtcGFja2V0PTEyOE0nCiAgICAgIC0gJy0taW5ub2RiLWxvZy1maWxlLXNpemU9NjRNJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGhlYWx0aGNoZWNrLnNoCiAgICAgICAgLSAnLS1jb25uZWN0JwogICAgICAgIC0gJy0taW5ub2RiX2luaXRpYWxpemVkJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgICB2b2x1bWVzOgogICAgICAtICdvd25jbG91ZC1teXNxbC1kYXRhOi92YXIvbGliL215c3FsJwogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo2JwogICAgY29tbWFuZDoKICAgICAgLSAnLS1kYXRhYmFzZXMnCiAgICAgIC0gJzEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSBwaW5nCiAgICAgIGludGVydmFsOiAxMHMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogNQo=",
+ "compose": "c2VydmljZXM6CiAgb3duY2xvdWQ6CiAgICBpbWFnZTogJ293bmNsb3VkL3NlcnZlcjpsYXRlc3QnCiAgICBkZXBlbmRzX29uOgogICAgICBtYXJpYWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fT1dOQ0xPVURfODA4MAogICAgICAtICdPV05DTE9VRF9ET01BSU49JHtTRVJWSUNFX0ZRRE5fT1dOQ0xPVUR9JwogICAgICAtICdPV05DTE9VRF9UUlVTVEVEX0RPTUFJTlM9JHtTRVJWSUNFX0ZRRE5fT1dOQ0xPVUR9JwogICAgICAtIE9XTkNMT1VEX0RCX1RZUEU9bXlzcWwKICAgICAgLSBPV05DTE9VRF9EQl9IT1NUPW1hcmlhZGIKICAgICAgLSAnT1dOQ0xPVURfREJfTkFNRT0ke0RCX05BTUU6LW93bmNsb3VkfScKICAgICAgLSAnT1dOQ0xPVURfREJfVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfTUFSSUFEQn0nCiAgICAgIC0gJ09XTkNMT1VEX0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NQVJJQURCfScKICAgICAgLSAnT1dOQ0xPVURfQURNSU5fVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfT1dOQ0xPVUR9JwogICAgICAtICdPV05DTE9VRF9BRE1JTl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfT1dOQ0xPVUR9JwogICAgICAtICdPV05DTE9VRF9NWVNRTF9VVEY4TUI0PSR7TVlTUUxfVVRGOE1CNDotdHJ1ZX0nCiAgICAgIC0gJ09XTkNMT1VEX1JFRElTX0VOQUJMRUQ9JHtSRURJU19FTkFCTEVEOi10cnVlfScKICAgICAgLSBPV05DTE9VRF9SRURJU19IT1NUPXJlZGlzCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gL3Vzci9iaW4vaGVhbHRoY2hlY2sKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogNQogICAgdm9sdW1lczoKICAgICAgLSAnb3duY2xvdWQtZGF0YTovbW50L2RhdGEnCiAgbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTVlTUUxfUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQlJPT1R9JwogICAgICAtICdNWVNRTF9VU0VSPSR7U0VSVklDRV9VU0VSX01BUklBREJ9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTUFSSUFEQn0nCiAgICAgIC0gJ01ZU1FMX0RBVEFCQVNFPSR7REJfTkFNRTotb3duY2xvdWR9JwogICAgICAtIFRaPWF1dG8KICAgIGNvbW1hbmQ6CiAgICAgIC0gJy0tY2hhcmFjdGVyLXNldC1zZXJ2ZXI9dXRmOG1iNCcKICAgICAgLSAnLS1jb2xsYXRpb24tc2VydmVyPXV0ZjhtYjRfYmluJwogICAgICAtICctLW1heC1hbGxvd2VkLXBhY2tldD0xMjhNJwogICAgICAtICctLWlubm9kYi1sb2ctZmlsZS1zaXplPTY0TScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBoZWFsdGhjaGVjay5zaAogICAgICAgIC0gJy0tY29ubmVjdCcKICAgICAgICAtICctLWlubm9kYl9pbml0aWFsaXplZCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogICAgdm9sdW1lczoKICAgICAgLSAnb3duY2xvdWQtbXlzcWwtZGF0YTovdmFyL2xpYi9teXNxbCcKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6NicKICAgIGNvbW1hbmQ6CiAgICAgIC0gJy0tZGF0YWJhc2VzJwogICAgICAtICcxJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDUK",
"tags": [
"owncloud",
"file-management",
@@ -2715,7 +2777,7 @@
"penpot": {
"documentation": "https://help.penpot.app/technical-guide/getting-started/#install-with-docker?utm_source=coolify.io",
"slogan": "Penpot is the first Open Source design and prototyping platform for product teams.",
- "compose": "c2VydmljZXM6CiAgZnJvbnRlbmQ6CiAgICBpbWFnZTogJ3BlbnBvdGFwcC9mcm9udGVuZDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdwZW5wb3QtYXNzZXRzOi9vcHQvZGF0YS9hc3NldHMnCiAgICBkZXBlbmRzX29uOgogICAgICBwZW5wb3QtYmFja2VuZDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBwZW5wb3QtZXhwb3J0ZXI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9GUk9OVEVORF84MDgwCiAgICAgIC0gJ1BFTlBPVF9GTEFHUz0ke1BFTlBPVF9GUk9OVEVORF9GTEFHUzotZW5hYmxlLWxvZ2luLXdpdGgtcGFzc3dvcmR9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwODAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBwZW5wb3QtYmFja2VuZDoKICAgIGltYWdlOiAncGVucG90YXBwL2JhY2tlbmQ6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAncGVucG90LWFzc2V0czovb3B0L2RhdGEvYXNzZXRzJwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGVudmlyb25tZW50OgogICAgICAtICdQRU5QT1RfRkxBR1M9JHtQRU5QT1RfQkFDS0VORF9GTEFHUzotZW5hYmxlLWxvZ2luLXdpdGgtcGFzc3dvcmQgZW5hYmxlLXNtdHAgZW5hYmxlLXByZXBsLXNlcnZlcn0nCiAgICAgIC0gUEVOUE9UX0hUVFBfU0VSVkVSX1BPUlQ9NjA2MAogICAgICAtIFBFTlBPVF9TRUNSRVRfS0VZPSRTRVJWSUNFX1JFQUxCQVNFNjRfNjRfUEVOUE9UCiAgICAgIC0gUEVOUE9UX1BVQkxJQ19VUkk9JFNFUlZJQ0VfRlFETl9GUk9OVEVORF84MDgwCiAgICAgIC0gJ1BFTlBPVF9CQUNLRU5EX1VSST1odHRwOi8vcGVucG90LWJhY2tlbmQnCiAgICAgIC0gJ1BFTlBPVF9FWFBPUlRFUl9VUkk9aHR0cDovL3BlbnBvdC1leHBvcnRlcicKICAgICAgLSAnUEVOUE9UX0RBVEFCQVNFX1VSST1wb3N0Z3Jlc3FsOi8vcG9zdGdyZXMvJHtQT1NUR1JFU19EQjotcGVucG90fScKICAgICAgLSAnUEVOUE9UX0RBVEFCQVNFX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUEVOUE9UX0RBVEFCQVNFX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BFTlBPVF9SRURJU19VUkk9cmVkaXM6Ly9yZWRpcy8wJwogICAgICAtIFBFTlBPVF9BU1NFVFNfU1RPUkFHRV9CQUNLRU5EPWFzc2V0cy1mcwogICAgICAtIFBFTlBPVF9TVE9SQUdFX0FTU0VUU19GU19ESVJFQ1RPUlk9L29wdC9kYXRhL2Fzc2V0cwogICAgICAtICdQRU5QT1RfVEVMRU1FVFJZX0VOQUJMRUQ9JHtQRU5QT1RfVEVMRU1FVFJZX0VOQUJMRUQ6LWZhbHNlfScKICAgICAgLSAnUEVOUE9UX1NNVFBfREVGQVVMVF9GUk9NPSR7UEVOUE9UX1NNVFBfREVGQVVMVF9GUk9NOi1uby1yZXBseUBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ1BFTlBPVF9TTVRQX0RFRkFVTFRfUkVQTFlfVE89JHtQRU5QT1RfU01UUF9ERUZBVUxUX1JFUExZX1RPOi1uby1yZXBseUBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ1BFTlBPVF9TTVRQX0hPU1Q9JHtQRU5QT1RfU01UUF9IT1NUOi1tYWlscGl0fScKICAgICAgLSAnUEVOUE9UX1NNVFBfUE9SVD0ke1BFTlBPVF9TTVRQX1BPUlQ6LTEwMjV9JwogICAgICAtICdQRU5QT1RfU01UUF9VU0VSTkFNRT0ke1BFTlBPVF9TTVRQX1VTRVJOQU1FOi1wZW5wb3R9JwogICAgICAtICdQRU5QT1RfU01UUF9QQVNTV09SRD0ke1BFTlBPVF9TTVRQX1BBU1NXT1JEOi1wZW5wb3R9JwogICAgICAtICdQRU5QT1RfU01UUF9UTFM9JHtQRU5QT1RfU01UUF9UTFM6LWZhbHNlfScKICAgICAgLSAnUEVOUE9UX1NNVFBfU1NMPSR7UEVOUE9UX1NNVFBfU1NMOi1mYWxzZX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6NjA2MC9yZWFkeXonCiAgICAgIGludGVydmFsOiAxMHMKICAgICAgdGltZW91dDogMzBzCiAgICAgIHJldHJpZXM6IDE1CiAgcGVucG90LWV4cG9ydGVyOgogICAgaW1hZ2U6ICdwZW5wb3RhcHAvZXhwb3J0ZXI6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUEVOUE9UX1BVQkxJQ19VUkk9JFNFUlZJQ0VfRlFETl9GUk9OVEVORF84MDgwCiAgICAgIC0gJ1BFTlBPVF9SRURJU19VUkk9cmVkaXM6Ly9yZWRpcy8wJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjYwNjEvcmVhZHl6JwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1CiAgbWFpbHBpdDoKICAgIGltYWdlOiAnYXhsbGVudC9tYWlscGl0OmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9NQUlMUElUXzgwMjUKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSAvbWFpbHBpdAogICAgICAgIC0gcmVhZHl6CiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTUnCiAgICB2b2x1bWVzOgogICAgICAtICdwZW5wb3QtcG9zdGdyZXNxbC1kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX0lOSVREQl9BUkdTPS0tZGF0YS1jaGVja3N1bXMKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1wZW5wb3R9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICQke1BPU1RHUkVTX1VTRVJ9IC1kICQke1BPU1RHUkVTX0RCfScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo3LWFscGluZScKICAgIGNvbW1hbmQ6ICdyZWRpcy1zZXJ2ZXIgLS1hcHBlbmRvbmx5IHllcycKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3BlbnBvdC1yZWRpcy1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "compose": "c2VydmljZXM6CiAgZnJvbnRlbmQ6CiAgICBpbWFnZTogJ3BlbnBvdGFwcC9mcm9udGVuZDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdwZW5wb3QtYXNzZXRzOi9vcHQvZGF0YS9hc3NldHMnCiAgICBkZXBlbmRzX29uOgogICAgICBwZW5wb3QtYmFja2VuZDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBwZW5wb3QtZXhwb3J0ZXI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9GUk9OVEVORF84MDgwCiAgICAgIC0gJ1BFTlBPVF9GTEFHUz0ke1BFTlBPVF9GUk9OVEVORF9GTEFHUzotZW5hYmxlLWxvZ2luLXdpdGgtcGFzc3dvcmR9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwODAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBwZW5wb3QtYmFja2VuZDoKICAgIGltYWdlOiAncGVucG90YXBwL2JhY2tlbmQ6bGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAncGVucG90LWFzc2V0czovb3B0L2RhdGEvYXNzZXRzJwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGVudmlyb25tZW50OgogICAgICAtICdQRU5QT1RfRkxBR1M9JHtQRU5QT1RfQkFDS0VORF9GTEFHUzotZW5hYmxlLWxvZ2luLXdpdGgtcGFzc3dvcmQgZW5hYmxlLXNtdHAgZW5hYmxlLXByZXBsLXNlcnZlcn0nCiAgICAgIC0gUEVOUE9UX0hUVFBfU0VSVkVSX1BPUlQ9NjA2MAogICAgICAtIFBFTlBPVF9TRUNSRVRfS0VZPSRTRVJWSUNFX1JFQUxCQVNFNjRfNjRfUEVOUE9UCiAgICAgIC0gUEVOUE9UX1BVQkxJQ19VUkk9JFNFUlZJQ0VfRlFETl9GUk9OVEVORF84MDgwCiAgICAgIC0gJ1BFTlBPVF9CQUNLRU5EX1VSST1odHRwOi8vcGVucG90LWJhY2tlbmQnCiAgICAgIC0gJ1BFTlBPVF9FWFBPUlRFUl9VUkk9aHR0cDovL3BlbnBvdC1leHBvcnRlcicKICAgICAgLSAnUEVOUE9UX0RBVEFCQVNFX1VSST1wb3N0Z3Jlc3FsOi8vcG9zdGdyZXMvJHtQT1NUR1JFU19EQjotcGVucG90fScKICAgICAgLSAnUEVOUE9UX0RBVEFCQVNFX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUEVOUE9UX0RBVEFCQVNFX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BFTlBPVF9SRURJU19VUkk9cmVkaXM6Ly9yZWRpcy8wJwogICAgICAtIFBFTlBPVF9BU1NFVFNfU1RPUkFHRV9CQUNLRU5EPWFzc2V0cy1mcwogICAgICAtIFBFTlBPVF9TVE9SQUdFX0FTU0VUU19GU19ESVJFQ1RPUlk9L29wdC9kYXRhL2Fzc2V0cwogICAgICAtICdQRU5QT1RfVEVMRU1FVFJZX0VOQUJMRUQ9JHtQRU5QT1RfVEVMRU1FVFJZX0VOQUJMRUQ6LWZhbHNlfScKICAgICAgLSAnUEVOUE9UX1NNVFBfREVGQVVMVF9GUk9NPSR7UEVOUE9UX1NNVFBfREVGQVVMVF9GUk9NOi1uby1yZXBseUBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ1BFTlBPVF9TTVRQX0RFRkFVTFRfUkVQTFlfVE89JHtQRU5QT1RfU01UUF9ERUZBVUxUX1JFUExZX1RPOi1uby1yZXBseUBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ1BFTlBPVF9TTVRQX0hPU1Q9JHtQRU5QT1RfU01UUF9IT1NUOi1tYWlscGl0fScKICAgICAgLSAnUEVOUE9UX1NNVFBfUE9SVD0ke1BFTlBPVF9TTVRQX1BPUlQ6LTEwMjV9JwogICAgICAtICdQRU5QT1RfU01UUF9VU0VSTkFNRT0ke1BFTlBPVF9TTVRQX1VTRVJOQU1FOi1wZW5wb3R9JwogICAgICAtICdQRU5QT1RfU01UUF9QQVNTV09SRD0ke1BFTlBPVF9TTVRQX1BBU1NXT1JEOi1wZW5wb3R9JwogICAgICAtICdQRU5QT1RfU01UUF9UTFM9JHtQRU5QT1RfU01UUF9UTFM6LWZhbHNlfScKICAgICAgLSAnUEVOUE9UX1NNVFBfU1NMPSR7UEVOUE9UX1NNVFBfU1NMOi1mYWxzZX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gbm9kZQogICAgICAgIC0gJy1lJwogICAgICAgIC0gInJlcXVpcmUoJ2h0dHAnKS5nZXQoe2hvc3Q6JzEyNy4wLjAuMScsIHBvcnQ6NjA2MCwgcGF0aDonL3JlYWR5eid9LCByZXMgPT4gcHJvY2Vzcy5leGl0KHJlcy5zdGF0dXNDb2RlPT09MjAwID8gMCA6IDEpKS5vbignZXJyb3InLCAoKSA9PiBwcm9jZXNzLmV4aXQoMSkpOyIKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAzMHMKICAgICAgcmV0cmllczogMTUKICBwZW5wb3QtZXhwb3J0ZXI6CiAgICBpbWFnZTogJ3BlbnBvdGFwcC9leHBvcnRlcjpsYXRlc3QnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQRU5QT1RfUFVCTElDX1VSST0kU0VSVklDRV9GUUROX0ZST05URU5EXzgwODAKICAgICAgLSAnUEVOUE9UX1JFRElTX1VSST1yZWRpczovL3JlZGlzLzAnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6NjA2MS9yZWFkeXonCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBtYWlscGl0OgogICAgaW1hZ2U6ICdheGxsZW50L21haWxwaXQ6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX01BSUxQSVRfODAyNQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIC9tYWlscGl0CiAgICAgICAgLSByZWFkeXoKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3BlbnBvdC1wb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfSU5JVERCX0FSR1M9LS1kYXRhLWNoZWNrc3VtcwogICAgICAtIFBPU1RHUkVTX1VTRVI9JFNFUlZJQ0VfVVNFUl9QT1NUR1JFUwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LXBlbnBvdH0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjctYWxwaW5lJwogICAgY29tbWFuZDogJ3JlZGlzLXNlcnZlciAtLWFwcGVuZG9ubHkgeWVzJwogICAgdm9sdW1lczoKICAgICAgLSAncGVucG90LXJlZGlzLWRhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSBwaW5nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
"tags": [
"penpot",
"design",
@@ -2949,6 +3011,36 @@
"minversion": "0.0.0",
"port": "9696"
},
+ "pterodactyl-with-wings": {
+ "documentation": "https://pterodactyl.io/?utm_source=coolify.io",
+ "slogan": "Pterodactyl is a free, open-source game server management panel",
+ "compose": "c2VydmljZXM6CiAgbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjoxMC41JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdoZWFsdGhjaGVjay5zaCAtLWNvbm5lY3QgLS1pbm5vZGJfaW5pdGlhbGl6ZWQgfHwgZXhpdCAxJwogICAgICBzdGFydF9wZXJpb2Q6IDEwcwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDFzCiAgICAgIHJldHJpZXM6IDMKICAgIGVudmlyb25tZW50OgogICAgICAtIE1ZU1FMX1JPT1RfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfTVlTUUxST09UCiAgICAgIC0gTVlTUUxfREFUQUJBU0U9cHRlcm9kYWN0eWwtZGIKICAgICAgLSBNWVNRTF9VU0VSPSRTRVJWSUNFX1VTRVJfTVlTUUwKICAgICAgLSBNWVNRTF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NWVNRTAogICAgdm9sdW1lczoKICAgICAgLSAncHRlcm9kYWN0eWwtZGI6L3Zhci9saWIvbXlzcWwnCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOmFscGluZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncmVkaXMtY2xpIHBpbmcgfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDFzCiAgICAgIHJldHJpZXM6IDMKICBwdGVyb2RhY3R5bDoKICAgIGltYWdlOiAnZ2hjci5pby9wdGVyb2RhY3R5bC9wYW5lbDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdwYW5lbC12YXI6L2FwcC92YXIvJwogICAgICAtICdwYW5lbC1uZ2lueDovZXRjL25naW54L2h0dHAuZC8nCiAgICAgIC0gJ3BhbmVsLWNlcnRzOi9ldGMvbGV0c2VuY3J5cHQvJwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9ldGMvZW50cnlwb2ludC5zaAogICAgICAgIHRhcmdldDogL2VudHJ5cG9pbnQuc2gKICAgICAgICBtb2RlOiAnMDc1NScKICAgICAgICBjb250ZW50OiAiIyEvYmluL3NoXG5zZXQgLWVcblxuIGVjaG8gXCJTZXR0aW5nIGxvZ3MgcGVybWlzc2lvbnMuLi5cIlxuIGNob3duIC1SIG5naW54OiAvYXBwL3N0b3JhZ2UvbG9ncy9cblxuIFVTRVJfRVhJU1RTPSQocGhwIGFydGlzYW4gdGlua2VyIC0tbm8tYW5zaSAtLWV4ZWN1dGU9J2VjaG8gXFxQdGVyb2RhY3R5bFxcTW9kZWxzXFxVc2VyOjp3aGVyZShcImVtYWlsXCIsIFwiJ1wiJEFETUlOX0VNQUlMXCInXCIpLT5leGlzdHMoKSA/IFwiMVwiIDogXCIwXCI7JylcblxuIGlmIFsgXCIkVVNFUl9FWElTVFNcIiA9IFwiMFwiIF07IHRoZW5cbiAgIGVjaG8gXCJBZG1pbiBVc2VyIGRvZXMgbm90IGV4aXN0LCBjcmVhdGluZyB1c2VyIG5vdy5cIlxuICAgcGhwIGFydGlzYW4gcDp1c2VyOm1ha2UgLS1uby1pbnRlcmFjdGlvbiBcXFxuICAgICAtLWFkbWluPTEgXFxcbiAgICAgLS1lbWFpbD1cIiRBRE1JTl9FTUFJTFwiIFxcXG4gICAgIC0tdXNlcm5hbWU9XCIkQURNSU5fVVNFUk5BTUVcIiBcXFxuICAgICAtLW5hbWUtZmlyc3Q9XCIkQURNSU5fRklSU1ROQU1FXCIgXFxcbiAgICAgLS1uYW1lLWxhc3Q9XCIkQURNSU5fTEFTVE5BTUVcIiBcXFxuICAgICAtLXBhc3N3b3JkPVwiJEFETUlOX1BBU1NXT1JEXCJcbiAgIGVjaG8gXCJBZG1pbiB1c2VyIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IVwiXG4gZWxzZVxuICAgZWNobyBcIkFkbWluIFVzZXIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIGNyZWF0aW9uLlwiXG4gZmlcblxuIGV4ZWMgc3VwZXJ2aXNvcmQgLS1ub2RhZW1vblxuIgogICAgY29tbWFuZDoKICAgICAgLSAvZW50cnlwb2ludC5zaAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdjdXJsIC1zZiBodHRwOi8vbG9jYWxob3N0OjgwIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAxcwogICAgICByZXRyaWVzOiAzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fUFRFUk9EQUNUWUxfODAKICAgICAgLSAnQURNSU5fRU1BSUw9JHtBRE1JTl9FTUFJTDotYWRtaW5AZXhhbXBsZS5jb219JwogICAgICAtICdBRE1JTl9VU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9BRE1JTn0nCiAgICAgIC0gJ0FETUlOX0ZJUlNUTkFNRT0ke0FETUlOX0ZJUlNUTkFNRTotQWRtaW59JwogICAgICAtICdBRE1JTl9MQVNUTkFNRT0ke0FETUlOX0xBU1ROQU1FOi1Vc2VyfScKICAgICAgLSAnQURNSU5fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0FETUlOfScKICAgICAgLSAnUFRFUk9EQUNUWUxfSFRUUFM9JHtQVEVST0RBQ1RZTF9IVFRQUzotZmFsc2V9JwogICAgICAtIEFQUF9FTlY9cHJvZHVjdGlvbgogICAgICAtIEFQUF9FTlZJUk9OTUVOVF9PTkxZPWZhbHNlCiAgICAgIC0gQVBQX1VSTD0kU0VSVklDRV9GUUROX1BURVJPREFDVFlMCiAgICAgIC0gJ0FQUF9USU1FWk9ORT0ke1RJTUVaT05FOi1VVEN9JwogICAgICAtICdBUFBfU0VSVklDRV9BVVRIT1I9JHtBUFBfU0VSVklDRV9BVVRIT1I6LWF1dGhvckBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ0xPR19MRVZFTD0ke0xPR19MRVZFTDotZGVidWd9JwogICAgICAtIENBQ0hFX0RSSVZFUj1yZWRpcwogICAgICAtIFNFU1NJT05fRFJJVkVSPXJlZGlzCiAgICAgIC0gUVVFVUVfRFJJVkVSPXJlZGlzCiAgICAgIC0gUkVESVNfSE9TVD1yZWRpcwogICAgICAtIERCX0RBVEFCQVNFPXB0ZXJvZGFjdHlsLWRiCiAgICAgIC0gREJfVVNFUk5BTUU9JFNFUlZJQ0VfVVNFUl9NWVNRTAogICAgICAtIERCX0hPU1Q9bWFyaWFkYgogICAgICAtIERCX1BPUlQ9MzMwNgogICAgICAtIERCX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX01ZU1FMCiAgICAgIC0gTUFJTF9GUk9NPSRNQUlMX0ZST00KICAgICAgLSBNQUlMX0RSSVZFUj0kTUFJTF9EUklWRVIKICAgICAgLSBNQUlMX0hPU1Q9JE1BSUxfSE9TVAogICAgICAtIE1BSUxfUE9SVD0kTUFJTF9QT1JUCiAgICAgIC0gTUFJTF9VU0VSTkFNRT0kTUFJTF9VU0VSTkFNRQogICAgICAtIE1BSUxfUEFTU1dPUkQ9JE1BSUxfUEFTU1dPUkQKICAgICAgLSBNQUlMX0VOQ1JZUFRJT049JE1BSUxfRU5DUllQVElPTgogIHdpbmdzOgogICAgaW1hZ2U6ICdnaGNyLmlvL3B0ZXJvZGFjdHlsL3dpbmdzOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9XSU5HU184NDQzCiAgICAgIC0gJ1RaPSR7VElNRVpPTkU6LVVUQ30nCiAgICAgIC0gV0lOR1NfVVNFUk5BTUU9JFNFUlZJQ0VfVVNFUl9XSU5HUwogICAgdm9sdW1lczoKICAgICAgLSAnL3Zhci9ydW4vZG9ja2VyLnNvY2s6L3Zhci9ydW4vZG9ja2VyLnNvY2snCiAgICAgIC0gJy92YXIvbGliL2RvY2tlci9jb250YWluZXJzLzovdmFyL2xpYi9kb2NrZXIvY29udGFpbmVycy8nCiAgICAgIC0gJy92YXIvbGliL3B0ZXJvZGFjdHlsL3ZvbHVtZXM6L3Zhci9saWIvcHRlcm9kYWN0eWwvdm9sdW1lcycKICAgICAgLSAnL3RtcC9wdGVyb2RhY3R5bDovdG1wL3B0ZXJvZGFjdHlsJwogICAgICAtICd3aW5nc19saWI6L3Zhci9saWIvcHRlcm9kYWN0eWwvJwogICAgICAtICd3aW5nc19sb2dzOi92YXIvbG9nL3B0ZXJvZGFjdHlsLycKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vZXRjL2NvbmZpZy55bWwKICAgICAgICB0YXJnZXQ6IC9ldGMvcHRlcm9kYWN0eWwvY29uZmlnLnltbAogICAgICAgIGNvbnRlbnQ6ICJkZWJ1ZzogZmFsc2VcbnV1aWQ6IFJlcGxhY2VDb25maWdcbnRva2VuX2lkOiBSZXBsYWNlQ29uZmlnXG50b2tlbjogUmVwbGFjZUNvbmZpZ1xuYXBpOlxuICBob3N0OiAwLjAuMC4wXG4gIHBvcnQ6IDg0NDMgIyBXYXJuaW5nLCBwYW5lbCBtdXN0IGhhdmUgNDQzIGFzIGRhZW1vbiBwb3J0LCB3aGlsZSBoZXJlIGl0IHNob3VsZCBzaG91bGQgYmUgODQ0MywgRlFETiBpbiBDb29saWZ5IGZvciB0aGlzIHNlcnZpY2Ugc2hvdWxkIGJlIGh0dHBzOi8vKjo4NDQzXG4gIHNzbDpcbiAgICBlbmFibGVkOiBmYWxzZVxuICAgIGNlcnQ6IFJlcGxhY2VDb25maWdcbiAgICBrZXk6IFJlcGxhY2VDb25maWdcbiAgdXBsb2FkX2xpbWl0OiAxMDBcbnN5c3RlbTpcbiAgZGF0YTogL3Zhci9saWIvcHRlcm9kYWN0eWwvdm9sdW1lc1xuICBzZnRwOlxuICAgIGJpbmRfcG9ydDogMjAyMlxuYWxsb3dlZF9tb3VudHM6IFtdXG5yZW1vdGU6ICcnIgogICAgcG9ydHM6CiAgICAgIC0gJzIwMjI6MjAyMicK",
+ "tags": [
+ "game",
+ "game server",
+ "management",
+ "panel",
+ "minecraft"
+ ],
+ "logo": "svgs/pterodactyl.png",
+ "minversion": "0.0.0",
+ "port": "80, 8443"
+ },
+ "pterodactyl": {
+ "documentation": "https://pterodactyl.io/?utm_source=coolify.io",
+ "slogan": "Pterodactyl is a free, open-source game server management panel",
+ "compose": "c2VydmljZXM6CiAgbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjoxMC41JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdoZWFsdGhjaGVjay5zaCAtLWNvbm5lY3QgLS1pbm5vZGJfaW5pdGlhbGl6ZWQgfHwgZXhpdCAxJwogICAgICBzdGFydF9wZXJpb2Q6IDEwcwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDFzCiAgICAgIHJldHJpZXM6IDMKICAgIGVudmlyb25tZW50OgogICAgICAtIE1ZU1FMX1JPT1RfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfTVlTUUxST09UCiAgICAgIC0gTVlTUUxfREFUQUJBU0U9cHRlcm9kYWN0eWwtZGIKICAgICAgLSBNWVNRTF9VU0VSPSRTRVJWSUNFX1VTRVJfTVlTUUwKICAgICAgLSBNWVNRTF9QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9NWVNRTAogICAgdm9sdW1lczoKICAgICAgLSAncHRlcm9kYWN0eWwtZGI6L3Zhci9saWIvbXlzcWwnCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOmFscGluZScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncmVkaXMtY2xpIHBpbmcgfHwgZXhpdCAxJwogICAgICBpbnRlcnZhbDogMTBzCiAgICAgIHRpbWVvdXQ6IDFzCiAgICAgIHJldHJpZXM6IDMKICBwdGVyb2RhY3R5bDoKICAgIGltYWdlOiAnZ2hjci5pby9wdGVyb2RhY3R5bC9wYW5lbDpsYXRlc3QnCiAgICB2b2x1bWVzOgogICAgICAtICdwYW5lbC12YXI6L2FwcC92YXIvJwogICAgICAtICdwYW5lbC1uZ2lueDovZXRjL25naW54L2h0dHAuZC8nCiAgICAgIC0gJ3BhbmVsLWNlcnRzOi9ldGMvbGV0c2VuY3J5cHQvJwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9ldGMvZW50cnlwb2ludC5zaAogICAgICAgIHRhcmdldDogL2VudHJ5cG9pbnQuc2gKICAgICAgICBtb2RlOiAnMDc1NScKICAgICAgICBjb250ZW50OiAiIyEvYmluL3NoXG5zZXQgLWVcblxuIGVjaG8gXCJTZXR0aW5nIGxvZ3MgcGVybWlzc2lvbnMuLi5cIlxuIGNob3duIC1SIG5naW54OiAvYXBwL3N0b3JhZ2UvbG9ncy9cblxuIFVTRVJfRVhJU1RTPSQocGhwIGFydGlzYW4gdGlua2VyIC0tbm8tYW5zaSAtLWV4ZWN1dGU9J2VjaG8gXFxQdGVyb2RhY3R5bFxcTW9kZWxzXFxVc2VyOjp3aGVyZShcImVtYWlsXCIsIFwiJ1wiJEFETUlOX0VNQUlMXCInXCIpLT5leGlzdHMoKSA/IFwiMVwiIDogXCIwXCI7JylcblxuIGlmIFsgXCIkVVNFUl9FWElTVFNcIiA9IFwiMFwiIF07IHRoZW5cbiAgIGVjaG8gXCJBZG1pbiBVc2VyIGRvZXMgbm90IGV4aXN0LCBjcmVhdGluZyB1c2VyIG5vdy5cIlxuICAgcGhwIGFydGlzYW4gcDp1c2VyOm1ha2UgLS1uby1pbnRlcmFjdGlvbiBcXFxuICAgICAtLWFkbWluPTEgXFxcbiAgICAgLS1lbWFpbD1cIiRBRE1JTl9FTUFJTFwiIFxcXG4gICAgIC0tdXNlcm5hbWU9XCIkQURNSU5fVVNFUk5BTUVcIiBcXFxuICAgICAtLW5hbWUtZmlyc3Q9XCIkQURNSU5fRklSU1ROQU1FXCIgXFxcbiAgICAgLS1uYW1lLWxhc3Q9XCIkQURNSU5fTEFTVE5BTUVcIiBcXFxuICAgICAtLXBhc3N3b3JkPVwiJEFETUlOX1BBU1NXT1JEXCJcbiAgIGVjaG8gXCJBZG1pbiB1c2VyIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IVwiXG4gZWxzZVxuICAgZWNobyBcIkFkbWluIFVzZXIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIGNyZWF0aW9uLlwiXG4gZmlcblxuIGV4ZWMgc3VwZXJ2aXNvcmQgLS1ub2RhZW1vblxuIgogICAgY29tbWFuZDoKICAgICAgLSAvZW50cnlwb2ludC5zaAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdjdXJsIC1zZiBodHRwOi8vbG9jYWxob3N0OjgwIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAxcwogICAgICByZXRyaWVzOiAzCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fUFRFUk9EQUNUWUxfODAKICAgICAgLSAnQURNSU5fRU1BSUw9JHtBRE1JTl9FTUFJTDotYWRtaW5AZXhhbXBsZS5jb219JwogICAgICAtICdBRE1JTl9VU0VSTkFNRT0ke1NFUlZJQ0VfVVNFUl9BRE1JTn0nCiAgICAgIC0gJ0FETUlOX0ZJUlNUTkFNRT0ke0FETUlOX0ZJUlNUTkFNRTotQWRtaW59JwogICAgICAtICdBRE1JTl9MQVNUTkFNRT0ke0FETUlOX0xBU1ROQU1FOi1Vc2VyfScKICAgICAgLSAnQURNSU5fUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX0FETUlOfScKICAgICAgLSAnUFRFUk9EQUNUWUxfSFRUUFM9JHtQVEVST0RBQ1RZTF9IVFRQUzotZmFsc2V9JwogICAgICAtIEFQUF9FTlY9cHJvZHVjdGlvbgogICAgICAtIEFQUF9FTlZJUk9OTUVOVF9PTkxZPWZhbHNlCiAgICAgIC0gQVBQX1VSTD0kU0VSVklDRV9GUUROX1BURVJPREFDVFlMCiAgICAgIC0gJ0FQUF9USU1FWk9ORT0ke1RJTUVaT05FOi1VVEN9JwogICAgICAtICdBUFBfU0VSVklDRV9BVVRIT1I9JHtBUFBfU0VSVklDRV9BVVRIT1I6LWF1dGhvckBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ0xPR19MRVZFTD0ke0xPR19MRVZFTDotZGVidWd9JwogICAgICAtIENBQ0hFX0RSSVZFUj1yZWRpcwogICAgICAtIFNFU1NJT05fRFJJVkVSPXJlZGlzCiAgICAgIC0gUVVFVUVfRFJJVkVSPXJlZGlzCiAgICAgIC0gUkVESVNfSE9TVD1yZWRpcwogICAgICAtIERCX0RBVEFCQVNFPXB0ZXJvZGFjdHlsLWRiCiAgICAgIC0gREJfVVNFUk5BTUU9JFNFUlZJQ0VfVVNFUl9NWVNRTAogICAgICAtIERCX0hPU1Q9bWFyaWFkYgogICAgICAtIERCX1BPUlQ9MzMwNgogICAgICAtIERCX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX01ZU1FMCiAgICAgIC0gTUFJTF9GUk9NPSRNQUlMX0ZST00KICAgICAgLSBNQUlMX0RSSVZFUj0kTUFJTF9EUklWRVIKICAgICAgLSBNQUlMX0hPU1Q9JE1BSUxfSE9TVAogICAgICAtIE1BSUxfUE9SVD0kTUFJTF9QT1JUCiAgICAgIC0gTUFJTF9VU0VSTkFNRT0kTUFJTF9VU0VSTkFNRQogICAgICAtIE1BSUxfUEFTU1dPUkQ9JE1BSUxfUEFTU1dPUkQKICAgICAgLSBNQUlMX0VOQ1JZUFRJT049JE1BSUxfRU5DUllQVElPTgogIHdpbmdzOgogICAgaW1hZ2U6ICdnaGNyLmlvL3B0ZXJvZGFjdHlsL3dpbmdzOmxhdGVzdCcKICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fV0lOR1NfODA4MAogICAgICAtICdUWj0ke1RJTUVaT05FOi1VVEN9JwogICAgICAtIFdJTkdTX1VTRVJOQU1FPXB0ZXJvZGFjdHlsCiAgICB2b2x1bWVzOgogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaycKICAgICAgLSAnL3Zhci9saWIvZG9ja2VyL2NvbnRhaW5lcnMvOi92YXIvbGliL2RvY2tlci9jb250YWluZXJzLycKICAgICAgLSAnL3Zhci9saWIvcHRlcm9kYWN0eWwvOi92YXIvbGliL3B0ZXJvZGFjdHlsLycKICAgICAgLSAnL3RtcC9wdGVyb2RhY3R5bC86L3RtcC9wdGVyb2RhY3R5bC8nCiAgICAgIC0gJ3dpbmdzLWxvZ3M6L3Zhci9sb2cvcHRlcm9kYWN0eWwvJwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9ldGMvY29uZmlnLnltbAogICAgICAgIHRhcmdldDogL2V0Yy9wdGVyb2RhY3R5bC9jb25maWcueW1sCiAgICAgICAgY29udGVudDogImRvY2tlcjpcbiAgbmV0d29yazpcbiAgICBpbnRlcmZhY2U6IDE3Mi4yOC4wLjFcbiAgICBkbnM6XG4gICAgLSAxLjEuMS4xXG4gICAgLSAxLjAuMC4xXG4gICAgbmFtZTogcHRlcm9kYWN0eWxfbndcbiAgICBpc3BuOiBmYWxzZVxuICAgIGRyaXZlcjogXCJcIlxuICAgIG5ldHdvcmtfbW9kZTogcHRlcm9kYWN0eWxfbndcbiAgICBpc19pbnRlcm5hbDogZmFsc2VcbiAgICBlbmFibGVfaWNjOiB0cnVlXG4gICAgbmV0d29ya19tdHU6IDE1MDBcbiAgICBpbnRlcmZhY2VzOlxuICAgICAgdjQ6XG4gICAgICAgIHN1Ym5ldDogMTcyLjI4LjAuMC8xNlxuICAgICAgICBnYXRld2F5OiAxNzIuMjguMC4xXG4gICAgICB2NjpcbiAgICAgICAgc3VibmV0OiBmZGJhOjE3Yzg6NmM5NDo6LzY0XG4gICAgICAgIGdhdGV3YXk6IGZkYmE6MTdjODo2Yzk0OjoxMDExXG4iCg==",
+ "tags": [
+ "game",
+ "game server",
+ "management",
+ "panel",
+ "minecraft"
+ ],
+ "logo": "svgs/pterodactyl.png",
+ "minversion": "0.0.0",
+ "port": "80"
+ },
"qbittorrent": {
"documentation": "https://docs.linuxserver.io/images/docker-qbittorrent/?utm_source=coolify.io",
"slogan": "The qBittorrent project aims to provide an open-source software alternative to \u03bcTorrent.",
@@ -3013,7 +3105,7 @@
"rallly": {
"documentation": "https://support.rallly.co/self-hosting/introduction?utm_source=coolify.io",
"slogan": "Rallly is an open-source scheduling and collaboration tool designed to make organizing events and meetings easier.",
- "compose": "c2VydmljZXM6CiAgcmFsbGx5X2RiOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNC4yJwogICAgdm9sdW1lczoKICAgICAgLSAncmFsbGx5X2RiX2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1yYWxsbHl9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1kICQke1BPU1RHUkVTX0RCfSAtVSAkJHtQT1NUR1JFU19VU0VSfScKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIHJhbGxseToKICAgIGltYWdlOiAnbHVrZXZlbGxhL3JhbGxseTpsYXRlc3QnCiAgICBwbGF0Zm9ybTogbGludXgvYW1kNjQKICAgIGRlcGVuZHNfb246CiAgICAgIHJhbGxseV9kYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX1JBTExMWV8zMDAwCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHJhbGxseV9kYjo1NDMyLyR7UE9TVEdSRVNfREI6LXJhbGxseX0nCiAgICAgIC0gJ1NFQ1JFVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfUkFMTExZfScKICAgICAgLSAnTkVYVF9QVUJMSUNfQkFTRV9VUkw9aHR0cHM6Ly8ke1NFUlZJQ0VfVVJMX1JBTExMWX0nCiAgICAgIC0gJ0FMTE9XRURfRU1BSUxTPSR7QUxMT1dFRF9FTUFJTFN9JwogICAgICAtICdTVVBQT1JUX0VNQUlMPSR7U1VQUE9SVF9FTUFJTDotc3VwcG9ydEBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ1NNVFBfSE9TVD0ke1NNVFBfSE9TVH0nCiAgICAgIC0gJ1NNVFBfUE9SVD0ke1NNVFBfUE9SVH0nCiAgICAgIC0gJ1NNVFBfU0VDVVJFPSR7U01UUF9TRUNVUkV9JwogICAgICAtICdTTVRQX1VTRVI9JHtTTVRQX1VTRVJ9JwogICAgICAtICdTTVRQX1BXRD0ke1NNVFBfUFdEfScKICAgICAgLSAnU01UUF9UTFNfRU5BQkxFRD0ke1NNVFBfVExTX0VOQUJMRUR9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICJiYXNoIC1jICc6PiAvZGV2L3RjcC8xMjcuMC4wLjEvMzAwMCcgfHwgZXhpdCAxIgogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "compose": "c2VydmljZXM6CiAgcmFsbGx5X2RiOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNC4yJwogICAgdm9sdW1lczoKICAgICAgLSAncmFsbGx5X2RiX2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1yYWxsbHl9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1kICQke1BPU1RHUkVTX0RCfSAtVSAkJHtQT1NUR1JFU19VU0VSfScKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQogIHJhbGxseToKICAgIGltYWdlOiAnbHVrZXZlbGxhL3JhbGxseTpsYXRlc3QnCiAgICBwbGF0Zm9ybTogbGludXgvYW1kNjQKICAgIGRlcGVuZHNfb246CiAgICAgIHJhbGxseV9kYjoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX1JBTExMWV8zMDAwCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHJhbGxseV9kYjo1NDMyLyR7UE9TVEdSRVNfREI6LXJhbGxseX0nCiAgICAgIC0gJ1NFQ1JFVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfUkFMTExZfScKICAgICAgLSAnTkVYVF9QVUJMSUNfQkFTRV9VUkw9aHR0cHM6Ly8ke1NFUlZJQ0VfRlFETl9SQUxMTFl9JwogICAgICAtICdBTExPV0VEX0VNQUlMUz0ke0FMTE9XRURfRU1BSUxTfScKICAgICAgLSAnU1VQUE9SVF9FTUFJTD0ke1NVUFBPUlRfRU1BSUw6LXN1cHBvcnRAZXhhbXBsZS5jb219JwogICAgICAtICdTTVRQX0hPU1Q9JHtTTVRQX0hPU1R9JwogICAgICAtICdTTVRQX1BPUlQ9JHtTTVRQX1BPUlR9JwogICAgICAtICdTTVRQX1NFQ1VSRT0ke1NNVFBfU0VDVVJFfScKICAgICAgLSAnU01UUF9VU0VSPSR7U01UUF9VU0VSfScKICAgICAgLSAnU01UUF9QV0Q9JHtTTVRQX1BXRH0nCiAgICAgIC0gJ1NNVFBfVExTX0VOQUJMRUQ9JHtTTVRQX1RMU19FTkFCTEVEfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAiYmFzaCAtYyAnOj4gL2Rldi90Y3AvMTI3LjAuMC4xLzMwMDAnIHx8IGV4aXQgMSIKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAo=",
"tags": [
"scheduling",
"rallly",
@@ -3102,7 +3194,7 @@
"seafile": {
"documentation": "https://manual.seafile.com?utm_source=coolify.io",
"slogan": "Open source cloud storage system for file sync, share and document collaboration",
- "compose": "c2VydmljZXM6CiAgc2VhZmlsZToKICAgIGltYWdlOiAnc2VhZmlsZWx0ZC9zZWFmaWxlLW1jOjEyLjAtbGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnc2VhZmlsZS1kYXRhOi9zaGFyZWQnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fU0VBRklMRV84MAogICAgICAtICdTRUFGSUxFX1NFUlZFUl9IT1NUTkFNRT0ke1NFUlZJQ0VfVVJMX1NFQUZJTEVfODB9JwogICAgICAtIERCX0hPU1Q9bWFyaWFkYgogICAgICAtIERCX1BPUlQ9MzMwNgogICAgICAtICdEQl9ST09UX1BBU1NXRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUxST09UfScKICAgICAgLSAnREJfVVNFUj0ke1NFUlZJQ0VfVVNFUl9NWVNRTH0nCiAgICAgIC0gJ0RCX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTH0nCiAgICAgIC0gJ1NFQUZJTEVfTVlTUUxfREJfQ0NORVRfREJfTkFNRT0ke1NFQUZJTEVfTVlTUUxfREJfQ0NORVRfREJfTkFNRTotY2NuZXRfZGJ9JwogICAgICAtICdTRUFGSUxFX01ZU1FMX0RCX1NFQUZJTEVfREJfTkFNRT0ke1NFQUZJTEVfTVlTUUxfREJfU0VBRklMRV9EQl9OQU1FOi1zZWFmaWxlX2RifScKICAgICAgLSAnU0VBRklMRV9NWVNRTF9EQl9TRUFIVUJfREJfTkFNRT0ke1NFQUZJTEVfTVlTUUxfREJfU0VBSFVCX0RCX05BTUU6LXNlYWh1Yl9kYn0nCiAgICAgIC0gJ1RJTUVfWk9ORT0ke1RJTUVfWk9ORTotVVRDfScKICAgICAgLSAnSU5JVF9TRUFGSUxFX0FETUlOX0VNQUlMPSR7SU5JVF9TRUFGSUxFX0FETUlOX0VNQUlMOi10ZXN0QGV4YW1wbGUuY29tfScKICAgICAgLSAnSU5JVF9TRUFGSUxFX0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICAgIC0gJ1NFQUZJTEVfU0VSVkVSX1BST1RPQ09MPSR7U0VBRklMRV9TRVJWRVJfUFJPVE9DT0w6LWh0dHB9JwogICAgICAtICdTSVRFX1JPT1Q9JHtTSVRFX1JPT1Q6LS99JwogICAgICAtICdOT05fUk9PVD0ke05PTl9ST09UOi1mYWxzZX0nCiAgICAgIC0gJ0pXVF9QUklWQVRFX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfNjRfSldUfScKICAgICAgLSAnU0VBRklMRV9MT0dfVE9fU1RET1VUPSR7U0VBRklMRV9MT0dfVE9fU1RET1VUOi10cnVlfScKICAgIGRlcGVuZHNfb246CiAgICAgIG1hcmlhZGI6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgbWVtY2FjaGVkOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODAvYXBpMi9waW5nJwogICAgICBpbnRlcnZhbDogMjBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEwCiAgbWFyaWFkYjoKICAgIGltYWdlOiAnbWFyaWFkYjoxMScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3NlYWZpbGVfbWFyaWFkYl9kYXRhOi92YXIvbGliL215c3FsJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ01ZU1FMX1JPT1RfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMUk9PVH0nCiAgICAgIC0gJ01ZU1FMX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdNWVNRTF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgICAtICdNWVNRTF9EQVRBQkFTRT0ke01ZU1FMX0RBVEFCQVNFOi1zZWFmaWxlLWRifScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBoZWFsdGhjaGVjay5zaAogICAgICAgIC0gJy0tY29ubmVjdCcKICAgICAgICAtICctLWlubm9kYl9pbml0aWFsaXplZCcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogIG1lbWNhY2hlZDoKICAgIGltYWdlOiAnbWVtY2FjaGVkOmxhdGVzdCcKICAgIGVudHJ5cG9pbnQ6ICdtZW1jYWNoZWQgLW0gMjU2JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdiYXNoIC1jICJlY2hvIHZlcnNpb24gfCAoZXhlYyAzPD4vZGV2L3RjcC9sb2NhbGhvc3QvMTEyMTE7IGNhdCA+JjM7IHRpbWVvdXQgMC41IGNhdCA8JjM7IGV4ZWMgMzwmLSkiJwogICAgICBpbnRlcnZhbDogMjBzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEwCg==",
+ "compose": "c2VydmljZXM6CiAgc2VhZmlsZToKICAgIGltYWdlOiAnc2VhZmlsZWx0ZC9zZWFmaWxlLW1jOjEyLjAtbGF0ZXN0JwogICAgdm9sdW1lczoKICAgICAgLSAnc2VhZmlsZS1kYXRhOi9zaGFyZWQnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fU0VBRklMRV84MAogICAgICAtICdTRUFGSUxFX1NFUlZFUl9IT1NUTkFNRT0ke1NFUlZJQ0VfRlFETl9TRUFGSUxFXzgwfScKICAgICAgLSBEQl9IT1NUPW1hcmlhZGIKICAgICAgLSBEQl9QT1JUPTMzMDYKICAgICAgLSAnREJfUk9PVF9QQVNTV0Q9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMUk9PVH0nCiAgICAgIC0gJ0RCX1VTRVI9JHtTRVJWSUNFX1VTRVJfTVlTUUx9JwogICAgICAtICdEQl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTVlTUUx9JwogICAgICAtICdTRUFGSUxFX01ZU1FMX0RCX0NDTkVUX0RCX05BTUU9JHtTRUFGSUxFX01ZU1FMX0RCX0NDTkVUX0RCX05BTUU6LWNjbmV0X2RifScKICAgICAgLSAnU0VBRklMRV9NWVNRTF9EQl9TRUFGSUxFX0RCX05BTUU9JHtTRUFGSUxFX01ZU1FMX0RCX1NFQUZJTEVfREJfTkFNRTotc2VhZmlsZV9kYn0nCiAgICAgIC0gJ1NFQUZJTEVfTVlTUUxfREJfU0VBSFVCX0RCX05BTUU9JHtTRUFGSUxFX01ZU1FMX0RCX1NFQUhVQl9EQl9OQU1FOi1zZWFodWJfZGJ9JwogICAgICAtICdUSU1FX1pPTkU9JHtUSU1FX1pPTkU6LVVUQ30nCiAgICAgIC0gJ0lOSVRfU0VBRklMRV9BRE1JTl9FTUFJTD0ke0lOSVRfU0VBRklMRV9BRE1JTl9FTUFJTDotdGVzdEBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ0lOSVRfU0VBRklMRV9BRE1JTl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQURNSU59JwogICAgICAtICdTRUFGSUxFX1NFUlZFUl9QUk9UT0NPTD0ke1NFQUZJTEVfU0VSVkVSX1BST1RPQ09MOi1odHRwfScKICAgICAgLSAnU0lURV9ST09UPSR7U0lURV9ST09UOi0vfScKICAgICAgLSAnTk9OX1JPT1Q9JHtOT05fUk9PVDotZmFsc2V9JwogICAgICAtICdKV1RfUFJJVkFURV9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEXzY0X0pXVH0nCiAgICAgIC0gJ1NFQUZJTEVfTE9HX1RPX1NURE9VVD0ke1NFQUZJTEVfTE9HX1RPX1NURE9VVDotdHJ1ZX0nCiAgICBkZXBlbmRzX29uOgogICAgICBtYXJpYWRiOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIG1lbWNhY2hlZDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2Vfc3RhcnRlZAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwL2FwaTIvcGluZycKICAgICAgaW50ZXJ2YWw6IDIwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMAogIG1hcmlhZGI6CiAgICBpbWFnZTogJ21hcmlhZGI6MTEnCiAgICB2b2x1bWVzOgogICAgICAtICdzZWFmaWxlX21hcmlhZGJfZGF0YTovdmFyL2xpYi9teXNxbCcKICAgIGVudmlyb25tZW50OgogICAgICAtICdNWVNRTF9ST09UX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NWVNRTFJPT1R9JwogICAgICAtICdNWVNRTF9VU0VSPSR7U0VSVklDRV9VU0VSX01ZU1FMfScKICAgICAgLSAnTVlTUUxfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX01ZU1FMfScKICAgICAgLSAnTVlTUUxfREFUQUJBU0U9JHtNWVNRTF9EQVRBQkFTRTotc2VhZmlsZS1kYn0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gaGVhbHRoY2hlY2suc2gKICAgICAgICAtICctLWNvbm5lY3QnCiAgICAgICAgLSAnLS1pbm5vZGJfaW5pdGlhbGl6ZWQnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICBtZW1jYWNoZWQ6CiAgICBpbWFnZTogJ21lbWNhY2hlZDpsYXRlc3QnCiAgICBlbnRyeXBvaW50OiAnbWVtY2FjaGVkIC1tIDI1NicKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAnYmFzaCAtYyAiZWNobyB2ZXJzaW9uIHwgKGV4ZWMgMzw+L2Rldi90Y3AvbG9jYWxob3N0LzExMjExOyBjYXQgPiYzOyB0aW1lb3V0IDAuNSBjYXQgPCYzOyBleGVjIDM8Ji0pIicKICAgICAgaW50ZXJ2YWw6IDIwcwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMAo=",
"tags": [
"file-manager",
"file-sharing",
@@ -3135,7 +3227,7 @@
"sequin": {
"documentation": "https://sequinstream.com/docs/?utm_source=coolify.io",
"slogan": "The fastest Postgres change data capture",
- "compose": "c2VydmljZXM6CiAgc2VxdWluOgogICAgaW1hZ2U6ICdzZXF1aW4vc2VxdWluOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9TRVFVSU5fNzM3NgogICAgICAtICdTRVJWRVJfSE9TVD0ke1NFUlZJQ0VfVVJMX1NFUVVJTn0nCiAgICAgIC0gUEdfSE9TVE5BTUU9cG9zdGdyZXMKICAgICAgLSAnUEdfREFUQUJBU0U9JHtQT1NUR1JFU19EQjotc2VxdWluLWRifScKICAgICAgLSBQR19QT1JUPTU0MzIKICAgICAgLSAnUEdfVVNFUk5BTUU9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQR19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtIFBHX1BPT0xfU0laRT0yMAogICAgICAtICdTRUNSRVRfS0VZX0JBU0U9JHtTRVJWSUNFX1JFQUxCQVNFNjRfNjRfU0VDUkVUS0VZfScKICAgICAgLSAnVkFVTFRfS0VZPSR7U0VSVklDRV9SRUFMQkFTRTY0X1ZBVUxUS0VZfScKICAgICAgLSAnUkVESVNfVVJMPXJlZGlzOi8vcmVkaXM6NjM3OScKICAgICAgLSBDT05GSUdfRklMRV9QQVRIPS9jb25maWcvcGxheWdyb3VuZC55bWwKICAgICAgLSAnRkVBVFVSRV9BQ0NPVU5UX1NFTEZfU0lHTlVQPSR7RkVBVFVSRV9BQ0NPVU5UX1NFTEZfU0lHTlVQOi1mYWxzZX0nCiAgICAgIC0gJ1NFUVVJTl9URUxFTUVUUllfRElTQUJMRUQ9JHtTRVFVSU5fVEVMRU1FVFJZX0RJU0FCTEVEOi1mYWxzZX0nCiAgICAgIC0gJ0NSQVNIX1JFUE9SVElOR19ESVNBQkxFRD0ke0NSQVNIX1JFUE9SVElOR19ESVNBQkxFRDotZmFsc2V9JwogICAgZGVwZW5kc19vbjoKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnaHR0cDovL2xvY2FsaG9zdDo3Mzc2L2hlYWx0aCcKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncG9zdGdyZXM6MTYnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotc2VxdWluLWRifScKICAgICAgLSAnUE9TVEdSRVNfVVNFUj0ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICBjb21tYW5kOgogICAgICAtIHBvc3RncmVzCiAgICAgIC0gJy1jJwogICAgICAtIHdhbF9sZXZlbD1sb2dpY2FsCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9IC1kIHNlcXVpbicKICAgICAgaW50ZXJ2YWw6IDEwcwogICAgICB0aW1lb3V0OiAycwogICAgICByZXRyaWVzOiA1CiAgICAgIHN0YXJ0X3BlcmlvZDogMnMKICAgICAgc3RhcnRfaW50ZXJ2YWw6IDFzCiAgICB2b2x1bWVzOgogICAgICAtICdwb3N0Z3Jlc19kYXRhOi92YXIvbGliL3Bvc3RncmVzcWwvZGF0YScKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6NycKICAgIGNvbW1hbmQ6CiAgICAgIC0gcmVkaXMtc2VydmVyCiAgICAgIC0gJy0tcG9ydCcKICAgICAgLSAnNjM3OScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSByZWRpcy1jbGkKICAgICAgICAtIHBpbmcKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAxMAogICAgdm9sdW1lczoKICAgICAgLSAncmVkaXNfZGF0YTovZGF0YScK",
+ "compose": "c2VydmljZXM6CiAgc2VxdWluOgogICAgaW1hZ2U6ICdzZXF1aW4vc2VxdWluOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9TRVFVSU5fNzM3NgogICAgICAtICdTRVJWRVJfSE9TVD0ke1NFUlZJQ0VfRlFETl9TRVFVSU59JwogICAgICAtIFBHX0hPU1ROQU1FPXBvc3RncmVzCiAgICAgIC0gJ1BHX0RBVEFCQVNFPSR7UE9TVEdSRVNfREI6LXNlcXVpbi1kYn0nCiAgICAgIC0gUEdfUE9SVD01NDMyCiAgICAgIC0gJ1BHX1VTRVJOQU1FPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUEdfUEFTU1dPUkQ9JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfScKICAgICAgLSBQR19QT09MX1NJWkU9MjAKICAgICAgLSAnU0VDUkVUX0tFWV9CQVNFPSR7U0VSVklDRV9SRUFMQkFTRTY0XzY0X1NFQ1JFVEtFWX0nCiAgICAgIC0gJ1ZBVUxUX0tFWT0ke1NFUlZJQ0VfUkVBTEJBU0U2NF9WQVVMVEtFWX0nCiAgICAgIC0gJ1JFRElTX1VSTD1yZWRpczovL3JlZGlzOjYzNzknCiAgICAgIC0gQ09ORklHX0ZJTEVfUEFUSD0vY29uZmlnL3BsYXlncm91bmQueW1sCiAgICAgIC0gJ0ZFQVRVUkVfQUNDT1VOVF9TRUxGX1NJR05VUD0ke0ZFQVRVUkVfQUNDT1VOVF9TRUxGX1NJR05VUDotZmFsc2V9JwogICAgICAtICdTRVFVSU5fVEVMRU1FVFJZX0RJU0FCTEVEPSR7U0VRVUlOX1RFTEVNRVRSWV9ESVNBQkxFRDotZmFsc2V9JwogICAgICAtICdDUkFTSF9SRVBPUlRJTkdfRElTQUJMRUQ9JHtDUkFTSF9SRVBPUlRJTkdfRElTQUJMRUQ6LWZhbHNlfScKICAgIGRlcGVuZHNfb246CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3Q6NzM3Ni9oZWFsdGgnCiAgcG9zdGdyZXM6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX0RCPSR7UE9TVEdSRVNfREI6LXNlcXVpbi1kYn0nCiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgY29tbWFuZDoKICAgICAgLSBwb3N0Z3JlcwogICAgICAtICctYycKICAgICAgLSB3YWxfbGV2ZWw9bG9naWNhbAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQtU0hFTEwKICAgICAgICAtICdwZ19pc3JlYWR5IC1VICR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfSAtZCBzZXF1aW4nCiAgICAgIGludGVydmFsOiAxMHMKICAgICAgdGltZW91dDogMnMKICAgICAgcmV0cmllczogNQogICAgICBzdGFydF9wZXJpb2Q6IDJzCiAgICAgIHN0YXJ0X2ludGVydmFsOiAxcwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXNfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjcnCiAgICBjb21tYW5kOgogICAgICAtIHJlZGlzLXNlcnZlcgogICAgICAtICctLXBvcnQnCiAgICAgIC0gJzYzNzknCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSBwaW5nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3JlZGlzX2RhdGE6L2RhdGEnCg==",
"tags": [
"postgres",
"sync",
@@ -3148,7 +3240,7 @@
"shlink": {
"documentation": "https://shlink.io/?utm_source=coolify.io",
"slogan": "The definitive self-hosted URL shortener",
- "compose": "c2VydmljZXM6CiAgc2hsaW5rOgogICAgaW1hZ2U6ICdzaGxpbmtpby9zaGxpbms6c3RhYmxlJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX1NITElOS184MDgwCiAgICAgIC0gJ0RFRkFVTFRfRE9NQUlOPSR7U0VSVklDRV9VUkxfU0hMSU5LfScKICAgICAgLSBJU19IVFRQU19FTkFCTEVEPWZhbHNlCiAgICAgIC0gJ0lOSVRJQUxfQVBJX0tFWT0ke1NFUlZJQ0VfQkFTRTY0X1NITElOS0FQSUtFWX0nCiAgICB2b2x1bWVzOgogICAgICAtICdzaGxpbmstZGF0YTovZXRjL3NobGluay9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwODAvcmVzdC92My9oZWFsdGgnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMTUKICBzaGxpbmstd2ViOgogICAgaW1hZ2U6IHNobGlua2lvL3NobGluay13ZWItY2xpZW50CiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBTRVJWSUNFX0ZRRE5fU0hMSU5LV0VCXzgwODAKICAgICAgLSAnU0hMSU5LX1NFUlZFUl9BUElfS0VZPSR7U0VSVklDRV9CQVNFNjRfU0hMSU5LQVBJS0VZfScKICAgICAgLSAnU0hMSU5LX1NFUlZFUl9VUkw9JHtTRVJWSUNFX0ZRRE5fU0hMSU5LfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDgwJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1Cg==",
+ "compose": "c2VydmljZXM6CiAgc2hsaW5rOgogICAgaW1hZ2U6ICdzaGxpbmtpby9zaGxpbms6c3RhYmxlJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX1NITElOS184MDgwCiAgICAgIC0gJ0RFRkFVTFRfRE9NQUlOPSR7U0VSVklDRV9GUUROX1NITElOS30nCiAgICAgIC0gSVNfSFRUUFNfRU5BQkxFRD1mYWxzZQogICAgICAtICdJTklUSUFMX0FQSV9LRVk9JHtTRVJWSUNFX0JBU0U2NF9TSExJTktBUElLRVl9JwogICAgdm9sdW1lczoKICAgICAgLSAnc2hsaW5rLWRhdGE6L2V0Yy9zaGxpbmsvZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ECiAgICAgICAgLSBjdXJsCiAgICAgICAgLSAnLWYnCiAgICAgICAgLSAnaHR0cDovLzEyNy4wLjAuMTo4MDgwL3Jlc3QvdjMvaGVhbHRoJwogICAgICBpbnRlcnZhbDogMnMKICAgICAgdGltZW91dDogMTBzCiAgICAgIHJldHJpZXM6IDE1CiAgc2hsaW5rLXdlYjoKICAgIGltYWdlOiBzaGxpbmtpby9zaGxpbmstd2ViLWNsaWVudAogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX1NITElOS1dFQl84MDgwCiAgICAgIC0gJ1NITElOS19TRVJWRVJfQVBJX0tFWT0ke1NFUlZJQ0VfQkFTRTY0X1NITElOS0FQSUtFWX0nCiAgICAgIC0gJ1NITElOS19TRVJWRVJfVVJMPSR7U0VSVklDRV9GUUROX1NITElOS30nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAxNQo=",
"tags": [
"links",
"shortener",
@@ -3589,7 +3681,7 @@
"vert": {
"documentation": "https://github.com/VERT-sh/VERT?utm_source=coolify.io",
"slogan": "The next-generation file converter. Open source, fully local and free forever.",
- "compose": "c2VydmljZXM6CiAgdmVydDoKICAgIGltYWdlOiAnZ2hjci5pby92ZXJ0LXNoL3ZlcnQ6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX1ZFUlRfODAKICAgICAgLSAnUFVCX1ZFUlRfVVJMPSR7U0VSVklDRV9GUUROX1ZFUlRfODB9JwogICAgICAtICdQVUJfSE9TVE5BTUU9JHtTRVJWSUNFX1VSTF9WRVJUXzgwfScKICAgICAgLSBQVUJfUE9SVD04MAogICAgICAtIFBVQl9FTlY9cHJvZHVjdGlvbgo=",
+ "compose": "c2VydmljZXM6CiAgdmVydDoKICAgIGltYWdlOiAnZ2hjci5pby92ZXJ0LXNoL3ZlcnQ6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX1ZFUlRfODAKICAgICAgLSAnUFVCX1ZFUlRfVVJMPSR7U0VSVklDRV9GUUROX1ZFUlRfODB9JwogICAgICAtICdQVUJfSE9TVE5BTUU9JHtTRVJWSUNFX0ZRRE5fVkVSVF84MH0nCiAgICAgIC0gUFVCX1BPUlQ9ODAKICAgICAgLSBQVUJfRU5WPXByb2R1Y3Rpb24K",
"tags": [
"converter",
"file",
@@ -3739,7 +3831,7 @@
"weblate": {
"documentation": "https://weblate.org?utm_source=coolify.io",
"slogan": "Weblate is a libre software web-based continuous localization system.",
- "compose": "c2VydmljZXM6CiAgd2VibGF0ZToKICAgIGltYWdlOiAnd2VibGF0ZS93ZWJsYXRlOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9XRUJMQVRFXzgwODAKICAgICAgLSBXRUJMQVRFX1NJVEVfRE9NQUlOPSRTRVJWSUNFX1VSTF9XRUJMQVRFCiAgICAgIC0gJ1dFQkxBVEVfQURNSU5fTkFNRT0ke1dFQkxBVEVfQURNSU5fTkFNRTotQWRtaW59JwogICAgICAtICdXRUJMQVRFX0FETUlOX0VNQUlMPSR7V0VCTEFURV9BRE1JTl9FTUFJTDotYWRtaW5AZXhhbXBsZS5jb219JwogICAgICAtIFdFQkxBVEVfQURNSU5fUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfV0VCTEFURQogICAgICAtICdERUZBVUxUX0ZST01fRU1BSUw9JHtXRUJMQVRFX0FETUlOX0VNQUlMOi1hZG1pbkBleGFtcGxlLmNvbX0nCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSAnUE9TVEdSRVNfREFUQUJBU0U9JHtQT1NUR1JFU19EQjotd2VibGF0ZX0nCiAgICAgIC0gUE9TVEdSRVNfSE9TVD1wb3N0Z3Jlc3FsCiAgICAgIC0gUE9TVEdSRVNfUE9SVD01NDMyCiAgICAgIC0gUkVESVNfSE9TVD1yZWRpcwogICAgICAtIFJFRElTX1BPUlQ9NjM3OQogICAgICAtIFJFRElTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1JFRElTCiAgICB2b2x1bWVzOgogICAgICAtICd3ZWJsYXRlLWRhdGE6L2FwcC9kYXRhJwogICAgICAtICd3ZWJsYXRlLWNhY2hlOi9hcHAvY2FjaGUnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly8xMjcuMC4wLjE6ODA4MCcKICAgICAgaW50ZXJ2YWw6IDJzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzMAogIHBvc3RncmVzcWw6CiAgICBpbWFnZTogJ3Bvc3RncmVzOjE2LWFscGluZScKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzcWwtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBQT1NUR1JFU19VU0VSPSRTRVJWSUNFX1VTRVJfUE9TVEdSRVMKICAgICAgLSBQT1NUR1JFU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9QT1NUR1JFUwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi13ZWJsYXRlfScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncGdfaXNyZWFkeSAtVSAkJHtQT1NUR1JFU19VU0VSfSAtZCAkJHtQT1NUR1JFU19EQn0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6Ny1hbHBpbmUnCiAgICBjb21tYW5kOiAiLS1hcHBlbmRvbmx5IHllcyAtLXJlcXVpcmVwYXNzICR7U0VSVklDRV9QQVNTV09SRF9SRURJU31cbiIKICAgIGVudmlyb25tZW50OgogICAgICAtIFJFRElTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1JFRElTCiAgICB2b2x1bWVzOgogICAgICAtICd3ZWJsYXRlLXJlZGlzLWRhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcmVkaXMtY2xpCiAgICAgICAgLSBwaW5nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMTAK",
+ "compose": "c2VydmljZXM6CiAgd2VibGF0ZToKICAgIGltYWdlOiAnd2VibGF0ZS93ZWJsYXRlOmxhdGVzdCcKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9XRUJMQVRFXzgwODAKICAgICAgLSBXRUJMQVRFX1NJVEVfRE9NQUlOPSRTRVJWSUNFX0ZRRE5fV0VCTEFURQogICAgICAtICdXRUJMQVRFX0FETUlOX05BTUU9JHtXRUJMQVRFX0FETUlOX05BTUU6LUFkbWlufScKICAgICAgLSAnV0VCTEFURV9BRE1JTl9FTUFJTD0ke1dFQkxBVEVfQURNSU5fRU1BSUw6LWFkbWluQGV4YW1wbGUuY29tfScKICAgICAgLSBXRUJMQVRFX0FETUlOX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1dFQkxBVEUKICAgICAgLSAnREVGQVVMVF9GUk9NX0VNQUlMPSR7V0VCTEFURV9BRE1JTl9FTUFJTDotYWRtaW5AZXhhbXBsZS5jb219JwogICAgICAtIFBPU1RHUkVTX1BBU1NXT1JEPSRTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gJ1BPU1RHUkVTX0RBVEFCQVNFPSR7UE9TVEdSRVNfREI6LXdlYmxhdGV9JwogICAgICAtIFBPU1RHUkVTX0hPU1Q9cG9zdGdyZXNxbAogICAgICAtIFBPU1RHUkVTX1BPUlQ9NTQzMgogICAgICAtIFJFRElTX0hPU1Q9cmVkaXMKICAgICAgLSBSRURJU19QT1JUPTYzNzkKICAgICAgLSBSRURJU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9SRURJUwogICAgdm9sdW1lczoKICAgICAgLSAnd2VibGF0ZS1kYXRhOi9hcHAvZGF0YScKICAgICAgLSAnd2VibGF0ZS1jYWNoZTovYXBwL2NhY2hlJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vMTI3LjAuMC4xOjgwODAnCiAgICAgIGludGVydmFsOiAycwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMzAKICBwb3N0Z3Jlc3FsOgogICAgaW1hZ2U6ICdwb3N0Z3JlczoxNi1hbHBpbmUnCiAgICB2b2x1bWVzOgogICAgICAtICdwb3N0Z3Jlc3FsLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUE9TVEdSRVNfVVNFUj0kU0VSVklDRV9VU0VSX1BPU1RHUkVTCiAgICAgIC0gUE9TVEdSRVNfUEFTU1dPUkQ9JFNFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVMKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotd2VibGF0ZX0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3BnX2lzcmVhZHkgLVUgJCR7UE9TVEdSRVNfVVNFUn0gLWQgJCR7UE9TVEdSRVNfREJ9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCiAgcmVkaXM6CiAgICBpbWFnZTogJ3JlZGlzOjctYWxwaW5lJwogICAgY29tbWFuZDogIi0tYXBwZW5kb25seSB5ZXMgLS1yZXF1aXJlcGFzcyAke1NFUlZJQ0VfUEFTU1dPUkRfUkVESVN9XG4iCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBSRURJU19QQVNTV09SRD0kU0VSVklDRV9QQVNTV09SRF9SRURJUwogICAgdm9sdW1lczoKICAgICAgLSAnd2VibGF0ZS1yZWRpcy1kYXRhOi9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHJlZGlzLWNsaQogICAgICAgIC0gcGluZwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogMjBzCiAgICAgIHJldHJpZXM6IDEwCg==",
"tags": [
"localization",
"translation",
@@ -3793,10 +3885,25 @@
"minversion": "0.0.0",
"port": "8000"
},
+ "wings": {
+ "documentation": "https://pterodactyl.io/?utm_source=coolify.io",
+ "slogan": "Wings is Pterodactyl's server control plane",
+ "compose": "c2VydmljZXM6CiAgd2luZ3M6CiAgICBpbWFnZTogJ2doY3IuaW8vcHRlcm9kYWN0eWwvd2luZ3M6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX1dJTkdTXzg0NDMKICAgICAgLSAnVFo9JHtUSU1FWk9ORTotVVRDfScKICAgICAgLSBXSU5HU19VU0VSTkFNRT0kU0VSVklDRV9VU0VSX1dJTkdTCiAgICB2b2x1bWVzOgogICAgICAtICcvdmFyL3J1bi9kb2NrZXIuc29jazovdmFyL3J1bi9kb2NrZXIuc29jaycKICAgICAgLSAnL3Zhci9saWIvZG9ja2VyL2NvbnRhaW5lcnMvOi92YXIvbGliL2RvY2tlci9jb250YWluZXJzLycKICAgICAgLSAnL3Zhci9saWIvcHRlcm9kYWN0eWwvdm9sdW1lczovdmFyL2xpYi9wdGVyb2RhY3R5bC92b2x1bWVzJwogICAgICAtICcvdG1wL3B0ZXJvZGFjdHlsOi90bXAvcHRlcm9kYWN0eWwnCiAgICAgIC0gJ3dpbmdzX2xpYjovdmFyL2xpYi9wdGVyb2RhY3R5bC8nCiAgICAgIC0gJ3dpbmdzX2xvZ3M6L3Zhci9sb2cvcHRlcm9kYWN0eWwvJwogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9ldGMvY29uZmlnLnltbAogICAgICAgIHRhcmdldDogL2V0Yy9wdGVyb2RhY3R5bC9jb25maWcueW1sCiAgICAgICAgY29udGVudDogImRlYnVnOiBmYWxzZVxudXVpZDogUmVwbGFjZUNvbmZpZ1xudG9rZW5faWQ6IFJlcGxhY2VDb25maWdcbnRva2VuOiBSZXBsYWNlQ29uZmlnXG5hcGk6XG4gIGhvc3Q6IDAuMC4wLjBcbiAgcG9ydDogODQ0MyAjIFdhcm5pbmcsIHBhbmVsIG11c3QgaGF2ZSA0NDMgYXMgZGFlbW9uIHBvcnQsIHdoaWxlIGhlcmUgaXQgc2hvdWxkIHNob3VsZCBiZSA4NDQzLCBGUUROIGluIENvb2xpZnkgZm9yIHRoaXMgc2VydmljZSBzaG91bGQgYmUgaHR0cHM6Ly8qOjg0NDNcbiAgc3NsOlxuICAgIGVuYWJsZWQ6IGZhbHNlXG4gICAgY2VydDogUmVwbGFjZUNvbmZpZ1xuICAgIGtleTogUmVwbGFjZUNvbmZpZ1xuICB1cGxvYWRfbGltaXQ6IDEwMFxuc3lzdGVtOlxuICBkYXRhOiAvdmFyL2xpYi9wdGVyb2RhY3R5bC92b2x1bWVzXG4gIHNmdHA6XG4gICAgYmluZF9wb3J0OiAyMDIyXG5hbGxvd2VkX21vdW50czogW11cbnJlbW90ZTogJyciCiAgICBwb3J0czoKICAgICAgLSAnMjAyMjoyMDIyJwo=",
+ "tags": [
+ "game",
+ "game server",
+ "management",
+ "panel",
+ "minecraft"
+ ],
+ "logo": "svgs/pterodactyl.png",
+ "minversion": "0.0.0",
+ "port": "8443"
+ },
"wireguard-easy": {
"documentation": "https://github.com/wg-easy/wg-easy?utm_source=coolify.io",
"slogan": "The easiest way to run WireGuard VPN + Web-based Admin UI.",
- "compose": "c2VydmljZXM6CiAgd2ctZWFzeToKICAgIGltYWdlOiAnZ2hjci5pby93Zy1lYXN5L3dnLWVhc3k6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX1dJUkVHVUFSREVBU1lfNTE4MjEKICAgICAgLSAnV0dfSE9TVD0ke1NFUlZJQ0VfVVJMX1dJUkVHVUFSREVBU1l9JwogICAgICAtICdMQU5HPSR7TEFORzotZW59JwogICAgICAtIFdHX1BPUlQ9NTE4MjAKICAgICAgLSAnX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICB2b2x1bWVzOgogICAgICAtICd3Zy1lYXN5Oi9ldGMvd2lyZWd1YXJkJwogICAgcG9ydHM6CiAgICAgIC0gJzUxODIwOjUxODIwL3VkcCcKICAgIGNhcF9hZGQ6CiAgICAgIC0gTkVUX0FETUlOCiAgICAgIC0gU1lTX01PRFVMRQogICAgc3lzY3RsczoKICAgICAgLSBuZXQuaXB2NC5jb25mLmFsbC5zcmNfdmFsaWRfbWFyaz0xCiAgICAgIC0gbmV0LmlwdjQuaXBfZm9yd2FyZD0xCiAgICBlbnRyeXBvaW50OgogICAgICAtIC9iaW4vYmFzaAogICAgICAtICctYycKICAgICAgLSAiZXZhbCBcIndncHcgJyR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nID4gL3Bhc3MtaGFzaFwiXG5ldmFsIFwiJChjYXQgL3Bhc3MtaGFzaCkgZHVtYi1pbml0IG5vZGUgc2VydmVyLmpzXCJcbiIK",
+ "compose": "c2VydmljZXM6CiAgd2ctZWFzeToKICAgIGltYWdlOiAnZ2hjci5pby93Zy1lYXN5L3dnLWVhc3k6bGF0ZXN0JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9GUUROX1dJUkVHVUFSREVBU1lfNTE4MjEKICAgICAgLSAnV0dfSE9TVD0ke1NFUlZJQ0VfRlFETl9XSVJFR1VBUkRFQVNZfScKICAgICAgLSAnTEFORz0ke0xBTkc6LWVufScKICAgICAgLSBXR19QT1JUPTUxODIwCiAgICAgIC0gJ19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQURNSU59JwogICAgdm9sdW1lczoKICAgICAgLSAnd2ctZWFzeTovZXRjL3dpcmVndWFyZCcKICAgIHBvcnRzOgogICAgICAtICc1MTgyMDo1MTgyMC91ZHAnCiAgICBjYXBfYWRkOgogICAgICAtIE5FVF9BRE1JTgogICAgICAtIFNZU19NT0RVTEUKICAgIHN5c2N0bHM6CiAgICAgIC0gbmV0LmlwdjQuY29uZi5hbGwuc3JjX3ZhbGlkX21hcms9MQogICAgICAtIG5ldC5pcHY0LmlwX2ZvcndhcmQ9MQogICAgZW50cnlwb2ludDoKICAgICAgLSAvYmluL2Jhc2gKICAgICAgLSAnLWMnCiAgICAgIC0gImV2YWwgXCJ3Z3B3ICcke1NFUlZJQ0VfUEFTU1dPUkRfQURNSU59JyA+IC9wYXNzLWhhc2hcIlxuZXZhbCBcIiQoY2F0IC9wYXNzLWhhc2gpIGR1bWItaW5pdCBub2RlIHNlcnZlci5qc1wiXG4iCg==",
"tags": [
"wireguard",
"vpn",
diff --git a/tests/Feature/DockerComposeParseTest.php b/tests/Feature/DockerComposeParseTest.php
deleted file mode 100644
index 9407d2470..000000000
--- a/tests/Feature/DockerComposeParseTest.php
+++ /dev/null
@@ -1,386 +0,0 @@
-applicationYaml = '
-// version: "3.8"
-// services:
-// app:
-// image: nginx
-// environment:
-// SERVICE_FQDN_APP: /app
-// APP_KEY: base64
-// APP_DEBUG: "${APP_DEBUG:-false}"
-// APP_URL: $SERVICE_FQDN_APP
-// DB_URL: postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@db:5432/postgres?schema=public
-// volumes:
-// - "./nginx:/etc/nginx"
-// - "data:/var/www/html"
-// depends_on:
-// - db
-// db:
-// image: postgres
-// environment:
-// POSTGRES_USER: "${SERVICE_USER_POSTGRES}"
-// POSTGRES_PASSWORD: "${SERVICE_PASSWORD_POSTGRES}"
-// volumes:
-// - "dbdata:/var/lib/postgresql/data"
-// healthcheck:
-// test:
-// - CMD
-// - pg_isready
-// - "-U"
-// - "postgres"
-// interval: 2s
-// timeout: 10s
-// retries: 10
-// depends_on:
-// app:
-// condition: service_healthy
-// networks:
-// default:
-// name: something
-// external: true
-// noinet:
-// driver: bridge
-// internal: true';
-
-// $this->applicationComposeFileString = Yaml::parse($this->applicationYaml);
-
-// $this->application = Application::create([
-// 'name' => 'Application for tests',
-// 'docker_compose_domains' => json_encode([
-// 'app' => [
-// 'domain' => 'http://bcoowoookw0co4cok4sgc4k8.127.0.0.1.sslip.io',
-// ],
-// ]),
-// 'preview_url_template' => '{{pr_id}}.{{domain}}',
-// 'uuid' => 'bcoowoookw0co4cok4sgc4k8s',
-// 'repository_project_id' => 603035348,
-// 'git_repository' => 'coollabsio/coolify-examples',
-// 'git_branch' => 'main',
-// 'base_directory' => '/docker-compose-test',
-// 'docker_compose_location' => 'docker-compose.yml',
-// 'docker_compose_raw' => $this->applicationYaml,
-// 'build_pack' => 'dockercompose',
-// 'ports_exposes' => '3000',
-// 'environment_id' => 1,
-// 'destination_id' => 0,
-// 'destination_type' => StandaloneDocker::class,
-// 'source_id' => 1,
-// 'source_type' => GithubApp::class,
-// ]);
-// $this->application->environment_variables_preview()->where('key', 'APP_DEBUG')->update(['value' => 'true']);
-// $this->applicationPreview = ApplicationPreview::create([
-// 'git_type' => 'github',
-// 'application_id' => $this->application->id,
-// 'pull_request_id' => 1,
-// 'pull_request_html_url' => 'https://github.com/coollabsio/coolify-examples/pull/1',
-// ]);
-// $this->serviceYaml = '
-// services:
-// activepieces:
-// image: "ghcr.io/activepieces/activepieces:latest"
-// environment:
-// - SERVICE_FQDN_ACTIVEPIECES
-// - AP_API_KEY=$SERVICE_PASSWORD_64_APIKEY
-// - AP_URL=$SERVICE_URL_ACTIVEPIECES
-// - AP_ENCRYPTION_KEY=$SERVICE_PASSWORD_ENCRYPTIONKEY
-// - AP_ENGINE_EXECUTABLE_PATH=dist/packages/engine/main.js
-// - AP_ENVIRONMENT=prod
-// - AP_EXECUTION_MODE=${AP_EXECUTION_MODE}
-// - AP_FRONTEND_URL=$SERVICE_FQDN_ACTIVEPIECES
-// - AP_JWT_SECRET=$SERVICE_PASSWORD_64_JWT
-// - AP_POSTGRES_DATABASE=activepieces
-// - AP_POSTGRES_HOST=postgres
-// - AP_POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
-// - AP_POSTGRES_PORT=5432
-// - AP_POSTGRES_USERNAME=$SERVICE_USER_POSTGRES
-// - AP_REDIS_HOST=redis
-// - AP_REDIS_PORT=6379
-// - AP_SANDBOX_RUN_TIME_SECONDS=600
-// - AP_TELEMETRY_ENABLED=true
-// - "AP_TEMPLATES_SOURCE_URL=https://cloud.activepieces.com/api/v1/flow-templates"
-// - AP_TRIGGER_DEFAULT_POLL_INTERVAL=5
-// - AP_WEBHOOK_TIMEOUT_SECONDS=30
-// depends_on:
-// postgres:
-// condition: service_healthy
-// redis:
-// condition: service_started
-// healthcheck:
-// test: ["CMD", "curl", "-f", "http://127.0.0.1:80"]
-// interval: 5s
-// timeout: 20s
-// retries: 10
-// postgres:
-// image: "nginx"
-// environment:
-// - SERVICE_FQDN_ACTIVEPIECES=/api
-// - POSTGRES_DB=activepieces
-// - PASSW=$AP_POSTGRES_PASSWORD
-// - AP_FRONTEND_URL=$SERVICE_FQDN_ACTIVEPIECES
-// - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
-// - POSTGRES_USER=$SERVICE_USER_POSTGRES
-// volumes:
-// - "pg-data:/var/lib/postgresql/data"
-// healthcheck:
-// test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
-// interval: 5s
-// timeout: 20s
-// retries: 10
-// redis:
-// image: "redis:latest"
-// volumes:
-// - "redis_data:/data"
-// healthcheck:
-// test: ["CMD", "redis-cli", "ping"]
-// interval: 5s
-// timeout: 20s
-// retries: 10
-
-// ';
-
-// $this->serviceComposeFileString = Yaml::parse($this->serviceYaml);
-
-// $this->service = Service::create([
-// 'name' => 'Service for tests',
-// 'uuid' => 'tgwcg8w4s844wkog8kskw44g',
-// 'docker_compose_raw' => $this->serviceYaml,
-// 'environment_id' => 1,
-// 'server_id' => 0,
-// 'destination_id' => 0,
-// 'destination_type' => StandaloneDocker::class,
-// ]);
-// });
-
-// afterEach(function () {
-// // $this->applicationPreview->forceDelete();
-// $this->application->forceDelete();
-// DeleteResourceJob::dispatchSync($this->service);
-// $this->service->forceDelete();
-// });
-
-// test('ServiceComposeParseNew', function () {
-// $output = newParser($this->service);
-// $this->service->saveComposeConfigs();
-// expect($output)->toBeInstanceOf(Collection::class);
-// });
-
-// test('ApplicationComposeParse', function () {
-// expect($this->jsonapplicationComposeFile)->toBeJson()->ray();
-
-// $output = $this->application->newParser();
-// $outputOld = $this->application->parse();
-// expect($output)->toBeInstanceOf(Collection::class);
-// expect($outputOld)->toBeInstanceOf(Collection::class);
-
-// $services = $output->get('services');
-// $servicesCount = count($this->applicationComposeFile['services']);
-// expect($services)->toHaveCount($servicesCount);
-
-// $app = $services->get('app');
-// expect($app)->not->toBeNull();
-
-// $db = $services->get('db');
-// expect($db)->not->toBeNull();
-
-// $appDependsOn = $app->get('depends_on');
-// expect($appDependsOn)->toContain('db');
-
-// $dbDependsOn = $db->get('depends_on');
-
-// expect($dbDependsOn->keys()->first())->toContain('app');
-// expect(data_get($dbDependsOn, 'app.condition'))->toBe('service_healthy');
-
-// $environment = $app->get('environment');
-// expect($environment)->not->toBeNull();
-
-// $coolifyBranch = $environment->get('COOLIFY_BRANCH');
-// expect($coolifyBranch)->toBe('main');
-
-// $coolifyContainerName = $environment->get('COOLIFY_CONTAINER_NAME');
-// expect($coolifyContainerName)->toMatch('/app-[a-z0-9]{24}-[0-9]{12}/');
-
-// $volumes = $app->get('volumes');
-// // /etc/nginx
-// $fileMount = $volumes->get(0);
-// $applicationConfigurationDir = application_configuration_dir();
-// expect($fileMount)->toBe("{$applicationConfigurationDir}/{$this->application->uuid}/nginx:/etc/nginx");
-
-// // data:/var/www/html
-// $volumeMount = $volumes->get(1);
-// expect($volumeMount)->toBe("{$this->application->uuid}_data:/var/www/html");
-
-// $containerName = $app->get('container_name');
-// expect($containerName)->toMatch('/app-[a-z0-9]{24}-[0-9]{12}/');
-
-// $labels = $app->get('labels');
-// expect($labels)->not->toBeNull();
-// expect($labels)->toContain('coolify.managed=true');
-// expect($labels)->toContain('coolify.pullRequestId=0');
-
-// $topLevelVolumes = $output->get('volumes');
-// expect($topLevelVolumes)->not->toBeNull();
-// $firstVolume = $topLevelVolumes->first();
-// expect(data_get($firstVolume, 'name'))->toBe("{$this->application->uuid}_data");
-
-// $topLevelNetworks = $output->get('networks');
-// expect($topLevelNetworks)->not->toBeNull();
-// $defaultNetwork = data_get($topLevelNetworks, 'default');
-// expect($defaultNetwork)->not->toBeNull();
-// expect(data_get($defaultNetwork, 'name'))->toBe('something');
-// expect(data_get($defaultNetwork, 'external'))->toBe(true);
-
-// $noinetNetwork = data_get($topLevelNetworks, 'noinet');
-// expect($noinetNetwork)->not->toBeNull();
-// expect(data_get($noinetNetwork, 'driver'))->toBe('bridge');
-// expect(data_get($noinetNetwork, 'internal'))->toBe(true);
-
-// $serviceNetwork = data_get($topLevelNetworks, "{$this->application->uuid}");
-// expect($serviceNetwork)->not->toBeNull();
-// expect(data_get($serviceNetwork, 'name'))->toBe("{$this->application->uuid}");
-// expect(data_get($serviceNetwork, 'external'))->toBe(true);
-
-// });
-
-// test('ApplicationComposeParsePreviewDeployment', function () {
-// $pullRequestId = 1;
-// $previewId = 77;
-// expect($this->jsonapplicationComposeFile)->toBeJson()->ray();
-
-// $output = $this->application->newParser(pull_request_id: $pullRequestId, preview_id: $previewId);
-// $outputOld = $this->application->parse();
-// expect($output)->toBeInstanceOf(Collection::class);
-// expect($outputOld)->toBeInstanceOf(Collection::class);
-
-// ray(Yaml::dump($output->toArray(), 10, 2));
-// $services = $output->get('services');
-// $servicesCount = count($this->applicationComposeFile['services']);
-// expect($services)->toHaveCount($servicesCount);
-
-// $appNull = $services->get('app');
-// expect($appNull)->toBeNull();
-
-// $dbNull = $services->get('db');
-// expect($dbNull)->toBeNull();
-
-// $app = $services->get("app-pr-{$pullRequestId}");
-// expect($app)->not->toBeNull();
-
-// $db = $services->get("db-pr-{$pullRequestId}");
-// expect($db)->not->toBeNull();
-
-// $appDependsOn = $app->get('depends_on');
-// expect($appDependsOn)->toContain('db-pr-'.$pullRequestId);
-
-// $dbDependsOn = $db->get('depends_on');
-
-// expect($dbDependsOn->keys()->first())->toContain('app-pr-'.$pullRequestId);
-// expect(data_get($dbDependsOn, 'app-pr-'.$pullRequestId.'.condition'))->toBe('service_healthy');
-
-// $environment = $app->get('environment');
-// expect($environment)->not->toBeNull();
-
-// $coolifyBranch = $environment->get('COOLIFY_BRANCH');
-// expect($coolifyBranch)->toBe("pull/{$pullRequestId}/head");
-
-// $coolifyContainerName = $environment->get('COOLIFY_CONTAINER_NAME');
-// expect($coolifyContainerName)->toMatch("/app-[a-z0-9]{24}-pr-{$pullRequestId}/");
-
-// $volumes = $app->get('volumes');
-// // /etc/nginx
-// $fileMount = $volumes->get(0);
-// $applicationConfigurationDir = application_configuration_dir();
-// expect($fileMount)->toBe("{$applicationConfigurationDir}/{$this->application->uuid}/nginx-pr-{$pullRequestId}:/etc/nginx");
-
-// // data:/var/www/html
-// $volumeMount = $volumes->get(1);
-// expect($volumeMount)->toBe("{$this->application->uuid}_data-pr-{$pullRequestId}:/var/www/html");
-
-// $containerName = $app->get('container_name');
-// expect($containerName)->toMatch("/app-[a-z0-9]{24}-pr-{$pullRequestId}/");
-
-// $labels = $app->get('labels');
-// expect($labels)->not->toBeNull();
-// expect($labels)->toContain('coolify.managed=true');
-// expect($labels)->toContain("coolify.pullRequestId={$pullRequestId}");
-
-// $topLevelVolumes = $output->get('volumes');
-// expect($topLevelVolumes)->not->toBeNull();
-// $firstVolume = $topLevelVolumes->first();
-// expect(data_get($firstVolume, 'name'))->toBe("{$this->application->uuid}_data-pr-{$pullRequestId}");
-
-// $topLevelNetworks = $output->get('networks');
-// expect($topLevelNetworks)->not->toBeNull();
-// $defaultNetwork = data_get($topLevelNetworks, 'default');
-// expect($defaultNetwork)->not->toBeNull();
-// expect(data_get($defaultNetwork, 'name'))->toBe('something');
-// expect(data_get($defaultNetwork, 'external'))->toBe(true);
-
-// $noinetNetwork = data_get($topLevelNetworks, 'noinet');
-// expect($noinetNetwork)->not->toBeNull();
-// expect(data_get($noinetNetwork, 'driver'))->toBe('bridge');
-// expect(data_get($noinetNetwork, 'internal'))->toBe(true);
-
-// $serviceNetwork = data_get($topLevelNetworks, "{$this->application->uuid}-{$pullRequestId}");
-// expect($serviceNetwork)->not->toBeNull();
-// expect(data_get($serviceNetwork, 'name'))->toBe("{$this->application->uuid}-{$pullRequestId}");
-// expect(data_get($serviceNetwork, 'external'))->toBe(true);
-
-// });
-
-// test('ServiceComposeParseOld', function () {
-// $output = parseDockerComposeFile($this->service);
-// ray('Old parser');
-// // ray($output->toArray());
-// // ray($this->service->environment_variables->pluck('value', 'key')->toArray());
-// // foreach ($this->service->applications as $application) {
-// // ray($application->persistentStorages->pluck('mount_path', 'name')->toArray());
-// // }
-// // foreach ($this->service->databases as $database) {
-// // ray($database->persistentStorages->pluck('mount_path', 'name')->toArray());
-// // }
-// expect($output)->toBeInstanceOf(Collection::class);
-// });
-
-// test('DockerBinaryAvailableOnLocalhost', function () {
-// $server = Server::find(0);
-// $output = instant_remote_process(['docker --version'], $server);
-// expect($output)->toContain('Docker version');
-// });
-
-// test('convertToKeyValueCollection', function () {
-// ray()->clearAll();
-// $yaml = '
-// services:
-// activepieces:
-// environment:
-// - SERVICE_FQDN_ACTIVEPIECES=/app
-// - AP_API_KEY=$SERVICE_PASSWORD_64_APIKEY
-// activepieces2:
-// environment:
-// - SERVICE_FQDN_ACTIVEPIECES=/v1/realtime
-// postgres:
-// environment:
-// - POSTGRES_DB: activepieces
-// ';
-// $parsedYaml = Yaml::parse($yaml);
-// $output = convertToKeyValueCollection($parsedYaml['services']['activepieces']['environment']);
-// $output2 = convertToKeyValueCollection($parsedYaml['services']['activepieces2']['environment']);
-// $dboutput = convertToKeyValueCollection($parsedYaml['services']['postgres']['environment']);
-// ray($output);
-// ray($output2);
-// ray($dboutput);
-// expect($output)->toBeInstanceOf(Collection::class);
-// expect($output2)->toBeInstanceOf(Collection::class);
-// expect($dboutput)->toBeInstanceOf(Collection::class);
-// });