LyoKICogSGVscCBWaWV3ZXIKICoKICogQ29weXJpZ2h0IDE5OTYgVWxyaWNoIFNjaG1pZAogKiBGcmVuY2ggbGFuZ3VhZ2UgYnkgUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BmMjIxOS5uMjkzLnoyLmZpZG9uZXQub3JnPgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgovKiBUaGlzIGZpbGUgaXMgbm90IHlldCBjb21wbGV0ZSAhISAqLwovKiBBbG9ycyBwZXV0Lep0cmUgY2VjaSBhaWRlcmEgKHNvIG1heWJlIHRoaXMgd2lsbCBoZWxwKSA6KSAqLwovKiAjaW5jbHVkZSAuLi9wcm9nbWFuL0ZyLnJjICovCgojZGVmaW5lIExBTkdVQUdFX0lEICAgICAgICAgICAgICAgICAgRnIKI2RlZmluZSBMQU5HVUFHRV9OVU1CRVIgICAgICAgICAgICAgIDQKCi8qIE1lbnUgKi8KCiNkZWZpbmUgTUVOVV9GSUxFICAgICAgICAgICAgICAgICAgICAiJkZpY2hpZXIiCiNkZWZpbmUgTUVOVV9GSUxFX09QRU4gICAgICAgICAgICAgICAiTyZ1dnJpci4uLiIKI2RlZmluZSBNRU5VX0ZJTEVfUFJJTlQgICAgICAgICAgICAgICImSW1wcmltZXIgbGEgcnVicmlxdWUiCiNkZWZpbmUgTUVOVV9GSUxFX1BSSU5URVJfU0VUVVAgICAgICAiJkNvbmZpZ3VyYXRpb24gZGUgbCdpbXByZXNzaW9uLi4uIgojZGVmaW5lIE1FTlVfRklMRV9FWElUICAgICAgICAgICAgICAgIiZRdWl0dGVyIgoKI2RlZmluZSBNRU5VX0VESVQgICAgICAgICAgICAgICAgICAgICImRWRpdGlvbiIKI2RlZmluZSBNRU5VX0VESVRfQ09QWV9ESUFMT0cgICAgICAgICImQ29waWVyLi4uIgojZGVmaW5lIE1FTlVfRURJVF9BTk5PVEFURSAgICAgICAgICAgIiZBbm5vdGF0aW9uLi4uIgoKI2RlZmluZSBNRU5VX0JPT0tNQVJLICAgICAgICAgICAgICAgICImU2lnbmV0IgojZGVmaW5lIE1FTlVfQk9PS01BUktfREVGSU5FICAgICAgICAgIiZE6WZpbmlyLi4uIgoKI2RlZmluZSBNRU5VX0hFTFAgICAgICAgICAgICAgICAgICAgICImPyIKI2RlZmluZSBNRU5VX0hFTFBfT05fSEVMUCAgICAgICAgICAgICImVXRpbGlzZXIgbCdhaWRlIgojZGVmaW5lIE1FTlVfSEVMUF9PTl9UT1AgICAgICAgICAgICAgIiZUb3Vqb3VycyB2aXNpYmxlIgojZGVmaW5lIE1FTlVfSEVMUF9JTkZPICAgICAgICAgICAgICAgIiZJbmZvLi4uIgojZGVmaW5lIE1FTlVfSEVMUF9BQk9VVF9XSU5FICAgICAgICAgIiZBIHByb3BvcyBkZSBXSU5FIgoKLyoKCUNvbmZpZ3VyYXRpb24gZGUgbCdpbXByaW1hbnRlCiovCgovKiBTdHJpbmdzICovCgojZGVmaW5lIFNUUklOR19XSU5FX0hFTFAgICAgICAgICAgICAgIkFpZGUgZGUgV0lORSIKI2RlZmluZSBTVFJJTkdfRVJST1IgICAgICAgICAgICAgICAgICJFUlJFVVIiCiNkZWZpbmUgU1RSSU5HX1dBUk5JTkcgICAgICAgICAgICAgICAiV0FSTklORyIKI2RlZmluZSBTVFJJTkdfSU5GTyAgICAgICAgICAgICAgICAgICJJbmZvcm1hdGlvbiIKI2RlZmluZSBTVFJJTkdfTk9UX0lNUExFTUVOVEVEICAgICAgICJOb24gaW1wbGVtZW506SIKI2RlZmluZSBTVFJJTkdfSExQRklMRV9FUlJPUl9zICAgICAgICJVbmUgZXJyZXVyIGVzdCBzdXJ2ZW51ZSBlbiBsaXNhbnQgbGUgZmljaGllciBkJ2FpZGUgYCVzJyIKI2RlZmluZSBTVFJJTkdfQ09OVEVOVFMgICAgICAgICAgICAgICImSW5kZXgiCiNkZWZpbmUgU1RSSU5HX1NFQVJDSCAgICAgICAgICAgICAgICAiJlJlY2hlcmNoZXIiCiNkZWZpbmUgU1RSSU5HX0JBQ0sgICAgICAgICAgICAgICAgICAiJlBy6WPpZGVudCIKI2RlZmluZSBTVFJJTkdfSElTVE9SWSAgICAgICAgICAgICAgICImSGlzdG9yaXF1ZSIKI2RlZmluZSBTVFJJTkdfQUxMX0ZJTEVTICAgICAgICAgICAgICJUb3V0IGZpY2hpZXIgKCouKikiCiNkZWZpbmUgU1RSSU5HX0hFTFBfRklMRVNfSExQICAgICAgICAiRmljaGllcnMgZCdhaWRlICgqLmhscCkiCgojaW5jbHVkZSAiWHgucmMiCg==