LyoKICogIE5vdGVwYWQgKEVuZ2xpc2ggcmVzb3VyY2VzKQogKgogKiAgQ29weXJpZ2h0IDE5OTcsOTggTWFyY2VsIEJhdXIgPG1iYXVyQGcyNi5ldGh6LmNoPgogKiAgUHJvb2ZyZWFkIDE5OTggYnkgRGF2aWQgTGVlIExhbWJlcnQgPGxhbWJlcjQ1QGVnci5tc3UuZWR1PgogKi8KCiNkZWZpbmUgTEFOR1VBR0VfSUQgICAgICAgICAgICAgICAgICAgICBTawojZGVmaW5lIExBTkdVQUdFX05VTUJFUiAgICAgICAgICAgICAgICAgMTAKI2RlZmluZSBMQU5HVUFHRV9NRU5VX0lURU0gICAgICAgICAgICAgICImU2xvdmVuc2t5IgoKCi8qIE1lbnUgKi8KCiNkZWZpbmUgTUVOVV9GSUxFICAgICAgICAgICAgICAgICAgICAgICAiJlP6Ym9yIgojZGVmaW5lIE1FTlVfRklMRV9ORVcgICAgICAgICAgICAgICAgICAgIiZOb3b9Li4uIgojZGVmaW5lIE1FTlVfRklMRV9PUEVOICAgICAgICAgICAgICAgICAgIiZPdHZvcmmdIgojZGVmaW5lIE1FTlVfRklMRV9TQVZFICAgICAgICAgICAgICAgICAgIlUmbG+eaZ0iCiNkZWZpbmUgTUVOVV9GSUxFX1NBVkVBUyAgICAgICAgICAgICAgICAiVWxvniZpnSBha28uLi4iCiNkZWZpbmUgTUVOVV9GSUxFX1BSSU5UICAgICAgICAgICAgICAgICAiJlRsYehpnSIKI2RlZmluZSBNRU5VX0ZJTEVfUEFHRVNFVFVQICAgICAgICAgICAgICImTmFzdGF2ZW5pZSB0bGHoZS4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfUFJJTlRTRVRVUCAgICAgICAgICAgICJOYXN0YXZlbmllIHRsYehpYXImbmUuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX0VYSVQgICAgICAgICAgICAgICAgICAiVSZrb27oaZ0iCgojZGVmaW5lIE1FTlVfRURJVCAgICAgICAgICAgICAgICAgICAgICAgIiZVcHJhdmmdIgojZGVmaW5lIE1FTlVfRURJVF9VTkRPICAgICAgICAgICAgICAgICAgIiZLcm9rIHNw5J1cdEN0cmwrWiIKI2RlZmluZSBNRU5VX0VESVRfQ1VUICAgICAgICAgICAgICAgICAgICJWJnlzdHJpaG76nVx0Q3RybCtYIgojZGVmaW5lIE1FTlVfRURJVF9DT1BZICAgICAgICAgICAgICAgICAgIiZLb3Dtcm92YZ1cdEN0cmwrQyIKI2RlZmluZSBNRU5VX0VESVRfUEFTVEUgICAgICAgICAgICAgICAgICJWJmxlcGmdXHRDdHJsK1YiCiNkZWZpbmUgTUVOVV9FRElUX0RFTEVURSAgICAgICAgICAgICAgICAiJlptYXphnVx0RGVsIgojZGVmaW5lIE1FTlVfRURJVF9TRUxFQ1RBTEwgICAgICAgICAgICAgIlZ5YnImYZ0gdppldGtvIgojZGVmaW5lIE1FTlVfRURJVF9USU1FREFURSAgICAgICAgICAgICAgIshhcyYvROF0dW1cdEY1IgojZGVmaW5lIE1FTlVfRURJVF9XUkFQICAgICAgICAgICAgICAgICAgIiZaYWxvbWmdIGRsaOkgcmlhZGt5IgoKI2RlZmluZSBNRU5VX1NFQVJDSCAgICAgICAgICAgICAgICAgICAgICImSL5hZGGdIgojZGVmaW5lIE1FTlVfU0VBUkNIX1NFQVJDSCAgICAgICAgICAgICAgIki+YWRhnS4uLiIKI2RlZmluZSBNRU5VX1NFQVJDSF9ORVhUICAgICAgICAgICAgICAgICImSL5hZGGdIO9hvprtXHRGMyIKCiNkZWZpbmUgTUVOVV9MQU5HVUFHRSAgICAgICAgICAgICAgICAgICAiJkphenlrIgoKI2RlZmluZSBNRU5VX0hFTFAgICAgICAgICAgICAgICAgICAgICAgICImUG9tb2MiCiNkZWZpbmUgTUVOVV9IRUxQX0NPTlRFTlRTICAgICAgICAgICAgICAiJk9ic2FoIgojZGVmaW5lIE1FTlVfSEVMUF9TRUFSQ0ggICAgICAgICAgICAgICAgIiZIvmFkYZ0uLi4iCiNkZWZpbmUgTUVOVV9IRUxQX0hFTFBfT05fSEVMUCAgICAgICAgICAiJlBvbW9jIG5hIHBvbW9jaSIKCiNkZWZpbmUgTUVOVV9JTkZPICAgICAgICAgICAgICAgICAgICAgICAiSW5mJm8uLi4iCiNkZWZpbmUgTUVOVV9JTkZPX0xJQ0VOU0UgICAgICAgICAgICAgICAiJkxpY2VuY2lhIgojZGVmaW5lIE1FTlVfSU5GT19OT19XQVJSQU5UWSAgICAgICAgICAgIiZCRVogWsFSVUtZIgojZGVmaW5lIE1FTlVfSU5GT19BQk9VVF9XSU5FICAgICAgICAgICAgIk8gJldpbmUiCgoKLyogRGlhbG9ncyAqLwoKI2RlZmluZSBESUFMT0dfT0sgICAgICAgICAgICAgICAgICAgICAgICJPSyIKI2RlZmluZSBESUFMT0dfQ0FOQ0VMICAgICAgICAgICAgICAgICAgICJacnWaaZ0iCiNkZWZpbmUgRElBTE9HX0JST1dTRSAgICAgICAgICAgICAgICAgICAiJkxpc3RvdmGdLi4uIgojZGVmaW5lIERJQUxPR19IRUxQICAgICAgICAgICAgICAgICAgICAgIiZQb21vYyIKCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9DQVBUSU9OICAgICAgICAiTmFzdGF2ZW5pZSBzdHLhbmt5IgojZGVmaW5lIERJQUxPR19QQUdFU0VUVVBfSEVBRCAgICAgICAgICAgIiZIbGF2aehrYToiCiNkZWZpbmUgRElBTE9HX1BBR0VTRVRVUF9UQUlMICAgICAgICAgICAiJlDkdGE6IgojZGVmaW5lIERJQUxPR19QQUdFU0VUVVBfTUFSR0lOICAgICAgICAgIiZPa3JhamU6IgojZGVmaW5lIERJQUxPR19QQUdFU0VUVVBfTEVGVCAgICAgICAgICAgIrxhJnb9OiIKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX1JJR0hUICAgICAgICAgICJQJnJhdv06IgojZGVmaW5lIERJQUxPR19QQUdFU0VUVVBfVE9QICAgICAgICAgICAgIkgmb3JlOiIKI2RlZmluZSBESUFMT0dfUEFHRVNFVFVQX0JPVFRPTSAgICAgICAgICJEbyZsdToiCgoKLyogU3RyaW5ncyAqLwoKI2RlZmluZSBTVFJJTkdfUEFHRVNFVFVQX0hFQURFUlZBTFVFICAgICImbiIgICAgICAgIC8qIEZJWE1FICovCiNkZWZpbmUgU1RSSU5HX1BBR0VTRVRVUF9GT09URVJWQUxVRSAgICAiU3RyYW5hICZzIiAgIC8qIEZJWE1FICovCiNkZWZpbmUgU1RSSU5HX1BBR0VTRVRVUF9MRUZUVkFMVUUgICAgICAiMjAgbW0iICAgICAvKiBGSVhNRSAqLwojZGVmaW5lIFNUUklOR19QQUdFU0VUVVBfUklHSFRWQUxVRSAgICAgIjIwIG1tIiAgICAgLyogRklYTUUgKi8KI2RlZmluZSBTVFJJTkdfUEFHRVNFVFVQX1RPUFZBTFVFICAgICAgICIyNSBtbSIgICAgIC8qIEZJWE1FICovCiNkZWZpbmUgU1RSSU5HX1BBR0VTRVRVUF9CT1RUT01WQUxVRSAgICAiMjUgbW0iICAgICAvKiBGSVhNRSAqLwoKI2RlZmluZSBTVFJJTkdfTk9URVBBRCAgICAgICAgICAgICAgICAgICJOb3RlcGFkIgojZGVmaW5lIFNUUklOR19FUlJPUiAgICAgICAgICAgICAgICAgICAgIkNIWUJBIgojZGVmaW5lIFNUUklOR19XQVJOSU5HICAgICAgICAgICAgICAgICAgIlZBUk9WQU5JRSIKI2RlZmluZSBTVFJJTkdfSU5GTyAgICAgICAgICAgICAgICAgICAgICJJbmZvcm3hY2llIgoKI2RlZmluZSBTVFJJTkdfVU5USVRMRUQgICAgICAgICAgICAgICAgICIobmVwb21lbm92YW79KSIKCiNkZWZpbmUgU1RSSU5HX0FMTF9GSUxFUyAgICAgICAgICAgICAgICAiVppldGt5IHP6Ym9yeSAoKi4qKSIKI2RlZmluZSBTVFJJTkdfVEVYVF9GSUxFU19UWFQgICAgICAgICAgICJUZXh0b3bpIHP6Ym9yeSAoKi50eHQpIgoKI2RlZmluZSBTVFJJTkdfVE9PTEFSR0UgICAgICAgICAiRmlsZSAnJXMnIGlzIHRvbyBsYXJnZSBmb3Igbm90ZXBhZC5cbiBcClBsZWFzZSB1c2UgYSBkaWZmZXJlbnQgZWRpdG9yLiIKCiNkZWZpbmUgU1RSSU5HX05PVEVYVCAgICAgICAgICAgIk5p6CBzdGUgbmVuYXDtc2FsaS4gXApcblByb3PtbSwgbmFw7Zp0ZSBuZWpha/0gdGV4dCBhIHBva/pzdGUgc2Egem5vdnUuIgoKLyogRklYTUUgKi8KCiNkZWZpbmUgU1RSSU5HX0RPRVNOT1RFWElTVCAgICAgIkZpbGUgJyVzJ1xuZG9lcyBub3QgZXhpc3RcblxuIFwKRG8geW91IHdhbnQgdG8gY3JlYXRlIGEgbmV3IGZpbGUgPyIKCiNkZWZpbmUgU1RSSU5HX05PVFNBVkVEICAgICAgICAgIlP6Ym9yICclcydcbmJvbCB6bWVuZW79blxuIFwKUHJhamV0ZSBzaSB1bG+eaZ0gem1lbnkgPyIKCiNkZWZpbmUgU1RSSU5HX05PVEZPVU5EICAgICAgICAgIiclcycgbmVt9J5lIGJ5nSBu4WpkZW79LiIKCiNkZWZpbmUgU1RSSU5HX09VVF9PRl9NRU1PUlkgICAgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGNvbXBsZXRlIHRoaXMgXAp0YXNrLiBcbkNsb3NlIG9uZSBvciBtb3JlIGFwcGxpY2F0aW9ucyB0byBpbmNyZWFzZSB0aGUgYW1vdW50IG9mIFxuZnJlZSBcCm1lbW9yeS4iCgojaW5jbHVkZSAibm90ZXBhZC5yYyIK