LyoKICogVG9wIGxldmVsIHJlc291cmNlIGZpbGUgZm9yIE1TLVJMRQogKgogKiBDb3B5cmlnaHQgMjAwMiBNaWNoYWVsIEf8bm5ld2lnCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJ3aW5kZWYuaCIKI2luY2x1ZGUgIndpbmJhc2UuaCIKCiNpbmNsdWRlICJtc3JsZV9wcml2YXRlLmgiCgovKgogKiBFdmVyeXRoaW5nIHNwZWNpZmljIHRvIGFueSBsYW5ndWFnZSBnb2VzCiAqIGluIG9uZSBvZiB0aGUgc3BlY2lmaWMgZmlsZXMuCiAqIE5vdGUgdGhhdCB5b3UgY2FuIGFuZCBtYXkgb3ZlcnJpZGUgcmVzb3VyY2VzCiAqIHdoaWNoIGFsc28gaGF2ZSBhIG5ldXRyYWwgdmVyc2lvbi4gVGhpcyBpcyB0bwogKiBnZXQgbG9jYWxpemVkIGJpdG1hcHMgZm9yIGV4YW1wbGUuCiAqLwoKI2luY2x1ZGUgIm1zcmxlX0JnLnJjIgojaW5jbHVkZSAibXNybGVfQ3MucmMiCiNpbmNsdWRlICJtc3JsZV9EZS5yYyIKI2luY2x1ZGUgIm1zcmxlX0VuLnJjIgojaW5jbHVkZSAibXNybGVfRXMucmMiCiNpbmNsdWRlICJtc3JsZV9Gci5yYyIKI2luY2x1ZGUgIm1zcmxlX0h1LnJjIgojaW5jbHVkZSAibXNybGVfSXQucmMiCiNpbmNsdWRlICJtc3JsZV9KYS5yYyIKI2luY2x1ZGUgIm1zcmxlX0tvLnJjIgojaW5jbHVkZSAibXNybGVfTmwucmMiCiNpbmNsdWRlICJtc3JsZV9Oby5yYyIKI2luY2x1ZGUgIm1zcmxlX1BsLnJjIgojaW5jbHVkZSAibXNybGVfUHQucmMiCiNpbmNsdWRlICJtc3JsZV9SdS5yYyIKI2luY2x1ZGUgIm1zcmxlX1NpLnJjIgojaW5jbHVkZSAibXNybGVfVHIucmMiCg==