Dokploy

Appwrite

Appwrite is an end-to-end platform for building Web, Mobile, Native, or Backend apps, packaged as a set of Docker microservices. It includes both a backend server and a fully integrated hosting solution for deploying static and server-side rendered frontends. Appwrite abstracts the complexity and repetitiveness required to build modern apps from scratch and allows you to build secure, full-stack applications faster. Using Appwrite, you can easily integrate your app with user authentication and multiple sign-in methods, a database for storing and querying users and team data, storage and file management, image manipulation, Cloud Functions, messaging, and more services.

Appwrite logo

Configuration

version: "3.8"

x-logging: &x-logging
  logging:
    driver: "json-file"
    options:
      max-file: "5"
      max-size: "10m"
services:
  appwrite:
    image: appwrite/appwrite:1.8.0
    <<: *x-logging
    restart: unless-stopped
    labels:
      - traefik.enable=true
      - traefik.constraint-label-stack=appwrite
    volumes:
      - appwrite-uploads:/storage/uploads:rw
      - appwrite-imports:/storage/imports:rw
      - appwrite-cache:/storage/cache:rw
      - appwrite-config:/storage/config:rw
      - appwrite-certificates:/storage/certificates:rw
      - appwrite-functions:/storage/functions:rw
      - appwrite-sites:/storage/sites:rw
      - appwrite-builds:/storage/builds:rw
    depends_on:
      - mariadb
      - redis
    #      - clamav
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_LOCALE
      - _APP_COMPRESSION_MIN_SIZE_BYTES
      - _APP_CONSOLE_WHITELIST_ROOT
      - _APP_CONSOLE_WHITELIST_EMAILS
      - _APP_CONSOLE_SESSION_ALERTS
      - _APP_CONSOLE_WHITELIST_IPS
      - _APP_CONSOLE_HOSTNAMES
      - _APP_SYSTEM_EMAIL_NAME
      - _APP_SYSTEM_EMAIL_ADDRESS
      - _APP_EMAIL_SECURITY
      - _APP_SYSTEM_RESPONSE_FORMAT
      - _APP_OPTIONS_ABUSE
      - _APP_OPTIONS_ROUTER_PROTECTION
      - _APP_OPTIONS_FORCE_HTTPS
      - _APP_OPTIONS_ROUTER_FORCE_HTTPS
      - _APP_OPENSSL_KEY_V1
      - _APP_DOMAIN
      - _APP_DOMAIN_TARGET_CNAME
      - _APP_DOMAIN_TARGET_AAAA
      - _APP_DOMAIN_TARGET_A
      - _APP_DOMAIN_TARGET_CAA
      - _APP_DNS
      - _APP_DOMAIN_FUNCTIONS
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_SMTP_HOST
      - _APP_SMTP_PORT
      - _APP_SMTP_SECURE
      - _APP_SMTP_USERNAME
      - _APP_SMTP_PASSWORD
      - _APP_USAGE_STATS
      - _APP_STORAGE_LIMIT
      - _APP_STORAGE_PREVIEW_LIMIT
      - _APP_STORAGE_ANTIVIRUS
      - _APP_STORAGE_ANTIVIRUS_HOST
      - _APP_STORAGE_ANTIVIRUS_PORT
      - _APP_STORAGE_DEVICE
      - _APP_STORAGE_S3_ACCESS_KEY
      - _APP_STORAGE_S3_SECRET
      - _APP_STORAGE_S3_REGION
      - _APP_STORAGE_S3_BUCKET
      - _APP_STORAGE_S3_ENDPOINT
      - _APP_STORAGE_DO_SPACES_ACCESS_KEY
      - _APP_STORAGE_DO_SPACES_SECRET
      - _APP_STORAGE_DO_SPACES_REGION
      - _APP_STORAGE_DO_SPACES_BUCKET
      - _APP_STORAGE_BACKBLAZE_ACCESS_KEY
      - _APP_STORAGE_BACKBLAZE_SECRET
      - _APP_STORAGE_BACKBLAZE_REGION
      - _APP_STORAGE_BACKBLAZE_BUCKET
      - _APP_STORAGE_LINODE_ACCESS_KEY
      - _APP_STORAGE_LINODE_SECRET
      - _APP_STORAGE_LINODE_REGION
      - _APP_STORAGE_LINODE_BUCKET
      - _APP_STORAGE_WASABI_ACCESS_KEY
      - _APP_STORAGE_WASABI_SECRET
      - _APP_STORAGE_WASABI_REGION
      - _APP_STORAGE_WASABI_BUCKET
      - _APP_COMPUTE_SIZE_LIMIT
      - _APP_FUNCTIONS_TIMEOUT
      - _APP_SITES_TIMEOUT
      - _APP_COMPUTE_BUILD_TIMEOUT
      - _APP_COMPUTE_CPUS
      - _APP_COMPUTE_MEMORY
      - _APP_FUNCTIONS_RUNTIMES
      - _APP_SITES_RUNTIMES
      - _APP_DOMAIN_SITES
      - _APP_EXECUTOR_SECRET
      - _APP_EXECUTOR_HOST
      - _APP_LOGGING_CONFIG
      - _APP_MAINTENANCE_INTERVAL
      - _APP_MAINTENANCE_DELAY
      - _APP_MAINTENANCE_START_TIME
      - _APP_MAINTENANCE_RETENTION_EXECUTION
      - _APP_MAINTENANCE_RETENTION_CACHE
      - _APP_MAINTENANCE_RETENTION_ABUSE
      - _APP_MAINTENANCE_RETENTION_AUDIT
      - _APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE
      - _APP_MAINTENANCE_RETENTION_USAGE_HOURLY
      - _APP_MAINTENANCE_RETENTION_SCHEDULES
      - _APP_SMS_PROVIDER
      - _APP_SMS_FROM
      - _APP_GRAPHQL_MAX_BATCH_SIZE
      - _APP_GRAPHQL_MAX_COMPLEXITY
      - _APP_GRAPHQL_MAX_DEPTH
      - _APP_VCS_GITHUB_APP_NAME
      - _APP_VCS_GITHUB_PRIVATE_KEY
      - _APP_VCS_GITHUB_APP_ID
      - _APP_VCS_GITHUB_WEBHOOK_SECRET
      - _APP_VCS_GITHUB_CLIENT_SECRET
      - _APP_VCS_GITHUB_CLIENT_ID
      - _APP_MIGRATIONS_FIREBASE_CLIENT_ID
      - _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET
      - _APP_ASSISTANT_OPENAI_API_KEY
  appwrite-console:
    <<: *x-logging
    image: appwrite/console:7.4.7
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.constraint-label-stack=appwrite"

  appwrite-realtime:
    image: appwrite/appwrite:1.8.0
    entrypoint: realtime
    <<: *x-logging
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.constraint-label-stack=appwrite"
    depends_on:
      - mariadb
      - redis
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPTIONS_ABUSE
      - _APP_OPTIONS_ROUTER_PROTECTION
      - _APP_OPENSSL_KEY_V1
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_USAGE_STATS
      - _APP_LOGGING_CONFIG

  appwrite-worker-audits:
    image: appwrite/appwrite:1.8.0
    entrypoint: worker-audits
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - redis
      - mariadb
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_LOGGING_CONFIG

  appwrite-worker-webhooks:
    image: appwrite/appwrite:1.8.0
    entrypoint: worker-webhooks
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - redis
      - mariadb
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_EMAIL_SECURITY
      - _APP_SYSTEM_SECURITY_EMAIL_ADDRESS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_LOGGING_CONFIG

  appwrite-worker-deletes:
    image: appwrite/appwrite:1.8.0
    entrypoint: worker-deletes
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - redis
      - mariadb
    volumes:
      - appwrite-uploads:/storage/uploads:rw
      - appwrite-cache:/storage/cache:rw
      - appwrite-functions:/storage/functions:rw
      - appwrite-sites:/storage/sites:rw
      - appwrite-builds:/storage/builds:rw
      - appwrite-certificates:/storage/certificates:rw
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_STORAGE_DEVICE
      - _APP_STORAGE_S3_ACCESS_KEY
      - _APP_STORAGE_S3_SECRET
      - _APP_STORAGE_S3_REGION
      - _APP_STORAGE_S3_BUCKET
      - _APP_STORAGE_S3_ENDPOINT
      - _APP_STORAGE_DO_SPACES_ACCESS_KEY
      - _APP_STORAGE_DO_SPACES_SECRET
      - _APP_STORAGE_DO_SPACES_REGION
      - _APP_STORAGE_DO_SPACES_BUCKET
      - _APP_STORAGE_BACKBLAZE_ACCESS_KEY
      - _APP_STORAGE_BACKBLAZE_SECRET
      - _APP_STORAGE_BACKBLAZE_REGION
      - _APP_STORAGE_BACKBLAZE_BUCKET
      - _APP_STORAGE_LINODE_ACCESS_KEY
      - _APP_STORAGE_LINODE_SECRET
      - _APP_STORAGE_LINODE_REGION
      - _APP_STORAGE_LINODE_BUCKET
      - _APP_STORAGE_WASABI_ACCESS_KEY
      - _APP_STORAGE_WASABI_SECRET
      - _APP_STORAGE_WASABI_REGION
      - _APP_STORAGE_WASABI_BUCKET
      - _APP_LOGGING_CONFIG
      - _APP_EXECUTOR_SECRET
      - _APP_EXECUTOR_HOST
      - _APP_MAINTENANCE_RETENTION_ABUSE
      - _APP_MAINTENANCE_RETENTION_AUDIT
      - _APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE
      - _APP_MAINTENANCE_RETENTION_EXECUTION
      - _APP_SYSTEM_SECURITY_EMAIL_ADDRESS
      - _APP_EMAIL_CERTIFICATES

  appwrite-worker-databases:
    image: appwrite/appwrite:1.8.0
    entrypoint: worker-databases
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - redis
      - mariadb
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_LOGGING_CONFIG

  appwrite-worker-builds:
    image: appwrite/appwrite:1.8.0
    entrypoint: worker-builds
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - redis
      - mariadb
    volumes:
      - appwrite-functions:/storage/functions:rw
      - appwrite-sites:/storage/sites:rw
      - appwrite-builds:/storage/builds:rw
      - appwrite-uploads:/storage/uploads:rw
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_EXECUTOR_SECRET
      - _APP_EXECUTOR_HOST
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_LOGGING_CONFIG
      - _APP_VCS_GITHUB_APP_NAME
      - _APP_VCS_GITHUB_PRIVATE_KEY
      - _APP_VCS_GITHUB_APP_ID
      - _APP_FUNCTIONS_TIMEOUT
      - _APP_SITES_TIMEOUT
      - _APP_COMPUTE_BUILD_TIMEOUT
      - _APP_COMPUTE_CPUS
      - _APP_COMPUTE_MEMORY
      - _APP_COMPUTE_SIZE_LIMIT
      - _APP_OPTIONS_FORCE_HTTPS
      - _APP_OPTIONS_ROUTER_FORCE_HTTPS
      - _APP_DOMAIN
      - _APP_STORAGE_DEVICE
      - _APP_STORAGE_S3_ACCESS_KEY
      - _APP_STORAGE_S3_SECRET
      - _APP_STORAGE_S3_REGION
      - _APP_STORAGE_S3_BUCKET
      - _APP_STORAGE_S3_ENDPOINT
      - _APP_STORAGE_DO_SPACES_ACCESS_KEY
      - _APP_STORAGE_DO_SPACES_SECRET
      - _APP_STORAGE_DO_SPACES_REGION
      - _APP_STORAGE_DO_SPACES_BUCKET
      - _APP_STORAGE_BACKBLAZE_ACCESS_KEY
      - _APP_STORAGE_BACKBLAZE_SECRET
      - _APP_STORAGE_BACKBLAZE_REGION
      - _APP_STORAGE_BACKBLAZE_BUCKET
      - _APP_STORAGE_LINODE_ACCESS_KEY
      - _APP_STORAGE_LINODE_SECRET
      - _APP_STORAGE_LINODE_REGION
      - _APP_STORAGE_LINODE_BUCKET
      - _APP_STORAGE_WASABI_ACCESS_KEY
      - _APP_STORAGE_WASABI_SECRET
      - _APP_STORAGE_WASABI_REGION
      - _APP_STORAGE_WASABI_BUCKET
      - _APP_DOMAIN_SITES

  appwrite-worker-certificates:
    image: appwrite/appwrite:1.8.0
    entrypoint: worker-certificates
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - redis
      - mariadb
    volumes:
      - appwrite-config:/storage/config:rw
      - appwrite-certificates:/storage/certificates:rw
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_DOMAIN
      - _APP_DOMAIN_TARGET_CNAME
      - _APP_DOMAIN_TARGET_AAAA
      - _APP_DOMAIN_TARGET_A
      - _APP_DOMAIN_TARGET_CAA
      - _APP_DNS
      - _APP_DOMAIN_FUNCTIONS
      - _APP_EMAIL_CERTIFICATES
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_LOGGING_CONFIG

  appwrite-worker-functions:
    image: appwrite/appwrite:1.8.0
    entrypoint: worker-functions
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - redis
      - mariadb
      - openruntimes-executor
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_DOMAIN
      - _APP_OPTIONS_FORCE_HTTPS
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_FUNCTIONS_TIMEOUT
      - _APP_SITES_TIMEOUT
      - _APP_COMPUTE_BUILD_TIMEOUT
      - _APP_COMPUTE_CPUS
      - _APP_COMPUTE_MEMORY
      - _APP_EXECUTOR_SECRET
      - _APP_EXECUTOR_HOST
      - _APP_USAGE_STATS
      - _APP_DOCKER_HUB_USERNAME
      - _APP_DOCKER_HUB_PASSWORD
      - _APP_LOGGING_CONFIG

  appwrite-worker-mails:
    image: appwrite/appwrite:1.8.0
    entrypoint: worker-mails
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - redis
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_SYSTEM_EMAIL_NAME
      - _APP_SYSTEM_EMAIL_ADDRESS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_SMTP_HOST
      - _APP_SMTP_PORT
      - _APP_SMTP_SECURE
      - _APP_SMTP_USERNAME
      - _APP_SMTP_PASSWORD
      - _APP_LOGGING_CONFIG
      - _APP_DOMAIN
      - _APP_OPTIONS_FORCE_HTTPS

  appwrite-worker-messaging:
    image: appwrite/appwrite:1.8.0
    entrypoint: worker-messaging
    <<: *x-logging
    restart: unless-stopped
    volumes:
      - appwrite-uploads:/storage/uploads:rw
    depends_on:
      - redis
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_LOGGING_CONFIG
      - _APP_SMS_FROM
      - _APP_SMS_PROVIDER
      - _APP_STORAGE_DEVICE
      - _APP_STORAGE_S3_ACCESS_KEY
      - _APP_STORAGE_S3_SECRET
      - _APP_STORAGE_S3_REGION
      - _APP_STORAGE_S3_BUCKET
      - _APP_STORAGE_S3_ENDPOINT
      - _APP_STORAGE_DO_SPACES_ACCESS_KEY
      - _APP_STORAGE_DO_SPACES_SECRET
      - _APP_STORAGE_DO_SPACES_REGION
      - _APP_STORAGE_DO_SPACES_BUCKET
      - _APP_STORAGE_BACKBLAZE_ACCESS_KEY
      - _APP_STORAGE_BACKBLAZE_SECRET
      - _APP_STORAGE_BACKBLAZE_REGION
      - _APP_STORAGE_BACKBLAZE_BUCKET
      - _APP_STORAGE_LINODE_ACCESS_KEY
      - _APP_STORAGE_LINODE_SECRET
      - _APP_STORAGE_LINODE_REGION
      - _APP_STORAGE_LINODE_BUCKET
      - _APP_STORAGE_WASABI_ACCESS_KEY
      - _APP_STORAGE_WASABI_SECRET
      - _APP_STORAGE_WASABI_REGION
      - _APP_STORAGE_WASABI_BUCKET

  appwrite-worker-migrations:
    image: appwrite/appwrite:1.8.0
    entrypoint: worker-migrations
    <<: *x-logging
    restart: unless-stopped
    volumes:
      - appwrite-imports:/storage/imports:rw
    depends_on:
      - mariadb
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_DOMAIN
      - _APP_DOMAIN_TARGET_CNAME
      - _APP_DOMAIN_TARGET_AAAA
      - _APP_DOMAIN_TARGET_A
      - _APP_DOMAIN_TARGET_CAA
      - _APP_DNS
      - _APP_EMAIL_SECURITY
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_LOGGING_CONFIG
      - _APP_MIGRATIONS_FIREBASE_CLIENT_ID
      - _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET

  appwrite-task-maintenance:
    image: appwrite/appwrite:1.8.0
    entrypoint: maintenance
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - redis
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_DOMAIN
      - _APP_DOMAIN_TARGET_CNAME
      - _APP_DOMAIN_TARGET_AAAA
      - _APP_DOMAIN_TARGET_A
      - _APP_DOMAIN_TARGET_CAA
      - _APP_DNS
      - _APP_DOMAIN_FUNCTIONS
      - _APP_OPENSSL_KEY_V1
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_MAINTENANCE_INTERVAL
      - _APP_MAINTENANCE_RETENTION_EXECUTION
      - _APP_MAINTENANCE_RETENTION_CACHE
      - _APP_MAINTENANCE_RETENTION_ABUSE
      - _APP_MAINTENANCE_RETENTION_AUDIT
      - _APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE
      - _APP_MAINTENANCE_RETENTION_USAGE_HOURLY
      - _APP_MAINTENANCE_RETENTION_SCHEDULES

  appwrite-task-stats-resources:
    image: appwrite/appwrite:1.8.0
    entrypoint: stats-resources
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - redis
      - mariadb
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_USAGE_STATS
      - _APP_LOGGING_CONFIG
      - _APP_DATABASE_SHARED_TABLES
      - _APP_STATS_RESOURCES_INTERVAL

  appwrite-worker-stats-resources:
    image: appwrite/appwrite:1.8.0
    entrypoint: worker-stats-resources
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - redis
      - mariadb
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_USAGE_STATS
      - _APP_LOGGING_CONFIG
      - _APP_STATS_RESOURCES_INTERVAL

  appwrite-worker-stats-usage:
    image: appwrite/appwrite:1.8.0
    entrypoint: worker-stats-usage
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - redis
      - mariadb
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_USAGE_STATS
      - _APP_LOGGING_CONFIG
      - _APP_USAGE_AGGREGATION_INTERVAL

  appwrite-task-scheduler-functions:
    image: appwrite/appwrite:1.8.0
    entrypoint: schedule-functions
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - mariadb
      - redis
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS

  appwrite-task-scheduler-executions:
    image: appwrite/appwrite:1.8.0
    entrypoint: schedule-executions
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - mariadb
      - redis
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS

  appwrite-task-scheduler-messages:
    image: appwrite/appwrite:1.8.0
    entrypoint: schedule-messages
    <<: *x-logging
    restart: unless-stopped
    depends_on:
      - mariadb
      - redis
    environment:
      - _APP_ENV
      - _APP_WORKER_PER_CORE
      - _APP_OPENSSL_KEY_V1
      - _APP_REDIS_HOST
      - _APP_REDIS_PORT
      - _APP_REDIS_USER
      - _APP_REDIS_PASS
      - _APP_DB_HOST
      - _APP_DB_PORT
      - _APP_DB_SCHEMA
      - _APP_DB_USER
      - _APP_DB_PASS

  appwrite-assistant:
    image: appwrite/assistant:0.8.3
    <<: *x-logging
    restart: unless-stopped
    environment:
      - _APP_ASSISTANT_OPENAI_API_KEY

  appwrite-browser:
    image: appwrite/browser:0.2.4
    <<: *x-logging
    restart: unless-stopped

  openruntimes-executor:
    hostname: exc1
    <<: *x-logging
    restart: unless-stopped
    stop_signal: SIGINT
    image: openruntimes/executor:0.7.22
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - appwrite-builds:/storage/builds:rw
      - appwrite-functions:/storage/functions:rw
      - appwrite-sites:/storage/sites:rw
      # Host mount necessary to share files between executor and runtimes.
      # It's not possible to share mount file between 2 containers without host mount (copying is too slow)
      - /tmp:/tmp:rw
    environment:
      - OPR_EXECUTOR_INACTIVE_TRESHOLD=$_APP_COMPUTE_INACTIVE_THRESHOLD
      - OPR_EXECUTOR_MAINTENANCE_INTERVAL=$_APP_COMPUTE_MAINTENANCE_INTERVAL
      - OPR_EXECUTOR_NETWORK=$_APP_COMPUTE_RUNTIMES_NETWORK
      - OPR_EXECUTOR_DOCKER_HUB_USERNAME=$_APP_DOCKER_HUB_USERNAME
      - OPR_EXECUTOR_DOCKER_HUB_PASSWORD=$_APP_DOCKER_HUB_PASSWORD
      - OPR_EXECUTOR_ENV=$_APP_ENV
      - OPR_EXECUTOR_RUNTIMES=$_APP_FUNCTIONS_RUNTIMES,$_APP_SITES_RUNTIMES
      - OPR_EXECUTOR_SECRET=$_APP_EXECUTOR_SECRET
      - OPR_EXECUTOR_RUNTIME_VERSIONS=v5
      - OPR_EXECUTOR_LOGGING_CONFIG=$_APP_LOGGING_CONFIG
      - OPR_EXECUTOR_STORAGE_DEVICE=$_APP_STORAGE_DEVICE
      - OPR_EXECUTOR_STORAGE_S3_ACCESS_KEY=$_APP_STORAGE_S3_ACCESS_KEY
      - OPR_EXECUTOR_STORAGE_S3_SECRET=$_APP_STORAGE_S3_SECRET
      - OPR_EXECUTOR_STORAGE_S3_REGION=$_APP_STORAGE_S3_REGION
      - OPR_EXECUTOR_STORAGE_S3_BUCKET=$_APP_STORAGE_S3_BUCKET
      - OPR_EXECUTOR_STORAGE_S3_ENDPOINT=$_APP_STORAGE_S3_ENDPOINT
      - OPR_EXECUTOR_STORAGE_DO_SPACES_ACCESS_KEY=$_APP_STORAGE_DO_SPACES_ACCESS_KEY
      - OPR_EXECUTOR_STORAGE_DO_SPACES_SECRET=$_APP_STORAGE_DO_SPACES_SECRET
      - OPR_EXECUTOR_STORAGE_DO_SPACES_REGION=$_APP_STORAGE_DO_SPACES_REGION
      - OPR_EXECUTOR_STORAGE_DO_SPACES_BUCKET=$_APP_STORAGE_DO_SPACES_BUCKET
      - OPR_EXECUTOR_STORAGE_BACKBLAZE_ACCESS_KEY=$_APP_STORAGE_BACKBLAZE_ACCESS_KEY
      - OPR_EXECUTOR_STORAGE_BACKBLAZE_SECRET=$_APP_STORAGE_BACKBLAZE_SECRET
      - OPR_EXECUTOR_STORAGE_BACKBLAZE_REGION=$_APP_STORAGE_BACKBLAZE_REGION
      - OPR_EXECUTOR_STORAGE_BACKBLAZE_BUCKET=$_APP_STORAGE_BACKBLAZE_BUCKET
      - OPR_EXECUTOR_STORAGE_LINODE_ACCESS_KEY=$_APP_STORAGE_LINODE_ACCESS_KEY
      - OPR_EXECUTOR_STORAGE_LINODE_SECRET=$_APP_STORAGE_LINODE_SECRET
      - OPR_EXECUTOR_STORAGE_LINODE_REGION=$_APP_STORAGE_LINODE_REGION
      - OPR_EXECUTOR_STORAGE_LINODE_BUCKET=$_APP_STORAGE_LINODE_BUCKET
      - OPR_EXECUTOR_STORAGE_WASABI_ACCESS_KEY=$_APP_STORAGE_WASABI_ACCESS_KEY
      - OPR_EXECUTOR_STORAGE_WASABI_SECRET=$_APP_STORAGE_WASABI_SECRET
      - OPR_EXECUTOR_STORAGE_WASABI_REGION=$_APP_STORAGE_WASABI_REGION
      - OPR_EXECUTOR_STORAGE_WASABI_BUCKET=$_APP_STORAGE_WASABI_BUCKET

  mariadb:
    image: mariadb:10.11 # fix issues when upgrading using: mysql_upgrade -u root -p
    <<: *x-logging
    restart: unless-stopped
    volumes:
      - appwrite-mariadb:/var/lib/mysql:rw
    environment:
      - MYSQL_ROOT_PASSWORD=${_APP_DB_ROOT_PASS}
      - MYSQL_DATABASE=${_APP_DB_SCHEMA}
      - MYSQL_USER=${_APP_DB_USER}
      - MYSQL_PASSWORD=${_APP_DB_PASS}
      - MARIADB_AUTO_UPGRADE=1
    command: "mysqld --innodb-flush-method=fsync"

  redis:
    image: redis:7.2.4-alpine
    <<: *x-logging
    restart: unless-stopped
    command: >
      redis-server
      --maxmemory            512mb
      --maxmemory-policy     allkeys-lru
      --maxmemory-samples    5
    volumes:
      - appwrite-redis:/data:rw

  # clamav:
  #   image: appwrite/clamav:1.2.0
  #   restart: unless-stopped
  #   volumes:
  #     - appwrite-uploads:/storage/uploads

