LyogQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuICovCgojaW5jbHVkZSA8ZGVidWcuaD4KI2luY2x1ZGUgPGRldi9ncGlvLmg+CiNpbmNsdWRlIDxrZXJuZWwvdGhyZWFkLmg+CiNpbmNsdWRlIDxtZGRpLmg+CgojZGVmaW5lIE1ERElfQ0xJRU5UX0NPUkVfQkFTRSAgMHgxMDgwMDAKI2RlZmluZSBMQ0RfQ09OVFJPTF9CTE9DS19CQVNFIDB4MTEwMDAwCiNkZWZpbmUgU1BJX0JMT0NLX0JBU0UJCSAweDEyMDAwMAojZGVmaW5lIEkyQ19CTE9DS19CQVNFCQkgMHgxMzAwMDAKI2RlZmluZSBQV01fQkxPQ0tfQkFTRQkJIDB4MTQwMDAwCiNkZWZpbmUgR1BJT19CTE9DS19CQVNFCQkweDE1MDAwMAojZGVmaW5lIFNZU1RFTV9CTE9DSzFfQkFTRQkgMHgxNjAwMDAKI2RlZmluZSBTWVNURU1fQkxPQ0syX0JBU0UJIDB4MTcwMDAwCgojZGVmaW5lCU1ERElDQVAwCShNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgwMCkKI2RlZmluZQlNRERJQ0FQMQkoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MDQpCiNkZWZpbmUJTURESUNBUDIJKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDA4KQojZGVmaW5lCU1ERElDQVAzCShNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgwQykKI2RlZmluZQlNRENBUENIRwkoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MTApCiNkZWZpbmUJTURDUkNFUkMJKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDE0KQojZGVmaW5lCVRUQlVTU0VMCShNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgxOCkKI2RlZmluZQlEUFNFVDAJICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MUMpCiNkZWZpbmUJRFBTRVQxCSAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDIwKQojZGVmaW5lCURQU1VTCSAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgyNCkKI2RlZmluZQlEUFJVTgkgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MjgpCiNkZWZpbmUJU1lTQ0tFTkEJKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDJDKQojZGVmaW5lCVRFU1RNT0RFCShNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgzMCkKI2RlZmluZQlGSUZPTU9OSQkoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MzQpCiNkZWZpbmUJSU5UTU9OSQkgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDM4KQojZGVmaW5lCU1ESU9CSVNUCShNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgzQykKI2RlZmluZQlNRElPUFNFVAkoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4NDApCiNkZWZpbmUJQklUTUFQMAkgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDQ0KQojZGVmaW5lCUJJVE1BUDEJIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHg0OCkKI2RlZmluZQlCSVRNQVAyCSAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4NEMpCiNkZWZpbmUJQklUTUFQMwkgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDUwKQojZGVmaW5lCUJJVE1BUDQJIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHg1NCkKCiNkZWZpbmUJU1JTVAkJKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgwMCkKI2RlZmluZQlQT1JUX0VOQgkoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDA0KQojZGVmaW5lCVNUQVJUCSAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MDgpCiNkZWZpbmUJUE9SVAkJKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgwQykKI2RlZmluZQlDTU4JCSAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDEwKQojZGVmaW5lCUdBTU1BCSAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MTQpCiNkZWZpbmUJSU5URkxHCSAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgxOCkKI2RlZmluZQlJTlRNU0sJICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDFDKQojZGVmaW5lCU1QTEZCVUYJIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MjApCiNkZWZpbmUJSERFX0xFRlQJKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgyNCkKI2RlZmluZQlWREVfVE9QCSAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDI4KQoKI2RlZmluZQlQWEwJCSAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDMwKQojZGVmaW5lCUhDWUNMRQkgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MzQpCiNkZWZpbmUJSFNXCQkgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgzOCkKI2RlZmluZQlIREVfU1RBUlQgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDNDKQojZGVmaW5lCUhERV9TSVpFCShMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NDApCiNkZWZpbmUJVkNZQ0xFCSAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg0NCkKI2RlZmluZQlWU1cJCSAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDQ4KQojZGVmaW5lCVZERV9TVEFSVCAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NEMpCiNkZWZpbmUJVkRFX1NJWkUJKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg1MCkKI2RlZmluZQlXQUtFVVAJICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDU0KQojZGVmaW5lCVdTWU5fRExZCShMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NTgpCiNkZWZpbmUJUkVHRU5CCSAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg1QykKI2RlZmluZQlWU1lOSUYJICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDYwKQojZGVmaW5lCVdSU1RCCSAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NjQpCiNkZWZpbmUJUkRTVEIJICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg2OCkKI2RlZmluZQlBU1lfREFUQQkoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDZDKQojZGVmaW5lCUFTWV9EQVRCCShMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NzApCiNkZWZpbmUJQVNZX0RBVEMJKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg3NCkKI2RlZmluZQlBU1lfREFURAkoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDc4KQojZGVmaW5lCUFTWV9EQVRFCShMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4N0MpCiNkZWZpbmUJQVNZX0RBVEYJKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg4MCkKI2RlZmluZQlBU1lfREFURwkoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDg0KQojZGVmaW5lCUFTWV9EQVRICShMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4ODgpCiNkZWZpbmUJQVNZX0NNRFNFVCAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg4QykKCiNkZWZpbmUJTU9OSQkJKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHhCMCkKCiNkZWZpbmUJQ3VycmVudAkgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHhDMCkKI2RlZmluZQlMQ0QJCSAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweEM0KQojZGVmaW5lCUNPTU1BTkQJIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4QzgpCgojZGVmaW5lCVNTSUNUTAkgIChTUElfQkxPQ0tfQkFTRXwweDAwKQojZGVmaW5lCVNTSVRJTUUJIChTUElfQkxPQ0tfQkFTRXwweDA0KQojZGVmaW5lCVNTSVRYCSAgIChTUElfQkxPQ0tfQkFTRXwweDA4KQojZGVmaW5lCVNTSVJYCSAgIChTUElfQkxPQ0tfQkFTRXwweDBDKQojZGVmaW5lCVNTSUlOVEMJIChTUElfQkxPQ0tfQkFTRXwweDEwKQojZGVmaW5lCVNTSUlOVFMJIChTUElfQkxPQ0tfQkFTRXwweDE0KQojZGVmaW5lCVNTSURCRzEJIChTUElfQkxPQ0tfQkFTRXwweDE4KQojZGVmaW5lCVNTSURCRzIJIChTUElfQkxPQ0tfQkFTRXwweDFDKQojZGVmaW5lCVNTSUlECSAgIChTUElfQkxPQ0tfQkFTRXwweDIwKQoKI2RlZmluZQlJMkNTRVRVUAkoSTJDX0JMT0NLX0JBU0V8MHgwMCkKI2RlZmluZQlJMkNDVFJMCQkoSTJDX0JMT0NLX0JBU0V8MHgwNCkKCiNkZWZpbmUJVElNRVIwTE9BRAkgIChQV01fQkxPQ0tfQkFTRXwweDAwKQojZGVmaW5lCVRJTUVSMFZBTFVFCSAgKFBXTV9CTE9DS19CQVNFfDB4MDQpCiNkZWZpbmUJVElNRVIwQ09OVFJPTCAoUFdNX0JMT0NLX0JBU0V8MHgwOCkKI2RlZmluZQlUSU1FUjBJTlRDTFIgIChQV01fQkxPQ0tfQkFTRXwweDBDKQojZGVmaW5lCVRJTUVSMFJJUwkgIChQV01fQkxPQ0tfQkFTRXwweDEwKQojZGVmaW5lCVRJTUVSME1JUwkgIChQV01fQkxPQ0tfQkFTRXwweDE0KQojZGVmaW5lCVRJTUVSMEJHTE9BRCAgKFBXTV9CTE9DS19CQVNFfDB4MTgpCiNkZWZpbmUJUFdNME9GRgkJICAoUFdNX0JMT0NLX0JBU0V8MHgxQykKI2RlZmluZQlUSU1FUjFMT0FECSAgKFBXTV9CTE9DS19CQVNFfDB4MjApCiNkZWZpbmUJVElNRVIxVkFMVUUJICAoUFdNX0JMT0NLX0JBU0V8MHgyNCkKI2RlZmluZQlUSU1FUjFDT05UUk9MIChQV01fQkxPQ0tfQkFTRXwweDI4KQojZGVmaW5lCVRJTUVSMUlOVENMUiAgKFBXTV9CTE9DS19CQVNFfDB4MkMpCiNkZWZpbmUJVElNRVIxUklTCSAgKFBXTV9CTE9DS19CQVNFfDB4MzApCiNkZWZpbmUJVElNRVIxTUlTCSAgKFBXTV9CTE9DS19CQVNFfDB4MzQpCiNkZWZpbmUJVElNRVIxQkdMT0FEICAoUFdNX0JMT0NLX0JBU0V8MHgzOCkKI2RlZmluZQlQV00xT0ZGCQkgIChQV01fQkxPQ0tfQkFTRXwweDNDKQojZGVmaW5lCVRJTUVSSVRDUgkgIChQV01fQkxPQ0tfQkFTRXwweDYwKQojZGVmaW5lCVRJTUVSSVRPUAkgIChQV01fQkxPQ0tfQkFTRXwweDY0KQojZGVmaW5lCVBXTUNSCQkgIChQV01fQkxPQ0tfQkFTRXwweDY4KQojZGVmaW5lCVBXTUlECQkgIChQV01fQkxPQ0tfQkFTRXwweDZDKQojZGVmaW5lCVBXTU1PTgkJICAoUFdNX0JMT0NLX0JBU0V8MHg3MCkKCiNkZWZpbmUJR1BJT0RBVEEJKEdQSU9fQkxPQ0tfQkFTRXwweDAwKQojZGVmaW5lCUdQSU9ESVIJIChHUElPX0JMT0NLX0JBU0V8MHgwNCkKI2RlZmluZQlHUElPSVMJICAoR1BJT19CTE9DS19CQVNFfDB4MDgpCiNkZWZpbmUJR1BJT0lCRQkgKEdQSU9fQkxPQ0tfQkFTRXwweDBDKQojZGVmaW5lCUdQSU9JRVYJIChHUElPX0JMT0NLX0JBU0V8MHgxMCkKI2RlZmluZQlHUElPSUUJICAoR1BJT19CTE9DS19CQVNFfDB4MTQpCiNkZWZpbmUJR1BJT1JJUwkgKEdQSU9fQkxPQ0tfQkFTRXwweDE4KQojZGVmaW5lCUdQSU9NSVMJIChHUElPX0JMT0NLX0JBU0V8MHgxQykKI2RlZmluZQlHUElPSUMJICAoR1BJT19CTE9DS19CQVNFfDB4MjApCiNkZWZpbmUJR1BJT09NUwkgKEdQSU9fQkxPQ0tfQkFTRXwweDI0KQojZGVmaW5lCUdQSU9QQwkgIChHUElPX0JMT0NLX0JBU0V8MHgyOCkKCiNkZWZpbmUJR1BJT0lECSAgKEdQSU9fQkxPQ0tfQkFTRXwweDMwKQoKI2RlZmluZQlXS1JFUQkgICAoU1lTVEVNX0JMT0NLMV9CQVNFfDB4MDApCiNkZWZpbmUJQ0xLRU5CCSAgKFNZU1RFTV9CTE9DSzFfQkFTRXwweDA0KQojZGVmaW5lCURSQU1QV1IJIChTWVNURU1fQkxPQ0sxX0JBU0V8MHgwOCkKI2RlZmluZQlJTlRNQVNLCSAoU1lTVEVNX0JMT0NLMV9CQVNFfDB4MEMpCiNkZWZpbmUJR1BJT1NFTAkgKFNZU1RFTV9CTE9DSzJfQkFTRXwweDAwKQoKc3RydWN0IGluaXRfdGFibGUgewoJdW5zaWduZWQgaW50IHJlZzsKCXVuc2lnbmVkIGludCB2YWw7Cn07CgpzdGF0aWMgc3RydWN0IGluaXRfdGFibGUgdG9zaGliYV80ODB4NjQwX2luaXRfdGFibGVbXSA9IHsKCXtEUFNFVDAsIDB4NEJFQzAwNjZ9LAkvLyAjIE1EQy5EUFNFVDAgICMgU2V0dXAgRFBMTCBwYXJhbWV0ZXJzCgl7RFBTRVQxLCAweDAwMDAwMTEzfSwJLy8gICAjIE1EQy5EUFNFVDEKCXtEUFNVUywgMHgwMDAwMDAwMH0sCS8vICAgIyBNREMuRFBTVVMgICMgU2V0IERQTEwgb3NjaWxsYXRpb24gZW5hYmxlCgl7RFBSVU4sIDB4MDAwMDAwMDF9LAkvLyAgICMgTURDLkRQUlVOICAjIFJlbGVhc2UgcmVzZXQgc2lnbmFsIGZvciBEUExMCgl7MCwgMTR9LAkJLy8gd2FpdF9tcygxNCk7Cgl7U1lTQ0tFTkEsIDB4MDAwMDAwMDF9LAkvLyAgICMgTURDLlNZU0NLRU5BICAjIEVuYWJsZSBzeXN0ZW0gY2xvY2sgb3V0cHV0Cgl7Q0xLRU5CLCAweDAwMDAwMEVGfSwJLy8gICAjIFNZUy5DTEtFTkIgICMgRW5hYmxlIGNsb2NrcyBmb3IgZWFjaCBtb2R1bGUgKHdpdGhvdXQgRENMSyAsIGkyY0NMSykKCXtHUElPX0JMT0NLX0JBU0UsIDB4MDNGRjAwMDB9LAkvLyAgICMgR1BJIC5HUElPREFUQSAgIyBHUElPMihSRVNFVF9MQ0RfTikgc2V0IHRvIDAgLCBHUElPMyhlRFJBTV9Qb3dlcikgc2V0IHRvIDAKCXtHUElPRElSLCAweDAwMDAwMjREfSwJLy8gICAjIEdQSSAuR1BJT0RJUiAgIyBTZWxlY3QgZGlyZWN0aW9uIG9mIEdQSU8gcG9ydCAoMCwyLDMsNiw5IG91dHB1dCkKCXtTWVNURU1fQkxPQ0syX0JBU0UsIDB4MDAwMDAxNzN9LAkvLyAgICMgU1lTLkdQSU9TRUwgICMgR1BJTyBwb3J0IG11bHRpcGxleGluZyBjb250cm9sCgl7R1BJT1BDLCAweDAzQzMwMEMwfSwJLy8gICAjIEdQSSAuR1BJT1BDICAjIEdQSU8yLDMgUEQgY3V0Cgl7U1lTVEVNX0JMT0NLMV9CQVNFLCAweDAwMDAwMDAwfSwJLy8gICAjIFNZUy5XS1JFUSAgIyBXYWtlLXVwIHJlcXVlc3QgZXZlbnQgaXMgVlNZTkMgYWxpZ25tZW50Cgl7R1BJT0lTLCAweDAwMDAwMDAwfSwJLy8gICAjIEdQSSAuR1BJT0lTICAjIFNldCBpbnRlcnJ1cHQgc2Vuc2Ugb2YgR1BJTwoJe0dQSU9JRVYsIDB4MDAwMDAwMDF9LAkvLyAgICMgR1BJIC5HUElPSUVWICAjIFNldCBpbnRlcnJ1cHQgZXZlbnQgb2YgR1BJTwoJe0dQSU9JQywgMHgwMDAwMDNGRn0sCS8vICAgIyBHUEkgLkdQSU9JQyAgIyBHUElPIGludGVycnVwdCBjbGVhcgoJe0dQSU9fQkxPQ0tfQkFTRSwgMHgwMDA2MDAwNn0sCS8vICAgIyBHUEkgLkdQSU9EQVRBICAjIFJlbGVhc2UgTENERCByZXNldAoJe0dQSU9fQkxPQ0tfQkFTRSwgMHgwMDA4MDAwOH0sCS8vICAgIyBHUEkgLkdQSU9EQVRBICAjIGVEUkFNIFZEIHN1cHBseQoJe0dQSU9fQkxPQ0tfQkFTRSwgMHgwMjAwMDIwMH0sCS8vICAgIyBHUEkgLkdQSU9EQVRBICAjIFRFU1QgTEVEIE9OCgl7RFJBTVBXUiwgMHgwMDAwMDAwMX0sCS8vICAgIyBTWVMuRFJBTVBXUiAgIyBlRFJBTSBwb3dlciB1cAoJe1RJTUVSMENPTlRST0wsIDB4MDAwMDAwNjB9LAkvLyAgICMgUFdNLlRpbWVyMENvbnRyb2wgICMgUFdNMCBvdXRwdXQgc3RvcAoJe1BXTV9CTE9DS19CQVNFLCAweDAwMDAxMzg4fSwJLy8gICAjIFBXTS5UaW1lcjBMb2FkICAjIFBXTTAgMTBrSHogLCBEdXR5IDk5IChCYWNrTGlnaHQgT0ZGKQoJLy97UFdNME9GRiwgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyAgICMgUFdNLlBXTTBPRkYKI2lmIDAKCXtQV00wT0ZGLCAweDAwMDAxMzg3fSwJLy8gU1VSRiAxMDAlIGJhY2tsaWdodAoJe1BXTTBPRkYsIDB4MDAwMDAwMDB9LAkvLyBGRkEgMTAwJSBiYWNrbGlnaHQKI2VuZGlmCgl7UFdNME9GRiwgMHgwMDAwMDlDM30sCS8vIDUwJSBCTAoJe1RJTUVSMUNPTlRST0wsIDB4MDAwMDAwNjB9LAkvLyAgICMgUFdNLlRpbWVyMUNvbnRyb2wgICMgUFdNMSBvdXRwdXQgc3RvcAoJe1RJTUVSMUxPQUQsIDB4MDAwMDEzODh9LAkvLyAgICMgUFdNLlRpbWVyMUxvYWQgICMgUFdNMSAxMGtIeiAsIER1dHkgOTkgKEJhY2tMaWdodCBPRkYpCgkvL3tQV00xT0ZGLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgfSwgIC8vICAgIyBQV00uUFdNMU9GRgoJe1BXTTFPRkYsIDB4MDAwMDEzODd9LAoJe1RJTUVSMENPTlRST0wsIDB4MDAwMDAwRTB9LAkvLyAgICMgUFdNLlRpbWVyMENvbnRyb2wgICMgUFdNMCBvdXRwdXQgc3RhcnQKCXtUSU1FUjFDT05UUk9MLCAweDAwMDAwMEUwfSwJLy8gICAjIFBXTS5UaW1lcjFDb250cm9sICAjIFBXTTEgb3V0cHV0IHN0YXJ0Cgl7UFdNQ1IsIDB4MDAwMDAwMDN9LAkvLyAgICMgUFdNLlBXTUNSICAjIFBXTSBvdXRwdXQgZW5hYmxlCgl7MCwgMX0sCQkJLy8gIHdhaXRfbXMoMSk7Cgl7U1BJX0JMT0NLX0JBU0UsIDB4MDAwMDA3OTl9LAkvLyAgICMgU1BJIC5TU0lDVEwgICMgU1BJIG9wZXJhdGlvbiBtb2RlIHNldHRpbmcKCXtTU0lUSU1FLCAweDAwMDAwMTAwfSwJLy8gICAjIFNQSSAuU1NJVElNRSAgIyBTUEkgc2VyaWFsIGludGVyZmFjZSB0aW1pbmcgc2V0dGluZwoJe1NQSV9CTE9DS19CQVNFLCAweDAwMDAwNzlifSwJLy8gICAjIFNQSSAuU1NJQ1RMICAjIFNldCBTUEkgYWN0aXZlIG1vZGUKCgl7U1NJVFgsIDB4MDAwMDAwMDB9LAkvLyAgICMgU1BJLlNTSVRYICAjIFJlbGVhc2UgZnJvbSBEZWVwIFN0YW5ieSBtb2RlCgl7MCwgMX0sCQkJLy8gIHdhaXRfbXMoMSk7Cgl7U1NJVFgsIDB4MDAwMDAwMDB9LAkvLyAgICMgU1BJLlNTSVRYCgl7MCwgMX0sCQkJLy8gIHdhaXRfbXMoMSk7Cgl7U1NJVFgsIDB4MDAwMDAwMDB9LAkvLyAgICMgU1BJLlNTSVRYCgl7MCwgMX0sCQkJLy8gIHdhaXRfbXMoMSk7Cgl7U1NJVFgsIDB4MDAwODAwQkF9LAkvLyAgICMgU1BJLlNTSVRYICAgICAgICAgICAqTk9URSAxICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDAwMDExMX0sCS8vICAgICAgICAjIERpc3BsYXkgbW9kZSBzZXR1cCgxKSA6IE5vcm1hbHkgQmxhY2sKCXtTU0lUWCwgMHgwMDA4MDAzNn0sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDAwMDEwMH0sCS8vICAgICAgICAjIE1lbW9yeSBhY2Nlc3MgY29udHJvbAoJezAsIDJ9LAkJCS8vICB3YWl0X21zKDIpOyAgIC8vICAgICAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwQkJ9LAkvLyAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTAwfSwJLy8gICAjIERpc3BsYXkgbW9kZSBzZXR1cCgyKQoJe1NTSVRYLCAweDAwMDgwMDNBfSwJLy8gICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDAwMDE2MH0sCS8vICAgIyBSR0IgSW50ZXJmYWNlIGRhdGEgZm9ybWF0Cgl7MCwgMn0sCQkJLy8gIHdhaXRfbXMoMik7ICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwQkZ9LAkvLyAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTAwfSwJLy8gICAjIERyaXZuaWcgbWV0aG9kCgl7U1NJVFgsIDB4MDAwODAwQjF9LAkvLyAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTVEfSwJLy8gICAjIEJvb3N0ZXIgb3BlcmF0aW9uIHNldHVwCgl7MCwgMn0sCQkJLy8gIHdhaXRfbXMoMik7ICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwQjJ9LAkvLyAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTMzfSwJLy8gICAjIEJvb3N0ZXIgbW9kZSBzZXR1cAoJe1NTSVRYLCAweDAwMDgwMEIzfSwJLy8gICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDAwMDEyMn0sCS8vICAgICAgICAjIEJvb3N0ZXIgZnJlcXVlbmNpZXMgc2V0dXAKCXswLCAyfSwJCQkvLyAgd2FpdF9tcygyKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBCNH0sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDAwMDEwMn0sCS8vICAgICAgICAjIE9QLWFtcCBjYXBhYmlsaXR5L1N5c3RlbSBjbG9jayBmcmVxLiBkaXZpc2lvbiBzZXR1cAoJe1NTSVRYLCAweDAwMDgwMEI1fSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTFGfSwJLy8gICAgICAgICMgVkNTIFZvbHRhZ2UgYWRqdXN0bWVudCAgKDFDLT4xRiBmb3IgUmV2IDIpCgl7MCwgMn0sCQkJLy8gIHdhaXRfbXMoMik7ICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwQjZ9LAkvLyAgICAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwMDAxMjh9LAkvLyAgICAgICAgIyBWQ09NIFZvbHRhZ2UgYWRqdXN0bWVudAoJe1NTSVRYLCAweDAwMDgwMEI3fSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTAzfSwJLy8gICAgICAgICMgQ29uZmlndXJlIGFuIGV4dGVybmFsIGRpc3BsYXkgc2lnbmFsCgl7MCwgMn0sCQkJLy8gIHdhaXRfbXMoMik7ICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwQjl9LAkvLyAgICAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwMDAxMjB9LAkvLyAgICAgICAgIyBEQ0NLL0RDRVYgdGltaW5nIHNldHVwCgl7U1NJVFgsIDB4MDAwODAwQkR9LAkvLyAgICAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwMDAxMDJ9LAkvLyAgICAgICAgIyBBU1cgc2lnbmFsIGNvbnRyb2wKCXswLCAyfSwJCQkvLyAgd2FpdF9tcygyKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBCRX0sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDAwMDEwMH0sCS8vICAgICAgICAjIER1bW15IGRpc3BsYXkgKHdoaXRlL2JsYWNrKSBjb3VudCBzZXR1cCBmb3IgUVVBRCBEYXRhIG9wZXJhdGlvbgoJe1NTSVRYLCAweDAwMDgwMEMwfSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTExfSwJLy8gICAgICAgICMgd2FpdF9tcygtb3V0IEZSIGNvdW50IHNldHVwIChBKQoJezAsIDJ9LAkJCS8vICB3YWl0X21zKDIpOyAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJe1NTSVRYLCAweDAwMDgwMEMxfSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTExfSwJLy8gICAgICAgICMgd2FpdF9tcygtb3V0IEZSIGNvdW50IHNldHVwIChCKQoJe1NTSVRYLCAweDAwMDgwMEMyfSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTExfSwJLy8gICAgICAgICMgd2FpdF9tcygtb3V0IEZSIGNvdW50IHNldHVwIChDKQoJezAsIDJ9LAkJCS8vICB3YWl0X21zKDIpOyAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJe1NTSVRYLCAweDAwMDgwMEMzfSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDgwMTBBfSwJLy8gICAgICAgICMgd2FpdF9tcygtaW4gbGluZSBjbG9jayBjb3VudCBzZXR1cCAoRCkKCXtTU0lUWCwgMHgwMDAwMDEwQX0sCS8vCgl7MCwgMn0sCQkJLy8gIHdhaXRfbXMoMik7ICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwQzR9LAkvLyAgICAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwODAxNjB9LAkvLyAgICAgICAgIyBTZWVwLWluIGxpbmUgY2xvY2sgY291bnQgc2V0dXAgKEUpCgl7U1NJVFgsIDB4MDAwMDAxNjB9LAkvLwoJezAsIDJ9LAkJCS8vICB3YWl0X21zKDIpOyAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJe1NTSVRYLCAweDAwMDgwMEM1fSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDgwMTYwfSwJLy8gICAgICAgICMgd2FpdF9tcygtaW4gbGluZSBjbG9jayBjb3VudCBzZXR1cCAoRikKCXtTU0lUWCwgMHgwMDAwMDE2MH0sCS8vCgl7MCwgMn0sCQkJLy8gIHdhaXRfbXMoMik7ICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwQzZ9LAkvLyAgICAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwODAxNjB9LAkvLyAgICAgICAgIyB3YWl0X21zKC1pbiBsaW5lIGNsb2NrIHNldHVwIChHKQoJe1NTSVRYLCAweDAwMDAwMTYwfSwJLy8KCXswLCAyfSwJCQkvLyAgd2FpdF9tcygyKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBDN30sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDA4MDEzM30sCS8vICAgICAgICAjIEdhbW1hIDEgZmluZSB0dW5pbmcgKDEpCgl7U1NJVFgsIDB4MDAwMDAxNDN9LAkvLwoJezAsIDJ9LAkJCS8vICB3YWl0X21zKDIpOyAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJe1NTSVRYLCAweDAwMDgwMEM4fSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTQ0fSwJLy8gICAgICAgICMgR2FtbWEgMSBmaW5lIHR1bmluZyAoMikKCXtTU0lUWCwgMHgwMDA4MDBDOX0sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDAwMDEzM30sCS8vICAgICAgICAjIEdhbW1hIDEgaW5jbGluYXRpb24gYWRqdXN0bWVudAoJezAsIDJ9LAkJCS8vICB3YWl0X21zKDIpOyAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJe1NTSVRYLCAweDAwMDgwMENBfSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTAwfSwJLy8gICAgICAgICMgR2FtbWEgMSBibHVlIG9mZnNldCBhZGp1c3RtZW50Cgl7MCwgMn0sCQkJLy8gIHdhaXRfbXMoMik7ICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwRUN9LAkvLyAgICAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwODAxMDJ9LAkvLyAgICAgICAgIyBUb3RhbCBudW1iZXIgb2YgaG9yaXpvbnRhbCBjbG9jayBjeWNsZXMgKDEpIFtQQ0xLIFN5bmMuIFZHQSBzZXR0aW5nXQoJe1NTSVRYLCAweDAwMDAwMTE4fSwJLy8KCXswLCAyfSwJCQkvLyAgd2FpdF9tcygyKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBDRn0sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDAwMDEwMX0sCS8vICAgICAgICAjIEJsYW5raW5nIHBlcmlvZCBjb250cm9sICgxKSBbUENMSyBTeW5jLiBUYWJsZTEgZm9yIFZHQV0KCXswLCAyfSwJCQkvLyAgd2FpdF9tcygyKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBEMH0sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDA4MDExMH0sCS8vICAgICAgICAjIEJsYW5raW5nIHBlcmlvZCBjb250cm9sICgyKSBbUENMSyBTeW5jLiBUYWJsZTEgZm9yIFZHQV0KCXtTU0lUWCwgMHgwMDAwMDEwNH0sCS8vCgl7MCwgMn0sCQkJLy8gIHdhaXRfbXMoMik7ICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwRDF9LAkvLyAgICAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwMDAxMDF9LAkvLyAgICAgICAgIyBDS1YgdGltaW5nIGNvbnRyb2wgb24vb2ZmIFtQQ0xLIFN5bmMuIFRhYmxlMSBmb3IgVkdBXQoJezAsIDJ9LAkJCS8vICB3YWl0X21zKDIpOyAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJe1NTSVRYLCAweDAwMDgwMEQyfSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDgwMTAwfSwJLy8gICAgICAgICMgQ0tWMSwyIHRpbWluZyBjb250cm9sIFtQQ0xLIFN5bmMuIFRhYmxlMSBmb3IgVkdBXQoJe1NTSVRYLCAweDAwMDAwMTNBfSwJLy8KCXswLCAyfSwJCQkvLyAgd2FpdF9tcygyKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBEM30sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDA4MDEwMH0sCS8vICAgICAgICAjIE9FViB0aW1pbmcgY29udHJvbCBbUENMSyBTeW5jLiBUYWJsZTEgZm9yIFZHQV0KCXtTU0lUWCwgMHgwMDAwMDEzQX0sCS8vCgl7MCwgMn0sCQkJLy8gIHdhaXRfbXMoMik7ICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwRDR9LAkvLyAgICAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwODAxMjR9LAkvLyAgICAgICAgIyBBU1cgdGltaW5nIGNvbnRyb2wgKDEpIFtQQ0xLIFN5bmMuIFRhYmxlMSBmb3IgVkdBXQoJe1NTSVRYLCAweDAwMDAwMTZFfSwJLy8KCXswLCAxfSwJCQkvLyAgd2FpdF9tcygxKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBENX0sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDAwMDEyNH0sCS8vICAgICAgICAjIEFTVyB0aW1pbmcgY29udHJvbCAoMikgW1BDTEsgU3luYy4gVGFibGUxIGZvciBWR0FdCgl7MCwgMn0sCQkJLy8gIHdhaXRfbXMoMik7ICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwRUR9LAkvLyAgICAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwODAxMDF9LAkvLyAgICAgICAgIyBUb3RhbCBudW1iZXIgb2YgaG9yaXpvbnRhbCBjbG9jayBjeWNsZXMgKDIpIFtQQ0xLIFN5bmMuIFRhYmxlMSBmb3IgUVZHQSBdCgl7U1NJVFgsIDB4MDAwMDAxMEF9LAkvLwoJezAsIDJ9LAkJCS8vICB3YWl0X21zKDIpOyAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJe1NTSVRYLCAweDAwMDgwMEQ2fSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTAxfSwJLy8gICAgICAgICMgQmxhbmtpbmcgcGVyaW9kIGNvbnRyb2wgKDEpIFtQQ0xLIFN5bmMuIFRhYmxlMiBmb3IgUVZHQV0KCXswLCAyfSwJCQkvLyAgd2FpdF9tcygyKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBEN30sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDA4MDExMH0sCS8vICAgICAgICAjIEJsYW5raW5nIHBlcmlvZCBjb250cm9sICgyKSBbUENMSyBTeW5jLiBUYWJsZTIgZm9yIFFWR0FdCgl7U1NJVFgsIDB4MDAwMDAxMEF9LAkvLwoJezAsIDJ9LAkJCS8vICB3YWl0X21zKDIpOyAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJe1NTSVRYLCAweDAwMDgwMEQ4fSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTAxfSwJLy8gICAgICAgICMgQ0tWIHRpbWluZyBjb250cm9sIG9uL29mZiBbUENMSyBTeW5jLiBUYWJsZTIgZm9yIFFWR0FdCgl7MCwgMn0sCQkJLy8gIHdhaXRfbXMoMik7ICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwRDl9LAkvLyAgICAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwODAxMDB9LAkvLyAgICAgICAgIyBDS1YxLDIgdGltaW5nIGNvbnRyb2wgW1BDTEsgU3luYy4gVGFibGUyIGZvciBRVkdBXQoJe1NTSVRYLCAweDAwMDAwMTE0fSwJLy8KCXswLCAyfSwJCQkvLyAgd2FpdF9tcygyKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBERX0sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDA4MDEwMH0sCS8vICAgICAgICAjIE9FViB0aW1pbmcgY29udHJvbCBbUENMSyBTeW5jLiBUYWJsZTIgZm9yIFFWR0FdCgl7U1NJVFgsIDB4MDAwMDAxMTR9LAkvLwoJezAsIDJ9LAkJCS8vICB3YWl0X21zKDIpOyAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJe1NTSVRYLCAweDAwMDgwMERGfSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDgwMTEyfSwJLy8gICAgICAgICMgQVNXIHRpbWluZyBjb250cm9sICgxKSBbUENMSyBTeW5jLiBUYWJsZTIgZm9yIFFWR0FdCgl7U1NJVFgsIDB4MDAwMDAxM0Z9LAkvLwoJezAsIDJ9LAkJCS8vICB3YWl0X21zKDIpOyAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJe1NTSVRYLCAweDAwMDgwMEUwfSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDAwMTBCfSwJLy8gICAgICAgICMgQVNXIHRpbWluZyBjb250cm9sICgyKSBbUENMSyBTeW5jLiBUYWJsZTIgZm9yIFFWR0FdCgl7U1NJVFgsIDB4MDAwODAwRTJ9LAkvLyAgICAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwMDAxMDF9LAkvLyAgICAgICAgIyBCdWlsdC1pbiBvc2NpbGxhdG9yIGZyZXF1ZW5jeSBkaXZpc2lvbiBzZXR1cCBbRnJlcXVlbmN5IGRpdmlzaW9uIHJhdGlvIDogMiAoNjBIcSkKCXswLCAyfSwJCQkvLyAgd2FpdF9tcygyKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBFM30sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDAwMDEzNn0sCS8vICAgICAgICAjIEJ1aWx0LWluIG9zY2lsbGF0b3IgY2xvY2sgY291bnQgc2V0dXAKCXswLCAyfSwJCQkvLyAgd2FpdF9tcygyKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBFNH0sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDA4MDEwMH0sCS8vICAgICAgICAjIENLViB0aW1pbmcgY29udHJvbCBmb3IgdXNpbmcgYnVpbGQtaW4gb3NjCgl7U1NJVFgsIDB4MDAwMDAxMDN9LAkvLwoJezAsIDJ9LAkJCS8vICB3YWl0X21zKDIpOyAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJe1NTSVRYLCAweDAwMDgwMEU1fSwJLy8gICAgICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJe1NTSVRYLCAweDAwMDgwMTAyfSwJLy8gICAgICAgICMgT0VWIHRpbWluZyBjb250cm9sIGZvciB1c2luZyBidWlsZC1pbiBvc2MKCXtTU0lUWCwgMHgwMDAwMDEwNH0sCS8vCgl7MCwgMn0sCQkJLy8gIHdhaXRfbXMoMik7ICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwRTZ9LAkvLyAgICAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwMDAxMDN9LAkvLyAgICAgICAgIyBEQ0VWIHRpbWluZyBjb250cm9sIGZvciB1c2luZyBidWlsZC1pbiBvc2MKCXswLCAyfSwJCQkvLyAgd2FpdF9tcygyKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBFN30sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDA4MDEwNH0sCS8vICAgICAgICAjIEFTVyB0aW1pbmcgc2V0dXAgZm9yIHVzaW5nIGJ1aWxkLWluIG9zYygxKQoJe1NTSVRYLCAweDAwMDAwMTBBfSwJLy8KCXswLCAyfSwJCQkvLyAgd2FpdF9tcygyKTsgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBFOH0sCS8vICAgICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDAwMDEwNH0sCS8vICAgICAgICAjIEFTVyB0aW1pbmcgc2V0dXAgZm9yIHVzaW5nIGJ1aWxkLWluIG9zYygyKQoKCXtDTEtFTkIsIDB4MDAwMDAxRUZ9LAkvLyAgICMgU1lTLkNMS0VOQiAgIyBEQ0xLIGVuYWJsZQoJe1NUQVJULCAweDAwMDAwMDAwfSwJLy8gICAjIExDRC5TVEFSVCAgIyBMQ0RDIHdhaXRfbXMoIG1vZGUKCXtXUlNUQiwgMHgwMDAwMDAzRn0sCS8vICAgIyBMQ0QuV1JTVEIgICMgd3JpdGVfY2xpZW50X3JlZyggc3Ryb2JlCgl7UkRTVEIsIDB4MDAwMDA0MzJ9LAkvLyAgICMgTENELlJEU1RCICAjIFJlYWQgc3Ryb2JlCgl7UE9SVF9FTkIsIDB4MDAwMDAwMDJ9LAkvLyAgICMgTENELlBPUlRfRU5CICAjIEFzeW5jaHJvbm91cyBwb3J0IGVuYWJsZQoJe1ZTWU5JRiwgMHgwMDAwMDAwMH0sCS8vICAgIyBMQ0QuVlNZTkNJRiAgIyBWU1lOQyBJL0YgbW9kZSBzZXQKCXtBU1lfREFUQSwgMHg4MDAwMDAwMH0sCS8vICAgIyBMQ0QuQVNZX0RBVHggICMgSW5kZXggc2V0dGluZyBvZiBTVUIgTENERAoJe0FTWV9EQVRCLCAweDAwMDAwMDAxfSwJLy8gICAgICAgIyBPc2NpbGxhdG9yIHN0YXJ0Cgl7QVNZX0NNRFNFVCwgMHgwMDAwMDAwNX0sCS8vICAgIyBMQ0QuQVNZX0NNRFNFVCAgIyBEaXJlY3QgY29tbWFuZCB0cmFuc2ZlciBlbmFibGUKCXtBU1lfQ01EU0VULCAweDAwMDAwMDA0fSwJLy8gICAjIExDRC5BU1lfQ01EU0VUICAjIERpcmVjdCBjb21tYW5kIHRyYW5zZmVyIGRpc2FibGUKCXswLCAxMH0sCQkvLyAgd2FpdF9tcygxMCk7Cgl7QVNZX0RBVEEsIDB4ODAwMDAwMDB9LAkvLyAgICMgTENELkFTWV9EQVR4ICAjIERVTU1ZIHdyaXRlX2NsaWVudF9yZWcogUAqTk9URTIKCXtBU1lfREFUQiwgMHg4MDAwMDAwMH0sCS8vCgl7QVNZX0RBVEMsIDB4ODAwMDAwMDB9LAkvLwoJe0FTWV9EQVRELCAweDgwMDAwMDAwfSwJLy8KCXtBU1lfQ01EU0VULCAweDAwMDAwMDA5fSwJLy8gICAjIExDRC5BU1lfQ01EU0VUCgl7QVNZX0NNRFNFVCwgMHgwMDAwMDAwOH0sCS8vICAgIyBMQ0QuQVNZX0NNRFNFVAoJe0FTWV9EQVRBLCAweDgwMDAwMDA3fSwJLy8gICAjIExDRC5BU1lfREFUeCAgIyBJbmRleCBzZXR0aW5nIG9mIFNVQiBMQ0RECgl7QVNZX0RBVEIsIDB4MDAwMDQwMDV9LAkvLyAgICAgICAjIExDRCBkcml2ZXIgY29udHJvbAoJe0FTWV9DTURTRVQsIDB4MDAwMDAwMDV9LAkvLyAgICMgTENELkFTWV9DTURTRVQgICMgRGlyZWN0IGNvbW1hbmQgdHJhbnNmZXIgZW5hYmxlCgl7QVNZX0NNRFNFVCwgMHgwMDAwMDAwNH0sCS8vICAgIyBMQ0QuQVNZX0NNRFNFVCAgIyBEaXJlY3QgY29tbWFuZCB0cmFuc2ZlciBkaXNhYmxlCgl7MCwgMjB9LAkJLy8gIHdhaXRfbXMoMjApOwoJe0FTWV9EQVRBLCAweDgwMDAwMDU5fSwJLy8gICAjIExDRC5BU1lfREFUeCAgIyBJbmRleCBzZXR0aW5nIG9mIFNVQiBMQ0RECgl7QVNZX0RBVEIsIDB4MDAwMDAwMDB9LAkvLyAgICAgICAjIExUUFMgSS9GIGNvbnRyb2wKCXtBU1lfQ01EU0VULCAweDAwMDAwMDA1fSwJLy8gICAjIExDRC5BU1lfQ01EU0VUICAjIERpcmVjdCBjb21tYW5kIHRyYW5zZmVyIGVuYWJsZQoJe0FTWV9DTURTRVQsIDB4MDAwMDAwMDR9LAkvLyAgICMgTENELkFTWV9DTURTRVQgICMgRGlyZWN0IGNvbW1hbmQgdHJhbnNmZXIgZGlzYWJsZQoKCXtWU1lOSUYsIDB4MDAwMDAwMDF9LAkvLyAgICMgTENELlZTWU5DSUYgICMgVlNZTkMgSS9GIG1vZGUgT0ZGCgl7UE9SVF9FTkIsIDB4MDAwMDAwMDF9LAkvLyAgICMgTENELlBPUlRfRU5CICAjIFNZTkMgSS9GICBvdXRwdXQgc2VsZWN0CgoJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgl7VlNZTklGLCAweDAwMDAwMDAxfSwJLy8gVlNZTkMgSS9GIG1vZGUgT0ZGCgl7UE9SVF9FTkIsIDB4MDAwMDAwMDF9LAkvLyBTWU5DIEkvRiBtb2RlIE9OCgoJe0JJVE1BUDEsIDB4MDFFMDAwRjB9LAkvLyBNREMuQklUTUFQMiAgKTsgLy8gU2V0dXAgb2YgUElUQ0ggc2l6ZSB0byBGcmFtZSBidWZmZXIxCgl7QklUTUFQMiwgMHgwMUUwMDBGMH0sCS8vIE1EQy5CSVRNQVAzICApOyAvLyBTZXR1cCBvZiBQSVRDSCBzaXplIHRvIEZyYW1lIGJ1ZmZlcjIKCXtCSVRNQVAzLCAweDAxRTAwMEYwfSwJLy8gTURDLkJJVE1BUDQgICk7IC8vIFNldHVwIG9mIFBJVENIIHNpemUgdG8gRnJhbWUgYnVmZmVyMwoJe0JJVE1BUDQsIDB4MDBEQzAwQjB9LAkvLyBNREMuQklUTUFQNSAgKTsgLy8gU2V0dXAgb2YgUElUQ0ggc2l6ZSB0byBGcmFtZSBidWZmZXI0Cgl7Q0xLRU5CLCAweDAwMDAwMUVGfSwJLy8gU1lTLkNMS0VOQiAgKTsgLy8gRENMSyBzdXBwbHkKCXtQT1JUX0VOQiwgMHgwMDAwMDAwMX0sCS8vIExDRC5QT1JUX0VOQiAgKTsgLy8gU3luY2hyb25vdXMgcG9ydCBlbmFibGUKCXtQT1JULCAweDAwMDAwMDA0fSwJLy8gTENELlBPUlQgICk7IC8vIFBvbGFyaXR5IG9mIERFIGlzIHNldCB0byBoaWdoIGFjdGl2ZQoJe1BYTCwgMHgwMDAwMDAwMn0sCS8vIExDRC5QWEwgICk7IC8vIEFDVE1PREUgMiBzZXQgKDFzdCBmcmFtZSBibGFjayBkYXRhIG91dHB1dCkKCXtNUExGQlVGLCAweDAwMDAwMDAwfSwJLy8gTENELk1QTEZCVUYgICk7IC8vIFNlbGVjdCB0aGUgcmVhZGluZyBidWZmZXIKCXtIQ1lDTEUsIDB4MDAwMDAxMGJ9LAkvLyBMQ0QuSENZQ0xFICApOyAvLyBTZXR1cCB0byBWR0Egc2l6ZQoJe0hTVywgMHgwMDAwMDAwM30sCS8vIExDRC5IU1cKCXtIREVfU1RBUlQsIDB4MDAwMDAwMDd9LAkvLyBMQ0QuSERFX1NUQVJUCgl7SERFX1NJWkUsIDB4MDAwMDAwRUZ9LAkvLyBMQ0QuSERFX1NJWkUKCXtWQ1lDTEUsIDB4MDAwMDAyODV9LAkvLyBMQ0QuVkNZQ0xFCgl7VlNXLCAweDAwMDAwMDAxfSwJLy8gTENELlZTVwoJe1ZERV9TVEFSVCwgMHgwMDAwMDAwM30sCS8vIExDRC5WREVfU1RBUlQKCXtWREVfU0laRSwgMHgwMDAwMDI3Rn0sCS8vIExDRC5WREVfU0laRQoKCXtTVEFSVCwgMHgwMDAwMDAwMX0sCS8vIExDRC5TVEFSVCAgKTsgLy8gTENEQyAtIFBpeGVsIGRhdGEgdHJhbnNmZXIgc3RhcnQKCgl7MCwgMTB9LAkJLy8gIHdhaXRfbXMoIDEwICApOwoJe1NTSVRYLCAweDAwMDgwMEJDfSwJLy8gU1BJLlNTSVRYICApOyAvLyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwMDAxODB9LAkvLyBEaXNwbGF5IGRhdGEgc2V0dXAKCXtTU0lUWCwgMHgwMDA4MDAzQn0sCS8vIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDAwMDEwMH0sCS8vIFF1YWQgRGF0YSBjb25maWd1cmF0aW9uIC0gVkdBCgl7MCwgMX0sCQkJLy8gIHdhaXRfbXMoIDEgICAgICAgICAgICAgICk7IC8vICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwODAwQjB9LAkvLyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7U1NJVFgsIDB4MDAwMDAxMTZ9LAkvLyBQb3dlciBzdXBwbHkgT04vT0ZGIGNvbnRyb2wKCXswLCAxfSwJCQkvLyAgd2FpdF9tcyggMSAgICAgICAgICAgICAgKTsgLy8gIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXtTU0lUWCwgMHgwMDA4MDBCOH0sCS8vIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXtTU0lUWCwgMHgwMDA4MDFGRn0sCS8vIE91dHB1dCBjb250cm9sCgl7U1NJVFgsIDB4MDAwMDAxRjV9LAoJezAsIDF9LAkJCS8vICB3YWl0X21zKCAxKTsgICAgICAgICAgIC8vICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7U1NJVFgsIDB4MDAwMDAwMTF9LAkvLyB3YWl0X21zKC1vdXQgKENvbW1hbmQgb25seSkKCXtTU0lUWCwgMHgwMDAwMDAyOX0sCS8vIERpc3BsYXkgb24gKENvbW1hbmQgb25seSkKCgl7U1lTVEVNX0JMT0NLMV9CQVNFLCAweDAwMDAwMDAyfSwJLy8gICAgICAgIyB3YWtlUkVRIC0+IEdQSU8KCgl7MCwgMH0KfTsKCnN0YXRpYyB2b2lkIF9wYW5lbF9pbml0KHN0cnVjdCBpbml0X3RhYmxlICppbml0X3RhYmxlKQp7Cgl1bnNpZ25lZCBuOwoKCWRwcmludGYoSU5GTywgInBhbmVsX2luaXQoKVxuIik7CgoJbiA9IDA7Cgl3aGlsZSAoaW5pdF90YWJsZVtuXS5yZWcgIT0gMCB8fCBpbml0X3RhYmxlW25dLnZhbCAhPSAwKSB7CgkJaWYgKGluaXRfdGFibGVbbl0ucmVnICE9IDApCgkJCW1kZGlfcmVtb3RlX3dyaXRlKGluaXRfdGFibGVbbl0udmFsLCBpbml0X3RhYmxlW25dLnJlZyk7CgkJZWxzZQoJCQltZGVsYXkoaW5pdF90YWJsZVtuXS52YWwpOwoJCW4rKzsKCX0KCglkcHJpbnRmKElORk8sICJwYW5lbF9pbml0KCkgZG9uZVxuIik7Cn0KCnZvaWQgcGFuZWxfaW5pdChzdHJ1Y3QgbWRkaV9jbGllbnRfY2FwcyAqY2xpZW50X2NhcHMpCnsKCXN3aXRjaCAoY2xpZW50X2NhcHMtPm1hbnVmYWN0dXJlcl9uYW1lKSB7CgljYXNlIDB4ZDI2MzoJCS8vIFRvc2hpYmEKCQlkcHJpbnRmKElORk8sICJGb3VuZCBUb3NoaWJhIHBhbmVsXG4iKTsKCQlfcGFuZWxfaW5pdCh0b3NoaWJhXzQ4MHg2NDBfaW5pdF90YWJsZSk7CgkJYnJlYWs7CgljYXNlIDB4NDQ3NDoJCS8vPz8KCQlpZiAoY2xpZW50X2NhcHMtPnByb2R1Y3RfY29kZSA9PSAweGMwNjUpCgkJCWRwcmludGYoSU5GTywgIkZvdW5kIFdWR0EgcGFuZWxcbiIpOwoJCWJyZWFrOwoJfQp9Cgp2b2lkIHBhbmVsX3Bvd2Vyb24odm9pZCkKewoJZ3Bpb19zZXQoODgsIDApOwoJZ3Bpb19jb25maWcoODgsIEdQSU9fT1VUUFVUKTsKCXVkZWxheSgxMCk7CglncGlvX3NldCg4OCwgMSk7CgltZGVsYXkoMTApOwoKCS8vbWRlbGF5KDEwMDApOyAvLyB1bmNvbW1lbnQgZm9yIHNlY29uZCBzdGFnZSBib290Cn0KCnZvaWQgcGFuZWxfYmFja2xpZ2h0KGludCBvbikKewp9Cg==