LyoKICogIE5vdGVwYWQgKFdhbGxvb24gcmVzb3VyY2VzKQogKgogKiBTaSB2b3Mgdm9sb3ogYWlkZXIgYXZvdSBsaSByYXRv+3JuYWVkamUgZGVzIGxpYmVzIHByb2dyYW1lcyDoIHdhbG9uLAogKiB2b3MgcG9sb3ogc2Ny7nJlIGEgbCcgYWRyZXNzZSBlbWlsZSA8bGludXgtd2FAY2hhbmFlLmFscGhhbmV0LmNoPgogKi8KCiNkZWZpbmUgTEFOR1VBR0VfSUQgICAgICAgICAgICAgICAgICAgICBXYQojZGVmaW5lIExBTkdVQUdFX05VTUJFUiAgICAgICAgICAgICAgICAgMHg5MAojZGVmaW5lIExBTkdVQUdFX01FTlVfSVRFTSAgICAgICAgICAgICAgIiZXYWxvbiIKCgovKiBNZW51ICovCgojZGVmaW5lIE1FTlVfRklMRSAgICAgICAgICAgICAgICAgICAgICAgIiZGaXRjaO4iCiNkZWZpbmUgTUVOVV9GSUxFX05FVyAgICAgICAgICAgICAgICAgICAiJk5vdmVhLi4uIgojZGVmaW5lIE1FTlVfRklMRV9PUEVOICAgICAgICAgICAgICAgICAgIiZEcm927iIKI2RlZmluZSBNRU5VX0ZJTEVfU0FWRSAgICAgICAgICAgICAgICAgICImU2NoYXBlciIKI2RlZmluZSBNRU5VX0ZJTEVfU0FWRUFTICAgICAgICAgICAgICAgICJTY2hhcGVyIOh0IHImbG9tZXIuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX1BSSU5UICAgICAgICAgICAgICAgICAiJlJleGhlIgojZGVmaW5lIE1FTlVfRklMRV9QQUdFU0VUVVAgICAgICAgICAgICAgIkFycmFuZGptaW50IGRlbCAmUOVkamUuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX1BSSU5UU0VUVVAgICAgICAgICAgICAiJkFwb250aWFlZGplIGRlbCBzY3JpcmVjZS4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfRVhJVCAgICAgICAgICAgICAgICAgICJNb3Vzc+4gJkZv+yIKCiNkZWZpbmUgTUVOVV9FRElUICAgICAgICAgICAgICAgICAgICAgICAiJkNhbmRq7iIKI2RlZmluZSBNRU5VX0VESVRfVU5ETyAgICAgICAgICAgICAgICAgICImRGlzZulcdEN0cmwrWiIKI2RlZmluZSBNRU5VX0VESVRfQ1VUICAgICAgICAgICAgICAgICAgICJD9CZwZXJcdEN0cmwrWCIKI2RlZmluZSBNRU5VX0VESVRfQ09QWSAgICAgICAgICAgICAgICAgICImQ29wee5cdEN0cmwrQyIKI2RlZmluZSBNRU5VX0VESVRfUEFTVEUgICAgICAgICAgICAgICAgICJDJmxhcGVyXHRDdHJsK1YiCiNkZWZpbmUgTUVOVV9FRElUX0RFTEVURSAgICAgICAgICAgICAgICAiJlJhZmFjZXJcdERlbCIKI2RlZmluZSBNRU5VX0VESVRfU0VMRUNUQUxMICAgICAgICAgICAgICImVGNod2V6aSB0b3RhZndhaXQiCiNkZWZpbmUgTUVOVV9FRElUX1RJTUVEQVRFICAgICAgICAgICAgICAiJkV1cmUvRGF0ZVx0RjUiCiNkZWZpbmUgTUVOVV9FRElUX1dSQVAgICAgICAgICAgICAgICAgICAiQ/RwZXIgbGVzIHJvJnllcyIKCiNkZWZpbmUgTUVOVV9TRUFSQ0ggICAgICAgICAgICAgICAgICAgICAiQyZ3ZXLuIgojZGVmaW5lIE1FTlVfU0VBUkNIX1NFQVJDSCAgICAgICAgICAgICAgIkN3ZXLuLi4uIgojZGVmaW5lIE1FTlVfU0VBUkNIX05FWFQgICAgICAgICAgICAgICAgIiZTaPt2YW50XHRGMyIKCiNkZWZpbmUgTUVOVV9MQU5HVUFHRSAgICAgICAgICAgICAgICAgICAiJkxpbmdhZWRqZSIKCiNkZWZpbmUgTUVOVV9IRUxQICAgICAgICAgICAgICAgICAgICAgICAiJkFpZGUiCiNkZWZpbmUgTUVOVV9IRUxQX0NPTlRFTlRTICAgICAgICAgICAgICAixSZkdmlucyIKI2RlZmluZSBNRU5VX0hFTFBfU0VBUkNIICAgICAgICAgICAgICAgICJDJndlcu4uLi4iCiNkZWZpbmUgTUVOVV9IRUxQX0hFTFBfT05fSEVMUCAgICAgICAgICAiJkFpZGUgc28gbCcgQWlkZSIKCiNkZWZpbmUgTUVOVV9JTkZPICAgICAgICAgICAgICAgICAgICAgICAiJkluZm9ybeVjaW9uLi4uIgojZGVmaW5lIE1FTlVfSU5GT19MSUNFTlNFICAgICAgICAgICAgICAgIiZMaWNpbnNlIgojZGVmaW5lIE1FTlVfSU5GT19OT19XQVJSQU5UWSAgICAgICAgICAgIiZOT0xFIFdBUkFOVEVZRSIKI2RlZmluZSBNRU5VX0lORk9fQUJPVVRfV0lORSAgICAgICAgICAgICLFICZkZmFpdCBkaSBXaW5lIgoKCi8qIERpYWxvZ3MgKi8KCiNkZWZpbmUgRElBTE9HX09LICAgICAgICAgICAgICAgICAgICAgICAiSSBWYSIKI2RlZmluZSBESUFMT0dfQ0FOQ0VMICAgICAgICAgICAgICAgICAgICJSaW5vbmPuIgojZGVmaW5lIERJQUxPR19CUk9XU0UgICAgICAgICAgICAgICAgICAgIiZGb3llci4uLiIKI2RlZmluZSBESUFMT0dfSEVMUCAgICAgICAgICAgICAgICAgICAgICImQWlkZSIKCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9DQVBUSU9OICAgICAgICAiQXJpbmRqbWludCBkZWwgUOVkamUiCi8qICJUaXRlIiBuaSB2YSBu6W4gdnJhaXltaW50LCBpIGbldCBlbmUgc2Fjd2UgZCcgbWV5ZXUgW2hlYWRlcl0gKi8KI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX0hFQUQgICAgICAgICAgICImVGl0ZToiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9UQUlMICAgICAgICAgICAiJlDubm90ZToiCi8qICJtYXJkamVzIiA/IFttYXJnZXNdICovCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9NQVJHSU4gICAgICAgICAiJk1hcmRqZXM6IgojZGVmaW5lIERJQUxPR19QQUdFU0VUVVBfTEVGVCAgICAgICAgICAgIiZIaW50Y2hlOiIKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX1JJR0hUICAgICAgICAgICImRHJvZXRlOiIKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX1RPUCAgICAgICAgICAgICImQ29wZXRlOiIKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX0JPVFRPTSAgICAgICAgICImQmFzOiIKCgovKiBTdHJpbmdzICovCgojZGVmaW5lIFNUUklOR19QQUdFU0VUVVBfSEVBREVSVkFMVUUgICAgIiZuIiAgICAgICAgLyogRklYTUUgKi8KI2RlZmluZSBTVFJJTkdfUEFHRVNFVFVQX0ZPT1RFUlZBTFVFICAgICJQ5WRqZSAmcyIgICAvKiBGSVhNRSAqLwojZGVmaW5lIFNUUklOR19QQUdFU0VUVVBfTEVGVFZBTFVFICAgICAgIjIwIG1tIiAgICAgLyogRklYTUUgKi8KI2RlZmluZSBTVFJJTkdfUEFHRVNFVFVQX1JJR0hUVkFMVUUgICAgICIyMCBtbSIgICAgIC8qIEZJWE1FICovCiNkZWZpbmUgU1RSSU5HX1BBR0VTRVRVUF9UT1BWQUxVRSAgICAgICAiMjUgbW0iICAgICAvKiBGSVhNRSAqLwojZGVmaW5lIFNUUklOR19QQUdFU0VUVVBfQk9UVE9NVkFMVUUgICAgIjI1IG1tIiAgICAgLyogRklYTUUgKi8KCiNkZWZpbmUgU1RSSU5HX05PVEVQQUQgICAgICAgICAgICAgICAgICAiTm90ZXBhZCIKI2RlZmluZSBTVFJJTkdfRVJST1IgICAgICAgICAgICAgICAgICAgICJBUk9LRSIKI2RlZmluZSBTVFJJTkdfV0FSTklORyAgICAgICAgICAgICAgICAgICJBRFZFUlRJWEhNSU5UIgojZGVmaW5lIFNUUklOR19JTkZPICAgICAgICAgICAgICAgICAgICAgIkluZm9ybeVjaW9uIgoKI2RlZmluZSBTVFJJTkdfVU5USVRMRUQgICAgICAgICAgICAgICAgICIoc2luIHRpdGUpIgoKI2RlZmluZSBTVFJJTkdfQUxMX0ZJTEVTICAgICAgICAgICAgICAgICJUb3MgbGVzIGZpdGNo7nMgKCouKikiCiNkZWZpbmUgU1RSSU5HX1RFWFRfRklMRVNfVFhUICAgICAgICAgICAiRml0Y2jucyB0ZWtzZSAoKi50eHQpIgoKI2RlZmluZSBTVFJJTkdfVE9PTEFSR0UgICAgICAgICAiTGkgZml0Y2juICclcycgZXN0IHRyb3AgZ3JvcyBwb2wgbm90ZXBhZC5cbiBcCkVwbG95b3ogb24g9HRlIGFzcG91Z25ldSBkaSB0ZWtzZS4iCgojZGVmaW5lIFNUUklOR19OT1RFWFQgICAgICAgICAgICJWb3MgbicgYXZveiBy6W4gc2ljcu50LiBcClxuVGFwZXogZW5lIHNhY3dlIOh0IHJhc2F5ZXoiCgojZGVmaW5lIFNUUklOR19OT1RTQVZFRCAgICAgICAgICJMaSBmaXRjaO4gJyVzJ1xuYSBjYW5kau5cblxuIFwKRWwgdm9sb3ogc2NoYXBlciA/IgoKI2RlZmluZSBTVFJJTkdfTk9URk9VTkQgICAgICAgICAiJyVzJyBwb3V0IG7pbiBlc3NlIHRyb3bpLiIKCiNkZWZpbmUgU1RSSU5HX09VVF9PRl9NRU1PUlkgICAgIkxpIG1lbXdlcmUgZXN0IHBsaW5uZS4gXG5cCkNsb3lveiBvbiBwcm9ncmFtZSBvdSBwdXMgcG8gbW9udGVyIGxpIG1lbXdlcmUgbGliZS4iCgojaW5jbHVkZSAibm90ZXBhZC5yYyIK