Alternatively, create a Compose service, go to Advanced → Import from Base64, and paste this payload:
ewogICJjb21wb3NlIjogIiMgVXNhZ2VcbiMgICBTdGFydDogICAgICAgICAgICAgIGRvY2tlciBjb21wb3NlIHVwIC1kXG4jICAgU3RvcDogICAgICAgICAgICAgICBkb2NrZXIgY29tcG9zZSBkb3duXG4jICAgUmVzZXQgZXZlcnl0aGluZzogICAuL3Jlc2V0LnNoXG4jXG4jIERva3Bsb3k6IEtvbmcgaXMgZXhwb3NlZCBvbiBwb3J0IDgwMDAgZm9yIGRvbWFpbiByb3V0aW5nLiBTdG9yYWdlIHVzZXMgbG9jYWwgZmlsZVxuIyBiYWNrZW5kIGJ5IGRlZmF1bHQ7IGVkaXQgdGhlIHN0b3JhZ2Ugc2VydmljZSBlbnYgaW4gdGhpcyBmaWxlIHRvIHN3aXRjaCB0byBTMy9NaW5JTy5cblxubmFtZTogc3VwYWJhc2Vcblxuc2VydmljZXM6XG5cbiAgc3R1ZGlvOlxuICAgIGltYWdlOiBzdXBhYmFzZS9zdHVkaW86MjAyNi4wOC4wMy1zaGEtMDIyYjM3NFxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICBbXG4gICAgICAgICAgXCJDTUQtU0hFTExcIixcbiAgICAgICAgICBcIm5vZGUgLWUgXFxcImZldGNoKCdodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpL3BsYXRmb3JtL3Byb2ZpbGUnKS50aGVuKChyKSA9PiB7aWYgKHIuc3RhdHVzICE9PSAyMDApIHRocm93IG5ldyBFcnJvcihyLnN0YXR1cyl9KVxcXCJcIlxuICAgICAgICBdXG4gICAgICB0aW1lb3V0OiAxMHNcbiAgICAgIGludGVydmFsOiA1c1xuICAgICAgcmV0cmllczogNVxuICAgICAgc3RhcnRfcGVyaW9kOiAzMHNcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIEhPU1ROQU1FOiBcIjAuMC4wLjBcIlxuXG4gICAgICBTVFVESU9fUEdfTUVUQV9VUkw6IGh0dHA6Ly9tZXRhOjgwODBcbiAgICAgIFBPU1RHUkVTX1BPUlQ6ICR7UE9TVEdSRVNfUE9SVH1cbiAgICAgIFBPU1RHUkVTX0hPU1Q6ICR7UE9TVEdSRVNfSE9TVH1cbiAgICAgIFBPU1RHUkVTX0RCOiAke1BPU1RHUkVTX0RCfVxuICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6ICR7UE9TVEdSRVNfUEFTU1dPUkR9XG5cbiAgICAgICMgU2VlOiBodHRwczovL3N1cGFiYXNlLmNvbS9kb2NzL2d1aWRlcy9zZWxmLWhvc3RpbmcvcmVtb3ZlLXN1cGVydXNlci1hY2Nlc3NcbiAgICAgIFBPU1RHUkVTX1VTRVJfUkVBRF9XUklURTogcG9zdGdyZXNcblxuICAgICAgUEdfTUVUQV9DUllQVE9fS0VZOiAke1BHX01FVEFfQ1JZUFRPX0tFWX1cbiAgICAgIFBHUlNUX0RCX1NDSEVNQVM6ICR7UEdSU1RfREJfU0NIRU1BU31cbiAgICAgIFBHUlNUX0RCX01BWF9ST1dTOiAke1BHUlNUX0RCX01BWF9ST1dTOi0xMDAwfVxuICAgICAgUEdSU1RfREJfRVhUUkFfU0VBUkNIX1BBVEg6ICR7UEdSU1RfREJfRVhUUkFfU0VBUkNIX1BBVEg6LXB1YmxpY31cblxuICAgICAgREVGQVVMVF9PUkdBTklaQVRJT05fTkFNRTogJHtTVFVESU9fREVGQVVMVF9PUkdBTklaQVRJT059XG4gICAgICBERUZBVUxUX1BST0pFQ1RfTkFNRTogJHtTVFVESU9fREVGQVVMVF9QUk9KRUNUfVxuICAgICAgT1BFTkFJX0FQSV9LRVk6ICR7T1BFTkFJX0FQSV9LRVk6LX1cblxuICAgICAgU1VQQUJBU0VfVVJMOiBodHRwOi8va29uZzo4MDAwXG4gICAgICBTVVBBQkFTRV9QVUJMSUNfVVJMOiAke1NVUEFCQVNFX1BVQkxJQ19VUkx9XG4gICAgICBTVVBBQkFTRV9BTk9OX0tFWTogJHtBTk9OX0tFWX1cbiAgICAgIFNVUEFCQVNFX1NFUlZJQ0VfS0VZOiAke1NFUlZJQ0VfUk9MRV9LRVl9XG4gICAgICBBVVRIX0pXVF9TRUNSRVQ6ICR7SldUX1NFQ1JFVH1cbiAgICAgIFNVUEFCQVNFX1BVQkxJU0hBQkxFX0tFWTogJHtTVVBBQkFTRV9QVUJMSVNIQUJMRV9LRVk6LX1cbiAgICAgIFNVUEFCQVNFX1NFQ1JFVF9LRVk6ICR7U1VQQUJBU0VfU0VDUkVUX0tFWTotfVxuXG4gICAgICAjIEFuYWx5dGljcyAoTG9nZmxhcmUpIHdhcyByZW1vdmVkIGZyb20gdGhlIHVwc3RyZWFtIHNlbGYtaG9zdGVkIHN0YWNrXG4gICAgICBFTkFCTEVEX0ZFQVRVUkVTX0xPR1NfQUxMOiBcImZhbHNlXCJcblxuICAgICAgU05JUFBFVFNfTUFOQUdFTUVOVF9GT0xERVI6IC9hcHAvc25pcHBldHNcbiAgICAgIEVER0VfRlVOQ1RJT05TX01BTkFHRU1FTlRfRk9MREVSOiAvYXBwL2VkZ2UtZnVuY3Rpb25zXG4gICAgdm9sdW1lczpcbiAgICAgIC0gLi4vZmlsZXMvdm9sdW1lcy9zbmlwcGV0czovYXBwL3NuaXBwZXRzOlpcbiAgICAgIC0gLi4vZmlsZXMvdm9sdW1lcy9mdW5jdGlvbnM6L2FwcC9lZGdlLWZ1bmN0aW9uczpaXG5cbiAga29uZzpcbiAgICBpbWFnZToga29uZy9rb25nOjMuOS4zXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRFwiLCBcImtvbmdcIiwgXCJoZWFsdGhcIl1cbiAgICAgIGludGVydmFsOiA1c1xuICAgICAgdGltZW91dDogNXNcbiAgICAgIHJldHJpZXM6IDVcbiAgICAgIHN0YXJ0X3BlcmlvZDogMzBzXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIHN0dWRpbzpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICBleHBvc2U6XG4gICAgICAtIDgwMDBcbiAgICAgIC0gODQ0M1xuICAgIHZvbHVtZXM6XG4gICAgICAtIC4uL2ZpbGVzL3ZvbHVtZXMvYXBpL2tvbmcueW1sOi9ob21lL2tvbmcvdGVtcC55bWw6cm8selxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL2FwaS9rb25nLWVudHJ5cG9pbnQuc2g6L2hvbWUva29uZy9rb25nLWVudHJ5cG9pbnQuc2g6cm8selxuICAgIGVudmlyb25tZW50OlxuICAgICAgS09OR19EQVRBQkFTRTogXCJvZmZcIlxuICAgICAgS09OR19ERUNMQVJBVElWRV9DT05GSUc6IC91c3IvbG9jYWwva29uZy9rb25nLnltbFxuICAgICAgS09OR19ST1VURVJfRkxBVk9SOiBleHByZXNzaW9uc1xuICAgICAgS09OR19ETlNfT1JERVI6IExBU1QsQSxDTkFNRVxuICAgICAgS09OR19ETlNfTk9UX0ZPVU5EX1RUTDogMVxuICAgICAgS09OR19ETlNfVkFMSURfVFRMOiA1XG4gICAgICBLT05HX1BMVUdJTlM6IHJlcXVlc3QtdHJhbnNmb3JtZXIsY29ycyxrZXktYXV0aCxhY2wsYmFzaWMtYXV0aCxyZXF1ZXN0LXRlcm1pbmF0aW9uLGlwLXJlc3RyaWN0aW9uLHBvc3QtZnVuY3Rpb25cbiAgICAgIEtPTkdfTkdJTlhfUFJPWFlfUFJPWFlfQlVGRkVSX1NJWkU6IDE2MGtcbiAgICAgIEtPTkdfTkdJTlhfUFJPWFlfUFJPWFlfQlVGRkVSUzogNjQgMTYwa1xuICAgICAgS09OR19QUk9YWV9BQ0NFU1NfTE9HOiAvZGV2L3N0ZG91dCBjb21iaW5lZFxuICAgICAgU1VQQUJBU0VfQU5PTl9LRVk6ICR7QU5PTl9LRVl9XG4gICAgICBTVVBBQkFTRV9TRVJWSUNFX0tFWTogJHtTRVJWSUNFX1JPTEVfS0VZfVxuICAgICAgU1VQQUJBU0VfUFVCTElTSEFCTEVfS0VZOiAke1NVUEFCQVNFX1BVQkxJU0hBQkxFX0tFWTotfVxuICAgICAgU1VQQUJBU0VfU0VDUkVUX0tFWTogJHtTVVBBQkFTRV9TRUNSRVRfS0VZOi19XG4gICAgICBBTk9OX0tFWV9BU1lNTUVUUklDOiAke0FOT05fS0VZX0FTWU1NRVRSSUM6LX1cbiAgICAgIFNFUlZJQ0VfUk9MRV9LRVlfQVNZTU1FVFJJQzogJHtTRVJWSUNFX1JPTEVfS0VZX0FTWU1NRVRSSUM6LX1cbiAgICAgIERBU0hCT0FSRF9VU0VSTkFNRTogJHtEQVNIQk9BUkRfVVNFUk5BTUV9XG4gICAgICBEQVNIQk9BUkRfUEFTU1dPUkQ6ICR7REFTSEJPQVJEX1BBU1NXT1JEfVxuICAgIGVudHJ5cG9pbnQ6IFtcIi9iaW4vYmFzaFwiLCBcIi9ob21lL2tvbmcva29uZy1lbnRyeXBvaW50LnNoXCJdXG5cbiAgYXV0aDpcbiAgICBpbWFnZTogc3VwYWJhc2UvZ290cnVlOnYyLjE4OS4wXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6XG4gICAgICAgIFtcbiAgICAgICAgICBcIkNNRFwiLFxuICAgICAgICAgIFwid2dldFwiLFxuICAgICAgICAgIFwiLS1uby12ZXJib3NlXCIsXG4gICAgICAgICAgXCItLXRyaWVzPTFcIixcbiAgICAgICAgICBcIi0tc3BpZGVyXCIsXG4gICAgICAgICAgXCJodHRwOi8vbG9jYWxob3N0Ojk5OTkvaGVhbHRoXCJcbiAgICAgICAgXVxuICAgICAgdGltZW91dDogNXNcbiAgICAgIGludGVydmFsOiA1c1xuICAgICAgcmV0cmllczogM1xuICAgIGRlcGVuZHNfb246XG4gICAgICBkYjpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIEdPVFJVRV9NQUlMRVJfRVhURVJOQUxfSE9TVFM6IGtvbmcsJHtTVVBBQkFTRV9IT1NUfVxuICAgICAgR09UUlVFX0FQSV9IT1NUOiAwLjAuMC4wXG4gICAgICBHT1RSVUVfQVBJX1BPUlQ6IDk5OTlcbiAgICAgIEFQSV9FWFRFUk5BTF9VUkw6ICR7QVBJX0VYVEVSTkFMX1VSTH1cblxuICAgICAgR09UUlVFX0RCX0RSSVZFUjogcG9zdGdyZXNcbiAgICAgIEdPVFJVRV9EQl9EQVRBQkFTRV9VUkw6IHBvc3RncmVzOi8vc3VwYWJhc2VfYXV0aF9hZG1pbjoke1BPU1RHUkVTX1BBU1NXT1JEfUAke1BPU1RHUkVTX0hPU1R9OiR7UE9TVEdSRVNfUE9SVH0vJHtQT1NUR1JFU19EQn1cblxuICAgICAgR09UUlVFX1NJVEVfVVJMOiAke1NJVEVfVVJMfVxuICAgICAgR09UUlVFX1VSSV9BTExPV19MSVNUOiAke0FERElUSU9OQUxfUkVESVJFQ1RfVVJMU31cbiAgICAgIEdPVFJVRV9ESVNBQkxFX1NJR05VUDogJHtESVNBQkxFX1NJR05VUH1cblxuICAgICAgR09UUlVFX0pXVF9BRE1JTl9ST0xFUzogc2VydmljZV9yb2xlXG4gICAgICBHT1RSVUVfSldUX0FVRDogYXV0aGVudGljYXRlZFxuICAgICAgR09UUlVFX0pXVF9ERUZBVUxUX0dST1VQX05BTUU6IGF1dGhlbnRpY2F0ZWRcbiAgICAgIEdPVFJVRV9KV1RfRVhQOiAke0pXVF9FWFBJUll9XG4gICAgICBHT1RSVUVfSldUX1NFQ1JFVDogJHtKV1RfU0VDUkVUfVxuICAgICAgR09UUlVFX0pXVF9LRVlTOiAke0pXVF9LRVlTOi1bXX1cbiAgICAgIEdPVFJVRV9KV1RfSVNTVUVSOiAke0FQSV9FWFRFUk5BTF9VUkx9XG5cbiAgICAgIEdPVFJVRV9FWFRFUk5BTF9FTUFJTF9FTkFCTEVEOiAke0VOQUJMRV9FTUFJTF9TSUdOVVB9XG4gICAgICBHT1RSVUVfRVhURVJOQUxfQU5PTllNT1VTX1VTRVJTX0VOQUJMRUQ6ICR7RU5BQkxFX0FOT05ZTU9VU19VU0VSU31cbiAgICAgIEdPVFJVRV9NQUlMRVJfQVVUT0NPTkZJUk06ICR7RU5BQkxFX0VNQUlMX0FVVE9DT05GSVJNfVxuXG4gICAgICBHT1RSVUVfU01UUF9BRE1JTl9FTUFJTDogJHtTTVRQX0FETUlOX0VNQUlMfVxuICAgICAgR09UUlVFX1NNVFBfSE9TVDogJHtTTVRQX0hPU1R9XG4gICAgICBHT1RSVUVfU01UUF9QT1JUOiAke1NNVFBfUE9SVH1cbiAgICAgIEdPVFJVRV9TTVRQX1VTRVI6ICR7U01UUF9VU0VSfVxuICAgICAgR09UUlVFX1NNVFBfUEFTUzogJHtTTVRQX1BBU1N9XG4gICAgICBHT1RSVUVfU01UUF9TRU5ERVJfTkFNRTogJHtTTVRQX1NFTkRFUl9OQU1FfVxuICAgICAgR09UUlVFX01BSUxFUl9VUkxQQVRIU19JTlZJVEU6ICR7TUFJTEVSX1VSTFBBVEhTX0lOVklURX1cbiAgICAgIEdPVFJVRV9NQUlMRVJfVVJMUEFUSFNfQ09ORklSTUFUSU9OOiAke01BSUxFUl9VUkxQQVRIU19DT05GSVJNQVRJT059XG4gICAgICBHT1RSVUVfTUFJTEVSX1VSTFBBVEhTX1JFQ09WRVJZOiAke01BSUxFUl9VUkxQQVRIU19SRUNPVkVSWX1cbiAgICAgIEdPVFJVRV9NQUlMRVJfVVJMUEFUSFNfRU1BSUxfQ0hBTkdFOiAke01BSUxFUl9VUkxQQVRIU19FTUFJTF9DSEFOR0V9XG5cbiAgICAgIEdPVFJVRV9FWFRFUk5BTF9QSE9ORV9FTkFCTEVEOiAke0VOQUJMRV9QSE9ORV9TSUdOVVB9XG4gICAgICBHT1RSVUVfU01TX0FVVE9DT05GSVJNOiAke0VOQUJMRV9QSE9ORV9BVVRPQ09ORklSTX1cblxuICByZXN0OlxuICAgIGltYWdlOiBwb3N0Z3Jlc3QvcG9zdGdyZXN0OnYxNC4xMlxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIGRiOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDogWyBcIkNNRFwiLCBcInBvc3RncmVzdFwiLCBcIi0tcmVhZHlcIiBdXG4gICAgICBpbnRlcnZhbDogNXNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiAzXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQR1JTVF9EQl9VUkk6IHBvc3RncmVzOi8vYXV0aGVudGljYXRvcjoke1BPU1RHUkVTX1BBU1NXT1JEfUAke1BPU1RHUkVTX0hPU1R9OiR7UE9TVEdSRVNfUE9SVH0vJHtQT1NUR1JFU19EQn1cbiAgICAgIFBHUlNUX0RCX1NDSEVNQVM6ICR7UEdSU1RfREJfU0NIRU1BU31cbiAgICAgIFBHUlNUX0RCX01BWF9ST1dTOiAke1BHUlNUX0RCX01BWF9ST1dTOi0xMDAwfVxuICAgICAgUEdSU1RfREJfRVhUUkFfU0VBUkNIX1BBVEg6ICR7UEdSU1RfREJfRVhUUkFfU0VBUkNIX1BBVEg6LXB1YmxpY31cbiAgICAgIFBHUlNUX0RCX0FOT05fUk9MRTogYW5vblxuICAgICAgUEdSU1RfQURNSU5fU0VSVkVSX1BPUlQ6IDMwMDFcbiAgICAgIFBHUlNUX0FETUlOX1NFUlZFUl9IT1NUOiBsb2NhbGhvc3RcbiAgICAgICMgQWNjZXB0cyBhIHBsYWluLXRleHQgc3ltbWV0cmljIHNlY3JldCwgYSBzaW5nbGUgSldLLCBvciBhIEpXS1MuXG4gICAgICBQR1JTVF9KV1RfU0VDUkVUOiAke0pXVF9KV0tTOi0ke0pXVF9TRUNSRVR9fVxuICAgICAgUEdSU1RfREJfVVNFX0xFR0FDWV9HVUNTOiBcImZhbHNlXCJcbiAgICAgIFBHUlNUX0FQUF9TRVRUSU5HU19KV1RfU0VDUkVUOiAke0pXVF9TRUNSRVR9XG4gICAgICBQR1JTVF9BUFBfU0VUVElOR1NfSldUX0VYUDogJHtKV1RfRVhQSVJZfVxuICAgIGNvbW1hbmQ6XG4gICAgICBbXG4gICAgICAgIFwicG9zdGdyZXN0XCJcbiAgICAgIF1cblxuICByZWFsdGltZTpcbiAgICBpbWFnZTogc3VwYWJhc2UvcmVhbHRpbWU6djIuMTAyLjNcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGRlcGVuZHNfb246XG4gICAgICBkYjpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6XG4gICAgICAgIFtcbiAgICAgICAgICBcIkNNRC1TSEVMTFwiLFxuICAgICAgICAgIFwiY3VybCAtc1NmTCAtLWhlYWQgLW8gL2Rldi9udWxsIC1IIFxcXCJBdXRob3JpemF0aW9uOiBCZWFyZXIgJHtBTk9OX0tFWX1cXFwiIGh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9hcGkvdGVuYW50cy9yZWFsdGltZS1kZXYvaGVhbHRoXCJcbiAgICAgICAgXVxuICAgICAgdGltZW91dDogNXNcbiAgICAgIGludGVydmFsOiAzMHNcbiAgICAgIHJldHJpZXM6IDNcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTBzXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQT1JUOiA0MDAwXG4gICAgICBEQl9IT1NUOiAke1BPU1RHUkVTX0hPU1R9XG4gICAgICBEQl9QT1JUOiAke1BPU1RHUkVTX1BPUlR9XG4gICAgICBEQl9VU0VSOiBzdXBhYmFzZV9hZG1pblxuICAgICAgREJfUEFTU1dPUkQ6ICR7UE9TVEdSRVNfUEFTU1dPUkR9XG4gICAgICBEQl9OQU1FOiAke1BPU1RHUkVTX0RCfVxuICAgICAgREJfQUZURVJfQ09OTkVDVF9RVUVSWTogJ1NFVCBzZWFyY2hfcGF0aCBUTyBfcmVhbHRpbWUnXG4gICAgICBEQl9FTkNfS0VZOiAke1JFQUxUSU1FX0RCX0VOQ19LRVk6LXN1cGFiYXNlcmVhbHRpbWV9XG4gICAgICAjIExlZ2FjeSBzeW1tZXRyaWMgSFMyNTYga2V5XG4gICAgICBBUElfSldUX1NFQ1JFVDogJHtKV1RfU0VDUkVUfVxuICAgICAgIyBKV0tTIGZvciB0b2tlbiB2ZXJpZmljYXRpb24gKEVDIHB1YmxpYyArIGxlZ2FjeSBzeW1tZXRyaWMpXG4gICAgICBBUElfSldUX0pXS1M6ICR7SldUX0pXS1M6LXtcImtleXNcIjpbXX19XG4gICAgICBTRUNSRVRfS0VZX0JBU0U6ICR7U0VDUkVUX0tFWV9CQVNFfVxuICAgICAgTUVUUklDU19KV1RfU0VDUkVUOiAke0pXVF9TRUNSRVR9XG4gICAgICBFUkxfQUZMQUdTOiAtcHJvdG9fZGlzdCBpbmV0X3RjcFxuICAgICAgRE5TX05PREVTOiBcIicnXCJcbiAgICAgIFJMSU1JVF9OT0ZJTEU6IFwiMTAwMDBcIlxuICAgICAgQVBQX05BTUU6IHJlYWx0aW1lXG4gICAgICBTRUVEX1NFTEZfSE9TVDogXCJ0cnVlXCJcbiAgICAgIFJVTl9KQU5JVE9SOiBcInRydWVcIlxuICAgICAgRElTQUJMRV9IRUFMVEhDSEVDS19MT0dHSU5HOiBcInRydWVcIlxuXG4gIHN0b3JhZ2U6XG4gICAgaW1hZ2U6IHN1cGFiYXNlL3N0b3JhZ2UtYXBpOnYxLjYwLjRcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGRlcGVuZHNfb246XG4gICAgICBkYjpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICAgIHJlc3Q6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkXG4gICAgICBpbWdwcm94eTpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX3N0YXJ0ZWRcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6XG4gICAgICAgIFtcbiAgICAgICAgICBcIkNNRFwiLFxuICAgICAgICAgIFwid2dldFwiLFxuICAgICAgICAgIFwiLS1uby12ZXJib3NlXCIsXG4gICAgICAgICAgXCItLXRyaWVzPTFcIixcbiAgICAgICAgICBcIi0tc3BpZGVyXCIsXG4gICAgICAgICAgXCJodHRwOi8vc3RvcmFnZTo1MDAwL3N0YXR1c1wiXG4gICAgICAgIF1cbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICBpbnRlcnZhbDogNXNcbiAgICAgIHJldHJpZXM6IDNcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTBzXG4gICAgdm9sdW1lczpcbiAgICAgIC0gLi4vZmlsZXMvdm9sdW1lcy9zdG9yYWdlOi92YXIvbGliL3N0b3JhZ2U6elxuICAgIGVudmlyb25tZW50OlxuICAgICAgQU5PTl9LRVk6ICR7QU5PTl9LRVl9XG4gICAgICBTRVJWSUNFX0tFWTogJHtTRVJWSUNFX1JPTEVfS0VZfVxuICAgICAgUE9TVEdSRVNUX1VSTDogaHR0cDovL3Jlc3Q6MzAwMFxuICAgICAgIyBMZWdhY3kgc3ltbWV0cmljIEhTMjU2IGtleVxuICAgICAgQVVUSF9KV1RfU0VDUkVUOiAke0pXVF9TRUNSRVR9XG4gICAgICAjIEpXS1MgZm9yIHRva2VuIHZlcmlmaWNhdGlvbiAoRUMgcHVibGljICsgbGVnYWN5IHN5bW1ldHJpYylcbiAgICAgIEpXVF9KV0tTOiAke0pXVF9KV0tTOi17XCJrZXlzXCI6W119fVxuICAgICAgREFUQUJBU0VfVVJMOiBwb3N0Z3JlczovL3N1cGFiYXNlX3N0b3JhZ2VfYWRtaW46JHtQT1NUR1JFU19QQVNTV09SRH1AJHtQT1NUR1JFU19IT1NUfToke1BPU1RHUkVTX1BPUlR9LyR7UE9TVEdSRVNfREJ9XG4gICAgICBTVE9SQUdFX1BVQkxJQ19VUkw6ICR7U1VQQUJBU0VfUFVCTElDX1VSTH1cbiAgICAgIFJFUVVFU1RfQUxMT1dfWF9GT1JXQVJERURfUEFUSDogXCJ0cnVlXCJcbiAgICAgIEZJTEVfU0laRV9MSU1JVDogNTI0Mjg4MDBcbiAgICAgIFNUT1JBR0VfQkFDS0VORDogZmlsZVxuICAgICAgR0xPQkFMX1MzX0JVQ0tFVDogJHtHTE9CQUxfUzNfQlVDS0VUfVxuICAgICAgRklMRV9TVE9SQUdFX0JBQ0tFTkRfUEFUSDogL3Zhci9saWIvc3RvcmFnZVxuICAgICAgVEVOQU5UX0lEOiAke1NUT1JBR0VfVEVOQU5UX0lEfVxuICAgICAgUkVHSU9OOiAke1JFR0lPTn1cbiAgICAgIEVOQUJMRV9JTUFHRV9UUkFOU0ZPUk1BVElPTjogXCJ0cnVlXCJcbiAgICAgIElNR1BST1hZX1VSTDogaHR0cDovL2ltZ3Byb3h5OjUwMDFcbiAgICAgIFMzX1BST1RPQ09MX0FDQ0VTU19LRVlfSUQ6ICR7UzNfUFJPVE9DT0xfQUNDRVNTX0tFWV9JRH1cbiAgICAgIFMzX1BST1RPQ09MX0FDQ0VTU19LRVlfU0VDUkVUOiAke1MzX1BST1RPQ09MX0FDQ0VTU19LRVlfU0VDUkVUfVxuXG4gIGltZ3Byb3h5OlxuICAgIGltYWdlOiBkYXJ0aHNpbS9pbWdwcm94eTp2My4zMC4xXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICB2b2x1bWVzOlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL3N0b3JhZ2U6L3Zhci9saWIvc3RvcmFnZTp6XG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICBbXG4gICAgICAgICAgXCJDTURcIixcbiAgICAgICAgICBcImltZ3Byb3h5XCIsXG4gICAgICAgICAgXCJoZWFsdGhcIlxuICAgICAgICBdXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgaW50ZXJ2YWw6IDVzXG4gICAgICByZXRyaWVzOiAzXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBJTUdQUk9YWV9CSU5EOiBcIjo1MDAxXCJcbiAgICAgIElNR1BST1hZX0xPQ0FMX0ZJTEVTWVNURU1fUk9PVDogL1xuICAgICAgSU1HUFJPWFlfVVNFX0VUQUc6IFwidHJ1ZVwiXG4gICAgICBJTUdQUk9YWV9BVVRPX1dFQlA6ICR7SU1HUFJPWFlfQVVUT19XRUJQfVxuICAgICAgSU1HUFJPWFlfTUFYX1NSQ19SRVNPTFVUSU9OOiAxNi44XG5cbiAgbWV0YTpcbiAgICBpbWFnZTogc3VwYWJhc2UvcG9zdGdyZXMtbWV0YTp2MC45Ni42XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBkZXBlbmRzX29uOlxuICAgICAgZGI6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQR19NRVRBX1BPUlQ6IDgwODBcbiAgICAgIFBHX01FVEFfREJfSE9TVDogJHtQT1NUR1JFU19IT1NUfVxuICAgICAgUEdfTUVUQV9EQl9QT1JUOiAke1BPU1RHUkVTX1BPUlR9XG4gICAgICBQR19NRVRBX0RCX05BTUU6ICR7UE9TVEdSRVNfREJ9XG4gICAgICAjIFNlZTogaHR0cHM6Ly9zdXBhYmFzZS5jb20vZG9jcy9ndWlkZXMvc2VsZi1ob3N0aW5nL3JlbW92ZS1zdXBlcnVzZXItYWNjZXNzXG4gICAgICBQR19NRVRBX0RCX1VTRVI6IHBvc3RncmVzXG4gICAgICBQR19NRVRBX0RCX1BBU1NXT1JEOiAke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgICAgQ1JZUFRPX0tFWTogJHtQR19NRVRBX0NSWVBUT19LRVl9XG5cbiAgZnVuY3Rpb25zOlxuICAgIGltYWdlOiBzdXBhYmFzZS9lZGdlLXJ1bnRpbWU6djEuNzQuMFxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgdm9sdW1lczpcbiAgICAgIC0gLi4vZmlsZXMvdm9sdW1lcy9mdW5jdGlvbnM6L2hvbWUvZGVuby9mdW5jdGlvbnM6WlxuICAgICAgLSBkZW5vLWNhY2hlOi9yb290Ly5jYWNoZS9kZW5vXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIGtvbmc6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAjIExlZ2FjeSBzeW1tZXRyaWMgSFMyNTYga2V5XG4gICAgICBKV1RfU0VDUkVUOiAke0pXVF9TRUNSRVR9XG4gICAgICAjIEpXS1MgZm9yIHRva2VuIHZlcmlmaWNhdGlvbiAoRUMgcHVibGljICsgbGVnYWN5IHN5bW1ldHJpYylcbiAgICAgIFNVUEFCQVNFX0pXS1M6ICR7SldUX0pXS1M6LXtcImtleXNcIjpbXX19XG4gICAgICBTVVBBQkFTRV9VUkw6IGh0dHA6Ly9rb25nOjgwMDBcbiAgICAgIFNVUEFCQVNFX1BVQkxJQ19VUkw6ICR7U1VQQUJBU0VfUFVCTElDX1VSTH1cbiAgICAgIFNVUEFCQVNFX0FOT05fS0VZOiAke0FOT05fS0VZfVxuICAgICAgU1VQQUJBU0VfU0VSVklDRV9ST0xFX0tFWTogJHtTRVJWSUNFX1JPTEVfS0VZfVxuICAgICAgU1VQQUJBU0VfUFVCTElTSEFCTEVfS0VZUzogXCJ7XFxcImRlZmF1bHRcXFwiOlxcXCIke1NVUEFCQVNFX1BVQkxJU0hBQkxFX0tFWTotfVxcXCJ9XCJcbiAgICAgIFNVUEFCQVNFX1NFQ1JFVF9LRVlTOiBcIntcXFwiZGVmYXVsdFxcXCI6XFxcIiR7U1VQQUJBU0VfU0VDUkVUX0tFWTotfVxcXCJ9XCJcbiAgICAgIFNVUEFCQVNFX0RCX1VSTDogcG9zdGdyZXNxbDovL3Bvc3RncmVzOiR7UE9TVEdSRVNfUEFTU1dPUkR9QCR7UE9TVEdSRVNfSE9TVH06JHtQT1NUR1JFU19QT1JUfS8ke1BPU1RHUkVTX0RCfVxuICAgICAgVkVSSUZZX0pXVDogXCIke0ZVTkNUSU9OU19WRVJJRllfSldUfVwiXG4gICAgY29tbWFuZDpcbiAgICAgIFtcbiAgICAgICAgXCJzdGFydFwiLFxuICAgICAgICBcIi0tbWFpbi1zZXJ2aWNlXCIsXG4gICAgICAgIFwiL2hvbWUvZGVuby9mdW5jdGlvbnMvbWFpblwiXG4gICAgICBdXG5cbiAgZGI6XG4gICAgIyBNYWpvciB1cGdyYWRlIGZyb20gUG9zdGdyZXMgMTUgcmVxdWlyZXMgYSBkdW1wL3Jlc3RvcmUgZm9yIGV4aXN0aW5nIGluc3RhbGxzLlxuICAgICMgU2VlOiBodHRwczovL2dpdGh1Yi5jb20vb3Jncy9zdXBhYmFzZS9kaXNjdXNzaW9ucy80NjA4MFxuICAgIGltYWdlOiBzdXBhYmFzZS9wb3N0Z3JlczoxNy42LjEuMTM2XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICB2b2x1bWVzOlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL2RiL3JlYWx0aW1lLnNxbDovZG9ja2VyLWVudHJ5cG9pbnQtaW5pdGRiLmQvbWlncmF0aW9ucy85OS1yZWFsdGltZS5zcWw6WlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL2RiL3dlYmhvb2tzLnNxbDovZG9ja2VyLWVudHJ5cG9pbnQtaW5pdGRiLmQvaW5pdC1zY3JpcHRzLzk4LXdlYmhvb2tzLnNxbDpaXG4gICAgICAtIC4uL2ZpbGVzL3ZvbHVtZXMvZGIvcm9sZXMuc3FsOi9kb2NrZXItZW50cnlwb2ludC1pbml0ZGIuZC9pbml0LXNjcmlwdHMvOTktcm9sZXMuc3FsOlpcbiAgICAgIC0gLi4vZmlsZXMvdm9sdW1lcy9kYi9qd3Quc3FsOi9kb2NrZXItZW50cnlwb2ludC1pbml0ZGIuZC9pbml0LXNjcmlwdHMvOTktand0LnNxbDpaXG4gICAgICAtIC4uL2ZpbGVzL3ZvbHVtZXMvZGIvZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGE6WlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL2RiL19zdXBhYmFzZS5zcWw6L2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL21pZ3JhdGlvbnMvOTctX3N1cGFiYXNlLnNxbDpaXG4gICAgICAtIC4uL2ZpbGVzL3ZvbHVtZXMvZGIvbG9ncy5zcWw6L2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL21pZ3JhdGlvbnMvOTktbG9ncy5zcWw6WlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL2RiL3Bvb2xlci5zcWw6L2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL21pZ3JhdGlvbnMvOTktcG9vbGVyLnNxbDpaXG4gICAgICAtIGRiLWNvbmZpZzovZXRjL3Bvc3RncmVzcWwtY3VzdG9tXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICBbXG4gICAgICAgICAgXCJDTURcIixcbiAgICAgICAgICBcInBnX2lzcmVhZHlcIixcbiAgICAgICAgICBcIi1VXCIsXG4gICAgICAgICAgXCJwb3N0Z3Jlc1wiLFxuICAgICAgICAgIFwiLWhcIixcbiAgICAgICAgICBcImxvY2FsaG9zdFwiXG4gICAgICAgIF1cbiAgICAgIGludGVydmFsOiA1c1xuICAgICAgdGltZW91dDogNXNcbiAgICAgIHJldHJpZXM6IDE1XG4gICAgICBzdGFydF9wZXJpb2Q6IDYwc1xuICAgIGVudmlyb25tZW50OlxuICAgICAgUE9TVEdSRVNfSE9TVDogL3Zhci9ydW4vcG9zdGdyZXNxbFxuICAgICAgUEdQT1JUOiAke1BPU1RHUkVTX1BPUlR9XG4gICAgICBQT1NUR1JFU19QT1JUOiAke1BPU1RHUkVTX1BPUlR9XG4gICAgICBQR1BBU1NXT1JEOiAke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6ICR7UE9TVEdSRVNfUEFTU1dPUkR9XG4gICAgICBQR0RBVEFCQVNFOiAke1BPU1RHUkVTX0RCfVxuICAgICAgUE9TVEdSRVNfREI6ICR7UE9TVEdSRVNfREJ9XG4gICAgICBKV1RfU0VDUkVUOiAke0pXVF9TRUNSRVR9XG4gICAgICBKV1RfRVhQOiAke0pXVF9FWFBJUll9XG4gICAgY29tbWFuZDpcbiAgICAgIFtcbiAgICAgICAgXCJwb3N0Z3Jlc1wiLFxuICAgICAgICBcIi1jXCIsXG4gICAgICAgIFwiY29uZmlnX2ZpbGU9L2V0Yy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWwuY29uZlwiLFxuICAgICAgICBcIi1jXCIsXG4gICAgICAgIFwibG9nX21pbl9tZXNzYWdlcz1mYXRhbFwiXG4gICAgICBdXG5cbiAgc3VwYXZpc29yOlxuICAgIGltYWdlOiBzdXBhYmFzZS9zdXBhdmlzb3I6Mi45LjVcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGV4cG9zZTpcbiAgICAgIC0gXCI1NDMyXCJcbiAgICAgIC0gXCI2NTQzXCJcbiAgICB2b2x1bWVzOlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL3Bvb2xlci9wb29sZXIuZXhzOi9ldGMvcG9vbGVyL3Bvb2xlci5leHM6cm8selxuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDpcbiAgICAgICAgW1xuICAgICAgICAgIFwiQ01EXCIsXG4gICAgICAgICAgXCJjdXJsXCIsXG4gICAgICAgICAgXCItc1NmTFwiLFxuICAgICAgICAgIFwiLS1oZWFkXCIsXG4gICAgICAgICAgXCItb1wiLFxuICAgICAgICAgIFwiL2Rldi9udWxsXCIsXG4gICAgICAgICAgXCJodHRwOi8vMTI3LjAuMC4xOjQwMDAvYXBpL2hlYWx0aFwiXG4gICAgICAgIF1cbiAgICAgIGludGVydmFsOiAxMHNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiAxMFxuICAgICAgc3RhcnRfcGVyaW9kOiAzMHNcbiAgICBkZXBlbmRzX29uOlxuICAgICAgZGI6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQT1JUOiA0MDAwXG4gICAgICBQT1NUR1JFU19QT1JUOiAke1BPU1RHUkVTX1BPUlR9XG4gICAgICBQT1NUR1JFU19IT1NUOiAke1BPU1RHUkVTX0hPU1R9XG4gICAgICBQT1NUR1JFU19EQjogJHtQT1NUR1JFU19EQn1cbiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgICAgREFUQUJBU0VfVVJMOiBlY3RvOi8vc3VwYWJhc2VfYWRtaW46JHtQT1NUR1JFU19QQVNTV09SRH1AJHtQT1NUR1JFU19IT1NUfToke1BPU1RHUkVTX1BPUlR9L19zdXBhYmFzZVxuICAgICAgQ0xVU1RFUl9QT1NUR1JFUzogXCJ0cnVlXCJcbiAgICAgIFNFQ1JFVF9LRVlfQkFTRTogJHtTRUNSRVRfS0VZX0JBU0V9XG4gICAgICBWQVVMVF9FTkNfS0VZOiAke1ZBVUxUX0VOQ19LRVl9XG4gICAgICBBUElfSldUX1NFQ1JFVDogJHtKV1RfU0VDUkVUfVxuICAgICAgTUVUUklDU19KV1RfU0VDUkVUOiAke0pXVF9TRUNSRVR9XG4gICAgICBSRUdJT046IGxvY2FsXG4gICAgICBFUkxfQUZMQUdTOiAtcHJvdG9fZGlzdCBpbmV0X3RjcFxuICAgICAgUE9PTEVSX1RFTkFOVF9JRDogJHtQT09MRVJfVEVOQU5UX0lEfVxuICAgICAgUE9PTEVSX0RFRkFVTFRfUE9PTF9TSVpFOiAke1BPT0xFUl9ERUZBVUxUX1BPT0xfU0laRX1cbiAgICAgIFBPT0xFUl9NQVhfQ0xJRU5UX0NPTk46ICR7UE9PTEVSX01BWF9DTElFTlRfQ09OTn1cbiAgICAgIFBPT0xFUl9QT09MX01PREU6IHRyYW5zYWN0aW9uXG4gICAgICBEQl9QT09MX1NJWkU6ICR7UE9PTEVSX0RCX1BPT0xfU0laRX1cbiAgICBjb21tYW5kOlxuICAgICAgW1xuICAgICAgICBcIi9iaW4vc2hcIixcbiAgICAgICAgXCItY1wiLFxuICAgICAgICBcIi9hcHAvYmluL21pZ3JhdGUgJiYgL2FwcC9iaW4vc3VwYXZpc29yIGV2YWwgXFxcIiQkKGNhdCAvZXRjL3Bvb2xlci9wb29sZXIuZXhzKVxcXCIgJiYgL2FwcC9iaW4vc2VydmVyXCJcbiAgICAgIF1cblxudm9sdW1lczpcbiAgZGItY29uZmlnOlxuICBkZW5vLWNhY2hlOiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubWFpbl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5wb3N0Z3Jlc19wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxuZGFzaGJvYXJkX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5wZ19tZXRhX2NyeXB0b19rZXkgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbnMzX3Byb3RvY29sX2FjY2Vzc19rZXlfaWQgPSBcIiR7cGFzc3dvcmQ6MjR9XCJcbnMzX3Byb3RvY29sX2FjY2Vzc19rZXlfc2VjcmV0ID0gXCIke3Bhc3N3b3JkOjQ4fVwiXG5zZWNyZXRfa2V5X2Jhc2UgPSBcIiR7cGFzc3dvcmQ6NjR9XCJcbnZhdWx0X2VuY19rZXkgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbiMgUmVhbHRpbWUgcmVxdWlyZXMgdGhpcyB0byBiZSBleGFjdGx5IDE2IGNoYXJhY3RlcnMgKGRva3Bsb3kncyBoYXNoIGhlbHBlclxuIyBlbWl0cyBvbmUgaGV4IGNoYXJhY3RlciBwZXIgdW5pdCBvZiBsZW5ndGgpLlxucmVhbHRpbWVfZGJfZW5jX2tleSA9IFwiJHtoYXNoOjE2fVwiXG5qd3Rfc2VjcmV0ID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5wb29sZXJfdGVuYW50X2lkID0gXCIke3V1aWR9XCJcbmFub25fa2V5X3BheWxvYWQgPSBcIlwiXCJ7XG4gIFwicm9sZVwiOiBcImFub25cIixcbiAgXCJpc3NcIjogXCJzdXBhYmFzZVwiLFxuICBcImV4cFwiOiAke3RpbWVzdGFtcHM6MjAzMC0wMS0wMVQwMDowMDowMFp9XG59XG5cIlwiXCJcbnNlcnZpY2Vfcm9sZV9rZXlfcGF5bG9hZCA9IFwiXCJcIntcbiAgXCJyb2xlXCI6IFwic2VydmljZV9yb2xlXCIsXG4gIFwiaXNzXCI6IFwic3VwYWJhc2VcIixcbiAgXCJleHBcIjogJHt0aW1lc3RhbXBzOjIwMzAtMDEtMDFUMDA6MDA6MDBafVxufVxuXCJcIlwiXG4jIERlZmluZWQgaGVyZSAobm90IGlubGluZSBpbiBlbnYpIHNvIGVhY2ggSldUIGlzIGdlbmVyYXRlZCBvbmNlIGFuZCBjYW4gYmVcbiMgcmV1c2VkOiBLb25nIHN3YXBzIHRoZSBvcGFxdWUgQVBJIGtleXMgYmVsb3cgZm9yIHRoZXNlIGV4YWN0IHRva2Vucy5cbmFub25fa2V5ID0gXCIke2p3dDpqd3Rfc2VjcmV0OmFub25fa2V5X3BheWxvYWR9XCJcbnNlcnZpY2Vfcm9sZV9rZXkgPSBcIiR7and0Omp3dF9zZWNyZXQ6c2VydmljZV9yb2xlX2tleV9wYXlsb2FkfVwiXG4jIE9wYXF1ZSBBUEkga2V5cywgc2hhcGVkIGxpa2UgU3VwYWJhc2Unczogc2JfPHJvbGU+XzwyMiBjaGFycz5fPDggY2hhciBzdWZmaXg+LlxucHVibGlzaGFibGVfa2V5ID0gXCJzYl9wdWJsaXNoYWJsZV8ke2hhc2g6MjJ9XyR7aGFzaDo4fVwiXG5zZWNyZXRfa2V5ID0gXCJzYl9zZWNyZXRfJHtoYXNoOjIyfV8ke2hhc2g6OH1cIlxuXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJrb25nXCJcbnBvcnQgPSA4XzAwMFxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIlxuXG5bY29uZmlnXVxuZW52ID0gW1xuJyMjIyMjIyMjIyMjIycsXG4nIyBUbyBnZXQgYSBwcm9wZXIgd29ya2luZyBjb25maWd1cmF0aW9uIHlvdSBzaG91bGQgYXQgbGVhc3QgdGFrZSBhIGxvb2sgYXQ6JyxcbicjIC0gU1VQQUJBU0VfUFVCTElDX1VSTCwgQVBJX0VYVEVSTkFMX1VSTCBzaG91bGQgcG9pbnQgdG8geW91ciBzdXBhYmFzZSBkb21haW4gd2l0aCBjb3JyZWN0IGh0dHAvaHR0cHMgc2NoZW1lJyxcbicjIC0gU01UUF8qIGFyZSByZXF1aXJlZCBmb3IgYXV0aCBtYWlsIHNlbmRpbmcnLFxuJyMgLSBBRERJVElPTkFMX1JFRElSRUNUX1VSTFMsIFNJVEVfVVJMIHNob3VsZCBwb2ludCB0byBhcHBsaWNhdGlvbiB1c2luZyBzdXBhYmFzZSBmb3IgYXV0aGVudGljYXRpb24nLFxuJyMgICBUaGV5IGFyZSB1c2VkIGZvciByZWRpcmVjdGluZyBhZnRlciBsb2dpbi9zaWdudXAgYW5kIGdvdHJ1ZSB3aWxsIGNoZWNrIHRoZW0gYmVmb3JlIHNlbmRpbmcgZW1haWxzJyxcbicjIC0gUE9TVEdSRVNfUE9SVCwgUE9PTEVSX1BST1hZX1BPUlRfVFJBTlNBQ1RJT04gc2hvdWxkIGJlIGNoYW5nZWQgaWYgeW91IGFyZSBhbHJlYWR5IHJ1bm5pbmcgb3RoZXIgaW5zdGFuY2VzIG9mIHN1cGFiYXNlJyxcbicjIyMjIyMjIyMjIyMnLFxuJycsXG4nIyMjIyMjIyMjIyMjJyxcbicjIFNlY3JldHMnLFxuJyMgWU9VIE1VU1QgQ0hBTkdFIFRIRVNFIEJFRk9SRSBHT0lORyBJTlRPIFBST0RVQ1RJT04nLFxuJyMgaHR0cHM6Ly9zdXBhYmFzZS5jb20vZG9jcy9ndWlkZXMvc2VsZi1ob3N0aW5nL2RvY2tlciNzZWN1cmluZy15b3VyLXNlcnZpY2VzJyxcbicjIEluIHRoaXMgdmVyc2lvbiBvZiB0aGUgdGVtcGxhdGUgdGhleSBhcmUgZ2VuZXJhdGVkIHJhbmRvbWx5IGJ5IGRva3Bsb3kgaGVscGVycycsXG4nIyBzbyB5b3UgZG8gbm90IG5lZWQgdG8gY2hhbmdlIHRoZW0gbWFudWFsbHknLFxuJyMgR28gdG8gaHR0cHM6Ly9zdXBhYmFzZS5jb20vZG9jcy9ndWlkZXMvc2VsZi1ob3N0aW5nIGZvciBtb3JlIGluZm9ybWF0aW9uJyxcbicjIyMjIyMjIyMjIyMnLFxuJycsXG4nU1VQQUJBU0VfSE9TVD0ke21haW5fZG9tYWlufScsXG4nUE9TVEdSRVNfUEFTU1dPUkQ9JHtwb3N0Z3Jlc19wYXNzd29yZH0nLFxuJycsXG4nIyBTeW1tZXRyaWMgSFMyNTYga2V5IGFuZCB0aGUgbGVnYWN5IEFQSSBrZXlzIGRlcml2ZWQgZnJvbSBpdC4nLFxuJ0pXVF9TRUNSRVQ9JHtqd3Rfc2VjcmV0fScsXG4nQU5PTl9LRVk9JHthbm9uX2tleX0nLFxuJ1NFUlZJQ0VfUk9MRV9LRVk9JHtzZXJ2aWNlX3JvbGVfa2V5fScsXG4nJyxcbicjIyMjIyMjIyMjIyMnLFxuJyMgTmV3IEFQSSBrZXlzLiBUaGVzZSBhcmUgb3BhcXVlIHN0cmluZ3M6IGNsaWVudHMgbmV2ZXIgc2VlIGEgZGVjb2RhYmxlIEpXVCwnLFxuJyMgS29uZyBzd2FwcyB0aGVtIGZvciB0aGUgKl9BU1lNTUVUUklDIHRva2VucyBiZWxvdyBiZWZvcmUgcHJveHlpbmcuJyxcbicjJyxcbicjIFRob3NlIHRva2VucyBhcmUgSFMyNTYsIHNpZ25lZCB3aXRoIEpXVF9TRUNSRVQsIHNvIHRoZXkgdmVyaWZ5IGFnYWluc3QgdGhlJyxcbicjIHNhbWUga2V5IGV2ZXJ5dGhpbmcgZWxzZSBhbHJlYWR5IHVzZXMuIFJlYWwgRVMyNTYga2V5cyB3b3VsZCBuZWVkIGFuIEVDIFAtMjU2JyxcbicjIGtleXBhaXIsIHdoaWNoIHRoZSBkb2twbG95IHZhcmlhYmxlIGhlbHBlcnMgY2Fubm90IGdlbmVyYXRlIC0gc2VlIEpXVF9LRVlTIC8nLFxuJyMgSldUX0pXS1MgYmVsb3cgaWYgeW91IHdhbnQgdG8gc3dpdGNoIHRvIHRoZW0uJyxcbicjIyMjIyMjIyMjIyMnLFxuJ1NVUEFCQVNFX1BVQkxJU0hBQkxFX0tFWT0ke3B1Ymxpc2hhYmxlX2tleX0nLFxuJ1NVUEFCQVNFX1NFQ1JFVF9LRVk9JHtzZWNyZXRfa2V5fScsXG4nQU5PTl9LRVlfQVNZTU1FVFJJQz0ke2Fub25fa2V5fScsXG4nU0VSVklDRV9ST0xFX0tFWV9BU1lNTUVUUklDPSR7c2VydmljZV9yb2xlX2tleX0nLFxuJycsXG4nIyMjIyMjIyMjIyMjJyxcbicjIE9wdGlvbmFsOiBtb3ZlIHNpZ25pbmcgdG8gYW4gRVMyNTYga2V5IHBhaXIuIExlYXZlIGJvdGggZW1wdHkgdG8gc3RheSBvbicsXG4nIyBIUzI1NiAodGhlIGRlZmF1bHQsIGFuZCB3aGF0IHRoZSBrZXlzIGFib3ZlIGFyZSBzaWduZWQgd2l0aCkuJyxcbicjJyxcbicjIFRvIHN3aXRjaCwgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL3N1cGFiYXNlL3N1cGFiYXNlLCBwdXQgdGhpcyBkZXBsb3ltZW50JyxcbicjIEpXVF9TRUNSRVQgaW4gZG9ja2VyLy5lbnYsIHJ1biBgc2ggdXRpbHMvYWRkLW5ldy1hdXRoLWtleXMuc2hgLCB0aGVuIHJlcGxhY2UnLFxuJyMgYWxsIHNpeCB2YWx1ZXMgYWJvdmUgYW5kIGJlbG93IHdpdGggdGhlIG9uZXMgaXQgcHJpbnRzLiBTZXQgdGhlbSB0b2dldGhlcjonLFxuJyMgSldUX0tFWVMgbWFrZXMgQXV0aCBzaWduIHdpdGggRVMyNTYsIEpXVF9KV0tTIGlzIGhvdyBldmVyeXRoaW5nIGVsc2UnLFxuJyMgdmVyaWZpZXMgdGhvc2UgdG9rZW5zLCBzbyBmaWxsaW5nIGluIG9uZSB3aXRob3V0IHRoZSBvdGhlciBicmVha3MgYXV0aC4nLFxuJyMgaHR0cHM6Ly9zdXBhYmFzZS5jb20vZG9jcy9ndWlkZXMvc2VsZi1ob3N0aW5nL3NlbGYtaG9zdGVkLWF1dGgta2V5cycsXG4nIyMjIyMjIyMjIyMjJyxcbicjIEpTT04gYXJyYXkgb2Ygc2lnbmluZyBKV0tzIChFQyBwcml2YXRlICsgbGVnYWN5IHN5bW1ldHJpYyksIHVzZWQgYnkgQXV0aC4nLFxuJ0pXVF9LRVlTPVtdJyxcbicjIEpXS1MgZm9yIHRva2VuIHZlcmlmaWNhdGlvbiAoRUMgcHVibGljICsgbGVnYWN5IHN5bW1ldHJpYyksIHVzZWQgYnknLFxuJyMgUG9zdGdSRVNULCBSZWFsdGltZSwgU3RvcmFnZSBhbmQgRWRnZSBGdW5jdGlvbnMuJyxcbidKV1RfSldLUz0nLFxuJycsXG4nREFTSEJPQVJEX1VTRVJOQU1FPXN1cGFiYXNlJyxcbidEQVNIQk9BUkRfUEFTU1dPUkQ9JHtkYXNoYm9hcmRfcGFzc3dvcmR9JyxcbidTRUNSRVRfS0VZX0JBU0U9JHtzZWNyZXRfa2V5X2Jhc2V9JyxcbidWQVVMVF9FTkNfS0VZPSR7dmF1bHRfZW5jX2tleX0nLFxuJ1JFQUxUSU1FX0RCX0VOQ19LRVk9JHtyZWFsdGltZV9kYl9lbmNfa2V5fScsXG4nUEdfTUVUQV9DUllQVE9fS0VZPSR7cGdfbWV0YV9jcnlwdG9fa2V5fScsXG4nJyxcbicnLFxuJyMjIyMjIyMjIyMjIycsXG4nIyBEYXRhYmFzZSAtIFlvdSBjYW4gY2hhbmdlIHRoZXNlIHRvIGFueSBQb3N0Z3JlU1FMIGRhdGFiYXNlIHRoYXQgaGFzIGxvZ2ljYWwgcmVwbGljYXRpb24gZW5hYmxlZC4nLFxuJyMjIyMjIyMjIyMjIycsXG4nJyxcbidQT1NUR1JFU19IT1NUPWRiJyxcbidQT1NUR1JFU19EQj1wb3N0Z3JlcycsXG4nUE9TVEdSRVNfUE9SVD01NDMyJyxcbidQT1NUR1JFU19VU0VSPXBvc3RncmVzJyxcbicnLFxuJycsXG4nIyMjIyMjIyMjIyMjJyxcbicjIFN1cGF2aXNvciAtLSBEYXRhYmFzZSBwb29sZXInLFxuJyMjIyMjIyMjIyMjIycsXG4nUE9PTEVSX1BST1hZX1BPUlRfVFJBTlNBQ1RJT049NjU0MycsXG4nUE9PTEVSX0RFRkFVTFRfUE9PTF9TSVpFPTIwJyxcbidQT09MRVJfTUFYX0NMSUVOVF9DT05OPTEwMCcsXG4nUE9PTEVSX1RFTkFOVF9JRD0ke3Bvb2xlcl90ZW5hbnRfaWR9JyxcbidQT09MRVJfREJfUE9PTF9TSVpFPTUnLFxuJycsXG4nJyxcbicjIyMjIyMjIyMjIyMnLFxuJyMgQVBJIFByb3h5IC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIEtvbmcgUmV2ZXJzZSBwcm94eS4nLFxuJyMgRm9sbG93aW5nIHBvcnRzIHNob3VsZCBub3QgYmUgY2hhbmdlZCBmb3IgYSBkb2twbG95IGNvbmZpZyB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLicsXG4nIyMjIyMjIyMjIyMjJyxcbicnLFxuJ0tPTkdfSFRUUF9QT1JUPTgwMDAnLFxuJ0tPTkdfSFRUUFNfUE9SVD04NDQzJyxcbicnLFxuJycsXG4nIyMjIyMjIyMjIyMjJyxcbicjIEFQSSAtIENvbmZpZ3VyYXRpb24gZm9yIFBvc3RnUkVTVC4nLFxuJyMjIyMjIyMjIyMjIycsXG4nJyxcbidQR1JTVF9EQl9TQ0hFTUFTPXB1YmxpYyxzdG9yYWdlLGdyYXBocWxfcHVibGljJyxcbidQR1JTVF9EQl9NQVhfUk9XUz0xMDAwJyxcbidQR1JTVF9EQl9FWFRSQV9TRUFSQ0hfUEFUSD1wdWJsaWMnLFxuJycsXG4nJyxcbicjIyMjIyMjIyMjIyMnLFxuJyMgQXV0aCAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBHb1RydWUgYXV0aGVudGljYXRpb24gc2VydmVyLicsXG4nIyMjIyMjIyMjIyMjJyxcbicnLFxuJyMjIEdlbmVyYWwnLFxuJ1NJVEVfVVJMPWh0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcsXG4nQURESVRJT05BTF9SRURJUkVDVF9VUkxTPWh0dHBzOi8vJHttYWluX2RvbWFpbn0vKixodHRwOi8vbG9jYWxob3N0OjMwMDAvKicsXG4nSldUX0VYUElSWT0zNjAwJyxcbidESVNBQkxFX1NJR05VUD1mYWxzZScsXG4nQVBJX0VYVEVSTkFMX1VSTD1odHRwczovLyR7bWFpbl9kb21haW59JyxcbicnLFxuJyMjIE1haWxlciBDb25maWcnLFxuJ01BSUxFUl9VUkxQQVRIU19DT05GSVJNQVRJT049XCIvYXV0aC92MS92ZXJpZnlcIicsXG4nTUFJTEVSX1VSTFBBVEhTX0lOVklURT1cIi9hdXRoL3YxL3ZlcmlmeVwiJyxcbidNQUlMRVJfVVJMUEFUSFNfUkVDT1ZFUlk9XCIvYXV0aC92MS92ZXJpZnlcIicsXG4nTUFJTEVSX1VSTFBBVEhTX0VNQUlMX0NIQU5HRT1cIi9hdXRoL3YxL3ZlcmlmeVwiJyxcbicnLFxuJyMjIEVtYWlsIGF1dGgnLFxuJ0VOQUJMRV9FTUFJTF9TSUdOVVA9dHJ1ZScsXG4nRU5BQkxFX0VNQUlMX0FVVE9DT05GSVJNPWZhbHNlJyxcbidTTVRQX0FETUlOX0VNQUlMPWFkbWluQGV4YW1wbGUuY29tJyxcbidTTVRQX0hPU1Q9c3VwYWJhc2UtbWFpbCcsXG4nU01UUF9QT1JUPTI1MDAnLFxuJ1NNVFBfVVNFUj1mYWtlX21haWxfdXNlcicsXG4nU01UUF9QQVNTPWZha2VfbWFpbF9wYXNzd29yZCcsXG4nU01UUF9TRU5ERVJfTkFNRT1mYWtlX3NlbmRlcicsXG4nRU5BQkxFX0FOT05ZTU9VU19VU0VSUz1mYWxzZScsXG4nJyxcbicjIyBQaG9uZSBhdXRoJyxcbidFTkFCTEVfUEhPTkVfU0lHTlVQPXRydWUnLFxuJ0VOQUJMRV9QSE9ORV9BVVRPQ09ORklSTT10cnVlJyxcbicnLFxuJycsXG4nIyMjIyMjIyMjIyMjJyxcbicjIFN0dWRpbyAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBEYXNoYm9hcmQnLFxuJyMjIyMjIyMjIyMjIycsXG4nJyxcbidTVFVESU9fREVGQVVMVF9PUkdBTklaQVRJT049RGVmYXVsdCBPcmdhbml6YXRpb24nLFxuJ1NUVURJT19ERUZBVUxUX1BST0pFQ1Q9RGVmYXVsdCBQcm9qZWN0JyxcbicnLFxuJ1NVUEFCQVNFX1BVQkxJQ19VUkw9aHR0cHM6Ly8ke21haW5fZG9tYWlufScsXG4nJyxcbicjIyMjIyMjIyMjIyMnLFxuJyMgU3RvcmFnZSAtIGxvY2FsIGZpbGUgYmFja2VuZCAoZGVmYXVsdCkuIEVkaXQgZG9ja2VyLWNvbXBvc2UueW1sIHN0b3JhZ2UgZW52IGZvciBTMy9NaW5JTy4nLFxuJyMjIyMjIyMjIyMjIycsXG4nJyxcbidHTE9CQUxfUzNfQlVDS0VUPXN0dWInLFxuJ1JFR0lPTj1zdHViJyxcbidTVE9SQUdFX1RFTkFOVF9JRD1zdHViJyxcbidTM19QUk9UT0NPTF9BQ0NFU1NfS0VZX0lEPSR7czNfcHJvdG9jb2xfYWNjZXNzX2tleV9pZH0nLFxuJ1MzX1BST1RPQ09MX0FDQ0VTU19LRVlfU0VDUkVUPSR7czNfcHJvdG9jb2xfYWNjZXNzX2tleV9zZWNyZXR9JyxcbicnLFxuJ0lNR1BST1hZX0FVVE9fV0VCUD10cnVlJyxcbicnLFxuJyMgQWRkIHlvdXIgT3BlbkFJIEFQSSBrZXkgdG8gZW5hYmxlIFNRTCBFZGl0b3IgQXNzaXN0YW50JyxcbidPUEVOQUlfQVBJX0tFWT0nLFxuJycsXG4nJyxcbicjIyMjIyMjIyMjIyMnLFxuJyMgRnVuY3Rpb25zIC0gQ29uZmlndXJhdGlvbiBmb3IgRnVuY3Rpb25zJyxcbicjIyMjIyMjIyMjIyMnLFxuJyMgTk9URTogVkVSSUZZX0pXVCBhcHBsaWVzIHRvIGFsbCBmdW5jdGlvbnMuIFBlci1mdW5jdGlvbiBWRVJJRllfSldUIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LicsXG4nRlVOQ1RJT05TX1ZFUklGWV9KV1Q9ZmFsc2UnXVxuXG5bW2NvbmZpZy5tb3VudHNdXVxuZmlsZVBhdGggPSBcIi92b2x1bWVzL2FwaS9rb25nLWVudHJ5cG9pbnQuc2hcIlxuY29udGVudCA9IFwiXCJcIiMhL2Jpbi9iYXNoXG4jIEN1c3RvbSBlbnRyeXBvaW50IGZvciBLb25nIHRoYXQgYnVpbGRzIEx1YSBleHByZXNzaW9ucyBmb3IgcmVxdWVzdC10cmFuc2Zvcm1lclxuIyBhbmQgcGVyZm9ybXMgZW52aXJvbm1lbnQgdmFyaWFibGUgc3Vic3RpdHV0aW9uIGluIHRoZSBkZWNsYXJhdGl2ZSBjb25maWcuXG5cbmlmIFsgLW4gXCIkU1VQQUJBU0VfU0VDUkVUX0tFWVwiIF0gJiYgWyAtbiBcIiRTVVBBQkFTRV9QVUJMSVNIQUJMRV9LRVlcIiBdOyB0aGVuXG4gICAgZXhwb3J0IExVQV9BVVRIX0VYUFI9XCJcXCQoKGhlYWRlcnMuYXV0aG9yaXphdGlvbiB+PSBuaWwgYW5kIGhlYWRlcnMuYXV0aG9yaXphdGlvbjpzdWIoMSwgMTApIH49ICdCZWFyZXIgc2JfJyBhbmQgaGVhZGVycy5hdXRob3JpemF0aW9uKSBvciAoaGVhZGVycy5hcGlrZXkgPT0gJyRTVVBBQkFTRV9TRUNSRVRfS0VZJyBhbmQgJ0JlYXJlciAkU0VSVklDRV9ST0xFX0tFWV9BU1lNTUVUUklDJykgb3IgKGhlYWRlcnMuYXBpa2V5ID09ICckU1VQQUJBU0VfUFVCTElTSEFCTEVfS0VZJyBhbmQgJ0JlYXJlciAkQU5PTl9LRVlfQVNZTU1FVFJJQycpIG9yIGhlYWRlcnMuYXBpa2V5KVwiXG4gICAgZXhwb3J0IExVQV9SVF9XU19FWFBSPVwiXFwkKChxdWVyeV9wYXJhbXMuYXBpa2V5ID09ICckU1VQQUJBU0VfU0VDUkVUX0tFWScgYW5kICckU0VSVklDRV9ST0xFX0tFWV9BU1lNTUVUUklDJykgb3IgKHF1ZXJ5X3BhcmFtcy5hcGlrZXkgPT0gJyRTVVBBQkFTRV9QVUJMSVNIQUJMRV9LRVknIGFuZCAnJEFOT05fS0VZX0FTWU1NRVRSSUMnKSBvciBxdWVyeV9wYXJhbXMuYXBpa2V5KVwiXG5lbHNlXG4gICAgZXhwb3J0IExVQV9BVVRIX0VYUFI9XCJcXCQoKGhlYWRlcnMuYXV0aG9yaXphdGlvbiB+PSBuaWwgYW5kIGhlYWRlcnMuYXV0aG9yaXphdGlvbjpzdWIoMSwgMTApIH49ICdCZWFyZXIgc2JfJyBhbmQgaGVhZGVycy5hdXRob3JpemF0aW9uKSBvciBoZWFkZXJzLmFwaWtleSlcIlxuICAgIGV4cG9ydCBMVUFfUlRfV1NfRVhQUj1cIlxcJChxdWVyeV9wYXJhbXMuYXBpa2V5KVwiXG5maVxuXG5hd2sgJ3tcbiAgcmVzdWx0ID0gXCJcIlxuICByZXN0ID0gJDBcbiAgd2hpbGUgKG1hdGNoKHJlc3QsIC9cXCRbQS1aYS16X11bQS1aYS16XzAtOV0qLykpIHtcbiAgICB2YXJuYW1lID0gc3Vic3RyKHJlc3QsIFJTVEFSVCArIDEsIFJMRU5HVEggLSAxKVxuICAgIGlmICh2YXJuYW1lIGluIEVOVklST04pIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCBzdWJzdHIocmVzdCwgMSwgUlNUQVJUIC0gMSkgRU5WSVJPTlt2YXJuYW1lXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgc3Vic3RyKHJlc3QsIDEsIFJTVEFSVCArIFJMRU5HVEggLSAxKVxuICAgIH1cbiAgICByZXN0ID0gc3Vic3RyKHJlc3QsIFJTVEFSVCArIFJMRU5HVEgpXG4gIH1cbiAgcHJpbnQgcmVzdWx0IHJlc3Rcbn0nIC9ob21lL2tvbmcvdGVtcC55bWwgPiBcIiRLT05HX0RFQ0xBUkFUSVZFX0NPTkZJR1wiXG5cbnNlZCAtaSAnL15bWzpzcGFjZTpdXSotIGtleTpbWzpzcGFjZTpdXSokL2QnIFwiJEtPTkdfREVDTEFSQVRJVkVfQ09ORklHXCJcblxuZXhlYyAvZW50cnlwb2ludC5zaCBrb25nIGRvY2tlci1zdGFydFxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiL3ZvbHVtZXMvYXBpL2tvbmcueW1sXCJcbmNvbnRlbnQgPSBcIlwiXCJfZm9ybWF0X3ZlcnNpb246ICcyLjEnXG5fdHJhbnNmb3JtOiB0cnVlXG5cbiMjI1xuIyMjIENvbnN1bWVycyAvIFVzZXJzXG4jIyNcbmNvbnN1bWVyczpcbiAgLSB1c2VybmFtZTogREFTSEJPQVJEXG4gIC0gdXNlcm5hbWU6IGFub25cbiAgICBrZXlhdXRoX2NyZWRlbnRpYWxzOlxuICAgICAgLSBrZXk6ICRTVVBBQkFTRV9BTk9OX0tFWVxuICAgICAgLSBrZXk6ICRTVVBBQkFTRV9QVUJMSVNIQUJMRV9LRVlcbiAgLSB1c2VybmFtZTogc2VydmljZV9yb2xlXG4gICAga2V5YXV0aF9jcmVkZW50aWFsczpcbiAgICAgIC0ga2V5OiAkU1VQQUJBU0VfU0VSVklDRV9LRVlcbiAgICAgIC0ga2V5OiAkU1VQQUJBU0VfU0VDUkVUX0tFWVxuXG4jIyNcbiMjIyBBY2Nlc3MgQ29udHJvbCBMaXN0XG4jIyNcbmFjbHM6XG4gIC0gY29uc3VtZXI6IGFub25cbiAgICBncm91cDogYW5vblxuICAtIGNvbnN1bWVyOiBzZXJ2aWNlX3JvbGVcbiAgICBncm91cDogYWRtaW5cblxuIyMjXG4jIyMgRGFzaGJvYXJkIGNyZWRlbnRpYWxzXG4jIyNcbmJhc2ljYXV0aF9jcmVkZW50aWFsczpcbiAgLSBjb25zdW1lcjogREFTSEJPQVJEXG4gICAgdXNlcm5hbWU6ICckREFTSEJPQVJEX1VTRVJOQU1FJ1xuICAgIHBhc3N3b3JkOiAnJERBU0hCT0FSRF9QQVNTV09SRCdcblxuIyMjXG4jIyMgQVBJIFJvdXRlc1xuIyMjXG5zZXJ2aWNlczpcbiAgIyMgT3BlbiBBdXRoIHJvdXRlc1xuICAtIG5hbWU6IGF1dGgtdjEtb3BlblxuICAgIHVybDogaHR0cDovL2F1dGg6OTk5OS92ZXJpZnlcbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IGF1dGgtdjEtb3BlblxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL2F1dGgvdjEvdmVyaWZ5XG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuICAtIG5hbWU6IGF1dGgtdjEtb3Blbi1jYWxsYmFja1xuICAgIHVybDogaHR0cDovL2F1dGg6OTk5OS9jYWxsYmFja1xuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogYXV0aC12MS1vcGVuLWNhbGxiYWNrXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvYXV0aC92MS9jYWxsYmFja1xuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IGNvcnNcbiAgLSBuYW1lOiBhdXRoLXYxLW9wZW4tYXV0aG9yaXplXG4gICAgdXJsOiBodHRwOi8vYXV0aDo5OTk5L2F1dGhvcml6ZVxuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogYXV0aC12MS1vcGVuLWF1dGhvcml6ZVxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL2F1dGgvdjEvYXV0aG9yaXplXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuICAtIG5hbWU6IGF1dGgtdjEtb3Blbi1qd2tzXG4gICAgdXJsOiBodHRwOi8vYXV0aDo5OTk5Ly53ZWxsLWtub3duL2p3a3MuanNvblxuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogYXV0aC12MS1vcGVuLWp3a3NcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9hdXRoL3YxLy53ZWxsLWtub3duL2p3a3MuanNvblxuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IGNvcnNcbiAgLSBuYW1lOiBhdXRoLXYxLW9wZW4tc3NvLWFjc1xuICAgIHVybDogaHR0cDovL2F1dGg6OTk5OS9zc28vc2FtbC9hY3NcbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IGF1dGgtdjEtb3Blbi1zc28tYWNzXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvc3NvL3NhbWwvYWNzXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuICAtIG5hbWU6IGF1dGgtdjEtb3Blbi1zc28tbWV0YWRhdGFcbiAgICB1cmw6IGh0dHA6Ly9hdXRoOjk5OTkvc3NvL3NhbWwvbWV0YWRhdGFcbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IGF1dGgtdjEtb3Blbi1zc28tbWV0YWRhdGFcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9zc28vc2FtbC9tZXRhZGF0YVxuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IGNvcnNcblxuICAjIyBTZWN1cmUgQXV0aCByb3V0ZXNcbiAgLSBuYW1lOiBhdXRoLXYxXG4gICAgX2NvbW1lbnQ6ICdHb1RydWU6IC9hdXRoL3YxLyogLT4gaHR0cDovL2F1dGg6OTk5OS8qJ1xuICAgIHVybDogaHR0cDovL2F1dGg6OTk5OS9cbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IGF1dGgtdjEtYWxsXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvYXV0aC92MS9cbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gICAgICAtIG5hbWU6IGtleS1hdXRoXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2NyZWRlbnRpYWxzOiBmYWxzZVxuICAgICAgLSBuYW1lOiByZXF1ZXN0LXRyYW5zZm9ybWVyXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBhZGQ6XG4gICAgICAgICAgICBoZWFkZXJzOlxuICAgICAgICAgICAgICAtIFwiQXV0aG9yaXphdGlvbjogJExVQV9BVVRIX0VYUFJcIlxuICAgICAgICAgIHJlcGxhY2U6XG4gICAgICAgICAgICBoZWFkZXJzOlxuICAgICAgICAgICAgICAtIFwiQXV0aG9yaXphdGlvbjogJExVQV9BVVRIX0VYUFJcIlxuICAgICAgLSBuYW1lOiBhY2xcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGhpZGVfZ3JvdXBzX2hlYWRlcjogdHJ1ZVxuICAgICAgICAgIGFsbG93OlxuICAgICAgICAgICAgLSBhZG1pblxuICAgICAgICAgICAgLSBhbm9uXG5cbiAgIyMgT3BlbkFQSSByb290IC0gYWRtaW4gb25seVxuICAtIG5hbWU6IHJlc3QtdjEtb3BlbmFwaVxuICAgIF9jb21tZW50OiAnUG9zdGdSRVNUIE9wZW5BUEkgcm9vdDogL3Jlc3QvdjEvIC0+IGh0dHA6Ly9yZXN0OjMwMDAvIChhZG1pbiBvbmx5KS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9vcmdzL3N1cGFiYXNlL2Rpc2N1c3Npb25zLzQyOTQ5J1xuICAgIHVybDogaHR0cDovL3Jlc3Q6MzAwMC9cbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IHJlc3QtdjEtb3BlbmFwaS1yb290XG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgZXhwcmVzc2lvbjogJ2h0dHAucGF0aCA9PSBcIi9yZXN0L3YxL1wiJ1xuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IGNvcnNcbiAgICAgIC0gbmFtZToga2V5LWF1dGhcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGhpZGVfY3JlZGVudGlhbHM6IGZhbHNlXG4gICAgICAtIG5hbWU6IHJlcXVlc3QtdHJhbnNmb3JtZXJcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGFkZDpcbiAgICAgICAgICAgIGhlYWRlcnM6XG4gICAgICAgICAgICAgIC0gXCJBdXRob3JpemF0aW9uOiAkTFVBX0FVVEhfRVhQUlwiXG4gICAgICAgICAgcmVwbGFjZTpcbiAgICAgICAgICAgIGhlYWRlcnM6XG4gICAgICAgICAgICAgIC0gXCJBdXRob3JpemF0aW9uOiAkTFVBX0FVVEhfRVhQUlwiXG4gICAgICAtIG5hbWU6IGFjbFxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgaGlkZV9ncm91cHNfaGVhZGVyOiB0cnVlXG4gICAgICAgICAgYWxsb3c6XG4gICAgICAgICAgICAtIGFkbWluXG5cbiAgIyMgU2VjdXJlIFBvc3RnUkVTVCByb3V0ZXNcbiAgLSBuYW1lOiByZXN0LXYxXG4gICAgX2NvbW1lbnQ6ICdQb3N0Z1JFU1Q6IC9yZXN0L3YxLyogLT4gaHR0cDovL3Jlc3Q6MzAwMC8qJ1xuICAgIHVybDogaHR0cDovL3Jlc3Q6MzAwMC9cbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IHJlc3QtdjEtYWxsXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvcmVzdC92MS9cbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gICAgICAtIG5hbWU6IGtleS1hdXRoXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2NyZWRlbnRpYWxzOiBmYWxzZVxuICAgICAgLSBuYW1lOiByZXF1ZXN0LXRyYW5zZm9ybWVyXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBhZGQ6XG4gICAgICAgICAgICBoZWFkZXJzOlxuICAgICAgICAgICAgICAtIFwiQXV0aG9yaXphdGlvbjogJExVQV9BVVRIX0VYUFJcIlxuICAgICAgICAgIHJlcGxhY2U6XG4gICAgICAgICAgICBoZWFkZXJzOlxuICAgICAgICAgICAgICAtIFwiQXV0aG9yaXphdGlvbjogJExVQV9BVVRIX0VYUFJcIlxuICAgICAgLSBuYW1lOiBhY2xcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGhpZGVfZ3JvdXBzX2hlYWRlcjogdHJ1ZVxuICAgICAgICAgIGFsbG93OlxuICAgICAgICAgICAgLSBhZG1pblxuICAgICAgICAgICAgLSBhbm9uXG5cbiAgIyMgU2VjdXJlIEdyYXBoUUwgcm91dGVzXG4gIC0gbmFtZTogZ3JhcGhxbC12MVxuICAgIF9jb21tZW50OiAnUG9zdGdSRVNUOiAvZ3JhcGhxbC92MS8qIC0+IGh0dHA6Ly9yZXN0OjMwMDAvcnBjL2dyYXBocWwnXG4gICAgdXJsOiBodHRwOi8vcmVzdDozMDAwL3JwYy9ncmFwaHFsXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiBncmFwaHFsLXYxLWFsbFxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL2dyYXBocWwvdjFcbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gICAgICAtIG5hbWU6IGtleS1hdXRoXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2NyZWRlbnRpYWxzOiBmYWxzZVxuICAgICAgLSBuYW1lOiByZXF1ZXN0LXRyYW5zZm9ybWVyXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBhZGQ6XG4gICAgICAgICAgICBoZWFkZXJzOlxuICAgICAgICAgICAgICAtIFwiQ29udGVudC1Qcm9maWxlOiBncmFwaHFsX3B1YmxpY1wiXG4gICAgICAgICAgICAgIC0gXCJBdXRob3JpemF0aW9uOiAkTFVBX0FVVEhfRVhQUlwiXG4gICAgICAgICAgcmVwbGFjZTpcbiAgICAgICAgICAgIGhlYWRlcnM6XG4gICAgICAgICAgICAgIC0gXCJBdXRob3JpemF0aW9uOiAkTFVBX0FVVEhfRVhQUlwiXG4gICAgICAtIG5hbWU6IGFjbFxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgaGlkZV9ncm91cHNfaGVhZGVyOiB0cnVlXG4gICAgICAgICAgYWxsb3c6XG4gICAgICAgICAgICAtIGFkbWluXG4gICAgICAgICAgICAtIGFub25cblxuICAjIyBTZWN1cmUgUmVhbHRpbWUgcm91dGVzXG4gIC0gbmFtZTogcmVhbHRpbWUtdjEtd3NcbiAgICBfY29tbWVudDogJ1JlYWx0aW1lOiAvcmVhbHRpbWUvdjEvKiAtPiB3czovL3JlYWx0aW1lOjQwMDAvc29ja2V0LyonXG4gICAgdXJsOiBodHRwOi8vcmVhbHRpbWU6NDAwMC9zb2NrZXRcbiAgICBwcm90b2NvbDogd3NcbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IHJlYWx0aW1lLXYxLXdzXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvcmVhbHRpbWUvdjEvXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuICAgICAgLSBuYW1lOiBrZXktYXV0aFxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgaGlkZV9jcmVkZW50aWFsczogZmFsc2VcbiAgICAgIC0gbmFtZTogcmVxdWVzdC10cmFuc2Zvcm1lclxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgYWRkOlxuICAgICAgICAgICAgaGVhZGVyczpcbiAgICAgICAgICAgICAgLSBcIngtYXBpLWtleTokTFVBX1JUX1dTX0VYUFJcIlxuICAgICAgICAgIHJlcGxhY2U6XG4gICAgICAgICAgICBxdWVyeXN0cmluZzpcbiAgICAgICAgICAgICAgLSBcImFwaWtleTokTFVBX1JUX1dTX0VYUFJcIlxuICAgICAgLSBuYW1lOiBhY2xcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGhpZGVfZ3JvdXBzX2hlYWRlcjogdHJ1ZVxuICAgICAgICAgIGFsbG93OlxuICAgICAgICAgICAgLSBhZG1pblxuICAgICAgICAgICAgLSBhbm9uXG5cbiAgIyBCbG9jayBhY2Nlc3MgdG8gL3JlYWx0aW1lL3YxL2FwaS9vcGVuYXBpXG4gIC0gbmFtZTogcmVhbHRpbWUtdjEtcmVzdC1vcGVuYXBpXG4gICAgX2NvbW1lbnQ6ICdSZWFsdGltZTogL3JlYWx0aW1lL3YxL2FwaS9vcGVuYXBpLyogLT4gaHR0cDovL3JlYWx0aW1lOjQwMDAvYXBpL29wZW5hcGkvKiAoYmxvY2tlZCknXG4gICAgdXJsOiBodHRwOi8vcmVhbHRpbWU6NDAwMC9hcGkvb3BlbmFwaVxuICAgIHByb3RvY29sOiBodHRwXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiByZWFsdGltZS12MS1yZXN0LW9wZW5hcGlcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9yZWFsdGltZS92MS9hcGkvb3BlbmFwaVxuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IHJlcXVlc3QtdGVybWluYXRpb25cbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIHN0YXR1c19jb2RlOiA0MDNcbiAgICAgICAgICBtZXNzYWdlOiBcIkFjY2VzcyBpcyBmb3JiaWRkZW4uXCJcblxuICAjIEJsb2NrIGFjY2VzcyB0byAvcmVhbHRpbWUvdjEvYXBpL3RlbmFudHNcbiAgLSBuYW1lOiByZWFsdGltZS12MS1yZXN0LXRlbmFudHNcbiAgICBfY29tbWVudDogJ1JlYWx0aW1lOiAvcmVhbHRpbWUvdjEvYXBpL3RlbmFudHMvKiAtPiBodHRwOi8vcmVhbHRpbWU6NDAwMC9hcGkvdGVuYW50cy8qIChibG9ja2VkKSdcbiAgICB1cmw6IGh0dHA6Ly9yZWFsdGltZTo0MDAwL2FwaS90ZW5hbnRzXG4gICAgcHJvdG9jb2w6IGh0dHBcbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IHJlYWx0aW1lLXYxLXJlc3QtdGVuYW50c1xuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL3JlYWx0aW1lL3YxL2FwaS90ZW5hbnRzXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogcmVxdWVzdC10ZXJtaW5hdGlvblxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgc3RhdHVzX2NvZGU6IDQwM1xuICAgICAgICAgIG1lc3NhZ2U6IFwiQWNjZXNzIGlzIGZvcmJpZGRlbi5cIlxuXG4gIC0gbmFtZTogcmVhbHRpbWUtdjEtcmVzdFxuICAgIF9jb21tZW50OiAnUmVhbHRpbWU6IC9yZWFsdGltZS92MS9hcGkvKiAtPiBodHRwOi8vcmVhbHRpbWU6NDAwMC9hcGkvKidcbiAgICB1cmw6IGh0dHA6Ly9yZWFsdGltZTo0MDAwL2FwaVxuICAgIHByb3RvY29sOiBodHRwXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiByZWFsdGltZS12MS1yZXN0XG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvcmVhbHRpbWUvdjEvYXBpXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuICAgICAgLSBuYW1lOiBrZXktYXV0aFxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgaGlkZV9jcmVkZW50aWFsczogZmFsc2VcbiAgICAgIC0gbmFtZTogcmVxdWVzdC10cmFuc2Zvcm1lclxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgYWRkOlxuICAgICAgICAgICAgaGVhZGVyczpcbiAgICAgICAgICAgICAgLSBcIkF1dGhvcml6YXRpb246ICRMVUFfQVVUSF9FWFBSXCJcbiAgICAgICAgICByZXBsYWNlOlxuICAgICAgICAgICAgaGVhZGVyczpcbiAgICAgICAgICAgICAgLSBcIkF1dGhvcml6YXRpb246ICRMVUFfQVVUSF9FWFBSXCJcbiAgICAgIC0gbmFtZTogYWNsXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2dyb3Vwc19oZWFkZXI6IHRydWVcbiAgICAgICAgICBhbGxvdzpcbiAgICAgICAgICAgIC0gYWRtaW5cbiAgICAgICAgICAgIC0gYW5vblxuXG4gICMjIFN0b3JhZ2Ugcm91dGVzXG4gIC0gbmFtZTogc3RvcmFnZS12MVxuICAgIF9jb21tZW50OiAnU3RvcmFnZTogL3N0b3JhZ2UvdjEvKiAtPiBodHRwOi8vc3RvcmFnZTo1MDAwLyonXG4gICAgdXJsOiBodHRwOi8vc3RvcmFnZTo1MDAwL1xuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogc3RvcmFnZS12MS1hbGxcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9zdG9yYWdlL3YxL1xuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IGNvcnNcbiAgICAgIC0gbmFtZTogcmVxdWVzdC10cmFuc2Zvcm1lclxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgYWRkOlxuICAgICAgICAgICAgaGVhZGVyczpcbiAgICAgICAgICAgICAgLSBcIkF1dGhvcml6YXRpb246ICRMVUFfQVVUSF9FWFBSXCJcbiAgICAgICAgICByZXBsYWNlOlxuICAgICAgICAgICAgaGVhZGVyczpcbiAgICAgICAgICAgICAgLSBcIkF1dGhvcml6YXRpb246ICRMVUFfQVVUSF9FWFBSXCJcbiAgICAgIC0gbmFtZTogcG9zdC1mdW5jdGlvblxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgYWNjZXNzOlxuICAgICAgICAgICAgLSB8XG4gICAgICAgICAgICAgIGxvY2FsIGF1dGggPSBrb25nLnJlcXVlc3QuZ2V0X2hlYWRlcihcImF1dGhvcml6YXRpb25cIilcbiAgICAgICAgICAgICAgaWYgYXV0aCA9PSBuaWwgb3IgYXV0aCA9PSBcIlwiIG9yIGF1dGg6ZmluZChcIl4lcyokXCIpIHRoZW5cbiAgICAgICAgICAgICAgICBrb25nLnNlcnZpY2UucmVxdWVzdC5jbGVhcl9oZWFkZXIoXCJhdXRob3JpemF0aW9uXCIpXG4gICAgICAgICAgICAgIGVuZFxuXG4gICMjIEVkZ2UgRnVuY3Rpb25zIHJvdXRlc1xuICAtIG5hbWU6IGZ1bmN0aW9ucy12MVxuICAgIF9jb21tZW50OiAnRWRnZSBGdW5jdGlvbnM6IC9mdW5jdGlvbnMvdjEvKiAtPiBodHRwOi8vZnVuY3Rpb25zOjkwMDAvKidcbiAgICB1cmw6IGh0dHA6Ly9mdW5jdGlvbnM6OTAwMC9cbiAgICByZWFkX3RpbWVvdXQ6IDE1MDAwMFxuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogZnVuY3Rpb25zLXYxLWFsbFxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL2Z1bmN0aW9ucy92MS9cbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG5cbiAgIyMgT0F1dGggMi4wIEF1dGhvcml6YXRpb24gU2VydmVyIE1ldGFkYXRhXG4gIC0gbmFtZTogd2VsbC1rbm93bi1vYXV0aFxuICAgIHVybDogaHR0cDovL2F1dGg6OTk5OS8ud2VsbC1rbm93bi9vYXV0aC1hdXRob3JpemF0aW9uLXNlcnZlclxuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogd2VsbC1rbm93bi1vYXV0aFxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gLy53ZWxsLWtub3duL29hdXRoLWF1dGhvcml6YXRpb24tc2VydmVyXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuXG4gICMjIFNlY3VyZSBEYXRhYmFzZSByb3V0ZXNcbiAgLSBuYW1lOiBtZXRhXG4gICAgX2NvbW1lbnQ6ICdwZy1tZXRhOiAvcGcvKiAtPiBodHRwOi8vcGctbWV0YTo4MDgwLyonXG4gICAgdXJsOiBodHRwOi8vbWV0YTo4MDgwL1xuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogbWV0YS1hbGxcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9wZy9cbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBrZXktYXV0aFxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgaGlkZV9jcmVkZW50aWFsczogZmFsc2VcbiAgICAgIC0gbmFtZTogYWNsXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2dyb3Vwc19oZWFkZXI6IHRydWVcbiAgICAgICAgICBhbGxvdzpcbiAgICAgICAgICAgIC0gYWRtaW5cblxuICAtIG5hbWU6IG1jcC1ibG9ja2VyXG4gICAgdXJsOiBodHRwOi8vc3R1ZGlvOjMwMDAvYXBpL21jcFxuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogbWNwLWJsb2NrZXItcm91dGVcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9hcGkvbWNwXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogcmVxdWVzdC10ZXJtaW5hdGlvblxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgc3RhdHVzX2NvZGU6IDQwM1xuICAgICAgICAgIG1lc3NhZ2U6IFwiQWNjZXNzIGlzIGZvcmJpZGRlbi5cIlxuXG4gIC0gbmFtZTogbWNwXG4gICAgdXJsOiBodHRwOi8vc3R1ZGlvOjMwMDAvYXBpL21jcFxuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogbWNwXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvbWNwXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogcmVxdWVzdC10ZXJtaW5hdGlvblxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgc3RhdHVzX2NvZGU6IDQwM1xuICAgICAgICAgIG1lc3NhZ2U6IFwiQWNjZXNzIGlzIGZvcmJpZGRlbi5cIlxuXG4gICMjIFByb3RlY3RlZCBEYXNoYm9hcmQgLSBjYXRjaCBhbGwgcmVtYWluaW5nIHJvdXRlc1xuICAtIG5hbWU6IGRhc2hib2FyZFxuICAgIF9jb21tZW50OiAnU3R1ZGlvOiAvKiAtPiBodHRwOi8vc3R1ZGlvOjMwMDAvKidcbiAgICB1cmw6IGh0dHA6Ly9zdHVkaW86MzAwMC9cbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IGRhc2hib2FyZC1hbGxcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9cbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gICAgICAtIG5hbWU6IGJhc2ljLWF1dGhcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGhpZGVfY3JlZGVudGlhbHM6IHRydWVcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuZmlsZVBhdGggPSBcIi92b2x1bWVzL3NuaXBwZXRzLy5naXRrZWVwXCJcbmNvbnRlbnQgPSBcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiL3ZvbHVtZXMvZGIvaW5pdC9kYXRhLnNxbFwiXG5jb250ZW50ID0gXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuZmlsZVBhdGggPSBcIi92b2x1bWVzL2RiL19zdXBhYmFzZS5zcWxcIlxuY29udGVudCA9IFwiXCJcIlxcXFxzZXQgcGd1c2VyIGBlY2hvIFwiJFBPU1RHUkVTX1VTRVJcImBcblxuQ1JFQVRFIERBVEFCQVNFIF9zdXBhYmFzZSBXSVRIIE9XTkVSIDpwZ3VzZXI7XG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbmZpbGVQYXRoID0gXCIvdm9sdW1lcy9kYi9qd3Quc3FsXCJcbmNvbnRlbnQgPSBcIlwiXCJcblxcXFxzZXQgand0X3NlY3JldCBgZWNobyBcIiRKV1RfU0VDUkVUXCJgXG5cXFxcc2V0IGp3dF9leHAgYGVjaG8gXCIkSldUX0VYUFwiYFxuXG5BTFRFUiBEQVRBQkFTRSBwb3N0Z3JlcyBTRVQgXCJhcHAuc2V0dGluZ3Muand0X3NlY3JldFwiIFRPIDonand0X3NlY3JldCc7XG5BTFRFUiBEQVRBQkFTRSBwb3N0Z3JlcyBTRVQgXCJhcHAuc2V0dGluZ3Muand0X2V4cFwiIFRPIDonand0X2V4cCc7XG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbmZpbGVQYXRoID0gXCIvdm9sdW1lcy9kYi9sb2dzLnNxbFwiXG5jb250ZW50ID0gXCJcIlwiXG5cXFxcc2V0IHBndXNlciBgZWNobyBcIiRQT1NUR1JFU19VU0VSXCJgXG5cblxcXFxjIF9zdXBhYmFzZVxuY3JlYXRlIHNjaGVtYSBpZiBub3QgZXhpc3RzIF9hbmFseXRpY3M7XG5hbHRlciBzY2hlbWEgX2FuYWx5dGljcyBvd25lciB0byA6cGd1c2VyO1xuXFxcXGMgcG9zdGdyZXNcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuZmlsZVBhdGggPSBcIi92b2x1bWVzL2RiL3Bvb2xlci5zcWxcIlxuY29udGVudCA9IFwiXCJcIlxuXFxcXHNldCBwZ3VzZXIgYGVjaG8gXCIkUE9TVEdSRVNfVVNFUlwiYFxuXG5cXFxcYyBfc3VwYWJhc2VcbmNyZWF0ZSBzY2hlbWEgaWYgbm90IGV4aXN0cyBfc3VwYXZpc29yO1xuYWx0ZXIgc2NoZW1hIF9zdXBhdmlzb3Igb3duZXIgdG8gOnBndXNlcjtcblxcXFxjIHBvc3RncmVzXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbmZpbGVQYXRoID0gXCIvdm9sdW1lcy9kYi9yZWFsdGltZS5zcWxcIlxuY29udGVudCA9IFwiXCJcIlxuXFxcXHNldCBwZ3VzZXIgYGVjaG8gXCIkUE9TVEdSRVNfVVNFUlwiYFxuXG5jcmVhdGUgc2NoZW1hIGlmIG5vdCBleGlzdHMgX3JlYWx0aW1lO1xuYWx0ZXIgc2NoZW1hIF9yZWFsdGltZSBvd25lciB0byA6cGd1c2VyO1xuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiL3ZvbHVtZXMvZGIvcm9sZXMuc3FsXCJcbmNvbnRlbnQgPSBcIlwiXCJcbi0tIE5PVEU6IGNoYW5nZSB0byB5b3VyIG93biBwYXNzd29yZHMgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzXG5cXFxcc2V0IHBncGFzcyBgZWNobyBcIiRQT1NUR1JFU19QQVNTV09SRFwiYFxuXG5BTFRFUiBVU0VSIGF1dGhlbnRpY2F0b3IgV0lUSCBQQVNTV09SRCA6J3BncGFzcyc7XG5BTFRFUiBVU0VSIHBnYm91bmNlciBXSVRIIFBBU1NXT1JEIDoncGdwYXNzJztcbkFMVEVSIFVTRVIgc3VwYWJhc2VfYXV0aF9hZG1pbiBXSVRIIFBBU1NXT1JEIDoncGdwYXNzJztcbkFMVEVSIFVTRVIgc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluIFdJVEggUEFTU1dPUkQgOidwZ3Bhc3MnO1xuQUxURVIgVVNFUiBzdXBhYmFzZV9zdG9yYWdlX2FkbWluIFdJVEggUEFTU1dPUkQgOidwZ3Bhc3MnO1xuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiL3ZvbHVtZXMvZGIvd2ViaG9va3Muc3FsXCJcbmNvbnRlbnQgPSBcIlwiXCJcbkJFR0lOO1xuICAtLSBDcmVhdGUgcGdfbmV0IGV4dGVuc2lvblxuICBDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGdfbmV0IFNDSEVNQSBleHRlbnNpb25zO1xuICAtLSBDcmVhdGUgc3VwYWJhc2VfZnVuY3Rpb25zIHNjaGVtYVxuICBDUkVBVEUgU0NIRU1BIHN1cGFiYXNlX2Z1bmN0aW9ucyBBVVRIT1JJWkFUSU9OIHN1cGFiYXNlX2FkbWluO1xuICBHUkFOVCBVU0FHRSBPTiBTQ0hFTUEgc3VwYWJhc2VfZnVuY3Rpb25zIFRPIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG4gIEFMVEVSIERFRkFVTFQgUFJJVklMRUdFUyBJTiBTQ0hFTUEgc3VwYWJhc2VfZnVuY3Rpb25zIEdSQU5UIEFMTCBPTiBUQUJMRVMgVE8gcG9zdGdyZXMsIGFub24sIGF1dGhlbnRpY2F0ZWQsIHNlcnZpY2Vfcm9sZTtcbiAgQUxURVIgREVGQVVMVCBQUklWSUxFR0VTIElOIFNDSEVNQSBzdXBhYmFzZV9mdW5jdGlvbnMgR1JBTlQgQUxMIE9OIEZVTkNUSU9OUyBUTyBwb3N0Z3JlcywgYW5vbiwgYXV0aGVudGljYXRlZCwgc2VydmljZV9yb2xlO1xuICBBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMgSU4gU0NIRU1BIHN1cGFiYXNlX2Z1bmN0aW9ucyBHUkFOVCBBTEwgT04gU0VRVUVOQ0VTIFRPIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG4gIC0tIHN1cGFiYXNlX2Z1bmN0aW9ucy5taWdyYXRpb25zIGRlZmluaXRpb25cbiAgQ1JFQVRFIFRBQkxFIHN1cGFiYXNlX2Z1bmN0aW9ucy5taWdyYXRpb25zIChcbiAgICB2ZXJzaW9uIHRleHQgUFJJTUFSWSBLRVksXG4gICAgaW5zZXJ0ZWRfYXQgdGltZXN0YW1wdHogTk9UIE5VTEwgREVGQVVMVCBOT1coKVxuICApO1xuICAtLSBJbml0aWFsIHN1cGFiYXNlX2Z1bmN0aW9ucyBtaWdyYXRpb25cbiAgSU5TRVJUIElOVE8gc3VwYWJhc2VfZnVuY3Rpb25zLm1pZ3JhdGlvbnMgKHZlcnNpb24pIFZBTFVFUyAoJ2luaXRpYWwnKTtcbiAgLS0gc3VwYWJhc2VfZnVuY3Rpb25zLmhvb2tzIGRlZmluaXRpb25cbiAgQ1JFQVRFIFRBQkxFIHN1cGFiYXNlX2Z1bmN0aW9ucy5ob29rcyAoXG4gICAgaWQgYmlnc2VyaWFsIFBSSU1BUlkgS0VZLFxuICAgIGhvb2tfdGFibGVfaWQgaW50ZWdlciBOT1QgTlVMTCxcbiAgICBob29rX25hbWUgdGV4dCBOT1QgTlVMTCxcbiAgICBjcmVhdGVkX2F0IHRpbWVzdGFtcHR6IE5PVCBOVUxMIERFRkFVTFQgTk9XKCksXG4gICAgcmVxdWVzdF9pZCBiaWdpbnRcbiAgKTtcbiAgQ1JFQVRFIElOREVYIHN1cGFiYXNlX2Z1bmN0aW9uc19ob29rc19yZXF1ZXN0X2lkX2lkeCBPTiBzdXBhYmFzZV9mdW5jdGlvbnMuaG9va3MgVVNJTkcgYnRyZWUgKHJlcXVlc3RfaWQpO1xuICBDUkVBVEUgSU5ERVggc3VwYWJhc2VfZnVuY3Rpb25zX2hvb2tzX2hfdGFibGVfaWRfaF9uYW1lX2lkeCBPTiBzdXBhYmFzZV9mdW5jdGlvbnMuaG9va3MgVVNJTkcgYnRyZWUgKGhvb2tfdGFibGVfaWQsIGhvb2tfbmFtZSk7XG4gIENPTU1FTlQgT04gVEFCTEUgc3VwYWJhc2VfZnVuY3Rpb25zLmhvb2tzIElTICdTdXBhYmFzZSBGdW5jdGlvbnMgSG9va3M6IEF1ZGl0IHRyYWlsIGZvciB0cmlnZ2VyZWQgaG9va3MuJztcbiAgQ1JFQVRFIEZVTkNUSU9OIHN1cGFiYXNlX2Z1bmN0aW9ucy5odHRwX3JlcXVlc3QoKVxuICAgIFJFVFVSTlMgdHJpZ2dlclxuICAgIExBTkdVQUdFIHBscGdzcWxcbiAgICBBUyAkZnVuY3Rpb24kXG4gICAgREVDTEFSRVxuICAgICAgcmVxdWVzdF9pZCBiaWdpbnQ7XG4gICAgICBwYXlsb2FkIGpzb25iO1xuICAgICAgdXJsIHRleHQgOj0gVEdfQVJHVlswXTo6dGV4dDtcbiAgICAgIG1ldGhvZCB0ZXh0IDo9IFRHX0FSR1ZbMV06OnRleHQ7XG4gICAgICBoZWFkZXJzIGpzb25iIERFRkFVTFQgJ3t9Jzo6anNvbmI7XG4gICAgICBwYXJhbXMganNvbmIgREVGQVVMVCAne30nOjpqc29uYjtcbiAgICAgIHRpbWVvdXRfbXMgaW50ZWdlciBERUZBVUxUIDEwMDA7XG4gICAgQkVHSU5cbiAgICAgIElGIHVybCBJUyBOVUxMIE9SIHVybCA9ICdudWxsJyBUSEVOXG4gICAgICAgIFJBSVNFIEVYQ0VQVElPTiAndXJsIGFyZ3VtZW50IGlzIG1pc3NpbmcnO1xuICAgICAgRU5EIElGO1xuXG4gICAgICBJRiBtZXRob2QgSVMgTlVMTCBPUiBtZXRob2QgPSAnbnVsbCcgVEhFTlxuICAgICAgICBSQUlTRSBFWENFUFRJT04gJ21ldGhvZCBhcmd1bWVudCBpcyBtaXNzaW5nJztcbiAgICAgIEVORCBJRjtcblxuICAgICAgSUYgVEdfQVJHVlsyXSBJUyBOVUxMIE9SIFRHX0FSR1ZbMl0gPSAnbnVsbCcgVEhFTlxuICAgICAgICBoZWFkZXJzID0gJ3tcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIn0nOjpqc29uYjtcbiAgICAgIEVMU0VcbiAgICAgICAgaGVhZGVycyA9IFRHX0FSR1ZbMl06Ompzb25iO1xuICAgICAgRU5EIElGO1xuXG4gICAgICBJRiBUR19BUkdWWzNdIElTIE5VTEwgT1IgVEdfQVJHVlszXSA9ICdudWxsJyBUSEVOXG4gICAgICAgIHBhcmFtcyA9ICd7fSc6Ompzb25iO1xuICAgICAgRUxTRVxuICAgICAgICBwYXJhbXMgPSBUR19BUkdWWzNdOjpqc29uYjtcbiAgICAgIEVORCBJRjtcblxuICAgICAgSUYgVEdfQVJHVls0XSBJUyBOVUxMIE9SIFRHX0FSR1ZbNF0gPSAnbnVsbCcgVEhFTlxuICAgICAgICB0aW1lb3V0X21zID0gMTAwMDtcbiAgICAgIEVMU0VcbiAgICAgICAgdGltZW91dF9tcyA9IFRHX0FSR1ZbNF06OmludGVnZXI7XG4gICAgICBFTkQgSUY7XG5cbiAgICAgIENBU0VcbiAgICAgICAgV0hFTiBtZXRob2QgPSAnR0VUJyBUSEVOXG4gICAgICAgICAgU0VMRUNUIGh0dHBfZ2V0IElOVE8gcmVxdWVzdF9pZCBGUk9NIG5ldC5odHRwX2dldChcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICB0aW1lb3V0X21zXG4gICAgICAgICAgKTtcbiAgICAgICAgV0hFTiBtZXRob2QgPSAnUE9TVCcgVEhFTlxuICAgICAgICAgIHBheWxvYWQgPSBqc29uYl9idWlsZF9vYmplY3QoXG4gICAgICAgICAgICAnb2xkX3JlY29yZCcsIE9MRCxcbiAgICAgICAgICAgICdyZWNvcmQnLCBORVcsXG4gICAgICAgICAgICAndHlwZScsIFRHX09QLFxuICAgICAgICAgICAgJ3RhYmxlJywgVEdfVEFCTEVfTkFNRSxcbiAgICAgICAgICAgICdzY2hlbWEnLCBUR19UQUJMRV9TQ0hFTUFcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgU0VMRUNUIGh0dHBfcG9zdCBJTlRPIHJlcXVlc3RfaWQgRlJPTSBuZXQuaHR0cF9wb3N0KFxuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICB0aW1lb3V0X21zXG4gICAgICAgICAgKTtcbiAgICAgICAgRUxTRVxuICAgICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnbWV0aG9kIGFyZ3VtZW50ICUgaXMgaW52YWxpZCcsIG1ldGhvZDtcbiAgICAgIEVORCBDQVNFO1xuXG4gICAgICBJTlNFUlQgSU5UTyBzdXBhYmFzZV9mdW5jdGlvbnMuaG9va3NcbiAgICAgICAgKGhvb2tfdGFibGVfaWQsIGhvb2tfbmFtZSwgcmVxdWVzdF9pZClcbiAgICAgIFZBTFVFU1xuICAgICAgICAoVEdfUkVMSUQsIFRHX05BTUUsIHJlcXVlc3RfaWQpO1xuXG4gICAgICBSRVRVUk4gTkVXO1xuICAgIEVORFxuICAkZnVuY3Rpb24kO1xuICAtLSBTdXBhYmFzZSBzdXBlciBhZG1pblxuICBET1xuICAkJFxuICBCRUdJTlxuICAgIElGIE5PVCBFWElTVFMgKFxuICAgICAgU0VMRUNUIDFcbiAgICAgIEZST00gcGdfcm9sZXNcbiAgICAgIFdIRVJFIHJvbG5hbWUgPSAnc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluJ1xuICAgIClcbiAgICBUSEVOXG4gICAgICBDUkVBVEUgVVNFUiBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4gTk9JTkhFUklUIENSRUFURVJPTEUgTE9HSU4gTk9SRVBMSUNBVElPTjtcbiAgICBFTkQgSUY7XG4gIEVORFxuICAkJDtcbiAgR1JBTlQgQUxMIFBSSVZJTEVHRVMgT04gU0NIRU1BIHN1cGFiYXNlX2Z1bmN0aW9ucyBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW47XG4gIEdSQU5UIEFMTCBQUklWSUxFR0VTIE9OIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHN1cGFiYXNlX2Z1bmN0aW9ucyBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW47XG4gIEdSQU5UIEFMTCBQUklWSUxFR0VTIE9OIEFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BIHN1cGFiYXNlX2Z1bmN0aW9ucyBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW47XG4gIEFMVEVSIFVTRVIgc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluIFNFVCBzZWFyY2hfcGF0aCA9IFwic3VwYWJhc2VfZnVuY3Rpb25zXCI7XG4gIEFMVEVSIHRhYmxlIFwic3VwYWJhc2VfZnVuY3Rpb25zXCIubWlncmF0aW9ucyBPV05FUiBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW47XG4gIEFMVEVSIHRhYmxlIFwic3VwYWJhc2VfZnVuY3Rpb25zXCIuaG9va3MgT1dORVIgVE8gc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluO1xuICBBTFRFUiBmdW5jdGlvbiBcInN1cGFiYXNlX2Z1bmN0aW9uc1wiLmh0dHBfcmVxdWVzdCgpIE9XTkVSIFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbjtcbiAgR1JBTlQgc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluIFRPIHBvc3RncmVzO1xuICAtLSBSZW1vdmUgdW51c2VkIHN1cGFiYXNlX3BnX25ldF9hZG1pbiByb2xlXG4gIERPXG4gICQkXG4gIEJFR0lOXG4gICAgSUYgRVhJU1RTIChcbiAgICAgIFNFTEVDVCAxXG4gICAgICBGUk9NIHBnX3JvbGVzXG4gICAgICBXSEVSRSByb2xuYW1lID0gJ3N1cGFiYXNlX3BnX25ldF9hZG1pbidcbiAgICApXG4gICAgVEhFTlxuICAgICAgUkVBU1NJR04gT1dORUQgQlkgc3VwYWJhc2VfcGdfbmV0X2FkbWluIFRPIHN1cGFiYXNlX2FkbWluO1xuICAgICAgRFJPUCBPV05FRCBCWSBzdXBhYmFzZV9wZ19uZXRfYWRtaW47XG4gICAgICBEUk9QIFJPTEUgc3VwYWJhc2VfcGdfbmV0X2FkbWluO1xuICAgIEVORCBJRjtcbiAgRU5EXG4gICQkO1xuICAtLSBwZ19uZXQgZ3JhbnRzIHdoZW4gZXh0ZW5zaW9uIGlzIGFscmVhZHkgZW5hYmxlZFxuICBET1xuICAkJFxuICBCRUdJTlxuICAgIElGIEVYSVNUUyAoXG4gICAgICBTRUxFQ1QgMVxuICAgICAgRlJPTSBwZ19leHRlbnNpb25cbiAgICAgIFdIRVJFIGV4dG5hbWUgPSAncGdfbmV0J1xuICAgIClcbiAgICBUSEVOXG4gICAgICBHUkFOVCBVU0FHRSBPTiBTQ0hFTUEgbmV0IFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbiwgcG9zdGdyZXMsIGFub24sIGF1dGhlbnRpY2F0ZWQsIHNlcnZpY2Vfcm9sZTtcbiAgICAgIEFMVEVSIGZ1bmN0aW9uIG5ldC5odHRwX2dldCh1cmwgdGV4dCwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBTRUNVUklUWSBERUZJTkVSO1xuICAgICAgQUxURVIgZnVuY3Rpb24gbmV0Lmh0dHBfcG9zdCh1cmwgdGV4dCwgYm9keSBqc29uYiwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBTRUNVUklUWSBERUZJTkVSO1xuICAgICAgQUxURVIgZnVuY3Rpb24gbmV0Lmh0dHBfZ2V0KHVybCB0ZXh0LCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIFNFVCBzZWFyY2hfcGF0aCA9IG5ldDtcbiAgICAgIEFMVEVSIGZ1bmN0aW9uIG5ldC5odHRwX3Bvc3QodXJsIHRleHQsIGJvZHkganNvbmIsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgU0VUIHNlYXJjaF9wYXRoID0gbmV0O1xuICAgICAgUkVWT0tFIEFMTCBPTiBGVU5DVElPTiBuZXQuaHR0cF9nZXQodXJsIHRleHQsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgRlJPTSBQVUJMSUM7XG4gICAgICBSRVZPS0UgQUxMIE9OIEZVTkNUSU9OIG5ldC5odHRwX3Bvc3QodXJsIHRleHQsIGJvZHkganNvbmIsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgRlJPTSBQVUJMSUM7XG4gICAgICBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIG5ldC5odHRwX2dldCh1cmwgdGV4dCwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4sIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG4gICAgICBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIG5ldC5odHRwX3Bvc3QodXJsIHRleHQsIGJvZHkganNvbmIsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgVE8gc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluLCBwb3N0Z3JlcywgYW5vbiwgYXV0aGVudGljYXRlZCwgc2VydmljZV9yb2xlO1xuICAgIEVORCBJRjtcbiAgRU5EXG4gICQkO1xuICAtLSBFdmVudCB0cmlnZ2VyIGZvciBwZ19uZXRcbiAgQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZXh0ZW5zaW9ucy5ncmFudF9wZ19uZXRfYWNjZXNzKClcbiAgUkVUVVJOUyBldmVudF90cmlnZ2VyXG4gIExBTkdVQUdFIHBscGdzcWxcbiAgQVMgJCRcbiAgQkVHSU5cbiAgICBJRiBFWElTVFMgKFxuICAgICAgU0VMRUNUIDFcbiAgICAgIEZST00gcGdfZXZlbnRfdHJpZ2dlcl9kZGxfY29tbWFuZHMoKSBBUyBldlxuICAgICAgSk9JTiBwZ19leHRlbnNpb24gQVMgZXh0XG4gICAgICBPTiBldi5vYmppZCA9IGV4dC5vaWRcbiAgICAgIFdIRVJFIGV4dC5leHRuYW1lID0gJ3BnX25ldCdcbiAgICApXG4gICAgVEhFTlxuICAgICAgR1JBTlQgVVNBR0UgT04gU0NIRU1BIG5ldCBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4sIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG4gICAgICBBTFRFUiBmdW5jdGlvbiBuZXQuaHR0cF9nZXQodXJsIHRleHQsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgU0VDVVJJVFkgREVGSU5FUjtcbiAgICAgIEFMVEVSIGZ1bmN0aW9uIG5ldC5odHRwX3Bvc3QodXJsIHRleHQsIGJvZHkganNvbmIsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgU0VDVVJJVFkgREVGSU5FUjtcbiAgICAgIEFMVEVSIGZ1bmN0aW9uIG5ldC5odHRwX2dldCh1cmwgdGV4dCwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBTRVQgc2VhcmNoX3BhdGggPSBuZXQ7XG4gICAgICBBTFRFUiBmdW5jdGlvbiBuZXQuaHR0cF9wb3N0KHVybCB0ZXh0LCBib2R5IGpzb25iLCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIFNFVCBzZWFyY2hfcGF0aCA9IG5ldDtcbiAgICAgIFJFVk9LRSBBTEwgT04gRlVOQ1RJT04gbmV0Lmh0dHBfZ2V0KHVybCB0ZXh0LCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIEZST00gUFVCTElDO1xuICAgICAgUkVWT0tFIEFMTCBPTiBGVU5DVElPTiBuZXQuaHR0cF9wb3N0KHVybCB0ZXh0LCBib2R5IGpzb25iLCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIEZST00gUFVCTElDO1xuICAgICAgR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBuZXQuaHR0cF9nZXQodXJsIHRleHQsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgVE8gc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluLCBwb3N0Z3JlcywgYW5vbiwgYXV0aGVudGljYXRlZCwgc2VydmljZV9yb2xlO1xuICAgICAgR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBuZXQuaHR0cF9wb3N0KHVybCB0ZXh0LCBib2R5IGpzb25iLCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbiwgcG9zdGdyZXMsIGFub24sIGF1dGhlbnRpY2F0ZWQsIHNlcnZpY2Vfcm9sZTtcbiAgICBFTkQgSUY7XG4gIEVORDtcbiAgJCQ7XG4gIENPTU1FTlQgT04gRlVOQ1RJT04gZXh0ZW5zaW9ucy5ncmFudF9wZ19uZXRfYWNjZXNzIElTICdHcmFudHMgYWNjZXNzIHRvIHBnX25ldCc7XG4gIERPXG4gICQkXG4gIEJFR0lOXG4gICAgSUYgTk9UIEVYSVNUUyAoXG4gICAgICBTRUxFQ1QgMVxuICAgICAgRlJPTSBwZ19ldmVudF90cmlnZ2VyXG4gICAgICBXSEVSRSBldnRuYW1lID0gJ2lzc3VlX3BnX25ldF9hY2Nlc3MnXG4gICAgKSBUSEVOXG4gICAgICBDUkVBVEUgRVZFTlQgVFJJR0dFUiBpc3N1ZV9wZ19uZXRfYWNjZXNzIE9OIGRkbF9jb21tYW5kX2VuZCBXSEVOIFRBRyBJTiAoJ0NSRUFURSBFWFRFTlNJT04nKVxuICAgICAgRVhFQ1VURSBQUk9DRURVUkUgZXh0ZW5zaW9ucy5ncmFudF9wZ19uZXRfYWNjZXNzKCk7XG4gICAgRU5EIElGO1xuICBFTkRcbiAgJCQ7XG4gIElOU0VSVCBJTlRPIHN1cGFiYXNlX2Z1bmN0aW9ucy5taWdyYXRpb25zICh2ZXJzaW9uKSBWQUxVRVMgKCcyMDIxMDgwOTE4MzQyM191cGRhdGVfZ3JhbnRzJyk7XG4gIEFMVEVSIGZ1bmN0aW9uIHN1cGFiYXNlX2Z1bmN0aW9ucy5odHRwX3JlcXVlc3QoKSBTRUNVUklUWSBERUZJTkVSO1xuICBBTFRFUiBmdW5jdGlvbiBzdXBhYmFzZV9mdW5jdGlvbnMuaHR0cF9yZXF1ZXN0KCkgU0VUIHNlYXJjaF9wYXRoID0gc3VwYWJhc2VfZnVuY3Rpb25zO1xuICBSRVZPS0UgQUxMIE9OIEZVTkNUSU9OIHN1cGFiYXNlX2Z1bmN0aW9ucy5odHRwX3JlcXVlc3QoKSBGUk9NIFBVQkxJQztcbiAgR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBzdXBhYmFzZV9mdW5jdGlvbnMuaHR0cF9yZXF1ZXN0KCkgVE8gcG9zdGdyZXMsIGFub24sIGF1dGhlbnRpY2F0ZWQsIHNlcnZpY2Vfcm9sZTtcbkNPTU1JVDtcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuZmlsZVBhdGggPSBcIi92b2x1bWVzL2Z1bmN0aW9ucy9oZWxsby9pbmRleC50c1wiXG5jb250ZW50ID0gXCJcIlwiXG4vLyBGb2xsb3cgdGhpcyBzZXR1cCBndWlkZSB0byBpbnRlZ3JhdGUgdGhlIERlbm8gbGFuZ3VhZ2Ugc2VydmVyIHdpdGggeW91ciBlZGl0b3I6XG4vLyBodHRwczovL2Rlbm8ubGFuZC9tYW51YWwvZ2V0dGluZ19zdGFydGVkL3NldHVwX3lvdXJfZW52aXJvbm1lbnRcbi8vIFRoaXMgZW5hYmxlcyBhdXRvY29tcGxldGUsIGdvIHRvIGRlZmluaXRpb24sIGV0Yy5cblxuaW1wb3J0IHsgc2VydmUgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTc3LjEvaHR0cC9zZXJ2ZXIudHNcIlxuXG5zZXJ2ZShhc3luYyAoKSA9PiB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UoXG4gICAgYFwiSGVsbG8gZnJvbSBFZGdlIEZ1bmN0aW9ucyFcImAsXG4gICAgeyBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0gfSxcbiAgKVxufSlcblxuLy8gVG8gaW52b2tlOlxuLy8gY3VybCAnaHR0cDovL2xvY2FsaG9zdDo8S09OR19IVFRQX1BPUlQ+L2Z1bmN0aW9ucy92MS9oZWxsbycgXFxcbi8vICAgLS1oZWFkZXIgJ0F1dGhvcml6YXRpb246IEJlYXJlciA8YW5vbi9zZXJ2aWNlX3JvbGUgQVBJIGtleT4nXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbmZpbGVQYXRoID0gXCIvdm9sdW1lcy9mdW5jdGlvbnMvbWFpbi9pbmRleC50c1wiXG5jb250ZW50ID0gXCJcIlwiaW1wb3J0ICogYXMgam9zZSBmcm9tICdqc3I6QHBhbnZhL2pvc2VANidcblxuY29uc29sZS5sb2coJ21haW4gZnVuY3Rpb24gc3RhcnRlZCcpXG5cbmNvbnN0IEpXVF9TRUNSRVQgPSBEZW5vLmVudi5nZXQoJ0pXVF9TRUNSRVQnKVxuY29uc3QgU1VQQUJBU0VfSldLUyA9IHBhcnNlSndrcyhEZW5vLmVudi5nZXQoJ1NVUEFCQVNFX0pXS1MnKSlcbmNvbnN0IFZFUklGWV9KV1QgPSBEZW5vLmVudi5nZXQoJ1ZFUklGWV9KV1QnKSA9PT0gJ3RydWUnXG5cbi8vIE9ubHkgdGhlIGJhcmUgYXJyYXkgcGFyc2luZyBpcyBjaGVja2VkIGhlcmUsICdqb3NlJyBkb2VzIHRoZSBrZXkgdmFsaWRhdGlvbi5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUp3a3MocmF3OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBqb3NlLkpTT05XZWJLZXlTZXQgfCBudWxsIHtcbiAgaWYgKCFyYXcpIHJldHVybiBudWxsXG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShyYXcpXG4gICAgaWYgKHBhcnNlZD8ua2V5cyAmJiBBcnJheS5pc0FycmF5KHBhcnNlZC5rZXlzKSkge1xuICAgICAgcmV0dXJuIHBhcnNlZCBhcyBqb3NlLkpTT05XZWJLZXlTZXRcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBdXRoVG9rZW4ocmVxOiBSZXF1ZXN0KSB7XG4gIGNvbnN0IGF1dGhIZWFkZXIgPSByZXEuaGVhZGVycy5nZXQoJ2F1dGhvcml6YXRpb24nKVxuICBpZiAoIWF1dGhIZWFkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgYXV0aG9yaXphdGlvbiBoZWFkZXInKVxuICB9XG4gIGNvbnN0IFtiZWFyZXIsIHRva2VuXSA9IGF1dGhIZWFkZXIuc3BsaXQoJyAnKVxuICBpZiAoYmVhcmVyICE9PSAnQmVhcmVyJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgQXV0aCBoZWFkZXIgaXMgbm90ICdCZWFyZXIge3Rva2VufSdgKVxuICB9XG4gIHJldHVybiB0b2tlblxufVxuXG5hc3luYyBmdW5jdGlvbiBpc1ZhbGlkTGVnYWN5SldUKGp3dDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmICghSldUX1NFQ1JFVCkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0pXVF9TRUNSRVQgbm90IGF2YWlsYWJsZSBmb3IgSFMyNTYgdG9rZW4gdmVyaWZpY2F0aW9uJylcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKClcbiAgY29uc3Qgc2VjcmV0S2V5ID0gZW5jb2Rlci5lbmNvZGUoSldUX1NFQ1JFVClcbiAgdHJ5IHtcbiAgICBhd2FpdCBqb3NlLmp3dFZlcmlmeShqd3QsIHNlY3JldEtleSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1N5bW1ldHJpYyBMZWdhY3kgSldUIHZlcmlmaWNhdGlvbiBlcnJvcicsIGUpXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNWYWxpZEpXVChqd3Q6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBpZiAoIVNVUEFCQVNFX0pXS1MpIHtcbiAgICBjb25zb2xlLmVycm9yKCdKV0tTIG5vdCBhdmFpbGFibGUgZm9yIEVTMjU2L1JTMjU2IHRva2VuIHZlcmlmaWNhdGlvbicpXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCBsb2NhbEp3a3MgPSBqb3NlLmNyZWF0ZUxvY2FsSldLU2V0KFNVUEFCQVNFX0pXS1MpXG4gICAgYXdhaXQgam9zZS5qd3RWZXJpZnkoand0LCBsb2NhbEp3a3MpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKCdBc3ltbWV0cmljIEpXVCB2ZXJpZmljYXRpb24gZXJyb3InLCBlKVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlzVmFsaWRIeWJyaWRKV1Qoand0OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgeyBhbGc6IGp3dEFsZ29yaXRobSB9ID0gam9zZS5kZWNvZGVQcm90ZWN0ZWRIZWFkZXIoand0KVxuICBpZiAoand0QWxnb3JpdGhtID09PSAnSFMyNTYnKSB7XG4gICAgcmV0dXJuIGF3YWl0IGlzVmFsaWRMZWdhY3lKV1Qoand0KVxuICB9XG4gIGlmIChqd3RBbGdvcml0aG0gPT09ICdFUzI1NicgfHwgand0QWxnb3JpdGhtID09PSAnUlMyNTYnKSB7XG4gICAgcmV0dXJuIGF3YWl0IGlzVmFsaWRKV1Qoand0KVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5EZW5vLnNlcnZlKGFzeW5jIChyZXE6IFJlcXVlc3QpID0+IHtcbiAgaWYgKHJlcS5tZXRob2QgIT09ICdPUFRJT05TJyAmJiBWRVJJRllfSldUKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRva2VuID0gZ2V0QXV0aFRva2VuKHJlcSlcbiAgICAgIGNvbnN0IGlzVmFsaWQgPSBhd2FpdCBpc1ZhbGlkSHlicmlkSldUKHRva2VuKVxuICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoeyBtc2c6ICdJbnZhbGlkIEpXVCcgfSksIHtcbiAgICAgICAgICBzdGF0dXM6IDQwMSxcbiAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpXG4gICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHsgbXNnOiBlLnRvU3RyaW5nKCkgfSksIHtcbiAgICAgICAgc3RhdHVzOiA0MDEsXG4gICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpXG4gIGNvbnN0IHsgcGF0aG5hbWUgfSA9IHVybFxuICBjb25zdCBwYXRoX3BhcnRzID0gcGF0aG5hbWUuc3BsaXQoJy8nKVxuICBjb25zdCBzZXJ2aWNlX25hbWUgPSBwYXRoX3BhcnRzWzFdXG5cbiAgaWYgKCFzZXJ2aWNlX25hbWUgfHwgc2VydmljZV9uYW1lID09PSAnJykge1xuICAgIGNvbnN0IGVycm9yID0geyBtc2c6ICdtaXNzaW5nIGZ1bmN0aW9uIG5hbWUgaW4gcmVxdWVzdCcgfVxuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoZXJyb3IpLCB7XG4gICAgICBzdGF0dXM6IDQwMCxcbiAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBzZXJ2aWNlUGF0aCA9IGAvaG9tZS9kZW5vL2Z1bmN0aW9ucy8ke3NlcnZpY2VfbmFtZX1gXG4gIGNvbnNvbGUuZXJyb3IoYHNlcnZpbmcgdGhlIHJlcXVlc3Qgd2l0aCAke3NlcnZpY2VQYXRofWApXG5cbiAgY29uc3QgbWVtb3J5TGltaXRNYiA9IDE1MFxuICBjb25zdCB3b3JrZXJUaW1lb3V0TXMgPSAxICogNjAgKiAxMDAwXG4gIGNvbnN0IG5vTW9kdWxlQ2FjaGUgPSBmYWxzZVxuICBjb25zdCBpbXBvcnRNYXBQYXRoID0gbnVsbFxuICBjb25zdCBlbnZWYXJzT2JqID0gRGVuby5lbnYudG9PYmplY3QoKVxuICBjb25zdCBlbnZWYXJzID0gT2JqZWN0LmtleXMoZW52VmFyc09iaikubWFwKChrKSA9PiBbaywgZW52VmFyc09ialtrXV0pXG5cbiAgdHJ5IHtcbiAgICBjb25zdCB3b3JrZXIgPSBhd2FpdCBFZGdlUnVudGltZS51c2VyV29ya2Vycy5jcmVhdGUoe1xuICAgICAgc2VydmljZVBhdGgsXG4gICAgICBtZW1vcnlMaW1pdE1iLFxuICAgICAgd29ya2VyVGltZW91dE1zLFxuICAgICAgbm9Nb2R1bGVDYWNoZSxcbiAgICAgIGltcG9ydE1hcFBhdGgsXG4gICAgICBlbnZWYXJzLFxuICAgIH0pXG4gICAgcmV0dXJuIGF3YWl0IHdvcmtlci5mZXRjaChyZXEpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zdCBlcnJvciA9IHsgbXNnOiBlLnRvU3RyaW5nKCkgfVxuICAgIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoZXJyb3IpLCB7XG4gICAgICBzdGF0dXM6IDUwMCxcbiAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxuICAgIH0pXG4gIH1cbn0pXG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbmZpbGVQYXRoID0gXCIvdm9sdW1lcy9wb29sZXIvcG9vbGVyLmV4c1wiXG5jb250ZW50ID0gXCJcIlwiezpvaywgX30gPSBBcHBsaWNhdGlvbi5lbnN1cmVfYWxsX3N0YXJ0ZWQoOnN1cGF2aXNvcilcblxuezpvaywgdmVyc2lvbn0gPVxuICBjYXNlIFN1cGF2aXNvci5SZXBvLnF1ZXJ5IShcInNlbGVjdCB2ZXJzaW9uKClcIikgZG9cbiAgICAle3Jvd3M6IFtbdmVyXV19IC0+IFN1cGF2aXNvci5IZWxwZXJzLnBhcnNlX3BnX3ZlcnNpb24odmVyKVxuICAgIF8gLT4gbmlsXG4gIGVuZFxuXG5wYXJhbXMgPSAle1xuICBcImV4dGVybmFsX2lkXCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT09MRVJfVEVOQU5UX0lEXCIpLFxuICBcImRiX2hvc3RcIiA9PiBTeXN0ZW0uZ2V0X2VudihcIlBPU1RHUkVTX0hPU1RcIikgfHwgXCJkYlwiLFxuICBcImRiX3BvcnRcIiA9PiBTeXN0ZW0uZ2V0X2VudihcIlBPU1RHUkVTX1BPUlRcIiksXG4gIFwiZGJfZGF0YWJhc2VcIiA9PiBTeXN0ZW0uZ2V0X2VudihcIlBPU1RHUkVTX0RCXCIpLFxuICBcInJlcXVpcmVfdXNlclwiID0+IGZhbHNlLFxuICBcImF1dGhfcXVlcnlcIiA9PiBcIlNFTEVDVCAqIEZST00gcGdib3VuY2VyLmdldF9hdXRoKCQxKVwiLFxuICBcImRlZmF1bHRfbWF4X2NsaWVudHNcIiA9PiBTeXN0ZW0uZ2V0X2VudihcIlBPT0xFUl9NQVhfQ0xJRU5UX0NPTk5cIiksXG4gIFwiZGVmYXVsdF9wb29sX3NpemVcIiA9PiBTeXN0ZW0uZ2V0X2VudihcIlBPT0xFUl9ERUZBVUxUX1BPT0xfU0laRVwiKSxcbiAgXCJkZWZhdWx0X3BhcmFtZXRlcl9zdGF0dXNcIiA9PiAle1wic2VydmVyX3ZlcnNpb25cIiA9PiB2ZXJzaW9ufSxcbiAgXCJ1c2Vyc1wiID0+IFsle1xuICAgIFwiZGJfdXNlclwiID0+IFwicGdib3VuY2VyXCIsXG4gICAgXCJkYl9wYXNzd29yZFwiID0+IFN5c3RlbS5nZXRfZW52KFwiUE9TVEdSRVNfUEFTU1dPUkRcIiksXG4gICAgXCJtb2RlX3R5cGVcIiA9PiBTeXN0ZW0uZ2V0X2VudihcIlBPT0xFUl9QT09MX01PREVcIiksXG4gICAgXCJwb29sX3NpemVcIiA9PiBTeXN0ZW0uZ2V0X2VudihcIlBPT0xFUl9ERUZBVUxUX1BPT0xfU0laRVwiKSxcbiAgICBcImlzX21hbmFnZXJcIiA9PiB0cnVlXG4gIH1dXG59XG5cbmlmICFTdXBhdmlzb3IuVGVuYW50cy5nZXRfdGVuYW50X2J5X2V4dGVybmFsX2lkKHBhcmFtc1tcImV4dGVybmFsX2lkXCJdKSBkb1xuICB7Om9rLCBffSA9IFN1cGF2aXNvci5UZW5hbnRzLmNyZWF0ZV90ZW5hbnQocGFyYW1zKVxuZW5kXG5cIlwiXCIiCn0=
The exact Docker Compose and template configuration this template deploys.
>= 0.22.5).POSTGRES_PASSWORD, JWT_SECRET, ANON_KEY, SERVICE_ROLE_KEY, DASHBOARD_PASSWORD, etc.). You can review them in the Environment tab of the service.The main domain of the template points to the kong API gateway (port 8000), which protects Supabase Studio with basic authentication:
DASHBOARD_USERNAME (default: supabase)DASHBOARD_PASSWORDBoth values are in the Environment tab of the service in Dokploy.
To connect an application (for example with supabase-js):
https://<your-domain> (requests are routed through Kong)ANON_KEY in the Environment tabSERVICE_ROLE_KEY in the Environment tab (server-side only, never expose it to browsers)sb_publishable_… / sb_secret_…)Dokploy also generates the newer opaque API keys, so you can use either style:
SUPABASE_PUBLISHABLE_KEY (browser-safe, replaces the anon key)SUPABASE_SECRET_KEY (server-side only, replaces the service_role key)Kong exchanges these for the matching JWT before the request reaches Supabase,
so clients never hold a decodable token. Both styles stay valid at the same time
— existing apps on ANON_KEY / SERVICE_ROLE_KEY keep working.
Everything is signed with the symmetric JWT_SECRET (HS256) by default. Moving
to an asymmetric key pair needs an EC P-256 key, which Dokploy's variable
helpers cannot generate, so JWT_KEYS and JWT_JWKS ship empty. To switch:
Clone the Supabase repo and go to its docker/ directory:
bash
Put this deployment's JWT_SECRET (from the Environment tab) into a local .env:
bash
Generate the keys:
bash
Replace all six values in the Environment tab with the ones it prints, then
redeploy: SUPABASE_PUBLISHABLE_KEY, SUPABASE_SECRET_KEY,
ANON_KEY_ASYMMETRIC, SERVICE_ROLE_KEY_ASYMMETRIC, JWT_KEYS, JWT_JWKS.
Set them all together. JWT_KEYS makes Auth sign tokens with ES256, while
JWT_JWKS is what PostgREST, Realtime, Storage and Edge Functions use to verify
them — filling in one without the other makes every authenticated request fail.
See https://supabase.com/docs/guides/self-hosting/self-hosted-auth-keys.
Review these variables in the Environment tab before using Supabase in production:
SUPABASE_PUBLIC_URL and API_EXTERNAL_URL: must point to your Supabase domain with the correct http/https scheme (the template sets them from your domain automatically).SITE_URL and ADDITIONAL_REDIRECT_URLS: must point to the application that uses Supabase for authentication.SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_ADMIN_EMAIL, SMTP_SENDER_NAME: required for auth emails (sign-up confirmations, password resets). The template ships with placeholder values, so no real emails are sent until you configure a real SMTP provider.The Postgres data directory (mounted at files/volumes/db/data) is initialized once, on the first deploy, using the value of POSTGRES_PASSWORD at that moment. The same password is also assigned to the internal Supabase roles (authenticator, pgbouncer, supabase_auth_admin, supabase_functions_admin, supabase_storage_admin) by an init script that only runs on first boot.
If you later change POSTGRES_PASSWORD in the Environment tab and redeploy, the password stored inside the database does not change. The other services will start using the new password while the database still expects the old one, and you will see errors such as invalid_password or password authentication failed.
To actually change the password, use one of these options:
db container (in Dokploy: your Supabase service, db container, Terminal) and run psql -U postgres.sql
POSTGRES_PASSWORD in the Environment tab to the same value and redeploy.Only if the instance has no data you care about: stop the service, delete the files/volumes/db/data directory of the service, set the new POSTGRES_PASSWORD, and deploy again. The database will be initialized from scratch with the new password.
Version: 1.25.04 / dokploy < 0.22.5
The open source Firebase alternative. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications. This is for dokploy version < 0.22.5.
Version: 1.9.5
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.
Version: 2.7.2
Autobase for PostgreSQL® is an open-source alternative to cloud-managed databases (self-hosted DBaaS).
Version: 8.3
pgAdmin is the most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world.
Version: latest
AdventureLog is an open-source activity tracker with maps, journaling, and Strava integration.
Version: latest
ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.
Dokploy is a free, open source deployment platform. Deploy SupaBase and 517+ other templates on your own infrastructure with a single click.