IyEvYmluL3NoCiMKIyBDb3B5cmlnaHQgKGMpIDIwMDYgSm9oYW5uZXMgRS4gU2NoaW5kZWxpbgojCgp0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc2hvcnRsb2cKJwoKR0lUX1RFU1RfREVGQVVMVF9JTklUSUFMX0JSQU5DSF9OQU1FPW1haW4KZXhwb3J0IEdJVF9URVNUX0RFRkFVTFRfSU5JVElBTF9CUkFOQ0hfTkFNRQoKLiAuL3Rlc3QtbGliLnNoCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJwoJdGVzdF90aWNrICYmCgllY2hvIDEgPmExICYmCglnaXQgYWRkIGExICYmCgl0cmVlPSQoZ2l0IHdyaXRlLXRyZWUpICYmCgljb21taXQ9JChwcmludGYgIiVzXG4iICJUZXN0IiAiIiB8IGdpdCBjb21taXQtdHJlZSAiJHRyZWUiKSAmJgoJZ2l0IHVwZGF0ZS1yZWYgSEVBRCAiJGNvbW1pdCIgJiYKCgllY2hvIDIgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIlRoaXMgaXMgYSB2ZXJ5LCB2ZXJ5IGxvbmcgZmlyc3QgbGluZSBmb3IgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIHNlZSBpZiBpdCBpcyB3cmFwcGVkIGNvcnJlY3RseSIgYTEgJiYKCgkjIHRlc3QgaWYgdGhlIHdyYXBwaW5nIGlzIHN0aWxsIHZhbGlkCgkjIHdoZW4gcmVwbGFjaW5nIGFsbCBpcyBieSB0cmVibGUgY2xlZnMuCgllY2hvIDMgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIiQoCgkJZWNobyAiVGhpcyBpcyBhIHZlcnksIHZlcnkgbG9uZyBmaXJzdCBsaW5lIGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gc2VlIGlmIGl0IGlzIHdyYXBwZWQgY29ycmVjdGx5IiB8CgkJc2VkICJzL2kvMTIzNC9nIiB8CgkJdHIgMTIzNCAiXDM2MFwyMzVcMjA0XDIzNiIpIiBhMSAmJgoKCSMgbm93IGZzY2sgdXAgdGhlIHV0ZjgKCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBub24tdXRmLTggJiYKCWVjaG8gNCA+YTEgJiYKCWdpdCBjb21taXQgLS1xdWlldCAtbSAiJCgKCQllY2hvICJUaGlzIGlzIGEgdmVyeSwgdmVyeSBsb25nIGZpcnN0IGxpbmUgZm9yIHRoZSBjb21taXQgbWVzc2FnZSB0byBzZWUgaWYgaXQgaXMgd3JhcHBlZCBjb3JyZWN0bHkiIHwKCQlzZWQgInMvaS8xMjM0L2ciIHwKCQl0ciAxMjM0ICJcMzcwXDIzNVwyMDRcMjM2IikiIGExICYmCgoJZWNobyA1ID5hMSAmJgoJZ2l0IGNvbW1pdCAtLXF1aWV0IC1tICJhCQkJCQkJCQkxMgkzNAk1Ngk3OCIgYTEgJiYKCgllY2hvIDYgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIkNvbW1pdCBieSBzb21lb25lIGVsc2UiIFwKCQktLWF1dGhvcj0iU29tZW9uZSBlbHNlIDxub3QhbWU+IiBhMSAmJgoKCWNhdCA+ZXhwZWN0LnRlbXBsYXRlIDw8LVxFT0YKCUEgVSBUaG9yICg1KToKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCglTb21lb25lIGVsc2UgKDEpOgoJICAgICAgU1VCSkVDVAoKCUVPRgonCgpmdXp6KCkgewoJZmlsZT0kMSAmJgoJc2VkICIKCQkJcy8kT0lEX1JFR0VYL09CSkVDVF9OQU1FL2cKCQkJcy8kX3gzNS9PQkpJRC9nCgkJCXMvXiBcezZcfVtDVGFdLiovICAgICAgU1VCSkVDVC9nCgkJCXMvXiBcezhcfVteIF0uKi8gICAgICAgIENPTlRJTlVBVElPTi9nCgkJIiA8IiRmaWxlIiA+IiRmaWxlLmZ1enp5IiAmJgoJc2VkICIvQ09OVElOVUFUSU9OLyBkIiA8IiRmaWxlLmZ1enp5Igp9Cgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWZhdWx0IG91dHB1dCBmb3JtYXQnICcKCWdpdCBzaG9ydGxvZyBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdC50ZW1wbGF0ZSBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldHR5IGZvcm1hdCcgJwoJc2VkIHMvU1VCSkVDVC9PQkpFQ1RfTkFNRS8gZXhwZWN0LnRlbXBsYXRlID5leHBlY3QgJiYKCWdpdCBzaG9ydGxvZyAtLWZvcm1hdD0iJUgiIEhFQUQgPmxvZyAmJgoJZnV6eiBsb2cgPmxvZy5wcmVkaWN0YWJsZSAmJgoJdGVzdF9jbXAgZXhwZWN0IGxvZy5wcmVkaWN0YWJsZQonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICctLWFiYnJldicgJwoJc2VkIHMvU1VCSkVDVC9PQkpJRC8gZXhwZWN0LnRlbXBsYXRlID5leHBlY3QgJiYKCWdpdCBzaG9ydGxvZyAtLWZvcm1hdD0iJWgiIC0tYWJicmV2PTM1IEhFQUQgPmxvZyAmJgoJZnV6eiBsb2cgPmxvZy5wcmVkaWN0YWJsZSAmJgoJdGVzdF9jbXAgZXhwZWN0IGxvZy5wcmVkaWN0YWJsZQonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdvdXRwdXQgZnJvbSB1c2VyLWRlZmluZWQgZm9ybWF0IGlzIHJlLXdyYXBwZWQnICcKCXNlZCAicy9TVUJKRUNUL3R3byBsaW5lcy8iIGV4cGVjdC50ZW1wbGF0ZSA+ZXhwZWN0ICYmCglnaXQgc2hvcnRsb2cgLS1mb3JtYXQ9InR3byVubGluZXMiIEhFQUQgPmxvZyAmJgoJZnV6eiBsb2cgPmxvZy5wcmVkaWN0YWJsZSAmJgoJdGVzdF9jbXAgZXhwZWN0IGxvZy5wcmVkaWN0YWJsZQonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICFNSU5HVyAnc2hvcnRsb2cgd3JhcHBpbmcnICcKCWNhdCA+ZXhwZWN0IDw8XEVPRiAmJgpBIFUgVGhvciAoNSk6CiAgICAgIFRlc3QKICAgICAgVGhpcyBpcyBhIHZlcnksIHZlcnkgbG9uZyBmaXJzdCBsaW5lIGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gc2VlIGlmCiAgICAgICAgIGl0IGlzIHdyYXBwZWQgY29ycmVjdGx5CiAgICAgIFRo8J2EnnMg8J2EnnMgYSB2ZXJ5LCB2ZXJ5IGxvbmcgZvCdhJ5yc3QgbPCdhJ5uZSBmb3IgdGhlIGNvbW3wnYSedCBtZXNzYWdlIHRvIHNlZSDwnYSeZgogICAgICAgICDwnYSedCDwnYSecyB3cmFwcGVkIGNvcnJlY3RseQogICAgICBUaPidhJ5zIPidhJ5zIGEgdmVyeSwgdmVyeSBsb25nIGb4nYSecnN0IGz4nYSebmUgZm9yIHRoZSBjb21t+J2EnnQKICAgICAgICAgbWVzc2FnZSB0byBzZWUg+J2EnmYg+J2EnnQg+J2EnnMgd3JhcHBlZCBjb3JyZWN0bHkKICAgICAgYQkJCQkJCQkJMTIJMzQKICAgICAgICAgNTYJNzgKClNvbWVvbmUgZWxzZSAoMSk6CiAgICAgIENvbW1pdCBieSBzb21lb25lIGVsc2UKCkVPRgoJZ2l0IHNob3J0bG9nIC13IEhFQUQgPm91dCAmJgoJdGVzdF9jbXAgZXhwZWN0IG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICFNSU5HVyAnc2hvcnRsb2cgZnJvbSBub24tZ2l0IGRpcmVjdG9yeScgJwoJZ2l0IGxvZyAtLW5vLWV4cGFuZC10YWJzIEhFQUQgPmxvZyAmJgoJR0lUX0RJUj1ub24tZXhpc3RpbmcgZ2l0IHNob3J0bG9nIC13IDxsb2cgPm91dCAmJgoJdGVzdF9jbXAgZXhwZWN0IG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICFNSU5HVyAnc2hvcnRsb2cgY2FuIHJlYWQgLS1mb3JtYXQ9cmF3IG91dHB1dCcgJwoJZ2l0IGxvZyAtLWZvcm1hdD1yYXcgSEVBRCA+bG9nICYmCglHSVRfRElSPW5vbi1leGlzdGluZyBnaXQgc2hvcnRsb2cgLXcgPGxvZyA+b3V0ICYmCgl0ZXN0X2NtcCBleHBlY3Qgb3V0CicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIGZyb20gbm9uLWdpdCBkaXJlY3RvcnkgcmVmdXNlcyBleHRyYSBhcmd1bWVudHMnICcKCXRlc3RfbXVzdF9mYWlsIGVudiBHSVRfRElSPW5vbi1leGlzdGluZyBnaXQgc2hvcnRsb2cgZm9vIDI+b3V0ICYmCgl0ZXN0X2kxOG5ncmVwICJ0b28gbWFueSBhcmd1bWVudHMiIG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBzaG91bGQgYWRkIG5ld2xpbmUgd2hlbiBpbnB1dCBsaW5lIG1hdGNoZXMgd3JhcGxlbicgJwoJY2F0ID5leHBlY3QgPDxcRU9GICYmCkEgVSBUaG9yICgyKToKICAgICAgYmJiYmJiYmJiYmJiYmJiYmJiOiBiYmJiYmJiYiBiYmIgYmJiYiBiYmJiYmJiIGJiIGJiYmIgYmJiIGJiYmJiIGJiYmJiYgogICAgICBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhOiBhYWFhYWEgYWFhYWFhYWFhYSBhYWFhIGFhYWFhYWFhIGFhIGFhYWEgYWEgYWFhCgpFT0YKCWdpdCBzaG9ydGxvZyAtdyA+b3V0IDw8XEVPRiAmJgpjb21taXQgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMQpBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CkRhdGU6ICAgVGh1IEFwciA3IDE1OjE0OjEzIDIwMDUgLTA3MDAKCiAgICBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhOiBhYWFhYWEgYWFhYWFhYWFhYSBhYWFhIGFhYWFhYWFhIGFhIGFhYWEgYWEgYWFhCgpjb21taXQgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMgpBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CkRhdGU6ICAgVGh1IEFwciA3IDE1OjE0OjEzIDIwMDUgLTA3MDAKCiAgICBiYmJiYmJiYmJiYmJiYmJiYmI6IGJiYmJiYmJiIGJiYiBiYmJiIGJiYmJiYmIgYmIgYmJiYiBiYmIgYmJiYmIgYmJiYmJiCgpFT0YKCXRlc3RfY21wIGV4cGVjdCBvdXQKJwoKaWNvbnZmcm9tdXRmOHRvaXNvODg1OTEoKSB7CglwcmludGYgIiVzIiAiJCoiIHwgaWNvbnYgLWYgVVRGLTggLXQgSVNPODg1OS0xCn0KCkRTQ0hPPSJKw7Zow6RubsOrcyBcIkRzY2jDtlwiIFNjaGluZMOrbGluIgpEU0NIT0U9IiREU0NITyA8Sm9oYW5uZXMuU2NoaW5kZWxpbkBnbXguZGU+IgpNU0cxPSJzZXQgYTEgdG8gMiBhbmQgc29tZSBub24tQVNDSUkgY2hhcnM6IMOEw5/DuCIKTVNHMj0ic2V0IGExIHRvIDMgYW5kIHNvbWUgbm9uLUFTQ0lJIGNoYXJzOiDDocOmw68iCmNhdCA+IGV4cGVjdCA8PCBFT0YKJERTQ0hPICgyKToKICAgICAgJE1TRzEKICAgICAgJE1TRzIKCkVPRgoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1cgJ3Nob3J0bG9nIGVuY29kaW5nJyAnCglnaXQgcmVzZXQgLS1oYXJkICIkY29tbWl0IiAmJgoJZ2l0IGNvbmZpZyAtLXVuc2V0IGkxOG4uY29tbWl0ZW5jb2RpbmcgJiYKCWVjaG8gMiA+IGExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIiRNU0cxIiAtLWF1dGhvcj0iJERTQ0hPRSIgYTEgJiYKCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyAiSVNPODg1OS0xIiAmJgoJZWNobyAzID4gYTEgJiYKCWdpdCBjb21taXQgLS1xdWlldCAtbSAiJChpY29udmZyb211dGY4dG9pc284ODU5MSAiJE1TRzIiKSIgXAoJCS0tYXV0aG9yPSIkKGljb252ZnJvbXV0Zjh0b2lzbzg4NTkxICIkRFNDSE9FIikiIGExICYmCglnaXQgY29uZmlnIC0tdW5zZXQgaTE4bi5jb21taXRlbmNvZGluZyAmJgoJZ2l0IHNob3J0bG9nIEhFQUR+Mi4uID4gb3V0ICYmCnRlc3RfY21wIGV4cGVjdCBvdXQnCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyB3aXRoIHJldmlzaW9uIHBzZXVkbyBvcHRpb25zJyAnCglnaXQgc2hvcnRsb2cgLS1hbGwgJiYKCWdpdCBzaG9ydGxvZyAtLWJyYW5jaGVzICYmCglnaXQgc2hvcnRsb2cgLS1leGNsdWRlPXJlZnMvaGVhZHMvbSogLS1hbGwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgd2l0aCAtLW91dHB1dD08ZmlsZT4nICcKCWdpdCBzaG9ydGxvZyAtLW91dHB1dD1zaG9ydGxvZyAtMSBtYWluID5vdXRwdXQgJiYKCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQgJiYKCXRlc3RfbGluZV9jb3VudCA9IDMgc2hvcnRsb2cKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgLS1jb21taXR0ZXIgKGludGVybmFsKScgJwoJZ2l0IGNoZWNrb3V0IC0tb3JwaGFuIHNpZGUgJiYKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBvbmUgJiYKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSB0d28gJiYKCUdJVF9DT01NSVRURVJfTkFNRT0iU2luIE5vbWJyZSIgZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIHRocmVlICYmCgoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAyCUMgTyBNaXR0ZXIKCSAgICAgMQlTaW4gTm9tYnJlCglFT0YKCWdpdCBzaG9ydGxvZyAtbnNjIEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyAtLWNvbW1pdHRlciAoZXh0ZXJuYWwpJyAnCglnaXQgbG9nIC0tZm9ybWF0PWZ1bGwgfCBnaXQgc2hvcnRsb2cgLW5zYyA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tZ3JvdXA9Y29tbWl0dGVyIGlzIHRoZSBzYW1lIGFzIC0tY29tbWl0dGVyJyAnCglnaXQgc2hvcnRsb2cgLW5zIC0tZ3JvdXA9Y29tbWl0dGVyIEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyAtLWdyb3VwPXRyYWlsZXI6c2lnbmVkLW9mZi1ieScgJwoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIGZvbyAtcyAmJgoJR0lUX0NPTU1JVFRFUl9OQU1FPSJTT0IgT25lIiBcCglHSVRfQ09NTUlUVEVSX0VNQUlMPXNvYkBleGFtcGxlLmNvbSBcCgkJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIGZvbyAtcyAmJgoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC0tYW1lbmQgLS1uby1lZGl0IC1zICYmCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDIJQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgoJICAgICAxCVNPQiBPbmUgPHNvYkBleGFtcGxlLmNvbT4KCUVPRgoJZ2l0IHNob3J0bG9nIC1uc2UgLS1ncm91cD10cmFpbGVyOnNpZ25lZC1vZmYtYnkgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3RyYWlsZXIgaWRlbnRzIGFyZSBzcGxpdCcgJwoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAyCUMgTyBNaXR0ZXIKCSAgICAgMQlTT0IgT25lCglFT0YKCWdpdCBzaG9ydGxvZyAtbnMgLS1ncm91cD10cmFpbGVyOnNpZ25lZC1vZmYtYnkgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3RyYWlsZXIgaWRlbnRzIGFyZSBtYWlsbWFwcGVkJyAnCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDIJQyBPIE1pdHRlcgoJICAgICAxCUFub3RoZXIgTmFtZQoJRU9GCgllY2hvICJBbm90aGVyIE5hbWUgPHNvYkBleGFtcGxlLmNvbT4iID5tYWlsLm1hcCAmJgoJZ2l0IC1jIG1haWxtYXAuZmlsZT1tYWlsLm1hcCBzaG9ydGxvZyAtbnMgXAoJCS0tZ3JvdXA9dHJhaWxlcjpzaWduZWQtb2ZmLWJ5IEhFQUQgPmFjdHVhbCAmJgoJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBkZS1kdXBsaWNhdGVzIHRyYWlsZXJzIGluIGEgc2luZ2xlIGNvbW1pdCcgJwoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1GIC0gPDwtXEVPRiAmJgoJc3ViamVjdCBvbmUKCgl0aGlzIG1lc3NhZ2UgaGFzIHR3byBkaXN0aW5jdCB2YWx1ZXMsIHBsdXMgYSByZXBlYXQKCglSZXBlYXRlZC10cmFpbGVyOiBGb28KCVJlcGVhdGVkLXRyYWlsZXI6IEJhcgoJUmVwZWF0ZWQtdHJhaWxlcjogRm9vCglFT0YKCglnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLUYgLSA8PC1cRU9GICYmCglzdWJqZWN0IHR3bwoKCXNpbWlsYXIgdG8gdGhlIHByZXZpb3VzLCBidXQgd2l0aG91dCB0aGUgc2Vjb25kIGRpc3RpbmN0IHZhbHVlCgoJUmVwZWF0ZWQtdHJhaWxlcjogRm9vCglSZXBlYXRlZC10cmFpbGVyOiBGb28KCUVPRgoKCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKCSAgICAgMglGb28KCSAgICAgMQlCYXIKCUVPRgoJZ2l0IHNob3J0bG9nIC1ucyAtLWdyb3VwPXRyYWlsZXI6cmVwZWF0ZWQtdHJhaWxlciAtMiBIRUFEID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgY2FuIG1hdGNoIG11bHRpcGxlIGdyb3VwcycgJwoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1GIC0gPDwtXEVPRiAmJgoJc3ViamVjdCBvbmUKCgl0aGlzIGhhcyB0d28gdHJhaWxlcnMgdGhhdCBhcmUgZGlzdGluY3QgZnJvbSB0aGUgYXV0aG9yOyBpdCB3aWxsIGNvdW50CgkzIHRpbWVzIGluIHRoZSBvdXRwdXQKCglTb21lLXRyYWlsZXI6IFVzZXIgQSA8YUBleGFtcGxlLmNvbT4KCUFub3RoZXItdHJhaWxlcjogVXNlciBCIDxiQGV4YW1wbGUuY29tPgoJRU9GCgoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1GIC0gPDwtXEVPRiAmJgoJc3ViamVjdCB0d28KCgl0aGlzIG9uZSBoYXMgdHdvIHRyYWlsZXJzLCBvbmUgb2Ygd2hpY2ggaXMgYSBkdXBsaWNhdGUgd2l0aCB0aGUgYXV0aG9yOwoJaXQgd2lsbCBvbmx5IGJlIGNvdW50ZWQgb25jZSBmb3IgdGhlbQoKCUFub3RoZXItdHJhaWxlcjogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KCVNvbWUtdHJhaWxlcjogVXNlciBCIDxiQGV4YW1wbGUuY29tPgoJRU9GCgoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAyCUEgVSBUaG9yCgkgICAgIDIJVXNlciBCCgkgICAgIDEJVXNlciBBCglFT0YKCWdpdCBzaG9ydGxvZyAtbnMgXAoJCS0tZ3JvdXA9YXV0aG9yIFwKCQktLWdyb3VwPXRyYWlsZXI6c29tZS10cmFpbGVyIFwKCQktLWdyb3VwPXRyYWlsZXI6YW5vdGhlci10cmFpbGVyIFwKCQktMiBIRUFEID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0IHVwIG9wdGlvbiBzZWxlY3Rpb24gdGVzdHMnICcKCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtRiAtIDw8LVxFT0YKCXN1YmplY3QKCglib2R5CgoJVHJhaWxlci1vbmU6IHZhbHVlLW9uZQoJVHJhaWxlci10d286IHZhbHVlLXR3bwoJRU9GCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tbm8tZ3JvdXAgcmVzZXRzIGdyb3VwIGxpc3QgdG8gYXV0aG9yJyAnCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDEJQSBVIFRob3IKCUVPRgoJZ2l0IHNob3J0bG9nIC1ucyBcCgkJLS1ncm91cD1jb21taXR0ZXIgXAoJCS0tZ3JvdXA9dHJhaWxlcjp0cmFpbGVyLW9uZSBcCgkJLS1uby1ncm91cCBcCgkJLTEgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tbm8tZ3JvdXAgcmVzZXRzIHRyYWlsZXIgbGlzdCcgJwoJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgoJICAgICAxCXZhbHVlLXR3bwoJRU9GCglnaXQgc2hvcnRsb2cgLW5zIFwKCQktLWdyb3VwPXRyYWlsZXI6dHJhaWxlci1vbmUgXAoJCS0tbm8tZ3JvdXAgXAoJCS0tZ3JvdXA9dHJhaWxlcjp0cmFpbGVyLXR3byBcCgkJLTEgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0ZGluIHdpdGggbXVsdGlwbGUgZ3JvdXBzIHJlcG9ydHMgZXJyb3InICcKCWdpdCBsb2cgPmxvZyAmJgoJdGVzdF9tdXN0X2ZhaWwgZ2l0IHNob3J0bG9nIC0tZ3JvdXA9YXV0aG9yIC0tZ3JvdXA9Y29tbWl0dGVyIDxsb2cKJwoKdGVzdF9kb25lCg==