LyogQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuICovCgojaW5jbHVkZSA8ZGVidWcuaD4KI2luY2x1ZGUgPGRldi9ncGlvLmg+CiNpbmNsdWRlIDxrZXJuZWwvdGhyZWFkLmg+CiNpbmNsdWRlIDxtZGRpLmg+CgojZGVmaW5lIE1ERElfQ0xJRU5UX0NPUkVfQkFTRSAgMHgxMDgwMDAKI2RlZmluZSBMQ0RfQ09OVFJPTF9CTE9DS19CQVNFIDB4MTEwMDAwCiNkZWZpbmUgU1BJX0JMT0NLX0JBU0UgICAgICAgICAweDEyMDAwMAojZGVmaW5lIEkyQ19CTE9DS19CQVNFICAgICAgICAgMHgxMzAwMDAKI2RlZmluZSBQV01fQkxPQ0tfQkFTRSAgICAgICAgIDB4MTQwMDAwCiNkZWZpbmUgR1BJT19CTE9DS19CQVNFICAgICAgICAweDE1MDAwMAojZGVmaW5lIFNZU1RFTV9CTE9DSzFfQkFTRSAgICAgMHgxNjAwMDAKI2RlZmluZSBTWVNURU1fQkxPQ0syX0JBU0UgICAgIDB4MTcwMDAwCgoKI2RlZmluZQlNRERJQ0FQMCAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MDApCiNkZWZpbmUJTURESUNBUDEgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDA0KQojZGVmaW5lCU1ERElDQVAyICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgwOCkKI2RlZmluZQlNRERJQ0FQMyAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MEMpCiNkZWZpbmUJTURDQVBDSEcgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDEwKQojZGVmaW5lCU1EQ1JDRVJDICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgxNCkKI2RlZmluZQlUVEJVU1NFTCAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MTgpCiNkZWZpbmUJRFBTRVQwICAgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDFDKQojZGVmaW5lCURQU0VUMSAgICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgyMCkKI2RlZmluZQlEUFNVUyAgICAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MjQpCiNkZWZpbmUJRFBSVU4gICAgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDI4KQojZGVmaW5lCVNZU0NLRU5BICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgyQykKI2RlZmluZQlURVNUTU9ERSAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MzApCiNkZWZpbmUJRklGT01PTkkgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDM0KQojZGVmaW5lCUlOVE1PTkkgICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgzOCkKI2RlZmluZQlNRElPQklTVCAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4M0MpCiNkZWZpbmUJTURJT1BTRVQgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDQwKQojZGVmaW5lCUJJVE1BUDAgICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHg0NCkKI2RlZmluZQlCSVRNQVAxICAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4NDgpCiNkZWZpbmUJQklUTUFQMiAgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDRDKQojZGVmaW5lCUJJVE1BUDMgICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHg1MCkKI2RlZmluZQlCSVRNQVA0ICAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4NTQpCgoKI2RlZmluZQlTUlNUICAgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDAwKQojZGVmaW5lCVBPUlRfRU5CICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MDQpCiNkZWZpbmUJU1RBUlQgICAgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgwOCkKI2RlZmluZQlQT1JUICAgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDBDKQojZGVmaW5lCUNNTiAgICAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MTApCiNkZWZpbmUJR0FNTUEgICAgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgxNCkKI2RlZmluZQlJTlRGTEcgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDE4KQojZGVmaW5lCUlOVE1TSyAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MUMpCiNkZWZpbmUJTVBMRkJVRiAgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgyMCkKI2RlZmluZQlIREVfTEVGVCAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDI0KQojZGVmaW5lCVZERV9UT1AgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MjgpCgojZGVmaW5lCVBYTCAgICAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MzApCiNkZWZpbmUJSENZQ0xFICAgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgzNCkKI2RlZmluZQlIU1cgICAgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDM4KQojZGVmaW5lCUhERV9TVEFSVCAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4M0MpCiNkZWZpbmUJSERFX1NJWkUgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg0MCkKI2RlZmluZQlWQ1lDTEUgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDQ0KQojZGVmaW5lCVZTVyAgICAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NDgpCiNkZWZpbmUJVkRFX1NUQVJUICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg0QykKI2RlZmluZQlWREVfU0laRSAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDUwKQojZGVmaW5lCVdBS0VVUCAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NTQpCiNkZWZpbmUJV1NZTl9ETFkgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg1OCkKI2RlZmluZQlSRUdFTkIgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDVDKQojZGVmaW5lCVZTWU5JRiAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NjApCiNkZWZpbmUJV1JTVEIgICAgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg2NCkKI2RlZmluZQlSRFNUQiAgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDY4KQojZGVmaW5lCUFTWV9EQVRBICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NkMpCiNkZWZpbmUJQVNZX0RBVEIgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg3MCkKI2RlZmluZQlBU1lfREFUQyAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDc0KQojZGVmaW5lCUFTWV9EQVREICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NzgpCiNkZWZpbmUJQVNZX0RBVEUgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg3QykKI2RlZmluZQlBU1lfREFURiAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDgwKQojZGVmaW5lCUFTWV9EQVRHICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4ODQpCiNkZWZpbmUJQVNZX0RBVEggICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg4OCkKI2RlZmluZQlBU1lfQ01EU0VUICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDhDKQoKI2RlZmluZQlNT05JICAgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweEIwKQoKI2RlZmluZQlDdXJyZW50ICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweEMwKQojZGVmaW5lCUxDRCAgICAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4QzQpCiNkZWZpbmUJQ09NTUFORCAgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHhDOCkKCgojZGVmaW5lCVNTSUNUTCAgICAgIChTUElfQkxPQ0tfQkFTRXwweDAwKQojZGVmaW5lCVNTSVRJTUUgICAgIChTUElfQkxPQ0tfQkFTRXwweDA0KQojZGVmaW5lCVNTSVRYICAgICAgIChTUElfQkxPQ0tfQkFTRXwweDA4KQojZGVmaW5lCVNTSVJYICAgICAgIChTUElfQkxPQ0tfQkFTRXwweDBDKQojZGVmaW5lCVNTSUlOVEMgICAgIChTUElfQkxPQ0tfQkFTRXwweDEwKQojZGVmaW5lCVNTSUlOVFMgICAgIChTUElfQkxPQ0tfQkFTRXwweDE0KQojZGVmaW5lCVNTSURCRzEgICAgIChTUElfQkxPQ0tfQkFTRXwweDE4KQojZGVmaW5lCVNTSURCRzIgICAgIChTUElfQkxPQ0tfQkFTRXwweDFDKQojZGVmaW5lCVNTSUlEICAgICAgIChTUElfQkxPQ0tfQkFTRXwweDIwKQoKCiNkZWZpbmUJSTJDU0VUVVAJKEkyQ19CTE9DS19CQVNFfDB4MDApCiNkZWZpbmUJSTJDQ1RSTAkgICAgKEkyQ19CTE9DS19CQVNFfDB4MDQpCgoKI2RlZmluZQlUSU1FUjBMT0FECSAgKFBXTV9CTE9DS19CQVNFfDB4MDApCiNkZWZpbmUJVElNRVIwVkFMVUUJICAoUFdNX0JMT0NLX0JBU0V8MHgwNCkKI2RlZmluZQlUSU1FUjBDT05UUk9MIChQV01fQkxPQ0tfQkFTRXwweDA4KQojZGVmaW5lCVRJTUVSMElOVENMUiAgKFBXTV9CTE9DS19CQVNFfDB4MEMpCiNkZWZpbmUJVElNRVIwUklTCSAgKFBXTV9CTE9DS19CQVNFfDB4MTApCiNkZWZpbmUJVElNRVIwTUlTCSAgKFBXTV9CTE9DS19CQVNFfDB4MTQpCiNkZWZpbmUJVElNRVIwQkdMT0FEICAoUFdNX0JMT0NLX0JBU0V8MHgxOCkKI2RlZmluZQlQV00wT0ZGCSAgICAgIChQV01fQkxPQ0tfQkFTRXwweDFDKQojZGVmaW5lCVRJTUVSMUxPQUQJICAoUFdNX0JMT0NLX0JBU0V8MHgyMCkKI2RlZmluZQlUSU1FUjFWQUxVRQkgIChQV01fQkxPQ0tfQkFTRXwweDI0KQojZGVmaW5lCVRJTUVSMUNPTlRST0wgKFBXTV9CTE9DS19CQVNFfDB4MjgpCiNkZWZpbmUJVElNRVIxSU5UQ0xSICAoUFdNX0JMT0NLX0JBU0V8MHgyQykKI2RlZmluZQlUSU1FUjFSSVMJICAoUFdNX0JMT0NLX0JBU0V8MHgzMCkKI2RlZmluZQlUSU1FUjFNSVMJICAoUFdNX0JMT0NLX0JBU0V8MHgzNCkKI2RlZmluZQlUSU1FUjFCR0xPQUQgIChQV01fQkxPQ0tfQkFTRXwweDM4KQojZGVmaW5lCVBXTTFPRkYJICAgICAgKFBXTV9CTE9DS19CQVNFfDB4M0MpCiNkZWZpbmUJVElNRVJJVENSCSAgKFBXTV9CTE9DS19CQVNFfDB4NjApCiNkZWZpbmUJVElNRVJJVE9QCSAgKFBXTV9CTE9DS19CQVNFfDB4NjQpCiNkZWZpbmUJUFdNQ1IJICAgICAgKFBXTV9CTE9DS19CQVNFfDB4NjgpCiNkZWZpbmUJUFdNSUQJICAgICAgKFBXTV9CTE9DS19CQVNFfDB4NkMpCiNkZWZpbmUJUFdNTU9OCSAgICAgIChQV01fQkxPQ0tfQkFTRXwweDcwKQoKCiNkZWZpbmUJR1BJT0RBVEEgICAgKEdQSU9fQkxPQ0tfQkFTRXwweDAwKQojZGVmaW5lCUdQSU9ESVIgICAgIChHUElPX0JMT0NLX0JBU0V8MHgwNCkKI2RlZmluZQlHUElPSVMgICAgICAoR1BJT19CTE9DS19CQVNFfDB4MDgpCiNkZWZpbmUJR1BJT0lCRSAgICAgKEdQSU9fQkxPQ0tfQkFTRXwweDBDKQojZGVmaW5lCUdQSU9JRVYgICAgIChHUElPX0JMT0NLX0JBU0V8MHgxMCkKI2RlZmluZQlHUElPSUUgICAgICAoR1BJT19CTE9DS19CQVNFfDB4MTQpCiNkZWZpbmUJR1BJT1JJUyAgICAgKEdQSU9fQkxPQ0tfQkFTRXwweDE4KQojZGVmaW5lCUdQSU9NSVMgICAgIChHUElPX0JMT0NLX0JBU0V8MHgxQykKI2RlZmluZQlHUElPSUMgICAgICAoR1BJT19CTE9DS19CQVNFfDB4MjApCiNkZWZpbmUJR1BJT09NUyAgICAgKEdQSU9fQkxPQ0tfQkFTRXwweDI0KQojZGVmaW5lCUdQSU9QQyAgICAgIChHUElPX0JMT0NLX0JBU0V8MHgyOCkKCiNkZWZpbmUJR1BJT0lEICAgICAgKEdQSU9fQkxPQ0tfQkFTRXwweDMwKQoKCiNkZWZpbmUJV0tSRVEgICAgICAgKFNZU1RFTV9CTE9DSzFfQkFTRXwweDAwKQojZGVmaW5lCUNMS0VOQiAgICAgIChTWVNURU1fQkxPQ0sxX0JBU0V8MHgwNCkKI2RlZmluZQlEUkFNUFdSICAgICAoU1lTVEVNX0JMT0NLMV9CQVNFfDB4MDgpCiNkZWZpbmUgQ05UX0RJUyAgICAgKFNZU1RFTV9CTE9DSzFfQkFTRXwweDEwKQojZGVmaW5lCUlOVE1BU0sgICAgIChTWVNURU1fQkxPQ0sxX0JBU0V8MHgwQykKI2RlZmluZQlHUElPU0VMICAgICAoU1lTVEVNX0JMT0NLMl9CQVNFfDB4MDApCgpzdHJ1Y3QgaW5pdF90YWJsZSB7CiAgICB1bnNpZ25lZCBpbnQgcmVnOwogICAgdW5zaWduZWQgaW50IHZhbDsKfTsKCnN0YXRpYyBzdHJ1Y3QgaW5pdF90YWJsZSB0b3NoaWJhXzQ4MHg4MDBfaW5pdF90YWJsZVtdID0gewogICB7IERQU0VUMCwgICAgICAgICAgICAgICAweDRCRUMwMDY2IH0sICAvLyAjIE1EQy5EUFNFVDAgICMgU2V0dXAgRFBMTCBwYXJhbWV0ZXJzCiAgIHsgRFBTRVQxLCAgICAgICAgICAgICAgIDB4MDAwMDAxMTMgfSwgIC8vICAgIyBNREMuRFBTRVQxCiAgIHsgRFBTVVMsICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAgfSwgIC8vICAgIyBNREMuRFBTVVMgICMgU2V0IERQTEwgb3NjaWxsYXRpb24gZW5hYmxlCiAgIHsgRFBSVU4sICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgfSwgIC8vICAgIyBNREMuRFBSVU4gICMgUmVsZWFzZSByZXNldCBzaWduYWwgZm9yIERQTEwKICAgeyAwLCAgICAgICAgICAgICAgICAgICAgMTUgICAgICAgICB9LCAgLy8gd2FpdF9tcygxNSk7CiAgIHsgU1lTQ0tFTkEsICAgICAgICAgICAgIDB4MDAwMDAwMDEgfSwgIC8vICAgIyBNREMuU1lTQ0tFTkEgICMgRW5hYmxlIHN5c3RlbSBjbG9jayBvdXRwdXQKICAgeyBDTEtFTkIsICAgICAgICAgICAgICAgMHgwMDAwMDBFOSB9LCAgLy8gICAjIFNZUy5DTEtFTkIgICMgRW5hYmxlIGNsb2NrcyBmb3IgZWFjaCBtb2R1bGUgKHdpdGhvdXQgRENMSyAsIGkyY0NMSykKCiAgIHsgR1BJT19CTE9DS19CQVNFLCAgICAgIDB4MDNGRjAwMDAgfSwgIC8vICAgIyBHUEkgLkdQSU9EQVRBICAjIEdQSU8yKFJFU0VUX0xDRF9OKSBzZXQgdG8gMCAsIEdQSU8zKGVEUkFNX1Bvd2VyKSBzZXQgdG8gMAogICB7IEdQSU9ESVIsICAgICAgICAgICAgICAweDAwMDAwMjREIH0sICAvLyAgICMgR1BJIC5HUElPRElSICAjIFNlbGVjdCBkaXJlY3Rpb24gb2YgR1BJTyBwb3J0ICgwLDIsMyw2LDkgb3V0cHV0KQogICB7IFNZU1RFTV9CTE9DSzJfQkFTRSwgICAweDAwMDAwMTczIH0sICAvLyAgICMgU1lTLkdQSU9TRUwgICMgR1BJTyBwb3J0IG11bHRpcGxleGluZyBjb250cm9sCiAgIHsgR1BJT1BDLCAgICAgICAgICAgICAgIDB4MDNDMzAwQzAgfSwgIC8vICAgIyBHUEkgLkdQSU9QQyAgIyBHUElPMiwzIFBEIGN1dAogICB7IFNZU1RFTV9CTE9DSzFfQkFTRSwgICAweDAwMDAwMDAwIH0sICAvLyAgICMgU1lTLldLUkVRICAjIFdha2UtdXAgcmVxdWVzdCBldmVudCBpcyBWU1lOQyBhbGlnbm1lbnQKICAgeyBHUElPSVMsICAgICAgICAgICAgICAgMHgwMDAwMDAwMCB9LCAgLy8gICAjIEdQSSAuR1BJT0lTICAjIFNldCBpbnRlcnJ1cHQgc2Vuc2Ugb2YgR1BJTwogICB7IEdQSU9JRVYsICAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyAgICMgR1BJIC5HUElPSUVWICAjIFNldCBpbnRlcnJ1cHQgZXZlbnQgb2YgR1BJTwogICB7IEdQSU9JQywgICAgICAgICAgICAgICAweDAwMDAwM0ZGIH0sICAvLyAgICMgR1BJIC5HUElPSUMgICMgR1BJTyBpbnRlcnJ1cHQgY2xlYXIKICAgeyBHUElPX0JMT0NLX0JBU0UsICAgICAgMHgwMDA0MDAwNCB9LCAgLy8gICAjIEdQSSAuR1BJT0RBVEEgICMgUmVsZWFzZSBMQ0REIHJlc2V0CiAgIHsgR1BJT19CTE9DS19CQVNFLCAgICAgIDB4MDAwODAwMDggfSwgIC8vICAgIyBHUEkgLkdQSU9EQVRBICAjIGVEUkFNIFZEIHN1cHBseQogICB7IERSQU1QV1IsICAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyAgICMgU1lTLkRSQU1QV1IgICMgZURSQU0gcG93ZXIgdXAKICAgeyBDTEtFTkIsICAgICAgICAgICAgICAgMHgwMDAwQTBFQiB9LCAgLy8gICAjIGVuYWJsZSBlRFJBTSBjbG9jawoKICAgeyBQV01DUiwgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCB9LCAgLy8gICAjIFBXTS5QV01DUiAgIyBQV00gb3V0cHV0IGVuYWJsZQogICB7IDAsICAgICAgICAgICAgICAgICAgICAxICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygxKTsKICAgeyBTUElfQkxPQ0tfQkFTRSwgICAgICAgMHgwMDA2MDM5OX0sICAvLyAgICMgU1BJIC5TU0lDVEwgICMgU1BJIG9wZXJhdGlvbiBtb2RlIHNldHRpbmcKICAgeyBTU0lUSU1FLCAgICAgICAgICAgICAgMHgwMDAwMDEwMCB9LCAgLy8gICAjIFNQSSAuU1NJVElNRSAgIyBTUEkgc2VyaWFsIGludGVyZmFjZSB0aW1pbmcgc2V0dGluZwogICB7IENOVF9ESVMsICAgICAgICAgICAgICAweDAwMDAwMTAwIH0sICAvLyAgICMgU1BJIC5TU0lUSU1FICAjIFNQSSBzZXJpYWwgaW50ZXJmYWNlIHRpbWluZyBzZXR0aW5nCiAgIHsgU1BJX0JMT0NLX0JBU0UsICAgICAgIDB4MDAwNjAzOUIgfSwgIC8vICAgIyBTUEkgLlNTSUNUTCAgIyBTZXQgU1BJIGFjdGl2ZSBtb2RlCgogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMDAwIH0sICAvLyAgICMgU1BJLlNTSVRYICAjIFJlbGVhc2UgZnJvbSBEZWVwIFN0YW5ieSBtb2RlCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOwogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMDAwIH0sICAvLyAgICMgU1BJLlNTSVRYCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOwogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMDAwIH0sICAvLyAgICMgU1BJLlNTSVRYCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOwoKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCQSB9LCAgLy8gICAjIFNQSS5TU0lUWCAgICAgICAgICAqTk9URSAxICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDExMSB9LCAgLy8gICAgICMgRGlzcGxheSBtb2RlIHNldHVwKDEpIDogTm9ybWFseSBCbGFjawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMDM2IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgfSwgIC8vICAgICAjIE1lbW9yeSBhY2Nlc3MgY29udHJvbAogICB7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgLy8gICAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5CiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwM0EgfSwgIC8vICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxNjAgfSwgIC8vICAgIyBEaXNwbGF5IG1vZGUgc2V0dXAoMikKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCMSB9LCAgLy8gICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDE1RCB9LCAgLy8gICAjIFJHQiBJbnRlcmZhY2UgZGF0YSBmb3JtYXQKICAgeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEIyIH0sICAvLyAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTMzIH0sICAvLyAgICMgRHJpdm5pZyBtZXRob2QKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCMyB9LCAgLy8gICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEyMiB9LCAgLy8gICAjIEJvb3N0ZXIgb3BlcmF0aW9uIHNldHVwCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCNCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAyIH0sICAvLyAgICAgIyBPUC1hbXAgY2FwYWJpbGl0eS9TeXN0ZW0gY2xvY2sgZnJlcS4gZGl2aXNpb24gc2V0dXAKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCNSB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTFFIH0sICAvLyAgICAgIyBWQ1MgVm9sdGFnZSBhZGp1c3RtZW50ICAoMUMtPjFGIGZvciBSZXYgMikKICAgeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEI2IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMjcgfSwgIC8vICAgICAjIFZDT00gVm9sdGFnZSBhZGp1c3RtZW50CiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQjcgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMyB9LCAgLy8gICAgICMgQ29uZmlndXJlIGFuIGV4dGVybmFsIGRpc3BsYXkgc2lnbmFsCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCOSB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTI0IH0sICAvLyAgICAgIyBEQ0NLL0RDRVYgdGltaW5nIHNldHVwCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQkQgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDFBMSB9LCAgLy8gICAgICMgQVNXIHNpZ25hbCBjb250cm9sCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCQiB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAwIH0sICAvLyAgICAgIyBEdW1teSBkaXNwbGF5ICh3aGl0ZS9ibGFjaykgY291bnQgc2V0dXAgZm9yIFFVQUQgRGF0YSBvcGVyYXRpb24KICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCRiB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAxIH0sICAvLyAgICAgIyBEdW1teSBkaXNwbGF5ICh3aGl0ZS9ibGFjaykgY291bnQgc2V0dXAgZm9yIFFVQUQgRGF0YSBvcGVyYXRpb24KICAgeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEJFIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgfSwgIC8vICAgICAjIHdhaXRfbXMoLW91dCBGUiBjb3VudCBzZXR1cCAoQSkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBDMCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTExIH0sICAvLyAgICAgIyB3YWl0X21zKC1vdXQgRlIgY291bnQgc2V0dXAgKEEpCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBDMSB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTExIH0sICAvLyAgICAgIyB3YWl0X21zKC1vdXQgRlIgY291bnQgc2V0dXAgKEIpCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQzIgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDExMSB9LCAgLy8gICAgICMgd2FpdF9tcygtb3V0IEZSIGNvdW50IHNldHVwIChDKQogICB7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5CiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQzMgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDEzMiB9LCAgLy8gICAgICMgd2FpdF9tcygtaW4gbGluZSBjbG9jayBjb3VudCBzZXR1cCAoRCkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEzMiB9LCAgLy8KICAgeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEM0IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMzIgfSwgIC8vICAgICAjIFNlZXAtaW4gbGluZSBjbG9jayBjb3VudCBzZXR1cCAoRSkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEzMiB9LCAgLy8KICAgeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEM1IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMzIgfSwgIC8vICAgICAjIHdhaXRfbXMoLWluIGxpbmUgY2xvY2sgY291bnQgc2V0dXAgKEYpCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMzIgfSwgIC8vCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBDNiB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTMyIH0sICAvLyAgICAgIyB3YWl0X21zKC1pbiBsaW5lIGNsb2NrIHNldHVwIChHKQogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTMyIH0sICAvLwogICB7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5CiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQzcgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDE2NCB9LCAgLy8gICAgICMgR2FtbWEgMSBmaW5lIHR1bmluZyAoMSkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDE0NSB9LCAgLy8KICAgeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEM4IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxNDQgfSwgIC8vICAgICAjIEdhbW1hIDEgZmluZSB0dW5pbmcgKDIpCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQzkgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDE1MiB9LCAgLy8gICAgICMgR2FtbWEgMSBpbmNsaW5hdGlvbiBhZGp1c3RtZW50CiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBDQSB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAwIH0sICAvLyAgICAgIyBHYW1tYSAxIGJsdWUgb2Zmc2V0IGFkanVzdG1lbnQKICAgeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEVDIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMDEgfSwgIC8vICAgICAjIFRvdGFsIG51bWJlciBvZiBob3Jpem9udGFsIGNsb2NrIGN5Y2xlcyAoMSkgW1BDTEsgU3luYy4gVkdBIHNldHRpbmddCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxRkMgfSwgIC8vCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBDRiB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAxIH0sICAvLyAgICAgIyBCbGFua2luZyBwZXJpb2QgY29udHJvbCAoMSkgW1BDTEsgU3luYy4gVGFibGUxIGZvciBWR0FdCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBEMCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTEwIH0sICAvLyAgICAgIyBCbGFua2luZyBwZXJpb2QgY29udHJvbCAoMikgW1BDTEsgU3luYy4gVGFibGUxIGZvciBWR0FdCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDQgfSwgIC8vCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBEMSB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAxIH0sICAvLyAgICAgIyBDS1YgdGltaW5nIGNvbnRyb2wgb24vb2ZmIFtQQ0xLIFN5bmMuIFRhYmxlMSBmb3IgVkdBXQogICB7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5CiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRDIgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDEwMCB9LCAgLy8gICAgICMgQ0tWMSwyIHRpbWluZyBjb250cm9sIFtQQ0xLIFN5bmMuIFRhYmxlMSBmb3IgVkdBXQogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTI4IH0sICAvLwogICB7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5CiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRDMgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDEwMCB9LCAgLy8gICAgICMgT0VWIHRpbWluZyBjb250cm9sIFtQQ0xLIFN5bmMuIFRhYmxlMSBmb3IgVkdBXQogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTI4IH0sICAvLwogICB7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5CiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRDQgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDEyNiB9LCAgLy8gICAgICMgQVNXIHRpbWluZyBjb250cm9sICgxKSBbUENMSyBTeW5jLiBUYWJsZTEgZm9yIFZHQV0KICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDFBNCB9LCAgLy8KICAgeyAwLCAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMSk7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEQ1IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMjAgfSwgIC8vICAgICAjIEFTVyB0aW1pbmcgY29udHJvbCAoMikgW1BDTEsgU3luYy4gVGFibGUxIGZvciBWR0FdCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBFRiB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTMyIH0sICAvLyAgICAgIyBUb3RhbCBudW1iZXIgb2YgaG9yaXpvbnRhbCBjbG9jayBjeWNsZXMgKDIpIFtQQ0xLIFN5bmMuIFRhYmxlMSBmb3IgUVZHQSBdCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgfSwgIC8vCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCiAgIHsgQklUTUFQMCwgICAgICAgICAgICAgIDB4MDMyMDAxRTAgfSwgIC8vIE1EQy5CSVRNQVAwICApOyAvLyBTZXR1cCBvZiBQSVRDSCBzaXplIHRvIEZyYW1lIGJ1ZmZlcjEKICAgeyBCSVRNQVAxLCAgICAgICAgICAgICAgMHgwMzIwMDFFMCB9LCAgLy8gTURDLkJJVE1BUDEgICk7IC8vIFNldHVwIG9mIFBJVENIIHNpemUgdG8gRnJhbWUgYnVmZmVyMQogICB7IEJJVE1BUDIsICAgICAgICAgICAgICAweDAxNDAwMEYwIH0sICAvLyBNREMuQklUTUFQMyAgKTsgLy8gU2V0dXAgb2YgUElUQ0ggc2l6ZSB0byBGcmFtZSBidWZmZXIyCiAgIHsgQklUTUFQMywgICAgICAgICAgICAgIDB4MDE0MDAwRjAgfSwgIC8vIE1EQy5CSVRNQVA0ICApOyAvLyBTZXR1cCBvZiBQSVRDSCBzaXplIHRvIEZyYW1lIGJ1ZmZlcjMKICAgeyBCSVRNQVA0LCAgICAgICAgICAgICAgMHgwMTQwMDBGMCB9LCAgLy8gTURDLkJJVE1BUDUgICk7IC8vIFNldHVwIG9mIFBJVENIIHNpemUgdG8gRnJhbWUgYnVmZmVyNAogICB7IENMS0VOQiwgICAgICAgICAgICAgICAweDAwMDBBMUVCIH0sICAvLyBTWVMuQ0xLRU5CICApOyAvLyBEQ0xLIHN1cHBseQogICB7IFBPUlRfRU5CLCAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyBMQ0QuUE9SVF9FTkIgICk7IC8vIFN5bmNocm9ub3VzIHBvcnQgZW5hYmxlCiAgIHsgUE9SVCwgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgfSwgIC8vIExDRC5QT1JUICApOyAvLyBQb2xhcml0eSBvZiBERSBpcyBzZXQgdG8gaGlnaCBhY3RpdmUKICAgeyBQWEwsICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMiB9LCAgLy8gTENELlBYTCAgKTsgLy8gQUNUTU9ERSAyIHNldCAoMXN0IGZyYW1lIGJsYWNrIGRhdGEgb3V0cHV0KQogICB7IE1QTEZCVUYsICAgICAgICAgICAgICAweDAwMDAwMDAwIH0sICAvLyBMQ0QuTVBMRkJVRiAgKTsgLy8gU2VsZWN0IHRoZSByZWFkaW5nIGJ1ZmZlcgogICB7IEhDWUNMRSwgICAgICAgICAgICAgICAweDAwMDAwMEZEIH0sICAvLyBMQ0QuSENZQ0xFICApOyAvLyBTZXR1cCB0byBWR0Egc2l6ZQogICB7IEhTVywgICAgICAgICAgICAgICAgICAweDAwMDAwMDAzIH0sICAvLyBMQ0QuSFNXCiAgIHsgSERFX1NUQVJULCAgICAgICAgICAgIDB4MDAwMDAwMDcgfSwgIC8vIExDRC5IREVfU1RBUlQKICAgeyBIREVfU0laRSwgICAgICAgICAgICAgMHgwMDAwMDBFRiB9LCAgLy8gTENELkhERV9TSVpFCiAgIHsgVkNZQ0xFLCAgICAgICAgICAgICAgIDB4MDAwMDAzMjUgfSwgIC8vIExDRC5WQ1lDTEUKICAgeyBWU1csICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSB9LCAgLy8gTENELlZTVwogICB7IFZERV9TVEFSVCwgICAgICAgICAgICAweDAwMDAwMDAzIH0sICAvLyBMQ0QuVkRFX1NUQVJUCiAgIHsgVkRFX1NJWkUsICAgICAgICAgICAgIDB4MDAwMDAzMUYgfSwgIC8vIExDRC5WREVfU0laRQoKICAgeyBTVEFSVCwgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSB9LCAgLy8gTENELlNUQVJUICApOyAvLyBMQ0RDIC0gUGl4ZWwgZGF0YSB0cmFuc2ZlciBzdGFydAoKICAgeyAwLCAgICAgICAgICAgICAgICAgICAgMTAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoIDEwICApOwogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEJDIH0sICAvLyBTUEkuU1NJVFggICk7IC8vIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDE4MCB9LCAgLy8gRGlzcGxheSBkYXRhIHNldHVwCiAgIHsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwM0IgfSwgIC8vIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCB9LCAgLy8gUXVhZCBEYXRhIGNvbmZpZ3VyYXRpb24gLSBWR0EKICAgeyAwLCAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoIDEgICAgICAgICAgKTsgLy8gIFdhaXQgU1BJIGZpZm8gZW1wdHkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCMCB9LCAgLy8gQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTE2IH0sICAvLyBQb3dlciBzdXBwbHkgT04vT0ZGIGNvbnRyb2wKICAgeyAwLCAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoIDEgICAgICAgICAgKTsgLy8gIFdhaXQgU1BJIGZpZm8gZW1wdHkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCOCB9LCAgLy8gQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMUZGIH0sICAvLyBPdXRwdXQgY29udHJvbAogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMUY1IH0sCiAgIHsgMCwgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgfSwgIC8vICB3YWl0X21zKCAxKTsgICAgICAgICAvLyAgV2FpdCBTUEkgZmlmbyBlbXB0eQogICB7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMDExIH0sICAvLyB3YWl0X21zKC1vdXQgKENvbW1hbmQgb25seSkKICAgeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDAyOSB9LCAgLy8gRGlzcGxheSBvbiAoQ29tbWFuZCBvbmx5KQoKICAgLy97IFNZU1RFTV9CTE9DSzFfQkFTRSwgICAweDAwMDAwMDAyIH0sICAvLyAgICAjIHdha2VSRVEgLT4gR1BJTwoKICAgIHsgMCwgMCB9Cn07CgpzdGF0aWMgc3RydWN0IGluaXRfdGFibGUgdG9zaGliYV80ODB4NjQwX2luaXRfdGFibGVbXSA9IHsKCXsgRFBTRVQwLCAgICAgICAgICAgICAgIDB4NEJFQzAwNjYgfSwgIC8vICMgTURDLkRQU0VUMCAgIyBTZXR1cCBEUExMIHBhcmFtZXRlcnMKCXsgRFBTRVQxLCAgICAgICAgICAgICAgIDB4MDAwMDAxMTMgfSwgIC8vICAgIyBNREMuRFBTRVQxCgl7IERQU1VTLCAgICAgICAgICAgICAgICAweDAwMDAwMDAwIH0sICAvLyAgICMgTURDLkRQU1VTICAjIFNldCBEUExMIG9zY2lsbGF0aW9uIGVuYWJsZQoJeyBEUFJVTiwgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSB9LCAgLy8gICAjIE1EQy5EUFJVTiAgIyBSZWxlYXNlIHJlc2V0IHNpZ25hbCBmb3IgRFBMTAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMTQgICAgICAgICB9LCAgLy8gd2FpdF9tcygxNCk7Cgl7IFNZU0NLRU5BLCAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyAgICMgTURDLlNZU0NLRU5BICAjIEVuYWJsZSBzeXN0ZW0gY2xvY2sgb3V0cHV0Cgl7IENMS0VOQiwgICAgICAgICAgICAgICAweDAwMDAwMEVGIH0sICAvLyAgICMgU1lTLkNMS0VOQiAgIyBFbmFibGUgY2xvY2tzIGZvciBlYWNoIG1vZHVsZSAod2l0aG91dCBEQ0xLICwgaTJjQ0xLKQoJeyBHUElPX0JMT0NLX0JBU0UsICAgICAgMHgwM0ZGMDAwMCB9LCAgLy8gICAjIEdQSSAuR1BJT0RBVEEgICMgR1BJTzIoUkVTRVRfTENEX04pIHNldCB0byAwICwgR1BJTzMoZURSQU1fUG93ZXIpIHNldCB0byAwCgl7IEdQSU9ESVIsICAgICAgICAgICAgICAweDAwMDAwMjREIH0sICAvLyAgICMgR1BJIC5HUElPRElSICAjIFNlbGVjdCBkaXJlY3Rpb24gb2YgR1BJTyBwb3J0ICgwLDIsMyw2LDkgb3V0cHV0KQoJeyBTWVNURU1fQkxPQ0syX0JBU0UsICAgMHgwMDAwMDE3MyB9LCAgLy8gICAjIFNZUy5HUElPU0VMICAjIEdQSU8gcG9ydCBtdWx0aXBsZXhpbmcgY29udHJvbAoJeyBHUElPUEMsICAgICAgICAgICAgICAgMHgwM0MzMDBDMCB9LCAgLy8gICAjIEdQSSAuR1BJT1BDICAjIEdQSU8yLDMgUEQgY3V0Cgl7IFNZU1RFTV9CTE9DSzFfQkFTRSwgICAweDAwMDAwMDAwIH0sICAvLyAgICMgU1lTLldLUkVRICAjIFdha2UtdXAgcmVxdWVzdCBldmVudCBpcyBWU1lOQyBhbGlnbm1lbnQKCXsgR1BJT0lTLCAgICAgICAgICAgICAgIDB4MDAwMDAwMDAgfSwgIC8vICAgIyBHUEkgLkdQSU9JUyAgIyBTZXQgaW50ZXJydXB0IHNlbnNlIG9mIEdQSU8KCXsgR1BJT0lFViwgICAgICAgICAgICAgIDB4MDAwMDAwMDEgfSwgIC8vICAgIyBHUEkgLkdQSU9JRVYgICMgU2V0IGludGVycnVwdCBldmVudCBvZiBHUElPCgl7IEdQSU9JQywgICAgICAgICAgICAgICAweDAwMDAwM0ZGIH0sICAvLyAgICMgR1BJIC5HUElPSUMgICMgR1BJTyBpbnRlcnJ1cHQgY2xlYXIKCXsgR1BJT19CTE9DS19CQVNFLCAgICAgIDB4MDAwNjAwMDYgfSwgIC8vICAgIyBHUEkgLkdQSU9EQVRBICAjIFJlbGVhc2UgTENERCByZXNldAoJeyBHUElPX0JMT0NLX0JBU0UsICAgICAgMHgwMDA4MDAwOCB9LCAgLy8gICAjIEdQSSAuR1BJT0RBVEEgICMgZURSQU0gVkQgc3VwcGx5Cgl7IEdQSU9fQkxPQ0tfQkFTRSwgICAgICAweDAyMDAwMjAwIH0sICAvLyAgICMgR1BJIC5HUElPREFUQSAgIyBURVNUIExFRCBPTgoJeyBEUkFNUFdSLCAgICAgICAgICAgICAgMHgwMDAwMDAwMSB9LCAgLy8gICAjIFNZUy5EUkFNUFdSICAjIGVEUkFNIHBvd2VyIHVwCgl7IFRJTUVSMENPTlRST0wsICAgICAgICAweDAwMDAwMDYwIH0sICAvLyAgICMgUFdNLlRpbWVyMENvbnRyb2wgICMgUFdNMCBvdXRwdXQgc3RvcAoJeyBQV01fQkxPQ0tfQkFTRSwgICAgICAgMHgwMDAwMTM4OCB9LCAgLy8gICAjIFBXTS5UaW1lcjBMb2FkICAjIFBXTTAgMTBrSHogLCBEdXR5IDk5IChCYWNrTGlnaHQgT0ZGKQoJLy97UFdNME9GRiwgICAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyAgICMgUFdNLlBXTTBPRkYKI2lmIDAKCXsgUFdNME9GRiwgICAgICAgICAgICAgIDB4MDAwMDEzODcgfSwgLy8gU1VSRiAxMDAlIGJhY2tsaWdodAoJeyBQV00wT0ZGLCAgICAgICAgICAgICAgMHgwMDAwMDAwMCB9LCAvLyBGRkEgMTAwJSBiYWNrbGlnaHQKI2VuZGlmCgl7IFBXTTBPRkYsICAgICAgICAgICAgICAweDAwMDAwOUMzIH0sIC8vIDUwJSBCTAoJeyBUSU1FUjFDT05UUk9MLCAgICAgICAgMHgwMDAwMDA2MCB9LCAgLy8gICAjIFBXTS5UaW1lcjFDb250cm9sICAjIFBXTTEgb3V0cHV0IHN0b3AKCXsgVElNRVIxTE9BRCwgICAgICAgICAgIDB4MDAwMDEzODggfSwgIC8vICAgIyBQV00uVGltZXIxTG9hZCAgIyBQV00xIDEwa0h6ICwgRHV0eSA5OSAoQmFja0xpZ2h0IE9GRikKCS8ve1BXTTFPRkYsICAgICAgICAgICAgICAgMHgwMDAwMDAwMSB9LCAgLy8gICAjIFBXTS5QV00xT0ZGCgl7IFBXTTFPRkYsICAgICAgICAgICAgICAweDAwMDAxMzg3IH0sCgl7IFRJTUVSMENPTlRST0wsICAgICAgICAweDAwMDAwMEUwIH0sICAvLyAgICMgUFdNLlRpbWVyMENvbnRyb2wgICMgUFdNMCBvdXRwdXQgc3RhcnQKCXsgVElNRVIxQ09OVFJPTCwgICAgICAgIDB4MDAwMDAwRTAgfSwgIC8vICAgIyBQV00uVGltZXIxQ29udHJvbCAgIyBQV00xIG91dHB1dCBzdGFydAoJeyBQV01DUiwgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyB9LCAgLy8gICAjIFBXTS5QV01DUiAgIyBQV00gb3V0cHV0IGVuYWJsZQoJeyAwLCAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMSk7Cgl7IFNQSV9CTE9DS19CQVNFLCAgICAgICAweDAwMDAwNzk5IH0sICAvLyAgICMgU1BJIC5TU0lDVEwgICMgU1BJIG9wZXJhdGlvbiBtb2RlIHNldHRpbmcKCXsgU1NJVElNRSwgICAgICAgICAgICAgIDB4MDAwMDAxMDAgfSwgIC8vICAgIyBTUEkgLlNTSVRJTUUgICMgU1BJIHNlcmlhbCBpbnRlcmZhY2UgdGltaW5nIHNldHRpbmcKCXsgU1BJX0JMT0NLX0JBU0UsICAgICAgIDB4MDAwMDA3OWIgfSwgIC8vICAgIyBTUEkgLlNTSUNUTCAgIyBTZXQgU1BJIGFjdGl2ZSBtb2RlCgoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCB9LCAgLy8gICAjIFNQSS5TU0lUWCAgIyBSZWxlYXNlIGZyb20gRGVlcCBTdGFuYnkgbW9kZQoJeyAwLCAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMSk7Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMDAwIH0sICAvLyAgICMgU1BJLlNTSVRYCgl7IDAsICAgICAgICAgICAgICAgICAgICAxICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygxKTsKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAgfSwgIC8vICAgIyBTUEkuU1NJVFgKCXsgMCwgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDEpOwoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCQSB9LCAgLy8gICAjIFNQSS5TU0lUWCAgICAgICAgICAqTk9URSAxICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMTEgfSwgIC8vICAgICAjIERpc3BsYXkgbW9kZSBzZXR1cCgxKSA6IE5vcm1hbHkgQmxhY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwMzYgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgfSwgIC8vICAgICAjIE1lbW9yeSBhY2Nlc3MgY29udHJvbAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgIC8vICAgICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCQiB9LCAgLy8gICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgfSwgIC8vICAgIyBEaXNwbGF5IG1vZGUgc2V0dXAoMikKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwM0EgfSwgIC8vICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTYwIH0sICAvLyAgICMgUkdCIEludGVyZmFjZSBkYXRhIGZvcm1hdAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCRiB9LCAgLy8gICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgfSwgIC8vICAgIyBEcml2bmlnIG1ldGhvZAoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCMSB9LCAgLy8gICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxNUQgfSwgIC8vICAgIyBCb29zdGVyIG9wZXJhdGlvbiBzZXR1cAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCMiB9LCAgLy8gICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMzMgfSwgIC8vICAgIyBCb29zdGVyIG1vZGUgc2V0dXAKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQjMgfSwgIC8vICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTIyIH0sICAvLyAgICAgIyBCb29zdGVyIGZyZXF1ZW5jaWVzIHNldHVwCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEI0IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAyIH0sICAvLyAgICAgIyBPUC1hbXAgY2FwYWJpbGl0eS9TeXN0ZW0gY2xvY2sgZnJlcS4gZGl2aXNpb24gc2V0dXAKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQjUgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMUYgfSwgIC8vICAgICAjIFZDUyBWb2x0YWdlIGFkanVzdG1lbnQgICgxQy0+MUYgZm9yIFJldiAyKQoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCNiB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEyOCB9LCAgLy8gICAgICMgVkNPTSBWb2x0YWdlIGFkanVzdG1lbnQKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQjcgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDMgfSwgIC8vICAgICAjIENvbmZpZ3VyZSBhbiBleHRlcm5hbCBkaXNwbGF5IHNpZ25hbAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCOSB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEyMCB9LCAgLy8gICAgICMgRENDSy9EQ0VWIHRpbWluZyBzZXR1cAoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCRCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMiB9LCAgLy8gICAgICMgQVNXIHNpZ25hbCBjb250cm9sCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEJFIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAwIH0sICAvLyAgICAgIyBEdW1teSBkaXNwbGF5ICh3aGl0ZS9ibGFjaykgY291bnQgc2V0dXAgZm9yIFFVQUQgRGF0YSBvcGVyYXRpb24KCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQzAgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMTEgfSwgIC8vICAgICAjIHdhaXRfbXMoLW91dCBGUiBjb3VudCBzZXR1cCAoQSkKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQzEgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMTEgfSwgIC8vICAgICAjIHdhaXRfbXMoLW91dCBGUiBjb3VudCBzZXR1cCAoQikKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQzIgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMTEgfSwgIC8vICAgICAjIHdhaXRfbXMoLW91dCBGUiBjb3VudCBzZXR1cCAoQykKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQzMgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMEEgfSwgIC8vICAgICAjIHdhaXRfbXMoLWluIGxpbmUgY2xvY2sgY291bnQgc2V0dXAgKEQpCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTBBIH0sICAvLwoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBDNCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDE2MCB9LCAgLy8gICAgICMgU2VlcC1pbiBsaW5lIGNsb2NrIGNvdW50IHNldHVwIChFKQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDE2MCB9LCAgLy8KCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQzUgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxNjAgfSwgIC8vICAgICAjIHdhaXRfbXMoLWluIGxpbmUgY2xvY2sgY291bnQgc2V0dXAgKEYpCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTYwIH0sICAvLwoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBDNiB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDE2MCB9LCAgLy8gICAgICMgd2FpdF9tcygtaW4gbGluZSBjbG9jayBzZXR1cCAoRykKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxNjAgfSwgIC8vCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEM3IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTMzIH0sICAvLyAgICAgIyBHYW1tYSAxIGZpbmUgdHVuaW5nICgxKQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDE0MyB9LCAgLy8KCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQzggfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxNDQgfSwgIC8vICAgICAjIEdhbW1hIDEgZmluZSB0dW5pbmcgKDIpCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEM5IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTMzIH0sICAvLyAgICAgIyBHYW1tYSAxIGluY2xpbmF0aW9uIGFkanVzdG1lbnQKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQ0EgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgfSwgIC8vICAgICAjIEdhbW1hIDEgYmx1ZSBvZmZzZXQgYWRqdXN0bWVudAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBFQyB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDEwMiB9LCAgLy8gICAgICMgVG90YWwgbnVtYmVyIG9mIGhvcml6b250YWwgY2xvY2sgY3ljbGVzICgxKSBbUENMSyBTeW5jLiBWR0Egc2V0dGluZ10KCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMTggfSwgIC8vCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMENGIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAxIH0sICAvLyAgICAgIyBCbGFua2luZyBwZXJpb2QgY29udHJvbCAoMSkgW1BDTEsgU3luYy4gVGFibGUxIGZvciBWR0FdCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEQwIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTEwIH0sICAvLyAgICAgIyBCbGFua2luZyBwZXJpb2QgY29udHJvbCAoMikgW1BDTEsgU3luYy4gVGFibGUxIGZvciBWR0FdCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTA0IH0sICAvLwoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBEMSB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMSB9LCAgLy8gICAgICMgQ0tWIHRpbWluZyBjb250cm9sIG9uL29mZiBbUENMSyBTeW5jLiBUYWJsZTEgZm9yIFZHQV0KCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRDIgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMDAgfSwgIC8vICAgICAjIENLVjEsMiB0aW1pbmcgY29udHJvbCBbUENMSyBTeW5jLiBUYWJsZTEgZm9yIFZHQV0KCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxM0EgfSwgIC8vCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEQzIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTAwIH0sICAvLyAgICAgIyBPRVYgdGltaW5nIGNvbnRyb2wgW1BDTEsgU3luYy4gVGFibGUxIGZvciBWR0FdCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTNBIH0sICAvLwoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBENCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDEyNCB9LCAgLy8gICAgICMgQVNXIHRpbWluZyBjb250cm9sICgxKSBbUENMSyBTeW5jLiBUYWJsZTEgZm9yIFZHQV0KCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxNkUgfSwgIC8vCgl7IDAsICAgICAgICAgICAgICAgICAgICAxICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygxKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEQ1IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTI0IH0sICAvLyAgICAgIyBBU1cgdGltaW5nIGNvbnRyb2wgKDIpIFtQQ0xLIFN5bmMuIFRhYmxlMSBmb3IgVkdBXQoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBFRCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDEwMSB9LCAgLy8gICAgICMgVG90YWwgbnVtYmVyIG9mIGhvcml6b250YWwgY2xvY2sgY3ljbGVzICgyKSBbUENMSyBTeW5jLiBUYWJsZTEgZm9yIFFWR0EgXQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwQSB9LCAgLy8KCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRDYgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDEgfSwgIC8vICAgICAjIEJsYW5raW5nIHBlcmlvZCBjb250cm9sICgxKSBbUENMSyBTeW5jLiBUYWJsZTIgZm9yIFFWR0FdCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEQ3IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTEwIH0sICAvLyAgICAgIyBCbGFua2luZyBwZXJpb2QgY29udHJvbCAoMikgW1BDTEsgU3luYy4gVGFibGUyIGZvciBRVkdBXQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwQSB9LCAgLy8KCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRDggfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDEgfSwgIC8vICAgICAjIENLViB0aW1pbmcgY29udHJvbCBvbi9vZmYgW1BDTEsgU3luYy4gVGFibGUyIGZvciBRVkdBXQoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBEOSB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDEwMCB9LCAgLy8gICAgICMgQ0tWMSwyIHRpbWluZyBjb250cm9sIFtQQ0xLIFN5bmMuIFRhYmxlMiBmb3IgUVZHQV0KCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMTQgfSwgIC8vCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMERFIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTAwIH0sICAvLyAgICAgIyBPRVYgdGltaW5nIGNvbnRyb2wgW1BDTEsgU3luYy4gVGFibGUyIGZvciBRVkdBXQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDExNCB9LCAgLy8KCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwREYgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMTIgfSwgIC8vICAgICAjIEFTVyB0aW1pbmcgY29udHJvbCAoMSkgW1BDTEsgU3luYy4gVGFibGUyIGZvciBRVkdBXQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEzRiB9LCAgLy8KCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRTAgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMEIgfSwgIC8vICAgICAjIEFTVyB0aW1pbmcgY29udHJvbCAoMikgW1BDTEsgU3luYy4gVGFibGUyIGZvciBRVkdBXQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBFMiB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMSB9LCAgLy8gICAgICMgQnVpbHQtaW4gb3NjaWxsYXRvciBmcmVxdWVuY3kgZGl2aXNpb24gc2V0dXAgW0ZyZXF1ZW5jeSBkaXZpc2lvbiByYXRpbyA6IDIgKDYwSHEpCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEUzIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTM2IH0sICAvLyAgICAgIyBCdWlsdC1pbiBvc2NpbGxhdG9yIGNsb2NrIGNvdW50IHNldHVwCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEU0IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTAwIH0sICAvLyAgICAgIyBDS1YgdGltaW5nIGNvbnRyb2wgZm9yIHVzaW5nIGJ1aWxkLWluIG9zYwoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMyB9LCAgLy8KCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRTUgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMDIgfSwgIC8vICAgICAjIE9FViB0aW1pbmcgY29udHJvbCBmb3IgdXNpbmcgYnVpbGQtaW4gb3NjCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTA0IH0sICAvLwoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBFNiB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMyB9LCAgLy8gICAgICMgRENFViB0aW1pbmcgY29udHJvbCBmb3IgdXNpbmcgYnVpbGQtaW4gb3NjCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEU3IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTA0IH0sICAvLyAgICAgIyBBU1cgdGltaW5nIHNldHVwIGZvciB1c2luZyBidWlsZC1pbiBvc2MoMSkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMEEgfSwgIC8vCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEU4IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTA0IH0sICAvLyAgICAgIyBBU1cgdGltaW5nIHNldHVwIGZvciB1c2luZyBidWlsZC1pbiBvc2MoMikKCgoJeyBDTEtFTkIsICAgICAgICAgICAgICAgMHgwMDAwMDFFRiB9LCAgLy8gICAjIFNZUy5DTEtFTkIgICMgRENMSyBlbmFibGUKCXsgU1RBUlQsICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAgfSwgIC8vICAgIyBMQ0QuU1RBUlQgICMgTENEQyB3YWl0X21zKCBtb2RlCgl7IFdSU1RCLCAgICAgICAgICAgICAgICAweDAwMDAwMDNGIH0sICAvLyAgICMgTENELldSU1RCICAjIHdyaXRlX2NsaWVudF9yZWcoIHN0cm9iZQoJeyBSRFNUQiwgICAgICAgICAgICAgICAgMHgwMDAwMDQzMiB9LCAgLy8gICAjIExDRC5SRFNUQiAgIyBSZWFkIHN0cm9iZQoJeyBQT1JUX0VOQiwgICAgICAgICAgICAgMHgwMDAwMDAwMiB9LCAgLy8gICAjIExDRC5QT1JUX0VOQiAgIyBBc3luY2hyb25vdXMgcG9ydCBlbmFibGUKCXsgVlNZTklGLCAgICAgICAgICAgICAgIDB4MDAwMDAwMDAgfSwgIC8vICAgIyBMQ0QuVlNZTkNJRiAgIyBWU1lOQyBJL0YgbW9kZSBzZXQKCXsgQVNZX0RBVEEsICAgICAgICAgICAgIDB4ODAwMDAwMDAgfSwgIC8vICAgIyBMQ0QuQVNZX0RBVHggICMgSW5kZXggc2V0dGluZyBvZiBTVUIgTENERAoJeyBBU1lfREFUQiwgICAgICAgICAgICAgMHgwMDAwMDAwMSB9LCAgLy8gICAgICMgT3NjaWxsYXRvciBzdGFydAoJeyBBU1lfQ01EU0VULCAgICAgICAgICAgMHgwMDAwMDAwNSB9LCAgLy8gICAjIExDRC5BU1lfQ01EU0VUICAjIERpcmVjdCBjb21tYW5kIHRyYW5zZmVyIGVuYWJsZQoJeyBBU1lfQ01EU0VULCAgICAgICAgICAgMHgwMDAwMDAwNCB9LCAgLy8gICAjIExDRC5BU1lfQ01EU0VUICAjIERpcmVjdCBjb21tYW5kIHRyYW5zZmVyIGRpc2FibGUKCXsgMCwgICAgICAgICAgICAgICAgICAgIDEwICAgICAgICAgfSwgIC8vICB3YWl0X21zKDEwKTsKCXsgQVNZX0RBVEEsICAgICAgICAgICAgIDB4ODAwMDAwMDAgfSwgIC8vICAgIyBMQ0QuQVNZX0RBVHggICMgRFVNTVkgd3JpdGVfY2xpZW50X3JlZyiBQCpOT1RFMgoJeyBBU1lfREFUQiwgICAgICAgICAgICAgMHg4MDAwMDAwMCB9LCAgLy8KCXsgQVNZX0RBVEMsICAgICAgICAgICAgIDB4ODAwMDAwMDAgfSwgIC8vCgl7IEFTWV9EQVRELCAgICAgICAgICAgICAweDgwMDAwMDAwIH0sICAvLwoJeyBBU1lfQ01EU0VULCAgICAgICAgICAgMHgwMDAwMDAwOSB9LCAgLy8gICAjIExDRC5BU1lfQ01EU0VUCgl7IEFTWV9DTURTRVQsICAgICAgICAgICAweDAwMDAwMDA4IH0sICAvLyAgICMgTENELkFTWV9DTURTRVQKCXsgQVNZX0RBVEEsICAgICAgICAgICAgIDB4ODAwMDAwMDcgfSwgIC8vICAgIyBMQ0QuQVNZX0RBVHggICMgSW5kZXggc2V0dGluZyBvZiBTVUIgTENERAoJeyBBU1lfREFUQiwgICAgICAgICAgICAgMHgwMDAwNDAwNSB9LCAgLy8gICAgICMgTENEIGRyaXZlciBjb250cm9sCgl7IEFTWV9DTURTRVQsICAgICAgICAgICAweDAwMDAwMDA1IH0sICAvLyAgICMgTENELkFTWV9DTURTRVQgICMgRGlyZWN0IGNvbW1hbmQgdHJhbnNmZXIgZW5hYmxlCgl7IEFTWV9DTURTRVQsICAgICAgICAgICAweDAwMDAwMDA0IH0sICAvLyAgICMgTENELkFTWV9DTURTRVQgICMgRGlyZWN0IGNvbW1hbmQgdHJhbnNmZXIgZGlzYWJsZQoJeyAwLCAgICAgICAgICAgICAgICAgICAgMjAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMjApOwoJeyBBU1lfREFUQSwgICAgICAgICAgICAgMHg4MDAwMDA1OSB9LCAgLy8gICAjIExDRC5BU1lfREFUeCAgIyBJbmRleCBzZXR0aW5nIG9mIFNVQiBMQ0RECgl7IEFTWV9EQVRCLCAgICAgICAgICAgICAweDAwMDAwMDAwIH0sICAvLyAgICAgIyBMVFBTIEkvRiBjb250cm9sCgl7IEFTWV9DTURTRVQsICAgICAgICAgICAweDAwMDAwMDA1IH0sICAvLyAgICMgTENELkFTWV9DTURTRVQgICMgRGlyZWN0IGNvbW1hbmQgdHJhbnNmZXIgZW5hYmxlCgl7IEFTWV9DTURTRVQsICAgICAgICAgICAweDAwMDAwMDA0IH0sICAvLyAgICMgTENELkFTWV9DTURTRVQgICMgRGlyZWN0IGNvbW1hbmQgdHJhbnNmZXIgZGlzYWJsZQoKCXsgVlNZTklGLCAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgfSwgIC8vICAgIyBMQ0QuVlNZTkNJRiAgIyBWU1lOQyBJL0YgbW9kZSBPRkYKCXsgUE9SVF9FTkIsICAgICAgICAgICAgIDB4MDAwMDAwMDEgfSwgIC8vICAgIyBMQ0QuUE9SVF9FTkIgICMgU1lOQyBJL0YgIG91dHB1dCBzZWxlY3QKCgkvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCXsgVlNZTklGLCAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgfSwgIC8vIFZTWU5DIEkvRiBtb2RlIE9GRgoJeyBQT1JUX0VOQiwgICAgICAgICAgICAgMHgwMDAwMDAwMSB9LCAgLy8gU1lOQyBJL0YgbW9kZSBPTgoKCXsgQklUTUFQMSwgICAgICAgICAgICAgIDB4MDFFMDAwRjAgfSwgIC8vIE1EQy5CSVRNQVAyICApOyAvLyBTZXR1cCBvZiBQSVRDSCBzaXplIHRvIEZyYW1lIGJ1ZmZlcjEKCXsgQklUTUFQMiwgICAgICAgICAgICAgIDB4MDFFMDAwRjAgfSwgIC8vIE1EQy5CSVRNQVAzICApOyAvLyBTZXR1cCBvZiBQSVRDSCBzaXplIHRvIEZyYW1lIGJ1ZmZlcjIKCXsgQklUTUFQMywgICAgICAgICAgICAgIDB4MDFFMDAwRjAgfSwgIC8vIE1EQy5CSVRNQVA0ICApOyAvLyBTZXR1cCBvZiBQSVRDSCBzaXplIHRvIEZyYW1lIGJ1ZmZlcjMKCXsgQklUTUFQNCwgICAgICAgICAgICAgIDB4MDBEQzAwQjAgfSwgIC8vIE1EQy5CSVRNQVA1ICApOyAvLyBTZXR1cCBvZiBQSVRDSCBzaXplIHRvIEZyYW1lIGJ1ZmZlcjQKCXsgQ0xLRU5CLCAgICAgICAgICAgICAgIDB4MDAwMDAxRUYgfSwgIC8vIFNZUy5DTEtFTkIgICk7IC8vIERDTEsgc3VwcGx5Cgl7IFBPUlRfRU5CLCAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyBMQ0QuUE9SVF9FTkIgICk7IC8vIFN5bmNocm9ub3VzIHBvcnQgZW5hYmxlCgl7IFBPUlQsICAgICAgICAgICAgICAgICAweDAwMDAwMDA0IH0sICAvLyBMQ0QuUE9SVCAgKTsgLy8gUG9sYXJpdHkgb2YgREUgaXMgc2V0IHRvIGhpZ2ggYWN0aXZlCgl7IFBYTCwgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyIH0sICAvLyBMQ0QuUFhMICApOyAvLyBBQ1RNT0RFIDIgc2V0ICgxc3QgZnJhbWUgYmxhY2sgZGF0YSBvdXRwdXQpCgl7IE1QTEZCVUYsICAgICAgICAgICAgICAweDAwMDAwMDAwIH0sICAvLyBMQ0QuTVBMRkJVRiAgKTsgLy8gU2VsZWN0IHRoZSByZWFkaW5nIGJ1ZmZlcgoJeyBIQ1lDTEUsICAgICAgICAgICAgICAgMHgwMDAwMDEwYiB9LCAgLy8gTENELkhDWUNMRSAgKTsgLy8gU2V0dXAgdG8gVkdBIHNpemUKCXsgSFNXLCAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgfSwgIC8vIExDRC5IU1cgIAoJeyBIREVfU1RBUlQsICAgICAgICAgICAgMHgwMDAwMDAwNyB9LCAgLy8gTENELkhERV9TVEFSVCAgCgl7IEhERV9TSVpFLCAgICAgICAgICAgICAweDAwMDAwMEVGIH0sICAvLyBMQ0QuSERFX1NJWkUgIAoJeyBWQ1lDTEUsICAgICAgICAgICAgICAgMHgwMDAwMDI4NSB9LCAgLy8gTENELlZDWUNMRSAgCgl7IFZTVywgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyBMQ0QuVlNXICAKCXsgVkRFX1NUQVJULCAgICAgICAgICAgIDB4MDAwMDAwMDMgfSwgIC8vIExDRC5WREVfU1RBUlQgIAoJeyBWREVfU0laRSwgICAgICAgICAgICAgMHgwMDAwMDI3RiB9LCAgLy8gTENELlZERV9TSVpFICAKCgl7IFNUQVJULCAgICAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyBMQ0QuU1RBUlQgICk7IC8vIExDREMgLSBQaXhlbCBkYXRhIHRyYW5zZmVyIHN0YXJ0CgoJeyAwLCAgICAgICAgICAgICAgICAgICAgMTAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoIDEwICApOwoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCQyB9LCAgLy8gU1BJLlNTSVRYICApOyAvLyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTgwIH0sICAvLyBEaXNwbGF5IGRhdGEgc2V0dXAKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwM0IgfSwgIC8vIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgfSwgIC8vIFF1YWQgRGF0YSBjb25maWd1cmF0aW9uIC0gVkdBCgl7IDAsICAgICAgICAgICAgICAgICAgICAxICAgICAgICAgIH0sICAvLyAgd2FpdF9tcyggMSAgICAgICAgICApOyAvLyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCMCB9LCAgLy8gQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDExNiB9LCAgLy8gUG93ZXIgc3VwcGx5IE9OL09GRiBjb250cm9sCgl7IDAsICAgICAgICAgICAgICAgICAgICAxICAgICAgICAgIH0sICAvLyAgd2FpdF9tcyggMSAgICAgICAgICApOyAvLyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCOCB9LCAgLy8gQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDFGRiB9LCAgLy8gT3V0cHV0IGNvbnRyb2wKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxRjUgfSwKCXsgMCwgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgfSwgIC8vICB3YWl0X21zKCAxKTsgICAgICAgICAvLyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDAxMSB9LCAgLy8gd2FpdF9tcygtb3V0IChDb21tYW5kIG9ubHkpCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMDI5IH0sICAvLyBEaXNwbGF5IG9uIChDb21tYW5kIG9ubHkpCgoJeyBTWVNURU1fQkxPQ0sxX0JBU0UsICAgMHgwMDAwMDAwMiB9LCAgLy8gICAgIyB3YWtlUkVRIC0+IEdQSU8KCgl7IDAsIDAgfQp9OwoKc3RhdGljIHZvaWQgX3BhbmVsX2luaXQoc3RydWN0IGluaXRfdGFibGUgKmluaXRfdGFibGUpCnsKCXVuc2lnbmVkIG47CgoJZHByaW50ZihJTkZPLCAicGFuZWxfaW5pdCgpXG4iKTsKCgluID0gMDsKCXdoaWxlIChpbml0X3RhYmxlW25dLnJlZyAhPSAwIHx8IGluaXRfdGFibGVbbl0udmFsICE9IDApIHsKCQlpZiAoaW5pdF90YWJsZVtuXS5yZWcgIT0gMCkKCQkJbWRkaV9yZW1vdGVfd3JpdGUoaW5pdF90YWJsZVtuXS52YWwsIGluaXRfdGFibGVbbl0ucmVnKTsKCQllbHNlCgkJCW1kZWxheShpbml0X3RhYmxlW25dLnZhbCk7CgkJbisrOwoJfQoKCWRwcmludGYoSU5GTywgInBhbmVsX2luaXQoKSBkb25lXG4iKTsKfQoKdm9pZCBwYW5lbF9pbml0KHN0cnVjdCBtZGRpX2NsaWVudF9jYXBzICpjbGllbnRfY2FwcykKewoJc3dpdGNoKGNsaWVudF9jYXBzLT5tYW51ZmFjdHVyZXJfbmFtZSkgewoJY2FzZSAweGQyNjM6IC8vIFRvc2hpYmEKCQlkcHJpbnRmKElORk8sICJGb3VuZCBUb3NoaWJhIHBhbmVsXG4iKTsKCQlfcGFuZWxfaW5pdCh0b3NoaWJhXzQ4MHg4MDBfaW5pdF90YWJsZSk7CgkJYnJlYWs7CgljYXNlIDB4NDQ3NDogLy8/PwoJCWlmIChjbGllbnRfY2Fwcy0+cHJvZHVjdF9jb2RlID09IDB4YzA2NSkKCQkJZHByaW50ZihJTkZPLCAiRm91bmQgV1ZHQSBwYW5lbFxuIik7CgkJYnJlYWs7Cgl9Cn0KCnZvaWQgcGFuZWxfcG93ZXJvbih2b2lkKQp7CglncGlvX3NldCg4OCwgMCk7CglncGlvX2NvbmZpZyg4OCwgR1BJT19PVVRQVVQpOwoJdWRlbGF5KDEwKTsKCWdwaW9fc2V0KDg4LCAxKTsKCW1kZWxheSgxMCk7CgoJLy9tZGVsYXkoMTAwMCk7IC8vIHVuY29tbWVudCBmb3Igc2Vjb25kIHN0YWdlIGJvb3QKfQoKdm9pZCBwYW5lbF9iYWNrbGlnaHQoaW50IG9uKQp7fQo=