LyoKICogUHJvZ3JhbSBNYW5hZ2VyCiAqCiAqIENvcHlyaWdodCAxOTk3IEhlbnJpayBPbHNlbiA8aGVucmlrQGlhZXN0ZS5kaz4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI2RlZmluZSBMQU5HVUFHRV9JRCAgICAgICAgICAgICAgICAgIERhCiNkZWZpbmUgTEFOR1VBR0VfTlVNQkVSICAgICAgICAgICAgICA2CiNkZWZpbmUgTEFOR1VBR0VfTUVOVV9JVEVNICAgICAgICAgICAiJkRhbnNrIgoKLyogTWVudSAqLwoKI2RlZmluZSBNRU5VX0ZJTEUgICAgICAgICAgICAgICAgICAgICImRmlsZXIiCiNkZWZpbmUgTUVOVV9GSUxFX05FVyAgICAgICAgICAgICAgICAiJk55dCBwcm9ncmFtb2JqZWt0Li4uIgojZGVmaW5lIE1FTlVfRklMRV9PUEVOICAgICAgICAgICAgICAgIsUmYm5cdEVudGVyIgojZGVmaW5lIE1FTlVfRklMRV9NT1ZFICAgICAgICAgICAgICAgIiZGbHl0Li4uXHRGNyIKI2RlZmluZSBNRU5VX0ZJTEVfQ09QWSAgICAgICAgICAgICAgICJLJm9waWVyLi4uXHRGOCIKI2RlZmluZSBNRU5VX0ZJTEVfREVMRVRFICAgICAgICAgICAgICImU2xldFx0RGVsIgojZGVmaW5lIE1FTlVfRklMRV9BVFRSSUJVVEVTICAgICAgICAgIiZQcm9ncmFtcGFyYW1ldHJlLi4uXklBbHQrRW50ZXIiCiNkZWZpbmUgTUVOVV9GSUxFX0VYRUNVVEUgICAgICAgICAgICAiJkv4ci4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfRVhJVCAgICAgICAgICAgICAgICImQWZzbHV0IFdpbmRvd3MuLi4iCgojZGVmaW5lIE1FTlVfT1BUSU9OUyAgICAgICAgICAgICAgICAgIiZJbmRzdGlsbGluZ2VyIgojZGVmaW5lIE1FTlVfT1BUSU9OU19BVVRPX0FSUkFOR0UgICAgIiZBcnJhbmdlciBhdXRvbWF0aXNrIgojZGVmaW5lIE1FTlVfT1BUSU9OU19NSU5fT05fUlVOICAgICAgIiZNaW5pbWVyIHZlZCBicnVnIgojZGVmaW5lIE1FTlVfT1BUSU9OU19TQVZFX1NFVFRJTkdTICAgIiZHZW0gaW5kc3RpbGxpbmdlciB2ZWQgYWZzbHV0bmluZyIKCiNkZWZpbmUgTUVOVV9XSU5ET1dTICAgICAgICAgICAgICAgICAiJlZpbmR1ZSIKI2RlZmluZSBNRU5VX1dJTkRPV1NfT1ZFUkxBUCAgICAgICAgICImT3ZlcmxhcHBldFx0U2tpZnQrRjUiCiNkZWZpbmUgTUVOVV9XSU5ET1dTX1NJREVfQllfU0lERSAgICAiJlNpZGUgb20gc2lkZVx0U2tpZnQrRjQiCiNkZWZpbmUgTUVOVV9XSU5ET1dTX0FSUkFOR0UgICAgICAgICAiJkFycmFuZ2VyIGlrb25lciIKCiNkZWZpbmUgTUVOVV9MQU5HVUFHRSAgICAgICAgICAgICAgICAiJlNwcm9nIgoKI2RlZmluZSBNRU5VX0hFTFAgICAgICAgICAgICAgICAgICAgICImSGrmbHAiCiNkZWZpbmUgTUVOVV9IRUxQX0NPTlRFTlRTICAgICAgICAgICAiJkluZGhvbGQiCiNkZWZpbmUgTUVOVV9IRUxQX1NFQVJDSCAgICAgICAgICAgICAiJlP4ZyBlZnRlciBoauZscCBvbS4uLiIKI2RlZmluZSBNRU5VX0hFTFBfSEVMUF9PTl9IRUxQICAgICAgICImQnJ1ZyBhZiBIauZscCIKI2RlZmluZSBNRU5VX0hFTFBfVFVUT1JJQUwgICAgICAgICAgICImV2luZG93cyBTZWx2c3R1ZGl1bSIKCiNkZWZpbmUgTUVOVV9JTkZPICAgICAgICAgICAgICAgICAgICAiJk9tIFByb2dyYW1zdHlyaW5nLi4uIgojZGVmaW5lIE1FTlVfSU5GT19MSUNFTlNFICAgICAgICAgICAgIiZMaWNlbnMiCiNkZWZpbmUgTUVOVV9JTkZPX05PX1dBUlJBTlRZICAgICAgICAiJk5PIFdBUlJBTlRZIgojZGVmaW5lIE1FTlVfSU5GT19BQk9VVF9XSU5FICAgICAgICAgIiZPbSBXSU5FIgoKLyogRGlhbG9ncyAqLwoKI2RlZmluZSBESUFMT0dfT0sgICAgICAgICAgICAgICAgICAgICJPSyIKI2RlZmluZSBESUFMT0dfQ0FOQ0VMICAgICAgICAgICAgICAgICJBbm51bGxlciIKI2RlZmluZSBESUFMT0dfQlJPV1NFICAgICAgICAgICAgICAgICImR2VubmVtc2UuLi4iCiNkZWZpbmUgRElBTE9HX0hFTFAgICAgICAgICAgICAgICAgICAiJkhq5mxwIgoKI2RlZmluZSBESUFMT0dfTkVXX0NBUFRJT04gICAgICAgICAgICJOeXQgcHJvZ3JhbW9iamVjdCIKI2RlZmluZSBESUFMT0dfTkVXX05FVyAgICAgICAgICAgICAgICJOeXQiCiNkZWZpbmUgRElBTE9HX05FV19HUk9VUCAgICAgICAgICAgICAiUHJvZ3JhbSAmZ3J1cHBlIgojZGVmaW5lIERJQUxPR19ORVdfUFJPR1JBTSAgICAgICAgICAgIiZQcm9ncmFtIgoKI2RlZmluZSBESUFMT0dfTU9WRV9DQVBUSU9OICAgICAgICAgICJGbHl0IHByb2dyYW1lbGVtZW50IgojZGVmaW5lIERJQUxPR19NT1ZFX1BST0dSQU0gICAgICAgICAgIkZseXQgZWxlbWVudGV0OiIKI2RlZmluZSBESUFMT0dfTU9WRV9GUk9NX0dST1VQICAgICAgICJGcmEgZ3J1cHBlbjoiCiNkZWZpbmUgRElBTE9HX01PVkVfVE9fR1JPVVAgICAgICAgICAiJlRpbCBncnVwcGVuOiIKCiNkZWZpbmUgRElBTE9HX0NPUFlfQ0FQVElPTiAgICAgICAgICAiS29waWVyIHByb2dyYW1lbGVtZW50IgojZGVmaW5lIERJQUxPR19DT1BZX1BST0dSQU0gICAgICAgICAgIktvcGllciBlbGVtZW50ZXQ6IgojZGVmaW5lIERJQUxPR19DT1BZX0ZST01fR1JPVVAgICAgICAgRElBTE9HX01PVkVfRlJPTV9HUk9VUAojZGVmaW5lIERJQUxPR19DT1BZX1RPX0dST1VQICAgICAgICAgRElBTE9HX01PVkVfVE9fR1JPVVAKCiNkZWZpbmUgRElBTE9HX0dST1VQX0NBUFRJT04gICAgICAgICAiR3J1cHBlcGFyYW1ldHJlIgojZGVmaW5lIERJQUxPR19HUk9VUF9ERVNDUklQVElPTiAgICAgIiZCZXNrcml2ZWxzZToiCiNkZWZpbmUgRElBTE9HX0dST1VQX0ZJTEUgICAgICAgICAgICAiJkdydXBwZWZpbDoiCgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0NBUFRJT04gICAgICAgIlByb2dyYW1wYXJhbWV0cmUiCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fREVTQ1JJUFRJT04gICBESUFMT0dfR1JPVVBfREVTQ1JJUFRJT04KI2RlZmluZSBESUFMT0dfUFJPR1JBTV9DT01NQU5EX0xJTkUgICImS29tbWFuZG9saW5qZToiCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fRElSRUNUT1JZICAgICAiJkFyYmVqZHNiaWJsaW90ZWs6IgojZGVmaW5lIERJQUxPR19QUk9HUkFNX0hPVF9LRVkgICAgICAgIkdlbnZlanMmdGFzdDoiCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fU1lNQk9MICAgICAgICAiS/hyICZtaW5pbWVyZXQiCiNkZWZpbmUgRElBTE9HX1BST0dSQU1fT1RIRVJfU1lNQk9MICAiU2tpZnQgJmlrb24uLi4iCgojZGVmaW5lIERJQUxPR19TWU1CT0xfQ0FQVElPTiAgICAgICAgIlNraWZ0IGlrb24iCiNkZWZpbmUgRElBTE9HX1NZTUJPTF9GSUxFICAgICAgICAgICAiJkZpbG5hdm46IgojZGVmaW5lIERJQUxPR19TWU1CT0xfQ1VSUkVOVCAgICAgICAgIiZOdXbmcmVuZGUgaWtvbjoiCgojZGVmaW5lIERJQUxPR19FWEVDVVRFX0NBUFRJT04gICAgICAgIkv4ciIKI2RlZmluZSBESUFMT0dfRVhFQ1VURV9DT01NQU5EX0xJTkUgIERJQUxPR19QUk9HUkFNX0NPTU1BTkRfTElORQojZGVmaW5lIERJQUxPR19FWEVDVVRFX1NZTUJPTCAgICAgICAgRElBTE9HX1BST0dSQU1fU1lNQk9MCgovKiBTdHJpbmdzICovCgojZGVmaW5lIFNUUklOR19QUk9HUkFNX01BTkFHRVIgICAgICAgICAgICAiUHJvZ3JhbXN0eXJpbmciCiNkZWZpbmUgU1RSSU5HX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICJGRUpMIgojZGVmaW5lIFNUUklOR19XQVJOSU5HICAgICAgICAgICAgICAgICAgICAiQURWQVJTRUwiCiNkZWZpbmUgU1RSSU5HX0lORk8gICAgICAgICAgICAgICAgICAgICAgICJJbmZvcm1hdGlvbiIKI2RlZmluZSBTVFJJTkdfREVMRVRFICAgICAgICAgICAgICAgICAgICAgIlNsZXQiCiNkZWZpbmUgU1RSSU5HX0RFTEVURV9HUk9VUF9zICAgICAgICAgICAgICJTbGV0IGdydXBwZSBgJXMnID8iCiNkZWZpbmUgU1RSSU5HX0RFTEVURV9QUk9HUkFNX3MgICAgICAgICAgICJTbGV0IHByb2dyYW0gYCVzJyA/IgojZGVmaW5lIFNUUklOR19OT1RfSU1QTEVNRU5URUQgICAgICAgICAgICAiSWtrZSBpbXBsZW1lbnRlcmV0LiIKI2RlZmluZSBTVFJJTkdfRklMRV9SRUFEX0VSUk9SX3MgICAgICAgICAgIkthbiBpa2tlIGzmc2UgZmlsZW4gYCVzJyIKI2RlZmluZSBTVFJJTkdfRklMRV9XUklURV9FUlJPUl9zICAgICAgICAgIkthbiBpa2tlIHNrcml2ZSBmaWxlbiBgJXMnIgoKI2RlZmluZSBTVFJJTkdfR1JQRklMRV9SRUFEX0VSUk9SX3MgICAgICAgIlwKS2FuIGlra2Ug5WJuZSBncnVwcGVmaWxlbiAnJXMnLlxuXArYbnNrZXIgZHUsIGF0IFByb2dyYW1zdHlyaW5nIGkgZnJlbXRpZGVuIHN0YWRpZyBza2FsIHBy+HZlIGF0IGluZGzmc2UgZGVuPyIKCiNkZWZpbmUgU1RSSU5HX09VVF9PRl9NRU1PUlkgICAgICAgICAgICAgICJcCkRlciBlciBpa2tlIG5vayBodWtvbW1lbHNlIHRpbCBhdCB1ZGb4cmUgZGVubmUgb3BlcmF0aW9uLlxuXApBZnNsdXQgZXQgZWxsZXIgZmxlcmUgYWt0aXZlIHByb2dyYW1tZXIgZm9yIGF0IGZyaWf4cmUgaHVrb21tZWxzZSwgXApvZyBwcvh2IHPlIGlnZW4uIgoKI2RlZmluZSBTVFJJTkdfV0lOSEVMUF9FUlJPUiAgICAgICAgICAgICAgIlwKS2FuIGlra2UgdmlzZSBpbmZvcm1hdGlvbiBmcmEgSGrmbHAuIgoKI2RlZmluZSBTVFJJTkdfVU5LTk9XTl9GRUFUVVJFX3MgICAgICAgICAgIlVrZW5kdCBpbmRob2xkIGkgJXMiCiNkZWZpbmUgU1RSSU5HX0ZJTEVfTk9UX09WRVJXUklUVEVOX3MgICAgICJcCkZpbGVuIGAlcycgZmluZGVzLiBJa2tlIG92ZXJza3JldmV0LiIKCiNkZWZpbmUgU1RSSU5HX1NBVkVfR1JPVVBfQVNfcyAgICAgICAgICAgICJcCkdlbSBncnVwcGVuIHNvbSBgJXMnIGZvciBhdCB1bmRn5SBhdCBvdmVyc2tyaXZlIG9yaWdpbmFsZSBmaWxlciIKCiNkZWZpbmUgU1RSSU5HX05PX0hPVF9LRVkgICAgICAgICAgICAgICAgICJJbmdlbiIKCiNkZWZpbmUgU1RSSU5HX0FMTF9GSUxFUyAgICAgICAgICAgICAgICAgICJBbGxlIGZpbGVyICgqLiopIgojZGVmaW5lIFNUUklOR19QUk9HUkFNUyAgICAgICAgICAgICAgICAgICAiUHJvZ3JhbW1lciIKI2RlZmluZSBTVFJJTkdfTElCUkFSSUVTX0RMTCAgICAgICAgICAgICAgIkJpYmxpb3Rla3NmaWxlciAoKi5kbGwpIgojZGVmaW5lIFNUUklOR19TWU1CT0xfRklMRVMgICAgICAgICAgICAgICAiSWtvbmZpbGVyIgojZGVmaW5lIFNUUklOR19TWU1CT0xTX0lDTyAgICAgICAgICAgICAgICAiSWtvbmVyICgqLmljbykiCgojaW5jbHVkZSAiWHgucmMiCg==