Ly8gTW9yZ2VuR3JhdWVuIE1VRGxpYgovLwoKI2lmbmRlZiBfX1BMQVlFUl9GQU9fSF9fCiNkZWZpbmUgX19QTEFZRVJfRkFPX0hfXwoKI2RlZmluZSBGQU9fTUFTVEVSICAgICAgIi9kL2ViZW5lL21pcmlsL2ZyYXRlcm5pdGFzL3NlY3VyZS9mYW9tYXN0ZXIiIC8vIGRpZSB6ZW50cmFsZSBzdGVsbGUgZGVzIGZhbwoKLy8gZGllIExpc3RlIGRlciB2ZXJm/GdiYXJlbiBQb3J0YWxlIGZ1ZXIgZGFzIGVyc3RlIHBvcnRhbGdlc2NoZW5rCiNkZWZpbmUgRkFPX1BPUlRBTFMxX0xJU1QgKHsyLDMsNCw1LDYsNyw4LDksMTAsMTMsMTQsMTUsMTYsMTksMjAsMjEsMjUsMjksMzN9KQovLyBkaWUgTGlzdGUgZGVyIHZlcmb8Z2JhcmVuIFBvcnRhbGUgZnVlciBkYXMgendlaXRlIHBvcnRhbGdlc2NoZW5rCiNkZWZpbmUgRkFPX1BPUlRBTFMyX0xJU1QgRkFPX1BPUlRBTFMxX0xJU1QrKHsxLDExLDEyLDE3LDE4LDI0LDI2LDI3LDI4LDMxLDM0LDM2LDM3LDM4fSkKLy8gZGllIGFuemFobCBkZXIgenUgd2FlaGxlbmRlbiBwb3J0YWxlIGZ1ZXIgZGFzIGVyc3RlIHBvcnRhbGdlc2NoZW5rCiNkZWZpbmUgRkFPX1BPUlRBTFMxX05VTSAgNQovLyBkaWUgYW56YWhsIGRlciB6dSB3YWVobGVuZGVuIHBvcnRhbGUgZnVlciBkYXMgendlaXRlIHBvcnRhbGdlc2NoZW5rCiNkZWZpbmUgRkFPX1BPUlRBTFMyX05VTSAgNQoKLy8gcHJvcGVydGllcwojZGVmaW5lIFBfRkFPICAgICAgICAgICAiZnJhdGVybml0YXNkb25vYXJjaG1hZ29ydW0iICAvLyBlbnRoYWVsdCBkaWUgZG9uaQojZGVmaW5lIFBfRkFPX1BPUlRBTFMgICBQX0ZBTysiUE9SVEFMUyIgLy8gZW50aGFlbHQgZGllIGRlbSBzcGllbGVyIHVlYmVyZ2ViZW5lbiBwb3J0YWxlCgovLyBiaXRtYXNrcwojZGVmaW5lIEZBT19USVRMRSAgIDB4MDEKI2RlZmluZSBGQU9fUE9SVEFMUzEgICAgMHgwMgojZGVmaW5lIEZBT19QT1JUQUxTMiAgMHgwNAojZGVmaW5lIEZBT19TRUVSX1BPUlRBTCAweDA4CiNkZWZpbmUgRkFPX01FTUJFUiAweDEwCgovLyBoaWxmcmVpY2hlIG1ha3JvcwojZGVmaW5lIEZBT19IQVNfVElUTEVfR0lGVCh4KSAgICh4IT0wICYmIHF1ZXJ5X29uY2VfaW50ZXJhY3RpdmUoeCkgXAogICAgJiYgKChpbnQpeC0+UXVlcnlQcm9wKFBfRkFPKSZGQU9fVElUTEUpIT0wKQojZGVmaW5lIEZBT19IQVNfUE9SVEFMUzFfR0lGVCh4KSAgKHghPTAgJiYgcXVlcnlfb25jZV9pbnRlcmFjdGl2ZSh4KSBcCiAgICAmJiAoKGludCl4LT5RdWVyeVByb3AoUF9GQU8pJkZBT19QT1JUQUxTMSkhPTApCiNkZWZpbmUgRkFPX0hBU19QT1JUQUxTMl9HSUZUKHgpICAoeCE9MCAmJiBxdWVyeV9vbmNlX2ludGVyYWN0aXZlKHgpIFwKICAgICYmICgoaW50KXgtPlF1ZXJ5UHJvcChQX0ZBTykmRkFPX1BPUlRBTFMyKSE9MCkKI2RlZmluZSBGQU9fSEFTX1BPUlRBTFNfR0lGVCh4KSAgIChGQU9fSEFTX1BPUlRBTFMxX0dJRlQoeCkgfHwgRkFPX0hBU19QT1JUQUxTMl9HSUZUKHgpKQojZGVmaW5lIEZBT19NQVlfVVNFX1BPUlRBTCh4LHApICAgKGludHAocCkgJiYgKChGQU9fSEFTX1BPUlRBTFMxX0dJRlQoeCkgJiYgXAogICAgICAgIG1lbWJlcihGQU9fUE9SVEFMUzFfTElTVCxwKSE9LTEgKXx8KEZBT19IQVNfUE9SVEFMUzJfR0lGVCh4KSAmJiBcCiAgICAgICAgbWVtYmVyKEZBT19QT1JUQUxTMl9MSVNULHApIT0tMSkgKSAmJiBcCiAgICAocG9pbnRlcnAoKGludCopeC0+UXVlcnlQcm9wKFBfRkFPX1BPUlRBTFMpKSBcCiAgICAgJiYgbWVtYmVyKChpbnQqKXgtPlF1ZXJ5UHJvcChQX0ZBT19QT1JUQUxTKSxwKSE9LTEpICkKI2RlZmluZSBGQU9fSEFTX1NFRVJfUE9SVEFMX0dJRlQoeCkgICAgICh4IT0wICYmIHF1ZXJ5X29uY2VfaW50ZXJhY3RpdmUoeCkgXAogICAgJiYgKChpbnQpeC0+UXVlcnlQcm9wKFBfRkFPKSZGQU9fU0VFUl9QT1JUQUwpIT0wKQojZGVmaW5lIEZBT19JU19NRU1CRVIoeCkgKHghPTAgJiYgcXVlcnlfb25jZV9pbnRlcmFjdGl2ZSh4KSBcCiAgICAmJiAoKGludCl4LT5RdWVyeVByb3AoUF9GQU8pJkZBT19NRU1CRVIpIT0wKQojZW5kaWYgLy8gX19QTEFZRVJfRkFPX0hfXwoK