LyogQ29weXJpZ2h0IDIwMDcsIEdvb2dsZSBJbmMuICovCgojaW5jbHVkZSA8ZGVidWcuaD4KI2luY2x1ZGUgPGRldi9ncGlvLmg+CiNpbmNsdWRlIDxrZXJuZWwvdGhyZWFkLmg+CiNpbmNsdWRlIDxwbGF0Zm9ybS9tZGRpLmg+CgojZGVmaW5lIE1ERElfQ0xJRU5UX0NPUkVfQkFTRSAgMHgxMDgwMDAKI2RlZmluZSBMQ0RfQ09OVFJPTF9CTE9DS19CQVNFIDB4MTEwMDAwCiNkZWZpbmUgU1BJX0JMT0NLX0JBU0UgICAgICAgICAweDEyMDAwMAojZGVmaW5lIEkyQ19CTE9DS19CQVNFICAgICAgICAgMHgxMzAwMDAKI2RlZmluZSBQV01fQkxPQ0tfQkFTRSAgICAgICAgIDB4MTQwMDAwCiNkZWZpbmUgR1BJT19CTE9DS19CQVNFICAgICAgICAweDE1MDAwMAojZGVmaW5lIFNZU1RFTV9CTE9DSzFfQkFTRSAgICAgMHgxNjAwMDAKI2RlZmluZSBTWVNURU1fQkxPQ0syX0JBU0UgICAgIDB4MTcwMDAwCgoKI2RlZmluZQlNRERJQ0FQMCAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MDApCiNkZWZpbmUJTURESUNBUDEgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDA0KQojZGVmaW5lCU1ERElDQVAyICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgwOCkKI2RlZmluZQlNRERJQ0FQMyAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MEMpCiNkZWZpbmUJTURDQVBDSEcgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDEwKQojZGVmaW5lCU1EQ1JDRVJDICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgxNCkKI2RlZmluZQlUVEJVU1NFTCAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MTgpCiNkZWZpbmUJRFBTRVQwICAgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDFDKQojZGVmaW5lCURQU0VUMSAgICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgyMCkKI2RlZmluZQlEUFNVUyAgICAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MjQpCiNkZWZpbmUJRFBSVU4gICAgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDI4KQojZGVmaW5lCVNZU0NLRU5BICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgyQykKI2RlZmluZQlURVNUTU9ERSAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4MzApCiNkZWZpbmUJRklGT01PTkkgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDM0KQojZGVmaW5lCUlOVE1PTkkgICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHgzOCkKI2RlZmluZQlNRElPQklTVCAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4M0MpCiNkZWZpbmUJTURJT1BTRVQgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDQwKQojZGVmaW5lCUJJVE1BUDAgICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHg0NCkKI2RlZmluZQlCSVRNQVAxICAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4NDgpCiNkZWZpbmUJQklUTUFQMiAgICAgKE1ERElfQ0xJRU5UX0NPUkVfQkFTRXwweDRDKQojZGVmaW5lCUJJVE1BUDMgICAgIChNRERJX0NMSUVOVF9DT1JFX0JBU0V8MHg1MCkKI2RlZmluZQlCSVRNQVA0ICAgICAoTURESV9DTElFTlRfQ09SRV9CQVNFfDB4NTQpCgoKI2RlZmluZQlTUlNUICAgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDAwKQojZGVmaW5lCVBPUlRfRU5CICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MDQpCiNkZWZpbmUJU1RBUlQgICAgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgwOCkKI2RlZmluZQlQT1JUICAgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDBDKQojZGVmaW5lCUNNTiAgICAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MTApCiNkZWZpbmUJR0FNTUEgICAgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgxNCkKI2RlZmluZQlJTlRGTEcgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDE4KQojZGVmaW5lCUlOVE1TSyAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MUMpCiNkZWZpbmUJTVBMRkJVRiAgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgyMCkKI2RlZmluZQlIREVfTEVGVCAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDI0KQojZGVmaW5lCVZERV9UT1AgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MjgpCgojZGVmaW5lCVBYTCAgICAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4MzApCiNkZWZpbmUJSENZQ0xFICAgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHgzNCkKI2RlZmluZQlIU1cgICAgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDM4KQojZGVmaW5lCUhERV9TVEFSVCAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4M0MpCiNkZWZpbmUJSERFX1NJWkUgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg0MCkKI2RlZmluZQlWQ1lDTEUgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDQ0KQojZGVmaW5lCVZTVyAgICAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NDgpCiNkZWZpbmUJVkRFX1NUQVJUICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg0QykKI2RlZmluZQlWREVfU0laRSAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDUwKQojZGVmaW5lCVdBS0VVUCAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NTQpCiNkZWZpbmUJV1NZTl9ETFkgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg1OCkKI2RlZmluZQlSRUdFTkIgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDVDKQojZGVmaW5lCVZTWU5JRiAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NjApCiNkZWZpbmUJV1JTVEIgICAgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg2NCkKI2RlZmluZQlSRFNUQiAgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDY4KQojZGVmaW5lCUFTWV9EQVRBICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NkMpCiNkZWZpbmUJQVNZX0RBVEIgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg3MCkKI2RlZmluZQlBU1lfREFUQyAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDc0KQojZGVmaW5lCUFTWV9EQVREICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4NzgpCiNkZWZpbmUJQVNZX0RBVEUgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg3QykKI2RlZmluZQlBU1lfREFURiAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDgwKQojZGVmaW5lCUFTWV9EQVRHICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4ODQpCiNkZWZpbmUJQVNZX0RBVEggICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHg4OCkKI2RlZmluZQlBU1lfQ01EU0VUICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweDhDKQoKI2RlZmluZQlNT05JICAgICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweEIwKQoKI2RlZmluZQlDdXJyZW50ICAgICAoTENEX0NPTlRST0xfQkxPQ0tfQkFTRXwweEMwKQojZGVmaW5lCUxDRCAgICAgICAgIChMQ0RfQ09OVFJPTF9CTE9DS19CQVNFfDB4QzQpCiNkZWZpbmUJQ09NTUFORCAgICAgKExDRF9DT05UUk9MX0JMT0NLX0JBU0V8MHhDOCkKCgojZGVmaW5lCVNTSUNUTCAgICAgIChTUElfQkxPQ0tfQkFTRXwweDAwKQojZGVmaW5lCVNTSVRJTUUgICAgIChTUElfQkxPQ0tfQkFTRXwweDA0KQojZGVmaW5lCVNTSVRYICAgICAgIChTUElfQkxPQ0tfQkFTRXwweDA4KQojZGVmaW5lCVNTSVJYICAgICAgIChTUElfQkxPQ0tfQkFTRXwweDBDKQojZGVmaW5lCVNTSUlOVEMgICAgIChTUElfQkxPQ0tfQkFTRXwweDEwKQojZGVmaW5lCVNTSUlOVFMgICAgIChTUElfQkxPQ0tfQkFTRXwweDE0KQojZGVmaW5lCVNTSURCRzEgICAgIChTUElfQkxPQ0tfQkFTRXwweDE4KQojZGVmaW5lCVNTSURCRzIgICAgIChTUElfQkxPQ0tfQkFTRXwweDFDKQojZGVmaW5lCVNTSUlEICAgICAgIChTUElfQkxPQ0tfQkFTRXwweDIwKQoKCiNkZWZpbmUJSTJDU0VUVVAJKEkyQ19CTE9DS19CQVNFfDB4MDApCiNkZWZpbmUJSTJDQ1RSTAkgICAgKEkyQ19CTE9DS19CQVNFfDB4MDQpCgoKI2RlZmluZQlUSU1FUjBMT0FECSAgKFBXTV9CTE9DS19CQVNFfDB4MDApCiNkZWZpbmUJVElNRVIwVkFMVUUJICAoUFdNX0JMT0NLX0JBU0V8MHgwNCkKI2RlZmluZQlUSU1FUjBDT05UUk9MIChQV01fQkxPQ0tfQkFTRXwweDA4KQojZGVmaW5lCVRJTUVSMElOVENMUiAgKFBXTV9CTE9DS19CQVNFfDB4MEMpCiNkZWZpbmUJVElNRVIwUklTCSAgKFBXTV9CTE9DS19CQVNFfDB4MTApCiNkZWZpbmUJVElNRVIwTUlTCSAgKFBXTV9CTE9DS19CQVNFfDB4MTQpCiNkZWZpbmUJVElNRVIwQkdMT0FEICAoUFdNX0JMT0NLX0JBU0V8MHgxOCkKI2RlZmluZQlQV00wT0ZGCSAgICAgIChQV01fQkxPQ0tfQkFTRXwweDFDKQojZGVmaW5lCVRJTUVSMUxPQUQJICAoUFdNX0JMT0NLX0JBU0V8MHgyMCkKI2RlZmluZQlUSU1FUjFWQUxVRQkgIChQV01fQkxPQ0tfQkFTRXwweDI0KQojZGVmaW5lCVRJTUVSMUNPTlRST0wgKFBXTV9CTE9DS19CQVNFfDB4MjgpCiNkZWZpbmUJVElNRVIxSU5UQ0xSICAoUFdNX0JMT0NLX0JBU0V8MHgyQykKI2RlZmluZQlUSU1FUjFSSVMJICAoUFdNX0JMT0NLX0JBU0V8MHgzMCkKI2RlZmluZQlUSU1FUjFNSVMJICAoUFdNX0JMT0NLX0JBU0V8MHgzNCkKI2RlZmluZQlUSU1FUjFCR0xPQUQgIChQV01fQkxPQ0tfQkFTRXwweDM4KQojZGVmaW5lCVBXTTFPRkYJICAgICAgKFBXTV9CTE9DS19CQVNFfDB4M0MpCiNkZWZpbmUJVElNRVJJVENSCSAgKFBXTV9CTE9DS19CQVNFfDB4NjApCiNkZWZpbmUJVElNRVJJVE9QCSAgKFBXTV9CTE9DS19CQVNFfDB4NjQpCiNkZWZpbmUJUFdNQ1IJICAgICAgKFBXTV9CTE9DS19CQVNFfDB4NjgpCiNkZWZpbmUJUFdNSUQJICAgICAgKFBXTV9CTE9DS19CQVNFfDB4NkMpCiNkZWZpbmUJUFdNTU9OCSAgICAgIChQV01fQkxPQ0tfQkFTRXwweDcwKQoKCiNkZWZpbmUJR1BJT0RBVEEgICAgKEdQSU9fQkxPQ0tfQkFTRXwweDAwKQojZGVmaW5lCUdQSU9ESVIgICAgIChHUElPX0JMT0NLX0JBU0V8MHgwNCkKI2RlZmluZQlHUElPSVMgICAgICAoR1BJT19CTE9DS19CQVNFfDB4MDgpCiNkZWZpbmUJR1BJT0lCRSAgICAgKEdQSU9fQkxPQ0tfQkFTRXwweDBDKQojZGVmaW5lCUdQSU9JRVYgICAgIChHUElPX0JMT0NLX0JBU0V8MHgxMCkKI2RlZmluZQlHUElPSUUgICAgICAoR1BJT19CTE9DS19CQVNFfDB4MTQpCiNkZWZpbmUJR1BJT1JJUyAgICAgKEdQSU9fQkxPQ0tfQkFTRXwweDE4KQojZGVmaW5lCUdQSU9NSVMgICAgIChHUElPX0JMT0NLX0JBU0V8MHgxQykKI2RlZmluZQlHUElPSUMgICAgICAoR1BJT19CTE9DS19CQVNFfDB4MjApCiNkZWZpbmUJR1BJT09NUyAgICAgKEdQSU9fQkxPQ0tfQkFTRXwweDI0KQojZGVmaW5lCUdQSU9QQyAgICAgIChHUElPX0JMT0NLX0JBU0V8MHgyOCkKCiNkZWZpbmUJR1BJT0lEICAgICAgKEdQSU9fQkxPQ0tfQkFTRXwweDMwKQoKCiNkZWZpbmUJV0tSRVEgICAgICAgKFNZU1RFTV9CTE9DSzFfQkFTRXwweDAwKQojZGVmaW5lCUNMS0VOQiAgICAgIChTWVNURU1fQkxPQ0sxX0JBU0V8MHgwNCkKI2RlZmluZQlEUkFNUFdSICAgICAoU1lTVEVNX0JMT0NLMV9CQVNFfDB4MDgpCiNkZWZpbmUJSU5UTUFTSyAgICAgKFNZU1RFTV9CTE9DSzFfQkFTRXwweDBDKQojZGVmaW5lCUdQSU9TRUwgICAgIChTWVNURU1fQkxPQ0syX0JBU0V8MHgwMCkKCnN0cnVjdCBpbml0X3RhYmxlIHsKICAgIHVuc2lnbmVkIGludCByZWc7CiAgICB1bnNpZ25lZCBpbnQgdmFsOwp9OwoKc3RhdGljIHN0cnVjdCBpbml0X3RhYmxlIHRvc2hpYmFfNDgweDY0MF9pbml0X3RhYmxlW10gPSB7Cgl7IERQU0VUMCwgICAgICAgICAgICAgICAweDRCRUMwMDY2IH0sICAvLyAjIE1EQy5EUFNFVDAgICMgU2V0dXAgRFBMTCBwYXJhbWV0ZXJzCgl7IERQU0VUMSwgICAgICAgICAgICAgICAweDAwMDAwMTEzIH0sICAvLyAgICMgTURDLkRQU0VUMSAgCgl7IERQU1VTLCAgICAgICAgICAgICAgICAweDAwMDAwMDAwIH0sICAvLyAgICMgTURDLkRQU1VTICAjIFNldCBEUExMIG9zY2lsbGF0aW9uIGVuYWJsZQoJeyBEUFJVTiwgICAgICAgICAgICAgICAgMHgwMDAwMDAwMSB9LCAgLy8gICAjIE1EQy5EUFJVTiAgIyBSZWxlYXNlIHJlc2V0IHNpZ25hbCBmb3IgRFBMTAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMTQgICAgICAgICB9LCAgLy8gd2FpdF9tcygxNCk7Cgl7IFNZU0NLRU5BLCAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyAgICMgTURDLlNZU0NLRU5BICAjIEVuYWJsZSBzeXN0ZW0gY2xvY2sgb3V0cHV0Cgl7IENMS0VOQiwgICAgICAgICAgICAgICAweDAwMDAwMEVGIH0sICAvLyAgICMgU1lTLkNMS0VOQiAgIyBFbmFibGUgY2xvY2tzIGZvciBlYWNoIG1vZHVsZSAod2l0aG91dCBEQ0xLICwgaTJjQ0xLKQoJeyBHUElPX0JMT0NLX0JBU0UsICAgICAgMHgwM0ZGMDAwMCB9LCAgLy8gICAjIEdQSSAuR1BJT0RBVEEgICMgR1BJTzIoUkVTRVRfTENEX04pIHNldCB0byAwICwgR1BJTzMoZURSQU1fUG93ZXIpIHNldCB0byAwCgl7IEdQSU9ESVIsICAgICAgICAgICAgICAweDAwMDAwMjREIH0sICAvLyAgICMgR1BJIC5HUElPRElSICAjIFNlbGVjdCBkaXJlY3Rpb24gb2YgR1BJTyBwb3J0ICgwLDIsMyw2LDkgb3V0cHV0KQoJeyBTWVNURU1fQkxPQ0syX0JBU0UsICAgMHgwMDAwMDE3MyB9LCAgLy8gICAjIFNZUy5HUElPU0VMICAjIEdQSU8gcG9ydCBtdWx0aXBsZXhpbmcgY29udHJvbAoJeyBHUElPUEMsICAgICAgICAgICAgICAgMHgwM0MzMDBDMCB9LCAgLy8gICAjIEdQSSAuR1BJT1BDICAjIEdQSU8yLDMgUEQgY3V0Cgl7IFNZU1RFTV9CTE9DSzFfQkFTRSwgICAweDAwMDAwMDAwIH0sICAvLyAgICMgU1lTLldLUkVRICAjIFdha2UtdXAgcmVxdWVzdCBldmVudCBpcyBWU1lOQyBhbGlnbm1lbnQKCXsgR1BJT0lTLCAgICAgICAgICAgICAgIDB4MDAwMDAwMDAgfSwgIC8vICAgIyBHUEkgLkdQSU9JUyAgIyBTZXQgaW50ZXJydXB0IHNlbnNlIG9mIEdQSU8KCXsgR1BJT0lFViwgICAgICAgICAgICAgIDB4MDAwMDAwMDEgfSwgIC8vICAgIyBHUEkgLkdQSU9JRVYgICMgU2V0IGludGVycnVwdCBldmVudCBvZiBHUElPCgl7IEdQSU9JQywgICAgICAgICAgICAgICAweDAwMDAwM0ZGIH0sICAvLyAgICMgR1BJIC5HUElPSUMgICMgR1BJTyBpbnRlcnJ1cHQgY2xlYXIKCXsgR1BJT19CTE9DS19CQVNFLCAgICAgIDB4MDAwNjAwMDYgfSwgIC8vICAgIyBHUEkgLkdQSU9EQVRBICAjIFJlbGVhc2UgTENERCByZXNldAoJeyBHUElPX0JMT0NLX0JBU0UsICAgICAgMHgwMDA4MDAwOCB9LCAgLy8gICAjIEdQSSAuR1BJT0RBVEEgICMgZURSQU0gVkQgc3VwcGx5Cgl7IEdQSU9fQkxPQ0tfQkFTRSwgICAgICAweDAyMDAwMjAwIH0sICAvLyAgICMgR1BJIC5HUElPREFUQSAgIyBURVNUIExFRCBPTgoJeyBEUkFNUFdSLCAgICAgICAgICAgICAgMHgwMDAwMDAwMSB9LCAgLy8gICAjIFNZUy5EUkFNUFdSICAjIGVEUkFNIHBvd2VyIHVwCgl7IFRJTUVSMENPTlRST0wsICAgICAgICAweDAwMDAwMDYwIH0sICAvLyAgICMgUFdNLlRpbWVyMENvbnRyb2wgICMgUFdNMCBvdXRwdXQgc3RvcAoJeyBQV01fQkxPQ0tfQkFTRSwgICAgICAgMHgwMDAwMTM4OCB9LCAgLy8gICAjIFBXTS5UaW1lcjBMb2FkICAjIFBXTTAgMTBrSHogLCBEdXR5IDk5IChCYWNrTGlnaHQgT0ZGKQoJLy97UFdNME9GRiwgICAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyAgICMgUFdNLlBXTTBPRkYgIAojaWYgMAoJeyBQV00wT0ZGLCAgICAgICAgICAgICAgMHgwMDAwMTM4NyB9LCAvLyBTVVJGIDEwMCUgYmFja2xpZ2h0Cgl7IFBXTTBPRkYsICAgICAgICAgICAgICAweDAwMDAwMDAwIH0sIC8vIEZGQSAxMDAlIGJhY2tsaWdodAojZW5kaWYKCXsgUFdNME9GRiwgICAgICAgICAgICAgIDB4MDAwMDA5QzMgfSwgLy8gNTAlIEJMCgl7IFRJTUVSMUNPTlRST0wsICAgICAgICAweDAwMDAwMDYwIH0sICAvLyAgICMgUFdNLlRpbWVyMUNvbnRyb2wgICMgUFdNMSBvdXRwdXQgc3RvcAoJeyBUSU1FUjFMT0FELCAgICAgICAgICAgMHgwMDAwMTM4OCB9LCAgLy8gICAjIFBXTS5UaW1lcjFMb2FkICAjIFBXTTEgMTBrSHogLCBEdXR5IDk5IChCYWNrTGlnaHQgT0ZGKQoJLy97UFdNMU9GRiwgICAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyAgICMgUFdNLlBXTTFPRkYgIAoJeyBQV00xT0ZGLCAgICAgICAgICAgICAgMHgwMDAwMTM4NyB9LAoJeyBUSU1FUjBDT05UUk9MLCAgICAgICAgMHgwMDAwMDBFMCB9LCAgLy8gICAjIFBXTS5UaW1lcjBDb250cm9sICAjIFBXTTAgb3V0cHV0IHN0YXJ0Cgl7IFRJTUVSMUNPTlRST0wsICAgICAgICAweDAwMDAwMEUwIH0sICAvLyAgICMgUFdNLlRpbWVyMUNvbnRyb2wgICMgUFdNMSBvdXRwdXQgc3RhcnQKCXsgUFdNQ1IsICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMgfSwgIC8vICAgIyBQV00uUFdNQ1IgICMgUFdNIG91dHB1dCBlbmFibGUKCXsgMCwgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDEpOyAgICAgICAgCgl7IFNQSV9CTE9DS19CQVNFLCAgICAgICAweDAwMDAwNzk5IH0sICAvLyAgICMgU1BJIC5TU0lDVEwgICMgU1BJIG9wZXJhdGlvbiBtb2RlIHNldHRpbmcKCXsgU1NJVElNRSwgICAgICAgICAgICAgIDB4MDAwMDAxMDAgfSwgIC8vICAgIyBTUEkgLlNTSVRJTUUgICMgU1BJIHNlcmlhbCBpbnRlcmZhY2UgdGltaW5nIHNldHRpbmcKCXsgU1BJX0JMT0NLX0JBU0UsICAgICAgIDB4MDAwMDA3OWIgfSwgIC8vICAgIyBTUEkgLlNTSUNUTCAgIyBTZXQgU1BJIGFjdGl2ZSBtb2RlCgoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCB9LCAgLy8gICAjIFNQSS5TU0lUWCAgIyBSZWxlYXNlIGZyb20gRGVlcCBTdGFuYnkgbW9kZQoJeyAwLCAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMSk7Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMDAwIH0sICAvLyAgICMgU1BJLlNTSVRYICAKCXsgMCwgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDEpOwoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCB9LCAgLy8gICAjIFNQSS5TU0lUWCAgCgl7IDAsICAgICAgICAgICAgICAgICAgICAxICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygxKTsKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQkEgfSwgIC8vICAgIyBTUEkuU1NJVFggICAgICAgICAgKk5PVEUgMSAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTExIH0sICAvLyAgICAgIyBEaXNwbGF5IG1vZGUgc2V0dXAoMSkgOiBOb3JtYWx5IEJsYWNrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMDM2IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAwIH0sICAvLyAgICAgIyBNZW1vcnkgYWNjZXNzIGNvbnRyb2wKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAvLyAgICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQkIgfSwgIC8vICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAwIH0sICAvLyAgICMgRGlzcGxheSBtb2RlIHNldHVwKDIpCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMDNBIH0sICAvLyAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDE2MCB9LCAgLy8gICAjIFJHQiBJbnRlcmZhY2UgZGF0YSBmb3JtYXQKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQkYgfSwgIC8vICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAwIH0sICAvLyAgICMgRHJpdm5pZyBtZXRob2QKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQjEgfSwgIC8vICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTVEIH0sICAvLyAgICMgQm9vc3RlciBvcGVyYXRpb24gc2V0dXAKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQjIgfSwgIC8vICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTMzIH0sICAvLyAgICMgQm9vc3RlciBtb2RlIHNldHVwCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEIzIH0sICAvLyAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEyMiB9LCAgLy8gICAgICMgQm9vc3RlciBmcmVxdWVuY2llcyBzZXR1cAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCNCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMiB9LCAgLy8gICAgICMgT1AtYW1wIGNhcGFiaWxpdHkvU3lzdGVtIGNsb2NrIGZyZXEuIGRpdmlzaW9uIHNldHVwCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEI1IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTFGIH0sICAvLyAgICAgIyBWQ1MgVm9sdGFnZSBhZGp1c3RtZW50ICAoMUMtPjFGIGZvciBSZXYgMikKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQjYgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMjggfSwgIC8vICAgICAjIFZDT00gVm9sdGFnZSBhZGp1c3RtZW50Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEI3IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAzIH0sICAvLyAgICAgIyBDb25maWd1cmUgYW4gZXh0ZXJuYWwgZGlzcGxheSBzaWduYWwKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQjkgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMjAgfSwgIC8vICAgICAjIERDQ0svRENFViB0aW1pbmcgc2V0dXAKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQkQgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDIgfSwgIC8vICAgICAjIEFTVyBzaWduYWwgY29udHJvbAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBCRSB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCB9LCAgLy8gICAgICMgRHVtbXkgZGlzcGxheSAod2hpdGUvYmxhY2spIGNvdW50IHNldHVwIGZvciBRVUFEIERhdGEgb3BlcmF0aW9uCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEMwIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTExIH0sICAvLyAgICAgIyB3YWl0X21zKC1vdXQgRlIgY291bnQgc2V0dXAgKEEpCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEMxIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTExIH0sICAvLyAgICAgIyB3YWl0X21zKC1vdXQgRlIgY291bnQgc2V0dXAgKEIpCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEMyIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTExIH0sICAvLyAgICAgIyB3YWl0X21zKC1vdXQgRlIgY291bnQgc2V0dXAgKEMpCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEMzIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTBBIH0sICAvLyAgICAgIyB3YWl0X21zKC1pbiBsaW5lIGNsb2NrIGNvdW50IHNldHVwIChEKQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwQSB9LCAgLy8gICAgIAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBDNCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDE2MCB9LCAgLy8gICAgICMgU2VlcC1pbiBsaW5lIGNsb2NrIGNvdW50IHNldHVwIChFKQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDE2MCB9LCAgLy8gICAgIAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBDNSB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDE2MCB9LCAgLy8gICAgICMgd2FpdF9tcygtaW4gbGluZSBjbG9jayBjb3VudCBzZXR1cCAoRikKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxNjAgfSwgIC8vICAgICAKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQzYgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxNjAgfSwgIC8vICAgICAjIHdhaXRfbXMoLWluIGxpbmUgY2xvY2sgc2V0dXAgKEcpCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTYwIH0sICAvLyAgICAgCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEM3IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTMzIH0sICAvLyAgICAgIyBHYW1tYSAxIGZpbmUgdHVuaW5nICgxKQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDE0MyB9LCAgLy8gICAgIAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBDOCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDE0NCB9LCAgLy8gICAgICMgR2FtbWEgMSBmaW5lIHR1bmluZyAoMikKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwQzkgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMzMgfSwgIC8vICAgICAjIEdhbW1hIDEgaW5jbGluYXRpb24gYWRqdXN0bWVudAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBDQSB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCB9LCAgLy8gICAgICMgR2FtbWEgMSBibHVlIG9mZnNldCBhZGp1c3RtZW50Cgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEVDIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTAyIH0sICAvLyAgICAgIyBUb3RhbCBudW1iZXIgb2YgaG9yaXpvbnRhbCBjbG9jayBjeWNsZXMgKDEpIFtQQ0xLIFN5bmMuIFZHQSBzZXR0aW5nXQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDExOCB9LCAgLy8gICAgIAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBDRiB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMSB9LCAgLy8gICAgICMgQmxhbmtpbmcgcGVyaW9kIGNvbnRyb2wgKDEpIFtQQ0xLIFN5bmMuIFRhYmxlMSBmb3IgVkdBXQoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBEMCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDExMCB9LCAgLy8gICAgICMgQmxhbmtpbmcgcGVyaW9kIGNvbnRyb2wgKDIpIFtQQ0xLIFN5bmMuIFRhYmxlMSBmb3IgVkdBXQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwNCB9LCAgLy8gICAgIAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBEMSB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMSB9LCAgLy8gICAgICMgQ0tWIHRpbWluZyBjb250cm9sIG9uL29mZiBbUENMSyBTeW5jLiBUYWJsZTEgZm9yIFZHQV0KCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRDIgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMDAgfSwgIC8vICAgICAjIENLVjEsMiB0aW1pbmcgY29udHJvbCBbUENMSyBTeW5jLiBUYWJsZTEgZm9yIFZHQV0KCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxM0EgfSwgIC8vICAgICAKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRDMgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMDAgfSwgIC8vICAgICAjIE9FViB0aW1pbmcgY29udHJvbCBbUENMSyBTeW5jLiBUYWJsZTEgZm9yIFZHQV0KCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxM0EgfSwgIC8vICAgICAKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRDQgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMjQgfSwgIC8vICAgICAjIEFTVyB0aW1pbmcgY29udHJvbCAoMSkgW1BDTEsgU3luYy4gVGFibGUxIGZvciBWR0FdCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTZFIH0sICAvLyAgICAgCgl7IDAsICAgICAgICAgICAgICAgICAgICAxICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygxKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEQ1IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTI0IH0sICAvLyAgICAgIyBBU1cgdGltaW5nIGNvbnRyb2wgKDIpIFtQQ0xLIFN5bmMuIFRhYmxlMSBmb3IgVkdBXQoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBFRCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDEwMSB9LCAgLy8gICAgICMgVG90YWwgbnVtYmVyIG9mIGhvcml6b250YWwgY2xvY2sgY3ljbGVzICgyKSBbUENMSyBTeW5jLiBUYWJsZTEgZm9yIFFWR0EgXQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwQSB9LCAgLy8gICAgIAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBENiB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMSB9LCAgLy8gICAgICMgQmxhbmtpbmcgcGVyaW9kIGNvbnRyb2wgKDEpIFtQQ0xLIFN5bmMuIFRhYmxlMiBmb3IgUVZHQV0KCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRDcgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMTAgfSwgIC8vICAgICAjIEJsYW5raW5nIHBlcmlvZCBjb250cm9sICgyKSBbUENMSyBTeW5jLiBUYWJsZTIgZm9yIFFWR0FdCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTBBIH0sICAvLyAgICAgCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEQ4IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAxIH0sICAvLyAgICAgIyBDS1YgdGltaW5nIGNvbnRyb2wgb24vb2ZmIFtQQ0xLIFN5bmMuIFRhYmxlMiBmb3IgUVZHQV0KCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRDkgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMDAgfSwgIC8vICAgICAjIENLVjEsMiB0aW1pbmcgY29udHJvbCBbUENMSyBTeW5jLiBUYWJsZTIgZm9yIFFWR0FdCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTE0IH0sICAvLyAgICAgCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMERFIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMTAwIH0sICAvLyAgICAgIyBPRVYgdGltaW5nIGNvbnRyb2wgW1BDTEsgU3luYy4gVGFibGUyIGZvciBRVkdBXQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDExNCB9LCAgLy8gICAgIAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBERiB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDExMiB9LCAgLy8gICAgICMgQVNXIHRpbWluZyBjb250cm9sICgxKSBbUENMSyBTeW5jLiBUYWJsZTIgZm9yIFFWR0FdCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTNGIH0sICAvLyAgICAgCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEUwIH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTBCIH0sICAvLyAgICAgIyBBU1cgdGltaW5nIGNvbnRyb2wgKDIpIFtQQ0xLIFN5bmMuIFRhYmxlMiBmb3IgUVZHQV0KCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRTIgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDEgfSwgIC8vICAgICAjIEJ1aWx0LWluIG9zY2lsbGF0b3IgZnJlcXVlbmN5IGRpdmlzaW9uIHNldHVwIFtGcmVxdWVuY3kgZGl2aXNpb24gcmF0aW8gOiAyICg2MEhxKQoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBFMyB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEzNiB9LCAgLy8gICAgICMgQnVpbHQtaW4gb3NjaWxsYXRvciBjbG9jayBjb3VudCBzZXR1cAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBFNCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDEwMCB9LCAgLy8gICAgICMgQ0tWIHRpbWluZyBjb250cm9sIGZvciB1c2luZyBidWlsZC1pbiBvc2MKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxMDMgfSwgIC8vICAgICAKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRTUgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMDIgfSwgIC8vICAgICAjIE9FViB0aW1pbmcgY29udHJvbCBmb3IgdXNpbmcgYnVpbGQtaW4gb3NjCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTA0IH0sICAvLyAgICAgCgl7IDAsICAgICAgICAgICAgICAgICAgICAyICAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyKTsgICAgICAvLyAgICAjICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEU2IH0sICAvLyAgICAgIyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTAzIH0sICAvLyAgICAgIyBEQ0VWIHRpbWluZyBjb250cm9sIGZvciB1c2luZyBidWlsZC1pbiBvc2MKCXsgMCwgICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgfSwgIC8vICB3YWl0X21zKDIpOyAgICAgIC8vICAgICMgIFdhaXQgU1BJIGZpZm8gZW1wdHkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAwRTcgfSwgIC8vICAgICAjIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwODAxMDQgfSwgIC8vICAgICAjIEFTVyB0aW1pbmcgc2V0dXAgZm9yIHVzaW5nIGJ1aWxkLWluIG9zYygxKQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwQSB9LCAgLy8gICAgIAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMiAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoMik7ICAgICAgLy8gICAgIyAgV2FpdCBTUEkgZmlmbyBlbXB0eQoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDBFOCB9LCAgLy8gICAgICMgQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwNCB9LCAgLy8gICAgICMgQVNXIHRpbWluZyBzZXR1cCBmb3IgdXNpbmcgYnVpbGQtaW4gb3NjKDIpCiAgICAgICAgICAgIAogICAgICAgICAgICAKCXsgQ0xLRU5CLCAgICAgICAgICAgICAgIDB4MDAwMDAxRUYgfSwgIC8vICAgIyBTWVMuQ0xLRU5CICAjIERDTEsgZW5hYmxlCgl7IFNUQVJULCAgICAgICAgICAgICAgICAweDAwMDAwMDAwIH0sICAvLyAgICMgTENELlNUQVJUICAjIExDREMgd2FpdF9tcyggbW9kZQoJeyBXUlNUQiwgICAgICAgICAgICAgICAgMHgwMDAwMDAzRiB9LCAgLy8gICAjIExDRC5XUlNUQiAgIyB3cml0ZV9jbGllbnRfcmVnKCBzdHJvYmUKCXsgUkRTVEIsICAgICAgICAgICAgICAgIDB4MDAwMDA0MzIgfSwgIC8vICAgIyBMQ0QuUkRTVEIgICMgUmVhZCBzdHJvYmUKCXsgUE9SVF9FTkIsICAgICAgICAgICAgIDB4MDAwMDAwMDIgfSwgIC8vICAgIyBMQ0QuUE9SVF9FTkIgICMgQXN5bmNocm9ub3VzIHBvcnQgZW5hYmxlCgl7IFZTWU5JRiwgICAgICAgICAgICAgICAweDAwMDAwMDAwIH0sICAvLyAgICMgTENELlZTWU5DSUYgICMgVlNZTkMgSS9GIG1vZGUgc2V0Cgl7IEFTWV9EQVRBLCAgICAgICAgICAgICAweDgwMDAwMDAwIH0sICAvLyAgICMgTENELkFTWV9EQVR4ICAjIEluZGV4IHNldHRpbmcgb2YgU1VCIExDREQKCXsgQVNZX0RBVEIsICAgICAgICAgICAgIDB4MDAwMDAwMDEgfSwgIC8vICAgICAjIE9zY2lsbGF0b3Igc3RhcnQKCXsgQVNZX0NNRFNFVCwgICAgICAgICAgIDB4MDAwMDAwMDUgfSwgIC8vICAgIyBMQ0QuQVNZX0NNRFNFVCAgIyBEaXJlY3QgY29tbWFuZCB0cmFuc2ZlciBlbmFibGUKCXsgQVNZX0NNRFNFVCwgICAgICAgICAgIDB4MDAwMDAwMDQgfSwgIC8vICAgIyBMQ0QuQVNZX0NNRFNFVCAgIyBEaXJlY3QgY29tbWFuZCB0cmFuc2ZlciBkaXNhYmxlCgl7IDAsICAgICAgICAgICAgICAgICAgICAxMCAgICAgICAgIH0sICAvLyAgd2FpdF9tcygxMCk7Cgl7IEFTWV9EQVRBLCAgICAgICAgICAgICAweDgwMDAwMDAwIH0sICAvLyAgICMgTENELkFTWV9EQVR4ICAjIERVTU1ZIHdyaXRlX2NsaWVudF9yZWcogUAqTk9URTIKCXsgQVNZX0RBVEIsICAgICAgICAgICAgIDB4ODAwMDAwMDAgfSwgIC8vICAgICAKCXsgQVNZX0RBVEMsICAgICAgICAgICAgIDB4ODAwMDAwMDAgfSwgIC8vICAgICAKCXsgQVNZX0RBVEQsICAgICAgICAgICAgIDB4ODAwMDAwMDAgfSwgIC8vICAgICAKCXsgQVNZX0NNRFNFVCwgICAgICAgICAgIDB4MDAwMDAwMDkgfSwgIC8vICAgIyBMQ0QuQVNZX0NNRFNFVCAgCgl7IEFTWV9DTURTRVQsICAgICAgICAgICAweDAwMDAwMDA4IH0sICAvLyAgICMgTENELkFTWV9DTURTRVQgIAoJeyBBU1lfREFUQSwgICAgICAgICAgICAgMHg4MDAwMDAwNyB9LCAgLy8gICAjIExDRC5BU1lfREFUeCAgIyBJbmRleCBzZXR0aW5nIG9mIFNVQiBMQ0RECgl7IEFTWV9EQVRCLCAgICAgICAgICAgICAweDAwMDA0MDA1IH0sICAvLyAgICAgIyBMQ0QgZHJpdmVyIGNvbnRyb2wKCXsgQVNZX0NNRFNFVCwgICAgICAgICAgIDB4MDAwMDAwMDUgfSwgIC8vICAgIyBMQ0QuQVNZX0NNRFNFVCAgIyBEaXJlY3QgY29tbWFuZCB0cmFuc2ZlciBlbmFibGUKCXsgQVNZX0NNRFNFVCwgICAgICAgICAgIDB4MDAwMDAwMDQgfSwgIC8vICAgIyBMQ0QuQVNZX0NNRFNFVCAgIyBEaXJlY3QgY29tbWFuZCB0cmFuc2ZlciBkaXNhYmxlCgl7IDAsICAgICAgICAgICAgICAgICAgICAyMCAgICAgICAgIH0sICAvLyAgd2FpdF9tcygyMCk7Cgl7IEFTWV9EQVRBLCAgICAgICAgICAgICAweDgwMDAwMDU5IH0sICAvLyAgICMgTENELkFTWV9EQVR4ICAjIEluZGV4IHNldHRpbmcgb2YgU1VCIExDREQKCXsgQVNZX0RBVEIsICAgICAgICAgICAgIDB4MDAwMDAwMDAgfSwgIC8vICAgICAjIExUUFMgSS9GIGNvbnRyb2wKCXsgQVNZX0NNRFNFVCwgICAgICAgICAgIDB4MDAwMDAwMDUgfSwgIC8vICAgIyBMQ0QuQVNZX0NNRFNFVCAgIyBEaXJlY3QgY29tbWFuZCB0cmFuc2ZlciBlbmFibGUKCXsgQVNZX0NNRFNFVCwgICAgICAgICAgIDB4MDAwMDAwMDQgfSwgIC8vICAgIyBMQ0QuQVNZX0NNRFNFVCAgIyBEaXJlY3QgY29tbWFuZCB0cmFuc2ZlciBkaXNhYmxlCgoJeyBWU1lOSUYsICAgICAgICAgICAgICAgMHgwMDAwMDAwMSB9LCAgLy8gICAjIExDRC5WU1lOQ0lGICAjIFZTWU5DIEkvRiBtb2RlIE9GRgoJeyBQT1JUX0VOQiwgICAgICAgICAgICAgMHgwMDAwMDAwMSB9LCAgLy8gICAjIExDRC5QT1JUX0VOQiAgIyBTWU5DIEkvRiAgb3V0cHV0IHNlbGVjdAoKCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoJeyBWU1lOSUYsICAgICAgICAgICAgICAgMHgwMDAwMDAwMSB9LCAgLy8gVlNZTkMgSS9GIG1vZGUgT0ZGCgl7IFBPUlRfRU5CLCAgICAgICAgICAgICAweDAwMDAwMDAxIH0sICAvLyBTWU5DIEkvRiBtb2RlIE9OCgoJeyBCSVRNQVAxLCAgICAgICAgICAgICAgMHgwMUUwMDBGMCB9LCAgLy8gTURDLkJJVE1BUDIgICk7IC8vIFNldHVwIG9mIFBJVENIIHNpemUgdG8gRnJhbWUgYnVmZmVyMQoJeyBCSVRNQVAyLCAgICAgICAgICAgICAgMHgwMUUwMDBGMCB9LCAgLy8gTURDLkJJVE1BUDMgICk7IC8vIFNldHVwIG9mIFBJVENIIHNpemUgdG8gRnJhbWUgYnVmZmVyMgoJeyBCSVRNQVAzLCAgICAgICAgICAgICAgMHgwMUUwMDBGMCB9LCAgLy8gTURDLkJJVE1BUDQgICk7IC8vIFNldHVwIG9mIFBJVENIIHNpemUgdG8gRnJhbWUgYnVmZmVyMwoJeyBCSVRNQVA0LCAgICAgICAgICAgICAgMHgwMERDMDBCMCB9LCAgLy8gTURDLkJJVE1BUDUgICk7IC8vIFNldHVwIG9mIFBJVENIIHNpemUgdG8gRnJhbWUgYnVmZmVyNAoJeyBDTEtFTkIsICAgICAgICAgICAgICAgMHgwMDAwMDFFRiB9LCAgLy8gU1lTLkNMS0VOQiAgKTsgLy8gRENMSyBzdXBwbHkKCXsgUE9SVF9FTkIsICAgICAgICAgICAgIDB4MDAwMDAwMDEgfSwgIC8vIExDRC5QT1JUX0VOQiAgKTsgLy8gU3luY2hyb25vdXMgcG9ydCBlbmFibGUKCXsgUE9SVCwgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDQgfSwgIC8vIExDRC5QT1JUICApOyAvLyBQb2xhcml0eSBvZiBERSBpcyBzZXQgdG8gaGlnaCBhY3RpdmUKCXsgUFhMLCAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIgfSwgIC8vIExDRC5QWEwgICk7IC8vIEFDVE1PREUgMiBzZXQgKDFzdCBmcmFtZSBibGFjayBkYXRhIG91dHB1dCkKCXsgTVBMRkJVRiwgICAgICAgICAgICAgIDB4MDAwMDAwMDAgfSwgIC8vIExDRC5NUExGQlVGICApOyAvLyBTZWxlY3QgdGhlIHJlYWRpbmcgYnVmZmVyCgl7IEhDWUNMRSwgICAgICAgICAgICAgICAweDAwMDAwMTBiIH0sICAvLyBMQ0QuSENZQ0xFICApOyAvLyBTZXR1cCB0byBWR0Egc2l6ZQoJeyBIU1csICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMyB9LCAgLy8gTENELkhTVyAgCgl7IEhERV9TVEFSVCwgICAgICAgICAgICAweDAwMDAwMDA3IH0sICAvLyBMQ0QuSERFX1NUQVJUICAKCXsgSERFX1NJWkUsICAgICAgICAgICAgIDB4MDAwMDAwRUYgfSwgIC8vIExDRC5IREVfU0laRSAgCgl7IFZDWUNMRSwgICAgICAgICAgICAgICAweDAwMDAwMjg1IH0sICAvLyBMQ0QuVkNZQ0xFICAKCXsgVlNXLCAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgfSwgIC8vIExDRC5WU1cgIAoJeyBWREVfU1RBUlQsICAgICAgICAgICAgMHgwMDAwMDAwMyB9LCAgLy8gTENELlZERV9TVEFSVCAgCgl7IFZERV9TSVpFLCAgICAgICAgICAgICAweDAwMDAwMjdGIH0sICAvLyBMQ0QuVkRFX1NJWkUgIAoKCXsgU1RBUlQsICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgfSwgIC8vIExDRC5TVEFSVCAgKTsgLy8gTENEQyAtIFBpeGVsIGRhdGEgdHJhbnNmZXIgc3RhcnQKCgl7IDAsICAgICAgICAgICAgICAgICAgICAxMCAgICAgICAgIH0sICAvLyAgd2FpdF9tcyggMTAgICk7Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEJDIH0sICAvLyBTUEkuU1NJVFggICk7IC8vIENvbW1hbmQgc2V0dGluZyBvZiBTUEkgYmxvY2sKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAxODAgfSwgIC8vIERpc3BsYXkgZGF0YSBzZXR1cAoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDA4MDAzQiB9LCAgLy8gQ29tbWFuZCBzZXR0aW5nIG9mIFNQSSBibG9jawoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDEwMCB9LCAgLy8gUXVhZCBEYXRhIGNvbmZpZ3VyYXRpb24gLSBWR0EKCXsgMCwgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgfSwgIC8vICB3YWl0X21zKCAxICAgICAgICAgICk7IC8vICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEIwIH0sICAvLyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMTE2IH0sICAvLyBQb3dlciBzdXBwbHkgT04vT0ZGIGNvbnRyb2wKCXsgMCwgICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgfSwgIC8vICB3YWl0X21zKCAxICAgICAgICAgICk7IC8vICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMEI4IH0sICAvLyBDb21tYW5kIHNldHRpbmcgb2YgU1BJIGJsb2NrCgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDgwMUZGIH0sICAvLyBPdXRwdXQgY29udHJvbAoJeyBTU0lUWCwgICAgICAgICAgICAgICAgMHgwMDAwMDFGNSB9LCAgIAoJeyAwLCAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICB9LCAgLy8gIHdhaXRfbXMoIDEpOyAgICAgICAgIC8vICBXYWl0IFNQSSBmaWZvIGVtcHR5Cgl7IFNTSVRYLCAgICAgICAgICAgICAgICAweDAwMDAwMDExIH0sICAvLyB3YWl0X21zKC1vdXQgKENvbW1hbmQgb25seSkKCXsgU1NJVFgsICAgICAgICAgICAgICAgIDB4MDAwMDAwMjkgfSwgIC8vIERpc3BsYXkgb24gKENvbW1hbmQgb25seSkKCgl7IFNZU1RFTV9CTE9DSzFfQkFTRSwgICAweDAwMDAwMDAyIH0sICAvLyAgICAjIHdha2VSRVEgLT4gR1BJTwoKCXsgMCwgMCB9Cn07CgpzdGF0aWMgdm9pZCBfcGFuZWxfaW5pdChzdHJ1Y3QgaW5pdF90YWJsZSAqaW5pdF90YWJsZSkKewoJdW5zaWduZWQgbjsKCglkcHJpbnRmKElORk8sICJwYW5lbF9pbml0KClcbiIpOwoKCW4gPSAwOwoJd2hpbGUgKGluaXRfdGFibGVbbl0ucmVnICE9IDAgfHwgaW5pdF90YWJsZVtuXS52YWwgIT0gMCkgewoJCWlmIChpbml0X3RhYmxlW25dLnJlZyAhPSAwKQoJCQltZGRpX3JlbW90ZV93cml0ZShpbml0X3RhYmxlW25dLnZhbCwgaW5pdF90YWJsZVtuXS5yZWcpOwoJCWVsc2UKCQkJdGhyZWFkX3NsZWVwKGluaXRfdGFibGVbbl0udmFsKTsvL21kZWxheShpbml0X3RhYmxlW25dLnZhbCk7CgkJbisrOwoJfQoKCWRwcmludGYoSU5GTywgInBhbmVsX2luaXQoKSBkb25lXG4iKTsKfQoKdm9pZCBwYW5lbF9pbml0KHN0cnVjdCBtZGRpX2NsaWVudF9jYXBzICpjbGllbnRfY2FwcykKewoJc3dpdGNoKGNsaWVudF9jYXBzLT5tYW51ZmFjdHVyZXJfbmFtZSkgewoJY2FzZSAweGQyNjM6IC8vIFRvc2hpYmEKCQlkcHJpbnRmKElORk8sICJGb3VuZCBUb3NoaWJhIHBhbmVsXG4iKTsKCQlfcGFuZWxfaW5pdCh0b3NoaWJhXzQ4MHg2NDBfaW5pdF90YWJsZSk7CgkJYnJlYWs7CgljYXNlIDB4NDQ3NDogLy8/PwoJCWlmIChjbGllbnRfY2Fwcy0+cHJvZHVjdF9jb2RlID09IDB4YzA2NSkKCQkJZHByaW50ZihJTkZPLCAiRm91bmQgV1ZHQSBwYW5lbFxuIik7CgkJYnJlYWs7Cgl9Cn0KCnZvaWQgcGFuZWxfcG93ZXJvbih2b2lkKQp7CglncGlvX3NldCg4OCwgMCk7CglncGlvX2NvbmZpZyg4OCwgR1BJT19PVVRQVVQpOwoJdGhyZWFkX3NsZWVwKDEpOyAvL3VkZWxheSgxMCk7CglncGlvX3NldCg4OCwgMSk7Cgl0aHJlYWRfc2xlZXAoMTApOyAvL21kZWxheSgxMCk7CgoJLy9tZGVsYXkoMTAwMCk7IC8vIHVuY29tbWVudCBmb3Igc2Vjb25kIHN0YWdlIGJvb3QKfQoKdm9pZCBwYW5lbF9iYWNrbGlnaHQoaW50IG9uKQp7fQo=