From e9028e1338c29baf4024768bfb6bfef73e277d44 Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Tue, 3 Nov 2026 18:29:35 +0100 Subject: [PATCH] fix(service): allow the redirect_to header in appflowy gotrue cors AppFlowy Web runs on its own domain and sends a Redirect_to header to /gotrue/magiclink on the admin domain. GoTrue does not allow that header by default, so the CORS preflight failed and email sign-in showed "Network error". Set GOTRUE_CORS_ALLOWED_HEADERS=redirect_to. Closes #10545 Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 1 + templates/compose/appflowy.yaml | 2 ++ templates/service-templates-latest.json | 2 +- templates/service-templates.json | 2 +- 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 397695df72..9c7306bb3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ### Fixed +- Fix the "Network error" when you sign in with email in AppFlowy Web. AppFlowy Web runs on its own domain and sends a `Redirect_to` header to GoTrue on the admin domain, and GoTrue blocked the CORS preflight because it did not allow that header. The AppFlowy service template now sets `GOTRUE_CORS_ALLOWED_HEADERS=redirect_to`. For an existing AppFlowy service, add this variable to the `gotrue` service in the Docker Compose file and restart the service ([#10545](https://github.com/coollabsio/coolify/issues/10545)) - Use PostgreSQL 17 instead of MySQL in the Bugsink service template, as the Bugsink Docker Compose sample does, and pin Bugsink to version 2. Before, the template used `mysql:latest` with binary logging on, so the binary logs filled the disk after some weeks and Bugsink stopped. Only new Bugsink services get PostgreSQL. To stop the growth in an existing service, run `PURGE BINARY LOGS BEFORE NOW();` in MySQL, then add `command: ['--disable-log-bin']` to the `mysql` service and restart it ([#10626](https://github.com/coollabsio/coolify/issues/10626)) - List the commit images of Docker Compose applications on the **Rollback** page and in `GET /api/v1/applications/{uuid}/rollback-images`. Since v4.5.0 the list was always empty, because a Compose build names each service image `_`. The page also shows the running commit when the Compose file has services from other images, for example a database ([#12446](https://github.com/coollabsio/coolify/issues/12446)) - Finish the startup and the nightly cleanup of stuck resources on instances with many large deployment logs. Before, the cleanup loaded the logs of all deployments and stopped with "Allowed memory size exhausted", so stuck deployments, tasks, and backups were not marked as failed and the proxy configuration was not set up ([#12435](https://github.com/coollabsio/coolify/issues/12435)) diff --git a/templates/compose/appflowy.yaml b/templates/compose/appflowy.yaml index b5354bd694..c11acf9a23 100644 --- a/templates/compose/appflowy.yaml +++ b/templates/compose/appflowy.yaml @@ -225,6 +225,8 @@ services: - GOTRUE_DISABLE_SIGNUP=false - GOTRUE_SITE_URL=appflowy-flutter:// - GOTRUE_URI_ALLOW_LIST=** + # AppFlowy Web sends Redirect_to cross-origin, which GoTrue's CORS preflight rejects by default + - GOTRUE_CORS_ALLOWED_HEADERS=redirect_to - GOTRUE_JWT_SECRET=${SERVICE_PASSWORD_JWT} - GOTRUE_JWT_EXP=${GOTRUE_JWT_EXP:-7200} - GOTRUE_DB_DRIVER=postgres diff --git a/templates/service-templates-latest.json b/templates/service-templates-latest.json index 81bc1f0d69..bac37c5326 100644 --- a/templates/service-templates-latest.json +++ b/templates/service-templates-latest.json @@ -112,7 +112,7 @@ "appflowy": { "documentation": "https://docs.appflowy.io/docs/documentation/appflowy-cloud?utm_source=coolify.io", "slogan": "AppFlowy is the AI collaborative workspace where you achieve more without losing control of your data.", - "compose": "c2VydmljZXM6CiAgbmdpbng6CiAgICBpbWFnZTogJ25naW54OjEuMjkuMicKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0FETUlOCiAgICB2b2x1bWVzOgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9uZ2lueC9uZ2lueC5jb25mCiAgICAgICAgdGFyZ2V0OiAvZXRjL25naW54L25naW54LmNvbmYKICAgICAgICByZWFkX29ubHk6IHRydWUKICAgICAgICBjb250ZW50OiAiIyBQbGVhc2UgZG8gbm90IGRpcmVjdGx5IGVkaXQgdGhpcyBmaWxlLlxuXG5lcnJvcl9sb2cgIC92YXIvbG9nL25naW54L2Vycm9yLmxvZyBub3RpY2U7XG5waWQgICAgICAgIC92YXIvcnVuL25naW54LnBpZDtcblxuXG5ldmVudHMge1xuICAgIHdvcmtlcl9jb25uZWN0aW9ucyAgMTAyNDtcbn1cblxuXG5odHRwIHtcbiAgICByZXNvbHZlciAxMjcuMC4wLjExIHZhbGlkPTEwcztcbiAgICBtYXAgJGh0dHBfdXBncmFkZSAkY29ubmVjdGlvbl91cGdyYWRlIHtcbiAgICAgICAgZGVmYXVsdCB1cGdyYWRlO1xuICAgICAgICAnJyBjbG9zZTtcbiAgICB9XG5cbiAgICBzZXJ2ZXIge1xuICAgICAgICBsaXN0ZW4gODA7XG4gICAgICAgIGNsaWVudF9tYXhfYm9keV9zaXplIDEwTTtcbiAgICAgICAgdW5kZXJzY29yZXNfaW5faGVhZGVycyBvbjtcblxuICAgICAgICAjIEJhY2tlbmQgc2VydmljZXNcbiAgICAgICAgc2V0ICRhcHBmbG93eV9jbG91ZF9iYWNrZW5kIFwiaHR0cDovL2FwcGZsb3d5X2Nsb3VkOjgwMDBcIjtcbiAgICAgICAgc2V0ICRnb3RydWVfYmFja2VuZCBcImh0dHA6Ly9nb3RydWU6OTk5OVwiO1xuICAgICAgICBzZXQgJGFkbWluX2Zyb250ZW5kX2JhY2tlbmQgXCJodHRwOi8vYWRtaW5fZnJvbnRlbmQ6MzAwMFwiO1xuICAgICAgICAjIEdvVHJ1ZSBBdXRoZW50aWNhdGlvbiBTZXJ2aWNlXG4gICAgICAgIGxvY2F0aW9uIC9nb3RydWUvIHtcbiAgICAgICAgICAgIHByb3h5X3Bhc3MgJGdvdHJ1ZV9iYWNrZW5kO1xuXG4gICAgICAgICAgICByZXdyaXRlIF4vZ290cnVlKC8uKikkICQxIGJyZWFrO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAjIEFsbG93IGhlYWRlcnMgbGlrZSByZWRpcmVjdF90byB0byBiZSBoYW5kZWQgb3ZlciB0byB0aGUgZ290cnVlXG4gICAgICAgICAgICAjIGZvciBjb3JyZWN0IHJlZGlyZWN0aW5nXG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgJGh0dHBfaG9zdDtcbiAgICAgICAgICAgIHByb3h5X3Bhc3NfcmVxdWVzdF9oZWFkZXJzIG9uO1xuICAgICAgICB9XG5cbiAgICAgICAgIyBXZWJTb2NrZXQgZW5kcG9pbnQgLSBoYW5kbGUgYm90aCAvd3MgYW5kIC93cy92MlxuICAgICAgICBsb2NhdGlvbiAvd3Mge1xuICAgICAgICAgICAgcHJveHlfcGFzcyAkYXBwZmxvd3lfY2xvdWRfYmFja2VuZDtcblxuICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgVXBncmFkZSAkaHR0cF91cGdyYWRlO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIFwiVXBncmFkZVwiO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBIb3N0ICRob3N0O1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLVJlYWwtSVAgJHJlbW90ZV9hZGRyO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLUZvcndhcmRlZC1Gb3IgJHByb3h5X2FkZF94X2ZvcndhcmRlZF9mb3I7XG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtRm9yd2FyZGVkLVByb3RvICRzY2hlbWU7XG4gICAgICAgICAgICBwcm94eV9yZWFkX3RpbWVvdXQgODY0MDBzO1xuICAgICAgICB9XG5cbiAgICAgICAgIyBBUEkgZW5kcG9pbnRzXG4gICAgICAgIGxvY2F0aW9uIC9hcGkge1xuICAgICAgICAgICAgcHJveHlfcGFzcyAkYXBwZmxvd3lfY2xvdWRfYmFja2VuZDtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1SZXF1ZXN0LUlkICRyZXF1ZXN0X2lkO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBIb3N0ICRodHRwX2hvc3Q7XG5cbiAgICAgICAgICAgICMgU3BlY2lhbCBoYW5kbGluZyBmb3IgcHVibGlzaCBlbmRwb2ludFxuICAgICAgICAgICAgbG9jYXRpb24gfiogXi9hcGkvd29ya3NwYWNlLyhbYS16QS1aMC05Xy1dKykvcHVibGlzaCQge1xuICAgICAgICAgICAgICAgIHByb3h5X3Bhc3MgJGFwcGZsb3d5X2Nsb3VkX2JhY2tlbmQ7XG4gICAgICAgICAgICAgICAgcHJveHlfcmVxdWVzdF9idWZmZXJpbmcgb2ZmO1xuICAgICAgICAgICAgICAgIGNsaWVudF9tYXhfYm9keV9zaXplIDI1Nk07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICMgQ2hhdCBlbmRwb2ludCAoc3RyZWFtaW5nKVxuICAgICAgICAgICAgbG9jYXRpb24gL2FwaS9jaGF0IHtcbiAgICAgICAgICAgICAgICBwcm94eV9wYXNzICRhcHBmbG93eV9jbG91ZF9iYWNrZW5kO1xuXG4gICAgICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTtcbiAgICAgICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIENvbm5lY3Rpb24gXCJcIjtcbiAgICAgICAgICAgICAgICBjaHVua2VkX3RyYW5zZmVyX2VuY29kaW5nIG9uO1xuICAgICAgICAgICAgICAgIHByb3h5X2J1ZmZlcmluZyBvZmY7XG4gICAgICAgICAgICAgICAgcHJveHlfY2FjaGUgb2ZmO1xuXG4gICAgICAgICAgICAgICAgcHJveHlfcmVhZF90aW1lb3V0IDYwMHM7XG4gICAgICAgICAgICAgICAgcHJveHlfY29ubmVjdF90aW1lb3V0IDYwMHM7XG4gICAgICAgICAgICAgICAgcHJveHlfc2VuZF90aW1lb3V0IDYwMHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICMgSW1wb3J0IGVuZHBvaW50XG4gICAgICAgICAgICBsb2NhdGlvbiAvYXBpL2ltcG9ydCB7XG4gICAgICAgICAgICAgICAgcHJveHlfcGFzcyAkYXBwZmxvd3lfY2xvdWRfYmFja2VuZDtcblxuICAgICAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1SZXF1ZXN0LUlkICRyZXF1ZXN0X2lkO1xuICAgICAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCAkaHR0cF9ob3N0O1xuXG4gICAgICAgICAgICAgICAgcHJveHlfcmVhZF90aW1lb3V0IDYwMHM7XG4gICAgICAgICAgICAgICAgcHJveHlfY29ubmVjdF90aW1lb3V0IDYwMHM7XG4gICAgICAgICAgICAgICAgcHJveHlfc2VuZF90aW1lb3V0IDYwMHM7XG5cbiAgICAgICAgICAgICAgICBwcm94eV9yZXF1ZXN0X2J1ZmZlcmluZyBvZmY7XG4gICAgICAgICAgICAgICAgcHJveHlfYnVmZmVyaW5nIG9mZjtcbiAgICAgICAgICAgICAgICBwcm94eV9jYWNoZSBvZmY7XG4gICAgICAgICAgICAgICAgY2xpZW50X21heF9ib2R5X3NpemUgMkc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAjIEFkbWluIEZyb250ZW5kXG4gICAgICAgICMgT3B0aW9uYWwgTW9kdWxlLCBjb21tZW50IHRoaXMgc2VjdGlvbiBpZiB5b3UgZGlkIG5vdCBkZXBsb3kgYWRtaW5fZnJvbnRlbmQgaW4gZG9ja2VyLWNvbXBvc2UueW1sXG4gICAgICAgIGxvY2F0aW9uIC9jb25zb2xlIHtcbiAgICAgICAgICAgIHByb3h5X3Bhc3MgJGFkbWluX2Zyb250ZW5kX2JhY2tlbmQ7XG5cbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1TY2hlbWUgJHNjaGVtZTtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCAkaG9zdDtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1SZWFsLUlQICRyZW1vdGVfYWRkcjtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtRm9yICRwcm94eV9hZGRfeF9mb3J3YXJkZWRfZm9yO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLUZvcndhcmRlZC1Qcm90byAkc2NoZW1lO1xuXG4gICAgICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIFwiXCI7XG5cbiAgICAgICAgICAgIHByb3h5X2J1ZmZlcmluZyBvZmY7XG4gICAgICAgICAgICBwcm94eV9jYWNoZSBvZmY7XG5cbiAgICAgICAgICAgIHByb3h5X3JlYWRfdGltZW91dCA2MHM7XG4gICAgICAgICAgICBwcm94eV9jb25uZWN0X3RpbWVvdXQgNjBzO1xuICAgICAgICAgICAgcHJveHlfc2VuZF90aW1lb3V0IDYwcztcbiAgICAgICAgfVxuXG4gICAgICAgICMgUmVkaXJlY3Qgcm9vdCBwYXRoIHRvIC9jb25zb2xlXG4gICAgICAgIGxvY2F0aW9uID0gLyB7XG4gICAgICAgICAgICByZXR1cm4gMzAxIC9jb25zb2xlO1xuICAgICAgICB9XG5cbiAgICAgICAgIyBIZWFsdGggY2hlY2sgZW5kcG9pbnRcbiAgICAgICAgbG9jYXRpb24gL2hlYWx0aCB7XG4gICAgICAgICAgICBhY2Nlc3NfbG9nIG9mZjtcbiAgICAgICAgICAgIHJldHVybiAyMDAgXCJoZWFsdGh5XFxuXCI7XG4gICAgICAgICAgICBhZGRfaGVhZGVyIENvbnRlbnQtVHlwZSB0ZXh0L3BsYWluO1xuICAgICAgICB9XG4gICAgfVxufVxuIgogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHBmbG93eV9jbG91ZAogICAgICAtIGdvdHJ1ZQogICAgICAtIGFkbWluX2Zyb250ZW5kCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3QvaGVhbHRoJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgICAgIHN0YXJ0X3BlcmlvZDogNDBzCiAgYXBwZmxvd3lfd2ViOgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQVBQRkxPV1lXRUIKICAgICAgLSAnQVBQRkxPV1lfQkFTRV9VUkw9JHtTRVJWSUNFX1VSTF9BRE1JTn0nCiAgICAgIC0gJ0FQUEZMT1dZX0dPVFJVRV9CQVNFX1VSTD0ke1NFUlZJQ0VfVVJMX0FETUlOfS9nb3RydWUnCiAgICAgIC0gJ0FQUEZMT1dZX1dTX0JBU0VfVVJMPSR7U0VSVklDRV9VUkxfQURNSU59L3dzL3YyJwogICAgaW1hZ2U6ICdhcHBmbG93eWluYy9hcHBmbG93eV93ZWI6MC45LjEzMicKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwZmxvd3lfY2xvdWQKICBhcHBmbG93eV9jbG91ZDoKICAgIGltYWdlOiAnYXBwZmxvd3lpbmMvYXBwZmxvd3lfY2xvdWQ6MC45LjE0OScKICAgIGVudmlyb25tZW50OgogICAgICAtICdSVVNUX0xPRz0ke1JVU1RfTE9HOi1pbmZvfScKICAgICAgLSAnQVBQRkxPV1lfQkFTRV9VUkw9JHtTRVJWSUNFX1VSTF9BRE1JTn0nCiAgICAgIC0gQVBQRkxPV1lfRU5WSVJPTk1FTlQ9cHJvZHVjdGlvbgogICAgICAtICdBUFBGTE9XWV9EQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREI6LWFwcGZsb3d5fScKICAgICAgLSAnQVBQRkxPV1lfUkVESVNfVVJJPXJlZGlzOi8vcmVkaXM6NjM3OScKICAgICAgLSAnQVBQRkxPV1lfR09UUlVFX0pXVF9TRUNSRVQ9JHtTRVJWSUNFX1BBU1NXT1JEX0pXVH0nCiAgICAgIC0gJ0FQUEZMT1dZX0dPVFJVRV9CQVNFX1VSTD1odHRwOi8vZ290cnVlOjk5OTknCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0NSRUFURV9CVUNLRVQ9JHtBUFBGTE9XWV9TM19DUkVBVEVfQlVDS0VUOi10cnVlfScKICAgICAgLSBBUFBGTE9XWV9TM19VU0VfTUlOSU89dHJ1ZQogICAgICAtICdBUFBGTE9XWV9TM19NSU5JT19VUkw9aHR0cDovL21pbmlvOjkwMDAnCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0FDQ0VTU19LRVk9JHtTRVJWSUNFX1VTRVJfTUlOSU99JwogICAgICAtICdBUFBGTE9XWV9TM19TRUNSRVRfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9NSU5JT30nCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0JVQ0tFVD0ke0FQUEZMT1dZX1MzX0JVQ0tFVDotYXBwZmxvd3l9JwogICAgICAtICdBUFBGTE9XWV9TM19SRUdJT049JHtBUFBGTE9XWV9TM19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIC0gJ0FQUEZMT1dZX01BSUxFUl9TTVRQX0hPU1Q9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9IT1NUOi1zbXRwLmdtYWlsLmNvbX0nCiAgICAgIC0gJ0FQUEZMT1dZX01BSUxFUl9TTVRQX1BPUlQ9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9QT1JUOi01ODd9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9VU0VSTkFNRT0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1VTRVJOQU1FOi1ub3RpZnlAYXBwZmxvd3kuaW99JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9FTUFJTD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX0VNQUlMOi1ub3RpZnlAYXBwZmxvd3kuaW99JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9QQVNTV09SRD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1BBU1NXT1JEOi1lbWFpbF9zZW5kZXJfcGFzc3dvcmR9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9UTFNfS0lORD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1RMU19LSU5EOi1ub25lfScKICAgICAgLSBBUFBGTE9XWV9BQ0NFU1NfQ09OVFJPTD10cnVlCiAgICAgIC0gQVBQRkxPV1lfREFUQUJBU0VfTUFYX0NPTk5FQ1RJT05TPTQwCiAgICAgIC0gQUlfU0VSVkVSX0hPU1Q9YWkKICAgICAgLSBBSV9TRVJWRVJfUE9SVD01MDAxCiAgICAgIC0gJ0FJX09QRU5BSV9BUElfS0VZPSR7QUlfT1BFTkFJX0FQSV9LRVk6LX0nCiAgICAgIC0gJ0FQUEZMT1dZX1dFQl9VUkw9JHtTRVJWSUNFX1VSTF9BUFBGTE9XWVdFQn0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogJ2N1cmwgLS1mYWlsIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hcGkvaGVhbHRoIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEyCiAgICBkZXBlbmRzX29uOgogICAgICBnb3RydWU6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX3N0YXJ0ZWQKICBnb3RydWU6CiAgICBpbWFnZTogJ2FwcGZsb3d5aW5jL2dvdHJ1ZTowLjkuMTQ5JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gR09UUlVFX0FQSV9IT1NUPTAuMC4wLjAKICAgICAgLSBHT1RSVUVfQVBJX1BPUlQ9OTk5OQogICAgICAtIFBPUlQ9OTk5OQogICAgICAtICdHT1RSVUVfQURNSU5fRU1BSUw9JHtHT1RSVUVfQURNSU5fRU1BSUw6LWFkbWluQGV4YW1wbGUuY29tfScKICAgICAgLSAnR09UUlVFX0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICAgIC0gR09UUlVFX0RJU0FCTEVfU0lHTlVQPWZhbHNlCiAgICAgIC0gJ0dPVFJVRV9TSVRFX1VSTD1hcHBmbG93eS1mbHV0dGVyOi8vJwogICAgICAtICdHT1RSVUVfVVJJX0FMTE9XX0xJU1Q9KionCiAgICAgIC0gJ0dPVFJVRV9KV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtICdHT1RSVUVfSldUX0VYUD0ke0dPVFJVRV9KV1RfRVhQOi03MjAwfScKICAgICAgLSBHT1RSVUVfREJfRFJJVkVSPXBvc3RncmVzCiAgICAgIC0gJ0FQSV9FWFRFUk5BTF9VUkw9JHtTRVJWSUNFX1VSTF9BRE1JTn0vZ290cnVlJwogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREI6LWFwcGZsb3d5fT9zZWFyY2hfcGF0aD1hdXRoJwogICAgICAtICdHT1RSVUVfU01UUF9IT1NUPSR7R09UUlVFX1NNVFBfSE9TVH0nCiAgICAgIC0gJ0dPVFJVRV9TTVRQX1BPUlQ9JHtHT1RSVUVfU01UUF9QT1JUOi01ODd9JwogICAgICAtICdHT1RSVUVfU01UUF9VU0VSPSR7R09UUlVFX1NNVFBfVVNFUn0nCiAgICAgIC0gJ0dPVFJVRV9TTVRQX1BBU1M9JHtHT1RSVUVfU01UUF9QQVNTfScKICAgICAgLSBHT1RSVUVfTUFJTEVSX1VSTFBBVEhTX0NPTkZJUk1BVElPTj0vdmVyaWZ5CiAgICAgIC0gR09UUlVFX01BSUxFUl9VUkxQQVRIU19JTlZJVEU9L3ZlcmlmeQogICAgICAtIEdPVFJVRV9NQUlMRVJfVVJMUEFUSFNfUkVDT1ZFUlk9L3ZlcmlmeQogICAgICAtIEdPVFJVRV9NQUlMRVJfVVJMUEFUSFNfRU1BSUxfQ0hBTkdFPS92ZXJpZnkKICAgICAgLSAnR09UUlVFX1NNVFBfQURNSU5fRU1BSUw9JHtHT1RSVUVfU01UUF9BRE1JTl9FTUFJTH0nCiAgICAgIC0gR09UUlVFX1NNVFBfTUFYX0ZSRVFVRU5DWT0xbnMKICAgICAgLSBHT1RSVUVfUkFURV9MSU1JVF9FTUFJTF9TRU5UPTEwMAogICAgICAtIEdPVFJVRV9NQUlMRVJfQVVUT0NPTkZJUk09dHJ1ZQogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiAnY3VybCAtLWZhaWwgaHR0cDovLzEyNy4wLjAuMTo5OTk5L2hlYWx0aCB8fCBleGl0IDEnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMgogIGFkbWluX2Zyb250ZW5kOgogICAgaW1hZ2U6ICdhcHBmbG93eWluYy9hZG1pbl9mcm9udGVuZDowLjkuMTQ5JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0FQUEZMT1dZX0dPVFJVRV9CQVNFX1VSTD0ke1NFUlZJQ0VfVVJMX0FETUlOfS9nb3RydWUnCiAgICAgIC0gJ0FQUEZMT1dZX0JBU0VfVVJMPSR7U0VSVklDRV9VUkxfQURNSU59JwogICAgZGVwZW5kc19vbjoKICAgICAgZ290cnVlOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIGFwcGZsb3d5X2Nsb3VkOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkCiAgYWk6CiAgICBpbWFnZTogJ2FwcGZsb3d5aW5jL2FwcGZsb3d5X2FpOjAuOS4xNDknCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnT1BFTkFJX0FQSV9LRVk9JHtBSV9PUEVOQUlfQVBJX0tFWTotfScKICAgICAgLSBBSV9TRVJWRVJfUE9SVD01MDAxCiAgICAgIC0gREVGQVVMVF9BSV9NT0RFTD1ncHQtNC4xLW1pbmkKICAgICAgLSBERUZBVUxUX0FJX0NPTVBMRVRJT05fTU9ERUw9Z3B0LTQuMS1taW5pCiAgICAgIC0gJ0FJX0FQUEZMT1dZX0hPU1Q9JHtTRVJWSUNFX1VSTF9BUFBGTE9XWVdFQn0nCiAgICAgIC0gJ0FQUEZMT1dZX0dPVFJVRV9KV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtICdBWlVSRV9PUEVOQUlfQVBJX0tFWT0ke0FaVVJFX09QRU5BSV9BUElfS0VZfScKICAgICAgLSAnQVpVUkVfT1BFTkFJX0VORFBPSU5UPSR7QVpVUkVfT1BFTkFJX0VORFBPSU5UfScKICAgICAgLSAnQVpVUkVfT1BFTkFJX0FQSV9WRVJTSU9OPSR7QVpVUkVfT1BFTkFJX0FQSV9WRVJTSU9OfScKICAgICAgLSAnQVBQRkxPV1lfUzNfQUNDRVNTX0tFWT0ke1NFUlZJQ0VfVVNFUl9NSU5JT30nCiAgICAgIC0gJ0FQUEZMT1dZX1MzX1NFQ1JFVF9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX01JTklPfScKICAgICAgLSAnQVBQRkxPV1lfUzNfQlVDS0VUPSR7QVBQRkxPV1lfUzNfQlVDS0VUOi1hcHBmbG93eX0nCiAgICAgIC0gJ0FQUEZMT1dZX1MzX1JFR0lPTj0ke0FQUEZMT1dZX1MzX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgLSAnQUlfREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1hcHBmbG93eX0nCiAgICAgIC0gJ0FJX1JFRElTX1VSTD1yZWRpczovL3JlZGlzOjYzNzknCiAgICAgIC0gQUlfVVNFX01JTklPPXRydWUKICAgICAgLSAnQUlfTUlOSU9fVVJMPWh0dHA6Ly9taW5pbzo5MDAwJwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICBhcHBmbG93eV93b3JrZXI6CiAgICBpbWFnZTogJ2FwcGZsb3d5aW5jL2FwcGZsb3d5X3dvcmtlcjowLjkuMTQ5JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUlVTVF9MT0c9aW5mbwogICAgICAtIEFQUEZMT1dZX0VOVklST05NRU5UPXByb2R1Y3Rpb24KICAgICAgLSBBUFBGTE9XWV9XT1JLRVJfRU5WSVJPTk1FTlQ9cHJvZHVjdGlvbgogICAgICAtICdBUFBGTE9XWV9XT1JLRVJfUkVESVNfVVJMPXJlZGlzOi8vcmVkaXM6NjM3OScKICAgICAgLSAnQVBQRkxPV1lfV09SS0VSX0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHBvc3RncmVzOjU0MzIvJHtQT1NUR1JFU19EQjotYXBwZmxvd3l9JwogICAgICAtICdBUFBGTE9XWV9XT1JLRVJfREFUQUJBU0VfTkFNRT0ke1BPU1RHUkVTX0RCOi1hcHBmbG93eX0nCiAgICAgIC0gQVBQRkxPV1lfV09SS0VSX0lNUE9SVF9USUNLX0lOVEVSVkFMPTMwCiAgICAgIC0gQVBQRkxPV1lfUzNfVVNFX01JTklPPXRydWUKICAgICAgLSAnQVBQRkxPV1lfUzNfTUlOSU9fVVJMPWh0dHA6Ly9taW5pbzo5MDAwJwogICAgICAtICdBUFBGTE9XWV9TM19BQ0NFU1NfS0VZPSR7U0VSVklDRV9VU0VSX01JTklPfScKICAgICAgLSAnQVBQRkxPV1lfUzNfU0VDUkVUX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfTUlOSU99JwogICAgICAtICdBUFBGTE9XWV9TM19CVUNLRVQ9JHtBUFBGTE9XWV9TM19CVUNLRVQ6LWFwcGZsb3d5fScKICAgICAgLSAnQVBQRkxPV1lfUzNfUkVHSU9OPSR7QVBQRkxPV1lfUzNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9IT1NUPSR7QVBQRkxPV1lfTUFJTEVSX1NNVFBfSE9TVDotc210cC5nbWFpbC5jb219JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9QT1JUPSR7QVBQRkxPV1lfTUFJTEVSX1NNVFBfUE9SVDotNTg3fScKICAgICAgLSAnQVBQRkxPV1lfTUFJTEVSX1NNVFBfVVNFUk5BTUU9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9VU0VSTkFNRTotbm90aWZ5QGFwcGZsb3d5LmlvfScKICAgICAgLSAnQVBQRkxPV1lfTUFJTEVSX1NNVFBfRU1BSUw9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9FTUFJTDotbm90aWZ5QGFwcGZsb3d5LmlvfScKICAgICAgLSAnQVBQRkxPV1lfTUFJTEVSX1NNVFBfUEFTU1dPUkQ9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9QQVNTV09SRDotZW1haWxfc2VuZGVyX3Bhc3N3b3JkfScKICAgICAgLSAnQVBQRkxPV1lfTUFJTEVSX1NNVFBfVExTX0tJTkQ9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9UTFNfS0lORDotbm9uZX0nCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2Vfc3RhcnRlZAogIG1pbmlvOgogICAgaW1hZ2U6ICdwZ3N0eS9zaWxvOlJFTEVBU0UuMjAyNi0xMC0xNVQwMC0wMC0wMFonCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTUlOSU9fUk9PVF9VU0VSPSR7U0VSVklDRV9VU0VSX01JTklPfScKICAgICAgLSAnTUlOSU9fUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTUlOSU99JwogICAgY29tbWFuZDogJ3NlcnZlciAvZGF0YSAtLWNvbnNvbGUtYWRkcmVzcyAiOjkwMDEiJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG1jCiAgICAgICAgLSByZWFkeQogICAgICAgIC0gbG9jYWwKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMwogICAgdm9sdW1lczoKICAgICAgLSAnbWluaW9fZGF0YTovZGF0YScKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncGd2ZWN0b3IvcGd2ZWN0b3I6cGcxNicKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotYXBwZmxvd3l9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtIFBPU1RHUkVTX0hPU1Q9cG9zdGdyZXMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzX2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHBnX2lzcmVhZHkKICAgICAgICAtICctVScKICAgICAgICAtICcke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgICAgLSAnLWQnCiAgICAgICAgLSAnJHtQT1NUR1JFU19EQjotYXBwZmxvd3l9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTIKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6OC4yLjItYWxwaW5lMy4yMicKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3JlZGlzX2RhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3JlZGlzLWNsaSAtaCBsb2NhbGhvc3QgLXAgNjM3OSBwaW5nJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMwo=", + "compose": "c2VydmljZXM6CiAgbmdpbng6CiAgICBpbWFnZTogJ25naW54OjEuMjkuMicKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfVVJMX0FETUlOCiAgICB2b2x1bWVzOgogICAgICAtCiAgICAgICAgdHlwZTogYmluZAogICAgICAgIHNvdXJjZTogLi9uZ2lueC9uZ2lueC5jb25mCiAgICAgICAgdGFyZ2V0OiAvZXRjL25naW54L25naW54LmNvbmYKICAgICAgICByZWFkX29ubHk6IHRydWUKICAgICAgICBjb250ZW50OiAiIyBQbGVhc2UgZG8gbm90IGRpcmVjdGx5IGVkaXQgdGhpcyBmaWxlLlxuXG5lcnJvcl9sb2cgIC92YXIvbG9nL25naW54L2Vycm9yLmxvZyBub3RpY2U7XG5waWQgICAgICAgIC92YXIvcnVuL25naW54LnBpZDtcblxuXG5ldmVudHMge1xuICAgIHdvcmtlcl9jb25uZWN0aW9ucyAgMTAyNDtcbn1cblxuXG5odHRwIHtcbiAgICByZXNvbHZlciAxMjcuMC4wLjExIHZhbGlkPTEwcztcbiAgICBtYXAgJGh0dHBfdXBncmFkZSAkY29ubmVjdGlvbl91cGdyYWRlIHtcbiAgICAgICAgZGVmYXVsdCB1cGdyYWRlO1xuICAgICAgICAnJyBjbG9zZTtcbiAgICB9XG5cbiAgICBzZXJ2ZXIge1xuICAgICAgICBsaXN0ZW4gODA7XG4gICAgICAgIGNsaWVudF9tYXhfYm9keV9zaXplIDEwTTtcbiAgICAgICAgdW5kZXJzY29yZXNfaW5faGVhZGVycyBvbjtcblxuICAgICAgICAjIEJhY2tlbmQgc2VydmljZXNcbiAgICAgICAgc2V0ICRhcHBmbG93eV9jbG91ZF9iYWNrZW5kIFwiaHR0cDovL2FwcGZsb3d5X2Nsb3VkOjgwMDBcIjtcbiAgICAgICAgc2V0ICRnb3RydWVfYmFja2VuZCBcImh0dHA6Ly9nb3RydWU6OTk5OVwiO1xuICAgICAgICBzZXQgJGFkbWluX2Zyb250ZW5kX2JhY2tlbmQgXCJodHRwOi8vYWRtaW5fZnJvbnRlbmQ6MzAwMFwiO1xuICAgICAgICAjIEdvVHJ1ZSBBdXRoZW50aWNhdGlvbiBTZXJ2aWNlXG4gICAgICAgIGxvY2F0aW9uIC9nb3RydWUvIHtcbiAgICAgICAgICAgIHByb3h5X3Bhc3MgJGdvdHJ1ZV9iYWNrZW5kO1xuXG4gICAgICAgICAgICByZXdyaXRlIF4vZ290cnVlKC8uKikkICQxIGJyZWFrO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAjIEFsbG93IGhlYWRlcnMgbGlrZSByZWRpcmVjdF90byB0byBiZSBoYW5kZWQgb3ZlciB0byB0aGUgZ290cnVlXG4gICAgICAgICAgICAjIGZvciBjb3JyZWN0IHJlZGlyZWN0aW5nXG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgJGh0dHBfaG9zdDtcbiAgICAgICAgICAgIHByb3h5X3Bhc3NfcmVxdWVzdF9oZWFkZXJzIG9uO1xuICAgICAgICB9XG5cbiAgICAgICAgIyBXZWJTb2NrZXQgZW5kcG9pbnQgLSBoYW5kbGUgYm90aCAvd3MgYW5kIC93cy92MlxuICAgICAgICBsb2NhdGlvbiAvd3Mge1xuICAgICAgICAgICAgcHJveHlfcGFzcyAkYXBwZmxvd3lfY2xvdWRfYmFja2VuZDtcblxuICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgVXBncmFkZSAkaHR0cF91cGdyYWRlO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIFwiVXBncmFkZVwiO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBIb3N0ICRob3N0O1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLVJlYWwtSVAgJHJlbW90ZV9hZGRyO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLUZvcndhcmRlZC1Gb3IgJHByb3h5X2FkZF94X2ZvcndhcmRlZF9mb3I7XG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtRm9yd2FyZGVkLVByb3RvICRzY2hlbWU7XG4gICAgICAgICAgICBwcm94eV9yZWFkX3RpbWVvdXQgODY0MDBzO1xuICAgICAgICB9XG5cbiAgICAgICAgIyBBUEkgZW5kcG9pbnRzXG4gICAgICAgIGxvY2F0aW9uIC9hcGkge1xuICAgICAgICAgICAgcHJveHlfcGFzcyAkYXBwZmxvd3lfY2xvdWRfYmFja2VuZDtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1SZXF1ZXN0LUlkICRyZXF1ZXN0X2lkO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBIb3N0ICRodHRwX2hvc3Q7XG5cbiAgICAgICAgICAgICMgU3BlY2lhbCBoYW5kbGluZyBmb3IgcHVibGlzaCBlbmRwb2ludFxuICAgICAgICAgICAgbG9jYXRpb24gfiogXi9hcGkvd29ya3NwYWNlLyhbYS16QS1aMC05Xy1dKykvcHVibGlzaCQge1xuICAgICAgICAgICAgICAgIHByb3h5X3Bhc3MgJGFwcGZsb3d5X2Nsb3VkX2JhY2tlbmQ7XG4gICAgICAgICAgICAgICAgcHJveHlfcmVxdWVzdF9idWZmZXJpbmcgb2ZmO1xuICAgICAgICAgICAgICAgIGNsaWVudF9tYXhfYm9keV9zaXplIDI1Nk07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICMgQ2hhdCBlbmRwb2ludCAoc3RyZWFtaW5nKVxuICAgICAgICAgICAgbG9jYXRpb24gL2FwaS9jaGF0IHtcbiAgICAgICAgICAgICAgICBwcm94eV9wYXNzICRhcHBmbG93eV9jbG91ZF9iYWNrZW5kO1xuXG4gICAgICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTtcbiAgICAgICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIENvbm5lY3Rpb24gXCJcIjtcbiAgICAgICAgICAgICAgICBjaHVua2VkX3RyYW5zZmVyX2VuY29kaW5nIG9uO1xuICAgICAgICAgICAgICAgIHByb3h5X2J1ZmZlcmluZyBvZmY7XG4gICAgICAgICAgICAgICAgcHJveHlfY2FjaGUgb2ZmO1xuXG4gICAgICAgICAgICAgICAgcHJveHlfcmVhZF90aW1lb3V0IDYwMHM7XG4gICAgICAgICAgICAgICAgcHJveHlfY29ubmVjdF90aW1lb3V0IDYwMHM7XG4gICAgICAgICAgICAgICAgcHJveHlfc2VuZF90aW1lb3V0IDYwMHM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICMgSW1wb3J0IGVuZHBvaW50XG4gICAgICAgICAgICBsb2NhdGlvbiAvYXBpL2ltcG9ydCB7XG4gICAgICAgICAgICAgICAgcHJveHlfcGFzcyAkYXBwZmxvd3lfY2xvdWRfYmFja2VuZDtcblxuICAgICAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1SZXF1ZXN0LUlkICRyZXF1ZXN0X2lkO1xuICAgICAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCAkaHR0cF9ob3N0O1xuXG4gICAgICAgICAgICAgICAgcHJveHlfcmVhZF90aW1lb3V0IDYwMHM7XG4gICAgICAgICAgICAgICAgcHJveHlfY29ubmVjdF90aW1lb3V0IDYwMHM7XG4gICAgICAgICAgICAgICAgcHJveHlfc2VuZF90aW1lb3V0IDYwMHM7XG5cbiAgICAgICAgICAgICAgICBwcm94eV9yZXF1ZXN0X2J1ZmZlcmluZyBvZmY7XG4gICAgICAgICAgICAgICAgcHJveHlfYnVmZmVyaW5nIG9mZjtcbiAgICAgICAgICAgICAgICBwcm94eV9jYWNoZSBvZmY7XG4gICAgICAgICAgICAgICAgY2xpZW50X21heF9ib2R5X3NpemUgMkc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAjIEFkbWluIEZyb250ZW5kXG4gICAgICAgICMgT3B0aW9uYWwgTW9kdWxlLCBjb21tZW50IHRoaXMgc2VjdGlvbiBpZiB5b3UgZGlkIG5vdCBkZXBsb3kgYWRtaW5fZnJvbnRlbmQgaW4gZG9ja2VyLWNvbXBvc2UueW1sXG4gICAgICAgIGxvY2F0aW9uIC9jb25zb2xlIHtcbiAgICAgICAgICAgIHByb3h5X3Bhc3MgJGFkbWluX2Zyb250ZW5kX2JhY2tlbmQ7XG5cbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1TY2hlbWUgJHNjaGVtZTtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCAkaG9zdDtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1SZWFsLUlQICRyZW1vdGVfYWRkcjtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtRm9yICRwcm94eV9hZGRfeF9mb3J3YXJkZWRfZm9yO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLUZvcndhcmRlZC1Qcm90byAkc2NoZW1lO1xuXG4gICAgICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIFwiXCI7XG5cbiAgICAgICAgICAgIHByb3h5X2J1ZmZlcmluZyBvZmY7XG4gICAgICAgICAgICBwcm94eV9jYWNoZSBvZmY7XG5cbiAgICAgICAgICAgIHByb3h5X3JlYWRfdGltZW91dCA2MHM7XG4gICAgICAgICAgICBwcm94eV9jb25uZWN0X3RpbWVvdXQgNjBzO1xuICAgICAgICAgICAgcHJveHlfc2VuZF90aW1lb3V0IDYwcztcbiAgICAgICAgfVxuXG4gICAgICAgICMgUmVkaXJlY3Qgcm9vdCBwYXRoIHRvIC9jb25zb2xlXG4gICAgICAgIGxvY2F0aW9uID0gLyB7XG4gICAgICAgICAgICByZXR1cm4gMzAxIC9jb25zb2xlO1xuICAgICAgICB9XG5cbiAgICAgICAgIyBIZWFsdGggY2hlY2sgZW5kcG9pbnRcbiAgICAgICAgbG9jYXRpb24gL2hlYWx0aCB7XG4gICAgICAgICAgICBhY2Nlc3NfbG9nIG9mZjtcbiAgICAgICAgICAgIHJldHVybiAyMDAgXCJoZWFsdGh5XFxuXCI7XG4gICAgICAgICAgICBhZGRfaGVhZGVyIENvbnRlbnQtVHlwZSB0ZXh0L3BsYWluO1xuICAgICAgICB9XG4gICAgfVxufVxuIgogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHBmbG93eV9jbG91ZAogICAgICAtIGdvdHJ1ZQogICAgICAtIGFkbWluX2Zyb250ZW5kCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gY3VybAogICAgICAgIC0gJy1mJwogICAgICAgIC0gJ2h0dHA6Ly9sb2NhbGhvc3QvaGVhbHRoJwogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDEwcwogICAgICByZXRyaWVzOiAzCiAgICAgIHN0YXJ0X3BlcmlvZDogNDBzCiAgYXBwZmxvd3lfd2ViOgogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gU0VSVklDRV9VUkxfQVBQRkxPV1lXRUIKICAgICAgLSAnQVBQRkxPV1lfQkFTRV9VUkw9JHtTRVJWSUNFX1VSTF9BRE1JTn0nCiAgICAgIC0gJ0FQUEZMT1dZX0dPVFJVRV9CQVNFX1VSTD0ke1NFUlZJQ0VfVVJMX0FETUlOfS9nb3RydWUnCiAgICAgIC0gJ0FQUEZMT1dZX1dTX0JBU0VfVVJMPSR7U0VSVklDRV9VUkxfQURNSU59L3dzL3YyJwogICAgaW1hZ2U6ICdhcHBmbG93eWluYy9hcHBmbG93eV93ZWI6MC45LjEzMicKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwZmxvd3lfY2xvdWQKICBhcHBmbG93eV9jbG91ZDoKICAgIGltYWdlOiAnYXBwZmxvd3lpbmMvYXBwZmxvd3lfY2xvdWQ6MC45LjE0OScKICAgIGVudmlyb25tZW50OgogICAgICAtICdSVVNUX0xPRz0ke1JVU1RfTE9HOi1pbmZvfScKICAgICAgLSAnQVBQRkxPV1lfQkFTRV9VUkw9JHtTRVJWSUNFX1VSTF9BRE1JTn0nCiAgICAgIC0gQVBQRkxPV1lfRU5WSVJPTk1FTlQ9cHJvZHVjdGlvbgogICAgICAtICdBUFBGTE9XWV9EQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREI6LWFwcGZsb3d5fScKICAgICAgLSAnQVBQRkxPV1lfUkVESVNfVVJJPXJlZGlzOi8vcmVkaXM6NjM3OScKICAgICAgLSAnQVBQRkxPV1lfR09UUlVFX0pXVF9TRUNSRVQ9JHtTRVJWSUNFX1BBU1NXT1JEX0pXVH0nCiAgICAgIC0gJ0FQUEZMT1dZX0dPVFJVRV9CQVNFX1VSTD1odHRwOi8vZ290cnVlOjk5OTknCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0NSRUFURV9CVUNLRVQ9JHtBUFBGTE9XWV9TM19DUkVBVEVfQlVDS0VUOi10cnVlfScKICAgICAgLSBBUFBGTE9XWV9TM19VU0VfTUlOSU89dHJ1ZQogICAgICAtICdBUFBGTE9XWV9TM19NSU5JT19VUkw9aHR0cDovL21pbmlvOjkwMDAnCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0FDQ0VTU19LRVk9JHtTRVJWSUNFX1VTRVJfTUlOSU99JwogICAgICAtICdBUFBGTE9XWV9TM19TRUNSRVRfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9NSU5JT30nCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0JVQ0tFVD0ke0FQUEZMT1dZX1MzX0JVQ0tFVDotYXBwZmxvd3l9JwogICAgICAtICdBUFBGTE9XWV9TM19SRUdJT049JHtBUFBGTE9XWV9TM19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIC0gJ0FQUEZMT1dZX01BSUxFUl9TTVRQX0hPU1Q9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9IT1NUOi1zbXRwLmdtYWlsLmNvbX0nCiAgICAgIC0gJ0FQUEZMT1dZX01BSUxFUl9TTVRQX1BPUlQ9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9QT1JUOi01ODd9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9VU0VSTkFNRT0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1VTRVJOQU1FOi1ub3RpZnlAYXBwZmxvd3kuaW99JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9FTUFJTD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX0VNQUlMOi1ub3RpZnlAYXBwZmxvd3kuaW99JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9QQVNTV09SRD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1BBU1NXT1JEOi1lbWFpbF9zZW5kZXJfcGFzc3dvcmR9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9UTFNfS0lORD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1RMU19LSU5EOi1ub25lfScKICAgICAgLSBBUFBGTE9XWV9BQ0NFU1NfQ09OVFJPTD10cnVlCiAgICAgIC0gQVBQRkxPV1lfREFUQUJBU0VfTUFYX0NPTk5FQ1RJT05TPTQwCiAgICAgIC0gQUlfU0VSVkVSX0hPU1Q9YWkKICAgICAgLSBBSV9TRVJWRVJfUE9SVD01MDAxCiAgICAgIC0gJ0FJX09QRU5BSV9BUElfS0VZPSR7QUlfT1BFTkFJX0FQSV9LRVk6LX0nCiAgICAgIC0gJ0FQUEZMT1dZX1dFQl9VUkw9JHtTRVJWSUNFX1VSTF9BUFBGTE9XWVdFQn0nCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDogJ2N1cmwgLS1mYWlsIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hcGkvaGVhbHRoIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEyCiAgICBkZXBlbmRzX29uOgogICAgICBnb3RydWU6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgICAgcmVkaXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX3N0YXJ0ZWQKICBnb3RydWU6CiAgICBpbWFnZTogJ2FwcGZsb3d5aW5jL2dvdHJ1ZTowLjkuMTQ5JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gR09UUlVFX0FQSV9IT1NUPTAuMC4wLjAKICAgICAgLSBHT1RSVUVfQVBJX1BPUlQ9OTk5OQogICAgICAtIFBPUlQ9OTk5OQogICAgICAtICdHT1RSVUVfQURNSU5fRU1BSUw9JHtHT1RSVUVfQURNSU5fRU1BSUw6LWFkbWluQGV4YW1wbGUuY29tfScKICAgICAgLSAnR09UUlVFX0FETUlOX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9BRE1JTn0nCiAgICAgIC0gR09UUlVFX0RJU0FCTEVfU0lHTlVQPWZhbHNlCiAgICAgIC0gJ0dPVFJVRV9TSVRFX1VSTD1hcHBmbG93eS1mbHV0dGVyOi8vJwogICAgICAtICdHT1RSVUVfVVJJX0FMTE9XX0xJU1Q9KionCiAgICAgIC0gR09UUlVFX0NPUlNfQUxMT1dFRF9IRUFERVJTPXJlZGlyZWN0X3RvCiAgICAgIC0gJ0dPVFJVRV9KV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtICdHT1RSVUVfSldUX0VYUD0ke0dPVFJVRV9KV1RfRVhQOi03MjAwfScKICAgICAgLSBHT1RSVUVfREJfRFJJVkVSPXBvc3RncmVzCiAgICAgIC0gJ0FQSV9FWFRFUk5BTF9VUkw9JHtTRVJWSUNFX1VSTF9BRE1JTn0vZ290cnVlJwogICAgICAtICdEQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREI6LWFwcGZsb3d5fT9zZWFyY2hfcGF0aD1hdXRoJwogICAgICAtICdHT1RSVUVfU01UUF9IT1NUPSR7R09UUlVFX1NNVFBfSE9TVH0nCiAgICAgIC0gJ0dPVFJVRV9TTVRQX1BPUlQ9JHtHT1RSVUVfU01UUF9QT1JUOi01ODd9JwogICAgICAtICdHT1RSVUVfU01UUF9VU0VSPSR7R09UUlVFX1NNVFBfVVNFUn0nCiAgICAgIC0gJ0dPVFJVRV9TTVRQX1BBU1M9JHtHT1RSVUVfU01UUF9QQVNTfScKICAgICAgLSBHT1RSVUVfTUFJTEVSX1VSTFBBVEhTX0NPTkZJUk1BVElPTj0vdmVyaWZ5CiAgICAgIC0gR09UUlVFX01BSUxFUl9VUkxQQVRIU19JTlZJVEU9L3ZlcmlmeQogICAgICAtIEdPVFJVRV9NQUlMRVJfVVJMUEFUSFNfUkVDT1ZFUlk9L3ZlcmlmeQogICAgICAtIEdPVFJVRV9NQUlMRVJfVVJMUEFUSFNfRU1BSUxfQ0hBTkdFPS92ZXJpZnkKICAgICAgLSAnR09UUlVFX1NNVFBfQURNSU5fRU1BSUw9JHtHT1RSVUVfU01UUF9BRE1JTl9FTUFJTH0nCiAgICAgIC0gR09UUlVFX1NNVFBfTUFYX0ZSRVFVRU5DWT0xbnMKICAgICAgLSBHT1RSVUVfUkFURV9MSU1JVF9FTUFJTF9TRU5UPTEwMAogICAgICAtIEdPVFJVRV9NQUlMRVJfQVVUT0NPTkZJUk09dHJ1ZQogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OiAnY3VybCAtLWZhaWwgaHR0cDovLzEyNy4wLjAuMTo5OTk5L2hlYWx0aCB8fCBleGl0IDEnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMgogIGFkbWluX2Zyb250ZW5kOgogICAgaW1hZ2U6ICdhcHBmbG93eWluYy9hZG1pbl9mcm9udGVuZDowLjkuMTQ5JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ0FQUEZMT1dZX0dPVFJVRV9CQVNFX1VSTD0ke1NFUlZJQ0VfVVJMX0FETUlOfS9nb3RydWUnCiAgICAgIC0gJ0FQUEZMT1dZX0JBU0VfVVJMPSR7U0VSVklDRV9VUkxfQURNSU59JwogICAgZGVwZW5kc19vbjoKICAgICAgZ290cnVlOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIGFwcGZsb3d5X2Nsb3VkOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkCiAgYWk6CiAgICBpbWFnZTogJ2FwcGZsb3d5aW5jL2FwcGZsb3d5X2FpOjAuOS4xNDknCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnT1BFTkFJX0FQSV9LRVk9JHtBSV9PUEVOQUlfQVBJX0tFWTotfScKICAgICAgLSBBSV9TRVJWRVJfUE9SVD01MDAxCiAgICAgIC0gREVGQVVMVF9BSV9NT0RFTD1ncHQtNC4xLW1pbmkKICAgICAgLSBERUZBVUxUX0FJX0NPTVBMRVRJT05fTU9ERUw9Z3B0LTQuMS1taW5pCiAgICAgIC0gJ0FJX0FQUEZMT1dZX0hPU1Q9JHtTRVJWSUNFX1VSTF9BUFBGTE9XWVdFQn0nCiAgICAgIC0gJ0FQUEZMT1dZX0dPVFJVRV9KV1RfU0VDUkVUPSR7U0VSVklDRV9QQVNTV09SRF9KV1R9JwogICAgICAtICdBWlVSRV9PUEVOQUlfQVBJX0tFWT0ke0FaVVJFX09QRU5BSV9BUElfS0VZfScKICAgICAgLSAnQVpVUkVfT1BFTkFJX0VORFBPSU5UPSR7QVpVUkVfT1BFTkFJX0VORFBPSU5UfScKICAgICAgLSAnQVpVUkVfT1BFTkFJX0FQSV9WRVJTSU9OPSR7QVpVUkVfT1BFTkFJX0FQSV9WRVJTSU9OfScKICAgICAgLSAnQVBQRkxPV1lfUzNfQUNDRVNTX0tFWT0ke1NFUlZJQ0VfVVNFUl9NSU5JT30nCiAgICAgIC0gJ0FQUEZMT1dZX1MzX1NFQ1JFVF9LRVk9JHtTRVJWSUNFX1BBU1NXT1JEX01JTklPfScKICAgICAgLSAnQVBQRkxPV1lfUzNfQlVDS0VUPSR7QVBQRkxPV1lfUzNfQlVDS0VUOi1hcHBmbG93eX0nCiAgICAgIC0gJ0FQUEZMT1dZX1MzX1JFR0lPTj0ke0FQUEZMT1dZX1MzX1JFR0lPTjotdXMtZWFzdC0xfScKICAgICAgLSAnQUlfREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1hcHBmbG93eX0nCiAgICAgIC0gJ0FJX1JFRElTX1VSTD1yZWRpczovL3JlZGlzOjYzNzknCiAgICAgIC0gQUlfVVNFX01JTklPPXRydWUKICAgICAgLSAnQUlfTUlOSU9fVVJMPWh0dHA6Ly9taW5pbzo5MDAwJwogICAgZGVwZW5kc19vbjoKICAgICAgcG9zdGdyZXM6CiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHkKICBhcHBmbG93eV93b3JrZXI6CiAgICBpbWFnZTogJ2FwcGZsb3d5aW5jL2FwcGZsb3d5X3dvcmtlcjowLjkuMTQ5JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gUlVTVF9MT0c9aW5mbwogICAgICAtIEFQUEZMT1dZX0VOVklST05NRU5UPXByb2R1Y3Rpb24KICAgICAgLSBBUFBGTE9XWV9XT1JLRVJfRU5WSVJPTk1FTlQ9cHJvZHVjdGlvbgogICAgICAtICdBUFBGTE9XWV9XT1JLRVJfUkVESVNfVVJMPXJlZGlzOi8vcmVkaXM6NjM3OScKICAgICAgLSAnQVBQRkxPV1lfV09SS0VSX0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHBvc3RncmVzOjU0MzIvJHtQT1NUR1JFU19EQjotYXBwZmxvd3l9JwogICAgICAtICdBUFBGTE9XWV9XT1JLRVJfREFUQUJBU0VfTkFNRT0ke1BPU1RHUkVTX0RCOi1hcHBmbG93eX0nCiAgICAgIC0gQVBQRkxPV1lfV09SS0VSX0lNUE9SVF9USUNLX0lOVEVSVkFMPTMwCiAgICAgIC0gQVBQRkxPV1lfUzNfVVNFX01JTklPPXRydWUKICAgICAgLSAnQVBQRkxPV1lfUzNfTUlOSU9fVVJMPWh0dHA6Ly9taW5pbzo5MDAwJwogICAgICAtICdBUFBGTE9XWV9TM19BQ0NFU1NfS0VZPSR7U0VSVklDRV9VU0VSX01JTklPfScKICAgICAgLSAnQVBQRkxPV1lfUzNfU0VDUkVUX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfTUlOSU99JwogICAgICAtICdBUFBGTE9XWV9TM19CVUNLRVQ9JHtBUFBGTE9XWV9TM19CVUNLRVQ6LWFwcGZsb3d5fScKICAgICAgLSAnQVBQRkxPV1lfUzNfUkVHSU9OPSR7QVBQRkxPV1lfUzNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9IT1NUPSR7QVBQRkxPV1lfTUFJTEVSX1NNVFBfSE9TVDotc210cC5nbWFpbC5jb219JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9QT1JUPSR7QVBQRkxPV1lfTUFJTEVSX1NNVFBfUE9SVDotNTg3fScKICAgICAgLSAnQVBQRkxPV1lfTUFJTEVSX1NNVFBfVVNFUk5BTUU9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9VU0VSTkFNRTotbm90aWZ5QGFwcGZsb3d5LmlvfScKICAgICAgLSAnQVBQRkxPV1lfTUFJTEVSX1NNVFBfRU1BSUw9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9FTUFJTDotbm90aWZ5QGFwcGZsb3d5LmlvfScKICAgICAgLSAnQVBQRkxPV1lfTUFJTEVSX1NNVFBfUEFTU1dPUkQ9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9QQVNTV09SRDotZW1haWxfc2VuZGVyX3Bhc3N3b3JkfScKICAgICAgLSAnQVBQRkxPV1lfTUFJTEVSX1NNVFBfVExTX0tJTkQ9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9UTFNfS0lORDotbm9uZX0nCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICByZWRpczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2Vfc3RhcnRlZAogIG1pbmlvOgogICAgaW1hZ2U6ICdwZ3N0eS9zaWxvOlJFTEVBU0UuMjAyNi0xMC0xNVQwMC0wMC0wMFonCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnTUlOSU9fUk9PVF9VU0VSPSR7U0VSVklDRV9VU0VSX01JTklPfScKICAgICAgLSAnTUlOSU9fUk9PVF9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfTUlOSU99JwogICAgY29tbWFuZDogJ3NlcnZlciAvZGF0YSAtLWNvbnNvbGUtYWRkcmVzcyAiOjkwMDEiJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIG1jCiAgICAgICAgLSByZWFkeQogICAgICAgIC0gbG9jYWwKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAyMHMKICAgICAgcmV0cmllczogMwogICAgdm9sdW1lczoKICAgICAgLSAnbWluaW9fZGF0YTovZGF0YScKICBwb3N0Z3JlczoKICAgIGltYWdlOiAncGd2ZWN0b3IvcGd2ZWN0b3I6cGcxNicKICAgIGVudmlyb25tZW50OgogICAgICAtICdQT1NUR1JFU19VU0VSPSR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgLSAnUE9TVEdSRVNfREI9JHtQT1NUR1JFU19EQjotYXBwZmxvd3l9JwogICAgICAtICdQT1NUR1JFU19QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9JwogICAgICAtIFBPU1RHUkVTX0hPU1Q9cG9zdGdyZXMKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3Bvc3RncmVzX2RhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhJwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIHBnX2lzcmVhZHkKICAgICAgICAtICctVScKICAgICAgICAtICcke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU30nCiAgICAgICAgLSAnLWQnCiAgICAgICAgLSAnJHtQT1NUR1JFU19EQjotYXBwZmxvd3l9JwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMTIKICByZWRpczoKICAgIGltYWdlOiAncmVkaXM6OC4yLjItYWxwaW5lMy4yMicKICAgIHZvbHVtZXM6CiAgICAgIC0gJ3JlZGlzX2RhdGE6L2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRC1TSEVMTAogICAgICAgIC0gJ3JlZGlzLWNsaSAtaCBsb2NhbGhvc3QgLXAgNjM3OSBwaW5nJwogICAgICBpbnRlcnZhbDogNXMKICAgICAgdGltZW91dDogNXMKICAgICAgcmV0cmllczogMwo=", "tags": [ "appflowy", "notion", diff --git a/templates/service-templates.json b/templates/service-templates.json index f3c2034879..a387c4592a 100644 --- a/templates/service-templates.json +++ b/templates/service-templates.json @@ -112,7 +112,7 @@ "appflowy": { "documentation": "https://docs.appflowy.io/docs/documentation/appflowy-cloud?utm_source=coolify.io", "slogan": "AppFlowy is the AI collaborative workspace where you achieve more without losing control of your data.", - "compose": "c2VydmljZXM6CiAgbmdpbng6CiAgICBpbWFnZTogJ25naW54OjEuMjkuMicKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9BRE1JTgogICAgdm9sdW1lczoKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vbmdpbngvbmdpbnguY29uZgogICAgICAgIHRhcmdldDogL2V0Yy9uZ2lueC9uZ2lueC5jb25mCiAgICAgICAgcmVhZF9vbmx5OiB0cnVlCiAgICAgICAgY29udGVudDogIiMgUGxlYXNlIGRvIG5vdCBkaXJlY3RseSBlZGl0IHRoaXMgZmlsZS5cblxuZXJyb3JfbG9nICAvdmFyL2xvZy9uZ2lueC9lcnJvci5sb2cgbm90aWNlO1xucGlkICAgICAgICAvdmFyL3J1bi9uZ2lueC5waWQ7XG5cblxuZXZlbnRzIHtcbiAgICB3b3JrZXJfY29ubmVjdGlvbnMgIDEwMjQ7XG59XG5cblxuaHR0cCB7XG4gICAgcmVzb2x2ZXIgMTI3LjAuMC4xMSB2YWxpZD0xMHM7XG4gICAgbWFwICRodHRwX3VwZ3JhZGUgJGNvbm5lY3Rpb25fdXBncmFkZSB7XG4gICAgICAgIGRlZmF1bHQgdXBncmFkZTtcbiAgICAgICAgJycgY2xvc2U7XG4gICAgfVxuXG4gICAgc2VydmVyIHtcbiAgICAgICAgbGlzdGVuIDgwO1xuICAgICAgICBjbGllbnRfbWF4X2JvZHlfc2l6ZSAxME07XG4gICAgICAgIHVuZGVyc2NvcmVzX2luX2hlYWRlcnMgb247XG5cbiAgICAgICAgIyBCYWNrZW5kIHNlcnZpY2VzXG4gICAgICAgIHNldCAkYXBwZmxvd3lfY2xvdWRfYmFja2VuZCBcImh0dHA6Ly9hcHBmbG93eV9jbG91ZDo4MDAwXCI7XG4gICAgICAgIHNldCAkZ290cnVlX2JhY2tlbmQgXCJodHRwOi8vZ290cnVlOjk5OTlcIjtcbiAgICAgICAgc2V0ICRhZG1pbl9mcm9udGVuZF9iYWNrZW5kIFwiaHR0cDovL2FkbWluX2Zyb250ZW5kOjMwMDBcIjtcbiAgICAgICAgIyBHb1RydWUgQXV0aGVudGljYXRpb24gU2VydmljZVxuICAgICAgICBsb2NhdGlvbiAvZ290cnVlLyB7XG4gICAgICAgICAgICBwcm94eV9wYXNzICRnb3RydWVfYmFja2VuZDtcblxuICAgICAgICAgICAgcmV3cml0ZSBeL2dvdHJ1ZSgvLiopJCAkMSBicmVhaztcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgIyBBbGxvdyBoZWFkZXJzIGxpa2UgcmVkaXJlY3RfdG8gdG8gYmUgaGFuZGVkIG92ZXIgdG8gdGhlIGdvdHJ1ZVxuICAgICAgICAgICAgIyBmb3IgY29ycmVjdCByZWRpcmVjdGluZ1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBIb3N0ICRodHRwX2hvc3Q7XG4gICAgICAgICAgICBwcm94eV9wYXNzX3JlcXVlc3RfaGVhZGVycyBvbjtcbiAgICAgICAgfVxuXG4gICAgICAgICMgV2ViU29ja2V0IGVuZHBvaW50IC0gaGFuZGxlIGJvdGggL3dzIGFuZCAvd3MvdjJcbiAgICAgICAgbG9jYXRpb24gL3dzIHtcbiAgICAgICAgICAgIHByb3h5X3Bhc3MgJGFwcGZsb3d5X2Nsb3VkX2JhY2tlbmQ7XG5cbiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7XG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFVwZ3JhZGUgJGh0dHBfdXBncmFkZTtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgQ29ubmVjdGlvbiBcIlVwZ3JhZGVcIjtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCAkaG9zdDtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1SZWFsLUlQICRyZW1vdGVfYWRkcjtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtRm9yICRwcm94eV9hZGRfeF9mb3J3YXJkZWRfZm9yO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLUZvcndhcmRlZC1Qcm90byAkc2NoZW1lO1xuICAgICAgICAgICAgcHJveHlfcmVhZF90aW1lb3V0IDg2NDAwcztcbiAgICAgICAgfVxuXG4gICAgICAgICMgQVBJIGVuZHBvaW50c1xuICAgICAgICBsb2NhdGlvbiAvYXBpIHtcbiAgICAgICAgICAgIHByb3h5X3Bhc3MgJGFwcGZsb3d5X2Nsb3VkX2JhY2tlbmQ7XG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtUmVxdWVzdC1JZCAkcmVxdWVzdF9pZDtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCAkaHR0cF9ob3N0O1xuXG4gICAgICAgICAgICAjIFNwZWNpYWwgaGFuZGxpbmcgZm9yIHB1Ymxpc2ggZW5kcG9pbnRcbiAgICAgICAgICAgIGxvY2F0aW9uIH4qIF4vYXBpL3dvcmtzcGFjZS8oW2EtekEtWjAtOV8tXSspL3B1Ymxpc2gkIHtcbiAgICAgICAgICAgICAgICBwcm94eV9wYXNzICRhcHBmbG93eV9jbG91ZF9iYWNrZW5kO1xuICAgICAgICAgICAgICAgIHByb3h5X3JlcXVlc3RfYnVmZmVyaW5nIG9mZjtcbiAgICAgICAgICAgICAgICBjbGllbnRfbWF4X2JvZHlfc2l6ZSAyNTZNO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAjIENoYXQgZW5kcG9pbnQgKHN0cmVhbWluZylcbiAgICAgICAgICAgIGxvY2F0aW9uIC9hcGkvY2hhdCB7XG4gICAgICAgICAgICAgICAgcHJveHlfcGFzcyAkYXBwZmxvd3lfY2xvdWRfYmFja2VuZDtcblxuICAgICAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7XG4gICAgICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIFwiXCI7XG4gICAgICAgICAgICAgICAgY2h1bmtlZF90cmFuc2Zlcl9lbmNvZGluZyBvbjtcbiAgICAgICAgICAgICAgICBwcm94eV9idWZmZXJpbmcgb2ZmO1xuICAgICAgICAgICAgICAgIHByb3h5X2NhY2hlIG9mZjtcblxuICAgICAgICAgICAgICAgIHByb3h5X3JlYWRfdGltZW91dCA2MDBzO1xuICAgICAgICAgICAgICAgIHByb3h5X2Nvbm5lY3RfdGltZW91dCA2MDBzO1xuICAgICAgICAgICAgICAgIHByb3h5X3NlbmRfdGltZW91dCA2MDBzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAjIEltcG9ydCBlbmRwb2ludFxuICAgICAgICAgICAgbG9jYXRpb24gL2FwaS9pbXBvcnQge1xuICAgICAgICAgICAgICAgIHByb3h5X3Bhc3MgJGFwcGZsb3d5X2Nsb3VkX2JhY2tlbmQ7XG5cbiAgICAgICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtUmVxdWVzdC1JZCAkcmVxdWVzdF9pZDtcbiAgICAgICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgJGh0dHBfaG9zdDtcblxuICAgICAgICAgICAgICAgIHByb3h5X3JlYWRfdGltZW91dCA2MDBzO1xuICAgICAgICAgICAgICAgIHByb3h5X2Nvbm5lY3RfdGltZW91dCA2MDBzO1xuICAgICAgICAgICAgICAgIHByb3h5X3NlbmRfdGltZW91dCA2MDBzO1xuXG4gICAgICAgICAgICAgICAgcHJveHlfcmVxdWVzdF9idWZmZXJpbmcgb2ZmO1xuICAgICAgICAgICAgICAgIHByb3h5X2J1ZmZlcmluZyBvZmY7XG4gICAgICAgICAgICAgICAgcHJveHlfY2FjaGUgb2ZmO1xuICAgICAgICAgICAgICAgIGNsaWVudF9tYXhfYm9keV9zaXplIDJHO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgIyBBZG1pbiBGcm9udGVuZFxuICAgICAgICAjIE9wdGlvbmFsIE1vZHVsZSwgY29tbWVudCB0aGlzIHNlY3Rpb24gaWYgeW91IGRpZCBub3QgZGVwbG95IGFkbWluX2Zyb250ZW5kIGluIGRvY2tlci1jb21wb3NlLnltbFxuICAgICAgICBsb2NhdGlvbiAvY29uc29sZSB7XG4gICAgICAgICAgICBwcm94eV9wYXNzICRhZG1pbl9mcm9udGVuZF9iYWNrZW5kO1xuXG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtU2NoZW1lICRzY2hlbWU7XG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgJGhvc3Q7XG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtUmVhbC1JUCAkcmVtb3RlX2FkZHI7XG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtRm9yd2FyZGVkLUZvciAkcHJveHlfYWRkX3hfZm9yd2FyZGVkX2ZvcjtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtUHJvdG8gJHNjaGVtZTtcblxuICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgQ29ubmVjdGlvbiBcIlwiO1xuXG4gICAgICAgICAgICBwcm94eV9idWZmZXJpbmcgb2ZmO1xuICAgICAgICAgICAgcHJveHlfY2FjaGUgb2ZmO1xuXG4gICAgICAgICAgICBwcm94eV9yZWFkX3RpbWVvdXQgNjBzO1xuICAgICAgICAgICAgcHJveHlfY29ubmVjdF90aW1lb3V0IDYwcztcbiAgICAgICAgICAgIHByb3h5X3NlbmRfdGltZW91dCA2MHM7XG4gICAgICAgIH1cblxuICAgICAgICAjIFJlZGlyZWN0IHJvb3QgcGF0aCB0byAvY29uc29sZVxuICAgICAgICBsb2NhdGlvbiA9IC8ge1xuICAgICAgICAgICAgcmV0dXJuIDMwMSAvY29uc29sZTtcbiAgICAgICAgfVxuXG4gICAgICAgICMgSGVhbHRoIGNoZWNrIGVuZHBvaW50XG4gICAgICAgIGxvY2F0aW9uIC9oZWFsdGgge1xuICAgICAgICAgICAgYWNjZXNzX2xvZyBvZmY7XG4gICAgICAgICAgICByZXR1cm4gMjAwIFwiaGVhbHRoeVxcblwiO1xuICAgICAgICAgICAgYWRkX2hlYWRlciBDb250ZW50LVR5cGUgdGV4dC9wbGFpbjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwZmxvd3lfY2xvdWQKICAgICAgLSBnb3RydWUKICAgICAgLSBhZG1pbl9mcm9udGVuZAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0L2hlYWx0aCcKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogICAgICBzdGFydF9wZXJpb2Q6IDQwcwogIGFwcGZsb3d5X3dlYjoKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9BUFBGTE9XWVdFQgogICAgICAtICdBUFBGTE9XWV9CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9BRE1JTn0nCiAgICAgIC0gJ0FQUEZMT1dZX0dPVFJVRV9CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9BRE1JTn0vZ290cnVlJwogICAgICAtICdBUFBGTE9XWV9XU19CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9BRE1JTn0vd3MvdjInCiAgICBpbWFnZTogJ2FwcGZsb3d5aW5jL2FwcGZsb3d5X3dlYjowLjkuMTMyJwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHBmbG93eV9jbG91ZAogIGFwcGZsb3d5X2Nsb3VkOgogICAgaW1hZ2U6ICdhcHBmbG93eWluYy9hcHBmbG93eV9jbG91ZDowLjkuMTQ5JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1JVU1RfTE9HPSR7UlVTVF9MT0c6LWluZm99JwogICAgICAtICdBUFBGTE9XWV9CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9BRE1JTn0nCiAgICAgIC0gQVBQRkxPV1lfRU5WSVJPTk1FTlQ9cHJvZHVjdGlvbgogICAgICAtICdBUFBGTE9XWV9EQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREI6LWFwcGZsb3d5fScKICAgICAgLSAnQVBQRkxPV1lfUkVESVNfVVJJPXJlZGlzOi8vcmVkaXM6NjM3OScKICAgICAgLSAnQVBQRkxPV1lfR09UUlVFX0pXVF9TRUNSRVQ9JHtTRVJWSUNFX1BBU1NXT1JEX0pXVH0nCiAgICAgIC0gJ0FQUEZMT1dZX0dPVFJVRV9CQVNFX1VSTD1odHRwOi8vZ290cnVlOjk5OTknCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0NSRUFURV9CVUNLRVQ9JHtBUFBGTE9XWV9TM19DUkVBVEVfQlVDS0VUOi10cnVlfScKICAgICAgLSBBUFBGTE9XWV9TM19VU0VfTUlOSU89dHJ1ZQogICAgICAtICdBUFBGTE9XWV9TM19NSU5JT19VUkw9aHR0cDovL21pbmlvOjkwMDAnCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0FDQ0VTU19LRVk9JHtTRVJWSUNFX1VTRVJfTUlOSU99JwogICAgICAtICdBUFBGTE9XWV9TM19TRUNSRVRfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9NSU5JT30nCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0JVQ0tFVD0ke0FQUEZMT1dZX1MzX0JVQ0tFVDotYXBwZmxvd3l9JwogICAgICAtICdBUFBGTE9XWV9TM19SRUdJT049JHtBUFBGTE9XWV9TM19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIC0gJ0FQUEZMT1dZX01BSUxFUl9TTVRQX0hPU1Q9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9IT1NUOi1zbXRwLmdtYWlsLmNvbX0nCiAgICAgIC0gJ0FQUEZMT1dZX01BSUxFUl9TTVRQX1BPUlQ9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9QT1JUOi01ODd9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9VU0VSTkFNRT0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1VTRVJOQU1FOi1ub3RpZnlAYXBwZmxvd3kuaW99JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9FTUFJTD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX0VNQUlMOi1ub3RpZnlAYXBwZmxvd3kuaW99JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9QQVNTV09SRD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1BBU1NXT1JEOi1lbWFpbF9zZW5kZXJfcGFzc3dvcmR9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9UTFNfS0lORD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1RMU19LSU5EOi1ub25lfScKICAgICAgLSBBUFBGTE9XWV9BQ0NFU1NfQ09OVFJPTD10cnVlCiAgICAgIC0gQVBQRkxPV1lfREFUQUJBU0VfTUFYX0NPTk5FQ1RJT05TPTQwCiAgICAgIC0gQUlfU0VSVkVSX0hPU1Q9YWkKICAgICAgLSBBSV9TRVJWRVJfUE9SVD01MDAxCiAgICAgIC0gJ0FJX09QRU5BSV9BUElfS0VZPSR7QUlfT1BFTkFJX0FQSV9LRVk6LX0nCiAgICAgIC0gJ0FQUEZMT1dZX1dFQl9VUkw9JHtTRVJWSUNFX0ZRRE5fQVBQRkxPV1lXRUJ9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6ICdjdXJsIC0tZmFpbCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvYXBpL2hlYWx0aCB8fCBleGl0IDEnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMgogICAgZGVwZW5kc19vbjoKICAgICAgZ290cnVlOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkCiAgZ290cnVlOgogICAgaW1hZ2U6ICdhcHBmbG93eWluYy9nb3RydWU6MC45LjE0OScKICAgIGVudmlyb25tZW50OgogICAgICAtIEdPVFJVRV9BUElfSE9TVD0wLjAuMC4wCiAgICAgIC0gR09UUlVFX0FQSV9QT1JUPTk5OTkKICAgICAgLSBQT1JUPTk5OTkKICAgICAgLSAnR09UUlVFX0FETUlOX0VNQUlMPSR7R09UUlVFX0FETUlOX0VNQUlMOi1hZG1pbkBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ0dPVFJVRV9BRE1JTl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQURNSU59JwogICAgICAtIEdPVFJVRV9ESVNBQkxFX1NJR05VUD1mYWxzZQogICAgICAtICdHT1RSVUVfU0lURV9VUkw9YXBwZmxvd3ktZmx1dHRlcjovLycKICAgICAgLSAnR09UUlVFX1VSSV9BTExPV19MSVNUPSoqJwogICAgICAtICdHT1RSVUVfSldUX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfSldUfScKICAgICAgLSAnR09UUlVFX0pXVF9FWFA9JHtHT1RSVUVfSldUX0VYUDotNzIwMH0nCiAgICAgIC0gR09UUlVFX0RCX0RSSVZFUj1wb3N0Z3JlcwogICAgICAtICdBUElfRVhURVJOQUxfVVJMPSR7U0VSVklDRV9GUUROX0FETUlOfS9nb3RydWUnCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHBvc3RncmVzOjU0MzIvJHtQT1NUR1JFU19EQjotYXBwZmxvd3l9P3NlYXJjaF9wYXRoPWF1dGgnCiAgICAgIC0gJ0dPVFJVRV9TTVRQX0hPU1Q9JHtHT1RSVUVfU01UUF9IT1NUfScKICAgICAgLSAnR09UUlVFX1NNVFBfUE9SVD0ke0dPVFJVRV9TTVRQX1BPUlQ6LTU4N30nCiAgICAgIC0gJ0dPVFJVRV9TTVRQX1VTRVI9JHtHT1RSVUVfU01UUF9VU0VSfScKICAgICAgLSAnR09UUlVFX1NNVFBfUEFTUz0ke0dPVFJVRV9TTVRQX1BBU1N9JwogICAgICAtIEdPVFJVRV9NQUlMRVJfVVJMUEFUSFNfQ09ORklSTUFUSU9OPS92ZXJpZnkKICAgICAgLSBHT1RSVUVfTUFJTEVSX1VSTFBBVEhTX0lOVklURT0vdmVyaWZ5CiAgICAgIC0gR09UUlVFX01BSUxFUl9VUkxQQVRIU19SRUNPVkVSWT0vdmVyaWZ5CiAgICAgIC0gR09UUlVFX01BSUxFUl9VUkxQQVRIU19FTUFJTF9DSEFOR0U9L3ZlcmlmeQogICAgICAtICdHT1RSVUVfU01UUF9BRE1JTl9FTUFJTD0ke0dPVFJVRV9TTVRQX0FETUlOX0VNQUlMfScKICAgICAgLSBHT1RSVUVfU01UUF9NQVhfRlJFUVVFTkNZPTFucwogICAgICAtIEdPVFJVRV9SQVRFX0xJTUlUX0VNQUlMX1NFTlQ9MTAwCiAgICAgIC0gR09UUlVFX01BSUxFUl9BVVRPQ09ORklSTT10cnVlCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6ICdjdXJsIC0tZmFpbCBodHRwOi8vMTI3LjAuMC4xOjk5OTkvaGVhbHRoIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEyCiAgYWRtaW5fZnJvbnRlbmQ6CiAgICBpbWFnZTogJ2FwcGZsb3d5aW5jL2FkbWluX2Zyb250ZW5kOjAuOS4xNDknCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnQVBQRkxPV1lfR09UUlVFX0JBU0VfVVJMPSR7U0VSVklDRV9GUUROX0FETUlOfS9nb3RydWUnCiAgICAgIC0gJ0FQUEZMT1dZX0JBU0VfVVJMPSR7U0VSVklDRV9GUUROX0FETUlOfScKICAgIGRlcGVuZHNfb246CiAgICAgIGdvdHJ1ZToKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBhcHBmbG93eV9jbG91ZDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2Vfc3RhcnRlZAogIGFpOgogICAgaW1hZ2U6ICdhcHBmbG93eWluYy9hcHBmbG93eV9haTowLjkuMTQ5JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ09QRU5BSV9BUElfS0VZPSR7QUlfT1BFTkFJX0FQSV9LRVk6LX0nCiAgICAgIC0gQUlfU0VSVkVSX1BPUlQ9NTAwMQogICAgICAtIERFRkFVTFRfQUlfTU9ERUw9Z3B0LTQuMS1taW5pCiAgICAgIC0gREVGQVVMVF9BSV9DT01QTEVUSU9OX01PREVMPWdwdC00LjEtbWluaQogICAgICAtICdBSV9BUFBGTE9XWV9IT1NUPSR7U0VSVklDRV9GUUROX0FQUEZMT1dZV0VCfScKICAgICAgLSAnQVBQRkxPV1lfR09UUlVFX0pXVF9TRUNSRVQ9JHtTRVJWSUNFX1BBU1NXT1JEX0pXVH0nCiAgICAgIC0gJ0FaVVJFX09QRU5BSV9BUElfS0VZPSR7QVpVUkVfT1BFTkFJX0FQSV9LRVl9JwogICAgICAtICdBWlVSRV9PUEVOQUlfRU5EUE9JTlQ9JHtBWlVSRV9PUEVOQUlfRU5EUE9JTlR9JwogICAgICAtICdBWlVSRV9PUEVOQUlfQVBJX1ZFUlNJT049JHtBWlVSRV9PUEVOQUlfQVBJX1ZFUlNJT059JwogICAgICAtICdBUFBGTE9XWV9TM19BQ0NFU1NfS0VZPSR7U0VSVklDRV9VU0VSX01JTklPfScKICAgICAgLSAnQVBQRkxPV1lfUzNfU0VDUkVUX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfTUlOSU99JwogICAgICAtICdBUFBGTE9XWV9TM19CVUNLRVQ9JHtBUFBGTE9XWV9TM19CVUNLRVQ6LWFwcGZsb3d5fScKICAgICAgLSAnQVBQRkxPV1lfUzNfUkVHSU9OPSR7QVBQRkxPV1lfUzNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdBSV9EQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREI6LWFwcGZsb3d5fScKICAgICAgLSAnQUlfUkVESVNfVVJMPXJlZGlzOi8vcmVkaXM6NjM3OScKICAgICAgLSBBSV9VU0VfTUlOSU89dHJ1ZQogICAgICAtICdBSV9NSU5JT19VUkw9aHR0cDovL21pbmlvOjkwMDAnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogIGFwcGZsb3d5X3dvcmtlcjoKICAgIGltYWdlOiAnYXBwZmxvd3lpbmMvYXBwZmxvd3lfd29ya2VyOjAuOS4xNDknCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBSVVNUX0xPRz1pbmZvCiAgICAgIC0gQVBQRkxPV1lfRU5WSVJPTk1FTlQ9cHJvZHVjdGlvbgogICAgICAtIEFQUEZMT1dZX1dPUktFUl9FTlZJUk9OTUVOVD1wcm9kdWN0aW9uCiAgICAgIC0gJ0FQUEZMT1dZX1dPUktFUl9SRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5JwogICAgICAtICdBUFBGTE9XWV9XT1JLRVJfREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1hcHBmbG93eX0nCiAgICAgIC0gJ0FQUEZMT1dZX1dPUktFUl9EQVRBQkFTRV9OQU1FPSR7UE9TVEdSRVNfREI6LWFwcGZsb3d5fScKICAgICAgLSBBUFBGTE9XWV9XT1JLRVJfSU1QT1JUX1RJQ0tfSU5URVJWQUw9MzAKICAgICAgLSBBUFBGTE9XWV9TM19VU0VfTUlOSU89dHJ1ZQogICAgICAtICdBUFBGTE9XWV9TM19NSU5JT19VUkw9aHR0cDovL21pbmlvOjkwMDAnCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0FDQ0VTU19LRVk9JHtTRVJWSUNFX1VTRVJfTUlOSU99JwogICAgICAtICdBUFBGTE9XWV9TM19TRUNSRVRfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9NSU5JT30nCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0JVQ0tFVD0ke0FQUEZMT1dZX1MzX0JVQ0tFVDotYXBwZmxvd3l9JwogICAgICAtICdBUFBGTE9XWV9TM19SRUdJT049JHtBUFBGTE9XWV9TM19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIC0gJ0FQUEZMT1dZX01BSUxFUl9TTVRQX0hPU1Q9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9IT1NUOi1zbXRwLmdtYWlsLmNvbX0nCiAgICAgIC0gJ0FQUEZMT1dZX01BSUxFUl9TTVRQX1BPUlQ9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9QT1JUOi01ODd9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9VU0VSTkFNRT0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1VTRVJOQU1FOi1ub3RpZnlAYXBwZmxvd3kuaW99JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9FTUFJTD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX0VNQUlMOi1ub3RpZnlAYXBwZmxvd3kuaW99JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9QQVNTV09SRD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1BBU1NXT1JEOi1lbWFpbF9zZW5kZXJfcGFzc3dvcmR9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9UTFNfS0lORD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1RMU19LSU5EOi1ub25lfScKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkCiAgbWluaW86CiAgICBpbWFnZTogJ3Bnc3R5L3NpbG86UkVMRUFTRS4yMDI2LTEwLTE1VDAwLTAwLTAwWicKICAgIGVudmlyb25tZW50OgogICAgICAtICdNSU5JT19ST09UX1VTRVI9JHtTRVJWSUNFX1VTRVJfTUlOSU99JwogICAgICAtICdNSU5JT19ST09UX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NSU5JT30nCiAgICBjb21tYW5kOiAnc2VydmVyIC9kYXRhIC0tY29uc29sZS1hZGRyZXNzICI6OTAwMSInCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gbWMKICAgICAgICAtIHJlYWR5CiAgICAgICAgLSBsb2NhbAogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAzCiAgICB2b2x1bWVzOgogICAgICAtICdtaW5pb19kYXRhOi9kYXRhJwogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwZ3ZlY3Rvci9wZ3ZlY3RvcjpwZzE2JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1hcHBmbG93eX0nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gUE9TVEdSRVNfSE9TVD1wb3N0Z3JlcwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXNfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcGdfaXNyZWFkeQogICAgICAgIC0gJy1VJwogICAgICAgIC0gJyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgICAtICctZCcKICAgICAgICAtICcke1BPU1RHUkVTX0RCOi1hcHBmbG93eX0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMgogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo4LjIuMi1hbHBpbmUzLjIyJwogICAgdm9sdW1lczoKICAgICAgLSAncmVkaXNfZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncmVkaXMtY2xpIC1oIGxvY2FsaG9zdCAtcCA2Mzc5IHBpbmcnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAzCg==", + "compose": "c2VydmljZXM6CiAgbmdpbng6CiAgICBpbWFnZTogJ25naW54OjEuMjkuMicKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9BRE1JTgogICAgdm9sdW1lczoKICAgICAgLQogICAgICAgIHR5cGU6IGJpbmQKICAgICAgICBzb3VyY2U6IC4vbmdpbngvbmdpbnguY29uZgogICAgICAgIHRhcmdldDogL2V0Yy9uZ2lueC9uZ2lueC5jb25mCiAgICAgICAgcmVhZF9vbmx5OiB0cnVlCiAgICAgICAgY29udGVudDogIiMgUGxlYXNlIGRvIG5vdCBkaXJlY3RseSBlZGl0IHRoaXMgZmlsZS5cblxuZXJyb3JfbG9nICAvdmFyL2xvZy9uZ2lueC9lcnJvci5sb2cgbm90aWNlO1xucGlkICAgICAgICAvdmFyL3J1bi9uZ2lueC5waWQ7XG5cblxuZXZlbnRzIHtcbiAgICB3b3JrZXJfY29ubmVjdGlvbnMgIDEwMjQ7XG59XG5cblxuaHR0cCB7XG4gICAgcmVzb2x2ZXIgMTI3LjAuMC4xMSB2YWxpZD0xMHM7XG4gICAgbWFwICRodHRwX3VwZ3JhZGUgJGNvbm5lY3Rpb25fdXBncmFkZSB7XG4gICAgICAgIGRlZmF1bHQgdXBncmFkZTtcbiAgICAgICAgJycgY2xvc2U7XG4gICAgfVxuXG4gICAgc2VydmVyIHtcbiAgICAgICAgbGlzdGVuIDgwO1xuICAgICAgICBjbGllbnRfbWF4X2JvZHlfc2l6ZSAxME07XG4gICAgICAgIHVuZGVyc2NvcmVzX2luX2hlYWRlcnMgb247XG5cbiAgICAgICAgIyBCYWNrZW5kIHNlcnZpY2VzXG4gICAgICAgIHNldCAkYXBwZmxvd3lfY2xvdWRfYmFja2VuZCBcImh0dHA6Ly9hcHBmbG93eV9jbG91ZDo4MDAwXCI7XG4gICAgICAgIHNldCAkZ290cnVlX2JhY2tlbmQgXCJodHRwOi8vZ290cnVlOjk5OTlcIjtcbiAgICAgICAgc2V0ICRhZG1pbl9mcm9udGVuZF9iYWNrZW5kIFwiaHR0cDovL2FkbWluX2Zyb250ZW5kOjMwMDBcIjtcbiAgICAgICAgIyBHb1RydWUgQXV0aGVudGljYXRpb24gU2VydmljZVxuICAgICAgICBsb2NhdGlvbiAvZ290cnVlLyB7XG4gICAgICAgICAgICBwcm94eV9wYXNzICRnb3RydWVfYmFja2VuZDtcblxuICAgICAgICAgICAgcmV3cml0ZSBeL2dvdHJ1ZSgvLiopJCAkMSBicmVhaztcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgIyBBbGxvdyBoZWFkZXJzIGxpa2UgcmVkaXJlY3RfdG8gdG8gYmUgaGFuZGVkIG92ZXIgdG8gdGhlIGdvdHJ1ZVxuICAgICAgICAgICAgIyBmb3IgY29ycmVjdCByZWRpcmVjdGluZ1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBIb3N0ICRodHRwX2hvc3Q7XG4gICAgICAgICAgICBwcm94eV9wYXNzX3JlcXVlc3RfaGVhZGVycyBvbjtcbiAgICAgICAgfVxuXG4gICAgICAgICMgV2ViU29ja2V0IGVuZHBvaW50IC0gaGFuZGxlIGJvdGggL3dzIGFuZCAvd3MvdjJcbiAgICAgICAgbG9jYXRpb24gL3dzIHtcbiAgICAgICAgICAgIHByb3h5X3Bhc3MgJGFwcGZsb3d5X2Nsb3VkX2JhY2tlbmQ7XG5cbiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7XG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFVwZ3JhZGUgJGh0dHBfdXBncmFkZTtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgQ29ubmVjdGlvbiBcIlVwZ3JhZGVcIjtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCAkaG9zdDtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1SZWFsLUlQICRyZW1vdGVfYWRkcjtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtRm9yICRwcm94eV9hZGRfeF9mb3J3YXJkZWRfZm9yO1xuICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLUZvcndhcmRlZC1Qcm90byAkc2NoZW1lO1xuICAgICAgICAgICAgcHJveHlfcmVhZF90aW1lb3V0IDg2NDAwcztcbiAgICAgICAgfVxuXG4gICAgICAgICMgQVBJIGVuZHBvaW50c1xuICAgICAgICBsb2NhdGlvbiAvYXBpIHtcbiAgICAgICAgICAgIHByb3h5X3Bhc3MgJGFwcGZsb3d5X2Nsb3VkX2JhY2tlbmQ7XG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtUmVxdWVzdC1JZCAkcmVxdWVzdF9pZDtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCAkaHR0cF9ob3N0O1xuXG4gICAgICAgICAgICAjIFNwZWNpYWwgaGFuZGxpbmcgZm9yIHB1Ymxpc2ggZW5kcG9pbnRcbiAgICAgICAgICAgIGxvY2F0aW9uIH4qIF4vYXBpL3dvcmtzcGFjZS8oW2EtekEtWjAtOV8tXSspL3B1Ymxpc2gkIHtcbiAgICAgICAgICAgICAgICBwcm94eV9wYXNzICRhcHBmbG93eV9jbG91ZF9iYWNrZW5kO1xuICAgICAgICAgICAgICAgIHByb3h5X3JlcXVlc3RfYnVmZmVyaW5nIG9mZjtcbiAgICAgICAgICAgICAgICBjbGllbnRfbWF4X2JvZHlfc2l6ZSAyNTZNO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAjIENoYXQgZW5kcG9pbnQgKHN0cmVhbWluZylcbiAgICAgICAgICAgIGxvY2F0aW9uIC9hcGkvY2hhdCB7XG4gICAgICAgICAgICAgICAgcHJveHlfcGFzcyAkYXBwZmxvd3lfY2xvdWRfYmFja2VuZDtcblxuICAgICAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7XG4gICAgICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uIFwiXCI7XG4gICAgICAgICAgICAgICAgY2h1bmtlZF90cmFuc2Zlcl9lbmNvZGluZyBvbjtcbiAgICAgICAgICAgICAgICBwcm94eV9idWZmZXJpbmcgb2ZmO1xuICAgICAgICAgICAgICAgIHByb3h5X2NhY2hlIG9mZjtcblxuICAgICAgICAgICAgICAgIHByb3h5X3JlYWRfdGltZW91dCA2MDBzO1xuICAgICAgICAgICAgICAgIHByb3h5X2Nvbm5lY3RfdGltZW91dCA2MDBzO1xuICAgICAgICAgICAgICAgIHByb3h5X3NlbmRfdGltZW91dCA2MDBzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAjIEltcG9ydCBlbmRwb2ludFxuICAgICAgICAgICAgbG9jYXRpb24gL2FwaS9pbXBvcnQge1xuICAgICAgICAgICAgICAgIHByb3h5X3Bhc3MgJGFwcGZsb3d5X2Nsb3VkX2JhY2tlbmQ7XG5cbiAgICAgICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtUmVxdWVzdC1JZCAkcmVxdWVzdF9pZDtcbiAgICAgICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgJGh0dHBfaG9zdDtcblxuICAgICAgICAgICAgICAgIHByb3h5X3JlYWRfdGltZW91dCA2MDBzO1xuICAgICAgICAgICAgICAgIHByb3h5X2Nvbm5lY3RfdGltZW91dCA2MDBzO1xuICAgICAgICAgICAgICAgIHByb3h5X3NlbmRfdGltZW91dCA2MDBzO1xuXG4gICAgICAgICAgICAgICAgcHJveHlfcmVxdWVzdF9idWZmZXJpbmcgb2ZmO1xuICAgICAgICAgICAgICAgIHByb3h5X2J1ZmZlcmluZyBvZmY7XG4gICAgICAgICAgICAgICAgcHJveHlfY2FjaGUgb2ZmO1xuICAgICAgICAgICAgICAgIGNsaWVudF9tYXhfYm9keV9zaXplIDJHO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgIyBBZG1pbiBGcm9udGVuZFxuICAgICAgICAjIE9wdGlvbmFsIE1vZHVsZSwgY29tbWVudCB0aGlzIHNlY3Rpb24gaWYgeW91IGRpZCBub3QgZGVwbG95IGFkbWluX2Zyb250ZW5kIGluIGRvY2tlci1jb21wb3NlLnltbFxuICAgICAgICBsb2NhdGlvbiAvY29uc29sZSB7XG4gICAgICAgICAgICBwcm94eV9wYXNzICRhZG1pbl9mcm9udGVuZF9iYWNrZW5kO1xuXG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtU2NoZW1lICRzY2hlbWU7XG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIEhvc3QgJGhvc3Q7XG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtUmVhbC1JUCAkcmVtb3RlX2FkZHI7XG4gICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtRm9yd2FyZGVkLUZvciAkcHJveHlfYWRkX3hfZm9yd2FyZGVkX2ZvcjtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgWC1Gb3J3YXJkZWQtUHJvdG8gJHNjaGVtZTtcblxuICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTtcbiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgQ29ubmVjdGlvbiBcIlwiO1xuXG4gICAgICAgICAgICBwcm94eV9idWZmZXJpbmcgb2ZmO1xuICAgICAgICAgICAgcHJveHlfY2FjaGUgb2ZmO1xuXG4gICAgICAgICAgICBwcm94eV9yZWFkX3RpbWVvdXQgNjBzO1xuICAgICAgICAgICAgcHJveHlfY29ubmVjdF90aW1lb3V0IDYwcztcbiAgICAgICAgICAgIHByb3h5X3NlbmRfdGltZW91dCA2MHM7XG4gICAgICAgIH1cblxuICAgICAgICAjIFJlZGlyZWN0IHJvb3QgcGF0aCB0byAvY29uc29sZVxuICAgICAgICBsb2NhdGlvbiA9IC8ge1xuICAgICAgICAgICAgcmV0dXJuIDMwMSAvY29uc29sZTtcbiAgICAgICAgfVxuXG4gICAgICAgICMgSGVhbHRoIGNoZWNrIGVuZHBvaW50XG4gICAgICAgIGxvY2F0aW9uIC9oZWFsdGgge1xuICAgICAgICAgICAgYWNjZXNzX2xvZyBvZmY7XG4gICAgICAgICAgICByZXR1cm4gMjAwIFwiaGVhbHRoeVxcblwiO1xuICAgICAgICAgICAgYWRkX2hlYWRlciBDb250ZW50LVR5cGUgdGV4dC9wbGFpbjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIKICAgIGRlcGVuZHNfb246CiAgICAgIC0gYXBwZmxvd3lfY2xvdWQKICAgICAgLSBnb3RydWUKICAgICAgLSBhZG1pbl9mcm9udGVuZAogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6CiAgICAgICAgLSBDTUQKICAgICAgICAtIGN1cmwKICAgICAgICAtICctZicKICAgICAgICAtICdodHRwOi8vbG9jYWxob3N0L2hlYWx0aCcKICAgICAgaW50ZXJ2YWw6IDMwcwogICAgICB0aW1lb3V0OiAxMHMKICAgICAgcmV0cmllczogMwogICAgICBzdGFydF9wZXJpb2Q6IDQwcwogIGFwcGZsb3d5X3dlYjoKICAgIGVudmlyb25tZW50OgogICAgICAtIFNFUlZJQ0VfRlFETl9BUFBGTE9XWVdFQgogICAgICAtICdBUFBGTE9XWV9CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9BRE1JTn0nCiAgICAgIC0gJ0FQUEZMT1dZX0dPVFJVRV9CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9BRE1JTn0vZ290cnVlJwogICAgICAtICdBUFBGTE9XWV9XU19CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9BRE1JTn0vd3MvdjInCiAgICBpbWFnZTogJ2FwcGZsb3d5aW5jL2FwcGZsb3d5X3dlYjowLjkuMTMyJwogICAgZGVwZW5kc19vbjoKICAgICAgLSBhcHBmbG93eV9jbG91ZAogIGFwcGZsb3d5X2Nsb3VkOgogICAgaW1hZ2U6ICdhcHBmbG93eWluYy9hcHBmbG93eV9jbG91ZDowLjkuMTQ5JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1JVU1RfTE9HPSR7UlVTVF9MT0c6LWluZm99JwogICAgICAtICdBUFBGTE9XWV9CQVNFX1VSTD0ke1NFUlZJQ0VfRlFETl9BRE1JTn0nCiAgICAgIC0gQVBQRkxPV1lfRU5WSVJPTk1FTlQ9cHJvZHVjdGlvbgogICAgICAtICdBUFBGTE9XWV9EQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREI6LWFwcGZsb3d5fScKICAgICAgLSAnQVBQRkxPV1lfUkVESVNfVVJJPXJlZGlzOi8vcmVkaXM6NjM3OScKICAgICAgLSAnQVBQRkxPV1lfR09UUlVFX0pXVF9TRUNSRVQ9JHtTRVJWSUNFX1BBU1NXT1JEX0pXVH0nCiAgICAgIC0gJ0FQUEZMT1dZX0dPVFJVRV9CQVNFX1VSTD1odHRwOi8vZ290cnVlOjk5OTknCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0NSRUFURV9CVUNLRVQ9JHtBUFBGTE9XWV9TM19DUkVBVEVfQlVDS0VUOi10cnVlfScKICAgICAgLSBBUFBGTE9XWV9TM19VU0VfTUlOSU89dHJ1ZQogICAgICAtICdBUFBGTE9XWV9TM19NSU5JT19VUkw9aHR0cDovL21pbmlvOjkwMDAnCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0FDQ0VTU19LRVk9JHtTRVJWSUNFX1VTRVJfTUlOSU99JwogICAgICAtICdBUFBGTE9XWV9TM19TRUNSRVRfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9NSU5JT30nCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0JVQ0tFVD0ke0FQUEZMT1dZX1MzX0JVQ0tFVDotYXBwZmxvd3l9JwogICAgICAtICdBUFBGTE9XWV9TM19SRUdJT049JHtBUFBGTE9XWV9TM19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIC0gJ0FQUEZMT1dZX01BSUxFUl9TTVRQX0hPU1Q9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9IT1NUOi1zbXRwLmdtYWlsLmNvbX0nCiAgICAgIC0gJ0FQUEZMT1dZX01BSUxFUl9TTVRQX1BPUlQ9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9QT1JUOi01ODd9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9VU0VSTkFNRT0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1VTRVJOQU1FOi1ub3RpZnlAYXBwZmxvd3kuaW99JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9FTUFJTD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX0VNQUlMOi1ub3RpZnlAYXBwZmxvd3kuaW99JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9QQVNTV09SRD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1BBU1NXT1JEOi1lbWFpbF9zZW5kZXJfcGFzc3dvcmR9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9UTFNfS0lORD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1RMU19LSU5EOi1ub25lfScKICAgICAgLSBBUFBGTE9XWV9BQ0NFU1NfQ09OVFJPTD10cnVlCiAgICAgIC0gQVBQRkxPV1lfREFUQUJBU0VfTUFYX0NPTk5FQ1RJT05TPTQwCiAgICAgIC0gQUlfU0VSVkVSX0hPU1Q9YWkKICAgICAgLSBBSV9TRVJWRVJfUE9SVD01MDAxCiAgICAgIC0gJ0FJX09QRU5BSV9BUElfS0VZPSR7QUlfT1BFTkFJX0FQSV9LRVk6LX0nCiAgICAgIC0gJ0FQUEZMT1dZX1dFQl9VUkw9JHtTRVJWSUNFX0ZRRE5fQVBQRkxPV1lXRUJ9JwogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6ICdjdXJsIC0tZmFpbCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvYXBpL2hlYWx0aCB8fCBleGl0IDEnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMgogICAgZGVwZW5kc19vbjoKICAgICAgZ290cnVlOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkCiAgZ290cnVlOgogICAgaW1hZ2U6ICdhcHBmbG93eWluYy9nb3RydWU6MC45LjE0OScKICAgIGVudmlyb25tZW50OgogICAgICAtIEdPVFJVRV9BUElfSE9TVD0wLjAuMC4wCiAgICAgIC0gR09UUlVFX0FQSV9QT1JUPTk5OTkKICAgICAgLSBQT1JUPTk5OTkKICAgICAgLSAnR09UUlVFX0FETUlOX0VNQUlMPSR7R09UUlVFX0FETUlOX0VNQUlMOi1hZG1pbkBleGFtcGxlLmNvbX0nCiAgICAgIC0gJ0dPVFJVRV9BRE1JTl9QQVNTV09SRD0ke1NFUlZJQ0VfUEFTU1dPUkRfQURNSU59JwogICAgICAtIEdPVFJVRV9ESVNBQkxFX1NJR05VUD1mYWxzZQogICAgICAtICdHT1RSVUVfU0lURV9VUkw9YXBwZmxvd3ktZmx1dHRlcjovLycKICAgICAgLSAnR09UUlVFX1VSSV9BTExPV19MSVNUPSoqJwogICAgICAtIEdPVFJVRV9DT1JTX0FMTE9XRURfSEVBREVSUz1yZWRpcmVjdF90bwogICAgICAtICdHT1RSVUVfSldUX1NFQ1JFVD0ke1NFUlZJQ0VfUEFTU1dPUkRfSldUfScKICAgICAgLSAnR09UUlVFX0pXVF9FWFA9JHtHT1RSVUVfSldUX0VYUDotNzIwMH0nCiAgICAgIC0gR09UUlVFX0RCX0RSSVZFUj1wb3N0Z3JlcwogICAgICAtICdBUElfRVhURVJOQUxfVVJMPSR7U0VSVklDRV9GUUROX0FETUlOfS9nb3RydWUnCiAgICAgIC0gJ0RBVEFCQVNFX1VSTD1wb3N0Z3JlczovLyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfToke1NFUlZJQ0VfUEFTU1dPUkRfUE9TVEdSRVN9QHBvc3RncmVzOjU0MzIvJHtQT1NUR1JFU19EQjotYXBwZmxvd3l9P3NlYXJjaF9wYXRoPWF1dGgnCiAgICAgIC0gJ0dPVFJVRV9TTVRQX0hPU1Q9JHtHT1RSVUVfU01UUF9IT1NUfScKICAgICAgLSAnR09UUlVFX1NNVFBfUE9SVD0ke0dPVFJVRV9TTVRQX1BPUlQ6LTU4N30nCiAgICAgIC0gJ0dPVFJVRV9TTVRQX1VTRVI9JHtHT1RSVUVfU01UUF9VU0VSfScKICAgICAgLSAnR09UUlVFX1NNVFBfUEFTUz0ke0dPVFJVRV9TTVRQX1BBU1N9JwogICAgICAtIEdPVFJVRV9NQUlMRVJfVVJMUEFUSFNfQ09ORklSTUFUSU9OPS92ZXJpZnkKICAgICAgLSBHT1RSVUVfTUFJTEVSX1VSTFBBVEhTX0lOVklURT0vdmVyaWZ5CiAgICAgIC0gR09UUlVFX01BSUxFUl9VUkxQQVRIU19SRUNPVkVSWT0vdmVyaWZ5CiAgICAgIC0gR09UUlVFX01BSUxFUl9VUkxQQVRIU19FTUFJTF9DSEFOR0U9L3ZlcmlmeQogICAgICAtICdHT1RSVUVfU01UUF9BRE1JTl9FTUFJTD0ke0dPVFJVRV9TTVRQX0FETUlOX0VNQUlMfScKICAgICAgLSBHT1RSVUVfU01UUF9NQVhfRlJFUVVFTkNZPTFucwogICAgICAtIEdPVFJVRV9SQVRFX0xJTUlUX0VNQUlMX1NFTlQ9MTAwCiAgICAgIC0gR09UUlVFX01BSUxFUl9BVVRPQ09ORklSTT10cnVlCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgaGVhbHRoY2hlY2s6CiAgICAgIHRlc3Q6ICdjdXJsIC0tZmFpbCBodHRwOi8vMTI3LjAuMC4xOjk5OTkvaGVhbHRoIHx8IGV4aXQgMScKICAgICAgaW50ZXJ2YWw6IDVzCiAgICAgIHRpbWVvdXQ6IDVzCiAgICAgIHJldHJpZXM6IDEyCiAgYWRtaW5fZnJvbnRlbmQ6CiAgICBpbWFnZTogJ2FwcGZsb3d5aW5jL2FkbWluX2Zyb250ZW5kOjAuOS4xNDknCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSAnQVBQRkxPV1lfR09UUlVFX0JBU0VfVVJMPSR7U0VSVklDRV9GUUROX0FETUlOfS9nb3RydWUnCiAgICAgIC0gJ0FQUEZMT1dZX0JBU0VfVVJMPSR7U0VSVklDRV9GUUROX0FETUlOfScKICAgIGRlcGVuZHNfb246CiAgICAgIGdvdHJ1ZToKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogICAgICBhcHBmbG93eV9jbG91ZDoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2Vfc3RhcnRlZAogIGFpOgogICAgaW1hZ2U6ICdhcHBmbG93eWluYy9hcHBmbG93eV9haTowLjkuMTQ5JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ09QRU5BSV9BUElfS0VZPSR7QUlfT1BFTkFJX0FQSV9LRVk6LX0nCiAgICAgIC0gQUlfU0VSVkVSX1BPUlQ9NTAwMQogICAgICAtIERFRkFVTFRfQUlfTU9ERUw9Z3B0LTQuMS1taW5pCiAgICAgIC0gREVGQVVMVF9BSV9DT01QTEVUSU9OX01PREVMPWdwdC00LjEtbWluaQogICAgICAtICdBSV9BUFBGTE9XWV9IT1NUPSR7U0VSVklDRV9GUUROX0FQUEZMT1dZV0VCfScKICAgICAgLSAnQVBQRkxPV1lfR09UUlVFX0pXVF9TRUNSRVQ9JHtTRVJWSUNFX1BBU1NXT1JEX0pXVH0nCiAgICAgIC0gJ0FaVVJFX09QRU5BSV9BUElfS0VZPSR7QVpVUkVfT1BFTkFJX0FQSV9LRVl9JwogICAgICAtICdBWlVSRV9PUEVOQUlfRU5EUE9JTlQ9JHtBWlVSRV9PUEVOQUlfRU5EUE9JTlR9JwogICAgICAtICdBWlVSRV9PUEVOQUlfQVBJX1ZFUlNJT049JHtBWlVSRV9PUEVOQUlfQVBJX1ZFUlNJT059JwogICAgICAtICdBUFBGTE9XWV9TM19BQ0NFU1NfS0VZPSR7U0VSVklDRV9VU0VSX01JTklPfScKICAgICAgLSAnQVBQRkxPV1lfUzNfU0VDUkVUX0tFWT0ke1NFUlZJQ0VfUEFTU1dPUkRfTUlOSU99JwogICAgICAtICdBUFBGTE9XWV9TM19CVUNLRVQ9JHtBUFBGTE9XWV9TM19CVUNLRVQ6LWFwcGZsb3d5fScKICAgICAgLSAnQVBQRkxPV1lfUzNfUkVHSU9OPSR7QVBQRkxPV1lfUzNfUkVHSU9OOi11cy1lYXN0LTF9JwogICAgICAtICdBSV9EQVRBQkFTRV9VUkw9cG9zdGdyZXM6Ly8ke1NFUlZJQ0VfVVNFUl9QT1NUR1JFU306JHtTRVJWSUNFX1BBU1NXT1JEX1BPU1RHUkVTfUBwb3N0Z3Jlczo1NDMyLyR7UE9TVEdSRVNfREI6LWFwcGZsb3d5fScKICAgICAgLSAnQUlfUkVESVNfVVJMPXJlZGlzOi8vcmVkaXM6NjM3OScKICAgICAgLSBBSV9VU0VfTUlOSU89dHJ1ZQogICAgICAtICdBSV9NSU5JT19VUkw9aHR0cDovL21pbmlvOjkwMDAnCiAgICBkZXBlbmRzX29uOgogICAgICBwb3N0Z3JlczoKICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeQogIGFwcGZsb3d5X3dvcmtlcjoKICAgIGltYWdlOiAnYXBwZmxvd3lpbmMvYXBwZmxvd3lfd29ya2VyOjAuOS4xNDknCiAgICBlbnZpcm9ubWVudDoKICAgICAgLSBSVVNUX0xPRz1pbmZvCiAgICAgIC0gQVBQRkxPV1lfRU5WSVJPTk1FTlQ9cHJvZHVjdGlvbgogICAgICAtIEFQUEZMT1dZX1dPUktFUl9FTlZJUk9OTUVOVD1wcm9kdWN0aW9uCiAgICAgIC0gJ0FQUEZMT1dZX1dPUktFUl9SRURJU19VUkw9cmVkaXM6Ly9yZWRpczo2Mzc5JwogICAgICAtICdBUFBGTE9XWV9XT1JLRVJfREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vJHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9OiR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU31AcG9zdGdyZXM6NTQzMi8ke1BPU1RHUkVTX0RCOi1hcHBmbG93eX0nCiAgICAgIC0gJ0FQUEZMT1dZX1dPUktFUl9EQVRBQkFTRV9OQU1FPSR7UE9TVEdSRVNfREI6LWFwcGZsb3d5fScKICAgICAgLSBBUFBGTE9XWV9XT1JLRVJfSU1QT1JUX1RJQ0tfSU5URVJWQUw9MzAKICAgICAgLSBBUFBGTE9XWV9TM19VU0VfTUlOSU89dHJ1ZQogICAgICAtICdBUFBGTE9XWV9TM19NSU5JT19VUkw9aHR0cDovL21pbmlvOjkwMDAnCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0FDQ0VTU19LRVk9JHtTRVJWSUNFX1VTRVJfTUlOSU99JwogICAgICAtICdBUFBGTE9XWV9TM19TRUNSRVRfS0VZPSR7U0VSVklDRV9QQVNTV09SRF9NSU5JT30nCiAgICAgIC0gJ0FQUEZMT1dZX1MzX0JVQ0tFVD0ke0FQUEZMT1dZX1MzX0JVQ0tFVDotYXBwZmxvd3l9JwogICAgICAtICdBUFBGTE9XWV9TM19SRUdJT049JHtBUFBGTE9XWV9TM19SRUdJT046LXVzLWVhc3QtMX0nCiAgICAgIC0gJ0FQUEZMT1dZX01BSUxFUl9TTVRQX0hPU1Q9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9IT1NUOi1zbXRwLmdtYWlsLmNvbX0nCiAgICAgIC0gJ0FQUEZMT1dZX01BSUxFUl9TTVRQX1BPUlQ9JHtBUFBGTE9XWV9NQUlMRVJfU01UUF9QT1JUOi01ODd9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9VU0VSTkFNRT0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1VTRVJOQU1FOi1ub3RpZnlAYXBwZmxvd3kuaW99JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9FTUFJTD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX0VNQUlMOi1ub3RpZnlAYXBwZmxvd3kuaW99JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9QQVNTV09SRD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1BBU1NXT1JEOi1lbWFpbF9zZW5kZXJfcGFzc3dvcmR9JwogICAgICAtICdBUFBGTE9XWV9NQUlMRVJfU01UUF9UTFNfS0lORD0ke0FQUEZMT1dZX01BSUxFUl9TTVRQX1RMU19LSU5EOi1ub25lfScKICAgIGRlcGVuZHNfb246CiAgICAgIHBvc3RncmVzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5CiAgICAgIHJlZGlzOgogICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkCiAgbWluaW86CiAgICBpbWFnZTogJ3Bnc3R5L3NpbG86UkVMRUFTRS4yMDI2LTEwLTE1VDAwLTAwLTAwWicKICAgIGVudmlyb25tZW50OgogICAgICAtICdNSU5JT19ST09UX1VTRVI9JHtTRVJWSUNFX1VTRVJfTUlOSU99JwogICAgICAtICdNSU5JT19ST09UX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9NSU5JT30nCiAgICBjb21tYW5kOiAnc2VydmVyIC9kYXRhIC0tY29uc29sZS1hZGRyZXNzICI6OTAwMSInCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gbWMKICAgICAgICAtIHJlYWR5CiAgICAgICAgLSBsb2NhbAogICAgICBpbnRlcnZhbDogMzBzCiAgICAgIHRpbWVvdXQ6IDIwcwogICAgICByZXRyaWVzOiAzCiAgICB2b2x1bWVzOgogICAgICAtICdtaW5pb19kYXRhOi9kYXRhJwogIHBvc3RncmVzOgogICAgaW1hZ2U6ICdwZ3ZlY3Rvci9wZ3ZlY3RvcjpwZzE2JwogICAgZW52aXJvbm1lbnQ6CiAgICAgIC0gJ1BPU1RHUkVTX1VTRVI9JHtTRVJWSUNFX1VTRVJfUE9TVEdSRVN9JwogICAgICAtICdQT1NUR1JFU19EQj0ke1BPU1RHUkVTX0RCOi1hcHBmbG93eX0nCiAgICAgIC0gJ1BPU1RHUkVTX1BBU1NXT1JEPSR7U0VSVklDRV9QQVNTV09SRF9QT1NUR1JFU30nCiAgICAgIC0gUE9TVEdSRVNfSE9TVD1wb3N0Z3JlcwogICAgdm9sdW1lczoKICAgICAgLSAncG9zdGdyZXNfZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGEnCiAgICBoZWFsdGhjaGVjazoKICAgICAgdGVzdDoKICAgICAgICAtIENNRAogICAgICAgIC0gcGdfaXNyZWFkeQogICAgICAgIC0gJy1VJwogICAgICAgIC0gJyR7U0VSVklDRV9VU0VSX1BPU1RHUkVTfScKICAgICAgICAtICctZCcKICAgICAgICAtICcke1BPU1RHUkVTX0RCOi1hcHBmbG93eX0nCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAxMgogIHJlZGlzOgogICAgaW1hZ2U6ICdyZWRpczo4LjIuMi1hbHBpbmUzLjIyJwogICAgdm9sdW1lczoKICAgICAgLSAncmVkaXNfZGF0YTovZGF0YScKICAgIGhlYWx0aGNoZWNrOgogICAgICB0ZXN0OgogICAgICAgIC0gQ01ELVNIRUxMCiAgICAgICAgLSAncmVkaXMtY2xpIC1oIGxvY2FsaG9zdCAtcCA2Mzc5IHBpbmcnCiAgICAgIGludGVydmFsOiA1cwogICAgICB0aW1lb3V0OiA1cwogICAgICByZXRyaWVzOiAzCg==", "tags": [ "appflowy", "notion",