+ base64 -d + printf %s IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgVGVzdHMgaWYgdGhlIEFyZ29DRCBpbnN0YW5jZSBpcyBhdmFpbGFibGUgb24gdGhlIGNsdXN0ZXIgYnkgbG9nZ2luZyBpbi4KIwojIFVzZXMgdGhlIEFyZ29DRCBzZXNzaW9uLCBjcmVhdGVkIGJ5IHByZXZpb3VzbHkgcnVubmluZyAiYXJnb2NkIGxvZ2luIiwgdG8KIyBnZW5lcmF0ZSBhbiBhY2NvdW50IHRva2VuLiBUaGUgaW5mb3JtYXRpb24gaXMgdGhlbiBzdG9yZWQgaW4gYSBrdWJlcm5ldGVzCiMgc2VjcmV0LgojCnNob3B0IC1zIGluaGVyaXRfZXJyZXhpdApzZXQgLW8gZXJyZXhpdApzZXQgLW8gZXJydHJhY2UKc2V0IC1vIG5vdW5zZXQKc2V0IC1vIHBpcGVmYWlsCgp1c2FnZSgpIHsKICAgIGVjaG8gIgpVc2FnZToKICAgICR7MCMjKi99IFtvcHRpb25zXSBDT01NQU5ECgpDb21tYW5kczoKICAgIGdlbmVyYXRlCiAgICAgICAgR2VuZXJhdGUgdGhlIEFQSSB0b2tlbgogICAgbG9naW4KCQlUZXN0IGxvZ2luIHRvIHRoZSBBcmdvQ0QgaW5zdGFuY2UuCiAgICBzdG9yZQogICAgICAgIFN0b3JlIHRoZSBBUEkgdG9rZW4gYW5kIHJlbGV2YW50IGluZm9ybWF0aW9uCiAgICAgICAgaW4gdGhlIGludGVncmF0aW9uIHNlY3JldC4KT3B0aW9uYWwgYXJndW1lbnRzOgogICAgLWQsIC0tZGVidWcKICAgICAgICBBY3RpdmF0ZSB0cmFjaW5nL2RlYnVnIG1vZGUuCiAgICAtaCwgLS1oZWxwCiAgICAgICAgRGlzcGxheSB0aGlzIG1lc3NhZ2UuCgpFeGFtcGxlOgogICAgJHswIyMqL30gbG9naW4KIiA+JjIKfQoKcGFyc2VfYXJncygpIHsKICAgIE5BTUVTUEFDRT0iJHtOQU1FU1BBQ0U6LXRzc2N9IgogICAgd2hpbGUgW1sgJCMgLWd0IDAgXV07IGRvCiAgICAgICAgY2FzZSAiJDEiIGluCiAgICAgICAgZ2VuZXJhdGV8bG9naW58c3RvcmUpCiAgICAgICAgICAgIFNVQkNPTU1BTkQ9IiQxIgogICAgICAgICAgICA7OwogICAgICAgIC1kIHwgLS1kZWJ1ZykKICAgICAgICAgICAgc2V0IC14CiAgICAgICAgICAgIERFQlVHPSItLWRlYnVnIgogICAgICAgICAgICBleHBvcnQgREVCVUcKICAgICAgICAgICAgaW5mbyAiUnVubmluZyBzY3JpcHQgYXM6ICQoaWQpIgogICAgICAgICAgICA7OwogICAgICAgIC1oIHwgLS1oZWxwKQogICAgICAgICAgICB1c2FnZQogICAgICAgICAgICBleGl0IDAKICAgICAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBmYWlsICJVbnN1cHBvcnRlZCBhcmd1bWVudDogJyQxJy4iCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYwogICAgICAgIHNoaWZ0CiAgICBkb25lCiAgICBpZiBbWyAteiAiJHtTVUJDT01NQU5EOi19IiBdXTsgdGhlbgogICAgICAgIGZhaWwgIk1pc3Npbmcgc3ViY29tbWFuZC4iCiAgICBmaQp9CgpmYWlsKCkgewogICAgZWNobyAiIyBbRVJST1JdICR7Kn0iID4mMgogICAgZXhpdCAxCn0KCmluZm8oKSB7CiAgICBlY2hvICIjIFtJTkZPXSAkeyp9Igp9CgojCiMgRnVuY3Rpb25zCiMKCiMgQXNzZXJ0cyB0aGUgcmVxdWlyZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzLgphc3NlcnRfdmFyaWFibGVzKCkgewogICAgIyBBcmdvQ0QgaG9zdG5hbWUgKEZRRE4pIHRvIHRlc3QuCiAgICBkZWNsYXJlIC1yIEFSR09DRF9IT1NUTkFNRT0iJHtBUkdPQ0RfSE9TVE5BTUU6LX0iCiAgICAjIEFyZ29DRCB1c2VybmFtZSB0byB1c2UgZm9yIGxvZ2luLgogICAgZGVjbGFyZSAtciBBUkdPQ0RfVVNFUj0iJHtBUkdPQ0RfVVNFUjotYWRtaW59IgogICAgIyBBcmdvQ0QgcGFzc3dvcmQgdG8gdXNlIGZvciBsb2dpbi4KICAgIGRlY2xhcmUgLXIgQVJHT0NEX1BBU1NXT1JEPSIke0FSR09DRF9QQVNTV09SRDotfSIKICAgICMgRW52aXJvbm1lbnQgZmlsZSB0byBzdG9yZSB0aGUgQXJnb0NEIGNyZWRlbnRpYWxzLgogICAgZGVjbGFyZSAtciBBUkdPQ0RfRU5WX0ZJTEU9IiR7QVJHT0NEX0VOVl9GSUxFOi0vdHNzYy9hcmdvY2QvZW52fSIKICAgICMgVGFyZ2V0IHNlY3JldCBuYW1lLCB0byBiZSBjcmVhdGVkIHdpdGggQXJnb0NEIGNyZWRlbnRpYWxzLgogICAgZGVjbGFyZSAtciBTRUNSRVRfTkFNRT0iJHtTRUNSRVRfTkFNRTotdHNzYy1hcmdvY2QtaW50ZWdyYXRpb259IgogICAgIyBTZWNyZXQncyBuYW1lc3BhY2UuCiAgICBkZWNsYXJlIC1yIE5BTUVTUEFDRT0iJHtOQU1FU1BBQ0U6LX0iCgogICAgY2FzZSAiJHtTVUJDT01NQU5EfSIgaW4KICAgICAgICBsb2dpbiB8IGdlbmVyYXRlKQogICAgICAgICAgICBbWyAteiAiJHtBUkdPQ0RfSE9TVE5BTUV9IiBdXSAmJgogICAgICAgICAgICAgICAgZmFpbCAiQVJHT0NEX0hPU1ROQU1FIGlzIG5vdCBzZXQhIgogICAgICAgICAgICBbWyAteiAiJHtBUkdPQ0RfVVNFUn0iIF1dICYmCiAgICAgICAgICAgICAgICBmYWlsICJBUkdPQ0RfVVNFUiBpcyBub3Qgc2V0ISIKICAgICAgICAgICAgW1sgLXogIiR7QVJHT0NEX1BBU1NXT1JEfSIgXV0gJiYKICAgICAgICAgICAgICAgIGZhaWwgIkFSR09DRF9QQVNTV09SRCBpcyBub3Qgc2V0ISIKICAgICAgICAgICAgOzsKICAgICAgICBzdG9yZSkKICAgICAgICAgICAgW1sgLXogIiR7TkFNRVNQQUNFfSIgXV0gJiYKICAgICAgICAgICAgICAgIGZhaWwgIk5BTUVTUEFDRSBpcyBub3Qgc2V0ISIKICAgICAgICAgICAgW1sgLXogIiR7U0VDUkVUX05BTUV9IiBdXSAmJgogICAgICAgICAgICAgICAgZmFpbCAiU0VDUkVUX05BTUUgaXMgbm90IHNldCEiCiAgICAgICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgZmFpbCAiSW52YWxpZCBzdWJjb21tYW5kIHByb3ZpZGVkOiAnJHtTVUJDT01NQU5EfScuIgogICAgICAgICAgICA7OwogICAgZXNhYwogICAgaW5mbyAiIyBBbGwgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBzZXQiCn0KCiMgRXhlY3V0ZXMgdGhlIEFyZ29DRCBsb2dpbiBjb21tYW5kLgphcmdvY2RfbG9naW4oKSB7CiAgICBhcmdvY2QgbG9naW4gIiR7QVJHT0NEX0hPU1ROQU1FfSIgXAogICAgICAgIC0tZ3JwYy13ZWIgXAogICAgICAgIC0taW5zZWN1cmUgXAogICAgICAgIC0tc2tpcC10ZXN0LXRscyBcCiAgICAgICAgLS1odHRwLXJldHJ5LW1heD0iNSIgXAogICAgICAgIC0tdXNlcm5hbWU9IiR7QVJHT0NEX1VTRVJ9IiBcCiAgICAgICAgLS1wYXNzd29yZD0iJHtBUkdPQ0RfUEFTU1dPUkR9Igp9CgojIFJldHJpZXMgYSBmZXcgdGltZXMgdW50aWwgdGhlIEFyZ29DRCBpbnN0YW5jZSBpcyBhdmFpbGFibGUuCnRlc3RfYXJnb2NkX2xvZ2luKCkgewogICAgaW5mbyAiIyBMb2dnaW5nIGludG8gQXJnb0NEIG9uICcke0FSR09DRF9IT1NUTkFNRX0nLi4uIgogICAgZm9yIGkgaW4gezEuLjMwfTsgZG8KICAgICAgICB3YWl0PSQoKGkgKiA1KSkKICAgICAgICBlY2hvICIjIyMgWyR7aX0vMzBdIFdhaXRpbmcgZm9yICR7d2FpdH0gc2Vjb25kcyBiZWZvcmUgcmV0cnlpbmcuLi4iCiAgICAgICAgc2xlZXAgJHt3YWl0fQoKICAgICAgICBlY2hvICIjIFske2l9LzMwXSBUZXN0aW5nIEFyZ29DRCBsb2dpbiBvbiAnJHtBUkdPQ0RfSE9TVE5BTUV9Jy4uLiIKICAgICAgICBpZiBhcmdvY2RfbG9naW47IHRoZW4KICAgICAgICAgICAgaW5mbyAiIyBBcmdvQ0QgaXMgYXZhaWxhYmxlOiAnJHtBUkdPQ0RfSE9TVE5BTUV9JyIKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICBmaQogICAgZG9uZQogICAgZmFpbCAiQ291bGQgbm90IGxvZyBpbnRvIEFyZ29DRC4iCn0KCiMgR2VuZXJhdGVzIHRoZSBBcmdvQ0QgQVBJIHRva2VuLgphcmdvY2RfZ2VuZXJhdGVfdG9rZW4oKSB7CiAgICBpbmZvICIjIEdlbmVyYXRpbmcgQXJnb0NEIEFQSSB0b2tlbiBvbiAnJHtBUkdPQ0RfSE9TVE5BTUV9Jy4uLiIKICAgIEFSR09DRF9BUElfVE9LRU49IiQoCiAgICAgICAgYXJnb2NkIGFjY291bnQgZ2VuZXJhdGUtdG9rZW4gXAogICAgICAgICAgICAtLWdycGMtd2ViIFwKICAgICAgICAgICAgLS1pbnNlY3VyZSBcCiAgICAgICAgICAgIC0taHR0cC1yZXRyeS1tYXg9IjUiIFwKICAgICAgICAgICAgLS1hY2NvdW50PSIke0FSR09DRF9VU0VSfSIKICAgICkiIHx8IGZhaWwgIkFyZ29DRCBBUEkgdG9rZW4gY291bGQgbm90IGJlIGdlbmVyYXRlZCEiCiAgICBpZiBbWyAiJHs/fSIgLW5lIDAgfHwgLXogIiR7QVJHT0NEX0FQSV9UT0tFTn0iIF1dOyB0aGVuCiAgICAgICAgZmFpbCAiQXJnb0NEIEFQSSB0b2tlbiBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkISIKICAgIGZpCgogICAgaW5mbyAiIyBTdG9yaW5nIEFyZ29DRCBBUEkgY3JlZGVudGlhbHMgaW4gJyR7QVJHT0NEX0VOVl9GSUxFfScuLi4iCiAgICBjYXQgPDxFT0YgPiIke0FSR09DRF9FTlZfRklMRX0iIHx8IGZhaWwgIkZhaWwgdG8gd3JpdGUgJyR7QVJHT0NEX0VOVl9GSUxFfSchIgpBUkdPQ0RfSE9TVE5BTUU9JHtBUkdPQ0RfSE9TVE5BTUV9CkFSR09DRF9VU0VSPSR7QVJHT0NEX1VTRVJ9CkFSR09DRF9QQVNTV09SRD0ke0FSR09DRF9QQVNTV09SRH0KQVJHT0NEX0FQSV9UT0tFTj0ke0FSR09DRF9BUElfVE9LRU59CkVPRgoKICAgIGluZm8gIiMgQXJnb0NEIEFQSSB0b2tlbiBnZW5lcmF0ZWQgc3VjY2Vzc2Z1bGx5ISIKfQoKIyBXYWl0cyBmb3IgdGhlIGVudmlyb25tZW50IGZpbGUgdG8gYmUgYXZhaWxhYmxlLgp3YWl0X2Zvcl9lbnZfZmlsZSgpIHsKICAgIGluZm8gIiMgV2FpdGluZyBmb3IgJyR7QVJHT0NEX0VOVl9GSUxFfScgdG8gYmUgYXZhaWxhYmxlLi4uIgogICAgZm9yIGkgaW4gezEuLjMwfTsgZG8KICAgICAgICB3YWl0PSQoKGkgKiA1KSkKICAgICAgICBlY2hvICIjIyMgWyR7aX0vMzBdIFdhaXRpbmcgZm9yICcke0FSR09DRF9FTlZfRklMRX0nIHRvIGJlIGF2YWlsYWJsZS4uLiIKICAgICAgICBzbGVlcCAke3dhaXR9CgogICAgICAgIGlmIFtbIC1yICIke0FSR09DRF9FTlZfRklMRX0iIF1dOyB0aGVuCiAgICAgICAgICAgIGluZm8gIiMgJyR7QVJHT0NEX0VOVl9GSUxFfScgZm91bmQgYW5kIHJlYWRhYmxlLiIKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICBmaQogICAgZG9uZQogICAgZmFpbCAiQVJHT0NEX0VOVl9GSUxFPScke0FSR09DRF9FTlZfRklMRX0nIG5vdCBmb3VuZCBvciBub3QgcmVhZGFibGUhIgp9CgojIFN0b3JlcyB0aGUgQXJnb0NEIGNyZWRlbnRpYWxzIGluIGEgS3ViZXJuZXRlcyBzZWNyZXQuCmFyZ29jZF9zdG9yZV9jcmVkZW50aWFscygpIHsKICAgICMgVXNpbmcgdGhlIGRyeS1ydW4gZmxhZyB0byBnZW5lcmF0ZSB0aGUgc2VjcmV0IHBheWxvYWQsIGFuZCBsYXRlciBvbiAia3ViZWN0bAogICAgIyBhcHBseSIgdG8gY3JlYXRlLCBvciB1cGRhdGUsIHRoZSBzZWNyZXQgcGF5bG9hZCBpbiB0aGUgY2x1c3Rlci4KICAgIGluZm8gIiMgQ3JlYXRpbmcgc2VjcmV0ICcke1NFQ1JFVF9OQU1FfScgaW4gbmFtZXNwYWNlICcke05BTUVTUEFDRX0nIGZyb20gJyR7QVJHT0NEX0VOVl9GSUxFfScuLi4iCiAgICBpZiAhICgKICAgICAgICBrdWJlY3RsIGNyZWF0ZSBzZWNyZXQgZ2VuZXJpYyAiJHtTRUNSRVRfTkFNRX0iIFwKICAgICAgICAgICAgLS1uYW1lc3BhY2U9IiR7TkFNRVNQQUNFfSIgXAogICAgICAgICAgICAtLWZyb20tZW52LWZpbGU9IiR7QVJHT0NEX0VOVl9GSUxFfSIgXAogICAgICAgICAgICAtLWRyeS1ydW49ImNsaWVudCIgXAogICAgICAgICAgICAtLW91dHB1dD0ieWFtbCIgfAogICAgICAgICAgICBrdWJlY3RsIGFwcGx5IC1mIC0KICAgICk7IHRoZW4KICAgICAgICBmYWlsICJTZWNyZXQgJyR7U0VDUkVUX05BTUV9JyBjb3VsZCBub3QgYmUgY3JlYXRlZC4iCiAgICBmaQogICAgaW5mbyAiIyBBcmdvQ0QgQVBJIGNyZWRlbnRpYWxzIHN0b3JlZCBzdWNjZXNzZnVsbHkuIgp9CgojCiMgTWFpbgojCm1haW4oKSB7CiAgICBwYXJzZV9hcmdzICIkQCIKCiAgICBhc3NlcnRfdmFyaWFibGVzCgogICAgY2FzZSAiJHtTVUJDT01NQU5EfSIgaW4KICAgIGxvZ2luKQogICAgICAgIHRlc3RfYXJnb2NkX2xvZ2luCiAgICAgICAgOzsKICAgIGdlbmVyYXRlKQogICAgICAgIHRlc3RfYXJnb2NkX2xvZ2luCiAgICAgICAgYXJnb2NkX2dlbmVyYXRlX3Rva2VuCiAgICAgICAgOzsKICAgIHN0b3JlKQogICAgICAgIHdhaXRfZm9yX2Vudl9maWxlCiAgICAgICAgYXJnb2NkX3N0b3JlX2NyZWRlbnRpYWxzCiAgICAgICAgOzsKICAgICopCiAgICAgICAgZmFpbCAiSW52YWxpZCBzdWJjb21tYW5kIHByb3ZpZGVkOiAnJHtTVUJDT01NQU5EfScuICIgXAogICAgICAgICAgICAiVXNlICdsb2dpbicsICdnZW5lcmF0ZScgb3IgJ3N0b3JlJyEiCiAgICAgICAgOzsKICAgIGVzYWMKfQoKaWYgWyAiJHtCQVNIX1NPVVJDRVswXX0iID09ICIkMCIgXTsgdGhlbgogICAgbWFpbiAiJEAiCiAgICBlY2hvCiAgICBlY2hvICJTdWNjZXNzIgpmaQo= + chmod +x argocd-helper.sh + printf %s IyEvdXNyL2Jpbi9lbnYgYmFzaAojCiMgUnVucyAib2Mgcm9sbG91dCBzdGF0dXMiIGZvciBjb25maWd1cmVkIG5hbWVzcGFjZSwgcmVzb3VyY2UgdHlwZSwgYW5kIHNlbGVjdG9ycy4KIwpzaG9wdCAtcyBpbmhlcml0X2VycmV4aXQKc2V0IC1vIGVycmV4aXQKc2V0IC1vIGVycnRyYWNlCnNldCAtbyBub3Vuc2V0CnNldCAtbyBwaXBlZmFpbAoKdXNhZ2UoKSB7CiAgICBlY2hvICIKVXNhZ2U6CiAgICAkezAjIyovfQoKT3B0aW9uYWwgYXJndW1lbnRzOgogICAgLWQsIC0tZGVidWcKICAgICAgICBBY3RpdmF0ZSB0cmFjaW5nL2RlYnVnIG1vZGUuCiAgICAtaCwgLS1oZWxwCiAgICAgICAgRGlzcGxheSB0aGlzIG1lc3NhZ2UuCgpFeGFtcGxlOgogICAgXCQgZXhwb3J0IE5BTUVTUEFDRT1cIm5hbWVzcGFjZVwiCiAgICBcJCBleHBvcnQgUkVTT1VSQ0VfVFlQRT1cImRlcGxveW1lbnRcIgogICAgJHswIyMqL30gPFJFU09VUkNFX1NFTEVDVE9SUz4KIiA+JjIKfQoKcGFyc2VfYXJncygpIHsKICAgIFJFU09VUkNFX1NFTEVDVE9SUz0oKQogICAgd2hpbGUgW1sgJCMgLWd0IDAgXV07IGRvCiAgICAgICAgY2FzZSAiJDEiIGluCiAgICAgICAgLWQgfCAtLWRlYnVnKQogICAgICAgICAgICBzZXQgLXgKICAgICAgICAgICAgREVCVUc9Ii0tZGVidWciCiAgICAgICAgICAgIGV4cG9ydCBERUJVRwogICAgICAgICAgICBpbmZvICJSdW5uaW5nIHNjcmlwdCBhczogJChpZCkiCiAgICAgICAgICAgIDs7CiAgICAgICAgLWggfCAtLWhlbHApCiAgICAgICAgICAgIHVzYWdlCiAgICAgICAgICAgIGV4aXQgMAogICAgICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgICMgVGhlICJyb2xsb3V0IHN0YXR1cyIgc2VsZWN0b3JzLCB0byBmaW5kIHRoZSBhY3R1YWwgcmVzb3VyY2UgdG8gY2hlY2sgZm9yCiAgICAgICAgICAgICMgc3VjY2Vzc2Z1bCByb2xsb3V0LgogICAgICAgICAgICBSRVNPVVJDRV9TRUxFQ1RPUlMrPSgiJDEiKQogICAgICAgICAgICA7OwogICAgICAgIGVzYWMKICAgICAgICBzaGlmdAogICAgZG9uZQp9CgpmYWlsKCkgewogICAgZWNobyAiIyBbRVJST1JdICR7Kn0iID4mMgogICAgZXhpdCAxCn0KCndhcm5pbmcoKSB7CiAgICBlY2hvICIjIFtXQVJOSU5HXSAkeyp9Igp9CgppbmZvKCkgewogICAgZWNobyAiIyBbSU5GT10gJHsqfSIKfQoKIwojIEZ1bmN0aW9ucwojCgpyb2xsb3V0X3N0YXR1cygpIHsKICAgIG9jIHJvbGxvdXQgc3RhdHVzICIke1JFU09VUkNFX1RZUEV9IiBcCiAgICAgICAgLS1uYW1lc3BhY2U9IiR7TkFNRVNQQUNFfSIgXAogICAgICAgIC0td2F0Y2ggXAogICAgICAgIC0tdGltZW91dD0xMHMgXAogICAgICAgIC0tc2VsZWN0b3I9IiR7MX0iCn0KCmFzc2VydF9yZXNvdXJjZV9leGlzdHMoKSB7CiAgICBsb2NhbCBzZWxlY3Rvcj0iJHsxfSIKICAgIGxvY2FsIG91dHB1dAogICAgb3V0cHV0PSQoCiAgICAgICAgb2MgZ2V0ICIke1JFU09VUkNFX1RZUEV9IiBcCiAgICAgICAgICAgIC0tbmFtZXNwYWNlPSIke05BTUVTUEFDRX0iIFwKICAgICAgICAgICAgLS1zZWxlY3Rvcj0iJHtzZWxlY3Rvcn0iIDI+JjEKICAgICkKICAgIGxvY2FsIHN0YXR1cz0kez99CiAgICBpZiBbWyAkc3RhdHVzIC1lcSAwICYmICRvdXRwdXQgIT0gIk5vIHJlc291cmNlcyBmb3VuZCIqIF1dOyB0aGVuCiAgICAgICAgaW5mbyAiUmVzb3VyY2Ugb2YgdHlwZSAnJHtSRVNPVVJDRV9UWVBFfScgd2l0aCBzZWxlY3RvciIgXAogICAgICAgICAgICAiJyR7c2VsZWN0b3J9JyBleGlzdHMgaW4gbmFtZXNwYWNlICcke05BTUVTUEFDRX0nISIKICAgICAgICByZXR1cm4gMAogICAgZmkKCiAgICB3YXJuaW5nICJSZXNvdXJjZSBvZiB0eXBlICcke1JFU09VUkNFX1RZUEV9JyB3aXRoIHNlbGVjdG9yIiBcCiAgICAgICAgIicke3NlbGVjdG9yfScgZG9lcyBub3QgZXhpc3QgaW4gbmFtZXNwYWNlICcke05BTUVTUEFDRX0nLiIKICAgIHJldHVybiAxCn0KCndhaXRfZm9yX3Jlc291cmNlKCkgewogICAgZm9yIHMgaW4gIiR7UkVTT1VSQ0VfU0VMRUNUT1JTW0BdfSI7IGRvCiAgICAgICAgZWNobyAiIyBDaGVja2luZyBpZiAke1JFU09VUkNFX1RZUEV9IHdpdGggc2VsZWN0b3IgJyR7c30nIGV4aXN0cy4uLiIKICAgICAgICBpZiAhIGFzc2VydF9yZXNvdXJjZV9leGlzdHMgIiR7c30iOyB0aGVuCiAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgZmkKCiAgICAgICAgZWNobyAiIyBDaGVja2luZyBpZiAke1JFU09VUkNFX1RZUEV9IHdpdGggc2VsZWN0b3IgJyR7c30nIGlzIHJlYWR5Li4uIgogICAgICAgIGlmICEgcm9sbG91dF9zdGF0dXMgIiR7c30iOyB0aGVuCiAgICAgICAgICAgIGVjaG8gLWVuICIjXG4jIFdBUk5JTkc6ICR7UkVTT1VSQ0VfVFlQRX0gJyR7c30nIGlzIG5vdCByZWFkeSFcbiNcbiIKICAgICAgICAgICAgcmV0dXJuIDEKICAgICAgICBmaQogICAgICAgIGluZm8gIiR7UkVTT1VSQ0VfVFlQRX0gb2JqZWN0cyB3aXRoICcke3N9JyBzZWxlY3RvciBhcmUgcmVhZHkhIgogICAgZG9uZQogICAgcmV0dXJuIDAKfQoKdGVzdF9yb2xsb3V0X3N0YXR1cygpIHsKICAgIFtbIC16ICIke05BTUVTUEFDRX0iIF1dICYmIHVzYWdlCiAgICBbWyAteiAiJHtSRVNPVVJDRV9UWVBFfSIgXV0gJiYgdXNhZ2UKICAgIFtbICR7I1JFU09VUkNFX1NFTEVDVE9SU1tAXX0gLWVxIDAgXV0gJiYgdXNhZ2UKCiAgICBmb3IgaSBpbiAkKHNlcSAxICIke1JFVFJJRVN9Iik7IGRvCiAgICAgICAgd2FpdD0kKChpICogNSkpCiAgICAgICAgW1sgJHdhaXQgLWd0IDMwICBdXSAmJiB3YWl0PTMwCiAgICAgICAgZWNobyAiIyMjIFske2l9LyR7UkVUUklFU31dIFdhaXRpbmcgZm9yICR7d2FpdH0gc2Vjb25kcyBiZWZvcmUgcmV0cnlpbmcuLi4iCiAgICAgICAgc2xlZXAgJHt3YWl0fQoKICAgICAgICBpZiB3YWl0X2Zvcl9yZXNvdXJjZTsgdGhlbgogICAgICAgICAgICBpbmZvICIke1JFU09VUkNFX1RZUEV9IG9iamVjdHMgcmVhZHk6ICcke1JFU09VUkNFX1NFTEVDVE9SU1sqXX0nIgogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIGZpCiAgICBkb25lCgogICAgZmFpbCAiJyR7UkVTT1VSQ0VfVFlQRX0nIGFyZSBub3QgcmVhZHkhIgp9CgptYWluKCkgewogICAgcGFyc2VfYXJncyAiJEAiCgogICAgIyBOYW1lc3BhY2UgdG8gY2hlY2sgZm9yICJyb2xsb3V0IHN0YXR1cyIuCiAgICBkZWNsYXJlIC1yIE5BTUVTUEFDRT0iJHtOQU1FU1BBQ0U6LX0iCiAgICAjIFJlc291cmNlIHR5cGUgZm9yICJyb2xsb3V0IHN0YXR1cyIsIGFzIGluICJzdGF0ZWZ1bHNldCIgb3IgImRlcGxveW1lbnQiLgogICAgZGVjbGFyZSAtciBSRVNPVVJDRV9UWVBFPSIke1JFU09VUkNFX1RZUEU6LXN0YXRlZnVsc2V0fSIKICAgICMgTnVtYmVyIG9mIHJldHJpZXMgdG8gYXR0ZW1wdCBiZWZvcmUgZ2l2aW5nIHVwLgogICAgZGVjbGFyZSAtciBSRVRSSUVTPSR7UkVUUklFUzotMjB9CgogICAgdGVzdF9yb2xsb3V0X3N0YXR1cwp9CgppZiBbICIke0JBU0hfU09VUkNFWzBdfSIgPT0gIiQwIiBdOyB0aGVuCiAgICBtYWluICIkQCIKICAgIGVjaG8KICAgIGVjaG8gIlN1Y2Nlc3MiCmZp + base64 -d + chmod +x test-rollout-status.sh