LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCLCBkYW5pZWxAb21pY3Jvbi5zZQogKgogKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogKiBwcm9qZWN0LgogKgogKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCiAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAogKiBNQSAwMjExMS0xMzA3IFVTQQogKi8KCiNpZm5kZWYgX0JJT1NfSF8KI2RlZmluZSBfQklPU19IXwoKI2RlZmluZSBPRkZTX0VTICAgICAgMCAgICAgLyogMTZiaXQgKi8KI2RlZmluZSBPRkZTX0dTICAgICAgMiAgICAgLyogMTZiaXQgKi8KI2RlZmluZSBPRkZTX0RTICAgICAgNCAgICAgLyogMTZiaXQgKi8KI2RlZmluZSBPRkZTX0VESSAgICAgNiAgICAgLyogMzJiaXQgKi8KI2RlZmluZSBPRkZTX0RJICAgICAgNiAgICAgLyogbG93IDE2IGJpdHMgb2YgRURJICovCiNkZWZpbmUgT0ZGU19FU0kgICAgIDEwICAgIC8qIDMyYml0ICovCiNkZWZpbmUgT0ZGU19TSSAgICAgIDEwICAgIC8qIGxvdyAxNiBiaXRzIG9mIEVTSSAqLwojZGVmaW5lIE9GRlNfRUJQICAgICAxNCAgICAvKiAzMmJpdCAqLwojZGVmaW5lIE9GRlNfQlAgICAgICAxNCAgICAvKiBsb3cgMTYgYml0cyBvZiBFQlAgKi8KI2RlZmluZSBPRkZTX0VTUCAgICAgMTggICAgLyogMzJiaXQgKi8KI2RlZmluZSBPRkZTX1NQICAgICAgMTggICAgLyogbG93IDE2IGJpdHMgb2YgRVNQICovCiNkZWZpbmUgT0ZGU19FQlggICAgIDIyICAgIC8qIDMyYml0ICovCiNkZWZpbmUgT0ZGU19CWCAgICAgIDIyICAgIC8qIGxvdyAxNiBiaXRzIG9mIEVCWCAqLwojZGVmaW5lIE9GRlNfQkwgICAgICAyMiAgICAvKiBsb3cgIDggYml0cyBvZiBCWCAqLwojZGVmaW5lIE9GRlNfQkggICAgICAyMyAgICAvKiBoaWdoIDggYml0cyBvZiBCWCAqLwojZGVmaW5lIE9GRlNfRURYICAgICAyNiAgICAvKiAzMmJpdCAqLwojZGVmaW5lIE9GRlNfRFggICAgICAyNiAgICAvKiBsb3cgMTYgYml0cyBvZiBFQlggKi8KI2RlZmluZSBPRkZTX0RMICAgICAgMjYgICAgLyogbG93ICA4IGJpdHMgb2YgQlggKi8KI2RlZmluZSBPRkZTX0RIICAgICAgMjcgICAgLyogaGlnaCA4IGJpdHMgb2YgQlggKi8KI2RlZmluZSBPRkZTX0VDWCAgICAgMzAgICAgLyogMzJiaXQgKi8KI2RlZmluZSBPRkZTX0NYICAgICAgMzAgICAgLyogbG93IDE2IGJpdHMgb2YgRUJYICovCiNkZWZpbmUgT0ZGU19DTCAgICAgIDMwICAgIC8qIGxvdyAgOCBiaXRzIG9mIEJYICovCiNkZWZpbmUgT0ZGU19DSCAgICAgIDMxICAgIC8qIGhpZ2ggOCBiaXRzIG9mIEJYICovCiNkZWZpbmUgT0ZGU19FQVggICAgIDM0ICAgIC8qIDMyYml0ICovCiNkZWZpbmUgT0ZGU19BWCAgICAgIDM0ICAgIC8qIGxvdyAxNiBiaXRzIG9mIEVCWCAqLwojZGVmaW5lIE9GRlNfQUwgICAgICAzNCAgICAvKiBsb3cgIDggYml0cyBvZiBCWCAqLwojZGVmaW5lIE9GRlNfQUggICAgICAzNSAgICAvKiBoaWdoIDggYml0cyBvZiBCWCAqLwojZGVmaW5lIE9GRlNfVkVDVE9SICAzOCAgICAvKiAxNmJpdCAqLwojZGVmaW5lIE9GRlNfSVAgICAgICA0MCAgICAvKiAxNmJpdCAqLwojZGVmaW5lIE9GRlNfQ1MgICAgICA0MiAgICAvKiAxNmJpdCAqLwojZGVmaW5lIE9GRlNfRkxBR1MgICA0NCAgICAvKiAxNmJpdCAqLwoKI2RlZmluZSBTRUdNRU5UICAgICAgMHg0MAojZGVmaW5lIFNUQUNLCSAgICAgMHg4MDAgIAkJCS8qIHN0YWNrIGF0IDB4NDA6MHg4MDAgLT4gMHg4MDAgKi8KCi8qIHNhdmUgZ2VuZXJhbCByZWdpc3RlcnMgKi8KLyogc2F2ZSBzb21lIHNlZ21lbnRzICAgICAqLwovKiBzYXZlIGNhbGxlcnMgc3RhY2sgc2VnbWVudCAuLiAqLwovKiAuLi4gaW4gZ3MgKi8KCS8qIHNldHVwIG15IHNlZ21lbnRzICovCgkvKiBzZXR1cCBCSU9TIHN0YWNrcG9pbnRlciAqLwoKI2RlZmluZSBNQUtFX0JJT1NfU1RBQ0sgXAoJcHVzaGFsCQk7IFwKCXB1c2h3CSVkcwk7IFwKCXB1c2h3CSVncwk7IFwKCXB1c2h3CSVlcwk7IFwKCXB1c2h3CSVzcwk7IFwKCXBvcHcJJWdzCTsgXAoJbW92dwkkU0VHTUVOVCwlYXggOyBcCgltb3Z3CSVheCwlZHMJOyBcCgltb3Z3CSVheCwlZXMJOyBcCgltb3Z3CSVheCwlc3MJOyBcCgltb3Z3CSVzcCwlYnAJOyBcCgltb3Z3CSRTVEFDSywlc3AKCiNkZWZpbmUgUkVTVE9SRV9DQUxMRVJTX1NUQUNLIFwKCXB1c2h3CSVncyAgICAgOwkJCS8qIHJlc3RvcmUgY2FsbGVycyBzdGFjayBzZWdtZW50ICovIFwKCXBvcHcJJXNzICAgICA7IFwKCW1vdncJJWJwLCVzcAk7CQkJLyogcmVzdG9yZSBzdGFja3BvaW50ZXIgKi8gXAoJCVwKCXBvcHcJJWVzCTsJCQkvKiByZXN0b3JlIHNlZ21lbnQgc2VsZWN0b3JzICovIFwKCXBvcHcJJWdzICAgICA7IFwKCXBvcHcJJWRzICAgICA7IFwKCQlcCglwb3BhbAkJCQkJLyogcmVzdG9yZSBHUCByZWdpc3RlcnMgKi8KCiNlbmRpZgo=