ZGlmZiAtLWdpdCBhL0FOTk9VTkNFIGIvQU5OT1VOQ0UKaW5kZXggNDBlZmNiZi4uYzk3ZTkzZiAxMDA2NDQKLS0tIGEvQU5OT1VOQ0UKKysrIGIvQU5OT1VOQ0UKQEAgLTEsMTggKzEsMjAgQEAKIAotTGlicG5nIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCitMaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKIAogVGhpcyBpcyBhIHB1YmxpYyByZWxlYXNlIG9mIGxpYnBuZywgaW50ZW5kZWQgZm9yIHVzZSBpbiBwcm9kdWN0aW9uIGNvZGVzLgogCi1DaGFuZ2VzIHNpbmNlIHRoZSBsYXN0IHB1YmxpYyByZWxlYXNlICgxLjAuMTApOgorQ2hhbmdlcyBzaW5jZSB0aGUgbGFzdCBwdWJsaWMgcmVsZWFzZSAoMS4wLjExKToKIAotICBBZGRlZCB0eXBlIGNhc3RzIG9uIHNldmVyYWwgcG5nX21hbGxvYygpIGNhbGxzIChEaW1pdHJpIFBhcGFkYXBvdWxvcykuCi0gIFJlbW92ZWQgYSBuby1sb25nZXIgbmVlZGVkIEFJWCB3b3JrLWFyb3VuZCBmcm9tIHBuZ2NvbmYuaAotICBDaGFuZ2VkIHNldmVyYWwgIi8vIiBzaW5nbGUtbGluZSBjb21tZW50cyB0byBDLXN0eWxlIGluIHBuZ2djY3JkLmMKLSAgUmVtb3ZlZCBQTkdBUEkgZnJvbSBwcml2YXRlIGZ1bmN0aW9ucyB3aG9zZSBwcm90b3R5cGVzIGRpZCBub3QgaGF2ZSBQTkdBUEkuCi0gIFVwZGF0ZWQgc2NyaXB0cy9wbmdvczIuZGVmCi0gIEFkZGVkIGEgY2hlY2sgZm9yIE5VTEwgcmV0dXJuIGZyb20gdXNlcidzIG1hbGxvY19mbigpLgotICBSZW1vdmVkIHNvbWUgdXNlbGVzcyB0eXBlIGNhc3RzIG9mIHRoZSBOVUxMIHBvaW50ZXIuCi0gIEFkZGVkIG1ha2VmaWxlLm5ldGJzZAorICBUZXN0IGZvciBXaW5kb3dzIHBsYXRmb3JtIGluIHBuZ2NvbmYuaCB3aGVuIGluY2x1ZGluZyBtYWxsb2MuaCAoRW1tYW51ZWwgQmxvdCkKKyAgVXBkYXRlZCBtYWtlZmlsZS5jeWd3aW4gYW5kIGhhbmRsaW5nIG9mIEN5Z3dpbidzIEFMTF9TVEFUSUMgaW4gcG5nY29uZi5oCisgIEFkZGVkIHNvbWUgbmV2ZXItdG8tYmUtZXhlY3V0ZWQgY29kZSBpbiBwbmdnY2NyZC5jIHRvIHF1aWV0IGNvbXBpbGVyIHdhcm5pbmdzLgorICBCdW1wZWQgRExMTlVNIHRvIDIuCisgIEFkZGVkIGEgY2hlY2sgZm9yIGF0dGVtcHRzIHRvIHJlYWQgb3Igd3JpdGUgUExURSBpbiBncmF5c2NhbGUgUE5HIGRhdGFzdHJlYW1zLgorICBFbGltaW5hdGVkIHRoZSBwbmdfZXJyb3IgYWJvdXQgYXBwcyB1c2luZyBwbmdfcmVhZHx3cml0ZV9pbml0KCkuICBJbnN0ZWFkLAorICAgIGxpYnBuZyB3aWxsIHJlYWxsb2NhdGUgdGhlIHBuZ19zdHJ1Y3QgYW5kIGluZm9fc3RydWN0IGlmIHRoZXkgYXJlIHRvbyBzbWFsbC4KKyAgICBUaGlzIGFjaGlldmVzIGZ1dHVyZSBiaW5hcnkgY29tcGF0aWJpbGl0eSBmb3Igb2xkIGFwcGxpY2F0aW9ucyB3cml0dGVuIGZvcgorICAgIGxpYnBuZy0wLjg4IGFuZCBlYXJsaWVyLgorICBNb2RpZmllZCBwbmdfY3JlYXRlX3N0cnVjdCBzbyBpdCBwYXNzZXMgdXNlciBtZW1fcHRyIHRvIHVzZXIgbWVtb3J5IGFsbG9jYXRvci4KIAogU2VuZCBjb21tZW50cy9jb3JyZWN0aW9ucy9jb21tZW5kYXRpb25zIHRvCiBwbmctaW1wbGVtZW50QGNjcmMud3VzdGwuZWR1IG9yIHRvIHJhbmRlZ0BhbHVtLnJwaS5lZHUKZGlmZiAtLWdpdCBhL0NIQU5HRVMgYi9DSEFOR0VTCmluZGV4IDE1ZTk0NDkuLmU0Yjc1ZjQgMTAwNjQ0Ci0tLSBhL0NIQU5HRVMKKysrIGIvQ0hBTkdFUwpAQCAtOTMwLDYgKzkzMCwxNyBAQAogICBBZGRlZCBtYWtlZmlsZS5uZXRic2QKIHZlcnNpb24gMS4wLjExIFtBcHJpbCAyNywgMjAwMV0KICAgUmV2aXNlZCBtYWtlZmlsZS5uZXRic2QKK3ZlcnNpb24gMS4wLjEyYmV0YTEgW01heSAxNCwgMjAwMV0KKyAgVGVzdCBmb3IgV2luZG93cyBwbGF0Zm9ybSBpbiBwbmdjb25mLmggd2hlbiBpbmNsdWRpbmcgbWFsbG9jLmggKEVtbWFudWVsIEJsb3QpCisgIFVwZGF0ZWQgbWFrZWZpbGUuY3lnd2luIGFuZCBoYW5kbGluZyBvZiBDeWd3aW4ncyBBTExfU1RBVElDIGluIHBuZ2NvbmYuaAorICBBZGRlZCBzb21lIG5ldmVyLXRvLWJlLWV4ZWN1dGVkIGNvZGUgaW4gcG5nZ2NjcmQuYyB0byBxdWlldCBjb21waWxlciB3YXJuaW5ncy4KKyAgQnVtcGVkIERMTE5VTSB0byAyLgorICBBZGRlZCBhIGNoZWNrIGZvciBhdHRlbXB0cyB0byByZWFkIG9yIHdyaXRlIFBMVEUgaW4gZ3JheXNjYWxlIFBORyBkYXRhc3RyZWFtcy4KKyAgRWxpbWluYXRlZCB0aGUgcG5nX2Vycm9yIGFib3V0IGFwcHMgdXNpbmcgcG5nX3JlYWR8d3JpdGVfaW5pdCgpLiAgSW5zdGVhZCwKKyAgICBsaWJwbmcgd2lsbCByZWFsbG9jYXRlIHRoZSBwbmdfc3RydWN0IGFuZCBpbmZvX3N0cnVjdCBpZiB0aGV5IGFyZSB0b28gc21hbGwuCisgICAgVGhpcyBhY2hpZXZlcyBmdXR1cmUgYmluYXJ5IGNvbXBhdGliaWxpdHkgZm9yIG9sZCBhcHBsaWNhdGlvbnMgd3JpdHRlbiBmb3IKKyAgICBsaWJwbmctMC44OCBhbmQgZWFybGllci4KKyAgTW9kaWZpZWQgcG5nX2NyZWF0ZV9zdHJ1Y3Qgc28gaXQgcGFzc2VzIHVzZXIgbWVtX3B0ciB0byB1c2VyIG1lbW9yeSBhbGxvY2F0b3IuCiAKIFNlbmQgY29tbWVudHMvY29ycmVjdGlvbnMvY29tbWVuZGF0aW9ucyB0bwogcG5nLWltcGxlbWVudEBjY3JjLnd1c3RsLmVkdSBvciB0byByYW5kZWdAYWx1bS5ycGkuZWR1CmRpZmYgLS1naXQgYS9JTlNUQUxMIGIvSU5TVEFMTAppbmRleCBlODFiMWRlLi41ODExMWNkIDEwMDY0NAotLS0gYS9JTlNUQUxMCisrKyBiL0lOU1RBTEwKQEAgLTEsNSArMSw1IEBACiAKLUluc3RhbGxpbmcgbGlicG5nIHZlcnNpb24gMS4wLjExIC0gQXByaWwgMjcsIDIwMDEKK0luc3RhbGxpbmcgbGlicG5nIHZlcnNpb24gMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKIAogQmVmb3JlIGluc3RhbGxpbmcgbGlicG5nLCB5b3UgbXVzdCBmaXJzdCBpbnN0YWxsIHpsaWIuICB6bGliCiBjYW4gdXN1YWxseSBiZSBmb3VuZCB3aGVyZXZlciB5b3UgZ290IGxpYnBuZy4gIHpsaWIgY2FuIGJlCkBAIC0xMCw3ICsxMCw3IEBACiB2ZXJzaW9uIG9mIHpsaWIgdGhhdCdzIGluc3RhbGxlZC4KIAogWW91IGNhbiByZW5hbWUgdGhlIGRpcmVjdG9yaWVzIHRoYXQgeW91IGRvd25sb2FkZWQgKHRoZXkKLW1pZ2h0IGJlIGNhbGxlZCAibGlicG5nLTEuMC4xMSIgb3IgImxwbmcxMDkiIGFuZCAiemxpYi0xLjEuMyIKK21pZ2h0IGJlIGNhbGxlZCAibGlicG5nLTEuMC4xMmJldGExIiBvciAibHBuZzEwOSIgYW5kICJ6bGliLTEuMS4zIgogb3IgInpsaWIxMTMiKSBzbyB0aGF0IHlvdSBoYXZlIGRpcmVjdG9yaWVzIGNhbGxlZCAiemxpYiIgYW5kICJsaWJwbmciLgogCiBZb3VyIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOgpAQCAtNjAsOCArNjAsOCBAQAogaW5jbHVkZQogCiAgbWFrZWZpbGUuc3RkICAgICAgPT4gIEdlbmVyaWMgVU5JWCBtYWtlZmlsZSAoY2MsIGNyZWF0ZXMgc3RhdGljIGxpYnBuZy5hKQotIG1ha2VmaWxlLmxpbnV4ICAgID0+ICBMaW51eC9FTEYgbWFrZWZpbGUgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuMTEpCi0gbWFrZWZpbGUuZ2NtbXggICAgPT4gIExpbnV4L0VMRiBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC4xMSwKKyBtYWtlZmlsZS5saW51eCAgICA9PiAgTGludXgvRUxGIG1ha2VmaWxlIChnY2MsIGNyZWF0ZXMgbGlicG5nLnNvLjIuMS4wLjEyYmV0YTEpCisgbWFrZWZpbGUuZ2NtbXggICAgPT4gIExpbnV4L0VMRiBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC4xMmJldGExLAogICAgICAgICAgICAgICAgICAgICAgICB1c2VzIGFzc2VtYmxlciBjb2RlIHR1bmVkIGZvciBJbnRlbCBNTVggcGxhdGZvcm0pCiAgbWFrZWZpbGUuZ2NjICAgICAgPT4gIEdlbmVyaWMgbWFrZWZpbGUgKGdjYywgY3JlYXRlcyBzdGF0aWMgbGlicG5nLmEpCiAgbWFrZWZpbGUua25yICAgICAgPT4gIEFyY2hhaWMgVU5JWCBNYWtlZmlsZSB0aGF0IGNvbnZlcnRzIGZpbGVzIHdpdGgKQEAgLTc4LDkgKzc4LDkgQEAKICBtYWtlZmlsZS5tYWNvc3ggICA9PiAgTUFDT1MgWCBNYWtlZmlsZQogIG1ha2VmaWxlLm5ldGJzZCAgID0+ICBOZXRCU0QvY2MgbWFrZWZpbGUsIHVzZXMgUE5HR0NDUkQKICBtYWtlZmlsZS5zZ2kgICAgICA9PiAgU2lsaWNvbiBHcmFwaGljcyBJUklYIG1ha2VmaWxlIChjYywgY3JlYXRlcyBzdGF0aWMgbGliKQotIG1ha2VmaWxlLnNnZ2NjICAgID0+ICBTaWxpY29uIEdyYXBoaWNzIChnY2MsIGNyZWF0ZXMgbGlicG5nLnNvLjIuMS4wLjExKQorIG1ha2VmaWxlLnNnZ2NjICAgID0+ICBTaWxpY29uIEdyYXBoaWNzIChnY2MsIGNyZWF0ZXMgbGlicG5nLnNvLjIuMS4wLjEyYmV0YTEpCiAgbWFrZWZpbGUuc3Vub3MgICAgPT4gIFN1biBtYWtlZmlsZQotIG1ha2VmaWxlLnNvbGFyaXMgID0+ICBTb2xhcmlzIDIuWCBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC4xMSkKKyBtYWtlZmlsZS5zb2xhcmlzICA9PiAgU29sYXJpcyAyLlggbWFrZWZpbGUgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuMTJiZXRhMSkKICBtYWtlZmlsZS5zY28gICAgICA9PiAgRm9yIFNDTyBPU3I1ICBFTEYgYW5kIFVuaXh3YXJlIDcgd2l0aCBOYXRpdmUgY2MKICBtYWtlZmlsZS5taXBzICAgICA9PiAgTUlQUyBtYWtlZmlsZQogIG1ha2VmaWxlLmFjb3JuICAgID0+ICBBY29ybiBtYWtlZmlsZQpkaWZmIC0tZ2l0IGEvTElDRU5TRSBiL0xJQ0VOU0UKaW5kZXggNjhmNzM4MS4uZTVlOWI0YSAxMDA2NDQKLS0tIGEvTElDRU5TRQorKysgYi9MSUNFTlNFCkBAIC04LDcgKzgsNyBAQAogSWYgeW91IG1vZGlmeSBsaWJwbmcgeW91IG1heSBpbnNlcnQgYWRkaXRpb25hbCBub3RpY2VzIGltbWVkaWF0ZWx5IGZvbGxvd2luZwogdGhpcyBzZW50ZW5jZS4KIAotbGlicG5nIHZlcnNpb25zIDEuMC43LCBKdWx5IDEsIDIwMDAsIHRocm91Z2ggMS4wLjExLCBBcHJpbCAyNywgMjAwMSwgYXJlCitsaWJwbmcgdmVyc2lvbnMgMS4wLjcsIEp1bHkgMSwgMjAwMCwgdGhyb3VnaCAxLjAuMTJiZXRhMSwgTWF5IDE0LCAyMDAxLCBhcmUKIENvcHlyaWdodCAoYykgMjAwMCwgMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KIGFuZCBhcmUgZGlzdHJpYnV0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzYW1lIGRpc2NsYWltZXIgYW5kIGxpY2Vuc2UgYXMgbGlicG5nLTEuMC42CiB3aXRoIHRoZSBmb2xsb3dpbmcgaW5kaXZpZHVhbHMgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgQ29udHJpYnV0aW5nIEF1dGhvcnMKQEAgLTk5LDQgKzk5LDQgQEAKIAogR2xlbm4gUmFuZGVycy1QZWhyc29uCiByYW5kZWdAYWx1bS5ycGkuZWR1Ci1BcHJpbCAyNywgMjAwMQorTWF5IDE0LCAyMDAxCmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggMzY5MmJmYi4uNmM4M2YzMyAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw0ICsxLDQgQEAKLVJFQURNRSBmb3IgbGlicG5nIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxIChzaGFyZWQgbGlicmFyeSAyLjEpCitSRUFETUUgZm9yIGxpYnBuZyAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMSAoc2hhcmVkIGxpYnJhcnkgMi4xKQogU2VlIHRoZSBub3RlIGFib3V0IHZlcnNpb24gbnVtYmVycyBuZWFyIHRoZSB0b3Agb2YgcG5nLmgKIAogU2VlIElOU1RBTEwgZm9yIGluc3RydWN0aW9ucyBvbiBob3cgdG8gaW5zdGFsbCBsaWJwbmcuCkBAIC0xODMsOSArMTgzLDkgQEAKICAgICAgICBkZXNjcmlwLm1tcyAgICAgID0+ICBWTVMgbWFrZWZpbGUgZm9yIE1NUyBvciBNTUsKICAgICAgICBtYWtlZmlsZS5zdGQgICAgID0+ICBHZW5lcmljIFVOSVggbWFrZWZpbGUgKGNjLCBjcmVhdGVzIHN0YXRpYyBsaWJwbmcuYSkKICAgICAgICBtYWtlZmlsZS5saW51eCAgID0+ICBMaW51eC9FTEYgbWFrZWZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC4xMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC4xMmJldGExKQogICAgICAgIG1ha2VmaWxlLmdjbW14ICAgPT4gIExpbnV4L0VMRiBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicG5nLnNvLjIuMS4wLjExLCB1c2VzIGFzc2VtYmxlciBjb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicG5nLnNvLjIuMS4wLjEyYmV0YTEsIHVzZXMgYXNzZW1ibGVyIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dW5lZCBmb3IgSW50ZWwgTU1YIHBsYXRmb3JtKQogICAgICAgIG1ha2VmaWxlLmdjYyAgICAgPT4gIEdlbmVyaWMgbWFrZWZpbGUgKGdjYywgY3JlYXRlcyBzdGF0aWMgbGlicG5nLmEpCiAgICAgICAgbWFrZWZpbGUua25yICAgICA9PiAgQXJjaGFpYyBVTklYIE1ha2VmaWxlIHRoYXQgY29udmVydHMgZmlsZXMgd2l0aApAQCAtMjAyLDEwICsyMDIsMTAgQEAKICAgICAgICBtYWtlZmlsZS5tYWNvc3ggID0+ICBNQUNPUyBYIE1ha2VmaWxlCiAgICAgICAgbWFrZWZpbGUubmV0YnNkICA9PiAgTmV0QlNEL2NjIG1ha2VmaWxlLCB1c2VzIFBOR0dDQ1JECiAgICAgICAgbWFrZWZpbGUuc2dpICAgICA9PiAgU2lsaWNvbiBHcmFwaGljcyBJUklYIChjYywgY3JlYXRlcyBzdGF0aWMgbGliKQotICAgICAgIG1ha2VmaWxlLnNnZ2NjICAgPT4gIFNpbGljb24gR3JhcGhpY3MgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuMTEpCisgICAgICAgbWFrZWZpbGUuc2dnY2MgICA9PiAgU2lsaWNvbiBHcmFwaGljcyAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC4xMmJldGExKQogICAgICAgIG1ha2VmaWxlLnN1bm9zICAgPT4gIFN1biBtYWtlZmlsZQogICAgICAgIG1ha2VmaWxlLnNvbGFyaXMgPT4gIFNvbGFyaXMgMi5YIG1ha2VmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuMTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuMTJiZXRhMSkKICAgICAgICBtYWtlZmlsZS5zY28gICAgID0+ICBGb3IgU0NPIE9TcjUgIEVMRiBhbmQgVW5peHdhcmUgNyB3aXRoIE5hdGl2ZSBjYwogICAgICAgIG1ha2VmaWxlLm1pcHMgICAgPT4gIE1JUFMgbWFrZWZpbGUKICAgICAgICBtYWtlZmlsZS5hY29ybiAgID0+ICBBY29ybiBtYWtlZmlsZQpkaWZmIC0tZ2l0IGEvWTJLSU5GTyBiL1kyS0lORk8KaW5kZXggODRmZWVkMi4uODZiNzIxMyAxMDA2NDQKLS0tIGEvWTJLSU5GTworKysgYi9ZMktJTkZPCkBAIC0xLDEzICsxLDEzIEBACiAgICBZMksgY29tcGxpYW5jZSBpbiBsaWJwbmc6CiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09CiAKLSAgICAgIEFwcmlsIDI3LCAyMDAxCisgICAgICBNYXkgMTQsIDIwMDEKIAogICAgICAgU2luY2UgdGhlIFBORyBEZXZlbG9wbWVudCBncm91cCBpcyBhbiBhZC1ob2MgYm9keSwgd2UgY2FuJ3QgbWFrZQogICAgICAgYW4gb2ZmaWNpYWwgZGVjbGFyYXRpb24uCiAKICAgICAgIFRoaXMgaXMgeW91ciB1bm9mZmljaWFsIGFzc3VyYW5jZSB0aGF0IGxpYnBuZyBmcm9tIHZlcnNpb24gMC43MSBhbmQKLSAgICAgIHVwd2FyZCB0aHJvdWdoIDEuMC4xMSBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKKyAgICAgIHVwd2FyZCB0aHJvdWdoIDEuMC4xMmJldGExIGFyZSBZMksgY29tcGxpYW50LiAgSXQgaXMgbXkgYmVsaWVmIHRoYXQgZWFybGllcgogICAgICAgdmVyc2lvbnMgd2VyZSBhbHNvIFkySyBjb21wbGlhbnQuCiAKICAgICAgIExpYnBuZyBvbmx5IGhhcyB0aHJlZSB5ZWFyIGZpZWxkcy4gIE9uZSBpcyBhIDItYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggYTRlZmYwZi4uMWQxMjVjNiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMSw1ICsxLDUgQEAKIGVjaG8gIgotICBUaGVyZSBpcyBubyBcImNvbmZpZ3VyZVwiIHNjcmlwdCBmb3IgTGlicG5nLTEuMC4xMS4gIEluc3RlYWQsIHBsZWFzZQorICBUaGVyZSBpcyBubyBcImNvbmZpZ3VyZVwiIHNjcmlwdCBmb3IgTGlicG5nLTEuMC4xMmJldGExLiAgSW5zdGVhZCwgcGxlYXNlCiAgIGNvcHkgdGhlIGFwcHJvcHJpYXRlIG1ha2VmaWxlIGZvciB5b3VyIHN5c3RlbSBmcm9tIHRoZSBcInNjcmlwdHNcIgogICBkaXJlY3RvcnkuICBSZWFkIHRoZSBJTlNUQUxMIGZpbGUgZm9yIG1vcmUgZGV0YWlscy4KICIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXN2Y3Rlc3QvbXN2Y3Rlc3QuZHNwIGIvY29udHJpYi9tc3ZjdGVzdC9tc3ZjdGVzdC5kc3AKaW5kZXggZGYzMDM0ZS4uYmEzOTQ4NyAxMDA2NDQKLS0tIGEvY29udHJpYi9tc3ZjdGVzdC9tc3ZjdGVzdC5kc3AKKysrIGIvY29udHJpYi9tc3ZjdGVzdC9tc3ZjdGVzdC5kc3AKQEAgLTU0LDcgKzU0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28KIExJTkszMj1saW5rLmV4ZQogIyBBREQgQkFTRSBMSU5LMzIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgotIyBBREQgTElOSzMyIC4uXC4uXHByb2plY3RzXG1zdmNcd2luMzJcbGlicG5nXGRsbFxsaWJwbmcxLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2CisjIEFERCBMSU5LMzIgLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcZGxsXGxpYnBuZzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKICMgQmVnaW4gU3BlY2lhbCBCdWlsZCBUb29sCiBPdXREaXI9LlxkbGwKIFNPVVJDRT0iJChJbnB1dFBhdGgpIgpAQCAtODQsNyArODQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbwogTElOSzMyPWxpbmsuZXhlCiAjIEFERCBCQVNFIExJTkszMiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0Ci0jIEFERCBMSU5LMzIgLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcZGxsX2RiZ1xsaWJwbmcxZC5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAorIyBBREQgTElOSzMyIC4uXC4uXHByb2plY3RzXG1zdmNcd2luMzJcbGlicG5nXGRsbF9kYmdcbGlicG5nMmQubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKICMgQmVnaW4gU3BlY2lhbCBCdWlsZCBUb29sCiBPdXREaXI9LlxkbGxfZGJnCiBTT1VSQ0U9IiQoSW5wdXRQYXRoKSIKQEAgLTExNCw3ICsxMTQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbwogTElOSzMyPWxpbmsuZXhlCiAjIEFERCBCQVNFIExJTkszMiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2Ci0jIEFERCBMSU5LMzIgLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcZGxsX2FzbVxsaWJwbmcxYS5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4NgorIyBBREQgTElOSzMyIC4uXC4uXHByb2plY3RzXG1zdmNcd2luMzJcbGlicG5nXGRsbF9hc21cbGlicG5nMmEubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYKICMgQmVnaW4gU3BlY2lhbCBCdWlsZCBUb29sCiBPdXREaXI9LlxkbGxfYXNtCiBTT1VSQ0U9IiQoSW5wdXRQYXRoKSIKQEAgLTE0NCw3ICsxNDQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbwogTElOSzMyPWxpbmsuZXhlCiAjIEFERCBCQVNFIExJTkszMiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0Ci0jIEFERCBMSU5LMzIgLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcZGxsX2RiZ2FcbGlicG5nMWIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQKKyMgQUREIExJTkszMiAuLlwuLlxwcm9qZWN0c1xtc3ZjXHdpbjMyXGxpYnBuZ1xkbGxfZGJnYVxsaWJwbmcyYi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdAogIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wKIE91dERpcj0uXGRsbF9kYmdhCiBTT1VSQ0U9IiQoSW5wdXRQYXRoKSIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdmlzdXBuZy9WaXN1YWxQbmcuZHNwIGIvY29udHJpYi92aXN1cG5nL1Zpc3VhbFBuZy5kc3AKaW5kZXggZmVjNTIxOS4uYTg4MzQ2ZiAxMDA2NDQKLS0tIGEvY29udHJpYi92aXN1cG5nL1Zpc3VhbFBuZy5kc3AKKysrIGIvY29udHJpYi92aXN1cG5nL1Zpc3VhbFBuZy5kc3AKQEAgLTU5LDggKzU5LDggQEAKICMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwogIyBBREQgQlNDMzIgL25vbG9nbwogTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiBsaWJwbmcxLmxpYiB6bGliZC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL21hY2hpbmU6STM4NiAvbGlicGF0aDoibGlicG5nIiAvbGlicGF0aDoiemxpYiIKLSMgQUREIExJTkszMiBsaWJwbmcxLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvbWFjaGluZTpJMzg2IC9saWJwYXRoOiIuLlwuLlxwcm9qZWN0c1xtc3ZjXHdpbjMyXGxpYnBuZ1xkbGwiCisjIEFERCBCQVNFIExJTkszMiBsaWJwbmcyLmxpYiB6bGliZC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL21hY2hpbmU6STM4NiAvbGlicGF0aDoibGlicG5nIiAvbGlicGF0aDoiemxpYiIKKyMgQUREIExJTkszMiBsaWJwbmcyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvbWFjaGluZTpJMzg2IC9saWJwYXRoOiIuLlwuLlxwcm9qZWN0c1xtc3ZjXHdpbjMyXGxpYnBuZ1xkbGwiCiAjIEJlZ2luIFNwZWNpYWwgQnVpbGQgVG9vbAogT3V0RGlyPS5cZGxsCiBTT1VSQ0U9IiQoSW5wdXRQYXRoKSIKQEAgLTkyLDkgKzkyLDkgQEAKICMgQUREIEJBU0UgQlNDMzIgL25vbG9nbwogIyBBREQgQlNDMzIgL25vbG9nbwogTElOSzMyPWxpbmsuZXhlCi0jIEFERCBCQVNFIExJTkszMiBsaWJwbmcxLmxpYiB6bGliZC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibGliYyIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoibGlicG5nIiAvbGlicGF0aDoiemxpYiIKKyMgQUREIEJBU0UgTElOSzMyIGxpYnBuZzIubGliIHpsaWJkLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGVidWcgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJsaWJjIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiJsaWJwbmciIC9saWJwYXRoOiJ6bGliIgogIyBTVUJUUkFDVCBCQVNFIExJTkszMiAvbm9kZWZhdWx0bGliCi0jIEFERCBMSU5LMzIgbGlicG5nMWQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6ImxpYmMiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uXC4uXHByb2plY3RzXG1zdmNcd2luMzJcbGlicG5nXGRsbF9kYmciCisjIEFERCBMSU5LMzIgbGlicG5nMmQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6ImxpYmMiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uXC4uXHByb2plY3RzXG1zdmNcd2luMzJcbGlicG5nXGRsbF9kYmciCiAjIFNVQlRSQUNUIExJTkszMiAvbm9kZWZhdWx0bGliCiAjIEJlZ2luIFNwZWNpYWwgQnVpbGQgVG9vbAogT3V0RGlyPS5cZGxsX2RiZwpAQCAtMTI4LDcgKzEyOCw3IEBACiAjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KICMgQUREIEJTQzMyIC9ub2xvZ28KIExJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgbGlicG5nMS5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL21hY2hpbmU6STM4NiAvbGlicGF0aDoiLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcZGxsIgorIyBBREQgQkFTRSBMSU5LMzIgbGlicG5nMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL21hY2hpbmU6STM4NiAvbGlicGF0aDoiLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcZGxsIgogIyBBREQgTElOSzMyIGxpYnBuZy5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL21hY2hpbmU6STM4NiAvbGlicGF0aDoiLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcbGliIgogIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wKIE91dERpcj0uXGxpYgpAQCAtMTYxLDcgKzE2MSw3IEBACiAjIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28KICMgQUREIEJTQzMyIC9ub2xvZ28KIExJTkszMj1saW5rLmV4ZQotIyBBREQgQkFTRSBMSU5LMzIgbGlicG5nMWQubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTp3aW5kb3dzIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6ImxpYmMiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uXC4uXHByb2plY3RzXG1zdmNcd2luMzJcbGlicG5nXGRsbF9kYmciCisjIEFERCBCQVNFIExJTkszMiBsaWJwbmcyZC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibGliYyIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcZGxsX2RiZyIKICMgU1VCVFJBQ1QgQkFTRSBMSU5LMzIgL25vZGVmYXVsdGxpYgogIyBBREQgTElOSzMyIGxpYnBuZy5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibGliYyIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi5cLi5ccHJvamVjdHNcbXN2Y1x3aW4zMlxsaWJwbmdcbGliX2RiZyIKICMgU1VCVFJBQ1QgTElOSzMyIC9ub2RlZmF1bHRsaWIKZGlmZiAtLWdpdCBhL2xpYnBuZy4zIGIvbGlicG5nLjMKaW5kZXggMTcwYTM4NC4uZTA5ODA5YSAxMDA2NDQKLS0tIGEvbGlicG5nLjMKKysrIGIvbGlicG5nLjMKQEAgLTEsNiArMSw2IEBACi0uVEggTElCUE5HIDMgIkFwcmlsIDI3LCAyMDAxIgorLlRIIExJQlBORyAzICJNYXkgMTQsIDIwMDEiCiAuU0ggTkFNRQotbGlicG5nIFwtIFBvcnRhYmxlIE5ldHdvcmsgR3JhcGhpY3MgKFBORykgUmVmZXJlbmNlIExpYnJhcnkgMS4wLjExCitsaWJwbmcgXC0gUG9ydGFibGUgTmV0d29yayBHcmFwaGljcyAoUE5HKSBSZWZlcmVuY2UgTGlicmFyeSAxLjAuMTJiZXRhMQogLlNIIFNZTk9QU0lTCiBcZklcZkIKIApAQCAtNzQ3LDEwICs3NDcsMTAgQEAKIC5TSCBMSUJQTkcuVFhUCiBsaWJwbmcudHh0IC0gQSBkZXNjcmlwdGlvbiBvbiBob3cgdG8gdXNlIGFuZCBtb2RpZnkgbGlicG5nCiAKLSBsaWJwbmcgdmVyc2lvbiAxLjAuMTEgLSBBcHJpbCAyNywgMjAwMQorIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCiAgVXBkYXRlZCBhbmQgZGlzdHJpYnV0ZWQgYnkgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgPHJhbmRlZ0BhbHVtLnJwaS5lZHU+Ci0gQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgorIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0CiAgbm90aWNlIGluIHBuZy5oLgogCkBAIC0xMDMzLDcgKzEwMzMsOCBAQAogYSBwcm9ncmVzcyBtZXRlciBvciB0aGUgbGlrZS4gIEl0J3MgZGVtb25zdHJhdGVkIGluIHBuZ3Rlc3QuYy4KIFlvdSBtdXN0IHN1cHBseSBhIGZ1bmN0aW9uCiAKLSAgICB2b2lkIHJlYWRfcm93X2NhbGxiYWNrKHBuZ19wdHIgcHRyLCBwbmdfdWludF8zMiByb3csIGludCBwYXNzKTsKKyAgICB2b2lkIHJlYWRfcm93X2NhbGxiYWNrKHBuZ19wdHIgcHRyLCBwbmdfdWludF8zMiByb3csCisgICAgICAgaW50IHBhc3MpOwogICAgIHsKICAgICAgIC8qIHB1dCB5b3VyIGNvZGUgaGVyZSAqLwogICAgIH0KQEAgLTIxNDUsNyArMjE0Niw3IEBACiAKICB2b2lkCiAgcm93X2NhbGxiYWNrKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19ieXRlcCBuZXdfcm93LAotIHBuZ191aW50XzMyIHJvd19udW0sIGludCBwYXNzKQorICAgIHBuZ191aW50XzMyIHJvd19udW0sIGludCBwYXNzKQogIHsKICAgICAvKiBJZiB0aGUgaW1hZ2UgaXMgaW50ZXJsYWNlZCwgYW5kIHlvdSB0dXJuZWQKICAgICAgICBvbiB0aGUgaW50ZXJsYWNlIGhhbmRsZXIsIHRoaXMgZnVuY3Rpb24gd2lsbApAQCAtMzQyNyw3ICszNDI4LDcgQEAKIHN0aWxsIGFsaXZlIGFuZCB3ZWxsLCBidXQgdGhleSBoYXZlIG1vdmVkIG9uIHRvIG90aGVyIHRoaW5ncy4KIAogVGhlIG9sZCBsaWJwbmcgZnVuY3Rpb25zIHBuZ19yZWFkX2luaXQoKSwgcG5nX3dyaXRlX2luaXQoKSwKLXBuZ19pbmZvX2luaXQoKSwgcG5nX3JlYWRfZGVzdHJveSgpLCBhbmQgcG5nX3dyaXRlX2Rlc3RvcnkoKSBoYXZlIGJlZW4KK3BuZ19pbmZvX2luaXQoKSwgcG5nX3JlYWRfZGVzdHJveSgpLCBhbmQgcG5nX3dyaXRlX2Rlc3Ryb3koKSBoYXZlIGJlZW4KIG1vdmVkIHRvIFBOR19JTlRFUk5BTCBpbiB2ZXJzaW9uIDAuOTUgdG8gZGlzY291cmFnZSB0aGVpciB1c2UuICBUaGVzZQogZnVuY3Rpb25zIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIGxpYnBuZyB2ZXJzaW9uIDIuMC4wLgogCkBAIC0zNDY4LDEzICszNDY5LDEzIEBACiAKIC5TSCBWSUlJLiBZMksgQ29tcGxpYW5jZSBpbiBsaWJwbmcKIAotQXByaWwgMjcsIDIwMDEKK01heSAxNCwgMjAwMQogCiBTaW5jZSB0aGUgUE5HIERldmVsb3BtZW50IGdyb3VwIGlzIGFuIGFkLWhvYyBib2R5LCB3ZSBjYW4ndCBtYWtlCiBhbiBvZmZpY2lhbCBkZWNsYXJhdGlvbi4KIAogVGhpcyBpcyB5b3VyIHVub2ZmaWNpYWwgYXNzdXJhbmNlIHRoYXQgbGlicG5nIGZyb20gdmVyc2lvbiAwLjcxIGFuZAotdXB3YXJkIHRocm91Z2ggMS4wLjExIGFyZSBZMksgY29tcGxpYW50LiAgSXQgaXMgbXkgYmVsaWVmIHRoYXQgZWFybGllcgordXB3YXJkIHRocm91Z2ggMS4wLjEyYmV0YTEgYXJlIFkySyBjb21wbGlhbnQuICBJdCBpcyBteSBiZWxpZWYgdGhhdCBlYXJsaWVyCiB2ZXJzaW9ucyB3ZXJlIGFsc28gWTJLIGNvbXBsaWFudC4KIAogTGlicG5nIG9ubHkgaGFzIHRocmVlIHllYXIgZmllbGRzLiAgT25lIGlzIGEgMi1ieXRlIHVuc2lnbmVkIGludGVnZXIgdGhhdApAQCAtMzU4Niw2ICszNTg3LDcgQEAKICAxLjAuMTFiZXRhMS0zICAgICAgICAxICAgIDEwMDExICAyLjEuMC4xMWJldGExLTMKICAxLjAuMTFyYzEgICAgICAgICAgICAxICAgIDEwMDExICAyLjEuMC4xMXJjMQogIDEuMC4xMSAgICAgICAgICAgICAgIDEgICAgMTAwMTEgIDIuMS4wLjExCisgMS4wLjEyYmV0YTEgICAgICAgICAgMSAgICAxMDAxMiAgMi4xLjAuMTJiZXRhMQogCiBIZW5jZWZvcnRoIHRoZSBzb3VyY2UgdmVyc2lvbiB3aWxsIG1hdGNoIHRoZSBzaGFyZWQtbGlicmFyeSBtaW5vcgogYW5kIHBhdGNoIG51bWJlcnM7IHRoZSBzaGFyZWQtbGlicmFyeSBtYWpvciB2ZXJzaW9uIG51bWJlciB3aWxsIGJlCkBAIC0zNjQzLDcgKzM2NDUsNyBAQAogCiBUaGFua3MgdG8gRnJhbmsgSi4gVC4gV29qY2lrIGZvciBoZWxwaW5nIHdpdGggdGhlIGRvY3VtZW50YXRpb24uCiAKLUxpYnBuZyB2ZXJzaW9uIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxOgorTGlicG5nIHZlcnNpb24gMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDE6CiBJbml0aWFsbHkgY3JlYXRlZCBpbiAxOTk1IGJ5IEd1eSBFcmljIFNjaGFsbmF0LCB0aGVuIG9mIEdyb3VwIDQyLCBJbmMuCiBDdXJyZW50bHkgbWFpbnRhaW5lZCBieSBHbGVubiBSYW5kZXJzLVBlaHJzb24gKHJhbmRlZ0BhbHVtLnJwaS5lZHUpLgogCkBAIC0zNjYwLDcgKzM2NjIsNyBAQAogSWYgeW91IG1vZGlmeSBsaWJwbmcgeW91IG1heSBpbnNlcnQgYWRkaXRpb25hbCBub3RpY2VzIGltbWVkaWF0ZWx5IGZvbGxvd2luZwogdGhpcyBzZW50ZW5jZS4KIAotbGlicG5nIHZlcnNpb25zIDEuMC43LCBKdWx5IDEsIDIwMDAsIHRocm91Z2ggIDEuMC4xMSwgQXByaWwgMjcsIDIwMDEsIGFyZQorbGlicG5nIHZlcnNpb25zIDEuMC43LCBKdWx5IDEsIDIwMDAsIHRocm91Z2ggIDEuMC4xMmJldGExLCBNYXkgMTQsIDIwMDEsIGFyZQogQ29weXJpZ2h0IChjKSAyMDAwLTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uLCBhbmQgYXJlCiBkaXN0cmlidXRlZCBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgZGlzY2xhaW1lciBhbmQgbGljZW5zZSBhcyBsaWJwbmctMS4wLjYKIHdpdGggdGhlIGZvbGxvd2luZyBpbmRpdmlkdWFscyBhZGRlZCB0byB0aGUgbGlzdCBvZiBDb250cmlidXRpbmcgQXV0aG9ycwpAQCAtMzc1Miw3ICszNzU0LDcgQEAKIAogR2xlbm4gUmFuZGVycy1QZWhyc29uCiByYW5kZWdAYWx1bS5ycGkuZWR1Ci1BcHJpbCAyNywgMjAwMQorTWF5IDE0LCAyMDAxCiAKIC5cIiBlbmQgb2YgbWFuIHBhZ2UKIApkaWZmIC0tZ2l0IGEvbGlicG5nLnR4dCBiL2xpYnBuZy50eHQKaW5kZXggZDdmNzY2ZS4uYjI3OTExNiAxMDA2NDQKLS0tIGEvbGlicG5nLnR4dAorKysgYi9saWJwbmcudHh0CkBAIC0xLDkgKzEsOSBAQAogbGlicG5nLnR4dCAtIEEgZGVzY3JpcHRpb24gb24gaG93IHRvIHVzZSBhbmQgbW9kaWZ5IGxpYnBuZwogCi0gbGlicG5nIHZlcnNpb24gMS4wLjExIC0gQXByaWwgMjcsIDIwMDEKKyBsaWJwbmcgdmVyc2lvbiAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMQogIFVwZGF0ZWQgYW5kIGRpc3RyaWJ1dGVkIGJ5IEdsZW5uIFJhbmRlcnMtUGVocnNvbgogIDxyYW5kZWdAYWx1bS5ycGkuZWR1PgotIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KKyBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KICBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodAogIG5vdGljZSBpbiBwbmcuaC4KIApAQCAtMjg2LDcgKzI4Niw4IEBACiBhIHByb2dyZXNzIG1ldGVyIG9yIHRoZSBsaWtlLiAgSXQncyBkZW1vbnN0cmF0ZWQgaW4gcG5ndGVzdC5jLgogWW91IG11c3Qgc3VwcGx5IGEgZnVuY3Rpb24KIAotICAgIHZvaWQgcmVhZF9yb3dfY2FsbGJhY2socG5nX3B0ciBwdHIsIHBuZ191aW50XzMyIHJvdywgaW50IHBhc3MpOworICAgIHZvaWQgcmVhZF9yb3dfY2FsbGJhY2socG5nX3B0ciBwdHIsIHBuZ191aW50XzMyIHJvdywKKyAgICAgICBpbnQgcGFzcyk7CiAgICAgewogICAgICAgLyogcHV0IHlvdXIgY29kZSBoZXJlICovCiAgICAgfQpAQCAtMTM5OCw3ICsxMzk5LDcgQEAKIAogIHZvaWQKICByb3dfY2FsbGJhY2socG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2J5dGVwIG5ld19yb3csCi0gcG5nX3VpbnRfMzIgcm93X251bSwgaW50IHBhc3MpCisgICAgcG5nX3VpbnRfMzIgcm93X251bSwgaW50IHBhc3MpCiAgewogICAgIC8qIElmIHRoZSBpbWFnZSBpcyBpbnRlcmxhY2VkLCBhbmQgeW91IHR1cm5lZAogICAgICAgIG9uIHRoZSBpbnRlcmxhY2UgaGFuZGxlciwgdGhpcyBmdW5jdGlvbiB3aWxsCkBAIC0yNjgwLDcgKzI2ODEsNyBAQAogc3RpbGwgYWxpdmUgYW5kIHdlbGwsIGJ1dCB0aGV5IGhhdmUgbW92ZWQgb24gdG8gb3RoZXIgdGhpbmdzLgogCiBUaGUgb2xkIGxpYnBuZyBmdW5jdGlvbnMgcG5nX3JlYWRfaW5pdCgpLCBwbmdfd3JpdGVfaW5pdCgpLAotcG5nX2luZm9faW5pdCgpLCBwbmdfcmVhZF9kZXN0cm95KCksIGFuZCBwbmdfd3JpdGVfZGVzdG9yeSgpIGhhdmUgYmVlbgorcG5nX2luZm9faW5pdCgpLCBwbmdfcmVhZF9kZXN0cm95KCksIGFuZCBwbmdfd3JpdGVfZGVzdHJveSgpIGhhdmUgYmVlbgogbW92ZWQgdG8gUE5HX0lOVEVSTkFMIGluIHZlcnNpb24gMC45NSB0byBkaXNjb3VyYWdlIHRoZWlyIHVzZS4gIFRoZXNlCiBmdW5jdGlvbnMgd2lsbCBiZSByZW1vdmVkIGZyb20gbGlicG5nIHZlcnNpb24gMi4wLjAuCiAKQEAgLTI3MjEsMTMgKzI3MjIsMTMgQEAKIAogVklJSS4gWTJLIENvbXBsaWFuY2UgaW4gbGlicG5nCiAKLUFwcmlsIDI3LCAyMDAxCitNYXkgMTQsIDIwMDEKIAogU2luY2UgdGhlIFBORyBEZXZlbG9wbWVudCBncm91cCBpcyBhbiBhZC1ob2MgYm9keSwgd2UgY2FuJ3QgbWFrZQogYW4gb2ZmaWNpYWwgZGVjbGFyYXRpb24uCiAKIFRoaXMgaXMgeW91ciB1bm9mZmljaWFsIGFzc3VyYW5jZSB0aGF0IGxpYnBuZyBmcm9tIHZlcnNpb24gMC43MSBhbmQKLXVwd2FyZCB0aHJvdWdoIDEuMC4xMSBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKK3Vwd2FyZCB0aHJvdWdoIDEuMC4xMmJldGExIGFyZSBZMksgY29tcGxpYW50LiAgSXQgaXMgbXkgYmVsaWVmIHRoYXQgZWFybGllcgogdmVyc2lvbnMgd2VyZSBhbHNvIFkySyBjb21wbGlhbnQuCiAKIExpYnBuZyBvbmx5IGhhcyB0aHJlZSB5ZWFyIGZpZWxkcy4gIE9uZSBpcyBhIDItYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQKZGlmZiAtLWdpdCBhL2xpYnBuZ3BmLjMgYi9saWJwbmdwZi4zCmluZGV4IGJkNzMyNWUuLmQ2MTI0MDMgMTAwNjQ0Ci0tLSBhL2xpYnBuZ3BmLjMKKysrIGIvbGlicG5ncGYuMwpAQCAtMSw2ICsxLDYgQEAKLS5USCBMSUJQTkdQRiAzICJBcHJpbCAyNywgMjAwMSIKKy5USCBMSUJQTkdQRiAzICJNYXkgMTQsIDIwMDEiCiAuU0ggTkFNRQotbGlicG5nIFwtIFBvcnRhYmxlIE5ldHdvcmsgR3JhcGhpY3MgKFBORykgUmVmZXJlbmNlIExpYnJhcnkgMS4wLjExCitsaWJwbmcgXC0gUG9ydGFibGUgTmV0d29yayBHcmFwaGljcyAoUE5HKSBSZWZlcmVuY2UgTGlicmFyeSAxLjAuMTJiZXRhMQogKHByaXZhdGUgZnVuY3Rpb25zKQogLlNIIFNZTk9QU0lTCiBcZkIjaW5jbHVkZSA8cG5nLmg+XGZQCmRpZmYgLS1naXQgYS9wbmcuNSBiL3BuZy41CmluZGV4IGM5ZWFlYmMuLjU4OGQ5NmQgMTAwNjQ0Ci0tLSBhL3BuZy41CisrKyBiL3BuZy41CkBAIC0xLDQgKzEsNCBAQAotLlRIIFBORyA1ICJBcHJpbCAyNywgMjAwMSIKKy5USCBQTkcgNSAiTWF5IDE0LCAyMDAxIgogLlNIIE5BTUUKIHBuZyBcLSBQb3J0YWJsZSBOZXR3b3JrIEdyYXBoaWNzIChQTkcpIGZvcm1hdAogLlNIIERFU0NSSVBUSU9OCmRpZmYgLS1naXQgYS9wbmcuYyBiL3BuZy5jCmluZGV4IGUyY2YwYjcuLjY5MTgwN2MgMTAwNjQ0Ci0tLSBhL3BuZy5jCisrKyBiL3BuZy5jCkBAIC0xLDcgKzEsNyBAQAogCiAvKiBwbmcuYyAtIGxvY2F0aW9uIGZvciBnZW5lcmFsIHB1cnBvc2UgbGlicG5nIGZ1bmN0aW9ucwogICoKLSAqIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCisgKiBsaWJwbmcgdmVyc2lvbiAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMQogICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKQEAgLTEzLDE0ICsxMywxNCBAQAogI2luY2x1ZGUgInBuZy5oIgogCiAvKiBHZW5lcmF0ZSBhIGNvbXBpbGVyIGVycm9yIGlmIHRoZXJlIGlzIGFuIG9sZCBwbmcuaCBpbiB0aGUgc2VhcmNoIHBhdGguICovCi10eXBlZGVmIHZlcnNpb25fMV8wXzExIFlvdXJfcG5nX2hfaXNfbm90X3ZlcnNpb25fMV8wXzExOwordHlwZWRlZiB2ZXJzaW9uXzFfMF8xMmJldGExIFlvdXJfcG5nX2hfaXNfbm90X3ZlcnNpb25fMV8wXzEyYmV0YTE7CiAKIC8qIFZlcnNpb24gaW5mb3JtYXRpb24gZm9yIEMgZmlsZXMuICBUaGlzIGhhZCBiZXR0ZXIgbWF0Y2ggdGhlIHZlcnNpb24KICAqIHN0cmluZyBkZWZpbmVkIGluIHBuZy5oLiAgKi8KIAogI2lmZGVmIFBOR19VU0VfR0xPQkFMX0FSUkFZUwogLyogcG5nX2xpYnBuZ192ZXIgd2FzIGNoYW5nZWQgdG8gYSBmdW5jdGlvbiBpbiB2ZXJzaW9uIDEuMC41YyAqLwotY29uc3QgY2hhciBwbmdfbGlicG5nX3ZlclsxOF0gPSAiMS4wLjExIjsKK2NvbnN0IGNoYXIgcG5nX2xpYnBuZ192ZXJbMThdID0gIjEuMC4xMmJldGExIjsKIAogLyogcG5nX3NpZyB3YXMgY2hhbmdlZCB0byBhIGZ1bmN0aW9uIGluIHZlcnNpb24gMS4wLjVjICovCiAvKiBQbGFjZSB0byBob2xkIHRoZSBzaWduYXR1cmUgc3RyaW5nIGZvciBhIFBORyBmaWxlLiAqLwpAQCAtMjEzLDEyICsyMTMsMTIgQEAKICAgIGlmKHBuZ19wdHIgPT0gTlVMTCkgcmV0dXJuIChOVUxMKTsKICNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECiAgICBpZiAoKGluZm9fcHRyID0gKHBuZ19pbmZvcClwbmdfY3JlYXRlX3N0cnVjdF8yKFBOR19TVFJVQ1RfSU5GTywKLSAgICAgIHBuZ19wdHItPm1hbGxvY19mbikpICE9IE5VTEwpCisgICAgICBwbmdfcHRyLT5tYWxsb2NfZm4sIHBuZ19wdHItPm1lbV9wdHIpKSAhPSBOVUxMKQogI2Vsc2UKICAgIGlmICgoaW5mb19wdHIgPSAocG5nX2luZm9wKXBuZ19jcmVhdGVfc3RydWN0KFBOR19TVFJVQ1RfSU5GTykpICE9IE5VTEwpCiAjZW5kaWYKICAgIHsKLSAgICAgIHBuZ19pbmZvX2luaXQoaW5mb19wdHIpOworICAgICAgcG5nX2luZm9faW5pdF8zKCZpbmZvX3B0ciwgc2l6ZW9mKHBuZ19pbmZvKSk7CiAgICB9CiAKICAgIHJldHVybiAoaW5mb19wdHIpOwpAQCAtMjQzLDcgKzI0Myw4IEBACiAgICAgICBwbmdfaW5mb19kZXN0cm95KHBuZ19wdHIsIGluZm9fcHRyKTsKIAogI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKLSAgICAgIHBuZ19kZXN0cm95X3N0cnVjdF8yKChwbmdfdm9pZHApaW5mb19wdHIsIHBuZ19wdHItPmZyZWVfZm4pOworICAgICAgcG5nX2Rlc3Ryb3lfc3RydWN0XzIoKHBuZ192b2lkcClpbmZvX3B0ciwgcG5nX3B0ci0+ZnJlZV9mbiwKKyAgICAgICAgICBwbmdfcHRyLT5tZW1fcHRyKTsKICNlbHNlCiAgICAgICBwbmdfZGVzdHJveV9zdHJ1Y3QoKHBuZ192b2lkcClpbmZvX3B0cik7CiAjZW5kaWYKQEAgLTI1NSwxMCArMjU2LDI4IEBACiAgKiBhbmQgYXBwbGljYXRpb25zIHVzaW5nIGl0IGFyZSB1cmdlZCB0byB1c2UgcG5nX2NyZWF0ZV9pbmZvX3N0cnVjdCgpCiAgKiBpbnN0ZWFkLgogICovCi12b2lkIC8qIFBSSVZBVEUgKi8KKyN1bmRlZiBwbmdfaW5mb19pbml0Cit2b2lkIFBOR0FQSQogcG5nX2luZm9faW5pdChwbmdfaW5mb3AgaW5mb19wdHIpCiB7Ci0gICBwbmdfZGVidWcoMSwgImluIHBuZ19pbmZvX2luaXRcbiIpOworICAgLyogV2Ugb25seSBjb21lIGhlcmUgdmlhIHByZS0xLjAuMTItY29tcGlsZWQgYXBwbGljYXRpb25zICovCisgICBwbmdfaW5mb19pbml0XzMoJmluZm9fcHRyLCAwKTsKK30KKwordm9pZCBQTkdBUEkKK3BuZ19pbmZvX2luaXRfMyhwbmdfaW5mb3BwIHB0cl9wdHIsIHBuZ19zaXplX3QgcG5nX2luZm9fc3RydWN0X3NpemUpCit7CisgICBwbmdfaW5mb3AgaW5mb19wdHIgPSAqcHRyX3B0cjsKKworICAgcG5nX2RlYnVnKDEsICJpbiBwbmdfaW5mb19pbml0XzNcbiIpOworCisgICBpZihzaXplb2YocG5nX2luZm8pID4gcG5nX2luZm9fc3RydWN0X3NpemUpCisgICAgIHsKKyAgICAgICBwbmdfZGVzdHJveV9zdHJ1Y3QoaW5mb19wdHIpOworICAgICAgIGluZm9fcHRyID0gKHBuZ19pbmZvcClwbmdfY3JlYXRlX3N0cnVjdChQTkdfU1RSVUNUX0lORk8pOworICAgICAgICpwdHJfcHRyID0gaW5mb19wdHI7CisgICAgIH0KKwogICAgLyogc2V0IGV2ZXJ5dGhpbmcgdG8gMCAqLwogICAgcG5nX21lbXNldChpbmZvX3B0ciwgMCwgc2l6ZW9mIChwbmdfaW5mbykpOwogfQpAQCAtNTM3LDcgKzU1Niw3IEBACiAgICB9CiAjZW5kaWYKIAotICAgcG5nX2luZm9faW5pdChpbmZvX3B0cik7CisgICBwbmdfaW5mb19pbml0XzMoJmluZm9fcHRyLCBzaXplb2YocG5nX2luZm8pKTsKIH0KIAogLyogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgaW9fcHRyIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlcgpAQCAtNjI3LDcgKzY0Niw3IEBACiBwbmdfZ2V0X2NvcHlyaWdodChwbmdfc3RydWN0cCBwbmdfcHRyKQogewogICAgaWYgKHBuZ19wdHIgIT0gTlVMTCB8fCBwbmdfcHRyID09IE5VTEwpICAvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcgKi8KLSAgIHJldHVybiAoKHBuZ19jaGFycCkgIlxuIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxXG5cCisgICByZXR1cm4gKChwbmdfY2hhcnApICJcbiBsaWJwbmcgdmVyc2lvbiAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMVxuXAogICAgQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uXG5cCiAgICBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXJcblwKICAgIENvcHlyaWdodCAoYykgMTk5NSwgMTk5NiBHdXkgRXJpYyBTY2hhbG5hdCwgR3JvdXAgNDIsIEluYy5cbiIpOwpAQCAtNjQ1LDggKzY2NCw4IEBACiB7CiAgICAvKiBWZXJzaW9uIG9mICouYyBmaWxlcyB1c2VkIHdoZW4gYnVpbGRpbmcgbGlicG5nICovCiAgICBpZihwbmdfcHRyICE9IE5VTEwpIC8qIHNpbGVuY2UgY29tcGlsZXIgd2FybmluZyBhYm91dCB1bnVzZWQgcG5nX3B0ciAqLwotICAgICAgcmV0dXJuKChwbmdfY2hhcnApICIxLjAuMTEiKTsKLSAgIHJldHVybigocG5nX2NoYXJwKSAiMS4wLjExIik7CisgICAgICByZXR1cm4oKHBuZ19jaGFycCkgIjEuMC4xMmJldGExIik7CisgICByZXR1cm4oKHBuZ19jaGFycCkgIjEuMC4xMmJldGExIik7CiB9CiAKIHBuZ19jaGFycCBQTkdBUEkKQEAgLTY5NiwxNyArNzE1LDE1IEBACiBwbmdfYWNjZXNzX3ZlcnNpb25fbnVtYmVyKHZvaWQpCiB7CiAgICAvKiBWZXJzaW9uIG9mICouYyBmaWxlcyB1c2VkIHdoZW4gYnVpbGRpbmcgbGlicG5nICovCi0gICByZXR1cm4oKHBuZ191aW50XzMyKSAxMDAxMUwpOworICAgcmV0dXJuKChwbmdfdWludF8zMikgMTAwMTJMKTsKIH0KIAotCi0jaWYgMCAvKiBkZWxheSB0aGlzIHVudGlsIHZlcnNpb24gMS4yLjAgKi8KLS8qIHRoaXMgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIGxpYnBuZyAxLjAuOSAocG9ydGluZyBhaWQgdG8gbGlicG5nLTEuMi4wKSAqLwotI2lmbmRlZiBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVECisvKiB0aGlzIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byBsaWJwbmcgMS4yLjAgKi8KKyNpZiAhZGVmaW5lZChQTkdfVVNFX1BOR0dDQ1JEKSAmJiBcCisgICAgIShkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpICYmIGRlZmluZWQoUE5HX1VTRV9QTkdWQ1JEKSkKIGludCBQTkdBUEkKIHBuZ19tbXhfc3VwcG9ydCh2b2lkKQogewogICAgIHJldHVybiAtMTsKIH0KICNlbmRpZgotI2VuZGlmIC8qIDAgKi8KZGlmZiAtLWdpdCBhL3BuZy5oIGIvcG5nLmgKaW5kZXggYThmYzQwYy4uMDNhMmJjMSAxMDA2NDQKLS0tIGEvcG5nLmgKKysrIGIvcG5nLmgKQEAgLTEsNyArMSw3IEBACiAKIC8qIHBuZy5oIC0gaGVhZGVyIGZpbGUgZm9yIFBORyByZWZlcmVuY2UgbGlicmFyeQogICoKLSAqIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCisgKiBsaWJwbmcgdmVyc2lvbiAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMQogICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKQEAgLTksNyArOSw3IEBACiAgKiBBdXRob3JzIGFuZCBtYWludGFpbmVyczoKICAqICBsaWJwbmcgdmVyc2lvbnMgMC43MSwgTWF5IDE5OTUsIHRocm91Z2ggMC44OCwgSmFudWFyeSAxOTk2OiBHdXkgU2NoYWxuYXQKICAqICBsaWJwbmcgdmVyc2lvbnMgMC44OWMsIEp1bmUgMTk5NiwgdGhyb3VnaCAwLjk2LCBNYXkgMTk5NzogQW5kcmVhcyBEaWxnZXIKLSAqICBsaWJwbmcgdmVyc2lvbnMgMC45NywgSmFudWFyeSAxOTk4LCB0aHJvdWdoIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxOiBHbGVubgorICogIGxpYnBuZyB2ZXJzaW9ucyAwLjk3LCBKYW51YXJ5IDE5OTgsIHRocm91Z2ggMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDE6IEdsZW5uCiAgKiAgU2VlIGFsc28gIkNvbnRyaWJ1dGluZyBBdXRob3JzIiwgYmVsb3cuCiAgKgogICogTm90ZSBhYm91dCBsaWJwbmcgdmVyc2lvbiBudW1iZXJzOgpAQCAtNzAsNiArNzAsMTAgQEAKICAqICAgIDEuMC4xMWJldGExLTMgICAgICAgICAgICAxICAgIDEwMDExICAyLjEuMC4xMWJldGExLTMKICAqICAgIDEuMC4xMXJjMSAgICAgICAgICAgICAgICAxICAgIDEwMDExICAyLjEuMC4xMXJjMQogICogICAgMS4wLjExICAgICAgICAgICAgICAgICAgIDEgICAgMTAwMTEgIDIuMS4wLjExCisgKiAgICAxLjAuMTJiZXRhMSAgICAgICAgICAgICAgMiAgICAxMDAxMiAgMi4xLjAuMTFiZXRhMQorICogICAgMS4xLjBhLWYgICAgICAgICAgICAgICAgIDEgICAgMTAxMDAgIDIuMS4xLjBhLWYgKGJyYW5jaCBhYmFuZG9uZWQpCisgKiAgICAxLjIuMGJldGExLTIgICAgICAgICAgICAgMiAgICAxMDIwMCAgMi4xLjIuMGJldGExLTIKKyAqICAgIDEuMi4wYmV0YTMgICAgICAgICAgICAgICAzICAgIDEwMjAwICAzLjEuMi4wYmV0YTMKICAqCiAgKiAgICBIZW5jZWZvcnRoIHRoZSBzb3VyY2UgdmVyc2lvbiB3aWxsIG1hdGNoIHRoZSBzaGFyZWQtbGlicmFyeSBtYWpvcgogICogICAgYW5kIG1pbm9yIG51bWJlcnM7IHRoZSBzaGFyZWQtbGlicmFyeSBtYWpvciB2ZXJzaW9uIG51bWJlciB3aWxsIGJlCkBAIC05OSw3ICsxMDMsNyBAQAogICogSWYgeW91IG1vZGlmeSBsaWJwbmcgeW91IG1heSBpbnNlcnQgYWRkaXRpb25hbCBub3RpY2VzIGltbWVkaWF0ZWx5IGZvbGxvd2luZwogICogdGhpcyBzZW50ZW5jZS4KICAqCi0gKiBsaWJwbmcgdmVyc2lvbnMgMS4wLjcsIEp1bHkgMSwgMjAwMCwgdGhyb3VnaCAgMS4wLjExLCBBcHJpbCAyNywgMjAwMSwgYXJlCisgKiBsaWJwbmcgdmVyc2lvbnMgMS4wLjcsIEp1bHkgMSwgMjAwMCwgdGhyb3VnaCAgMS4wLjEyYmV0YTEsIE1heSAxNCwgMjAwMSwgYXJlCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uLCBhbmQgYXJlCiAgKiBkaXN0cmlidXRlZCBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgZGlzY2xhaW1lciBhbmQgbGljZW5zZSBhcyBsaWJwbmctMS4wLjYKICAqIHdpdGggdGhlIGZvbGxvd2luZyBpbmRpdmlkdWFscyBhZGRlZCB0byB0aGUgbGlzdCBvZiBDb250cmlidXRpbmcgQXV0aG9ycwpAQCAtMjA0LDEzICsyMDgsMTMgQEAKICAqIFkySyBjb21wbGlhbmNlIGluIGxpYnBuZzoKICAqID09PT09PT09PT09PT09PT09PT09PT09PT0KICAqCi0gKiAgICBBcHJpbCAyNywgMjAwMQorICogICAgTWF5IDE0LCAyMDAxCiAgKgogICogICAgU2luY2UgdGhlIFBORyBEZXZlbG9wbWVudCBncm91cCBpcyBhbiBhZC1ob2MgYm9keSwgd2UgY2FuJ3QgbWFrZQogICogICAgYW4gb2ZmaWNpYWwgZGVjbGFyYXRpb24uCiAgKgogICogICAgVGhpcyBpcyB5b3VyIHVub2ZmaWNpYWwgYXNzdXJhbmNlIHRoYXQgbGlicG5nIGZyb20gdmVyc2lvbiAwLjcxIGFuZAotICogICAgdXB3YXJkIHRocm91Z2ggMS4wLjExIGFyZSBZMksgY29tcGxpYW50LiAgSXQgaXMgbXkgYmVsaWVmIHRoYXQgZWFybGllcgorICogICAgdXB3YXJkIHRocm91Z2ggMS4wLjEyYmV0YTEgYXJlIFkySyBjb21wbGlhbnQuICBJdCBpcyBteSBiZWxpZWYgdGhhdCBlYXJsaWVyCiAgKiAgICB2ZXJzaW9ucyB3ZXJlIGFsc28gWTJLIGNvbXBsaWFudC4KICAqCiAgKiAgICBMaWJwbmcgb25seSBoYXMgdGhyZWUgeWVhciBmaWVsZHMuICBPbmUgaXMgYSAyLWJ5dGUgdW5zaWduZWQgaW50ZWdlcgpAQCAtMjY2LDcgKzI3MCw3IEBACiAgKi8KIAogLyogVmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgcG5nLmggLSB0aGlzIHNob3VsZCBtYXRjaCB0aGUgdmVyc2lvbiBpbiBwbmcuYyAqLwotI2RlZmluZSBQTkdfTElCUE5HX1ZFUl9TVFJJTkcgIjEuMC4xMSIKKyNkZWZpbmUgUE5HX0xJQlBOR19WRVJfU1RSSU5HICIxLjAuMTJiZXRhMSIKIAogI2RlZmluZSBQTkdfTElCUE5HX1ZFUl9TT05VTSAgIDIKICNkZWZpbmUgUE5HX0xJQlBOR19WRVJfRExMTlVNICAlRExMTlVNJQpAQCAtMjc0LDExICsyNzgsMTEgQEAKIC8qIFRoZXNlIHNob3VsZCBtYXRjaCB0aGUgZmlyc3QgMyBjb21wb25lbnRzIG9mIFBOR19MSUJQTkdfVkVSX1NUUklORzogKi8KICNkZWZpbmUgUE5HX0xJQlBOR19WRVJfTUFKT1IgICAxCiAjZGVmaW5lIFBOR19MSUJQTkdfVkVSX01JTk9SICAgMAotI2RlZmluZSBQTkdfTElCUE5HX1ZFUl9SRUxFQVNFIDExCisjZGVmaW5lIFBOR19MSUJQTkdfVkVSX1JFTEVBU0UgMTIKIC8qIFRoaXMgc2hvdWxkIG1hdGNoIHRoZSBudW1lcmljIHBhcnQgb2YgdGhlIGZpbmFsIGNvbXBvbmVudCBvZgogICogUE5HX0xJQlBOR19WRVJfU1RSSU5HLCBvbWl0dGluZyBhbnkgbGVhZGluZyB6ZXJvOiAqLwogCi0jZGVmaW5lIFBOR19MSUJQTkdfVkVSX0JVSUxEICAwCisjZGVmaW5lIFBOR19MSUJQTkdfVkVSX0JVSUxEICAxCiAKICNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9BTFBIQSAgICAxCiAjZGVmaW5lIFBOR19MSUJQTkdfQlVJTERfQkVUQSAgICAgMgpAQCAtMjg2LDE0ICsyOTAsMTQgQEAKICNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9TVEFCTEUgICA0CiAjZGVmaW5lIFBOR19MSUJQTkdfQlVJTERfVFlQRU1BU0sgNwogI2RlZmluZSBQTkdfTElCUE5HX0JVSUxEX1BBVENIICAgIDggLyogQ2FuIGJlIE9SJ2VkIHdpdGggU1RBQkxFIG9ubHkgKi8KLSNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9UWVBFIDQKKyNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9UWVBFIDIKIAogLyogQ2FyZWZ1bCBoZXJlLiAgQXQgb25lIHRpbWUsIEd1eSB3YW50ZWQgdG8gdXNlIDA4MiwgYnV0IHRoYXQgd291bGQgYmUgb2N0YWwuCiAgKiBXZSBtdXN0IG5vdCBpbmNsdWRlIGxlYWRpbmcgemVyb3MuCiAgKiBWZXJzaW9ucyAwLjcgdGhyb3VnaCAxLjAuMCB3ZXJlIGluIHRoZSByYW5nZSAwIHRvIDEwMCBoZXJlIChvbmx5CiAgKiB2ZXJzaW9uIDEuMC4wIHdhcyBtaXMtbnVtYmVyZWQgMTAwIGluc3RlYWQgb2YgMTAwMDApLiAgRnJvbQogICogdmVyc2lvbiAxLjAuMSBpdCdzICAgIHh4eXl6eiwgd2hlcmUgeD1tYWpvciwgeT1taW5vciwgej1yZWxlYXNlICovCi0jZGVmaW5lIFBOR19MSUJQTkdfVkVSIDEwMDExIC8qIDEuMC4xMSAqLworI2RlZmluZSBQTkdfTElCUE5HX1ZFUiAxMDAxMiAvKiAxLjAuMTIgKi8KIAogI2lmbmRlZiBQTkdfVkVSU0lPTl9JTkZPX09OTFkKIApAQCAtNjk5LDYgKzcwMyw3IEBACiAgICBwbmdfYnl0ZSBwY2FsX25wYXJhbXM7ICAgLyogbnVtYmVyIG9mIHBhcmFtZXRlcnMgZ2l2ZW4gaW4gcGNhbF9wYXJhbXMgKi8KICNlbmRpZgogCisvKiBOZXcgbWVtYmVycyBhZGRlZCBpbiBsaWJwbmctMS4wLjYgKi8KICNpZmRlZiBQTkdfRlJFRV9NRV9TVVBQT1JURUQKICAgIHBuZ191aW50XzMyIGZyZWVfbWU7ICAgICAvKiBmbGFncyBpdGVtcyBsaWJwbmcgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgKi8KICNlbmRpZgpAQCAtMTEzOSwxMiArMTE0NCw2IEBACiAgICBwbmdfY2hhcnAgdGltZV9idWZmZXI7ICAgICAgICAgICAgLyogU3RyaW5nIHRvIGhvbGQgUkZDIDExMjMgdGltZSB0ZXh0ICovCiAjZW5kaWYKIAotI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKLSAgIHBuZ192b2lkcCBtZW1fcHRyOyAgICAgICAgICAgICAgICAvKiB1c2VyIHN1cHBsaWVkIHN0cnVjdCBmb3IgbWVtIGZ1bmN0aW9ucyAqLwotICAgcG5nX21hbGxvY19wdHIgbWFsbG9jX2ZuOyAgICAgICAgIC8qIGZ1bmN0aW9uIGZvciBhbGxvY2F0aW5nIG1lbW9yeSAqLwotICAgcG5nX2ZyZWVfcHRyIGZyZWVfZm47ICAgICAgICAgICAgIC8qIGZ1bmN0aW9uIGZvciBmcmVlaW5nIG1lbW9yeSAqLwotI2VuZGlmCi0KIC8qIE5ldyBtZW1iZXJzIGFkZGVkIGluIGxpYnBuZy0xLjAuNiAqLwogCiAjaWZkZWYgUE5HX0ZSRUVfTUVfU1VQUE9SVEVECkBAIC0xMTYxLDM1ICsxMTYwLDU5IEBACiAgICBwbmdfYnl0ZXAgY2h1bmtfbGlzdDsKICNlbmRpZgogCisvKiBOZXcgbWVtYmVycyBhZGRlZCBpbiBsaWJwbmctMS4wLjMgKi8KICNpZiBkZWZpbmVkKFBOR19SRUFEX1JHQl9UT19HUkFZX1NVUFBPUlRFRCkKICAgIHBuZ19ieXRlIHJnYl90b19ncmF5X3N0YXR1czsKKyAgIC8qIFRoZXNlIHdlcmUgY2hhbmdlZCBmcm9tIHBuZ19ieXRlIGluIGxpYnBuZy0xLjAuNiAqLwogICAgcG5nX3VpbnRfMTYgcmdiX3RvX2dyYXlfcmVkX2NvZWZmOwogICAgcG5nX3VpbnRfMTYgcmdiX3RvX2dyYXlfZ3JlZW5fY29lZmY7CiAgICBwbmdfdWludF8xNiByZ2JfdG9fZ3JheV9ibHVlX2NvZWZmOwogI2VuZGlmCiAKKy8qIE5ldyBtZW1iZXIgYWRkZWQgaW4gbGlicG5nLTEuMC40IChyZW5hbWVkIGluIDEuMC45KSAqLwogI2lmIGRlZmluZWQoUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQpIHx8IFwKICAgICBkZWZpbmVkKFBOR19SRUFEX0VNUFRZX1BMVEVfU1VQUE9SVEVEKSB8fCBcCiAgICAgZGVmaW5lZChQTkdfV1JJVEVfRU1QVFlfUExURV9TVVBQT1JURUQpCi0vKiBOb3RlIHRvIG1haW50YWluZXI6IGNoYW5nZSB0aGlzIHRvIHBuZ191aW50XzMyIGF0IG5leHQgb3Bwb3J0dW5pdHkgKi8KKy8qIGNoYW5nZWQgZnJvbSBwbmdfYnl0ZSB0byBwbmdfdWludF8zMiBhdCB2ZXJzaW9uIDEuMi4wICovCiAgICBwbmdfYnl0ZSBtbmdfZmVhdHVyZXNfcGVybWl0dGVkOwogI2VuZGlmCiAKKy8qIE5ldyBtZW1iZXIgYWRkZWQgaW4gbGlicG5nLTEuMC43ICovCiAjaWYgZGVmaW5lZChQTkdfUkVBRF9HQU1NQV9TVVBQT1JURUQpIHx8IGRlZmluZWQoUE5HX1JFQURfQkFDS0dST1VORF9TVVBQT1JURUQpCiAgICBwbmdfZml4ZWRfcG9pbnQgaW50X2dhbW1hOwogI2VuZGlmCiAKKy8qIE5ldyBtZW1iZXIgYWRkZWQgaW4gbGlicG5nLTEuMC45LCBpZmRlZidlZCBvdXQgaW4gMS4wLjEyLCBlbmFibGVkIGluIDEuMi4wICovCisjaWYgZGVmaW5lZChQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCkKICAgIHBuZ19ieXRlIGZpbHRlcl90eXBlOworI2VuZGlmCiAKKyNpZiBkZWZpbmVkKFBOR19ERUJVRykgJiYgZGVmaW5lZChQTkdfVVNFX1BOR0dDQ1JEKQorLyogTmV3IG1lbWJlciBhZGRlZCBpbiBsaWJwbmctMS4wLjEwLCBpZmRlZidlZCBvdXQgaW4gMS4yLjAgKi8KICAgIHBuZ191aW50XzMyIHJvd19idWZfc2l6ZTsKKyNlbmRpZgorCisvKiBOZXcgbWVtYmVycyBhZGRlZCBpbiBsaWJwbmctMS4yLjAgKi8KKyNpZiBkZWZpbmVkKFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQpCisgICBwbmdfYnl0ZSAgICAgbW14X2JpdGRlcHRoX3RocmVzaG9sZDsKKyAgIHBuZ191aW50XzMyICBtbXhfcm93Ynl0ZXNfdGhyZXNob2xkOworICAgcG5nX3VpbnRfMzIgIGFzbV9mbGFnczsKKyNlbmRpZgorCisvKiBOZXcgbWVtYmVycyBhZGRlZCBpbiBsaWJwbmctMS4wLjIgYnV0IGZpcnN0IGVuYWJsZWQgYnkgZGVmYXVsdCBpbiAxLjIuMCAqLworI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKKyAgIHBuZ192b2lkcCBtZW1fcHRyOyAgICAgICAgICAgICAgICAvKiB1c2VyIHN1cHBsaWVkIHN0cnVjdCBmb3IgbWVtIGZ1bmN0aW9ucyAqLworICAgcG5nX21hbGxvY19wdHIgbWFsbG9jX2ZuOyAgICAgICAgIC8qIGZ1bmN0aW9uIGZvciBhbGxvY2F0aW5nIG1lbW9yeSAqLworICAgcG5nX2ZyZWVfcHRyIGZyZWVfZm47ICAgICAgICAgICAgIC8qIGZ1bmN0aW9uIGZvciBmcmVlaW5nIG1lbW9yeSAqLworI2VuZGlmCiAKIH07CiAKIAogLyogVGhpcyBwcmV2ZW50cyBhIGNvbXBpbGVyIGVycm9yIGluIHBuZ19nZXRfY29weXJpZ2h0KCkgaW4gcG5nLmMgaWYgcG5nLmMKLWFuZCBwbmcuaCBhcmUgYm90aCBhdCAqIHZlcnNpb24gMS4wLjExCisgICBhbmQgcG5nLmggYXJlIGJvdGggYXQgdmVyc2lvbiAxLjAuMTJiZXRhMQogICovCi10eXBlZGVmIHBuZ19zdHJ1Y3RwIHZlcnNpb25fMV8wXzExOwordHlwZWRlZiBwbmdfc3RydWN0cCB2ZXJzaW9uXzFfMF8xMmJldGExOwogCiB0eXBlZGVmIHBuZ19zdHJ1Y3QgRkFSICogRkFSICogcG5nX3N0cnVjdHBwOwogCkBAIC0xMjQwLDYgKzEyNjMsNyBAQAogLyogUmVzZXQgdGhlIGNvbXByZXNzaW9uIHN0cmVhbSAqLwogZXh0ZXJuIFBOR19FWFBPUlQoaW50LHBuZ19yZXNldF96c3RyZWFtKSBQTkdBUkcoKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpKTsKIAorLyogTmV3IGZ1bmN0aW9ucyBhZGRlZCBpbiBsaWJwbmctMS4wLjIgKG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQgdW50aWwgMS4yLjApICovCiAjaWZkZWYgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAogZXh0ZXJuIFBOR19FWFBPUlQocG5nX3N0cnVjdHAscG5nX2NyZWF0ZV9yZWFkX3N0cnVjdF8yKQogICAgUE5HQVJHKChwbmdfY29uc3RfY2hhcnAgdXNlcl9wbmdfdmVyLCBwbmdfdm9pZHAgZXJyb3JfcHRyLApAQCAtMTI3MCw4ICsxMjk0LDExIEBACiBleHRlcm4gUE5HX0VYUE9SVChwbmdfaW5mb3AscG5nX2NyZWF0ZV9pbmZvX3N0cnVjdCkKICAgIFBOR0FSRygocG5nX3N0cnVjdHAgcG5nX3B0cikpOwogCi0vKiBJbml0aWFsaXplIHRoZSBpbmZvIHN0cnVjdHVyZSAob2xkIGludGVyZmFjZSAtIE5PVCBETEwgRVhQT1JURUQpICovCi1leHRlcm4gdm9pZCBwbmdfaW5mb19pbml0IFBOR0FSRygocG5nX2luZm9wIGluZm9fcHRyKSk7CisvKiBJbml0aWFsaXplIHRoZSBpbmZvIHN0cnVjdHVyZSAob2xkIGludGVyZmFjZSAtIERFUFJFQ0FURUQpICovCitleHRlcm4gUE5HX0VYUE9SVCh2b2lkLHBuZ19pbmZvX2luaXQpIFBOR0FSRygocG5nX2luZm9wIGluZm9fcHRyKSk7CisjZGVmaW5lIHBuZ19pbmZvX2luaXQoaW5mb19wdHIpIHBuZ19pbmZvX2luaXRfMygmaW5mb19wdHIsIHNpemVvZihwbmdfaW5mbykpOworZXh0ZXJuIFBOR19FWFBPUlQodm9pZCxwbmdfaW5mb19pbml0XzMpIFBOR0FSRygocG5nX2luZm9wcCBpbmZvX3B0ciwKKyAgICBwbmdfc2l6ZV90IHBuZ19pbmZvX3N0cnVjdF9zaXplKSk7CiAKIC8qIFdyaXRlcyBhbGwgdGhlIFBORyBpbmZvcm1hdGlvbiBiZWZvcmUgdGhlIGltYWdlLiAqLwogZXh0ZXJuIFBOR19FWFBPUlQodm9pZCxwbmdfd3JpdGVfaW5mb19iZWZvcmVfUExURSkgUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyLApAQCAtMjIyOSwxNSArMjI1NiwyMyBAQAogICAgcG5nX3B0ciwgcG5nX3VpbnRfMzIgbW5nX2ZlYXR1cmVzX3Blcm1pdHRlZCkpOwogI2VuZGlmCiAKLSNpZiAwIC8qIGRlbGF5IHRoZXNlIHVudGlsIHZlcnNpb24gMS4yLjAgKi8KKy8qIHBuZ19tbXhfc3VwcG9ydCB3aWxsIGJlIGluY2x1ZGVkIHVuY29uZGl0aW9uYWxseSBzdGFydGluZyBpbiB2ZXJzaW9uIDEuMi4wICovCisjaWYgZGVmaW5lZChQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKSB8fCBkZWZpbmVkKFBOR19VU0VfUE5HR0NDUkQpCiAvKiBwbmcuYywgcG5nZ2NjcmQuYywgb3IgcG5ndmNyZC5jICovCiBleHRlcm4gUE5HX0VYUE9SVChpbnQscG5nX21teF9zdXBwb3J0KSBQTkdBUkcoKHZvaWQpKTsKKyNlbmRpZiAvKiBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEICovCisKKy8qIFN0cmlwIHRoZSBwcmVwZW5kZWQgZXJyb3IgbnVtYmVycyAoIiNubm4gIikgZnJvbSBlcnJvciBhbmQgd2FybmluZworICogbWVzc2FnZXMgYmVmb3JlIHBhc3NpbmcgdGhlbSB0byB0aGUgZXJyb3Igb3Igd2FybmluZyBoYW5kbGVyLiAqLworI2lmZGVmIFBOR19FUlJPUl9OVU1CRVJTX1NVUFBPUlRFRAorZXh0ZXJuIFBOR19FWFBPUlQodm9pZCxwbmdfc2V0X3N0cmlwX2Vycm9yX251bWJlcnMpIFBOR0FSRygocG5nX3N0cnVjdHAKKyAgIHBuZ19wdHIsIHBuZ191aW50XzMyIHN0cmlwX21vZGUpKTsKICNlbmRpZgogCiAvKiBNYWludGFpbmVyOiBQdXQgbmV3IHB1YmxpYyBwcm90b3R5cGVzIGhlcmUgXiwgaW4gbGlicG5nLjMsIGFuZCBwcm9qZWN0IGRlZnMgKi8KIAogI2RlZmluZSBQTkdfSEVBREVSX1ZFUlNJT05fU1RSSU5HIFwKLSAgICIgbGlicG5nIHZlcnNpb24gMS4wLjExIC0gQXByaWwgMjcsIDIwMDEgKGhlYWRlcilcbiIKKyAgICIgbGlicG5nIHZlcnNpb24gMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEgKGhlYWRlcilcbiIKIAogI2lmZGVmIFBOR19SRUFEX0NPTVBPU0lURV9OT0RJVl9TVVBQT1JURUQKIC8qIFdpdGggdGhlc2Ugcm91dGluZXMgd2UgYXZvaWQgYW4gaW50ZWdlciBkaXZpZGUsIHdoaWNoIHdpbGwgYmUgc2xvd2VyIG9uCkBAIC0yMzYwLDYgKzIzOTUsOCBAQAogI2RlZmluZSBQTkdfRkxBR19LRUVQX1VOS05PV05fQ0hVTktTICAgICAgMHg4MDAwTAogI2RlZmluZSBQTkdfRkxBR19LRUVQX1VOU0FGRV9DSFVOS1MgICAgICAgMHgxMDAwMEwKICNkZWZpbmUgUE5HX0ZMQUdfTElCUkFSWV9NSVNNQVRDSCAgICAgICAgIDB4MjAwMDBMCisjZGVmaW5lIFBOR19GTEFHX1NUUklQX0VSUk9SX05VTUJFUlMgICAgICAweDQwMDAwTAorI2RlZmluZSBQTkdfRkxBR19TVFJJUF9FUlJPUl9URVhUICAgICAgICAgMHg4MDAwMEwKIAogLyogRm9yIHVzZSBpbiBwbmdfc2V0X2tlZXBfdW5rbm93biwgcG5nX2hhbmRsZV9hc191bmtub3duICovCiAjZGVmaW5lIEhBTkRMRV9DSFVOS19BU19ERUZBVUxUICAgMApAQCAtMjQ2OCw4ICsyNTA1LDEwIEBACiAgKiAob2xkIGludGVyZmFjZSAtIERFUFJFQ0FURUQgLSB1c2UgcG5nX2NyZWF0ZV9yZWFkX3N0cnVjdCBpbnN0ZWFkKS4KICAqLwogZXh0ZXJuIFBOR19FWFBPUlQodm9pZCxwbmdfcmVhZF9pbml0KSBQTkdBUkcoKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpKTsKLSNkZWZpbmUgcG5nX3JlYWRfaW5pdChwbmdfcHRyKSBwbmdfcmVhZF9pbml0XzIocG5nX3B0ciwgXAotICAgIFBOR19MSUJQTkdfVkVSX1NUUklORywgIHNpemVvZihwbmdfc3RydWN0KSwgc2l6ZW9mKHBuZ19pbmZvKSk7CisjZGVmaW5lIHBuZ19yZWFkX2luaXQocG5nX3B0cikgcG5nX3JlYWRfaW5pdF8zKCZwbmdfcHRyLCBcCisgICAgUE5HX0xJQlBOR19WRVJfU1RSSU5HLCAgc2l6ZW9mKHBuZ19zdHJ1Y3QpKTsKK2V4dGVybiBQTkdfRVhQT1JUKHZvaWQscG5nX3JlYWRfaW5pdF8zKSBQTkdBUkcoKHBuZ19zdHJ1Y3RwcCBwdHJfcHRyLAorICAgIHBuZ19jb25zdF9jaGFycCB1c2VyX3BuZ192ZXIsIHBuZ19zaXplX3QgcG5nX3N0cnVjdF9zaXplKSk7CiBleHRlcm4gUE5HX0VYUE9SVCh2b2lkLHBuZ19yZWFkX2luaXRfMikgUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyLAogICAgIHBuZ19jb25zdF9jaGFycCB1c2VyX3BuZ192ZXIsIHBuZ19zaXplX3QgcG5nX3N0cnVjdF9zaXplLCBwbmdfc2l6ZV90CiAgICAgcG5nX2luZm9fc2l6ZSkpOwpAQCAtMjQ3OCw4ICsyNTE3LDEwIEBACiAgKiAob2xkIGludGVyZmFjZSAtIERFUFJFQ0FURUQgLSB1c2UgcG5nX2NyZWF0ZV93cml0ZV9zdHJ1Y3QgaW5zdGVhZCkuCiAgKi8KIGV4dGVybiBQTkdfRVhQT1JUKHZvaWQscG5nX3dyaXRlX2luaXQpIFBOR0FSRygocG5nX3N0cnVjdHAgcG5nX3B0cikpOwotI2RlZmluZSBwbmdfd3JpdGVfaW5pdChwbmdfcHRyKSBwbmdfd3JpdGVfaW5pdF8yKHBuZ19wdHIsIFwKLSAgICBQTkdfTElCUE5HX1ZFUl9TVFJJTkcsIHNpemVvZihwbmdfc3RydWN0KSwgc2l6ZW9mKHBuZ19pbmZvKSk7CisjZGVmaW5lIHBuZ193cml0ZV9pbml0KHBuZ19wdHIpIHBuZ193cml0ZV9pbml0XzMoJnBuZ19wdHIsIFwKKyAgICBQTkdfTElCUE5HX1ZFUl9TVFJJTkcsIHNpemVvZihwbmdfc3RydWN0KSk7CitleHRlcm4gUE5HX0VYUE9SVCh2b2lkLHBuZ193cml0ZV9pbml0XzMpIFBOR0FSRygocG5nX3N0cnVjdHBwIHB0cl9wdHIsCisgICAgcG5nX2NvbnN0X2NoYXJwIHVzZXJfcG5nX3ZlciwgcG5nX3NpemVfdCBwbmdfc3RydWN0X3NpemUpKTsKIGV4dGVybiBQTkdfRVhQT1JUKHZvaWQscG5nX3dyaXRlX2luaXRfMikgUE5HQVJHKChwbmdfc3RydWN0cCBwbmdfcHRyLAogICAgIHBuZ19jb25zdF9jaGFycCB1c2VyX3BuZ192ZXIsIHBuZ19zaXplX3QgcG5nX3N0cnVjdF9zaXplLCBwbmdfc2l6ZV90CiAgICAgcG5nX2luZm9fc2l6ZSkpOwpAQCAtMjQ5MSw5ICsyNTMyLDkgQEAKIFBOR19FWFRFUk4gdm9pZCBwbmdfZGVzdHJveV9zdHJ1Y3QgUE5HQVJHKChwbmdfdm9pZHAgc3RydWN0X3B0cikpOwogCiBQTkdfRVhURVJOIHBuZ192b2lkcCBwbmdfY3JlYXRlX3N0cnVjdF8yIFBOR0FSRygoaW50IHR5cGUsIHBuZ19tYWxsb2NfcHRyCi0gIG1hbGxvY19mbikpOworICBtYWxsb2NfZm4sIHBuZ192b2lkcCBtZW1fcHRyKSk7CiBQTkdfRVhURVJOIHZvaWQgcG5nX2Rlc3Ryb3lfc3RydWN0XzIgUE5HQVJHKChwbmdfdm9pZHAgc3RydWN0X3B0ciwKLSAgIHBuZ19mcmVlX3B0ciBmcmVlX2ZuKSk7CisgICBwbmdfZnJlZV9wdHIgZnJlZV9mbiwgcG5nX3ZvaWRwIG1lbV9wdHIpKTsKIAogLyogRnJlZSBhbnkgbWVtb3J5IHRoYXQgaW5mb19wdHIgcG9pbnRzIHRvIGFuZCByZXNldCBzdHJ1Y3QuICovCiBQTkdfRVhURVJOIHZvaWQgcG5nX2luZm9fZGVzdHJveSBQTkdBUkcoKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsCmRpZmYgLS1naXQgYS9wbmdhc21yZC5oIGIvcG5nYXNtcmQuaAppbmRleCAxZWQxMGU0Li43MjhmZWM5IDEwMDY0NAotLS0gYS9wbmdhc21yZC5oCisrKyBiL3BuZ2FzbXJkLmgKQEAgLTEsNiArMSw2IEBACiAvKiBwbmdhc21yZC5oIC0gYXNzZW1ibGVyIHZlcnNpb24gb2YgdXRpbGl0aWVzIHRvIHJlYWQgYSBQTkcgZmlsZQogICoKLSAqIGxpYnBuZyAxLjAuMTEgLSBBcHJpbCAyNywgMjAwMQorICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqCmRpZmYgLS1naXQgYS9wbmdjb25mLmggYi9wbmdjb25mLmgKaW5kZXggMTRhMDcwNy4uMzUxNTA3OCAxMDA2NDQKLS0tIGEvcG5nY29uZi5oCisrKyBiL3BuZ2NvbmYuaApAQCAtMSw2ICsxLDYgQEAKIC8qIHBuZ2NvbmYuaCAtIG1hY2hpbmUgY29uZmlndXJhYmxlIGZpbGUgZm9yIGxpYnBuZwogICoKLSAqIGxpYnBuZyAxLjAuMTEgLSBBcHJpbCAyNywgMjAwMQorICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCkBAIC00NSw4ICs0NSw4IEBACiAjICBkZWZpbmUgUE5HX1dSSVRFX1NVUFBPUlRFRAogI2VuZGlmCiAKLS8qIEVuYWJsZSBpZiB5b3UgbmVlZCB0byBzdXBwb3J0IFBOR3MgdGhhdCBhcmUgZW1iZWRkZWQgaW4gTU5HCi0gICBkYXRhc3RyZWFtcyAqLworLyogRW5hYmxlZCBieSBkZWZhdWx0IGluIDEuMi4wLiAgWW91IGNhbiBkaXNhYmxlIHRoaXMgaWYgeW91IGRvbid0IG5lZWQgdG8KKyAgIHN1cHBvcnQgUE5HcyB0aGF0IGFyZSBlbWJlZGRlZCBpbiBNTkcgZGF0YXN0cmVhbXMgKi8KIC8qCiAjaWZuZGVmIFBOR19OT19NTkdfRkVBVFVSRVMKICMgIGlmbmRlZiBQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRApAQCAtOTEsNDcgKzkxLDU4IEBACiAgKiB0aGlzIGJpdCBvZiAjaWZkZWZzIHdpbGwgZGVmaW5lIHRoZSAnY29ycmVjdCcgY29uZmlnIHZhcmlhYmxlcyBiYXNlZCBvbgogICogdGhhdC4gSWYgYSBjeWd3aW4gdXNlciAqd2FudHMqIHRvIGRlZmluZSAnUE5HX1VTRV9ETEwnIHRoYXQncyBva2F5LCBidXQKICAqIHVubmVjZXNzYXJ5LgorICoKKyAqIEFsc28sIHRoZSBwcmVjZWRlbmNlIG9yZGVyIGlzOgorICogICBBTExfU1RBVElDIChzaW5jZSB3ZSBjYW4ndCAjdW5kZWYgc29tZXRoaW5nIG91dHNpZGUgb3VyIG5hbWVzcGFjZSkKKyAqICAgUE5HX0JVSUxEX0RMTAorICogICBQTkdfU1RBVElDCisgKiAgIChub3RoaW5nKSA9PSBQTkdfVVNFX0RMTCAKICAqLwogI2lmIGRlZmluZWQoX19DWUdXSU5fXykKLSMgIGlmIGRlZmluZWQoUE5HX0JVSUxEX0RMTCkKKyMgIGlmIGRlZmluZWQoQUxMX1NUQVRJQykKKyMgICAgaWYgZGVmaW5lZChQTkdfQlVJTERfRExMKQorIyAgICAgIHVuZGVmIFBOR19CVUlMRF9ETEwKKyMgICAgZW5kaWYKICMgICAgaWYgZGVmaW5lZChQTkdfVVNFX0RMTCkKICMgICAgICB1bmRlZiBQTkdfVVNFX0RMTAogIyAgICBlbmRpZgotIyAgICBpZiAhZGVmaW5lZChQTkdfRExMKQotIyAgICAgIGRlZmluZSBQTkdfRExMCisjICAgIGlmIGRlZmluZWQoUE5HX0RMTCkKKyMgICAgICB1bmRlZiBQTkdfRExMCiAjICAgIGVuZGlmCi0jICAgIGlmIGRlZmluZWQoUE5HX1NUQVRJQykKLSMgICAgICB1bmRlZiBQTkdfU1RBVElDCi0jICAgIGVuZGlmCi0jICBlbHNlCi0jICAgIGlmIGRlZmluZWQoQUxMX1NUQVRJQykKKyMgICAgaWYgIWRlZmluZWQoUE5HX1NUQVRJQykKICMgICAgICBkZWZpbmUgUE5HX1NUQVRJQwogIyAgICBlbmRpZgotIyAgICBpZiBkZWZpbmVkKFBOR19TVEFUSUMpCisjICBlbHNlCisjICAgIGlmIGRlZmluZWQgKFBOR19CVUlMRF9ETEwpCisjICAgICAgaWYgZGVmaW5lZChQTkdfU1RBVElDKQorIyAgICAgICAgdW5kZWYgUE5HX1NUQVRJQworIyAgICAgIGVuZGlmCiAjICAgICAgaWYgZGVmaW5lZChQTkdfVVNFX0RMTCkKICMgICAgICAgIHVuZGVmIFBOR19VU0VfRExMCiAjICAgICAgZW5kaWYKLSMgICAgICBpZiBkZWZpbmVkKFBOR19ETEwpCi0jICAgICAgICB1bmRlZiBQTkdfRExMCisjICAgICAgaWYgIWRlZmluZWQoUE5HX0RMTCkKKyMgICAgICAgIGRlZmluZSBQTkdfRExMCiAjICAgICAgZW5kaWYKICMgICAgZWxzZQotIyAgICAgIGlmIGRlZmluZWQoUE5HX1VTRV9ETEwpCisjICAgICAgaWYgZGVmaW5lZChQTkdfU1RBVElDKQorIyAgICAgICAgaWYgZGVmaW5lZChQTkdfVVNFX0RMTCkKKyMgICAgICAgICAgdW5kZWYgUE5HX1VTRV9ETEwKKyMgICAgICAgIGVuZGlmCisjICAgICAgICBpZiBkZWZpbmVkKFBOR19ETEwpCisjICAgICAgICAgIHVuZGVmIFBOR19ETEwKKyMgICAgICAgIGVuZGlmCisjICAgICAgZWxzZQorIyAgICAgICAgaWYgIWRlZmluZWQoUE5HX1VTRV9ETEwpCisjICAgICAgICAgIGRlZmluZSBQTkdfVVNFX0RMTAorIyAgICAgICAgZW5kaWYKICMgICAgICAgIGlmICFkZWZpbmVkKFBOR19ETEwpCiAjICAgICAgICAgIGRlZmluZSBQTkdfRExMCiAjICAgICAgICBlbmRpZgotIyAgICAgIGVsc2UKLSMgICAgICAgIGlmIGRlZmluZWQoUE5HX0RMTCkKLSMgICAgICAgICAgIGRlZmluZSBQTkdfVVNFX0RMTAotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAgZGVmaW5lIFBOR19VU0VfRExMCi0jICAgICAgICAgICBkZWZpbmUgUE5HX0RMTAotIyAgICAgICAgZW5kaWYKLSMgICAgICBlbmRpZgotIyAgICBlbmRpZgorIyAgICAgIGVuZGlmICAKKyMgICAgZW5kaWYgIAogIyAgZW5kaWYKICNlbmRpZgogCi0KIC8qIFRoaXMgcHJvdGVjdHMgdXMgYWdhaW5zdCBjb21waWxlcnMgdGhhdCBydW4gb24gYSB3aW5kb3dpbmcgc3lzdGVtCiAgKiBhbmQgdGh1cyBkb24ndCBoYXZlIG9yIHdvdWxkIHJhdGhlciB1cyBub3QgdXNlIHRoZSBzdGRpbyB0eXBlczoKICAqIHN0ZGluLCBzdGRvdXQsIGFuZCBzdGRlcnIuICBUaGUgb25seSBvbmUgY3VycmVudGx5IHVzZWQgaXMgc3RkZXJyCkBAIC0zMDYsNyArMzE3LDggQEAKICMgIGluY2x1ZGUgImFsbG9jLmgiCiAjZW5kaWYKIAotI2lmZGVmIF9NU0NfVkVSCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dpbmRvd3MpIHx8IFwKKyAgICBkZWZpbmVkKF9XSU5ET1dTKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pKQogIyAgaW5jbHVkZSA8bWFsbG9jLmg+CiAjZW5kaWYKIApAQCAtNTc4LDYgKzU5MCwxMyBAQAogIyAgZGVmaW5lIFBOR19XUklURV9XRUlHSFRFRF9GSUxURVJfU1VQUE9SVEVECiAjZW5kaWYKIAorLyogV2lsbCBiZSBlbmFibGVkIGluIGxpYnBuZy0xLjIuMCAqLworLyoKKyNpZm5kZWYgUE5HX05PX0VSUk9SX05VTUJFUlMKKyNkZWZpbmUgUE5HX0VSUk9SX05VTUJFUlNfU1VQUE9SVEVECisjZW5kaWYKKyovCisKICNpZm5kZWYgUE5HX05PX1dSSVRFX0ZMVVNICiAjICBkZWZpbmUgUE5HX1dSSVRFX0ZMVVNIX1NVUFBPUlRFRAogI2VuZGlmCkBAIC02MDksMTIgKzYyOCwyMiBAQAogICogcG5nX2dldF94X29mZnNldF9taWNyb25zKCkKICAqIHBuZ19nZXRfeV9vZmZzZXRfbWljcm9ucygpCiAgKi8KLSNpZm5kZWYgUE5HX05PX0VBU1lfQUNDRVNTCisjaWYgIWRlZmluZWQoUE5HX05PX0VBU1lfQUNDRVNTKSAmJiAhZGVmaW5lZChQTkdfRUFTWV9BQ0NFU1NfU1VQUE9SVEVEKQogIyAgZGVmaW5lIFBOR19FQVNZX0FDQ0VTU19TVVBQT1JURUQKICNlbmRpZgogCi0vKiBQTkdfQVNTRU1CTEVSX0NPREUgd2lsbCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gdmVyc2lvbiAxLjIuMCAKKy8qIFBOR19BU1NFTUJMRVJfQ09ERSB3YXMgZW5hYmxlZCBieSBkZWZhdWx0IGluIHZlcnNpb24gMS4yLjAgCiAgICBldmVuIHdoZW4gUE5HX1VTRV9QTkdWQ1JEIG9yIFBOR19VU0VfUE5HR0NDUkQgaXMgbm90IGRlZmluZWQgKi8KKy8qCisjaWYgZGVmaW5lZChQTkdfUkVBRF9TVVBQT1JURUQpICYmICFkZWZpbmVkKFBOR19OT19BU1NFTUJMRVJfQ09ERSkKKyMgIGlmbmRlZiBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVECisjICAgIGRlZmluZSBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVECisjICBlbmRpZgorIyAgaWYgIWRlZmluZWQoUE5HX01NWF9DT0RFX1NVUFBPUlRFRCkgJiYgIWRlZmluZWQoUE5HX05PX01NWF9DT0RFKQorIyAgICBkZWZpbmUgUE5HX01NWF9DT0RFX1NVUFBPUlRFRAorIyAgZW5kaWYKKyNlbmRpZgorKi8KICNpZiBkZWZpbmVkKFBOR19SRUFEX1NVUFBPUlRFRCkgJiYgIWRlZmluZWQoUE5HX05PX0FTU0VNQkxFUl9DT0RFKQogIyAgaWYgZGVmaW5lZChQTkdfVVNFX1BOR1ZDUkQpIHx8IGRlZmluZWQoUE5HX1VTRV9QTkdHQ0NSRCkKICMgICAgaWZuZGVmIFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQKQEAgLTYyNiw2ICs2NTUsMTMgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAorLyogVGhpcyB3aWxsIGJlIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBsaWJwbmctMS4yLjAgKi8KKy8qCisjaWYgIWRlZmluZWQoUE5HX05PX1VTRVJfTUVNKSAmJiAhZGVmaW5lZChQTkdfVVNFUl9NRU1fU1VQUE9SVEVEKQorIyAgZGVmaW5lIFBOR19VU0VSX01FTV9TVVBQT1JURUQKKyNlbmRpZgorKi8KKwogLyogVGhlc2UgYXJlIGN1cnJlbnRseSBleHBlcmltZW50YWwgZmVhdHVyZXMsIGRlZmluZSB0aGVtIGlmIHlvdSB3YW50ICovCiAKIC8qIHZlcnkgbGl0dGxlIHRlc3RpbmcgKi8KQEAgLTYzNSw5ICs2NzEsNiBAQAogIyAgICBkZWZpbmUgUE5HX1JFQURfMTZfVE9fOF9BQ0NVUkFURV9TQ0FMRV9TVVBQT1JURUQKICMgIGVuZGlmCiAjZW5kaWYKLSNpZm5kZWYgUE5HX05PX1VTRVJfTUVNCi0jICBkZWZpbmUgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAotI2VuZGlmCiAjaWZuZGVmIFBOR19OT19aQUxMT0NfWkVSTwogIyAgZGVmaW5lIFBOR19aQUxMT0NfWkVSTwogI2VuZGlmCmRpZmYgLS1naXQgYS9wbmdlcnJvci5jIGIvcG5nZXJyb3IuYwppbmRleCBjOTkxYjUzLi4xZTY2MDJjIDEwMDY0NAotLS0gYS9wbmdlcnJvci5jCisrKyBiL3BuZ2Vycm9yLmMKQEAgLTEsNyArMSw3IEBACiAKIC8qIHBuZ2Vycm9yLmMgLSBzdHViIGZ1bmN0aW9ucyBmb3IgaS9vIGFuZCBtZW1vcnkgYWxsb2NhdGlvbgogICoKLSAqIGxpYnBuZyAxLjAuMTEgLSBBcHJpbCAyNywgMjAwMQorICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCkBAIC0zMSw2ICszMSwzOCBAQAogdm9pZCBQTkdBUEkKIHBuZ19lcnJvcihwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfY29uc3RfY2hhcnAgbWVzc2FnZSkKIHsKKyNpZmRlZiBQTkdfRVJST1JfTlVNQkVSU19TVVBQT1JURUQKKyAgIGNoYXIgbXNnWzE2XTsKKyAgIGlmIChwbmdfcHRyLT5mbGFncyYoUE5HX0ZMQUdfU1RSSVBfRVJST1JfTlVNQkVSU3xQTkdfRkxBR19TVFJJUF9FUlJPUl9URVhUKSkKKyAgIHsKKyAgICAgaW50IG9mZnNldCA9IDA7CisgICAgIGlmICgqbWVzc2FnZSA9PSAnIycpCisgICAgIHsKKyAgICAgICAgIGZvciAob2Zmc2V0PTE7IG9mZnNldDwxNTsgb2Zmc2V0KyspCisgICAgICAgICAgICBpZiAoKihtZXNzYWdlK29mZnNldCkgPT0gJyAnKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgaWYgKHBuZ19wdHItPmZsYWdzJlBOR19GTEFHX1NUUklQX0VSUk9SX1RFWFQpCisgICAgICAgICB7CisgICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIGZvciAoaT0wOyBpPG9mZnNldC0xOyBpKyspCisgICAgICAgICAgICAgICBtc2dbaV09bWVzc2FnZVtpKzFdOworICAgICAgICAgICAgbXNnW2ldPSdcMCc7CisgICAgICAgICAgICBtZXNzYWdlPW1zZzsKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lc3NhZ2UrPW9mZnNldDsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKyAgICAgICAgIGlmIChwbmdfcHRyLT5mbGFncyZQTkdfRkxBR19TVFJJUF9FUlJPUl9URVhUKQorICAgICAgICAgeworICAgICAgICAgICAgbXNnWzBdPScwJzsgICAgICAgIAorICAgICAgICAgICAgbXNnWzFdPSdcMCc7CisgICAgICAgICAgICBtZXNzYWdlPW1zZzsKKyAgICAgICAgIH0KKyAgICAgfQorICAgfQorI2VuZGlmCiAgICBpZiAocG5nX3B0ci0+ZXJyb3JfZm4gIT0gTlVMTCkKICAgICAgICgqKHBuZ19wdHItPmVycm9yX2ZuKSkocG5nX3B0ciwgbWVzc2FnZSk7CiAKQEAgLTQ3LDEwICs3OSwyMiBAQAogdm9pZCBQTkdBUEkKIHBuZ193YXJuaW5nKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19jb25zdF9jaGFycCBtZXNzYWdlKQogeworICAgICBpbnQgb2Zmc2V0ID0gMDsKKyNpZmRlZiBQTkdfRVJST1JfTlVNQkVSU19TVVBQT1JURUQKKyAgIGlmIChwbmdfcHRyLT5mbGFncyYoUE5HX0ZMQUdfU1RSSVBfRVJST1JfTlVNQkVSU3xQTkdfRkxBR19TVFJJUF9FUlJPUl9URVhUKSkKKyNlbmRpZgorICAgeworICAgICBpZiAoKm1lc3NhZ2UgPT0gJyMnKQorICAgICB7CisgICAgICAgICBmb3IgKG9mZnNldD0xOyBvZmZzZXQ8MTU7IG9mZnNldCsrKQorICAgICAgICAgICAgaWYgKCoobWVzc2FnZStvZmZzZXQpID09ICcgJykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgfQorICAgfQogICAgaWYgKHBuZ19wdHItPndhcm5pbmdfZm4gIT0gTlVMTCkKLSAgICAgICgqKHBuZ19wdHItPndhcm5pbmdfZm4pKShwbmdfcHRyLCBtZXNzYWdlKTsKKyAgICAgICgqKHBuZ19wdHItPndhcm5pbmdfZm4pKShwbmdfcHRyLCAocG5nX2NvbnN0X2NoYXJwKShtZXNzYWdlK29mZnNldCkpOwogICAgZWxzZQotICAgICAgcG5nX2RlZmF1bHRfd2FybmluZyhwbmdfcHRyLCBtZXNzYWdlKTsKKyAgICAgIHBuZ19kZWZhdWx0X3dhcm5pbmcocG5nX3B0ciwgKHBuZ19jb25zdF9jaGFycCkobWVzc2FnZStvZmZzZXQpKTsKIH0KIAogLyogVGhlc2UgdXRpbGl0aWVzIGFyZSB1c2VkIGludGVybmFsbHkgdG8gYnVpbGQgYW4gZXJyb3IgbWVzc2FnZSB0aGF0IHJlbGF0ZXMKQEAgLTEyMiw2ICsxNjYsMjcgQEAKIHBuZ19kZWZhdWx0X2Vycm9yKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19jb25zdF9jaGFycCBtZXNzYWdlKQogewogI2lmbmRlZiBQTkdfTk9fQ09OU09MRV9JTworI2lmZGVmIFBOR19FUlJPUl9OVU1CRVJTX1NVUFBPUlRFRAorICAgaWYgKCptZXNzYWdlID09ICcjJykKKyAgIHsKKyAgICAgaW50IG9mZnNldDsKKyAgICAgY2hhciBlcnJvcl9udW1iZXJbMTZdOworICAgICBmb3IgKG9mZnNldD0wOyBvZmZzZXQ8MTU7IG9mZnNldCsrKQorICAgICB7CisgICAgICAgICBlcnJvcl9udW1iZXJbb2Zmc2V0XSA9ICoobWVzc2FnZStvZmZzZXQrMSk7CisgICAgICAgICBpZiAoKihtZXNzYWdlK29mZnNldCkgPT0gJyAnKQorICAgICAgICAgICAgIGJyZWFrOworICAgICB9CisgICAgIGlmKChvZmZzZXQgPiAxKSAmJiAob2Zmc2V0IDwgMTUpKQorICAgICB7CisgICAgICAgZXJyb3JfbnVtYmVyW29mZnNldC0xXT0nXDAnOworICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlicG5nIGVycm9yIG5vLiAlczogJXNcbiIsIGVycm9yX251bWJlciwgbWVzc2FnZStvZmZzZXQpOworICAgICB9CisgICAgIGVsc2UKKyAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnBuZyBlcnJvcjogJXMsIG9mZnNldD0lZFxuIiwgbWVzc2FnZSxvZmZzZXQpOworICAgfQorICAgZWxzZQorI2VuZGlmCiAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnBuZyBlcnJvcjogJXNcbiIsIG1lc3NhZ2UpOwogI2Vsc2UKICAgIGlmIChtZXNzYWdlKQpAQCAtMTU0LDcgKzIxOSwyOSBAQAogcG5nX2RlZmF1bHRfd2FybmluZyhwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfY29uc3RfY2hhcnAgbWVzc2FnZSkKIHsKICNpZm5kZWYgUE5HX05PX0NPTlNPTEVfSU8KLSAgIGZwcmludGYoc3RkZXJyLCAibGlicG5nIHdhcm5pbmc6ICVzXG4iLCBtZXNzYWdlKTsKKyMgIGlmZGVmIFBOR19FUlJPUl9OVU1CRVJTX1NVUFBPUlRFRAorICAgaWYgKCptZXNzYWdlID09ICcjJykKKyAgIHsKKyAgICAgaW50IG9mZnNldDsKKyAgICAgY2hhciB3YXJuaW5nX251bWJlclsxNl07CisgICAgIGZvciAob2Zmc2V0PTA7IG9mZnNldDwxNTsgb2Zmc2V0KyspCisgICAgIHsKKyAgICAgICAgd2FybmluZ19udW1iZXJbb2Zmc2V0XT0qKG1lc3NhZ2Urb2Zmc2V0KzEpOworICAgICAgICBpZiAoKihtZXNzYWdlK29mZnNldCkgPT0gJyAnKQorICAgICAgICAgICAgYnJlYWs7CisgICAgIH0KKyAgICAgaWYoKG9mZnNldCA+IDEpICYmIChvZmZzZXQgPCAxNSkpCisgICAgIHsKKyAgICAgICB3YXJuaW5nX251bWJlcltvZmZzZXQtMV09J1wwJzsKKyAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnBuZyB3YXJuaW5nIG5vLiAlczogJXNcbiIsIHdhcm5pbmdfbnVtYmVyLAorICAgICAgICAgIG1lc3NhZ2Urb2Zmc2V0KTsKKyAgICAgfQorICAgICBlbHNlCisgICAgICAgZnByaW50ZihzdGRlcnIsICJsaWJwbmcgd2FybmluZzogJXNcbiIsIG1lc3NhZ2UpOworICAgfQorICAgZWxzZQorIyAgZW5kaWYKKyAgICAgZnByaW50ZihzdGRlcnIsICJsaWJwbmcgd2FybmluZzogJXNcbiIsIG1lc3NhZ2UpOwogI2Vsc2UKICAgIGlmIChtZXNzYWdlKQogICAgICAvKiBhcHBlYXNlIGNvbXBpbGVyICovIDsKQEAgLTE4OSw0ICsyNzYsMTUgQEAKIH0KIAogCisjaWZkZWYgUE5HX0VSUk9SX05VTUJFUlNfU1VQUE9SVEVECit2b2lkCitwbmdfc2V0X3N0cmlwX2Vycm9yX251bWJlcnMocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3VpbnRfMzIgc3RyaXBfbW9kZSkKK3sKKyAgIGlmKHBuZ19wdHIgIT0gTlVMTCkKKyAgIHsKKyAgICAgcG5nX3B0ci0+ZmxhZ3MgJj0KKyAgICAgICAoKH4oUE5HX0ZMQUdfU1RSSVBfRVJST1JfTlVNQkVSU3xQTkdfRkxBR19TVFJJUF9FUlJPUl9URVhUKSkmc3RyaXBfbW9kZSk7CisgICB9Cit9CisjZW5kaWYKIApkaWZmIC0tZ2l0IGEvcG5nZ2NjcmQuYyBiL3BuZ2djY3JkLmMKaW5kZXggYjQ3MDNlZS4uNTU3YTk0MyAxMDA2NDQKLS0tIGEvcG5nZ2NjcmQuYworKysgYi9wbmdnY2NyZC5jCkBAIC02LDcgKzYsNyBAQAogICogICAgIGFuZCBodHRwOi8vd3d3LmludGVsLmNvbS9kcmcvcGVudGl1bUlJL2FwcG5vdGVzLzkyMy85MjMuaHRtCiAgKiAgICAgZm9yIEludGVsJ3MgcGVyZm9ybWFuY2UgYW5hbHlzaXMgb2YgdGhlIE1NWCB2cy4gbm9uLU1NWCBjb2RlLgogICoKLSAqIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCisgKiBsaWJwbmcgdmVyc2lvbiAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMQogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIENvcHlyaWdodCAoYykgMTk5OCwgSW50ZWwgQ29ycG9yYXRpb24KZGlmZiAtLWdpdCBhL3BuZ2dldC5jIGIvcG5nZ2V0LmMKaW5kZXggNTM0OGM2MC4uYzVhNjQ0NCAxMDA2NDQKLS0tIGEvcG5nZ2V0LmMKKysrIGIvcG5nZ2V0LmMKQEAgLTEsNyArMSw3IEBACiAKIC8qIHBuZ2dldC5jIC0gcmV0cmlldmFsIG9mIHZhbHVlcyBmcm9tIGluZm8gc3RydWN0CiAgKgotICogbGlicG5nIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKQEAgLTgyNiwzICs4MjYsOTIgQEAKICAgIHJldHVybiAocG5nX3VpbnRfMzIpKHBuZ19wdHI/IHBuZ19wdHItPnpidWZfc2l6ZSA6IDBMKTsKIH0KIAorCisjaWZkZWYgUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRAorLyogdGhpcyBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gbGlicG5nIDEuMi4wIGFuZCBzaG91bGQgZXhpc3QgYnkgZGVmYXVsdCovCitwbmdfdWludF8zMiBQTkdBUEkKK3BuZ19nZXRfYXNtX2ZsYWdzIChwbmdfc3RydWN0cCBwbmdfcHRyKQoreworICAgIHJldHVybiAocG5nX3VpbnRfMzIpKHBuZ19wdHI/IHBuZ19wdHItPmFzbV9mbGFncyA6IDBMKTsKK30KKworLyogdGhpcyBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gbGlicG5nIDEuMi4wIGFuZCBzaG91bGQgZXhpc3QgYnkgZGVmYXVsdCAqLworcG5nX3VpbnRfMzIgUE5HQVBJCitwbmdfZ2V0X2FzbV9mbGFnbWFzayAoaW50IGZsYWdfc2VsZWN0KQoreworICAgIHBuZ191aW50XzMyIHNldHRhYmxlX2FzbV9mbGFncyA9IDA7CisKKyAgICBpZiAoZmxhZ19zZWxlY3QgJiBQTkdfU0VMRUNUX1JFQUQpCisgICAgICAgIHNldHRhYmxlX2FzbV9mbGFncyB8PQorICAgICAgICAgIFBOR19BU01fRkxBR19NTVhfUkVBRF9DT01CSU5FX1JPVyAgfAorICAgICAgICAgIFBOR19BU01fRkxBR19NTVhfUkVBRF9JTlRFUkxBQ0UgICAgfAorICAgICAgICAgIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfU1VCICAgfAorICAgICAgICAgIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfVVAgICAgfAorICAgICAgICAgIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfQVZHICAgfAorICAgICAgICAgIFBOR19BU01fRkxBR19NTVhfUkVBRF9GSUxURVJfUEFFVEggOworICAgICAgICAgIC8qIG5vIG5vbi1NTVggZmxhZ3MgeWV0ICovCisKKyNpZiAwCisgICAgLyogR1JSOiAgbm8gd3JpdGUtZmxhZ3MgeWV0LCBlaXRoZXIsIGJ1dCBzb21lZGF5Li4uICovCisgICAgaWYgKGZsYWdfc2VsZWN0ICYgUE5HX1NFTEVDVF9XUklURSkKKyAgICAgICAgc2V0dGFibGVfYXNtX2ZsYWdzIHw9CisgICAgICAgICAgUE5HX0FTTV9GTEFHX01NWF9XUklURV8gW3doYXRldmVyXSA7CisjZW5kaWYgLyogMCAqLworCisgICAgcmV0dXJuIHNldHRhYmxlX2FzbV9mbGFnczsgIC8qIF90aGVvcmV0aWNhbGx5XyBzZXR0YWJsZSBjYXBhYmlsaXRpZXMgb25seSAqLworfQorI2VuZGlmIC8qIFBOR19BU1NFTUJMRVJfQ09ERV9TVVBQT1JURUQgKi8KKworCisjaWYgZGVmaW5lZChQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEKQorICAgIC8qIEdSUjogIGNvdWxkIGFkZCB0aGlzOiAgICYmIGRlZmluZWQoUE5HX01NWF9DT0RFX1NVUFBPUlRFRCkgKi8KKy8qIHRoaXMgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIGxpYnBuZyAxLjIuMCAqLworcG5nX3VpbnRfMzIgUE5HQVBJCitwbmdfZ2V0X21teF9mbGFnbWFzayAoaW50IGZsYWdfc2VsZWN0LCBpbnQgKmNvbXBpbGVySUQpCit7CisgICAgcG5nX3VpbnRfMzIgc2V0dGFibGVfbW14X2ZsYWdzID0gMDsKKworICAgIGlmIChmbGFnX3NlbGVjdCAmIFBOR19TRUxFQ1RfUkVBRCkKKyAgICAgICAgc2V0dGFibGVfbW14X2ZsYWdzIHw9CisgICAgICAgICAgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0NPTUJJTkVfUk9XICB8CisgICAgICAgICAgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0lOVEVSTEFDRSAgICB8CisgICAgICAgICAgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9TVUIgICB8CisgICAgICAgICAgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9VUCAgICB8CisgICAgICAgICAgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9BVkcgICB8CisgICAgICAgICAgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9QQUVUSCA7CisjaWYgMAorICAgIC8qIEdSUjogIG5vIE1NWCB3cml0ZSBzdXBwb3J0IHlldCwgYnV0IHNvbWVkYXkuLi4gKi8KKyAgICBpZiAoZmxhZ19zZWxlY3QgJiBQTkdfU0VMRUNUX1dSSVRFKQorICAgICAgICBzZXR0YWJsZV9tbXhfZmxhZ3MgfD0KKyAgICAgICAgICBQTkdfQVNNX0ZMQUdfTU1YX1dSSVRFXyBbd2hhdGV2ZXJdIDsKKyNlbmRpZiAvKiAwICovCisKKyAgICBpZiAoY29tcGlsZXJJRCAhPSBOVUxMKSB7CisjaWZkZWYgUE5HX1VTRV9QTkdWQ1JECisgICAgICAgICpjb21waWxlcklEID0gMTsgICAgLyogTVNWQyAqLworI2Vsc2UKKyNpZmRlZiBQTkdfVVNFX1BOR0dDQ1JECisgICAgICAgICpjb21waWxlcklEID0gMjsgICAgLyogZ2NjL2dhcyAqLworI2Vsc2UKKyAgICAgICAgKmNvbXBpbGVySUQgPSAtMTsgICAvKiB1bmtub3duIChpLmUuLCBubyBhc20vTU1YIGNvZGUgY29tcGlsZWQpICovCisjZW5kaWYKKyNlbmRpZgorICAgIH0KKworICAgIHJldHVybiBzZXR0YWJsZV9tbXhfZmxhZ3M7ICAvKiBfdGhlb3JldGljYWxseV8gc2V0dGFibGUgY2FwYWJpbGl0aWVzIG9ubHkgKi8KK30KKworLyogdGhpcyBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gbGlicG5nIDEuMi4wICovCitwbmdfYnl0ZSBQTkdBUEkKK3BuZ19nZXRfbW14X2JpdGRlcHRoX3RocmVzaG9sZCAocG5nX3N0cnVjdHAgcG5nX3B0cikKK3sKKyAgICByZXR1cm4gKHBuZ19ieXRlKShwbmdfcHRyPyBwbmdfcHRyLT5tbXhfYml0ZGVwdGhfdGhyZXNob2xkIDogMCk7Cit9CisKKy8qIHRoaXMgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIGxpYnBuZyAxLjIuMCAqLworcG5nX3VpbnRfMzIgUE5HQVBJCitwbmdfZ2V0X21teF9yb3dieXRlc190aHJlc2hvbGQgKHBuZ19zdHJ1Y3RwIHBuZ19wdHIpCit7CisgICAgcmV0dXJuIChwbmdfdWludF8zMikocG5nX3B0cj8gcG5nX3B0ci0+bW14X3Jvd2J5dGVzX3RocmVzaG9sZCA6IDBMKTsKK30KKyNlbmRpZiAvKiBQTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEICovCmRpZmYgLS1naXQgYS9wbmdtZW0uYyBiL3BuZ21lbS5jCmluZGV4IDQyNWRmNTYuLjNkMDg2YmEgMTAwNjQ0Ci0tLSBhL3BuZ21lbS5jCisrKyBiL3BuZ21lbS5jCkBAIC0xLDcgKzEsNyBAQAogCiAvKiBwbmdtZW0uYyAtIHN0dWIgZnVuY3Rpb25zIGZvciBtZW1vcnkgYWxsb2NhdGlvbgogICoKLSAqIGxpYnBuZyAxLjAuMTEgLSBBcHJpbCAyNywgMjAwMQorICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCkBAIC0yNywxMiArMjcsMTIgQEAKIHBuZ19jcmVhdGVfc3RydWN0KGludCB0eXBlKQogewogI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKLSAgIHJldHVybiAocG5nX2NyZWF0ZV9zdHJ1Y3RfMih0eXBlLCBOVUxMKSk7CisgICByZXR1cm4gKHBuZ19jcmVhdGVfc3RydWN0XzIodHlwZSwgTlVMTCwgTlVMTCkpOwogfQogCiAvKiBBbHRlcm5hdGUgdmVyc2lvbiBvZiBwbmdfY3JlYXRlX3N0cnVjdCwgZm9yIHVzZSB3aXRoIHVzZXItZGVmaW5lZCBtYWxsb2MuICovCiBwbmdfdm9pZHAgLyogUFJJVkFURSAqLwotcG5nX2NyZWF0ZV9zdHJ1Y3RfMihpbnQgdHlwZSwgcG5nX21hbGxvY19wdHIgbWFsbG9jX2ZuKQorcG5nX2NyZWF0ZV9zdHJ1Y3RfMihpbnQgdHlwZSwgcG5nX21hbGxvY19wdHIgbWFsbG9jX2ZuLCBwbmdfdm9pZHAgbWVtX3B0cikKIHsKICNlbmRpZiAvKiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVEICovCiAgICBwbmdfc2l6ZV90IHNpemU7CkBAIC00OCw5ICs0OCwxOCBAQAogI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKICAgIGlmKG1hbGxvY19mbiAhPSBOVUxMKQogICAgewotICAgICAgaWYgKChzdHJ1Y3RfcHRyID0gKCoobWFsbG9jX2ZuKSkoTlVMTCwgc2l6ZSkpICE9IE5VTEwpCisgICAgICBpZiAobWVtX3B0ciAhPSBOVUxMKQorICAgICAgeworICAgICAgICAgcG5nX3N0cnVjdCBkdW1teV9zdHJ1Y3Q7CisgICAgICAgICBwbmdfc3RydWN0cCBwbmdfcHRyID0gJmR1bW15X3N0cnVjdDsKKyAgICAgICAgIHBuZ19wdHItPm1lbV9wdHI9bWVtX3B0cjsKKyAgICAgICAgIHN0cnVjdF9wdHIgPSAoKihtYWxsb2NfZm4pKShwbmdfcHRyLCBzaXplKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgIHN0cnVjdF9wdHIgPSAoKihtYWxsb2NfZm4pKShOVUxMLCBzaXplKTsKKyAgICAgIGlmIChzdHJ1Y3RfcHRyICE9IE5VTEwpCiAgICAgICAgICBwbmdfbWVtc2V0KHN0cnVjdF9wdHIsIDAsIHNpemUpOwotICAgICAgICAgcmV0dXJuIChzdHJ1Y3RfcHRyKTsKKyAgICAgIHJldHVybiAoc3RydWN0X3B0cik7CiAgICB9CiAjZW5kaWYgLyogUE5HX1VTRVJfTUVNX1NVUFBPUlRFRCAqLwogICAgaWYgKChzdHJ1Y3RfcHRyID0gKHBuZ192b2lkcClmYXJtYWxsb2Moc2l6ZSkpICE9IE5VTEwpCkBAIC02NiwxMiArNzUsMTMgQEAKIHBuZ19kZXN0cm95X3N0cnVjdChwbmdfdm9pZHAgc3RydWN0X3B0cikKIHsKICNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECi0gICBwbmdfZGVzdHJveV9zdHJ1Y3RfMihzdHJ1Y3RfcHRyLCAocG5nX2ZyZWVfcHRyKU5VTEwpOworICAgcG5nX2Rlc3Ryb3lfc3RydWN0XzIoc3RydWN0X3B0ciwgKHBuZ19mcmVlX3B0cilOVUxMLCAocG5nX3ZvaWRwKU5VTEwpOwogfQogCiAvKiBGcmVlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgYSBwbmdfY3JlYXRlX3N0cnVjdCgpIGNhbGwgKi8KIHZvaWQgLyogUFJJVkFURSAqLwotcG5nX2Rlc3Ryb3lfc3RydWN0XzIocG5nX3ZvaWRwIHN0cnVjdF9wdHIsIHBuZ19mcmVlX3B0ciBmcmVlX2ZuKQorcG5nX2Rlc3Ryb3lfc3RydWN0XzIocG5nX3ZvaWRwIHN0cnVjdF9wdHIsIHBuZ19mcmVlX3B0ciBmcmVlX2ZuLAorICAgIHBuZ192b2lkcCBtZW1fcHRyKQogewogI2VuZGlmCiAgICBpZiAoc3RydWN0X3B0ciAhPSBOVUxMKQpAQCAtODEsNiArOTEsNyBAQAogICAgICAgewogICAgICAgICAgcG5nX3N0cnVjdCBkdW1teV9zdHJ1Y3Q7CiAgICAgICAgICBwbmdfc3RydWN0cCBwbmdfcHRyID0gJmR1bW15X3N0cnVjdDsKKyAgICAgICAgIHBuZ19wdHItPm1lbV9wdHI9bWVtX3B0cjsKICAgICAgICAgICgqKGZyZWVfZm4pKShwbmdfcHRyLCBzdHJ1Y3RfcHRyKTsKICAgICAgICAgIHJldHVybjsKICAgICAgIH0KQEAgLTI4NiwxNCArMjk3LDE0IEBACiBwbmdfY3JlYXRlX3N0cnVjdChpbnQgdHlwZSkKIHsKICNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECi0gICByZXR1cm4gKHBuZ19jcmVhdGVfc3RydWN0XzIodHlwZSwgTlVMTCkpOworICAgcmV0dXJuIChwbmdfY3JlYXRlX3N0cnVjdF8yKHR5cGUsIE5VTEwsIE5VTEwpKTsKIH0KIAogLyogQWxsb2NhdGUgbWVtb3J5IGZvciBhIHBuZ19zdHJ1Y3Qgb3IgYSBwbmdfaW5mby4gIFRoZSBtYWxsb2MgYW5kCiAgICBtZW1zZXQgY2FuIGJlIHJlcGxhY2VkIGJ5IGEgc2luZ2xlIGNhbGwgdG8gY2FsbG9jKCkgaWYgdGhpcyBpcyB0aG91Z2h0CiAgICB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG5vdGljYWJseS4qLwogcG5nX3ZvaWRwIC8qIFBSSVZBVEUgKi8KLXBuZ19jcmVhdGVfc3RydWN0XzIoaW50IHR5cGUsIHBuZ19tYWxsb2NfcHRyIG1hbGxvY19mbikKK3BuZ19jcmVhdGVfc3RydWN0XzIoaW50IHR5cGUsIHBuZ19tYWxsb2NfcHRyIG1hbGxvY19mbiwgcG5nX3ZvaWRwIG1lbV9wdHIpCiB7CiAjZW5kaWYgLyogUE5HX1VTRVJfTUVNX1NVUFBPUlRFRCAqLwogICAgcG5nX3NpemVfdCBzaXplOwpAQCAtMzA5LDcgKzMyMCwxNiBAQAogI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKICAgIGlmKG1hbGxvY19mbiAhPSBOVUxMKQogICAgewotICAgICAgaWYgKChzdHJ1Y3RfcHRyID0gKCoobWFsbG9jX2ZuKSkoTlVMTCwgc2l6ZSkpICE9IE5VTEwpCisgICAgICBpZiAobWVtX3B0ciAhPSBOVUxMKQorICAgICAgeworICAgICAgICAgcG5nX3N0cnVjdCBkdW1teV9zdHJ1Y3Q7CisgICAgICAgICBwbmdfc3RydWN0cCBwbmdfcHRyID0gJmR1bW15X3N0cnVjdDsKKyAgICAgICAgIHBuZ19wdHItPm1lbV9wdHI9bWVtX3B0cjsKKyAgICAgICAgIHN0cnVjdF9wdHIgPSAoKihtYWxsb2NfZm4pKShwbmdfcHRyLCBzaXplKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgIHN0cnVjdF9wdHIgPSAoKihtYWxsb2NfZm4pKShOVUxMLCBzaXplKTsKKyAgICAgIGlmIChzdHJ1Y3RfcHRyICE9IE5VTEwpCiAgICAgICAgICBwbmdfbWVtc2V0KHN0cnVjdF9wdHIsIDAsIHNpemUpOwogICAgICAgcmV0dXJuIChzdHJ1Y3RfcHRyKTsKICAgIH0KQEAgLTMzNywxMiArMzU3LDEzIEBACiBwbmdfZGVzdHJveV9zdHJ1Y3QocG5nX3ZvaWRwIHN0cnVjdF9wdHIpCiB7CiAjaWZkZWYgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAotICAgcG5nX2Rlc3Ryb3lfc3RydWN0XzIoc3RydWN0X3B0ciwgKHBuZ19mcmVlX3B0cilOVUxMKTsKKyAgIHBuZ19kZXN0cm95X3N0cnVjdF8yKHN0cnVjdF9wdHIsIChwbmdfZnJlZV9wdHIpTlVMTCwgKHBuZ192b2lkcClOVUxMKTsKIH0KIAogLyogRnJlZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IGEgcG5nX2NyZWF0ZV9zdHJ1Y3QoKSBjYWxsICovCiB2b2lkIC8qIFBSSVZBVEUgKi8KLXBuZ19kZXN0cm95X3N0cnVjdF8yKHBuZ192b2lkcCBzdHJ1Y3RfcHRyLCBwbmdfZnJlZV9wdHIgZnJlZV9mbikKK3BuZ19kZXN0cm95X3N0cnVjdF8yKHBuZ192b2lkcCBzdHJ1Y3RfcHRyLCBwbmdfZnJlZV9wdHIgZnJlZV9mbiwKKyAgICBwbmdfdm9pZHAgbWVtX3B0cikKIHsKICNlbmRpZiAvKiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVEICovCiAgICBpZiAoc3RydWN0X3B0ciAhPSBOVUxMKQpAQCAtMzUyLDYgKzM3Myw3IEBACiAgICAgICB7CiAgICAgICAgICBwbmdfc3RydWN0IGR1bW15X3N0cnVjdDsKICAgICAgICAgIHBuZ19zdHJ1Y3RwIHBuZ19wdHIgPSAmZHVtbXlfc3RydWN0OworICAgICAgICAgcG5nX3B0ci0+bWVtX3B0cj1tZW1fcHRyOwogICAgICAgICAgKCooZnJlZV9mbikpKHBuZ19wdHIsIHN0cnVjdF9wdHIpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgfQpkaWZmIC0tZ2l0IGEvcG5ncHJlYWQuYyBiL3BuZ3ByZWFkLmMKaW5kZXggOWI0YTllNS4uMzA5ZmMyOCAxMDA2NDQKLS0tIGEvcG5ncHJlYWQuYworKysgYi9wbmdwcmVhZC5jCkBAIC0xLDcgKzEsNyBAQAogCiAvKiBwbmdwcmVhZC5jIC0gcmVhZCBhIHBuZyBmaWxlIGluIHB1c2ggbW9kZQogICoKLSAqIGxpYnBuZyAxLjAuMTEgLSBBcHJpbCAyNywgMjAwMQorICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCmRpZmYgLS1naXQgYS9wbmdyZWFkLmMgYi9wbmdyZWFkLmMKaW5kZXggZjg0ZWRlOC4uZjQ1NjdjNCAxMDA2NDQKLS0tIGEvcG5ncmVhZC5jCisrKyBiL3BuZ3JlYWQuYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5ncmVhZC5jIC0gcmVhZCBhIFBORyBmaWxlCiAgKgotICogbGlicG5nIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX2NyZWF0ZV9yZWFkX3N0cnVjdFxuIik7CiAjaWZkZWYgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAogICAgaWYgKChwbmdfcHRyID0gKHBuZ19zdHJ1Y3RwKXBuZ19jcmVhdGVfc3RydWN0XzIoUE5HX1NUUlVDVF9QTkcsCi0gICAgICAocG5nX21hbGxvY19wdHIpbWFsbG9jX2ZuKSkgPT0gTlVMTCkKKyAgICAgIChwbmdfbWFsbG9jX3B0ciltYWxsb2NfZm4sIChwbmdfdm9pZHApbWVtX3B0cikpID09IE5VTEwpCiAjZWxzZQogICAgaWYgKChwbmdfcHRyID0gKHBuZ19zdHJ1Y3RwKXBuZ19jcmVhdGVfc3RydWN0KFBOR19TVFJVQ1RfUE5HKSkgPT0gTlVMTCkKICNlbmRpZgpAQCAtOTIsNiArOTIsNyBAQAogICAgICAgKiBvbmx5IGNoZWNrIHRoZSBmaXJzdCBkaWdpdC4KICAgICAgICovCiAgICAgIGlmICh1c2VyX3BuZ192ZXIgPT0gTlVMTCB8fCB1c2VyX3BuZ192ZXJbMF0gIT0gcG5nX2xpYnBuZ192ZXJbMF0gfHwKKyAgICAgICAgICh1c2VyX3BuZ192ZXJbMF0gPT0gJzEnICYmIHVzZXJfcG5nX3ZlclsyXSAhPSBwbmdfbGlicG5nX3ZlclsyXSkgfHwKICAgICAgICAgICh1c2VyX3BuZ192ZXJbMF0gPT0gJzAnICYmIHVzZXJfcG5nX3ZlclsyXSA8ICc5JykpCiAgICAgIHsKICAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsCkBAIC05OSwxNSArMTAwLDE3IEBACiAgICAgIH0KIAogICAgICAvKiBMaWJwbmcgMS4wLjYgd2FzIG5vdCBiaW5hcnkgY29tcGF0aWJsZSwgZHVlIHRvIGluc2VydGlvbiBvZiB0aGUKLSAgICAgICAgaW5mb19wdHItPmZyZWVfbWUgbWVtYmVyLiAgTm90ZSB0byBtYWludGFpbmVyOiB0aGlzIHRlc3QgY2FuIGJlCi0gICAgICAgIHJlbW92ZWQgZnJvbSB2ZXJzaW9uIDIuMC4wIGFuZCBiZXlvbmQgYmVjYXVzZSB0aGUgcHJldmlvdXMgdGVzdAotICAgICAgICB3b3VsZCBoYXZlIGFscmVhZHkgcmVqZWN0ZWQgaXQuICovCisgICAgICAgIGluZm9fcHRyLT5mcmVlX21lIG1lbWJlci4gIExpYnBuZy0xLjAuMSBhbmQgZWFybGllciB3ZXJlIG5vdAorICAgICAgICBjb21wYXRpYmxlIGR1ZSB0byBpbnNlcnRpb24gb2YgdGhlIHVzZXIgdHJhbnNmb3JtIGZ1bmN0aW9uLiBOb3RlCisgICAgICAgIHRvIG1haW50YWluZXI6IHRoaXMgdGVzdCBjYW4gYmUgcmVtb3ZlZCBmcm9tIHZlcnNpb24gMS4yLjAgYW5kCisgICAgICAgIGJleW9uZCBiZWNhdXNlIHRoZSBwcmV2aW91cyB0ZXN0IHdvdWxkIGhhdmUgYWxyZWFkeSByZWplY3RlZCBpdC4gKi8KIAotICAgICBpZiAodXNlcl9wbmdfdmVyWzRdID09ICc2JyAmJiB1c2VyX3BuZ192ZXJbMl0gPT0gJzAnICYmCi0gICAgICAgICB1c2VyX3BuZ192ZXJbMF0gPT0gJzEnICYmIHVzZXJfcG5nX3Zlcls1XSA9PSAnXDAnKQorICAgICBpZiAodXNlcl9wbmdfdmVyWzBdID09ICcxJyAmJiB1c2VyX3BuZ192ZXJbMl0gPT0gJzAnICYmCisgICAgICAgICAodXNlcl9wbmdfdmVyWzRdIDwgICcyJyB8fCB1c2VyX3BuZ192ZXJbNF0gPT0gJzYnKSAmJgorICAgICAgICAgdXNlcl9wbmdfdmVyWzVdID09ICdcMCcpCiAgICAgIHsKICAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsCi0gICAgICAgICAgICJBcHBsaWNhdGlvbiBtdXN0IGJlIHJlY29tcGlsZWQ7IHZlcnNpb24gMS4wLjYgd2FzIGluY29tcGF0aWJsZSIpOworICAgICAgICAiQXBwbGljYXRpb24gbXVzdCBiZSByZWNvbXBpbGVkOyB2ZXJzaW9ucyA8PSAxLjAuNiB3ZXJlIGluY29tcGF0aWJsZSIpOwogICAgICB9CiAgICB9CiAKQEAgLTE0NCwxOCArMTQ3LDQyIEBACiBwbmdfcmVhZF9pbml0KHBuZ19zdHJ1Y3RwIHBuZ19wdHIpCiB7CiAgICAvKiBXZSBvbmx5IGNvbWUgaGVyZSB2aWEgcHJlLTEuMC43LWNvbXBpbGVkIGFwcGxpY2F0aW9ucyAqLwotICAgcG5nX3JlYWRfaW5pdF8yKHBuZ19wdHIsICIxLjAuMCIsIDEwMDAwLCAxMDAwMCk7CisgICBwbmdfcmVhZF9pbml0XzIocG5nX3B0ciwgIjEuMC4wIiwgMCwgMCk7CiB9CiAKKyN1bmRlZiBwbmdfcmVhZF9pbml0XzIKIHZvaWQgUE5HQVBJCiBwbmdfcmVhZF9pbml0XzIocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2NvbnN0X2NoYXJwIHVzZXJfcG5nX3ZlciwKICAgIHBuZ19zaXplX3QgcG5nX3N0cnVjdF9zaXplLCBwbmdfc2l6ZV90IHBuZ19pbmZvX3NpemUpCiB7CisgICAvKiBXZSBvbmx5IGNvbWUgaGVyZSB2aWEgcHJlLTEuMC4xMi1jb21waWxlZCBhcHBsaWNhdGlvbnMgKi8KKyAgIGlmKHNpemVvZihwbmdfc3RydWN0KSA+IHBuZ19zdHJ1Y3Rfc2l6ZSkKKyAgICAgeworICAgICAgIHBuZ19wdHItPmVycm9yX2ZuPShwbmdfZXJyb3JfcHRyKU5VTEw7CisgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsCisgICAgICAgIlRoZSBwbmcgc3RydWN0IGFsbG9jYXRlZCBieSB0aGUgYXBwbGljYXRpb24gZm9yIHJlYWRpbmcgaXMgdG9vIHNtYWxsLiIpOworICAgICB9CisgICBpZihzaXplb2YocG5nX2luZm8pID4gcG5nX2luZm9fc2l6ZSkKKyAgICAgeworICAgICAgIHBuZ19wdHItPmVycm9yX2ZuPShwbmdfZXJyb3JfcHRyKU5VTEw7CisgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsCisgICAgICAgICAiVGhlIGluZm8gc3RydWN0IGFsbG9jYXRlZCBieSBhcHBsaWNhdGlvbiBmb3IgcmVhZGluZyBpcyB0b28gc21hbGwuIik7CisgICAgIH0KKyAgIHBuZ19yZWFkX2luaXRfMygmcG5nX3B0ciwgdXNlcl9wbmdfdmVyLCBwbmdfc3RydWN0X3NpemUpOworfQorCit2b2lkIFBOR0FQSQorcG5nX3JlYWRfaW5pdF8zKHBuZ19zdHJ1Y3RwcCBwdHJfcHRyLCBwbmdfY29uc3RfY2hhcnAgdXNlcl9wbmdfdmVyLAorICAgcG5nX3NpemVfdCBwbmdfc3RydWN0X3NpemUpCit7CiAjaWZkZWYgUE5HX1NFVEpNUF9TVVBQT1JURUQKICAgIGptcF9idWYgdG1wX2ptcDsgIC8qIHRvIHNhdmUgY3VycmVudCBqdW1wIGJ1ZmZlciAqLwogI2VuZGlmCiAKICAgIGludCBpPTA7CisKKyAgIHBuZ19zdHJ1Y3RwIHBuZ19wdHI9KnB0cl9wdHI7CisKICAgIGRvCiAgICB7CiAgICAgIGlmKHVzZXJfcG5nX3ZlcltpXSAhPSBwbmdfbGlicG5nX3ZlcltpXSkKQEAgLTE2MywyOCArMTkwLDI4IEBACiAjaWZkZWYgUE5HX0xFR0FDWV9TVVBQT1JURUQKICAgICAgICBwbmdfcHRyLT5mbGFncyB8PSBQTkdfRkxBR19MSUJSQVJZX01JU01BVENIOwogI2Vsc2UKLSAgICAgICBwbmdfcHRyLT5lcnJvcl9mbj0ocG5nX2Vycm9yX3B0cilOVUxMOwotICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLAotICAgICAgICAiQXBwbGljYXRpb24gdXNlcyBkZXByZWNhdGVkIHBuZ19yZWFkX2luaXQoKSBhbmQgbXVzdCBiZSByZWNvbXBpbGVkLiIpOworICAgICAgIHBuZ19wdHItPndhcm5pbmdfZm49KHBuZ19lcnJvcl9wdHIpTlVMTDsKKyAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLAorICAgICAgICAiQXBwbGljYXRpb24gdXNlcyBkZXByZWNhdGVkIHBuZ19yZWFkX2luaXQoKSBhbmQgc2hvdWxkIGJlIHJlY29tcGlsZWQuIik7CisgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgfQogICAgfSB3aGlsZSAocG5nX2xpYnBuZ192ZXJbaSsrXSk7CiAKLSAgIGlmKHNpemVvZihwbmdfc3RydWN0KSA+IHBuZ19zdHJ1Y3Rfc2l6ZSB8fAotICAgICAgc2l6ZW9mKHBuZ19pbmZvKSA+IHBuZ19pbmZvX3NpemUpCi0gICAgIHsKLSAgICAgICBwbmdfcHRyLT5lcnJvcl9mbj0ocG5nX2Vycm9yX3B0cilOVUxMOwotICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLAotICAgICAgIkFwcGxpY2F0aW9uIGFuZCBsaWJyYXJ5IGhhdmUgZGlmZmVyZW50IHNpemVkIHN0cnVjdHMuIFBsZWFzZSByZWNvbXBpbGUuIik7Ci0gICAgIH0KLQotICAgcG5nX2RlYnVnKDEsICJpbiBwbmdfcmVhZF9pbml0XzJcbiIpOworICAgcG5nX2RlYnVnKDEsICJpbiBwbmdfcmVhZF9pbml0XzNcbiIpOwogCiAjaWZkZWYgUE5HX1NFVEpNUF9TVVBQT1JURUQKICAgIC8qIHNhdmUganVtcCBidWZmZXIgYW5kIGVycm9yIGZ1bmN0aW9ucyAqLwogICAgcG5nX21lbWNweSh0bXBfam1wLCBwbmdfcHRyLT5qbXBidWYsIHNpemVvZiAoam1wX2J1ZikpOwogI2VuZGlmCiAKKyAgIGlmKHNpemVvZihwbmdfc3RydWN0KSA+IHBuZ19zdHJ1Y3Rfc2l6ZSkKKyAgICAgeworICAgICAgIHBuZ19kZXN0cm95X3N0cnVjdChwbmdfcHRyKTsKKyAgICAgICAqcHRyX3B0ciA9IChwbmdfc3RydWN0cClwbmdfY3JlYXRlX3N0cnVjdChQTkdfU1RSVUNUX1BORyk7CisgICAgICAgcG5nX3B0ciA9ICpwdHJfcHRyOworICAgICB9CisKICAgIC8qIHJlc2V0IGFsbCB2YXJpYWJsZXMgdG8gMCAqLwogICAgcG5nX21lbXNldChwbmdfcHRyLCAwLCBzaXplb2YgKHBuZ19zdHJ1Y3QpKTsKIApAQCAtNzE1LDcgKzc0Miw3IEBACiAgKiBub3QgY2FsbGVkIHBuZ19zZXRfaW50ZXJsYWNlX2hhbmRsaW5nKCksIHRoZSBkaXNwbGF5X3JvdyBidWZmZXIgd2lsbAogICogYmUgaWdub3JlZCwgc28gcGFzcyBOVUxMIHRvIGl0LgogICoKLSAqIFsqXSBwbmdfaGFuZGxlX2FscGhhKCkgZG9lcyBub3QgZXhpc3QgeWV0LCBhcyBvZiBsaWJwbmcgdmVyc2lvbiAxLjAuMTEKKyAqIFsqXSBwbmdfaGFuZGxlX2FscGhhKCkgZG9lcyBub3QgZXhpc3QgeWV0LCBhcyBvZiBsaWJwbmcgdmVyc2lvbiAxLjAuMTJiZXRhMQogICovCiAKIHZvaWQgUE5HQVBJCkBAIC03NjQsNyArNzkxLDcgQEAKICAqIG9ubHkgY2FsbCB0aGlzIGZ1bmN0aW9uIG9uY2UuICBJZiB5b3UgZGVzaXJlIHRvIGhhdmUgYW4gaW1hZ2UgZm9yCiAgKiBlYWNoIHBhc3Mgb2YgYSBpbnRlcmxhY2VkIGltYWdlLCB1c2UgcG5nX3JlYWRfcm93cygpIGluc3RlYWQuCiAgKgotICogWypdIHBuZ19oYW5kbGVfYWxwaGEoKSBkb2VzIG5vdCBleGlzdCB5ZXQsIGFzIG9mIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMQorICogWypdIHBuZ19oYW5kbGVfYWxwaGEoKSBkb2VzIG5vdCBleGlzdCB5ZXQsIGFzIG9mIGxpYnBuZyB2ZXJzaW9uIDEuMC4xMmJldGExCiAgKi8KIHZvaWQgUE5HQVBJCiBwbmdfcmVhZF9pbWFnZShwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfYnl0ZXBwIGltYWdlKQpAQCAtOTk0LDYgKzEwMjEsNyBAQAogICAgcG5nX2luZm9wIGluZm9fcHRyID0gTlVMTCwgZW5kX2luZm9fcHRyID0gTlVMTDsKICNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECiAgICBwbmdfZnJlZV9wdHIgZnJlZV9mbiA9IE5VTEw7CisgICBwbmdfdm9pZHAgbWVtX3B0ciA9IE5VTEw7CiAjZW5kaWYKIAogICAgcG5nX2RlYnVnKDEsICJpbiBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdFxuIik7CkBAIC0xMDA5LDYgKzEwMzcsNyBAQAogCiAjaWZkZWYgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAogICAgZnJlZV9mbiA9IHBuZ19wdHItPmZyZWVfZm47CisgICBtZW1fcHRyID0gcG5nX3B0ci0+bWVtX3B0cjsKICNlbmRpZgogCiAgICBwbmdfcmVhZF9kZXN0cm95KHBuZ19wdHIsIGluZm9fcHRyLCBlbmRfaW5mb19wdHIpOwpAQCAtMTAyMCw3ICsxMDQ5LDggQEAKICNlbmRpZgogCiAjaWZkZWYgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAotICAgICAgcG5nX2Rlc3Ryb3lfc3RydWN0XzIoKHBuZ192b2lkcClpbmZvX3B0ciwgZnJlZV9mbik7CisgICAgICBwbmdfZGVzdHJveV9zdHJ1Y3RfMigocG5nX3ZvaWRwKWluZm9fcHRyLCAocG5nX2ZyZWVfcHRyKWZyZWVfZm4sCisgICAgICAgICAgKHBuZ192b2lkcCltZW1fcHRyKTsKICNlbHNlCiAgICAgICBwbmdfZGVzdHJveV9zdHJ1Y3QoKHBuZ192b2lkcClpbmZvX3B0cik7CiAjZW5kaWYKQEAgLTEwMzMsNyArMTA2Myw4IEBACiAgICAgICBwbmdfZnJlZV9kYXRhKHBuZ19wdHIsIGVuZF9pbmZvX3B0ciwgUE5HX0ZSRUVfVEVYVCwgLTEpOwogI2VuZGlmCiAjaWZkZWYgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAotICAgICAgcG5nX2Rlc3Ryb3lfc3RydWN0XzIoKHBuZ192b2lkcCllbmRfaW5mb19wdHIsIGZyZWVfZm4pOworICAgICAgcG5nX2Rlc3Ryb3lfc3RydWN0XzIoKHBuZ192b2lkcCllbmRfaW5mb19wdHIsIChwbmdfZnJlZV9wdHIpZnJlZV9mbiwKKyAgICAgICAgIChwbmdfdm9pZHApbWVtX3B0cik7CiAjZWxzZQogICAgICAgcG5nX2Rlc3Ryb3lfc3RydWN0KChwbmdfdm9pZHApZW5kX2luZm9fcHRyKTsKICNlbmRpZgpAQCAtMTA0Myw3ICsxMDc0LDggQEAKICAgIGlmIChwbmdfcHRyICE9IE5VTEwpCiAgICB7CiAjaWZkZWYgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAotICAgICAgcG5nX2Rlc3Ryb3lfc3RydWN0XzIoKHBuZ192b2lkcClwbmdfcHRyLCBmcmVlX2ZuKTsKKyAgICAgIHBuZ19kZXN0cm95X3N0cnVjdF8yKChwbmdfdm9pZHApcG5nX3B0ciwgKHBuZ19mcmVlX3B0cilmcmVlX2ZuLAorICAgICAgICAgIChwbmdfdm9pZHApbWVtX3B0cik7CiAjZWxzZQogICAgICAgcG5nX2Rlc3Ryb3lfc3RydWN0KChwbmdfdm9pZHApcG5nX3B0cik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3BuZ3Jpby5jIGIvcG5ncmlvLmMKaW5kZXggNDI5MDYyNC4uMDA2ZDcyZSAxMDA2NDQKLS0tIGEvcG5ncmlvLmMKKysrIGIvcG5ncmlvLmMKQEAgLTEsNyArMSw3IEBACiAKIC8qIHBuZ3Jpby5jIC0gZnVuY3Rpb25zIGZvciBkYXRhIGlucHV0CiAgKgotICogbGlicG5nIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKQEAgLTI2LDcgKzI2LDcgQEAKIHZvaWQgLyogUFJJVkFURSAqLwogcG5nX3JlYWRfZGF0YShwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfYnl0ZXAgZGF0YSwgcG5nX3NpemVfdCBsZW5ndGgpCiB7Ci0gICBwbmdfZGVidWcxKDQsInJlYWRpbmcgJWQgYnl0ZXNcbiIsIGxlbmd0aCk7CisgICBwbmdfZGVidWcxKDQsInJlYWRpbmcgJWQgYnl0ZXNcbiIsIChpbnQpbGVuZ3RoKTsKICAgIGlmIChwbmdfcHRyLT5yZWFkX2RhdGFfZm4gIT0gTlVMTCkKICAgICAgICgqKHBuZ19wdHItPnJlYWRfZGF0YV9mbikpKHBuZ19wdHIsIGRhdGEsIGxlbmd0aCk7CiAgICBlbHNlCmRpZmYgLS1naXQgYS9wbmdydHJhbi5jIGIvcG5ncnRyYW4uYwppbmRleCBhZjc2MzFlLi5lMmQ0NmZmIDEwMDY0NAotLS0gYS9wbmdydHJhbi5jCisrKyBiL3BuZ3J0cmFuLmMKQEAgLTEsNyArMSw3IEBACiAKIC8qIHBuZ3J0cmFuLmMgLSB0cmFuc2Zvcm1zIHRoZSBkYXRhIGluIGEgcm93IGZvciBQTkcgcmVhZGVycwogICoKLSAqIGxpYnBuZyAxLjAuMTEgLSBBcHJpbCAyNywgMjAwMQorICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCmRpZmYgLS1naXQgYS9wbmdydXRpbC5jIGIvcG5ncnV0aWwuYwppbmRleCAyODRmNjM2Li4zMTFmODFlIDEwMDY0NAotLS0gYS9wbmdydXRpbC5jCisrKyBiL3BuZ3J1dGlsLmMKQEAgLTEsNyArMSw3IEBACiAKIC8qIHBuZ3J1dGlsLmMgLSB1dGlsaXRpZXMgdG8gcmVhZCBhIFBORyBmaWxlCiAgKgotICogbGlicG5nIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKQEAgLTMzOSw3ICszMzksOSBAQAogICAgcG5nX3B0ci0+Yml0X2RlcHRoID0gKHBuZ19ieXRlKWJpdF9kZXB0aDsKICAgIHBuZ19wdHItPmludGVybGFjZWQgPSAocG5nX2J5dGUpaW50ZXJsYWNlX3R5cGU7CiAgICBwbmdfcHRyLT5jb2xvcl90eXBlID0gKHBuZ19ieXRlKWNvbG9yX3R5cGU7CisjaWYgZGVmaW5lZChQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCkKICAgIHBuZ19wdHItPmZpbHRlcl90eXBlID0gKHBuZ19ieXRlKWZpbHRlcl90eXBlOworI2VuZGlmCiAKICAgIC8qIGZpbmQgbnVtYmVyIG9mIGNoYW5uZWxzICovCiAgICBzd2l0Y2ggKHBuZ19wdHItPmNvbG9yX3R5cGUpCkBAIC0zOTYsNiArMzk4LDEzIEBACiAKICAgIHBuZ19wdHItPm1vZGUgfD0gUE5HX0hBVkVfUExURTsKIAorICAgaWYgKCEocG5nX3B0ci0+Y29sb3JfdHlwZSZQTkdfQ09MT1JfTUFTS19DT0xPUikpCisgICB7CisgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLAorICAgICAgICAiSWdub3JpbmcgUExURSBjaHVuayBpbiBncmF5c2NhbGUgUE5HIik7CisgICAgICBwbmdfY3JjX2ZpbmlzaChwbmdfcHRyLCBsZW5ndGgpOworICAgICAgcmV0dXJuOworICAgfQogI2lmICFkZWZpbmVkKFBOR19SRUFEX09QVF9QTFRFX1NVUFBPUlRFRCkKICAgIGlmIChwbmdfcHRyLT5jb2xvcl90eXBlICE9IFBOR19DT0xPUl9UWVBFX1BBTEVUVEUpCiAgICB7CkBAIC01MTIsOSArNTIxLDcgQEAKICAgIHsKICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiTm8gaW1hZ2UgaW4gZmlsZSIpOwogCi0gICAgICAvKiB0byBxdWlldCBjb21waWxlciB3YXJuaW5ncyBhYm91dCB1bnVzZWQgaW5mb19wdHIgKi8KLSAgICAgIGlmIChpbmZvX3B0ciA9PSBOVUxMKQotICAgICAgICAgcmV0dXJuOworICAgICAgaW5mb19wdHIgPSBpbmZvX3B0cjsgLyogcXVpZXQgY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgdW51c2VkIGluZm9fcHRyICovCiAgICB9CiAKICAgIHBuZ19wdHItPm1vZGUgfD0gKFBOR19BRlRFUl9JREFUIHwgUE5HX0hBVkVfSUVORCk7CkBAIC0yMDgzLDggKzIwOTAsNyBAQAogICAgcG5nX2NyY19maW5pc2gocG5nX3B0ciwgc2tpcCk7CiAKICNpZiAhZGVmaW5lZChQTkdfUkVBRF9VU0VSX0NIVU5LU19TVVBQT1JURUQpCi0gICBpZiAoaW5mb19wdHIgPT0gTlVMTCkKLSAgICAgLyogcXVpZXQgY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgdW51c2VkIGluZm9fcHRyICovIDsKKyAgIGluZm9fcHRyID0gaW5mb19wdHI7IC8qIHF1aWV0IGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IHVudXNlZCBpbmZvX3B0ciAqLwogI2VuZGlmCiB9CiAKQEAgLTI1NDUsOSArMjU1MSw3IEBACiAgICAgICAgICAocG5nX3VpbnRfMzIpcm93X2luZm8tPnBpeGVsX2RlcHRoICsgNykgPj4gMyk7CiAgICB9CiAjaWYgIWRlZmluZWQoUE5HX1JFQURfUEFDS1NXQVBfU1VQUE9SVEVEKQotICAgLyogc2lsZW5jZSBjb21waWxlciB3YXJuaW5nICovCi0gICBpZiAodHJhbnNmb3JtYXRpb25zKQotICAgICAgcmV0dXJuOworICAgdHJhbnNmb3JtYXRpb25zID0gdHJhbnNmb3JtYXRpb25zOyAvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcgKi8KICNlbmRpZgogfQogI2VuZGlmIC8qICFQTkdfSEFWRV9BU1NFTUJMRVJfUkVBRF9JTlRFUkxBQ0UgKi8KQEAgLTI5NjQsNyArMjk2OCw5IEBACiAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIlRoaXMgaW1hZ2UgcmVxdWlyZXMgYSByb3cgZ3JlYXRlciB0aGFuIDY0S0IiKTsKICNlbmRpZgogICAgcG5nX3B0ci0+cm93X2J1ZiA9IChwbmdfYnl0ZXApcG5nX21hbGxvYyhwbmdfcHRyLCByb3dfYnl0ZXMpOworI2lmIGRlZmluZWQoUE5HX0RFQlVHKSAmJiBkZWZpbmVkKFBOR19VU0VfUE5HR0NDUkQpCiAgICBwbmdfcHRyLT5yb3dfYnVmX3NpemUgPSByb3dfYnl0ZXM7CisjZW5kaWYKIAogI2lmZGVmIFBOR19NQVhfTUFMTE9DXzY0SwogICAgaWYgKChwbmdfdWludF8zMilwbmdfcHRyLT5yb3dieXRlcyArIDEgPiAocG5nX3VpbnRfMzIpNjU1MzZMKQpkaWZmIC0tZ2l0IGEvcG5nc2V0LmMgYi9wbmdzZXQuYwppbmRleCA2MWRlNWRkLi40ZmI2YzBlIDEwMDY0NAotLS0gYS9wbmdzZXQuYworKysgYi9wbmdzZXQuYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5nc2V0LmMgLSBzdG9yYWdlIG9mIGltYWdlIGluZm9ybWF0aW9uIGludG8gaW5mbyBzdHJ1Y3QKICAqCi0gKiBsaWJwbmcgMS4wLjExIC0gQXByaWwgMjcsIDIwMDEKKyAqIGxpYnBuZyAxLjAuMTJiZXRhMSAtIE1heSAxNCwgMjAwMQogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMSBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQpAQCAtNjU0LDggKzY1NCw5IEBACiAKICAgICAgIHRleHRwLT5rZXkgPSAocG5nX2NoYXJwKXBuZ19tYWxsb2MocG5nX3B0ciwKICAgICAgICAgIChwbmdfdWludF8zMikoa2V5X2xlbiArIHRleHRfbGVuZ3RoICsgbGFuZ19sZW4gKyBsYW5nX2tleV9sZW4gKyA0KSk7Ci0gICAgICBwbmdfZGVidWcyKDIsICJBbGxvY2F0ZWQgJWQgYnl0ZXMgYXQgJXggaW4gcG5nX3NldF90ZXh0XG4iLAotICAgICAgICAga2V5X2xlbiArIGxhbmdfbGVuICsgbGFuZ19rZXlfbGVuICsgdGV4dF9sZW5ndGggKyA0LCAoaW50KXRleHRwLT5rZXkpOworICAgICAgcG5nX2RlYnVnMigyLCAiQWxsb2NhdGVkICVsdSBieXRlcyBhdCAleCBpbiBwbmdfc2V0X3RleHRcbiIsCisgICAgICAgICAocG5nX3VpbnRfMzIpKGtleV9sZW4gKyBsYW5nX2xlbiArIGxhbmdfa2V5X2xlbiArIHRleHRfbGVuZ3RoICsgNCksCisgICAgICAgICAoaW50KXRleHRwLT5rZXkpOwogCiAgICAgICBwbmdfbWVtY3B5KHRleHRwLT5rZXksIHRleHRfcHRyW2ldLmtleSwKICAgICAgICAgIChwbmdfc2l6ZV90KShrZXlfbGVuKSk7CkBAIC05NjgsMyArOTY5LDU4IEBACiAgICAgICBpbmZvX3B0ci0+dmFsaWQgJj0gfihtYXNrKTsKIH0KIAorCisjaWZkZWYgUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRAorLyogdGhpcyBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gbGlicG5nIDEuMi4wIGFuZCBzaG91bGQgYWx3YXlzIGV4aXN0IGJ5IGRlZmF1bHQgKi8KK3ZvaWQgUE5HQVBJCitwbmdfc2V0X2FzbV9mbGFncyAocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX3VpbnRfMzIgYXNtX2ZsYWdzKQoreworICAgIHBuZ191aW50XzMyIHNldHRhYmxlX2FzbV9mbGFnczsKKyAgICBwbmdfdWludF8zMiBzZXR0YWJsZV9tbXhfZmxhZ3M7CisKKyAgICBzZXR0YWJsZV9tbXhfZmxhZ3MgPQorI2lmZGVmIFBOR19IQVZFX0FTU0VNQkxFUl9DT01CSU5FX1JPVworICAgICAgICAgICAgICAgICAgICAgICAgIFBOR19BU01fRkxBR19NTVhfUkVBRF9DT01CSU5FX1JPVyAgfAorI2VuZGlmCisjaWZkZWYgUE5HX0hBVkVfQVNTRU1CTEVSX1JFQURfSU5URVJMQUNFCisgICAgICAgICAgICAgICAgICAgICAgICAgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0lOVEVSTEFDRSAgICB8CisjZW5kaWYKKyNpZmRlZiBQTkdfSEFWRV9BU1NFTUJMRVJfUkVBRF9GSUxURVJfUk9XCisgICAgICAgICAgICAgICAgICAgICAgICAgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9TVUIgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9VUCAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9BVkcgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgUE5HX0FTTV9GTEFHX01NWF9SRUFEX0ZJTFRFUl9QQUVUSCB8CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAwOworCisgICAgLyogY291bGQgYmUgc29tZSBub24tTU1YIG9uZXMgaW4gdGhlIGZ1dHVyZSwgYnV0IG5vdCBjdXJyZW50bHk6ICovCisgICAgc2V0dGFibGVfYXNtX2ZsYWdzID0gc2V0dGFibGVfbW14X2ZsYWdzOworCisgICAgaWYgKCEocG5nX3B0ci0+YXNtX2ZsYWdzICYgUE5HX0FTTV9GTEFHX01NWF9TVVBQT1JUX0NPTVBJTEVEKSB8fAorICAgICAgICAhKHBuZ19wdHItPmFzbV9mbGFncyAmIFBOR19BU01fRkxBR19NTVhfU1VQUE9SVF9JTl9DUFUpKQorICAgIHsKKyAgICAgICAgLyogY2xlYXIgYWxsIE1NWCBmbGFncyBpZiBNTVggaXNuJ3Qgc3VwcG9ydGVkICovCisgICAgICAgIHNldHRhYmxlX2FzbV9mbGFncyAmPSB+c2V0dGFibGVfbW14X2ZsYWdzOworICAgICAgICBwbmdfcHRyLT5hc21fZmxhZ3MgJj0gfnNldHRhYmxlX21teF9mbGFnczsKKyAgICB9CisKKyAgICAvKiB3ZSdyZSByZXBsYWNpbmcgdGhlIHNldHRhYmxlIGJpdHMgd2l0aCB0aG9zZSBwYXNzZWQgaW4gYnkgdGhlIHVzZXIsCisgICAgICogc28gZmlyc3QgemVybyB0aGVtIG91dCBvZiB0aGUgbWFzdGVyIGNvcHksIHRoZW4gbG9naWNhbC1PUiBpbiB0aGUKKyAgICAgKiBhbGxvd2VkIHN1YnNldCB0aGF0IHdhcyByZXF1ZXN0ZWQgKi8KKworICAgIHBuZ19wdHItPmFzbV9mbGFncyAmPSB+c2V0dGFibGVfYXNtX2ZsYWdzOwkJCS8qIHplcm8gdGhlbSAqLworICAgIHBuZ19wdHItPmFzbV9mbGFncyB8PSAoYXNtX2ZsYWdzICYgc2V0dGFibGVfYXNtX2ZsYWdzKTsJLyogc2V0IHRoZW0gKi8KK30KKyNlbmRpZiAvKiA/UE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRCAqLworCisjaWZkZWYgUE5HX0FTU0VNQkxFUl9DT0RFX1NVUFBPUlRFRAorLyogdGhpcyBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gbGlicG5nIDEuMi4wICovCit2b2lkIFBOR0FQSQorcG5nX3NldF9tbXhfdGhyZXNob2xkcyAocG5nX3N0cnVjdHAgcG5nX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBuZ19ieXRlIG1teF9iaXRkZXB0aF90aHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAgICAgICBwbmdfdWludF8zMiBtbXhfcm93Ynl0ZXNfdGhyZXNob2xkKQoreworICAgIHBuZ19wdHItPm1teF9iaXRkZXB0aF90aHJlc2hvbGQgPSBtbXhfYml0ZGVwdGhfdGhyZXNob2xkOworICAgIHBuZ19wdHItPm1teF9yb3dieXRlc190aHJlc2hvbGQgPSBtbXhfcm93Ynl0ZXNfdGhyZXNob2xkOworfQorI2VuZGlmIC8qID9QTkdfQVNTRU1CTEVSX0NPREVfU1VQUE9SVEVEICovCmRpZmYgLS1naXQgYS9wbmd0ZXN0LmMgYi9wbmd0ZXN0LmMKaW5kZXggMDNlN2RhMy4uZGFhYTZiOCAxMDA2NDQKLS0tIGEvcG5ndGVzdC5jCisrKyBiL3BuZ3Rlc3QuYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5ndGVzdC5jIC0gYSBzaW1wbGUgdGVzdCBwcm9ncmFtIHRvIHRlc3QgbGlicG5nCiAgKgotICogbGlicG5nIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKQEAgLTcxMCwxNCArNzEwLDE0IEBACiAjICBlbmRpZgogI2Vsc2UKICAgIHBuZ19zZXRfcmVhZF9mbihyZWFkX3B0ciwgKHBuZ192b2lkcClmcGluLCBwbmd0ZXN0X3JlYWRfZGF0YSk7Ci0jaWZkZWYgUE5HX1dSSVRFX1NVUFBPUlRFRAorIyAgaWZkZWYgUE5HX1dSSVRFX1NVUFBPUlRFRAogICAgcG5nX3NldF93cml0ZV9mbih3cml0ZV9wdHIsIChwbmdfdm9pZHApZnBvdXQsICBwbmd0ZXN0X3dyaXRlX2RhdGEsCi0jaWYgZGVmaW5lZChQTkdfV1JJVEVfRkxVU0hfU1VQUE9SVEVEKQorIyAgICBpZiBkZWZpbmVkKFBOR19XUklURV9GTFVTSF9TVVBQT1JURUQpCiAgICAgICBwbmd0ZXN0X2ZsdXNoKTsKLSNlbHNlCi0jZW5kaWYKKyMgICAgZWxzZQogICAgICAgTlVMTCk7Ci0jZW5kaWYKKyMgICAgZW5kaWYKKyMgIGVuZGlmCiAjZW5kaWYKICAgIGlmKHN0YXR1c19kb3RzX3JlcXVlc3RlZCA9PSAxKQogICAgewpAQCAtMTUxMSw0ICsxNTExLDQgQEAKIH0KIAogLyogR2VuZXJhdGUgYSBjb21waWxlciBlcnJvciBpZiB0aGVyZSBpcyBhbiBvbGQgcG5nLmggaW4gdGhlIHNlYXJjaCBwYXRoLiAqLwotdHlwZWRlZiB2ZXJzaW9uXzFfMF8xMSB5b3VyX3BuZ19oX2lzX25vdF92ZXJzaW9uXzFfMF8xMTsKK3R5cGVkZWYgdmVyc2lvbl8xXzBfMTJiZXRhMSB5b3VyX3BuZ19oX2lzX25vdF92ZXJzaW9uXzFfMF8xMmJldGExOwpkaWZmIC0tZ2l0IGEvcG5ndHJhbnMuYyBiL3BuZ3RyYW5zLmMKaW5kZXggYTNiODBhMy4uODVkMjc1NSAxMDA2NDQKLS0tIGEvcG5ndHJhbnMuYworKysgYi9wbmd0cmFucy5jCkBAIC0xLDcgKzEsNyBAQAogCiAvKiBwbmd0cmFucy5jIC0gdHJhbnNmb3JtcyB0aGUgZGF0YSBpbiBhIHJvdyAodXNlZCBieSBib3RoIHJlYWRlcnMgYW5kIHdyaXRlcnMpCiAgKgotICogbGlicG5nIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKZGlmZiAtLWdpdCBhL3BuZ3ZjcmQuYyBiL3BuZ3ZjcmQuYwppbmRleCBiMDBhNTZkLi43NWNjOWI1IDEwMDY0NAotLS0gYS9wbmd2Y3JkLmMKKysrIGIvcG5ndmNyZC5jCkBAIC0yLDcgKzIsNyBAQAogICoKICAqIEZvciBJbnRlbCB4ODYgQ1BVIGFuZCBNaWNyb3NvZnQgVmlzdWFsIEMrKyBjb21waWxlcgogICoKLSAqIGxpYnBuZyAxLjAuMTEgLSBBcHJpbCAyNywgMjAwMQorICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogQ29weXJpZ2h0IChjKSAxOTk4LCBJbnRlbCBDb3Jwb3JhdGlvbgpkaWZmIC0tZ2l0IGEvcG5nd2lvLmMgYi9wbmd3aW8uYwppbmRleCBhNWJkNDU3Li4xYjRlMjY2IDEwMDY0NAotLS0gYS9wbmd3aW8uYworKysgYi9wbmd3aW8uYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5nd2lvLmMgLSBmdW5jdGlvbnMgZm9yIGRhdGEgb3V0cHV0CiAgKgotICogbGlicG5nIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKZGlmZiAtLWdpdCBhL3BuZ3dyaXRlLmMgYi9wbmd3cml0ZS5jCmluZGV4IGUwMjkxZDMuLjg2ODI5YzQgMTAwNjQ0Ci0tLSBhL3BuZ3dyaXRlLmMKKysrIGIvcG5nd3JpdGUuYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5nd3JpdGUuYyAtIGdlbmVyYWwgcm91dGluZXMgdG8gd3JpdGUgYSBQTkcgZmlsZQogICoKLSAqIGxpYnBuZyAxLjAuMTEgLSBBcHJpbCAyNywgMjAwMQorICogbGlicG5nIDEuMC4xMmJldGExIC0gTWF5IDE0LCAyMDAxCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAxIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCkBAIC00NDQsNyArNDQ0LDcgQEAKICAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX2NyZWF0ZV93cml0ZV9zdHJ1Y3RcbiIpOwogI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKICAgIGlmICgocG5nX3B0ciA9IChwbmdfc3RydWN0cClwbmdfY3JlYXRlX3N0cnVjdF8yKFBOR19TVFJVQ1RfUE5HLAotICAgICAgKHBuZ19tYWxsb2NfcHRyKW1hbGxvY19mbikpID09IE5VTEwpCisgICAgICAocG5nX21hbGxvY19wdHIpbWFsbG9jX2ZuLCAocG5nX3ZvaWRwKW1lbV9wdHIpKSA9PSBOVUxMKQogI2Vsc2UKICAgIGlmICgocG5nX3B0ciA9IChwbmdfc3RydWN0cClwbmdfY3JlYXRlX3N0cnVjdChQTkdfU1RSVUNUX1BORykpID09IE5VTEwpCiAjZW5kaWYgLyogUE5HX1VTRVJfTUVNX1NVUFBPUlRFRCAqLwpAQCAtNDg5LDYgKzQ4OSw3IEBACiAgICAgICAqIG9ubHkgY2hlY2sgdGhlIGZpcnN0IGRpZ2l0LgogICAgICAgKi8KICAgICAgaWYgKHVzZXJfcG5nX3ZlciA9PSBOVUxMIHx8IHVzZXJfcG5nX3ZlclswXSAhPSBwbmdfbGlicG5nX3ZlclswXSB8fAorICAgICAgICAgKHVzZXJfcG5nX3ZlclswXSA9PSAnMScgJiYgdXNlcl9wbmdfdmVyWzJdICE9IHBuZ19saWJwbmdfdmVyWzJdKSB8fAogICAgICAgICAgKHVzZXJfcG5nX3ZlclswXSA9PSAnMCcgJiYgdXNlcl9wbmdfdmVyWzJdIDwgJzknKSkKICAgICAgewogICAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwKQEAgLTQ5NiwxNSArNDk3LDE3IEBACiAgICAgIH0KIAogICAgICAvKiBMaWJwbmcgMS4wLjYgd2FzIG5vdCBiaW5hcnkgY29tcGF0aWJsZSwgZHVlIHRvIGluc2VydGlvbiBvZiB0aGUKLSAgICAgICAgaW5mb19wdHItPmZyZWVfbWUgbWVtYmVyLiAgTm90ZSB0byBtYWludGFpbmVyOiB0aGlzIHRlc3QgY2FuIGJlCi0gICAgICAgIHJlbW92ZWQgZnJvbSB2ZXJzaW9uIDIuMC4wIGFuZCBiZXlvbmQgYmVjYXVzZSB0aGUgcHJldmlvdXMgdGVzdAotICAgICAgICB3b3VsZCBoYXZlIGFscmVhZHkgcmVqZWN0ZWQgaXQuICovCisgICAgICAgIGluZm9fcHRyLT5mcmVlX21lIG1lbWJlci4gIExpYnBuZy0xLjAuMSBhbmQgZWFybGllciB3ZXJlIG5vdAorICAgICAgICBjb21wYXRpYmxlIGR1ZSB0byBpbnNlcnRpb24gb2YgdGhlIHVzZXIgdHJhbnNmb3JtIGZ1bmN0aW9uLiBOb3RlCisgICAgICAgIHRvIG1haW50YWluZXI6IHRoaXMgdGVzdCBjYW4gYmUgcmVtb3ZlZCBmcm9tIHZlcnNpb24gMS4yLjAgYW5kCisgICAgICAgIGJleW9uZCBiZWNhdXNlIHRoZSBwcmV2aW91cyB0ZXN0IHdvdWxkIGhhdmUgYWxyZWFkeSByZWplY3RlZCBpdC4gKi8KIAotICAgICBpZiAodXNlcl9wbmdfdmVyWzRdID09ICc2JyAmJiB1c2VyX3BuZ192ZXJbMl0gPT0gJzAnICYmCi0gICAgICAgICB1c2VyX3BuZ192ZXJbMF0gPT0gJzEnICYmIHVzZXJfcG5nX3Zlcls1XSA9PSAnXDAnKQorICAgICBpZiAodXNlcl9wbmdfdmVyWzBdID09ICcxJyAmJiB1c2VyX3BuZ192ZXJbMl0gPT0gJzAnICYmCisgICAgICAgICAodXNlcl9wbmdfdmVyWzRdIDwgICcyJyB8fCB1c2VyX3BuZ192ZXJbNF0gPT0gJzYnKSAmJgorICAgICAgICAgdXNlcl9wbmdfdmVyWzVdID09ICdcMCcpCiAgICAgIHsKICAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsCi0gICAgICAgICAgICJBcHBsaWNhdGlvbiBtdXN0IGJlIHJlY29tcGlsZWQ7IHZlcnNpb24gMS4wLjYgd2FzIGluY29tcGF0aWJsZSIpOworICAgICAgICAiQXBwbGljYXRpb24gbXVzdCBiZSByZWNvbXBpbGVkOyB2ZXJzaW9ucyA8PSAxLjAuNiB3ZXJlIGluY29tcGF0aWJsZSIpOwogICAgICB9CiAgICB9CiAKQEAgLTUyOSwxMyArNTMyLDM2IEBACiBwbmdfd3JpdGVfaW5pdChwbmdfc3RydWN0cCBwbmdfcHRyKQogewogICAgLyogV2Ugb25seSBjb21lIGhlcmUgdmlhIHByZS0xLjAuNy1jb21waWxlZCBhcHBsaWNhdGlvbnMgKi8KLSAgIHBuZ193cml0ZV9pbml0XzIocG5nX3B0ciwgIjEuMC4wIiwgMTAwMDAsIDEwMDAwKTsKKyAgIHBuZ193cml0ZV9pbml0XzIocG5nX3B0ciwgIjEuMC4wIiwgMCwgMCk7CiB9CiAKKyN1bmRlZiBwbmdfd3JpdGVfaW5pdF8yCiB2b2lkIFBOR0FQSQogcG5nX3dyaXRlX2luaXRfMihwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfY29uc3RfY2hhcnAgdXNlcl9wbmdfdmVyLAogICAgcG5nX3NpemVfdCBwbmdfc3RydWN0X3NpemUsIHBuZ19zaXplX3QgcG5nX2luZm9fc2l6ZSkKIHsKKyAgIC8qIFdlIG9ubHkgY29tZSBoZXJlIHZpYSBwcmUtMS4wLjEyLWNvbXBpbGVkIGFwcGxpY2F0aW9ucyAqLworICAgaWYoc2l6ZW9mKHBuZ19zdHJ1Y3QpID4gcG5nX3N0cnVjdF9zaXplKQorICAgICB7CisgICAgICAgcG5nX3B0ci0+ZXJyb3JfZm49KHBuZ19lcnJvcl9wdHIpTlVMTDsKKyAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwKKyAgICAgICAgICJUaGUgcG5nIHN0cnVjdCBhbGxvY2F0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGlzIHRvbyBzbWFsbC4iKTsKKyAgICAgfQorICAgaWYoc2l6ZW9mKHBuZ19pbmZvKSA+IHBuZ19pbmZvX3NpemUpCisgICAgIHsKKyAgICAgICBwbmdfcHRyLT5lcnJvcl9mbj0ocG5nX2Vycm9yX3B0cilOVUxMOworICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLAorICAgICAgICAgIlRoZSBpbmZvIHN0cnVjdCBhbGxvY2F0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGlzIHRvbyBzbWFsbC4iKTsKKyAgICAgfQorICAgcG5nX3dyaXRlX2luaXRfMygmcG5nX3B0ciwgdXNlcl9wbmdfdmVyLCBwbmdfc3RydWN0X3NpemUpOworfQorCisKK3ZvaWQgUE5HQVBJCitwbmdfd3JpdGVfaW5pdF8zKHBuZ19zdHJ1Y3RwcCBwdHJfcHRyLCBwbmdfY29uc3RfY2hhcnAgdXNlcl9wbmdfdmVyLAorICAgcG5nX3NpemVfdCBwbmdfc3RydWN0X3NpemUpCit7CisgICBwbmdfc3RydWN0cCBwbmdfcHRyPSpwdHJfcHRyOwogI2lmZGVmIFBOR19TRVRKTVBfU1VQUE9SVEVECiAgICBqbXBfYnVmIHRtcF9qbXA7IC8qIHRvIHNhdmUgY3VycmVudCBqdW1wIGJ1ZmZlciAqLwogI2VuZGlmCkBAIC01NDcsMjggKzU3MywyOCBAQAogI2lmZGVmIFBOR19MRUdBQ1lfU1VQUE9SVEVECiAgICAgICAgcG5nX3B0ci0+ZmxhZ3MgfD0gUE5HX0ZMQUdfTElCUkFSWV9NSVNNQVRDSDsKICNlbHNlCi0gICAgICAgcG5nX3B0ci0+ZXJyb3JfZm49KHBuZ19lcnJvcl9wdHIpTlVMTDsKLSAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwKLSAgICAgICAiQXBwbGljYXRpb24gdXNlcyBkZXByZWNhdGVkIHBuZ193cml0ZV9pbml0KCkgYW5kIG11c3QgYmUgcmVjb21waWxlZC4iKTsKKyAgICAgICBwbmdfcHRyLT53YXJuaW5nX2ZuPShwbmdfZXJyb3JfcHRyKU5VTEw7CisgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwKKyAgICAgIkFwcGxpY2F0aW9uIHVzZXMgZGVwcmVjYXRlZCBwbmdfd3JpdGVfaW5pdCgpIGFuZCBzaG91bGQgYmUgcmVjb21waWxlZC4iKTsKKyAgICAgICBicmVhazsKICNlbmRpZgogICAgICB9CiAgICB9IHdoaWxlIChwbmdfbGlicG5nX3ZlcltpKytdKTsKIAotICAgaWYgKHNpemVvZihwbmdfc3RydWN0KSA+IHBuZ19zdHJ1Y3Rfc2l6ZSB8fAotICAgICAgc2l6ZW9mKHBuZ19pbmZvKSA+IHBuZ19pbmZvX3NpemUpCi0gICAgIHsKLSAgICAgICBwbmdfcHRyLT5lcnJvcl9mbj0ocG5nX2Vycm9yX3B0cilOVUxMOwotICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLAotICAgICAgIkFwcGxpY2F0aW9uIGFuZCBsaWJyYXJ5IGhhdmUgZGlmZmVyZW50IHNpemVkIHN0cnVjdHMuIFBsZWFzZSByZWNvbXBpbGUuIik7Ci0gICAgIH0KLQotICAgcG5nX2RlYnVnKDEsICJpbiBwbmdfd3JpdGVfaW5pdF8yXG4iKTsKKyAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX3dyaXRlX2luaXRfM1xuIik7CiAKICNpZmRlZiBQTkdfU0VUSk1QX1NVUFBPUlRFRAogICAgLyogc2F2ZSBqdW1wIGJ1ZmZlciBhbmQgZXJyb3IgZnVuY3Rpb25zICovCiAgICBwbmdfbWVtY3B5KHRtcF9qbXAsIHBuZ19wdHItPmptcGJ1Ziwgc2l6ZW9mIChqbXBfYnVmKSk7CiAjZW5kaWYKIAorICAgaWYgKHNpemVvZihwbmdfc3RydWN0KSA+IHBuZ19zdHJ1Y3Rfc2l6ZSkKKyAgICAgeworICAgICAgIHBuZ19kZXN0cm95X3N0cnVjdChwbmdfcHRyKTsKKyAgICAgICBwbmdfcHRyID0gKHBuZ19zdHJ1Y3RwKXBuZ19jcmVhdGVfc3RydWN0KFBOR19TVFJVQ1RfUE5HKTsKKyAgICAgICAqcHRyX3B0ciA9IHBuZ19wdHI7CisgICAgIH0KKwogICAgLyogcmVzZXQgYWxsIHZhcmlhYmxlcyB0byAwICovCiAgICBwbmdfbWVtc2V0KHBuZ19wdHIsIDAsIHNpemVvZiAocG5nX3N0cnVjdCkpOwogCkBAIC01NzcsMTEgKzYwMywxMiBAQAogICAgcG5nX21lbWNweShwbmdfcHRyLT5qbXBidWYsIHRtcF9qbXAsIHNpemVvZiAoam1wX2J1ZikpOwogI2VuZGlmCiAKKyAgIHBuZ19zZXRfd3JpdGVfZm4ocG5nX3B0ciwgTlVMTCwgTlVMTCwgTlVMTCk7CisKICAgIC8qIGluaXRpYWxpemUgemJ1ZiAtIGNvbXByZXNzaW9uIGJ1ZmZlciAqLwogICAgcG5nX3B0ci0+emJ1Zl9zaXplID0gUE5HX1pCVUZfU0laRTsKICAgIHBuZ19wdHItPnpidWYgPSAocG5nX2J5dGVwKXBuZ19tYWxsb2MocG5nX3B0ciwKICAgICAgIChwbmdfdWludF8zMilwbmdfcHRyLT56YnVmX3NpemUpOwotICAgcG5nX3NldF93cml0ZV9mbihwbmdfcHRyLCBOVUxMLCBOVUxMLCBOVUxMKTsKIAogI2lmIGRlZmluZWQoUE5HX1dSSVRFX1dFSUdIVEVEX0ZJTFRFUl9TVVBQT1JURUQpCiAgICBwbmdfc2V0X2ZpbHRlcl9oZXVyaXN0aWNzKHBuZ19wdHIsIFBOR19GSUxURVJfSEVVUklTVElDX0RFRkFVTFQsCkBAIC04NzYsNiArOTAzLDcgQEAKICAgIHBuZ19pbmZvcCBpbmZvX3B0ciA9IE5VTEw7CiAjaWZkZWYgUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAogICAgcG5nX2ZyZWVfcHRyIGZyZWVfZm4gPSBOVUxMOworICAgcG5nX3ZvaWRwIG1lbV9wdHIgPSBOVUxMOwogI2VuZGlmCiAKICAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX2Rlc3Ryb3lfd3JpdGVfc3RydWN0XG4iKTsKQEAgLTkwNCw3ICs5MzIsOCBAQAogI2VuZGlmCiAKICNpZmRlZiBQTkdfVVNFUl9NRU1fU1VQUE9SVEVECi0gICAgICBwbmdfZGVzdHJveV9zdHJ1Y3RfMigocG5nX3ZvaWRwKWluZm9fcHRyLCBmcmVlX2ZuKTsKKyAgICAgIHBuZ19kZXN0cm95X3N0cnVjdF8yKChwbmdfdm9pZHApaW5mb19wdHIsIChwbmdfZnJlZV9wdHIpZnJlZV9mbiwKKyAgICAgICAgIChwbmdfdm9pZHApbWVtX3B0cik7CiAjZWxzZQogICAgICAgcG5nX2Rlc3Ryb3lfc3RydWN0KChwbmdfdm9pZHApaW5mb19wdHIpOwogI2VuZGlmCkBAIC05MTUsNyArOTQ0LDggQEAKICAgIHsKICAgICAgIHBuZ193cml0ZV9kZXN0cm95KHBuZ19wdHIpOwogI2lmZGVmIFBOR19VU0VSX01FTV9TVVBQT1JURUQKLSAgICAgIHBuZ19kZXN0cm95X3N0cnVjdF8yKChwbmdfdm9pZHApcG5nX3B0ciwgZnJlZV9mbik7CisgICAgICBwbmdfZGVzdHJveV9zdHJ1Y3RfMigocG5nX3ZvaWRwKXBuZ19wdHIsIChwbmdfZnJlZV9wdHIpZnJlZV9mbiwKKyAgICAgICAgIChwbmdfdm9pZHApbWVtX3B0cik7CiAjZWxzZQogICAgICAgcG5nX2Rlc3Ryb3lfc3RydWN0KChwbmdfdm9pZHApcG5nX3B0cik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3BuZ3d0cmFuLmMgYi9wbmd3dHJhbi5jCmluZGV4IGZjMThjNjAuLjg3NDBiODMgMTAwNjQ0Ci0tLSBhL3BuZ3d0cmFuLmMKKysrIGIvcG5nd3RyYW4uYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5nd3RyYW4uYyAtIHRyYW5zZm9ybXMgdGhlIGRhdGEgaW4gYSByb3cgZm9yIFBORyB3cml0ZXJzCiAgKgotICogbGlicG5nIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKZGlmZiAtLWdpdCBhL3BuZ3d1dGlsLmMgYi9wbmd3dXRpbC5jCmluZGV4IGI4YzgyMjIuLmVkOTY0Y2UgMTAwNjQ0Ci0tLSBhL3BuZ3d1dGlsLmMKKysrIGIvcG5nd3V0aWwuYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5nd3V0aWwuYyAtIHV0aWxpdGllcyB0byB3cml0ZSBhIFBORyBmaWxlCiAgKgotICogbGlicG5nIDEuMC4xMSAtIEFwcmlsIDI3LCAyMDAxCisgKiBsaWJwbmcgMS4wLjEyYmV0YTEgLSBNYXkgMTQsIDIwMDEKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDEgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKQEAgLTI4NSw3ICsyODUsNyBAQAogICAgICAgICAgICAgICAgICAgY29tcC0+b3V0cHV0X3B0ciA9IChwbmdfY2hhcnBwKXBuZ19tYWxsb2MocG5nX3B0ciwKICAgICAgICAgICAgICAgICAgICAgIChwbmdfdWludF8zMikoY29tcC0+bWF4X291dHB1dF9wdHIgKiBzaXplb2YgKHBuZ19jaGFycHApKSk7CiAgICAgICAgICAgICAgICAgICBwbmdfbWVtY3B5KGNvbXAtPm91dHB1dF9wdHIsIG9sZF9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgIG9sZF9tYXggKiBzaXplb2YgKHBuZ19jaGFycCkpOworICAgICAgICAgICAgICAgICAgICAgb2xkX21heCAqIHNpemVvZiAocG5nX2NoYXJwKSk7CiAgICAgICAgICAgICAgICAgICBwbmdfZnJlZShwbmdfcHRyLCBvbGRfcHRyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKQEAgLTQzNSw3ICs0MzUsNyBAQAogI2lmIGRlZmluZWQoUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQpCiAgICAgICAhKChwbmdfcHRyLT5tbmdfZmVhdHVyZXNfcGVybWl0dGVkICYgUE5HX0ZMQUdfTU5HX0ZJTFRFUl82NCkgJiYKICAgICAgICgocG5nX3B0ci0+bW9kZSZQTkdfSEFWRV9QTkdfU0lHTkFUVVJFKSA9PSAwKSAmJgotICAgICAgKGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCIHx8IAorICAgICAgKGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCIHx8CiAgICAgICAgY29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9SR0JfQUxQSEEpICYmCiAgICAgICAoZmlsdGVyX3R5cGUgPT0gUE5HX0lOVFJBUElYRUxfRElGRkVSRU5DSU5HKSkgJiYKICNlbmRpZgpAQCAtNDYwLDcgKzQ2MCw5IEBACiAgICBwbmdfcHRyLT5iaXRfZGVwdGggPSAocG5nX2J5dGUpYml0X2RlcHRoOwogICAgcG5nX3B0ci0+Y29sb3JfdHlwZSA9IChwbmdfYnl0ZSljb2xvcl90eXBlOwogICAgcG5nX3B0ci0+aW50ZXJsYWNlZCA9IChwbmdfYnl0ZSlpbnRlcmxhY2VfdHlwZTsKKyNpZiBkZWZpbmVkKFBOR19NTkdfRkVBVFVSRVNfU1VQUE9SVEVEKQogICAgcG5nX3B0ci0+ZmlsdGVyX3R5cGUgPSAocG5nX2J5dGUpZmlsdGVyX3R5cGU7CisjZW5kaWYKICAgIHBuZ19wdHItPndpZHRoID0gd2lkdGg7CiAgICBwbmdfcHRyLT5oZWlnaHQgPSBoZWlnaHQ7CiAKQEAgLTUzNiwyMCArNTM4LDI3IEBACiAgICBwbmdfZGVidWcoMSwgImluIHBuZ193cml0ZV9QTFRFXG4iKTsKICAgIGlmICgoCiAjaWYgZGVmaW5lZChQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCkgfHwgXAotICAgIGRlZmluZWQgKFBOR19XUklURV9FTVBUWV9QTFRFX1NVUFBPUlRFRCkKKyAgICBkZWZpbmVkKFBOR19XUklURV9FTVBUWV9QTFRFX1BFUk1JVFRFRCkKICAgICAgICAgIShwbmdfcHRyLT5tbmdfZmVhdHVyZXNfcGVybWl0dGVkICYgUE5HX0ZMQUdfTU5HX0VNUFRZX1BMVEUpICYmCiAjZW5kaWYKICAgICAgICAgbnVtX3BhbCA9PSAwKSB8fCBudW1fcGFsID4gMjU2KQorICAgeworICAgICBpZiAocG5nX3B0ci0+Y29sb3JfdHlwZSA9PSBQTkdfQ09MT1JfVFlQRV9QQUxFVFRFKQogICAgICB7Ci0gICAgICAgaWYgKHBuZ19wdHItPmNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUEFMRVRURSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsICJJbnZhbGlkIG51bWJlciBvZiBjb2xvcnMgaW4gcGFsZXR0ZSIpOwotICAgICAgICAgfQotICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwgIkludmFsaWQgbnVtYmVyIG9mIGNvbG9ycyBpbiBwYWxldHRlIik7Ci0gICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KKyAgICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsICJJbnZhbGlkIG51bWJlciBvZiBjb2xvcnMgaW4gcGFsZXR0ZSIpOworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworICAgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCAiSW52YWxpZCBudW1iZXIgb2YgY29sb3JzIGluIHBhbGV0dGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgICB9CisgICB9CisKKyAgIGlmICghKHBuZ19wdHItPmNvbG9yX3R5cGUmUE5HX0NPTE9SX01BU0tfQ09MT1IpKQorICAgeworICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwKKyAgICAgICAgIklnbm9yaW5nIHJlcXVlc3QgdG8gd3JpdGUgYSBQTFRFIGNodW5rIGluIGdyYXlzY2FsZSBQTkciKTsKKyAgICAgIHJldHVybjsKICAgIH0KIAogICAgcG5nX3B0ci0+bnVtX3BhbGV0dGUgPSAocG5nX3VpbnRfMTYpbnVtX3BhbDsKQEAgLTEwMjAsNyArMTAyOSw3IEBACiAgICB7CiAgICAgICBpZiAoCiAjaWYgZGVmaW5lZChQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCkgfHwgXAotICAgIGRlZmluZWQgKFBOR19XUklURV9FTVBUWV9QTFRFX1NVUFBPUlRFRCkKKyAgICBkZWZpbmVkKFBOR19XUklURV9FTVBUWV9QTFRFX1BFUk1JVFRFRCkKICAgICAgICAgICAocG5nX3B0ci0+bnVtX3BhbGV0dGUgfHwKICAgICAgICAgICAoIShwbmdfcHRyLT5tbmdfZmVhdHVyZXNfcGVybWl0dGVkICYgUE5HX0ZMQUdfTU5HX0VNUFRZX1BMVEUpKSkgJiYKICNlbmRpZgpAQCAtMTEwOSw3ICsxMTE4LDcgQEAKICAgIHBuZ19kZWJ1ZzEoMiwgIktleXdvcmQgdG8gYmUgY2hlY2tlZCBpcyAnJXMnXG4iLCBrZXkpOwogCiAgICAqbmV3X2tleSA9IChwbmdfY2hhcnApcG5nX21hbGxvYyhwbmdfcHRyLCAocG5nX3VpbnRfMzIpKGtleV9sZW4gKyAyKSk7Ci0gCisKICAgIC8qIFJlcGxhY2Ugbm9uLXByaW50aW5nIGNoYXJhY3RlcnMgd2l0aCBhIGJsYW5rIGFuZCBwcmludCBhIHdhcm5pbmcgKi8KICAgIGZvciAoa3AgPSBrZXksIGRwID0gKm5ld19rZXk7ICprcCAhPSAnXDAnOyBrcCsrLCBkcCsrKQogICAgewpAQCAtMTQxNyw5ICsxNDI2LDkgQEAKICAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJVbnJlY29nbml6ZWQgZXF1YXRpb24gdHlwZSBmb3IgcENBTCBjaHVuayIpOwogCiAgICBwdXJwb3NlX2xlbiA9IHBuZ19jaGVja19rZXl3b3JkKHBuZ19wdHIsIHB1cnBvc2UsICZuZXdfcHVycG9zZSkgKyAxOwotICAgcG5nX2RlYnVnMSgzLCAicENBTCBwdXJwb3NlIGxlbmd0aCA9ICVkXG4iLCBwdXJwb3NlX2xlbik7CisgICBwbmdfZGVidWcxKDMsICJwQ0FMIHB1cnBvc2UgbGVuZ3RoID0gJWRcbiIsIChpbnQpcHVycG9zZV9sZW4pOwogICAgdW5pdHNfbGVuID0gcG5nX3N0cmxlbih1bml0cykgKyAobnBhcmFtcyA9PSAwID8gMCA6IDEpOwotICAgcG5nX2RlYnVnMSgzLCAicENBTCB1bml0cyBsZW5ndGggPSAlZFxuIiwgdW5pdHNfbGVuKTsKKyAgIHBuZ19kZWJ1ZzEoMywgInBDQUwgdW5pdHMgbGVuZ3RoID0gJWRcbiIsIChpbnQpdW5pdHNfbGVuKTsKICAgIHRvdGFsX2xlbiA9IHB1cnBvc2VfbGVuICsgdW5pdHNfbGVuICsgMTA7CiAKICAgIHBhcmFtc19sZW4gPSAocG5nX3VpbnRfMzJwKXBuZ19tYWxsb2MocG5nX3B0ciwgKHBuZ191aW50XzMyKShucGFyYW1zCkBAIC0xNDM0LDcgKzE0NDMsNyBAQAogICAgICAgdG90YWxfbGVuICs9IChwbmdfc2l6ZV90KXBhcmFtc19sZW5baV07CiAgICB9CiAKLSAgIHBuZ19kZWJ1ZzEoMywgInBDQUwgdG90YWwgbGVuZ3RoID0gJWRcbiIsIHRvdGFsX2xlbik7CisgICBwbmdfZGVidWcxKDMsICJwQ0FMIHRvdGFsIGxlbmd0aCA9ICVkXG4iLCAoaW50KXRvdGFsX2xlbik7CiAgICBwbmdfd3JpdGVfY2h1bmtfc3RhcnQocG5nX3B0ciwgKHBuZ19ieXRlcClwbmdfcENBTCwgKHBuZ191aW50XzMyKXRvdGFsX2xlbik7CiAgICBwbmdfd3JpdGVfY2h1bmtfZGF0YShwbmdfcHRyLCAocG5nX2J5dGVwKW5ld19wdXJwb3NlLCBwdXJwb3NlX2xlbik7CiAgICBwbmdfc2F2ZV9pbnRfMzIoYnVmLCBYMCk7CkBAIC0xNDg2LDcgKzE0OTUsNyBAQAogI2VuZGlmCiAgICB0b3RhbF9sZW4gPSAxICsgcG5nX3N0cmxlbih3YnVmKSsxICsgcG5nX3N0cmxlbihoYnVmKTsKIAotICAgcG5nX2RlYnVnMSgzLCAic0NBTCB0b3RhbCBsZW5ndGggPSAlZFxuIiwgdG90YWxfbGVuKTsKKyAgIHBuZ19kZWJ1ZzEoMywgInNDQUwgdG90YWwgbGVuZ3RoID0gJWRcbiIsIChpbnQpdG90YWxfbGVuKTsKICAgIHBuZ193cml0ZV9jaHVua19zdGFydChwbmdfcHRyLCAocG5nX2J5dGVwKXBuZ19zQ0FMLCAocG5nX3VpbnRfMzIpdG90YWxfbGVuKTsKICAgIHBuZ193cml0ZV9jaHVua19kYXRhKHBuZ19wdHIsIChwbmdfYnl0ZXApJnVuaXQsIDEpOwogICAgcG5nX3dyaXRlX2NodW5rX2RhdGEocG5nX3B0ciwgKHBuZ19ieXRlcCl3YnVmLCBwbmdfc3RybGVuKHdidWYpKzEpOwpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvbXN2Yy9SRUFETUUudHh0IGIvcHJvamVjdHMvbXN2Yy9SRUFETUUudHh0CmluZGV4IDc1NTAzNjAuLmIwOGRiN2QgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL21zdmMvUkVBRE1FLnR4dAorKysgYi9wcm9qZWN0cy9tc3ZjL1JFQURNRS50eHQKQEAgLTEsNSArMSw1IEBACiBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwIGZvcgotbGlicG5nIDEuMC4xMSAoQXByaWwgMjcsIDIwMDEpIGFuZCB6bGliCitsaWJwbmcgMS4wLjEyYmV0YTEgKE1heSAxNCwgMjAwMSkgYW5kIHpsaWIKIAogQ29weXJpZ2h0IChDKSAyMDAwIFNpbW9uLVBpZXJyZSBDYWRpZXV4CiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKQEAgLTI0LDEyICsyNCwxMiBAQAogVGhpcyBwcm9qZWN0IHdpbGwgYnVpbGQgdGhlIFBORyBEZXZlbG9wbWVudCBHcm91cCdzICJvZmZpY2lhbCIgdmVyc2lvbnMgb2YKIGxpYnBuZyBhbmQgemxpYiBsaWJyYXJpZXM6CiAKLSAgIGxpYnBuZzEuZGxsICAgICAgICAgIChkZWZhdWx0IHZlcnNpb24sIGN1cnJlbnRseSBDIGNvZGUgb25seSkKLSAgIGxpYnBuZzEuZGxsICAgICAgICAgKEMgKyBBc3NlbWJsZXIgdmVyc2lvbikKLSAgIGxpYnBuZzEuZGxsICAgICAgICAgKEMgKyBBc3NlbWJsZXIgZGVidWcgdmVyc2lvbikKLSAgIGxpYnBuZzEuZGxsICAgICAgICAgKEMgY29kZSBkZWJ1ZyB2ZXJzaW9uKQotICAgbGlicG5nMVtjLGUtbV0uZGxsICAgKHJlc2VydmVkIGZvciBvZmZpY2lhbCB2ZXJzaW9ucykgCi0gICBsaWJwbmcxW24tel0uZGxsICAgICAoYXZhaWxhYmxlIGZvciBwcml2YXRlIHZlcnNpb25zKQorICAgbGlicG5nMi5kbGwgICAgICAgICAgKGRlZmF1bHQgdmVyc2lvbiwgY3VycmVudGx5IEMgY29kZSBvbmx5KQorICAgbGlicG5nMi5kbGwgICAgICAgICAoQyArIEFzc2VtYmxlciB2ZXJzaW9uKQorICAgbGlicG5nMi5kbGwgICAgICAgICAoQyArIEFzc2VtYmxlciBkZWJ1ZyB2ZXJzaW9uKQorICAgbGlicG5nMi5kbGwgICAgICAgICAoQyBjb2RlIGRlYnVnIHZlcnNpb24pCisgICBsaWJwbmcyW2MsZS1tXS5kbGwgICAocmVzZXJ2ZWQgZm9yIG9mZmljaWFsIHZlcnNpb25zKSAKKyAgIGxpYnBuZzJbbi16XS5kbGwgICAgIChhdmFpbGFibGUgZm9yIHByaXZhdGUgdmVyc2lvbnMpCiAgICB6bGliLmRsbCAgICAgICAgICAgICAoZGVmYXVsdCB2ZXJzaW9uLCBjdXJyZW50bHkgQyBjb2RlIG9ubHkpCiAgICB6bGliZC5kbGwgICAgICAgICAgICAoZGVidWcgdmVyc2lvbikKIApkaWZmIC0tZ2l0IGEvcHJvamVjdHMvbXN2Yy9saWJwbmcuZHNwIGIvcHJvamVjdHMvbXN2Yy9saWJwbmcuZHNwCmluZGV4IDQ0MjE3ODIuLjgyZjY2ZGIgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL21zdmMvbGlicG5nLmRzcAorKysgYi9wcm9qZWN0cy9tc3ZjL2xpYnBuZy5kc3AKQEAgLTU2LDcgKzU2LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28KIExJTkszMj1saW5rLmV4ZQogIyBBREQgQkFTRSBMSU5LMzIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYKLSMgQUREIExJTkszMiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4NiAvb3V0OiIuXHdpbjMyXGxpYnBuZ1xkbGxcbGlicG5nMS5kbGwiCisjIEFERCBMSU5LMzIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYgL291dDoiLlx3aW4zMlxsaWJwbmdcZGxsXGxpYnBuZzIuZGxsIgogIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lCiAKICFFTFNFSUYgICIkKENGRykiID09ICJsaWJwbmcgLSBXaW4zMiBETEwgRGVidWciCkBAIC04NCw3ICs4NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvCiBMSU5LMzI9bGluay5leGUKICMgQUREIEJBU0UgTElOSzMyIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0Ci0jIEFERCBMSU5LMzIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii5cd2luMzJcbGlicG5nXGRsbF9kYmdcbGlicG5nMWQuZGxsIgorIyBBREQgTElOSzMyIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuXHdpbjMyXGxpYnBuZ1xkbGxfZGJnXGxpYnBuZzJkLmRsbCIKIAogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxpYnBuZyAtIFdpbjMyIERMTCBBU00iCiAKQEAgLTExMSw3ICsxMTEsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbwogTElOSzMyPWxpbmsuZXhlCiAjIEFERCBCQVNFIExJTkszMiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4NgotIyBBREQgTElOSzMyIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpJMzg2IC9vdXQ6Ii5cd2luMzJcbGlicG5nXGRsbF9hc21cbGlicG5nMWEuZGxsIgorIyBBREQgTElOSzMyIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpJMzg2IC9vdXQ6Ii5cd2luMzJcbGlicG5nXGRsbF9hc21cbGlicG5nMmEuZGxsIgogIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lCiAKICFFTFNFSUYgICIkKENGRykiID09ICJsaWJwbmcgLSBXaW4zMiBETEwgRGVidWcgQVNNIgpAQCAtMTM5LDcgKzEzOSw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvCiBMSU5LMzI9bGluay5leGUKICMgQUREIEJBU0UgTElOSzMyIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0Ci0jIEFERCBMSU5LMzIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii5cd2luMzJcbGlicG5nXGRsbF9kYmdhXGxpYnBuZzFiLmRsbCIKKyMgQUREIExJTkszMiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLlx3aW4zMlxsaWJwbmdcZGxsX2RiZ2FcbGlicG5nMmIuZGxsIgogCiAhRUxTRUlGICAiJChDRkcpIiA9PSAibGlicG5nIC0gV2luMzIgTElCIgogCmRpZmYgLS1naXQgYS9wcm9qZWN0cy9tc3ZjL3BuZzMybXMuZGVmIGIvcHJvamVjdHMvbXN2Yy9wbmczMm1zLmRlZgppbmRleCA3YWZkNTRjLi4zODhmZGFkIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9tc3ZjL3BuZzMybXMuZGVmCisrKyBiL3Byb2plY3RzL21zdmMvcG5nMzJtcy5kZWYKQEAgLTYsNyArNiw3IEBACiBERVNDUklQVElPTiAiUE5HIGltYWdlIGNvbXByZXNzaW9uIGxpYnJhcnkgZm9yIFdpbmRvd3MiCiAKIEVYUE9SVFMKLTtWZXJzaW9uIDEuMC4xMQorO1ZlcnNpb24gMS4wLjEyYmV0YTEKICAgcG5nX2J1aWxkX2dyYXlzY2FsZV9wYWxldHRlICBAMQogICBwbmdfY2hlY2tfc2lnICAgICAgICBAMgogICBwbmdfY2h1bmtfZXJyb3IgICAgICBAMwpAQCAtNzcsMTMgKzc3LDE1IEBACiAgIHBuZ19tYWxsb2MgICAgQDY4CiAgIHBuZ19tZW1jcHlfY2hlY2sgICAgQDY5CiAgIHBuZ19tZW1zZXRfY2hlY2sgICAgQDcwCis7IHBuZ19wZXJtaXRfZW1wdHlfcGx0ZSBpcyBkZXByZWNhdGVkCiAgIHBuZ19wZXJtaXRfZW1wdHlfcGx0ZSAgQDcxCiAgIHBuZ19wcm9jZXNzX2RhdGEgICAgQDcyCiAgIHBuZ19wcm9ncmVzc2l2ZV9jb21iaW5lX3JvdyAgQDczCiAgIHBuZ19yZWFkX2VuZCAgICBANzQKICAgcG5nX3JlYWRfaW1hZ2UgICAgQDc1CiAgIHBuZ19yZWFkX2luZm8gICAgQDc2Ci0gIHBuZ19yZWFkX2luaXQgICAgQDc3IDsgZGVwcmVjYXRlZAorOyBwbmdfcmVhZF9pbml0IGlzIGRlcHJlY2F0ZWQKKyAgcG5nX3JlYWRfaW5pdCAgICBANzcKICAgcG5nX3JlYWRfcG5nICAgIEA3OAogICBwbmdfcmVhZF9yb3cgICAgQDc5CiAgIHBuZ19yZWFkX3Jvd3MgICAgQDgwCkBAIC0xNjgsMTAgKzE3MCwxMiBAQAogICBwbmdfd3JpdGVfaW1hZ2UgICAgQDE1OQogICBwbmdfd3JpdGVfaW5mbyAgICBAMTYwCiAgIHBuZ193cml0ZV9pbmZvX2JlZm9yZV9QTFRFICBAMTYxCi0gIHBuZ193cml0ZV9pbml0ICAgIEAxNjIgOyBkZXByZWNhdGVkCis7IHBuZ193cml0ZV9pbml0IGlzIGRlcHJlY2F0ZWQKKyAgcG5nX3dyaXRlX2luaXQgICAgQDE2MgogICBwbmdfd3JpdGVfcG5nICAgIEAxNjMKICAgcG5nX3dyaXRlX3JvdyAgICBAMTY0CiAgIHBuZ193cml0ZV9yb3dzICAgIEAxNjUKKzsgcG5nX3JlYWRfaW5pdF8yIGFuZCBwbmdfd3JpdGVfaW5pdF8yIGFyZSBkZXByZWNhdGVkLgogICBwbmdfcmVhZF9pbml0XzIgICAgQDE2NgogICBwbmdfd3JpdGVfaW5pdF8yICAgIEAxNjcKICAgcG5nX2FjY2Vzc192ZXJzaW9uX251bWJlciAgQDE2OApAQCAtMTgwLDcgKzE4NCwzMCBAQAogICBwbmdfaW5pdF9pbyAgICBAMTcxCiAgIHBuZ19jb252ZXJ0X3RvX3JmYzExMjMgICAgIEAxNzIKICAgcG5nX3NldF9pbnZhbGlkICBAMTczCi07VG8gYmUgYWRkZWQgYXQgdmVyc2lvbiAxLjIuMAotOyBwbmdfcGVybWl0X21uZ19mZWF0dXJlcyAgQDE3NAotO1RvIGJlIGFkZGVkIGF0IHZlcnNpb24gMS4yLjAKLTsgcG5nX21teF9zdXBwb3J0ICBAMTc1Cis7IEFkZGVkIGF0IHZlcnNpb24gMS4wLjEyCis7IEZvciBjb21wYXRpYmxpdHkgd2l0aCAxLjAuNy0xLjAuMTEKKyAgcG5nX2luZm9faW5pdCBAMTc0CisgIHBuZ19yZWFkX2luaXRfMyAgICBAMTc1CisgIHBuZ193cml0ZV9pbml0XzMgICAgQDE3NgorICBwbmdfaW5mb19pbml0XzMgQDE3NworICBwbmdfZGVzdHJveV9zdHJ1Y3QgIEAxNzgKKzsgVG8gYmUgYWRkZWQgYXQgdmVyc2lvbiAxLjIuMAorOyBGb3IgdXNlIHdpdGggUE5HX1VTRVJfTUVNX1NVUFBPUlRFRAorOyBwbmdfZGVzdHJveV9zdHJ1Y3RfMiAgQDE3OQorOyBwbmdfY3JlYXRlX3JlYWRfc3RydWN0XzIgQDE4MAorOyBwbmdfY3JlYXRlX3dyaXRlX3N0cnVjdF8yIEAxODEKKzsgcG5nX21hbGxvY19kZWZhdWx0IEAxODIKKzsgcG5nX2ZyZWVfZGVmYXVsdCBAMTgzCis7IE1ORyBmZWF0dXJlcworOyBwbmdfcGVybWl0X21uZ19mZWF0dXJlcyAgQDE4NAorOyBNTVggc3VwcG9ydAorOyBwbmdfbW14X3N1cHBvcnQgIEAxODUKKzsgcG5nX2dldF9tbXhfZmxhZ21hc2sgIEAxODYKKzsgcG5nX2dldF9hc21fZmxhZ21hc2sgIEAxODcKKzsgcG5nX2dldF9hc21fZmxhZ3MgIEAxODgKKzsgcG5nX2dldF9tbXhfYml0ZGVwdGhfdGhyZXNob2xkICBAMTg5Cis7IHBuZ19nZXRfbW14X3Jvd2J5dGVzX3RocmVzaG9sZCAgQDE5MAorOyBwbmdfc2V0X2FzbV9mbGFncyAgQDE5MQorOyBwbmdfaW5pdF9tbXhfZmxhZ3MgIEAxOTIKKzsgU3RyaXAgZXJyb3IgbnVtYmVycworOyBwbmdfc2V0X3N0cmlwX2Vycm9yX251bWJlcnMgQDE5MwpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvd2luY2UvUkVBRE1FRS5XQ0UgYi9wcm9qZWN0cy93aW5jZS9SRUFETUVFLldDRQppbmRleCA3MTQ1NTVlLi5jMjExY2YxIDEwMDY0NAotLS0gYS9wcm9qZWN0cy93aW5jZS9SRUFETUVFLldDRQorKysgYi9wcm9qZWN0cy93aW5jZS9SRUFETUVFLldDRQpAQCAtOCw5ICs4LDkgQEAKIAogSW50cm9kdWN0aW9uCiA9PT09PT09PT09PT0KLVRoaXMgaXMgbGlicG5nIDEuMC4xMSBwb3J0ZWQgdG8gV2luZG93c0NFIDIuMCBhbmQgMi4xMS4KLWxpYnBuZyAxLjAuMTEgaXMgYSBQTkcgcmVmZXJlbmNlIGxpYnJhcnkuCi1TZWUgUkVBRE1FLCBhIGRvY3VtZW50IG9mIG9yaWdpbmFsIGxpYnBuZyAxLjAuMTEuCitUaGlzIGlzIGxpYnBuZyAxLjAuMTJiZXRhMSBwb3J0ZWQgdG8gV2luZG93c0NFIDIuMCBhbmQgMi4xMS4KK2xpYnBuZyAxLjAuMTJiZXRhMSBpcyBhIFBORyByZWZlcmVuY2UgbGlicmFyeS4KK1NlZSBSRUFETUUsIGEgZG9jdW1lbnQgb2Ygb3JpZ2luYWwgbGlicG5nIDEuMC4xMmJldGExLgogCiB6bGliIGZvciBXaW5kb3dzQ0UKID09PT09PT09PT09PT09PT09PQpAQCAtMjMsNyArMjMsNyBAQAogd2FycmFudHkuICBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcwogYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KIAotU2VlIFJFQURNRSBhbmQgTElDRU5TRSwgZG9jdW1lbnRzIG9mIG9yaWdpbmFsIGxpYnBuZyAxLjAuMTEsIGZvciBjb25kaXRpb25zCitTZWUgUkVBRE1FIGFuZCBMSUNFTlNFLCBkb2N1bWVudHMgb2Ygb3JpZ2luYWwgbGlicG5nIDEuMC4xMmJldGExLCBmb3IgY29uZGl0aW9ucwogb2YgdXNlIGFuZCBkaXN0cmlidXRpb24uCiAKIEZpbGVzCmRpZmYgLS1naXQgYS9wcm9qZWN0cy93aW5jZS9SRUFETUVKLldDRSBiL3Byb2plY3RzL3dpbmNlL1JFQURNRUouV0NFCmluZGV4IDhjMTlmODYuLjRhMmUyYzMgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL3dpbmNlL1JFQURNRUouV0NFCisrKyBiL3Byb2plY3RzL3dpbmNlL1JFQURNRUouV0NFCkBAIC0yNCw3ICsyNCw3IEBACiCCyYLIgsGCvYKigqmCyILplO2KUYLJgsKCooLEguCBQY3sjtKBQZR6lXqO0oFBgruCzJG8l5iXcI7SiMiKT4LMkGyVqIFBCiCSY5HMgsmQ05RDgvCCxoLpi2CWsYLNgsiCooLggsyCxoK1gtyCt4FCCiAKLYK7gsyRvIFBgrGCzINcg3SDZ4NFg0aDQYLMl5iXcI/wjI+CyYLCgqKCxILNgUGMtJTFgsWCoILpIGxpYnBuZyAxLjAuMTGCyQorgruCzJG8gUGCsYLMg1yDdINng0WDRoNBgsyXmJdwj/CMj4LJgsKCooLEgs2BQYy0lMWCxYKggukgbGlicG5nIDEuMC4xMmJldGExgskKII+Ai5KCt4LpguCCzILGgrWC3IK3gUKP2oK1gq2CzYFBlXSRroLMIFJFQURNRSxMSUNFTlNFIILwgqiTx4Ldgq2CvoKzgqKBQgogCiCO+5hek+CXZQpkaWZmIC0tZ2l0IGEvcHJvamVjdHMvd2luY2UvcG5nMzJjZS5kZWYgYi9wcm9qZWN0cy93aW5jZS9wbmczMmNlLmRlZgppbmRleCBlNzAxNmVjLi5mOTcwNjFmIDEwMDY0NAotLS0gYS9wcm9qZWN0cy93aW5jZS9wbmczMmNlLmRlZgorKysgYi9wcm9qZWN0cy93aW5jZS9wbmczMmNlLmRlZgpAQCAtNSw3ICs1LDcgQEAKIExJQlJBUlkgbHBuZ2NlCiAKIEVYUE9SVFMKLTtWZXJzaW9uIDEuMC4xMQorO1ZlcnNpb24gMS4wLjEyYmV0YTEKICAgcG5nX2J1aWxkX2dyYXlzY2FsZV9wYWxldHRlICBAMQogICBwbmdfY2hlY2tfc2lnICAgICAgICBAMgogICBwbmdfY2h1bmtfZXJyb3IgICAgICBAMwpAQCAtNzYsMTMgKzc2LDE1IEBACiAgIHBuZ19tYWxsb2MgICAgQDY4CiAgIHBuZ19tZW1jcHlfY2hlY2sgICAgQDY5CiAgIHBuZ19tZW1zZXRfY2hlY2sgICAgQDcwCis7IHBuZ19wZXJtaXRfZW1wdHlfcGx0ZSBpcyBkZXByZWNhdGVkCiAgIHBuZ19wZXJtaXRfZW1wdHlfcGx0ZSAgQDcxCiAgIHBuZ19wcm9jZXNzX2RhdGEgICAgQDcyCiAgIHBuZ19wcm9ncmVzc2l2ZV9jb21iaW5lX3JvdyAgQDczCiAgIHBuZ19yZWFkX2VuZCAgICBANzQKICAgcG5nX3JlYWRfaW1hZ2UgICAgQDc1CiAgIHBuZ19yZWFkX2luZm8gICAgQDc2Ci0gIHBuZ19yZWFkX2luaXQgICAgQDc3IDsgZGVwcmVjYXRlZAorOyBwbmdfcmVhZF9pbml0IGlzIGRlcHJlY2F0ZWQKKyAgcG5nX3JlYWRfaW5pdCAgICBANzcKICAgcG5nX3JlYWRfcG5nICAgIEA3OAogICBwbmdfcmVhZF9yb3cgICAgQDc5CiAgIHBuZ19yZWFkX3Jvd3MgICAgQDgwCkBAIC0xNjcsMTkgKzE2OSw0NCBAQAogICBwbmdfd3JpdGVfaW1hZ2UgICAgQDE1OQogICBwbmdfd3JpdGVfaW5mbyAgICBAMTYwCiAgIHBuZ193cml0ZV9pbmZvX2JlZm9yZV9QTFRFICBAMTYxCi0gIHBuZ193cml0ZV9pbml0ICAgIEAxNjIgOyBkZXByZWNhdGVkCis7IHBuZ193cml0ZV9pbml0IGlzIGRlcHJlY2F0ZWQKKyAgcG5nX3dyaXRlX2luaXQgICAgQDE2MgogICBwbmdfd3JpdGVfcG5nICAgIEAxNjMKICAgcG5nX3dyaXRlX3JvdyAgICBAMTY0CiAgIHBuZ193cml0ZV9yb3dzICAgIEAxNjUKKzsgcG5nX3JlYWRfaW5pdF8yIGFuZCBwbmdfd3JpdGVfaW5pdF8yIGFyZSBkZXByZWNhdGVkLgogICBwbmdfcmVhZF9pbml0XzIgICAgQDE2NgogICBwbmdfd3JpdGVfaW5pdF8yICAgIEAxNjcKICAgcG5nX2FjY2Vzc192ZXJzaW9uX251bWJlciAgQDE2OAogOyAgcG5nX3NpZ19ieXRlcyAgICBAMTY5Ci0gIHBuZ19saWJwbmdfdmVyICAgIEAxNzAKKzsgIHBuZ19saWJwbmdfdmVyICAgIEAxNzAKICAgcG5nX2luaXRfaW8gICAgQDE3MQogICBwbmdfY29udmVydF90b19yZmMxMTIzICAgICBAMTcyCiAgIHBuZ19zZXRfaW52YWxpZCAgQDE3MwotO1RvIGJlIGFkZGVkIGF0IHZlcnNpb24gMS4yLjAKLTsgcG5nX3Blcm1pdF9tbmdfZmVhdHVyZXMgIEAxNzQKLTtUbyBiZSBhZGRlZCBhdCB2ZXJzaW9uIDEuMi4wCi07IHBuZ19tbXhfc3VwcG9ydCAgQDE3NQorOyBBZGRlZCBhdCB2ZXJzaW9uIDEuMC4xMgorOyBGb3IgY29tcGF0aWJsaXR5IHdpdGggMS4wLjctMS4wLjExCisgIHBuZ19pbmZvX2luaXQgQDE3NAorICBwbmdfcmVhZF9pbml0XzMgICAgQDE3NQorICBwbmdfd3JpdGVfaW5pdF8zICAgIEAxNzYKKyAgcG5nX2luZm9faW5pdF8zIEAxNzcKKyAgcG5nX2Rlc3Ryb3lfc3RydWN0ICBAMTc4Cis7IFRvIGJlIGFkZGVkIGF0IHZlcnNpb24gMS4yLjAKKzsgRm9yIHVzZSB3aXRoIFBOR19VU0VSX01FTV9TVVBQT1JURUQKKzsgcG5nX2Rlc3Ryb3lfc3RydWN0XzIgIEAxNzkKKzsgcG5nX2NyZWF0ZV9yZWFkX3N0cnVjdF8yIEAxODAKKzsgcG5nX2NyZWF0ZV93cml0ZV9zdHJ1Y3RfMiBAMTgxCis7IHBuZ19tYWxsb2NfZGVmYXVsdCBAMTgyCis7IHBuZ19mcmVlX2RlZmF1bHQgQDE4MworOyBNTkcgZmVhdHVyZXMKKzsgcG5nX3Blcm1pdF9tbmdfZmVhdHVyZXMgIEAxODQKKzsgTU1YIHN1cHBvcnQKKzsgcG5nX21teF9zdXBwb3J0ICBAMTg1Cis7IHBuZ19nZXRfbW14X2ZsYWdtYXNrICBAMTg2Cis7IHBuZ19nZXRfYXNtX2ZsYWdtYXNrICBAMTg3Cis7IHBuZ19nZXRfYXNtX2ZsYWdzICBAMTg4Cis7IHBuZ19nZXRfbW14X2JpdGRlcHRoX3RocmVzaG9sZCAgQDE4OQorOyBwbmdfZ2V0X21teF9yb3dieXRlc190aHJlc2hvbGQgIEAxOTAKKzsgcG5nX3NldF9hc21fZmxhZ3MgIEAxOTEKKzsgcG5nX2luaXRfbW14X2ZsYWdzICBAMTkyCis7IFN0cmlwIGVycm9yIG51bWJlcnMKKzsgcG5nX3NldF9zdHJpcF9lcnJvcl9udW1iZXJzIEAxOTMKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuYWl4IGIvc2NyaXB0cy9tYWtlZmlsZS5haXgKaW5kZXggYmU3NjkxZi4uMzhjNDRiNSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5haXgKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5haXgKQEAgLTE4LDcgKzE4LDcgQEAKICMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDIuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KIFBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC4xMQorUE5HTUlOID0gMS4wLjEyYmV0YTEKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKIAogcHJlZml4PS91c3IvbG9jYWwKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuYmVvcyBiL3NjcmlwdHMvbWFrZWZpbGUuYmVvcwppbmRleCA0NmE3YjFhLi44ODExYjU3IDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLmJlb3MKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5iZW9zCkBAIC0xMyw3ICsxMyw3IEBACiAjIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKICMgaGF2ZSB0byBjaGFuZ2UgaXQuCiBQTkdNQUogPSAyCi1QTkdNSU4gPSAxLjAuMTEKK1BOR01JTiA9IDEuMC4xMmJldGExCiBQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCiAKIEFMSUdOPQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5jeWd3aW4gYi9zY3JpcHRzL21ha2VmaWxlLmN5Z3dpbgppbmRleCA3NmFjNGJmLi5jODhjOTg0IDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLmN5Z3dpbgorKysgYi9zY3JpcHRzL21ha2VmaWxlLmN5Z3dpbgpAQCAtMzgsMTAgKzM4LDEwIEBACiAjIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKICMgaGF2ZSB0byBjaGFuZ2UgaXQuCiBQTkdNQUogPSAyCi0jUE5HRExMID0gJDEjIG1zdmMKLVBOR0RMTCA9IDIjIGN5Z3dpbiAxLjAuMTEKLVBOR01JTiA9IDEuMC4xMQotUE5HTUlOX0JBU0UgPSAxLjAuMTEKKyNQTkdETEwgPSAkMiMgbXN2YworUE5HRExMID0gMiMgY3lnd2luIDEuMC4xMmJldGExCitQTkdNSU4gPSAxLjAuMTJiZXRhMQorUE5HTUlOX0JBU0UgPSAxLjAuMTIKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKIAogU0hBUkVETElCPWN5Z3BuZyQoUE5HRExMKS5kbGwKQEAgLTEwOCw3ICsxMDgsOCBAQAogCSQoUkFOTElCKSAkQAogCiAkKFNIQVJFRERFRik6IHByb2plY3RzL21zdmMvcG5nMzJtcy5kZWYKLQljYXQgJDwgfCBzZWQgLWUgJzF7RztzL15cKC4qXClcKFxuXCkvRVhQT1JUUy87fTsyLC9eRVhQT1JUUy9kJyA+ICRACisJY2F0ICQ8IHwgc2VkIC1lICcxe0c7cy9eXCguKlwpXChcblwpL0VYUE9SVFMvO307MiwvXkVYUE9SVFMvZCcgfCBcCisJc2VkIC1lICdzL1woW147XSpcKTsvOy8nID4gJEAKIAogJChTSEFSRURMSUIpOiAkKE9CSlNETEwpICQoU0hBUkVEREVGKQogCSQoTERTSEFSRUQpIC1vICRAICQoTERFWFRSQSkgJChPQkpTRExMKSAtTC4gLUwkKFpMSUJMSUIpIC1segpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5kZWMgYi9zY3JpcHRzL21ha2VmaWxlLmRlYwppbmRleCBmMWYzNzQ2Li4xOTg5M2NhIDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLmRlYworKysgYi9zY3JpcHRzL21ha2VmaWxlLmRlYwpAQCAtMTcsNyArMTcsNyBAQAogIyByZWFkIGxpYnBuZy50eHQgb3IgcG5nLmggdG8gc2VlIHdoeSBQTkdNQUogaXMgMi4gIFlvdSBzaG91bGQgbm90CiAjIGhhdmUgdG8gY2hhbmdlIGl0LgogUE5HTUFKID0gMgotUE5HTUlOID0gMS4wLjExCitQTkdNSU4gPSAxLjAuMTJiZXRhMQogUE5HVkVSID0gJChQTkdNQUopLiQoUE5HTUlOKQogCiBDQz1jYwpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5nY21teCBiL3NjcmlwdHMvbWFrZWZpbGUuZ2NtbXgKaW5kZXggN2YwMGRmMS4uM2ZkNzU1OSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5nY21teAorKysgYi9zY3JpcHRzL21ha2VmaWxlLmdjbW14CkBAIC01MSw3ICs1MSw3IEBACiAjIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKICMgaGF2ZSB0byBjaGFuZ2UgaXQuCiBQTkdNQUogPSAyCi1QTkdNSU4gPSAxLjAuMTEKK1BOR01JTiA9IDEuMC4xMmJldGExCiBQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCiAKIElOQ1BBVEg9JChwcmVmaXgpL2luY2x1ZGUKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuaHBnY2MgYi9zY3JpcHRzL21ha2VmaWxlLmhwZ2NjCmluZGV4IDllNmZmMmYuLjEwMDJhZmYgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuaHBnY2MKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5ocGdjYwpAQCAtMzQsNyArMzQsNyBAQAogIyByZWFkIGxpYnBuZy50eHQgb3IgcG5nLmggdG8gc2VlIHdoeSBQTkdNQUogaXMgMi4gIFlvdSBzaG91bGQgbm90CiAjIGhhdmUgdG8gY2hhbmdlIGl0LgogUE5HTUFKID0gMgotUE5HTUlOID0gMS4wLjExCitQTkdNSU4gPSAxLjAuMTJiZXRhMQogUE5HVkVSID0gJChQTkdNQUopLiQoUE5HTUlOKQogCiBJTkNQQVRIPSQocHJlZml4KS9pbmNsdWRlCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmhwdXggYi9zY3JpcHRzL21ha2VmaWxlLmhwdXgKaW5kZXggODg5OWE3Ny4uYmZkMjZjOCAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5ocHV4CisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuaHB1eApAQCAtMTksNyArMTksNyBAQAogIyByZWFkIGxpYnBuZy50eHQgb3IgcG5nLmggdG8gc2VlIHdoeSBQTkdNQUogaXMgMi4gIFlvdSBzaG91bGQgbm90CiAjIGhhdmUgdG8gY2hhbmdlIGl0LgogUE5HTUFKID0gMgotUE5HTUlOID0gMS4wLjExCitQTkdNSU4gPSAxLjAuMTJiZXRhMQogUE5HVkVSID0gJChQTkdNQUopLiQoUE5HTUlOKQogCiAjIHdoZXJlIG1ha2UgaW5zdGFsbCBwdXRzIGxpYnBuZy5hIGFuZCBwbmcuaApkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5saW51eCBiL3NjcmlwdHMvbWFrZWZpbGUubGludXgKaW5kZXggMTVhYWQwMi4uNWU4YmE0YyAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5saW51eAorKysgYi9zY3JpcHRzL21ha2VmaWxlLmxpbnV4CkBAIC0zNCw3ICszNCw3IEBACiAjIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKICMgaGF2ZSB0byBjaGFuZ2UgaXQuCiBQTkdNQUogPSAyCi1QTkdNSU4gPSAxLjAuMTEKK1BOR01JTiA9IDEuMC4xMmJldGExCiBQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCiAKIElOQ1BBVEg9JChwcmVmaXgpL2luY2x1ZGUKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUubmV0YnNkIGIvc2NyaXB0cy9tYWtlZmlsZS5uZXRic2QKaW5kZXggYjkwMzJjZi4uNzE5YmM3MSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5uZXRic2QKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5uZXRic2QKQEAgLTExLDcgKzExLDcgQEAKIAogTElCPXBuZwogU0hMSUJfTUFKT1I9IDIKLVNITElCX01JTk9SPSAxLjAuMTEKK1NITElCX01JTk9SPSAxLjAuMTJiZXRhMQogU1JDUz0JcG5nZ2NjcmQuYyBwbmcuYyBwbmdzZXQuYyBwbmdnZXQuYyBwbmdydXRpbC5jIHBuZ3RyYW5zLmMgcG5nd3V0aWwuYyBcCiAJcG5ncmVhZC5jIHBuZ3Jpby5jIHBuZ3dpby5jIHBuZ3dyaXRlLmMgcG5ncnRyYW4uYyBcCiAJcG5nd3RyYW4uYyBwbmdtZW0uYyBwbmdlcnJvci5jIHBuZ3ByZWFkLmMKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuc2NvIGIvc2NyaXB0cy9tYWtlZmlsZS5zY28KaW5kZXggNTQ2YWRjMy4uZjMyZjE2NCAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5zY28KKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5zY28KQEAgLTI1LDcgKzI1LDcgQEAKICMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDIuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KIFBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC4xMQorUE5HTUlOID0gMS4wLjEyYmV0YTEKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKIAogSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5zZ2djYyBiL3NjcmlwdHMvbWFrZWZpbGUuc2dnY2MKaW5kZXggNDQzMTExMi4uYmVhMDQ0OSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5zZ2djYworKysgYi9zY3JpcHRzL21ha2VmaWxlLnNnZ2NjCkBAIC0xOSw4ICsxOSw4IEBACiBMREZMQUdTPS1MLiAtTCQoWkxJQkxJQikgLWxwbmcgLWx6IC1sbQogTERTSEFSRUQ9Z2NjIC1zaGFyZWQKIAotVkVSPTEuMC4xMQotTElCUz1saWJwbmcuc28uMS4wLjExCitWRVI9MS4wLjEyYmV0YTEKK0xJQlM9bGlicG5nLnNvLjEuMC4xMmJldGExCiBTSEFSRURMSUI9bGlicG5nLnNvCiBsaWJkaXI9JChwcmVmaXgpL2xpYjMyCiAKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuc2dpIGIvc2NyaXB0cy9tYWtlZmlsZS5zZ2kKaW5kZXggNTA4MzFjOS4uNDcyNmQ1ZCAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5zZ2kKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5zZ2kKQEAgLTI1LDcgKzI1LDcgQEAKIExERkxBR1M9LUwuIC1MJChaTElCTElCKSAtbHBuZyAtbHogLWxtCiBMRFNIQVJFRD1jYyAtc2hhcmVkCiAKLVZFUj0xLjAuMTEKK1ZFUj0xLjAuMTJiZXRhMQogU09OVU09MgogU0hBUkVETElCPWxpYnBuZy5zbwogbGliZGlyPSQocHJlZml4KQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5zb2xhcmlzIGIvc2NyaXB0cy9tYWtlZmlsZS5zb2xhcmlzCmluZGV4IDBhOTcyZjcuLjkzZGE0NzcgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuc29sYXJpcworKysgYi9zY3JpcHRzL21ha2VmaWxlLnNvbGFyaXMKQEAgLTMxLDcgKzMxLDcgQEAKICMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDIuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KIFBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC4xMQorUE5HTUlOID0gMS4wLjEyYmV0YTEKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKIAogSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9wbmdkZWYucGFzIGIvc2NyaXB0cy9wbmdkZWYucGFzCmluZGV4IDU4M2FiNDguLjNlOGMzYmMgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvcG5nZGVmLnBhcworKysgYi9zY3JpcHRzL3BuZ2RlZi5wYXMKQEAgLTcsOCArNyw4IEBACiBpbnRlcmZhY2UKIAogY29uc3QKLSAgUE5HX0xJQlBOR19WRVJfU1RSSU5HID0gJzEuMC4xMSc7Ci0gIFBOR19MSUJQTkdfVkVSICAgICAgICA9ICAxMDAxMTsKKyAgUE5HX0xJQlBOR19WRVJfU1RSSU5HID0gJzEuMC4xMmJldGExJzsKKyAgUE5HX0xJQlBOR19WRVIgICAgICAgID0gIDEwMDEyOwogCiB0eXBlCiAgIHBuZ191aW50XzMyID0gQ2FyZGluYWw7CmRpZmYgLS1naXQgYS9zY3JpcHRzL3BuZ29zMi5kZWYgYi9zY3JpcHRzL3BuZ29zMi5kZWYKaW5kZXggYjRiNzNmNy4uZjA5NmZhZiAxMDA2NDQKLS0tIGEvc2NyaXB0cy9wbmdvczIuZGVmCisrKyBiL3NjcmlwdHMvcG5nb3MyLmRlZgpAQCAtMiw3ICsyLDcgQEAKIDsgUE5HLkxJQiBtb2R1bGUgZGVmaW5pdGlvbiBmaWxlIGZvciBPUy8yCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi07IFZlcnNpb24gMS4wLjExCis7IFZlcnNpb24gMS4wLjEyYmV0YTEKIAogTElCUkFSWQkJUE5HCiBERVNDUklQVElPTgkiUE5HIGltYWdlIGNvbXByZXNzaW9uIGxpYnJhcnkgZm9yIE9TLzIiCg==