volumes:
  appwrite-mariadb:
  appwrite-redis:
  appwrite-cache:
  appwrite-uploads:
  appwrite-imports:
  appwrite-certificates:
  appwrite-functions:
  appwrite-sites:
  appwrite-builds:
  appwrite-config:
[variables]
main_domain = "${domain}"
functions_domain = "functions.${main_domain}"
sites_domain = "sites.${main_domain}"
openssl_key = "${password:32}"
db_root_pw = "${password:32}"
db_user_pw = "${password:32}"
executor_secret = "${password:32}"

[config]
env = [
  "_APP_ENV=production",
  "_APP_LOCALE=en",
  "_APP_OPTIONS_ABUSE=enabled",
  "_APP_OPTIONS_FORCE_HTTPS=disabled",
  "_APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=disabled",
  "_APP_OPTIONS_ROUTER_FORCE_HTTPS=disabled",
  "_APP_OPTIONS_ROUTER_PROTECTION=disabled",
  "_APP_OPENSSL_KEY_V1=${openssl_key}",
  "_APP_DOMAIN=${main_domain}",
  "_APP_CUSTOM_DOMAIN_DENY_LIST=example.com,test.com,app.example.com",
  "_APP_DOMAIN_FUNCTIONS=${functions_domain}",
  "_APP_DOMAIN_SITES=${sites_domain}",
  "_APP_DOMAIN_TARGET=localhost",
  "_APP_DOMAIN_TARGET_CNAME=localhost",
  "_APP_DOMAIN_TARGET_AAAA=::1",
  "_APP_DOMAIN_TARGET_A=127.0.0.1",
  "_APP_DOMAIN_TARGET_CAA=",
  "_APP_DNS=8.8.8.8",
  "_APP_CONSOLE_WHITELIST_ROOT=enabled",
  "_APP_CONSOLE_WHITELIST_EMAILS=",
  "_APP_CONSOLE_WHITELIST_IPS=",
  "_APP_CONSOLE_HOSTNAMES=",
  "_APP_SYSTEM_EMAIL_NAME=Appwrite",
  "[email protected]",
  "[email protected]",
  "_APP_SYSTEM_RESPONSE_FORMAT=",
  "[email protected]",
  "_APP_EMAIL_SECURITY=",
  "_APP_EMAIL_CERTIFICATES=",
  "_APP_USAGE_STATS=enabled",
  "_APP_LOGGING_PROVIDER=",
  "_APP_LOGGING_CONFIG=",
  "_APP_USAGE_AGGREGATION_INTERVAL=30",
  "_APP_USAGE_TIMESERIES_INTERVAL=30",
  "_APP_USAGE_DATABASE_INTERVAL=900",
  "_APP_WORKER_PER_CORE=6",
  "_APP_CONSOLE_SESSION_ALERTS=disabled",
  "_APP_COMPRESSION_ENABLED=enabled",
  "_APP_COMPRESSION_MIN_SIZE_BYTES=1024",
  "_APP_REDIS_HOST=redis",
  "_APP_REDIS_PORT=6379",
  "_APP_REDIS_USER=",
  "_APP_REDIS_PASS=",
  "_APP_DB_HOST=mariadb",
  "_APP_DB_PORT=3306",
  "_APP_DB_SCHEMA=appwrite",
  "_APP_DB_USER=user",
  "_APP_DB_PASS=${db_user_pw}",
  "_APP_DB_ROOT_PASS=${db_root_pw}",
  "_APP_INFLUXDB_HOST=influxdb",
  "_APP_INFLUXDB_PORT=8086",
  "_APP_STATSD_HOST=telegraf",
  "_APP_STATSD_PORT=8125",
  "_APP_SMTP_HOST=",
  "_APP_SMTP_PORT=",
  "_APP_SMTP_SECURE=",
  "_APP_SMTP_USERNAME=",
  "_APP_SMTP_PASSWORD=",
  "_APP_SMS_PROVIDER=",
  "_APP_SMS_FROM=",
  "_APP_STORAGE_LIMIT=30000000",
  "_APP_STORAGE_PREVIEW_LIMIT=20000000",
  "_APP_STORAGE_ANTIVIRUS=disabled",
  "_APP_STORAGE_ANTIVIRUS_HOST=clamav",
  "_APP_STORAGE_ANTIVIRUS_PORT=3310",
  "_APP_STORAGE_DEVICE=local",
  "_APP_STORAGE_S3_ACCESS_KEY=",
  "_APP_STORAGE_S3_SECRET=",
  "_APP_STORAGE_S3_REGION=us-east-1",
  "_APP_STORAGE_S3_BUCKET=",
  "_APP_STORAGE_S3_ENDPOINT=",
  "_APP_STORAGE_DO_SPACES_ACCESS_KEY=",
  "_APP_STORAGE_DO_SPACES_SECRET=",
  "_APP_STORAGE_DO_SPACES_REGION=us-east-1",
  "_APP_STORAGE_DO_SPACES_BUCKET=",
  "_APP_STORAGE_BACKBLAZE_ACCESS_KEY=",
  "_APP_STORAGE_BACKBLAZE_SECRET=",
  "_APP_STORAGE_BACKBLAZE_REGION=us-west-004",
  "_APP_STORAGE_BACKBLAZE_BUCKET=",
  "_APP_STORAGE_LINODE_ACCESS_KEY=",
  "_APP_STORAGE_LINODE_SECRET=",
  "_APP_STORAGE_LINODE_REGION=eu-central-1",
  "_APP_STORAGE_LINODE_BUCKET=",
  "_APP_STORAGE_WASABI_ACCESS_KEY=",
  "_APP_STORAGE_WASABI_SECRET=",
  "_APP_STORAGE_WASABI_REGION=eu-central-1",
  "_APP_STORAGE_WASABI_BUCKET=",
  "_APP_FUNCTIONS_SIZE_LIMIT=30000000",
  "_APP_COMPUTE_SIZE_LIMIT=30000000",
  "_APP_FUNCTIONS_BUILD_SIZE_LIMIT=2000000000",
  "_APP_FUNCTIONS_TIMEOUT=900",
  "_APP_FUNCTIONS_BUILD_TIMEOUT=900",
  "_APP_COMPUTE_BUILD_TIMEOUT=900",
  "_APP_FUNCTIONS_CONTAINERS=10",
  "_APP_FUNCTIONS_CPUS=0",
  "_APP_COMPUTE_CPUS=0",
  "_APP_FUNCTIONS_MEMORY=0",
  "_APP_COMPUTE_MEMORY=0",
  "_APP_FUNCTIONS_MEMORY_SWAP=0",
  "_APP_FUNCTIONS_RUNTIMES=node-16.0,php-8.0,python-3.9,ruby-3.0",
  "_APP_EXECUTOR_SECRET=${executor_secret}",
  "_APP_EXECUTOR_HOST=http://exc1/v1",
  "_APP_EXECUTOR_RUNTIME_NETWORK=appwrite_runtimes",
  "_APP_FUNCTIONS_ENVS=node-16.0,php-7.4,python-3.9,ruby-3.0",
  "_APP_FUNCTIONS_INACTIVE_THRESHOLD=60",
  "_APP_COMPUTE_INACTIVE_THRESHOLD=60",
  "DOCKERHUB_PULL_USERNAME=",
  "DOCKERHUB_PULL_PASSWORD=",
  "DOCKERHUB_PULL_EMAIL=",
  "OPEN_RUNTIMES_NETWORK=appwrite_runtimes",
  "_APP_FUNCTIONS_RUNTIMES_NETWORK=dokploy-network",
  "_APP_COMPUTE_RUNTIMES_NETWORK=dokploy-network",
  "_APP_DOCKER_HUB_USERNAME=",
  "_APP_DOCKER_HUB_PASSWORD=",
  "_APP_FUNCTIONS_MAINTENANCE_INTERVAL=3600",
  "_APP_COMPUTE_MAINTENANCE_INTERVAL=3600",
  "_APP_SITES_TIMEOUT=900",
  "_APP_SITES_RUNTIMES=static-1,node-22,flutter-3.29",
  "_APP_VCS_GITHUB_APP_NAME=",
  "_APP_VCS_GITHUB_PRIVATE_KEY=",
  "_APP_VCS_GITHUB_APP_ID=",
  "_APP_VCS_GITHUB_CLIENT_ID=",
  "_APP_VCS_GITHUB_CLIENT_SECRET=",
  "_APP_VCS_GITHUB_WEBHOOK_SECRET=",
  "_APP_MAINTENANCE_INTERVAL=86400",
  "_APP_MAINTENANCE_DELAY=0",
  "_APP_MAINTENANCE_START_TIME=00:00",
  "_APP_MAINTENANCE_RETENTION_CACHE=2592000",
  "_APP_MAINTENANCE_RETENTION_EXECUTION=1209600",
  "_APP_MAINTENANCE_RETENTION_AUDIT=1209600",
  "_APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE=15778800",
  "_APP_MAINTENANCE_RETENTION_ABUSE=86400",
  "_APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000",
  "_APP_MAINTENANCE_RETENTION_SCHEDULES=86400",
  "_APP_GRAPHQL_MAX_BATCH_SIZE=10",
  "_APP_GRAPHQL_MAX_COMPLEXITY=250",
  "_APP_GRAPHQL_MAX_DEPTH=3",
  "_APP_MIGRATIONS_FIREBASE_CLIENT_ID=",
  "_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=",
  "_APP_ASSISTANT_OPENAI_API_KEY=",
]
mounts = []

