LyogCiAqIFByb2dyYW0gTWFuYWdlcgogKgogKiBDb3B5cmlnaHQgMjAwMCBWYXNpbHkgVm9sY2hlbmtvCiAqLwovKiBUaGVyZSBpcyBhIGRpZmZpY3VsdHkgdG8gdXNlIGNvcnJlY3QgY29kZXBhZ2UgZm9yIG1lc3NhZ2VzLCBtZW51cyBldGMuLi4gU28gSSBoYXZlIGFkZGVkIHRoZSBmb2xsb3dpbmcgbGluZS4gCk1heSBiZSwgc3VjaCBsaW5lIHNob3VsZCBiZSBwcmVzZW50IGluIEVWRVJZID8/LnJjIGZpbGUsIGJ1dC4uLiBJIGNhbid0IHRlc3QgYW55IGxhbmd1YWdlIGV4Y2VwdCBSdXNzaWFuIGFuZCBFbmdsaXNoIDotKSAKU28sIGV2ZXJ5b25lLCB0ZXN0IHlvdXIgbmF0aXZlIGxhbmd1YWdlcyEhIQoqLwpMQU5HVUFHRSBMQU5HX1JVU1NJQU4sIFNVQkxBTkdfREVGQVVMVAojZGVmaW5lIExBTkdVQUdFX0lEICAgICAgICAgICAgICAgICAgUnUKI2RlZmluZSBMQU5HVUFHRV9OVU1CRVIgICAgICAgICAgICAgIDgKI2RlZmluZSBMQU5HVUFHRV9NRU5VX0lURU0gICAgICAgICAgICIm0PPx8ero6SIKCi8qIE1lbnUgKi8KCiNkZWZpbmUgTUVOVV9GSUxFICAgICAgICAgICAgICAgICAgICAiJtTg6esiCiNkZWZpbmUgTUVOVV9GSUxFX05FVyAgICAgICAgICAgICAgICAiJtHu5+Tg8vwuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX09QRU4gICAgICAgICAgICAgICAiziby6vD78vxcdEVudGVyIgojZGVmaW5lIE1FTlVfRklMRV9NT1ZFICAgICAgICAgICAgICAgIibP5fDl7OXx8ujy/C4uLlx0RjciCiNkZWZpbmUgTUVOVV9GSUxFX0NPUFkgICAgICAgICAgICAgICAiJsru7+jw7uLg8vwuLi5cdEY4IgojZGVmaW5lIE1FTlVfRklMRV9ERUxFVEUgICAgICAgICAgICAgIibT5ODr6PL8XHRFbnRmIgojZGVmaW5lIE1FTlVfRklMRV9BVFRSSUJVVEVTICAgICAgICAgIibA8vDo4fPy+y4uLlx0QWx0K0VudGVyIgojZGVmaW5lIE1FTlVfRklMRV9FWEVDVVRFICAgICAgICAgICAgIibH4O/z8fLo8vwuLi4iCiNkZWZpbmUgTUVOVV9GSUxFX0VYSVQgICAgICAgICAgICAgICAiwvsm9e7kIOjnIFdpbmRvd3MuLi4iCgojZGVmaW5lIE1FTlVfT1BUSU9OUyAgICAgICAgICAgICAgICAgIibP4PDg7OXy8PsiCiNkZWZpbmUgTUVOVV9PUFRJT05TX0FVVE9fQVJSQU5HRSAgICAiJsDi8u7z7+7w/+Tu9+Xt6OUiCiNkZWZpbmUgTUVOVV9PUFRJT05TX01JTl9PTl9SVU4gICAgICAiJtHi5fDt8/L8IO/w6CDn4O/z8erlIgojZGVmaW5lIE1FTlVfT1BUSU9OU19TQVZFX1NFVFRJTkdTICAgIibR7vXw4O3/8vwg7eDx8vDu6eroIO/w6CDi+/Xu5OUiCgojZGVmaW5lIE1FTlVfV0lORE9XUyAgICAgICAgICAgICAgICAgIibO6u3gIgojZGVmaW5lIE1FTlVfV0lORE9XU19PVkVSTEFQICAgICAgICAgIibK4PHq4ORcdFNoaWZ0K0Y1IgojZGVmaW5lIE1FTlVfV0lORE9XU19TSURFX0JZX1NJREUgICAgIibM7ufg6OrgXHRTaGlmdCtGNCIKI2RlZmluZSBNRU5VX1dJTkRPV1NfQVJSQU5HRSAgICAgICAgICIm0+/u8P/k7vfo8vwg7/DoIOL79e7k5SIKCiNkZWZpbmUgTUVOVV9MQU5HVUFHRSAgICAgICAgICAgICAgICAiJt/n++oiCgojZGVmaW5lIE1FTlVfSEVMUCAgICAgICAgICAgICAgICAgICAgIibR7/Dg4urgIgojZGVmaW5lIE1FTlVfSEVMUF9DT05URU5UUyAgICAgICAgICAgIibR7uTl8Obg7ejlIgojZGVmaW5lIE1FTlVfSEVMUF9TRUFSQ0ggICAgICAgICAgICAgIibP7ujx6i4uLiIKI2RlZmluZSBNRU5VX0hFTFBfSEVMUF9PTl9IRUxQICAgICAgICImw+jv5fDx7/Dg4urgIgojZGVmaW5lIE1FTlVfSEVMUF9UVVRPUklBTCAgICAgICAgICAgIibT9+Xh7ejqIgoKI2RlZmluZSBNRU5VX0lORk8gICAgICAgICAgICAgICAgICAgICIm0eLl5OXt6P8uLi4iCiNkZWZpbmUgTUVOVV9JTkZPX0xJQ0VOU0UgICAgICAgICAgICAiJsvo9uXt5+j/IgojZGVmaW5lIE1FTlVfSU5GT19OT19XQVJSQU5UWSAgICAgICAgIibN6Org6u7pIMPA0MDN0sjIIgojZGVmaW5lIE1FTlVfSU5GT19BQk9VVF9XSU5FICAgICAgICAgIibOIFdJTkUiCgovKiBEaWFsb2dzICovCgojZGVmaW5lIERJQUxPR19PSyAgICAgICAgICAgICAgICAgICAgIk9LIgojZGVmaW5lIERJQUxPR19DQU5DRUwgICAgICAgICAgICAgICAgIs7y7OXt4CIKI2RlZmluZSBESUFMT0dfQlJPV1NFICAgICAgICAgICAgICAgICImzuHn7vAiCiNkZWZpbmUgRElBTE9HX0hFTFAgICAgICAgICAgICAgICAgICAiJtHv8ODi6uAiCgojZGVmaW5lIERJQUxPR19ORVdfQ0FQVElPTiAgICAgICAgICAgItHu5+Tg8vwg7/Du4/Dg7Ozt++kg7uH65eryIgojZGVmaW5lIERJQUxPR19ORVdfTkVXICAgICAgICAgICAgICAgItHu5+Tg8vwiCiNkZWZpbmUgRElBTE9HX05FV19HUk9VUCAgICAgICAgICAgICAiJsPw8+/v8yDv8O7j8ODs7CIKI2RlZmluZSBESUFMT0dfTkVXX1BST0dSQU0gICAgICAgICAgICImz/Du4/Dg7Ozt++kg/evl7OXt8iIKCiNkZWZpbmUgRElBTE9HX01PVkVfQ0FQVElPTiAgICAgICAgICAiz+Xw5ezl8fLo8vwg7/Du4/Dg7OzzIgojZGVmaW5lIERJQUxPR19NT1ZFX1BST0dSQU0gICAgICAgICAgIs/l8OXs5fHy6PL8IO/w7uPw4Ozs8zoiCiNkZWZpbmUgRElBTE9HX01PVkVfRlJPTV9HUk9VUCAgICAgICAiyOcg4/Dz7+/7OiIKI2RlZmluZSBESUFMT0dfTU9WRV9UT19HUk9VUCAgICAgICAgICImwiDj8PPv7/M6IgoKI2RlZmluZSBESUFMT0dfQ09QWV9DQVBUSU9OICAgICAgICAgICLK7u/o8O7i4PL8IO/w7uPw4Ozs8yIKI2RlZmluZSBESUFMT0dfQ09QWV9QUk9HUkFNICAgICAgICAgICLK7u/o8O7i4PL8IO/w7uPw4Ozs8zoiCiNkZWZpbmUgRElBTE9HX0NPUFlfRlJPTV9HUk9VUCAgICAgICBESUFMT0dfTU9WRV9GUk9NX0dST1VQCiNkZWZpbmUgRElBTE9HX0NPUFlfVE9fR1JPVVAgICAgICAgICBESUFMT0dfTU9WRV9UT19HUk9VUAoKI2RlZmluZSBESUFMT0dfR1JPVVBfQ0FQVElPTiAgICAgICAgICLA8vDo4fPy+yDv8O7j8ODs7O3u6SDj8PPv7/siCiNkZWZpbmUgRElBTE9HX0dST1VQX0RFU0NSSVBUSU9OICAgICAiJs7v6PHg7ejlOiIKI2RlZmluZSBESUFMT0dfR1JPVVBfRklMRSAgICAgICAgICAgICIm1ODp6yDj8PPv7/s6IgoKI2RlZmluZSBESUFMT0dfUFJPR1JBTV9DQVBUSU9OICAgICAgICLA8vLw6OHz8vsg7/Du4/Dg7Oz7IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0RFU0NSSVBUSU9OICAgRElBTE9HX0dST1VQX0RFU0NSSVBUSU9OCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fQ09NTUFORF9MSU5FICAiJsru7ODt5O3g/yDx8vDu6uA6IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0RJUkVDVE9SWSAgICAgIibQ4OHu9+jpIOrg8uDr7uM6IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0hPVF9LRVkgICAgICAgIibK7uzh6O3g9uj/IOrr4OLo+DoiCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fU1lNQk9MICAgICAgICAiwiDi6OTlICbH7eD36uAiCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fT1RIRVJfU1lNQk9MICAiJsTw8+Pu6SDn7eD37uouLi4iCgojZGVmaW5lIERJQUxPR19TWU1CT0xfQ0FQVElPTiAgICAgICAgIsL74fDg8vwg5+3g9+7qIgojZGVmaW5lIERJQUxPR19TWU1CT0xfRklMRSAgICAgICAgICAgIibI7P8g9ODp6+A6IgojZGVmaW5lIERJQUxPR19TWU1CT0xfQ1VSUkVOVCAgICAgICAgIibS5erz+ejpIOft4Pfu6joiCgojZGVmaW5lIERJQUxPR19FWEVDVVRFX0NBUFRJT04gICAgICAgIsfg7/Px8ujy/CDv8O7j8ODs7PMiCiNkZWZpbmUgRElBTE9HX0VYRUNVVEVfQ09NTUFORF9MSU5FICBESUFMT0dfUFJPR1JBTV9DT01NQU5EX0xJTkUKI2RlZmluZSBESUFMT0dfRVhFQ1VURV9TWU1CT0wgICAgICAgIERJQUxPR19QUk9HUkFNX1NZTUJPTAoKLyogU3RyaW5ncyAqLwoKI2RlZmluZSBTVFJJTkdfUFJPR1JBTV9NQU5BR0VSICAgICAgICAgICAgIsTo8e/l8vfl8CDv8O7j8ODs7CIKI2RlZmluZSBTVFJJTkdfRVJST1IgICAgICAgICAgICAgICAgICAgICAgIs7YyMHKwCIKI2RlZmluZSBTVFJJTkdfV0FSTklORyAgICAgICAgICAgICAgICAgICAgIs/QxcTTz9DFxsTFzcjFIgojZGVmaW5lIFNUUklOR19JTkZPICAgICAgICAgICAgICAgICAgICAgICAi0eLl5OXt6P8iCiNkZWZpbmUgU1RSSU5HX0RFTEVURSAgICAgICAgICAgICAgICAgICAgICLT5ODr6PL8IgojZGVmaW5lIFNUUklOR19ERUxFVEVfR1JPVVBfcyAgICAgICAgICAgICAi0+Tg6+jy/CDj8PPv7/MgYCVzJyA/IgojZGVmaW5lIFNUUklOR19ERUxFVEVfUFJPR1JBTV9zICAgICAgICAgICAi0+Tg6+jy/CDv8O7j8ODs7PMgYCVzJyA/IgojZGVmaW5lIFNUUklOR19OT1RfSU1QTEVNRU5URUQgICAgICAgICAgICAixfm4IO3lIPDl4Ovo5+7i4O3uIgojZGVmaW5lIFNUUklOR19GSUxFX1JFQURfRVJST1JfcyAgICAgICAgICAizvjo4ergIPfy5e3o/yBgJXMnICIKI2RlZmluZSBTVFJJTkdfRklMRV9XUklURV9FUlJPUl9zICAgICAgICAgIs746OHq4CDn4O/o8eggYCVzJyAiCgojZGVmaW5lIFNUUklOR19HUlBGSUxFX1JFQURfRVJST1JfcyAgICAgICAiXNTg6esg4/Dz7+/7IGAlcycg7eUg7O7m5fIg4fvy/CDu8urw+/IuXG5czeDk7iDr6CDiIPHr5eTz/vno6SDw4Ocg7/vy4PL88f8g/fLuIPHk5evg8vw/IgoKI2RlZmluZSBTVFJJTkdfT1VUX09GX01FTU9SWSAgICAgICAgICAgICAgIszg6+4g7+Ds//LoIgojZGVmaW5lIFNUUklOR19XSU5IRUxQX0VSUk9SICAgICAgICAgICAgICAi0e/w4OLq4CDt5SDk7vHy8+/t4CIKI2RlZmluZSBTVFJJTkdfVU5LTk9XTl9GRUFUVVJFX3MgICAgICAgICAgIs3l6Ofi5fHy7e7lIPHi7unx8uLuICVzIgojZGVmaW5lIFNUUklOR19GSUxFX05PVF9PVkVSV1JJVFRFTl9zICAgICAi1ODp6yBgJXMnIPHz+eXx8uLz5fIuIM7tIO3lIOH76yDv5fDl5+Dv6PHg7S4iCiNkZWZpbmUgU1RSSU5HX1NBVkVfR1JPVVBfQVNfcyAgICAgICAgICAgICLD8PPv7+Ag8e718ODt/+Xy8f8g7+7kIOjs5e3l7CBgJXMnIOLuIOjn4eXm4O3o5SDv5fDl5+Dv6PHoIO7w6OPo7eDr4CIKCiNkZWZpbmUgU1RSSU5HX05PX0hPVF9LRVkgICAgICAgICAgICAgICAgICLN5fIiCgojZGVmaW5lIFNUUklOR19BTExfRklMRVMgICAgICAgICAgICAgICAgICAiwvHlIPTg6ev7ICgqLiopIgojZGVmaW5lIFNUUklOR19QUk9HUkFNUyAgICAgICAgICAgICAgICAgICAiz/Du4/Dg7Oz7IgojZGVmaW5lIFNUUklOR19MSUJSQVJJRVNfRExMICAgICAgICAgICAgICAiwejh6+ju8uXq6CAoKi5kbGwpIgojZGVmaW5lIFNUUklOR19TWU1CT0xfRklMRVMgICAgICAgICAgICAgICAi1ODp6/sg5+3g9+ru4iIKLyogV2hvIGhhcyB3cml0dGVuICdTeW1ib2wgZmlsZXMnPyBUaGlzIGhhcyBkb3VibGUgbWVhbmluZyEhISovCiNkZWZpbmUgU1RSSU5HX1NZTUJPTFNfSUNPICAgICAgICAgICAgICAgICLH7eD36uggKCouaWNvKSIKCiNpbmNsdWRlICJYeC5yYyIK