IyEvYmluL3NoCiMKIyBDb3B5cmlnaHQgKGMpIDIwMDYgSm9oYW5uZXMgRS4gU2NoaW5kZWxpbgojCgp0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgc2hvcnRsb2cKJwoKLiAuL3Rlc3QtbGliLnNoCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJwoJdGVzdF90aWNrICYmCgllY2hvIDEgPmExICYmCglnaXQgYWRkIGExICYmCgl0cmVlPSQoZ2l0IHdyaXRlLXRyZWUpICYmCgljb21taXQ9JChwcmludGYgIiVzXG4iICJUZXN0IiAiIiB8IGdpdCBjb21taXQtdHJlZSAiJHRyZWUiKSAmJgoJZ2l0IHVwZGF0ZS1yZWYgSEVBRCAiJGNvbW1pdCIgJiYKCgllY2hvIDIgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIlRoaXMgaXMgYSB2ZXJ5LCB2ZXJ5IGxvbmcgZmlyc3QgbGluZSBmb3IgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIHNlZSBpZiBpdCBpcyB3cmFwcGVkIGNvcnJlY3RseSIgYTEgJiYKCgkjIHRlc3QgaWYgdGhlIHdyYXBwaW5nIGlzIHN0aWxsIHZhbGlkCgkjIHdoZW4gcmVwbGFjaW5nIGFsbCBpcyBieSB0cmVibGUgY2xlZnMuCgllY2hvIDMgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIiQoCgkJZWNobyAiVGhpcyBpcyBhIHZlcnksIHZlcnkgbG9uZyBmaXJzdCBsaW5lIGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gc2VlIGlmIGl0IGlzIHdyYXBwZWQgY29ycmVjdGx5IiB8CgkJc2VkICJzL2kvMTIzNC9nIiB8CgkJdHIgMTIzNCAiXDM2MFwyMzVcMjA0XDIzNiIpIiBhMSAmJgoKCSMgbm93IGZzY2sgdXAgdGhlIHV0ZjgKCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBub24tdXRmLTggJiYKCWVjaG8gNCA+YTEgJiYKCWdpdCBjb21taXQgLS1xdWlldCAtbSAiJCgKCQllY2hvICJUaGlzIGlzIGEgdmVyeSwgdmVyeSBsb25nIGZpcnN0IGxpbmUgZm9yIHRoZSBjb21taXQgbWVzc2FnZSB0byBzZWUgaWYgaXQgaXMgd3JhcHBlZCBjb3JyZWN0bHkiIHwKCQlzZWQgInMvaS8xMjM0L2ciIHwKCQl0ciAxMjM0ICJcMzcwXDIzNVwyMDRcMjM2IikiIGExICYmCgoJZWNobyA1ID5hMSAmJgoJZ2l0IGNvbW1pdCAtLXF1aWV0IC1tICJhCQkJCQkJCQkxMgkzNAk1Ngk3OCIgYTEgJiYKCgllY2hvIDYgPmExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIkNvbW1pdCBieSBzb21lb25lIGVsc2UiIFwKCQktLWF1dGhvcj0iU29tZW9uZSBlbHNlIDxub3QhbWU+IiBhMSAmJgoKCWNhdCA+ZXhwZWN0LnRlbXBsYXRlIDw8LVxFT0YKCUEgVSBUaG9yICg1KToKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCSAgICAgIFNVQkpFQ1QKCglTb21lb25lIGVsc2UgKDEpOgoJICAgICAgU1VCSkVDVAoKCUVPRgonCgpmdXp6KCkgewoJZmlsZT0kMSAmJgoJc2VkICIKCQkJcy8kT0lEX1JFR0VYL09CSkVDVF9OQU1FL2cKCQkJcy8kX3gzNS9PQkpJRC9nCgkJCXMvXiBcezZcfVtDVGFdLiovICAgICAgU1VCSkVDVC9nCgkJCXMvXiBcezhcfVteIF0uKi8gICAgICAgIENPTlRJTlVBVElPTi9nCgkJIiA8IiRmaWxlIiA+IiRmaWxlLmZ1enp5IiAmJgoJc2VkICIvQ09OVElOVUFUSU9OLyBkIiA8IiRmaWxlLmZ1enp5Igp9Cgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWZhdWx0IG91dHB1dCBmb3JtYXQnICcKCWdpdCBzaG9ydGxvZyBIRUFEID5sb2cgJiYKCWZ1enogbG9nID5sb2cucHJlZGljdGFibGUgJiYKCXRlc3RfY21wIGV4cGVjdC50ZW1wbGF0ZSBsb2cucHJlZGljdGFibGUKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJldHR5IGZvcm1hdCcgJwoJc2VkIHMvU1VCSkVDVC9PQkpFQ1RfTkFNRS8gZXhwZWN0LnRlbXBsYXRlID5leHBlY3QgJiYKCWdpdCBzaG9ydGxvZyAtLWZvcm1hdD0iJUgiIEhFQUQgPmxvZyAmJgoJZnV6eiBsb2cgPmxvZy5wcmVkaWN0YWJsZSAmJgoJdGVzdF9jbXAgZXhwZWN0IGxvZy5wcmVkaWN0YWJsZQonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICctLWFiYnJldicgJwoJc2VkIHMvU1VCSkVDVC9PQkpJRC8gZXhwZWN0LnRlbXBsYXRlID5leHBlY3QgJiYKCWdpdCBzaG9ydGxvZyAtLWZvcm1hdD0iJWgiIC0tYWJicmV2PTM1IEhFQUQgPmxvZyAmJgoJZnV6eiBsb2cgPmxvZy5wcmVkaWN0YWJsZSAmJgoJdGVzdF9jbXAgZXhwZWN0IGxvZy5wcmVkaWN0YWJsZQonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdvdXRwdXQgZnJvbSB1c2VyLWRlZmluZWQgZm9ybWF0IGlzIHJlLXdyYXBwZWQnICcKCXNlZCAicy9TVUJKRUNUL3R3byBsaW5lcy8iIGV4cGVjdC50ZW1wbGF0ZSA+ZXhwZWN0ICYmCglnaXQgc2hvcnRsb2cgLS1mb3JtYXQ9InR3byVubGluZXMiIEhFQUQgPmxvZyAmJgoJZnV6eiBsb2cgPmxvZy5wcmVkaWN0YWJsZSAmJgoJdGVzdF9jbXAgZXhwZWN0IGxvZy5wcmVkaWN0YWJsZQonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICFNSU5HVyAnc2hvcnRsb2cgd3JhcHBpbmcnICcKCWNhdCA+ZXhwZWN0IDw8XEVPRiAmJgpBIFUgVGhvciAoNSk6CiAgICAgIFRlc3QKICAgICAgVGhpcyBpcyBhIHZlcnksIHZlcnkgbG9uZyBmaXJzdCBsaW5lIGZvciB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gc2VlIGlmCiAgICAgICAgIGl0IGlzIHdyYXBwZWQgY29ycmVjdGx5CiAgICAgIFRo8J2EnnMg8J2EnnMgYSB2ZXJ5LCB2ZXJ5IGxvbmcgZvCdhJ5yc3QgbPCdhJ5uZSBmb3IgdGhlIGNvbW3wnYSedCBtZXNzYWdlIHRvIHNlZSDwnYSeZgogICAgICAgICDwnYSedCDwnYSecyB3cmFwcGVkIGNvcnJlY3RseQogICAgICBUaPidhJ5zIPidhJ5zIGEgdmVyeSwgdmVyeSBsb25nIGb4nYSecnN0IGz4nYSebmUgZm9yIHRoZSBjb21t+J2EnnQKICAgICAgICAgbWVzc2FnZSB0byBzZWUg+J2EnmYg+J2EnnQg+J2EnnMgd3JhcHBlZCBjb3JyZWN0bHkKICAgICAgYQkJCQkJCQkJMTIJMzQKICAgICAgICAgNTYJNzgKClNvbWVvbmUgZWxzZSAoMSk6CiAgICAgIENvbW1pdCBieSBzb21lb25lIGVsc2UKCkVPRgoJZ2l0IHNob3J0bG9nIC13IEhFQUQgPm91dCAmJgoJdGVzdF9jbXAgZXhwZWN0IG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICFNSU5HVyAnc2hvcnRsb2cgZnJvbSBub24tZ2l0IGRpcmVjdG9yeScgJwoJZ2l0IGxvZyAtLW5vLWV4cGFuZC10YWJzIEhFQUQgPmxvZyAmJgoJR0lUX0RJUj1ub24tZXhpc3RpbmcgZ2l0IHNob3J0bG9nIC13IDxsb2cgPm91dCAmJgoJdGVzdF9jbXAgZXhwZWN0IG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICFNSU5HVyAnc2hvcnRsb2cgY2FuIHJlYWQgLS1mb3JtYXQ9cmF3IG91dHB1dCcgJwoJZ2l0IGxvZyAtLWZvcm1hdD1yYXcgSEVBRCA+bG9nICYmCglHSVRfRElSPW5vbi1leGlzdGluZyBnaXQgc2hvcnRsb2cgLXcgPGxvZyA+b3V0ICYmCgl0ZXN0X2NtcCBleHBlY3Qgb3V0CicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIGZyb20gbm9uLWdpdCBkaXJlY3RvcnkgcmVmdXNlcyBleHRyYSBhcmd1bWVudHMnICcKCXRlc3RfbXVzdF9mYWlsIGVudiBHSVRfRElSPW5vbi1leGlzdGluZyBnaXQgc2hvcnRsb2cgZm9vIDI+b3V0ICYmCgl0ZXN0X2kxOG5ncmVwICJ0b28gbWFueSBhcmd1bWVudHMiIG91dAonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyBzaG91bGQgYWRkIG5ld2xpbmUgd2hlbiBpbnB1dCBsaW5lIG1hdGNoZXMgd3JhcGxlbicgJwoJY2F0ID5leHBlY3QgPDxcRU9GICYmCkEgVSBUaG9yICgyKToKICAgICAgYmJiYmJiYmJiYmJiYmJiYmJiOiBiYmJiYmJiYiBiYmIgYmJiYiBiYmJiYmJiIGJiIGJiYmIgYmJiIGJiYmJiIGJiYmJiYgogICAgICBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhOiBhYWFhYWEgYWFhYWFhYWFhYSBhYWFhIGFhYWFhYWFhIGFhIGFhYWEgYWEgYWFhCgpFT0YKCWdpdCBzaG9ydGxvZyAtdyA+b3V0IDw8XEVPRiAmJgpjb21taXQgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMQpBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CkRhdGU6ICAgVGh1IEFwciA3IDE1OjE0OjEzIDIwMDUgLTA3MDAKCiAgICBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhOiBhYWFhYWEgYWFhYWFhYWFhYSBhYWFhIGFhYWFhYWFhIGFhIGFhYWEgYWEgYWFhCgpjb21taXQgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMgpBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CkRhdGU6ICAgVGh1IEFwciA3IDE1OjE0OjEzIDIwMDUgLTA3MDAKCiAgICBiYmJiYmJiYmJiYmJiYmJiYmI6IGJiYmJiYmJiIGJiYiBiYmJiIGJiYmJiYmIgYmIgYmJiYiBiYmIgYmJiYmIgYmJiYmJiCgpFT0YKCXRlc3RfY21wIGV4cGVjdCBvdXQKJwoKaWNvbnZmcm9tdXRmOHRvaXNvODg1OTEoKSB7CglwcmludGYgIiVzIiAiJCoiIHwgaWNvbnYgLWYgVVRGLTggLXQgSVNPODg1OS0xCn0KCkRTQ0hPPSJKw7Zow6RubsOrcyBcIkRzY2jDtlwiIFNjaGluZMOrbGluIgpEU0NIT0U9IiREU0NITyA8Sm9oYW5uZXMuU2NoaW5kZWxpbkBnbXguZGU+IgpNU0cxPSJzZXQgYTEgdG8gMiBhbmQgc29tZSBub24tQVNDSUkgY2hhcnM6IMOEw5/DuCIKTVNHMj0ic2V0IGExIHRvIDMgYW5kIHNvbWUgbm9uLUFTQ0lJIGNoYXJzOiDDocOmw68iCmNhdCA+IGV4cGVjdCA8PCBFT0YKJERTQ0hPICgyKToKICAgICAgJE1TRzEKICAgICAgJE1TRzIKCkVPRgoKdGVzdF9leHBlY3Rfc3VjY2VzcyAhTUlOR1cgJ3Nob3J0bG9nIGVuY29kaW5nJyAnCglnaXQgcmVzZXQgLS1oYXJkICIkY29tbWl0IiAmJgoJZ2l0IGNvbmZpZyAtLXVuc2V0IGkxOG4uY29tbWl0ZW5jb2RpbmcgJiYKCWVjaG8gMiA+IGExICYmCglnaXQgY29tbWl0IC0tcXVpZXQgLW0gIiRNU0cxIiAtLWF1dGhvcj0iJERTQ0hPRSIgYTEgJiYKCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyAiSVNPODg1OS0xIiAmJgoJZWNobyAzID4gYTEgJiYKCWdpdCBjb21taXQgLS1xdWlldCAtbSAiJChpY29udmZyb211dGY4dG9pc284ODU5MSAiJE1TRzIiKSIgXAoJCS0tYXV0aG9yPSIkKGljb252ZnJvbXV0Zjh0b2lzbzg4NTkxICIkRFNDSE9FIikiIGExICYmCglnaXQgY29uZmlnIC0tdW5zZXQgaTE4bi5jb21taXRlbmNvZGluZyAmJgoJZ2l0IHNob3J0bG9nIEhFQUR+Mi4uID4gb3V0ICYmCnRlc3RfY21wIGV4cGVjdCBvdXQnCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyB3aXRoIHJldmlzaW9uIHBzZXVkbyBvcHRpb25zJyAnCglnaXQgc2hvcnRsb2cgLS1hbGwgJiYKCWdpdCBzaG9ydGxvZyAtLWJyYW5jaGVzICYmCglnaXQgc2hvcnRsb2cgLS1leGNsdWRlPXJlZnMvaGVhZHMvbSogLS1hbGwKJwoKdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvcnRsb2cgd2l0aCAtLW91dHB1dD08ZmlsZT4nICcKCWdpdCBzaG9ydGxvZyAtLW91dHB1dD1zaG9ydGxvZyAtMSBtYXN0ZXIgPm91dHB1dCAmJgoJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dCAmJgoJdGVzdF9saW5lX2NvdW50ID0gMyBzaG9ydGxvZwonCgp0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG9ydGxvZyAtLWNvbW1pdHRlciAoaW50ZXJuYWwpJyAnCglnaXQgY2hlY2tvdXQgLS1vcnBoYW4gc2lkZSAmJgoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIG9uZSAmJgoJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIHR3byAmJgoJR0lUX0NPTU1JVFRFUl9OQU1FPSJTaW4gTm9tYnJlIiBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gdGhyZWUgJiYKCgljYXQgPmV4cGVjdCA8PC1cRU9GICYmCgkgICAgIDIJQyBPIE1pdHRlcgoJICAgICAxCVNpbiBOb21icmUKCUVPRgoJZ2l0IHNob3J0bG9nIC1uc2MgSEVBRCA+YWN0dWFsICYmCgl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCicKCnRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3J0bG9nIC0tY29tbWl0dGVyIChleHRlcm5hbCknICcKCWdpdCBsb2cgLS1mb3JtYXQ9ZnVsbCB8IGdpdCBzaG9ydGxvZyAtbnNjID5hY3R1YWwgJiYKCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKJwoKdGVzdF9kb25lCg==