[[config.domains]]
serviceName = "appwrite"
port = 80
host = "${main_domain}"
path = "/"

[[config.domains]]
serviceName = "appwrite"
port = 80
host = "${sites_domain}"
path = "/"

[[config.domains]]
serviceName = "appwrite"
port = 80
host = "${functions_domain}"
path = "/"

[[config.domains]]
serviceName = "appwrite-console"
port = 80
host = "${main_domain}"
path = "/console"

[[config.domains]]
serviceName = "appwrite-realtime"
port = 80
host = "${main_domain}"
path = "/v1/realtime"

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcblxueC1sb2dnaW5nOiAmeC1sb2dnaW5nXG4gIGxvZ2dpbmc6XG4gICAgZHJpdmVyOiBcImpzb24tZmlsZVwiXG4gICAgb3B0aW9uczpcbiAgICAgIG1heC1maWxlOiBcIjVcIlxuICAgICAgbWF4LXNpemU6IFwiMTBtXCJcbnNlcnZpY2VzOlxuICBhcHB3cml0ZTpcbiAgICBpbWFnZTogYXBwd3JpdGUvYXBwd3JpdGU6MS44LjBcbiAgICA8PDogKngtbG9nZ2luZ1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgbGFiZWxzOlxuICAgICAgLSB0cmFlZmlrLmVuYWJsZT10cnVlXG4gICAgICAtIHRyYWVmaWsuY29uc3RyYWludC1sYWJlbC1zdGFjaz1hcHB3cml0ZVxuICAgIHZvbHVtZXM6XG4gICAgICAtIGFwcHdyaXRlLXVwbG9hZHM6L3N0b3JhZ2UvdXBsb2Fkczpyd1xuICAgICAgLSBhcHB3cml0ZS1pbXBvcnRzOi9zdG9yYWdlL2ltcG9ydHM6cndcbiAgICAgIC0gYXBwd3JpdGUtY2FjaGU6L3N0b3JhZ2UvY2FjaGU6cndcbiAgICAgIC0gYXBwd3JpdGUtY29uZmlnOi9zdG9yYWdlL2NvbmZpZzpyd1xuICAgICAgLSBhcHB3cml0ZS1jZXJ0aWZpY2F0ZXM6L3N0b3JhZ2UvY2VydGlmaWNhdGVzOnJ3XG4gICAgICAtIGFwcHdyaXRlLWZ1bmN0aW9uczovc3RvcmFnZS9mdW5jdGlvbnM6cndcbiAgICAgIC0gYXBwd3JpdGUtc2l0ZXM6L3N0b3JhZ2Uvc2l0ZXM6cndcbiAgICAgIC0gYXBwd3JpdGUtYnVpbGRzOi9zdG9yYWdlL2J1aWxkczpyd1xuICAgIGRlcGVuZHNfb246XG4gICAgICAtIG1hcmlhZGJcbiAgICAgIC0gcmVkaXNcbiAgICAjICAgICAgLSBjbGFtYXZcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gX0FQUF9FTlZcbiAgICAgIC0gX0FQUF9XT1JLRVJfUEVSX0NPUkVcbiAgICAgIC0gX0FQUF9MT0NBTEVcbiAgICAgIC0gX0FQUF9DT01QUkVTU0lPTl9NSU5fU0laRV9CWVRFU1xuICAgICAgLSBfQVBQX0NPTlNPTEVfV0hJVEVMSVNUX1JPT1RcbiAgICAgIC0gX0FQUF9DT05TT0xFX1dISVRFTElTVF9FTUFJTFNcbiAgICAgIC0gX0FQUF9DT05TT0xFX1NFU1NJT05fQUxFUlRTXG4gICAgICAtIF9BUFBfQ09OU09MRV9XSElURUxJU1RfSVBTXG4gICAgICAtIF9BUFBfQ09OU09MRV9IT1NUTkFNRVNcbiAgICAgIC0gX0FQUF9TWVNURU1fRU1BSUxfTkFNRVxuICAgICAgLSBfQVBQX1NZU1RFTV9FTUFJTF9BRERSRVNTXG4gICAgICAtIF9BUFBfRU1BSUxfU0VDVVJJVFlcbiAgICAgIC0gX0FQUF9TWVNURU1fUkVTUE9OU0VfRk9STUFUXG4gICAgICAtIF9BUFBfT1BUSU9OU19BQlVTRVxuICAgICAgLSBfQVBQX09QVElPTlNfUk9VVEVSX1BST1RFQ1RJT05cbiAgICAgIC0gX0FQUF9PUFRJT05TX0ZPUkNFX0hUVFBTXG4gICAgICAtIF9BUFBfT1BUSU9OU19ST1VURVJfRk9SQ0VfSFRUUFNcbiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMVxuICAgICAgLSBfQVBQX0RPTUFJTlxuICAgICAgLSBfQVBQX0RPTUFJTl9UQVJHRVRfQ05BTUVcbiAgICAgIC0gX0FQUF9ET01BSU5fVEFSR0VUX0FBQUFcbiAgICAgIC0gX0FQUF9ET01BSU5fVEFSR0VUX0FcbiAgICAgIC0gX0FQUF9ET01BSU5fVEFSR0VUX0NBQVxuICAgICAgLSBfQVBQX0ROU1xuICAgICAgLSBfQVBQX0RPTUFJTl9GVU5DVElPTlNcbiAgICAgIC0gX0FQUF9SRURJU19IT1NUXG4gICAgICAtIF9BUFBfUkVESVNfUE9SVFxuICAgICAgLSBfQVBQX1JFRElTX1VTRVJcbiAgICAgIC0gX0FQUF9SRURJU19QQVNTXG4gICAgICAtIF9BUFBfREJfSE9TVFxuICAgICAgLSBfQVBQX0RCX1BPUlRcbiAgICAgIC0gX0FQUF9EQl9TQ0hFTUFcbiAgICAgIC0gX0FQUF9EQl9VU0VSXG4gICAgICAtIF9BUFBfREJfUEFTU1xuICAgICAgLSBfQVBQX1NNVFBfSE9TVFxuICAgICAgLSBfQVBQX1NNVFBfUE9SVFxuICAgICAgLSBfQVBQX1NNVFBfU0VDVVJFXG4gICAgICAtIF9BUFBfU01UUF9VU0VSTkFNRVxuICAgICAgLSBfQVBQX1NNVFBfUEFTU1dPUkRcbiAgICAgIC0gX0FQUF9VU0FHRV9TVEFUU1xuICAgICAgLSBfQVBQX1NUT1JBR0VfTElNSVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1BSRVZJRVdfTElNSVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0FOVElWSVJVU1xuICAgICAgLSBfQVBQX1NUT1JBR0VfQU5USVZJUlVTX0hPU1RcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0FOVElWSVJVU19QT1JUXG4gICAgICAtIF9BUFBfU1RPUkFHRV9ERVZJQ0VcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1MzX0FDQ0VTU19LRVlcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1MzX1NFQ1JFVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfUzNfUkVHSU9OXG4gICAgICAtIF9BUFBfU1RPUkFHRV9TM19CVUNLRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1MzX0VORFBPSU5UXG4gICAgICAtIF9BUFBfU1RPUkFHRV9ET19TUEFDRVNfQUNDRVNTX0tFWVxuICAgICAgLSBfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTlxuICAgICAgLSBfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVlcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9TRUNSRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9SRUdJT05cbiAgICAgIC0gX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0xJTk9ERV9BQ0NFU1NfS0VZXG4gICAgICAtIF9BUFBfU1RPUkFHRV9MSU5PREVfU0VDUkVUXG4gICAgICAtIF9BUFBfU1RPUkFHRV9MSU5PREVfUkVHSU9OXG4gICAgICAtIF9BUFBfU1RPUkFHRV9MSU5PREVfQlVDS0VUXG4gICAgICAtIF9BUFBfU1RPUkFHRV9XQVNBQklfQUNDRVNTX0tFWVxuICAgICAgLSBfQVBQX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfV0FTQUJJX1JFR0lPTlxuICAgICAgLSBfQVBQX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVFxuICAgICAgLSBfQVBQX0NPTVBVVEVfU0laRV9MSU1JVFxuICAgICAgLSBfQVBQX0ZVTkNUSU9OU19USU1FT1VUXG4gICAgICAtIF9BUFBfU0lURVNfVElNRU9VVFxuICAgICAgLSBfQVBQX0NPTVBVVEVfQlVJTERfVElNRU9VVFxuICAgICAgLSBfQVBQX0NPTVBVVEVfQ1BVU1xuICAgICAgLSBfQVBQX0NPTVBVVEVfTUVNT1JZXG4gICAgICAtIF9BUFBfRlVOQ1RJT05TX1JVTlRJTUVTXG4gICAgICAtIF9BUFBfU0lURVNfUlVOVElNRVNcbiAgICAgIC0gX0FQUF9ET01BSU5fU0lURVNcbiAgICAgIC0gX0FQUF9FWEVDVVRPUl9TRUNSRVRcbiAgICAgIC0gX0FQUF9FWEVDVVRPUl9IT1NUXG4gICAgICAtIF9BUFBfTE9HR0lOR19DT05GSUdcbiAgICAgIC0gX0FQUF9NQUlOVEVOQU5DRV9JTlRFUlZBTFxuICAgICAgLSBfQVBQX01BSU5URU5BTkNFX0RFTEFZXG4gICAgICAtIF9BUFBfTUFJTlRFTkFOQ0VfU1RBUlRfVElNRVxuICAgICAgLSBfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9FWEVDVVRJT05cbiAgICAgIC0gX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQ0FDSEVcbiAgICAgIC0gX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQUJVU0VcbiAgICAgIC0gX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVRcbiAgICAgIC0gX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVRfQ09OU09MRVxuICAgICAgLSBfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9VU0FHRV9IT1VSTFlcbiAgICAgIC0gX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fU0NIRURVTEVTXG4gICAgICAtIF9BUFBfU01TX1BST1ZJREVSXG4gICAgICAtIF9BUFBfU01TX0ZST01cbiAgICAgIC0gX0FQUF9HUkFQSFFMX01BWF9CQVRDSF9TSVpFXG4gICAgICAtIF9BUFBfR1JBUEhRTF9NQVhfQ09NUExFWElUWVxuICAgICAgLSBfQVBQX0dSQVBIUUxfTUFYX0RFUFRIXG4gICAgICAtIF9BUFBfVkNTX0dJVEhVQl9BUFBfTkFNRVxuICAgICAgLSBfQVBQX1ZDU19HSVRIVUJfUFJJVkFURV9LRVlcbiAgICAgIC0gX0FQUF9WQ1NfR0lUSFVCX0FQUF9JRFxuICAgICAgLSBfQVBQX1ZDU19HSVRIVUJfV0VCSE9PS19TRUNSRVRcbiAgICAgIC0gX0FQUF9WQ1NfR0lUSFVCX0NMSUVOVF9TRUNSRVRcbiAgICAgIC0gX0FQUF9WQ1NfR0lUSFVCX0NMSUVOVF9JRFxuICAgICAgLSBfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX0lEXG4gICAgICAtIF9BUFBfTUlHUkFUSU9OU19GSVJFQkFTRV9DTElFTlRfU0VDUkVUXG4gICAgICAtIF9BUFBfQVNTSVNUQU5UX09QRU5BSV9BUElfS0VZXG4gIGFwcHdyaXRlLWNvbnNvbGU6XG4gICAgPDw6ICp4LWxvZ2dpbmdcbiAgICBpbWFnZTogYXBwd3JpdGUvY29uc29sZTo3LjQuN1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgbGFiZWxzOlxuICAgICAgLSBcInRyYWVmaWsuZW5hYmxlPXRydWVcIlxuICAgICAgLSBcInRyYWVmaWsuY29uc3RyYWludC1sYWJlbC1zdGFjaz1hcHB3cml0ZVwiXG5cbiAgYXBwd3JpdGUtcmVhbHRpbWU6XG4gICAgaW1hZ2U6IGFwcHdyaXRlL2FwcHdyaXRlOjEuOC4wXG4gICAgZW50cnlwb2ludDogcmVhbHRpbWVcbiAgICA8PDogKngtbG9nZ2luZ1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgbGFiZWxzOlxuICAgICAgLSBcInRyYWVmaWsuZW5hYmxlPXRydWVcIlxuICAgICAgLSBcInRyYWVmaWsuY29uc3RyYWludC1sYWJlbC1zdGFjaz1hcHB3cml0ZVwiXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gbWFyaWFkYlxuICAgICAgLSByZWRpc1xuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBfQVBQX0VOVlxuICAgICAgLSBfQVBQX1dPUktFUl9QRVJfQ09SRVxuICAgICAgLSBfQVBQX09QVElPTlNfQUJVU0VcbiAgICAgIC0gX0FQUF9PUFRJT05TX1JPVVRFUl9QUk9URUNUSU9OXG4gICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjFcbiAgICAgIC0gX0FQUF9SRURJU19IT1NUXG4gICAgICAtIF9BUFBfUkVESVNfUE9SVFxuICAgICAgLSBfQVBQX1JFRElTX1VTRVJcbiAgICAgIC0gX0FQUF9SRURJU19QQVNTXG4gICAgICAtIF9BUFBfREJfSE9TVFxuICAgICAgLSBfQVBQX0RCX1BPUlRcbiAgICAgIC0gX0FQUF9EQl9TQ0hFTUFcbiAgICAgIC0gX0FQUF9EQl9VU0VSXG4gICAgICAtIF9BUFBfREJfUEFTU1xuICAgICAgLSBfQVBQX1VTQUdFX1NUQVRTXG4gICAgICAtIF9BUFBfTE9HR0lOR19DT05GSUdcblxuICBhcHB3cml0ZS13b3JrZXItYXVkaXRzOlxuICAgIGltYWdlOiBhcHB3cml0ZS9hcHB3cml0ZToxLjguMFxuICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1hdWRpdHNcbiAgICA8PDogKngtbG9nZ2luZ1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gcmVkaXNcbiAgICAgIC0gbWFyaWFkYlxuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBfQVBQX0VOVlxuICAgICAgLSBfQVBQX1dPUktFUl9QRVJfQ09SRVxuICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxXG4gICAgICAtIF9BUFBfUkVESVNfSE9TVFxuICAgICAgLSBfQVBQX1JFRElTX1BPUlRcbiAgICAgIC0gX0FQUF9SRURJU19VU0VSXG4gICAgICAtIF9BUFBfUkVESVNfUEFTU1xuICAgICAgLSBfQVBQX0RCX0hPU1RcbiAgICAgIC0gX0FQUF9EQl9QT1JUXG4gICAgICAtIF9BUFBfREJfU0NIRU1BXG4gICAgICAtIF9BUFBfREJfVVNFUlxuICAgICAgLSBfQVBQX0RCX1BBU1NcbiAgICAgIC0gX0FQUF9MT0dHSU5HX0NPTkZJR1xuXG4gIGFwcHdyaXRlLXdvcmtlci13ZWJob29rczpcbiAgICBpbWFnZTogYXBwd3JpdGUvYXBwd3JpdGU6MS44LjBcbiAgICBlbnRyeXBvaW50OiB3b3JrZXItd2ViaG9va3NcbiAgICA8PDogKngtbG9nZ2luZ1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gcmVkaXNcbiAgICAgIC0gbWFyaWFkYlxuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBfQVBQX0VOVlxuICAgICAgLSBfQVBQX1dPUktFUl9QRVJfQ09SRVxuICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxXG4gICAgICAtIF9BUFBfRU1BSUxfU0VDVVJJVFlcbiAgICAgIC0gX0FQUF9TWVNURU1fU0VDVVJJVFlfRU1BSUxfQUREUkVTU1xuICAgICAgLSBfQVBQX0RCX0hPU1RcbiAgICAgIC0gX0FQUF9EQl9QT1JUXG4gICAgICAtIF9BUFBfREJfU0NIRU1BXG4gICAgICAtIF9BUFBfREJfVVNFUlxuICAgICAgLSBfQVBQX0RCX1BBU1NcbiAgICAgIC0gX0FQUF9SRURJU19IT1NUXG4gICAgICAtIF9BUFBfUkVESVNfUE9SVFxuICAgICAgLSBfQVBQX1JFRElTX1VTRVJcbiAgICAgIC0gX0FQUF9SRURJU19QQVNTXG4gICAgICAtIF9BUFBfTE9HR0lOR19DT05GSUdcblxuICBhcHB3cml0ZS13b3JrZXItZGVsZXRlczpcbiAgICBpbWFnZTogYXBwd3JpdGUvYXBwd3JpdGU6MS44LjBcbiAgICBlbnRyeXBvaW50OiB3b3JrZXItZGVsZXRlc1xuICAgIDw8OiAqeC1sb2dnaW5nXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBkZXBlbmRzX29uOlxuICAgICAgLSByZWRpc1xuICAgICAgLSBtYXJpYWRiXG4gICAgdm9sdW1lczpcbiAgICAgIC0gYXBwd3JpdGUtdXBsb2Fkczovc3RvcmFnZS91cGxvYWRzOnJ3XG4gICAgICAtIGFwcHdyaXRlLWNhY2hlOi9zdG9yYWdlL2NhY2hlOnJ3XG4gICAgICAtIGFwcHdyaXRlLWZ1bmN0aW9uczovc3RvcmFnZS9mdW5jdGlvbnM6cndcbiAgICAgIC0gYXBwd3JpdGUtc2l0ZXM6L3N0b3JhZ2Uvc2l0ZXM6cndcbiAgICAgIC0gYXBwd3JpdGUtYnVpbGRzOi9zdG9yYWdlL2J1aWxkczpyd1xuICAgICAgLSBhcHB3cml0ZS1jZXJ0aWZpY2F0ZXM6L3N0b3JhZ2UvY2VydGlmaWNhdGVzOnJ3XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIF9BUFBfRU5WXG4gICAgICAtIF9BUFBfV09SS0VSX1BFUl9DT1JFXG4gICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjFcbiAgICAgIC0gX0FQUF9SRURJU19IT1NUXG4gICAgICAtIF9BUFBfUkVESVNfUE9SVFxuICAgICAgLSBfQVBQX1JFRElTX1VTRVJcbiAgICAgIC0gX0FQUF9SRURJU19QQVNTXG4gICAgICAtIF9BUFBfREJfSE9TVFxuICAgICAgLSBfQVBQX0RCX1BPUlRcbiAgICAgIC0gX0FQUF9EQl9TQ0hFTUFcbiAgICAgIC0gX0FQUF9EQl9VU0VSXG4gICAgICAtIF9BUFBfREJfUEFTU1xuICAgICAgLSBfQVBQX1NUT1JBR0VfREVWSUNFXG4gICAgICAtIF9BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZXG4gICAgICAtIF9BUFBfU1RPUkFHRV9TM19TRUNSRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1MzX1JFR0lPTlxuICAgICAgLSBfQVBQX1NUT1JBR0VfUzNfQlVDS0VUXG4gICAgICAtIF9BUFBfU1RPUkFHRV9TM19FTkRQT0lOVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVlcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT05cbiAgICAgIC0gX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZXG4gICAgICAtIF9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUXG4gICAgICAtIF9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OXG4gICAgICAtIF9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUXG4gICAgICAtIF9BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWVxuICAgICAgLSBfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTlxuICAgICAgLSBfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfV0FTQUJJX0FDQ0VTU19LRVlcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1dBU0FCSV9SRUdJT05cbiAgICAgIC0gX0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVRcbiAgICAgIC0gX0FQUF9MT0dHSU5HX0NPTkZJR1xuICAgICAgLSBfQVBQX0VYRUNVVE9SX1NFQ1JFVFxuICAgICAgLSBfQVBQX0VYRUNVVE9SX0hPU1RcbiAgICAgIC0gX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQUJVU0VcbiAgICAgIC0gX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVRcbiAgICAgIC0gX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVRfQ09OU09MRVxuICAgICAgLSBfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9FWEVDVVRJT05cbiAgICAgIC0gX0FQUF9TWVNURU1fU0VDVVJJVFlfRU1BSUxfQUREUkVTU1xuICAgICAgLSBfQVBQX0VNQUlMX0NFUlRJRklDQVRFU1xuXG4gIGFwcHdyaXRlLXdvcmtlci1kYXRhYmFzZXM6XG4gICAgaW1hZ2U6IGFwcHdyaXRlL2FwcHdyaXRlOjEuOC4wXG4gICAgZW50cnlwb2ludDogd29ya2VyLWRhdGFiYXNlc1xuICAgIDw8OiAqeC1sb2dnaW5nXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBkZXBlbmRzX29uOlxuICAgICAgLSByZWRpc1xuICAgICAgLSBtYXJpYWRiXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIF9BUFBfRU5WXG4gICAgICAtIF9BUFBfV09SS0VSX1BFUl9DT1JFXG4gICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjFcbiAgICAgIC0gX0FQUF9SRURJU19IT1NUXG4gICAgICAtIF9BUFBfUkVESVNfUE9SVFxuICAgICAgLSBfQVBQX1JFRElTX1VTRVJcbiAgICAgIC0gX0FQUF9SRURJU19QQVNTXG4gICAgICAtIF9BUFBfREJfSE9TVFxuICAgICAgLSBfQVBQX0RCX1BPUlRcbiAgICAgIC0gX0FQUF9EQl9TQ0hFTUFcbiAgICAgIC0gX0FQUF9EQl9VU0VSXG4gICAgICAtIF9BUFBfREJfUEFTU1xuICAgICAgLSBfQVBQX0xPR0dJTkdfQ09ORklHXG5cbiAgYXBwd3JpdGUtd29ya2VyLWJ1aWxkczpcbiAgICBpbWFnZTogYXBwd3JpdGUvYXBwd3JpdGU6MS44LjBcbiAgICBlbnRyeXBvaW50OiB3b3JrZXItYnVpbGRzXG4gICAgPDw6ICp4LWxvZ2dpbmdcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGRlcGVuZHNfb246XG4gICAgICAtIHJlZGlzXG4gICAgICAtIG1hcmlhZGJcbiAgICB2b2x1bWVzOlxuICAgICAgLSBhcHB3cml0ZS1mdW5jdGlvbnM6L3N0b3JhZ2UvZnVuY3Rpb25zOnJ3XG4gICAgICAtIGFwcHdyaXRlLXNpdGVzOi9zdG9yYWdlL3NpdGVzOnJ3XG4gICAgICAtIGFwcHdyaXRlLWJ1aWxkczovc3RvcmFnZS9idWlsZHM6cndcbiAgICAgIC0gYXBwd3JpdGUtdXBsb2Fkczovc3RvcmFnZS91cGxvYWRzOnJ3XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIF9BUFBfRU5WXG4gICAgICAtIF9BUFBfV09SS0VSX1BFUl9DT1JFXG4gICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjFcbiAgICAgIC0gX0FQUF9FWEVDVVRPUl9TRUNSRVRcbiAgICAgIC0gX0FQUF9FWEVDVVRPUl9IT1NUXG4gICAgICAtIF9BUFBfUkVESVNfSE9TVFxuICAgICAgLSBfQVBQX1JFRElTX1BPUlRcbiAgICAgIC0gX0FQUF9SRURJU19VU0VSXG4gICAgICAtIF9BUFBfUkVESVNfUEFTU1xuICAgICAgLSBfQVBQX0RCX0hPU1RcbiAgICAgIC0gX0FQUF9EQl9QT1JUXG4gICAgICAtIF9BUFBfREJfU0NIRU1BXG4gICAgICAtIF9BUFBfREJfVVNFUlxuICAgICAgLSBfQVBQX0RCX1BBU1NcbiAgICAgIC0gX0FQUF9MT0dHSU5HX0NPTkZJR1xuICAgICAgLSBfQVBQX1ZDU19HSVRIVUJfQVBQX05BTUVcbiAgICAgIC0gX0FQUF9WQ1NfR0lUSFVCX1BSSVZBVEVfS0VZXG4gICAgICAtIF9BUFBfVkNTX0dJVEhVQl9BUFBfSURcbiAgICAgIC0gX0FQUF9GVU5DVElPTlNfVElNRU9VVFxuICAgICAgLSBfQVBQX1NJVEVTX1RJTUVPVVRcbiAgICAgIC0gX0FQUF9DT01QVVRFX0JVSUxEX1RJTUVPVVRcbiAgICAgIC0gX0FQUF9DT01QVVRFX0NQVVNcbiAgICAgIC0gX0FQUF9DT01QVVRFX01FTU9SWVxuICAgICAgLSBfQVBQX0NPTVBVVEVfU0laRV9MSU1JVFxuICAgICAgLSBfQVBQX09QVElPTlNfRk9SQ0VfSFRUUFNcbiAgICAgIC0gX0FQUF9PUFRJT05TX1JPVVRFUl9GT1JDRV9IVFRQU1xuICAgICAgLSBfQVBQX0RPTUFJTlxuICAgICAgLSBfQVBQX1NUT1JBR0VfREVWSUNFXG4gICAgICAtIF9BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZXG4gICAgICAtIF9BUFBfU1RPUkFHRV9TM19TRUNSRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1MzX1JFR0lPTlxuICAgICAgLSBfQVBQX1NUT1JBR0VfUzNfQlVDS0VUXG4gICAgICAtIF9BUFBfU1RPUkFHRV9TM19FTkRQT0lOVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVlcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT05cbiAgICAgIC0gX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZXG4gICAgICAtIF9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUXG4gICAgICAtIF9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OXG4gICAgICAtIF9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUXG4gICAgICAtIF9BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWVxuICAgICAgLSBfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTlxuICAgICAgLSBfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfV0FTQUJJX0FDQ0VTU19LRVlcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1dBU0FCSV9SRUdJT05cbiAgICAgIC0gX0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVRcbiAgICAgIC0gX0FQUF9ET01BSU5fU0lURVNcblxuICBhcHB3cml0ZS13b3JrZXItY2VydGlmaWNhdGVzOlxuICAgIGltYWdlOiBhcHB3cml0ZS9hcHB3cml0ZToxLjguMFxuICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1jZXJ0aWZpY2F0ZXNcbiAgICA8PDogKngtbG9nZ2luZ1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gcmVkaXNcbiAgICAgIC0gbWFyaWFkYlxuICAgIHZvbHVtZXM6XG4gICAgICAtIGFwcHdyaXRlLWNvbmZpZzovc3RvcmFnZS9jb25maWc6cndcbiAgICAgIC0gYXBwd3JpdGUtY2VydGlmaWNhdGVzOi9zdG9yYWdlL2NlcnRpZmljYXRlczpyd1xuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBfQVBQX0VOVlxuICAgICAgLSBfQVBQX1dPUktFUl9QRVJfQ09SRVxuICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxXG4gICAgICAtIF9BUFBfRE9NQUlOXG4gICAgICAtIF9BUFBfRE9NQUlOX1RBUkdFVF9DTkFNRVxuICAgICAgLSBfQVBQX0RPTUFJTl9UQVJHRVRfQUFBQVxuICAgICAgLSBfQVBQX0RPTUFJTl9UQVJHRVRfQVxuICAgICAgLSBfQVBQX0RPTUFJTl9UQVJHRVRfQ0FBXG4gICAgICAtIF9BUFBfRE5TXG4gICAgICAtIF9BUFBfRE9NQUlOX0ZVTkNUSU9OU1xuICAgICAgLSBfQVBQX0VNQUlMX0NFUlRJRklDQVRFU1xuICAgICAgLSBfQVBQX1JFRElTX0hPU1RcbiAgICAgIC0gX0FQUF9SRURJU19QT1JUXG4gICAgICAtIF9BUFBfUkVESVNfVVNFUlxuICAgICAgLSBfQVBQX1JFRElTX1BBU1NcbiAgICAgIC0gX0FQUF9EQl9IT1NUXG4gICAgICAtIF9BUFBfREJfUE9SVFxuICAgICAgLSBfQVBQX0RCX1NDSEVNQVxuICAgICAgLSBfQVBQX0RCX1VTRVJcbiAgICAgIC0gX0FQUF9EQl9QQVNTXG4gICAgICAtIF9BUFBfTE9HR0lOR19DT05GSUdcblxuICBhcHB3cml0ZS13b3JrZXItZnVuY3Rpb25zOlxuICAgIGltYWdlOiBhcHB3cml0ZS9hcHB3cml0ZToxLjguMFxuICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1mdW5jdGlvbnNcbiAgICA8PDogKngtbG9nZ2luZ1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gcmVkaXNcbiAgICAgIC0gbWFyaWFkYlxuICAgICAgLSBvcGVucnVudGltZXMtZXhlY3V0b3JcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gX0FQUF9FTlZcbiAgICAgIC0gX0FQUF9XT1JLRVJfUEVSX0NPUkVcbiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMVxuICAgICAgLSBfQVBQX0RPTUFJTlxuICAgICAgLSBfQVBQX09QVElPTlNfRk9SQ0VfSFRUUFNcbiAgICAgIC0gX0FQUF9SRURJU19IT1NUXG4gICAgICAtIF9BUFBfUkVESVNfUE9SVFxuICAgICAgLSBfQVBQX1JFRElTX1VTRVJcbiAgICAgIC0gX0FQUF9SRURJU19QQVNTXG4gICAgICAtIF9BUFBfREJfSE9TVFxuICAgICAgLSBfQVBQX0RCX1BPUlRcbiAgICAgIC0gX0FQUF9EQl9TQ0hFTUFcbiAgICAgIC0gX0FQUF9EQl9VU0VSXG4gICAgICAtIF9BUFBfREJfUEFTU1xuICAgICAgLSBfQVBQX0ZVTkNUSU9OU19USU1FT1VUXG4gICAgICAtIF9BUFBfU0lURVNfVElNRU9VVFxuICAgICAgLSBfQVBQX0NPTVBVVEVfQlVJTERfVElNRU9VVFxuICAgICAgLSBfQVBQX0NPTVBVVEVfQ1BVU1xuICAgICAgLSBfQVBQX0NPTVBVVEVfTUVNT1JZXG4gICAgICAtIF9BUFBfRVhFQ1VUT1JfU0VDUkVUXG4gICAgICAtIF9BUFBfRVhFQ1VUT1JfSE9TVFxuICAgICAgLSBfQVBQX1VTQUdFX1NUQVRTXG4gICAgICAtIF9BUFBfRE9DS0VSX0hVQl9VU0VSTkFNRVxuICAgICAgLSBfQVBQX0RPQ0tFUl9IVUJfUEFTU1dPUkRcbiAgICAgIC0gX0FQUF9MT0dHSU5HX0NPTkZJR1xuXG4gIGFwcHdyaXRlLXdvcmtlci1tYWlsczpcbiAgICBpbWFnZTogYXBwd3JpdGUvYXBwd3JpdGU6MS44LjBcbiAgICBlbnRyeXBvaW50OiB3b3JrZXItbWFpbHNcbiAgICA8PDogKngtbG9nZ2luZ1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gcmVkaXNcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gX0FQUF9FTlZcbiAgICAgIC0gX0FQUF9XT1JLRVJfUEVSX0NPUkVcbiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMVxuICAgICAgLSBfQVBQX1NZU1RFTV9FTUFJTF9OQU1FXG4gICAgICAtIF9BUFBfU1lTVEVNX0VNQUlMX0FERFJFU1NcbiAgICAgIC0gX0FQUF9EQl9IT1NUXG4gICAgICAtIF9BUFBfREJfUE9SVFxuICAgICAgLSBfQVBQX0RCX1NDSEVNQVxuICAgICAgLSBfQVBQX0RCX1VTRVJcbiAgICAgIC0gX0FQUF9EQl9QQVNTXG4gICAgICAtIF9BUFBfUkVESVNfSE9TVFxuICAgICAgLSBfQVBQX1JFRElTX1BPUlRcbiAgICAgIC0gX0FQUF9SRURJU19VU0VSXG4gICAgICAtIF9BUFBfUkVESVNfUEFTU1xuICAgICAgLSBfQVBQX1NNVFBfSE9TVFxuICAgICAgLSBfQVBQX1NNVFBfUE9SVFxuICAgICAgLSBfQVBQX1NNVFBfU0VDVVJFXG4gICAgICAtIF9BUFBfU01UUF9VU0VSTkFNRVxuICAgICAgLSBfQVBQX1NNVFBfUEFTU1dPUkRcbiAgICAgIC0gX0FQUF9MT0dHSU5HX0NPTkZJR1xuICAgICAgLSBfQVBQX0RPTUFJTlxuICAgICAgLSBfQVBQX09QVElPTlNfRk9SQ0VfSFRUUFNcblxuICBhcHB3cml0ZS13b3JrZXItbWVzc2FnaW5nOlxuICAgIGltYWdlOiBhcHB3cml0ZS9hcHB3cml0ZToxLjguMFxuICAgIGVudHJ5cG9pbnQ6IHdvcmtlci1tZXNzYWdpbmdcbiAgICA8PDogKngtbG9nZ2luZ1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgdm9sdW1lczpcbiAgICAgIC0gYXBwd3JpdGUtdXBsb2Fkczovc3RvcmFnZS91cGxvYWRzOnJ3XG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gcmVkaXNcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gX0FQUF9FTlZcbiAgICAgIC0gX0FQUF9XT1JLRVJfUEVSX0NPUkVcbiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMVxuICAgICAgLSBfQVBQX1JFRElTX0hPU1RcbiAgICAgIC0gX0FQUF9SRURJU19QT1JUXG4gICAgICAtIF9BUFBfUkVESVNfVVNFUlxuICAgICAgLSBfQVBQX1JFRElTX1BBU1NcbiAgICAgIC0gX0FQUF9EQl9IT1NUXG4gICAgICAtIF9BUFBfREJfUE9SVFxuICAgICAgLSBfQVBQX0RCX1NDSEVNQVxuICAgICAgLSBfQVBQX0RCX1VTRVJcbiAgICAgIC0gX0FQUF9EQl9QQVNTXG4gICAgICAtIF9BUFBfTE9HR0lOR19DT05GSUdcbiAgICAgIC0gX0FQUF9TTVNfRlJPTVxuICAgICAgLSBfQVBQX1NNU19QUk9WSURFUlxuICAgICAgLSBfQVBQX1NUT1JBR0VfREVWSUNFXG4gICAgICAtIF9BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZXG4gICAgICAtIF9BUFBfU1RPUkFHRV9TM19TRUNSRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1MzX1JFR0lPTlxuICAgICAgLSBfQVBQX1NUT1JBR0VfUzNfQlVDS0VUXG4gICAgICAtIF9BUFBfU1RPUkFHRV9TM19FTkRQT0lOVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVlcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT05cbiAgICAgIC0gX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZXG4gICAgICAtIF9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUXG4gICAgICAtIF9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OXG4gICAgICAtIF9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUXG4gICAgICAtIF9BUFBfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWVxuICAgICAgLSBfQVBQX1NUT1JBR0VfTElOT0RFX1NFQ1JFVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfTElOT0RFX1JFR0lPTlxuICAgICAgLSBfQVBQX1NUT1JBR0VfTElOT0RFX0JVQ0tFVFxuICAgICAgLSBfQVBQX1NUT1JBR0VfV0FTQUJJX0FDQ0VTU19LRVlcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVRcbiAgICAgIC0gX0FQUF9TVE9SQUdFX1dBU0FCSV9SRUdJT05cbiAgICAgIC0gX0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVRcblxuICBhcHB3cml0ZS13b3JrZXItbWlncmF0aW9uczpcbiAgICBpbWFnZTogYXBwd3JpdGUvYXBwd3JpdGU6MS44LjBcbiAgICBlbnRyeXBvaW50OiB3b3JrZXItbWlncmF0aW9uc1xuICAgIDw8OiAqeC1sb2dnaW5nXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICB2b2x1bWVzOlxuICAgICAgLSBhcHB3cml0ZS1pbXBvcnRzOi9zdG9yYWdlL2ltcG9ydHM6cndcbiAgICBkZXBlbmRzX29uOlxuICAgICAgLSBtYXJpYWRiXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIF9BUFBfRU5WXG4gICAgICAtIF9BUFBfV09SS0VSX1BFUl9DT1JFXG4gICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjFcbiAgICAgIC0gX0FQUF9ET01BSU5cbiAgICAgIC0gX0FQUF9ET01BSU5fVEFSR0VUX0NOQU1FXG4gICAgICAtIF9BUFBfRE9NQUlOX1RBUkdFVF9BQUFBXG4gICAgICAtIF9BUFBfRE9NQUlOX1RBUkdFVF9BXG4gICAgICAtIF9BUFBfRE9NQUlOX1RBUkdFVF9DQUFcbiAgICAgIC0gX0FQUF9ETlNcbiAgICAgIC0gX0FQUF9FTUFJTF9TRUNVUklUWVxuICAgICAgLSBfQVBQX1JFRElTX0hPU1RcbiAgICAgIC0gX0FQUF9SRURJU19QT1JUXG4gICAgICAtIF9BUFBfUkVESVNfVVNFUlxuICAgICAgLSBfQVBQX1JFRElTX1BBU1NcbiAgICAgIC0gX0FQUF9EQl9IT1NUXG4gICAgICAtIF9BUFBfREJfUE9SVFxuICAgICAgLSBfQVBQX0RCX1NDSEVNQVxuICAgICAgLSBfQVBQX0RCX1VTRVJcbiAgICAgIC0gX0FQUF9EQl9QQVNTXG4gICAgICAtIF9BUFBfTE9HR0lOR19DT05GSUdcbiAgICAgIC0gX0FQUF9NSUdSQVRJT05TX0ZJUkVCQVNFX0NMSUVOVF9JRFxuICAgICAgLSBfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX1NFQ1JFVFxuXG4gIGFwcHdyaXRlLXRhc2stbWFpbnRlbmFuY2U6XG4gICAgaW1hZ2U6IGFwcHdyaXRlL2FwcHdyaXRlOjEuOC4wXG4gICAgZW50cnlwb2ludDogbWFpbnRlbmFuY2VcbiAgICA8PDogKngtbG9nZ2luZ1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gcmVkaXNcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gX0FQUF9FTlZcbiAgICAgIC0gX0FQUF9XT1JLRVJfUEVSX0NPUkVcbiAgICAgIC0gX0FQUF9ET01BSU5cbiAgICAgIC0gX0FQUF9ET01BSU5fVEFSR0VUX0NOQU1FXG4gICAgICAtIF9BUFBfRE9NQUlOX1RBUkdFVF9BQUFBXG4gICAgICAtIF9BUFBfRE9NQUlOX1RBUkdFVF9BXG4gICAgICAtIF9BUFBfRE9NQUlOX1RBUkdFVF9DQUFcbiAgICAgIC0gX0FQUF9ETlNcbiAgICAgIC0gX0FQUF9ET01BSU5fRlVOQ1RJT05TXG4gICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjFcbiAgICAgIC0gX0FQUF9SRURJU19IT1NUXG4gICAgICAtIF9BUFBfUkVESVNfUE9SVFxuICAgICAgLSBfQVBQX1JFRElTX1VTRVJcbiAgICAgIC0gX0FQUF9SRURJU19QQVNTXG4gICAgICAtIF9BUFBfREJfSE9TVFxuICAgICAgLSBfQVBQX0RCX1BPUlRcbiAgICAgIC0gX0FQUF9EQl9TQ0hFTUFcbiAgICAgIC0gX0FQUF9EQl9VU0VSXG4gICAgICAtIF9BUFBfREJfUEFTU1xuICAgICAgLSBfQVBQX01BSU5URU5BTkNFX0lOVEVSVkFMXG4gICAgICAtIF9BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0VYRUNVVElPTlxuICAgICAgLSBfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9DQUNIRVxuICAgICAgLSBfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BQlVTRVxuICAgICAgLSBfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVFxuICAgICAgLSBfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVF9DT05TT0xFXG4gICAgICAtIF9BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX1VTQUdFX0hPVVJMWVxuICAgICAgLSBfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9TQ0hFRFVMRVNcblxuICBhcHB3cml0ZS10YXNrLXN0YXRzLXJlc291cmNlczpcbiAgICBpbWFnZTogYXBwd3JpdGUvYXBwd3JpdGU6MS44LjBcbiAgICBlbnRyeXBvaW50OiBzdGF0cy1yZXNvdXJjZXNcbiAgICA8PDogKngtbG9nZ2luZ1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIC0gcmVkaXNcbiAgICAgIC0gbWFyaWFkYlxuICAgIGVudmlyb25tZW50OlxuICAgICAgLSBfQVBQX0VOVlxuICAgICAgLSBfQVBQX1dPUktFUl9QRVJfQ09SRVxuICAgICAgLSBfQVBQX09QRU5TU0xfS0VZX1YxXG4gICAgICAtIF9BUFBfREJfSE9TVFxuICAgICAgLSBfQVBQX0RCX1BPUlRcbiAgICAgIC0gX0FQUF9EQl9TQ0hFTUFcbiAgICAgIC0gX0FQUF9EQl9VU0VSXG4gICAgICAtIF9BUFBfREJfUEFTU1xuICAgICAgLSBfQVBQX1JFRElTX0hPU1RcbiAgICAgIC0gX0FQUF9SRURJU19QT1JUXG4gICAgICAtIF9BUFBfUkVESVNfVVNFUlxuICAgICAgLSBfQVBQX1JFRElTX1BBU1NcbiAgICAgIC0gX0FQUF9VU0FHRV9TVEFUU1xuICAgICAgLSBfQVBQX0xPR0dJTkdfQ09ORklHXG4gICAgICAtIF9BUFBfREFUQUJBU0VfU0hBUkVEX1RBQkxFU1xuICAgICAgLSBfQVBQX1NUQVRTX1JFU09VUkNFU19JTlRFUlZBTFxuXG4gIGFwcHdyaXRlLXdvcmtlci1zdGF0cy1yZXNvdXJjZXM6XG4gICAgaW1hZ2U6IGFwcHdyaXRlL2FwcHdyaXRlOjEuOC4wXG4gICAgZW50cnlwb2ludDogd29ya2VyLXN0YXRzLXJlc291cmNlc1xuICAgIDw8OiAqeC1sb2dnaW5nXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBkZXBlbmRzX29uOlxuICAgICAgLSByZWRpc1xuICAgICAgLSBtYXJpYWRiXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIF9BUFBfRU5WXG4gICAgICAtIF9BUFBfV09SS0VSX1BFUl9DT1JFXG4gICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjFcbiAgICAgIC0gX0FQUF9EQl9IT1NUXG4gICAgICAtIF9BUFBfREJfUE9SVFxuICAgICAgLSBfQVBQX0RCX1NDSEVNQVxuICAgICAgLSBfQVBQX0RCX1VTRVJcbiAgICAgIC0gX0FQUF9EQl9QQVNTXG4gICAgICAtIF9BUFBfUkVESVNfSE9TVFxuICAgICAgLSBfQVBQX1JFRElTX1BPUlRcbiAgICAgIC0gX0FQUF9SRURJU19VU0VSXG4gICAgICAtIF9BUFBfUkVESVNfUEFTU1xuICAgICAgLSBfQVBQX1VTQUdFX1NUQVRTXG4gICAgICAtIF9BUFBfTE9HR0lOR19DT05GSUdcbiAgICAgIC0gX0FQUF9TVEFUU19SRVNPVVJDRVNfSU5URVJWQUxcblxuICBhcHB3cml0ZS13b3JrZXItc3RhdHMtdXNhZ2U6XG4gICAgaW1hZ2U6IGFwcHdyaXRlL2FwcHdyaXRlOjEuOC4wXG4gICAgZW50cnlwb2ludDogd29ya2VyLXN0YXRzLXVzYWdlXG4gICAgPDw6ICp4LWxvZ2dpbmdcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGRlcGVuZHNfb246XG4gICAgICAtIHJlZGlzXG4gICAgICAtIG1hcmlhZGJcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gX0FQUF9FTlZcbiAgICAgIC0gX0FQUF9XT1JLRVJfUEVSX0NPUkVcbiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMVxuICAgICAgLSBfQVBQX0RCX0hPU1RcbiAgICAgIC0gX0FQUF9EQl9QT1JUXG4gICAgICAtIF9BUFBfREJfU0NIRU1BXG4gICAgICAtIF9BUFBfREJfVVNFUlxuICAgICAgLSBfQVBQX0RCX1BBU1NcbiAgICAgIC0gX0FQUF9SRURJU19IT1NUXG4gICAgICAtIF9BUFBfUkVESVNfUE9SVFxuICAgICAgLSBfQVBQX1JFRElTX1VTRVJcbiAgICAgIC0gX0FQUF9SRURJU19QQVNTXG4gICAgICAtIF9BUFBfVVNBR0VfU1RBVFNcbiAgICAgIC0gX0FQUF9MT0dHSU5HX0NPTkZJR1xuICAgICAgLSBfQVBQX1VTQUdFX0FHR1JFR0FUSU9OX0lOVEVSVkFMXG5cbiAgYXBwd3JpdGUtdGFzay1zY2hlZHVsZXItZnVuY3Rpb25zOlxuICAgIGltYWdlOiBhcHB3cml0ZS9hcHB3cml0ZToxLjguMFxuICAgIGVudHJ5cG9pbnQ6IHNjaGVkdWxlLWZ1bmN0aW9uc1xuICAgIDw8OiAqeC1sb2dnaW5nXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBkZXBlbmRzX29uOlxuICAgICAgLSBtYXJpYWRiXG4gICAgICAtIHJlZGlzXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIF9BUFBfRU5WXG4gICAgICAtIF9BUFBfV09SS0VSX1BFUl9DT1JFXG4gICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjFcbiAgICAgIC0gX0FQUF9SRURJU19IT1NUXG4gICAgICAtIF9BUFBfUkVESVNfUE9SVFxuICAgICAgLSBfQVBQX1JFRElTX1VTRVJcbiAgICAgIC0gX0FQUF9SRURJU19QQVNTXG4gICAgICAtIF9BUFBfREJfSE9TVFxuICAgICAgLSBfQVBQX0RCX1BPUlRcbiAgICAgIC0gX0FQUF9EQl9TQ0hFTUFcbiAgICAgIC0gX0FQUF9EQl9VU0VSXG4gICAgICAtIF9BUFBfREJfUEFTU1xuXG4gIGFwcHdyaXRlLXRhc2stc2NoZWR1bGVyLWV4ZWN1dGlvbnM6XG4gICAgaW1hZ2U6IGFwcHdyaXRlL2FwcHdyaXRlOjEuOC4wXG4gICAgZW50cnlwb2ludDogc2NoZWR1bGUtZXhlY3V0aW9uc1xuICAgIDw8OiAqeC1sb2dnaW5nXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBkZXBlbmRzX29uOlxuICAgICAgLSBtYXJpYWRiXG4gICAgICAtIHJlZGlzXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIF9BUFBfRU5WXG4gICAgICAtIF9BUFBfV09SS0VSX1BFUl9DT1JFXG4gICAgICAtIF9BUFBfT1BFTlNTTF9LRVlfVjFcbiAgICAgIC0gX0FQUF9SRURJU19IT1NUXG4gICAgICAtIF9BUFBfUkVESVNfUE9SVFxuICAgICAgLSBfQVBQX1JFRElTX1VTRVJcbiAgICAgIC0gX0FQUF9SRURJU19QQVNTXG4gICAgICAtIF9BUFBfREJfSE9TVFxuICAgICAgLSBfQVBQX0RCX1BPUlRcbiAgICAgIC0gX0FQUF9EQl9TQ0hFTUFcbiAgICAgIC0gX0FQUF9EQl9VU0VSXG4gICAgICAtIF9BUFBfREJfUEFTU1xuXG4gIGFwcHdyaXRlLXRhc2stc2NoZWR1bGVyLW1lc3NhZ2VzOlxuICAgIGltYWdlOiBhcHB3cml0ZS9hcHB3cml0ZToxLjguMFxuICAgIGVudHJ5cG9pbnQ6IHNjaGVkdWxlLW1lc3NhZ2VzXG4gICAgPDw6ICp4LWxvZ2dpbmdcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGRlcGVuZHNfb246XG4gICAgICAtIG1hcmlhZGJcbiAgICAgIC0gcmVkaXNcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gX0FQUF9FTlZcbiAgICAgIC0gX0FQUF9XT1JLRVJfUEVSX0NPUkVcbiAgICAgIC0gX0FQUF9PUEVOU1NMX0tFWV9WMVxuICAgICAgLSBfQVBQX1JFRElTX0hPU1RcbiAgICAgIC0gX0FQUF9SRURJU19QT1JUXG4gICAgICAtIF9BUFBfUkVESVNfVVNFUlxuICAgICAgLSBfQVBQX1JFRElTX1BBU1NcbiAgICAgIC0gX0FQUF9EQl9IT1NUXG4gICAgICAtIF9BUFBfREJfUE9SVFxuICAgICAgLSBfQVBQX0RCX1NDSEVNQVxuICAgICAgLSBfQVBQX0RCX1VTRVJcbiAgICAgIC0gX0FQUF9EQl9QQVNTXG5cbiAgYXBwd3JpdGUtYXNzaXN0YW50OlxuICAgIGltYWdlOiBhcHB3cml0ZS9hc3Npc3RhbnQ6MC44LjNcbiAgICA8PDogKngtbG9nZ2luZ1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIF9BUFBfQVNTSVNUQU5UX09QRU5BSV9BUElfS0VZXG5cbiAgYXBwd3JpdGUtYnJvd3NlcjpcbiAgICBpbWFnZTogYXBwd3JpdGUvYnJvd3NlcjowLjIuNFxuICAgIDw8OiAqeC1sb2dnaW5nXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcblxuICBvcGVucnVudGltZXMtZXhlY3V0b3I6XG4gICAgaG9zdG5hbWU6IGV4YzFcbiAgICA8PDogKngtbG9nZ2luZ1xuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgc3RvcF9zaWduYWw6IFNJR0lOVFxuICAgIGltYWdlOiBvcGVucnVudGltZXMvZXhlY3V0b3I6MC43LjIyXG4gICAgdm9sdW1lczpcbiAgICAgIC0gL3Zhci9ydW4vZG9ja2VyLnNvY2s6L3Zhci9ydW4vZG9ja2VyLnNvY2tcbiAgICAgIC0gYXBwd3JpdGUtYnVpbGRzOi9zdG9yYWdlL2J1aWxkczpyd1xuICAgICAgLSBhcHB3cml0ZS1mdW5jdGlvbnM6L3N0b3JhZ2UvZnVuY3Rpb25zOnJ3XG4gICAgICAtIGFwcHdyaXRlLXNpdGVzOi9zdG9yYWdlL3NpdGVzOnJ3XG4gICAgICAjIEhvc3QgbW91bnQgbmVjZXNzYXJ5IHRvIHNoYXJlIGZpbGVzIGJldHdlZW4gZXhlY3V0b3IgYW5kIHJ1bnRpbWVzLlxuICAgICAgIyBJdCdzIG5vdCBwb3NzaWJsZSB0byBzaGFyZSBtb3VudCBmaWxlIGJldHdlZW4gMiBjb250YWluZXJzIHdpdGhvdXQgaG9zdCBtb3VudCAoY29weWluZyBpcyB0b28gc2xvdylcbiAgICAgIC0gL3RtcDovdG1wOnJ3XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIE9QUl9FWEVDVVRPUl9JTkFDVElWRV9UUkVTSE9MRD0kX0FQUF9DT01QVVRFX0lOQUNUSVZFX1RIUkVTSE9MRFxuICAgICAgLSBPUFJfRVhFQ1VUT1JfTUFJTlRFTkFOQ0VfSU5URVJWQUw9JF9BUFBfQ09NUFVURV9NQUlOVEVOQU5DRV9JTlRFUlZBTFxuICAgICAgLSBPUFJfRVhFQ1VUT1JfTkVUV09SSz0kX0FQUF9DT01QVVRFX1JVTlRJTUVTX05FVFdPUktcbiAgICAgIC0gT1BSX0VYRUNVVE9SX0RPQ0tFUl9IVUJfVVNFUk5BTUU9JF9BUFBfRE9DS0VSX0hVQl9VU0VSTkFNRVxuICAgICAgLSBPUFJfRVhFQ1VUT1JfRE9DS0VSX0hVQl9QQVNTV09SRD0kX0FQUF9ET0NLRVJfSFVCX1BBU1NXT1JEXG4gICAgICAtIE9QUl9FWEVDVVRPUl9FTlY9JF9BUFBfRU5WXG4gICAgICAtIE9QUl9FWEVDVVRPUl9SVU5USU1FUz0kX0FQUF9GVU5DVElPTlNfUlVOVElNRVMsJF9BUFBfU0lURVNfUlVOVElNRVNcbiAgICAgIC0gT1BSX0VYRUNVVE9SX1NFQ1JFVD0kX0FQUF9FWEVDVVRPUl9TRUNSRVRcbiAgICAgIC0gT1BSX0VYRUNVVE9SX1JVTlRJTUVfVkVSU0lPTlM9djVcbiAgICAgIC0gT1BSX0VYRUNVVE9SX0xPR0dJTkdfQ09ORklHPSRfQVBQX0xPR0dJTkdfQ09ORklHXG4gICAgICAtIE9QUl9FWEVDVVRPUl9TVE9SQUdFX0RFVklDRT0kX0FQUF9TVE9SQUdFX0RFVklDRVxuICAgICAgLSBPUFJfRVhFQ1VUT1JfU1RPUkFHRV9TM19BQ0NFU1NfS0VZPSRfQVBQX1NUT1JBR0VfUzNfQUNDRVNTX0tFWVxuICAgICAgLSBPUFJfRVhFQ1VUT1JfU1RPUkFHRV9TM19TRUNSRVQ9JF9BUFBfU1RPUkFHRV9TM19TRUNSRVRcbiAgICAgIC0gT1BSX0VYRUNVVE9SX1NUT1JBR0VfUzNfUkVHSU9OPSRfQVBQX1NUT1JBR0VfUzNfUkVHSU9OXG4gICAgICAtIE9QUl9FWEVDVVRPUl9TVE9SQUdFX1MzX0JVQ0tFVD0kX0FQUF9TVE9SQUdFX1MzX0JVQ0tFVFxuICAgICAgLSBPUFJfRVhFQ1VUT1JfU1RPUkFHRV9TM19FTkRQT0lOVD0kX0FQUF9TVE9SQUdFX1MzX0VORFBPSU5UXG4gICAgICAtIE9QUl9FWEVDVVRPUl9TVE9SQUdFX0RPX1NQQUNFU19BQ0NFU1NfS0VZPSRfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVlcbiAgICAgIC0gT1BSX0VYRUNVVE9SX1NUT1JBR0VfRE9fU1BBQ0VTX1NFQ1JFVD0kX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVRcbiAgICAgIC0gT1BSX0VYRUNVVE9SX1NUT1JBR0VfRE9fU1BBQ0VTX1JFR0lPTj0kX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT05cbiAgICAgIC0gT1BSX0VYRUNVVE9SX1NUT1JBR0VfRE9fU1BBQ0VTX0JVQ0tFVD0kX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVRcbiAgICAgIC0gT1BSX0VYRUNVVE9SX1NUT1JBR0VfQkFDS0JMQVpFX0FDQ0VTU19LRVk9JF9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfQUNDRVNTX0tFWVxuICAgICAgLSBPUFJfRVhFQ1VUT1JfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUPSRfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1NFQ1JFVFxuICAgICAgLSBPUFJfRVhFQ1VUT1JfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OPSRfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX1JFR0lPTlxuICAgICAgLSBPUFJfRVhFQ1VUT1JfU1RPUkFHRV9CQUNLQkxBWkVfQlVDS0VUPSRfQVBQX1NUT1JBR0VfQkFDS0JMQVpFX0JVQ0tFVFxuICAgICAgLSBPUFJfRVhFQ1VUT1JfU1RPUkFHRV9MSU5PREVfQUNDRVNTX0tFWT0kX0FQUF9TVE9SQUdFX0xJTk9ERV9BQ0NFU1NfS0VZXG4gICAgICAtIE9QUl9FWEVDVVRPUl9TVE9SQUdFX0xJTk9ERV9TRUNSRVQ9JF9BUFBfU1RPUkFHRV9MSU5PREVfU0VDUkVUXG4gICAgICAtIE9QUl9FWEVDVVRPUl9TVE9SQUdFX0xJTk9ERV9SRUdJT049JF9BUFBfU1RPUkFHRV9MSU5PREVfUkVHSU9OXG4gICAgICAtIE9QUl9FWEVDVVRPUl9TVE9SQUdFX0xJTk9ERV9CVUNLRVQ9JF9BUFBfU1RPUkFHRV9MSU5PREVfQlVDS0VUXG4gICAgICAtIE9QUl9FWEVDVVRPUl9TVE9SQUdFX1dBU0FCSV9BQ0NFU1NfS0VZPSRfQVBQX1NUT1JBR0VfV0FTQUJJX0FDQ0VTU19LRVlcbiAgICAgIC0gT1BSX0VYRUNVVE9SX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVD0kX0FQUF9TVE9SQUdFX1dBU0FCSV9TRUNSRVRcbiAgICAgIC0gT1BSX0VYRUNVVE9SX1NUT1JBR0VfV0FTQUJJX1JFR0lPTj0kX0FQUF9TVE9SQUdFX1dBU0FCSV9SRUdJT05cbiAgICAgIC0gT1BSX0VYRUNVVE9SX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVD0kX0FQUF9TVE9SQUdFX1dBU0FCSV9CVUNLRVRcblxuICBtYXJpYWRiOlxuICAgIGltYWdlOiBtYXJpYWRiOjEwLjExICMgZml4IGlzc3VlcyB3aGVuIHVwZ3JhZGluZyB1c2luZzogbXlzcWxfdXBncmFkZSAtdSByb290IC1wXG4gICAgPDw6ICp4LWxvZ2dpbmdcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIHZvbHVtZXM6XG4gICAgICAtIGFwcHdyaXRlLW1hcmlhZGI6L3Zhci9saWIvbXlzcWw6cndcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIC0gTVlTUUxfUk9PVF9QQVNTV09SRD0ke19BUFBfREJfUk9PVF9QQVNTfVxuICAgICAgLSBNWVNRTF9EQVRBQkFTRT0ke19BUFBfREJfU0NIRU1BfVxuICAgICAgLSBNWVNRTF9VU0VSPSR7X0FQUF9EQl9VU0VSfVxuICAgICAgLSBNWVNRTF9QQVNTV09SRD0ke19BUFBfREJfUEFTU31cbiAgICAgIC0gTUFSSUFEQl9BVVRPX1VQR1JBREU9MVxuICAgIGNvbW1hbmQ6IFwibXlzcWxkIC0taW5ub2RiLWZsdXNoLW1ldGhvZD1mc3luY1wiXG5cbiAgcmVkaXM6XG4gICAgaW1hZ2U6IHJlZGlzOjcuMi40LWFscGluZVxuICAgIDw8OiAqeC1sb2dnaW5nXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBjb21tYW5kOiA+XG4gICAgICByZWRpcy1zZXJ2ZXJcbiAgICAgIC0tbWF4bWVtb3J5ICAgICAgICAgICAgNTEybWJcbiAgICAgIC0tbWF4bWVtb3J5LXBvbGljeSAgICAgYWxsa2V5cy1scnVcbiAgICAgIC0tbWF4bWVtb3J5LXNhbXBsZXMgICAgNVxuICAgIHZvbHVtZXM6XG4gICAgICAtIGFwcHdyaXRlLXJlZGlzOi9kYXRhOnJ3XG5cbiAgIyBjbGFtYXY6XG4gICMgICBpbWFnZTogYXBwd3JpdGUvY2xhbWF2OjEuMi4wXG4gICMgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAjICAgdm9sdW1lczpcbiAgIyAgICAgLSBhcHB3cml0ZS11cGxvYWRzOi9zdG9yYWdlL3VwbG9hZHNcblxudm9sdW1lczpcbiAgYXBwd3JpdGUtbWFyaWFkYjpcbiAgYXBwd3JpdGUtcmVkaXM6XG4gIGFwcHdyaXRlLWNhY2hlOlxuICBhcHB3cml0ZS11cGxvYWRzOlxuICBhcHB3cml0ZS1pbXBvcnRzOlxuICBhcHB3cml0ZS1jZXJ0aWZpY2F0ZXM6XG4gIGFwcHdyaXRlLWZ1bmN0aW9uczpcbiAgYXBwd3JpdGUtc2l0ZXM6XG4gIGFwcHdyaXRlLWJ1aWxkczpcbiAgYXBwd3JpdGUtY29uZmlnOlxuIiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbmZ1bmN0aW9uc19kb21haW4gPSBcImZ1bmN0aW9ucy4ke21haW5fZG9tYWlufVwiXG5zaXRlc19kb21haW4gPSBcInNpdGVzLiR7bWFpbl9kb21haW59XCJcbm9wZW5zc2xfa2V5ID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5kYl9yb290X3B3ID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5kYl91c2VyX3B3ID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5leGVjdXRvcl9zZWNyZXQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcblxuW2NvbmZpZ11cbmVudiA9IFtcbiAgXCJfQVBQX0VOVj1wcm9kdWN0aW9uXCIsXG4gIFwiX0FQUF9MT0NBTEU9ZW5cIixcbiAgXCJfQVBQX09QVElPTlNfQUJVU0U9ZW5hYmxlZFwiLFxuICBcIl9BUFBfT1BUSU9OU19GT1JDRV9IVFRQUz1kaXNhYmxlZFwiLFxuICBcIl9BUFBfT1BUSU9OU19GVU5DVElPTlNfRk9SQ0VfSFRUUFM9ZGlzYWJsZWRcIixcbiAgXCJfQVBQX09QVElPTlNfUk9VVEVSX0ZPUkNFX0hUVFBTPWRpc2FibGVkXCIsXG4gIFwiX0FQUF9PUFRJT05TX1JPVVRFUl9QUk9URUNUSU9OPWRpc2FibGVkXCIsXG4gIFwiX0FQUF9PUEVOU1NMX0tFWV9WMT0ke29wZW5zc2xfa2V5fVwiLFxuICBcIl9BUFBfRE9NQUlOPSR7bWFpbl9kb21haW59XCIsXG4gIFwiX0FQUF9DVVNUT01fRE9NQUlOX0RFTllfTElTVD1leGFtcGxlLmNvbSx0ZXN0LmNvbSxhcHAuZXhhbXBsZS5jb21cIixcbiAgXCJfQVBQX0RPTUFJTl9GVU5DVElPTlM9JHtmdW5jdGlvbnNfZG9tYWlufVwiLFxuICBcIl9BUFBfRE9NQUlOX1NJVEVTPSR7c2l0ZXNfZG9tYWlufVwiLFxuICBcIl9BUFBfRE9NQUlOX1RBUkdFVD1sb2NhbGhvc3RcIixcbiAgXCJfQVBQX0RPTUFJTl9UQVJHRVRfQ05BTUU9bG9jYWxob3N0XCIsXG4gIFwiX0FQUF9ET01BSU5fVEFSR0VUX0FBQUE9OjoxXCIsXG4gIFwiX0FQUF9ET01BSU5fVEFSR0VUX0E9MTI3LjAuMC4xXCIsXG4gIFwiX0FQUF9ET01BSU5fVEFSR0VUX0NBQT1cIixcbiAgXCJfQVBQX0ROUz04LjguOC44XCIsXG4gIFwiX0FQUF9DT05TT0xFX1dISVRFTElTVF9ST09UPWVuYWJsZWRcIixcbiAgXCJfQVBQX0NPTlNPTEVfV0hJVEVMSVNUX0VNQUlMUz1cIixcbiAgXCJfQVBQX0NPTlNPTEVfV0hJVEVMSVNUX0lQUz1cIixcbiAgXCJfQVBQX0NPTlNPTEVfSE9TVE5BTUVTPVwiLFxuICBcIl9BUFBfU1lTVEVNX0VNQUlMX05BTUU9QXBwd3JpdGVcIixcbiAgXCJfQVBQX1NZU1RFTV9FTUFJTF9BRERSRVNTPW5vcmVwbHlAYXBwd3JpdGUuaW9cIixcbiAgXCJfQVBQX1NZU1RFTV9URUFNX0VNQUlMPXRlYW1AYXBwd3JpdGUuaW9cIixcbiAgXCJfQVBQX1NZU1RFTV9SRVNQT05TRV9GT1JNQVQ9XCIsXG4gIFwiX0FQUF9TWVNURU1fU0VDVVJJVFlfRU1BSUxfQUREUkVTUz1jZXJ0c0BhcHB3cml0ZS5pb1wiLFxuICBcIl9BUFBfRU1BSUxfU0VDVVJJVFk9XCIsXG4gIFwiX0FQUF9FTUFJTF9DRVJUSUZJQ0FURVM9XCIsXG4gIFwiX0FQUF9VU0FHRV9TVEFUUz1lbmFibGVkXCIsXG4gIFwiX0FQUF9MT0dHSU5HX1BST1ZJREVSPVwiLFxuICBcIl9BUFBfTE9HR0lOR19DT05GSUc9XCIsXG4gIFwiX0FQUF9VU0FHRV9BR0dSRUdBVElPTl9JTlRFUlZBTD0zMFwiLFxuICBcIl9BUFBfVVNBR0VfVElNRVNFUklFU19JTlRFUlZBTD0zMFwiLFxuICBcIl9BUFBfVVNBR0VfREFUQUJBU0VfSU5URVJWQUw9OTAwXCIsXG4gIFwiX0FQUF9XT1JLRVJfUEVSX0NPUkU9NlwiLFxuICBcIl9BUFBfQ09OU09MRV9TRVNTSU9OX0FMRVJUUz1kaXNhYmxlZFwiLFxuICBcIl9BUFBfQ09NUFJFU1NJT05fRU5BQkxFRD1lbmFibGVkXCIsXG4gIFwiX0FQUF9DT01QUkVTU0lPTl9NSU5fU0laRV9CWVRFUz0xMDI0XCIsXG4gIFwiX0FQUF9SRURJU19IT1NUPXJlZGlzXCIsXG4gIFwiX0FQUF9SRURJU19QT1JUPTYzNzlcIixcbiAgXCJfQVBQX1JFRElTX1VTRVI9XCIsXG4gIFwiX0FQUF9SRURJU19QQVNTPVwiLFxuICBcIl9BUFBfREJfSE9TVD1tYXJpYWRiXCIsXG4gIFwiX0FQUF9EQl9QT1JUPTMzMDZcIixcbiAgXCJfQVBQX0RCX1NDSEVNQT1hcHB3cml0ZVwiLFxuICBcIl9BUFBfREJfVVNFUj11c2VyXCIsXG4gIFwiX0FQUF9EQl9QQVNTPSR7ZGJfdXNlcl9wd31cIixcbiAgXCJfQVBQX0RCX1JPT1RfUEFTUz0ke2RiX3Jvb3RfcHd9XCIsXG4gIFwiX0FQUF9JTkZMVVhEQl9IT1NUPWluZmx1eGRiXCIsXG4gIFwiX0FQUF9JTkZMVVhEQl9QT1JUPTgwODZcIixcbiAgXCJfQVBQX1NUQVRTRF9IT1NUPXRlbGVncmFmXCIsXG4gIFwiX0FQUF9TVEFUU0RfUE9SVD04MTI1XCIsXG4gIFwiX0FQUF9TTVRQX0hPU1Q9XCIsXG4gIFwiX0FQUF9TTVRQX1BPUlQ9XCIsXG4gIFwiX0FQUF9TTVRQX1NFQ1VSRT1cIixcbiAgXCJfQVBQX1NNVFBfVVNFUk5BTUU9XCIsXG4gIFwiX0FQUF9TTVRQX1BBU1NXT1JEPVwiLFxuICBcIl9BUFBfU01TX1BST1ZJREVSPVwiLFxuICBcIl9BUFBfU01TX0ZST009XCIsXG4gIFwiX0FQUF9TVE9SQUdFX0xJTUlUPTMwMDAwMDAwXCIsXG4gIFwiX0FQUF9TVE9SQUdFX1BSRVZJRVdfTElNSVQ9MjAwMDAwMDBcIixcbiAgXCJfQVBQX1NUT1JBR0VfQU5USVZJUlVTPWRpc2FibGVkXCIsXG4gIFwiX0FQUF9TVE9SQUdFX0FOVElWSVJVU19IT1NUPWNsYW1hdlwiLFxuICBcIl9BUFBfU1RPUkFHRV9BTlRJVklSVVNfUE9SVD0zMzEwXCIsXG4gIFwiX0FQUF9TVE9SQUdFX0RFVklDRT1sb2NhbFwiLFxuICBcIl9BUFBfU1RPUkFHRV9TM19BQ0NFU1NfS0VZPVwiLFxuICBcIl9BUFBfU1RPUkFHRV9TM19TRUNSRVQ9XCIsXG4gIFwiX0FQUF9TVE9SQUdFX1MzX1JFR0lPTj11cy1lYXN0LTFcIixcbiAgXCJfQVBQX1NUT1JBR0VfUzNfQlVDS0VUPVwiLFxuICBcIl9BUFBfU1RPUkFHRV9TM19FTkRQT0lOVD1cIixcbiAgXCJfQVBQX1NUT1JBR0VfRE9fU1BBQ0VTX0FDQ0VTU19LRVk9XCIsXG4gIFwiX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19TRUNSRVQ9XCIsXG4gIFwiX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19SRUdJT049dXMtZWFzdC0xXCIsXG4gIFwiX0FQUF9TVE9SQUdFX0RPX1NQQUNFU19CVUNLRVQ9XCIsXG4gIFwiX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9BQ0NFU1NfS0VZPVwiLFxuICBcIl9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfU0VDUkVUPVwiLFxuICBcIl9BUFBfU1RPUkFHRV9CQUNLQkxBWkVfUkVHSU9OPXVzLXdlc3QtMDA0XCIsXG4gIFwiX0FQUF9TVE9SQUdFX0JBQ0tCTEFaRV9CVUNLRVQ9XCIsXG4gIFwiX0FQUF9TVE9SQUdFX0xJTk9ERV9BQ0NFU1NfS0VZPVwiLFxuICBcIl9BUFBfU1RPUkFHRV9MSU5PREVfU0VDUkVUPVwiLFxuICBcIl9BUFBfU1RPUkFHRV9MSU5PREVfUkVHSU9OPWV1LWNlbnRyYWwtMVwiLFxuICBcIl9BUFBfU1RPUkFHRV9MSU5PREVfQlVDS0VUPVwiLFxuICBcIl9BUFBfU1RPUkFHRV9XQVNBQklfQUNDRVNTX0tFWT1cIixcbiAgXCJfQVBQX1NUT1JBR0VfV0FTQUJJX1NFQ1JFVD1cIixcbiAgXCJfQVBQX1NUT1JBR0VfV0FTQUJJX1JFR0lPTj1ldS1jZW50cmFsLTFcIixcbiAgXCJfQVBQX1NUT1JBR0VfV0FTQUJJX0JVQ0tFVD1cIixcbiAgXCJfQVBQX0ZVTkNUSU9OU19TSVpFX0xJTUlUPTMwMDAwMDAwXCIsXG4gIFwiX0FQUF9DT01QVVRFX1NJWkVfTElNSVQ9MzAwMDAwMDBcIixcbiAgXCJfQVBQX0ZVTkNUSU9OU19CVUlMRF9TSVpFX0xJTUlUPTIwMDAwMDAwMDBcIixcbiAgXCJfQVBQX0ZVTkNUSU9OU19USU1FT1VUPTkwMFwiLFxuICBcIl9BUFBfRlVOQ1RJT05TX0JVSUxEX1RJTUVPVVQ9OTAwXCIsXG4gIFwiX0FQUF9DT01QVVRFX0JVSUxEX1RJTUVPVVQ9OTAwXCIsXG4gIFwiX0FQUF9GVU5DVElPTlNfQ09OVEFJTkVSUz0xMFwiLFxuICBcIl9BUFBfRlVOQ1RJT05TX0NQVVM9MFwiLFxuICBcIl9BUFBfQ09NUFVURV9DUFVTPTBcIixcbiAgXCJfQVBQX0ZVTkNUSU9OU19NRU1PUlk9MFwiLFxuICBcIl9BUFBfQ09NUFVURV9NRU1PUlk9MFwiLFxuICBcIl9BUFBfRlVOQ1RJT05TX01FTU9SWV9TV0FQPTBcIixcbiAgXCJfQVBQX0ZVTkNUSU9OU19SVU5USU1FUz1ub2RlLTE2LjAscGhwLTguMCxweXRob24tMy45LHJ1YnktMy4wXCIsXG4gIFwiX0FQUF9FWEVDVVRPUl9TRUNSRVQ9JHtleGVjdXRvcl9zZWNyZXR9XCIsXG4gIFwiX0FQUF9FWEVDVVRPUl9IT1NUPWh0dHA6Ly9leGMxL3YxXCIsXG4gIFwiX0FQUF9FWEVDVVRPUl9SVU5USU1FX05FVFdPUks9YXBwd3JpdGVfcnVudGltZXNcIixcbiAgXCJfQVBQX0ZVTkNUSU9OU19FTlZTPW5vZGUtMTYuMCxwaHAtNy40LHB5dGhvbi0zLjkscnVieS0zLjBcIixcbiAgXCJfQVBQX0ZVTkNUSU9OU19JTkFDVElWRV9USFJFU0hPTEQ9NjBcIixcbiAgXCJfQVBQX0NPTVBVVEVfSU5BQ1RJVkVfVEhSRVNIT0xEPTYwXCIsXG4gIFwiRE9DS0VSSFVCX1BVTExfVVNFUk5BTUU9XCIsXG4gIFwiRE9DS0VSSFVCX1BVTExfUEFTU1dPUkQ9XCIsXG4gIFwiRE9DS0VSSFVCX1BVTExfRU1BSUw9XCIsXG4gIFwiT1BFTl9SVU5USU1FU19ORVRXT1JLPWFwcHdyaXRlX3J1bnRpbWVzXCIsXG4gIFwiX0FQUF9GVU5DVElPTlNfUlVOVElNRVNfTkVUV09SSz1kb2twbG95LW5ldHdvcmtcIixcbiAgXCJfQVBQX0NPTVBVVEVfUlVOVElNRVNfTkVUV09SSz1kb2twbG95LW5ldHdvcmtcIixcbiAgXCJfQVBQX0RPQ0tFUl9IVUJfVVNFUk5BTUU9XCIsXG4gIFwiX0FQUF9ET0NLRVJfSFVCX1BBU1NXT1JEPVwiLFxuICBcIl9BUFBfRlVOQ1RJT05TX01BSU5URU5BTkNFX0lOVEVSVkFMPTM2MDBcIixcbiAgXCJfQVBQX0NPTVBVVEVfTUFJTlRFTkFOQ0VfSU5URVJWQUw9MzYwMFwiLFxuICBcIl9BUFBfU0lURVNfVElNRU9VVD05MDBcIixcbiAgXCJfQVBQX1NJVEVTX1JVTlRJTUVTPXN0YXRpYy0xLG5vZGUtMjIsZmx1dHRlci0zLjI5XCIsXG4gIFwiX0FQUF9WQ1NfR0lUSFVCX0FQUF9OQU1FPVwiLFxuICBcIl9BUFBfVkNTX0dJVEhVQl9QUklWQVRFX0tFWT1cIixcbiAgXCJfQVBQX1ZDU19HSVRIVUJfQVBQX0lEPVwiLFxuICBcIl9BUFBfVkNTX0dJVEhVQl9DTElFTlRfSUQ9XCIsXG4gIFwiX0FQUF9WQ1NfR0lUSFVCX0NMSUVOVF9TRUNSRVQ9XCIsXG4gIFwiX0FQUF9WQ1NfR0lUSFVCX1dFQkhPT0tfU0VDUkVUPVwiLFxuICBcIl9BUFBfTUFJTlRFTkFOQ0VfSU5URVJWQUw9ODY0MDBcIixcbiAgXCJfQVBQX01BSU5URU5BTkNFX0RFTEFZPTBcIixcbiAgXCJfQVBQX01BSU5URU5BTkNFX1NUQVJUX1RJTUU9MDA6MDBcIixcbiAgXCJfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9DQUNIRT0yNTkyMDAwXCIsXG4gIFwiX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fRVhFQ1VUSU9OPTEyMDk2MDBcIixcbiAgXCJfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9BVURJVD0xMjA5NjAwXCIsXG4gIFwiX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fQVVESVRfQ09OU09MRT0xNTc3ODgwMFwiLFxuICBcIl9BUFBfTUFJTlRFTkFOQ0VfUkVURU5USU9OX0FCVVNFPTg2NDAwXCIsXG4gIFwiX0FQUF9NQUlOVEVOQU5DRV9SRVRFTlRJT05fVVNBR0VfSE9VUkxZPTg2NDAwMDBcIixcbiAgXCJfQVBQX01BSU5URU5BTkNFX1JFVEVOVElPTl9TQ0hFRFVMRVM9ODY0MDBcIixcbiAgXCJfQVBQX0dSQVBIUUxfTUFYX0JBVENIX1NJWkU9MTBcIixcbiAgXCJfQVBQX0dSQVBIUUxfTUFYX0NPTVBMRVhJVFk9MjUwXCIsXG4gIFwiX0FQUF9HUkFQSFFMX01BWF9ERVBUSD0zXCIsXG4gIFwiX0FQUF9NSUdSQVRJT05TX0ZJUkVCQVNFX0NMSUVOVF9JRD1cIixcbiAgXCJfQVBQX01JR1JBVElPTlNfRklSRUJBU0VfQ0xJRU5UX1NFQ1JFVD1cIixcbiAgXCJfQVBQX0FTU0lTVEFOVF9PUEVOQUlfQVBJX0tFWT1cIixcbl1cbm1vdW50cyA9IFtdXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcImFwcHdyaXRlXCJcbnBvcnQgPSA4MFxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxucGF0aCA9IFwiL1wiXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcImFwcHdyaXRlXCJcbnBvcnQgPSA4MFxuaG9zdCA9IFwiJHtzaXRlc19kb21haW59XCJcbnBhdGggPSBcIi9cIlxuXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJhcHB3cml0ZVwiXG5wb3J0ID0gODBcbmhvc3QgPSBcIiR7ZnVuY3Rpb25zX2RvbWFpbn1cIlxucGF0aCA9IFwiL1wiXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcImFwcHdyaXRlLWNvbnNvbGVcIlxucG9ydCA9IDgwXG5ob3N0ID0gXCIke21haW5fZG9tYWlufVwiXG5wYXRoID0gXCIvY29uc29sZVwiXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcImFwcHdyaXRlLXJlYWx0aW1lXCJcbnBvcnQgPSA4MFxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxucGF0aCA9IFwiL3YxL3JlYWx0aW1lXCJcbiIKfQ==

Tags

database, firebase, mariadb, hosting, self-hosted


Version: 1.8.0

On this page