Name: series-workflowjd548 Phase: Failed StartedAt: 2026-09-08 05:39:26 +0000 UTC FinishedAt: 2026-09-08 06:00:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd548[0] Phase: Succeeded StartedAt: 2026-09-08 05:39:26 +0000 UTC FinishedAt: 2026-09-08 06:00:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd548[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 05:39:26 +0000 UTC FinishedAt: 2026-09-08 06:00:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA1OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29udGFpbnMgZXhjbHVzaXZlbHkgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgd2l0aGluIGNvbW1lbnRzIGFjcm9zcyB2YXJpb3VzIG5ldHdvcmsgZHJpdmVycywgY29yZSBMTEMgY29kZSwgYW5kIGEgc2VsZnRlc3Qgc2NyaXB0LiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDU6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNGI5Zjk1OTMxZDExNzlhMjhhNTRmMzU3YWM5YmM5Yjg5M2YxNTU4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAwNTo1OTo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmhcbmluZGV4IGM1NjdjOTIwNjI4ZjEuLjhmMDNiYjU2MWQ0NDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuaFxuQEAgLTY1OSw3ICYjNDM7NjU5LDcgQEAgdm9pZCBhdGwxY19wb3N0X3BoeV9saW5rY2hnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiBsaW5rX3NwZWVkKTtcbiAvKiBJTlQtdHJpZ2dsZS9TTUIgQ29udHJvbCBSZWdpc3RlciAqL1xuICNkZWZpbmUgUkVHX1NNQl9TVEFUX1RJTUVSXHRcdDB4MTVDNFx0LyogMnVzIHJlc29sdXRpb24gKi9cbiAjZGVmaW5lIFNNQl9TVEFUX1RJTUVSX01BU0tcdFx0MHhGRkZGRkZcbi0jZGVmaW5lIFJFR19USU5UX1RQRF9USFJFU0ggICAgICAgICAgICAgMHgxNUM4IC8qIHRwZCB0aCB0byB0cmlnIGludHJydXB0ICovXG4mIzQzOyNkZWZpbmUgUkVHX1RJTlRfVFBEX1RIUkVTSCAgICAgICAgICAgICAweDE1QzggLyogdHBkIHRoIHRvIHRyaWcgaW50ZXJydXB0ICovXG4gXG4gLyogTWFpbCBib3ggKi9cbiAjZGVmaW5lIE1CX1JGRFhfUFJPRF9JRFhfTUFTS1x0XHQweEZGRkZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmhcbmluZGV4IDlmY2FkNzgzYzkzOWEuLjZiMDA2NmY0N2U5ZTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaFxuQEAgLTM4MSw3ICYjNDM7MzgxLDcgQEAgc3RydWN0IGF0bDFlX3J4X3BhZ2Uge1xuIFx0dThcdFx0KmFkZHI7ICAgLyogcmVjZWl2ZSByYWdlIHZpcnR1YWwgYWRkcmVzcyAqL1xuIFx0ZG1hX2FkZHJfdFx0d3JpdGVfb2Zmc2V0X2RtYTsgIC8qIHRoZSBETUEgYWRkcmVzcyB3aGljaCBjb250YWluIHRoZVxuIFx0XHRcdFx0XHQgICAgICByZWNlaXZlIGRhdGEgb2Zmc2V0IGluIHRoZSBwYWdlICovXG4tXHR1MzJcdFx0KndyaXRlX29mZnNldF9hZGRyOyAvKiB0aGUgdmlydGF1bCBhZGRyZXNzIHdoaWNoIGNvbnRhaW5cbiYjNDM7XHR1MzJcdFx0KndyaXRlX29mZnNldF9hZGRyOyAvKiB0aGUgdmlydHVhbCBhZGRyZXNzIHdoaWNoIGNvbnRhaW5cbiBcdFx0XHRcdFx0ICAgICB0aGUgcmVjZWl2ZSBkYXRhIG9mZnNldCBpbiB0aGUgcGFnZSAqL1xuIFx0dTMyXHRcdHJlYWRfb2Zmc2V0OyAgICAgICAvKiB0aGUgb2Zmc2V0IHdoZXJlIHdlIGhhdmUgcmVhZCAqL1xuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jXG5pbmRleCBmYTg5YmMyN2Y2MmRmLi4yNWQzZTc0NjkwNTgzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2h3LmNcbkBAIC0zNjksNyAmIzQzOzM2OSw3IEBAIHN0YXRpYyBpbnQgYXRsMWVfcGh5X3NldHVwX2F1dG9uZWdfYWR2KHN0cnVjdCBhdGwxZV9odyAqaHcpXG4gICpcbiAgKiBodyAtIFN0cnVjdCBjb250YWluaW5nIHZhcmlhYmxlcyBhY2Nlc3NlZCBieSBzaGFyZWQgY29kZVxuICAqXG4tICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgY29udHJvbCByZWdpc2VyIChmb3IgRjAwMSBidWcpXG4mIzQzOyAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIGNvbnRyb2wgcmVnaXN0ZXIgKGZvciBGMDAxIGJ1ZylcbiAgKi9cbiBpbnQgYXRsMWVfcGh5X2NvbW1pdChzdHJ1Y3QgYXRsMWVfaHcgKmh3KVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfbWFpbi5jXG5pbmRleCA0MDI5MDAyODU4MGJhLi5jYzZjMjYyODY4YTU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfbWFpbi5jXG5AQCAtMjExNyw3ICYjNDM7MjExNyw3IEBAIHN0YXRpYyBpbnQgYXRsMWVfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuIFx0XHRcdHdvbF9jdHJsX2RhdGEgfD0gV09MX01BR0lDX0VOIHwgV09MX01BR0lDX1BNRV9FTjtcbiBcbiBcdFx0aWYgKHd1ZmMgXHUwMDI2IEFUX1dVRkNfTE5LQykge1xuLVx0XHQvKiBpZiBvcmlnbmFsIGxpbmsgc3RhdHVzIGlzIGxpbmssIGp1c3Qgd2FpdCBmb3IgcmV0cml2ZSBsaW5rICovXG4mIzQzO1x0XHQvKiBpZiBvcmlnaW5hbCBsaW5rIHN0YXR1cyBpcyBsaW5rLCBqdXN0IHdhaXQgZm9yIHJldHJpZXZlIGxpbmsgKi9cbiBcdFx0XHRpZiAobWlpX2Jtc3JfZGF0YSBcdTAwMjYgQk1TUl9MU1RBVFVTKSB7XG4gXHRcdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVF9TVVNQRU5EX0xJTktfVElNRU9VVDsgaSYjNDM7JiM0MzspIHtcbiBcdFx0XHRcdFx0bXNsZWVwKDEwMCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwxLmNcbmluZGV4IDk4YTRkMDg5MjcwZTQuLjE3OWQ3NGU5M2VmZGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jXG5AQCAtNjI4LDcgJiM0Mzs2MjgsNyBAQCBzdGF0aWMgczMyIGF0bDFfcGh5X2xlYXZlX3Bvd2VyX3NhdmluZyhzdHJ1Y3QgYXRsMV9odyAqaHcpXG4gICogUmVzZXRzIHRoZSBQSFkgYW5kIG1ha2UgYWxsIGNvbmZpZyB2YWxpZGF0ZVxuICAqIGh3IC0gU3RydWN0IGNvbnRhaW5pbmcgdmFyaWFibGVzIGFjY2Vzc2VkIGJ5IHNoYXJlZCBjb2RlXG4gICpcbi0gKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzZXIgKGZvciBGMDAxIGJ1ZylcbiYjNDM7ICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgQ29udHJvbCByZWdpc3RlciAoZm9yIEYwMDEgYnVnKVxuICAqL1xuIHN0YXRpYyBzMzIgYXRsMV9waHlfcmVzZXQoc3RydWN0IGF0bDFfaHcgKmh3KVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuY1xuaW5kZXggNTU2MGQ1Y2MzMTY5Mi4uYzlhY2EyMTllYzljZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmNcbkBAIC0yNTkxLDcgJiM0MzsyNTkxLDcgQEAgc3RhdGljIHMzMiBhdGwyX3BoeV9zZXR1cF9hdXRvbmVnX2FkdihzdHJ1Y3QgYXRsMl9odyAqaHcpXG4gICpcbiAgKiBodyAtIFN0cnVjdCBjb250YWluaW5nIHZhcmlhYmxlcyBhY2Nlc3NlZCBieSBzaGFyZWQgY29kZVxuICAqXG4tICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgQ29udHJvbCByZWdpc2VyIChmb3IgRjAwMSBidWcpXG4mIzQzOyAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIENvbnRyb2wgcmVnaXN0ZXIgKGZvciBGMDAxIGJ1ZylcbiAgKi9cbiBzdGF0aWMgczMyIGF0bDJfcGh5X2NvbW1pdChzdHJ1Y3QgYXRsMl9odyAqaHcpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmNcbmluZGV4IDdlZjFiYWJmZWNhNjkuLmY2NTk1ZmRjODg4ZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmNcbkBAIC0xNTY0LDcgJiM0MzsxNTY0LDcgQEAgc3RhdGljIGludCBiY21fZW5ldF9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFxuIFx0aWYgKHByaXYtXHUwMDNlaGFzX3BoeSkge1xuIFx0XHRpZiAoZWNtZC1cdTAwM2VhdXRvbmVnIFx1MDAyNlx1MDAyNiAoZWNtZC1cdTAwM2VyeF9wYXVzZSAhPSBlY21kLVx1MDAzZXR4X3BhdXNlKSkge1xuLVx0XHRcdC8qIGFzeW1ldHJpYyBwYXVzZSBtb2RlIG5vdCBzdXBwb3J0ZWQsXG4mIzQzO1x0XHRcdC8qIGFzeW1tZXRyaWMgcGF1c2UgbW9kZSBub3Qgc3VwcG9ydGVkLFxuIFx0XHRcdCAqIGFjdHVhbGx5IHBvc3NpYmxlIGJ1dCBpbnRlZ3JhdGVkIFBIWSBoYXMgUk9cbiBcdFx0XHQgKiBhc3ltX3BhdXNlIGJpdCAqL1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmhcbmluZGV4IDc4ZjE4MzBmYjNjYjUuLmJhOGY0MmNmNWZiMjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmhcbkBAIC0yNjUsNyAmIzQzOzI2NSw3IEBAIHN0cnVjdCBiY21fZW5ldF9wcml2IHtcbiBcdC8qIG51bWJlciBvZiBhdmFpbGFibGUgZGVzY3JpcHRvciBmb3IgdHggKi9cbiBcdGludCB0eF9kZXNjX2NvdW50O1xuIFxuLVx0LyogbmV4dCB0eCBkZXNjcmlwdG9yIGF2YWlhYmxlICovXG4mIzQzO1x0LyogbmV4dCB0eCBkZXNjcmlwdG9yIGF2YWlsYWJsZSAqL1xuIFx0aW50IHR4X2N1cnJfZGVzYztcbiBcbiBcdC8qIG5leHQgZGlydHkgdHggZGVzY3JpcHRvciB0byByZWNsYWltICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oXG5pbmRleCBhMzQyOTZmOTg5ZjEyLi42ZjgwN2U5NmRiZDhmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmhcbkBAIC00MDIsNyAmIzQzOzQwMiw3IEBAIHN0cnVjdCBiY21fcnNiIHtcbiAjZGVmaW5lIFRETUFfREVTQ19SSU5HX0JBU0UoaSlcdFx0KFRETUFfREVTQ19SSU5HXzAwX0JBU0UgJiM0MzsgXFxcbiBcdFx0XHRcdFx0KChpKSAqIFRETUFfREVTQ19SSU5HX1NJWkUpKVxuIFxuLS8qIFJpbmcgaW5kZXhlZCByZWdpc3RlciBhZGRyZXNlcyAqL1xuJiM0MzsvKiBSaW5nIGluZGV4ZWQgcmVnaXN0ZXIgYWRkcmVzc2VzICovXG4gI2RlZmluZSBURE1BX0RFU0NfUklOR19IRUFEX1RBSUxfUFRSKGkpXHQoVERNQV9ERVNDX1JJTkdfQkFTRShpKSAmIzQzOyBcXFxuIFx0XHRcdFx0XHRSSU5HX0hFQURfVEFJTF9QVFIpXG4gI2RlZmluZSBURE1BX0RFU0NfUklOR19DT1VOVChpKVx0XHQoVERNQV9ERVNDX1JJTkdfQkFTRShpKSAmIzQzOyBcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oXG5pbmRleCA5NTgwYWI4M2QzODdjLi4yOGVhNGEzM2YyNDVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaFxuQEAgLTI4MCw3ICYjNDM7MjgwLDcgQEAgZW51bSB7XG4gICogKGRiX21zZ19zeiAxIFx1MDAzY1x1MDAzYyA3ICogY2lkICYjNDM7IDB4NDAgRFBNIG9mZnNldCkgaXQgY2FuIGNvbWUgdXAgd2l0aCBhIHZhbGlkIG51bWJlclxuICAqIFdlIG11c3QgYXZvaWQgY29taW5nIHVwIHdpdGggY2lkIDggZm9yIGlzY3NpIHNpbmNlIGFjY29yZGluZyB0byB0aGlzIG1ldGhvZFxuICAqIHRoZSBkZXNpZ25hdGVkIFVJTyBjaWQgd2lsbCBjb21lIG91dCAwIGFuZCBpdCBoYXMgYSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGF0XG4tICogY2FzZSB3aGljaCBkb2VzbiYjMzk7dCBzdWl0IHVzLiBUaGVyZWZvcmUgd2lsbCB3aWxsIGNpZWxpbmcgdG8gY2xvc2VzIGNpZCB3aGljaFxuJiM0MzsgKiBjYXNlIHdoaWNoIGRvZXNuJiMzOTt0IHN1aXQgdXMuIFRoZXJlZm9yZSB3aWxsIGNpZWxpbmcgdG8gY2xvc2VzIGNpZCB3aGljaFxuICAqIGhhcyBsZWFzdCBzaWduaWdpZmNhbnQgbmliYmxlIDggYW5kIGlmIGl0IGlzIDggd2Ugd2lsbCBtb3ZlIGZvcndhcmQgdG8gMHgxOC5cbiAgKi9cbiBcbkBAIC02NjYsNyAmIzQzOzY2Niw3IEBAIHN0cnVjdCBibngyeF9mYXN0cGF0aCB7XG4gXHRcdFx0XHQgTUFYX1RYX0RFU0NfQ05UICogTkVYVF9QQUdFX1RYX0RFU0NfQ05UKVxuIC8qIG1heCBCRHMgcGVyIHR4IHBhY2tldCB3L28gbmV4dF9wYWdlczpcbiAgKiBTVEFSVF9CRFx0XHQtIGRlc2NyaWJlcyBwYWNrZWRcbi0gKiBTVEFSVF9CRChzcGxpdHRlZClcdC0gaW5jbHVkZXMgdW5wYWdlZCBkYXRhIHNlZ21lbnQgZm9yIEdTT1xuJiM0MzsgKiBTVEFSVF9CRChzcGxpdClcdC0gaW5jbHVkZXMgdW5wYWdlZCBkYXRhIHNlZ21lbnQgZm9yIEdTT1xuICAqIFBBUlNJTkdfQkRcdFx0LSBmb3IgVFNPIGFuZCBDU1VNIGRhdGFcbiAgKiBQQVJTSU5HX0JEMlx0XHQtIGZvciBlbmNhcHN1bGF0aW9uIGRhdGFcbiAgKiBGcmFnIEJEc1x0XHQtIGRlc2NyaWJlcyBwYWdlcyBmb3IgZnJhZ3NcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2RjYi5jXG5pbmRleCA5YWY4MTYzMGM4YTQ0Li4zZGY4YTU5ODg1MjE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfZGNiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2RjYi5jXG5AQCAtMTk4Niw3ICYjNDM7MTk4Niw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2RjYm5sX3NldF9wZ190Y2NmZ190eChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcHJpbyxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0LyoqXG4tXHQgKiBid19wY3QgaWdub3JlZCAtXHRiYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGV2aXNpb24gYmV0d2VlbiB1c2VyXG4mIzQzO1x0ICogYndfcGN0IGlnbm9yZWQgLVx0YmFuZC13aWR0aCBwZXJjZW50YWdlIGRpdmlzaW9uIGJldHdlZW4gdXNlclxuIFx0ICpcdFx0XHRwcmlvcml0aWVzIHdpdGhpbiB0aGUgc2FtZSBncm91cCBpcyBub3RcbiBcdCAqXHRcdFx0c3RhbmRhcmQgYW5kIGhlbmNlIG5vdCBzdXBwb3J0ZWRcbiBcdCAqXG5AQCAtMjAzOCw3ICYjNDM7MjAzOCw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2RjYm5sX2dldF9wZ190Y2NmZ190eChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcHJpbyxcbiBcdERQKEJOWDJYX01TR19EQ0IsIFwmIzM0O3ByaW8gPSAlZFxcblwmIzM0OywgcHJpbyk7XG4gXG4gXHQvKipcbi1cdCAqIGJ3X3BjdCBpZ25vcmVkIC1cdGJhbmQtd2lkdGggcGVyY2VudGFnZSBkZXZpc2lvbiBiZXR3ZWVuIHVzZXJcbiYjNDM7XHQgKiBid19wY3QgaWdub3JlZCAtXHRiYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGl2aXNpb24gYmV0d2VlbiB1c2VyXG4gXHQgKlx0XHRcdHByaW9yaXRpZXMgd2l0aGluIHRoZSBzYW1lIGdyb3VwIGlzIG5vdFxuIFx0ICpcdFx0XHRzdGFuZGFyZCBhbmQgaGVuY2Ugbm90IHN1cHBvcnRlZFxuIFx0ICpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oXG5pbmRleCA2MTFlZmVlNzU4MzQwLi41Mjk3YWI1NzhhNmYwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oXG5AQCAtMjM0Miw3ICYjNDM7MjM0Miw3IEBAIHN0cnVjdCBzaG1lbTJfcmVnaW9uIHtcbiBcdFx0dTMyIG9lbV9pMmNfZGF0YV9hZGRyO1xuIFx0fTtcbiBcbi1cdC8qIDkgZW50aXJlcyBmb3IgdGhlIEMyUyBQQ1AgbWFwIGZvciBlYWNoIGlubmVyIFZMQU4gUENQICYjNDM7IDEgZGVmYXVsdCAqL1xuJiM0MztcdC8qIDkgZW50cmllcyBmb3IgdGhlIEMyUyBQQ1AgbWFwIGZvciBlYWNoIGlubmVyIFZMQU4gUENQICYjNDM7IDEgZGVmYXVsdCAqL1xuIFx0LyogRm9yIFBDUCB2YWx1ZXMgMC0zIHVzZSB0aGUgbWFwIGxvd2VyICovXG4gXHQvKiAweEZGMDAwMDAwIC0gUENQIDAsIDB4MDBGRjAwMDAgLSBQQ1AgMSxcbiBcdCAqIDB4MDAwMEZGMDAgLSBQQ1AgMiwgMHgwMDAwMDBGRiBQQ1AgM1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9pbml0X29wcy5oXG5pbmRleCBmYzdmY2U2NDI2NjZjLi5iNTAwNGFhYjEyNGRjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaFxuQEAgLTU4Miw3ICYjNDM7NTgyLDcgQEAgc3RhdGljIHZvaWQgYm54MnhfaW5pdF9weHBfYXJiKHN0cnVjdCBibngyeCAqYnAsIGludCByX29yZGVyLFxuIFx0XHRSRUdfV1IoYnAsIFBYUDJfUkVHX1dSX0NEVV9NUFMsIHZhbCk7XG4gXHR9XG4gXG4tXHQvKiBWYWxpZGF0ZSBudW1iZXIgb2YgdGFncyBzdXBwb3RlZCBieSBkZXZpY2UgKi9cbiYjNDM7XHQvKiBWYWxpZGF0ZSBudW1iZXIgb2YgdGFncyBzdXBwb3J0ZWQgYnkgZGV2aWNlICovXG4gI2RlZmluZSBQQ0lFX1JFR19QQ0lFUl9UTF9IRFJfRkNfU1RcdFx0MHgyOTgwXG4gXHR2YWwgPSBSRUdfUkQoYnAsIFBDSUVfUkVHX1BDSUVSX1RMX0hEUl9GQ19TVCk7XG4gXHR2YWwgXHUwMDI2PSAweEZGO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuY1xuaW5kZXggZWEzMTAwNTdmZTNhZi4uODRkMDAyYjMxOTIwYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jXG5AQCAtMjUzNiw3ICYjNDM7MjUzNiw3IEBAIHN0YXRpYyBpbnQgYm54MnhfcGJmX3VwZGF0ZShzdHJ1Y3QgbGlua19wYXJhbXMgKnBhcmFtcywgdTMyIGZsb3dfY3RybCxcbiB9XG4gXG4gLyoqXG4tICogYm54MnhfZ2V0X2VtYWNfYmFzZSAtIHJldHJpdmUgZW1hYyBiYXNlIGFkZHJlc3NcbiYjNDM7ICogYm54MnhfZ2V0X2VtYWNfYmFzZSAtIHJldHJpZXZlIGVtYWMgYmFzZSBhZGRyZXNzXG4gICpcbiAgKiBAYnA6XHRcdFx0ZHJpdmVyIGhhbmRsZVxuICAqIEBtZGNfbWRpb19hY2Nlc3M6XHRhY2Nlc3MgdHlwZVxuQEAgLTM1OTMsNyAmIzQzOzM1OTMsNyBAQCBzdGF0aWMgdTggYm54MnhfZXh0X3BoeV9yZXNvbHZlX2ZjKHN0cnVjdCBibngyeF9waHkgKnBoeSxcbiBcdHU4IHJldCA9IDA7XG4gXHR2YXJzLVx1MDAzZWZsb3dfY3RybCA9IEJOWDJYX0ZMT1dfQ1RSTF9OT05FO1xuIFx0aWYgKHBoeS1cdTAwM2VyZXFfZmxvd19jdHJsICE9IEJOWDJYX0ZMT1dfQ1RSTF9BVVRPKSB7XG4tXHRcdC8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xlZCBvZiBMRC9MUCBpbiBBTiAqL1xuJiM0MztcdFx0LyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGxlZCBvZiBMRC9MUCBpbiBBTiAqL1xuIFx0XHRpZiAocGh5LVx1MDAzZXJlcV9saW5lX3NwZWVkID09IFNQRUVEX0FVVE9fTkVHKVxuIFx0XHRcdGJueDJ4X2V4dF9waHlfdXBkYXRlX2Fkdl9mYyhwaHksIHBhcmFtcywgdmFycyk7XG4gXHRcdC8qIEJ1dCBzZXQgdGhlIGZsb3ctY29udHJvbCByZXN1bHQgYXMgdGhlIHJlcXVlc3RlZCBvbmUgKi9cbkBAIC0zNzQzLDcgJiM0MzszNzQzLDcgQEAgc3RhdGljIHZvaWQgYm54Mnhfd2FycGNvcmVfZW5hYmxlX0FOX0tSKHN0cnVjdCBibngyeF9waHkgKnBoeSxcbiBcdFx0e01ESU9fV0NfREVWQUQsIE1ESU9fV0NfUkVHX0NMNzJfVVNFUkIwX0NMNzJfVFhfRklSX1RBUCwgMH0sXG4gXHR9O1xuIFx0RFAoTkVUSUZfTVNHX0xJTkssIFwmIzM0O0VuYWJsZSBBdXRvIE5lZ290aWF0aW9uIGZvciBLUlxcblwmIzM0Oyk7XG4tXHQvKiBTZXQgdG8gZGVmYXVsdCByZWdpc3RlcnMgdGhhdCBtYXkgYmUgb3ZlcnJpZGVuIGJ5IDEwRyBmb3JjZSAqL1xuJiM0MztcdC8qIFNldCB0byBkZWZhdWx0IHJlZ2lzdGVycyB0aGF0IG1heSBiZSBvdmVycmlkZGVuIGJ5IDEwRyBmb3JjZSAqL1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShyZWdfc2V0KTsgaSYjNDM7JiM0MzspXG4gXHRcdGJueDJ4X2NsNDVfd3JpdGUoYnAsIHBoeSwgcmVnX3NldFtpXS5kZXZhZCwgcmVnX3NldFtpXS5yZWcsXG4gXHRcdFx0XHQgcmVnX3NldFtpXS52YWwpO1xuQEAgLTU0MjUsNyAmIzQzOzU0MjUsNyBAQCBzdGF0aWMgdm9pZCBibngyeF9mbG93X2N0cmxfcmVzb2x2ZShzdHJ1Y3QgYm54MnhfcGh5ICpwaHksXG4gXG4gXHQvKiBSZXNvbHZlIGZyb20gZ3Bfc3RhdHVzIGluIGNhc2Ugb2YgQU4gY29tcGxldGUgYW5kIG5vdCBzZ21paSAqL1xuIFx0aWYgKHBoeS1cdTAwM2VyZXFfZmxvd19jdHJsICE9IEJOWDJYX0ZMT1dfQ1RSTF9BVVRPKSB7XG4tXHRcdC8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xlZCBvZiBMRC9MUCBpbiBBTiAqL1xuJiM0MztcdFx0LyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGxlZCBvZiBMRC9MUCBpbiBBTiAqL1xuIFx0XHRpZiAocGh5LVx1MDAzZXJlcV9saW5lX3NwZWVkID09IFNQRUVEX0FVVE9fTkVHKVxuIFx0XHRcdGJueDJ4X3VwZGF0ZV9hZHZfZmMocGh5LCBwYXJhbXMsIHZhcnMsIGdwX3N0YXR1cyk7XG4gXHRcdC8qIEJ1dCBzZXQgdGhlIGZsb3ctY29udHJvbCByZXN1bHQgYXMgdGhlIHJlcXVlc3RlZCBvbmUgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmNcbmluZGV4IDM5ZWI2YWI1ZjgwNTguLjI3N2M3YmQ5YzZlNzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uY1xuQEAgLTEyNjY5LDcgJiM0MzsxMjY2OSw3IEBAIHN0YXRpYyBpbnQgYm54Mnhfc2V0X21jX2xpc3Qoc3RydWN0IGJueDJ4ICpicClcbiBcdFx0aWYgKHJjKVxuIFx0XHRcdHJldHVybiByYztcbiBcbi1cdFx0LyogT3ZlcnJpZGUgdGhlIGN1cmVudGx5IGNvbmZpZ3VyZWQgc2V0IG9mIG1jIGZpbHRlcnMgKi9cbiYjNDM7XHRcdC8qIE92ZXJyaWRlIHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCBzZXQgb2YgbWMgZmlsdGVycyAqL1xuIFx0XHRyYyA9IGJueDJ4X2NvbmZpZ19tY2FzdChicCwgXHUwMDI2cnBhcmFtLFxuIFx0XHRcdFx0XHRCTlgyWF9NQ0FTVF9DTURfU0VUKTtcbiBcdFx0aWYgKHJjIFx1MDAzYyAwKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmhcbmluZGV4IGEwMThmMjUxZDE5ODYuLjMwOTQzZjM0NzE2NDIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmhcbkBAIC0yMjM2LDcgJiM0MzsyMjM2LDcgQEAgZXh0ZXJuIGNvbnN0IHUzMiBkbWFlX3JlZ19nb19jW107XG4gLyogW1JXIDFdIE91dHB1dCBlbmFibGUgZm9yIFRYIFBBVVNFIHNpZ25hbCB0byB0aGUgTUFDLiAqL1xuICNkZWZpbmUgTklHX1JFR19QMF9NQUNfUEFVU0VfT1VUX0VOXHRcdFx0XHQgMHgxODViNFxuIC8qIFtSVyAzMl0gRWlnaHQgNC1iaXQgY29uZmlndXJhdGlvbnMgZm9yIHNwZWNpZnlpbmcgd2hpY2ggQ09TICgwLTE1IGZvclxuLSAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3J0eSBpcyB0byBiZSBtYXBwZWQgdG8uIEJpdHMgMzowIHNwZWNpZnkgdGhlXG4mIzQzOyAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3JpdHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZVxuICAqIENPUyBmb3IgcHJpb3JpdHkgMC4gQml0cyAzMToyOCBzcGVjaWZ5IHRoZSBDT1MgZm9yIHByaW9yaXR5IDcuIFRoZSAzLWJpdFxuICAqIHByaW9yaXR5IGZpZWxkIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSBvdXRlci1tb3N0IFZMQU4gaW4gcmVjZWl2ZSBwYWNrZXQuXG4gICogT25seSBDT1MgMCBhbmQgQ09TIDEgYXJlIHN1cHBvcnRlZCBpbiBFMi4gKi9cbkBAIC0yNDM0LDcgJiM0MzsyNDM0LDcgQEAgZXh0ZXJuIGNvbnN0IHUzMiBkbWFlX3JlZ19nb19jW107XG4gLyogW1JXIDFdIE91dHB1dCBlbmFibGUgZm9yIFRYIFBBVVNFIHNpZ25hbCB0byB0aGUgTUFDLiAqL1xuICNkZWZpbmUgTklHX1JFR19QMV9NQUNfUEFVU0VfT1VUX0VOXHRcdFx0XHQgMHgxODVjOFxuIC8qIFtSVyAzMl0gRWlnaHQgNC1iaXQgY29uZmlndXJhdGlvbnMgZm9yIHNwZWNpZnlpbmcgd2hpY2ggQ09TICgwLTE1IGZvclxuLSAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3J0eSBpcyB0byBiZSBtYXBwZWQgdG8uIEJpdHMgMzowIHNwZWNpZnkgdGhlXG4mIzQzOyAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3JpdHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZVxuICAqIENPUyBmb3IgcHJpb3JpdHkgMC4gQml0cyAzMToyOCBzcGVjaWZ5IHRoZSBDT1MgZm9yIHByaW9yaXR5IDcuIFRoZSAzLWJpdFxuICAqIHByaW9yaXR5IGZpZWxkIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSBvdXRlci1tb3N0IFZMQU4gaW4gcmVjZWl2ZSBwYWNrZXQuXG4gICogT25seSBDT1MgMCBhbmQgQ09TIDEgYXJlIHN1cHBvcnRlZCBpbiBFMi4gKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY242Nnh4X2RldmljZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuNjZ4eF9kZXZpY2UuY1xuaW5kZXggOTNmY2NmZWMyODhkNC4uZDNlYmJiNDA1NzllNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmNcbkBAIC0xNzcsNyAmIzQzOzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGxpb19jbjY2eHhfc2V0dXBfcGt0X2N0bF9yZWdzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4gXG4gXHQvKiA2NlhYIFNQRUNJRklDICovXG4gXHRpZiAoQ0ZHX0dFVF9PUV9NQVhfUShjbjZ4eHgtXHUwMDNlY29uZikgXHUwMDNjPSA0KVxuLVx0XHQvKiBEaXNhYmxlIFJJTkdfRU4gaWYgb25seSB1cHRvIDQgcmluZ3MgYXJlIHVzZWQuICovXG4mIzQzO1x0XHQvKiBEaXNhYmxlIFJJTkdfRU4gaWYgb25seSB1cCB0byA0IHJpbmdzIGFyZSB1c2VkLiAqL1xuIFx0XHRwa3RjdGwgXHUwMDI2PSB+KDEgXHUwMDNjXHUwMDNjIDQpO1xuIFx0ZWxzZVxuIFx0XHRwa3RjdGwgfD0gKDEgXHUwMDNjXHUwMDNjIDQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmNcbmluZGV4IDkzYjA2ZDU5OWVlZDYuLmJlZDQ1MGJmYWQzODMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmNcbkBAIC01NjUsNyAmIzQzOzU2NSw3IEBAIHN0YXRpYyBpbnQgb2N0ZW9uX3NldHVwX2Ryb3Eoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgaW50IHFfbm8sIGludCBudW1fZGVzY3MsXG4gfVxuIFxuIC8qKlxuLSAqIGxpcXVpZGlvX3B1c2hfcGFja2V0IC0gUm91dGluZSB0byBwdXNoIHBhY2tldHMgYXJyaXZpbmcgb24gT2N0ZW9uIGludGVyZmFjZSB1cHRvIG5ldHdvcmsgbGF5ZXIuXG4mIzQzOyAqIGxpcXVpZGlvX3B1c2hfcGFja2V0IC0gUm91dGluZSB0byBwdXNoIHBhY2tldHMgYXJyaXZpbmcgb24gT2N0ZW9uIGludGVyZmFjZSB1cCB0byBuZXR3b3JrIGxheWVyLlxuICAqIEBvY3Rlb25faWQ6b2N0ZW9uIGRldmljZSBpZC5cbiAgKiBAc2tidWZmOiAgIHNrYnVmZiBzdHJ1Y3QgdG8gYmUgcGFzc2VkIHRvIG5ldHdvcmsgbGF5ZXIuXG4gICogQGxlbjogICAgICBzaXplIG9mIHRvdGFsIGRhdGEgcmVjZWl2ZWQuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25maWcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uZmlnLmhcbmluZGV4IDI0YzIxMjAwMTIxMjEuLmQyZDY0ZWRhZjNiZjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbmZpZy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbmZpZy5oXG5AQCAtMjU0LDcgJiM0MzsyNTQsNyBAQCBzdHJ1Y3Qgb2N0ZW9uX29xX2NvbmZpZyB7XG4gXHR1NjQgcGt0c19wZXJfaW50cjoxNjtcbiBcbiBcdC8qKiBJbnRlcnJ1cHQgQ29hbGVzY2luZyAoVGltZSBJbnRlcnZhbCkuIE9jdGVvbiB3aWxsIGludGVycnVwdCB0aGVcbi1cdCAqICBob3N0IGlmIGF0bGVhc3Qgb25lIHBhY2tldCB3YXMgc2VudCBpbiB0aGUgdGltZSBpbnRlcnZhbCBzcGVjaWZpZWRcbiYjNDM7XHQgKiAgaG9zdCBpZiBhdCBsZWFzdCBvbmUgcGFja2V0IHdhcyBzZW50IGluIHRoZSB0aW1lIGludGVydmFsIHNwZWNpZmllZFxuIFx0ICogIGJ5IHRoaXMgZmllbGQuIFRoZSBkcml2ZXIgdXNlcyB0aW1lIGludGVydmFsIGludGVycnVwdCBjb2FsZXNjaW5nXG4gXHQgKiAgYnkgZGVmYXVsdC4gVGhlIHRpbWUgaXMgc3BlY2lmaWVkIGluIG1pY3Jvc2Vjb25kcy5cbiBcdCAqL1xuQEAgLTI5Niw3ICYjNDM7Mjk2LDcgQEAgc3RydWN0IG9jdGVvbl9vcV9jb25maWcge1xuIFx0dTY0IG9xX2ludHJfcGt0OjE2O1xuIFxuIFx0LyoqIEludGVycnVwdCBDb2FsZXNjaW5nIChUaW1lIEludGVydmFsKS4gT2N0ZW9uIHdpbGwgaW50ZXJydXB0IHRoZVxuLVx0ICogIGhvc3QgaWYgYXRsZWFzdCBvbmUgcGFja2V0IHdhcyBzZW50IGluIHRoZSB0aW1lIGludGVydmFsIHNwZWNpZmllZFxuJiM0MztcdCAqICBob3N0IGlmIGF0IGxlYXN0IG9uZSBwYWNrZXQgd2FzIHNlbnQgaW4gdGhlIHRpbWUgaW50ZXJ2YWwgc3BlY2lmaWVkXG4gXHQgKiAgYnkgdGhpcyBmaWVsZC4gVGhlIGRyaXZlciB1c2VzIHRpbWUgaW50ZXJ2YWwgaW50ZXJydXB0IGNvYWxlc2NpbmdcbiBcdCAqICBieSBkZWZhdWx0LiAgVGhlIHRpbWUgaXMgc3BlY2lmaWVkIGluIG1pY3Jvc2Vjb25kcy5cbiBcdCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaFxuaW5kZXggYTA0ZjM2YTBlMWEwOC4uZmRkN2QzYTc3YTJkYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9pcS5oXG5AQCAtNzAsNyAmIzQzOzcwLDcgQEAgc3RydWN0IG9jdF9pcV9zdGF0cyB7XG4gXG4gLyoqIFRoZSBpbnN0cnVjdGlvbiAoaW5wdXQpIHF1ZXVlLlxuICAqICBUaGUgaW5wdXQgcXVldWUgaXMgdXNlZCB0byBwb3N0IHJhdyAoaW5zdHJ1Y3Rpb24pIG1vZGUgZGF0YSBvciBwYWNrZXRcbi0gKiAgZGF0YSB0byBPY3Rlb24gZGV2aWNlIGZyb20gdGhlIGhvc3QuIEVhY2ggaW5wdXQgcXVldWUgKHVwdG8gNCkgZm9yXG4mIzQzOyAqICBkYXRhIHRvIE9jdGVvbiBkZXZpY2UgZnJvbSB0aGUgaG9zdC4gRWFjaCBpbnB1dCBxdWV1ZSAodXAgdG8gNCkgZm9yXG4gICogIGEgT2N0ZW9uIGRldmljZSBoYXMgb25lIHN1Y2ggc3RydWN0dXJlIHRvIHJlcHJlc2VudCBpdC5cbiAgKi9cbiBzdHJ1Y3Qgb2N0ZW9uX2luc3RyX3F1ZXVlIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oXG5pbmRleCA5NTNlZGYwYzcwOTZjLi5kMmE1MjY3M2NhYzU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWluLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oXG5AQCAtMTY2LDcgJiM0MzsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIGludCBvY3Rlb25fbWFwX3BjaV9iYXJ4KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsXG4gICogZXJybm8gLUVJTlRSOiB1c2VyIGFib3J0IHRoZSBjb21tYW5kLlxuICAqIGVycm5vIC1FVElNRTogdXNlciBzcGVmaWZpZWQgdGltZW91dCB2YWx1ZSBoYXMgYmVlbiBleHBpcmVkLlxuICAqIGVycm5vIC1FQlVTWTogdGhlIHJlc3BvbnNlIG9mIHRoZSByZXF1ZXN0IGRvZXMgbm90IHJldHVybiBpblxuLSAqICAgICAgICAgICAgICAgcmVzb25hYmxlIHRpbWUgKExJT19TQ19NQVhfVE1PX01TKS5cbiYjNDM7ICogICAgICAgICAgICAgICByZWFzb25hYmxlIHRpbWUgKExJT19TQ19NQVhfVE1PX01TKS5cbiAgKiAgICAgICAgICAgICAgIHRoZSBzYyB3bGwgYmUgbW92ZSB0byB6b21iaWUgcmVzcG9uc2UgbGlzdCBieVxuICAqICAgICAgICAgICAgICAgbGlvX3Byb2Nlc3Nfb3JkZXJlZF9saXN0KClcbiAgKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmljLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25pYy5oXG5pbmRleCBjMTM5ZmM0MjM3NjRlLi44MzQxZmFhYTBjMjQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uaWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uaWMuaFxuQEAgLTI3Nyw3ICYjNDM7Mjc3LDcgQEAgaW50IG9jdG5ldF9zZW5kX25pY19kYXRhX3BrdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LFxuIFxuIC8qKiBTZW5kIGEgTklDIGNvbnRyb2wgcGFja2V0IHRvIHRoZSBkZXZpY2VcbiAgKiBAcGFyYW0gb2N0IC0gb2N0ZW9uIGRldmljZSBwb2ludGVyXG4tICogQHBhcmFtIG5jdHJsIC0gY29udHJvbCBzdHJ1Y3R1cmUgd2l0aCBjb21tYW5kLCB0aW1vdXQsIGFuZCBjYWxsYmFjayBpbmZvXG4mIzQzOyAqIEBwYXJhbSBuY3RybCAtIGNvbnRyb2wgc3RydWN0dXJlIHdpdGggY29tbWFuZCwgdGltZW91dCwgYW5kIGNhbGxiYWNrIGluZm9cbiAgKiBAcmV0dXJucyBJUV9GQUlMRUQgaWYgaXQgZmFpbGVkIHRvIGFkZCB0byB0aGUgaW5wdXQgcXVldWUuIElRX1NUT1AgaWYgdGhlXG4gICogcXVldWUgc2hvdWxkIGJlIHN0b3BwZWQsIGFuZCBJUV9TRU5EX09LIGlmIGl0IHNlbnQgb2theS5cbiAgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmNcbmluZGV4IGQ3Y2ZiMjBlZWEwMGMuLmE5ODNlN2Y3OTQ2MWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9yZXF1ZXN0X21hbmFnZXIuY1xuQEAgLTQwLDcgJiM0Mzs0MCw3IEBAIHN0YXRpYyB2b2lkICBfX2NoZWNrX2RiX3RpbWVvdXQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgdTY0IGlxX25vKTtcbiBcbiBzdGF0aWMgdm9pZCAoKnJlcXR5cGVfZnJlZV9mbltNQVhfT0NURU9OX0RFVklDRVNdW1JFUVRZUEVfTEFTVCAmIzQzOyAxXSkgKHZvaWQgKik7XG4gXG4tLyogRGVmaW5lIHRoaXMgdG8gcmV0dXJuIHRoZSByZXF1ZXN0IHN0YXR1cyBjb21hcHRpYmxlIHRvIG9sZCBjb2RlICovXG4mIzQzOy8qIERlZmluZSB0aGlzIHRvIHJldHVybiB0aGUgcmVxdWVzdCBzdGF0dXMgY29tcGF0aWJsZSB0byBvbGQgY29kZSAqL1xuIC8qI2RlZmluZSBPQ1RFT05fVVNFX09MRF9SRVFfU1RBVFVTKi9cbiBcbiAvKiBSZXR1cm4gMCBvbiBzdWNjZXNzLCAxIG9uIGZhaWx1cmUgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pYy5oXG5pbmRleCAwOTBkNmI4Mzk4MmEyLi5iYjNmNGZhNmI5OTU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pYy5oXG5AQCAtOTcsNyAmIzQzOzk3LDcgQEBcbiAgKiBUaGlzIHZhbHVlIGVuc3VyZXMgdGhhdCBvbmNlIGEgcGFja2V0IGhhcyBiZWVuIFwmIzM0O2FjY2VwdGVkXCYjMzQ7XG4gICogZm9yIHJlY2VwdGlvbiBpdCB3aWxsIG5vdCBnZXQgZHJvcHBlZCBkdWUgdG8gbm9uLWF2YWlsYWJpbGl0eVxuICAqIG9mIENRIGRlc2NyaXB0b3IuIEFuIGVycmF0YSBpbiBIVyBtYW5kYXRlcyB0aGlzIHZhbHVlIHRvIGJlXG4tICogYXRsZWFzdCAweDEwMC5cbiYjNDM7ICogYXQgbGVhc3QgMHgxMDAuXG4gICovXG4gI2RlZmluZSBOSUNQRl9DUU1fTUlOX0RST1BfTEVWRUwgICAgICAgMHgxMDBcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uY1xuaW5kZXggMGVjNjVlYzYzNGRmNS4uMDg2ZjMyYjYxNTgwZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmNcbkBAIC01OTUsNyAmIzQzOzU5NSw3IEBAIHN0YXRpYyB2b2lkIG5pY19jb25maWdfcnNzKHN0cnVjdCBuaWNwZiAqbmljLCBzdHJ1Y3QgcnNzX2NmZ19tc2cgKmNmZylcbiBcdG5pY19yZWdfd3JpdGUobmljLCBpZHhfYWRkciB8IChjcGlfYmFzZSBcdTAwM2NcdTAwM2MgMyksIGNwaV9jZmcpO1xuIH1cbiBcbi0vKiA0IGxldmVsIHRyYW5zbWl0IHNpZGUgc2NoZWR1bGVyIGNvbmZpZ3V0YXRpb25cbiYjNDM7LyogNCBsZXZlbCB0cmFuc21pdCBzaWRlIHNjaGVkdWxlciBjb25maWd1cmF0aW9uXG4gICogZm9yIFROUyBieXBhc3MgbW9kZVxuICAqXG4gICogU2FtcGxlIGNvbmZpZ3VyYXRpb24gZm9yIFNRMCBvbiA4OHh4XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmNcbmluZGV4IGYzOGExMGM3OTkwN2YuLmZhNTJlMDk5NDA5YzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jXG5AQCAtMzczLDcgJiM0MzszNzMsNyBAQCBzdGF0aWMgdm9pZCBkZV9yeF9lcnJfYWNjdCAoc3RydWN0IGRlX3ByaXZhdGUgKmRlLCB1bnNpZ25lZCByeF90YWlsLFxuIFx0XHQgIHJ4X3RhaWwsIHN0YXR1cywgbGVuKTtcbiBcbiBcdGlmICgoc3RhdHVzIFx1MDAyNiAweDM4MDAwMzAwKSAhPSAweDAzMDApIHtcbi1cdFx0LyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cbiYjNDM7XHRcdC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4gXHRcdGlmICgoc3RhdHVzIFx1MDAyNiAweGZmZmYpICE9IDB4N2ZmZikge1xuIFx0XHRcdG5ldGlmX3dhcm4oZGUsIHJ4X2VyciwgZGUtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgXCYjMzQ7T3ZlcnNpemVkIEV0aGVybmV0IGZyYW1lIHNwYW5uZWQgbXVsdGlwbGUgYnVmZmVycywgc3RhdHVzICUwOHghXFxuXCYjMzQ7LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuY1xuaW5kZXggMGExMmNiOWIzYmE3OC4uOGMwMjc3MWIyOGU0YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2ludGVycnVwdC5jXG5AQCAtMTc3LDcgJiM0MzsxNzcsNyBAQCBpbnQgdHVsaXBfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXHRcdFx0ICAgcGt0X2xlbiBcdTAwM2UgMTUxOCkge1xuIFx0XHRcdCAgICAgICBpZiAoKHN0YXR1cyBcdTAwMjYgKFJ4TGVuZ3RoT3ZlcjIwNDcgfFxuIFx0XHRcdFx0XHQgICAgICBSeFdob2xlUGt0KSkgIT0gUnhXaG9sZVBrdCkge1xuLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmUgZWFybGllciBidWZmZXJzLiAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc3RhdHVzIFx1MDAyNiAweGZmZmYpICE9IDB4N2ZmZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR1bGlwX2RlYnVnIFx1MDAzZSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfd2FybihcdTAwMjZkZXYtXHUwMDNlZGV2LFxuQEAgLTQwOCw3ICYjNDM7NDA4LDcgQEAgc3RhdGljIGludCB0dWxpcF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHQgICAgcGt0X2xlbiBcdTAwM2UgMTUxOCkge1xuIFx0XHRcdGlmICgoc3RhdHVzIFx1MDAyNiAoUnhMZW5ndGhPdmVyMjA0NyB8XG4gXHRcdFx0ICAgICBSeFdob2xlUGt0KSkgICAgICAgICAhPSBSeFdob2xlUGt0KSB7XG4tXHRcdFx0XHQvKiBJbmdvcmUgZWFybGllciBidWZmZXJzLiAqL1xuJiM0MztcdFx0XHRcdC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4gXHRcdFx0XHRpZiAoKHN0YXR1cyBcdTAwMjYgMHhmZmZmKSAhPSAweDdmZmYpIHtcbiBcdFx0XHRcdFx0aWYgKHR1bGlwX2RlYnVnIFx1MDAzZSAxKVxuIFx0XHRcdFx0XHRcdG5ldGRldl93YXJuKGRldixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9tZWRpYS5jXG5pbmRleCA1NWQ2ZmM5OWY0MGI2Li4wYzk2OTRkMmIzOGFlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL21lZGlhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9tZWRpYS5jXG5AQCAtMjQsNyAmIzQzOzI0LDcgQEBcbiBcbiAvKiBSZWFkIGFuZCB3cml0ZSB0aGUgTUlJIHJlZ2lzdGVycyB1c2luZyBzb2Z0d2FyZS1nZW5lcmF0ZWQgc2VyaWFsXG4gICAgTURJTyBwcm90b2NvbC4gIEl0IGlzIGp1c3QgZGlmZmVyZW50IGVub3VnaCBmcm9tIHRoZSBFRVBST00gcHJvdG9jb2xcbi0gICB0byBub3Qgc2hhcmUgY29kZS4gIFRoZSBtYXhpdW0gZGF0YSBjbG9jayByYXRlIGlzIDIuNSBNaHouICovXG4mIzQzOyAgIHRvIG5vdCBzaGFyZSBjb2RlLiAgVGhlIG1heGltdW0gZGF0YSBjbG9jayByYXRlIGlzIDIuNSBNaHouICovXG4gI2RlZmluZSBNRElPX1NISUZUX0NMS1x0XHQweDEwMDAwXG4gI2RlZmluZSBNRElPX0RBVEFfV1JJVEUwXHQweDAwMDAwXG4gI2RlZmluZSBNRElPX0RBVEFfV1JJVEUxXHQweDIwMDAwXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3R1bGlwLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvdHVsaXAuaFxuaW5kZXggNWUwMTBlMWZhNmY3OS4uZTM5ZTVjNzhkNGNjZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvdHVsaXAuaFxuQEAgLTI1MCw3ICYjNDM7MjUwLDcgQEAgZW51bSB0MjExNDNfY3NyNl9iaXRzIHtcbiBcdGNzcjZfdHRtID0gKDFcdTAwM2NcdTAwM2MyMiksICAvKiBUcmFuc21pdCBUaHJlc2hvbGQgTW9kZSwgc2V0IGZvciAxMGJhc2VULCAwIGZvciAxMDBCYXNlVFggKi9cbiBcdGNzcjZfc2YgPSAoMVx1MDAzY1x1MDAzYzIxKSwgICAvKiBTdG9yZSBhbmQgZm9yd2FyZC4gSWYgc2V0IGlnbm9yZXMgVFIgYml0cyAqL1xuIFx0Y3NyNl9oYmQgPSAoMVx1MDAzY1x1MDAzYzE5KSwgIC8qIEhlYXJ0IGJlYXQgZGlzYWJsZS4gRGlzYWJsZXMgU1FFIGZ1bmN0aW9uIGluIDEwYmFzZVQgKi9cbi1cdGNzcjZfcHMgPSAoMVx1MDAzY1x1MDAzYzE4KSwgICAvKiBQb3J0IFNlbGVjdC4gMCAoZGVmdWFsdCkgPSAxMGJhc2VULCAxID0gMTAwYmFzZVRYOiBjYW4mIzM5O3QgYmUgc2V0ICovXG4mIzQzO1x0Y3NyNl9wcyA9ICgxXHUwMDNjXHUwMDNjMTgpLCAgIC8qIFBvcnQgU2VsZWN0LiAwIChkZWZhdWx0KSA9IDEwYmFzZVQsIDEgPSAxMDBiYXNlVFg6IGNhbiYjMzk7dCBiZSBzZXQgKi9cbiBcdGNzcjZfY2EgPSAoMVx1MDAzY1x1MDAzYzE3KSwgICAvKiBDb2xsaXNpb24gT2Zmc2V0IEVuYWJsZS4gSWYgc2V0IHVzZXMgc3BlY2lhbCBhbGdvcml0aG0gaW4gbG93IGNvbGxpc2lvbiBzaXR1YXRpb25zICovXG4gXHRjc3I2X3RyaCA9ICgxXHUwMDNjXHUwMDNjMTUpLCAgLyogVHJhbnNtaXQgVGhyZXNob2xkIGhpZ2ggYml0ICovXG4gXHRjc3I2X3RybCA9ICgxXHUwMDNjXHUwMDNjMTQpLCAgLyogVHJhbnNtaXQgVGhyZXNob2xkIGxvdyBiaXQgKi9cbkBAIC0yNzQsNyAmIzQzOzI3NCw3IEBAIGVudW0gdDIxMTQzX2NzcjZfYml0cyB7XG4gXHRjc3I2X29tX2ludF9sb29wID0gKDFcdTAwM2NcdTAwM2MxMCksIC8qIGludGVybmFsIChGSUZPKSBsb29wYmFjayBmbGFnICovXG4gXHRjc3I2X29tX2V4dF9sb29wID0gKDFcdTAwM2NcdTAwM2MxMSksIC8qIGV4dGVybmFsIChQTUQpIGxvb3BiYWNrIGZsYWcgKi9cbiBcdC8qIHNldCBib3RoIGFuZCB5b3UgZ2V0IChQSFkpIGxvb3BiYWNrICovXG4tXHRjc3I2X2ZkID0gKDFcdTAwM2NcdTAwM2M5KSwgICAgLyogRnVsbCBkdXBsZXggbW9kZSwgZGlzYWJsZXMgaGVhcmJlYXQsIG5vIGxvb3BiYWNrICovXG4mIzQzO1x0Y3NyNl9mZCA9ICgxXHUwMDNjXHUwMDNjOSksICAgIC8qIEZ1bGwgZHVwbGV4IG1vZGUsIGRpc2FibGVzIGhlYXJ0YmVhdCwgbm8gbG9vcGJhY2sgKi9cbiBcdGNzcjZfcG0gPSAoMVx1MDAzY1x1MDAzYzcpLCAgICAvKiBQYXNzIEFsbCBNdWx0aWNhc3QgKi9cbiBcdGNzcjZfcHIgPSAoMVx1MDAzY1x1MDAzYzYpLCAgICAvKiBQcm9taXNjdW91cyBtb2RlICovXG4gXHRjc3I2X3NiID0gKDFcdTAwM2NcdTAwM2M1KSwgICAgLyogU3RhcnQoMSkvU3RvcCgwKSBiYWNrb2ZmIGNvdW50ZXIgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvd2luYm9uZC04NDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jXG5pbmRleCBhNTU4MWYxZDAxNDE3Li5iZTkxOTlmNTVhOGE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3dpbmJvbmQtODQwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jXG5AQCAtMTE4OCw3ICYjNDM7MTE4OCw3IEBAIHN0YXRpYyBpbnQgbmV0ZGV2X3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdFx0YnJlYWs7XG4gXHRcdGlmICgoc3RhdHVzIFx1MDAyNiAweDM4MDA4MzAwKSAhPSAweDAzMDApIHtcbiBcdFx0XHRpZiAoKHN0YXR1cyBcdTAwMjYgMHgzODAwMDMwMCkgIT0gMHgwMzAwKSB7XG4tXHRcdFx0XHQvKiBJbmdvcmUgZWFybGllciBidWZmZXJzLiAqL1xuJiM0MztcdFx0XHRcdC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4gXHRcdFx0XHRpZiAoKHN0YXR1cyBcdTAwMjYgMHhmZmZmKSAhPSAweDdmZmYpIHtcbiBcdFx0XHRcdFx0ZGV2X3dhcm4oXHUwMDI2ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdFx0XHQgXCYjMzQ7T3ZlcnNpemVkIEV0aGVybmV0IGZyYW1lIHNwYW5uZWQgbXVsdGlwbGUgYnVmZmVycywgZW50cnkgJSN4IHN0YXR1cyAlMDR4IVxcblwmIzM0OyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jXG5pbmRleCA5MTM5MWE0OWZjZWEyLi5hNTlmZDI4MGEwNDVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9taXNjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jXG5AQCAtNTkxLDcgJiM0Mzs1OTEsNyBAQCBzdGF0aWMgaW50IGhuc19tYWNfY29uZmlnX3Nkc19sb29wYmFjayhzdHJ1Y3QgaG5zX21hY19jYiAqbWFjX2NiLCBib29sIGVuKVxuICNkZWZpbmUgSElMSU5LX0FDQ0VTU19TRUxfQ0ZHXHRcdDB4NDAwMDhcbiBcdFx0XHQvKiBoaWxpbms0IFx1MDAyNiBoaWxpbmszIHVzZSB0aGUgc2FtZSB4Z2UgdHJhaW5pbmcgYW5kXG4gXHRcdFx0ICogeGdlIHUgYWRhcHRvci4gVGhlcmUgaXMgYSBoaWxpbmsgYWNjZXNzIHNlbCBjZmdcbi1cdFx0XHQgKiByZWdpc3RlciB0byBzZWxlY3Qgd2hpY2ggb25lIHRvIGJlIGNvbmZpZ2VkXG4mIzQzO1x0XHRcdCAqIHJlZ2lzdGVyIHRvIHNlbGVjdCB3aGljaCBvbmUgdG8gYmUgY29uZmlndXJlZFxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICgoIUhOU19EU0FGX0lTX0RFQlVHKG1hY19jYi1cdTAwM2Vkc2FmX2RldikpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICAobWFjX2NiLVx1MDAzZW1hY19pZCBcdTAwM2M9IDMpKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfcHBlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX3BwZS5jXG5pbmRleCA1MDEzYmViNGQyODI1Li40MDhkMzZkODVmYjEzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9wcGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9wcGUuY1xuQEAgLTEzOSw3ICYjNDM7MTM5LDcgQEAgc3RhdGljIHZvaWQgaG5zX3BwZV9zZXRfdmxhbl9zdHJpcChzdHJ1Y3QgaG5zX3BwZV9jYiAqcHBlX2NiLCBpbnQgZW4pXG4gfVxuIFxuIC8qKlxuLSAqIGhuc19wcGVfY2hlY2tzdW1faHcgLSBzZXQgcHBlIGNoZWNrc3VtIGNhY3VsYXRlXG4mIzQzOyAqIGhuc19wcGVfY2hlY2tzdW1faHcgLSBzZXQgcHBlIGNoZWNrc3VtIGNhbGN1bGF0ZVxuICAqIEBwcGVfY2I6IHBwZSBkZXZpY2VcbiAgKiBAdmFsdWU6IHZhbHVlXG4gICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jXG5pbmRleCBlOTA1ZjEwYjg5NGU4Li5kODE5ZDJiYjM0NTA3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmNcbkBAIC0xMjMwLDcgJiM0MzsxMjMwLDcgQEAgc3RhdGljIHZvaWQgaG5zX25pY191cGRhdGVfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdGgtXHUwMDNlZGV2LVx1MDAzZW9wcy1cdTAwM2V1cGRhdGVfc3RhdHMoaCwgXHUwMDI2bmV0ZGV2LVx1MDAzZXN0YXRzKTtcbiB9XG4gXG4tLyogc2V0IG1hYyBhZGRyIGlmIGl0IGlzIGNvbmZpZ2VkLiBvciBsZWF2ZSBpdCB0byB0aGUgQUUgZHJpdmVyICovXG4mIzQzOy8qIHNldCBtYWMgYWRkciBpZiBpdCBpcyBjb25maWd1cmVkLiBvciBsZWF2ZSBpdCB0byB0aGUgQUUgZHJpdmVyICovXG4gc3RhdGljIHZvaWQgaG5zX2luaXRfbWFjX2FkZHIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IGhuc19uaWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTIzMTcsNyAmIzQzOzIzMTcsNyBAQCBzdGF0aWMgaW50IGhuc19uaWNfZGV2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdHJldCA9IGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFwmIzM0O3BvcnQtaWRcJiMzNDssIFx1MDAyNnBvcnRfaWQpO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdGdvdG8gb3V0X3JlYWRfcHJvcF9mYWlsO1xuLVx0XHQvKiBmb3Igb2xkIGR0cywgd2UgbmVlZCB0byBjYWN1bGF0ZSB0aGUgcG9ydCBvZmZzZXQgKi9cbiYjNDM7XHRcdC8qIGZvciBvbGQgZHRzLCB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgcG9ydCBvZmZzZXQgKi9cbiBcdFx0cG9ydF9pZCA9IHBvcnRfaWQgXHUwMDNjIEhOU19TUlZfT0ZGU0VUID8gcG9ydF9pZCAmIzQzOyBITlNfREVCVUdfT0ZGU0VUXG4gXHRcdFx0OiBwb3J0X2lkIC0gSE5TX1NSVl9PRkZTRVQ7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tYWluLmNcbmluZGV4IGU2YWY5MzljMWMxOWIuLmJmMzVmNTVmNWI4ZmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWFpbi5jXG5AQCAtMTA1MjcsNyAmIzQzOzEwNTI3LDcgQEAgc3RhdGljIGludCBoY2xnZV9nZXRfbGlua19kaWFnbm9zaXNfaW5mbyhzdHJ1Y3QgaG5hZTNfaGFuZGxlICpoYW5kbGUsXG4gfVxuIFxuIC8qIEFmdGVyIGRpc2FibGUgc3Jpb3YsIFZGIHN0aWxsIGhhcyBzb21lIGNvbmZpZyBhbmQgaW5mbyBuZWVkIGNsZWFuLFxuLSAqIHdoaWNoIGNvbmZpZ2VkIGJ5IFBGLlxuJiM0MzsgKiB3aGljaCBjb25maWd1cmVkIGJ5IFBGLlxuICAqL1xuIHN0YXRpYyB2b2lkIGhjbGdlX2NsZWFyX3Zwb3J0X3ZmX2luZm8oc3RydWN0IGhjbGdlX3Zwb3J0ICp2cG9ydCwgaW50IHZmaWQpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV90bS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX3RtLmNcbmluZGV4IDAwYzNmMjU0OGJmNmIuLmJmNTMzYjhmNDZhZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfdG0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX3RtLmNcbkBAIC0zNSw3ICYjNDM7MzUsNyBAQCBlbnVtIGhjbGdlX3NoYXBlcl9sZXZlbCB7XG4gICogSVIoTWJwcykgPSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAqICBDTE9DSygxMDAwTWJwcylcbiAgKlx0XHRUaWNrICogKDIgXiBJUl9zKVxuICAqXG4tICogQHJldHVybjogMDogY2FsY3VsYXRlIHN1Y2Vzc2Z1bCwgbmVnYXRpdmU6IGZhaWxcbiYjNDM7ICogQHJldHVybjogMDogY2FsY3VsYXRlIHN1Y2Nlc3NmdWwsIG5lZ2F0aXZlOiBmYWlsXG4gICovXG4gc3RhdGljIGludCBoY2xnZV9zaGFwZXJfcGFyYV9jYWxjKHUzMiBpciwgdTggc2hhcGVyX2xldmVsLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgaGNsZ2Vfc2hhcGVyX2lyX3BhcmEgKmlyX3BhcmEsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jXG5pbmRleCAwNjNhNjkyYzJiNDFlLi41ZDE0ZDI5YjAyOTY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzdmYvaGNsZ2V2Zl9tYWluLmNcbkBAIC0xODgwLDcgJiM0MzsxODgwLDcgQEAgc3RhdGljIHZvaWQgaGNsZ2V2Zl9yZXNldF9zZXJ2aWNlX3Rhc2soc3RydWN0IGhjbGdldmZfZGV2ICpoZGV2KVxuIFx0XHQgKiBmcm9tIFBGIGFzIGNtZHEgd291bGQgYmUgaW4gdW5yZWxpYWJsZSBzdGF0ZSBpLmUuIG1haWxib3hcbiBcdFx0ICogY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFBGIGFuZCBWRiB3b3VsZCBiZSBicm9rZW4uXG4gXHRcdCAqXG4tXHRcdCAqIGlmIHdlIGFyZSBuZXZlciBnZXRpbmcgaW50byBwZW5kaW5nIHN0YXRlIGl0IG1lYW5zIGVpdGhlcjpcbiYjNDM7XHRcdCAqIGlmIHdlIGFyZSBuZXZlciBnZXR0aW5nIGludG8gcGVuZGluZyBzdGF0ZSBpdCBtZWFucyBlaXRoZXI6XG4gXHRcdCAqIDEuIFBGIGlzIG5vdCByZWNlaXZpbmcgb3VyIHJlcXVlc3Qgd2hpY2ggY291bGQgYmUgZHVlIHRvIElNUFxuIFx0XHQgKiAgICByZXNldFxuIFx0XHQgKiAyLiBQRiBpcyBzY3Jld2VkXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oXG5pbmRleCAwNjFmY2Q0NDRkNTAzLi4zZWQ1NjcwZjAxYzI1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyLmhcbkBAIC03MjksNyAmIzQzOzcyOSw3IEBAXG4gI2RlZmluZSBNVlBQMl9NQVhfVFhRXHRcdFx0OFxuIFxuIC8qIE1WUFAyX01BWF9UU09fU0VHUyBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhZ21lbnRzIHRvIGFsbG93IGluIHRoZSBHU09cbi0gKiBza2IuIEFzIHdlIG5lZWQgYSBtYXhpdW0gb2YgdHdvIGRlc2NyaXB0b3JzIHBlciBmcmFnbWVudHMgKDEgaGVhZGVyLCAxIGRhdGEpLFxuJiM0MzsgKiBza2IuIEFzIHdlIG5lZWQgYSBtYXhpbXVtIG9mIHR3byBkZXNjcmlwdG9ycyBwZXIgZnJhZ21lbnRzICgxIGhlYWRlciwgMSBkYXRhKSxcbiAgKiBtdWx0aXBseSB0aGlzIHZhbHVlIGJ5IHR3byB0byBjb3VudCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2tiIGRlc2NzIG5lZWRlZC5cbiAgKi9cbiAjZGVmaW5lIE1WUFAyX01BWF9UU09fU0VHU1x0XHQzMDBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX3Bycy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9wcnMuY1xuaW5kZXggOTNlOTc4YmRmMzAzYy4uYWQ2NzdjZmRkYjRkNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfcHJzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfcHJzLmNcbkBAIC0zODIsNyAmIzQzOzM4Miw3IEBAIHN0YXRpYyBpbnQgbXZwcDJfcHJzX2Zsb3dfZmluZChzdHJ1Y3QgbXZwcDIgKnByaXYsIGludCBmbG93KVxuIFx0c3RydWN0IG12cHAyX3Byc19lbnRyeSBwZTtcbiBcdGludCB0aWQ7XG4gXG4tXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyB3aXRoIE1WUFAyX1BSU19MVV9GTE9XUyAqL1xuJiM0MztcdC8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRyaWVzIHdpdGggTVZQUDJfUFJTX0xVX0ZMT1dTICovXG4gXHRmb3IgKHRpZCA9IE1WUFAyX1BSU19UQ0FNX1NSQU1fU0laRSAtIDE7IHRpZCBcdTAwM2U9IDA7IHRpZC0tKSB7XG4gXHRcdHU4IGJpdHM7XG4gXG5AQCAtMTIxMiw3ICYjNDM7MTIxMiw3IEBAIHN0YXRpYyB2b2lkIG12cHAyX3Byc19taF9pbml0KHN0cnVjdCBtdnBwMiAqcHJpdilcbiBcdG12cHAyX3Byc19od193cml0ZShwcml2LCBcdTAwMjZwZSk7XG4gfVxuIFxuLS8qIFNldCBkZWZhdWx0IGVudGlyZXMgKHBsYWNlIGhvbGRlcikgZm9yIHByb21pc2N1b3VzLCBub24tcHJvbWlzY3VvdXMgYW5kXG4mIzQzOy8qIFNldCBkZWZhdWx0IGVudHJpZXMgKHBsYWNlIGhvbGRlcikgZm9yIHByb21pc2N1b3VzLCBub24tcHJvbWlzY3VvdXMgYW5kXG4gICogbXVsdGljYXN0IE1BQyBhZGRyZXNzZXNcbiAgKi9cbiBzdGF0aWMgdm9pZCBtdnBwMl9wcnNfbWFjX2luaXQoc3RydWN0IG12cHAyICpwcml2KVxuQEAgLTIyNDEsNyAmIzQzOzIyNDEsNyBAQCBtdnBwMl9wcnNfbWFjX2RhX3JhbmdlX2ZpbmQoc3RydWN0IG12cHAyICpwcml2LCBpbnQgcG1hcCwgY29uc3QgdTggKmRhLFxuIFx0c3RydWN0IG12cHAyX3Byc19lbnRyeSBwZTtcbiBcdGludCB0aWQ7XG4gXG4tXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyB3aXRoIE1WUFAyX1BSU19MVV9NQUMgKi9cbiYjNDM7XHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50cmllcyB3aXRoIE1WUFAyX1BSU19MVV9NQUMgKi9cbiBcdGZvciAodGlkID0gTVZQUDJfUEVfTUFDX1JBTkdFX1NUQVJUO1xuIFx0ICAgICB0aWQgXHUwMDNjPSBNVlBQMl9QRV9NQUNfUkFOR0VfRU5EOyB0aWQmIzQzOyYjNDM7KSB7XG4gXHRcdHVuc2lnbmVkIGludCBlbnRyeV9wbWFwO1xuQEAgLTI1MzksNyAmIzQzOzI1MzksNyBAQCBpbnQgbXZwcDJfcHJzX2RlZl9mbG93KHN0cnVjdCBtdnBwMl9wb3J0ICpwb3J0KVxuIFxuIFx0LyogU3VjaCBlbnRyeSBub3QgZXhpc3QgKi9cbiBcdGlmICh0aWQgXHUwMDNjIDApIHtcbi1cdFx0LyogR28gdGhyb3VnaCB0aGUgYWxsIGVudGlyZXMgZnJvbSBsYXN0IHRvIGZpcnN0ICovXG4mIzQzO1x0XHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50cmllcyBmcm9tIGxhc3QgdG8gZmlyc3QgKi9cbiBcdFx0dGlkID0gbXZwcDJfcHJzX3RjYW1fZmlyc3RfZnJlZShwb3J0LVx1MDAzZXByaXYsXG4gXHRcdFx0XHRcdFx0TVZQUDJfUEVfTEFTVF9GUkVFX1RJRCxcbiBcdFx0XHRcdFx0ICAgICAgIE1WUFAyX1BFX0ZJUlNUX0ZSRUVfVElEKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL25wYy5oXG5pbmRleCA3MTliMzYxOGVlYjUyLi4zMDkyNDRmZTg3NTQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbnBjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL25wYy5oXG5AQCAtODQsNyAmIzQzOzg0LDcgQEAgZW51bSBucGNfa3B1X2xjX2x0eXBlIHtcbiBcdE5QQ19MVF9MQ19DVVNUT00xID0gMHhGLFxuIH07XG4gXG4tLyogRG9uJiMzOTt0IG1vZGlmeSBMdHlwZXMgdXB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbFxuJiM0MzsvKiBEb24mIzM5O3QgbW9kaWZ5IEx0eXBlcyB1cCB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbFxuICAqIGVmZmVjdCBmbG93IHRhZyBjYWxjdWxhdGlvbiBhbmQgdGh1cyBSU1MuXG4gICovXG4gZW51bSBucGNfa3B1X2xkX2x0eXBlIHtcbkBAIC0xNDAsNyAmIzQzOzE0MCw3IEBAIGVudW0gbnBjX2twdV9sZ19sdHlwZSB7XG4gXHROUENfTFRfTEdfQ1VTVE9NMSA9IDB4RixcbiB9O1xuIFxuLS8qIERvbiYjMzk7dCBtb2RpZnkgTHR5cGVzIHVwdG8gU0NUUCwgb3RoZXJ3aXNlIGl0IHdpbGxcbiYjNDM7LyogRG9uJiMzOTt0IG1vZGlmeSBMdHlwZXMgdXAgdG8gU0NUUCwgb3RoZXJ3aXNlIGl0IHdpbGxcbiAgKiBlZmZlY3QgZmxvdyB0YWcgY2FsY3VsYXRpb24gYW5kIHRodXMgUlNTLlxuICAqL1xuIGVudW0gbnBjX2twdV9saF9sdHlwZSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG5pbmRleCAxNTNlYjU3YmFkMDY3Li5kODBkMmMwMGJkODQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbkBAIC00OTc0LDcgJiM0Mzs0OTc0LDcgQEAgc3RhdGljIHZvaWQgcnZ1X25peF9zZXR1cF9jYXBhYmlsaXRpZXMoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkcilcbiBcbiBcdC8qIE9uIE9jdGVvblR4MiBEV1JSIHF1YW50dW0gaXMgZGlyZWN0bHkgY29uZmlndXJlZCBpbnRvIGVhY2ggb2ZcbiBcdCAqIHRoZSB0cmFuc21pdCBzY2hlZHVsZXIgcXVldWVzLiBBbmQgUEYvVkYgZHJpdmVycyB3ZXJlIGZyZWUgdG9cbi1cdCAqIGNvbmZpZyBhbnkgdmFsdWUgdXB0byAyXjI0LlxuJiM0MztcdCAqIGNvbmZpZyBhbnkgdmFsdWUgdXAgdG8gMl4yNC5cbiBcdCAqIE9uIENOMTBLLCBIVyBpcyBtb2RpZmllZCwgdGhlIHF1YW50dW0gY29uZmlndXJhdGlvbiBhdCBzY2hlZHVsZXJcbiBcdCAqIHF1ZXVlcyBpcyBpbiB0ZXJtcyBvZiB3ZWlnaHQuIEFuZCBTVyBuZWVkcyB0byBzZXR1cCBhIGJhc2UgRFdSUiBNVFVcbiBcdCAqIGF0IE5JWF9BRl9EV1JSX1JQTV9NVFUgLyBOSVhfQUZfRFdSUl9TRFBfTVRVLiBIVyB3aWxsIGRvXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuY1xuaW5kZXggM2UxYmYyMmNiYTY5Yy4uZjk4ZWY1NDMxYzkwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuY1xuQEAgLTMwMSw3ICYjNDM7MzAxLDcgQEAgc3RhdGljIHZvaWQgY24xMGtfZ2V0X2luZ3Jlc3NfcmF0ZV9jZmcodTY0IHJhdGUsIHUzMiAqcmF0ZV9leHAsXG4gXHQgKiBwb2xpY2VyIHRpbWV1bml0ICogMl5yZGl2IGllIDIgKiAyXnJkaXYgdXNlY3MsIHRvIHRoZSB0b2tlbiBidWNrZXQuXG4gXHQgKiBIZXJlIHBvbGljZXIgdGltZXVuaXQgaXMgMiB1c2VjcyBhbmQgcmF0ZSBpcyBpbiBiaXRzIHBlciBzZWMuXG4gXHQgKiBTaW5jZSBmbG9hdGluZyBwb2ludCBjYW5ub3QgYmUgdXNlZCBiZWxvdyBhbGdvcml0aG0gdXNlcyAxMDAwMDAwXG4tXHQgKiBzY2FsZSBmYWN0b3IgdG8gc3VwcG9ydCByYXRlcyB1cHRvIDEwMEdicHMuXG4mIzQzO1x0ICogc2NhbGUgZmFjdG9yIHRvIHN1cHBvcnQgcmF0ZXMgdXAgdG8gMTAwR2Jwcy5cbiBcdCAqL1xuIFx0dG1wID0gcmF0ZSAqIDMyICogMjtcbiBcdGlmICh0bXAgXHUwMDNjIDI1NjAwMDAwMCkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2RjYm5sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9kY2JubC5jXG5pbmRleCBmMTEwZGZhNDIzNjA1Li45MWQzNDZkMTE0YWY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZGNibmwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZGNibmwuY1xuQEAgLTY3LDcgJiM0Mzs2Nyw3IEBAIHN0YXRpYyBpbnQgb3R4Ml9wZmNfdHhzY2hxX2FsbG9jX29uZShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHU4IHByaW8pXG4gXHRpZiAoIXJlcSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHQvKiBSZXF1ZXN0IG9uZSBzY2hxIHBlciBsZXZlbCB1cHRvIG1heCBsZXZlbCBhcyBjb25maWd1cmVkXG4mIzQzO1x0LyogUmVxdWVzdCBvbmUgc2NocSBwZXIgbGV2ZWwgdXAgdG8gbWF4IGxldmVsIGFzIGNvbmZpZ3VyZWRcbiBcdCAqIGxpbmsgY29uZmlnIGxldmVsLiBUaGVzZSByZXN0IG9mIHRoZSBzY2hlZHVsZXIgY2FuIGJlXG4gXHQgKiBzYW1lIGFzIGh3LnR4c2NocV9saXN0LlxuIFx0ICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguY1xuaW5kZXggYmJiYmJiYTYzZTE1ZC4uMjM3MGIyZGRiYTZiNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguY1xuQEAgLTUxNCw3ICYjNDM7NTE0LDcgQEAgc3RhdGljIGludCBhZGRfZGVsX2hhc2hfZW50cnkoc3RydWN0IHB4YTE2OF9ldGhfcHJpdmF0ZSAqcGVwLFxuIC8qXG4gICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAqICBDcmVhdGUgYW4gYWRkcmVzc1RhYmxlIGVudHJ5IGZyb20gTUFDIGFkZHJlc3MgaW5mb1xuLSAqICBmb3VuZCBpbiB0aGUgc3BlY2lmZWQgbmV0X2RldmljZSBzdHJ1Y3RcbiYjNDM7ICogIGZvdW5kIGluIHRoZSBzcGVjaWZpZWQgbmV0X2RldmljZSBzdHJ1Y3RcbiAgKlxuICAqICBJbnB1dCA6IHBvaW50ZXIgdG8gZXRoZXJuZXQgaW50ZXJmYWNlIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZVxuICAqICBPdXRwdXQgOiBOL0FcbkBAIC04MDYsNyAmIzQzOzgwNiw3IEBAIHN0YXRpYyBpbnQgcnhxX3Byb2Nlc3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGJ1ZGdldClcbiBcdFx0c3RhdHMtXHUwMDNlcnhfYnl0ZXMgJiM0Mzs9IHJ4X2Rlc2MtXHUwMDNlYnl0ZV9jbnQ7XG4gXHRcdC8qXG4gXHRcdCAqIEluIGNhc2UgcmVjZWl2ZWQgYSBwYWNrZXQgd2l0aG91dCBmaXJzdCAvIGxhc3QgYml0cyBvbiBPUlxuLVx0XHQgKiB0aGUgZXJyb3Igc3VtbWFyeSBiaXQgaXMgb24sIHRoZSBwYWNrZXRzIG5lZWRzIHRvIGJlIGRyb3BlZC5cbiYjNDM7XHRcdCAqIHRoZSBlcnJvciBzdW1tYXJ5IGJpdCBpcyBvbiwgdGhlIHBhY2tldHMgbmVlZHMgdG8gYmUgZHJvcHBlZC5cbiBcdFx0ICovXG4gXHRcdGlmICgoKGNtZF9zdHMgXHUwMDI2IChSWF9GSVJTVF9ERVNDIHwgUlhfTEFTVF9ERVNDKSkgIT1cbiBcdFx0ICAgICAoUlhfRklSU1RfREVTQyB8IFJYX0xBU1RfREVTQykpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jXG5pbmRleCBmZWY0YjJiMGIxZjI2Li43OWQ2YTgxOWJmOTA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfY3R4LmNcbkBAIC0xNyw3ICYjNDM7MTcsNyBAQCBuZXR4ZW5fcG9sbF9yc3Aoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKVxuIFx0aW50XHR0aW1lb3V0ID0gMDtcbiBcbiBcdGRvIHtcbi1cdFx0LyogZ2l2ZSBhdGxlYXN0IDFtcyBmb3IgZmlybXdhcmUgdG8gcmVzcG9uZCAqL1xuJiM0MztcdFx0LyogZ2l2ZSBhdCBsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi9cbiBcdFx0bXNsZWVwKDEpO1xuIFxuIFx0XHRpZiAoJiM0MzsmIzQzO3RpbWVvdXQgXHUwMDNlIE5YX09TX0NSQl9SRVRSWV9DT1VOVClcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9jeHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2N4dC5jXG5pbmRleCBiNzAyNjJlNzBiYWY2Li44OWI5NDdmODJjZjAwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfY3h0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2N4dC5jXG5AQCAtNTYxLDcgJiM0Mzs1NjEsNyBAQCBpbnQgcWVkX2N4dF9jZmdfaWx0X2NvbXB1dGUoc3RydWN0IHFlZF9od2ZuICpwX2h3Zm4sIHUzMiAqbGluZV9jb3VudClcbiBcdFx0XHQgKiAgICAgIGJsb2NrIGluIHRoZSBJTFQgY2xpZW50LiBUaGlzIGlzIGxhdGVyIHVzZWQgdG9cbiBcdFx0XHQgKiAgICAgIGNvbmZpZ3VyZSB0aGUgQ0RVIHNlZ21lbnQgb2Zmc2V0IHJlZ2lzdGVycyBhbmRcbiBcdFx0XHQgKiAgICAgIHJlc3VsdHMgaW4gYW4gRkwgY29tbWFuZCBmb3IgVElEcyBvZiB0aGlzXG4tXHRcdFx0ICogICAgICBzZWdlbWVudCBiZWhhdmVzIGFzIHJlZ3VsYXIgbG9hZCBjb21tYW5kc1xuJiM0MztcdFx0XHQgKiAgICAgIHNlZ21lbnQgYmVoYXZlcyBhcyByZWd1bGFyIGxvYWQgY29tbWFuZHNcbiBcdFx0XHQgKiAgICAgIChsb2FkaW5nIFRJRHMgZnJvbSB0aGUgd29ya2luZyBtZW1vcnkpLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGxpbmUgPSBwX2NsaS1cdTAwM2VwZl9ibGtzW0NEVVRfU0VHX0JMSyhpKV0uc3RhcnRfbGluZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9tY3AuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oXG5pbmRleCA5YmQwNTY1ZmU4YWJjLi41MDY5OWQ2MDBiOGUzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfbWNwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oXG5AQCAtNzgzLDcgJiM0Mzs3ODMsNyBAQCBzdHJ1Y3QgcWVkX21jcF9pbmZvIHtcbiBcdHUxNlx0XHRcdFx0XHRtZndfbWJfbGVuZ3RoO1xuIFx0dTMyXHRcdFx0XHRcdG1jcF9oaXN0O1xuIFxuLVx0LyogQ2FwYWJpbHRpZXMgbmVnb3RpYXRlZCB3aXRoIHRoZSBNRlcgKi9cbiYjNDM7XHQvKiBDYXBhYmlsaXRpZXMgbmVnb3RpYXRlZCB3aXRoIHRoZSBNRlcgKi9cbiBcdHUzMlx0XHRcdFx0XHRjYXBhYmlsaXRpZXM7XG4gXG4gXHQvKiBTL04gZm9yIGRlYnVnIGRhdGEgbWFpbGJveCBjb21tYW5kcyAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pYy5oXG5pbmRleCBkN2M4ZmFkYjQ5ZGUxLi45NzI4ZDU4M2I4OTE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWMuaFxuQEAgLTkwOSw3ICYjNDM7OTA5LDcgQEAgc3RydWN0IHFsY25pY19tYWNfdmxhbl9saXN0IHtcbiBcbiAjZGVmaW5lIFFMQ05JQ19MUk9fUkVRVUVTVF9DTEVBTlVQXHQ0XG4gXG4tLyogQ2FwYWJpbGl0ZXMgcmVjZWl2ZWQgKi9cbiYjNDM7LyogQ2FwYWJpbGl0aWVzIHJlY2VpdmVkICovXG4gI2RlZmluZSBRTENOSUNfRldfQ0FQQUJJTElUWV9UU09cdFx0QklUXzFcbiAjZGVmaW5lIFFMQ05JQ19GV19DQVBBQklMSVRZX0JER1x0XHRCSVRfOFxuICNkZWZpbmUgUUxDTklDX0ZXX0NBUEFCSUxJVFlfRlZMQU5UWFx0XHRCSVRfOVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcbmluZGV4IDQ3Y2Q5ZWM2NjVlZWIuLmZmMzM3YTkxNzI0M2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcbkBAIC0xOTU3LDkgJiM0MzsxOTU3LDkgQEAgc3RhdGljIHZvaWQgcWxjbmljXzgzeHhfdGVtcGxhdGVfZW5kKHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqcF9kZXYpXG4gKiBxbGNuaWNfODN4eF9leGVjX3RlbXBsYXRlX2NtZFxuICpcbiAqIEBwX2RldjogYWRhcHRlciBzdHJ1Y3R1cmVcbi0qIEBwX2J1ZmY6IFBvaXRlciB0byBpbnN0cnVjdGlvbiB0ZW1wbGF0ZVxuJiM0MzsqIEBwX2J1ZmY6IFBvaW50ZXIgdG8gaW5zdHJ1Y3Rpb24gdGVtcGxhdGVcbiAqXG4tKiBUZW1wbGF0ZSBwcm92aWRlcyBpbnN0cnVjdGlvbnMgdG8gc3RvcCwgcmVzdGFydCBhbmQgaW5pdGFsaXplIGZpcm13YXJlLlxuJiM0MzsqIFRlbXBsYXRlIHByb3ZpZGVzIGluc3RydWN0aW9ucyB0byBzdG9wLCByZXN0YXJ0IGFuZCBpbml0aWFsaXplIGZpcm13YXJlLlxuICogVGhlc2UgaW5zdHJ1Y3Rpb25zIGFyZSBhYnN0cmFjdGVkIGFzIGEgc2VyaWVzIG9mIHJlYWQsIHdyaXRlIGFuZFxuICogcG9sbCBvcGVyYXRpb25zIG9uIGhhcmR3YXJlIHJlZ2lzdGVycy4gUmVnaXN0ZXIgaW5mb3JtYXRpb24gYW5kIG9wZXJhdGlvblxuICogc3BlY2lmaWNzIGFyZSBub3QgZXhwb3NlZCB0byB0aGUgZHJpdmVyLiBEcml2ZXIgcmVhZHMgdGhlIHRlbXBsYXRlIGZyb21cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19jdHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX2N0eC5jXG5pbmRleCBlYjgyN2I4NmVjYWU4Li4xYjk0YzQyZDY2OWIzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX2N0eC5jXG5AQCAtOTUsNyAmIzQzOzk1LDcgQEAgcWxjbmljX3BvbGxfcnNwKHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqYWRhcHRlcilcbiBcdGludCB0aW1lb3V0ID0gMCwgZXJyID0gMDtcbiBcbiBcdGRvIHtcbi1cdFx0LyogZ2l2ZSBhdGxlYXN0IDFtcyBmb3IgZmlybXdhcmUgdG8gcmVzcG9uZCAqL1xuJiM0MztcdFx0LyogZ2l2ZSBhdCBsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi9cbiBcdFx0bWRlbGF5KDEpO1xuIFxuIFx0XHRpZiAoJiM0MzsmIzQzO3RpbWVvdXQgXHUwMDNlIFFMQ05JQ19PU19DUkJfUkVUUllfQ09VTlQpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jXG5pbmRleCBmZjRmN2NkMjBjNzkxLi4yM2FlNzZjYTgxZGJlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmNcbkBAIC02NDAsNyAmIzQzOzY0MCw3IEBAIHN0YXRpYyBpbnQgcWxjbmljX21heF9yaW5ncyhzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHJpbmdfY250LFxuIFxuIHZvaWQgcWxjbmljX3NldF90eF9yaW5nX2NvdW50KHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqYWRhcHRlciwgdTggdHhfY250KVxuIHtcbi1cdC8qIDgzeHggYWRhcHRlciBkb2VzIG5vdCBoYXZlIG1heF90eF9yaW5ncyBpbnRpYWxpemVkIGluIHByb2JlICovXG4mIzQzO1x0LyogODN4eCBhZGFwdGVyIGRvZXMgbm90IGhhdmUgbWF4X3R4X3JpbmdzIGluaXRpYWxpemVkIGluIHByb2JlICovXG4gXHRpZiAoYWRhcHRlci1cdTAwM2VtYXhfdHhfcmluZ3MpXG4gXHRcdGFkYXB0ZXItXHUwMDNlZHJ2X3R4X3JpbmdzID0gcWxjbmljX21heF9yaW5ncyhhZGFwdGVyLCB0eF9jbnQsXG4gXHRcdFx0XHRcdFx0XHQgUUxDTklDX1RYX1FVRVVFKTtcbkBAIC02NTAsNyAmIzQzOzY1MCw3IEBAIHZvaWQgcWxjbmljX3NldF90eF9yaW5nX2NvdW50KHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqYWRhcHRlciwgdTggdHhfY250KVxuIFxuIHZvaWQgcWxjbmljX3NldF9zZHNfcmluZ19jb3VudChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHJ4X2NudClcbiB7XG4tXHQvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfc2RzX3JpbmdzIGludGlhbGl6ZWQgaW4gcHJvYmUgKi9cbiYjNDM7XHQvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfc2RzX3JpbmdzIGluaXRpYWxpemVkIGluIHByb2JlICovXG4gXHRpZiAoYWRhcHRlci1cdTAwM2VtYXhfc2RzX3JpbmdzKVxuIFx0XHRhZGFwdGVyLVx1MDAzZWRydl9zZHNfcmluZ3MgPSBxbGNuaWNfbWF4X3JpbmdzKGFkYXB0ZXIsIHJ4X2NudCxcbiBcdFx0XHRcdFx0XHRcdCAgUUxDTklDX1JYX1FVRVVFKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmNcbmluZGV4IDRlZWEzNDA4MDM0YmUuLmI3MjJhMTk1ZDgzMWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9jZm0uY1xuQEAgLTE3LDcgJiM0MzsxNyw3IEBAXG4gKi9cbiBcbiAvKlxuLSAqXHRIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uXG4mIzQzOyAqXHRIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWVudGF0aW9uXG4gICpcdFRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgU01UIGZ1bmN0aW9ucyBhcmUgcmVmZXJlbmNlZCA6XG4gICpcbiAgKlx0XHRxdWV1ZV9ldmVudCgpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jXG5pbmRleCAyZjVmNWYyNmJiNDM0Li5lNDE4YWI2NWNiNjExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZWNtLmNcbkBAIC0xNyw3ICYjNDM7MTcsNyBAQFxuICovXG4gXG4gLypcbi0gKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uXG4mIzQzOyAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtZW50YXRpb25cbiAgKiBUaGUgZm9sbG93aW5nIGV4dGVybmFsIFNNVCBmdW5jdGlvbnMgYXJlIHJlZmVyZW5jZWQgOlxuICAqXG4gICogXHRcdHF1ZXVlX2V2ZW50KClcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZnBsdXN0bS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uY1xuaW5kZXggMDM2MDYyMzc2YzA2Ni4uMGQ0MjAxMzQ1ZjliZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmNcbkBAIC0xNTAsNyAmIzQzOzE1MCw3IEBAIHN0YXRpYyB1X2xvbmcgcmVhZF9tZHIoc3RydWN0IHNfc21jICpzbWMsIHVuc2lnbmVkIGludCBhZGRyKVxuIFx0Q0hFQ0tfTlBQKCkgO1xuIFx0TUFSUihhZGRyKSA7XG4gXHRvdXRwdyhGTV9BKEZNX0NNRFJFRzEpLEZNX0lSTUVNV08pIDtcbi1cdENIRUNLX05QUCgpIDtcdC8qIG5lZWRlZCBmb3IgUENJIHRvIHByZXZlbnQgZnJvbSB0aW1laW5nIHZpb2xhdGlvbnMgKi9cbiYjNDM7XHRDSEVDS19OUFAoKSA7XHQvKiBuZWVkZWQgZm9yIFBDSSB0byBwcmV2ZW50IGZyb20gdGltaW5nIHZpb2xhdGlvbnMgKi9cbiAvKlx0cCA9IE1EUlIoKSA7ICovXHQvKiBiYWQgcmVhZCB2YWx1ZXMgaWYgdGhlIHdvcmthcm91bmQgKi9cbiBcdFx0XHQvKiBzbWMtXHUwMDNlaHcubWNfZHVtbXkgPSAqKChzaG9ydCB2b2xhdGlsZSBmYXIgKikoYWRkcikpKSovXG4gXHRcdFx0LyogaXMgdXNlZCAqL1xuQEAgLTU3Miw3ICYjNDM7NTcyLDcgQEAgTm90ZVx0QWZ0ZXIgYW55IHJpbmcgb3BlcmF0aW9uYWwgY2hhbmdlIHRoZSB0cmFuc21pdCBjb21wbGV0ZVxuIFx0VGhlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50IG1vZHVsZSBtdXN0IGVuYWJsZVxuIFx0dGhlIHRyYW5zbWl0IGNvbXBsZXRlIGludGVycnVwdCBvZiBhIHF1ZXVlLFxuIFx0XHQtIHdoZW4gaXQgcXVldWVzIHRoZSBmaXJzdCBmcmFtZSxcbi1cdFx0ICBiZWNhdXNlIG9mIG5vIHRyYW5zbWl0IHJlc291cmNlcyBhcmUgYmVlaW5nXG4mIzQzO1x0XHQgIGJlY2F1c2Ugb2Ygbm8gdHJhbnNtaXQgcmVzb3VyY2VzIGFyZSBiZWluZ1xuIFx0XHQgIGF2YWlsYWJsZSBhbmRcbiBcdFx0LSB3aGVuIGl0IGVzY2FwZXMgZnJvbSB0aGUgZnVuY3Rpb24gbGxjX3Jlc3RhcnRfdHhcbiBcdFx0ICB3aGlsZSBzb21lIGZyYW1lcyBhcmUgc3RpbGwgcXVldWVkLlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL2h3bXRtLmggYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9od210bS5oXG5pbmRleCBlOTdkYjgyNmNkZDQ1Li4wYWI0OWNjMGE4YmRhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvaHdtdG0uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvaHdtdG0uaFxuQEAgLTExMyw3ICYjNDM7MTEzLDcgQEAgc3RydWN0IGh3X21vZHVsIHtcbiBcdHN0cnVjdFx0c19tYnVmX3Bvb2xcdG1idWZfcG9vbCA7XG4gXHRzdHJ1Y3RcdGh3bV9yXHRyIDtcbiBcbi1cdHVuaW9uIHNfZnBfZGVzY3Igdm9sYXRpbGUgKmRlc2NyX3AgOyAvKiBwb2ludHMgdG8gdGhlIGRlc3JpcHRvciBhcmVhICovXG4mIzQzO1x0dW5pb24gc19mcF9kZXNjciB2b2xhdGlsZSAqZGVzY3JfcCA7IC8qIHBvaW50cyB0byB0aGUgZGVzY3JpcHRvciBhcmVhICovXG4gXG4gXHR1X3Nob3J0IHBhc3NfU01UIDtcdFx0LyogcGFzcyBTTVQgZnJhbWVzICovXG4gXHR1X3Nob3J0IHBhc3NfTlNBIDtcdFx0LyogcGFzcyBhbGwgTlNBIGZyYW1lcyAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3NiYS5oIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvc2JhLmhcbmluZGV4IGYzMDMwMWZjZDAyMmMuLjdmZTk5YzEyZTIwMTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9zYmEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvc2JhLmhcbkBAIC05NCw3ICYjNDM7OTQsNyBAQCBzdHJ1Y3Qgc19zYmEge1xuIFx0bG9uZ1x0XHRtc2dfbWliX292IDtcdFx0LyogQ3VycmVudCBPdmVyaGVhZCBmb3IgdGhpcyBQYXRoKi9cbiBcdGxvbmdcdFx0bXNnX2NhdGVnb3J5IDtcdFx0LyogQ2F0ZWdvcnkgb2YgdGhlIEFsbG9jYXRpb24gKi9cbiBcdHVfbG9uZ1x0XHRtc2dfbWF4X3RfbmVnIDtcdFx0LyogbG9uZ2VzdCBUX05lZyBhY2NlcHRhYmxlICovXG4tXHR1X2xvbmdcdFx0bXNnX21pbl9zZWdfc2l6IDtcdC8qIG1pbmltdW0gc2VnZW1lbnQgc2l6ZSAqL1xuJiM0MztcdHVfbG9uZ1x0XHRtc2dfbWluX3NlZ19zaXogO1x0LyogbWluaW11bSBzZWdtZW50IHNpemUgKi9cbiBcdHN0cnVjdCBzbXRfaGVhZGVyXHQqc20gO1x0XHQvKiBwb2ludHMgdG8gdGhlIHJlYyBtZXNzYWdlICovXG4gXHRzdHJ1Y3QgZmRkaV9hZGRyXHQqbXNnX2FsbG9jX2FkZHIgO1x0LyogQWxsb2NhdGlvbiBBZGRyZXNzICovXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jXG5pbmRleCA5MGU4ZGY2ZDlhODhhLi43NDUyODVkNGQ2ZDJlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcGNtcGxjLmNcbkBAIC0xNiw3ICYjNDM7MTYsNyBAQFxuICovXG4gXG4gLypcbi0gKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uXG4mIzQzOyAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtZW50YXRpb25cbiAgKiBUaGUgZm9sbG93aW5nIGV4dGVybmFsIFNNVCBmdW5jdGlvbnMgYXJlIHJlZmVyZW5jZWQgOlxuICAqXG4gICogXHRcdHF1ZXVlX2V2ZW50KClcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmNcbmluZGV4IDMxNDYyMzY1MGE4NGIuLjU3MDgxMjRmMDVkMmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9ybXQuY1xuQEAgLTE2LDcgJiM0MzsxNiw3IEBAXG4gKi9cbiBcbiAvKlxuLSAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb25cbiYjNDM7ICogSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvblxuICAqIFRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgU01UIGZ1bmN0aW9ucyBhcmUgcmVmZXJlbmNlZCA6XG4gICpcbiAgKiBcdFx0cXVldWVfZXZlbnQoKVxuZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xuaW5kZXggMjYwNDYwZDUwZjU0Yy4uNGI2ZmU5YTQ3M2NiMyAxMDA2NDRcbi0tLSBhL25ldC9sbGMvbGxjX2Nvbm4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2xsYy9sbGNfY29ubi5jXG5AQCAtMTkzLDcgJiM0MzsxOTMsNyBAQCB2b2lkIGxsY19jb25uX3J0bl9wZHUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIH1cbiBcbiAvKipcbi0gKlx0bGxjX2Nvbm5fcmVzZW5kX2lfcGR1X2FzX2NtZCAtIHJlc2VuZCBhbGwgYWxsIHVuYWNrbm93bGVkZ2VkIEkgUERVc1xuJiM0MzsgKlx0bGxjX2Nvbm5fcmVzZW5kX2lfcGR1X2FzX2NtZCAtIHJlc2VuZCBhbGwgdW5hY2tub3dsZWRnZWQgSSBQRFVzXG4gICpcdEBzazogYWN0aXZlIGNvbm5lY3Rpb25cbiAgKlx0QG5yOiBOUlxuICAqXHRAZmlyc3RfcF9iaXQ6IHBfYml0IHZhbHVlIG9mIGZpcnN0IHBkdVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaFxuaW5kZXggM2VlZWVmZmI0MDA1Yi4uNjI5NGU0OWE0NmUwNCAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3hmcm1fcG9saWN5LnNoXG5AQCAtMjQyLDcgJiM0MzsyNDIsNyBAQCBjaGVja19leGNlcHRpb25zKClcbiBcdFx0ZWNobyBcJiMzNDtQQVNTOiBwaW5nIHRvIC4yNTQgYnlwYXNzZWQgaXBzZWMgdHVubmVsICgkbG9ncG9zdGZpeClcJiMzNDtcbiBcdGZpXG4gXG4tXHQjIHBpbmcgdG8gLjI1MyBzaG91bGQgdXNlIHVzZSBpcHNlYyBkdWUgdG8gZGlyZWN0IHBvbGljeSBleGNlcHRpb24uXG4mIzQzO1x0IyBwaW5nIHRvIC4yNTMgc2hvdWxkIHVzZSBpcHNlYyBkdWUgdG8gZGlyZWN0IHBvbGljeSBleGNlcHRpb24uXG4gXHRjaGVja194ZnJtIDEgMjUzXG4gXHRpZiBbICQ/IC1uZSAwIF07IHRoZW5cbiBcdFx0ZWNobyBcJiMzNDtGQUlMOiBleHBlY3RlZCBwaW5nIHRvIC4yNTMgdG8gdXNlIGlwc2VjIHR1bm5lbCAoJGxvZ3Bvc3RmaXgpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDU6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29udGFpbnMgZXhjbHVzaXZlbHkgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgd2l0aGluIGNvbW1lbnRzIGFjcm9zcyB2YXJpb3VzIG5ldHdvcmsgZHJpdmVycywgY29yZSBMTEMgY29kZSwgYW5kIGEgc2VsZnRlc3Qgc2NyaXB0LiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwNGI5Zjk1OTMxZDExNzlhMjhhNTRmMzU3YWM5YmM5Yjg5M2YxNTU4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgOCAwNTo1OTo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuaAppbmRleCBjNTY3YzkyMDYyOGYxLi44ZjAzYmI1NjFkNDQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5oCkBAIC02NTksNyAmIzQzOzY1OSw3IEBAIHZvaWQgYXRsMWNfcG9zdF9waHlfbGlua2NoZyhzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1MTYgbGlua19zcGVlZCk7CiAvKiBJTlQtdHJpZ2dsZS9TTUIgQ29udHJvbCBSZWdpc3RlciAqLwogI2RlZmluZSBSRUdfU01CX1NUQVRfVElNRVIJCTB4MTVDNAkvKiAydXMgcmVzb2x1dGlvbiAqLwogI2RlZmluZSBTTUJfU1RBVF9USU1FUl9NQVNLCQkweEZGRkZGRgotI2RlZmluZSBSRUdfVElOVF9UUERfVEhSRVNIICAgICAgICAgICAgIDB4MTVDOCAvKiB0cGQgdGggdG8gdHJpZyBpbnRycnVwdCAqLwomIzQzOyNkZWZpbmUgUkVHX1RJTlRfVFBEX1RIUkVTSCAgICAgICAgICAgICAweDE1QzggLyogdHBkIHRoIHRvIHRyaWcgaW50ZXJydXB0ICovCiAKIC8qIE1haWwgYm94ICovCiAjZGVmaW5lIE1CX1JGRFhfUFJPRF9JRFhfTUFTSwkJMHhGRkZGCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmgKaW5kZXggOWZjYWQ3ODNjOTM5YS4uNmIwMDY2ZjQ3ZTllNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaApAQCAtMzgxLDcgJiM0MzszODEsNyBAQCBzdHJ1Y3QgYXRsMWVfcnhfcGFnZSB7CiAJdTgJCSphZGRyOyAgIC8qIHJlY2VpdmUgcmFnZSB2aXJ0dWFsIGFkZHJlc3MgKi8KIAlkbWFfYWRkcl90CXdyaXRlX29mZnNldF9kbWE7ICAvKiB0aGUgRE1BIGFkZHJlc3Mgd2hpY2ggY29udGFpbiB0aGUKIAkJCQkJICAgICAgcmVjZWl2ZSBkYXRhIG9mZnNldCBpbiB0aGUgcGFnZSAqLwotCXUzMgkJKndyaXRlX29mZnNldF9hZGRyOyAvKiB0aGUgdmlydGF1bCBhZGRyZXNzIHdoaWNoIGNvbnRhaW4KJiM0MzsJdTMyCQkqd3JpdGVfb2Zmc2V0X2FkZHI7IC8qIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgd2hpY2ggY29udGFpbgogCQkJCQkgICAgIHRoZSByZWNlaXZlIGRhdGEgb2Zmc2V0IGluIHRoZSBwYWdlICovCiAJdTMyCQlyZWFkX29mZnNldDsgICAgICAgLyogdGhlIG9mZnNldCB3aGVyZSB3ZSBoYXZlIHJlYWQgKi8KIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2h3LmMKaW5kZXggZmE4OWJjMjdmNjJkZi4uMjVkM2U3NDY5MDU4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfaHcuYwpAQCAtMzY5LDcgJiM0MzszNjksNyBAQCBzdGF0aWMgaW50IGF0bDFlX3BoeV9zZXR1cF9hdXRvbmVnX2FkdihzdHJ1Y3QgYXRsMWVfaHcgKmh3KQogICoKICAqIGh3IC0gU3RydWN0IGNvbnRhaW5pbmcgdmFyaWFibGVzIGFjY2Vzc2VkIGJ5IHNoYXJlZCBjb2RlCiAgKgotICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgY29udHJvbCByZWdpc2VyIChmb3IgRjAwMSBidWcpCiYjNDM7ICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgY29udHJvbCByZWdpc3RlciAoZm9yIEYwMDEgYnVnKQogICovCiBpbnQgYXRsMWVfcGh5X2NvbW1pdChzdHJ1Y3QgYXRsMWVfaHcgKmh3KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uYwppbmRleCA0MDI5MDAyODU4MGJhLi5jYzZjMjYyODY4YTU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uYwpAQCAtMjExNyw3ICYjNDM7MjExNyw3IEBAIHN0YXRpYyBpbnQgYXRsMWVfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRlKQogCQkJd29sX2N0cmxfZGF0YSB8PSBXT0xfTUFHSUNfRU4gfCBXT0xfTUFHSUNfUE1FX0VOOwogCiAJCWlmICh3dWZjICZhbXA7IEFUX1dVRkNfTE5LQykgewotCQkvKiBpZiBvcmlnbmFsIGxpbmsgc3RhdHVzIGlzIGxpbmssIGp1c3Qgd2FpdCBmb3IgcmV0cml2ZSBsaW5rICovCiYjNDM7CQkvKiBpZiBvcmlnaW5hbCBsaW5rIHN0YXR1cyBpcyBsaW5rLCBqdXN0IHdhaXQgZm9yIHJldHJpZXZlIGxpbmsgKi8KIAkJCWlmIChtaWlfYm1zcl9kYXRhICZhbXA7IEJNU1JfTFNUQVRVUykgewogCQkJCWZvciAoaSA9IDA7IGkgJmx0OyBBVF9TVVNQRU5EX0xJTktfVElNRU9VVDsgaSYjNDM7JiM0MzspIHsKIAkJCQkJbXNsZWVwKDEwMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDEuYwppbmRleCA5OGE0ZDA4OTI3MGU0Li4xNzlkNzRlOTNlZmRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwxLmMKQEAgLTYyOCw3ICYjNDM7NjI4LDcgQEAgc3RhdGljIHMzMiBhdGwxX3BoeV9sZWF2ZV9wb3dlcl9zYXZpbmcoc3RydWN0IGF0bDFfaHcgKmh3KQogICogUmVzZXRzIHRoZSBQSFkgYW5kIG1ha2UgYWxsIGNvbmZpZyB2YWxpZGF0ZQogICogaHcgLSBTdHJ1Y3QgY29udGFpbmluZyB2YXJpYWJsZXMgYWNjZXNzZWQgYnkgc2hhcmVkIGNvZGUKICAqCi0gKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzZXIgKGZvciBGMDAxIGJ1ZykKJiM0MzsgKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzdGVyIChmb3IgRjAwMSBidWcpCiAgKi8KIHN0YXRpYyBzMzIgYXRsMV9waHlfcmVzZXQoc3RydWN0IGF0bDFfaHcgKmh3KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmMKaW5kZXggNTU2MGQ1Y2MzMTY5Mi4uYzlhY2EyMTllYzljZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jCkBAIC0yNTkxLDcgJiM0MzsyNTkxLDcgQEAgc3RhdGljIHMzMiBhdGwyX3BoeV9zZXR1cF9hdXRvbmVnX2FkdihzdHJ1Y3QgYXRsMl9odyAqaHcpCiAgKgogICogaHcgLSBTdHJ1Y3QgY29udGFpbmluZyB2YXJpYWJsZXMgYWNjZXNzZWQgYnkgc2hhcmVkIGNvZGUKICAqCi0gKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzZXIgKGZvciBGMDAxIGJ1ZykKJiM0MzsgKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzdGVyIChmb3IgRjAwMSBidWcpCiAgKi8KIHN0YXRpYyBzMzIgYXRsMl9waHlfY29tbWl0KHN0cnVjdCBhdGwyX2h3ICpodykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMKaW5kZXggN2VmMWJhYmZlY2E2OS4uZjY1OTVmZGM4ODhkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMKQEAgLTE1NjQsNyAmIzQzOzE1NjQsNyBAQCBzdGF0aWMgaW50IGJjbV9lbmV0X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIAlpZiAocHJpdi0mZ3Q7aGFzX3BoeSkgewogCQlpZiAoZWNtZC0mZ3Q7YXV0b25lZyAmYW1wOyZhbXA7IChlY21kLSZndDtyeF9wYXVzZSAhPSBlY21kLSZndDt0eF9wYXVzZSkpIHsKLQkJCS8qIGFzeW1ldHJpYyBwYXVzZSBtb2RlIG5vdCBzdXBwb3J0ZWQsCiYjNDM7CQkJLyogYXN5bW1ldHJpYyBwYXVzZSBtb2RlIG5vdCBzdXBwb3J0ZWQsCiAJCQkgKiBhY3R1YWxseSBwb3NzaWJsZSBidXQgaW50ZWdyYXRlZCBQSFkgaGFzIFJPCiAJCQkgKiBhc3ltX3BhdXNlIGJpdCAqLwogCQkJcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oCmluZGV4IDc4ZjE4MzBmYjNjYjUuLmJhOGY0MmNmNWZiMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oCkBAIC0yNjUsNyAmIzQzOzI2NSw3IEBAIHN0cnVjdCBiY21fZW5ldF9wcml2IHsKIAkvKiBudW1iZXIgb2YgYXZhaWxhYmxlIGRlc2NyaXB0b3IgZm9yIHR4ICovCiAJaW50IHR4X2Rlc2NfY291bnQ7CiAKLQkvKiBuZXh0IHR4IGRlc2NyaXB0b3IgYXZhaWFibGUgKi8KJiM0MzsJLyogbmV4dCB0eCBkZXNjcmlwdG9yIGF2YWlsYWJsZSAqLwogCWludCB0eF9jdXJyX2Rlc2M7CiAKIAkvKiBuZXh0IGRpcnR5IHR4IGRlc2NyaXB0b3IgdG8gcmVjbGFpbSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oCmluZGV4IGEzNDI5NmY5ODlmMTIuLjZmODA3ZTk2ZGJkOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmgKQEAgLTQwMiw3ICYjNDM7NDAyLDcgQEAgc3RydWN0IGJjbV9yc2IgewogI2RlZmluZSBURE1BX0RFU0NfUklOR19CQVNFKGkpCQkoVERNQV9ERVNDX1JJTkdfMDBfQkFTRSAmIzQzOyBcCiAJCQkJCSgoaSkgKiBURE1BX0RFU0NfUklOR19TSVpFKSkKIAotLyogUmluZyBpbmRleGVkIHJlZ2lzdGVyIGFkZHJlc2VzICovCiYjNDM7LyogUmluZyBpbmRleGVkIHJlZ2lzdGVyIGFkZHJlc3NlcyAqLwogI2RlZmluZSBURE1BX0RFU0NfUklOR19IRUFEX1RBSUxfUFRSKGkpCShURE1BX0RFU0NfUklOR19CQVNFKGkpICYjNDM7IFwKIAkJCQkJUklOR19IRUFEX1RBSUxfUFRSKQogI2RlZmluZSBURE1BX0RFU0NfUklOR19DT1VOVChpKQkJKFRETUFfREVTQ19SSU5HX0JBU0UoaSkgJiM0MzsgXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4LmgKaW5kZXggOTU4MGFiODNkMzg3Yy4uMjhlYTRhMzNmMjQ1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oCkBAIC0yODAsNyAmIzQzOzI4MCw3IEBAIGVudW0gewogICogKGRiX21zZ19zeiAxICZsdDsmbHQ7IDcgKiBjaWQgJiM0MzsgMHg0MCBEUE0gb2Zmc2V0KSBpdCBjYW4gY29tZSB1cCB3aXRoIGEgdmFsaWQgbnVtYmVyCiAgKiBXZSBtdXN0IGF2b2lkIGNvbWluZyB1cCB3aXRoIGNpZCA4IGZvciBpc2NzaSBzaW5jZSBhY2NvcmRpbmcgdG8gdGhpcyBtZXRob2QKICAqIHRoZSBkZXNpZ25hdGVkIFVJTyBjaWQgd2lsbCBjb21lIG91dCAwIGFuZCBpdCBoYXMgYSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGF0Ci0gKiBjYXNlIHdoaWNoIGRvZXNuJiMzOTt0IHN1aXQgdXMuIFRoZXJlZm9yZSB3aWxsIHdpbGwgY2llbGluZyB0byBjbG9zZXMgY2lkIHdoaWNoCiYjNDM7ICogY2FzZSB3aGljaCBkb2VzbiYjMzk7dCBzdWl0IHVzLiBUaGVyZWZvcmUgd2lsbCBjaWVsaW5nIHRvIGNsb3NlcyBjaWQgd2hpY2gKICAqIGhhcyBsZWFzdCBzaWduaWdpZmNhbnQgbmliYmxlIDggYW5kIGlmIGl0IGlzIDggd2Ugd2lsbCBtb3ZlIGZvcndhcmQgdG8gMHgxOC4KICAqLwogCkBAIC02NjYsNyAmIzQzOzY2Niw3IEBAIHN0cnVjdCBibngyeF9mYXN0cGF0aCB7CiAJCQkJIE1BWF9UWF9ERVNDX0NOVCAqIE5FWFRfUEFHRV9UWF9ERVNDX0NOVCkKIC8qIG1heCBCRHMgcGVyIHR4IHBhY2tldCB3L28gbmV4dF9wYWdlczoKICAqIFNUQVJUX0JECQktIGRlc2NyaWJlcyBwYWNrZWQKLSAqIFNUQVJUX0JEKHNwbGl0dGVkKQktIGluY2x1ZGVzIHVucGFnZWQgZGF0YSBzZWdtZW50IGZvciBHU08KJiM0MzsgKiBTVEFSVF9CRChzcGxpdCkJLSBpbmNsdWRlcyB1bnBhZ2VkIGRhdGEgc2VnbWVudCBmb3IgR1NPCiAgKiBQQVJTSU5HX0JECQktIGZvciBUU08gYW5kIENTVU0gZGF0YQogICogUEFSU0lOR19CRDIJCS0gZm9yIGVuY2Fwc3VsYXRpb24gZGF0YQogICogRnJhZyBCRHMJCS0gZGVzY3JpYmVzIHBhZ2VzIGZvciBmcmFncwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfZGNiLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuYwppbmRleCA5YWY4MTYzMGM4YTQ0Li4zZGY4YTU5ODg1MjE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuYwpAQCAtMTk4Niw3ICYjNDM7MTk4Niw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2RjYm5sX3NldF9wZ190Y2NmZ190eChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcHJpbywKIAkJcmV0dXJuOwogCiAJLyoqCi0JICogYndfcGN0IGlnbm9yZWQgLQliYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGV2aXNpb24gYmV0d2VlbiB1c2VyCiYjNDM7CSAqIGJ3X3BjdCBpZ25vcmVkIC0JYmFuZC13aWR0aCBwZXJjZW50YWdlIGRpdmlzaW9uIGJldHdlZW4gdXNlcgogCSAqCQkJcHJpb3JpdGllcyB3aXRoaW4gdGhlIHNhbWUgZ3JvdXAgaXMgbm90CiAJICoJCQlzdGFuZGFyZCBhbmQgaGVuY2Ugbm90IHN1cHBvcnRlZAogCSAqCkBAIC0yMDM4LDcgJiM0MzsyMDM4LDcgQEAgc3RhdGljIHZvaWQgYm54MnhfZGNibmxfZ2V0X3BnX3RjY2ZnX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwcmlvLAogCURQKEJOWDJYX01TR19EQ0IsICYjMzQ7cHJpbyA9ICVkXG4mIzM0OywgcHJpbyk7CiAKIAkvKioKLQkgKiBid19wY3QgaWdub3JlZCAtCWJhbmQtd2lkdGggcGVyY2VudGFnZSBkZXZpc2lvbiBiZXR3ZWVuIHVzZXIKJiM0MzsJICogYndfcGN0IGlnbm9yZWQgLQliYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGl2aXNpb24gYmV0d2VlbiB1c2VyCiAJICoJCQlwcmlvcml0aWVzIHdpdGhpbiB0aGUgc2FtZSBncm91cCBpcyBub3QKIAkgKgkJCXN0YW5kYXJkIGFuZCBoZW5jZSBub3Qgc3VwcG9ydGVkCiAJICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgKaW5kZXggNjExZWZlZTc1ODM0MC4uNTI5N2FiNTc4YTZmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgKQEAgLTIzNDIsNyAmIzQzOzIzNDIsNyBAQCBzdHJ1Y3Qgc2htZW0yX3JlZ2lvbiB7CiAJCXUzMiBvZW1faTJjX2RhdGFfYWRkcjsKIAl9OwogCi0JLyogOSBlbnRpcmVzIGZvciB0aGUgQzJTIFBDUCBtYXAgZm9yIGVhY2ggaW5uZXIgVkxBTiBQQ1AgJiM0MzsgMSBkZWZhdWx0ICovCiYjNDM7CS8qIDkgZW50cmllcyBmb3IgdGhlIEMyUyBQQ1AgbWFwIGZvciBlYWNoIGlubmVyIFZMQU4gUENQICYjNDM7IDEgZGVmYXVsdCAqLwogCS8qIEZvciBQQ1AgdmFsdWVzIDAtMyB1c2UgdGhlIG1hcCBsb3dlciAqLwogCS8qIDB4RkYwMDAwMDAgLSBQQ1AgMCwgMHgwMEZGMDAwMCAtIFBDUCAxLAogCSAqIDB4MDAwMEZGMDAgLSBQQ1AgMiwgMHgwMDAwMDBGRiBQQ1AgMwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmgKaW5kZXggZmM3ZmNlNjQyNjY2Yy4uYjUwMDRhYWIxMjRkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9pbml0X29wcy5oCkBAIC01ODIsNyAmIzQzOzU4Miw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2luaXRfcHhwX2FyYihzdHJ1Y3QgYm54MnggKmJwLCBpbnQgcl9vcmRlciwKIAkJUkVHX1dSKGJwLCBQWFAyX1JFR19XUl9DRFVfTVBTLCB2YWwpOwogCX0KIAotCS8qIFZhbGlkYXRlIG51bWJlciBvZiB0YWdzIHN1cHBvdGVkIGJ5IGRldmljZSAqLwomIzQzOwkvKiBWYWxpZGF0ZSBudW1iZXIgb2YgdGFncyBzdXBwb3J0ZWQgYnkgZGV2aWNlICovCiAjZGVmaW5lIFBDSUVfUkVHX1BDSUVSX1RMX0hEUl9GQ19TVAkJMHgyOTgwCiAJdmFsID0gUkVHX1JEKGJwLCBQQ0lFX1JFR19QQ0lFUl9UTF9IRFJfRkNfU1QpOwogCXZhbCAmYW1wOz0gMHhGRjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYwppbmRleCBlYTMxMDA1N2ZlM2FmLi44NGQwMDJiMzE5MjBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jCkBAIC0yNTM2LDcgJiM0MzsyNTM2LDcgQEAgc3RhdGljIGludCBibngyeF9wYmZfdXBkYXRlKHN0cnVjdCBsaW5rX3BhcmFtcyAqcGFyYW1zLCB1MzIgZmxvd19jdHJsLAogfQogCiAvKioKLSAqIGJueDJ4X2dldF9lbWFjX2Jhc2UgLSByZXRyaXZlIGVtYWMgYmFzZSBhZGRyZXNzCiYjNDM7ICogYm54MnhfZ2V0X2VtYWNfYmFzZSAtIHJldHJpZXZlIGVtYWMgYmFzZSBhZGRyZXNzCiAgKgogICogQGJwOgkJCWRyaXZlciBoYW5kbGUKICAqIEBtZGNfbWRpb19hY2Nlc3M6CWFjY2VzcyB0eXBlCkBAIC0zNTkzLDcgJiM0MzszNTkzLDcgQEAgc3RhdGljIHU4IGJueDJ4X2V4dF9waHlfcmVzb2x2ZV9mYyhzdHJ1Y3QgYm54MnhfcGh5ICpwaHksCiAJdTggcmV0ID0gMDsKIAl2YXJzLSZndDtmbG93X2N0cmwgPSBCTlgyWF9GTE9XX0NUUkxfTk9ORTsKIAlpZiAocGh5LSZndDtyZXFfZmxvd19jdHJsICE9IEJOWDJYX0ZMT1dfQ1RSTF9BVVRPKSB7Ci0JCS8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xlZCBvZiBMRC9MUCBpbiBBTiAqLwomIzQzOwkJLyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGxlZCBvZiBMRC9MUCBpbiBBTiAqLwogCQlpZiAocGh5LSZndDtyZXFfbGluZV9zcGVlZCA9PSBTUEVFRF9BVVRPX05FRykKIAkJCWJueDJ4X2V4dF9waHlfdXBkYXRlX2Fkdl9mYyhwaHksIHBhcmFtcywgdmFycyk7CiAJCS8qIEJ1dCBzZXQgdGhlIGZsb3ctY29udHJvbCByZXN1bHQgYXMgdGhlIHJlcXVlc3RlZCBvbmUgKi8KQEAgLTM3NDMsNyAmIzQzOzM3NDMsNyBAQCBzdGF0aWMgdm9pZCBibngyeF93YXJwY29yZV9lbmFibGVfQU5fS1Ioc3RydWN0IGJueDJ4X3BoeSAqcGh5LAogCQl7TURJT19XQ19ERVZBRCwgTURJT19XQ19SRUdfQ0w3Ml9VU0VSQjBfQ0w3Ml9UWF9GSVJfVEFQLCAwfSwKIAl9OwogCURQKE5FVElGX01TR19MSU5LLCAmIzM0O0VuYWJsZSBBdXRvIE5lZ290aWF0aW9uIGZvciBLUlxuJiMzNDspOwotCS8qIFNldCB0byBkZWZhdWx0IHJlZ2lzdGVycyB0aGF0IG1heSBiZSBvdmVycmlkZW4gYnkgMTBHIGZvcmNlICovCiYjNDM7CS8qIFNldCB0byBkZWZhdWx0IHJlZ2lzdGVycyB0aGF0IG1heSBiZSBvdmVycmlkZGVuIGJ5IDEwRyBmb3JjZSAqLwogCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKHJlZ19zZXQpOyBpJiM0MzsmIzQzOykKIAkJYm54MnhfY2w0NV93cml0ZShicCwgcGh5LCByZWdfc2V0W2ldLmRldmFkLCByZWdfc2V0W2ldLnJlZywKIAkJCQkgcmVnX3NldFtpXS52YWwpOwpAQCAtNTQyNSw3ICYjNDM7NTQyNSw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2Zsb3dfY3RybF9yZXNvbHZlKHN0cnVjdCBibngyeF9waHkgKnBoeSwKIAogCS8qIFJlc29sdmUgZnJvbSBncF9zdGF0dXMgaW4gY2FzZSBvZiBBTiBjb21wbGV0ZSBhbmQgbm90IHNnbWlpICovCiAJaWYgKHBoeS0mZ3Q7cmVxX2Zsb3dfY3RybCAhPSBCTlgyWF9GTE9XX0NUUkxfQVVUTykgewotCQkvKiBVcGRhdGUgdGhlIGFkdmVydGlzZWQgZmxvdy1jb250cm9sZWQgb2YgTEQvTFAgaW4gQU4gKi8KJiM0MzsJCS8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xsZWQgb2YgTEQvTFAgaW4gQU4gKi8KIAkJaWYgKHBoeS0mZ3Q7cmVxX2xpbmVfc3BlZWQgPT0gU1BFRURfQVVUT19ORUcpCiAJCQlibngyeF91cGRhdGVfYWR2X2ZjKHBoeSwgcGFyYW1zLCB2YXJzLCBncF9zdGF0dXMpOwogCQkvKiBCdXQgc2V0IHRoZSBmbG93LWNvbnRyb2wgcmVzdWx0IGFzIHRoZSByZXF1ZXN0ZWQgb25lICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMKaW5kZXggMzllYjZhYjVmODA1OC4uMjc3YzdiZDljNmU3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYwpAQCAtMTI2NjksNyAmIzQzOzEyNjY5LDcgQEAgc3RhdGljIGludCBibngyeF9zZXRfbWNfbGlzdChzdHJ1Y3QgYm54MnggKmJwKQogCQlpZiAocmMpCiAJCQlyZXR1cm4gcmM7CiAKLQkJLyogT3ZlcnJpZGUgdGhlIGN1cmVudGx5IGNvbmZpZ3VyZWQgc2V0IG9mIG1jIGZpbHRlcnMgKi8KJiM0MzsJCS8qIE92ZXJyaWRlIHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCBzZXQgb2YgbWMgZmlsdGVycyAqLwogCQlyYyA9IGJueDJ4X2NvbmZpZ19tY2FzdChicCwgJmFtcDtycGFyYW0sCiAJCQkJCUJOWDJYX01DQVNUX0NNRF9TRVQpOwogCQlpZiAocmMgJmx0OyAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaAppbmRleCBhMDE4ZjI1MWQxOTg2Li4zMDk0M2YzNDcxNjQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaApAQCAtMjIzNiw3ICYjNDM7MjIzNiw3IEBAIGV4dGVybiBjb25zdCB1MzIgZG1hZV9yZWdfZ29fY1tdOwogLyogW1JXIDFdIE91dHB1dCBlbmFibGUgZm9yIFRYIFBBVVNFIHNpZ25hbCB0byB0aGUgTUFDLiAqLwogI2RlZmluZSBOSUdfUkVHX1AwX01BQ19QQVVTRV9PVVRfRU4JCQkJIDB4MTg1YjQKIC8qIFtSVyAzMl0gRWlnaHQgNC1iaXQgY29uZmlndXJhdGlvbnMgZm9yIHNwZWNpZnlpbmcgd2hpY2ggQ09TICgwLTE1IGZvcgotICogZnV0dXJlIGV4cGFuc2lvbikgZWFjaCBwcmlvcnR5IGlzIHRvIGJlIG1hcHBlZCB0by4gQml0cyAzOjAgc3BlY2lmeSB0aGUKJiM0MzsgKiBmdXR1cmUgZXhwYW5zaW9uKSBlYWNoIHByaW9yaXR5IGlzIHRvIGJlIG1hcHBlZCB0by4gQml0cyAzOjAgc3BlY2lmeSB0aGUKICAqIENPUyBmb3IgcHJpb3JpdHkgMC4gQml0cyAzMToyOCBzcGVjaWZ5IHRoZSBDT1MgZm9yIHByaW9yaXR5IDcuIFRoZSAzLWJpdAogICogcHJpb3JpdHkgZmllbGQgaXMgZXh0cmFjdGVkIGZyb20gdGhlIG91dGVyLW1vc3QgVkxBTiBpbiByZWNlaXZlIHBhY2tldC4KICAqIE9ubHkgQ09TIDAgYW5kIENPUyAxIGFyZSBzdXBwb3J0ZWQgaW4gRTIuICovCkBAIC0yNDM0LDcgJiM0MzsyNDM0LDcgQEAgZXh0ZXJuIGNvbnN0IHUzMiBkbWFlX3JlZ19nb19jW107CiAvKiBbUlcgMV0gT3V0cHV0IGVuYWJsZSBmb3IgVFggUEFVU0Ugc2lnbmFsIHRvIHRoZSBNQUMuICovCiAjZGVmaW5lIE5JR19SRUdfUDFfTUFDX1BBVVNFX09VVF9FTgkJCQkgMHgxODVjOAogLyogW1JXIDMyXSBFaWdodCA0LWJpdCBjb25maWd1cmF0aW9ucyBmb3Igc3BlY2lmeWluZyB3aGljaCBDT1MgKDAtMTUgZm9yCi0gKiBmdXR1cmUgZXhwYW5zaW9uKSBlYWNoIHByaW9ydHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZQomIzQzOyAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3JpdHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZQogICogQ09TIGZvciBwcmlvcml0eSAwLiBCaXRzIDMxOjI4IHNwZWNpZnkgdGhlIENPUyBmb3IgcHJpb3JpdHkgNy4gVGhlIDMtYml0CiAgKiBwcmlvcml0eSBmaWVsZCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgb3V0ZXItbW9zdCBWTEFOIGluIHJlY2VpdmUgcGFja2V0LgogICogT25seSBDT1MgMCBhbmQgQ09TIDEgYXJlIHN1cHBvcnRlZCBpbiBFMi4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY242Nnh4X2RldmljZS5jCmluZGV4IDkzZmNjZmVjMjg4ZDQuLmQzZWJiYjQwNTc5ZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuNjZ4eF9kZXZpY2UuYwpAQCAtMTc3LDcgJiM0MzsxNzcsNyBAQCBzdGF0aWMgdm9pZCBsaW9fY242Nnh4X3NldHVwX3BrdF9jdGxfcmVncyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KQogCiAJLyogNjZYWCBTUEVDSUZJQyAqLwogCWlmIChDRkdfR0VUX09RX01BWF9RKGNuNnh4eC0mZ3Q7Y29uZikgJmx0Oz0gNCkKLQkJLyogRGlzYWJsZSBSSU5HX0VOIGlmIG9ubHkgdXB0byA0IHJpbmdzIGFyZSB1c2VkLiAqLwomIzQzOwkJLyogRGlzYWJsZSBSSU5HX0VOIGlmIG9ubHkgdXAgdG8gNCByaW5ncyBhcmUgdXNlZC4gKi8KIAkJcGt0Y3RsICZhbXA7PSB+KDEgJmx0OyZsdDsgNCk7CiAJZWxzZQogCQlwa3RjdGwgfD0gKDEgJmx0OyZsdDsgNCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jCmluZGV4IDkzYjA2ZDU5OWVlZDYuLmJlZDQ1MGJmYWQzODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jCkBAIC01NjUsNyAmIzQzOzU2NSw3IEBAIHN0YXRpYyBpbnQgb2N0ZW9uX3NldHVwX2Ryb3Eoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgaW50IHFfbm8sIGludCBudW1fZGVzY3MsCiB9CiAKIC8qKgotICogbGlxdWlkaW9fcHVzaF9wYWNrZXQgLSBSb3V0aW5lIHRvIHB1c2ggcGFja2V0cyBhcnJpdmluZyBvbiBPY3Rlb24gaW50ZXJmYWNlIHVwdG8gbmV0d29yayBsYXllci4KJiM0MzsgKiBsaXF1aWRpb19wdXNoX3BhY2tldCAtIFJvdXRpbmUgdG8gcHVzaCBwYWNrZXRzIGFycml2aW5nIG9uIE9jdGVvbiBpbnRlcmZhY2UgdXAgdG8gbmV0d29yayBsYXllci4KICAqIEBvY3Rlb25faWQ6b2N0ZW9uIGRldmljZSBpZC4KICAqIEBza2J1ZmY6ICAgc2tidWZmIHN0cnVjdCB0byBiZSBwYXNzZWQgdG8gbmV0d29yayBsYXllci4KICAqIEBsZW46ICAgICAgc2l6ZSBvZiB0b3RhbCBkYXRhIHJlY2VpdmVkLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25maWcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uZmlnLmgKaW5kZXggMjRjMjEyMDAxMjEyMS4uZDJkNjRlZGFmM2JmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25maWcuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbmZpZy5oCkBAIC0yNTQsNyAmIzQzOzI1NCw3IEBAIHN0cnVjdCBvY3Rlb25fb3FfY29uZmlnIHsKIAl1NjQgcGt0c19wZXJfaW50cjoxNjsKIAogCS8qKiBJbnRlcnJ1cHQgQ29hbGVzY2luZyAoVGltZSBJbnRlcnZhbCkuIE9jdGVvbiB3aWxsIGludGVycnVwdCB0aGUKLQkgKiAgaG9zdCBpZiBhdGxlYXN0IG9uZSBwYWNrZXQgd2FzIHNlbnQgaW4gdGhlIHRpbWUgaW50ZXJ2YWwgc3BlY2lmaWVkCiYjNDM7CSAqICBob3N0IGlmIGF0IGxlYXN0IG9uZSBwYWNrZXQgd2FzIHNlbnQgaW4gdGhlIHRpbWUgaW50ZXJ2YWwgc3BlY2lmaWVkCiAJICogIGJ5IHRoaXMgZmllbGQuIFRoZSBkcml2ZXIgdXNlcyB0aW1lIGludGVydmFsIGludGVycnVwdCBjb2FsZXNjaW5nCiAJICogIGJ5IGRlZmF1bHQuIFRoZSB0aW1lIGlzIHNwZWNpZmllZCBpbiBtaWNyb3NlY29uZHMuCiAJICovCkBAIC0yOTYsNyAmIzQzOzI5Niw3IEBAIHN0cnVjdCBvY3Rlb25fb3FfY29uZmlnIHsKIAl1NjQgb3FfaW50cl9wa3Q6MTY7CiAKIAkvKiogSW50ZXJydXB0IENvYWxlc2NpbmcgKFRpbWUgSW50ZXJ2YWwpLiBPY3Rlb24gd2lsbCBpbnRlcnJ1cHQgdGhlCi0JICogIGhvc3QgaWYgYXRsZWFzdCBvbmUgcGFja2V0IHdhcyBzZW50IGluIHRoZSB0aW1lIGludGVydmFsIHNwZWNpZmllZAomIzQzOwkgKiAgaG9zdCBpZiBhdCBsZWFzdCBvbmUgcGFja2V0IHdhcyBzZW50IGluIHRoZSB0aW1lIGludGVydmFsIHNwZWNpZmllZAogCSAqICBieSB0aGlzIGZpZWxkLiBUaGUgZHJpdmVyIHVzZXMgdGltZSBpbnRlcnZhbCBpbnRlcnJ1cHQgY29hbGVzY2luZwogCSAqICBieSBkZWZhdWx0LiAgVGhlIHRpbWUgaXMgc3BlY2lmaWVkIGluIG1pY3Jvc2Vjb25kcy4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaAppbmRleCBhMDRmMzZhMGUxYTA4Li5mZGQ3ZDNhNzdhMmRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2lxLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9pcS5oCkBAIC03MCw3ICYjNDM7NzAsNyBAQCBzdHJ1Y3Qgb2N0X2lxX3N0YXRzIHsKIAogLyoqIFRoZSBpbnN0cnVjdGlvbiAoaW5wdXQpIHF1ZXVlLgogICogIFRoZSBpbnB1dCBxdWV1ZSBpcyB1c2VkIHRvIHBvc3QgcmF3IChpbnN0cnVjdGlvbikgbW9kZSBkYXRhIG9yIHBhY2tldAotICogIGRhdGEgdG8gT2N0ZW9uIGRldmljZSBmcm9tIHRoZSBob3N0LiBFYWNoIGlucHV0IHF1ZXVlICh1cHRvIDQpIGZvcgomIzQzOyAqICBkYXRhIHRvIE9jdGVvbiBkZXZpY2UgZnJvbSB0aGUgaG9zdC4gRWFjaCBpbnB1dCBxdWV1ZSAodXAgdG8gNCkgZm9yCiAgKiAgYSBPY3Rlb24gZGV2aWNlIGhhcyBvbmUgc3VjaCBzdHJ1Y3R1cmUgdG8gcmVwcmVzZW50IGl0LgogICovCiBzdHJ1Y3Qgb2N0ZW9uX2luc3RyX3F1ZXVlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWluLmgKaW5kZXggOTUzZWRmMGM3MDk2Yy4uZDJhNTI2NzNjYWM1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWluLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWluLmgKQEAgLTE2Niw3ICYjNDM7MTY2LDcgQEAgc3RhdGljIGlubGluZSBpbnQgb2N0ZW9uX21hcF9wY2lfYmFyeChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LAogICogZXJybm8gLUVJTlRSOiB1c2VyIGFib3J0IHRoZSBjb21tYW5kLgogICogZXJybm8gLUVUSU1FOiB1c2VyIHNwZWZpZmllZCB0aW1lb3V0IHZhbHVlIGhhcyBiZWVuIGV4cGlyZWQuCiAgKiBlcnJubyAtRUJVU1k6IHRoZSByZXNwb25zZSBvZiB0aGUgcmVxdWVzdCBkb2VzIG5vdCByZXR1cm4gaW4KLSAqICAgICAgICAgICAgICAgcmVzb25hYmxlIHRpbWUgKExJT19TQ19NQVhfVE1PX01TKS4KJiM0MzsgKiAgICAgICAgICAgICAgIHJlYXNvbmFibGUgdGltZSAoTElPX1NDX01BWF9UTU9fTVMpLgogICogICAgICAgICAgICAgICB0aGUgc2Mgd2xsIGJlIG1vdmUgdG8gem9tYmllIHJlc3BvbnNlIGxpc3QgYnkKICAqICAgICAgICAgICAgICAgbGlvX3Byb2Nlc3Nfb3JkZXJlZF9saXN0KCkKICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25pYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uaWMuaAppbmRleCBjMTM5ZmM0MjM3NjRlLi44MzQxZmFhYTBjMjQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25pYy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmljLmgKQEAgLTI3Nyw3ICYjNDM7Mjc3LDcgQEAgaW50IG9jdG5ldF9zZW5kX25pY19kYXRhX3BrdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LAogCiAvKiogU2VuZCBhIE5JQyBjb250cm9sIHBhY2tldCB0byB0aGUgZGV2aWNlCiAgKiBAcGFyYW0gb2N0IC0gb2N0ZW9uIGRldmljZSBwb2ludGVyCi0gKiBAcGFyYW0gbmN0cmwgLSBjb250cm9sIHN0cnVjdHVyZSB3aXRoIGNvbW1hbmQsIHRpbW91dCwgYW5kIGNhbGxiYWNrIGluZm8KJiM0MzsgKiBAcGFyYW0gbmN0cmwgLSBjb250cm9sIHN0cnVjdHVyZSB3aXRoIGNvbW1hbmQsIHRpbWVvdXQsIGFuZCBjYWxsYmFjayBpbmZvCiAgKiBAcmV0dXJucyBJUV9GQUlMRUQgaWYgaXQgZmFpbGVkIHRvIGFkZCB0byB0aGUgaW5wdXQgcXVldWUuIElRX1NUT1AgaWYgdGhlCiAgKiBxdWV1ZSBzaG91bGQgYmUgc3RvcHBlZCwgYW5kIElRX1NFTkRfT0sgaWYgaXQgc2VudCBva2F5LgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmMKaW5kZXggZDdjZmIyMGVlYTAwYy4uYTk4M2U3Zjc5NDYxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9yZXF1ZXN0X21hbmFnZXIuYwpAQCAtNDAsNyAmIzQzOzQwLDcgQEAgc3RhdGljIHZvaWQgIF9fY2hlY2tfZGJfdGltZW91dChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LCB1NjQgaXFfbm8pOwogCiBzdGF0aWMgdm9pZCAoKnJlcXR5cGVfZnJlZV9mbltNQVhfT0NURU9OX0RFVklDRVNdW1JFUVRZUEVfTEFTVCAmIzQzOyAxXSkgKHZvaWQgKik7CiAKLS8qIERlZmluZSB0aGlzIHRvIHJldHVybiB0aGUgcmVxdWVzdCBzdGF0dXMgY29tYXB0aWJsZSB0byBvbGQgY29kZSAqLwomIzQzOy8qIERlZmluZSB0aGlzIHRvIHJldHVybiB0aGUgcmVxdWVzdCBzdGF0dXMgY29tcGF0aWJsZSB0byBvbGQgY29kZSAqLwogLyojZGVmaW5lIE9DVEVPTl9VU0VfT0xEX1JFUV9TVEFUVVMqLwogCiAvKiBSZXR1cm4gMCBvbiBzdWNjZXNzLCAxIG9uIGZhaWx1cmUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmgKaW5kZXggMDkwZDZiODM5ODJhMi4uYmIzZjRmYTZiOTk1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmgKQEAgLTk3LDcgJiM0Mzs5Nyw3IEBACiAgKiBUaGlzIHZhbHVlIGVuc3VyZXMgdGhhdCBvbmNlIGEgcGFja2V0IGhhcyBiZWVuICYjMzQ7YWNjZXB0ZWQmIzM0OwogICogZm9yIHJlY2VwdGlvbiBpdCB3aWxsIG5vdCBnZXQgZHJvcHBlZCBkdWUgdG8gbm9uLWF2YWlsYWJpbGl0eQogICogb2YgQ1EgZGVzY3JpcHRvci4gQW4gZXJyYXRhIGluIEhXIG1hbmRhdGVzIHRoaXMgdmFsdWUgdG8gYmUKLSAqIGF0bGVhc3QgMHgxMDAuCiYjNDM7ICogYXQgbGVhc3QgMHgxMDAuCiAgKi8KICNkZWZpbmUgTklDUEZfQ1FNX01JTl9EUk9QX0xFVkVMICAgICAgIDB4MTAwCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jCmluZGV4IDBlYzY1ZWM2MzRkZjUuLjA4NmYzMmI2MTU4MGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uYwpAQCAtNTk1LDcgJiM0Mzs1OTUsNyBAQCBzdGF0aWMgdm9pZCBuaWNfY29uZmlnX3JzcyhzdHJ1Y3QgbmljcGYgKm5pYywgc3RydWN0IHJzc19jZmdfbXNnICpjZmcpCiAJbmljX3JlZ193cml0ZShuaWMsIGlkeF9hZGRyIHwgKGNwaV9iYXNlICZsdDsmbHQ7IDMpLCBjcGlfY2ZnKTsKIH0KIAotLyogNCBsZXZlbCB0cmFuc21pdCBzaWRlIHNjaGVkdWxlciBjb25maWd1dGF0aW9uCiYjNDM7LyogNCBsZXZlbCB0cmFuc21pdCBzaWRlIHNjaGVkdWxlciBjb25maWd1cmF0aW9uCiAgKiBmb3IgVE5TIGJ5cGFzcyBtb2RlCiAgKgogICogU2FtcGxlIGNvbmZpZ3VyYXRpb24gZm9yIFNRMCBvbiA4OHh4CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguYwppbmRleCBmMzhhMTBjNzk5MDdmLi5mYTUyZTA5OTQwOWM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmMKQEAgLTM3Myw3ICYjNDM7MzczLDcgQEAgc3RhdGljIHZvaWQgZGVfcnhfZXJyX2FjY3QgKHN0cnVjdCBkZV9wcml2YXRlICpkZSwgdW5zaWduZWQgcnhfdGFpbCwKIAkJICByeF90YWlsLCBzdGF0dXMsIGxlbik7CiAKIAlpZiAoKHN0YXR1cyAmYW1wOyAweDM4MDAwMzAwKSAhPSAweDAzMDApIHsKLQkJLyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi8KJiM0MzsJCS8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovCiAJCWlmICgoc3RhdHVzICZhbXA7IDB4ZmZmZikgIT0gMHg3ZmZmKSB7CiAJCQluZXRpZl93YXJuKGRlLCByeF9lcnIsIGRlLSZndDtkZXYsCiAJCQkJICAgJiMzNDtPdmVyc2l6ZWQgRXRoZXJuZXQgZnJhbWUgc3Bhbm5lZCBtdWx0aXBsZSBidWZmZXJzLCBzdGF0dXMgJTA4eCFcbiYjMzQ7LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2ludGVycnVwdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2ludGVycnVwdC5jCmluZGV4IDBhMTJjYjliM2JhNzguLjhjMDI3NzFiMjhlNGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvaW50ZXJydXB0LmMKQEAgLTE3Nyw3ICYjNDM7MTc3LDcgQEAgaW50IHR1bGlwX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQogCQkJICAgcGt0X2xlbiAmZ3Q7IDE1MTgpIHsKIAkJCSAgICAgICBpZiAoKHN0YXR1cyAmYW1wOyAoUnhMZW5ndGhPdmVyMjA0NyB8CiAJCQkJCSAgICAgIFJ4V2hvbGVQa3QpKSAhPSBSeFdob2xlUGt0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluZ29yZSBlYXJsaWVyIGJ1ZmZlcnMuICovCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmUgZWFybGllciBidWZmZXJzLiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzdGF0dXMgJmFtcDsgMHhmZmZmKSAhPSAweDdmZmYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR1bGlwX2RlYnVnICZndDsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfd2FybigmYW1wO2Rldi0mZ3Q7ZGV2LApAQCAtNDA4LDcgJiM0Mzs0MDgsNyBAQCBzdGF0aWMgaW50IHR1bGlwX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCSAgICBwa3RfbGVuICZndDsgMTUxOCkgewogCQkJaWYgKChzdGF0dXMgJmFtcDsgKFJ4TGVuZ3RoT3ZlcjIwNDcgfAogCQkJICAgICBSeFdob2xlUGt0KSkgICAgICAgICAhPSBSeFdob2xlUGt0KSB7Ci0JCQkJLyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi8KJiM0MzsJCQkJLyogSWdub3JlIGVhcmxpZXIgYnVmZmVycy4gKi8KIAkJCQlpZiAoKHN0YXR1cyAmYW1wOyAweGZmZmYpICE9IDB4N2ZmZikgewogCQkJCQlpZiAodHVsaXBfZGVidWcgJmd0OyAxKQogCQkJCQkJbmV0ZGV2X3dhcm4oZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL21lZGlhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuYwppbmRleCA1NWQ2ZmM5OWY0MGI2Li4wYzk2OTRkMmIzOGFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuYwpAQCAtMjQsNyAmIzQzOzI0LDcgQEAKIAogLyogUmVhZCBhbmQgd3JpdGUgdGhlIE1JSSByZWdpc3RlcnMgdXNpbmcgc29mdHdhcmUtZ2VuZXJhdGVkIHNlcmlhbAogICAgTURJTyBwcm90b2NvbC4gIEl0IGlzIGp1c3QgZGlmZmVyZW50IGVub3VnaCBmcm9tIHRoZSBFRVBST00gcHJvdG9jb2wKLSAgIHRvIG5vdCBzaGFyZSBjb2RlLiAgVGhlIG1heGl1bSBkYXRhIGNsb2NrIHJhdGUgaXMgMi41IE1oei4gKi8KJiM0MzsgICB0byBub3Qgc2hhcmUgY29kZS4gIFRoZSBtYXhpbXVtIGRhdGEgY2xvY2sgcmF0ZSBpcyAyLjUgTWh6LiAqLwogI2RlZmluZSBNRElPX1NISUZUX0NMSwkJMHgxMDAwMAogI2RlZmluZSBNRElPX0RBVEFfV1JJVEUwCTB4MDAwMDAKICNkZWZpbmUgTURJT19EQVRBX1dSSVRFMQkweDIwMDAwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvdHVsaXAuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oCmluZGV4IDVlMDEwZTFmYTZmNzkuLmUzOWU1Yzc4ZDRjY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oCkBAIC0yNTAsNyAmIzQzOzI1MCw3IEBAIGVudW0gdDIxMTQzX2NzcjZfYml0cyB7CiAJY3NyNl90dG0gPSAoMSZsdDsmbHQ7MjIpLCAgLyogVHJhbnNtaXQgVGhyZXNob2xkIE1vZGUsIHNldCBmb3IgMTBiYXNlVCwgMCBmb3IgMTAwQmFzZVRYICovCiAJY3NyNl9zZiA9ICgxJmx0OyZsdDsyMSksICAgLyogU3RvcmUgYW5kIGZvcndhcmQuIElmIHNldCBpZ25vcmVzIFRSIGJpdHMgKi8KIAljc3I2X2hiZCA9ICgxJmx0OyZsdDsxOSksICAvKiBIZWFydCBiZWF0IGRpc2FibGUuIERpc2FibGVzIFNRRSBmdW5jdGlvbiBpbiAxMGJhc2VUICovCi0JY3NyNl9wcyA9ICgxJmx0OyZsdDsxOCksICAgLyogUG9ydCBTZWxlY3QuIDAgKGRlZnVhbHQpID0gMTBiYXNlVCwgMSA9IDEwMGJhc2VUWDogY2FuJiMzOTt0IGJlIHNldCAqLwomIzQzOwljc3I2X3BzID0gKDEmbHQ7Jmx0OzE4KSwgICAvKiBQb3J0IFNlbGVjdC4gMCAoZGVmYXVsdCkgPSAxMGJhc2VULCAxID0gMTAwYmFzZVRYOiBjYW4mIzM5O3QgYmUgc2V0ICovCiAJY3NyNl9jYSA9ICgxJmx0OyZsdDsxNyksICAgLyogQ29sbGlzaW9uIE9mZnNldCBFbmFibGUuIElmIHNldCB1c2VzIHNwZWNpYWwgYWxnb3JpdGhtIGluIGxvdyBjb2xsaXNpb24gc2l0dWF0aW9ucyAqLwogCWNzcjZfdHJoID0gKDEmbHQ7Jmx0OzE1KSwgIC8qIFRyYW5zbWl0IFRocmVzaG9sZCBoaWdoIGJpdCAqLwogCWNzcjZfdHJsID0gKDEmbHQ7Jmx0OzE0KSwgIC8qIFRyYW5zbWl0IFRocmVzaG9sZCBsb3cgYml0ICovCkBAIC0yNzQsNyAmIzQzOzI3NCw3IEBAIGVudW0gdDIxMTQzX2NzcjZfYml0cyB7CiAJY3NyNl9vbV9pbnRfbG9vcCA9ICgxJmx0OyZsdDsxMCksIC8qIGludGVybmFsIChGSUZPKSBsb29wYmFjayBmbGFnICovCiAJY3NyNl9vbV9leHRfbG9vcCA9ICgxJmx0OyZsdDsxMSksIC8qIGV4dGVybmFsIChQTUQpIGxvb3BiYWNrIGZsYWcgKi8KIAkvKiBzZXQgYm90aCBhbmQgeW91IGdldCAoUEhZKSBsb29wYmFjayAqLwotCWNzcjZfZmQgPSAoMSZsdDsmbHQ7OSksICAgIC8qIEZ1bGwgZHVwbGV4IG1vZGUsIGRpc2FibGVzIGhlYXJiZWF0LCBubyBsb29wYmFjayAqLwomIzQzOwljc3I2X2ZkID0gKDEmbHQ7Jmx0OzkpLCAgICAvKiBGdWxsIGR1cGxleCBtb2RlLCBkaXNhYmxlcyBoZWFydGJlYXQsIG5vIGxvb3BiYWNrICovCiAJY3NyNl9wbSA9ICgxJmx0OyZsdDs3KSwgICAgLyogUGFzcyBBbGwgTXVsdGljYXN0ICovCiAJY3NyNl9wciA9ICgxJmx0OyZsdDs2KSwgICAgLyogUHJvbWlzY3VvdXMgbW9kZSAqLwogCWNzcjZfc2IgPSAoMSZsdDsmbHQ7NSksICAgIC8qIFN0YXJ0KDEpL1N0b3AoMCkgYmFja29mZiBjb3VudGVyICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvd2luYm9uZC04NDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jCmluZGV4IGE1NTgxZjFkMDE0MTcuLmJlOTE5OWY1NWE4YTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jCkBAIC0xMTg4LDcgJiM0MzsxMTg4LDcgQEAgc3RhdGljIGludCBuZXRkZXZfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJCWJyZWFrOwogCQlpZiAoKHN0YXR1cyAmYW1wOyAweDM4MDA4MzAwKSAhPSAweDAzMDApIHsKIAkJCWlmICgoc3RhdHVzICZhbXA7IDB4MzgwMDAzMDApICE9IDB4MDMwMCkgewotCQkJCS8qIEluZ29yZSBlYXJsaWVyIGJ1ZmZlcnMuICovCiYjNDM7CQkJCS8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovCiAJCQkJaWYgKChzdGF0dXMgJmFtcDsgMHhmZmZmKSAhPSAweDdmZmYpIHsKIAkJCQkJZGV2X3dhcm4oJmFtcDtkZXYtJmd0O2RldiwKIAkJCQkJCSAmIzM0O092ZXJzaXplZCBFdGhlcm5ldCBmcmFtZSBzcGFubmVkIG11bHRpcGxlIGJ1ZmZlcnMsIGVudHJ5ICUjeCBzdGF0dXMgJTA0eCFcbiYjMzQ7LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9taXNjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYwppbmRleCA5MTM5MWE0OWZjZWEyLi5hNTlmZDI4MGEwNDVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYwpAQCAtNTkxLDcgJiM0Mzs1OTEsNyBAQCBzdGF0aWMgaW50IGhuc19tYWNfY29uZmlnX3Nkc19sb29wYmFjayhzdHJ1Y3QgaG5zX21hY19jYiAqbWFjX2NiLCBib29sIGVuKQogI2RlZmluZSBISUxJTktfQUNDRVNTX1NFTF9DRkcJCTB4NDAwMDgKIAkJCS8qIGhpbGluazQgJmFtcDsgaGlsaW5rMyB1c2UgdGhlIHNhbWUgeGdlIHRyYWluaW5nIGFuZAogCQkJICogeGdlIHUgYWRhcHRvci4gVGhlcmUgaXMgYSBoaWxpbmsgYWNjZXNzIHNlbCBjZmcKLQkJCSAqIHJlZ2lzdGVyIHRvIHNlbGVjdCB3aGljaCBvbmUgdG8gYmUgY29uZmlnZWQKJiM0MzsJCQkgKiByZWdpc3RlciB0byBzZWxlY3Qgd2hpY2ggb25lIHRvIGJlIGNvbmZpZ3VyZWQKIAkJCSAqLwogCQkJaWYgKCghSE5TX0RTQUZfSVNfREVCVUcobWFjX2NiLSZndDtkc2FmX2RldikpICZhbXA7JmFtcDsKIAkJCSAgICAobWFjX2NiLSZndDttYWNfaWQgJmx0Oz0gMykpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX3BwZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9wcGUuYwppbmRleCA1MDEzYmViNGQyODI1Li40MDhkMzZkODVmYjEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX3BwZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfcHBlLmMKQEAgLTEzOSw3ICYjNDM7MTM5LDcgQEAgc3RhdGljIHZvaWQgaG5zX3BwZV9zZXRfdmxhbl9zdHJpcChzdHJ1Y3QgaG5zX3BwZV9jYiAqcHBlX2NiLCBpbnQgZW4pCiB9CiAKIC8qKgotICogaG5zX3BwZV9jaGVja3N1bV9odyAtIHNldCBwcGUgY2hlY2tzdW0gY2FjdWxhdGUKJiM0MzsgKiBobnNfcHBlX2NoZWNrc3VtX2h3IC0gc2V0IHBwZSBjaGVja3N1bSBjYWxjdWxhdGUKICAqIEBwcGVfY2I6IHBwZSBkZXZpY2UKICAqIEB2YWx1ZTogdmFsdWUKICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jCmluZGV4IGU5MDVmMTBiODk0ZTguLmQ4MTlkMmJiMzQ1MDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmMKQEAgLTEyMzAsNyAmIzQzOzEyMzAsNyBAQCBzdGF0aWMgdm9pZCBobnNfbmljX3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQogCWgtJmd0O2Rldi0mZ3Q7b3BzLSZndDt1cGRhdGVfc3RhdHMoaCwgJmFtcDtuZXRkZXYtJmd0O3N0YXRzKTsKIH0KIAotLyogc2V0IG1hYyBhZGRyIGlmIGl0IGlzIGNvbmZpZ2VkLiBvciBsZWF2ZSBpdCB0byB0aGUgQUUgZHJpdmVyICovCiYjNDM7Lyogc2V0IG1hYyBhZGRyIGlmIGl0IGlzIGNvbmZpZ3VyZWQuIG9yIGxlYXZlIGl0IHRvIHRoZSBBRSBkcml2ZXIgKi8KIHN0YXRpYyB2b2lkIGhuc19pbml0X21hY19hZGRyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogewogCXN0cnVjdCBobnNfbmljX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsKQEAgLTIzMTcsNyAmIzQzOzIzMTcsNyBAQCBzdGF0aWMgaW50IGhuc19uaWNfZGV2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXJldCA9IGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsICYjMzQ7cG9ydC1pZCYjMzQ7LCAmYW1wO3BvcnRfaWQpOwogCQlpZiAocmV0KQogCQkJZ290byBvdXRfcmVhZF9wcm9wX2ZhaWw7Ci0JCS8qIGZvciBvbGQgZHRzLCB3ZSBuZWVkIHRvIGNhY3VsYXRlIHRoZSBwb3J0IG9mZnNldCAqLwomIzQzOwkJLyogZm9yIG9sZCBkdHMsIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBwb3J0IG9mZnNldCAqLwogCQlwb3J0X2lkID0gcG9ydF9pZCAmbHQ7IEhOU19TUlZfT0ZGU0VUID8gcG9ydF9pZCAmIzQzOyBITlNfREVCVUdfT0ZGU0VUCiAJCQk6IHBvcnRfaWQgLSBITlNfU1JWX09GRlNFVDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21haW4uYwppbmRleCBlNmFmOTM5YzFjMTliLi5iZjM1ZjU1ZjViOGZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tYWluLmMKQEAgLTEwNTI3LDcgJiM0MzsxMDUyNyw3IEBAIHN0YXRpYyBpbnQgaGNsZ2VfZ2V0X2xpbmtfZGlhZ25vc2lzX2luZm8oc3RydWN0IGhuYWUzX2hhbmRsZSAqaGFuZGxlLAogfQogCiAvKiBBZnRlciBkaXNhYmxlIHNyaW92LCBWRiBzdGlsbCBoYXMgc29tZSBjb25maWcgYW5kIGluZm8gbmVlZCBjbGVhbiwKLSAqIHdoaWNoIGNvbmZpZ2VkIGJ5IFBGLgomIzQzOyAqIHdoaWNoIGNvbmZpZ3VyZWQgYnkgUEYuCiAgKi8KIHN0YXRpYyB2b2lkIGhjbGdlX2NsZWFyX3Zwb3J0X3ZmX2luZm8oc3RydWN0IGhjbGdlX3Zwb3J0ICp2cG9ydCwgaW50IHZmaWQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfdG0uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV90bS5jCmluZGV4IDAwYzNmMjU0OGJmNmIuLmJmNTMzYjhmNDZhZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV90bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV90bS5jCkBAIC0zNSw3ICYjNDM7MzUsNyBAQCBlbnVtIGhjbGdlX3NoYXBlcl9sZXZlbCB7CiAgKiBJUihNYnBzKSA9IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICogIENMT0NLKDEwMDBNYnBzKQogICoJCVRpY2sgKiAoMiBeIElSX3MpCiAgKgotICogQHJldHVybjogMDogY2FsY3VsYXRlIHN1Y2Vzc2Z1bCwgbmVnYXRpdmU6IGZhaWwKJiM0MzsgKiBAcmV0dXJuOiAwOiBjYWxjdWxhdGUgc3VjY2Vzc2Z1bCwgbmVnYXRpdmU6IGZhaWwKICAqLwogc3RhdGljIGludCBoY2xnZV9zaGFwZXJfcGFyYV9jYWxjKHUzMiBpciwgdTggc2hhcGVyX2xldmVsLAogCQkJCSAgc3RydWN0IGhjbGdlX3NoYXBlcl9pcl9wYXJhICppcl9wYXJhLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jCmluZGV4IDA2M2E2OTJjMmI0MWUuLjVkMTRkMjliMDI5NjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczN2Zi9oY2xnZXZmX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzdmYvaGNsZ2V2Zl9tYWluLmMKQEAgLTE4ODAsNyAmIzQzOzE4ODAsNyBAQCBzdGF0aWMgdm9pZCBoY2xnZXZmX3Jlc2V0X3NlcnZpY2VfdGFzayhzdHJ1Y3QgaGNsZ2V2Zl9kZXYgKmhkZXYpCiAJCSAqIGZyb20gUEYgYXMgY21kcSB3b3VsZCBiZSBpbiB1bnJlbGlhYmxlIHN0YXRlIGkuZS4gbWFpbGJveAogCQkgKiBjb21tdW5pY2F0aW9uIGJldHdlZW4gUEYgYW5kIFZGIHdvdWxkIGJlIGJyb2tlbi4KIAkJICoKLQkJICogaWYgd2UgYXJlIG5ldmVyIGdldGluZyBpbnRvIHBlbmRpbmcgc3RhdGUgaXQgbWVhbnMgZWl0aGVyOgomIzQzOwkJICogaWYgd2UgYXJlIG5ldmVyIGdldHRpbmcgaW50byBwZW5kaW5nIHN0YXRlIGl0IG1lYW5zIGVpdGhlcjoKIAkJICogMS4gUEYgaXMgbm90IHJlY2VpdmluZyBvdXIgcmVxdWVzdCB3aGljaCBjb3VsZCBiZSBkdWUgdG8gSU1QCiAJCSAqICAgIHJlc2V0CiAJCSAqIDIuIFBGIGlzIHNjcmV3ZWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaAppbmRleCAwNjFmY2Q0NDRkNTAzLi4zZWQ1NjcwZjAxYzI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oCkBAIC03MjksNyAmIzQzOzcyOSw3IEBACiAjZGVmaW5lIE1WUFAyX01BWF9UWFEJCQk4CiAKIC8qIE1WUFAyX01BWF9UU09fU0VHUyBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhZ21lbnRzIHRvIGFsbG93IGluIHRoZSBHU08KLSAqIHNrYi4gQXMgd2UgbmVlZCBhIG1heGl1bSBvZiB0d28gZGVzY3JpcHRvcnMgcGVyIGZyYWdtZW50cyAoMSBoZWFkZXIsIDEgZGF0YSksCiYjNDM7ICogc2tiLiBBcyB3ZSBuZWVkIGEgbWF4aW11bSBvZiB0d28gZGVzY3JpcHRvcnMgcGVyIGZyYWdtZW50cyAoMSBoZWFkZXIsIDEgZGF0YSksCiAgKiBtdWx0aXBseSB0aGlzIHZhbHVlIGJ5IHR3byB0byBjb3VudCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2tiIGRlc2NzIG5lZWRlZC4KICAqLwogI2RlZmluZSBNVlBQMl9NQVhfVFNPX1NFR1MJCTMwMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9wcnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfcHJzLmMKaW5kZXggOTNlOTc4YmRmMzAzYy4uYWQ2NzdjZmRkYjRkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9wcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX3Bycy5jCkBAIC0zODIsNyAmIzQzOzM4Miw3IEBAIHN0YXRpYyBpbnQgbXZwcDJfcHJzX2Zsb3dfZmluZChzdHJ1Y3QgbXZwcDIgKnByaXYsIGludCBmbG93KQogCXN0cnVjdCBtdnBwMl9wcnNfZW50cnkgcGU7CiAJaW50IHRpZDsKIAotCS8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRpcmVzIHdpdGggTVZQUDJfUFJTX0xVX0ZMT1dTICovCiYjNDM7CS8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRyaWVzIHdpdGggTVZQUDJfUFJTX0xVX0ZMT1dTICovCiAJZm9yICh0aWQgPSBNVlBQMl9QUlNfVENBTV9TUkFNX1NJWkUgLSAxOyB0aWQgJmd0Oz0gMDsgdGlkLS0pIHsKIAkJdTggYml0czsKIApAQCAtMTIxMiw3ICYjNDM7MTIxMiw3IEBAIHN0YXRpYyB2b2lkIG12cHAyX3Byc19taF9pbml0KHN0cnVjdCBtdnBwMiAqcHJpdikKIAltdnBwMl9wcnNfaHdfd3JpdGUocHJpdiwgJmFtcDtwZSk7CiB9CiAKLS8qIFNldCBkZWZhdWx0IGVudGlyZXMgKHBsYWNlIGhvbGRlcikgZm9yIHByb21pc2N1b3VzLCBub24tcHJvbWlzY3VvdXMgYW5kCiYjNDM7LyogU2V0IGRlZmF1bHQgZW50cmllcyAocGxhY2UgaG9sZGVyKSBmb3IgcHJvbWlzY3VvdXMsIG5vbi1wcm9taXNjdW91cyBhbmQKICAqIG11bHRpY2FzdCBNQUMgYWRkcmVzc2VzCiAgKi8KIHN0YXRpYyB2b2lkIG12cHAyX3Byc19tYWNfaW5pdChzdHJ1Y3QgbXZwcDIgKnByaXYpCkBAIC0yMjQxLDcgJiM0MzsyMjQxLDcgQEAgbXZwcDJfcHJzX21hY19kYV9yYW5nZV9maW5kKHN0cnVjdCBtdnBwMiAqcHJpdiwgaW50IHBtYXAsIGNvbnN0IHU4ICpkYSwKIAlzdHJ1Y3QgbXZwcDJfcHJzX2VudHJ5IHBlOwogCWludCB0aWQ7CiAKLQkvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyB3aXRoIE1WUFAyX1BSU19MVV9NQUMgKi8KJiM0MzsJLyogR28gdGhyb3VnaCB0aGUgYWxsIGVudHJpZXMgd2l0aCBNVlBQMl9QUlNfTFVfTUFDICovCiAJZm9yICh0aWQgPSBNVlBQMl9QRV9NQUNfUkFOR0VfU1RBUlQ7CiAJICAgICB0aWQgJmx0Oz0gTVZQUDJfUEVfTUFDX1JBTkdFX0VORDsgdGlkJiM0MzsmIzQzOykgewogCQl1bnNpZ25lZCBpbnQgZW50cnlfcG1hcDsKQEAgLTI1MzksNyAmIzQzOzI1MzksNyBAQCBpbnQgbXZwcDJfcHJzX2RlZl9mbG93KHN0cnVjdCBtdnBwMl9wb3J0ICpwb3J0KQogCiAJLyogU3VjaCBlbnRyeSBub3QgZXhpc3QgKi8KIAlpZiAodGlkICZsdDsgMCkgewotCQkvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyBmcm9tIGxhc3QgdG8gZmlyc3QgKi8KJiM0MzsJCS8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRyaWVzIGZyb20gbGFzdCB0byBmaXJzdCAqLwogCQl0aWQgPSBtdnBwMl9wcnNfdGNhbV9maXJzdF9mcmVlKHBvcnQtJmd0O3ByaXYsCiAJCQkJCQlNVlBQMl9QRV9MQVNUX0ZSRUVfVElELAogCQkJCQkgICAgICAgTVZQUDJfUEVfRklSU1RfRlJFRV9USUQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbnBjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaAppbmRleCA3MTliMzYxOGVlYjUyLi4zMDkyNDRmZTg3NTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaApAQCAtODQsNyAmIzQzOzg0LDcgQEAgZW51bSBucGNfa3B1X2xjX2x0eXBlIHsKIAlOUENfTFRfTENfQ1VTVE9NMSA9IDB4RiwKIH07CiAKLS8qIERvbiYjMzk7dCBtb2RpZnkgTHR5cGVzIHVwdG8gU0NUUCwgb3RoZXJ3aXNlIGl0IHdpbGwKJiM0MzsvKiBEb24mIzM5O3QgbW9kaWZ5IEx0eXBlcyB1cCB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbAogICogZWZmZWN0IGZsb3cgdGFnIGNhbGN1bGF0aW9uIGFuZCB0aHVzIFJTUy4KICAqLwogZW51bSBucGNfa3B1X2xkX2x0eXBlIHsKQEAgLTE0MCw3ICYjNDM7MTQwLDcgQEAgZW51bSBucGNfa3B1X2xnX2x0eXBlIHsKIAlOUENfTFRfTEdfQ1VTVE9NMSA9IDB4RiwKIH07CiAKLS8qIERvbiYjMzk7dCBtb2RpZnkgTHR5cGVzIHVwdG8gU0NUUCwgb3RoZXJ3aXNlIGl0IHdpbGwKJiM0MzsvKiBEb24mIzM5O3QgbW9kaWZ5IEx0eXBlcyB1cCB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbAogICogZWZmZWN0IGZsb3cgdGFnIGNhbGN1bGF0aW9uIGFuZCB0aHVzIFJTUy4KICAqLwogZW51bSBucGNfa3B1X2xoX2x0eXBlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYwppbmRleCAxNTNlYjU3YmFkMDY3Li5kODBkMmMwMGJkODQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jCkBAIC00OTc0LDcgJiM0Mzs0OTc0LDcgQEAgc3RhdGljIHZvaWQgcnZ1X25peF9zZXR1cF9jYXBhYmlsaXRpZXMoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkcikKIAogCS8qIE9uIE9jdGVvblR4MiBEV1JSIHF1YW50dW0gaXMgZGlyZWN0bHkgY29uZmlndXJlZCBpbnRvIGVhY2ggb2YKIAkgKiB0aGUgdHJhbnNtaXQgc2NoZWR1bGVyIHF1ZXVlcy4gQW5kIFBGL1ZGIGRyaXZlcnMgd2VyZSBmcmVlIHRvCi0JICogY29uZmlnIGFueSB2YWx1ZSB1cHRvIDJeMjQuCiYjNDM7CSAqIGNvbmZpZyBhbnkgdmFsdWUgdXAgdG8gMl4yNC4KIAkgKiBPbiBDTjEwSywgSFcgaXMgbW9kaWZpZWQsIHRoZSBxdWFudHVtIGNvbmZpZ3VyYXRpb24gYXQgc2NoZWR1bGVyCiAJICogcXVldWVzIGlzIGluIHRlcm1zIG9mIHdlaWdodC4gQW5kIFNXIG5lZWRzIHRvIHNldHVwIGEgYmFzZSBEV1JSIE1UVQogCSAqIGF0IE5JWF9BRl9EV1JSX1JQTV9NVFUgLyBOSVhfQUZfRFdSUl9TRFBfTVRVLiBIVyB3aWxsIGRvCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jCmluZGV4IDNlMWJmMjJjYmE2OWMuLmY5OGVmNTQzMWM5MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jCkBAIC0zMDEsNyAmIzQzOzMwMSw3IEBAIHN0YXRpYyB2b2lkIGNuMTBrX2dldF9pbmdyZXNzX3JhdGVfY2ZnKHU2NCByYXRlLCB1MzIgKnJhdGVfZXhwLAogCSAqIHBvbGljZXIgdGltZXVuaXQgKiAyXnJkaXYgaWUgMiAqIDJecmRpdiB1c2VjcywgdG8gdGhlIHRva2VuIGJ1Y2tldC4KIAkgKiBIZXJlIHBvbGljZXIgdGltZXVuaXQgaXMgMiB1c2VjcyBhbmQgcmF0ZSBpcyBpbiBiaXRzIHBlciBzZWMuCiAJICogU2luY2UgZmxvYXRpbmcgcG9pbnQgY2Fubm90IGJlIHVzZWQgYmVsb3cgYWxnb3JpdGhtIHVzZXMgMTAwMDAwMAotCSAqIHNjYWxlIGZhY3RvciB0byBzdXBwb3J0IHJhdGVzIHVwdG8gMTAwR2Jwcy4KJiM0MzsJICogc2NhbGUgZmFjdG9yIHRvIHN1cHBvcnQgcmF0ZXMgdXAgdG8gMTAwR2Jwcy4KIAkgKi8KIAl0bXAgPSByYXRlICogMzIgKiAyOwogCWlmICh0bXAgJmx0OyAyNTYwMDAwMDApIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2RjYm5sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9kY2JubC5jCmluZGV4IGYxMTBkZmE0MjM2MDUuLjkxZDM0NmQxMTRhZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2RjYm5sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZGNibmwuYwpAQCAtNjcsNyAmIzQzOzY3LDcgQEAgc3RhdGljIGludCBvdHgyX3BmY190eHNjaHFfYWxsb2Nfb25lKHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgdTggcHJpbykKIAlpZiAoIXJlcSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQkvKiBSZXF1ZXN0IG9uZSBzY2hxIHBlciBsZXZlbCB1cHRvIG1heCBsZXZlbCBhcyBjb25maWd1cmVkCiYjNDM7CS8qIFJlcXVlc3Qgb25lIHNjaHEgcGVyIGxldmVsIHVwIHRvIG1heCBsZXZlbCBhcyBjb25maWd1cmVkCiAJICogbGluayBjb25maWcgbGV2ZWwuIFRoZXNlIHJlc3Qgb2YgdGhlIHNjaGVkdWxlciBjYW4gYmUKIAkgKiBzYW1lIGFzIGh3LnR4c2NocV9saXN0LgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYwppbmRleCBiYmJiYmJhNjNlMTVkLi4yMzcwYjJkZGJhNmI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYwpAQCAtNTE0LDcgJiM0Mzs1MTQsNyBAQCBzdGF0aWMgaW50IGFkZF9kZWxfaGFzaF9lbnRyeShzdHJ1Y3QgcHhhMTY4X2V0aF9wcml2YXRlICpwZXAsCiAvKgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogIENyZWF0ZSBhbiBhZGRyZXNzVGFibGUgZW50cnkgZnJvbSBNQUMgYWRkcmVzcyBpbmZvCi0gKiAgZm91bmQgaW4gdGhlIHNwZWNpZmVkIG5ldF9kZXZpY2Ugc3RydWN0CiYjNDM7ICogIGZvdW5kIGluIHRoZSBzcGVjaWZpZWQgbmV0X2RldmljZSBzdHJ1Y3QKICAqCiAgKiAgSW5wdXQgOiBwb2ludGVyIHRvIGV0aGVybmV0IGludGVyZmFjZSBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmUKICAqICBPdXRwdXQgOiBOL0EKQEAgLTgwNiw3ICYjNDM7ODA2LDcgQEAgc3RhdGljIGludCByeHFfcHJvY2VzcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgYnVkZ2V0KQogCQlzdGF0cy0mZ3Q7cnhfYnl0ZXMgJiM0Mzs9IHJ4X2Rlc2MtJmd0O2J5dGVfY250OwogCQkvKgogCQkgKiBJbiBjYXNlIHJlY2VpdmVkIGEgcGFja2V0IHdpdGhvdXQgZmlyc3QgLyBsYXN0IGJpdHMgb24gT1IKLQkJICogdGhlIGVycm9yIHN1bW1hcnkgYml0IGlzIG9uLCB0aGUgcGFja2V0cyBuZWVkcyB0byBiZSBkcm9wZWQuCiYjNDM7CQkgKiB0aGUgZXJyb3Igc3VtbWFyeSBiaXQgaXMgb24sIHRoZSBwYWNrZXRzIG5lZWRzIHRvIGJlIGRyb3BwZWQuCiAJCSAqLwogCQlpZiAoKChjbWRfc3RzICZhbXA7IChSWF9GSVJTVF9ERVNDIHwgUlhfTEFTVF9ERVNDKSkgIT0KIAkJICAgICAoUlhfRklSU1RfREVTQyB8IFJYX0xBU1RfREVTQykpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfY3R4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfY3R4LmMKaW5kZXggZmVmNGIyYjBiMWYyNi4uNzlkNmE4MTliZjkwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19jdHguYwpAQCAtMTcsNyAmIzQzOzE3LDcgQEAgbmV0eGVuX3BvbGxfcnNwKHN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlcikKIAlpbnQJdGltZW91dCA9IDA7CiAKIAlkbyB7Ci0JCS8qIGdpdmUgYXRsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi8KJiM0MzsJCS8qIGdpdmUgYXQgbGVhc3QgMW1zIGZvciBmaXJtd2FyZSB0byByZXNwb25kICovCiAJCW1zbGVlcCgxKTsKIAogCQlpZiAoJiM0MzsmIzQzO3RpbWVvdXQgJmd0OyBOWF9PU19DUkJfUkVUUllfQ09VTlQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9jeHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2N4dC5jCmluZGV4IGI3MDI2MmU3MGJhZjYuLjg5Yjk0N2Y4MmNmMDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2N4dC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2N4dC5jCkBAIC01NjEsNyAmIzQzOzU2MSw3IEBAIGludCBxZWRfY3h0X2NmZ19pbHRfY29tcHV0ZShzdHJ1Y3QgcWVkX2h3Zm4gKnBfaHdmbiwgdTMyICpsaW5lX2NvdW50KQogCQkJICogICAgICBibG9jayBpbiB0aGUgSUxUIGNsaWVudC4gVGhpcyBpcyBsYXRlciB1c2VkIHRvCiAJCQkgKiAgICAgIGNvbmZpZ3VyZSB0aGUgQ0RVIHNlZ21lbnQgb2Zmc2V0IHJlZ2lzdGVycyBhbmQKIAkJCSAqICAgICAgcmVzdWx0cyBpbiBhbiBGTCBjb21tYW5kIGZvciBUSURzIG9mIHRoaXMKLQkJCSAqICAgICAgc2VnZW1lbnQgYmVoYXZlcyBhcyByZWd1bGFyIGxvYWQgY29tbWFuZHMKJiM0MzsJCQkgKiAgICAgIHNlZ21lbnQgYmVoYXZlcyBhcyByZWd1bGFyIGxvYWQgY29tbWFuZHMKIAkJCSAqICAgICAgKGxvYWRpbmcgVElEcyBmcm9tIHRoZSB3b3JraW5nIG1lbW9yeSkuCiAJCQkgKi8KIAkJCWxpbmUgPSBwX2NsaS0mZ3Q7cGZfYmxrc1tDRFVUX1NFR19CTEsoaSldLnN0YXJ0X2xpbmU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9tY3AuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oCmluZGV4IDliZDA1NjVmZThhYmMuLjUwNjk5ZDYwMGI4ZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oCkBAIC03ODMsNyAmIzQzOzc4Myw3IEBAIHN0cnVjdCBxZWRfbWNwX2luZm8gewogCXUxNgkJCQkJbWZ3X21iX2xlbmd0aDsKIAl1MzIJCQkJCW1jcF9oaXN0OwogCi0JLyogQ2FwYWJpbHRpZXMgbmVnb3RpYXRlZCB3aXRoIHRoZSBNRlcgKi8KJiM0MzsJLyogQ2FwYWJpbGl0aWVzIG5lZ290aWF0ZWQgd2l0aCB0aGUgTUZXICovCiAJdTMyCQkJCQljYXBhYmlsaXRpZXM7CiAKIAkvKiBTL04gZm9yIGRlYnVnIGRhdGEgbWFpbGJveCBjb21tYW5kcyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljLmgKaW5kZXggZDdjOGZhZGI0OWRlMS4uOTcyOGQ1ODNiODkxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWMuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pYy5oCkBAIC05MDksNyAmIzQzOzkwOSw3IEBAIHN0cnVjdCBxbGNuaWNfbWFjX3ZsYW5fbGlzdCB7CiAKICNkZWZpbmUgUUxDTklDX0xST19SRVFVRVNUX0NMRUFOVVAJNAogCi0vKiBDYXBhYmlsaXRlcyByZWNlaXZlZCAqLwomIzQzOy8qIENhcGFiaWxpdGllcyByZWNlaXZlZCAqLwogI2RlZmluZSBRTENOSUNfRldfQ0FQQUJJTElUWV9UU08JCUJJVF8xCiAjZGVmaW5lIFFMQ05JQ19GV19DQVBBQklMSVRZX0JERwkJQklUXzgKICNkZWZpbmUgUUxDTklDX0ZXX0NBUEFCSUxJVFlfRlZMQU5UWAkJQklUXzkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmMKaW5kZXggNDdjZDllYzY2NWVlYi4uZmYzMzdhOTE3MjQzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmMKQEAgLTE5NTcsOSAmIzQzOzE5NTcsOSBAQCBzdGF0aWMgdm9pZCBxbGNuaWNfODN4eF90ZW1wbGF0ZV9lbmQoc3RydWN0IHFsY25pY19hZGFwdGVyICpwX2RldikKICogcWxjbmljXzgzeHhfZXhlY190ZW1wbGF0ZV9jbWQKICoKICogQHBfZGV2OiBhZGFwdGVyIHN0cnVjdHVyZQotKiBAcF9idWZmOiBQb2l0ZXIgdG8gaW5zdHJ1Y3Rpb24gdGVtcGxhdGUKJiM0MzsqIEBwX2J1ZmY6IFBvaW50ZXIgdG8gaW5zdHJ1Y3Rpb24gdGVtcGxhdGUKICoKLSogVGVtcGxhdGUgcHJvdmlkZXMgaW5zdHJ1Y3Rpb25zIHRvIHN0b3AsIHJlc3RhcnQgYW5kIGluaXRhbGl6ZSBmaXJtd2FyZS4KJiM0MzsqIFRlbXBsYXRlIHByb3ZpZGVzIGluc3RydWN0aW9ucyB0byBzdG9wLCByZXN0YXJ0IGFuZCBpbml0aWFsaXplIGZpcm13YXJlLgogKiBUaGVzZSBpbnN0cnVjdGlvbnMgYXJlIGFic3RyYWN0ZWQgYXMgYSBzZXJpZXMgb2YgcmVhZCwgd3JpdGUgYW5kCiAqIHBvbGwgb3BlcmF0aW9ucyBvbiBoYXJkd2FyZSByZWdpc3RlcnMuIFJlZ2lzdGVyIGluZm9ybWF0aW9uIGFuZCBvcGVyYXRpb24KICogc3BlY2lmaWNzIGFyZSBub3QgZXhwb3NlZCB0byB0aGUgZHJpdmVyLiBEcml2ZXIgcmVhZHMgdGhlIHRlbXBsYXRlIGZyb20KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX2N0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmMKaW5kZXggZWI4MjdiODZlY2FlOC4uMWI5NGM0MmQ2NjliMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmMKQEAgLTk1LDcgJiM0Mzs5NSw3IEBAIHFsY25pY19wb2xsX3JzcChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIpCiAJaW50IHRpbWVvdXQgPSAwLCBlcnIgPSAwOwogCiAJZG8gewotCQkvKiBnaXZlIGF0bGVhc3QgMW1zIGZvciBmaXJtd2FyZSB0byByZXNwb25kICovCiYjNDM7CQkvKiBnaXZlIGF0IGxlYXN0IDFtcyBmb3IgZmlybXdhcmUgdG8gcmVzcG9uZCAqLwogCQltZGVsYXkoMSk7CiAKIAkJaWYgKCYjNDM7JiM0Mzt0aW1lb3V0ICZndDsgUUxDTklDX09TX0NSQl9SRVRSWV9DT1VOVCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYwppbmRleCBmZjRmN2NkMjBjNzkxLi4yM2FlNzZjYTgxZGJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jCkBAIC02NDAsNyAmIzQzOzY0MCw3IEBAIHN0YXRpYyBpbnQgcWxjbmljX21heF9yaW5ncyhzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHJpbmdfY250LAogCiB2b2lkIHFsY25pY19zZXRfdHhfcmluZ19jb3VudChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHR4X2NudCkKIHsKLQkvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfdHhfcmluZ3MgaW50aWFsaXplZCBpbiBwcm9iZSAqLwomIzQzOwkvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfdHhfcmluZ3MgaW5pdGlhbGl6ZWQgaW4gcHJvYmUgKi8KIAlpZiAoYWRhcHRlci0mZ3Q7bWF4X3R4X3JpbmdzKQogCQlhZGFwdGVyLSZndDtkcnZfdHhfcmluZ3MgPSBxbGNuaWNfbWF4X3JpbmdzKGFkYXB0ZXIsIHR4X2NudCwKIAkJCQkJCQkgUUxDTklDX1RYX1FVRVVFKTsKQEAgLTY1MCw3ICYjNDM7NjUwLDcgQEAgdm9pZCBxbGNuaWNfc2V0X3R4X3JpbmdfY291bnQoc3RydWN0IHFsY25pY19hZGFwdGVyICphZGFwdGVyLCB1OCB0eF9jbnQpCiAKIHZvaWQgcWxjbmljX3NldF9zZHNfcmluZ19jb3VudChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHJ4X2NudCkKIHsKLQkvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfc2RzX3JpbmdzIGludGlhbGl6ZWQgaW4gcHJvYmUgKi8KJiM0MzsJLyogODN4eCBhZGFwdGVyIGRvZXMgbm90IGhhdmUgbWF4X3Nkc19yaW5ncyBpbml0aWFsaXplZCBpbiBwcm9iZSAqLwogCWlmIChhZGFwdGVyLSZndDttYXhfc2RzX3JpbmdzKQogCQlhZGFwdGVyLSZndDtkcnZfc2RzX3JpbmdzID0gcWxjbmljX21heF9yaW5ncyhhZGFwdGVyLCByeF9jbnQsCiAJCQkJCQkJICBRTENOSUNfUlhfUVVFVUUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2NmbS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2NmbS5jCmluZGV4IDRlZWEzNDA4MDM0YmUuLmI3MjJhMTk1ZDgzMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9jZm0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmMKQEAgLTE3LDcgJiM0MzsxNyw3IEBACiAqLwogCiAvKgotICoJSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1hbnRhdGlvbgomIzQzOyAqCUhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtZW50YXRpb24KICAqCVRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgU01UIGZ1bmN0aW9ucyBhcmUgcmVmZXJlbmNlZCA6CiAgKgogICoJCXF1ZXVlX2V2ZW50KCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uYyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uYwppbmRleCAyZjVmNWYyNmJiNDM0Li5lNDE4YWI2NWNiNjExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZWNtLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jCkBAIC0xNyw3ICYjNDM7MTcsNyBAQAogKi8KIAogLyoKLSAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb24KJiM0MzsgKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWVudGF0aW9uCiAgKiBUaGUgZm9sbG93aW5nIGV4dGVybmFsIFNNVCBmdW5jdGlvbnMgYXJlIHJlZmVyZW5jZWQgOgogICoKICAqIAkJcXVldWVfZXZlbnQoKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uYyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmMKaW5kZXggMDM2MDYyMzc2YzA2Ni4uMGQ0MjAxMzQ1ZjliZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZnBsdXN0bS5jCkBAIC0xNTAsNyAmIzQzOzE1MCw3IEBAIHN0YXRpYyB1X2xvbmcgcmVhZF9tZHIoc3RydWN0IHNfc21jICpzbWMsIHVuc2lnbmVkIGludCBhZGRyKQogCUNIRUNLX05QUCgpIDsKIAlNQVJSKGFkZHIpIDsKIAlvdXRwdyhGTV9BKEZNX0NNRFJFRzEpLEZNX0lSTUVNV08pIDsKLQlDSEVDS19OUFAoKSA7CS8qIG5lZWRlZCBmb3IgUENJIHRvIHByZXZlbnQgZnJvbSB0aW1laW5nIHZpb2xhdGlvbnMgKi8KJiM0MzsJQ0hFQ0tfTlBQKCkgOwkvKiBuZWVkZWQgZm9yIFBDSSB0byBwcmV2ZW50IGZyb20gdGltaW5nIHZpb2xhdGlvbnMgKi8KIC8qCXAgPSBNRFJSKCkgOyAqLwkvKiBiYWQgcmVhZCB2YWx1ZXMgaWYgdGhlIHdvcmthcm91bmQgKi8KIAkJCS8qIHNtYy0mZ3Q7aHcubWNfZHVtbXkgPSAqKChzaG9ydCB2b2xhdGlsZSBmYXIgKikoYWRkcikpKSovCiAJCQkvKiBpcyB1c2VkICovCkBAIC01NzIsNyAmIzQzOzU3Miw3IEBAIE5vdGUJQWZ0ZXIgYW55IHJpbmcgb3BlcmF0aW9uYWwgY2hhbmdlIHRoZSB0cmFuc21pdCBjb21wbGV0ZQogCVRoZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCBtb2R1bGUgbXVzdCBlbmFibGUKIAl0aGUgdHJhbnNtaXQgY29tcGxldGUgaW50ZXJydXB0IG9mIGEgcXVldWUsCiAJCS0gd2hlbiBpdCBxdWV1ZXMgdGhlIGZpcnN0IGZyYW1lLAotCQkgIGJlY2F1c2Ugb2Ygbm8gdHJhbnNtaXQgcmVzb3VyY2VzIGFyZSBiZWVpbmcKJiM0MzsJCSAgYmVjYXVzZSBvZiBubyB0cmFuc21pdCByZXNvdXJjZXMgYXJlIGJlaW5nCiAJCSAgYXZhaWxhYmxlIGFuZAogCQktIHdoZW4gaXQgZXNjYXBlcyBmcm9tIHRoZSBmdW5jdGlvbiBsbGNfcmVzdGFydF90eAogCQkgIHdoaWxlIHNvbWUgZnJhbWVzIGFyZSBzdGlsbCBxdWV1ZWQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9od210bS5oIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvaHdtdG0uaAppbmRleCBlOTdkYjgyNmNkZDQ1Li4wYWI0OWNjMGE4YmRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9od210bS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL2h3bXRtLmgKQEAgLTExMyw3ICYjNDM7MTEzLDcgQEAgc3RydWN0IGh3X21vZHVsIHsKIAlzdHJ1Y3QJc19tYnVmX3Bvb2wJbWJ1Zl9wb29sIDsKIAlzdHJ1Y3QJaHdtX3IJciA7CiAKLQl1bmlvbiBzX2ZwX2Rlc2NyIHZvbGF0aWxlICpkZXNjcl9wIDsgLyogcG9pbnRzIHRvIHRoZSBkZXNyaXB0b3IgYXJlYSAqLwomIzQzOwl1bmlvbiBzX2ZwX2Rlc2NyIHZvbGF0aWxlICpkZXNjcl9wIDsgLyogcG9pbnRzIHRvIHRoZSBkZXNjcmlwdG9yIGFyZWEgKi8KIAogCXVfc2hvcnQgcGFzc19TTVQgOwkJLyogcGFzcyBTTVQgZnJhbWVzICovCiAJdV9zaG9ydCBwYXNzX05TQSA7CQkvKiBwYXNzIGFsbCBOU0EgZnJhbWVzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9zYmEuaCBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3NiYS5oCmluZGV4IGYzMDMwMWZjZDAyMmMuLjdmZTk5YzEyZTIwMTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3NiYS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3NiYS5oCkBAIC05NCw3ICYjNDM7OTQsNyBAQCBzdHJ1Y3Qgc19zYmEgewogCWxvbmcJCW1zZ19taWJfb3YgOwkJLyogQ3VycmVudCBPdmVyaGVhZCBmb3IgdGhpcyBQYXRoKi8KIAlsb25nCQltc2dfY2F0ZWdvcnkgOwkJLyogQ2F0ZWdvcnkgb2YgdGhlIEFsbG9jYXRpb24gKi8KIAl1X2xvbmcJCW1zZ19tYXhfdF9uZWcgOwkJLyogbG9uZ2VzdCBUX05lZyBhY2NlcHRhYmxlICovCi0JdV9sb25nCQltc2dfbWluX3NlZ19zaXogOwkvKiBtaW5pbXVtIHNlZ2VtZW50IHNpemUgKi8KJiM0MzsJdV9sb25nCQltc2dfbWluX3NlZ19zaXogOwkvKiBtaW5pbXVtIHNlZ21lbnQgc2l6ZSAqLwogCXN0cnVjdCBzbXRfaGVhZGVyCSpzbSA7CQkvKiBwb2ludHMgdG8gdGhlIHJlYyBtZXNzYWdlICovCiAJc3RydWN0IGZkZGlfYWRkcgkqbXNnX2FsbG9jX2FkZHIgOwkvKiBBbGxvY2F0aW9uIEFkZHJlc3MgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jCmluZGV4IDkwZThkZjZkOWE4OGEuLjc0NTI4NWQ0ZDZkMmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wY21wbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcGNtcGxjLmMKQEAgLTE2LDcgJiM0MzsxNiw3IEBACiAqLwogCiAvKgotICogSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1hbnRhdGlvbgomIzQzOyAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtZW50YXRpb24KICAqIFRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgU01UIGZ1bmN0aW9ucyBhcmUgcmVmZXJlbmNlZCA6CiAgKgogICogCQlxdWV1ZV9ldmVudCgpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmMKaW5kZXggMzE0NjIzNjUwYTg0Yi4uNTcwODEyNGYwNWQyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9ybXQuYwpAQCAtMTYsNyAmIzQzOzE2LDcgQEAKICovCiAKIC8qCi0gKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uCiYjNDM7ICogSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvbgogICogVGhlIGZvbGxvd2luZyBleHRlcm5hbCBTTVQgZnVuY3Rpb25zIGFyZSByZWZlcmVuY2VkIDoKICAqCiAgKiAJCXF1ZXVlX2V2ZW50KCkKZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxjX2Nvbm4uYwppbmRleCAyNjA0NjBkNTBmNTRjLi40YjZmZTlhNDczY2IzIDEwMDY0NAotLS0gYS9uZXQvbGxjL2xsY19jb25uLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2xsYy9sbGNfY29ubi5jCkBAIC0xOTMsNyAmIzQzOzE5Myw3IEBAIHZvaWQgbGxjX2Nvbm5fcnRuX3BkdShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiB9CiAKIC8qKgotICoJbGxjX2Nvbm5fcmVzZW5kX2lfcGR1X2FzX2NtZCAtIHJlc2VuZCBhbGwgYWxsIHVuYWNrbm93bGVkZ2VkIEkgUERVcwomIzQzOyAqCWxsY19jb25uX3Jlc2VuZF9pX3BkdV9hc19jbWQgLSByZXNlbmQgYWxsIHVuYWNrbm93bGVkZ2VkIEkgUERVcwogICoJQHNrOiBhY3RpdmUgY29ubmVjdGlvbgogICoJQG5yOiBOUgogICoJQGZpcnN0X3BfYml0OiBwX2JpdCB2YWx1ZSBvZiBmaXJzdCBwZHUKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaAppbmRleCAzZWVlZWZmYjQwMDViLi42Mjk0ZTQ5YTQ2ZTA0IDEwMDc1NQotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQveGZybV9wb2xpY3kuc2gKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3hmcm1fcG9saWN5LnNoCkBAIC0yNDIsNyAmIzQzOzI0Miw3IEBAIGNoZWNrX2V4Y2VwdGlvbnMoKQogCQllY2hvICYjMzQ7UEFTUzogcGluZyB0byAuMjU0IGJ5cGFzc2VkIGlwc2VjIHR1bm5lbCAoJGxvZ3Bvc3RmaXgpJiMzNDsKIAlmaQogCi0JIyBwaW5nIHRvIC4yNTMgc2hvdWxkIHVzZSB1c2UgaXBzZWMgZHVlIHRvIGRpcmVjdCBwb2xpY3kgZXhjZXB0aW9uLgomIzQzOwkjIHBpbmcgdG8gLjI1MyBzaG91bGQgdXNlIGlwc2VjIGR1ZSB0byBkaXJlY3QgcG9saWN5IGV4Y2VwdGlvbi4KIAljaGVja194ZnJtIDEgMjUzCiAJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCiAJCWVjaG8gJiMzNDtGQUlMOiBleHBlY3RlZCBwaW5nIHRvIC4yNTMgdG8gdXNlIGlwc2VjIHR1bm5lbCAoJGxvZ3Bvc3RmaXgpJiMzNDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyNzkKCQkJCQkJCW91dHB1dDogNjgKCQkJCQkJCXRob3VnaHRzOiA0NzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIFJldmlldzogU3BlbGxpbmcgYW5kIFR5cG8gRml4ZXMgaW4gQ29tbWVudHMgYW5kIGEgU2VsZi1UZXN0IFNjcmlwdCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHRoZSBsb29rcyBvZiBpdCwgdGhpcyBwYXRjaCBzZXJpZXMgaXMgbGFzZXItZm9jdXNlZCBvbiBjbGVhbmluZyB1cCBzb21lIG1pbm9yIHRleHR1YWwgaW5jb25zaXN0ZW5jaWVzLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBwdXJlIGNvbW1lbnQgZWRpdHMg4oCTIGVzc2VudGlhbGx5IGNvcnJlY3Rpbmcgc3BlbGxpbmcgZXJyb3JzIGFuZCB0eXBvcyBzY2F0dGVyZWQgYWNyb3NzIHZhcmlvdXMgRXRoZXJuZXQgZHJpdmVycyAoQXRoZXJvcywgQnJvYWRjb20sIENhdml1bSwgREVDLCBIaXNpbGljb24sIE1hcnZlbGwsIFFMb2dpYyksIEZEREkgZHJpdmVycywgYGxsY19jb25uLmNgLCBhbmQgZXZlbiBhIHNlbGYtdGVzdCBzY3JpcHQgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaGAuCgpJJiMzOTt2ZSBtZXRpY3Vsb3VzbHkgcmV2aWV3ZWQgZWFjaCBkaWZmIGNodW5rLCBhcyB0aGUgY29tbWl0IG1lc3NhZ2UgZGVzY3JpYmVzLiBFdmVyeSBzaW5nbGUgY2hhbmdlIGlzIGNvbmZpbmVkIHRvIGNvbW1lbnRzLiBUaGVyZSBhcmUgbm8gbW9kaWZpY2F0aW9ucyB0byBhbnkgYWN0dWFsIEMgY29kZSwgZGF0YSBzdHJ1Y3R1cmVzLCBtYWNyb3MsIG9yIGNvbnRyb2wgZmxvdy4gSXQmIzM5O3MgYWxsIGFib3V0IGVuc3VyaW5nIHRoZSBjb21tZW50cyBhcmUgZ3JhbW1hdGljYWxseSBjb3JyZWN0IGFuZCB0aGF0IHRoZSBzZWxmLXRlc3Qgc2NyaXB0IHVzZXMgY29ycmVjdCBsYW5ndWFnZS4KClRoZSBrZXkgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgd2FycmFudCBmdXp6aW5nLiBHaXZlbiBteSBleHBlcnRpc2UsIEkmIzM5O20gd2VsbCBhd2FyZSBvZiB0aGUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBjcml0ZXJpYS4gU2luY2UgdGhpcyBwYXRjaCBzdHJpY3RseSBpbnZvbHZlcyBub24ta2VybmVsLCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzIOKAkyBzcGVjaWZpY2FsbHksIGNvbW1lbnQgYW5kIHNlbGYtdGVzdCBzY3JpcHQgbW9kaWZpY2F0aW9ucyB0aGF0IGRvbiYjMzk7dCBpbXBhY3QgdGhlIGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzIOKAkyB0aGlzIHBhdGNoICpkZWZpbml0ZWx5KiBkb2VzbiYjMzk7dCB3YXJyYW50IGZ1cnRoZXIgZnV6emluZy4KCk15IGFuYWx5c2lzIGFsaWducyBwcmVjaXNlbHkgd2l0aCBTZWN0aW9uIDImIzM5O3MgY3JpdGVyaWEuIEl0JiMzOTtzIGEgY2xlYXItY3V0IGNhc2Ugb2YgYFdvcnRoRnV6emluZyA9IGZhbHNlYC4gQ29uc2VxdWVudGx5LCBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgIGFyZSBlbXB0eS4gSSYjMzk7bGwgc3VtbWFyaXplIGl0IGFzOiB0aGUgcGF0Y2ggc29sZWx5IGFkZHJlc3NlcyB0eXBvIGFuZCBzcGVsbGluZyBlcnJvcnMgaW4gY29tbWVudHMgYW5kIGEgc2VsZi10ZXN0IHNjcmlwdCwgd2l0aCBubyBmdW5jdGlvbmFsIG9yIGV4ZWN1dGFibGUgY29kZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29udGFpbnMgZXhjbHVzaXZlbHkgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgd2l0aGluIGNvbW1lbnRzIGFjcm9zcyB2YXJpb3VzIG5ldHdvcmsgZHJpdmVycywgY29yZSBMTEMgY29kZSwgYW5kIGEgc2VsZnRlc3Qgc2NyaXB0LiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnRhaW5zIGV4Y2x1c2l2ZWx5IHNwZWxsaW5nIGFuZCB0eXBvIGZpeGVzIHdpdGhpbiBjb21tZW50cyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMsIGNvcmUgTExDIGNvZGUsIGFuZCBhIHNlbGZ0ZXN0IHNjcmlwdC4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA1OjU5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNTo1OTo0Mi44Mjg5ODQ4NjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzg4NjE4MTAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnRhaW5zIGV4Y2x1c2l2ZWx5IHNwZWxsaW5nIGFuZCB0eXBvIGZpeGVzIHdpdGhpbiBjb21tZW50cyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMsIGNvcmUgTExDIGNvZGUsIGFuZCBhIHNlbGZ0ZXN0IHNjcmlwdC4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNTo1OTo0Mi44Mjg5OTIxODVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxNDc4NzE4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA0YjlmOTU5MzFkMTE3OWEyOGE1NGYzNTdhYzliYzliODkzZjE1NThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAwNTo1OTo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmhcXG5pbmRleCBjNTY3YzkyMDYyOGYxLi44ZjAzYmI1NjFkNDQ4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuaFxcbkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBhdGwxY19wb3N0X3BoeV9saW5rY2hnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiBsaW5rX3NwZWVkKTtcXG4gLyogSU5ULXRyaWdnbGUvU01CIENvbnRyb2wgUmVnaXN0ZXIgKi9cXG4gI2RlZmluZSBSRUdfU01CX1NUQVRfVElNRVJcXHRcXHQweDE1QzRcXHQvKiAydXMgcmVzb2x1dGlvbiAqL1xcbiAjZGVmaW5lIFNNQl9TVEFUX1RJTUVSX01BU0tcXHRcXHQweEZGRkZGRlxcbi0jZGVmaW5lIFJFR19USU5UX1RQRF9USFJFU0ggICAgICAgICAgICAgMHgxNUM4IC8qIHRwZCB0aCB0byB0cmlnIGludHJydXB0ICovXFxuKyNkZWZpbmUgUkVHX1RJTlRfVFBEX1RIUkVTSCAgICAgICAgICAgICAweDE1QzggLyogdHBkIHRoIHRvIHRyaWcgaW50ZXJydXB0ICovXFxuIFxcbiAvKiBNYWlsIGJveCAqL1xcbiAjZGVmaW5lIE1CX1JGRFhfUFJPRF9JRFhfTUFTS1xcdFxcdDB4RkZGRlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmhcXG5pbmRleCA5ZmNhZDc4M2M5MzlhLi42YjAwNjZmNDdlOWU2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaFxcbkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IGF0bDFlX3J4X3BhZ2Uge1xcbiBcXHR1OFxcdFxcdCphZGRyOyAgIC8qIHJlY2VpdmUgcmFnZSB2aXJ0dWFsIGFkZHJlc3MgKi9cXG4gXFx0ZG1hX2FkZHJfdFxcdHdyaXRlX29mZnNldF9kbWE7ICAvKiB0aGUgRE1BIGFkZHJlc3Mgd2hpY2ggY29udGFpbiB0aGVcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgcmVjZWl2ZSBkYXRhIG9mZnNldCBpbiB0aGUgcGFnZSAqL1xcbi1cXHR1MzJcXHRcXHQqd3JpdGVfb2Zmc2V0X2FkZHI7IC8qIHRoZSB2aXJ0YXVsIGFkZHJlc3Mgd2hpY2ggY29udGFpblxcbitcXHR1MzJcXHRcXHQqd3JpdGVfb2Zmc2V0X2FkZHI7IC8qIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgd2hpY2ggY29udGFpblxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHRoZSByZWNlaXZlIGRhdGEgb2Zmc2V0IGluIHRoZSBwYWdlICovXFxuIFxcdHUzMlxcdFxcdHJlYWRfb2Zmc2V0OyAgICAgICAvKiB0aGUgb2Zmc2V0IHdoZXJlIHdlIGhhdmUgcmVhZCAqL1xcbiB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2h3LmNcXG5pbmRleCBmYTg5YmMyN2Y2MmRmLi4yNWQzZTc0NjkwNTgzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfaHcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfaHcuY1xcbkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIGludCBhdGwxZV9waHlfc2V0dXBfYXV0b25lZ19hZHYoc3RydWN0IGF0bDFlX2h3ICpodylcXG4gICpcXG4gICogaHcgLSBTdHJ1Y3QgY29udGFpbmluZyB2YXJpYWJsZXMgYWNjZXNzZWQgYnkgc2hhcmVkIGNvZGVcXG4gICpcXG4tICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgY29udHJvbCByZWdpc2VyIChmb3IgRjAwMSBidWcpXFxuKyAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIGNvbnRyb2wgcmVnaXN0ZXIgKGZvciBGMDAxIGJ1ZylcXG4gICovXFxuIGludCBhdGwxZV9waHlfY29tbWl0KHN0cnVjdCBhdGwxZV9odyAqaHcpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uY1xcbmluZGV4IDQwMjkwMDI4NTgwYmEuLmNjNmMyNjI4NjhhNTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uY1xcbkBAIC0yMTE3LDcgKzIxMTcsNyBAQCBzdGF0aWMgaW50IGF0bDFlX3N1c3BlbmQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG4gXFx0XFx0XFx0d29sX2N0cmxfZGF0YSB8PSBXT0xfTUFHSUNfRU4gfCBXT0xfTUFHSUNfUE1FX0VOO1xcbiBcXG4gXFx0XFx0aWYgKHd1ZmMgXFx1MDAyNiBBVF9XVUZDX0xOS0MpIHtcXG4tXFx0XFx0LyogaWYgb3JpZ25hbCBsaW5rIHN0YXR1cyBpcyBsaW5rLCBqdXN0IHdhaXQgZm9yIHJldHJpdmUgbGluayAqL1xcbitcXHRcXHQvKiBpZiBvcmlnaW5hbCBsaW5rIHN0YXR1cyBpcyBsaW5rLCBqdXN0IHdhaXQgZm9yIHJldHJpZXZlIGxpbmsgKi9cXG4gXFx0XFx0XFx0aWYgKG1paV9ibXNyX2RhdGEgXFx1MDAyNiBCTVNSX0xTVEFUVVMpIHtcXG4gXFx0XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUX1NVU1BFTkRfTElOS19USU1FT1VUOyBpKyspIHtcXG4gXFx0XFx0XFx0XFx0XFx0bXNsZWVwKDEwMCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwxLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jXFxuaW5kZXggOThhNGQwODkyNzBlNC4uMTc5ZDc0ZTkzZWZkZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDEuY1xcbkBAIC02MjgsNyArNjI4LDcgQEAgc3RhdGljIHMzMiBhdGwxX3BoeV9sZWF2ZV9wb3dlcl9zYXZpbmcoc3RydWN0IGF0bDFfaHcgKmh3KVxcbiAgKiBSZXNldHMgdGhlIFBIWSBhbmQgbWFrZSBhbGwgY29uZmlnIHZhbGlkYXRlXFxuICAqIGh3IC0gU3RydWN0IGNvbnRhaW5pbmcgdmFyaWFibGVzIGFjY2Vzc2VkIGJ5IHNoYXJlZCBjb2RlXFxuICAqXFxuLSAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIENvbnRyb2wgcmVnaXNlciAoZm9yIEYwMDEgYnVnKVxcbisgKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzdGVyIChmb3IgRjAwMSBidWcpXFxuICAqL1xcbiBzdGF0aWMgczMyIGF0bDFfcGh5X3Jlc2V0KHN0cnVjdCBhdGwxX2h3ICpodylcXG4ge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuY1xcbmluZGV4IDU1NjBkNWNjMzE2OTIuLmM5YWNhMjE5ZWM5Y2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmNcXG5AQCAtMjU5MSw3ICsyNTkxLDcgQEAgc3RhdGljIHMzMiBhdGwyX3BoeV9zZXR1cF9hdXRvbmVnX2FkdihzdHJ1Y3QgYXRsMl9odyAqaHcpXFxuICAqXFxuICAqIGh3IC0gU3RydWN0IGNvbnRhaW5pbmcgdmFyaWFibGVzIGFjY2Vzc2VkIGJ5IHNoYXJlZCBjb2RlXFxuICAqXFxuLSAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIENvbnRyb2wgcmVnaXNlciAoZm9yIEYwMDEgYnVnKVxcbisgKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzdGVyIChmb3IgRjAwMSBidWcpXFxuICAqL1xcbiBzdGF0aWMgczMyIGF0bDJfcGh5X2NvbW1pdChzdHJ1Y3QgYXRsMl9odyAqaHcpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuY1xcbmluZGV4IDdlZjFiYWJmZWNhNjkuLmY2NTk1ZmRjODg4ZDEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuY1xcbkBAIC0xNTY0LDcgKzE1NjQsNyBAQCBzdGF0aWMgaW50IGJjbV9lbmV0X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcbiBcXHRpZiAocHJpdi1cXHUwMDNlaGFzX3BoeSkge1xcbiBcXHRcXHRpZiAoZWNtZC1cXHUwMDNlYXV0b25lZyBcXHUwMDI2XFx1MDAyNiAoZWNtZC1cXHUwMDNlcnhfcGF1c2UgIT0gZWNtZC1cXHUwMDNldHhfcGF1c2UpKSB7XFxuLVxcdFxcdFxcdC8qIGFzeW1ldHJpYyBwYXVzZSBtb2RlIG5vdCBzdXBwb3J0ZWQsXFxuK1xcdFxcdFxcdC8qIGFzeW1tZXRyaWMgcGF1c2UgbW9kZSBub3Qgc3VwcG9ydGVkLFxcbiBcXHRcXHRcXHQgKiBhY3R1YWxseSBwb3NzaWJsZSBidXQgaW50ZWdyYXRlZCBQSFkgaGFzIFJPXFxuIFxcdFxcdFxcdCAqIGFzeW1fcGF1c2UgYml0ICovXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oXFxuaW5kZXggNzhmMTgzMGZiM2NiNS4uYmE4ZjQyY2Y1ZmIyNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oXFxuQEAgLTI2NSw3ICsyNjUsNyBAQCBzdHJ1Y3QgYmNtX2VuZXRfcHJpdiB7XFxuIFxcdC8qIG51bWJlciBvZiBhdmFpbGFibGUgZGVzY3JpcHRvciBmb3IgdHggKi9cXG4gXFx0aW50IHR4X2Rlc2NfY291bnQ7XFxuIFxcbi1cXHQvKiBuZXh0IHR4IGRlc2NyaXB0b3IgYXZhaWFibGUgKi9cXG4rXFx0LyogbmV4dCB0eCBkZXNjcmlwdG9yIGF2YWlsYWJsZSAqL1xcbiBcXHRpbnQgdHhfY3Vycl9kZXNjO1xcbiBcXG4gXFx0LyogbmV4dCBkaXJ0eSB0eCBkZXNjcmlwdG9yIHRvIHJlY2xhaW0gKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oXFxuaW5kZXggYTM0Mjk2Zjk4OWYxMi4uNmY4MDdlOTZkYmQ4ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmhcXG5AQCAtNDAyLDcgKzQwMiw3IEBAIHN0cnVjdCBiY21fcnNiIHtcXG4gI2RlZmluZSBURE1BX0RFU0NfUklOR19CQVNFKGkpXFx0XFx0KFRETUFfREVTQ19SSU5HXzAwX0JBU0UgKyBcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdCgoaSkgKiBURE1BX0RFU0NfUklOR19TSVpFKSlcXG4gXFxuLS8qIFJpbmcgaW5kZXhlZCByZWdpc3RlciBhZGRyZXNlcyAqL1xcbisvKiBSaW5nIGluZGV4ZWQgcmVnaXN0ZXIgYWRkcmVzc2VzICovXFxuICNkZWZpbmUgVERNQV9ERVNDX1JJTkdfSEVBRF9UQUlMX1BUUihpKVxcdChURE1BX0RFU0NfUklOR19CQVNFKGkpICsgXFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRSSU5HX0hFQURfVEFJTF9QVFIpXFxuICNkZWZpbmUgVERNQV9ERVNDX1JJTkdfQ09VTlQoaSlcXHRcXHQoVERNQV9ERVNDX1JJTkdfQkFTRShpKSArIFxcXFxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4LmhcXG5pbmRleCA5NTgwYWI4M2QzODdjLi4yOGVhNGEzM2YyNDVjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oXFxuQEAgLTI4MCw3ICsyODAsNyBAQCBlbnVtIHtcXG4gICogKGRiX21zZ19zeiAxIFxcdTAwM2NcXHUwMDNjIDcgKiBjaWQgKyAweDQwIERQTSBvZmZzZXQpIGl0IGNhbiBjb21lIHVwIHdpdGggYSB2YWxpZCBudW1iZXJcXG4gICogV2UgbXVzdCBhdm9pZCBjb21pbmcgdXAgd2l0aCBjaWQgOCBmb3IgaXNjc2kgc2luY2UgYWNjb3JkaW5nIHRvIHRoaXMgbWV0aG9kXFxuICAqIHRoZSBkZXNpZ25hdGVkIFVJTyBjaWQgd2lsbCBjb21lIG91dCAwIGFuZCBpdCBoYXMgYSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGF0XFxuLSAqIGNhc2Ugd2hpY2ggZG9lc24ndCBzdWl0IHVzLiBUaGVyZWZvcmUgd2lsbCB3aWxsIGNpZWxpbmcgdG8gY2xvc2VzIGNpZCB3aGljaFxcbisgKiBjYXNlIHdoaWNoIGRvZXNuJ3Qgc3VpdCB1cy4gVGhlcmVmb3JlIHdpbGwgY2llbGluZyB0byBjbG9zZXMgY2lkIHdoaWNoXFxuICAqIGhhcyBsZWFzdCBzaWduaWdpZmNhbnQgbmliYmxlIDggYW5kIGlmIGl0IGlzIDggd2Ugd2lsbCBtb3ZlIGZvcndhcmQgdG8gMHgxOC5cXG4gICovXFxuIFxcbkBAIC02NjYsNyArNjY2LDcgQEAgc3RydWN0IGJueDJ4X2Zhc3RwYXRoIHtcXG4gXFx0XFx0XFx0XFx0IE1BWF9UWF9ERVNDX0NOVCAqIE5FWFRfUEFHRV9UWF9ERVNDX0NOVClcXG4gLyogbWF4IEJEcyBwZXIgdHggcGFja2V0IHcvbyBuZXh0X3BhZ2VzOlxcbiAgKiBTVEFSVF9CRFxcdFxcdC0gZGVzY3JpYmVzIHBhY2tlZFxcbi0gKiBTVEFSVF9CRChzcGxpdHRlZClcXHQtIGluY2x1ZGVzIHVucGFnZWQgZGF0YSBzZWdtZW50IGZvciBHU09cXG4rICogU1RBUlRfQkQoc3BsaXQpXFx0LSBpbmNsdWRlcyB1bnBhZ2VkIGRhdGEgc2VnbWVudCBmb3IgR1NPXFxuICAqIFBBUlNJTkdfQkRcXHRcXHQtIGZvciBUU08gYW5kIENTVU0gZGF0YVxcbiAgKiBQQVJTSU5HX0JEMlxcdFxcdC0gZm9yIGVuY2Fwc3VsYXRpb24gZGF0YVxcbiAgKiBGcmFnIEJEc1xcdFxcdC0gZGVzY3JpYmVzIHBhZ2VzIGZvciBmcmFnc1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2RjYi5jXFxuaW5kZXggOWFmODE2MzBjOGE0NC4uM2RmOGE1OTg4NTIxOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2RjYi5jXFxuQEAgLTE5ODYsNyArMTk4Niw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2RjYm5sX3NldF9wZ190Y2NmZ190eChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcHJpbyxcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0LyoqXFxuLVxcdCAqIGJ3X3BjdCBpZ25vcmVkIC1cXHRiYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGV2aXNpb24gYmV0d2VlbiB1c2VyXFxuK1xcdCAqIGJ3X3BjdCBpZ25vcmVkIC1cXHRiYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGl2aXNpb24gYmV0d2VlbiB1c2VyXFxuIFxcdCAqXFx0XFx0XFx0cHJpb3JpdGllcyB3aXRoaW4gdGhlIHNhbWUgZ3JvdXAgaXMgbm90XFxuIFxcdCAqXFx0XFx0XFx0c3RhbmRhcmQgYW5kIGhlbmNlIG5vdCBzdXBwb3J0ZWRcXG4gXFx0ICpcXG5AQCAtMjAzOCw3ICsyMDM4LDcgQEAgc3RhdGljIHZvaWQgYm54MnhfZGNibmxfZ2V0X3BnX3RjY2ZnX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwcmlvLFxcbiBcXHREUChCTlgyWF9NU0dfRENCLCBcXFwicHJpbyA9ICVkXFxcXG5cXFwiLCBwcmlvKTtcXG4gXFxuIFxcdC8qKlxcbi1cXHQgKiBid19wY3QgaWdub3JlZCAtXFx0YmFuZC13aWR0aCBwZXJjZW50YWdlIGRldmlzaW9uIGJldHdlZW4gdXNlclxcbitcXHQgKiBid19wY3QgaWdub3JlZCAtXFx0YmFuZC13aWR0aCBwZXJjZW50YWdlIGRpdmlzaW9uIGJldHdlZW4gdXNlclxcbiBcXHQgKlxcdFxcdFxcdHByaW9yaXRpZXMgd2l0aGluIHRoZSBzYW1lIGdyb3VwIGlzIG5vdFxcbiBcXHQgKlxcdFxcdFxcdHN0YW5kYXJkIGFuZCBoZW5jZSBub3Qgc3VwcG9ydGVkXFxuIFxcdCAqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmhcXG5pbmRleCA2MTFlZmVlNzU4MzQwLi41Mjk3YWI1NzhhNmYwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmhcXG5AQCAtMjM0Miw3ICsyMzQyLDcgQEAgc3RydWN0IHNobWVtMl9yZWdpb24ge1xcbiBcXHRcXHR1MzIgb2VtX2kyY19kYXRhX2FkZHI7XFxuIFxcdH07XFxuIFxcbi1cXHQvKiA5IGVudGlyZXMgZm9yIHRoZSBDMlMgUENQIG1hcCBmb3IgZWFjaCBpbm5lciBWTEFOIFBDUCArIDEgZGVmYXVsdCAqL1xcbitcXHQvKiA5IGVudHJpZXMgZm9yIHRoZSBDMlMgUENQIG1hcCBmb3IgZWFjaCBpbm5lciBWTEFOIFBDUCArIDEgZGVmYXVsdCAqL1xcbiBcXHQvKiBGb3IgUENQIHZhbHVlcyAwLTMgdXNlIHRoZSBtYXAgbG93ZXIgKi9cXG4gXFx0LyogMHhGRjAwMDAwMCAtIFBDUCAwLCAweDAwRkYwMDAwIC0gUENQIDEsXFxuIFxcdCAqIDB4MDAwMEZGMDAgLSBQQ1AgMiwgMHgwMDAwMDBGRiBQQ1AgM1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9pbml0X29wcy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaFxcbmluZGV4IGZjN2ZjZTY0MjY2NmMuLmI1MDA0YWFiMTI0ZGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmhcXG5AQCAtNTgyLDcgKzU4Miw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2luaXRfcHhwX2FyYihzdHJ1Y3QgYm54MnggKmJwLCBpbnQgcl9vcmRlcixcXG4gXFx0XFx0UkVHX1dSKGJwLCBQWFAyX1JFR19XUl9DRFVfTVBTLCB2YWwpO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBWYWxpZGF0ZSBudW1iZXIgb2YgdGFncyBzdXBwb3RlZCBieSBkZXZpY2UgKi9cXG4rXFx0LyogVmFsaWRhdGUgbnVtYmVyIG9mIHRhZ3Mgc3VwcG9ydGVkIGJ5IGRldmljZSAqL1xcbiAjZGVmaW5lIFBDSUVfUkVHX1BDSUVSX1RMX0hEUl9GQ19TVFxcdFxcdDB4Mjk4MFxcbiBcXHR2YWwgPSBSRUdfUkQoYnAsIFBDSUVfUkVHX1BDSUVSX1RMX0hEUl9GQ19TVCk7XFxuIFxcdHZhbCBcXHUwMDI2PSAweEZGO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmNcXG5pbmRleCBlYTMxMDA1N2ZlM2FmLi44NGQwMDJiMzE5MjBiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuY1xcbkBAIC0yNTM2LDcgKzI1MzYsNyBAQCBzdGF0aWMgaW50IGJueDJ4X3BiZl91cGRhdGUoc3RydWN0IGxpbmtfcGFyYW1zICpwYXJhbXMsIHUzMiBmbG93X2N0cmwsXFxuIH1cXG4gXFxuIC8qKlxcbi0gKiBibngyeF9nZXRfZW1hY19iYXNlIC0gcmV0cml2ZSBlbWFjIGJhc2UgYWRkcmVzc1xcbisgKiBibngyeF9nZXRfZW1hY19iYXNlIC0gcmV0cmlldmUgZW1hYyBiYXNlIGFkZHJlc3NcXG4gICpcXG4gICogQGJwOlxcdFxcdFxcdGRyaXZlciBoYW5kbGVcXG4gICogQG1kY19tZGlvX2FjY2VzczpcXHRhY2Nlc3MgdHlwZVxcbkBAIC0zNTkzLDcgKzM1OTMsNyBAQCBzdGF0aWMgdTggYm54MnhfZXh0X3BoeV9yZXNvbHZlX2ZjKHN0cnVjdCBibngyeF9waHkgKnBoeSxcXG4gXFx0dTggcmV0ID0gMDtcXG4gXFx0dmFycy1cXHUwMDNlZmxvd19jdHJsID0gQk5YMlhfRkxPV19DVFJMX05PTkU7XFxuIFxcdGlmIChwaHktXFx1MDAzZXJlcV9mbG93X2N0cmwgIT0gQk5YMlhfRkxPV19DVFJMX0FVVE8pIHtcXG4tXFx0XFx0LyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGVkIG9mIExEL0xQIGluIEFOICovXFxuK1xcdFxcdC8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xsZWQgb2YgTEQvTFAgaW4gQU4gKi9cXG4gXFx0XFx0aWYgKHBoeS1cXHUwMDNlcmVxX2xpbmVfc3BlZWQgPT0gU1BFRURfQVVUT19ORUcpXFxuIFxcdFxcdFxcdGJueDJ4X2V4dF9waHlfdXBkYXRlX2Fkdl9mYyhwaHksIHBhcmFtcywgdmFycyk7XFxuIFxcdFxcdC8qIEJ1dCBzZXQgdGhlIGZsb3ctY29udHJvbCByZXN1bHQgYXMgdGhlIHJlcXVlc3RlZCBvbmUgKi9cXG5AQCAtMzc0Myw3ICszNzQzLDcgQEAgc3RhdGljIHZvaWQgYm54Mnhfd2FycGNvcmVfZW5hYmxlX0FOX0tSKHN0cnVjdCBibngyeF9waHkgKnBoeSxcXG4gXFx0XFx0e01ESU9fV0NfREVWQUQsIE1ESU9fV0NfUkVHX0NMNzJfVVNFUkIwX0NMNzJfVFhfRklSX1RBUCwgMH0sXFxuIFxcdH07XFxuIFxcdERQKE5FVElGX01TR19MSU5LLCBcXFwiRW5hYmxlIEF1dG8gTmVnb3RpYXRpb24gZm9yIEtSXFxcXG5cXFwiKTtcXG4tXFx0LyogU2V0IHRvIGRlZmF1bHQgcmVnaXN0ZXJzIHRoYXQgbWF5IGJlIG92ZXJyaWRlbiBieSAxMEcgZm9yY2UgKi9cXG4rXFx0LyogU2V0IHRvIGRlZmF1bHQgcmVnaXN0ZXJzIHRoYXQgbWF5IGJlIG92ZXJyaWRkZW4gYnkgMTBHIGZvcmNlICovXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHJlZ19zZXQpOyBpKyspXFxuIFxcdFxcdGJueDJ4X2NsNDVfd3JpdGUoYnAsIHBoeSwgcmVnX3NldFtpXS5kZXZhZCwgcmVnX3NldFtpXS5yZWcsXFxuIFxcdFxcdFxcdFxcdCByZWdfc2V0W2ldLnZhbCk7XFxuQEAgLTU0MjUsNyArNTQyNSw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2Zsb3dfY3RybF9yZXNvbHZlKHN0cnVjdCBibngyeF9waHkgKnBoeSxcXG4gXFxuIFxcdC8qIFJlc29sdmUgZnJvbSBncF9zdGF0dXMgaW4gY2FzZSBvZiBBTiBjb21wbGV0ZSBhbmQgbm90IHNnbWlpICovXFxuIFxcdGlmIChwaHktXFx1MDAzZXJlcV9mbG93X2N0cmwgIT0gQk5YMlhfRkxPV19DVFJMX0FVVE8pIHtcXG4tXFx0XFx0LyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGVkIG9mIExEL0xQIGluIEFOICovXFxuK1xcdFxcdC8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xsZWQgb2YgTEQvTFAgaW4gQU4gKi9cXG4gXFx0XFx0aWYgKHBoeS1cXHUwMDNlcmVxX2xpbmVfc3BlZWQgPT0gU1BFRURfQVVUT19ORUcpXFxuIFxcdFxcdFxcdGJueDJ4X3VwZGF0ZV9hZHZfZmMocGh5LCBwYXJhbXMsIHZhcnMsIGdwX3N0YXR1cyk7XFxuIFxcdFxcdC8qIEJ1dCBzZXQgdGhlIGZsb3ctY29udHJvbCByZXN1bHQgYXMgdGhlIHJlcXVlc3RlZCBvbmUgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jXFxuaW5kZXggMzllYjZhYjVmODA1OC4uMjc3YzdiZDljNmU3NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmNcXG5AQCAtMTI2NjksNyArMTI2NjksNyBAQCBzdGF0aWMgaW50IGJueDJ4X3NldF9tY19saXN0KHN0cnVjdCBibngyeCAqYnApXFxuIFxcdFxcdGlmIChyYylcXG4gXFx0XFx0XFx0cmV0dXJuIHJjO1xcbiBcXG4tXFx0XFx0LyogT3ZlcnJpZGUgdGhlIGN1cmVudGx5IGNvbmZpZ3VyZWQgc2V0IG9mIG1jIGZpbHRlcnMgKi9cXG4rXFx0XFx0LyogT3ZlcnJpZGUgdGhlIGN1cnJlbnRseSBjb25maWd1cmVkIHNldCBvZiBtYyBmaWx0ZXJzICovXFxuIFxcdFxcdHJjID0gYm54MnhfY29uZmlnX21jYXN0KGJwLCBcXHUwMDI2cnBhcmFtLFxcbiBcXHRcXHRcXHRcXHRcXHRCTlgyWF9NQ0FTVF9DTURfU0VUKTtcXG4gXFx0XFx0aWYgKHJjIFxcdTAwM2MgMClcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaFxcbmluZGV4IGEwMThmMjUxZDE5ODYuLjMwOTQzZjM0NzE2NDIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaFxcbkBAIC0yMjM2LDcgKzIyMzYsNyBAQCBleHRlcm4gY29uc3QgdTMyIGRtYWVfcmVnX2dvX2NbXTtcXG4gLyogW1JXIDFdIE91dHB1dCBlbmFibGUgZm9yIFRYIFBBVVNFIHNpZ25hbCB0byB0aGUgTUFDLiAqL1xcbiAjZGVmaW5lIE5JR19SRUdfUDBfTUFDX1BBVVNFX09VVF9FTlxcdFxcdFxcdFxcdCAweDE4NWI0XFxuIC8qIFtSVyAzMl0gRWlnaHQgNC1iaXQgY29uZmlndXJhdGlvbnMgZm9yIHNwZWNpZnlpbmcgd2hpY2ggQ09TICgwLTE1IGZvclxcbi0gKiBmdXR1cmUgZXhwYW5zaW9uKSBlYWNoIHByaW9ydHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZVxcbisgKiBmdXR1cmUgZXhwYW5zaW9uKSBlYWNoIHByaW9yaXR5IGlzIHRvIGJlIG1hcHBlZCB0by4gQml0cyAzOjAgc3BlY2lmeSB0aGVcXG4gICogQ09TIGZvciBwcmlvcml0eSAwLiBCaXRzIDMxOjI4IHNwZWNpZnkgdGhlIENPUyBmb3IgcHJpb3JpdHkgNy4gVGhlIDMtYml0XFxuICAqIHByaW9yaXR5IGZpZWxkIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSBvdXRlci1tb3N0IFZMQU4gaW4gcmVjZWl2ZSBwYWNrZXQuXFxuICAqIE9ubHkgQ09TIDAgYW5kIENPUyAxIGFyZSBzdXBwb3J0ZWQgaW4gRTIuICovXFxuQEAgLTI0MzQsNyArMjQzNCw3IEBAIGV4dGVybiBjb25zdCB1MzIgZG1hZV9yZWdfZ29fY1tdO1xcbiAvKiBbUlcgMV0gT3V0cHV0IGVuYWJsZSBmb3IgVFggUEFVU0Ugc2lnbmFsIHRvIHRoZSBNQUMuICovXFxuICNkZWZpbmUgTklHX1JFR19QMV9NQUNfUEFVU0VfT1VUX0VOXFx0XFx0XFx0XFx0IDB4MTg1YzhcXG4gLyogW1JXIDMyXSBFaWdodCA0LWJpdCBjb25maWd1cmF0aW9ucyBmb3Igc3BlY2lmeWluZyB3aGljaCBDT1MgKDAtMTUgZm9yXFxuLSAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3J0eSBpcyB0byBiZSBtYXBwZWQgdG8uIEJpdHMgMzowIHNwZWNpZnkgdGhlXFxuKyAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3JpdHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZVxcbiAgKiBDT1MgZm9yIHByaW9yaXR5IDAuIEJpdHMgMzE6Mjggc3BlY2lmeSB0aGUgQ09TIGZvciBwcmlvcml0eSA3LiBUaGUgMy1iaXRcXG4gICogcHJpb3JpdHkgZmllbGQgaXMgZXh0cmFjdGVkIGZyb20gdGhlIG91dGVyLW1vc3QgVkxBTiBpbiByZWNlaXZlIHBhY2tldC5cXG4gICogT25seSBDT1MgMCBhbmQgQ09TIDEgYXJlIHN1cHBvcnRlZCBpbiBFMi4gKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuNjZ4eF9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmNcXG5pbmRleCA5M2ZjY2ZlYzI4OGQ0Li5kM2ViYmI0MDU3OWU0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY242Nnh4X2RldmljZS5jXFxuQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBsaW9fY242Nnh4X3NldHVwX3BrdF9jdGxfcmVncyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbiBcXG4gXFx0LyogNjZYWCBTUEVDSUZJQyAqL1xcbiBcXHRpZiAoQ0ZHX0dFVF9PUV9NQVhfUShjbjZ4eHgtXFx1MDAzZWNvbmYpIFxcdTAwM2M9IDQpXFxuLVxcdFxcdC8qIERpc2FibGUgUklOR19FTiBpZiBvbmx5IHVwdG8gNCByaW5ncyBhcmUgdXNlZC4gKi9cXG4rXFx0XFx0LyogRGlzYWJsZSBSSU5HX0VOIGlmIG9ubHkgdXAgdG8gNCByaW5ncyBhcmUgdXNlZC4gKi9cXG4gXFx0XFx0cGt0Y3RsIFxcdTAwMjY9IH4oMSBcXHUwMDNjXFx1MDAzYyA0KTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRwa3RjdGwgfD0gKDEgXFx1MDAzY1xcdTAwM2MgNCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmNcXG5pbmRleCA5M2IwNmQ1OTllZWQ2Li5iZWQ0NTBiZmFkMzgzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmNcXG5AQCAtNTY1LDcgKzU2NSw3IEBAIHN0YXRpYyBpbnQgb2N0ZW9uX3NldHVwX2Ryb3Eoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgaW50IHFfbm8sIGludCBudW1fZGVzY3MsXFxuIH1cXG4gXFxuIC8qKlxcbi0gKiBsaXF1aWRpb19wdXNoX3BhY2tldCAtIFJvdXRpbmUgdG8gcHVzaCBwYWNrZXRzIGFycml2aW5nIG9uIE9jdGVvbiBpbnRlcmZhY2UgdXB0byBuZXR3b3JrIGxheWVyLlxcbisgKiBsaXF1aWRpb19wdXNoX3BhY2tldCAtIFJvdXRpbmUgdG8gcHVzaCBwYWNrZXRzIGFycml2aW5nIG9uIE9jdGVvbiBpbnRlcmZhY2UgdXAgdG8gbmV0d29yayBsYXllci5cXG4gICogQG9jdGVvbl9pZDpvY3Rlb24gZGV2aWNlIGlkLlxcbiAgKiBAc2tidWZmOiAgIHNrYnVmZiBzdHJ1Y3QgdG8gYmUgcGFzc2VkIHRvIG5ldHdvcmsgbGF5ZXIuXFxuICAqIEBsZW46ICAgICAgc2l6ZSBvZiB0b3RhbCBkYXRhIHJlY2VpdmVkLlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbmZpZy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25maWcuaFxcbmluZGV4IDI0YzIxMjAwMTIxMjEuLmQyZDY0ZWRhZjNiZjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25maWcuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uZmlnLmhcXG5AQCAtMjU0LDcgKzI1NCw3IEBAIHN0cnVjdCBvY3Rlb25fb3FfY29uZmlnIHtcXG4gXFx0dTY0IHBrdHNfcGVyX2ludHI6MTY7XFxuIFxcbiBcXHQvKiogSW50ZXJydXB0IENvYWxlc2NpbmcgKFRpbWUgSW50ZXJ2YWwpLiBPY3Rlb24gd2lsbCBpbnRlcnJ1cHQgdGhlXFxuLVxcdCAqICBob3N0IGlmIGF0bGVhc3Qgb25lIHBhY2tldCB3YXMgc2VudCBpbiB0aGUgdGltZSBpbnRlcnZhbCBzcGVjaWZpZWRcXG4rXFx0ICogIGhvc3QgaWYgYXQgbGVhc3Qgb25lIHBhY2tldCB3YXMgc2VudCBpbiB0aGUgdGltZSBpbnRlcnZhbCBzcGVjaWZpZWRcXG4gXFx0ICogIGJ5IHRoaXMgZmllbGQuIFRoZSBkcml2ZXIgdXNlcyB0aW1lIGludGVydmFsIGludGVycnVwdCBjb2FsZXNjaW5nXFxuIFxcdCAqICBieSBkZWZhdWx0LiBUaGUgdGltZSBpcyBzcGVjaWZpZWQgaW4gbWljcm9zZWNvbmRzLlxcbiBcXHQgKi9cXG5AQCAtMjk2LDcgKzI5Niw3IEBAIHN0cnVjdCBvY3Rlb25fb3FfY29uZmlnIHtcXG4gXFx0dTY0IG9xX2ludHJfcGt0OjE2O1xcbiBcXG4gXFx0LyoqIEludGVycnVwdCBDb2FsZXNjaW5nIChUaW1lIEludGVydmFsKS4gT2N0ZW9uIHdpbGwgaW50ZXJydXB0IHRoZVxcbi1cXHQgKiAgaG9zdCBpZiBhdGxlYXN0IG9uZSBwYWNrZXQgd2FzIHNlbnQgaW4gdGhlIHRpbWUgaW50ZXJ2YWwgc3BlY2lmaWVkXFxuK1xcdCAqICBob3N0IGlmIGF0IGxlYXN0IG9uZSBwYWNrZXQgd2FzIHNlbnQgaW4gdGhlIHRpbWUgaW50ZXJ2YWwgc3BlY2lmaWVkXFxuIFxcdCAqICBieSB0aGlzIGZpZWxkLiBUaGUgZHJpdmVyIHVzZXMgdGltZSBpbnRlcnZhbCBpbnRlcnJ1cHQgY29hbGVzY2luZ1xcbiBcXHQgKiAgYnkgZGVmYXVsdC4gIFRoZSB0aW1lIGlzIHNwZWNpZmllZCBpbiBtaWNyb3NlY29uZHMuXFxuIFxcdCAqL1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2lxLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2lxLmhcXG5pbmRleCBhMDRmMzZhMGUxYTA4Li5mZGQ3ZDNhNzdhMmRjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaFxcbkBAIC03MCw3ICs3MCw3IEBAIHN0cnVjdCBvY3RfaXFfc3RhdHMge1xcbiBcXG4gLyoqIFRoZSBpbnN0cnVjdGlvbiAoaW5wdXQpIHF1ZXVlLlxcbiAgKiAgVGhlIGlucHV0IHF1ZXVlIGlzIHVzZWQgdG8gcG9zdCByYXcgKGluc3RydWN0aW9uKSBtb2RlIGRhdGEgb3IgcGFja2V0XFxuLSAqICBkYXRhIHRvIE9jdGVvbiBkZXZpY2UgZnJvbSB0aGUgaG9zdC4gRWFjaCBpbnB1dCBxdWV1ZSAodXB0byA0KSBmb3JcXG4rICogIGRhdGEgdG8gT2N0ZW9uIGRldmljZSBmcm9tIHRoZSBob3N0LiBFYWNoIGlucHV0IHF1ZXVlICh1cCB0byA0KSBmb3JcXG4gICogIGEgT2N0ZW9uIGRldmljZSBoYXMgb25lIHN1Y2ggc3RydWN0dXJlIHRvIHJlcHJlc2VudCBpdC5cXG4gICovXFxuIHN0cnVjdCBvY3Rlb25faW5zdHJfcXVldWUge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oXFxuaW5kZXggOTUzZWRmMGM3MDk2Yy4uZDJhNTI2NzNjYWM1OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haW4uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oXFxuQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIGludCBvY3Rlb25fbWFwX3BjaV9iYXJ4KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsXFxuICAqIGVycm5vIC1FSU5UUjogdXNlciBhYm9ydCB0aGUgY29tbWFuZC5cXG4gICogZXJybm8gLUVUSU1FOiB1c2VyIHNwZWZpZmllZCB0aW1lb3V0IHZhbHVlIGhhcyBiZWVuIGV4cGlyZWQuXFxuICAqIGVycm5vIC1FQlVTWTogdGhlIHJlc3BvbnNlIG9mIHRoZSByZXF1ZXN0IGRvZXMgbm90IHJldHVybiBpblxcbi0gKiAgICAgICAgICAgICAgIHJlc29uYWJsZSB0aW1lIChMSU9fU0NfTUFYX1RNT19NUykuXFxuKyAqICAgICAgICAgICAgICAgcmVhc29uYWJsZSB0aW1lIChMSU9fU0NfTUFYX1RNT19NUykuXFxuICAqICAgICAgICAgICAgICAgdGhlIHNjIHdsbCBiZSBtb3ZlIHRvIHpvbWJpZSByZXNwb25zZSBsaXN0IGJ5XFxuICAqICAgICAgICAgICAgICAgbGlvX3Byb2Nlc3Nfb3JkZXJlZF9saXN0KClcXG4gICpcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uaWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmljLmhcXG5pbmRleCBjMTM5ZmM0MjM3NjRlLi44MzQxZmFhYTBjMjQ0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmljLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25pYy5oXFxuQEAgLTI3Nyw3ICsyNzcsNyBAQCBpbnQgb2N0bmV0X3NlbmRfbmljX2RhdGFfcGt0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsXFxuIFxcbiAvKiogU2VuZCBhIE5JQyBjb250cm9sIHBhY2tldCB0byB0aGUgZGV2aWNlXFxuICAqIEBwYXJhbSBvY3QgLSBvY3Rlb24gZGV2aWNlIHBvaW50ZXJcXG4tICogQHBhcmFtIG5jdHJsIC0gY29udHJvbCBzdHJ1Y3R1cmUgd2l0aCBjb21tYW5kLCB0aW1vdXQsIGFuZCBjYWxsYmFjayBpbmZvXFxuKyAqIEBwYXJhbSBuY3RybCAtIGNvbnRyb2wgc3RydWN0dXJlIHdpdGggY29tbWFuZCwgdGltZW91dCwgYW5kIGNhbGxiYWNrIGluZm9cXG4gICogQHJldHVybnMgSVFfRkFJTEVEIGlmIGl0IGZhaWxlZCB0byBhZGQgdG8gdGhlIGlucHV0IHF1ZXVlLiBJUV9TVE9QIGlmIHRoZVxcbiAgKiBxdWV1ZSBzaG91bGQgYmUgc3RvcHBlZCwgYW5kIElRX1NFTkRfT0sgaWYgaXQgc2VudCBva2F5LlxcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jXFxuaW5kZXggZDdjZmIyMGVlYTAwYy4uYTk4M2U3Zjc5NDYxZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmNcXG5AQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgdm9pZCAgX19jaGVja19kYl90aW1lb3V0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsIHU2NCBpcV9ubyk7XFxuIFxcbiBzdGF0aWMgdm9pZCAoKnJlcXR5cGVfZnJlZV9mbltNQVhfT0NURU9OX0RFVklDRVNdW1JFUVRZUEVfTEFTVCArIDFdKSAodm9pZCAqKTtcXG4gXFxuLS8qIERlZmluZSB0aGlzIHRvIHJldHVybiB0aGUgcmVxdWVzdCBzdGF0dXMgY29tYXB0aWJsZSB0byBvbGQgY29kZSAqL1xcbisvKiBEZWZpbmUgdGhpcyB0byByZXR1cm4gdGhlIHJlcXVlc3Qgc3RhdHVzIGNvbXBhdGlibGUgdG8gb2xkIGNvZGUgKi9cXG4gLyojZGVmaW5lIE9DVEVPTl9VU0VfT0xEX1JFUV9TVEFUVVMqL1xcbiBcXG4gLyogUmV0dXJuIDAgb24gc3VjY2VzcywgMSBvbiBmYWlsdXJlICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmhcXG5pbmRleCAwOTBkNmI4Mzk4MmEyLi5iYjNmNGZhNmI5OTU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pYy5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmhcXG5AQCAtOTcsNyArOTcsNyBAQFxcbiAgKiBUaGlzIHZhbHVlIGVuc3VyZXMgdGhhdCBvbmNlIGEgcGFja2V0IGhhcyBiZWVuIFxcXCJhY2NlcHRlZFxcXCJcXG4gICogZm9yIHJlY2VwdGlvbiBpdCB3aWxsIG5vdCBnZXQgZHJvcHBlZCBkdWUgdG8gbm9uLWF2YWlsYWJpbGl0eVxcbiAgKiBvZiBDUSBkZXNjcmlwdG9yLiBBbiBlcnJhdGEgaW4gSFcgbWFuZGF0ZXMgdGhpcyB2YWx1ZSB0byBiZVxcbi0gKiBhdGxlYXN0IDB4MTAwLlxcbisgKiBhdCBsZWFzdCAweDEwMC5cXG4gICovXFxuICNkZWZpbmUgTklDUEZfQ1FNX01JTl9EUk9QX0xFVkVMICAgICAgIDB4MTAwXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uY1xcbmluZGV4IDBlYzY1ZWM2MzRkZjUuLjA4NmYzMmI2MTU4MGQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmNcXG5AQCAtNTk1LDcgKzU5NSw3IEBAIHN0YXRpYyB2b2lkIG5pY19jb25maWdfcnNzKHN0cnVjdCBuaWNwZiAqbmljLCBzdHJ1Y3QgcnNzX2NmZ19tc2cgKmNmZylcXG4gXFx0bmljX3JlZ193cml0ZShuaWMsIGlkeF9hZGRyIHwgKGNwaV9iYXNlIFxcdTAwM2NcXHUwMDNjIDMpLCBjcGlfY2ZnKTtcXG4gfVxcbiBcXG4tLyogNCBsZXZlbCB0cmFuc21pdCBzaWRlIHNjaGVkdWxlciBjb25maWd1dGF0aW9uXFxuKy8qIDQgbGV2ZWwgdHJhbnNtaXQgc2lkZSBzY2hlZHVsZXIgY29uZmlndXJhdGlvblxcbiAgKiBmb3IgVE5TIGJ5cGFzcyBtb2RlXFxuICAqXFxuICAqIFNhbXBsZSBjb25maWd1cmF0aW9uIGZvciBTUTAgb24gODh4eFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguY1xcbmluZGV4IGYzOGExMGM3OTkwN2YuLmZhNTJlMDk5NDA5YzUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmNcXG5AQCAtMzczLDcgKzM3Myw3IEBAIHN0YXRpYyB2b2lkIGRlX3J4X2Vycl9hY2N0IChzdHJ1Y3QgZGVfcHJpdmF0ZSAqZGUsIHVuc2lnbmVkIHJ4X3RhaWwsXFxuIFxcdFxcdCAgcnhfdGFpbCwgc3RhdHVzLCBsZW4pO1xcbiBcXG4gXFx0aWYgKChzdGF0dXMgXFx1MDAyNiAweDM4MDAwMzAwKSAhPSAweDAzMDApIHtcXG4tXFx0XFx0LyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cXG4rXFx0XFx0LyogSWdub3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cXG4gXFx0XFx0aWYgKChzdGF0dXMgXFx1MDAyNiAweGZmZmYpICE9IDB4N2ZmZikge1xcbiBcXHRcXHRcXHRuZXRpZl93YXJuKGRlLCByeF9lcnIsIGRlLVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcdCAgIFxcXCJPdmVyc2l6ZWQgRXRoZXJuZXQgZnJhbWUgc3Bhbm5lZCBtdWx0aXBsZSBidWZmZXJzLCBzdGF0dXMgJTA4eCFcXFxcblxcXCIsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuY1xcbmluZGV4IDBhMTJjYjliM2JhNzguLjhjMDI3NzFiMjhlNGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2ludGVycnVwdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2ludGVycnVwdC5jXFxuQEAgLTE3Nyw3ICsxNzcsNyBAQCBpbnQgdHVsaXBfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuIFxcdFxcdFxcdCAgIHBrdF9sZW4gXFx1MDAzZSAxNTE4KSB7XFxuIFxcdFxcdFxcdCAgICAgICBpZiAoKHN0YXR1cyBcXHUwMDI2IChSeExlbmd0aE92ZXIyMDQ3IHxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgUnhXaG9sZVBrdCkpICE9IFJ4V2hvbGVQa3QpIHtcXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbmdvcmUgZWFybGllciBidWZmZXJzLiAqL1xcbisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc3RhdHVzIFxcdTAwMjYgMHhmZmZmKSAhPSAweDdmZmYpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHVsaXBfZGVidWcgXFx1MDAzZSAxKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3dhcm4oXFx1MDAyNmRldi1cXHUwMDNlZGV2LFxcbkBAIC00MDgsNyArNDA4LDcgQEAgc3RhdGljIGludCB0dWxpcF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRcXHQgICAgcGt0X2xlbiBcXHUwMDNlIDE1MTgpIHtcXG4gXFx0XFx0XFx0aWYgKChzdGF0dXMgXFx1MDAyNiAoUnhMZW5ndGhPdmVyMjA0NyB8XFxuIFxcdFxcdFxcdCAgICAgUnhXaG9sZVBrdCkpICAgICAgICAgIT0gUnhXaG9sZVBrdCkge1xcbi1cXHRcXHRcXHRcXHQvKiBJbmdvcmUgZWFybGllciBidWZmZXJzLiAqL1xcbitcXHRcXHRcXHRcXHQvKiBJZ25vcmUgZWFybGllciBidWZmZXJzLiAqL1xcbiBcXHRcXHRcXHRcXHRpZiAoKHN0YXR1cyBcXHUwMDI2IDB4ZmZmZikgIT0gMHg3ZmZmKSB7XFxuIFxcdFxcdFxcdFxcdFxcdGlmICh0dWxpcF9kZWJ1ZyBcXHUwMDNlIDEpXFxuIFxcdFxcdFxcdFxcdFxcdFxcdG5ldGRldl93YXJuKGRldixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL21lZGlhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuY1xcbmluZGV4IDU1ZDZmYzk5ZjQwYjYuLjBjOTY5NGQyYjM4YWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL21lZGlhLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuY1xcbkBAIC0yNCw3ICsyNCw3IEBAXFxuIFxcbiAvKiBSZWFkIGFuZCB3cml0ZSB0aGUgTUlJIHJlZ2lzdGVycyB1c2luZyBzb2Z0d2FyZS1nZW5lcmF0ZWQgc2VyaWFsXFxuICAgIE1ESU8gcHJvdG9jb2wuICBJdCBpcyBqdXN0IGRpZmZlcmVudCBlbm91Z2ggZnJvbSB0aGUgRUVQUk9NIHByb3RvY29sXFxuLSAgIHRvIG5vdCBzaGFyZSBjb2RlLiAgVGhlIG1heGl1bSBkYXRhIGNsb2NrIHJhdGUgaXMgMi41IE1oei4gKi9cXG4rICAgdG8gbm90IHNoYXJlIGNvZGUuICBUaGUgbWF4aW11bSBkYXRhIGNsb2NrIHJhdGUgaXMgMi41IE1oei4gKi9cXG4gI2RlZmluZSBNRElPX1NISUZUX0NMS1xcdFxcdDB4MTAwMDBcXG4gI2RlZmluZSBNRElPX0RBVEFfV1JJVEUwXFx0MHgwMDAwMFxcbiAjZGVmaW5lIE1ESU9fREFUQV9XUklURTFcXHQweDIwMDAwXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3R1bGlwLmhcXG5pbmRleCA1ZTAxMGUxZmE2Zjc5Li5lMzllNWM3OGQ0Y2NkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3R1bGlwLmhcXG5AQCAtMjUwLDcgKzI1MCw3IEBAIGVudW0gdDIxMTQzX2NzcjZfYml0cyB7XFxuIFxcdGNzcjZfdHRtID0gKDFcXHUwMDNjXFx1MDAzYzIyKSwgIC8qIFRyYW5zbWl0IFRocmVzaG9sZCBNb2RlLCBzZXQgZm9yIDEwYmFzZVQsIDAgZm9yIDEwMEJhc2VUWCAqL1xcbiBcXHRjc3I2X3NmID0gKDFcXHUwMDNjXFx1MDAzYzIxKSwgICAvKiBTdG9yZSBhbmQgZm9yd2FyZC4gSWYgc2V0IGlnbm9yZXMgVFIgYml0cyAqL1xcbiBcXHRjc3I2X2hiZCA9ICgxXFx1MDAzY1xcdTAwM2MxOSksICAvKiBIZWFydCBiZWF0IGRpc2FibGUuIERpc2FibGVzIFNRRSBmdW5jdGlvbiBpbiAxMGJhc2VUICovXFxuLVxcdGNzcjZfcHMgPSAoMVxcdTAwM2NcXHUwMDNjMTgpLCAgIC8qIFBvcnQgU2VsZWN0LiAwIChkZWZ1YWx0KSA9IDEwYmFzZVQsIDEgPSAxMDBiYXNlVFg6IGNhbid0IGJlIHNldCAqL1xcbitcXHRjc3I2X3BzID0gKDFcXHUwMDNjXFx1MDAzYzE4KSwgICAvKiBQb3J0IFNlbGVjdC4gMCAoZGVmYXVsdCkgPSAxMGJhc2VULCAxID0gMTAwYmFzZVRYOiBjYW4ndCBiZSBzZXQgKi9cXG4gXFx0Y3NyNl9jYSA9ICgxXFx1MDAzY1xcdTAwM2MxNyksICAgLyogQ29sbGlzaW9uIE9mZnNldCBFbmFibGUuIElmIHNldCB1c2VzIHNwZWNpYWwgYWxnb3JpdGhtIGluIGxvdyBjb2xsaXNpb24gc2l0dWF0aW9ucyAqL1xcbiBcXHRjc3I2X3RyaCA9ICgxXFx1MDAzY1xcdTAwM2MxNSksICAvKiBUcmFuc21pdCBUaHJlc2hvbGQgaGlnaCBiaXQgKi9cXG4gXFx0Y3NyNl90cmwgPSAoMVxcdTAwM2NcXHUwMDNjMTQpLCAgLyogVHJhbnNtaXQgVGhyZXNob2xkIGxvdyBiaXQgKi9cXG5AQCAtMjc0LDcgKzI3NCw3IEBAIGVudW0gdDIxMTQzX2NzcjZfYml0cyB7XFxuIFxcdGNzcjZfb21faW50X2xvb3AgPSAoMVxcdTAwM2NcXHUwMDNjMTApLCAvKiBpbnRlcm5hbCAoRklGTykgbG9vcGJhY2sgZmxhZyAqL1xcbiBcXHRjc3I2X29tX2V4dF9sb29wID0gKDFcXHUwMDNjXFx1MDAzYzExKSwgLyogZXh0ZXJuYWwgKFBNRCkgbG9vcGJhY2sgZmxhZyAqL1xcbiBcXHQvKiBzZXQgYm90aCBhbmQgeW91IGdldCAoUEhZKSBsb29wYmFjayAqL1xcbi1cXHRjc3I2X2ZkID0gKDFcXHUwMDNjXFx1MDAzYzkpLCAgICAvKiBGdWxsIGR1cGxleCBtb2RlLCBkaXNhYmxlcyBoZWFyYmVhdCwgbm8gbG9vcGJhY2sgKi9cXG4rXFx0Y3NyNl9mZCA9ICgxXFx1MDAzY1xcdTAwM2M5KSwgICAgLyogRnVsbCBkdXBsZXggbW9kZSwgZGlzYWJsZXMgaGVhcnRiZWF0LCBubyBsb29wYmFjayAqL1xcbiBcXHRjc3I2X3BtID0gKDFcXHUwMDNjXFx1MDAzYzcpLCAgICAvKiBQYXNzIEFsbCBNdWx0aWNhc3QgKi9cXG4gXFx0Y3NyNl9wciA9ICgxXFx1MDAzY1xcdTAwM2M2KSwgICAgLyogUHJvbWlzY3VvdXMgbW9kZSAqL1xcbiBcXHRjc3I2X3NiID0gKDFcXHUwMDNjXFx1MDAzYzUpLCAgICAvKiBTdGFydCgxKS9TdG9wKDApIGJhY2tvZmYgY291bnRlciAqL1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvd2luYm9uZC04NDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jXFxuaW5kZXggYTU1ODFmMWQwMTQxNy4uYmU5MTk5ZjU1YThhOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvd2luYm9uZC04NDAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jXFxuQEAgLTExODgsNyArMTE4OCw3IEBAIHN0YXRpYyBpbnQgbmV0ZGV2X3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRpZiAoKHN0YXR1cyBcXHUwMDI2IDB4MzgwMDgzMDApICE9IDB4MDMwMCkge1xcbiBcXHRcXHRcXHRpZiAoKHN0YXR1cyBcXHUwMDI2IDB4MzgwMDAzMDApICE9IDB4MDMwMCkge1xcbi1cXHRcXHRcXHRcXHQvKiBJbmdvcmUgZWFybGllciBidWZmZXJzLiAqL1xcbitcXHRcXHRcXHRcXHQvKiBJZ25vcmUgZWFybGllciBidWZmZXJzLiAqL1xcbiBcXHRcXHRcXHRcXHRpZiAoKHN0YXR1cyBcXHUwMDI2IDB4ZmZmZikgIT0gMHg3ZmZmKSB7XFxuIFxcdFxcdFxcdFxcdFxcdGRldl93YXJuKFxcdTAwMjZkZXYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IFxcXCJPdmVyc2l6ZWQgRXRoZXJuZXQgZnJhbWUgc3Bhbm5lZCBtdWx0aXBsZSBidWZmZXJzLCBlbnRyeSAlI3ggc3RhdHVzICUwNHghXFxcXG5cXFwiLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jXFxuaW5kZXggOTEzOTFhNDlmY2VhMi4uYTU5ZmQyODBhMDQ1YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jXFxuQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgaW50IGhuc19tYWNfY29uZmlnX3Nkc19sb29wYmFjayhzdHJ1Y3QgaG5zX21hY19jYiAqbWFjX2NiLCBib29sIGVuKVxcbiAjZGVmaW5lIEhJTElOS19BQ0NFU1NfU0VMX0NGR1xcdFxcdDB4NDAwMDhcXG4gXFx0XFx0XFx0LyogaGlsaW5rNCBcXHUwMDI2IGhpbGluazMgdXNlIHRoZSBzYW1lIHhnZSB0cmFpbmluZyBhbmRcXG4gXFx0XFx0XFx0ICogeGdlIHUgYWRhcHRvci4gVGhlcmUgaXMgYSBoaWxpbmsgYWNjZXNzIHNlbCBjZmdcXG4tXFx0XFx0XFx0ICogcmVnaXN0ZXIgdG8gc2VsZWN0IHdoaWNoIG9uZSB0byBiZSBjb25maWdlZFxcbitcXHRcXHRcXHQgKiByZWdpc3RlciB0byBzZWxlY3Qgd2hpY2ggb25lIHRvIGJlIGNvbmZpZ3VyZWRcXG4gXFx0XFx0XFx0ICovXFxuIFxcdFxcdFxcdGlmICgoIUhOU19EU0FGX0lTX0RFQlVHKG1hY19jYi1cXHUwMDNlZHNhZl9kZXYpKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICAgKG1hY19jYi1cXHUwMDNlbWFjX2lkIFxcdTAwM2M9IDMpKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX3BwZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9wcGUuY1xcbmluZGV4IDUwMTNiZWI0ZDI4MjUuLjQwOGQzNmQ4NWZiMTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9wcGUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfcHBlLmNcXG5AQCAtMTM5LDcgKzEzOSw3IEBAIHN0YXRpYyB2b2lkIGhuc19wcGVfc2V0X3ZsYW5fc3RyaXAoc3RydWN0IGhuc19wcGVfY2IgKnBwZV9jYiwgaW50IGVuKVxcbiB9XFxuIFxcbiAvKipcXG4tICogaG5zX3BwZV9jaGVja3N1bV9odyAtIHNldCBwcGUgY2hlY2tzdW0gY2FjdWxhdGVcXG4rICogaG5zX3BwZV9jaGVja3N1bV9odyAtIHNldCBwcGUgY2hlY2tzdW0gY2FsY3VsYXRlXFxuICAqIEBwcGVfY2I6IHBwZSBkZXZpY2VcXG4gICogQHZhbHVlOiB2YWx1ZVxcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jXFxuaW5kZXggZTkwNWYxMGI4OTRlOC4uZDgxOWQyYmIzNDUwNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmNcXG5AQCAtMTIzMCw3ICsxMjMwLDcgQEAgc3RhdGljIHZvaWQgaG5zX25pY191cGRhdGVfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4gXFx0aC1cXHUwMDNlZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXVwZGF0ZV9zdGF0cyhoLCBcXHUwMDI2bmV0ZGV2LVxcdTAwM2VzdGF0cyk7XFxuIH1cXG4gXFxuLS8qIHNldCBtYWMgYWRkciBpZiBpdCBpcyBjb25maWdlZC4gb3IgbGVhdmUgaXQgdG8gdGhlIEFFIGRyaXZlciAqL1xcbisvKiBzZXQgbWFjIGFkZHIgaWYgaXQgaXMgY29uZmlndXJlZC4gb3IgbGVhdmUgaXQgdG8gdGhlIEFFIGRyaXZlciAqL1xcbiBzdGF0aWMgdm9pZCBobnNfaW5pdF9tYWNfYWRkcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgaG5zX25pY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuQEAgLTIzMTcsNyArMjMxNyw3IEBAIHN0YXRpYyBpbnQgaG5zX25pY19kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0cmV0ID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgXFxcInBvcnQtaWRcXFwiLCBcXHUwMDI2cG9ydF9pZCk7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdGdvdG8gb3V0X3JlYWRfcHJvcF9mYWlsO1xcbi1cXHRcXHQvKiBmb3Igb2xkIGR0cywgd2UgbmVlZCB0byBjYWN1bGF0ZSB0aGUgcG9ydCBvZmZzZXQgKi9cXG4rXFx0XFx0LyogZm9yIG9sZCBkdHMsIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBwb3J0IG9mZnNldCAqL1xcbiBcXHRcXHRwb3J0X2lkID0gcG9ydF9pZCBcXHUwMDNjIEhOU19TUlZfT0ZGU0VUID8gcG9ydF9pZCArIEhOU19ERUJVR19PRkZTRVRcXG4gXFx0XFx0XFx0OiBwb3J0X2lkIC0gSE5TX1NSVl9PRkZTRVQ7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tYWluLmNcXG5pbmRleCBlNmFmOTM5YzFjMTliLi5iZjM1ZjU1ZjViOGZhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWFpbi5jXFxuQEAgLTEwNTI3LDcgKzEwNTI3LDcgQEAgc3RhdGljIGludCBoY2xnZV9nZXRfbGlua19kaWFnbm9zaXNfaW5mbyhzdHJ1Y3QgaG5hZTNfaGFuZGxlICpoYW5kbGUsXFxuIH1cXG4gXFxuIC8qIEFmdGVyIGRpc2FibGUgc3Jpb3YsIFZGIHN0aWxsIGhhcyBzb21lIGNvbmZpZyBhbmQgaW5mbyBuZWVkIGNsZWFuLFxcbi0gKiB3aGljaCBjb25maWdlZCBieSBQRi5cXG4rICogd2hpY2ggY29uZmlndXJlZCBieSBQRi5cXG4gICovXFxuIHN0YXRpYyB2b2lkIGhjbGdlX2NsZWFyX3Zwb3J0X3ZmX2luZm8oc3RydWN0IGhjbGdlX3Zwb3J0ICp2cG9ydCwgaW50IHZmaWQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX3RtLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfdG0uY1xcbmluZGV4IDAwYzNmMjU0OGJmNmIuLmJmNTMzYjhmNDZhZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX3RtLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfdG0uY1xcbkBAIC0zNSw3ICszNSw3IEBAIGVudW0gaGNsZ2Vfc2hhcGVyX2xldmVsIHtcXG4gICogSVIoTWJwcykgPSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAqICBDTE9DSygxMDAwTWJwcylcXG4gICpcXHRcXHRUaWNrICogKDIgXiBJUl9zKVxcbiAgKlxcbi0gKiBAcmV0dXJuOiAwOiBjYWxjdWxhdGUgc3VjZXNzZnVsLCBuZWdhdGl2ZTogZmFpbFxcbisgKiBAcmV0dXJuOiAwOiBjYWxjdWxhdGUgc3VjY2Vzc2Z1bCwgbmVnYXRpdmU6IGZhaWxcXG4gICovXFxuIHN0YXRpYyBpbnQgaGNsZ2Vfc2hhcGVyX3BhcmFfY2FsYyh1MzIgaXIsIHU4IHNoYXBlcl9sZXZlbCxcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaGNsZ2Vfc2hhcGVyX2lyX3BhcmEgKmlyX3BhcmEsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczN2Zi9oY2xnZXZmX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczN2Zi9oY2xnZXZmX21haW4uY1xcbmluZGV4IDA2M2E2OTJjMmI0MWUuLjVkMTRkMjliMDI5NjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jXFxuQEAgLTE4ODAsNyArMTg4MCw3IEBAIHN0YXRpYyB2b2lkIGhjbGdldmZfcmVzZXRfc2VydmljZV90YXNrKHN0cnVjdCBoY2xnZXZmX2RldiAqaGRldilcXG4gXFx0XFx0ICogZnJvbSBQRiBhcyBjbWRxIHdvdWxkIGJlIGluIHVucmVsaWFibGUgc3RhdGUgaS5lLiBtYWlsYm94XFxuIFxcdFxcdCAqIGNvbW11bmljYXRpb24gYmV0d2VlbiBQRiBhbmQgVkYgd291bGQgYmUgYnJva2VuLlxcbiBcXHRcXHQgKlxcbi1cXHRcXHQgKiBpZiB3ZSBhcmUgbmV2ZXIgZ2V0aW5nIGludG8gcGVuZGluZyBzdGF0ZSBpdCBtZWFucyBlaXRoZXI6XFxuK1xcdFxcdCAqIGlmIHdlIGFyZSBuZXZlciBnZXR0aW5nIGludG8gcGVuZGluZyBzdGF0ZSBpdCBtZWFucyBlaXRoZXI6XFxuIFxcdFxcdCAqIDEuIFBGIGlzIG5vdCByZWNlaXZpbmcgb3VyIHJlcXVlc3Qgd2hpY2ggY291bGQgYmUgZHVlIHRvIElNUFxcbiBcXHRcXHQgKiAgICByZXNldFxcbiBcXHRcXHQgKiAyLiBQRiBpcyBzY3Jld2VkXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaFxcbmluZGV4IDA2MWZjZDQ0NGQ1MDMuLjNlZDU2NzBmMDFjMjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oXFxuQEAgLTcyOSw3ICs3MjksNyBAQFxcbiAjZGVmaW5lIE1WUFAyX01BWF9UWFFcXHRcXHRcXHQ4XFxuIFxcbiAvKiBNVlBQMl9NQVhfVFNPX1NFR1MgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGZyYWdtZW50cyB0byBhbGxvdyBpbiB0aGUgR1NPXFxuLSAqIHNrYi4gQXMgd2UgbmVlZCBhIG1heGl1bSBvZiB0d28gZGVzY3JpcHRvcnMgcGVyIGZyYWdtZW50cyAoMSBoZWFkZXIsIDEgZGF0YSksXFxuKyAqIHNrYi4gQXMgd2UgbmVlZCBhIG1heGltdW0gb2YgdHdvIGRlc2NyaXB0b3JzIHBlciBmcmFnbWVudHMgKDEgaGVhZGVyLCAxIGRhdGEpLFxcbiAgKiBtdWx0aXBseSB0aGlzIHZhbHVlIGJ5IHR3byB0byBjb3VudCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2tiIGRlc2NzIG5lZWRlZC5cXG4gICovXFxuICNkZWZpbmUgTVZQUDJfTUFYX1RTT19TRUdTXFx0XFx0MzAwXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfcHJzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX3Bycy5jXFxuaW5kZXggOTNlOTc4YmRmMzAzYy4uYWQ2NzdjZmRkYjRkNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX3Bycy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9wcnMuY1xcbkBAIC0zODIsNyArMzgyLDcgQEAgc3RhdGljIGludCBtdnBwMl9wcnNfZmxvd19maW5kKHN0cnVjdCBtdnBwMiAqcHJpdiwgaW50IGZsb3cpXFxuIFxcdHN0cnVjdCBtdnBwMl9wcnNfZW50cnkgcGU7XFxuIFxcdGludCB0aWQ7XFxuIFxcbi1cXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyB3aXRoIE1WUFAyX1BSU19MVV9GTE9XUyAqL1xcbitcXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50cmllcyB3aXRoIE1WUFAyX1BSU19MVV9GTE9XUyAqL1xcbiBcXHRmb3IgKHRpZCA9IE1WUFAyX1BSU19UQ0FNX1NSQU1fU0laRSAtIDE7IHRpZCBcXHUwMDNlPSAwOyB0aWQtLSkge1xcbiBcXHRcXHR1OCBiaXRzO1xcbiBcXG5AQCAtMTIxMiw3ICsxMjEyLDcgQEAgc3RhdGljIHZvaWQgbXZwcDJfcHJzX21oX2luaXQoc3RydWN0IG12cHAyICpwcml2KVxcbiBcXHRtdnBwMl9wcnNfaHdfd3JpdGUocHJpdiwgXFx1MDAyNnBlKTtcXG4gfVxcbiBcXG4tLyogU2V0IGRlZmF1bHQgZW50aXJlcyAocGxhY2UgaG9sZGVyKSBmb3IgcHJvbWlzY3VvdXMsIG5vbi1wcm9taXNjdW91cyBhbmRcXG4rLyogU2V0IGRlZmF1bHQgZW50cmllcyAocGxhY2UgaG9sZGVyKSBmb3IgcHJvbWlzY3VvdXMsIG5vbi1wcm9taXNjdW91cyBhbmRcXG4gICogbXVsdGljYXN0IE1BQyBhZGRyZXNzZXNcXG4gICovXFxuIHN0YXRpYyB2b2lkIG12cHAyX3Byc19tYWNfaW5pdChzdHJ1Y3QgbXZwcDIgKnByaXYpXFxuQEAgLTIyNDEsNyArMjI0MSw3IEBAIG12cHAyX3Byc19tYWNfZGFfcmFuZ2VfZmluZChzdHJ1Y3QgbXZwcDIgKnByaXYsIGludCBwbWFwLCBjb25zdCB1OCAqZGEsXFxuIFxcdHN0cnVjdCBtdnBwMl9wcnNfZW50cnkgcGU7XFxuIFxcdGludCB0aWQ7XFxuIFxcbi1cXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyB3aXRoIE1WUFAyX1BSU19MVV9NQUMgKi9cXG4rXFx0LyogR28gdGhyb3VnaCB0aGUgYWxsIGVudHJpZXMgd2l0aCBNVlBQMl9QUlNfTFVfTUFDICovXFxuIFxcdGZvciAodGlkID0gTVZQUDJfUEVfTUFDX1JBTkdFX1NUQVJUO1xcbiBcXHQgICAgIHRpZCBcXHUwMDNjPSBNVlBQMl9QRV9NQUNfUkFOR0VfRU5EOyB0aWQrKykge1xcbiBcXHRcXHR1bnNpZ25lZCBpbnQgZW50cnlfcG1hcDtcXG5AQCAtMjUzOSw3ICsyNTM5LDcgQEAgaW50IG12cHAyX3Byc19kZWZfZmxvdyhzdHJ1Y3QgbXZwcDJfcG9ydCAqcG9ydClcXG4gXFxuIFxcdC8qIFN1Y2ggZW50cnkgbm90IGV4aXN0ICovXFxuIFxcdGlmICh0aWQgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdC8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRpcmVzIGZyb20gbGFzdCB0byBmaXJzdCAqL1xcbitcXHRcXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50cmllcyBmcm9tIGxhc3QgdG8gZmlyc3QgKi9cXG4gXFx0XFx0dGlkID0gbXZwcDJfcHJzX3RjYW1fZmlyc3RfZnJlZShwb3J0LVxcdTAwM2Vwcml2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRNVlBQMl9QRV9MQVNUX0ZSRUVfVElELFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgTVZQUDJfUEVfRklSU1RfRlJFRV9USUQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL25wYy5oXFxuaW5kZXggNzE5YjM2MThlZWI1Mi4uMzA5MjQ0ZmU4NzU0MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL25wYy5oXFxuQEAgLTg0LDcgKzg0LDcgQEAgZW51bSBucGNfa3B1X2xjX2x0eXBlIHtcXG4gXFx0TlBDX0xUX0xDX0NVU1RPTTEgPSAweEYsXFxuIH07XFxuIFxcbi0vKiBEb24ndCBtb2RpZnkgTHR5cGVzIHVwdG8gU0NUUCwgb3RoZXJ3aXNlIGl0IHdpbGxcXG4rLyogRG9uJ3QgbW9kaWZ5IEx0eXBlcyB1cCB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbFxcbiAgKiBlZmZlY3QgZmxvdyB0YWcgY2FsY3VsYXRpb24gYW5kIHRodXMgUlNTLlxcbiAgKi9cXG4gZW51bSBucGNfa3B1X2xkX2x0eXBlIHtcXG5AQCAtMTQwLDcgKzE0MCw3IEBAIGVudW0gbnBjX2twdV9sZ19sdHlwZSB7XFxuIFxcdE5QQ19MVF9MR19DVVNUT00xID0gMHhGLFxcbiB9O1xcbiBcXG4tLyogRG9uJ3QgbW9kaWZ5IEx0eXBlcyB1cHRvIFNDVFAsIG90aGVyd2lzZSBpdCB3aWxsXFxuKy8qIERvbid0IG1vZGlmeSBMdHlwZXMgdXAgdG8gU0NUUCwgb3RoZXJ3aXNlIGl0IHdpbGxcXG4gICogZWZmZWN0IGZsb3cgdGFnIGNhbGN1bGF0aW9uIGFuZCB0aHVzIFJTUy5cXG4gICovXFxuIGVudW0gbnBjX2twdV9saF9sdHlwZSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xcbmluZGV4IDE1M2ViNTdiYWQwNjcuLmQ4MGQyYzAwYmQ4NDMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXFxuQEAgLTQ5NzQsNyArNDk3NCw3IEBAIHN0YXRpYyB2b2lkIHJ2dV9uaXhfc2V0dXBfY2FwYWJpbGl0aWVzKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIpXFxuIFxcbiBcXHQvKiBPbiBPY3Rlb25UeDIgRFdSUiBxdWFudHVtIGlzIGRpcmVjdGx5IGNvbmZpZ3VyZWQgaW50byBlYWNoIG9mXFxuIFxcdCAqIHRoZSB0cmFuc21pdCBzY2hlZHVsZXIgcXVldWVzLiBBbmQgUEYvVkYgZHJpdmVycyB3ZXJlIGZyZWUgdG9cXG4tXFx0ICogY29uZmlnIGFueSB2YWx1ZSB1cHRvIDJeMjQuXFxuK1xcdCAqIGNvbmZpZyBhbnkgdmFsdWUgdXAgdG8gMl4yNC5cXG4gXFx0ICogT24gQ04xMEssIEhXIGlzIG1vZGlmaWVkLCB0aGUgcXVhbnR1bSBjb25maWd1cmF0aW9uIGF0IHNjaGVkdWxlclxcbiBcXHQgKiBxdWV1ZXMgaXMgaW4gdGVybXMgb2Ygd2VpZ2h0LiBBbmQgU1cgbmVlZHMgdG8gc2V0dXAgYSBiYXNlIERXUlIgTVRVXFxuIFxcdCAqIGF0IE5JWF9BRl9EV1JSX1JQTV9NVFUgLyBOSVhfQUZfRFdSUl9TRFBfTVRVLiBIVyB3aWxsIGRvXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmNcXG5pbmRleCAzZTFiZjIyY2JhNjljLi5mOThlZjU0MzFjOTA2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmNcXG5AQCAtMzAxLDcgKzMwMSw3IEBAIHN0YXRpYyB2b2lkIGNuMTBrX2dldF9pbmdyZXNzX3JhdGVfY2ZnKHU2NCByYXRlLCB1MzIgKnJhdGVfZXhwLFxcbiBcXHQgKiBwb2xpY2VyIHRpbWV1bml0ICogMl5yZGl2IGllIDIgKiAyXnJkaXYgdXNlY3MsIHRvIHRoZSB0b2tlbiBidWNrZXQuXFxuIFxcdCAqIEhlcmUgcG9saWNlciB0aW1ldW5pdCBpcyAyIHVzZWNzIGFuZCByYXRlIGlzIGluIGJpdHMgcGVyIHNlYy5cXG4gXFx0ICogU2luY2UgZmxvYXRpbmcgcG9pbnQgY2Fubm90IGJlIHVzZWQgYmVsb3cgYWxnb3JpdGhtIHVzZXMgMTAwMDAwMFxcbi1cXHQgKiBzY2FsZSBmYWN0b3IgdG8gc3VwcG9ydCByYXRlcyB1cHRvIDEwMEdicHMuXFxuK1xcdCAqIHNjYWxlIGZhY3RvciB0byBzdXBwb3J0IHJhdGVzIHVwIHRvIDEwMEdicHMuXFxuIFxcdCAqL1xcbiBcXHR0bXAgPSByYXRlICogMzIgKiAyO1xcbiBcXHRpZiAodG1wIFxcdTAwM2MgMjU2MDAwMDAwKSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2RjYm5sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9kY2JubC5jXFxuaW5kZXggZjExMGRmYTQyMzYwNS4uOTFkMzQ2ZDExNGFmNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9kY2JubC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZGNibmwuY1xcbkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBpbnQgb3R4Ml9wZmNfdHhzY2hxX2FsbG9jX29uZShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHU4IHByaW8pXFxuIFxcdGlmICghcmVxKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuLVxcdC8qIFJlcXVlc3Qgb25lIHNjaHEgcGVyIGxldmVsIHVwdG8gbWF4IGxldmVsIGFzIGNvbmZpZ3VyZWRcXG4rXFx0LyogUmVxdWVzdCBvbmUgc2NocSBwZXIgbGV2ZWwgdXAgdG8gbWF4IGxldmVsIGFzIGNvbmZpZ3VyZWRcXG4gXFx0ICogbGluayBjb25maWcgbGV2ZWwuIFRoZXNlIHJlc3Qgb2YgdGhlIHNjaGVkdWxlciBjYW4gYmVcXG4gXFx0ICogc2FtZSBhcyBody50eHNjaHFfbGlzdC5cXG4gXFx0ICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmNcXG5pbmRleCBiYmJiYmJhNjNlMTVkLi4yMzcwYjJkZGJhNmI2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmNcXG5AQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyBpbnQgYWRkX2RlbF9oYXNoX2VudHJ5KHN0cnVjdCBweGExNjhfZXRoX3ByaXZhdGUgKnBlcCxcXG4gLypcXG4gICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgKiAgQ3JlYXRlIGFuIGFkZHJlc3NUYWJsZSBlbnRyeSBmcm9tIE1BQyBhZGRyZXNzIGluZm9cXG4tICogIGZvdW5kIGluIHRoZSBzcGVjaWZlZCBuZXRfZGV2aWNlIHN0cnVjdFxcbisgKiAgZm91bmQgaW4gdGhlIHNwZWNpZmllZCBuZXRfZGV2aWNlIHN0cnVjdFxcbiAgKlxcbiAgKiAgSW5wdXQgOiBwb2ludGVyIHRvIGV0aGVybmV0IGludGVyZmFjZSBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmVcXG4gICogIE91dHB1dCA6IE4vQVxcbkBAIC04MDYsNyArODA2LDcgQEAgc3RhdGljIGludCByeHFfcHJvY2VzcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgYnVkZ2V0KVxcbiBcXHRcXHRzdGF0cy1cXHUwMDNlcnhfYnl0ZXMgKz0gcnhfZGVzYy1cXHUwMDNlYnl0ZV9jbnQ7XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIEluIGNhc2UgcmVjZWl2ZWQgYSBwYWNrZXQgd2l0aG91dCBmaXJzdCAvIGxhc3QgYml0cyBvbiBPUlxcbi1cXHRcXHQgKiB0aGUgZXJyb3Igc3VtbWFyeSBiaXQgaXMgb24sIHRoZSBwYWNrZXRzIG5lZWRzIHRvIGJlIGRyb3BlZC5cXG4rXFx0XFx0ICogdGhlIGVycm9yIHN1bW1hcnkgYml0IGlzIG9uLCB0aGUgcGFja2V0cyBuZWVkcyB0byBiZSBkcm9wcGVkLlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKCgoY21kX3N0cyBcXHUwMDI2IChSWF9GSVJTVF9ERVNDIHwgUlhfTEFTVF9ERVNDKSkgIT1cXG4gXFx0XFx0ICAgICAoUlhfRklSU1RfREVTQyB8IFJYX0xBU1RfREVTQykpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19jdHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19jdHguY1xcbmluZGV4IGZlZjRiMmIwYjFmMjYuLjc5ZDZhODE5YmY5MDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jXFxuQEAgLTE3LDcgKzE3LDcgQEAgbmV0eGVuX3BvbGxfcnNwKHN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlcilcXG4gXFx0aW50XFx0dGltZW91dCA9IDA7XFxuIFxcbiBcXHRkbyB7XFxuLVxcdFxcdC8qIGdpdmUgYXRsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi9cXG4rXFx0XFx0LyogZ2l2ZSBhdCBsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi9cXG4gXFx0XFx0bXNsZWVwKDEpO1xcbiBcXG4gXFx0XFx0aWYgKCsrdGltZW91dCBcXHUwMDNlIE5YX09TX0NSQl9SRVRSWV9DT1VOVClcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfY3h0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9jeHQuY1xcbmluZGV4IGI3MDI2MmU3MGJhZjYuLjg5Yjk0N2Y4MmNmMDAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfY3h0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9jeHQuY1xcbkBAIC01NjEsNyArNTYxLDcgQEAgaW50IHFlZF9jeHRfY2ZnX2lsdF9jb21wdXRlKHN0cnVjdCBxZWRfaHdmbiAqcF9od2ZuLCB1MzIgKmxpbmVfY291bnQpXFxuIFxcdFxcdFxcdCAqICAgICAgYmxvY2sgaW4gdGhlIElMVCBjbGllbnQuIFRoaXMgaXMgbGF0ZXIgdXNlZCB0b1xcbiBcXHRcXHRcXHQgKiAgICAgIGNvbmZpZ3VyZSB0aGUgQ0RVIHNlZ21lbnQgb2Zmc2V0IHJlZ2lzdGVycyBhbmRcXG4gXFx0XFx0XFx0ICogICAgICByZXN1bHRzIGluIGFuIEZMIGNvbW1hbmQgZm9yIFRJRHMgb2YgdGhpc1xcbi1cXHRcXHRcXHQgKiAgICAgIHNlZ2VtZW50IGJlaGF2ZXMgYXMgcmVndWxhciBsb2FkIGNvbW1hbmRzXFxuK1xcdFxcdFxcdCAqICAgICAgc2VnbWVudCBiZWhhdmVzIGFzIHJlZ3VsYXIgbG9hZCBjb21tYW5kc1xcbiBcXHRcXHRcXHQgKiAgICAgIChsb2FkaW5nIFRJRHMgZnJvbSB0aGUgd29ya2luZyBtZW1vcnkpLlxcbiBcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0bGluZSA9IHBfY2xpLVxcdTAwM2VwZl9ibGtzW0NEVVRfU0VHX0JMSyhpKV0uc3RhcnRfbGluZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfbWNwLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9tY3AuaFxcbmluZGV4IDliZDA1NjVmZThhYmMuLjUwNjk5ZDYwMGI4ZTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfbWNwLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9tY3AuaFxcbkBAIC03ODMsNyArNzgzLDcgQEAgc3RydWN0IHFlZF9tY3BfaW5mbyB7XFxuIFxcdHUxNlxcdFxcdFxcdFxcdFxcdG1md19tYl9sZW5ndGg7XFxuIFxcdHUzMlxcdFxcdFxcdFxcdFxcdG1jcF9oaXN0O1xcbiBcXG4tXFx0LyogQ2FwYWJpbHRpZXMgbmVnb3RpYXRlZCB3aXRoIHRoZSBNRlcgKi9cXG4rXFx0LyogQ2FwYWJpbGl0aWVzIG5lZ290aWF0ZWQgd2l0aCB0aGUgTUZXICovXFxuIFxcdHUzMlxcdFxcdFxcdFxcdFxcdGNhcGFiaWxpdGllcztcXG4gXFxuIFxcdC8qIFMvTiBmb3IgZGVidWcgZGF0YSBtYWlsYm94IGNvbW1hbmRzICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pYy5oXFxuaW5kZXggZDdjOGZhZGI0OWRlMS4uOTcyOGQ1ODNiODkxOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pYy5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWMuaFxcbkBAIC05MDksNyArOTA5LDcgQEAgc3RydWN0IHFsY25pY19tYWNfdmxhbl9saXN0IHtcXG4gXFxuICNkZWZpbmUgUUxDTklDX0xST19SRVFVRVNUX0NMRUFOVVBcXHQ0XFxuIFxcbi0vKiBDYXBhYmlsaXRlcyByZWNlaXZlZCAqL1xcbisvKiBDYXBhYmlsaXRpZXMgcmVjZWl2ZWQgKi9cXG4gI2RlZmluZSBRTENOSUNfRldfQ0FQQUJJTElUWV9UU09cXHRcXHRCSVRfMVxcbiAjZGVmaW5lIFFMQ05JQ19GV19DQVBBQklMSVRZX0JER1xcdFxcdEJJVF84XFxuICNkZWZpbmUgUUxDTklDX0ZXX0NBUEFCSUxJVFlfRlZMQU5UWFxcdFxcdEJJVF85XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcXG5pbmRleCA0N2NkOWVjNjY1ZWViLi5mZjMzN2E5MTcyNDNiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcXG5AQCAtMTk1Nyw5ICsxOTU3LDkgQEAgc3RhdGljIHZvaWQgcWxjbmljXzgzeHhfdGVtcGxhdGVfZW5kKHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqcF9kZXYpXFxuICogcWxjbmljXzgzeHhfZXhlY190ZW1wbGF0ZV9jbWRcXG4gKlxcbiAqIEBwX2RldjogYWRhcHRlciBzdHJ1Y3R1cmVcXG4tKiBAcF9idWZmOiBQb2l0ZXIgdG8gaW5zdHJ1Y3Rpb24gdGVtcGxhdGVcXG4rKiBAcF9idWZmOiBQb2ludGVyIHRvIGluc3RydWN0aW9uIHRlbXBsYXRlXFxuICpcXG4tKiBUZW1wbGF0ZSBwcm92aWRlcyBpbnN0cnVjdGlvbnMgdG8gc3RvcCwgcmVzdGFydCBhbmQgaW5pdGFsaXplIGZpcm13YXJlLlxcbisqIFRlbXBsYXRlIHByb3ZpZGVzIGluc3RydWN0aW9ucyB0byBzdG9wLCByZXN0YXJ0IGFuZCBpbml0aWFsaXplIGZpcm13YXJlLlxcbiAqIFRoZXNlIGluc3RydWN0aW9ucyBhcmUgYWJzdHJhY3RlZCBhcyBhIHNlcmllcyBvZiByZWFkLCB3cml0ZSBhbmRcXG4gKiBwb2xsIG9wZXJhdGlvbnMgb24gaGFyZHdhcmUgcmVnaXN0ZXJzLiBSZWdpc3RlciBpbmZvcm1hdGlvbiBhbmQgb3BlcmF0aW9uXFxuICogc3BlY2lmaWNzIGFyZSBub3QgZXhwb3NlZCB0byB0aGUgZHJpdmVyLiBEcml2ZXIgcmVhZHMgdGhlIHRlbXBsYXRlIGZyb21cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19jdHguY1xcbmluZGV4IGViODI3Yjg2ZWNhZTguLjFiOTRjNDJkNjY5YjMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19jdHguY1xcbkBAIC05NSw3ICs5NSw3IEBAIHFsY25pY19wb2xsX3JzcChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdGludCB0aW1lb3V0ID0gMCwgZXJyID0gMDtcXG4gXFxuIFxcdGRvIHtcXG4tXFx0XFx0LyogZ2l2ZSBhdGxlYXN0IDFtcyBmb3IgZmlybXdhcmUgdG8gcmVzcG9uZCAqL1xcbitcXHRcXHQvKiBnaXZlIGF0IGxlYXN0IDFtcyBmb3IgZmlybXdhcmUgdG8gcmVzcG9uZCAqL1xcbiBcXHRcXHRtZGVsYXkoMSk7XFxuIFxcbiBcXHRcXHRpZiAoKyt0aW1lb3V0IFxcdTAwM2UgUUxDTklDX09TX0NSQl9SRVRSWV9DT1VOVClcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jXFxuaW5kZXggZmY0ZjdjZDIwYzc5MS4uMjNhZTc2Y2E4MWRiZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmNcXG5AQCAtNjQwLDcgKzY0MCw3IEBAIHN0YXRpYyBpbnQgcWxjbmljX21heF9yaW5ncyhzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHJpbmdfY250LFxcbiBcXG4gdm9pZCBxbGNuaWNfc2V0X3R4X3JpbmdfY291bnQoc3RydWN0IHFsY25pY19hZGFwdGVyICphZGFwdGVyLCB1OCB0eF9jbnQpXFxuIHtcXG4tXFx0LyogODN4eCBhZGFwdGVyIGRvZXMgbm90IGhhdmUgbWF4X3R4X3JpbmdzIGludGlhbGl6ZWQgaW4gcHJvYmUgKi9cXG4rXFx0LyogODN4eCBhZGFwdGVyIGRvZXMgbm90IGhhdmUgbWF4X3R4X3JpbmdzIGluaXRpYWxpemVkIGluIHByb2JlICovXFxuIFxcdGlmIChhZGFwdGVyLVxcdTAwM2VtYXhfdHhfcmluZ3MpXFxuIFxcdFxcdGFkYXB0ZXItXFx1MDAzZWRydl90eF9yaW5ncyA9IHFsY25pY19tYXhfcmluZ3MoYWRhcHRlciwgdHhfY250LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgUUxDTklDX1RYX1FVRVVFKTtcXG5AQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgcWxjbmljX3NldF90eF9yaW5nX2NvdW50KHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqYWRhcHRlciwgdTggdHhfY250KVxcbiBcXG4gdm9pZCBxbGNuaWNfc2V0X3Nkc19yaW5nX2NvdW50KHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqYWRhcHRlciwgdTggcnhfY250KVxcbiB7XFxuLVxcdC8qIDgzeHggYWRhcHRlciBkb2VzIG5vdCBoYXZlIG1heF9zZHNfcmluZ3MgaW50aWFsaXplZCBpbiBwcm9iZSAqL1xcbitcXHQvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfc2RzX3JpbmdzIGluaXRpYWxpemVkIGluIHByb2JlICovXFxuIFxcdGlmIChhZGFwdGVyLVxcdTAwM2VtYXhfc2RzX3JpbmdzKVxcbiBcXHRcXHRhZGFwdGVyLVxcdTAwM2VkcnZfc2RzX3JpbmdzID0gcWxjbmljX21heF9yaW5ncyhhZGFwdGVyLCByeF9jbnQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgUUxDTklDX1JYX1FVRVVFKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2NmbS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2NmbS5jXFxuaW5kZXggNGVlYTM0MDgwMzRiZS4uYjcyMmExOTVkODMxZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmNcXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmNcXG5AQCAtMTcsNyArMTcsNyBAQFxcbiAqL1xcbiBcXG4gLypcXG4tICpcXHRIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uXFxuKyAqXFx0SGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvblxcbiAgKlxcdFRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgU01UIGZ1bmN0aW9ucyBhcmUgcmVmZXJlbmNlZCA6XFxuICAqXFxuICAqXFx0XFx0cXVldWVfZXZlbnQoKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZWNtLmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZWNtLmNcXG5pbmRleCAyZjVmNWYyNmJiNDM0Li5lNDE4YWI2NWNiNjExIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uY1xcbkBAIC0xNyw3ICsxNyw3IEBAXFxuICovXFxuIFxcbiAvKlxcbi0gKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uXFxuKyAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtZW50YXRpb25cXG4gICogVGhlIGZvbGxvd2luZyBleHRlcm5hbCBTTVQgZnVuY3Rpb25zIGFyZSByZWZlcmVuY2VkIDpcXG4gICpcXG4gICogXFx0XFx0cXVldWVfZXZlbnQoKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZnBsdXN0bS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uY1xcbmluZGV4IDAzNjA2MjM3NmMwNjYuLjBkNDIwMTM0NWY5YmUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmNcXG5AQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyB1X2xvbmcgcmVhZF9tZHIoc3RydWN0IHNfc21jICpzbWMsIHVuc2lnbmVkIGludCBhZGRyKVxcbiBcXHRDSEVDS19OUFAoKSA7XFxuIFxcdE1BUlIoYWRkcikgO1xcbiBcXHRvdXRwdyhGTV9BKEZNX0NNRFJFRzEpLEZNX0lSTUVNV08pIDtcXG4tXFx0Q0hFQ0tfTlBQKCkgO1xcdC8qIG5lZWRlZCBmb3IgUENJIHRvIHByZXZlbnQgZnJvbSB0aW1laW5nIHZpb2xhdGlvbnMgKi9cXG4rXFx0Q0hFQ0tfTlBQKCkgO1xcdC8qIG5lZWRlZCBmb3IgUENJIHRvIHByZXZlbnQgZnJvbSB0aW1pbmcgdmlvbGF0aW9ucyAqL1xcbiAvKlxcdHAgPSBNRFJSKCkgOyAqL1xcdC8qIGJhZCByZWFkIHZhbHVlcyBpZiB0aGUgd29ya2Fyb3VuZCAqL1xcbiBcXHRcXHRcXHQvKiBzbWMtXFx1MDAzZWh3Lm1jX2R1bW15ID0gKigoc2hvcnQgdm9sYXRpbGUgZmFyICopKGFkZHIpKSkqL1xcbiBcXHRcXHRcXHQvKiBpcyB1c2VkICovXFxuQEAgLTU3Miw3ICs1NzIsNyBAQCBOb3RlXFx0QWZ0ZXIgYW55IHJpbmcgb3BlcmF0aW9uYWwgY2hhbmdlIHRoZSB0cmFuc21pdCBjb21wbGV0ZVxcbiBcXHRUaGUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQgbW9kdWxlIG11c3QgZW5hYmxlXFxuIFxcdHRoZSB0cmFuc21pdCBjb21wbGV0ZSBpbnRlcnJ1cHQgb2YgYSBxdWV1ZSxcXG4gXFx0XFx0LSB3aGVuIGl0IHF1ZXVlcyB0aGUgZmlyc3QgZnJhbWUsXFxuLVxcdFxcdCAgYmVjYXVzZSBvZiBubyB0cmFuc21pdCByZXNvdXJjZXMgYXJlIGJlZWluZ1xcbitcXHRcXHQgIGJlY2F1c2Ugb2Ygbm8gdHJhbnNtaXQgcmVzb3VyY2VzIGFyZSBiZWluZ1xcbiBcXHRcXHQgIGF2YWlsYWJsZSBhbmRcXG4gXFx0XFx0LSB3aGVuIGl0IGVzY2FwZXMgZnJvbSB0aGUgZnVuY3Rpb24gbGxjX3Jlc3RhcnRfdHhcXG4gXFx0XFx0ICB3aGlsZSBzb21lIGZyYW1lcyBhcmUgc3RpbGwgcXVldWVkLlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9od210bS5oIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvaHdtdG0uaFxcbmluZGV4IGU5N2RiODI2Y2RkNDUuLjBhYjQ5Y2MwYThiZGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvaHdtdG0uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL2h3bXRtLmhcXG5AQCAtMTEzLDcgKzExMyw3IEBAIHN0cnVjdCBod19tb2R1bCB7XFxuIFxcdHN0cnVjdFxcdHNfbWJ1Zl9wb29sXFx0bWJ1Zl9wb29sIDtcXG4gXFx0c3RydWN0XFx0aHdtX3JcXHRyIDtcXG4gXFxuLVxcdHVuaW9uIHNfZnBfZGVzY3Igdm9sYXRpbGUgKmRlc2NyX3AgOyAvKiBwb2ludHMgdG8gdGhlIGRlc3JpcHRvciBhcmVhICovXFxuK1xcdHVuaW9uIHNfZnBfZGVzY3Igdm9sYXRpbGUgKmRlc2NyX3AgOyAvKiBwb2ludHMgdG8gdGhlIGRlc2NyaXB0b3IgYXJlYSAqL1xcbiBcXG4gXFx0dV9zaG9ydCBwYXNzX1NNVCA7XFx0XFx0LyogcGFzcyBTTVQgZnJhbWVzICovXFxuIFxcdHVfc2hvcnQgcGFzc19OU0EgO1xcdFxcdC8qIHBhc3MgYWxsIE5TQSBmcmFtZXMgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvc2JhLmggYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9zYmEuaFxcbmluZGV4IGYzMDMwMWZjZDAyMmMuLjdmZTk5YzEyZTIwMTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvc2JhLmhcXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9zYmEuaFxcbkBAIC05NCw3ICs5NCw3IEBAIHN0cnVjdCBzX3NiYSB7XFxuIFxcdGxvbmdcXHRcXHRtc2dfbWliX292IDtcXHRcXHQvKiBDdXJyZW50IE92ZXJoZWFkIGZvciB0aGlzIFBhdGgqL1xcbiBcXHRsb25nXFx0XFx0bXNnX2NhdGVnb3J5IDtcXHRcXHQvKiBDYXRlZ29yeSBvZiB0aGUgQWxsb2NhdGlvbiAqL1xcbiBcXHR1X2xvbmdcXHRcXHRtc2dfbWF4X3RfbmVnIDtcXHRcXHQvKiBsb25nZXN0IFRfTmVnIGFjY2VwdGFibGUgKi9cXG4tXFx0dV9sb25nXFx0XFx0bXNnX21pbl9zZWdfc2l6IDtcXHQvKiBtaW5pbXVtIHNlZ2VtZW50IHNpemUgKi9cXG4rXFx0dV9sb25nXFx0XFx0bXNnX21pbl9zZWdfc2l6IDtcXHQvKiBtaW5pbXVtIHNlZ21lbnQgc2l6ZSAqL1xcbiBcXHRzdHJ1Y3Qgc210X2hlYWRlclxcdCpzbSA7XFx0XFx0LyogcG9pbnRzIHRvIHRoZSByZWMgbWVzc2FnZSAqL1xcbiBcXHRzdHJ1Y3QgZmRkaV9hZGRyXFx0Km1zZ19hbGxvY19hZGRyIDtcXHQvKiBBbGxvY2F0aW9uIEFkZHJlc3MgKi9cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wY21wbGMuYyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wY21wbGMuY1xcbmluZGV4IDkwZThkZjZkOWE4OGEuLjc0NTI4NWQ0ZDZkMmUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jXFxuQEAgLTE2LDcgKzE2LDcgQEBcXG4gKi9cXG4gXFxuIC8qXFxuLSAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb25cXG4rICogSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvblxcbiAgKiBUaGUgZm9sbG93aW5nIGV4dGVybmFsIFNNVCBmdW5jdGlvbnMgYXJlIHJlZmVyZW5jZWQgOlxcbiAgKlxcbiAgKiBcXHRcXHRxdWV1ZV9ldmVudCgpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9ybXQuYyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9ybXQuY1xcbmluZGV4IDMxNDYyMzY1MGE4NGIuLjU3MDgxMjRmMDVkMmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jXFxuQEAgLTE2LDcgKzE2LDcgQEBcXG4gKi9cXG4gXFxuIC8qXFxuLSAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb25cXG4rICogSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvblxcbiAgKiBUaGUgZm9sbG93aW5nIGV4dGVybmFsIFNNVCBmdW5jdGlvbnMgYXJlIHJlZmVyZW5jZWQgOlxcbiAgKlxcbiAgKiBcXHRcXHRxdWV1ZV9ldmVudCgpXFxuZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xcbmluZGV4IDI2MDQ2MGQ1MGY1NGMuLjRiNmZlOWE0NzNjYjMgMTAwNjQ0XFxuLS0tIGEvbmV0L2xsYy9sbGNfY29ubi5jXFxuKysrIGIvbmV0L2xsYy9sbGNfY29ubi5jXFxuQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIGxsY19jb25uX3J0bl9wZHUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB9XFxuIFxcbiAvKipcXG4tICpcXHRsbGNfY29ubl9yZXNlbmRfaV9wZHVfYXNfY21kIC0gcmVzZW5kIGFsbCBhbGwgdW5hY2tub3dsZWRnZWQgSSBQRFVzXFxuKyAqXFx0bGxjX2Nvbm5fcmVzZW5kX2lfcGR1X2FzX2NtZCAtIHJlc2VuZCBhbGwgdW5hY2tub3dsZWRnZWQgSSBQRFVzXFxuICAqXFx0QHNrOiBhY3RpdmUgY29ubmVjdGlvblxcbiAgKlxcdEBucjogTlJcXG4gICpcXHRAZmlyc3RfcF9iaXQ6IHBfYml0IHZhbHVlIG9mIGZpcnN0IHBkdVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQveGZybV9wb2xpY3kuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQveGZybV9wb2xpY3kuc2hcXG5pbmRleCAzZWVlZWZmYjQwMDViLi42Mjk0ZTQ5YTQ2ZTA0IDEwMDc1NVxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaFxcbkBAIC0yNDIsNyArMjQyLDcgQEAgY2hlY2tfZXhjZXB0aW9ucygpXFxuIFxcdFxcdGVjaG8gXFxcIlBBU1M6IHBpbmcgdG8gLjI1NCBieXBhc3NlZCBpcHNlYyB0dW5uZWwgKCRsb2dwb3N0Zml4KVxcXCJcXG4gXFx0ZmlcXG4gXFxuLVxcdCMgcGluZyB0byAuMjUzIHNob3VsZCB1c2UgdXNlIGlwc2VjIGR1ZSB0byBkaXJlY3QgcG9saWN5IGV4Y2VwdGlvbi5cXG4rXFx0IyBwaW5nIHRvIC4yNTMgc2hvdWxkIHVzZSBpcHNlYyBkdWUgdG8gZGlyZWN0IHBvbGljeSBleGNlcHRpb24uXFxuIFxcdGNoZWNrX3hmcm0gMSAyNTNcXG4gXFx0aWYgWyAkPyAtbmUgMCBdOyB0aGVuXFxuIFxcdFxcdGVjaG8gXFxcIkZBSUw6IGV4cGVjdGVkIHBpbmcgdG8gLjI1MyB0byB1c2UgaXBzZWMgdHVubmVsICgkbG9ncG9zdGZpeClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA1OjU5OjQzLjY0NDUzMjg2MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTMwNzA2MTc5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnRhaW5zIGV4Y2x1c2l2ZWx5IHNwZWxsaW5nIGFuZCB0eXBvIGZpeGVzIHdpdGhpbiBjb21tZW50cyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMsIGNvcmUgTExDIGNvZGUsIGFuZCBhIHNlbGZ0ZXN0IHNjcmlwdC4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA0YjlmOTU5MzFkMTE3OWEyOGE1NGYzNTdhYzliYzliODkzZjE1NThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDA1OjU5OjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5oXG5pbmRleCBjNTY3YzkyMDYyOGYxLi44ZjAzYmI1NjFkNDQ4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmhcbkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBhdGwxY19wb3N0X3BoeV9saW5rY2hnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiBsaW5rX3NwZWVkKTtcbiAvKiBJTlQtdHJpZ2dsZS9TTUIgQ29udHJvbCBSZWdpc3RlciAqL1xuICNkZWZpbmUgUkVHX1NNQl9TVEFUX1RJTUVSXHRcdDB4MTVDNFx0LyogMnVzIHJlc29sdXRpb24gKi9cbiAjZGVmaW5lIFNNQl9TVEFUX1RJTUVSX01BU0tcdFx0MHhGRkZGRkZcbi0jZGVmaW5lIFJFR19USU5UX1RQRF9USFJFU0ggICAgICAgICAgICAgMHgxNUM4IC8qIHRwZCB0aCB0byB0cmlnIGludHJydXB0ICovXG4rI2RlZmluZSBSRUdfVElOVF9UUERfVEhSRVNIICAgICAgICAgICAgIDB4MTVDOCAvKiB0cGQgdGggdG8gdHJpZyBpbnRlcnJ1cHQgKi9cbiBcbiAvKiBNYWlsIGJveCAqL1xuICNkZWZpbmUgTUJfUkZEWF9QUk9EX0lEWF9NQVNLXHRcdDB4RkZGRlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaFxuaW5kZXggOWZjYWQ3ODNjOTM5YS4uNmIwMDY2ZjQ3ZTllNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZS5oXG5AQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBhdGwxZV9yeF9wYWdlIHtcbiBcdHU4XHRcdCphZGRyOyAgIC8qIHJlY2VpdmUgcmFnZSB2aXJ0dWFsIGFkZHJlc3MgKi9cbiBcdGRtYV9hZGRyX3RcdHdyaXRlX29mZnNldF9kbWE7ICAvKiB0aGUgRE1BIGFkZHJlc3Mgd2hpY2ggY29udGFpbiB0aGVcbiBcdFx0XHRcdFx0ICAgICAgcmVjZWl2ZSBkYXRhIG9mZnNldCBpbiB0aGUgcGFnZSAqL1xuLVx0dTMyXHRcdCp3cml0ZV9vZmZzZXRfYWRkcjsgLyogdGhlIHZpcnRhdWwgYWRkcmVzcyB3aGljaCBjb250YWluXG4rXHR1MzJcdFx0KndyaXRlX29mZnNldF9hZGRyOyAvKiB0aGUgdmlydHVhbCBhZGRyZXNzIHdoaWNoIGNvbnRhaW5cbiBcdFx0XHRcdFx0ICAgICB0aGUgcmVjZWl2ZSBkYXRhIG9mZnNldCBpbiB0aGUgcGFnZSAqL1xuIFx0dTMyXHRcdHJlYWRfb2Zmc2V0OyAgICAgICAvKiB0aGUgb2Zmc2V0IHdoZXJlIHdlIGhhdmUgcmVhZCAqL1xuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jXG5pbmRleCBmYTg5YmMyN2Y2MmRmLi4yNWQzZTc0NjkwNTgzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2h3LmNcbkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIGludCBhdGwxZV9waHlfc2V0dXBfYXV0b25lZ19hZHYoc3RydWN0IGF0bDFlX2h3ICpodylcbiAgKlxuICAqIGh3IC0gU3RydWN0IGNvbnRhaW5pbmcgdmFyaWFibGVzIGFjY2Vzc2VkIGJ5IHNoYXJlZCBjb2RlXG4gICpcbi0gKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBjb250cm9sIHJlZ2lzZXIgKGZvciBGMDAxIGJ1ZylcbisgKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBjb250cm9sIHJlZ2lzdGVyIChmb3IgRjAwMSBidWcpXG4gICovXG4gaW50IGF0bDFlX3BoeV9jb21taXQoc3RydWN0IGF0bDFlX2h3ICpodylcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uY1xuaW5kZXggNDAyOTAwMjg1ODBiYS4uY2M2YzI2Mjg2OGE1NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uY1xuQEAgLTIxMTcsNyArMjExNyw3IEBAIHN0YXRpYyBpbnQgYXRsMWVfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuIFx0XHRcdHdvbF9jdHJsX2RhdGEgfD0gV09MX01BR0lDX0VOIHwgV09MX01BR0lDX1BNRV9FTjtcbiBcbiBcdFx0aWYgKHd1ZmMgXHUwMDI2IEFUX1dVRkNfTE5LQykge1xuLVx0XHQvKiBpZiBvcmlnbmFsIGxpbmsgc3RhdHVzIGlzIGxpbmssIGp1c3Qgd2FpdCBmb3IgcmV0cml2ZSBsaW5rICovXG4rXHRcdC8qIGlmIG9yaWdpbmFsIGxpbmsgc3RhdHVzIGlzIGxpbmssIGp1c3Qgd2FpdCBmb3IgcmV0cmlldmUgbGluayAqL1xuIFx0XHRcdGlmIChtaWlfYm1zcl9kYXRhIFx1MDAyNiBCTVNSX0xTVEFUVVMpIHtcbiBcdFx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUX1NVU1BFTkRfTElOS19USU1FT1VUOyBpKyspIHtcbiBcdFx0XHRcdFx0bXNsZWVwKDEwMCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwxLmNcbmluZGV4IDk4YTRkMDg5MjcwZTQuLjE3OWQ3NGU5M2VmZGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jXG5AQCAtNjI4LDcgKzYyOCw3IEBAIHN0YXRpYyBzMzIgYXRsMV9waHlfbGVhdmVfcG93ZXJfc2F2aW5nKHN0cnVjdCBhdGwxX2h3ICpodylcbiAgKiBSZXNldHMgdGhlIFBIWSBhbmQgbWFrZSBhbGwgY29uZmlnIHZhbGlkYXRlXG4gICogaHcgLSBTdHJ1Y3QgY29udGFpbmluZyB2YXJpYWJsZXMgYWNjZXNzZWQgYnkgc2hhcmVkIGNvZGVcbiAgKlxuLSAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIENvbnRyb2wgcmVnaXNlciAoZm9yIEYwMDEgYnVnKVxuKyAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIENvbnRyb2wgcmVnaXN0ZXIgKGZvciBGMDAxIGJ1ZylcbiAgKi9cbiBzdGF0aWMgczMyIGF0bDFfcGh5X3Jlc2V0KHN0cnVjdCBhdGwxX2h3ICpodylcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmNcbmluZGV4IDU1NjBkNWNjMzE2OTIuLmM5YWNhMjE5ZWM5Y2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jXG5AQCAtMjU5MSw3ICsyNTkxLDcgQEAgc3RhdGljIHMzMiBhdGwyX3BoeV9zZXR1cF9hdXRvbmVnX2FkdihzdHJ1Y3QgYXRsMl9odyAqaHcpXG4gICpcbiAgKiBodyAtIFN0cnVjdCBjb250YWluaW5nIHZhcmlhYmxlcyBhY2Nlc3NlZCBieSBzaGFyZWQgY29kZVxuICAqXG4tICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgQ29udHJvbCByZWdpc2VyIChmb3IgRjAwMSBidWcpXG4rICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgQ29udHJvbCByZWdpc3RlciAoZm9yIEYwMDEgYnVnKVxuICAqL1xuIHN0YXRpYyBzMzIgYXRsMl9waHlfY29tbWl0KHN0cnVjdCBhdGwyX2h3ICpodylcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuY1xuaW5kZXggN2VmMWJhYmZlY2E2OS4uZjY1OTVmZGM4ODhkMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuY1xuQEAgLTE1NjQsNyArMTU2NCw3IEBAIHN0YXRpYyBpbnQgYmNtX2VuZXRfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBcdGlmIChwcml2LVx1MDAzZWhhc19waHkpIHtcbiBcdFx0aWYgKGVjbWQtXHUwMDNlYXV0b25lZyBcdTAwMjZcdTAwMjYgKGVjbWQtXHUwMDNlcnhfcGF1c2UgIT0gZWNtZC1cdTAwM2V0eF9wYXVzZSkpIHtcbi1cdFx0XHQvKiBhc3ltZXRyaWMgcGF1c2UgbW9kZSBub3Qgc3VwcG9ydGVkLFxuK1x0XHRcdC8qIGFzeW1tZXRyaWMgcGF1c2UgbW9kZSBub3Qgc3VwcG9ydGVkLFxuIFx0XHRcdCAqIGFjdHVhbGx5IHBvc3NpYmxlIGJ1dCBpbnRlZ3JhdGVkIFBIWSBoYXMgUk9cbiBcdFx0XHQgKiBhc3ltX3BhdXNlIGJpdCAqL1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmhcbmluZGV4IDc4ZjE4MzBmYjNjYjUuLmJhOGY0MmNmNWZiMjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmhcbkBAIC0yNjUsNyArMjY1LDcgQEAgc3RydWN0IGJjbV9lbmV0X3ByaXYge1xuIFx0LyogbnVtYmVyIG9mIGF2YWlsYWJsZSBkZXNjcmlwdG9yIGZvciB0eCAqL1xuIFx0aW50IHR4X2Rlc2NfY291bnQ7XG4gXG4tXHQvKiBuZXh0IHR4IGRlc2NyaXB0b3IgYXZhaWFibGUgKi9cbitcdC8qIG5leHQgdHggZGVzY3JpcHRvciBhdmFpbGFibGUgKi9cbiBcdGludCB0eF9jdXJyX2Rlc2M7XG4gXG4gXHQvKiBuZXh0IGRpcnR5IHR4IGRlc2NyaXB0b3IgdG8gcmVjbGFpbSAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuaFxuaW5kZXggYTM0Mjk2Zjk4OWYxMi4uNmY4MDdlOTZkYmQ4ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oXG5AQCAtNDAyLDcgKzQwMiw3IEBAIHN0cnVjdCBiY21fcnNiIHtcbiAjZGVmaW5lIFRETUFfREVTQ19SSU5HX0JBU0UoaSlcdFx0KFRETUFfREVTQ19SSU5HXzAwX0JBU0UgKyBcXFxuIFx0XHRcdFx0XHQoKGkpICogVERNQV9ERVNDX1JJTkdfU0laRSkpXG4gXG4tLyogUmluZyBpbmRleGVkIHJlZ2lzdGVyIGFkZHJlc2VzICovXG4rLyogUmluZyBpbmRleGVkIHJlZ2lzdGVyIGFkZHJlc3NlcyAqL1xuICNkZWZpbmUgVERNQV9ERVNDX1JJTkdfSEVBRF9UQUlMX1BUUihpKVx0KFRETUFfREVTQ19SSU5HX0JBU0UoaSkgKyBcXFxuIFx0XHRcdFx0XHRSSU5HX0hFQURfVEFJTF9QVFIpXG4gI2RlZmluZSBURE1BX0RFU0NfUklOR19DT1VOVChpKVx0XHQoVERNQV9ERVNDX1JJTkdfQkFTRShpKSArIFxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4LmhcbmluZGV4IDk1ODBhYjgzZDM4N2MuLjI4ZWE0YTMzZjI0NWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oXG5AQCAtMjgwLDcgKzI4MCw3IEBAIGVudW0ge1xuICAqIChkYl9tc2dfc3ogMSBcdTAwM2NcdTAwM2MgNyAqIGNpZCArIDB4NDAgRFBNIG9mZnNldCkgaXQgY2FuIGNvbWUgdXAgd2l0aCBhIHZhbGlkIG51bWJlclxuICAqIFdlIG11c3QgYXZvaWQgY29taW5nIHVwIHdpdGggY2lkIDggZm9yIGlzY3NpIHNpbmNlIGFjY29yZGluZyB0byB0aGlzIG1ldGhvZFxuICAqIHRoZSBkZXNpZ25hdGVkIFVJTyBjaWQgd2lsbCBjb21lIG91dCAwIGFuZCBpdCBoYXMgYSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGF0XG4tICogY2FzZSB3aGljaCBkb2Vzbid0IHN1aXQgdXMuIFRoZXJlZm9yZSB3aWxsIHdpbGwgY2llbGluZyB0byBjbG9zZXMgY2lkIHdoaWNoXG4rICogY2FzZSB3aGljaCBkb2Vzbid0IHN1aXQgdXMuIFRoZXJlZm9yZSB3aWxsIGNpZWxpbmcgdG8gY2xvc2VzIGNpZCB3aGljaFxuICAqIGhhcyBsZWFzdCBzaWduaWdpZmNhbnQgbmliYmxlIDggYW5kIGlmIGl0IGlzIDggd2Ugd2lsbCBtb3ZlIGZvcndhcmQgdG8gMHgxOC5cbiAgKi9cbiBcbkBAIC02NjYsNyArNjY2LDcgQEAgc3RydWN0IGJueDJ4X2Zhc3RwYXRoIHtcbiBcdFx0XHRcdCBNQVhfVFhfREVTQ19DTlQgKiBORVhUX1BBR0VfVFhfREVTQ19DTlQpXG4gLyogbWF4IEJEcyBwZXIgdHggcGFja2V0IHcvbyBuZXh0X3BhZ2VzOlxuICAqIFNUQVJUX0JEXHRcdC0gZGVzY3JpYmVzIHBhY2tlZFxuLSAqIFNUQVJUX0JEKHNwbGl0dGVkKVx0LSBpbmNsdWRlcyB1bnBhZ2VkIGRhdGEgc2VnbWVudCBmb3IgR1NPXG4rICogU1RBUlRfQkQoc3BsaXQpXHQtIGluY2x1ZGVzIHVucGFnZWQgZGF0YSBzZWdtZW50IGZvciBHU09cbiAgKiBQQVJTSU5HX0JEXHRcdC0gZm9yIFRTTyBhbmQgQ1NVTSBkYXRhXG4gICogUEFSU0lOR19CRDJcdFx0LSBmb3IgZW5jYXBzdWxhdGlvbiBkYXRhXG4gICogRnJhZyBCRHNcdFx0LSBkZXNjcmliZXMgcGFnZXMgZm9yIGZyYWdzXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfZGNiLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuY1xuaW5kZXggOWFmODE2MzBjOGE0NC4uM2RmOGE1OTg4NTIxOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2RjYi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuY1xuQEAgLTE5ODYsNyArMTk4Niw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2RjYm5sX3NldF9wZ190Y2NmZ190eChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcHJpbyxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0LyoqXG4tXHQgKiBid19wY3QgaWdub3JlZCAtXHRiYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGV2aXNpb24gYmV0d2VlbiB1c2VyXG4rXHQgKiBid19wY3QgaWdub3JlZCAtXHRiYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGl2aXNpb24gYmV0d2VlbiB1c2VyXG4gXHQgKlx0XHRcdHByaW9yaXRpZXMgd2l0aGluIHRoZSBzYW1lIGdyb3VwIGlzIG5vdFxuIFx0ICpcdFx0XHRzdGFuZGFyZCBhbmQgaGVuY2Ugbm90IHN1cHBvcnRlZFxuIFx0ICpcbkBAIC0yMDM4LDcgKzIwMzgsNyBAQCBzdGF0aWMgdm9pZCBibngyeF9kY2JubF9nZXRfcGdfdGNjZmdfdHgoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHByaW8sXG4gXHREUChCTlgyWF9NU0dfRENCLCBcInByaW8gPSAlZFxcblwiLCBwcmlvKTtcbiBcbiBcdC8qKlxuLVx0ICogYndfcGN0IGlnbm9yZWQgLVx0YmFuZC13aWR0aCBwZXJjZW50YWdlIGRldmlzaW9uIGJldHdlZW4gdXNlclxuK1x0ICogYndfcGN0IGlnbm9yZWQgLVx0YmFuZC13aWR0aCBwZXJjZW50YWdlIGRpdmlzaW9uIGJldHdlZW4gdXNlclxuIFx0ICpcdFx0XHRwcmlvcml0aWVzIHdpdGhpbiB0aGUgc2FtZSBncm91cCBpcyBub3RcbiBcdCAqXHRcdFx0c3RhbmRhcmQgYW5kIGhlbmNlIG5vdCBzdXBwb3J0ZWRcbiBcdCAqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaFxuaW5kZXggNjExZWZlZTc1ODM0MC4uNTI5N2FiNTc4YTZmMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaFxuQEAgLTIzNDIsNyArMjM0Miw3IEBAIHN0cnVjdCBzaG1lbTJfcmVnaW9uIHtcbiBcdFx0dTMyIG9lbV9pMmNfZGF0YV9hZGRyO1xuIFx0fTtcbiBcbi1cdC8qIDkgZW50aXJlcyBmb3IgdGhlIEMyUyBQQ1AgbWFwIGZvciBlYWNoIGlubmVyIFZMQU4gUENQICsgMSBkZWZhdWx0ICovXG4rXHQvKiA5IGVudHJpZXMgZm9yIHRoZSBDMlMgUENQIG1hcCBmb3IgZWFjaCBpbm5lciBWTEFOIFBDUCArIDEgZGVmYXVsdCAqL1xuIFx0LyogRm9yIFBDUCB2YWx1ZXMgMC0zIHVzZSB0aGUgbWFwIGxvd2VyICovXG4gXHQvKiAweEZGMDAwMDAwIC0gUENQIDAsIDB4MDBGRjAwMDAgLSBQQ1AgMSxcbiBcdCAqIDB4MDAwMEZGMDAgLSBQQ1AgMiwgMHgwMDAwMDBGRiBQQ1AgM1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9pbml0X29wcy5oXG5pbmRleCBmYzdmY2U2NDI2NjZjLi5iNTAwNGFhYjEyNGRjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaFxuQEAgLTU4Miw3ICs1ODIsNyBAQCBzdGF0aWMgdm9pZCBibngyeF9pbml0X3B4cF9hcmIoc3RydWN0IGJueDJ4ICpicCwgaW50IHJfb3JkZXIsXG4gXHRcdFJFR19XUihicCwgUFhQMl9SRUdfV1JfQ0RVX01QUywgdmFsKTtcbiBcdH1cbiBcbi1cdC8qIFZhbGlkYXRlIG51bWJlciBvZiB0YWdzIHN1cHBvdGVkIGJ5IGRldmljZSAqL1xuK1x0LyogVmFsaWRhdGUgbnVtYmVyIG9mIHRhZ3Mgc3VwcG9ydGVkIGJ5IGRldmljZSAqL1xuICNkZWZpbmUgUENJRV9SRUdfUENJRVJfVExfSERSX0ZDX1NUXHRcdDB4Mjk4MFxuIFx0dmFsID0gUkVHX1JEKGJwLCBQQ0lFX1JFR19QQ0lFUl9UTF9IRFJfRkNfU1QpO1xuIFx0dmFsIFx1MDAyNj0gMHhGRjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmNcbmluZGV4IGVhMzEwMDU3ZmUzYWYuLjg0ZDAwMmIzMTkyMGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuY1xuQEAgLTI1MzYsNyArMjUzNiw3IEBAIHN0YXRpYyBpbnQgYm54MnhfcGJmX3VwZGF0ZShzdHJ1Y3QgbGlua19wYXJhbXMgKnBhcmFtcywgdTMyIGZsb3dfY3RybCxcbiB9XG4gXG4gLyoqXG4tICogYm54MnhfZ2V0X2VtYWNfYmFzZSAtIHJldHJpdmUgZW1hYyBiYXNlIGFkZHJlc3NcbisgKiBibngyeF9nZXRfZW1hY19iYXNlIC0gcmV0cmlldmUgZW1hYyBiYXNlIGFkZHJlc3NcbiAgKlxuICAqIEBicDpcdFx0XHRkcml2ZXIgaGFuZGxlXG4gICogQG1kY19tZGlvX2FjY2VzczpcdGFjY2VzcyB0eXBlXG5AQCAtMzU5Myw3ICszNTkzLDcgQEAgc3RhdGljIHU4IGJueDJ4X2V4dF9waHlfcmVzb2x2ZV9mYyhzdHJ1Y3QgYm54MnhfcGh5ICpwaHksXG4gXHR1OCByZXQgPSAwO1xuIFx0dmFycy1cdTAwM2VmbG93X2N0cmwgPSBCTlgyWF9GTE9XX0NUUkxfTk9ORTtcbiBcdGlmIChwaHktXHUwMDNlcmVxX2Zsb3dfY3RybCAhPSBCTlgyWF9GTE9XX0NUUkxfQVVUTykge1xuLVx0XHQvKiBVcGRhdGUgdGhlIGFkdmVydGlzZWQgZmxvdy1jb250cm9sZWQgb2YgTEQvTFAgaW4gQU4gKi9cbitcdFx0LyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGxlZCBvZiBMRC9MUCBpbiBBTiAqL1xuIFx0XHRpZiAocGh5LVx1MDAzZXJlcV9saW5lX3NwZWVkID09IFNQRUVEX0FVVE9fTkVHKVxuIFx0XHRcdGJueDJ4X2V4dF9waHlfdXBkYXRlX2Fkdl9mYyhwaHksIHBhcmFtcywgdmFycyk7XG4gXHRcdC8qIEJ1dCBzZXQgdGhlIGZsb3ctY29udHJvbCByZXN1bHQgYXMgdGhlIHJlcXVlc3RlZCBvbmUgKi9cbkBAIC0zNzQzLDcgKzM3NDMsNyBAQCBzdGF0aWMgdm9pZCBibngyeF93YXJwY29yZV9lbmFibGVfQU5fS1Ioc3RydWN0IGJueDJ4X3BoeSAqcGh5LFxuIFx0XHR7TURJT19XQ19ERVZBRCwgTURJT19XQ19SRUdfQ0w3Ml9VU0VSQjBfQ0w3Ml9UWF9GSVJfVEFQLCAwfSxcbiBcdH07XG4gXHREUChORVRJRl9NU0dfTElOSywgXCJFbmFibGUgQXV0byBOZWdvdGlhdGlvbiBmb3IgS1JcXG5cIik7XG4tXHQvKiBTZXQgdG8gZGVmYXVsdCByZWdpc3RlcnMgdGhhdCBtYXkgYmUgb3ZlcnJpZGVuIGJ5IDEwRyBmb3JjZSAqL1xuK1x0LyogU2V0IHRvIGRlZmF1bHQgcmVnaXN0ZXJzIHRoYXQgbWF5IGJlIG92ZXJyaWRkZW4gYnkgMTBHIGZvcmNlICovXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHJlZ19zZXQpOyBpKyspXG4gXHRcdGJueDJ4X2NsNDVfd3JpdGUoYnAsIHBoeSwgcmVnX3NldFtpXS5kZXZhZCwgcmVnX3NldFtpXS5yZWcsXG4gXHRcdFx0XHQgcmVnX3NldFtpXS52YWwpO1xuQEAgLTU0MjUsNyArNTQyNSw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2Zsb3dfY3RybF9yZXNvbHZlKHN0cnVjdCBibngyeF9waHkgKnBoeSxcbiBcbiBcdC8qIFJlc29sdmUgZnJvbSBncF9zdGF0dXMgaW4gY2FzZSBvZiBBTiBjb21wbGV0ZSBhbmQgbm90IHNnbWlpICovXG4gXHRpZiAocGh5LVx1MDAzZXJlcV9mbG93X2N0cmwgIT0gQk5YMlhfRkxPV19DVFJMX0FVVE8pIHtcbi1cdFx0LyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGVkIG9mIExEL0xQIGluIEFOICovXG4rXHRcdC8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xsZWQgb2YgTEQvTFAgaW4gQU4gKi9cbiBcdFx0aWYgKHBoeS1cdTAwM2VyZXFfbGluZV9zcGVlZCA9PSBTUEVFRF9BVVRPX05FRylcbiBcdFx0XHRibngyeF91cGRhdGVfYWR2X2ZjKHBoeSwgcGFyYW1zLCB2YXJzLCBncF9zdGF0dXMpO1xuIFx0XHQvKiBCdXQgc2V0IHRoZSBmbG93LWNvbnRyb2wgcmVzdWx0IGFzIHRoZSByZXF1ZXN0ZWQgb25lICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jXG5pbmRleCAzOWViNmFiNWY4MDU4Li4yNzdjN2JkOWM2ZTc0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmNcbkBAIC0xMjY2OSw3ICsxMjY2OSw3IEBAIHN0YXRpYyBpbnQgYm54Mnhfc2V0X21jX2xpc3Qoc3RydWN0IGJueDJ4ICpicClcbiBcdFx0aWYgKHJjKVxuIFx0XHRcdHJldHVybiByYztcbiBcbi1cdFx0LyogT3ZlcnJpZGUgdGhlIGN1cmVudGx5IGNvbmZpZ3VyZWQgc2V0IG9mIG1jIGZpbHRlcnMgKi9cbitcdFx0LyogT3ZlcnJpZGUgdGhlIGN1cnJlbnRseSBjb25maWd1cmVkIHNldCBvZiBtYyBmaWx0ZXJzICovXG4gXHRcdHJjID0gYm54MnhfY29uZmlnX21jYXN0KGJwLCBcdTAwMjZycGFyYW0sXG4gXHRcdFx0XHRcdEJOWDJYX01DQVNUX0NNRF9TRVQpO1xuIFx0XHRpZiAocmMgXHUwMDNjIDApXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaFxuaW5kZXggYTAxOGYyNTFkMTk4Ni4uMzA5NDNmMzQ3MTY0MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaFxuQEAgLTIyMzYsNyArMjIzNiw3IEBAIGV4dGVybiBjb25zdCB1MzIgZG1hZV9yZWdfZ29fY1tdO1xuIC8qIFtSVyAxXSBPdXRwdXQgZW5hYmxlIGZvciBUWCBQQVVTRSBzaWduYWwgdG8gdGhlIE1BQy4gKi9cbiAjZGVmaW5lIE5JR19SRUdfUDBfTUFDX1BBVVNFX09VVF9FTlx0XHRcdFx0IDB4MTg1YjRcbiAvKiBbUlcgMzJdIEVpZ2h0IDQtYml0IGNvbmZpZ3VyYXRpb25zIGZvciBzcGVjaWZ5aW5nIHdoaWNoIENPUyAoMC0xNSBmb3Jcbi0gKiBmdXR1cmUgZXhwYW5zaW9uKSBlYWNoIHByaW9ydHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZVxuKyAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3JpdHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZVxuICAqIENPUyBmb3IgcHJpb3JpdHkgMC4gQml0cyAzMToyOCBzcGVjaWZ5IHRoZSBDT1MgZm9yIHByaW9yaXR5IDcuIFRoZSAzLWJpdFxuICAqIHByaW9yaXR5IGZpZWxkIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSBvdXRlci1tb3N0IFZMQU4gaW4gcmVjZWl2ZSBwYWNrZXQuXG4gICogT25seSBDT1MgMCBhbmQgQ09TIDEgYXJlIHN1cHBvcnRlZCBpbiBFMi4gKi9cbkBAIC0yNDM0LDcgKzI0MzQsNyBAQCBleHRlcm4gY29uc3QgdTMyIGRtYWVfcmVnX2dvX2NbXTtcbiAvKiBbUlcgMV0gT3V0cHV0IGVuYWJsZSBmb3IgVFggUEFVU0Ugc2lnbmFsIHRvIHRoZSBNQUMuICovXG4gI2RlZmluZSBOSUdfUkVHX1AxX01BQ19QQVVTRV9PVVRfRU5cdFx0XHRcdCAweDE4NWM4XG4gLyogW1JXIDMyXSBFaWdodCA0LWJpdCBjb25maWd1cmF0aW9ucyBmb3Igc3BlY2lmeWluZyB3aGljaCBDT1MgKDAtMTUgZm9yXG4tICogZnV0dXJlIGV4cGFuc2lvbikgZWFjaCBwcmlvcnR5IGlzIHRvIGJlIG1hcHBlZCB0by4gQml0cyAzOjAgc3BlY2lmeSB0aGVcbisgKiBmdXR1cmUgZXhwYW5zaW9uKSBlYWNoIHByaW9yaXR5IGlzIHRvIGJlIG1hcHBlZCB0by4gQml0cyAzOjAgc3BlY2lmeSB0aGVcbiAgKiBDT1MgZm9yIHByaW9yaXR5IDAuIEJpdHMgMzE6Mjggc3BlY2lmeSB0aGUgQ09TIGZvciBwcmlvcml0eSA3LiBUaGUgMy1iaXRcbiAgKiBwcmlvcml0eSBmaWVsZCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgb3V0ZXItbW9zdCBWTEFOIGluIHJlY2VpdmUgcGFja2V0LlxuICAqIE9ubHkgQ09TIDAgYW5kIENPUyAxIGFyZSBzdXBwb3J0ZWQgaW4gRTIuICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuNjZ4eF9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmNcbmluZGV4IDkzZmNjZmVjMjg4ZDQuLmQzZWJiYjQwNTc5ZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY242Nnh4X2RldmljZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY242Nnh4X2RldmljZS5jXG5AQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGxpb19jbjY2eHhfc2V0dXBfcGt0X2N0bF9yZWdzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4gXG4gXHQvKiA2NlhYIFNQRUNJRklDICovXG4gXHRpZiAoQ0ZHX0dFVF9PUV9NQVhfUShjbjZ4eHgtXHUwMDNlY29uZikgXHUwMDNjPSA0KVxuLVx0XHQvKiBEaXNhYmxlIFJJTkdfRU4gaWYgb25seSB1cHRvIDQgcmluZ3MgYXJlIHVzZWQuICovXG4rXHRcdC8qIERpc2FibGUgUklOR19FTiBpZiBvbmx5IHVwIHRvIDQgcmluZ3MgYXJlIHVzZWQuICovXG4gXHRcdHBrdGN0bCBcdTAwMjY9IH4oMSBcdTAwM2NcdTAwM2MgNCk7XG4gXHRlbHNlXG4gXHRcdHBrdGN0bCB8PSAoMSBcdTAwM2NcdTAwM2MgNCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuY1xuaW5kZXggOTNiMDZkNTk5ZWVkNi4uYmVkNDUwYmZhZDM4MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuY1xuQEAgLTU2NSw3ICs1NjUsNyBAQCBzdGF0aWMgaW50IG9jdGVvbl9zZXR1cF9kcm9xKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsIGludCBxX25vLCBpbnQgbnVtX2Rlc2NzLFxuIH1cbiBcbiAvKipcbi0gKiBsaXF1aWRpb19wdXNoX3BhY2tldCAtIFJvdXRpbmUgdG8gcHVzaCBwYWNrZXRzIGFycml2aW5nIG9uIE9jdGVvbiBpbnRlcmZhY2UgdXB0byBuZXR3b3JrIGxheWVyLlxuKyAqIGxpcXVpZGlvX3B1c2hfcGFja2V0IC0gUm91dGluZSB0byBwdXNoIHBhY2tldHMgYXJyaXZpbmcgb24gT2N0ZW9uIGludGVyZmFjZSB1cCB0byBuZXR3b3JrIGxheWVyLlxuICAqIEBvY3Rlb25faWQ6b2N0ZW9uIGRldmljZSBpZC5cbiAgKiBAc2tidWZmOiAgIHNrYnVmZiBzdHJ1Y3QgdG8gYmUgcGFzc2VkIHRvIG5ldHdvcmsgbGF5ZXIuXG4gICogQGxlbjogICAgICBzaXplIG9mIHRvdGFsIGRhdGEgcmVjZWl2ZWQuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25maWcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uZmlnLmhcbmluZGV4IDI0YzIxMjAwMTIxMjEuLmQyZDY0ZWRhZjNiZjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbmZpZy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbmZpZy5oXG5AQCAtMjU0LDcgKzI1NCw3IEBAIHN0cnVjdCBvY3Rlb25fb3FfY29uZmlnIHtcbiBcdHU2NCBwa3RzX3Blcl9pbnRyOjE2O1xuIFxuIFx0LyoqIEludGVycnVwdCBDb2FsZXNjaW5nIChUaW1lIEludGVydmFsKS4gT2N0ZW9uIHdpbGwgaW50ZXJydXB0IHRoZVxuLVx0ICogIGhvc3QgaWYgYXRsZWFzdCBvbmUgcGFja2V0IHdhcyBzZW50IGluIHRoZSB0aW1lIGludGVydmFsIHNwZWNpZmllZFxuK1x0ICogIGhvc3QgaWYgYXQgbGVhc3Qgb25lIHBhY2tldCB3YXMgc2VudCBpbiB0aGUgdGltZSBpbnRlcnZhbCBzcGVjaWZpZWRcbiBcdCAqICBieSB0aGlzIGZpZWxkLiBUaGUgZHJpdmVyIHVzZXMgdGltZSBpbnRlcnZhbCBpbnRlcnJ1cHQgY29hbGVzY2luZ1xuIFx0ICogIGJ5IGRlZmF1bHQuIFRoZSB0aW1lIGlzIHNwZWNpZmllZCBpbiBtaWNyb3NlY29uZHMuXG4gXHQgKi9cbkBAIC0yOTYsNyArMjk2LDcgQEAgc3RydWN0IG9jdGVvbl9vcV9jb25maWcge1xuIFx0dTY0IG9xX2ludHJfcGt0OjE2O1xuIFxuIFx0LyoqIEludGVycnVwdCBDb2FsZXNjaW5nIChUaW1lIEludGVydmFsKS4gT2N0ZW9uIHdpbGwgaW50ZXJydXB0IHRoZVxuLVx0ICogIGhvc3QgaWYgYXRsZWFzdCBvbmUgcGFja2V0IHdhcyBzZW50IGluIHRoZSB0aW1lIGludGVydmFsIHNwZWNpZmllZFxuK1x0ICogIGhvc3QgaWYgYXQgbGVhc3Qgb25lIHBhY2tldCB3YXMgc2VudCBpbiB0aGUgdGltZSBpbnRlcnZhbCBzcGVjaWZpZWRcbiBcdCAqICBieSB0aGlzIGZpZWxkLiBUaGUgZHJpdmVyIHVzZXMgdGltZSBpbnRlcnZhbCBpbnRlcnJ1cHQgY29hbGVzY2luZ1xuIFx0ICogIGJ5IGRlZmF1bHQuICBUaGUgdGltZSBpcyBzcGVjaWZpZWQgaW4gbWljcm9zZWNvbmRzLlxuIFx0ICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9pcS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9pcS5oXG5pbmRleCBhMDRmMzZhMGUxYTA4Li5mZGQ3ZDNhNzdhMmRjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9pcS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2lxLmhcbkBAIC03MCw3ICs3MCw3IEBAIHN0cnVjdCBvY3RfaXFfc3RhdHMge1xuIFxuIC8qKiBUaGUgaW5zdHJ1Y3Rpb24gKGlucHV0KSBxdWV1ZS5cbiAgKiAgVGhlIGlucHV0IHF1ZXVlIGlzIHVzZWQgdG8gcG9zdCByYXcgKGluc3RydWN0aW9uKSBtb2RlIGRhdGEgb3IgcGFja2V0XG4tICogIGRhdGEgdG8gT2N0ZW9uIGRldmljZSBmcm9tIHRoZSBob3N0LiBFYWNoIGlucHV0IHF1ZXVlICh1cHRvIDQpIGZvclxuKyAqICBkYXRhIHRvIE9jdGVvbiBkZXZpY2UgZnJvbSB0aGUgaG9zdC4gRWFjaCBpbnB1dCBxdWV1ZSAodXAgdG8gNCkgZm9yXG4gICogIGEgT2N0ZW9uIGRldmljZSBoYXMgb25lIHN1Y2ggc3RydWN0dXJlIHRvIHJlcHJlc2VudCBpdC5cbiAgKi9cbiBzdHJ1Y3Qgb2N0ZW9uX2luc3RyX3F1ZXVlIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oXG5pbmRleCA5NTNlZGYwYzcwOTZjLi5kMmE1MjY3M2NhYzU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWluLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oXG5AQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG9jdGVvbl9tYXBfcGNpX2Jhcngoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCxcbiAgKiBlcnJubyAtRUlOVFI6IHVzZXIgYWJvcnQgdGhlIGNvbW1hbmQuXG4gICogZXJybm8gLUVUSU1FOiB1c2VyIHNwZWZpZmllZCB0aW1lb3V0IHZhbHVlIGhhcyBiZWVuIGV4cGlyZWQuXG4gICogZXJybm8gLUVCVVNZOiB0aGUgcmVzcG9uc2Ugb2YgdGhlIHJlcXVlc3QgZG9lcyBub3QgcmV0dXJuIGluXG4tICogICAgICAgICAgICAgICByZXNvbmFibGUgdGltZSAoTElPX1NDX01BWF9UTU9fTVMpLlxuKyAqICAgICAgICAgICAgICAgcmVhc29uYWJsZSB0aW1lIChMSU9fU0NfTUFYX1RNT19NUykuXG4gICogICAgICAgICAgICAgICB0aGUgc2Mgd2xsIGJlIG1vdmUgdG8gem9tYmllIHJlc3BvbnNlIGxpc3QgYnlcbiAgKiAgICAgICAgICAgICAgIGxpb19wcm9jZXNzX29yZGVyZWRfbGlzdCgpXG4gICpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25pYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uaWMuaFxuaW5kZXggYzEzOWZjNDIzNzY0ZS4uODM0MWZhYWEwYzI0NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmljLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmljLmhcbkBAIC0yNzcsNyArMjc3LDcgQEAgaW50IG9jdG5ldF9zZW5kX25pY19kYXRhX3BrdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LFxuIFxuIC8qKiBTZW5kIGEgTklDIGNvbnRyb2wgcGFja2V0IHRvIHRoZSBkZXZpY2VcbiAgKiBAcGFyYW0gb2N0IC0gb2N0ZW9uIGRldmljZSBwb2ludGVyXG4tICogQHBhcmFtIG5jdHJsIC0gY29udHJvbCBzdHJ1Y3R1cmUgd2l0aCBjb21tYW5kLCB0aW1vdXQsIGFuZCBjYWxsYmFjayBpbmZvXG4rICogQHBhcmFtIG5jdHJsIC0gY29udHJvbCBzdHJ1Y3R1cmUgd2l0aCBjb21tYW5kLCB0aW1lb3V0LCBhbmQgY2FsbGJhY2sgaW5mb1xuICAqIEByZXR1cm5zIElRX0ZBSUxFRCBpZiBpdCBmYWlsZWQgdG8gYWRkIHRvIHRoZSBpbnB1dCBxdWV1ZS4gSVFfU1RPUCBpZiB0aGVcbiAgKiBxdWV1ZSBzaG91bGQgYmUgc3RvcHBlZCwgYW5kIElRX1NFTkRfT0sgaWYgaXQgc2VudCBva2F5LlxuICAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9yZXF1ZXN0X21hbmFnZXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9yZXF1ZXN0X21hbmFnZXIuY1xuaW5kZXggZDdjZmIyMGVlYTAwYy4uYTk4M2U3Zjc5NDYxZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9yZXF1ZXN0X21hbmFnZXIuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jXG5AQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgdm9pZCAgX19jaGVja19kYl90aW1lb3V0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsIHU2NCBpcV9ubyk7XG4gXG4gc3RhdGljIHZvaWQgKCpyZXF0eXBlX2ZyZWVfZm5bTUFYX09DVEVPTl9ERVZJQ0VTXVtSRVFUWVBFX0xBU1QgKyAxXSkgKHZvaWQgKik7XG4gXG4tLyogRGVmaW5lIHRoaXMgdG8gcmV0dXJuIHRoZSByZXF1ZXN0IHN0YXR1cyBjb21hcHRpYmxlIHRvIG9sZCBjb2RlICovXG4rLyogRGVmaW5lIHRoaXMgdG8gcmV0dXJuIHRoZSByZXF1ZXN0IHN0YXR1cyBjb21wYXRpYmxlIHRvIG9sZCBjb2RlICovXG4gLyojZGVmaW5lIE9DVEVPTl9VU0VfT0xEX1JFUV9TVEFUVVMqL1xuIFxuIC8qIFJldHVybiAwIG9uIHN1Y2Nlc3MsIDEgb24gZmFpbHVyZSAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmhcbmluZGV4IDA5MGQ2YjgzOTgyYTIuLmJiM2Y0ZmE2Yjk5NTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWMuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmhcbkBAIC05Nyw3ICs5Nyw3IEBAXG4gICogVGhpcyB2YWx1ZSBlbnN1cmVzIHRoYXQgb25jZSBhIHBhY2tldCBoYXMgYmVlbiBcImFjY2VwdGVkXCJcbiAgKiBmb3IgcmVjZXB0aW9uIGl0IHdpbGwgbm90IGdldCBkcm9wcGVkIGR1ZSB0byBub24tYXZhaWxhYmlsaXR5XG4gICogb2YgQ1EgZGVzY3JpcHRvci4gQW4gZXJyYXRhIGluIEhXIG1hbmRhdGVzIHRoaXMgdmFsdWUgdG8gYmVcbi0gKiBhdGxlYXN0IDB4MTAwLlxuKyAqIGF0IGxlYXN0IDB4MTAwLlxuICAqL1xuICNkZWZpbmUgTklDUEZfQ1FNX01JTl9EUk9QX0xFVkVMICAgICAgIDB4MTAwXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmNcbmluZGV4IDBlYzY1ZWM2MzRkZjUuLjA4NmYzMmI2MTU4MGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jXG5AQCAtNTk1LDcgKzU5NSw3IEBAIHN0YXRpYyB2b2lkIG5pY19jb25maWdfcnNzKHN0cnVjdCBuaWNwZiAqbmljLCBzdHJ1Y3QgcnNzX2NmZ19tc2cgKmNmZylcbiBcdG5pY19yZWdfd3JpdGUobmljLCBpZHhfYWRkciB8IChjcGlfYmFzZSBcdTAwM2NcdTAwM2MgMyksIGNwaV9jZmcpO1xuIH1cbiBcbi0vKiA0IGxldmVsIHRyYW5zbWl0IHNpZGUgc2NoZWR1bGVyIGNvbmZpZ3V0YXRpb25cbisvKiA0IGxldmVsIHRyYW5zbWl0IHNpZGUgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb25cbiAgKiBmb3IgVE5TIGJ5cGFzcyBtb2RlXG4gICpcbiAgKiBTYW1wbGUgY29uZmlndXJhdGlvbiBmb3IgU1EwIG9uIDg4eHhcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguY1xuaW5kZXggZjM4YTEwYzc5OTA3Zi4uZmE1MmUwOTk0MDljNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmNcbkBAIC0zNzMsNyArMzczLDcgQEAgc3RhdGljIHZvaWQgZGVfcnhfZXJyX2FjY3QgKHN0cnVjdCBkZV9wcml2YXRlICpkZSwgdW5zaWduZWQgcnhfdGFpbCxcbiBcdFx0ICByeF90YWlsLCBzdGF0dXMsIGxlbik7XG4gXG4gXHRpZiAoKHN0YXR1cyBcdTAwMjYgMHgzODAwMDMwMCkgIT0gMHgwMzAwKSB7XG4tXHRcdC8qIEluZ29yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4rXHRcdC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4gXHRcdGlmICgoc3RhdHVzIFx1MDAyNiAweGZmZmYpICE9IDB4N2ZmZikge1xuIFx0XHRcdG5ldGlmX3dhcm4oZGUsIHJ4X2VyciwgZGUtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgXCJPdmVyc2l6ZWQgRXRoZXJuZXQgZnJhbWUgc3Bhbm5lZCBtdWx0aXBsZSBidWZmZXJzLCBzdGF0dXMgJTA4eCFcXG5cIixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvaW50ZXJydXB0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvaW50ZXJydXB0LmNcbmluZGV4IDBhMTJjYjliM2JhNzguLjhjMDI3NzFiMjhlNGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvaW50ZXJydXB0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuY1xuQEAgLTE3Nyw3ICsxNzcsNyBAQCBpbnQgdHVsaXBfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXHRcdFx0ICAgcGt0X2xlbiBcdTAwM2UgMTUxOCkge1xuIFx0XHRcdCAgICAgICBpZiAoKHN0YXR1cyBcdTAwMjYgKFJ4TGVuZ3RoT3ZlcjIwNDcgfFxuIFx0XHRcdFx0XHQgICAgICBSeFdob2xlUGt0KSkgIT0gUnhXaG9sZVBrdCkge1xuLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cbisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzdGF0dXMgXHUwMDI2IDB4ZmZmZikgIT0gMHg3ZmZmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHVsaXBfZGVidWcgXHUwMDNlIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl93YXJuKFx1MDAyNmRldi1cdTAwM2VkZXYsXG5AQCAtNDA4LDcgKzQwOCw3IEBAIHN0YXRpYyBpbnQgdHVsaXBfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0ICAgIHBrdF9sZW4gXHUwMDNlIDE1MTgpIHtcbiBcdFx0XHRpZiAoKHN0YXR1cyBcdTAwMjYgKFJ4TGVuZ3RoT3ZlcjIwNDcgfFxuIFx0XHRcdCAgICAgUnhXaG9sZVBrdCkpICAgICAgICAgIT0gUnhXaG9sZVBrdCkge1xuLVx0XHRcdFx0LyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cbitcdFx0XHRcdC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4gXHRcdFx0XHRpZiAoKHN0YXR1cyBcdTAwMjYgMHhmZmZmKSAhPSAweDdmZmYpIHtcbiBcdFx0XHRcdFx0aWYgKHR1bGlwX2RlYnVnIFx1MDAzZSAxKVxuIFx0XHRcdFx0XHRcdG5ldGRldl93YXJuKGRldixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9tZWRpYS5jXG5pbmRleCA1NWQ2ZmM5OWY0MGI2Li4wYzk2OTRkMmIzOGFlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL21lZGlhLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9tZWRpYS5jXG5AQCAtMjQsNyArMjQsNyBAQFxuIFxuIC8qIFJlYWQgYW5kIHdyaXRlIHRoZSBNSUkgcmVnaXN0ZXJzIHVzaW5nIHNvZnR3YXJlLWdlbmVyYXRlZCBzZXJpYWxcbiAgICBNRElPIHByb3RvY29sLiAgSXQgaXMganVzdCBkaWZmZXJlbnQgZW5vdWdoIGZyb20gdGhlIEVFUFJPTSBwcm90b2NvbFxuLSAgIHRvIG5vdCBzaGFyZSBjb2RlLiAgVGhlIG1heGl1bSBkYXRhIGNsb2NrIHJhdGUgaXMgMi41IE1oei4gKi9cbisgICB0byBub3Qgc2hhcmUgY29kZS4gIFRoZSBtYXhpbXVtIGRhdGEgY2xvY2sgcmF0ZSBpcyAyLjUgTWh6LiAqL1xuICNkZWZpbmUgTURJT19TSElGVF9DTEtcdFx0MHgxMDAwMFxuICNkZWZpbmUgTURJT19EQVRBX1dSSVRFMFx0MHgwMDAwMFxuICNkZWZpbmUgTURJT19EQVRBX1dSSVRFMVx0MHgyMDAwMFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3R1bGlwLmhcbmluZGV4IDVlMDEwZTFmYTZmNzkuLmUzOWU1Yzc4ZDRjY2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvdHVsaXAuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3R1bGlwLmhcbkBAIC0yNTAsNyArMjUwLDcgQEAgZW51bSB0MjExNDNfY3NyNl9iaXRzIHtcbiBcdGNzcjZfdHRtID0gKDFcdTAwM2NcdTAwM2MyMiksICAvKiBUcmFuc21pdCBUaHJlc2hvbGQgTW9kZSwgc2V0IGZvciAxMGJhc2VULCAwIGZvciAxMDBCYXNlVFggKi9cbiBcdGNzcjZfc2YgPSAoMVx1MDAzY1x1MDAzYzIxKSwgICAvKiBTdG9yZSBhbmQgZm9yd2FyZC4gSWYgc2V0IGlnbm9yZXMgVFIgYml0cyAqL1xuIFx0Y3NyNl9oYmQgPSAoMVx1MDAzY1x1MDAzYzE5KSwgIC8qIEhlYXJ0IGJlYXQgZGlzYWJsZS4gRGlzYWJsZXMgU1FFIGZ1bmN0aW9uIGluIDEwYmFzZVQgKi9cbi1cdGNzcjZfcHMgPSAoMVx1MDAzY1x1MDAzYzE4KSwgICAvKiBQb3J0IFNlbGVjdC4gMCAoZGVmdWFsdCkgPSAxMGJhc2VULCAxID0gMTAwYmFzZVRYOiBjYW4ndCBiZSBzZXQgKi9cbitcdGNzcjZfcHMgPSAoMVx1MDAzY1x1MDAzYzE4KSwgICAvKiBQb3J0IFNlbGVjdC4gMCAoZGVmYXVsdCkgPSAxMGJhc2VULCAxID0gMTAwYmFzZVRYOiBjYW4ndCBiZSBzZXQgKi9cbiBcdGNzcjZfY2EgPSAoMVx1MDAzY1x1MDAzYzE3KSwgICAvKiBDb2xsaXNpb24gT2Zmc2V0IEVuYWJsZS4gSWYgc2V0IHVzZXMgc3BlY2lhbCBhbGdvcml0aG0gaW4gbG93IGNvbGxpc2lvbiBzaXR1YXRpb25zICovXG4gXHRjc3I2X3RyaCA9ICgxXHUwMDNjXHUwMDNjMTUpLCAgLyogVHJhbnNtaXQgVGhyZXNob2xkIGhpZ2ggYml0ICovXG4gXHRjc3I2X3RybCA9ICgxXHUwMDNjXHUwMDNjMTQpLCAgLyogVHJhbnNtaXQgVGhyZXNob2xkIGxvdyBiaXQgKi9cbkBAIC0yNzQsNyArMjc0LDcgQEAgZW51bSB0MjExNDNfY3NyNl9iaXRzIHtcbiBcdGNzcjZfb21faW50X2xvb3AgPSAoMVx1MDAzY1x1MDAzYzEwKSwgLyogaW50ZXJuYWwgKEZJRk8pIGxvb3BiYWNrIGZsYWcgKi9cbiBcdGNzcjZfb21fZXh0X2xvb3AgPSAoMVx1MDAzY1x1MDAzYzExKSwgLyogZXh0ZXJuYWwgKFBNRCkgbG9vcGJhY2sgZmxhZyAqL1xuIFx0Lyogc2V0IGJvdGggYW5kIHlvdSBnZXQgKFBIWSkgbG9vcGJhY2sgKi9cbi1cdGNzcjZfZmQgPSAoMVx1MDAzY1x1MDAzYzkpLCAgICAvKiBGdWxsIGR1cGxleCBtb2RlLCBkaXNhYmxlcyBoZWFyYmVhdCwgbm8gbG9vcGJhY2sgKi9cbitcdGNzcjZfZmQgPSAoMVx1MDAzY1x1MDAzYzkpLCAgICAvKiBGdWxsIGR1cGxleCBtb2RlLCBkaXNhYmxlcyBoZWFydGJlYXQsIG5vIGxvb3BiYWNrICovXG4gXHRjc3I2X3BtID0gKDFcdTAwM2NcdTAwM2M3KSwgICAgLyogUGFzcyBBbGwgTXVsdGljYXN0ICovXG4gXHRjc3I2X3ByID0gKDFcdTAwM2NcdTAwM2M2KSwgICAgLyogUHJvbWlzY3VvdXMgbW9kZSAqL1xuIFx0Y3NyNl9zYiA9ICgxXHUwMDNjXHUwMDNjNSksICAgIC8qIFN0YXJ0KDEpL1N0b3AoMCkgYmFja29mZiBjb3VudGVyICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3dpbmJvbmQtODQwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvd2luYm9uZC04NDAuY1xuaW5kZXggYTU1ODFmMWQwMTQxNy4uYmU5MTk5ZjU1YThhOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvd2luYm9uZC04NDAuY1xuQEAgLTExODgsNyArMTE4OCw3IEBAIHN0YXRpYyBpbnQgbmV0ZGV2X3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdFx0YnJlYWs7XG4gXHRcdGlmICgoc3RhdHVzIFx1MDAyNiAweDM4MDA4MzAwKSAhPSAweDAzMDApIHtcbiBcdFx0XHRpZiAoKHN0YXR1cyBcdTAwMjYgMHgzODAwMDMwMCkgIT0gMHgwMzAwKSB7XG4tXHRcdFx0XHQvKiBJbmdvcmUgZWFybGllciBidWZmZXJzLiAqL1xuK1x0XHRcdFx0LyogSWdub3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cbiBcdFx0XHRcdGlmICgoc3RhdHVzIFx1MDAyNiAweGZmZmYpICE9IDB4N2ZmZikge1xuIFx0XHRcdFx0XHRkZXZfd2FybihcdTAwMjZkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFx0XHRcdCBcIk92ZXJzaXplZCBFdGhlcm5ldCBmcmFtZSBzcGFubmVkIG11bHRpcGxlIGJ1ZmZlcnMsIGVudHJ5ICUjeCBzdGF0dXMgJTA0eCFcXG5cIixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jXG5pbmRleCA5MTM5MWE0OWZjZWEyLi5hNTlmZDI4MGEwNDVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9taXNjLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jXG5AQCAtNTkxLDcgKzU5MSw3IEBAIHN0YXRpYyBpbnQgaG5zX21hY19jb25maWdfc2RzX2xvb3BiYWNrKHN0cnVjdCBobnNfbWFjX2NiICptYWNfY2IsIGJvb2wgZW4pXG4gI2RlZmluZSBISUxJTktfQUNDRVNTX1NFTF9DRkdcdFx0MHg0MDAwOFxuIFx0XHRcdC8qIGhpbGluazQgXHUwMDI2IGhpbGluazMgdXNlIHRoZSBzYW1lIHhnZSB0cmFpbmluZyBhbmRcbiBcdFx0XHQgKiB4Z2UgdSBhZGFwdG9yLiBUaGVyZSBpcyBhIGhpbGluayBhY2Nlc3Mgc2VsIGNmZ1xuLVx0XHRcdCAqIHJlZ2lzdGVyIHRvIHNlbGVjdCB3aGljaCBvbmUgdG8gYmUgY29uZmlnZWRcbitcdFx0XHQgKiByZWdpc3RlciB0byBzZWxlY3Qgd2hpY2ggb25lIHRvIGJlIGNvbmZpZ3VyZWRcbiBcdFx0XHQgKi9cbiBcdFx0XHRpZiAoKCFITlNfRFNBRl9JU19ERUJVRyhtYWNfY2ItXHUwMDNlZHNhZl9kZXYpKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgKG1hY19jYi1cdTAwM2VtYWNfaWQgXHUwMDNjPSAzKSlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX3BwZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9wcGUuY1xuaW5kZXggNTAxM2JlYjRkMjgyNS4uNDA4ZDM2ZDg1ZmIxMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfcHBlLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfcHBlLmNcbkBAIC0xMzksNyArMTM5LDcgQEAgc3RhdGljIHZvaWQgaG5zX3BwZV9zZXRfdmxhbl9zdHJpcChzdHJ1Y3QgaG5zX3BwZV9jYiAqcHBlX2NiLCBpbnQgZW4pXG4gfVxuIFxuIC8qKlxuLSAqIGhuc19wcGVfY2hlY2tzdW1faHcgLSBzZXQgcHBlIGNoZWNrc3VtIGNhY3VsYXRlXG4rICogaG5zX3BwZV9jaGVja3N1bV9odyAtIHNldCBwcGUgY2hlY2tzdW0gY2FsY3VsYXRlXG4gICogQHBwZV9jYjogcHBlIGRldmljZVxuICAqIEB2YWx1ZTogdmFsdWVcbiAgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmNcbmluZGV4IGU5MDVmMTBiODk0ZTguLmQ4MTlkMmJiMzQ1MDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuY1xuQEAgLTEyMzAsNyArMTIzMCw3IEBAIHN0YXRpYyB2b2lkIGhuc19uaWNfdXBkYXRlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gXHRoLVx1MDAzZWRldi1cdTAwM2VvcHMtXHUwMDNldXBkYXRlX3N0YXRzKGgsIFx1MDAyNm5ldGRldi1cdTAwM2VzdGF0cyk7XG4gfVxuIFxuLS8qIHNldCBtYWMgYWRkciBpZiBpdCBpcyBjb25maWdlZC4gb3IgbGVhdmUgaXQgdG8gdGhlIEFFIGRyaXZlciAqL1xuKy8qIHNldCBtYWMgYWRkciBpZiBpdCBpcyBjb25maWd1cmVkLiBvciBsZWF2ZSBpdCB0byB0aGUgQUUgZHJpdmVyICovXG4gc3RhdGljIHZvaWQgaG5zX2luaXRfbWFjX2FkZHIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IGhuc19uaWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTIzMTcsNyArMjMxNyw3IEBAIHN0YXRpYyBpbnQgaG5zX25pY19kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0cmV0ID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgXCJwb3J0LWlkXCIsIFx1MDAyNnBvcnRfaWQpO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdGdvdG8gb3V0X3JlYWRfcHJvcF9mYWlsO1xuLVx0XHQvKiBmb3Igb2xkIGR0cywgd2UgbmVlZCB0byBjYWN1bGF0ZSB0aGUgcG9ydCBvZmZzZXQgKi9cbitcdFx0LyogZm9yIG9sZCBkdHMsIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBwb3J0IG9mZnNldCAqL1xuIFx0XHRwb3J0X2lkID0gcG9ydF9pZCBcdTAwM2MgSE5TX1NSVl9PRkZTRVQgPyBwb3J0X2lkICsgSE5TX0RFQlVHX09GRlNFVFxuIFx0XHRcdDogcG9ydF9pZCAtIEhOU19TUlZfT0ZGU0VUO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWFpbi5jXG5pbmRleCBlNmFmOTM5YzFjMTliLi5iZjM1ZjU1ZjViOGZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21haW4uY1xuQEAgLTEwNTI3LDcgKzEwNTI3LDcgQEAgc3RhdGljIGludCBoY2xnZV9nZXRfbGlua19kaWFnbm9zaXNfaW5mbyhzdHJ1Y3QgaG5hZTNfaGFuZGxlICpoYW5kbGUsXG4gfVxuIFxuIC8qIEFmdGVyIGRpc2FibGUgc3Jpb3YsIFZGIHN0aWxsIGhhcyBzb21lIGNvbmZpZyBhbmQgaW5mbyBuZWVkIGNsZWFuLFxuLSAqIHdoaWNoIGNvbmZpZ2VkIGJ5IFBGLlxuKyAqIHdoaWNoIGNvbmZpZ3VyZWQgYnkgUEYuXG4gICovXG4gc3RhdGljIHZvaWQgaGNsZ2VfY2xlYXJfdnBvcnRfdmZfaW5mbyhzdHJ1Y3QgaGNsZ2VfdnBvcnQgKnZwb3J0LCBpbnQgdmZpZClcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX3RtLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfdG0uY1xuaW5kZXggMDBjM2YyNTQ4YmY2Yi4uYmY1MzNiOGY0NmFlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV90bS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfdG0uY1xuQEAgLTM1LDcgKzM1LDcgQEAgZW51bSBoY2xnZV9zaGFwZXJfbGV2ZWwge1xuICAqIElSKE1icHMpID0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgKiAgQ0xPQ0soMTAwME1icHMpXG4gICpcdFx0VGljayAqICgyIF4gSVJfcylcbiAgKlxuLSAqIEByZXR1cm46IDA6IGNhbGN1bGF0ZSBzdWNlc3NmdWwsIG5lZ2F0aXZlOiBmYWlsXG4rICogQHJldHVybjogMDogY2FsY3VsYXRlIHN1Y2Nlc3NmdWwsIG5lZ2F0aXZlOiBmYWlsXG4gICovXG4gc3RhdGljIGludCBoY2xnZV9zaGFwZXJfcGFyYV9jYWxjKHUzMiBpciwgdTggc2hhcGVyX2xldmVsLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgaGNsZ2Vfc2hhcGVyX2lyX3BhcmEgKmlyX3BhcmEsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jXG5pbmRleCAwNjNhNjkyYzJiNDFlLi41ZDE0ZDI5YjAyOTY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzdmYvaGNsZ2V2Zl9tYWluLmNcbkBAIC0xODgwLDcgKzE4ODAsNyBAQCBzdGF0aWMgdm9pZCBoY2xnZXZmX3Jlc2V0X3NlcnZpY2VfdGFzayhzdHJ1Y3QgaGNsZ2V2Zl9kZXYgKmhkZXYpXG4gXHRcdCAqIGZyb20gUEYgYXMgY21kcSB3b3VsZCBiZSBpbiB1bnJlbGlhYmxlIHN0YXRlIGkuZS4gbWFpbGJveFxuIFx0XHQgKiBjb21tdW5pY2F0aW9uIGJldHdlZW4gUEYgYW5kIFZGIHdvdWxkIGJlIGJyb2tlbi5cbiBcdFx0ICpcbi1cdFx0ICogaWYgd2UgYXJlIG5ldmVyIGdldGluZyBpbnRvIHBlbmRpbmcgc3RhdGUgaXQgbWVhbnMgZWl0aGVyOlxuK1x0XHQgKiBpZiB3ZSBhcmUgbmV2ZXIgZ2V0dGluZyBpbnRvIHBlbmRpbmcgc3RhdGUgaXQgbWVhbnMgZWl0aGVyOlxuIFx0XHQgKiAxLiBQRiBpcyBub3QgcmVjZWl2aW5nIG91ciByZXF1ZXN0IHdoaWNoIGNvdWxkIGJlIGR1ZSB0byBJTVBcbiBcdFx0ICogICAgcmVzZXRcbiBcdFx0ICogMi4gUEYgaXMgc2NyZXdlZFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaFxuaW5kZXggMDYxZmNkNDQ0ZDUwMy4uM2VkNTY3MGYwMWMyNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oXG5AQCAtNzI5LDcgKzcyOSw3IEBAXG4gI2RlZmluZSBNVlBQMl9NQVhfVFhRXHRcdFx0OFxuIFxuIC8qIE1WUFAyX01BWF9UU09fU0VHUyBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhZ21lbnRzIHRvIGFsbG93IGluIHRoZSBHU09cbi0gKiBza2IuIEFzIHdlIG5lZWQgYSBtYXhpdW0gb2YgdHdvIGRlc2NyaXB0b3JzIHBlciBmcmFnbWVudHMgKDEgaGVhZGVyLCAxIGRhdGEpLFxuKyAqIHNrYi4gQXMgd2UgbmVlZCBhIG1heGltdW0gb2YgdHdvIGRlc2NyaXB0b3JzIHBlciBmcmFnbWVudHMgKDEgaGVhZGVyLCAxIGRhdGEpLFxuICAqIG11bHRpcGx5IHRoaXMgdmFsdWUgYnkgdHdvIHRvIGNvdW50IHRoZSBtYXhpbXVtIG51bWJlciBvZiBza2IgZGVzY3MgbmVlZGVkLlxuICAqL1xuICNkZWZpbmUgTVZQUDJfTUFYX1RTT19TRUdTXHRcdDMwMFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfcHJzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX3Bycy5jXG5pbmRleCA5M2U5NzhiZGYzMDNjLi5hZDY3N2NmZGRiNGQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9wcnMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9wcnMuY1xuQEAgLTM4Miw3ICszODIsNyBAQCBzdGF0aWMgaW50IG12cHAyX3Byc19mbG93X2ZpbmQoc3RydWN0IG12cHAyICpwcml2LCBpbnQgZmxvdylcbiBcdHN0cnVjdCBtdnBwMl9wcnNfZW50cnkgcGU7XG4gXHRpbnQgdGlkO1xuIFxuLVx0LyogR28gdGhyb3VnaCB0aGUgYWxsIGVudGlyZXMgd2l0aCBNVlBQMl9QUlNfTFVfRkxPV1MgKi9cbitcdC8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRyaWVzIHdpdGggTVZQUDJfUFJTX0xVX0ZMT1dTICovXG4gXHRmb3IgKHRpZCA9IE1WUFAyX1BSU19UQ0FNX1NSQU1fU0laRSAtIDE7IHRpZCBcdTAwM2U9IDA7IHRpZC0tKSB7XG4gXHRcdHU4IGJpdHM7XG4gXG5AQCAtMTIxMiw3ICsxMjEyLDcgQEAgc3RhdGljIHZvaWQgbXZwcDJfcHJzX21oX2luaXQoc3RydWN0IG12cHAyICpwcml2KVxuIFx0bXZwcDJfcHJzX2h3X3dyaXRlKHByaXYsIFx1MDAyNnBlKTtcbiB9XG4gXG4tLyogU2V0IGRlZmF1bHQgZW50aXJlcyAocGxhY2UgaG9sZGVyKSBmb3IgcHJvbWlzY3VvdXMsIG5vbi1wcm9taXNjdW91cyBhbmRcbisvKiBTZXQgZGVmYXVsdCBlbnRyaWVzIChwbGFjZSBob2xkZXIpIGZvciBwcm9taXNjdW91cywgbm9uLXByb21pc2N1b3VzIGFuZFxuICAqIG11bHRpY2FzdCBNQUMgYWRkcmVzc2VzXG4gICovXG4gc3RhdGljIHZvaWQgbXZwcDJfcHJzX21hY19pbml0KHN0cnVjdCBtdnBwMiAqcHJpdilcbkBAIC0yMjQxLDcgKzIyNDEsNyBAQCBtdnBwMl9wcnNfbWFjX2RhX3JhbmdlX2ZpbmQoc3RydWN0IG12cHAyICpwcml2LCBpbnQgcG1hcCwgY29uc3QgdTggKmRhLFxuIFx0c3RydWN0IG12cHAyX3Byc19lbnRyeSBwZTtcbiBcdGludCB0aWQ7XG4gXG4tXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyB3aXRoIE1WUFAyX1BSU19MVV9NQUMgKi9cbitcdC8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRyaWVzIHdpdGggTVZQUDJfUFJTX0xVX01BQyAqL1xuIFx0Zm9yICh0aWQgPSBNVlBQMl9QRV9NQUNfUkFOR0VfU1RBUlQ7XG4gXHQgICAgIHRpZCBcdTAwM2M9IE1WUFAyX1BFX01BQ19SQU5HRV9FTkQ7IHRpZCsrKSB7XG4gXHRcdHVuc2lnbmVkIGludCBlbnRyeV9wbWFwO1xuQEAgLTI1MzksNyArMjUzOSw3IEBAIGludCBtdnBwMl9wcnNfZGVmX2Zsb3coc3RydWN0IG12cHAyX3BvcnQgKnBvcnQpXG4gXG4gXHQvKiBTdWNoIGVudHJ5IG5vdCBleGlzdCAqL1xuIFx0aWYgKHRpZCBcdTAwM2MgMCkge1xuLVx0XHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyBmcm9tIGxhc3QgdG8gZmlyc3QgKi9cbitcdFx0LyogR28gdGhyb3VnaCB0aGUgYWxsIGVudHJpZXMgZnJvbSBsYXN0IHRvIGZpcnN0ICovXG4gXHRcdHRpZCA9IG12cHAyX3Byc190Y2FtX2ZpcnN0X2ZyZWUocG9ydC1cdTAwM2Vwcml2LFxuIFx0XHRcdFx0XHRcdE1WUFAyX1BFX0xBU1RfRlJFRV9USUQsXG4gXHRcdFx0XHRcdCAgICAgICBNVlBQMl9QRV9GSVJTVF9GUkVFX1RJRCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbnBjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaFxuaW5kZXggNzE5YjM2MThlZWI1Mi4uMzA5MjQ0ZmU4NzU0MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL25wYy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaFxuQEAgLTg0LDcgKzg0LDcgQEAgZW51bSBucGNfa3B1X2xjX2x0eXBlIHtcbiBcdE5QQ19MVF9MQ19DVVNUT00xID0gMHhGLFxuIH07XG4gXG4tLyogRG9uJ3QgbW9kaWZ5IEx0eXBlcyB1cHRvIFNDVFAsIG90aGVyd2lzZSBpdCB3aWxsXG4rLyogRG9uJ3QgbW9kaWZ5IEx0eXBlcyB1cCB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbFxuICAqIGVmZmVjdCBmbG93IHRhZyBjYWxjdWxhdGlvbiBhbmQgdGh1cyBSU1MuXG4gICovXG4gZW51bSBucGNfa3B1X2xkX2x0eXBlIHtcbkBAIC0xNDAsNyArMTQwLDcgQEAgZW51bSBucGNfa3B1X2xnX2x0eXBlIHtcbiBcdE5QQ19MVF9MR19DVVNUT00xID0gMHhGLFxuIH07XG4gXG4tLyogRG9uJ3QgbW9kaWZ5IEx0eXBlcyB1cHRvIFNDVFAsIG90aGVyd2lzZSBpdCB3aWxsXG4rLyogRG9uJ3QgbW9kaWZ5IEx0eXBlcyB1cCB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbFxuICAqIGVmZmVjdCBmbG93IHRhZyBjYWxjdWxhdGlvbiBhbmQgdGh1cyBSU1MuXG4gICovXG4gZW51bSBucGNfa3B1X2xoX2x0eXBlIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbmluZGV4IDE1M2ViNTdiYWQwNjcuLmQ4MGQyYzAwYmQ4NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuQEAgLTQ5NzQsNyArNDk3NCw3IEBAIHN0YXRpYyB2b2lkIHJ2dV9uaXhfc2V0dXBfY2FwYWJpbGl0aWVzKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIpXG4gXG4gXHQvKiBPbiBPY3Rlb25UeDIgRFdSUiBxdWFudHVtIGlzIGRpcmVjdGx5IGNvbmZpZ3VyZWQgaW50byBlYWNoIG9mXG4gXHQgKiB0aGUgdHJhbnNtaXQgc2NoZWR1bGVyIHF1ZXVlcy4gQW5kIFBGL1ZGIGRyaXZlcnMgd2VyZSBmcmVlIHRvXG4tXHQgKiBjb25maWcgYW55IHZhbHVlIHVwdG8gMl4yNC5cbitcdCAqIGNvbmZpZyBhbnkgdmFsdWUgdXAgdG8gMl4yNC5cbiBcdCAqIE9uIENOMTBLLCBIVyBpcyBtb2RpZmllZCwgdGhlIHF1YW50dW0gY29uZmlndXJhdGlvbiBhdCBzY2hlZHVsZXJcbiBcdCAqIHF1ZXVlcyBpcyBpbiB0ZXJtcyBvZiB3ZWlnaHQuIEFuZCBTVyBuZWVkcyB0byBzZXR1cCBhIGJhc2UgRFdSUiBNVFVcbiBcdCAqIGF0IE5JWF9BRl9EV1JSX1JQTV9NVFUgLyBOSVhfQUZfRFdSUl9TRFBfTVRVLiBIVyB3aWxsIGRvXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuY1xuaW5kZXggM2UxYmYyMmNiYTY5Yy4uZjk4ZWY1NDMxYzkwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuY1xuQEAgLTMwMSw3ICszMDEsNyBAQCBzdGF0aWMgdm9pZCBjbjEwa19nZXRfaW5ncmVzc19yYXRlX2NmZyh1NjQgcmF0ZSwgdTMyICpyYXRlX2V4cCxcbiBcdCAqIHBvbGljZXIgdGltZXVuaXQgKiAyXnJkaXYgaWUgMiAqIDJecmRpdiB1c2VjcywgdG8gdGhlIHRva2VuIGJ1Y2tldC5cbiBcdCAqIEhlcmUgcG9saWNlciB0aW1ldW5pdCBpcyAyIHVzZWNzIGFuZCByYXRlIGlzIGluIGJpdHMgcGVyIHNlYy5cbiBcdCAqIFNpbmNlIGZsb2F0aW5nIHBvaW50IGNhbm5vdCBiZSB1c2VkIGJlbG93IGFsZ29yaXRobSB1c2VzIDEwMDAwMDBcbi1cdCAqIHNjYWxlIGZhY3RvciB0byBzdXBwb3J0IHJhdGVzIHVwdG8gMTAwR2Jwcy5cbitcdCAqIHNjYWxlIGZhY3RvciB0byBzdXBwb3J0IHJhdGVzIHVwIHRvIDEwMEdicHMuXG4gXHQgKi9cbiBcdHRtcCA9IHJhdGUgKiAzMiAqIDI7XG4gXHRpZiAodG1wIFx1MDAzYyAyNTYwMDAwMDApIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9kY2JubC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZGNibmwuY1xuaW5kZXggZjExMGRmYTQyMzYwNS4uOTFkMzQ2ZDExNGFmNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2RjYm5sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2RjYm5sLmNcbkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBpbnQgb3R4Ml9wZmNfdHhzY2hxX2FsbG9jX29uZShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHU4IHByaW8pXG4gXHRpZiAoIXJlcSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHQvKiBSZXF1ZXN0IG9uZSBzY2hxIHBlciBsZXZlbCB1cHRvIG1heCBsZXZlbCBhcyBjb25maWd1cmVkXG4rXHQvKiBSZXF1ZXN0IG9uZSBzY2hxIHBlciBsZXZlbCB1cCB0byBtYXggbGV2ZWwgYXMgY29uZmlndXJlZFxuIFx0ICogbGluayBjb25maWcgbGV2ZWwuIFRoZXNlIHJlc3Qgb2YgdGhlIHNjaGVkdWxlciBjYW4gYmVcbiBcdCAqIHNhbWUgYXMgaHcudHhzY2hxX2xpc3QuXG4gXHQgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jXG5pbmRleCBiYmJiYmJhNjNlMTVkLi4yMzcwYjJkZGJhNmI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jXG5AQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyBpbnQgYWRkX2RlbF9oYXNoX2VudHJ5KHN0cnVjdCBweGExNjhfZXRoX3ByaXZhdGUgKnBlcCxcbiAvKlxuICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgKiAgQ3JlYXRlIGFuIGFkZHJlc3NUYWJsZSBlbnRyeSBmcm9tIE1BQyBhZGRyZXNzIGluZm9cbi0gKiAgZm91bmQgaW4gdGhlIHNwZWNpZmVkIG5ldF9kZXZpY2Ugc3RydWN0XG4rICogIGZvdW5kIGluIHRoZSBzcGVjaWZpZWQgbmV0X2RldmljZSBzdHJ1Y3RcbiAgKlxuICAqICBJbnB1dCA6IHBvaW50ZXIgdG8gZXRoZXJuZXQgaW50ZXJmYWNlIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZVxuICAqICBPdXRwdXQgOiBOL0FcbkBAIC04MDYsNyArODA2LDcgQEAgc3RhdGljIGludCByeHFfcHJvY2VzcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgYnVkZ2V0KVxuIFx0XHRzdGF0cy1cdTAwM2VyeF9ieXRlcyArPSByeF9kZXNjLVx1MDAzZWJ5dGVfY250O1xuIFx0XHQvKlxuIFx0XHQgKiBJbiBjYXNlIHJlY2VpdmVkIGEgcGFja2V0IHdpdGhvdXQgZmlyc3QgLyBsYXN0IGJpdHMgb24gT1Jcbi1cdFx0ICogdGhlIGVycm9yIHN1bW1hcnkgYml0IGlzIG9uLCB0aGUgcGFja2V0cyBuZWVkcyB0byBiZSBkcm9wZWQuXG4rXHRcdCAqIHRoZSBlcnJvciBzdW1tYXJ5IGJpdCBpcyBvbiwgdGhlIHBhY2tldHMgbmVlZHMgdG8gYmUgZHJvcHBlZC5cbiBcdFx0ICovXG4gXHRcdGlmICgoKGNtZF9zdHMgXHUwMDI2IChSWF9GSVJTVF9ERVNDIHwgUlhfTEFTVF9ERVNDKSkgIT1cbiBcdFx0ICAgICAoUlhfRklSU1RfREVTQyB8IFJYX0xBU1RfREVTQykpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jXG5pbmRleCBmZWY0YjJiMGIxZjI2Li43OWQ2YTgxOWJmOTA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfY3R4LmNcbkBAIC0xNyw3ICsxNyw3IEBAIG5ldHhlbl9wb2xsX3JzcChzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRpbnRcdHRpbWVvdXQgPSAwO1xuIFxuIFx0ZG8ge1xuLVx0XHQvKiBnaXZlIGF0bGVhc3QgMW1zIGZvciBmaXJtd2FyZSB0byByZXNwb25kICovXG4rXHRcdC8qIGdpdmUgYXQgbGVhc3QgMW1zIGZvciBmaXJtd2FyZSB0byByZXNwb25kICovXG4gXHRcdG1zbGVlcCgxKTtcbiBcbiBcdFx0aWYgKCsrdGltZW91dCBcdTAwM2UgTlhfT1NfQ1JCX1JFVFJZX0NPVU5UKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2N4dC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfY3h0LmNcbmluZGV4IGI3MDI2MmU3MGJhZjYuLjg5Yjk0N2Y4MmNmMDAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9jeHQuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfY3h0LmNcbkBAIC01NjEsNyArNTYxLDcgQEAgaW50IHFlZF9jeHRfY2ZnX2lsdF9jb21wdXRlKHN0cnVjdCBxZWRfaHdmbiAqcF9od2ZuLCB1MzIgKmxpbmVfY291bnQpXG4gXHRcdFx0ICogICAgICBibG9jayBpbiB0aGUgSUxUIGNsaWVudC4gVGhpcyBpcyBsYXRlciB1c2VkIHRvXG4gXHRcdFx0ICogICAgICBjb25maWd1cmUgdGhlIENEVSBzZWdtZW50IG9mZnNldCByZWdpc3RlcnMgYW5kXG4gXHRcdFx0ICogICAgICByZXN1bHRzIGluIGFuIEZMIGNvbW1hbmQgZm9yIFRJRHMgb2YgdGhpc1xuLVx0XHRcdCAqICAgICAgc2VnZW1lbnQgYmVoYXZlcyBhcyByZWd1bGFyIGxvYWQgY29tbWFuZHNcbitcdFx0XHQgKiAgICAgIHNlZ21lbnQgYmVoYXZlcyBhcyByZWd1bGFyIGxvYWQgY29tbWFuZHNcbiBcdFx0XHQgKiAgICAgIChsb2FkaW5nIFRJRHMgZnJvbSB0aGUgd29ya2luZyBtZW1vcnkpLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGxpbmUgPSBwX2NsaS1cdTAwM2VwZl9ibGtzW0NEVVRfU0VHX0JMSyhpKV0uc3RhcnRfbGluZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9tY3AuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oXG5pbmRleCA5YmQwNTY1ZmU4YWJjLi41MDY5OWQ2MDBiOGUzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfbWNwLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oXG5AQCAtNzgzLDcgKzc4Myw3IEBAIHN0cnVjdCBxZWRfbWNwX2luZm8ge1xuIFx0dTE2XHRcdFx0XHRcdG1md19tYl9sZW5ndGg7XG4gXHR1MzJcdFx0XHRcdFx0bWNwX2hpc3Q7XG4gXG4tXHQvKiBDYXBhYmlsdGllcyBuZWdvdGlhdGVkIHdpdGggdGhlIE1GVyAqL1xuK1x0LyogQ2FwYWJpbGl0aWVzIG5lZ290aWF0ZWQgd2l0aCB0aGUgTUZXICovXG4gXHR1MzJcdFx0XHRcdFx0Y2FwYWJpbGl0aWVzO1xuIFxuIFx0LyogUy9OIGZvciBkZWJ1ZyBkYXRhIG1haWxib3ggY29tbWFuZHMgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWMuaFxuaW5kZXggZDdjOGZhZGI0OWRlMS4uOTcyOGQ1ODNiODkxOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljLmhcbkBAIC05MDksNyArOTA5LDcgQEAgc3RydWN0IHFsY25pY19tYWNfdmxhbl9saXN0IHtcbiBcbiAjZGVmaW5lIFFMQ05JQ19MUk9fUkVRVUVTVF9DTEVBTlVQXHQ0XG4gXG4tLyogQ2FwYWJpbGl0ZXMgcmVjZWl2ZWQgKi9cbisvKiBDYXBhYmlsaXRpZXMgcmVjZWl2ZWQgKi9cbiAjZGVmaW5lIFFMQ05JQ19GV19DQVBBQklMSVRZX1RTT1x0XHRCSVRfMVxuICNkZWZpbmUgUUxDTklDX0ZXX0NBUEFCSUxJVFlfQkRHXHRcdEJJVF84XG4gI2RlZmluZSBRTENOSUNfRldfQ0FQQUJJTElUWV9GVkxBTlRYXHRcdEJJVF85XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuY1xuaW5kZXggNDdjZDllYzY2NWVlYi4uZmYzMzdhOTE3MjQzYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuY1xuQEAgLTE5NTcsOSArMTk1Nyw5IEBAIHN0YXRpYyB2b2lkIHFsY25pY184M3h4X3RlbXBsYXRlX2VuZChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKnBfZGV2KVxuICogcWxjbmljXzgzeHhfZXhlY190ZW1wbGF0ZV9jbWRcbiAqXG4gKiBAcF9kZXY6IGFkYXB0ZXIgc3RydWN0dXJlXG4tKiBAcF9idWZmOiBQb2l0ZXIgdG8gaW5zdHJ1Y3Rpb24gdGVtcGxhdGVcbisqIEBwX2J1ZmY6IFBvaW50ZXIgdG8gaW5zdHJ1Y3Rpb24gdGVtcGxhdGVcbiAqXG4tKiBUZW1wbGF0ZSBwcm92aWRlcyBpbnN0cnVjdGlvbnMgdG8gc3RvcCwgcmVzdGFydCBhbmQgaW5pdGFsaXplIGZpcm13YXJlLlxuKyogVGVtcGxhdGUgcHJvdmlkZXMgaW5zdHJ1Y3Rpb25zIHRvIHN0b3AsIHJlc3RhcnQgYW5kIGluaXRpYWxpemUgZmlybXdhcmUuXG4gKiBUaGVzZSBpbnN0cnVjdGlvbnMgYXJlIGFic3RyYWN0ZWQgYXMgYSBzZXJpZXMgb2YgcmVhZCwgd3JpdGUgYW5kXG4gKiBwb2xsIG9wZXJhdGlvbnMgb24gaGFyZHdhcmUgcmVnaXN0ZXJzLiBSZWdpc3RlciBpbmZvcm1hdGlvbiBhbmQgb3BlcmF0aW9uXG4gKiBzcGVjaWZpY3MgYXJlIG5vdCBleHBvc2VkIHRvIHRoZSBkcml2ZXIuIERyaXZlciByZWFkcyB0aGUgdGVtcGxhdGUgZnJvbVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX2N0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmNcbmluZGV4IGViODI3Yjg2ZWNhZTguLjFiOTRjNDJkNjY5YjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19jdHguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmNcbkBAIC05NSw3ICs5NSw3IEBAIHFsY25pY19wb2xsX3JzcChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRpbnQgdGltZW91dCA9IDAsIGVyciA9IDA7XG4gXG4gXHRkbyB7XG4tXHRcdC8qIGdpdmUgYXRsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi9cbitcdFx0LyogZ2l2ZSBhdCBsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi9cbiBcdFx0bWRlbGF5KDEpO1xuIFxuIFx0XHRpZiAoKyt0aW1lb3V0IFx1MDAzZSBRTENOSUNfT1NfQ1JCX1JFVFJZX0NPVU5UKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uY1xuaW5kZXggZmY0ZjdjZDIwYzc5MS4uMjNhZTc2Y2E4MWRiZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jXG5AQCAtNjQwLDcgKzY0MCw3IEBAIHN0YXRpYyBpbnQgcWxjbmljX21heF9yaW5ncyhzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHJpbmdfY250LFxuIFxuIHZvaWQgcWxjbmljX3NldF90eF9yaW5nX2NvdW50KHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqYWRhcHRlciwgdTggdHhfY250KVxuIHtcbi1cdC8qIDgzeHggYWRhcHRlciBkb2VzIG5vdCBoYXZlIG1heF90eF9yaW5ncyBpbnRpYWxpemVkIGluIHByb2JlICovXG4rXHQvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfdHhfcmluZ3MgaW5pdGlhbGl6ZWQgaW4gcHJvYmUgKi9cbiBcdGlmIChhZGFwdGVyLVx1MDAzZW1heF90eF9yaW5ncylcbiBcdFx0YWRhcHRlci1cdTAwM2VkcnZfdHhfcmluZ3MgPSBxbGNuaWNfbWF4X3JpbmdzKGFkYXB0ZXIsIHR4X2NudCxcbiBcdFx0XHRcdFx0XHRcdCBRTENOSUNfVFhfUVVFVUUpO1xuQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIHFsY25pY19zZXRfdHhfcmluZ19jb3VudChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHR4X2NudClcbiBcbiB2b2lkIHFsY25pY19zZXRfc2RzX3JpbmdfY291bnQoc3RydWN0IHFsY25pY19hZGFwdGVyICphZGFwdGVyLCB1OCByeF9jbnQpXG4ge1xuLVx0LyogODN4eCBhZGFwdGVyIGRvZXMgbm90IGhhdmUgbWF4X3Nkc19yaW5ncyBpbnRpYWxpemVkIGluIHByb2JlICovXG4rXHQvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfc2RzX3JpbmdzIGluaXRpYWxpemVkIGluIHByb2JlICovXG4gXHRpZiAoYWRhcHRlci1cdTAwM2VtYXhfc2RzX3JpbmdzKVxuIFx0XHRhZGFwdGVyLVx1MDAzZWRydl9zZHNfcmluZ3MgPSBxbGNuaWNfbWF4X3JpbmdzKGFkYXB0ZXIsIHJ4X2NudCxcbiBcdFx0XHRcdFx0XHRcdCAgUUxDTklDX1JYX1FVRVVFKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmNcbmluZGV4IDRlZWEzNDA4MDM0YmUuLmI3MjJhMTk1ZDgzMWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmNcbisrKyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9jZm0uY1xuQEAgLTE3LDcgKzE3LDcgQEBcbiAqL1xuIFxuIC8qXG4tICpcdEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb25cbisgKlx0SGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvblxuICAqXHRUaGUgZm9sbG93aW5nIGV4dGVybmFsIFNNVCBmdW5jdGlvbnMgYXJlIHJlZmVyZW5jZWQgOlxuICAqXG4gICpcdFx0cXVldWVfZXZlbnQoKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uYyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uY1xuaW5kZXggMmY1ZjVmMjZiYjQzNC4uZTQxOGFiNjVjYjYxMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uY1xuKysrIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jXG5AQCAtMTcsNyArMTcsNyBAQFxuICovXG4gXG4gLypcbi0gKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uXG4rICogSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvblxuICAqIFRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgU01UIGZ1bmN0aW9ucyBhcmUgcmVmZXJlbmNlZCA6XG4gICpcbiAgKiBcdFx0cXVldWVfZXZlbnQoKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZnBsdXN0bS5jXG5pbmRleCAwMzYwNjIzNzZjMDY2Li4wZDQyMDEzNDVmOWJlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uY1xuKysrIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uY1xuQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgdV9sb25nIHJlYWRfbWRyKHN0cnVjdCBzX3NtYyAqc21jLCB1bnNpZ25lZCBpbnQgYWRkcilcbiBcdENIRUNLX05QUCgpIDtcbiBcdE1BUlIoYWRkcikgO1xuIFx0b3V0cHcoRk1fQShGTV9DTURSRUcxKSxGTV9JUk1FTVdPKSA7XG4tXHRDSEVDS19OUFAoKSA7XHQvKiBuZWVkZWQgZm9yIFBDSSB0byBwcmV2ZW50IGZyb20gdGltZWluZyB2aW9sYXRpb25zICovXG4rXHRDSEVDS19OUFAoKSA7XHQvKiBuZWVkZWQgZm9yIFBDSSB0byBwcmV2ZW50IGZyb20gdGltaW5nIHZpb2xhdGlvbnMgKi9cbiAvKlx0cCA9IE1EUlIoKSA7ICovXHQvKiBiYWQgcmVhZCB2YWx1ZXMgaWYgdGhlIHdvcmthcm91bmQgKi9cbiBcdFx0XHQvKiBzbWMtXHUwMDNlaHcubWNfZHVtbXkgPSAqKChzaG9ydCB2b2xhdGlsZSBmYXIgKikoYWRkcikpKSovXG4gXHRcdFx0LyogaXMgdXNlZCAqL1xuQEAgLTU3Miw3ICs1NzIsNyBAQCBOb3RlXHRBZnRlciBhbnkgcmluZyBvcGVyYXRpb25hbCBjaGFuZ2UgdGhlIHRyYW5zbWl0IGNvbXBsZXRlXG4gXHRUaGUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQgbW9kdWxlIG11c3QgZW5hYmxlXG4gXHR0aGUgdHJhbnNtaXQgY29tcGxldGUgaW50ZXJydXB0IG9mIGEgcXVldWUsXG4gXHRcdC0gd2hlbiBpdCBxdWV1ZXMgdGhlIGZpcnN0IGZyYW1lLFxuLVx0XHQgIGJlY2F1c2Ugb2Ygbm8gdHJhbnNtaXQgcmVzb3VyY2VzIGFyZSBiZWVpbmdcbitcdFx0ICBiZWNhdXNlIG9mIG5vIHRyYW5zbWl0IHJlc291cmNlcyBhcmUgYmVpbmdcbiBcdFx0ICBhdmFpbGFibGUgYW5kXG4gXHRcdC0gd2hlbiBpdCBlc2NhcGVzIGZyb20gdGhlIGZ1bmN0aW9uIGxsY19yZXN0YXJ0X3R4XG4gXHRcdCAgd2hpbGUgc29tZSBmcmFtZXMgYXJlIHN0aWxsIHF1ZXVlZC5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9od210bS5oIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvaHdtdG0uaFxuaW5kZXggZTk3ZGI4MjZjZGQ0NS4uMGFiNDljYzBhOGJkYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL2h3bXRtLmhcbisrKyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL2h3bXRtLmhcbkBAIC0xMTMsNyArMTEzLDcgQEAgc3RydWN0IGh3X21vZHVsIHtcbiBcdHN0cnVjdFx0c19tYnVmX3Bvb2xcdG1idWZfcG9vbCA7XG4gXHRzdHJ1Y3RcdGh3bV9yXHRyIDtcbiBcbi1cdHVuaW9uIHNfZnBfZGVzY3Igdm9sYXRpbGUgKmRlc2NyX3AgOyAvKiBwb2ludHMgdG8gdGhlIGRlc3JpcHRvciBhcmVhICovXG4rXHR1bmlvbiBzX2ZwX2Rlc2NyIHZvbGF0aWxlICpkZXNjcl9wIDsgLyogcG9pbnRzIHRvIHRoZSBkZXNjcmlwdG9yIGFyZWEgKi9cbiBcbiBcdHVfc2hvcnQgcGFzc19TTVQgO1x0XHQvKiBwYXNzIFNNVCBmcmFtZXMgKi9cbiBcdHVfc2hvcnQgcGFzc19OU0EgO1x0XHQvKiBwYXNzIGFsbCBOU0EgZnJhbWVzICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvc2JhLmggYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9zYmEuaFxuaW5kZXggZjMwMzAxZmNkMDIyYy4uN2ZlOTljMTJlMjAxNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3NiYS5oXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9zYmEuaFxuQEAgLTk0LDcgKzk0LDcgQEAgc3RydWN0IHNfc2JhIHtcbiBcdGxvbmdcdFx0bXNnX21pYl9vdiA7XHRcdC8qIEN1cnJlbnQgT3ZlcmhlYWQgZm9yIHRoaXMgUGF0aCovXG4gXHRsb25nXHRcdG1zZ19jYXRlZ29yeSA7XHRcdC8qIENhdGVnb3J5IG9mIHRoZSBBbGxvY2F0aW9uICovXG4gXHR1X2xvbmdcdFx0bXNnX21heF90X25lZyA7XHRcdC8qIGxvbmdlc3QgVF9OZWcgYWNjZXB0YWJsZSAqL1xuLVx0dV9sb25nXHRcdG1zZ19taW5fc2VnX3NpeiA7XHQvKiBtaW5pbXVtIHNlZ2VtZW50IHNpemUgKi9cbitcdHVfbG9uZ1x0XHRtc2dfbWluX3NlZ19zaXogO1x0LyogbWluaW11bSBzZWdtZW50IHNpemUgKi9cbiBcdHN0cnVjdCBzbXRfaGVhZGVyXHQqc20gO1x0XHQvKiBwb2ludHMgdG8gdGhlIHJlYyBtZXNzYWdlICovXG4gXHRzdHJ1Y3QgZmRkaV9hZGRyXHQqbXNnX2FsbG9jX2FkZHIgO1x0LyogQWxsb2NhdGlvbiBBZGRyZXNzICovXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jXG5pbmRleCA5MGU4ZGY2ZDlhODhhLi43NDUyODVkNGQ2ZDJlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcGNtcGxjLmNcbkBAIC0xNiw3ICsxNiw3IEBAXG4gKi9cbiBcbiAvKlxuLSAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb25cbisgKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWVudGF0aW9uXG4gICogVGhlIGZvbGxvd2luZyBleHRlcm5hbCBTTVQgZnVuY3Rpb25zIGFyZSByZWZlcmVuY2VkIDpcbiAgKlxuICAqIFx0XHRxdWV1ZV9ldmVudCgpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jXG5pbmRleCAzMTQ2MjM2NTBhODRiLi41NzA4MTI0ZjA1ZDJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmNcbkBAIC0xNiw3ICsxNiw3IEBAXG4gKi9cbiBcbiAvKlxuLSAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb25cbisgKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWVudGF0aW9uXG4gICogVGhlIGZvbGxvd2luZyBleHRlcm5hbCBTTVQgZnVuY3Rpb25zIGFyZSByZWZlcmVuY2VkIDpcbiAgKlxuICAqIFx0XHRxdWV1ZV9ldmVudCgpXG5kaWZmIC0tZ2l0IGEvbmV0L2xsYy9sbGNfY29ubi5jIGIvbmV0L2xsYy9sbGNfY29ubi5jXG5pbmRleCAyNjA0NjBkNTBmNTRjLi40YjZmZTlhNDczY2IzIDEwMDY0NFxuLS0tIGEvbmV0L2xsYy9sbGNfY29ubi5jXG4rKysgYi9uZXQvbGxjL2xsY19jb25uLmNcbkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBsbGNfY29ubl9ydG5fcGR1KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB9XG4gXG4gLyoqXG4tICpcdGxsY19jb25uX3Jlc2VuZF9pX3BkdV9hc19jbWQgLSByZXNlbmQgYWxsIGFsbCB1bmFja25vd2xlZGdlZCBJIFBEVXNcbisgKlx0bGxjX2Nvbm5fcmVzZW5kX2lfcGR1X2FzX2NtZCAtIHJlc2VuZCBhbGwgdW5hY2tub3dsZWRnZWQgSSBQRFVzXG4gICpcdEBzazogYWN0aXZlIGNvbm5lY3Rpb25cbiAgKlx0QG5yOiBOUlxuICAqXHRAZmlyc3RfcF9iaXQ6IHBfYml0IHZhbHVlIG9mIGZpcnN0IHBkdVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaFxuaW5kZXggM2VlZWVmZmI0MDA1Yi4uNjI5NGU0OWE0NmUwNCAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3hmcm1fcG9saWN5LnNoXG5AQCAtMjQyLDcgKzI0Miw3IEBAIGNoZWNrX2V4Y2VwdGlvbnMoKVxuIFx0XHRlY2hvIFwiUEFTUzogcGluZyB0byAuMjU0IGJ5cGFzc2VkIGlwc2VjIHR1bm5lbCAoJGxvZ3Bvc3RmaXgpXCJcbiBcdGZpXG4gXG4tXHQjIHBpbmcgdG8gLjI1MyBzaG91bGQgdXNlIHVzZSBpcHNlYyBkdWUgdG8gZGlyZWN0IHBvbGljeSBleGNlcHRpb24uXG4rXHQjIHBpbmcgdG8gLjI1MyBzaG91bGQgdXNlIGlwc2VjIGR1ZSB0byBkaXJlY3QgcG9saWN5IGV4Y2VwdGlvbi5cbiBcdGNoZWNrX3hmcm0gMSAyNTNcbiBcdGlmIFsgJD8gLW5lIDAgXTsgdGhlblxuIFx0XHRlY2hvIFwiRkFJTDogZXhwZWN0ZWQgcGluZyB0byAuMjUzIHRvIHVzZSBpcHNlYyB0dW5uZWwgKCRsb2dwb3N0Zml4KVwiXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNTo1OTo0My42NDQ1MzQwMjJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMzA3MDU5MDU4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBSZXZpZXc6IFNwZWxsaW5nIGFuZCBUeXBvIEZpeGVzIGluIENvbW1lbnRzIGFuZCBhIFNlbGYtVGVzdCBTY3JpcHQqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gdGhlIGxvb2tzIG9mIGl0LCB0aGlzIHBhdGNoIHNlcmllcyBpcyBsYXNlci1mb2N1c2VkIG9uIGNsZWFuaW5nIHVwIHNvbWUgbWlub3IgdGV4dHVhbCBpbmNvbnNpc3RlbmNpZXMuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgcHVyZSBjb21tZW50IGVkaXRzIOKAkyBlc3NlbnRpYWxseSBjb3JyZWN0aW5nIHNwZWxsaW5nIGVycm9ycyBhbmQgdHlwb3Mgc2NhdHRlcmVkIGFjcm9zcyB2YXJpb3VzIEV0aGVybmV0IGRyaXZlcnMgKEF0aGVyb3MsIEJyb2FkY29tLCBDYXZpdW0sIERFQywgSGlzaWxpY29uLCBNYXJ2ZWxsLCBRTG9naWMpLCBGRERJIGRyaXZlcnMsIGBsbGNfY29ubi5jYCwgYW5kIGV2ZW4gYSBzZWxmLXRlc3Qgc2NyaXB0IGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQveGZybV9wb2xpY3kuc2hgLlxuXG5JJ3ZlIG1ldGljdWxvdXNseSByZXZpZXdlZCBlYWNoIGRpZmYgY2h1bmssIGFzIHRoZSBjb21taXQgbWVzc2FnZSBkZXNjcmliZXMuIEV2ZXJ5IHNpbmdsZSBjaGFuZ2UgaXMgY29uZmluZWQgdG8gY29tbWVudHMuIFRoZXJlIGFyZSBubyBtb2RpZmljYXRpb25zIHRvIGFueSBhY3R1YWwgQyBjb2RlLCBkYXRhIHN0cnVjdHVyZXMsIG1hY3Jvcywgb3IgY29udHJvbCBmbG93LiBJdCdzIGFsbCBhYm91dCBlbnN1cmluZyB0aGUgY29tbWVudHMgYXJlIGdyYW1tYXRpY2FsbHkgY29ycmVjdCBhbmQgdGhhdCB0aGUgc2VsZi10ZXN0IHNjcmlwdCB1c2VzIGNvcnJlY3QgbGFuZ3VhZ2UuXG5cblRoZSBrZXkgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgd2FycmFudCBmdXp6aW5nLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSB3ZWxsIGF3YXJlIG9mIHRoZSBcIldvcnRoRnV6emluZ1wiIGNyaXRlcmlhLiBTaW5jZSB0aGlzIHBhdGNoIHN0cmljdGx5IGludm9sdmVzIG5vbi1rZXJuZWwsIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMg4oCTIHNwZWNpZmljYWxseSwgY29tbWVudCBhbmQgc2VsZi10ZXN0IHNjcmlwdCBtb2RpZmljYXRpb25zIHRoYXQgZG9uJ3QgaW1wYWN0IHRoZSBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcyDigJMgdGhpcyBwYXRjaCAqZGVmaW5pdGVseSogZG9lc24ndCB3YXJyYW50IGZ1cnRoZXIgZnV6emluZy5cblxuTXkgYW5hbHlzaXMgYWxpZ25zIHByZWNpc2VseSB3aXRoIFNlY3Rpb24gMidzIGNyaXRlcmlhLiBJdCdzIGEgY2xlYXItY3V0IGNhc2Ugb2YgYFdvcnRoRnV6emluZyA9IGZhbHNlYC4gQ29uc2VxdWVudGx5LCBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgIGFyZSBlbXB0eS4gSSdsbCBzdW1tYXJpemUgaXQgYXM6IHRoZSBwYXRjaCBzb2xlbHkgYWRkcmVzc2VzIHR5cG8gYW5kIHNwZWxsaW5nIGVycm9ycyBpbiBjb21tZW50cyBhbmQgYSBzZWxmLXRlc3Qgc2NyaXB0LCB3aXRoIG5vIGZ1bmN0aW9uYWwgb3IgZXhlY3V0YWJsZSBjb2RlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjc5LCJPdXRwdXRUb2tlbnMiOjY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA1OjU5OjU2LjcxNTEyODE2NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29udGFpbnMgZXhjbHVzaXZlbHkgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgd2l0aGluIGNvbW1lbnRzIGFjcm9zcyB2YXJpb3VzIG5ldHdvcmsgZHJpdmVycywgY29yZSBMTEMgY29kZSwgYW5kIGEgc2VsZnRlc3Qgc2NyaXB0LiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnRhaW5zIGV4Y2x1c2l2ZWx5IHNwZWxsaW5nIGFuZCB0eXBvIGZpeGVzIHdpdGhpbiBjb21tZW50cyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMsIGNvcmUgTExDIGNvZGUsIGFuZCBhIHNlbGZ0ZXN0IHNjcmlwdC4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNTo1OTo1Ni43MTUxNTMxOTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjd548[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 05:39:26 +0000 UTC FinishedAt: 2026-09-08 05:59:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA1OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29udGFpbnMgZXhjbHVzaXZlbHkgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgd2l0aGluIGNvbW1lbnRzIGFjcm9zcyB2YXJpb3VzIG5ldHdvcmsgZHJpdmVycywgY29yZSBMTEMgY29kZSwgYW5kIGEgc2VsZnRlc3Qgc2NyaXB0LiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDU6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwNGI5Zjk1OTMxZDExNzlhMjhhNTRmMzU3YWM5YmM5Yjg5M2YxNTU4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAwNTo1OTo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmhcbmluZGV4IGM1NjdjOTIwNjI4ZjEuLjhmMDNiYjU2MWQ0NDggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuaFxuQEAgLTY1OSw3ICYjNDM7NjU5LDcgQEAgdm9pZCBhdGwxY19wb3N0X3BoeV9saW5rY2hnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiBsaW5rX3NwZWVkKTtcbiAvKiBJTlQtdHJpZ2dsZS9TTUIgQ29udHJvbCBSZWdpc3RlciAqL1xuICNkZWZpbmUgUkVHX1NNQl9TVEFUX1RJTUVSXHRcdDB4MTVDNFx0LyogMnVzIHJlc29sdXRpb24gKi9cbiAjZGVmaW5lIFNNQl9TVEFUX1RJTUVSX01BU0tcdFx0MHhGRkZGRkZcbi0jZGVmaW5lIFJFR19USU5UX1RQRF9USFJFU0ggICAgICAgICAgICAgMHgxNUM4IC8qIHRwZCB0aCB0byB0cmlnIGludHJydXB0ICovXG4mIzQzOyNkZWZpbmUgUkVHX1RJTlRfVFBEX1RIUkVTSCAgICAgICAgICAgICAweDE1QzggLyogdHBkIHRoIHRvIHRyaWcgaW50ZXJydXB0ICovXG4gXG4gLyogTWFpbCBib3ggKi9cbiAjZGVmaW5lIE1CX1JGRFhfUFJPRF9JRFhfTUFTS1x0XHQweEZGRkZcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmhcbmluZGV4IDlmY2FkNzgzYzkzOWEuLjZiMDA2NmY0N2U5ZTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaFxuQEAgLTM4MSw3ICYjNDM7MzgxLDcgQEAgc3RydWN0IGF0bDFlX3J4X3BhZ2Uge1xuIFx0dThcdFx0KmFkZHI7ICAgLyogcmVjZWl2ZSByYWdlIHZpcnR1YWwgYWRkcmVzcyAqL1xuIFx0ZG1hX2FkZHJfdFx0d3JpdGVfb2Zmc2V0X2RtYTsgIC8qIHRoZSBETUEgYWRkcmVzcyB3aGljaCBjb250YWluIHRoZVxuIFx0XHRcdFx0XHQgICAgICByZWNlaXZlIGRhdGEgb2Zmc2V0IGluIHRoZSBwYWdlICovXG4tXHR1MzJcdFx0KndyaXRlX29mZnNldF9hZGRyOyAvKiB0aGUgdmlydGF1bCBhZGRyZXNzIHdoaWNoIGNvbnRhaW5cbiYjNDM7XHR1MzJcdFx0KndyaXRlX29mZnNldF9hZGRyOyAvKiB0aGUgdmlydHVhbCBhZGRyZXNzIHdoaWNoIGNvbnRhaW5cbiBcdFx0XHRcdFx0ICAgICB0aGUgcmVjZWl2ZSBkYXRhIG9mZnNldCBpbiB0aGUgcGFnZSAqL1xuIFx0dTMyXHRcdHJlYWRfb2Zmc2V0OyAgICAgICAvKiB0aGUgb2Zmc2V0IHdoZXJlIHdlIGhhdmUgcmVhZCAqL1xuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jXG5pbmRleCBmYTg5YmMyN2Y2MmRmLi4yNWQzZTc0NjkwNTgzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2h3LmNcbkBAIC0zNjksNyAmIzQzOzM2OSw3IEBAIHN0YXRpYyBpbnQgYXRsMWVfcGh5X3NldHVwX2F1dG9uZWdfYWR2KHN0cnVjdCBhdGwxZV9odyAqaHcpXG4gICpcbiAgKiBodyAtIFN0cnVjdCBjb250YWluaW5nIHZhcmlhYmxlcyBhY2Nlc3NlZCBieSBzaGFyZWQgY29kZVxuICAqXG4tICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgY29udHJvbCByZWdpc2VyIChmb3IgRjAwMSBidWcpXG4mIzQzOyAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIGNvbnRyb2wgcmVnaXN0ZXIgKGZvciBGMDAxIGJ1ZylcbiAgKi9cbiBpbnQgYXRsMWVfcGh5X2NvbW1pdChzdHJ1Y3QgYXRsMWVfaHcgKmh3KVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfbWFpbi5jXG5pbmRleCA0MDI5MDAyODU4MGJhLi5jYzZjMjYyODY4YTU1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfbWFpbi5jXG5AQCAtMjExNyw3ICYjNDM7MjExNyw3IEBAIHN0YXRpYyBpbnQgYXRsMWVfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuIFx0XHRcdHdvbF9jdHJsX2RhdGEgfD0gV09MX01BR0lDX0VOIHwgV09MX01BR0lDX1BNRV9FTjtcbiBcbiBcdFx0aWYgKHd1ZmMgXHUwMDI2IEFUX1dVRkNfTE5LQykge1xuLVx0XHQvKiBpZiBvcmlnbmFsIGxpbmsgc3RhdHVzIGlzIGxpbmssIGp1c3Qgd2FpdCBmb3IgcmV0cml2ZSBsaW5rICovXG4mIzQzO1x0XHQvKiBpZiBvcmlnaW5hbCBsaW5rIHN0YXR1cyBpcyBsaW5rLCBqdXN0IHdhaXQgZm9yIHJldHJpZXZlIGxpbmsgKi9cbiBcdFx0XHRpZiAobWlpX2Jtc3JfZGF0YSBcdTAwMjYgQk1TUl9MU1RBVFVTKSB7XG4gXHRcdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVF9TVVNQRU5EX0xJTktfVElNRU9VVDsgaSYjNDM7JiM0MzspIHtcbiBcdFx0XHRcdFx0bXNsZWVwKDEwMCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwxLmNcbmluZGV4IDk4YTRkMDg5MjcwZTQuLjE3OWQ3NGU5M2VmZGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jXG5AQCAtNjI4LDcgJiM0Mzs2MjgsNyBAQCBzdGF0aWMgczMyIGF0bDFfcGh5X2xlYXZlX3Bvd2VyX3NhdmluZyhzdHJ1Y3QgYXRsMV9odyAqaHcpXG4gICogUmVzZXRzIHRoZSBQSFkgYW5kIG1ha2UgYWxsIGNvbmZpZyB2YWxpZGF0ZVxuICAqIGh3IC0gU3RydWN0IGNvbnRhaW5pbmcgdmFyaWFibGVzIGFjY2Vzc2VkIGJ5IHNoYXJlZCBjb2RlXG4gICpcbi0gKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzZXIgKGZvciBGMDAxIGJ1ZylcbiYjNDM7ICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgQ29udHJvbCByZWdpc3RlciAoZm9yIEYwMDEgYnVnKVxuICAqL1xuIHN0YXRpYyBzMzIgYXRsMV9waHlfcmVzZXQoc3RydWN0IGF0bDFfaHcgKmh3KVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuY1xuaW5kZXggNTU2MGQ1Y2MzMTY5Mi4uYzlhY2EyMTllYzljZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmNcbkBAIC0yNTkxLDcgJiM0MzsyNTkxLDcgQEAgc3RhdGljIHMzMiBhdGwyX3BoeV9zZXR1cF9hdXRvbmVnX2FkdihzdHJ1Y3QgYXRsMl9odyAqaHcpXG4gICpcbiAgKiBodyAtIFN0cnVjdCBjb250YWluaW5nIHZhcmlhYmxlcyBhY2Nlc3NlZCBieSBzaGFyZWQgY29kZVxuICAqXG4tICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgQ29udHJvbCByZWdpc2VyIChmb3IgRjAwMSBidWcpXG4mIzQzOyAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIENvbnRyb2wgcmVnaXN0ZXIgKGZvciBGMDAxIGJ1ZylcbiAgKi9cbiBzdGF0aWMgczMyIGF0bDJfcGh5X2NvbW1pdChzdHJ1Y3QgYXRsMl9odyAqaHcpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmNcbmluZGV4IDdlZjFiYWJmZWNhNjkuLmY2NTk1ZmRjODg4ZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmNcbkBAIC0xNTY0LDcgJiM0MzsxNTY0LDcgQEAgc3RhdGljIGludCBiY21fZW5ldF9zZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFxuIFx0aWYgKHByaXYtXHUwMDNlaGFzX3BoeSkge1xuIFx0XHRpZiAoZWNtZC1cdTAwM2VhdXRvbmVnIFx1MDAyNlx1MDAyNiAoZWNtZC1cdTAwM2VyeF9wYXVzZSAhPSBlY21kLVx1MDAzZXR4X3BhdXNlKSkge1xuLVx0XHRcdC8qIGFzeW1ldHJpYyBwYXVzZSBtb2RlIG5vdCBzdXBwb3J0ZWQsXG4mIzQzO1x0XHRcdC8qIGFzeW1tZXRyaWMgcGF1c2UgbW9kZSBub3Qgc3VwcG9ydGVkLFxuIFx0XHRcdCAqIGFjdHVhbGx5IHBvc3NpYmxlIGJ1dCBpbnRlZ3JhdGVkIFBIWSBoYXMgUk9cbiBcdFx0XHQgKiBhc3ltX3BhdXNlIGJpdCAqL1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmhcbmluZGV4IDc4ZjE4MzBmYjNjYjUuLmJhOGY0MmNmNWZiMjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmhcbkBAIC0yNjUsNyAmIzQzOzI2NSw3IEBAIHN0cnVjdCBiY21fZW5ldF9wcml2IHtcbiBcdC8qIG51bWJlciBvZiBhdmFpbGFibGUgZGVzY3JpcHRvciBmb3IgdHggKi9cbiBcdGludCB0eF9kZXNjX2NvdW50O1xuIFxuLVx0LyogbmV4dCB0eCBkZXNjcmlwdG9yIGF2YWlhYmxlICovXG4mIzQzO1x0LyogbmV4dCB0eCBkZXNjcmlwdG9yIGF2YWlsYWJsZSAqL1xuIFx0aW50IHR4X2N1cnJfZGVzYztcbiBcbiBcdC8qIG5leHQgZGlydHkgdHggZGVzY3JpcHRvciB0byByZWNsYWltICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oXG5pbmRleCBhMzQyOTZmOTg5ZjEyLi42ZjgwN2U5NmRiZDhmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmhcbkBAIC00MDIsNyAmIzQzOzQwMiw3IEBAIHN0cnVjdCBiY21fcnNiIHtcbiAjZGVmaW5lIFRETUFfREVTQ19SSU5HX0JBU0UoaSlcdFx0KFRETUFfREVTQ19SSU5HXzAwX0JBU0UgJiM0MzsgXFxcbiBcdFx0XHRcdFx0KChpKSAqIFRETUFfREVTQ19SSU5HX1NJWkUpKVxuIFxuLS8qIFJpbmcgaW5kZXhlZCByZWdpc3RlciBhZGRyZXNlcyAqL1xuJiM0MzsvKiBSaW5nIGluZGV4ZWQgcmVnaXN0ZXIgYWRkcmVzc2VzICovXG4gI2RlZmluZSBURE1BX0RFU0NfUklOR19IRUFEX1RBSUxfUFRSKGkpXHQoVERNQV9ERVNDX1JJTkdfQkFTRShpKSAmIzQzOyBcXFxuIFx0XHRcdFx0XHRSSU5HX0hFQURfVEFJTF9QVFIpXG4gI2RlZmluZSBURE1BX0RFU0NfUklOR19DT1VOVChpKVx0XHQoVERNQV9ERVNDX1JJTkdfQkFTRShpKSAmIzQzOyBcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oXG5pbmRleCA5NTgwYWI4M2QzODdjLi4yOGVhNGEzM2YyNDVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaFxuQEAgLTI4MCw3ICYjNDM7MjgwLDcgQEAgZW51bSB7XG4gICogKGRiX21zZ19zeiAxIFx1MDAzY1x1MDAzYyA3ICogY2lkICYjNDM7IDB4NDAgRFBNIG9mZnNldCkgaXQgY2FuIGNvbWUgdXAgd2l0aCBhIHZhbGlkIG51bWJlclxuICAqIFdlIG11c3QgYXZvaWQgY29taW5nIHVwIHdpdGggY2lkIDggZm9yIGlzY3NpIHNpbmNlIGFjY29yZGluZyB0byB0aGlzIG1ldGhvZFxuICAqIHRoZSBkZXNpZ25hdGVkIFVJTyBjaWQgd2lsbCBjb21lIG91dCAwIGFuZCBpdCBoYXMgYSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGF0XG4tICogY2FzZSB3aGljaCBkb2VzbiYjMzk7dCBzdWl0IHVzLiBUaGVyZWZvcmUgd2lsbCB3aWxsIGNpZWxpbmcgdG8gY2xvc2VzIGNpZCB3aGljaFxuJiM0MzsgKiBjYXNlIHdoaWNoIGRvZXNuJiMzOTt0IHN1aXQgdXMuIFRoZXJlZm9yZSB3aWxsIGNpZWxpbmcgdG8gY2xvc2VzIGNpZCB3aGljaFxuICAqIGhhcyBsZWFzdCBzaWduaWdpZmNhbnQgbmliYmxlIDggYW5kIGlmIGl0IGlzIDggd2Ugd2lsbCBtb3ZlIGZvcndhcmQgdG8gMHgxOC5cbiAgKi9cbiBcbkBAIC02NjYsNyAmIzQzOzY2Niw3IEBAIHN0cnVjdCBibngyeF9mYXN0cGF0aCB7XG4gXHRcdFx0XHQgTUFYX1RYX0RFU0NfQ05UICogTkVYVF9QQUdFX1RYX0RFU0NfQ05UKVxuIC8qIG1heCBCRHMgcGVyIHR4IHBhY2tldCB3L28gbmV4dF9wYWdlczpcbiAgKiBTVEFSVF9CRFx0XHQtIGRlc2NyaWJlcyBwYWNrZWRcbi0gKiBTVEFSVF9CRChzcGxpdHRlZClcdC0gaW5jbHVkZXMgdW5wYWdlZCBkYXRhIHNlZ21lbnQgZm9yIEdTT1xuJiM0MzsgKiBTVEFSVF9CRChzcGxpdClcdC0gaW5jbHVkZXMgdW5wYWdlZCBkYXRhIHNlZ21lbnQgZm9yIEdTT1xuICAqIFBBUlNJTkdfQkRcdFx0LSBmb3IgVFNPIGFuZCBDU1VNIGRhdGFcbiAgKiBQQVJTSU5HX0JEMlx0XHQtIGZvciBlbmNhcHN1bGF0aW9uIGRhdGFcbiAgKiBGcmFnIEJEc1x0XHQtIGRlc2NyaWJlcyBwYWdlcyBmb3IgZnJhZ3NcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2RjYi5jXG5pbmRleCA5YWY4MTYzMGM4YTQ0Li4zZGY4YTU5ODg1MjE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfZGNiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2RjYi5jXG5AQCAtMTk4Niw3ICYjNDM7MTk4Niw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2RjYm5sX3NldF9wZ190Y2NmZ190eChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcHJpbyxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0LyoqXG4tXHQgKiBid19wY3QgaWdub3JlZCAtXHRiYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGV2aXNpb24gYmV0d2VlbiB1c2VyXG4mIzQzO1x0ICogYndfcGN0IGlnbm9yZWQgLVx0YmFuZC13aWR0aCBwZXJjZW50YWdlIGRpdmlzaW9uIGJldHdlZW4gdXNlclxuIFx0ICpcdFx0XHRwcmlvcml0aWVzIHdpdGhpbiB0aGUgc2FtZSBncm91cCBpcyBub3RcbiBcdCAqXHRcdFx0c3RhbmRhcmQgYW5kIGhlbmNlIG5vdCBzdXBwb3J0ZWRcbiBcdCAqXG5AQCAtMjAzOCw3ICYjNDM7MjAzOCw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2RjYm5sX2dldF9wZ190Y2NmZ190eChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcHJpbyxcbiBcdERQKEJOWDJYX01TR19EQ0IsIFwmIzM0O3ByaW8gPSAlZFxcblwmIzM0OywgcHJpbyk7XG4gXG4gXHQvKipcbi1cdCAqIGJ3X3BjdCBpZ25vcmVkIC1cdGJhbmQtd2lkdGggcGVyY2VudGFnZSBkZXZpc2lvbiBiZXR3ZWVuIHVzZXJcbiYjNDM7XHQgKiBid19wY3QgaWdub3JlZCAtXHRiYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGl2aXNpb24gYmV0d2VlbiB1c2VyXG4gXHQgKlx0XHRcdHByaW9yaXRpZXMgd2l0aGluIHRoZSBzYW1lIGdyb3VwIGlzIG5vdFxuIFx0ICpcdFx0XHRzdGFuZGFyZCBhbmQgaGVuY2Ugbm90IHN1cHBvcnRlZFxuIFx0ICpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oXG5pbmRleCA2MTFlZmVlNzU4MzQwLi41Mjk3YWI1NzhhNmYwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oXG5AQCAtMjM0Miw3ICYjNDM7MjM0Miw3IEBAIHN0cnVjdCBzaG1lbTJfcmVnaW9uIHtcbiBcdFx0dTMyIG9lbV9pMmNfZGF0YV9hZGRyO1xuIFx0fTtcbiBcbi1cdC8qIDkgZW50aXJlcyBmb3IgdGhlIEMyUyBQQ1AgbWFwIGZvciBlYWNoIGlubmVyIFZMQU4gUENQICYjNDM7IDEgZGVmYXVsdCAqL1xuJiM0MztcdC8qIDkgZW50cmllcyBmb3IgdGhlIEMyUyBQQ1AgbWFwIGZvciBlYWNoIGlubmVyIFZMQU4gUENQICYjNDM7IDEgZGVmYXVsdCAqL1xuIFx0LyogRm9yIFBDUCB2YWx1ZXMgMC0zIHVzZSB0aGUgbWFwIGxvd2VyICovXG4gXHQvKiAweEZGMDAwMDAwIC0gUENQIDAsIDB4MDBGRjAwMDAgLSBQQ1AgMSxcbiBcdCAqIDB4MDAwMEZGMDAgLSBQQ1AgMiwgMHgwMDAwMDBGRiBQQ1AgM1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9pbml0X29wcy5oXG5pbmRleCBmYzdmY2U2NDI2NjZjLi5iNTAwNGFhYjEyNGRjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaFxuQEAgLTU4Miw3ICYjNDM7NTgyLDcgQEAgc3RhdGljIHZvaWQgYm54MnhfaW5pdF9weHBfYXJiKHN0cnVjdCBibngyeCAqYnAsIGludCByX29yZGVyLFxuIFx0XHRSRUdfV1IoYnAsIFBYUDJfUkVHX1dSX0NEVV9NUFMsIHZhbCk7XG4gXHR9XG4gXG4tXHQvKiBWYWxpZGF0ZSBudW1iZXIgb2YgdGFncyBzdXBwb3RlZCBieSBkZXZpY2UgKi9cbiYjNDM7XHQvKiBWYWxpZGF0ZSBudW1iZXIgb2YgdGFncyBzdXBwb3J0ZWQgYnkgZGV2aWNlICovXG4gI2RlZmluZSBQQ0lFX1JFR19QQ0lFUl9UTF9IRFJfRkNfU1RcdFx0MHgyOTgwXG4gXHR2YWwgPSBSRUdfUkQoYnAsIFBDSUVfUkVHX1BDSUVSX1RMX0hEUl9GQ19TVCk7XG4gXHR2YWwgXHUwMDI2PSAweEZGO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuY1xuaW5kZXggZWEzMTAwNTdmZTNhZi4uODRkMDAyYjMxOTIwYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jXG5AQCAtMjUzNiw3ICYjNDM7MjUzNiw3IEBAIHN0YXRpYyBpbnQgYm54MnhfcGJmX3VwZGF0ZShzdHJ1Y3QgbGlua19wYXJhbXMgKnBhcmFtcywgdTMyIGZsb3dfY3RybCxcbiB9XG4gXG4gLyoqXG4tICogYm54MnhfZ2V0X2VtYWNfYmFzZSAtIHJldHJpdmUgZW1hYyBiYXNlIGFkZHJlc3NcbiYjNDM7ICogYm54MnhfZ2V0X2VtYWNfYmFzZSAtIHJldHJpZXZlIGVtYWMgYmFzZSBhZGRyZXNzXG4gICpcbiAgKiBAYnA6XHRcdFx0ZHJpdmVyIGhhbmRsZVxuICAqIEBtZGNfbWRpb19hY2Nlc3M6XHRhY2Nlc3MgdHlwZVxuQEAgLTM1OTMsNyAmIzQzOzM1OTMsNyBAQCBzdGF0aWMgdTggYm54MnhfZXh0X3BoeV9yZXNvbHZlX2ZjKHN0cnVjdCBibngyeF9waHkgKnBoeSxcbiBcdHU4IHJldCA9IDA7XG4gXHR2YXJzLVx1MDAzZWZsb3dfY3RybCA9IEJOWDJYX0ZMT1dfQ1RSTF9OT05FO1xuIFx0aWYgKHBoeS1cdTAwM2VyZXFfZmxvd19jdHJsICE9IEJOWDJYX0ZMT1dfQ1RSTF9BVVRPKSB7XG4tXHRcdC8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xlZCBvZiBMRC9MUCBpbiBBTiAqL1xuJiM0MztcdFx0LyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGxlZCBvZiBMRC9MUCBpbiBBTiAqL1xuIFx0XHRpZiAocGh5LVx1MDAzZXJlcV9saW5lX3NwZWVkID09IFNQRUVEX0FVVE9fTkVHKVxuIFx0XHRcdGJueDJ4X2V4dF9waHlfdXBkYXRlX2Fkdl9mYyhwaHksIHBhcmFtcywgdmFycyk7XG4gXHRcdC8qIEJ1dCBzZXQgdGhlIGZsb3ctY29udHJvbCByZXN1bHQgYXMgdGhlIHJlcXVlc3RlZCBvbmUgKi9cbkBAIC0zNzQzLDcgJiM0MzszNzQzLDcgQEAgc3RhdGljIHZvaWQgYm54Mnhfd2FycGNvcmVfZW5hYmxlX0FOX0tSKHN0cnVjdCBibngyeF9waHkgKnBoeSxcbiBcdFx0e01ESU9fV0NfREVWQUQsIE1ESU9fV0NfUkVHX0NMNzJfVVNFUkIwX0NMNzJfVFhfRklSX1RBUCwgMH0sXG4gXHR9O1xuIFx0RFAoTkVUSUZfTVNHX0xJTkssIFwmIzM0O0VuYWJsZSBBdXRvIE5lZ290aWF0aW9uIGZvciBLUlxcblwmIzM0Oyk7XG4tXHQvKiBTZXQgdG8gZGVmYXVsdCByZWdpc3RlcnMgdGhhdCBtYXkgYmUgb3ZlcnJpZGVuIGJ5IDEwRyBmb3JjZSAqL1xuJiM0MztcdC8qIFNldCB0byBkZWZhdWx0IHJlZ2lzdGVycyB0aGF0IG1heSBiZSBvdmVycmlkZGVuIGJ5IDEwRyBmb3JjZSAqL1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShyZWdfc2V0KTsgaSYjNDM7JiM0MzspXG4gXHRcdGJueDJ4X2NsNDVfd3JpdGUoYnAsIHBoeSwgcmVnX3NldFtpXS5kZXZhZCwgcmVnX3NldFtpXS5yZWcsXG4gXHRcdFx0XHQgcmVnX3NldFtpXS52YWwpO1xuQEAgLTU0MjUsNyAmIzQzOzU0MjUsNyBAQCBzdGF0aWMgdm9pZCBibngyeF9mbG93X2N0cmxfcmVzb2x2ZShzdHJ1Y3QgYm54MnhfcGh5ICpwaHksXG4gXG4gXHQvKiBSZXNvbHZlIGZyb20gZ3Bfc3RhdHVzIGluIGNhc2Ugb2YgQU4gY29tcGxldGUgYW5kIG5vdCBzZ21paSAqL1xuIFx0aWYgKHBoeS1cdTAwM2VyZXFfZmxvd19jdHJsICE9IEJOWDJYX0ZMT1dfQ1RSTF9BVVRPKSB7XG4tXHRcdC8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xlZCBvZiBMRC9MUCBpbiBBTiAqL1xuJiM0MztcdFx0LyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGxlZCBvZiBMRC9MUCBpbiBBTiAqL1xuIFx0XHRpZiAocGh5LVx1MDAzZXJlcV9saW5lX3NwZWVkID09IFNQRUVEX0FVVE9fTkVHKVxuIFx0XHRcdGJueDJ4X3VwZGF0ZV9hZHZfZmMocGh5LCBwYXJhbXMsIHZhcnMsIGdwX3N0YXR1cyk7XG4gXHRcdC8qIEJ1dCBzZXQgdGhlIGZsb3ctY29udHJvbCByZXN1bHQgYXMgdGhlIHJlcXVlc3RlZCBvbmUgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmNcbmluZGV4IDM5ZWI2YWI1ZjgwNTguLjI3N2M3YmQ5YzZlNzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uY1xuQEAgLTEyNjY5LDcgJiM0MzsxMjY2OSw3IEBAIHN0YXRpYyBpbnQgYm54Mnhfc2V0X21jX2xpc3Qoc3RydWN0IGJueDJ4ICpicClcbiBcdFx0aWYgKHJjKVxuIFx0XHRcdHJldHVybiByYztcbiBcbi1cdFx0LyogT3ZlcnJpZGUgdGhlIGN1cmVudGx5IGNvbmZpZ3VyZWQgc2V0IG9mIG1jIGZpbHRlcnMgKi9cbiYjNDM7XHRcdC8qIE92ZXJyaWRlIHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCBzZXQgb2YgbWMgZmlsdGVycyAqL1xuIFx0XHRyYyA9IGJueDJ4X2NvbmZpZ19tY2FzdChicCwgXHUwMDI2cnBhcmFtLFxuIFx0XHRcdFx0XHRCTlgyWF9NQ0FTVF9DTURfU0VUKTtcbiBcdFx0aWYgKHJjIFx1MDAzYyAwKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmhcbmluZGV4IGEwMThmMjUxZDE5ODYuLjMwOTQzZjM0NzE2NDIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmhcbkBAIC0yMjM2LDcgJiM0MzsyMjM2LDcgQEAgZXh0ZXJuIGNvbnN0IHUzMiBkbWFlX3JlZ19nb19jW107XG4gLyogW1JXIDFdIE91dHB1dCBlbmFibGUgZm9yIFRYIFBBVVNFIHNpZ25hbCB0byB0aGUgTUFDLiAqL1xuICNkZWZpbmUgTklHX1JFR19QMF9NQUNfUEFVU0VfT1VUX0VOXHRcdFx0XHQgMHgxODViNFxuIC8qIFtSVyAzMl0gRWlnaHQgNC1iaXQgY29uZmlndXJhdGlvbnMgZm9yIHNwZWNpZnlpbmcgd2hpY2ggQ09TICgwLTE1IGZvclxuLSAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3J0eSBpcyB0byBiZSBtYXBwZWQgdG8uIEJpdHMgMzowIHNwZWNpZnkgdGhlXG4mIzQzOyAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3JpdHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZVxuICAqIENPUyBmb3IgcHJpb3JpdHkgMC4gQml0cyAzMToyOCBzcGVjaWZ5IHRoZSBDT1MgZm9yIHByaW9yaXR5IDcuIFRoZSAzLWJpdFxuICAqIHByaW9yaXR5IGZpZWxkIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSBvdXRlci1tb3N0IFZMQU4gaW4gcmVjZWl2ZSBwYWNrZXQuXG4gICogT25seSBDT1MgMCBhbmQgQ09TIDEgYXJlIHN1cHBvcnRlZCBpbiBFMi4gKi9cbkBAIC0yNDM0LDcgJiM0MzsyNDM0LDcgQEAgZXh0ZXJuIGNvbnN0IHUzMiBkbWFlX3JlZ19nb19jW107XG4gLyogW1JXIDFdIE91dHB1dCBlbmFibGUgZm9yIFRYIFBBVVNFIHNpZ25hbCB0byB0aGUgTUFDLiAqL1xuICNkZWZpbmUgTklHX1JFR19QMV9NQUNfUEFVU0VfT1VUX0VOXHRcdFx0XHQgMHgxODVjOFxuIC8qIFtSVyAzMl0gRWlnaHQgNC1iaXQgY29uZmlndXJhdGlvbnMgZm9yIHNwZWNpZnlpbmcgd2hpY2ggQ09TICgwLTE1IGZvclxuLSAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3J0eSBpcyB0byBiZSBtYXBwZWQgdG8uIEJpdHMgMzowIHNwZWNpZnkgdGhlXG4mIzQzOyAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3JpdHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZVxuICAqIENPUyBmb3IgcHJpb3JpdHkgMC4gQml0cyAzMToyOCBzcGVjaWZ5IHRoZSBDT1MgZm9yIHByaW9yaXR5IDcuIFRoZSAzLWJpdFxuICAqIHByaW9yaXR5IGZpZWxkIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSBvdXRlci1tb3N0IFZMQU4gaW4gcmVjZWl2ZSBwYWNrZXQuXG4gICogT25seSBDT1MgMCBhbmQgQ09TIDEgYXJlIHN1cHBvcnRlZCBpbiBFMi4gKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY242Nnh4X2RldmljZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuNjZ4eF9kZXZpY2UuY1xuaW5kZXggOTNmY2NmZWMyODhkNC4uZDNlYmJiNDA1NzllNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmNcbkBAIC0xNzcsNyAmIzQzOzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGxpb19jbjY2eHhfc2V0dXBfcGt0X2N0bF9yZWdzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4gXG4gXHQvKiA2NlhYIFNQRUNJRklDICovXG4gXHRpZiAoQ0ZHX0dFVF9PUV9NQVhfUShjbjZ4eHgtXHUwMDNlY29uZikgXHUwMDNjPSA0KVxuLVx0XHQvKiBEaXNhYmxlIFJJTkdfRU4gaWYgb25seSB1cHRvIDQgcmluZ3MgYXJlIHVzZWQuICovXG4mIzQzO1x0XHQvKiBEaXNhYmxlIFJJTkdfRU4gaWYgb25seSB1cCB0byA0IHJpbmdzIGFyZSB1c2VkLiAqL1xuIFx0XHRwa3RjdGwgXHUwMDI2PSB+KDEgXHUwMDNjXHUwMDNjIDQpO1xuIFx0ZWxzZVxuIFx0XHRwa3RjdGwgfD0gKDEgXHUwMDNjXHUwMDNjIDQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmNcbmluZGV4IDkzYjA2ZDU5OWVlZDYuLmJlZDQ1MGJmYWQzODMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmNcbkBAIC01NjUsNyAmIzQzOzU2NSw3IEBAIHN0YXRpYyBpbnQgb2N0ZW9uX3NldHVwX2Ryb3Eoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgaW50IHFfbm8sIGludCBudW1fZGVzY3MsXG4gfVxuIFxuIC8qKlxuLSAqIGxpcXVpZGlvX3B1c2hfcGFja2V0IC0gUm91dGluZSB0byBwdXNoIHBhY2tldHMgYXJyaXZpbmcgb24gT2N0ZW9uIGludGVyZmFjZSB1cHRvIG5ldHdvcmsgbGF5ZXIuXG4mIzQzOyAqIGxpcXVpZGlvX3B1c2hfcGFja2V0IC0gUm91dGluZSB0byBwdXNoIHBhY2tldHMgYXJyaXZpbmcgb24gT2N0ZW9uIGludGVyZmFjZSB1cCB0byBuZXR3b3JrIGxheWVyLlxuICAqIEBvY3Rlb25faWQ6b2N0ZW9uIGRldmljZSBpZC5cbiAgKiBAc2tidWZmOiAgIHNrYnVmZiBzdHJ1Y3QgdG8gYmUgcGFzc2VkIHRvIG5ldHdvcmsgbGF5ZXIuXG4gICogQGxlbjogICAgICBzaXplIG9mIHRvdGFsIGRhdGEgcmVjZWl2ZWQuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25maWcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uZmlnLmhcbmluZGV4IDI0YzIxMjAwMTIxMjEuLmQyZDY0ZWRhZjNiZjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbmZpZy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbmZpZy5oXG5AQCAtMjU0LDcgJiM0MzsyNTQsNyBAQCBzdHJ1Y3Qgb2N0ZW9uX29xX2NvbmZpZyB7XG4gXHR1NjQgcGt0c19wZXJfaW50cjoxNjtcbiBcbiBcdC8qKiBJbnRlcnJ1cHQgQ29hbGVzY2luZyAoVGltZSBJbnRlcnZhbCkuIE9jdGVvbiB3aWxsIGludGVycnVwdCB0aGVcbi1cdCAqICBob3N0IGlmIGF0bGVhc3Qgb25lIHBhY2tldCB3YXMgc2VudCBpbiB0aGUgdGltZSBpbnRlcnZhbCBzcGVjaWZpZWRcbiYjNDM7XHQgKiAgaG9zdCBpZiBhdCBsZWFzdCBvbmUgcGFja2V0IHdhcyBzZW50IGluIHRoZSB0aW1lIGludGVydmFsIHNwZWNpZmllZFxuIFx0ICogIGJ5IHRoaXMgZmllbGQuIFRoZSBkcml2ZXIgdXNlcyB0aW1lIGludGVydmFsIGludGVycnVwdCBjb2FsZXNjaW5nXG4gXHQgKiAgYnkgZGVmYXVsdC4gVGhlIHRpbWUgaXMgc3BlY2lmaWVkIGluIG1pY3Jvc2Vjb25kcy5cbiBcdCAqL1xuQEAgLTI5Niw3ICYjNDM7Mjk2LDcgQEAgc3RydWN0IG9jdGVvbl9vcV9jb25maWcge1xuIFx0dTY0IG9xX2ludHJfcGt0OjE2O1xuIFxuIFx0LyoqIEludGVycnVwdCBDb2FsZXNjaW5nIChUaW1lIEludGVydmFsKS4gT2N0ZW9uIHdpbGwgaW50ZXJydXB0IHRoZVxuLVx0ICogIGhvc3QgaWYgYXRsZWFzdCBvbmUgcGFja2V0IHdhcyBzZW50IGluIHRoZSB0aW1lIGludGVydmFsIHNwZWNpZmllZFxuJiM0MztcdCAqICBob3N0IGlmIGF0IGxlYXN0IG9uZSBwYWNrZXQgd2FzIHNlbnQgaW4gdGhlIHRpbWUgaW50ZXJ2YWwgc3BlY2lmaWVkXG4gXHQgKiAgYnkgdGhpcyBmaWVsZC4gVGhlIGRyaXZlciB1c2VzIHRpbWUgaW50ZXJ2YWwgaW50ZXJydXB0IGNvYWxlc2NpbmdcbiBcdCAqICBieSBkZWZhdWx0LiAgVGhlIHRpbWUgaXMgc3BlY2lmaWVkIGluIG1pY3Jvc2Vjb25kcy5cbiBcdCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaFxuaW5kZXggYTA0ZjM2YTBlMWEwOC4uZmRkN2QzYTc3YTJkYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9pcS5oXG5AQCAtNzAsNyAmIzQzOzcwLDcgQEAgc3RydWN0IG9jdF9pcV9zdGF0cyB7XG4gXG4gLyoqIFRoZSBpbnN0cnVjdGlvbiAoaW5wdXQpIHF1ZXVlLlxuICAqICBUaGUgaW5wdXQgcXVldWUgaXMgdXNlZCB0byBwb3N0IHJhdyAoaW5zdHJ1Y3Rpb24pIG1vZGUgZGF0YSBvciBwYWNrZXRcbi0gKiAgZGF0YSB0byBPY3Rlb24gZGV2aWNlIGZyb20gdGhlIGhvc3QuIEVhY2ggaW5wdXQgcXVldWUgKHVwdG8gNCkgZm9yXG4mIzQzOyAqICBkYXRhIHRvIE9jdGVvbiBkZXZpY2UgZnJvbSB0aGUgaG9zdC4gRWFjaCBpbnB1dCBxdWV1ZSAodXAgdG8gNCkgZm9yXG4gICogIGEgT2N0ZW9uIGRldmljZSBoYXMgb25lIHN1Y2ggc3RydWN0dXJlIHRvIHJlcHJlc2VudCBpdC5cbiAgKi9cbiBzdHJ1Y3Qgb2N0ZW9uX2luc3RyX3F1ZXVlIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oXG5pbmRleCA5NTNlZGYwYzcwOTZjLi5kMmE1MjY3M2NhYzU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWluLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oXG5AQCAtMTY2LDcgJiM0MzsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIGludCBvY3Rlb25fbWFwX3BjaV9iYXJ4KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsXG4gICogZXJybm8gLUVJTlRSOiB1c2VyIGFib3J0IHRoZSBjb21tYW5kLlxuICAqIGVycm5vIC1FVElNRTogdXNlciBzcGVmaWZpZWQgdGltZW91dCB2YWx1ZSBoYXMgYmVlbiBleHBpcmVkLlxuICAqIGVycm5vIC1FQlVTWTogdGhlIHJlc3BvbnNlIG9mIHRoZSByZXF1ZXN0IGRvZXMgbm90IHJldHVybiBpblxuLSAqICAgICAgICAgICAgICAgcmVzb25hYmxlIHRpbWUgKExJT19TQ19NQVhfVE1PX01TKS5cbiYjNDM7ICogICAgICAgICAgICAgICByZWFzb25hYmxlIHRpbWUgKExJT19TQ19NQVhfVE1PX01TKS5cbiAgKiAgICAgICAgICAgICAgIHRoZSBzYyB3bGwgYmUgbW92ZSB0byB6b21iaWUgcmVzcG9uc2UgbGlzdCBieVxuICAqICAgICAgICAgICAgICAgbGlvX3Byb2Nlc3Nfb3JkZXJlZF9saXN0KClcbiAgKlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmljLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25pYy5oXG5pbmRleCBjMTM5ZmM0MjM3NjRlLi44MzQxZmFhYTBjMjQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uaWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uaWMuaFxuQEAgLTI3Nyw3ICYjNDM7Mjc3LDcgQEAgaW50IG9jdG5ldF9zZW5kX25pY19kYXRhX3BrdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LFxuIFxuIC8qKiBTZW5kIGEgTklDIGNvbnRyb2wgcGFja2V0IHRvIHRoZSBkZXZpY2VcbiAgKiBAcGFyYW0gb2N0IC0gb2N0ZW9uIGRldmljZSBwb2ludGVyXG4tICogQHBhcmFtIG5jdHJsIC0gY29udHJvbCBzdHJ1Y3R1cmUgd2l0aCBjb21tYW5kLCB0aW1vdXQsIGFuZCBjYWxsYmFjayBpbmZvXG4mIzQzOyAqIEBwYXJhbSBuY3RybCAtIGNvbnRyb2wgc3RydWN0dXJlIHdpdGggY29tbWFuZCwgdGltZW91dCwgYW5kIGNhbGxiYWNrIGluZm9cbiAgKiBAcmV0dXJucyBJUV9GQUlMRUQgaWYgaXQgZmFpbGVkIHRvIGFkZCB0byB0aGUgaW5wdXQgcXVldWUuIElRX1NUT1AgaWYgdGhlXG4gICogcXVldWUgc2hvdWxkIGJlIHN0b3BwZWQsIGFuZCBJUV9TRU5EX09LIGlmIGl0IHNlbnQgb2theS5cbiAgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmNcbmluZGV4IGQ3Y2ZiMjBlZWEwMGMuLmE5ODNlN2Y3OTQ2MWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9yZXF1ZXN0X21hbmFnZXIuY1xuQEAgLTQwLDcgJiM0Mzs0MCw3IEBAIHN0YXRpYyB2b2lkICBfX2NoZWNrX2RiX3RpbWVvdXQoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgdTY0IGlxX25vKTtcbiBcbiBzdGF0aWMgdm9pZCAoKnJlcXR5cGVfZnJlZV9mbltNQVhfT0NURU9OX0RFVklDRVNdW1JFUVRZUEVfTEFTVCAmIzQzOyAxXSkgKHZvaWQgKik7XG4gXG4tLyogRGVmaW5lIHRoaXMgdG8gcmV0dXJuIHRoZSByZXF1ZXN0IHN0YXR1cyBjb21hcHRpYmxlIHRvIG9sZCBjb2RlICovXG4mIzQzOy8qIERlZmluZSB0aGlzIHRvIHJldHVybiB0aGUgcmVxdWVzdCBzdGF0dXMgY29tcGF0aWJsZSB0byBvbGQgY29kZSAqL1xuIC8qI2RlZmluZSBPQ1RFT05fVVNFX09MRF9SRVFfU1RBVFVTKi9cbiBcbiAvKiBSZXR1cm4gMCBvbiBzdWNjZXNzLCAxIG9uIGZhaWx1cmUgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pYy5oXG5pbmRleCAwOTBkNmI4Mzk4MmEyLi5iYjNmNGZhNmI5OTU5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pYy5oXG5AQCAtOTcsNyAmIzQzOzk3LDcgQEBcbiAgKiBUaGlzIHZhbHVlIGVuc3VyZXMgdGhhdCBvbmNlIGEgcGFja2V0IGhhcyBiZWVuIFwmIzM0O2FjY2VwdGVkXCYjMzQ7XG4gICogZm9yIHJlY2VwdGlvbiBpdCB3aWxsIG5vdCBnZXQgZHJvcHBlZCBkdWUgdG8gbm9uLWF2YWlsYWJpbGl0eVxuICAqIG9mIENRIGRlc2NyaXB0b3IuIEFuIGVycmF0YSBpbiBIVyBtYW5kYXRlcyB0aGlzIHZhbHVlIHRvIGJlXG4tICogYXRsZWFzdCAweDEwMC5cbiYjNDM7ICogYXQgbGVhc3QgMHgxMDAuXG4gICovXG4gI2RlZmluZSBOSUNQRl9DUU1fTUlOX0RST1BfTEVWRUwgICAgICAgMHgxMDBcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uY1xuaW5kZXggMGVjNjVlYzYzNGRmNS4uMDg2ZjMyYjYxNTgwZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmNcbkBAIC01OTUsNyAmIzQzOzU5NSw3IEBAIHN0YXRpYyB2b2lkIG5pY19jb25maWdfcnNzKHN0cnVjdCBuaWNwZiAqbmljLCBzdHJ1Y3QgcnNzX2NmZ19tc2cgKmNmZylcbiBcdG5pY19yZWdfd3JpdGUobmljLCBpZHhfYWRkciB8IChjcGlfYmFzZSBcdTAwM2NcdTAwM2MgMyksIGNwaV9jZmcpO1xuIH1cbiBcbi0vKiA0IGxldmVsIHRyYW5zbWl0IHNpZGUgc2NoZWR1bGVyIGNvbmZpZ3V0YXRpb25cbiYjNDM7LyogNCBsZXZlbCB0cmFuc21pdCBzaWRlIHNjaGVkdWxlciBjb25maWd1cmF0aW9uXG4gICogZm9yIFROUyBieXBhc3MgbW9kZVxuICAqXG4gICogU2FtcGxlIGNvbmZpZ3VyYXRpb24gZm9yIFNRMCBvbiA4OHh4XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmNcbmluZGV4IGYzOGExMGM3OTkwN2YuLmZhNTJlMDk5NDA5YzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jXG5AQCAtMzczLDcgJiM0MzszNzMsNyBAQCBzdGF0aWMgdm9pZCBkZV9yeF9lcnJfYWNjdCAoc3RydWN0IGRlX3ByaXZhdGUgKmRlLCB1bnNpZ25lZCByeF90YWlsLFxuIFx0XHQgIHJ4X3RhaWwsIHN0YXR1cywgbGVuKTtcbiBcbiBcdGlmICgoc3RhdHVzIFx1MDAyNiAweDM4MDAwMzAwKSAhPSAweDAzMDApIHtcbi1cdFx0LyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cbiYjNDM7XHRcdC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4gXHRcdGlmICgoc3RhdHVzIFx1MDAyNiAweGZmZmYpICE9IDB4N2ZmZikge1xuIFx0XHRcdG5ldGlmX3dhcm4oZGUsIHJ4X2VyciwgZGUtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgXCYjMzQ7T3ZlcnNpemVkIEV0aGVybmV0IGZyYW1lIHNwYW5uZWQgbXVsdGlwbGUgYnVmZmVycywgc3RhdHVzICUwOHghXFxuXCYjMzQ7LFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuY1xuaW5kZXggMGExMmNiOWIzYmE3OC4uOGMwMjc3MWIyOGU0YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2ludGVycnVwdC5jXG5AQCAtMTc3LDcgJiM0MzsxNzcsNyBAQCBpbnQgdHVsaXBfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXHRcdFx0ICAgcGt0X2xlbiBcdTAwM2UgMTUxOCkge1xuIFx0XHRcdCAgICAgICBpZiAoKHN0YXR1cyBcdTAwMjYgKFJ4TGVuZ3RoT3ZlcjIwNDcgfFxuIFx0XHRcdFx0XHQgICAgICBSeFdob2xlUGt0KSkgIT0gUnhXaG9sZVBrdCkge1xuLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmUgZWFybGllciBidWZmZXJzLiAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc3RhdHVzIFx1MDAyNiAweGZmZmYpICE9IDB4N2ZmZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR1bGlwX2RlYnVnIFx1MDAzZSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfd2FybihcdTAwMjZkZXYtXHUwMDNlZGV2LFxuQEAgLTQwOCw3ICYjNDM7NDA4LDcgQEAgc3RhdGljIGludCB0dWxpcF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHQgICAgcGt0X2xlbiBcdTAwM2UgMTUxOCkge1xuIFx0XHRcdGlmICgoc3RhdHVzIFx1MDAyNiAoUnhMZW5ndGhPdmVyMjA0NyB8XG4gXHRcdFx0ICAgICBSeFdob2xlUGt0KSkgICAgICAgICAhPSBSeFdob2xlUGt0KSB7XG4tXHRcdFx0XHQvKiBJbmdvcmUgZWFybGllciBidWZmZXJzLiAqL1xuJiM0MztcdFx0XHRcdC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4gXHRcdFx0XHRpZiAoKHN0YXR1cyBcdTAwMjYgMHhmZmZmKSAhPSAweDdmZmYpIHtcbiBcdFx0XHRcdFx0aWYgKHR1bGlwX2RlYnVnIFx1MDAzZSAxKVxuIFx0XHRcdFx0XHRcdG5ldGRldl93YXJuKGRldixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9tZWRpYS5jXG5pbmRleCA1NWQ2ZmM5OWY0MGI2Li4wYzk2OTRkMmIzOGFlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL21lZGlhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9tZWRpYS5jXG5AQCAtMjQsNyAmIzQzOzI0LDcgQEBcbiBcbiAvKiBSZWFkIGFuZCB3cml0ZSB0aGUgTUlJIHJlZ2lzdGVycyB1c2luZyBzb2Z0d2FyZS1nZW5lcmF0ZWQgc2VyaWFsXG4gICAgTURJTyBwcm90b2NvbC4gIEl0IGlzIGp1c3QgZGlmZmVyZW50IGVub3VnaCBmcm9tIHRoZSBFRVBST00gcHJvdG9jb2xcbi0gICB0byBub3Qgc2hhcmUgY29kZS4gIFRoZSBtYXhpdW0gZGF0YSBjbG9jayByYXRlIGlzIDIuNSBNaHouICovXG4mIzQzOyAgIHRvIG5vdCBzaGFyZSBjb2RlLiAgVGhlIG1heGltdW0gZGF0YSBjbG9jayByYXRlIGlzIDIuNSBNaHouICovXG4gI2RlZmluZSBNRElPX1NISUZUX0NMS1x0XHQweDEwMDAwXG4gI2RlZmluZSBNRElPX0RBVEFfV1JJVEUwXHQweDAwMDAwXG4gI2RlZmluZSBNRElPX0RBVEFfV1JJVEUxXHQweDIwMDAwXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3R1bGlwLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvdHVsaXAuaFxuaW5kZXggNWUwMTBlMWZhNmY3OS4uZTM5ZTVjNzhkNGNjZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvdHVsaXAuaFxuQEAgLTI1MCw3ICYjNDM7MjUwLDcgQEAgZW51bSB0MjExNDNfY3NyNl9iaXRzIHtcbiBcdGNzcjZfdHRtID0gKDFcdTAwM2NcdTAwM2MyMiksICAvKiBUcmFuc21pdCBUaHJlc2hvbGQgTW9kZSwgc2V0IGZvciAxMGJhc2VULCAwIGZvciAxMDBCYXNlVFggKi9cbiBcdGNzcjZfc2YgPSAoMVx1MDAzY1x1MDAzYzIxKSwgICAvKiBTdG9yZSBhbmQgZm9yd2FyZC4gSWYgc2V0IGlnbm9yZXMgVFIgYml0cyAqL1xuIFx0Y3NyNl9oYmQgPSAoMVx1MDAzY1x1MDAzYzE5KSwgIC8qIEhlYXJ0IGJlYXQgZGlzYWJsZS4gRGlzYWJsZXMgU1FFIGZ1bmN0aW9uIGluIDEwYmFzZVQgKi9cbi1cdGNzcjZfcHMgPSAoMVx1MDAzY1x1MDAzYzE4KSwgICAvKiBQb3J0IFNlbGVjdC4gMCAoZGVmdWFsdCkgPSAxMGJhc2VULCAxID0gMTAwYmFzZVRYOiBjYW4mIzM5O3QgYmUgc2V0ICovXG4mIzQzO1x0Y3NyNl9wcyA9ICgxXHUwMDNjXHUwMDNjMTgpLCAgIC8qIFBvcnQgU2VsZWN0LiAwIChkZWZhdWx0KSA9IDEwYmFzZVQsIDEgPSAxMDBiYXNlVFg6IGNhbiYjMzk7dCBiZSBzZXQgKi9cbiBcdGNzcjZfY2EgPSAoMVx1MDAzY1x1MDAzYzE3KSwgICAvKiBDb2xsaXNpb24gT2Zmc2V0IEVuYWJsZS4gSWYgc2V0IHVzZXMgc3BlY2lhbCBhbGdvcml0aG0gaW4gbG93IGNvbGxpc2lvbiBzaXR1YXRpb25zICovXG4gXHRjc3I2X3RyaCA9ICgxXHUwMDNjXHUwMDNjMTUpLCAgLyogVHJhbnNtaXQgVGhyZXNob2xkIGhpZ2ggYml0ICovXG4gXHRjc3I2X3RybCA9ICgxXHUwMDNjXHUwMDNjMTQpLCAgLyogVHJhbnNtaXQgVGhyZXNob2xkIGxvdyBiaXQgKi9cbkBAIC0yNzQsNyAmIzQzOzI3NCw3IEBAIGVudW0gdDIxMTQzX2NzcjZfYml0cyB7XG4gXHRjc3I2X29tX2ludF9sb29wID0gKDFcdTAwM2NcdTAwM2MxMCksIC8qIGludGVybmFsIChGSUZPKSBsb29wYmFjayBmbGFnICovXG4gXHRjc3I2X29tX2V4dF9sb29wID0gKDFcdTAwM2NcdTAwM2MxMSksIC8qIGV4dGVybmFsIChQTUQpIGxvb3BiYWNrIGZsYWcgKi9cbiBcdC8qIHNldCBib3RoIGFuZCB5b3UgZ2V0IChQSFkpIGxvb3BiYWNrICovXG4tXHRjc3I2X2ZkID0gKDFcdTAwM2NcdTAwM2M5KSwgICAgLyogRnVsbCBkdXBsZXggbW9kZSwgZGlzYWJsZXMgaGVhcmJlYXQsIG5vIGxvb3BiYWNrICovXG4mIzQzO1x0Y3NyNl9mZCA9ICgxXHUwMDNjXHUwMDNjOSksICAgIC8qIEZ1bGwgZHVwbGV4IG1vZGUsIGRpc2FibGVzIGhlYXJ0YmVhdCwgbm8gbG9vcGJhY2sgKi9cbiBcdGNzcjZfcG0gPSAoMVx1MDAzY1x1MDAzYzcpLCAgICAvKiBQYXNzIEFsbCBNdWx0aWNhc3QgKi9cbiBcdGNzcjZfcHIgPSAoMVx1MDAzY1x1MDAzYzYpLCAgICAvKiBQcm9taXNjdW91cyBtb2RlICovXG4gXHRjc3I2X3NiID0gKDFcdTAwM2NcdTAwM2M1KSwgICAgLyogU3RhcnQoMSkvU3RvcCgwKSBiYWNrb2ZmIGNvdW50ZXIgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvd2luYm9uZC04NDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jXG5pbmRleCBhNTU4MWYxZDAxNDE3Li5iZTkxOTlmNTVhOGE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3dpbmJvbmQtODQwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jXG5AQCAtMTE4OCw3ICYjNDM7MTE4OCw3IEBAIHN0YXRpYyBpbnQgbmV0ZGV2X3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdFx0YnJlYWs7XG4gXHRcdGlmICgoc3RhdHVzIFx1MDAyNiAweDM4MDA4MzAwKSAhPSAweDAzMDApIHtcbiBcdFx0XHRpZiAoKHN0YXR1cyBcdTAwMjYgMHgzODAwMDMwMCkgIT0gMHgwMzAwKSB7XG4tXHRcdFx0XHQvKiBJbmdvcmUgZWFybGllciBidWZmZXJzLiAqL1xuJiM0MztcdFx0XHRcdC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4gXHRcdFx0XHRpZiAoKHN0YXR1cyBcdTAwMjYgMHhmZmZmKSAhPSAweDdmZmYpIHtcbiBcdFx0XHRcdFx0ZGV2X3dhcm4oXHUwMDI2ZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcdFx0XHQgXCYjMzQ7T3ZlcnNpemVkIEV0aGVybmV0IGZyYW1lIHNwYW5uZWQgbXVsdGlwbGUgYnVmZmVycywgZW50cnkgJSN4IHN0YXR1cyAlMDR4IVxcblwmIzM0OyxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jXG5pbmRleCA5MTM5MWE0OWZjZWEyLi5hNTlmZDI4MGEwNDVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9taXNjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jXG5AQCAtNTkxLDcgJiM0Mzs1OTEsNyBAQCBzdGF0aWMgaW50IGhuc19tYWNfY29uZmlnX3Nkc19sb29wYmFjayhzdHJ1Y3QgaG5zX21hY19jYiAqbWFjX2NiLCBib29sIGVuKVxuICNkZWZpbmUgSElMSU5LX0FDQ0VTU19TRUxfQ0ZHXHRcdDB4NDAwMDhcbiBcdFx0XHQvKiBoaWxpbms0IFx1MDAyNiBoaWxpbmszIHVzZSB0aGUgc2FtZSB4Z2UgdHJhaW5pbmcgYW5kXG4gXHRcdFx0ICogeGdlIHUgYWRhcHRvci4gVGhlcmUgaXMgYSBoaWxpbmsgYWNjZXNzIHNlbCBjZmdcbi1cdFx0XHQgKiByZWdpc3RlciB0byBzZWxlY3Qgd2hpY2ggb25lIHRvIGJlIGNvbmZpZ2VkXG4mIzQzO1x0XHRcdCAqIHJlZ2lzdGVyIHRvIHNlbGVjdCB3aGljaCBvbmUgdG8gYmUgY29uZmlndXJlZFxuIFx0XHRcdCAqL1xuIFx0XHRcdGlmICgoIUhOU19EU0FGX0lTX0RFQlVHKG1hY19jYi1cdTAwM2Vkc2FmX2RldikpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICAobWFjX2NiLVx1MDAzZW1hY19pZCBcdTAwM2M9IDMpKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfcHBlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX3BwZS5jXG5pbmRleCA1MDEzYmViNGQyODI1Li40MDhkMzZkODVmYjEzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9wcGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9wcGUuY1xuQEAgLTEzOSw3ICYjNDM7MTM5LDcgQEAgc3RhdGljIHZvaWQgaG5zX3BwZV9zZXRfdmxhbl9zdHJpcChzdHJ1Y3QgaG5zX3BwZV9jYiAqcHBlX2NiLCBpbnQgZW4pXG4gfVxuIFxuIC8qKlxuLSAqIGhuc19wcGVfY2hlY2tzdW1faHcgLSBzZXQgcHBlIGNoZWNrc3VtIGNhY3VsYXRlXG4mIzQzOyAqIGhuc19wcGVfY2hlY2tzdW1faHcgLSBzZXQgcHBlIGNoZWNrc3VtIGNhbGN1bGF0ZVxuICAqIEBwcGVfY2I6IHBwZSBkZXZpY2VcbiAgKiBAdmFsdWU6IHZhbHVlXG4gICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jXG5pbmRleCBlOTA1ZjEwYjg5NGU4Li5kODE5ZDJiYjM0NTA3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmNcbkBAIC0xMjMwLDcgJiM0MzsxMjMwLDcgQEAgc3RhdGljIHZvaWQgaG5zX25pY191cGRhdGVfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbiBcdGgtXHUwMDNlZGV2LVx1MDAzZW9wcy1cdTAwM2V1cGRhdGVfc3RhdHMoaCwgXHUwMDI2bmV0ZGV2LVx1MDAzZXN0YXRzKTtcbiB9XG4gXG4tLyogc2V0IG1hYyBhZGRyIGlmIGl0IGlzIGNvbmZpZ2VkLiBvciBsZWF2ZSBpdCB0byB0aGUgQUUgZHJpdmVyICovXG4mIzQzOy8qIHNldCBtYWMgYWRkciBpZiBpdCBpcyBjb25maWd1cmVkLiBvciBsZWF2ZSBpdCB0byB0aGUgQUUgZHJpdmVyICovXG4gc3RhdGljIHZvaWQgaG5zX2luaXRfbWFjX2FkZHIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IGhuc19uaWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTIzMTcsNyAmIzQzOzIzMTcsNyBAQCBzdGF0aWMgaW50IGhuc19uaWNfZGV2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdHJldCA9IGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsIFwmIzM0O3BvcnQtaWRcJiMzNDssIFx1MDAyNnBvcnRfaWQpO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdGdvdG8gb3V0X3JlYWRfcHJvcF9mYWlsO1xuLVx0XHQvKiBmb3Igb2xkIGR0cywgd2UgbmVlZCB0byBjYWN1bGF0ZSB0aGUgcG9ydCBvZmZzZXQgKi9cbiYjNDM7XHRcdC8qIGZvciBvbGQgZHRzLCB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgcG9ydCBvZmZzZXQgKi9cbiBcdFx0cG9ydF9pZCA9IHBvcnRfaWQgXHUwMDNjIEhOU19TUlZfT0ZGU0VUID8gcG9ydF9pZCAmIzQzOyBITlNfREVCVUdfT0ZGU0VUXG4gXHRcdFx0OiBwb3J0X2lkIC0gSE5TX1NSVl9PRkZTRVQ7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tYWluLmNcbmluZGV4IGU2YWY5MzljMWMxOWIuLmJmMzVmNTVmNWI4ZmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWFpbi5jXG5AQCAtMTA1MjcsNyAmIzQzOzEwNTI3LDcgQEAgc3RhdGljIGludCBoY2xnZV9nZXRfbGlua19kaWFnbm9zaXNfaW5mbyhzdHJ1Y3QgaG5hZTNfaGFuZGxlICpoYW5kbGUsXG4gfVxuIFxuIC8qIEFmdGVyIGRpc2FibGUgc3Jpb3YsIFZGIHN0aWxsIGhhcyBzb21lIGNvbmZpZyBhbmQgaW5mbyBuZWVkIGNsZWFuLFxuLSAqIHdoaWNoIGNvbmZpZ2VkIGJ5IFBGLlxuJiM0MzsgKiB3aGljaCBjb25maWd1cmVkIGJ5IFBGLlxuICAqL1xuIHN0YXRpYyB2b2lkIGhjbGdlX2NsZWFyX3Zwb3J0X3ZmX2luZm8oc3RydWN0IGhjbGdlX3Zwb3J0ICp2cG9ydCwgaW50IHZmaWQpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV90bS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX3RtLmNcbmluZGV4IDAwYzNmMjU0OGJmNmIuLmJmNTMzYjhmNDZhZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfdG0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX3RtLmNcbkBAIC0zNSw3ICYjNDM7MzUsNyBAQCBlbnVtIGhjbGdlX3NoYXBlcl9sZXZlbCB7XG4gICogSVIoTWJwcykgPSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAqICBDTE9DSygxMDAwTWJwcylcbiAgKlx0XHRUaWNrICogKDIgXiBJUl9zKVxuICAqXG4tICogQHJldHVybjogMDogY2FsY3VsYXRlIHN1Y2Vzc2Z1bCwgbmVnYXRpdmU6IGZhaWxcbiYjNDM7ICogQHJldHVybjogMDogY2FsY3VsYXRlIHN1Y2Nlc3NmdWwsIG5lZ2F0aXZlOiBmYWlsXG4gICovXG4gc3RhdGljIGludCBoY2xnZV9zaGFwZXJfcGFyYV9jYWxjKHUzMiBpciwgdTggc2hhcGVyX2xldmVsLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgaGNsZ2Vfc2hhcGVyX2lyX3BhcmEgKmlyX3BhcmEsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jXG5pbmRleCAwNjNhNjkyYzJiNDFlLi41ZDE0ZDI5YjAyOTY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzdmYvaGNsZ2V2Zl9tYWluLmNcbkBAIC0xODgwLDcgJiM0MzsxODgwLDcgQEAgc3RhdGljIHZvaWQgaGNsZ2V2Zl9yZXNldF9zZXJ2aWNlX3Rhc2soc3RydWN0IGhjbGdldmZfZGV2ICpoZGV2KVxuIFx0XHQgKiBmcm9tIFBGIGFzIGNtZHEgd291bGQgYmUgaW4gdW5yZWxpYWJsZSBzdGF0ZSBpLmUuIG1haWxib3hcbiBcdFx0ICogY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFBGIGFuZCBWRiB3b3VsZCBiZSBicm9rZW4uXG4gXHRcdCAqXG4tXHRcdCAqIGlmIHdlIGFyZSBuZXZlciBnZXRpbmcgaW50byBwZW5kaW5nIHN0YXRlIGl0IG1lYW5zIGVpdGhlcjpcbiYjNDM7XHRcdCAqIGlmIHdlIGFyZSBuZXZlciBnZXR0aW5nIGludG8gcGVuZGluZyBzdGF0ZSBpdCBtZWFucyBlaXRoZXI6XG4gXHRcdCAqIDEuIFBGIGlzIG5vdCByZWNlaXZpbmcgb3VyIHJlcXVlc3Qgd2hpY2ggY291bGQgYmUgZHVlIHRvIElNUFxuIFx0XHQgKiAgICByZXNldFxuIFx0XHQgKiAyLiBQRiBpcyBzY3Jld2VkXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oXG5pbmRleCAwNjFmY2Q0NDRkNTAzLi4zZWQ1NjcwZjAxYzI1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyLmhcbkBAIC03MjksNyAmIzQzOzcyOSw3IEBAXG4gI2RlZmluZSBNVlBQMl9NQVhfVFhRXHRcdFx0OFxuIFxuIC8qIE1WUFAyX01BWF9UU09fU0VHUyBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhZ21lbnRzIHRvIGFsbG93IGluIHRoZSBHU09cbi0gKiBza2IuIEFzIHdlIG5lZWQgYSBtYXhpdW0gb2YgdHdvIGRlc2NyaXB0b3JzIHBlciBmcmFnbWVudHMgKDEgaGVhZGVyLCAxIGRhdGEpLFxuJiM0MzsgKiBza2IuIEFzIHdlIG5lZWQgYSBtYXhpbXVtIG9mIHR3byBkZXNjcmlwdG9ycyBwZXIgZnJhZ21lbnRzICgxIGhlYWRlciwgMSBkYXRhKSxcbiAgKiBtdWx0aXBseSB0aGlzIHZhbHVlIGJ5IHR3byB0byBjb3VudCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2tiIGRlc2NzIG5lZWRlZC5cbiAgKi9cbiAjZGVmaW5lIE1WUFAyX01BWF9UU09fU0VHU1x0XHQzMDBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX3Bycy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9wcnMuY1xuaW5kZXggOTNlOTc4YmRmMzAzYy4uYWQ2NzdjZmRkYjRkNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfcHJzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfcHJzLmNcbkBAIC0zODIsNyAmIzQzOzM4Miw3IEBAIHN0YXRpYyBpbnQgbXZwcDJfcHJzX2Zsb3dfZmluZChzdHJ1Y3QgbXZwcDIgKnByaXYsIGludCBmbG93KVxuIFx0c3RydWN0IG12cHAyX3Byc19lbnRyeSBwZTtcbiBcdGludCB0aWQ7XG4gXG4tXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyB3aXRoIE1WUFAyX1BSU19MVV9GTE9XUyAqL1xuJiM0MztcdC8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRyaWVzIHdpdGggTVZQUDJfUFJTX0xVX0ZMT1dTICovXG4gXHRmb3IgKHRpZCA9IE1WUFAyX1BSU19UQ0FNX1NSQU1fU0laRSAtIDE7IHRpZCBcdTAwM2U9IDA7IHRpZC0tKSB7XG4gXHRcdHU4IGJpdHM7XG4gXG5AQCAtMTIxMiw3ICYjNDM7MTIxMiw3IEBAIHN0YXRpYyB2b2lkIG12cHAyX3Byc19taF9pbml0KHN0cnVjdCBtdnBwMiAqcHJpdilcbiBcdG12cHAyX3Byc19od193cml0ZShwcml2LCBcdTAwMjZwZSk7XG4gfVxuIFxuLS8qIFNldCBkZWZhdWx0IGVudGlyZXMgKHBsYWNlIGhvbGRlcikgZm9yIHByb21pc2N1b3VzLCBub24tcHJvbWlzY3VvdXMgYW5kXG4mIzQzOy8qIFNldCBkZWZhdWx0IGVudHJpZXMgKHBsYWNlIGhvbGRlcikgZm9yIHByb21pc2N1b3VzLCBub24tcHJvbWlzY3VvdXMgYW5kXG4gICogbXVsdGljYXN0IE1BQyBhZGRyZXNzZXNcbiAgKi9cbiBzdGF0aWMgdm9pZCBtdnBwMl9wcnNfbWFjX2luaXQoc3RydWN0IG12cHAyICpwcml2KVxuQEAgLTIyNDEsNyAmIzQzOzIyNDEsNyBAQCBtdnBwMl9wcnNfbWFjX2RhX3JhbmdlX2ZpbmQoc3RydWN0IG12cHAyICpwcml2LCBpbnQgcG1hcCwgY29uc3QgdTggKmRhLFxuIFx0c3RydWN0IG12cHAyX3Byc19lbnRyeSBwZTtcbiBcdGludCB0aWQ7XG4gXG4tXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyB3aXRoIE1WUFAyX1BSU19MVV9NQUMgKi9cbiYjNDM7XHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50cmllcyB3aXRoIE1WUFAyX1BSU19MVV9NQUMgKi9cbiBcdGZvciAodGlkID0gTVZQUDJfUEVfTUFDX1JBTkdFX1NUQVJUO1xuIFx0ICAgICB0aWQgXHUwMDNjPSBNVlBQMl9QRV9NQUNfUkFOR0VfRU5EOyB0aWQmIzQzOyYjNDM7KSB7XG4gXHRcdHVuc2lnbmVkIGludCBlbnRyeV9wbWFwO1xuQEAgLTI1MzksNyAmIzQzOzI1MzksNyBAQCBpbnQgbXZwcDJfcHJzX2RlZl9mbG93KHN0cnVjdCBtdnBwMl9wb3J0ICpwb3J0KVxuIFxuIFx0LyogU3VjaCBlbnRyeSBub3QgZXhpc3QgKi9cbiBcdGlmICh0aWQgXHUwMDNjIDApIHtcbi1cdFx0LyogR28gdGhyb3VnaCB0aGUgYWxsIGVudGlyZXMgZnJvbSBsYXN0IHRvIGZpcnN0ICovXG4mIzQzO1x0XHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50cmllcyBmcm9tIGxhc3QgdG8gZmlyc3QgKi9cbiBcdFx0dGlkID0gbXZwcDJfcHJzX3RjYW1fZmlyc3RfZnJlZShwb3J0LVx1MDAzZXByaXYsXG4gXHRcdFx0XHRcdFx0TVZQUDJfUEVfTEFTVF9GUkVFX1RJRCxcbiBcdFx0XHRcdFx0ICAgICAgIE1WUFAyX1BFX0ZJUlNUX0ZSRUVfVElEKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL25wYy5oXG5pbmRleCA3MTliMzYxOGVlYjUyLi4zMDkyNDRmZTg3NTQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbnBjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL25wYy5oXG5AQCAtODQsNyAmIzQzOzg0LDcgQEAgZW51bSBucGNfa3B1X2xjX2x0eXBlIHtcbiBcdE5QQ19MVF9MQ19DVVNUT00xID0gMHhGLFxuIH07XG4gXG4tLyogRG9uJiMzOTt0IG1vZGlmeSBMdHlwZXMgdXB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbFxuJiM0MzsvKiBEb24mIzM5O3QgbW9kaWZ5IEx0eXBlcyB1cCB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbFxuICAqIGVmZmVjdCBmbG93IHRhZyBjYWxjdWxhdGlvbiBhbmQgdGh1cyBSU1MuXG4gICovXG4gZW51bSBucGNfa3B1X2xkX2x0eXBlIHtcbkBAIC0xNDAsNyAmIzQzOzE0MCw3IEBAIGVudW0gbnBjX2twdV9sZ19sdHlwZSB7XG4gXHROUENfTFRfTEdfQ1VTVE9NMSA9IDB4RixcbiB9O1xuIFxuLS8qIERvbiYjMzk7dCBtb2RpZnkgTHR5cGVzIHVwdG8gU0NUUCwgb3RoZXJ3aXNlIGl0IHdpbGxcbiYjNDM7LyogRG9uJiMzOTt0IG1vZGlmeSBMdHlwZXMgdXAgdG8gU0NUUCwgb3RoZXJ3aXNlIGl0IHdpbGxcbiAgKiBlZmZlY3QgZmxvdyB0YWcgY2FsY3VsYXRpb24gYW5kIHRodXMgUlNTLlxuICAqL1xuIGVudW0gbnBjX2twdV9saF9sdHlwZSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG5pbmRleCAxNTNlYjU3YmFkMDY3Li5kODBkMmMwMGJkODQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbkBAIC00OTc0LDcgJiM0Mzs0OTc0LDcgQEAgc3RhdGljIHZvaWQgcnZ1X25peF9zZXR1cF9jYXBhYmlsaXRpZXMoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkcilcbiBcbiBcdC8qIE9uIE9jdGVvblR4MiBEV1JSIHF1YW50dW0gaXMgZGlyZWN0bHkgY29uZmlndXJlZCBpbnRvIGVhY2ggb2ZcbiBcdCAqIHRoZSB0cmFuc21pdCBzY2hlZHVsZXIgcXVldWVzLiBBbmQgUEYvVkYgZHJpdmVycyB3ZXJlIGZyZWUgdG9cbi1cdCAqIGNvbmZpZyBhbnkgdmFsdWUgdXB0byAyXjI0LlxuJiM0MztcdCAqIGNvbmZpZyBhbnkgdmFsdWUgdXAgdG8gMl4yNC5cbiBcdCAqIE9uIENOMTBLLCBIVyBpcyBtb2RpZmllZCwgdGhlIHF1YW50dW0gY29uZmlndXJhdGlvbiBhdCBzY2hlZHVsZXJcbiBcdCAqIHF1ZXVlcyBpcyBpbiB0ZXJtcyBvZiB3ZWlnaHQuIEFuZCBTVyBuZWVkcyB0byBzZXR1cCBhIGJhc2UgRFdSUiBNVFVcbiBcdCAqIGF0IE5JWF9BRl9EV1JSX1JQTV9NVFUgLyBOSVhfQUZfRFdSUl9TRFBfTVRVLiBIVyB3aWxsIGRvXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuY1xuaW5kZXggM2UxYmYyMmNiYTY5Yy4uZjk4ZWY1NDMxYzkwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuY1xuQEAgLTMwMSw3ICYjNDM7MzAxLDcgQEAgc3RhdGljIHZvaWQgY24xMGtfZ2V0X2luZ3Jlc3NfcmF0ZV9jZmcodTY0IHJhdGUsIHUzMiAqcmF0ZV9leHAsXG4gXHQgKiBwb2xpY2VyIHRpbWV1bml0ICogMl5yZGl2IGllIDIgKiAyXnJkaXYgdXNlY3MsIHRvIHRoZSB0b2tlbiBidWNrZXQuXG4gXHQgKiBIZXJlIHBvbGljZXIgdGltZXVuaXQgaXMgMiB1c2VjcyBhbmQgcmF0ZSBpcyBpbiBiaXRzIHBlciBzZWMuXG4gXHQgKiBTaW5jZSBmbG9hdGluZyBwb2ludCBjYW5ub3QgYmUgdXNlZCBiZWxvdyBhbGdvcml0aG0gdXNlcyAxMDAwMDAwXG4tXHQgKiBzY2FsZSBmYWN0b3IgdG8gc3VwcG9ydCByYXRlcyB1cHRvIDEwMEdicHMuXG4mIzQzO1x0ICogc2NhbGUgZmFjdG9yIHRvIHN1cHBvcnQgcmF0ZXMgdXAgdG8gMTAwR2Jwcy5cbiBcdCAqL1xuIFx0dG1wID0gcmF0ZSAqIDMyICogMjtcbiBcdGlmICh0bXAgXHUwMDNjIDI1NjAwMDAwMCkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2RjYm5sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9kY2JubC5jXG5pbmRleCBmMTEwZGZhNDIzNjA1Li45MWQzNDZkMTE0YWY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZGNibmwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZGNibmwuY1xuQEAgLTY3LDcgJiM0Mzs2Nyw3IEBAIHN0YXRpYyBpbnQgb3R4Ml9wZmNfdHhzY2hxX2FsbG9jX29uZShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHU4IHByaW8pXG4gXHRpZiAoIXJlcSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHQvKiBSZXF1ZXN0IG9uZSBzY2hxIHBlciBsZXZlbCB1cHRvIG1heCBsZXZlbCBhcyBjb25maWd1cmVkXG4mIzQzO1x0LyogUmVxdWVzdCBvbmUgc2NocSBwZXIgbGV2ZWwgdXAgdG8gbWF4IGxldmVsIGFzIGNvbmZpZ3VyZWRcbiBcdCAqIGxpbmsgY29uZmlnIGxldmVsLiBUaGVzZSByZXN0IG9mIHRoZSBzY2hlZHVsZXIgY2FuIGJlXG4gXHQgKiBzYW1lIGFzIGh3LnR4c2NocV9saXN0LlxuIFx0ICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguY1xuaW5kZXggYmJiYmJiYTYzZTE1ZC4uMjM3MGIyZGRiYTZiNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguY1xuQEAgLTUxNCw3ICYjNDM7NTE0LDcgQEAgc3RhdGljIGludCBhZGRfZGVsX2hhc2hfZW50cnkoc3RydWN0IHB4YTE2OF9ldGhfcHJpdmF0ZSAqcGVwLFxuIC8qXG4gICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAqICBDcmVhdGUgYW4gYWRkcmVzc1RhYmxlIGVudHJ5IGZyb20gTUFDIGFkZHJlc3MgaW5mb1xuLSAqICBmb3VuZCBpbiB0aGUgc3BlY2lmZWQgbmV0X2RldmljZSBzdHJ1Y3RcbiYjNDM7ICogIGZvdW5kIGluIHRoZSBzcGVjaWZpZWQgbmV0X2RldmljZSBzdHJ1Y3RcbiAgKlxuICAqICBJbnB1dCA6IHBvaW50ZXIgdG8gZXRoZXJuZXQgaW50ZXJmYWNlIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZVxuICAqICBPdXRwdXQgOiBOL0FcbkBAIC04MDYsNyAmIzQzOzgwNiw3IEBAIHN0YXRpYyBpbnQgcnhxX3Byb2Nlc3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGJ1ZGdldClcbiBcdFx0c3RhdHMtXHUwMDNlcnhfYnl0ZXMgJiM0Mzs9IHJ4X2Rlc2MtXHUwMDNlYnl0ZV9jbnQ7XG4gXHRcdC8qXG4gXHRcdCAqIEluIGNhc2UgcmVjZWl2ZWQgYSBwYWNrZXQgd2l0aG91dCBmaXJzdCAvIGxhc3QgYml0cyBvbiBPUlxuLVx0XHQgKiB0aGUgZXJyb3Igc3VtbWFyeSBiaXQgaXMgb24sIHRoZSBwYWNrZXRzIG5lZWRzIHRvIGJlIGRyb3BlZC5cbiYjNDM7XHRcdCAqIHRoZSBlcnJvciBzdW1tYXJ5IGJpdCBpcyBvbiwgdGhlIHBhY2tldHMgbmVlZHMgdG8gYmUgZHJvcHBlZC5cbiBcdFx0ICovXG4gXHRcdGlmICgoKGNtZF9zdHMgXHUwMDI2IChSWF9GSVJTVF9ERVNDIHwgUlhfTEFTVF9ERVNDKSkgIT1cbiBcdFx0ICAgICAoUlhfRklSU1RfREVTQyB8IFJYX0xBU1RfREVTQykpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jXG5pbmRleCBmZWY0YjJiMGIxZjI2Li43OWQ2YTgxOWJmOTA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfY3R4LmNcbkBAIC0xNyw3ICYjNDM7MTcsNyBAQCBuZXR4ZW5fcG9sbF9yc3Aoc3RydWN0IG5ldHhlbl9hZGFwdGVyICphZGFwdGVyKVxuIFx0aW50XHR0aW1lb3V0ID0gMDtcbiBcbiBcdGRvIHtcbi1cdFx0LyogZ2l2ZSBhdGxlYXN0IDFtcyBmb3IgZmlybXdhcmUgdG8gcmVzcG9uZCAqL1xuJiM0MztcdFx0LyogZ2l2ZSBhdCBsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi9cbiBcdFx0bXNsZWVwKDEpO1xuIFxuIFx0XHRpZiAoJiM0MzsmIzQzO3RpbWVvdXQgXHUwMDNlIE5YX09TX0NSQl9SRVRSWV9DT1VOVClcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9jeHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2N4dC5jXG5pbmRleCBiNzAyNjJlNzBiYWY2Li44OWI5NDdmODJjZjAwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfY3h0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2N4dC5jXG5AQCAtNTYxLDcgJiM0Mzs1NjEsNyBAQCBpbnQgcWVkX2N4dF9jZmdfaWx0X2NvbXB1dGUoc3RydWN0IHFlZF9od2ZuICpwX2h3Zm4sIHUzMiAqbGluZV9jb3VudClcbiBcdFx0XHQgKiAgICAgIGJsb2NrIGluIHRoZSBJTFQgY2xpZW50LiBUaGlzIGlzIGxhdGVyIHVzZWQgdG9cbiBcdFx0XHQgKiAgICAgIGNvbmZpZ3VyZSB0aGUgQ0RVIHNlZ21lbnQgb2Zmc2V0IHJlZ2lzdGVycyBhbmRcbiBcdFx0XHQgKiAgICAgIHJlc3VsdHMgaW4gYW4gRkwgY29tbWFuZCBmb3IgVElEcyBvZiB0aGlzXG4tXHRcdFx0ICogICAgICBzZWdlbWVudCBiZWhhdmVzIGFzIHJlZ3VsYXIgbG9hZCBjb21tYW5kc1xuJiM0MztcdFx0XHQgKiAgICAgIHNlZ21lbnQgYmVoYXZlcyBhcyByZWd1bGFyIGxvYWQgY29tbWFuZHNcbiBcdFx0XHQgKiAgICAgIChsb2FkaW5nIFRJRHMgZnJvbSB0aGUgd29ya2luZyBtZW1vcnkpLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGxpbmUgPSBwX2NsaS1cdTAwM2VwZl9ibGtzW0NEVVRfU0VHX0JMSyhpKV0uc3RhcnRfbGluZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9tY3AuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oXG5pbmRleCA5YmQwNTY1ZmU4YWJjLi41MDY5OWQ2MDBiOGUzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfbWNwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oXG5AQCAtNzgzLDcgJiM0Mzs3ODMsNyBAQCBzdHJ1Y3QgcWVkX21jcF9pbmZvIHtcbiBcdHUxNlx0XHRcdFx0XHRtZndfbWJfbGVuZ3RoO1xuIFx0dTMyXHRcdFx0XHRcdG1jcF9oaXN0O1xuIFxuLVx0LyogQ2FwYWJpbHRpZXMgbmVnb3RpYXRlZCB3aXRoIHRoZSBNRlcgKi9cbiYjNDM7XHQvKiBDYXBhYmlsaXRpZXMgbmVnb3RpYXRlZCB3aXRoIHRoZSBNRlcgKi9cbiBcdHUzMlx0XHRcdFx0XHRjYXBhYmlsaXRpZXM7XG4gXG4gXHQvKiBTL04gZm9yIGRlYnVnIGRhdGEgbWFpbGJveCBjb21tYW5kcyAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pYy5oXG5pbmRleCBkN2M4ZmFkYjQ5ZGUxLi45NzI4ZDU4M2I4OTE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWMuaFxuQEAgLTkwOSw3ICYjNDM7OTA5LDcgQEAgc3RydWN0IHFsY25pY19tYWNfdmxhbl9saXN0IHtcbiBcbiAjZGVmaW5lIFFMQ05JQ19MUk9fUkVRVUVTVF9DTEVBTlVQXHQ0XG4gXG4tLyogQ2FwYWJpbGl0ZXMgcmVjZWl2ZWQgKi9cbiYjNDM7LyogQ2FwYWJpbGl0aWVzIHJlY2VpdmVkICovXG4gI2RlZmluZSBRTENOSUNfRldfQ0FQQUJJTElUWV9UU09cdFx0QklUXzFcbiAjZGVmaW5lIFFMQ05JQ19GV19DQVBBQklMSVRZX0JER1x0XHRCSVRfOFxuICNkZWZpbmUgUUxDTklDX0ZXX0NBUEFCSUxJVFlfRlZMQU5UWFx0XHRCSVRfOVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcbmluZGV4IDQ3Y2Q5ZWM2NjVlZWIuLmZmMzM3YTkxNzI0M2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcbkBAIC0xOTU3LDkgJiM0MzsxOTU3LDkgQEAgc3RhdGljIHZvaWQgcWxjbmljXzgzeHhfdGVtcGxhdGVfZW5kKHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqcF9kZXYpXG4gKiBxbGNuaWNfODN4eF9leGVjX3RlbXBsYXRlX2NtZFxuICpcbiAqIEBwX2RldjogYWRhcHRlciBzdHJ1Y3R1cmVcbi0qIEBwX2J1ZmY6IFBvaXRlciB0byBpbnN0cnVjdGlvbiB0ZW1wbGF0ZVxuJiM0MzsqIEBwX2J1ZmY6IFBvaW50ZXIgdG8gaW5zdHJ1Y3Rpb24gdGVtcGxhdGVcbiAqXG4tKiBUZW1wbGF0ZSBwcm92aWRlcyBpbnN0cnVjdGlvbnMgdG8gc3RvcCwgcmVzdGFydCBhbmQgaW5pdGFsaXplIGZpcm13YXJlLlxuJiM0MzsqIFRlbXBsYXRlIHByb3ZpZGVzIGluc3RydWN0aW9ucyB0byBzdG9wLCByZXN0YXJ0IGFuZCBpbml0aWFsaXplIGZpcm13YXJlLlxuICogVGhlc2UgaW5zdHJ1Y3Rpb25zIGFyZSBhYnN0cmFjdGVkIGFzIGEgc2VyaWVzIG9mIHJlYWQsIHdyaXRlIGFuZFxuICogcG9sbCBvcGVyYXRpb25zIG9uIGhhcmR3YXJlIHJlZ2lzdGVycy4gUmVnaXN0ZXIgaW5mb3JtYXRpb24gYW5kIG9wZXJhdGlvblxuICogc3BlY2lmaWNzIGFyZSBub3QgZXhwb3NlZCB0byB0aGUgZHJpdmVyLiBEcml2ZXIgcmVhZHMgdGhlIHRlbXBsYXRlIGZyb21cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19jdHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX2N0eC5jXG5pbmRleCBlYjgyN2I4NmVjYWU4Li4xYjk0YzQyZDY2OWIzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX2N0eC5jXG5AQCAtOTUsNyAmIzQzOzk1LDcgQEAgcWxjbmljX3BvbGxfcnNwKHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqYWRhcHRlcilcbiBcdGludCB0aW1lb3V0ID0gMCwgZXJyID0gMDtcbiBcbiBcdGRvIHtcbi1cdFx0LyogZ2l2ZSBhdGxlYXN0IDFtcyBmb3IgZmlybXdhcmUgdG8gcmVzcG9uZCAqL1xuJiM0MztcdFx0LyogZ2l2ZSBhdCBsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi9cbiBcdFx0bWRlbGF5KDEpO1xuIFxuIFx0XHRpZiAoJiM0MzsmIzQzO3RpbWVvdXQgXHUwMDNlIFFMQ05JQ19PU19DUkJfUkVUUllfQ09VTlQpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jXG5pbmRleCBmZjRmN2NkMjBjNzkxLi4yM2FlNzZjYTgxZGJlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmNcbkBAIC02NDAsNyAmIzQzOzY0MCw3IEBAIHN0YXRpYyBpbnQgcWxjbmljX21heF9yaW5ncyhzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHJpbmdfY250LFxuIFxuIHZvaWQgcWxjbmljX3NldF90eF9yaW5nX2NvdW50KHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqYWRhcHRlciwgdTggdHhfY250KVxuIHtcbi1cdC8qIDgzeHggYWRhcHRlciBkb2VzIG5vdCBoYXZlIG1heF90eF9yaW5ncyBpbnRpYWxpemVkIGluIHByb2JlICovXG4mIzQzO1x0LyogODN4eCBhZGFwdGVyIGRvZXMgbm90IGhhdmUgbWF4X3R4X3JpbmdzIGluaXRpYWxpemVkIGluIHByb2JlICovXG4gXHRpZiAoYWRhcHRlci1cdTAwM2VtYXhfdHhfcmluZ3MpXG4gXHRcdGFkYXB0ZXItXHUwMDNlZHJ2X3R4X3JpbmdzID0gcWxjbmljX21heF9yaW5ncyhhZGFwdGVyLCB0eF9jbnQsXG4gXHRcdFx0XHRcdFx0XHQgUUxDTklDX1RYX1FVRVVFKTtcbkBAIC02NTAsNyAmIzQzOzY1MCw3IEBAIHZvaWQgcWxjbmljX3NldF90eF9yaW5nX2NvdW50KHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqYWRhcHRlciwgdTggdHhfY250KVxuIFxuIHZvaWQgcWxjbmljX3NldF9zZHNfcmluZ19jb3VudChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHJ4X2NudClcbiB7XG4tXHQvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfc2RzX3JpbmdzIGludGlhbGl6ZWQgaW4gcHJvYmUgKi9cbiYjNDM7XHQvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfc2RzX3JpbmdzIGluaXRpYWxpemVkIGluIHByb2JlICovXG4gXHRpZiAoYWRhcHRlci1cdTAwM2VtYXhfc2RzX3JpbmdzKVxuIFx0XHRhZGFwdGVyLVx1MDAzZWRydl9zZHNfcmluZ3MgPSBxbGNuaWNfbWF4X3JpbmdzKGFkYXB0ZXIsIHJ4X2NudCxcbiBcdFx0XHRcdFx0XHRcdCAgUUxDTklDX1JYX1FVRVVFKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmNcbmluZGV4IDRlZWEzNDA4MDM0YmUuLmI3MjJhMTk1ZDgzMWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9jZm0uY1xuQEAgLTE3LDcgJiM0MzsxNyw3IEBAXG4gKi9cbiBcbiAvKlxuLSAqXHRIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uXG4mIzQzOyAqXHRIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWVudGF0aW9uXG4gICpcdFRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgU01UIGZ1bmN0aW9ucyBhcmUgcmVmZXJlbmNlZCA6XG4gICpcbiAgKlx0XHRxdWV1ZV9ldmVudCgpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jXG5pbmRleCAyZjVmNWYyNmJiNDM0Li5lNDE4YWI2NWNiNjExIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZWNtLmNcbkBAIC0xNyw3ICYjNDM7MTcsNyBAQFxuICovXG4gXG4gLypcbi0gKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uXG4mIzQzOyAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtZW50YXRpb25cbiAgKiBUaGUgZm9sbG93aW5nIGV4dGVybmFsIFNNVCBmdW5jdGlvbnMgYXJlIHJlZmVyZW5jZWQgOlxuICAqXG4gICogXHRcdHF1ZXVlX2V2ZW50KClcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZnBsdXN0bS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uY1xuaW5kZXggMDM2MDYyMzc2YzA2Ni4uMGQ0MjAxMzQ1ZjliZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmNcbkBAIC0xNTAsNyAmIzQzOzE1MCw3IEBAIHN0YXRpYyB1X2xvbmcgcmVhZF9tZHIoc3RydWN0IHNfc21jICpzbWMsIHVuc2lnbmVkIGludCBhZGRyKVxuIFx0Q0hFQ0tfTlBQKCkgO1xuIFx0TUFSUihhZGRyKSA7XG4gXHRvdXRwdyhGTV9BKEZNX0NNRFJFRzEpLEZNX0lSTUVNV08pIDtcbi1cdENIRUNLX05QUCgpIDtcdC8qIG5lZWRlZCBmb3IgUENJIHRvIHByZXZlbnQgZnJvbSB0aW1laW5nIHZpb2xhdGlvbnMgKi9cbiYjNDM7XHRDSEVDS19OUFAoKSA7XHQvKiBuZWVkZWQgZm9yIFBDSSB0byBwcmV2ZW50IGZyb20gdGltaW5nIHZpb2xhdGlvbnMgKi9cbiAvKlx0cCA9IE1EUlIoKSA7ICovXHQvKiBiYWQgcmVhZCB2YWx1ZXMgaWYgdGhlIHdvcmthcm91bmQgKi9cbiBcdFx0XHQvKiBzbWMtXHUwMDNlaHcubWNfZHVtbXkgPSAqKChzaG9ydCB2b2xhdGlsZSBmYXIgKikoYWRkcikpKSovXG4gXHRcdFx0LyogaXMgdXNlZCAqL1xuQEAgLTU3Miw3ICYjNDM7NTcyLDcgQEAgTm90ZVx0QWZ0ZXIgYW55IHJpbmcgb3BlcmF0aW9uYWwgY2hhbmdlIHRoZSB0cmFuc21pdCBjb21wbGV0ZVxuIFx0VGhlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50IG1vZHVsZSBtdXN0IGVuYWJsZVxuIFx0dGhlIHRyYW5zbWl0IGNvbXBsZXRlIGludGVycnVwdCBvZiBhIHF1ZXVlLFxuIFx0XHQtIHdoZW4gaXQgcXVldWVzIHRoZSBmaXJzdCBmcmFtZSxcbi1cdFx0ICBiZWNhdXNlIG9mIG5vIHRyYW5zbWl0IHJlc291cmNlcyBhcmUgYmVlaW5nXG4mIzQzO1x0XHQgIGJlY2F1c2Ugb2Ygbm8gdHJhbnNtaXQgcmVzb3VyY2VzIGFyZSBiZWluZ1xuIFx0XHQgIGF2YWlsYWJsZSBhbmRcbiBcdFx0LSB3aGVuIGl0IGVzY2FwZXMgZnJvbSB0aGUgZnVuY3Rpb24gbGxjX3Jlc3RhcnRfdHhcbiBcdFx0ICB3aGlsZSBzb21lIGZyYW1lcyBhcmUgc3RpbGwgcXVldWVkLlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL2h3bXRtLmggYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9od210bS5oXG5pbmRleCBlOTdkYjgyNmNkZDQ1Li4wYWI0OWNjMGE4YmRhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvaHdtdG0uaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvaHdtdG0uaFxuQEAgLTExMyw3ICYjNDM7MTEzLDcgQEAgc3RydWN0IGh3X21vZHVsIHtcbiBcdHN0cnVjdFx0c19tYnVmX3Bvb2xcdG1idWZfcG9vbCA7XG4gXHRzdHJ1Y3RcdGh3bV9yXHRyIDtcbiBcbi1cdHVuaW9uIHNfZnBfZGVzY3Igdm9sYXRpbGUgKmRlc2NyX3AgOyAvKiBwb2ludHMgdG8gdGhlIGRlc3JpcHRvciBhcmVhICovXG4mIzQzO1x0dW5pb24gc19mcF9kZXNjciB2b2xhdGlsZSAqZGVzY3JfcCA7IC8qIHBvaW50cyB0byB0aGUgZGVzY3JpcHRvciBhcmVhICovXG4gXG4gXHR1X3Nob3J0IHBhc3NfU01UIDtcdFx0LyogcGFzcyBTTVQgZnJhbWVzICovXG4gXHR1X3Nob3J0IHBhc3NfTlNBIDtcdFx0LyogcGFzcyBhbGwgTlNBIGZyYW1lcyAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3NiYS5oIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvc2JhLmhcbmluZGV4IGYzMDMwMWZjZDAyMmMuLjdmZTk5YzEyZTIwMTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9zYmEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvc2JhLmhcbkBAIC05NCw3ICYjNDM7OTQsNyBAQCBzdHJ1Y3Qgc19zYmEge1xuIFx0bG9uZ1x0XHRtc2dfbWliX292IDtcdFx0LyogQ3VycmVudCBPdmVyaGVhZCBmb3IgdGhpcyBQYXRoKi9cbiBcdGxvbmdcdFx0bXNnX2NhdGVnb3J5IDtcdFx0LyogQ2F0ZWdvcnkgb2YgdGhlIEFsbG9jYXRpb24gKi9cbiBcdHVfbG9uZ1x0XHRtc2dfbWF4X3RfbmVnIDtcdFx0LyogbG9uZ2VzdCBUX05lZyBhY2NlcHRhYmxlICovXG4tXHR1X2xvbmdcdFx0bXNnX21pbl9zZWdfc2l6IDtcdC8qIG1pbmltdW0gc2VnZW1lbnQgc2l6ZSAqL1xuJiM0MztcdHVfbG9uZ1x0XHRtc2dfbWluX3NlZ19zaXogO1x0LyogbWluaW11bSBzZWdtZW50IHNpemUgKi9cbiBcdHN0cnVjdCBzbXRfaGVhZGVyXHQqc20gO1x0XHQvKiBwb2ludHMgdG8gdGhlIHJlYyBtZXNzYWdlICovXG4gXHRzdHJ1Y3QgZmRkaV9hZGRyXHQqbXNnX2FsbG9jX2FkZHIgO1x0LyogQWxsb2NhdGlvbiBBZGRyZXNzICovXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jXG5pbmRleCA5MGU4ZGY2ZDlhODhhLi43NDUyODVkNGQ2ZDJlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcGNtcGxjLmNcbkBAIC0xNiw3ICYjNDM7MTYsNyBAQFxuICovXG4gXG4gLypcbi0gKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uXG4mIzQzOyAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtZW50YXRpb25cbiAgKiBUaGUgZm9sbG93aW5nIGV4dGVybmFsIFNNVCBmdW5jdGlvbnMgYXJlIHJlZmVyZW5jZWQgOlxuICAqXG4gICogXHRcdHF1ZXVlX2V2ZW50KClcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmNcbmluZGV4IDMxNDYyMzY1MGE4NGIuLjU3MDgxMjRmMDVkMmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9ybXQuY1xuQEAgLTE2LDcgJiM0MzsxNiw3IEBAXG4gKi9cbiBcbiAvKlxuLSAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb25cbiYjNDM7ICogSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvblxuICAqIFRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgU01UIGZ1bmN0aW9ucyBhcmUgcmVmZXJlbmNlZCA6XG4gICpcbiAgKiBcdFx0cXVldWVfZXZlbnQoKVxuZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xuaW5kZXggMjYwNDYwZDUwZjU0Yy4uNGI2ZmU5YTQ3M2NiMyAxMDA2NDRcbi0tLSBhL25ldC9sbGMvbGxjX2Nvbm4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2xsYy9sbGNfY29ubi5jXG5AQCAtMTkzLDcgJiM0MzsxOTMsNyBAQCB2b2lkIGxsY19jb25uX3J0bl9wZHUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIH1cbiBcbiAvKipcbi0gKlx0bGxjX2Nvbm5fcmVzZW5kX2lfcGR1X2FzX2NtZCAtIHJlc2VuZCBhbGwgYWxsIHVuYWNrbm93bGVkZ2VkIEkgUERVc1xuJiM0MzsgKlx0bGxjX2Nvbm5fcmVzZW5kX2lfcGR1X2FzX2NtZCAtIHJlc2VuZCBhbGwgdW5hY2tub3dsZWRnZWQgSSBQRFVzXG4gICpcdEBzazogYWN0aXZlIGNvbm5lY3Rpb25cbiAgKlx0QG5yOiBOUlxuICAqXHRAZmlyc3RfcF9iaXQ6IHBfYml0IHZhbHVlIG9mIGZpcnN0IHBkdVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaFxuaW5kZXggM2VlZWVmZmI0MDA1Yi4uNjI5NGU0OWE0NmUwNCAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3hmcm1fcG9saWN5LnNoXG5AQCAtMjQyLDcgJiM0MzsyNDIsNyBAQCBjaGVja19leGNlcHRpb25zKClcbiBcdFx0ZWNobyBcJiMzNDtQQVNTOiBwaW5nIHRvIC4yNTQgYnlwYXNzZWQgaXBzZWMgdHVubmVsICgkbG9ncG9zdGZpeClcJiMzNDtcbiBcdGZpXG4gXG4tXHQjIHBpbmcgdG8gLjI1MyBzaG91bGQgdXNlIHVzZSBpcHNlYyBkdWUgdG8gZGlyZWN0IHBvbGljeSBleGNlcHRpb24uXG4mIzQzO1x0IyBwaW5nIHRvIC4yNTMgc2hvdWxkIHVzZSBpcHNlYyBkdWUgdG8gZGlyZWN0IHBvbGljeSBleGNlcHRpb24uXG4gXHRjaGVja194ZnJtIDEgMjUzXG4gXHRpZiBbICQ/IC1uZSAwIF07IHRoZW5cbiBcdFx0ZWNobyBcJiMzNDtGQUlMOiBleHBlY3RlZCBwaW5nIHRvIC4yNTMgdG8gdXNlIGlwc2VjIHR1bm5lbCAoJGxvZ3Bvc3RmaXgpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDU6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29udGFpbnMgZXhjbHVzaXZlbHkgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgd2l0aGluIGNvbW1lbnRzIGFjcm9zcyB2YXJpb3VzIG5ldHdvcmsgZHJpdmVycywgY29yZSBMTEMgY29kZSwgYW5kIGEgc2VsZnRlc3Qgc2NyaXB0LiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwNGI5Zjk1OTMxZDExNzlhMjhhNTRmMzU3YWM5YmM5Yjg5M2YxNTU4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgOCAwNTo1OTo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuaAppbmRleCBjNTY3YzkyMDYyOGYxLi44ZjAzYmI1NjFkNDQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5oCkBAIC02NTksNyAmIzQzOzY1OSw3IEBAIHZvaWQgYXRsMWNfcG9zdF9waHlfbGlua2NoZyhzdHJ1Y3QgYXRsMWNfaHcgKmh3LCB1MTYgbGlua19zcGVlZCk7CiAvKiBJTlQtdHJpZ2dsZS9TTUIgQ29udHJvbCBSZWdpc3RlciAqLwogI2RlZmluZSBSRUdfU01CX1NUQVRfVElNRVIJCTB4MTVDNAkvKiAydXMgcmVzb2x1dGlvbiAqLwogI2RlZmluZSBTTUJfU1RBVF9USU1FUl9NQVNLCQkweEZGRkZGRgotI2RlZmluZSBSRUdfVElOVF9UUERfVEhSRVNIICAgICAgICAgICAgIDB4MTVDOCAvKiB0cGQgdGggdG8gdHJpZyBpbnRycnVwdCAqLwomIzQzOyNkZWZpbmUgUkVHX1RJTlRfVFBEX1RIUkVTSCAgICAgICAgICAgICAweDE1QzggLyogdHBkIHRoIHRvIHRyaWcgaW50ZXJydXB0ICovCiAKIC8qIE1haWwgYm94ICovCiAjZGVmaW5lIE1CX1JGRFhfUFJPRF9JRFhfTUFTSwkJMHhGRkZGCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmgKaW5kZXggOWZjYWQ3ODNjOTM5YS4uNmIwMDY2ZjQ3ZTllNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaApAQCAtMzgxLDcgJiM0MzszODEsNyBAQCBzdHJ1Y3QgYXRsMWVfcnhfcGFnZSB7CiAJdTgJCSphZGRyOyAgIC8qIHJlY2VpdmUgcmFnZSB2aXJ0dWFsIGFkZHJlc3MgKi8KIAlkbWFfYWRkcl90CXdyaXRlX29mZnNldF9kbWE7ICAvKiB0aGUgRE1BIGFkZHJlc3Mgd2hpY2ggY29udGFpbiB0aGUKIAkJCQkJICAgICAgcmVjZWl2ZSBkYXRhIG9mZnNldCBpbiB0aGUgcGFnZSAqLwotCXUzMgkJKndyaXRlX29mZnNldF9hZGRyOyAvKiB0aGUgdmlydGF1bCBhZGRyZXNzIHdoaWNoIGNvbnRhaW4KJiM0MzsJdTMyCQkqd3JpdGVfb2Zmc2V0X2FkZHI7IC8qIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgd2hpY2ggY29udGFpbgogCQkJCQkgICAgIHRoZSByZWNlaXZlIGRhdGEgb2Zmc2V0IGluIHRoZSBwYWdlICovCiAJdTMyCQlyZWFkX29mZnNldDsgICAgICAgLyogdGhlIG9mZnNldCB3aGVyZSB3ZSBoYXZlIHJlYWQgKi8KIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2h3LmMKaW5kZXggZmE4OWJjMjdmNjJkZi4uMjVkM2U3NDY5MDU4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfaHcuYwpAQCAtMzY5LDcgJiM0MzszNjksNyBAQCBzdGF0aWMgaW50IGF0bDFlX3BoeV9zZXR1cF9hdXRvbmVnX2FkdihzdHJ1Y3QgYXRsMWVfaHcgKmh3KQogICoKICAqIGh3IC0gU3RydWN0IGNvbnRhaW5pbmcgdmFyaWFibGVzIGFjY2Vzc2VkIGJ5IHNoYXJlZCBjb2RlCiAgKgotICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgY29udHJvbCByZWdpc2VyIChmb3IgRjAwMSBidWcpCiYjNDM7ICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgY29udHJvbCByZWdpc3RlciAoZm9yIEYwMDEgYnVnKQogICovCiBpbnQgYXRsMWVfcGh5X2NvbW1pdChzdHJ1Y3QgYXRsMWVfaHcgKmh3KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uYwppbmRleCA0MDI5MDAyODU4MGJhLi5jYzZjMjYyODY4YTU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uYwpAQCAtMjExNyw3ICYjNDM7MjExNyw3IEBAIHN0YXRpYyBpbnQgYXRsMWVfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRlKQogCQkJd29sX2N0cmxfZGF0YSB8PSBXT0xfTUFHSUNfRU4gfCBXT0xfTUFHSUNfUE1FX0VOOwogCiAJCWlmICh3dWZjICZhbXA7IEFUX1dVRkNfTE5LQykgewotCQkvKiBpZiBvcmlnbmFsIGxpbmsgc3RhdHVzIGlzIGxpbmssIGp1c3Qgd2FpdCBmb3IgcmV0cml2ZSBsaW5rICovCiYjNDM7CQkvKiBpZiBvcmlnaW5hbCBsaW5rIHN0YXR1cyBpcyBsaW5rLCBqdXN0IHdhaXQgZm9yIHJldHJpZXZlIGxpbmsgKi8KIAkJCWlmIChtaWlfYm1zcl9kYXRhICZhbXA7IEJNU1JfTFNUQVRVUykgewogCQkJCWZvciAoaSA9IDA7IGkgJmx0OyBBVF9TVVNQRU5EX0xJTktfVElNRU9VVDsgaSYjNDM7JiM0MzspIHsKIAkJCQkJbXNsZWVwKDEwMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDEuYwppbmRleCA5OGE0ZDA4OTI3MGU0Li4xNzlkNzRlOTNlZmRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwxLmMKQEAgLTYyOCw3ICYjNDM7NjI4LDcgQEAgc3RhdGljIHMzMiBhdGwxX3BoeV9sZWF2ZV9wb3dlcl9zYXZpbmcoc3RydWN0IGF0bDFfaHcgKmh3KQogICogUmVzZXRzIHRoZSBQSFkgYW5kIG1ha2UgYWxsIGNvbmZpZyB2YWxpZGF0ZQogICogaHcgLSBTdHJ1Y3QgY29udGFpbmluZyB2YXJpYWJsZXMgYWNjZXNzZWQgYnkgc2hhcmVkIGNvZGUKICAqCi0gKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzZXIgKGZvciBGMDAxIGJ1ZykKJiM0MzsgKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzdGVyIChmb3IgRjAwMSBidWcpCiAgKi8KIHN0YXRpYyBzMzIgYXRsMV9waHlfcmVzZXQoc3RydWN0IGF0bDFfaHcgKmh3KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmMKaW5kZXggNTU2MGQ1Y2MzMTY5Mi4uYzlhY2EyMTllYzljZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jCkBAIC0yNTkxLDcgJiM0MzsyNTkxLDcgQEAgc3RhdGljIHMzMiBhdGwyX3BoeV9zZXR1cF9hdXRvbmVnX2FkdihzdHJ1Y3QgYXRsMl9odyAqaHcpCiAgKgogICogaHcgLSBTdHJ1Y3QgY29udGFpbmluZyB2YXJpYWJsZXMgYWNjZXNzZWQgYnkgc2hhcmVkIGNvZGUKICAqCi0gKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzZXIgKGZvciBGMDAxIGJ1ZykKJiM0MzsgKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzdGVyIChmb3IgRjAwMSBidWcpCiAgKi8KIHN0YXRpYyBzMzIgYXRsMl9waHlfY29tbWl0KHN0cnVjdCBhdGwyX2h3ICpodykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMKaW5kZXggN2VmMWJhYmZlY2E2OS4uZjY1OTVmZGM4ODhkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMKQEAgLTE1NjQsNyAmIzQzOzE1NjQsNyBAQCBzdGF0aWMgaW50IGJjbV9lbmV0X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAKIAlpZiAocHJpdi0mZ3Q7aGFzX3BoeSkgewogCQlpZiAoZWNtZC0mZ3Q7YXV0b25lZyAmYW1wOyZhbXA7IChlY21kLSZndDtyeF9wYXVzZSAhPSBlY21kLSZndDt0eF9wYXVzZSkpIHsKLQkJCS8qIGFzeW1ldHJpYyBwYXVzZSBtb2RlIG5vdCBzdXBwb3J0ZWQsCiYjNDM7CQkJLyogYXN5bW1ldHJpYyBwYXVzZSBtb2RlIG5vdCBzdXBwb3J0ZWQsCiAJCQkgKiBhY3R1YWxseSBwb3NzaWJsZSBidXQgaW50ZWdyYXRlZCBQSFkgaGFzIFJPCiAJCQkgKiBhc3ltX3BhdXNlIGJpdCAqLwogCQkJcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oCmluZGV4IDc4ZjE4MzBmYjNjYjUuLmJhOGY0MmNmNWZiMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oCkBAIC0yNjUsNyAmIzQzOzI2NSw3IEBAIHN0cnVjdCBiY21fZW5ldF9wcml2IHsKIAkvKiBudW1iZXIgb2YgYXZhaWxhYmxlIGRlc2NyaXB0b3IgZm9yIHR4ICovCiAJaW50IHR4X2Rlc2NfY291bnQ7CiAKLQkvKiBuZXh0IHR4IGRlc2NyaXB0b3IgYXZhaWFibGUgKi8KJiM0MzsJLyogbmV4dCB0eCBkZXNjcmlwdG9yIGF2YWlsYWJsZSAqLwogCWludCB0eF9jdXJyX2Rlc2M7CiAKIAkvKiBuZXh0IGRpcnR5IHR4IGRlc2NyaXB0b3IgdG8gcmVjbGFpbSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oCmluZGV4IGEzNDI5NmY5ODlmMTIuLjZmODA3ZTk2ZGJkOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmgKQEAgLTQwMiw3ICYjNDM7NDAyLDcgQEAgc3RydWN0IGJjbV9yc2IgewogI2RlZmluZSBURE1BX0RFU0NfUklOR19CQVNFKGkpCQkoVERNQV9ERVNDX1JJTkdfMDBfQkFTRSAmIzQzOyBcCiAJCQkJCSgoaSkgKiBURE1BX0RFU0NfUklOR19TSVpFKSkKIAotLyogUmluZyBpbmRleGVkIHJlZ2lzdGVyIGFkZHJlc2VzICovCiYjNDM7LyogUmluZyBpbmRleGVkIHJlZ2lzdGVyIGFkZHJlc3NlcyAqLwogI2RlZmluZSBURE1BX0RFU0NfUklOR19IRUFEX1RBSUxfUFRSKGkpCShURE1BX0RFU0NfUklOR19CQVNFKGkpICYjNDM7IFwKIAkJCQkJUklOR19IRUFEX1RBSUxfUFRSKQogI2RlZmluZSBURE1BX0RFU0NfUklOR19DT1VOVChpKQkJKFRETUFfREVTQ19SSU5HX0JBU0UoaSkgJiM0MzsgXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4LmgKaW5kZXggOTU4MGFiODNkMzg3Yy4uMjhlYTRhMzNmMjQ1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oCkBAIC0yODAsNyAmIzQzOzI4MCw3IEBAIGVudW0gewogICogKGRiX21zZ19zeiAxICZsdDsmbHQ7IDcgKiBjaWQgJiM0MzsgMHg0MCBEUE0gb2Zmc2V0KSBpdCBjYW4gY29tZSB1cCB3aXRoIGEgdmFsaWQgbnVtYmVyCiAgKiBXZSBtdXN0IGF2b2lkIGNvbWluZyB1cCB3aXRoIGNpZCA4IGZvciBpc2NzaSBzaW5jZSBhY2NvcmRpbmcgdG8gdGhpcyBtZXRob2QKICAqIHRoZSBkZXNpZ25hdGVkIFVJTyBjaWQgd2lsbCBjb21lIG91dCAwIGFuZCBpdCBoYXMgYSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGF0Ci0gKiBjYXNlIHdoaWNoIGRvZXNuJiMzOTt0IHN1aXQgdXMuIFRoZXJlZm9yZSB3aWxsIHdpbGwgY2llbGluZyB0byBjbG9zZXMgY2lkIHdoaWNoCiYjNDM7ICogY2FzZSB3aGljaCBkb2VzbiYjMzk7dCBzdWl0IHVzLiBUaGVyZWZvcmUgd2lsbCBjaWVsaW5nIHRvIGNsb3NlcyBjaWQgd2hpY2gKICAqIGhhcyBsZWFzdCBzaWduaWdpZmNhbnQgbmliYmxlIDggYW5kIGlmIGl0IGlzIDggd2Ugd2lsbCBtb3ZlIGZvcndhcmQgdG8gMHgxOC4KICAqLwogCkBAIC02NjYsNyAmIzQzOzY2Niw3IEBAIHN0cnVjdCBibngyeF9mYXN0cGF0aCB7CiAJCQkJIE1BWF9UWF9ERVNDX0NOVCAqIE5FWFRfUEFHRV9UWF9ERVNDX0NOVCkKIC8qIG1heCBCRHMgcGVyIHR4IHBhY2tldCB3L28gbmV4dF9wYWdlczoKICAqIFNUQVJUX0JECQktIGRlc2NyaWJlcyBwYWNrZWQKLSAqIFNUQVJUX0JEKHNwbGl0dGVkKQktIGluY2x1ZGVzIHVucGFnZWQgZGF0YSBzZWdtZW50IGZvciBHU08KJiM0MzsgKiBTVEFSVF9CRChzcGxpdCkJLSBpbmNsdWRlcyB1bnBhZ2VkIGRhdGEgc2VnbWVudCBmb3IgR1NPCiAgKiBQQVJTSU5HX0JECQktIGZvciBUU08gYW5kIENTVU0gZGF0YQogICogUEFSU0lOR19CRDIJCS0gZm9yIGVuY2Fwc3VsYXRpb24gZGF0YQogICogRnJhZyBCRHMJCS0gZGVzY3JpYmVzIHBhZ2VzIGZvciBmcmFncwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfZGNiLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuYwppbmRleCA5YWY4MTYzMGM4YTQ0Li4zZGY4YTU5ODg1MjE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuYwpAQCAtMTk4Niw3ICYjNDM7MTk4Niw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2RjYm5sX3NldF9wZ190Y2NmZ190eChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcHJpbywKIAkJcmV0dXJuOwogCiAJLyoqCi0JICogYndfcGN0IGlnbm9yZWQgLQliYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGV2aXNpb24gYmV0d2VlbiB1c2VyCiYjNDM7CSAqIGJ3X3BjdCBpZ25vcmVkIC0JYmFuZC13aWR0aCBwZXJjZW50YWdlIGRpdmlzaW9uIGJldHdlZW4gdXNlcgogCSAqCQkJcHJpb3JpdGllcyB3aXRoaW4gdGhlIHNhbWUgZ3JvdXAgaXMgbm90CiAJICoJCQlzdGFuZGFyZCBhbmQgaGVuY2Ugbm90IHN1cHBvcnRlZAogCSAqCkBAIC0yMDM4LDcgJiM0MzsyMDM4LDcgQEAgc3RhdGljIHZvaWQgYm54MnhfZGNibmxfZ2V0X3BnX3RjY2ZnX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwcmlvLAogCURQKEJOWDJYX01TR19EQ0IsICYjMzQ7cHJpbyA9ICVkXG4mIzM0OywgcHJpbyk7CiAKIAkvKioKLQkgKiBid19wY3QgaWdub3JlZCAtCWJhbmQtd2lkdGggcGVyY2VudGFnZSBkZXZpc2lvbiBiZXR3ZWVuIHVzZXIKJiM0MzsJICogYndfcGN0IGlnbm9yZWQgLQliYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGl2aXNpb24gYmV0d2VlbiB1c2VyCiAJICoJCQlwcmlvcml0aWVzIHdpdGhpbiB0aGUgc2FtZSBncm91cCBpcyBub3QKIAkgKgkJCXN0YW5kYXJkIGFuZCBoZW5jZSBub3Qgc3VwcG9ydGVkCiAJICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgKaW5kZXggNjExZWZlZTc1ODM0MC4uNTI5N2FiNTc4YTZmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmgKQEAgLTIzNDIsNyAmIzQzOzIzNDIsNyBAQCBzdHJ1Y3Qgc2htZW0yX3JlZ2lvbiB7CiAJCXUzMiBvZW1faTJjX2RhdGFfYWRkcjsKIAl9OwogCi0JLyogOSBlbnRpcmVzIGZvciB0aGUgQzJTIFBDUCBtYXAgZm9yIGVhY2ggaW5uZXIgVkxBTiBQQ1AgJiM0MzsgMSBkZWZhdWx0ICovCiYjNDM7CS8qIDkgZW50cmllcyBmb3IgdGhlIEMyUyBQQ1AgbWFwIGZvciBlYWNoIGlubmVyIFZMQU4gUENQICYjNDM7IDEgZGVmYXVsdCAqLwogCS8qIEZvciBQQ1AgdmFsdWVzIDAtMyB1c2UgdGhlIG1hcCBsb3dlciAqLwogCS8qIDB4RkYwMDAwMDAgLSBQQ1AgMCwgMHgwMEZGMDAwMCAtIFBDUCAxLAogCSAqIDB4MDAwMEZGMDAgLSBQQ1AgMiwgMHgwMDAwMDBGRiBQQ1AgMwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmgKaW5kZXggZmM3ZmNlNjQyNjY2Yy4uYjUwMDRhYWIxMjRkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9pbml0X29wcy5oCkBAIC01ODIsNyAmIzQzOzU4Miw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2luaXRfcHhwX2FyYihzdHJ1Y3QgYm54MnggKmJwLCBpbnQgcl9vcmRlciwKIAkJUkVHX1dSKGJwLCBQWFAyX1JFR19XUl9DRFVfTVBTLCB2YWwpOwogCX0KIAotCS8qIFZhbGlkYXRlIG51bWJlciBvZiB0YWdzIHN1cHBvdGVkIGJ5IGRldmljZSAqLwomIzQzOwkvKiBWYWxpZGF0ZSBudW1iZXIgb2YgdGFncyBzdXBwb3J0ZWQgYnkgZGV2aWNlICovCiAjZGVmaW5lIFBDSUVfUkVHX1BDSUVSX1RMX0hEUl9GQ19TVAkJMHgyOTgwCiAJdmFsID0gUkVHX1JEKGJwLCBQQ0lFX1JFR19QQ0lFUl9UTF9IRFJfRkNfU1QpOwogCXZhbCAmYW1wOz0gMHhGRjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuYwppbmRleCBlYTMxMDA1N2ZlM2FmLi44NGQwMDJiMzE5MjBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbGluay5jCkBAIC0yNTM2LDcgJiM0MzsyNTM2LDcgQEAgc3RhdGljIGludCBibngyeF9wYmZfdXBkYXRlKHN0cnVjdCBsaW5rX3BhcmFtcyAqcGFyYW1zLCB1MzIgZmxvd19jdHJsLAogfQogCiAvKioKLSAqIGJueDJ4X2dldF9lbWFjX2Jhc2UgLSByZXRyaXZlIGVtYWMgYmFzZSBhZGRyZXNzCiYjNDM7ICogYm54MnhfZ2V0X2VtYWNfYmFzZSAtIHJldHJpZXZlIGVtYWMgYmFzZSBhZGRyZXNzCiAgKgogICogQGJwOgkJCWRyaXZlciBoYW5kbGUKICAqIEBtZGNfbWRpb19hY2Nlc3M6CWFjY2VzcyB0eXBlCkBAIC0zNTkzLDcgJiM0MzszNTkzLDcgQEAgc3RhdGljIHU4IGJueDJ4X2V4dF9waHlfcmVzb2x2ZV9mYyhzdHJ1Y3QgYm54MnhfcGh5ICpwaHksCiAJdTggcmV0ID0gMDsKIAl2YXJzLSZndDtmbG93X2N0cmwgPSBCTlgyWF9GTE9XX0NUUkxfTk9ORTsKIAlpZiAocGh5LSZndDtyZXFfZmxvd19jdHJsICE9IEJOWDJYX0ZMT1dfQ1RSTF9BVVRPKSB7Ci0JCS8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xlZCBvZiBMRC9MUCBpbiBBTiAqLwomIzQzOwkJLyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGxlZCBvZiBMRC9MUCBpbiBBTiAqLwogCQlpZiAocGh5LSZndDtyZXFfbGluZV9zcGVlZCA9PSBTUEVFRF9BVVRPX05FRykKIAkJCWJueDJ4X2V4dF9waHlfdXBkYXRlX2Fkdl9mYyhwaHksIHBhcmFtcywgdmFycyk7CiAJCS8qIEJ1dCBzZXQgdGhlIGZsb3ctY29udHJvbCByZXN1bHQgYXMgdGhlIHJlcXVlc3RlZCBvbmUgKi8KQEAgLTM3NDMsNyAmIzQzOzM3NDMsNyBAQCBzdGF0aWMgdm9pZCBibngyeF93YXJwY29yZV9lbmFibGVfQU5fS1Ioc3RydWN0IGJueDJ4X3BoeSAqcGh5LAogCQl7TURJT19XQ19ERVZBRCwgTURJT19XQ19SRUdfQ0w3Ml9VU0VSQjBfQ0w3Ml9UWF9GSVJfVEFQLCAwfSwKIAl9OwogCURQKE5FVElGX01TR19MSU5LLCAmIzM0O0VuYWJsZSBBdXRvIE5lZ290aWF0aW9uIGZvciBLUlxuJiMzNDspOwotCS8qIFNldCB0byBkZWZhdWx0IHJlZ2lzdGVycyB0aGF0IG1heSBiZSBvdmVycmlkZW4gYnkgMTBHIGZvcmNlICovCiYjNDM7CS8qIFNldCB0byBkZWZhdWx0IHJlZ2lzdGVycyB0aGF0IG1heSBiZSBvdmVycmlkZGVuIGJ5IDEwRyBmb3JjZSAqLwogCWZvciAoaSA9IDA7IGkgJmx0OyBBUlJBWV9TSVpFKHJlZ19zZXQpOyBpJiM0MzsmIzQzOykKIAkJYm54MnhfY2w0NV93cml0ZShicCwgcGh5LCByZWdfc2V0W2ldLmRldmFkLCByZWdfc2V0W2ldLnJlZywKIAkJCQkgcmVnX3NldFtpXS52YWwpOwpAQCAtNTQyNSw3ICYjNDM7NTQyNSw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2Zsb3dfY3RybF9yZXNvbHZlKHN0cnVjdCBibngyeF9waHkgKnBoeSwKIAogCS8qIFJlc29sdmUgZnJvbSBncF9zdGF0dXMgaW4gY2FzZSBvZiBBTiBjb21wbGV0ZSBhbmQgbm90IHNnbWlpICovCiAJaWYgKHBoeS0mZ3Q7cmVxX2Zsb3dfY3RybCAhPSBCTlgyWF9GTE9XX0NUUkxfQVVUTykgewotCQkvKiBVcGRhdGUgdGhlIGFkdmVydGlzZWQgZmxvdy1jb250cm9sZWQgb2YgTEQvTFAgaW4gQU4gKi8KJiM0MzsJCS8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xsZWQgb2YgTEQvTFAgaW4gQU4gKi8KIAkJaWYgKHBoeS0mZ3Q7cmVxX2xpbmVfc3BlZWQgPT0gU1BFRURfQVVUT19ORUcpCiAJCQlibngyeF91cGRhdGVfYWR2X2ZjKHBoeSwgcGFyYW1zLCB2YXJzLCBncF9zdGF0dXMpOwogCQkvKiBCdXQgc2V0IHRoZSBmbG93LWNvbnRyb2wgcmVzdWx0IGFzIHRoZSByZXF1ZXN0ZWQgb25lICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMKaW5kZXggMzllYjZhYjVmODA1OC4uMjc3YzdiZDljNmU3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYwpAQCAtMTI2NjksNyAmIzQzOzEyNjY5LDcgQEAgc3RhdGljIGludCBibngyeF9zZXRfbWNfbGlzdChzdHJ1Y3QgYm54MnggKmJwKQogCQlpZiAocmMpCiAJCQlyZXR1cm4gcmM7CiAKLQkJLyogT3ZlcnJpZGUgdGhlIGN1cmVudGx5IGNvbmZpZ3VyZWQgc2V0IG9mIG1jIGZpbHRlcnMgKi8KJiM0MzsJCS8qIE92ZXJyaWRlIHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCBzZXQgb2YgbWMgZmlsdGVycyAqLwogCQlyYyA9IGJueDJ4X2NvbmZpZ19tY2FzdChicCwgJmFtcDtycGFyYW0sCiAJCQkJCUJOWDJYX01DQVNUX0NNRF9TRVQpOwogCQlpZiAocmMgJmx0OyAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaAppbmRleCBhMDE4ZjI1MWQxOTg2Li4zMDk0M2YzNDcxNjQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaApAQCAtMjIzNiw3ICYjNDM7MjIzNiw3IEBAIGV4dGVybiBjb25zdCB1MzIgZG1hZV9yZWdfZ29fY1tdOwogLyogW1JXIDFdIE91dHB1dCBlbmFibGUgZm9yIFRYIFBBVVNFIHNpZ25hbCB0byB0aGUgTUFDLiAqLwogI2RlZmluZSBOSUdfUkVHX1AwX01BQ19QQVVTRV9PVVRfRU4JCQkJIDB4MTg1YjQKIC8qIFtSVyAzMl0gRWlnaHQgNC1iaXQgY29uZmlndXJhdGlvbnMgZm9yIHNwZWNpZnlpbmcgd2hpY2ggQ09TICgwLTE1IGZvcgotICogZnV0dXJlIGV4cGFuc2lvbikgZWFjaCBwcmlvcnR5IGlzIHRvIGJlIG1hcHBlZCB0by4gQml0cyAzOjAgc3BlY2lmeSB0aGUKJiM0MzsgKiBmdXR1cmUgZXhwYW5zaW9uKSBlYWNoIHByaW9yaXR5IGlzIHRvIGJlIG1hcHBlZCB0by4gQml0cyAzOjAgc3BlY2lmeSB0aGUKICAqIENPUyBmb3IgcHJpb3JpdHkgMC4gQml0cyAzMToyOCBzcGVjaWZ5IHRoZSBDT1MgZm9yIHByaW9yaXR5IDcuIFRoZSAzLWJpdAogICogcHJpb3JpdHkgZmllbGQgaXMgZXh0cmFjdGVkIGZyb20gdGhlIG91dGVyLW1vc3QgVkxBTiBpbiByZWNlaXZlIHBhY2tldC4KICAqIE9ubHkgQ09TIDAgYW5kIENPUyAxIGFyZSBzdXBwb3J0ZWQgaW4gRTIuICovCkBAIC0yNDM0LDcgJiM0MzsyNDM0LDcgQEAgZXh0ZXJuIGNvbnN0IHUzMiBkbWFlX3JlZ19nb19jW107CiAvKiBbUlcgMV0gT3V0cHV0IGVuYWJsZSBmb3IgVFggUEFVU0Ugc2lnbmFsIHRvIHRoZSBNQUMuICovCiAjZGVmaW5lIE5JR19SRUdfUDFfTUFDX1BBVVNFX09VVF9FTgkJCQkgMHgxODVjOAogLyogW1JXIDMyXSBFaWdodCA0LWJpdCBjb25maWd1cmF0aW9ucyBmb3Igc3BlY2lmeWluZyB3aGljaCBDT1MgKDAtMTUgZm9yCi0gKiBmdXR1cmUgZXhwYW5zaW9uKSBlYWNoIHByaW9ydHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZQomIzQzOyAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3JpdHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZQogICogQ09TIGZvciBwcmlvcml0eSAwLiBCaXRzIDMxOjI4IHNwZWNpZnkgdGhlIENPUyBmb3IgcHJpb3JpdHkgNy4gVGhlIDMtYml0CiAgKiBwcmlvcml0eSBmaWVsZCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgb3V0ZXItbW9zdCBWTEFOIGluIHJlY2VpdmUgcGFja2V0LgogICogT25seSBDT1MgMCBhbmQgQ09TIDEgYXJlIHN1cHBvcnRlZCBpbiBFMi4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY242Nnh4X2RldmljZS5jCmluZGV4IDkzZmNjZmVjMjg4ZDQuLmQzZWJiYjQwNTc5ZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuNjZ4eF9kZXZpY2UuYwpAQCAtMTc3LDcgJiM0MzsxNzcsNyBAQCBzdGF0aWMgdm9pZCBsaW9fY242Nnh4X3NldHVwX3BrdF9jdGxfcmVncyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KQogCiAJLyogNjZYWCBTUEVDSUZJQyAqLwogCWlmIChDRkdfR0VUX09RX01BWF9RKGNuNnh4eC0mZ3Q7Y29uZikgJmx0Oz0gNCkKLQkJLyogRGlzYWJsZSBSSU5HX0VOIGlmIG9ubHkgdXB0byA0IHJpbmdzIGFyZSB1c2VkLiAqLwomIzQzOwkJLyogRGlzYWJsZSBSSU5HX0VOIGlmIG9ubHkgdXAgdG8gNCByaW5ncyBhcmUgdXNlZC4gKi8KIAkJcGt0Y3RsICZhbXA7PSB+KDEgJmx0OyZsdDsgNCk7CiAJZWxzZQogCQlwa3RjdGwgfD0gKDEgJmx0OyZsdDsgNCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jCmluZGV4IDkzYjA2ZDU5OWVlZDYuLmJlZDQ1MGJmYWQzODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jCkBAIC01NjUsNyAmIzQzOzU2NSw3IEBAIHN0YXRpYyBpbnQgb2N0ZW9uX3NldHVwX2Ryb3Eoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgaW50IHFfbm8sIGludCBudW1fZGVzY3MsCiB9CiAKIC8qKgotICogbGlxdWlkaW9fcHVzaF9wYWNrZXQgLSBSb3V0aW5lIHRvIHB1c2ggcGFja2V0cyBhcnJpdmluZyBvbiBPY3Rlb24gaW50ZXJmYWNlIHVwdG8gbmV0d29yayBsYXllci4KJiM0MzsgKiBsaXF1aWRpb19wdXNoX3BhY2tldCAtIFJvdXRpbmUgdG8gcHVzaCBwYWNrZXRzIGFycml2aW5nIG9uIE9jdGVvbiBpbnRlcmZhY2UgdXAgdG8gbmV0d29yayBsYXllci4KICAqIEBvY3Rlb25faWQ6b2N0ZW9uIGRldmljZSBpZC4KICAqIEBza2J1ZmY6ICAgc2tidWZmIHN0cnVjdCB0byBiZSBwYXNzZWQgdG8gbmV0d29yayBsYXllci4KICAqIEBsZW46ICAgICAgc2l6ZSBvZiB0b3RhbCBkYXRhIHJlY2VpdmVkLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25maWcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uZmlnLmgKaW5kZXggMjRjMjEyMDAxMjEyMS4uZDJkNjRlZGFmM2JmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25maWcuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbmZpZy5oCkBAIC0yNTQsNyAmIzQzOzI1NCw3IEBAIHN0cnVjdCBvY3Rlb25fb3FfY29uZmlnIHsKIAl1NjQgcGt0c19wZXJfaW50cjoxNjsKIAogCS8qKiBJbnRlcnJ1cHQgQ29hbGVzY2luZyAoVGltZSBJbnRlcnZhbCkuIE9jdGVvbiB3aWxsIGludGVycnVwdCB0aGUKLQkgKiAgaG9zdCBpZiBhdGxlYXN0IG9uZSBwYWNrZXQgd2FzIHNlbnQgaW4gdGhlIHRpbWUgaW50ZXJ2YWwgc3BlY2lmaWVkCiYjNDM7CSAqICBob3N0IGlmIGF0IGxlYXN0IG9uZSBwYWNrZXQgd2FzIHNlbnQgaW4gdGhlIHRpbWUgaW50ZXJ2YWwgc3BlY2lmaWVkCiAJICogIGJ5IHRoaXMgZmllbGQuIFRoZSBkcml2ZXIgdXNlcyB0aW1lIGludGVydmFsIGludGVycnVwdCBjb2FsZXNjaW5nCiAJICogIGJ5IGRlZmF1bHQuIFRoZSB0aW1lIGlzIHNwZWNpZmllZCBpbiBtaWNyb3NlY29uZHMuCiAJICovCkBAIC0yOTYsNyAmIzQzOzI5Niw3IEBAIHN0cnVjdCBvY3Rlb25fb3FfY29uZmlnIHsKIAl1NjQgb3FfaW50cl9wa3Q6MTY7CiAKIAkvKiogSW50ZXJydXB0IENvYWxlc2NpbmcgKFRpbWUgSW50ZXJ2YWwpLiBPY3Rlb24gd2lsbCBpbnRlcnJ1cHQgdGhlCi0JICogIGhvc3QgaWYgYXRsZWFzdCBvbmUgcGFja2V0IHdhcyBzZW50IGluIHRoZSB0aW1lIGludGVydmFsIHNwZWNpZmllZAomIzQzOwkgKiAgaG9zdCBpZiBhdCBsZWFzdCBvbmUgcGFja2V0IHdhcyBzZW50IGluIHRoZSB0aW1lIGludGVydmFsIHNwZWNpZmllZAogCSAqICBieSB0aGlzIGZpZWxkLiBUaGUgZHJpdmVyIHVzZXMgdGltZSBpbnRlcnZhbCBpbnRlcnJ1cHQgY29hbGVzY2luZwogCSAqICBieSBkZWZhdWx0LiAgVGhlIHRpbWUgaXMgc3BlY2lmaWVkIGluIG1pY3Jvc2Vjb25kcy4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaAppbmRleCBhMDRmMzZhMGUxYTA4Li5mZGQ3ZDNhNzdhMmRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2lxLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9pcS5oCkBAIC03MCw3ICYjNDM7NzAsNyBAQCBzdHJ1Y3Qgb2N0X2lxX3N0YXRzIHsKIAogLyoqIFRoZSBpbnN0cnVjdGlvbiAoaW5wdXQpIHF1ZXVlLgogICogIFRoZSBpbnB1dCBxdWV1ZSBpcyB1c2VkIHRvIHBvc3QgcmF3IChpbnN0cnVjdGlvbikgbW9kZSBkYXRhIG9yIHBhY2tldAotICogIGRhdGEgdG8gT2N0ZW9uIGRldmljZSBmcm9tIHRoZSBob3N0LiBFYWNoIGlucHV0IHF1ZXVlICh1cHRvIDQpIGZvcgomIzQzOyAqICBkYXRhIHRvIE9jdGVvbiBkZXZpY2UgZnJvbSB0aGUgaG9zdC4gRWFjaCBpbnB1dCBxdWV1ZSAodXAgdG8gNCkgZm9yCiAgKiAgYSBPY3Rlb24gZGV2aWNlIGhhcyBvbmUgc3VjaCBzdHJ1Y3R1cmUgdG8gcmVwcmVzZW50IGl0LgogICovCiBzdHJ1Y3Qgb2N0ZW9uX2luc3RyX3F1ZXVlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWluLmgKaW5kZXggOTUzZWRmMGM3MDk2Yy4uZDJhNTI2NzNjYWM1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWluLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWluLmgKQEAgLTE2Niw3ICYjNDM7MTY2LDcgQEAgc3RhdGljIGlubGluZSBpbnQgb2N0ZW9uX21hcF9wY2lfYmFyeChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LAogICogZXJybm8gLUVJTlRSOiB1c2VyIGFib3J0IHRoZSBjb21tYW5kLgogICogZXJybm8gLUVUSU1FOiB1c2VyIHNwZWZpZmllZCB0aW1lb3V0IHZhbHVlIGhhcyBiZWVuIGV4cGlyZWQuCiAgKiBlcnJubyAtRUJVU1k6IHRoZSByZXNwb25zZSBvZiB0aGUgcmVxdWVzdCBkb2VzIG5vdCByZXR1cm4gaW4KLSAqICAgICAgICAgICAgICAgcmVzb25hYmxlIHRpbWUgKExJT19TQ19NQVhfVE1PX01TKS4KJiM0MzsgKiAgICAgICAgICAgICAgIHJlYXNvbmFibGUgdGltZSAoTElPX1NDX01BWF9UTU9fTVMpLgogICogICAgICAgICAgICAgICB0aGUgc2Mgd2xsIGJlIG1vdmUgdG8gem9tYmllIHJlc3BvbnNlIGxpc3QgYnkKICAqICAgICAgICAgICAgICAgbGlvX3Byb2Nlc3Nfb3JkZXJlZF9saXN0KCkKICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25pYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uaWMuaAppbmRleCBjMTM5ZmM0MjM3NjRlLi44MzQxZmFhYTBjMjQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25pYy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmljLmgKQEAgLTI3Nyw3ICYjNDM7Mjc3LDcgQEAgaW50IG9jdG5ldF9zZW5kX25pY19kYXRhX3BrdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LAogCiAvKiogU2VuZCBhIE5JQyBjb250cm9sIHBhY2tldCB0byB0aGUgZGV2aWNlCiAgKiBAcGFyYW0gb2N0IC0gb2N0ZW9uIGRldmljZSBwb2ludGVyCi0gKiBAcGFyYW0gbmN0cmwgLSBjb250cm9sIHN0cnVjdHVyZSB3aXRoIGNvbW1hbmQsIHRpbW91dCwgYW5kIGNhbGxiYWNrIGluZm8KJiM0MzsgKiBAcGFyYW0gbmN0cmwgLSBjb250cm9sIHN0cnVjdHVyZSB3aXRoIGNvbW1hbmQsIHRpbWVvdXQsIGFuZCBjYWxsYmFjayBpbmZvCiAgKiBAcmV0dXJucyBJUV9GQUlMRUQgaWYgaXQgZmFpbGVkIHRvIGFkZCB0byB0aGUgaW5wdXQgcXVldWUuIElRX1NUT1AgaWYgdGhlCiAgKiBxdWV1ZSBzaG91bGQgYmUgc3RvcHBlZCwgYW5kIElRX1NFTkRfT0sgaWYgaXQgc2VudCBva2F5LgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmMKaW5kZXggZDdjZmIyMGVlYTAwYy4uYTk4M2U3Zjc5NDYxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9yZXF1ZXN0X21hbmFnZXIuYwpAQCAtNDAsNyAmIzQzOzQwLDcgQEAgc3RhdGljIHZvaWQgIF9fY2hlY2tfZGJfdGltZW91dChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LCB1NjQgaXFfbm8pOwogCiBzdGF0aWMgdm9pZCAoKnJlcXR5cGVfZnJlZV9mbltNQVhfT0NURU9OX0RFVklDRVNdW1JFUVRZUEVfTEFTVCAmIzQzOyAxXSkgKHZvaWQgKik7CiAKLS8qIERlZmluZSB0aGlzIHRvIHJldHVybiB0aGUgcmVxdWVzdCBzdGF0dXMgY29tYXB0aWJsZSB0byBvbGQgY29kZSAqLwomIzQzOy8qIERlZmluZSB0aGlzIHRvIHJldHVybiB0aGUgcmVxdWVzdCBzdGF0dXMgY29tcGF0aWJsZSB0byBvbGQgY29kZSAqLwogLyojZGVmaW5lIE9DVEVPTl9VU0VfT0xEX1JFUV9TVEFUVVMqLwogCiAvKiBSZXR1cm4gMCBvbiBzdWNjZXNzLCAxIG9uIGZhaWx1cmUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmgKaW5kZXggMDkwZDZiODM5ODJhMi4uYmIzZjRmYTZiOTk1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmgKQEAgLTk3LDcgJiM0Mzs5Nyw3IEBACiAgKiBUaGlzIHZhbHVlIGVuc3VyZXMgdGhhdCBvbmNlIGEgcGFja2V0IGhhcyBiZWVuICYjMzQ7YWNjZXB0ZWQmIzM0OwogICogZm9yIHJlY2VwdGlvbiBpdCB3aWxsIG5vdCBnZXQgZHJvcHBlZCBkdWUgdG8gbm9uLWF2YWlsYWJpbGl0eQogICogb2YgQ1EgZGVzY3JpcHRvci4gQW4gZXJyYXRhIGluIEhXIG1hbmRhdGVzIHRoaXMgdmFsdWUgdG8gYmUKLSAqIGF0bGVhc3QgMHgxMDAuCiYjNDM7ICogYXQgbGVhc3QgMHgxMDAuCiAgKi8KICNkZWZpbmUgTklDUEZfQ1FNX01JTl9EUk9QX0xFVkVMICAgICAgIDB4MTAwCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jCmluZGV4IDBlYzY1ZWM2MzRkZjUuLjA4NmYzMmI2MTU4MGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uYwpAQCAtNTk1LDcgJiM0Mzs1OTUsNyBAQCBzdGF0aWMgdm9pZCBuaWNfY29uZmlnX3JzcyhzdHJ1Y3QgbmljcGYgKm5pYywgc3RydWN0IHJzc19jZmdfbXNnICpjZmcpCiAJbmljX3JlZ193cml0ZShuaWMsIGlkeF9hZGRyIHwgKGNwaV9iYXNlICZsdDsmbHQ7IDMpLCBjcGlfY2ZnKTsKIH0KIAotLyogNCBsZXZlbCB0cmFuc21pdCBzaWRlIHNjaGVkdWxlciBjb25maWd1dGF0aW9uCiYjNDM7LyogNCBsZXZlbCB0cmFuc21pdCBzaWRlIHNjaGVkdWxlciBjb25maWd1cmF0aW9uCiAgKiBmb3IgVE5TIGJ5cGFzcyBtb2RlCiAgKgogICogU2FtcGxlIGNvbmZpZ3VyYXRpb24gZm9yIFNRMCBvbiA4OHh4CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguYwppbmRleCBmMzhhMTBjNzk5MDdmLi5mYTUyZTA5OTQwOWM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmMKQEAgLTM3Myw3ICYjNDM7MzczLDcgQEAgc3RhdGljIHZvaWQgZGVfcnhfZXJyX2FjY3QgKHN0cnVjdCBkZV9wcml2YXRlICpkZSwgdW5zaWduZWQgcnhfdGFpbCwKIAkJICByeF90YWlsLCBzdGF0dXMsIGxlbik7CiAKIAlpZiAoKHN0YXR1cyAmYW1wOyAweDM4MDAwMzAwKSAhPSAweDAzMDApIHsKLQkJLyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi8KJiM0MzsJCS8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovCiAJCWlmICgoc3RhdHVzICZhbXA7IDB4ZmZmZikgIT0gMHg3ZmZmKSB7CiAJCQluZXRpZl93YXJuKGRlLCByeF9lcnIsIGRlLSZndDtkZXYsCiAJCQkJICAgJiMzNDtPdmVyc2l6ZWQgRXRoZXJuZXQgZnJhbWUgc3Bhbm5lZCBtdWx0aXBsZSBidWZmZXJzLCBzdGF0dXMgJTA4eCFcbiYjMzQ7LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2ludGVycnVwdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2ludGVycnVwdC5jCmluZGV4IDBhMTJjYjliM2JhNzguLjhjMDI3NzFiMjhlNGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvaW50ZXJydXB0LmMKQEAgLTE3Nyw3ICYjNDM7MTc3LDcgQEAgaW50IHR1bGlwX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQogCQkJICAgcGt0X2xlbiAmZ3Q7IDE1MTgpIHsKIAkJCSAgICAgICBpZiAoKHN0YXR1cyAmYW1wOyAoUnhMZW5ndGhPdmVyMjA0NyB8CiAJCQkJCSAgICAgIFJ4V2hvbGVQa3QpKSAhPSBSeFdob2xlUGt0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluZ29yZSBlYXJsaWVyIGJ1ZmZlcnMuICovCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZ25vcmUgZWFybGllciBidWZmZXJzLiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzdGF0dXMgJmFtcDsgMHhmZmZmKSAhPSAweDdmZmYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR1bGlwX2RlYnVnICZndDsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfd2FybigmYW1wO2Rldi0mZ3Q7ZGV2LApAQCAtNDA4LDcgJiM0Mzs0MDgsNyBAQCBzdGF0aWMgaW50IHR1bGlwX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCSAgICBwa3RfbGVuICZndDsgMTUxOCkgewogCQkJaWYgKChzdGF0dXMgJmFtcDsgKFJ4TGVuZ3RoT3ZlcjIwNDcgfAogCQkJICAgICBSeFdob2xlUGt0KSkgICAgICAgICAhPSBSeFdob2xlUGt0KSB7Ci0JCQkJLyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi8KJiM0MzsJCQkJLyogSWdub3JlIGVhcmxpZXIgYnVmZmVycy4gKi8KIAkJCQlpZiAoKHN0YXR1cyAmYW1wOyAweGZmZmYpICE9IDB4N2ZmZikgewogCQkJCQlpZiAodHVsaXBfZGVidWcgJmd0OyAxKQogCQkJCQkJbmV0ZGV2X3dhcm4oZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL21lZGlhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuYwppbmRleCA1NWQ2ZmM5OWY0MGI2Li4wYzk2OTRkMmIzOGFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuYwpAQCAtMjQsNyAmIzQzOzI0LDcgQEAKIAogLyogUmVhZCBhbmQgd3JpdGUgdGhlIE1JSSByZWdpc3RlcnMgdXNpbmcgc29mdHdhcmUtZ2VuZXJhdGVkIHNlcmlhbAogICAgTURJTyBwcm90b2NvbC4gIEl0IGlzIGp1c3QgZGlmZmVyZW50IGVub3VnaCBmcm9tIHRoZSBFRVBST00gcHJvdG9jb2wKLSAgIHRvIG5vdCBzaGFyZSBjb2RlLiAgVGhlIG1heGl1bSBkYXRhIGNsb2NrIHJhdGUgaXMgMi41IE1oei4gKi8KJiM0MzsgICB0byBub3Qgc2hhcmUgY29kZS4gIFRoZSBtYXhpbXVtIGRhdGEgY2xvY2sgcmF0ZSBpcyAyLjUgTWh6LiAqLwogI2RlZmluZSBNRElPX1NISUZUX0NMSwkJMHgxMDAwMAogI2RlZmluZSBNRElPX0RBVEFfV1JJVEUwCTB4MDAwMDAKICNkZWZpbmUgTURJT19EQVRBX1dSSVRFMQkweDIwMDAwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvdHVsaXAuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oCmluZGV4IDVlMDEwZTFmYTZmNzkuLmUzOWU1Yzc4ZDRjY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oCkBAIC0yNTAsNyAmIzQzOzI1MCw3IEBAIGVudW0gdDIxMTQzX2NzcjZfYml0cyB7CiAJY3NyNl90dG0gPSAoMSZsdDsmbHQ7MjIpLCAgLyogVHJhbnNtaXQgVGhyZXNob2xkIE1vZGUsIHNldCBmb3IgMTBiYXNlVCwgMCBmb3IgMTAwQmFzZVRYICovCiAJY3NyNl9zZiA9ICgxJmx0OyZsdDsyMSksICAgLyogU3RvcmUgYW5kIGZvcndhcmQuIElmIHNldCBpZ25vcmVzIFRSIGJpdHMgKi8KIAljc3I2X2hiZCA9ICgxJmx0OyZsdDsxOSksICAvKiBIZWFydCBiZWF0IGRpc2FibGUuIERpc2FibGVzIFNRRSBmdW5jdGlvbiBpbiAxMGJhc2VUICovCi0JY3NyNl9wcyA9ICgxJmx0OyZsdDsxOCksICAgLyogUG9ydCBTZWxlY3QuIDAgKGRlZnVhbHQpID0gMTBiYXNlVCwgMSA9IDEwMGJhc2VUWDogY2FuJiMzOTt0IGJlIHNldCAqLwomIzQzOwljc3I2X3BzID0gKDEmbHQ7Jmx0OzE4KSwgICAvKiBQb3J0IFNlbGVjdC4gMCAoZGVmYXVsdCkgPSAxMGJhc2VULCAxID0gMTAwYmFzZVRYOiBjYW4mIzM5O3QgYmUgc2V0ICovCiAJY3NyNl9jYSA9ICgxJmx0OyZsdDsxNyksICAgLyogQ29sbGlzaW9uIE9mZnNldCBFbmFibGUuIElmIHNldCB1c2VzIHNwZWNpYWwgYWxnb3JpdGhtIGluIGxvdyBjb2xsaXNpb24gc2l0dWF0aW9ucyAqLwogCWNzcjZfdHJoID0gKDEmbHQ7Jmx0OzE1KSwgIC8qIFRyYW5zbWl0IFRocmVzaG9sZCBoaWdoIGJpdCAqLwogCWNzcjZfdHJsID0gKDEmbHQ7Jmx0OzE0KSwgIC8qIFRyYW5zbWl0IFRocmVzaG9sZCBsb3cgYml0ICovCkBAIC0yNzQsNyAmIzQzOzI3NCw3IEBAIGVudW0gdDIxMTQzX2NzcjZfYml0cyB7CiAJY3NyNl9vbV9pbnRfbG9vcCA9ICgxJmx0OyZsdDsxMCksIC8qIGludGVybmFsIChGSUZPKSBsb29wYmFjayBmbGFnICovCiAJY3NyNl9vbV9leHRfbG9vcCA9ICgxJmx0OyZsdDsxMSksIC8qIGV4dGVybmFsIChQTUQpIGxvb3BiYWNrIGZsYWcgKi8KIAkvKiBzZXQgYm90aCBhbmQgeW91IGdldCAoUEhZKSBsb29wYmFjayAqLwotCWNzcjZfZmQgPSAoMSZsdDsmbHQ7OSksICAgIC8qIEZ1bGwgZHVwbGV4IG1vZGUsIGRpc2FibGVzIGhlYXJiZWF0LCBubyBsb29wYmFjayAqLwomIzQzOwljc3I2X2ZkID0gKDEmbHQ7Jmx0OzkpLCAgICAvKiBGdWxsIGR1cGxleCBtb2RlLCBkaXNhYmxlcyBoZWFydGJlYXQsIG5vIGxvb3BiYWNrICovCiAJY3NyNl9wbSA9ICgxJmx0OyZsdDs3KSwgICAgLyogUGFzcyBBbGwgTXVsdGljYXN0ICovCiAJY3NyNl9wciA9ICgxJmx0OyZsdDs2KSwgICAgLyogUHJvbWlzY3VvdXMgbW9kZSAqLwogCWNzcjZfc2IgPSAoMSZsdDsmbHQ7NSksICAgIC8qIFN0YXJ0KDEpL1N0b3AoMCkgYmFja29mZiBjb3VudGVyICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvd2luYm9uZC04NDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jCmluZGV4IGE1NTgxZjFkMDE0MTcuLmJlOTE5OWY1NWE4YTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jCkBAIC0xMTg4LDcgJiM0MzsxMTg4LDcgQEAgc3RhdGljIGludCBuZXRkZXZfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJCWJyZWFrOwogCQlpZiAoKHN0YXR1cyAmYW1wOyAweDM4MDA4MzAwKSAhPSAweDAzMDApIHsKIAkJCWlmICgoc3RhdHVzICZhbXA7IDB4MzgwMDAzMDApICE9IDB4MDMwMCkgewotCQkJCS8qIEluZ29yZSBlYXJsaWVyIGJ1ZmZlcnMuICovCiYjNDM7CQkJCS8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovCiAJCQkJaWYgKChzdGF0dXMgJmFtcDsgMHhmZmZmKSAhPSAweDdmZmYpIHsKIAkJCQkJZGV2X3dhcm4oJmFtcDtkZXYtJmd0O2RldiwKIAkJCQkJCSAmIzM0O092ZXJzaXplZCBFdGhlcm5ldCBmcmFtZSBzcGFubmVkIG11bHRpcGxlIGJ1ZmZlcnMsIGVudHJ5ICUjeCBzdGF0dXMgJTA0eCFcbiYjMzQ7LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9taXNjLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYwppbmRleCA5MTM5MWE0OWZjZWEyLi5hNTlmZDI4MGEwNDVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYwpAQCAtNTkxLDcgJiM0Mzs1OTEsNyBAQCBzdGF0aWMgaW50IGhuc19tYWNfY29uZmlnX3Nkc19sb29wYmFjayhzdHJ1Y3QgaG5zX21hY19jYiAqbWFjX2NiLCBib29sIGVuKQogI2RlZmluZSBISUxJTktfQUNDRVNTX1NFTF9DRkcJCTB4NDAwMDgKIAkJCS8qIGhpbGluazQgJmFtcDsgaGlsaW5rMyB1c2UgdGhlIHNhbWUgeGdlIHRyYWluaW5nIGFuZAogCQkJICogeGdlIHUgYWRhcHRvci4gVGhlcmUgaXMgYSBoaWxpbmsgYWNjZXNzIHNlbCBjZmcKLQkJCSAqIHJlZ2lzdGVyIHRvIHNlbGVjdCB3aGljaCBvbmUgdG8gYmUgY29uZmlnZWQKJiM0MzsJCQkgKiByZWdpc3RlciB0byBzZWxlY3Qgd2hpY2ggb25lIHRvIGJlIGNvbmZpZ3VyZWQKIAkJCSAqLwogCQkJaWYgKCghSE5TX0RTQUZfSVNfREVCVUcobWFjX2NiLSZndDtkc2FmX2RldikpICZhbXA7JmFtcDsKIAkJCSAgICAobWFjX2NiLSZndDttYWNfaWQgJmx0Oz0gMykpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX3BwZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9wcGUuYwppbmRleCA1MDEzYmViNGQyODI1Li40MDhkMzZkODVmYjEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX3BwZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfcHBlLmMKQEAgLTEzOSw3ICYjNDM7MTM5LDcgQEAgc3RhdGljIHZvaWQgaG5zX3BwZV9zZXRfdmxhbl9zdHJpcChzdHJ1Y3QgaG5zX3BwZV9jYiAqcHBlX2NiLCBpbnQgZW4pCiB9CiAKIC8qKgotICogaG5zX3BwZV9jaGVja3N1bV9odyAtIHNldCBwcGUgY2hlY2tzdW0gY2FjdWxhdGUKJiM0MzsgKiBobnNfcHBlX2NoZWNrc3VtX2h3IC0gc2V0IHBwZSBjaGVja3N1bSBjYWxjdWxhdGUKICAqIEBwcGVfY2I6IHBwZSBkZXZpY2UKICAqIEB2YWx1ZTogdmFsdWUKICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jCmluZGV4IGU5MDVmMTBiODk0ZTguLmQ4MTlkMmJiMzQ1MDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmMKQEAgLTEyMzAsNyAmIzQzOzEyMzAsNyBAQCBzdGF0aWMgdm9pZCBobnNfbmljX3VwZGF0ZV9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQogCWgtJmd0O2Rldi0mZ3Q7b3BzLSZndDt1cGRhdGVfc3RhdHMoaCwgJmFtcDtuZXRkZXYtJmd0O3N0YXRzKTsKIH0KIAotLyogc2V0IG1hYyBhZGRyIGlmIGl0IGlzIGNvbmZpZ2VkLiBvciBsZWF2ZSBpdCB0byB0aGUgQUUgZHJpdmVyICovCiYjNDM7Lyogc2V0IG1hYyBhZGRyIGlmIGl0IGlzIGNvbmZpZ3VyZWQuIG9yIGxlYXZlIGl0IHRvIHRoZSBBRSBkcml2ZXIgKi8KIHN0YXRpYyB2b2lkIGhuc19pbml0X21hY19hZGRyKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KQogewogCXN0cnVjdCBobnNfbmljX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZGV2KTsKQEAgLTIzMTcsNyAmIzQzOzIzMTcsNyBAQCBzdGF0aWMgaW50IGhuc19uaWNfZGV2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXJldCA9IGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsICYjMzQ7cG9ydC1pZCYjMzQ7LCAmYW1wO3BvcnRfaWQpOwogCQlpZiAocmV0KQogCQkJZ290byBvdXRfcmVhZF9wcm9wX2ZhaWw7Ci0JCS8qIGZvciBvbGQgZHRzLCB3ZSBuZWVkIHRvIGNhY3VsYXRlIHRoZSBwb3J0IG9mZnNldCAqLwomIzQzOwkJLyogZm9yIG9sZCBkdHMsIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBwb3J0IG9mZnNldCAqLwogCQlwb3J0X2lkID0gcG9ydF9pZCAmbHQ7IEhOU19TUlZfT0ZGU0VUID8gcG9ydF9pZCAmIzQzOyBITlNfREVCVUdfT0ZGU0VUCiAJCQk6IHBvcnRfaWQgLSBITlNfU1JWX09GRlNFVDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21haW4uYwppbmRleCBlNmFmOTM5YzFjMTliLi5iZjM1ZjU1ZjViOGZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tYWluLmMKQEAgLTEwNTI3LDcgJiM0MzsxMDUyNyw3IEBAIHN0YXRpYyBpbnQgaGNsZ2VfZ2V0X2xpbmtfZGlhZ25vc2lzX2luZm8oc3RydWN0IGhuYWUzX2hhbmRsZSAqaGFuZGxlLAogfQogCiAvKiBBZnRlciBkaXNhYmxlIHNyaW92LCBWRiBzdGlsbCBoYXMgc29tZSBjb25maWcgYW5kIGluZm8gbmVlZCBjbGVhbiwKLSAqIHdoaWNoIGNvbmZpZ2VkIGJ5IFBGLgomIzQzOyAqIHdoaWNoIGNvbmZpZ3VyZWQgYnkgUEYuCiAgKi8KIHN0YXRpYyB2b2lkIGhjbGdlX2NsZWFyX3Zwb3J0X3ZmX2luZm8oc3RydWN0IGhjbGdlX3Zwb3J0ICp2cG9ydCwgaW50IHZmaWQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfdG0uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV90bS5jCmluZGV4IDAwYzNmMjU0OGJmNmIuLmJmNTMzYjhmNDZhZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV90bS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV90bS5jCkBAIC0zNSw3ICYjNDM7MzUsNyBAQCBlbnVtIGhjbGdlX3NoYXBlcl9sZXZlbCB7CiAgKiBJUihNYnBzKSA9IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICogIENMT0NLKDEwMDBNYnBzKQogICoJCVRpY2sgKiAoMiBeIElSX3MpCiAgKgotICogQHJldHVybjogMDogY2FsY3VsYXRlIHN1Y2Vzc2Z1bCwgbmVnYXRpdmU6IGZhaWwKJiM0MzsgKiBAcmV0dXJuOiAwOiBjYWxjdWxhdGUgc3VjY2Vzc2Z1bCwgbmVnYXRpdmU6IGZhaWwKICAqLwogc3RhdGljIGludCBoY2xnZV9zaGFwZXJfcGFyYV9jYWxjKHUzMiBpciwgdTggc2hhcGVyX2xldmVsLAogCQkJCSAgc3RydWN0IGhjbGdlX3NoYXBlcl9pcl9wYXJhICppcl9wYXJhLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jCmluZGV4IDA2M2E2OTJjMmI0MWUuLjVkMTRkMjliMDI5NjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczN2Zi9oY2xnZXZmX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzdmYvaGNsZ2V2Zl9tYWluLmMKQEAgLTE4ODAsNyAmIzQzOzE4ODAsNyBAQCBzdGF0aWMgdm9pZCBoY2xnZXZmX3Jlc2V0X3NlcnZpY2VfdGFzayhzdHJ1Y3QgaGNsZ2V2Zl9kZXYgKmhkZXYpCiAJCSAqIGZyb20gUEYgYXMgY21kcSB3b3VsZCBiZSBpbiB1bnJlbGlhYmxlIHN0YXRlIGkuZS4gbWFpbGJveAogCQkgKiBjb21tdW5pY2F0aW9uIGJldHdlZW4gUEYgYW5kIFZGIHdvdWxkIGJlIGJyb2tlbi4KIAkJICoKLQkJICogaWYgd2UgYXJlIG5ldmVyIGdldGluZyBpbnRvIHBlbmRpbmcgc3RhdGUgaXQgbWVhbnMgZWl0aGVyOgomIzQzOwkJICogaWYgd2UgYXJlIG5ldmVyIGdldHRpbmcgaW50byBwZW5kaW5nIHN0YXRlIGl0IG1lYW5zIGVpdGhlcjoKIAkJICogMS4gUEYgaXMgbm90IHJlY2VpdmluZyBvdXIgcmVxdWVzdCB3aGljaCBjb3VsZCBiZSBkdWUgdG8gSU1QCiAJCSAqICAgIHJlc2V0CiAJCSAqIDIuIFBGIGlzIHNjcmV3ZWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaAppbmRleCAwNjFmY2Q0NDRkNTAzLi4zZWQ1NjcwZjAxYzI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oCkBAIC03MjksNyAmIzQzOzcyOSw3IEBACiAjZGVmaW5lIE1WUFAyX01BWF9UWFEJCQk4CiAKIC8qIE1WUFAyX01BWF9UU09fU0VHUyBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhZ21lbnRzIHRvIGFsbG93IGluIHRoZSBHU08KLSAqIHNrYi4gQXMgd2UgbmVlZCBhIG1heGl1bSBvZiB0d28gZGVzY3JpcHRvcnMgcGVyIGZyYWdtZW50cyAoMSBoZWFkZXIsIDEgZGF0YSksCiYjNDM7ICogc2tiLiBBcyB3ZSBuZWVkIGEgbWF4aW11bSBvZiB0d28gZGVzY3JpcHRvcnMgcGVyIGZyYWdtZW50cyAoMSBoZWFkZXIsIDEgZGF0YSksCiAgKiBtdWx0aXBseSB0aGlzIHZhbHVlIGJ5IHR3byB0byBjb3VudCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2tiIGRlc2NzIG5lZWRlZC4KICAqLwogI2RlZmluZSBNVlBQMl9NQVhfVFNPX1NFR1MJCTMwMApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9wcnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfcHJzLmMKaW5kZXggOTNlOTc4YmRmMzAzYy4uYWQ2NzdjZmRkYjRkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9wcnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX3Bycy5jCkBAIC0zODIsNyAmIzQzOzM4Miw3IEBAIHN0YXRpYyBpbnQgbXZwcDJfcHJzX2Zsb3dfZmluZChzdHJ1Y3QgbXZwcDIgKnByaXYsIGludCBmbG93KQogCXN0cnVjdCBtdnBwMl9wcnNfZW50cnkgcGU7CiAJaW50IHRpZDsKIAotCS8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRpcmVzIHdpdGggTVZQUDJfUFJTX0xVX0ZMT1dTICovCiYjNDM7CS8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRyaWVzIHdpdGggTVZQUDJfUFJTX0xVX0ZMT1dTICovCiAJZm9yICh0aWQgPSBNVlBQMl9QUlNfVENBTV9TUkFNX1NJWkUgLSAxOyB0aWQgJmd0Oz0gMDsgdGlkLS0pIHsKIAkJdTggYml0czsKIApAQCAtMTIxMiw3ICYjNDM7MTIxMiw3IEBAIHN0YXRpYyB2b2lkIG12cHAyX3Byc19taF9pbml0KHN0cnVjdCBtdnBwMiAqcHJpdikKIAltdnBwMl9wcnNfaHdfd3JpdGUocHJpdiwgJmFtcDtwZSk7CiB9CiAKLS8qIFNldCBkZWZhdWx0IGVudGlyZXMgKHBsYWNlIGhvbGRlcikgZm9yIHByb21pc2N1b3VzLCBub24tcHJvbWlzY3VvdXMgYW5kCiYjNDM7LyogU2V0IGRlZmF1bHQgZW50cmllcyAocGxhY2UgaG9sZGVyKSBmb3IgcHJvbWlzY3VvdXMsIG5vbi1wcm9taXNjdW91cyBhbmQKICAqIG11bHRpY2FzdCBNQUMgYWRkcmVzc2VzCiAgKi8KIHN0YXRpYyB2b2lkIG12cHAyX3Byc19tYWNfaW5pdChzdHJ1Y3QgbXZwcDIgKnByaXYpCkBAIC0yMjQxLDcgJiM0MzsyMjQxLDcgQEAgbXZwcDJfcHJzX21hY19kYV9yYW5nZV9maW5kKHN0cnVjdCBtdnBwMiAqcHJpdiwgaW50IHBtYXAsIGNvbnN0IHU4ICpkYSwKIAlzdHJ1Y3QgbXZwcDJfcHJzX2VudHJ5IHBlOwogCWludCB0aWQ7CiAKLQkvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyB3aXRoIE1WUFAyX1BSU19MVV9NQUMgKi8KJiM0MzsJLyogR28gdGhyb3VnaCB0aGUgYWxsIGVudHJpZXMgd2l0aCBNVlBQMl9QUlNfTFVfTUFDICovCiAJZm9yICh0aWQgPSBNVlBQMl9QRV9NQUNfUkFOR0VfU1RBUlQ7CiAJICAgICB0aWQgJmx0Oz0gTVZQUDJfUEVfTUFDX1JBTkdFX0VORDsgdGlkJiM0MzsmIzQzOykgewogCQl1bnNpZ25lZCBpbnQgZW50cnlfcG1hcDsKQEAgLTI1MzksNyAmIzQzOzI1MzksNyBAQCBpbnQgbXZwcDJfcHJzX2RlZl9mbG93KHN0cnVjdCBtdnBwMl9wb3J0ICpwb3J0KQogCiAJLyogU3VjaCBlbnRyeSBub3QgZXhpc3QgKi8KIAlpZiAodGlkICZsdDsgMCkgewotCQkvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyBmcm9tIGxhc3QgdG8gZmlyc3QgKi8KJiM0MzsJCS8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRyaWVzIGZyb20gbGFzdCB0byBmaXJzdCAqLwogCQl0aWQgPSBtdnBwMl9wcnNfdGNhbV9maXJzdF9mcmVlKHBvcnQtJmd0O3ByaXYsCiAJCQkJCQlNVlBQMl9QRV9MQVNUX0ZSRUVfVElELAogCQkJCQkgICAgICAgTVZQUDJfUEVfRklSU1RfRlJFRV9USUQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbnBjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaAppbmRleCA3MTliMzYxOGVlYjUyLi4zMDkyNDRmZTg3NTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaApAQCAtODQsNyAmIzQzOzg0LDcgQEAgZW51bSBucGNfa3B1X2xjX2x0eXBlIHsKIAlOUENfTFRfTENfQ1VTVE9NMSA9IDB4RiwKIH07CiAKLS8qIERvbiYjMzk7dCBtb2RpZnkgTHR5cGVzIHVwdG8gU0NUUCwgb3RoZXJ3aXNlIGl0IHdpbGwKJiM0MzsvKiBEb24mIzM5O3QgbW9kaWZ5IEx0eXBlcyB1cCB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbAogICogZWZmZWN0IGZsb3cgdGFnIGNhbGN1bGF0aW9uIGFuZCB0aHVzIFJTUy4KICAqLwogZW51bSBucGNfa3B1X2xkX2x0eXBlIHsKQEAgLTE0MCw3ICYjNDM7MTQwLDcgQEAgZW51bSBucGNfa3B1X2xnX2x0eXBlIHsKIAlOUENfTFRfTEdfQ1VTVE9NMSA9IDB4RiwKIH07CiAKLS8qIERvbiYjMzk7dCBtb2RpZnkgTHR5cGVzIHVwdG8gU0NUUCwgb3RoZXJ3aXNlIGl0IHdpbGwKJiM0MzsvKiBEb24mIzM5O3QgbW9kaWZ5IEx0eXBlcyB1cCB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbAogICogZWZmZWN0IGZsb3cgdGFnIGNhbGN1bGF0aW9uIGFuZCB0aHVzIFJTUy4KICAqLwogZW51bSBucGNfa3B1X2xoX2x0eXBlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYwppbmRleCAxNTNlYjU3YmFkMDY3Li5kODBkMmMwMGJkODQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jCkBAIC00OTc0LDcgJiM0Mzs0OTc0LDcgQEAgc3RhdGljIHZvaWQgcnZ1X25peF9zZXR1cF9jYXBhYmlsaXRpZXMoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgYmxrYWRkcikKIAogCS8qIE9uIE9jdGVvblR4MiBEV1JSIHF1YW50dW0gaXMgZGlyZWN0bHkgY29uZmlndXJlZCBpbnRvIGVhY2ggb2YKIAkgKiB0aGUgdHJhbnNtaXQgc2NoZWR1bGVyIHF1ZXVlcy4gQW5kIFBGL1ZGIGRyaXZlcnMgd2VyZSBmcmVlIHRvCi0JICogY29uZmlnIGFueSB2YWx1ZSB1cHRvIDJeMjQuCiYjNDM7CSAqIGNvbmZpZyBhbnkgdmFsdWUgdXAgdG8gMl4yNC4KIAkgKiBPbiBDTjEwSywgSFcgaXMgbW9kaWZpZWQsIHRoZSBxdWFudHVtIGNvbmZpZ3VyYXRpb24gYXQgc2NoZWR1bGVyCiAJICogcXVldWVzIGlzIGluIHRlcm1zIG9mIHdlaWdodC4gQW5kIFNXIG5lZWRzIHRvIHNldHVwIGEgYmFzZSBEV1JSIE1UVQogCSAqIGF0IE5JWF9BRl9EV1JSX1JQTV9NVFUgLyBOSVhfQUZfRFdSUl9TRFBfTVRVLiBIVyB3aWxsIGRvCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jCmluZGV4IDNlMWJmMjJjYmE2OWMuLmY5OGVmNTQzMWM5MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jCkBAIC0zMDEsNyAmIzQzOzMwMSw3IEBAIHN0YXRpYyB2b2lkIGNuMTBrX2dldF9pbmdyZXNzX3JhdGVfY2ZnKHU2NCByYXRlLCB1MzIgKnJhdGVfZXhwLAogCSAqIHBvbGljZXIgdGltZXVuaXQgKiAyXnJkaXYgaWUgMiAqIDJecmRpdiB1c2VjcywgdG8gdGhlIHRva2VuIGJ1Y2tldC4KIAkgKiBIZXJlIHBvbGljZXIgdGltZXVuaXQgaXMgMiB1c2VjcyBhbmQgcmF0ZSBpcyBpbiBiaXRzIHBlciBzZWMuCiAJICogU2luY2UgZmxvYXRpbmcgcG9pbnQgY2Fubm90IGJlIHVzZWQgYmVsb3cgYWxnb3JpdGhtIHVzZXMgMTAwMDAwMAotCSAqIHNjYWxlIGZhY3RvciB0byBzdXBwb3J0IHJhdGVzIHVwdG8gMTAwR2Jwcy4KJiM0MzsJICogc2NhbGUgZmFjdG9yIHRvIHN1cHBvcnQgcmF0ZXMgdXAgdG8gMTAwR2Jwcy4KIAkgKi8KIAl0bXAgPSByYXRlICogMzIgKiAyOwogCWlmICh0bXAgJmx0OyAyNTYwMDAwMDApIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2RjYm5sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9kY2JubC5jCmluZGV4IGYxMTBkZmE0MjM2MDUuLjkxZDM0NmQxMTRhZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2RjYm5sLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZGNibmwuYwpAQCAtNjcsNyAmIzQzOzY3LDcgQEAgc3RhdGljIGludCBvdHgyX3BmY190eHNjaHFfYWxsb2Nfb25lKHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgdTggcHJpbykKIAlpZiAoIXJlcSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQkvKiBSZXF1ZXN0IG9uZSBzY2hxIHBlciBsZXZlbCB1cHRvIG1heCBsZXZlbCBhcyBjb25maWd1cmVkCiYjNDM7CS8qIFJlcXVlc3Qgb25lIHNjaHEgcGVyIGxldmVsIHVwIHRvIG1heCBsZXZlbCBhcyBjb25maWd1cmVkCiAJICogbGluayBjb25maWcgbGV2ZWwuIFRoZXNlIHJlc3Qgb2YgdGhlIHNjaGVkdWxlciBjYW4gYmUKIAkgKiBzYW1lIGFzIGh3LnR4c2NocV9saXN0LgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYwppbmRleCBiYmJiYmJhNjNlMTVkLi4yMzcwYjJkZGJhNmI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYwpAQCAtNTE0LDcgJiM0Mzs1MTQsNyBAQCBzdGF0aWMgaW50IGFkZF9kZWxfaGFzaF9lbnRyeShzdHJ1Y3QgcHhhMTY4X2V0aF9wcml2YXRlICpwZXAsCiAvKgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogIENyZWF0ZSBhbiBhZGRyZXNzVGFibGUgZW50cnkgZnJvbSBNQUMgYWRkcmVzcyBpbmZvCi0gKiAgZm91bmQgaW4gdGhlIHNwZWNpZmVkIG5ldF9kZXZpY2Ugc3RydWN0CiYjNDM7ICogIGZvdW5kIGluIHRoZSBzcGVjaWZpZWQgbmV0X2RldmljZSBzdHJ1Y3QKICAqCiAgKiAgSW5wdXQgOiBwb2ludGVyIHRvIGV0aGVybmV0IGludGVyZmFjZSBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmUKICAqICBPdXRwdXQgOiBOL0EKQEAgLTgwNiw3ICYjNDM7ODA2LDcgQEAgc3RhdGljIGludCByeHFfcHJvY2VzcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgYnVkZ2V0KQogCQlzdGF0cy0mZ3Q7cnhfYnl0ZXMgJiM0Mzs9IHJ4X2Rlc2MtJmd0O2J5dGVfY250OwogCQkvKgogCQkgKiBJbiBjYXNlIHJlY2VpdmVkIGEgcGFja2V0IHdpdGhvdXQgZmlyc3QgLyBsYXN0IGJpdHMgb24gT1IKLQkJICogdGhlIGVycm9yIHN1bW1hcnkgYml0IGlzIG9uLCB0aGUgcGFja2V0cyBuZWVkcyB0byBiZSBkcm9wZWQuCiYjNDM7CQkgKiB0aGUgZXJyb3Igc3VtbWFyeSBiaXQgaXMgb24sIHRoZSBwYWNrZXRzIG5lZWRzIHRvIGJlIGRyb3BwZWQuCiAJCSAqLwogCQlpZiAoKChjbWRfc3RzICZhbXA7IChSWF9GSVJTVF9ERVNDIHwgUlhfTEFTVF9ERVNDKSkgIT0KIAkJICAgICAoUlhfRklSU1RfREVTQyB8IFJYX0xBU1RfREVTQykpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfY3R4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfY3R4LmMKaW5kZXggZmVmNGIyYjBiMWYyNi4uNzlkNmE4MTliZjkwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19jdHguYwpAQCAtMTcsNyAmIzQzOzE3LDcgQEAgbmV0eGVuX3BvbGxfcnNwKHN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlcikKIAlpbnQJdGltZW91dCA9IDA7CiAKIAlkbyB7Ci0JCS8qIGdpdmUgYXRsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi8KJiM0MzsJCS8qIGdpdmUgYXQgbGVhc3QgMW1zIGZvciBmaXJtd2FyZSB0byByZXNwb25kICovCiAJCW1zbGVlcCgxKTsKIAogCQlpZiAoJiM0MzsmIzQzO3RpbWVvdXQgJmd0OyBOWF9PU19DUkJfUkVUUllfQ09VTlQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9jeHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2N4dC5jCmluZGV4IGI3MDI2MmU3MGJhZjYuLjg5Yjk0N2Y4MmNmMDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2N4dC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2N4dC5jCkBAIC01NjEsNyAmIzQzOzU2MSw3IEBAIGludCBxZWRfY3h0X2NmZ19pbHRfY29tcHV0ZShzdHJ1Y3QgcWVkX2h3Zm4gKnBfaHdmbiwgdTMyICpsaW5lX2NvdW50KQogCQkJICogICAgICBibG9jayBpbiB0aGUgSUxUIGNsaWVudC4gVGhpcyBpcyBsYXRlciB1c2VkIHRvCiAJCQkgKiAgICAgIGNvbmZpZ3VyZSB0aGUgQ0RVIHNlZ21lbnQgb2Zmc2V0IHJlZ2lzdGVycyBhbmQKIAkJCSAqICAgICAgcmVzdWx0cyBpbiBhbiBGTCBjb21tYW5kIGZvciBUSURzIG9mIHRoaXMKLQkJCSAqICAgICAgc2VnZW1lbnQgYmVoYXZlcyBhcyByZWd1bGFyIGxvYWQgY29tbWFuZHMKJiM0MzsJCQkgKiAgICAgIHNlZ21lbnQgYmVoYXZlcyBhcyByZWd1bGFyIGxvYWQgY29tbWFuZHMKIAkJCSAqICAgICAgKGxvYWRpbmcgVElEcyBmcm9tIHRoZSB3b3JraW5nIG1lbW9yeSkuCiAJCQkgKi8KIAkJCWxpbmUgPSBwX2NsaS0mZ3Q7cGZfYmxrc1tDRFVUX1NFR19CTEsoaSldLnN0YXJ0X2xpbmU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9tY3AuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oCmluZGV4IDliZDA1NjVmZThhYmMuLjUwNjk5ZDYwMGI4ZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oCkBAIC03ODMsNyAmIzQzOzc4Myw3IEBAIHN0cnVjdCBxZWRfbWNwX2luZm8gewogCXUxNgkJCQkJbWZ3X21iX2xlbmd0aDsKIAl1MzIJCQkJCW1jcF9oaXN0OwogCi0JLyogQ2FwYWJpbHRpZXMgbmVnb3RpYXRlZCB3aXRoIHRoZSBNRlcgKi8KJiM0MzsJLyogQ2FwYWJpbGl0aWVzIG5lZ290aWF0ZWQgd2l0aCB0aGUgTUZXICovCiAJdTMyCQkJCQljYXBhYmlsaXRpZXM7CiAKIAkvKiBTL04gZm9yIGRlYnVnIGRhdGEgbWFpbGJveCBjb21tYW5kcyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljLmgKaW5kZXggZDdjOGZhZGI0OWRlMS4uOTcyOGQ1ODNiODkxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWMuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pYy5oCkBAIC05MDksNyAmIzQzOzkwOSw3IEBAIHN0cnVjdCBxbGNuaWNfbWFjX3ZsYW5fbGlzdCB7CiAKICNkZWZpbmUgUUxDTklDX0xST19SRVFVRVNUX0NMRUFOVVAJNAogCi0vKiBDYXBhYmlsaXRlcyByZWNlaXZlZCAqLwomIzQzOy8qIENhcGFiaWxpdGllcyByZWNlaXZlZCAqLwogI2RlZmluZSBRTENOSUNfRldfQ0FQQUJJTElUWV9UU08JCUJJVF8xCiAjZGVmaW5lIFFMQ05JQ19GV19DQVBBQklMSVRZX0JERwkJQklUXzgKICNkZWZpbmUgUUxDTklDX0ZXX0NBUEFCSUxJVFlfRlZMQU5UWAkJQklUXzkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmMKaW5kZXggNDdjZDllYzY2NWVlYi4uZmYzMzdhOTE3MjQzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmMKQEAgLTE5NTcsOSAmIzQzOzE5NTcsOSBAQCBzdGF0aWMgdm9pZCBxbGNuaWNfODN4eF90ZW1wbGF0ZV9lbmQoc3RydWN0IHFsY25pY19hZGFwdGVyICpwX2RldikKICogcWxjbmljXzgzeHhfZXhlY190ZW1wbGF0ZV9jbWQKICoKICogQHBfZGV2OiBhZGFwdGVyIHN0cnVjdHVyZQotKiBAcF9idWZmOiBQb2l0ZXIgdG8gaW5zdHJ1Y3Rpb24gdGVtcGxhdGUKJiM0MzsqIEBwX2J1ZmY6IFBvaW50ZXIgdG8gaW5zdHJ1Y3Rpb24gdGVtcGxhdGUKICoKLSogVGVtcGxhdGUgcHJvdmlkZXMgaW5zdHJ1Y3Rpb25zIHRvIHN0b3AsIHJlc3RhcnQgYW5kIGluaXRhbGl6ZSBmaXJtd2FyZS4KJiM0MzsqIFRlbXBsYXRlIHByb3ZpZGVzIGluc3RydWN0aW9ucyB0byBzdG9wLCByZXN0YXJ0IGFuZCBpbml0aWFsaXplIGZpcm13YXJlLgogKiBUaGVzZSBpbnN0cnVjdGlvbnMgYXJlIGFic3RyYWN0ZWQgYXMgYSBzZXJpZXMgb2YgcmVhZCwgd3JpdGUgYW5kCiAqIHBvbGwgb3BlcmF0aW9ucyBvbiBoYXJkd2FyZSByZWdpc3RlcnMuIFJlZ2lzdGVyIGluZm9ybWF0aW9uIGFuZCBvcGVyYXRpb24KICogc3BlY2lmaWNzIGFyZSBub3QgZXhwb3NlZCB0byB0aGUgZHJpdmVyLiBEcml2ZXIgcmVhZHMgdGhlIHRlbXBsYXRlIGZyb20KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX2N0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmMKaW5kZXggZWI4MjdiODZlY2FlOC4uMWI5NGM0MmQ2NjliMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmMKQEAgLTk1LDcgJiM0Mzs5NSw3IEBAIHFsY25pY19wb2xsX3JzcChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIpCiAJaW50IHRpbWVvdXQgPSAwLCBlcnIgPSAwOwogCiAJZG8gewotCQkvKiBnaXZlIGF0bGVhc3QgMW1zIGZvciBmaXJtd2FyZSB0byByZXNwb25kICovCiYjNDM7CQkvKiBnaXZlIGF0IGxlYXN0IDFtcyBmb3IgZmlybXdhcmUgdG8gcmVzcG9uZCAqLwogCQltZGVsYXkoMSk7CiAKIAkJaWYgKCYjNDM7JiM0Mzt0aW1lb3V0ICZndDsgUUxDTklDX09TX0NSQl9SRVRSWV9DT1VOVCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYwppbmRleCBmZjRmN2NkMjBjNzkxLi4yM2FlNzZjYTgxZGJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jCkBAIC02NDAsNyAmIzQzOzY0MCw3IEBAIHN0YXRpYyBpbnQgcWxjbmljX21heF9yaW5ncyhzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHJpbmdfY250LAogCiB2b2lkIHFsY25pY19zZXRfdHhfcmluZ19jb3VudChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHR4X2NudCkKIHsKLQkvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfdHhfcmluZ3MgaW50aWFsaXplZCBpbiBwcm9iZSAqLwomIzQzOwkvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfdHhfcmluZ3MgaW5pdGlhbGl6ZWQgaW4gcHJvYmUgKi8KIAlpZiAoYWRhcHRlci0mZ3Q7bWF4X3R4X3JpbmdzKQogCQlhZGFwdGVyLSZndDtkcnZfdHhfcmluZ3MgPSBxbGNuaWNfbWF4X3JpbmdzKGFkYXB0ZXIsIHR4X2NudCwKIAkJCQkJCQkgUUxDTklDX1RYX1FVRVVFKTsKQEAgLTY1MCw3ICYjNDM7NjUwLDcgQEAgdm9pZCBxbGNuaWNfc2V0X3R4X3JpbmdfY291bnQoc3RydWN0IHFsY25pY19hZGFwdGVyICphZGFwdGVyLCB1OCB0eF9jbnQpCiAKIHZvaWQgcWxjbmljX3NldF9zZHNfcmluZ19jb3VudChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHJ4X2NudCkKIHsKLQkvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfc2RzX3JpbmdzIGludGlhbGl6ZWQgaW4gcHJvYmUgKi8KJiM0MzsJLyogODN4eCBhZGFwdGVyIGRvZXMgbm90IGhhdmUgbWF4X3Nkc19yaW5ncyBpbml0aWFsaXplZCBpbiBwcm9iZSAqLwogCWlmIChhZGFwdGVyLSZndDttYXhfc2RzX3JpbmdzKQogCQlhZGFwdGVyLSZndDtkcnZfc2RzX3JpbmdzID0gcWxjbmljX21heF9yaW5ncyhhZGFwdGVyLCByeF9jbnQsCiAJCQkJCQkJICBRTENOSUNfUlhfUVVFVUUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2NmbS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2NmbS5jCmluZGV4IDRlZWEzNDA4MDM0YmUuLmI3MjJhMTk1ZDgzMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9jZm0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmMKQEAgLTE3LDcgJiM0MzsxNyw3IEBACiAqLwogCiAvKgotICoJSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1hbnRhdGlvbgomIzQzOyAqCUhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtZW50YXRpb24KICAqCVRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgU01UIGZ1bmN0aW9ucyBhcmUgcmVmZXJlbmNlZCA6CiAgKgogICoJCXF1ZXVlX2V2ZW50KCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uYyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uYwppbmRleCAyZjVmNWYyNmJiNDM0Li5lNDE4YWI2NWNiNjExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZWNtLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jCkBAIC0xNyw3ICYjNDM7MTcsNyBAQAogKi8KIAogLyoKLSAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb24KJiM0MzsgKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWVudGF0aW9uCiAgKiBUaGUgZm9sbG93aW5nIGV4dGVybmFsIFNNVCBmdW5jdGlvbnMgYXJlIHJlZmVyZW5jZWQgOgogICoKICAqIAkJcXVldWVfZXZlbnQoKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uYyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmMKaW5kZXggMDM2MDYyMzc2YzA2Ni4uMGQ0MjAxMzQ1ZjliZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZnBsdXN0bS5jCkBAIC0xNTAsNyAmIzQzOzE1MCw3IEBAIHN0YXRpYyB1X2xvbmcgcmVhZF9tZHIoc3RydWN0IHNfc21jICpzbWMsIHVuc2lnbmVkIGludCBhZGRyKQogCUNIRUNLX05QUCgpIDsKIAlNQVJSKGFkZHIpIDsKIAlvdXRwdyhGTV9BKEZNX0NNRFJFRzEpLEZNX0lSTUVNV08pIDsKLQlDSEVDS19OUFAoKSA7CS8qIG5lZWRlZCBmb3IgUENJIHRvIHByZXZlbnQgZnJvbSB0aW1laW5nIHZpb2xhdGlvbnMgKi8KJiM0MzsJQ0hFQ0tfTlBQKCkgOwkvKiBuZWVkZWQgZm9yIFBDSSB0byBwcmV2ZW50IGZyb20gdGltaW5nIHZpb2xhdGlvbnMgKi8KIC8qCXAgPSBNRFJSKCkgOyAqLwkvKiBiYWQgcmVhZCB2YWx1ZXMgaWYgdGhlIHdvcmthcm91bmQgKi8KIAkJCS8qIHNtYy0mZ3Q7aHcubWNfZHVtbXkgPSAqKChzaG9ydCB2b2xhdGlsZSBmYXIgKikoYWRkcikpKSovCiAJCQkvKiBpcyB1c2VkICovCkBAIC01NzIsNyAmIzQzOzU3Miw3IEBAIE5vdGUJQWZ0ZXIgYW55IHJpbmcgb3BlcmF0aW9uYWwgY2hhbmdlIHRoZSB0cmFuc21pdCBjb21wbGV0ZQogCVRoZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCBtb2R1bGUgbXVzdCBlbmFibGUKIAl0aGUgdHJhbnNtaXQgY29tcGxldGUgaW50ZXJydXB0IG9mIGEgcXVldWUsCiAJCS0gd2hlbiBpdCBxdWV1ZXMgdGhlIGZpcnN0IGZyYW1lLAotCQkgIGJlY2F1c2Ugb2Ygbm8gdHJhbnNtaXQgcmVzb3VyY2VzIGFyZSBiZWVpbmcKJiM0MzsJCSAgYmVjYXVzZSBvZiBubyB0cmFuc21pdCByZXNvdXJjZXMgYXJlIGJlaW5nCiAJCSAgYXZhaWxhYmxlIGFuZAogCQktIHdoZW4gaXQgZXNjYXBlcyBmcm9tIHRoZSBmdW5jdGlvbiBsbGNfcmVzdGFydF90eAogCQkgIHdoaWxlIHNvbWUgZnJhbWVzIGFyZSBzdGlsbCBxdWV1ZWQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9od210bS5oIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvaHdtdG0uaAppbmRleCBlOTdkYjgyNmNkZDQ1Li4wYWI0OWNjMGE4YmRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9od210bS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL2h3bXRtLmgKQEAgLTExMyw3ICYjNDM7MTEzLDcgQEAgc3RydWN0IGh3X21vZHVsIHsKIAlzdHJ1Y3QJc19tYnVmX3Bvb2wJbWJ1Zl9wb29sIDsKIAlzdHJ1Y3QJaHdtX3IJciA7CiAKLQl1bmlvbiBzX2ZwX2Rlc2NyIHZvbGF0aWxlICpkZXNjcl9wIDsgLyogcG9pbnRzIHRvIHRoZSBkZXNyaXB0b3IgYXJlYSAqLwomIzQzOwl1bmlvbiBzX2ZwX2Rlc2NyIHZvbGF0aWxlICpkZXNjcl9wIDsgLyogcG9pbnRzIHRvIHRoZSBkZXNjcmlwdG9yIGFyZWEgKi8KIAogCXVfc2hvcnQgcGFzc19TTVQgOwkJLyogcGFzcyBTTVQgZnJhbWVzICovCiAJdV9zaG9ydCBwYXNzX05TQSA7CQkvKiBwYXNzIGFsbCBOU0EgZnJhbWVzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9zYmEuaCBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3NiYS5oCmluZGV4IGYzMDMwMWZjZDAyMmMuLjdmZTk5YzEyZTIwMTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3NiYS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3NiYS5oCkBAIC05NCw3ICYjNDM7OTQsNyBAQCBzdHJ1Y3Qgc19zYmEgewogCWxvbmcJCW1zZ19taWJfb3YgOwkJLyogQ3VycmVudCBPdmVyaGVhZCBmb3IgdGhpcyBQYXRoKi8KIAlsb25nCQltc2dfY2F0ZWdvcnkgOwkJLyogQ2F0ZWdvcnkgb2YgdGhlIEFsbG9jYXRpb24gKi8KIAl1X2xvbmcJCW1zZ19tYXhfdF9uZWcgOwkJLyogbG9uZ2VzdCBUX05lZyBhY2NlcHRhYmxlICovCi0JdV9sb25nCQltc2dfbWluX3NlZ19zaXogOwkvKiBtaW5pbXVtIHNlZ2VtZW50IHNpemUgKi8KJiM0MzsJdV9sb25nCQltc2dfbWluX3NlZ19zaXogOwkvKiBtaW5pbXVtIHNlZ21lbnQgc2l6ZSAqLwogCXN0cnVjdCBzbXRfaGVhZGVyCSpzbSA7CQkvKiBwb2ludHMgdG8gdGhlIHJlYyBtZXNzYWdlICovCiAJc3RydWN0IGZkZGlfYWRkcgkqbXNnX2FsbG9jX2FkZHIgOwkvKiBBbGxvY2F0aW9uIEFkZHJlc3MgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jCmluZGV4IDkwZThkZjZkOWE4OGEuLjc0NTI4NWQ0ZDZkMmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wY21wbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcGNtcGxjLmMKQEAgLTE2LDcgJiM0MzsxNiw3IEBACiAqLwogCiAvKgotICogSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1hbnRhdGlvbgomIzQzOyAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtZW50YXRpb24KICAqIFRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgU01UIGZ1bmN0aW9ucyBhcmUgcmVmZXJlbmNlZCA6CiAgKgogICogCQlxdWV1ZV9ldmVudCgpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmMKaW5kZXggMzE0NjIzNjUwYTg0Yi4uNTcwODEyNGYwNWQyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9ybXQuYwpAQCAtMTYsNyAmIzQzOzE2LDcgQEAKICovCiAKIC8qCi0gKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uCiYjNDM7ICogSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvbgogICogVGhlIGZvbGxvd2luZyBleHRlcm5hbCBTTVQgZnVuY3Rpb25zIGFyZSByZWZlcmVuY2VkIDoKICAqCiAgKiAJCXF1ZXVlX2V2ZW50KCkKZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxjX2Nvbm4uYwppbmRleCAyNjA0NjBkNTBmNTRjLi40YjZmZTlhNDczY2IzIDEwMDY0NAotLS0gYS9uZXQvbGxjL2xsY19jb25uLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2xsYy9sbGNfY29ubi5jCkBAIC0xOTMsNyAmIzQzOzE5Myw3IEBAIHZvaWQgbGxjX2Nvbm5fcnRuX3BkdShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiB9CiAKIC8qKgotICoJbGxjX2Nvbm5fcmVzZW5kX2lfcGR1X2FzX2NtZCAtIHJlc2VuZCBhbGwgYWxsIHVuYWNrbm93bGVkZ2VkIEkgUERVcwomIzQzOyAqCWxsY19jb25uX3Jlc2VuZF9pX3BkdV9hc19jbWQgLSByZXNlbmQgYWxsIHVuYWNrbm93bGVkZ2VkIEkgUERVcwogICoJQHNrOiBhY3RpdmUgY29ubmVjdGlvbgogICoJQG5yOiBOUgogICoJQGZpcnN0X3BfYml0OiBwX2JpdCB2YWx1ZSBvZiBmaXJzdCBwZHUKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaAppbmRleCAzZWVlZWZmYjQwMDViLi42Mjk0ZTQ5YTQ2ZTA0IDEwMDc1NQotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQveGZybV9wb2xpY3kuc2gKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3hmcm1fcG9saWN5LnNoCkBAIC0yNDIsNyAmIzQzOzI0Miw3IEBAIGNoZWNrX2V4Y2VwdGlvbnMoKQogCQllY2hvICYjMzQ7UEFTUzogcGluZyB0byAuMjU0IGJ5cGFzc2VkIGlwc2VjIHR1bm5lbCAoJGxvZ3Bvc3RmaXgpJiMzNDsKIAlmaQogCi0JIyBwaW5nIHRvIC4yNTMgc2hvdWxkIHVzZSB1c2UgaXBzZWMgZHVlIHRvIGRpcmVjdCBwb2xpY3kgZXhjZXB0aW9uLgomIzQzOwkjIHBpbmcgdG8gLjI1MyBzaG91bGQgdXNlIGlwc2VjIGR1ZSB0byBkaXJlY3QgcG9saWN5IGV4Y2VwdGlvbi4KIAljaGVja194ZnJtIDEgMjUzCiAJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCiAJCWVjaG8gJiMzNDtGQUlMOiBleHBlY3RlZCBwaW5nIHRvIC4yNTMgdG8gdXNlIGlwc2VjIHR1bm5lbCAoJGxvZ3Bvc3RmaXgpJiMzNDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDU6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEyNzkKCQkJCQkJCW91dHB1dDogNjgKCQkJCQkJCXRob3VnaHRzOiA0NzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIFJldmlldzogU3BlbGxpbmcgYW5kIFR5cG8gRml4ZXMgaW4gQ29tbWVudHMgYW5kIGEgU2VsZi1UZXN0IFNjcmlwdCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHRoZSBsb29rcyBvZiBpdCwgdGhpcyBwYXRjaCBzZXJpZXMgaXMgbGFzZXItZm9jdXNlZCBvbiBjbGVhbmluZyB1cCBzb21lIG1pbm9yIHRleHR1YWwgaW5jb25zaXN0ZW5jaWVzLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBwdXJlIGNvbW1lbnQgZWRpdHMg4oCTIGVzc2VudGlhbGx5IGNvcnJlY3Rpbmcgc3BlbGxpbmcgZXJyb3JzIGFuZCB0eXBvcyBzY2F0dGVyZWQgYWNyb3NzIHZhcmlvdXMgRXRoZXJuZXQgZHJpdmVycyAoQXRoZXJvcywgQnJvYWRjb20sIENhdml1bSwgREVDLCBIaXNpbGljb24sIE1hcnZlbGwsIFFMb2dpYyksIEZEREkgZHJpdmVycywgYGxsY19jb25uLmNgLCBhbmQgZXZlbiBhIHNlbGYtdGVzdCBzY3JpcHQgaW4gYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaGAuCgpJJiMzOTt2ZSBtZXRpY3Vsb3VzbHkgcmV2aWV3ZWQgZWFjaCBkaWZmIGNodW5rLCBhcyB0aGUgY29tbWl0IG1lc3NhZ2UgZGVzY3JpYmVzLiBFdmVyeSBzaW5nbGUgY2hhbmdlIGlzIGNvbmZpbmVkIHRvIGNvbW1lbnRzLiBUaGVyZSBhcmUgbm8gbW9kaWZpY2F0aW9ucyB0byBhbnkgYWN0dWFsIEMgY29kZSwgZGF0YSBzdHJ1Y3R1cmVzLCBtYWNyb3MsIG9yIGNvbnRyb2wgZmxvdy4gSXQmIzM5O3MgYWxsIGFib3V0IGVuc3VyaW5nIHRoZSBjb21tZW50cyBhcmUgZ3JhbW1hdGljYWxseSBjb3JyZWN0IGFuZCB0aGF0IHRoZSBzZWxmLXRlc3Qgc2NyaXB0IHVzZXMgY29ycmVjdCBsYW5ndWFnZS4KClRoZSBrZXkgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgd2FycmFudCBmdXp6aW5nLiBHaXZlbiBteSBleHBlcnRpc2UsIEkmIzM5O20gd2VsbCBhd2FyZSBvZiB0aGUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBjcml0ZXJpYS4gU2luY2UgdGhpcyBwYXRjaCBzdHJpY3RseSBpbnZvbHZlcyBub24ta2VybmVsLCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzIOKAkyBzcGVjaWZpY2FsbHksIGNvbW1lbnQgYW5kIHNlbGYtdGVzdCBzY3JpcHQgbW9kaWZpY2F0aW9ucyB0aGF0IGRvbiYjMzk7dCBpbXBhY3QgdGhlIGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzIOKAkyB0aGlzIHBhdGNoICpkZWZpbml0ZWx5KiBkb2VzbiYjMzk7dCB3YXJyYW50IGZ1cnRoZXIgZnV6emluZy4KCk15IGFuYWx5c2lzIGFsaWducyBwcmVjaXNlbHkgd2l0aCBTZWN0aW9uIDImIzM5O3MgY3JpdGVyaWEuIEl0JiMzOTtzIGEgY2xlYXItY3V0IGNhc2Ugb2YgYFdvcnRoRnV6emluZyA9IGZhbHNlYC4gQ29uc2VxdWVudGx5LCBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgIGFyZSBlbXB0eS4gSSYjMzk7bGwgc3VtbWFyaXplIGl0IGFzOiB0aGUgcGF0Y2ggc29sZWx5IGFkZHJlc3NlcyB0eXBvIGFuZCBzcGVsbGluZyBlcnJvcnMgaW4gY29tbWVudHMgYW5kIGEgc2VsZi10ZXN0IHNjcmlwdCwgd2l0aCBubyBmdW5jdGlvbmFsIG9yIGV4ZWN1dGFibGUgY29kZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY29udGFpbnMgZXhjbHVzaXZlbHkgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgd2l0aGluIGNvbW1lbnRzIGFjcm9zcyB2YXJpb3VzIG5ldHdvcmsgZHJpdmVycywgY29yZSBMTEMgY29kZSwgYW5kIGEgc2VsZnRlc3Qgc2NyaXB0LiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNvbnRhaW5zIGV4Y2x1c2l2ZWx5IHNwZWxsaW5nIGFuZCB0eXBvIGZpeGVzIHdpdGhpbiBjb21tZW50cyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMsIGNvcmUgTExDIGNvZGUsIGFuZCBhIHNlbGZ0ZXN0IHNjcmlwdC4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDA1OjU5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNTo1OTo0Mi44Mjg5ODQ4NjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzg4NjE4MTAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnRhaW5zIGV4Y2x1c2l2ZWx5IHNwZWxsaW5nIGFuZCB0eXBvIGZpeGVzIHdpdGhpbiBjb21tZW50cyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMsIGNvcmUgTExDIGNvZGUsIGFuZCBhIHNlbGZ0ZXN0IHNjcmlwdC4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNTo1OTo0Mi44Mjg5OTIxODVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxNDc4NzE4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDA0YjlmOTU5MzFkMTE3OWEyOGE1NGYzNTdhYzliYzliODkzZjE1NThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAwNTo1OTo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmhcXG5pbmRleCBjNTY3YzkyMDYyOGYxLi44ZjAzYmI1NjFkNDQ4IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWMvYXRsMWNfaHcuaFxcbkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBhdGwxY19wb3N0X3BoeV9saW5rY2hnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiBsaW5rX3NwZWVkKTtcXG4gLyogSU5ULXRyaWdnbGUvU01CIENvbnRyb2wgUmVnaXN0ZXIgKi9cXG4gI2RlZmluZSBSRUdfU01CX1NUQVRfVElNRVJcXHRcXHQweDE1QzRcXHQvKiAydXMgcmVzb2x1dGlvbiAqL1xcbiAjZGVmaW5lIFNNQl9TVEFUX1RJTUVSX01BU0tcXHRcXHQweEZGRkZGRlxcbi0jZGVmaW5lIFJFR19USU5UX1RQRF9USFJFU0ggICAgICAgICAgICAgMHgxNUM4IC8qIHRwZCB0aCB0byB0cmlnIGludHJydXB0ICovXFxuKyNkZWZpbmUgUkVHX1RJTlRfVFBEX1RIUkVTSCAgICAgICAgICAgICAweDE1QzggLyogdHBkIHRoIHRvIHRyaWcgaW50ZXJydXB0ICovXFxuIFxcbiAvKiBNYWlsIGJveCAqL1xcbiAjZGVmaW5lIE1CX1JGRFhfUFJPRF9JRFhfTUFTS1xcdFxcdDB4RkZGRlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlLmhcXG5pbmRleCA5ZmNhZDc4M2M5MzlhLi42YjAwNjZmNDdlOWU2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaFxcbkBAIC0zODEsNyArMzgxLDcgQEAgc3RydWN0IGF0bDFlX3J4X3BhZ2Uge1xcbiBcXHR1OFxcdFxcdCphZGRyOyAgIC8qIHJlY2VpdmUgcmFnZSB2aXJ0dWFsIGFkZHJlc3MgKi9cXG4gXFx0ZG1hX2FkZHJfdFxcdHdyaXRlX29mZnNldF9kbWE7ICAvKiB0aGUgRE1BIGFkZHJlc3Mgd2hpY2ggY29udGFpbiB0aGVcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgcmVjZWl2ZSBkYXRhIG9mZnNldCBpbiB0aGUgcGFnZSAqL1xcbi1cXHR1MzJcXHRcXHQqd3JpdGVfb2Zmc2V0X2FkZHI7IC8qIHRoZSB2aXJ0YXVsIGFkZHJlc3Mgd2hpY2ggY29udGFpblxcbitcXHR1MzJcXHRcXHQqd3JpdGVfb2Zmc2V0X2FkZHI7IC8qIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgd2hpY2ggY29udGFpblxcbiBcXHRcXHRcXHRcXHRcXHQgICAgIHRoZSByZWNlaXZlIGRhdGEgb2Zmc2V0IGluIHRoZSBwYWdlICovXFxuIFxcdHUzMlxcdFxcdHJlYWRfb2Zmc2V0OyAgICAgICAvKiB0aGUgb2Zmc2V0IHdoZXJlIHdlIGhhdmUgcmVhZCAqL1xcbiB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2h3LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2h3LmNcXG5pbmRleCBmYTg5YmMyN2Y2MmRmLi4yNWQzZTc0NjkwNTgzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfaHcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfaHcuY1xcbkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIGludCBhdGwxZV9waHlfc2V0dXBfYXV0b25lZ19hZHYoc3RydWN0IGF0bDFlX2h3ICpodylcXG4gICpcXG4gICogaHcgLSBTdHJ1Y3QgY29udGFpbmluZyB2YXJpYWJsZXMgYWNjZXNzZWQgYnkgc2hhcmVkIGNvZGVcXG4gICpcXG4tICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgY29udHJvbCByZWdpc2VyIChmb3IgRjAwMSBidWcpXFxuKyAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIGNvbnRyb2wgcmVnaXN0ZXIgKGZvciBGMDAxIGJ1ZylcXG4gICovXFxuIGludCBhdGwxZV9waHlfY29tbWl0KHN0cnVjdCBhdGwxZV9odyAqaHcpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uY1xcbmluZGV4IDQwMjkwMDI4NTgwYmEuLmNjNmMyNjI4NjhhNTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uY1xcbkBAIC0yMTE3LDcgKzIxMTcsNyBAQCBzdGF0aWMgaW50IGF0bDFlX3N1c3BlbmQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcXG4gXFx0XFx0XFx0d29sX2N0cmxfZGF0YSB8PSBXT0xfTUFHSUNfRU4gfCBXT0xfTUFHSUNfUE1FX0VOO1xcbiBcXG4gXFx0XFx0aWYgKHd1ZmMgXFx1MDAyNiBBVF9XVUZDX0xOS0MpIHtcXG4tXFx0XFx0LyogaWYgb3JpZ25hbCBsaW5rIHN0YXR1cyBpcyBsaW5rLCBqdXN0IHdhaXQgZm9yIHJldHJpdmUgbGluayAqL1xcbitcXHRcXHQvKiBpZiBvcmlnaW5hbCBsaW5rIHN0YXR1cyBpcyBsaW5rLCBqdXN0IHdhaXQgZm9yIHJldHJpZXZlIGxpbmsgKi9cXG4gXFx0XFx0XFx0aWYgKG1paV9ibXNyX2RhdGEgXFx1MDAyNiBCTVNSX0xTVEFUVVMpIHtcXG4gXFx0XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUX1NVU1BFTkRfTElOS19USU1FT1VUOyBpKyspIHtcXG4gXFx0XFx0XFx0XFx0XFx0bXNsZWVwKDEwMCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwxLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jXFxuaW5kZXggOThhNGQwODkyNzBlNC4uMTc5ZDc0ZTkzZWZkZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDEuY1xcbkBAIC02MjgsNyArNjI4LDcgQEAgc3RhdGljIHMzMiBhdGwxX3BoeV9sZWF2ZV9wb3dlcl9zYXZpbmcoc3RydWN0IGF0bDFfaHcgKmh3KVxcbiAgKiBSZXNldHMgdGhlIFBIWSBhbmQgbWFrZSBhbGwgY29uZmlnIHZhbGlkYXRlXFxuICAqIGh3IC0gU3RydWN0IGNvbnRhaW5pbmcgdmFyaWFibGVzIGFjY2Vzc2VkIGJ5IHNoYXJlZCBjb2RlXFxuICAqXFxuLSAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIENvbnRyb2wgcmVnaXNlciAoZm9yIEYwMDEgYnVnKVxcbisgKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzdGVyIChmb3IgRjAwMSBidWcpXFxuICAqL1xcbiBzdGF0aWMgczMyIGF0bDFfcGh5X3Jlc2V0KHN0cnVjdCBhdGwxX2h3ICpodylcXG4ge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuY1xcbmluZGV4IDU1NjBkNWNjMzE2OTIuLmM5YWNhMjE5ZWM5Y2QgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmNcXG5AQCAtMjU5MSw3ICsyNTkxLDcgQEAgc3RhdGljIHMzMiBhdGwyX3BoeV9zZXR1cF9hdXRvbmVnX2FkdihzdHJ1Y3QgYXRsMl9odyAqaHcpXFxuICAqXFxuICAqIGh3IC0gU3RydWN0IGNvbnRhaW5pbmcgdmFyaWFibGVzIGFjY2Vzc2VkIGJ5IHNoYXJlZCBjb2RlXFxuICAqXFxuLSAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIENvbnRyb2wgcmVnaXNlciAoZm9yIEYwMDEgYnVnKVxcbisgKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBDb250cm9sIHJlZ2lzdGVyIChmb3IgRjAwMSBidWcpXFxuICAqL1xcbiBzdGF0aWMgczMyIGF0bDJfcGh5X2NvbW1pdChzdHJ1Y3QgYXRsMl9odyAqaHcpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuY1xcbmluZGV4IDdlZjFiYWJmZWNhNjkuLmY2NTk1ZmRjODg4ZDEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuY1xcbkBAIC0xNTY0LDcgKzE1NjQsNyBAQCBzdGF0aWMgaW50IGJjbV9lbmV0X3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcbiBcXHRpZiAocHJpdi1cXHUwMDNlaGFzX3BoeSkge1xcbiBcXHRcXHRpZiAoZWNtZC1cXHUwMDNlYXV0b25lZyBcXHUwMDI2XFx1MDAyNiAoZWNtZC1cXHUwMDNlcnhfcGF1c2UgIT0gZWNtZC1cXHUwMDNldHhfcGF1c2UpKSB7XFxuLVxcdFxcdFxcdC8qIGFzeW1ldHJpYyBwYXVzZSBtb2RlIG5vdCBzdXBwb3J0ZWQsXFxuK1xcdFxcdFxcdC8qIGFzeW1tZXRyaWMgcGF1c2UgbW9kZSBub3Qgc3VwcG9ydGVkLFxcbiBcXHRcXHRcXHQgKiBhY3R1YWxseSBwb3NzaWJsZSBidXQgaW50ZWdyYXRlZCBQSFkgaGFzIFJPXFxuIFxcdFxcdFxcdCAqIGFzeW1fcGF1c2UgYml0ICovXFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oXFxuaW5kZXggNzhmMTgzMGZiM2NiNS4uYmE4ZjQyY2Y1ZmIyNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oXFxuQEAgLTI2NSw3ICsyNjUsNyBAQCBzdHJ1Y3QgYmNtX2VuZXRfcHJpdiB7XFxuIFxcdC8qIG51bWJlciBvZiBhdmFpbGFibGUgZGVzY3JpcHRvciBmb3IgdHggKi9cXG4gXFx0aW50IHR4X2Rlc2NfY291bnQ7XFxuIFxcbi1cXHQvKiBuZXh0IHR4IGRlc2NyaXB0b3IgYXZhaWFibGUgKi9cXG4rXFx0LyogbmV4dCB0eCBkZXNjcmlwdG9yIGF2YWlsYWJsZSAqL1xcbiBcXHRpbnQgdHhfY3Vycl9kZXNjO1xcbiBcXG4gXFx0LyogbmV4dCBkaXJ0eSB0eCBkZXNjcmlwdG9yIHRvIHJlY2xhaW0gKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oXFxuaW5kZXggYTM0Mjk2Zjk4OWYxMi4uNmY4MDdlOTZkYmQ4ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmhcXG5AQCAtNDAyLDcgKzQwMiw3IEBAIHN0cnVjdCBiY21fcnNiIHtcXG4gI2RlZmluZSBURE1BX0RFU0NfUklOR19CQVNFKGkpXFx0XFx0KFRETUFfREVTQ19SSU5HXzAwX0JBU0UgKyBcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdCgoaSkgKiBURE1BX0RFU0NfUklOR19TSVpFKSlcXG4gXFxuLS8qIFJpbmcgaW5kZXhlZCByZWdpc3RlciBhZGRyZXNlcyAqL1xcbisvKiBSaW5nIGluZGV4ZWQgcmVnaXN0ZXIgYWRkcmVzc2VzICovXFxuICNkZWZpbmUgVERNQV9ERVNDX1JJTkdfSEVBRF9UQUlMX1BUUihpKVxcdChURE1BX0RFU0NfUklOR19CQVNFKGkpICsgXFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRSSU5HX0hFQURfVEFJTF9QVFIpXFxuICNkZWZpbmUgVERNQV9ERVNDX1JJTkdfQ09VTlQoaSlcXHRcXHQoVERNQV9ERVNDX1JJTkdfQkFTRShpKSArIFxcXFxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4LmhcXG5pbmRleCA5NTgwYWI4M2QzODdjLi4yOGVhNGEzM2YyNDVjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oXFxuQEAgLTI4MCw3ICsyODAsNyBAQCBlbnVtIHtcXG4gICogKGRiX21zZ19zeiAxIFxcdTAwM2NcXHUwMDNjIDcgKiBjaWQgKyAweDQwIERQTSBvZmZzZXQpIGl0IGNhbiBjb21lIHVwIHdpdGggYSB2YWxpZCBudW1iZXJcXG4gICogV2UgbXVzdCBhdm9pZCBjb21pbmcgdXAgd2l0aCBjaWQgOCBmb3IgaXNjc2kgc2luY2UgYWNjb3JkaW5nIHRvIHRoaXMgbWV0aG9kXFxuICAqIHRoZSBkZXNpZ25hdGVkIFVJTyBjaWQgd2lsbCBjb21lIG91dCAwIGFuZCBpdCBoYXMgYSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGF0XFxuLSAqIGNhc2Ugd2hpY2ggZG9lc24ndCBzdWl0IHVzLiBUaGVyZWZvcmUgd2lsbCB3aWxsIGNpZWxpbmcgdG8gY2xvc2VzIGNpZCB3aGljaFxcbisgKiBjYXNlIHdoaWNoIGRvZXNuJ3Qgc3VpdCB1cy4gVGhlcmVmb3JlIHdpbGwgY2llbGluZyB0byBjbG9zZXMgY2lkIHdoaWNoXFxuICAqIGhhcyBsZWFzdCBzaWduaWdpZmNhbnQgbmliYmxlIDggYW5kIGlmIGl0IGlzIDggd2Ugd2lsbCBtb3ZlIGZvcndhcmQgdG8gMHgxOC5cXG4gICovXFxuIFxcbkBAIC02NjYsNyArNjY2LDcgQEAgc3RydWN0IGJueDJ4X2Zhc3RwYXRoIHtcXG4gXFx0XFx0XFx0XFx0IE1BWF9UWF9ERVNDX0NOVCAqIE5FWFRfUEFHRV9UWF9ERVNDX0NOVClcXG4gLyogbWF4IEJEcyBwZXIgdHggcGFja2V0IHcvbyBuZXh0X3BhZ2VzOlxcbiAgKiBTVEFSVF9CRFxcdFxcdC0gZGVzY3JpYmVzIHBhY2tlZFxcbi0gKiBTVEFSVF9CRChzcGxpdHRlZClcXHQtIGluY2x1ZGVzIHVucGFnZWQgZGF0YSBzZWdtZW50IGZvciBHU09cXG4rICogU1RBUlRfQkQoc3BsaXQpXFx0LSBpbmNsdWRlcyB1bnBhZ2VkIGRhdGEgc2VnbWVudCBmb3IgR1NPXFxuICAqIFBBUlNJTkdfQkRcXHRcXHQtIGZvciBUU08gYW5kIENTVU0gZGF0YVxcbiAgKiBQQVJTSU5HX0JEMlxcdFxcdC0gZm9yIGVuY2Fwc3VsYXRpb24gZGF0YVxcbiAgKiBGcmFnIEJEc1xcdFxcdC0gZGVzY3JpYmVzIHBhZ2VzIGZvciBmcmFnc1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2RjYi5jXFxuaW5kZXggOWFmODE2MzBjOGE0NC4uM2RmOGE1OTg4NTIxOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2RjYi5jXFxuQEAgLTE5ODYsNyArMTk4Niw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2RjYm5sX3NldF9wZ190Y2NmZ190eChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcHJpbyxcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0LyoqXFxuLVxcdCAqIGJ3X3BjdCBpZ25vcmVkIC1cXHRiYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGV2aXNpb24gYmV0d2VlbiB1c2VyXFxuK1xcdCAqIGJ3X3BjdCBpZ25vcmVkIC1cXHRiYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGl2aXNpb24gYmV0d2VlbiB1c2VyXFxuIFxcdCAqXFx0XFx0XFx0cHJpb3JpdGllcyB3aXRoaW4gdGhlIHNhbWUgZ3JvdXAgaXMgbm90XFxuIFxcdCAqXFx0XFx0XFx0c3RhbmRhcmQgYW5kIGhlbmNlIG5vdCBzdXBwb3J0ZWRcXG4gXFx0ICpcXG5AQCAtMjAzOCw3ICsyMDM4LDcgQEAgc3RhdGljIHZvaWQgYm54MnhfZGNibmxfZ2V0X3BnX3RjY2ZnX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwcmlvLFxcbiBcXHREUChCTlgyWF9NU0dfRENCLCBcXFwicHJpbyA9ICVkXFxcXG5cXFwiLCBwcmlvKTtcXG4gXFxuIFxcdC8qKlxcbi1cXHQgKiBid19wY3QgaWdub3JlZCAtXFx0YmFuZC13aWR0aCBwZXJjZW50YWdlIGRldmlzaW9uIGJldHdlZW4gdXNlclxcbitcXHQgKiBid19wY3QgaWdub3JlZCAtXFx0YmFuZC13aWR0aCBwZXJjZW50YWdlIGRpdmlzaW9uIGJldHdlZW4gdXNlclxcbiBcXHQgKlxcdFxcdFxcdHByaW9yaXRpZXMgd2l0aGluIHRoZSBzYW1lIGdyb3VwIGlzIG5vdFxcbiBcXHQgKlxcdFxcdFxcdHN0YW5kYXJkIGFuZCBoZW5jZSBub3Qgc3VwcG9ydGVkXFxuIFxcdCAqXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmhcXG5pbmRleCA2MTFlZmVlNzU4MzQwLi41Mjk3YWI1NzhhNmYwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmhcXG5AQCAtMjM0Miw3ICsyMzQyLDcgQEAgc3RydWN0IHNobWVtMl9yZWdpb24ge1xcbiBcXHRcXHR1MzIgb2VtX2kyY19kYXRhX2FkZHI7XFxuIFxcdH07XFxuIFxcbi1cXHQvKiA5IGVudGlyZXMgZm9yIHRoZSBDMlMgUENQIG1hcCBmb3IgZWFjaCBpbm5lciBWTEFOIFBDUCArIDEgZGVmYXVsdCAqL1xcbitcXHQvKiA5IGVudHJpZXMgZm9yIHRoZSBDMlMgUENQIG1hcCBmb3IgZWFjaCBpbm5lciBWTEFOIFBDUCArIDEgZGVmYXVsdCAqL1xcbiBcXHQvKiBGb3IgUENQIHZhbHVlcyAwLTMgdXNlIHRoZSBtYXAgbG93ZXIgKi9cXG4gXFx0LyogMHhGRjAwMDAwMCAtIFBDUCAwLCAweDAwRkYwMDAwIC0gUENQIDEsXFxuIFxcdCAqIDB4MDAwMEZGMDAgLSBQQ1AgMiwgMHgwMDAwMDBGRiBQQ1AgM1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9pbml0X29wcy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaFxcbmluZGV4IGZjN2ZjZTY0MjY2NmMuLmI1MDA0YWFiMTI0ZGMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmhcXG5AQCAtNTgyLDcgKzU4Miw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2luaXRfcHhwX2FyYihzdHJ1Y3QgYm54MnggKmJwLCBpbnQgcl9vcmRlcixcXG4gXFx0XFx0UkVHX1dSKGJwLCBQWFAyX1JFR19XUl9DRFVfTVBTLCB2YWwpO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBWYWxpZGF0ZSBudW1iZXIgb2YgdGFncyBzdXBwb3RlZCBieSBkZXZpY2UgKi9cXG4rXFx0LyogVmFsaWRhdGUgbnVtYmVyIG9mIHRhZ3Mgc3VwcG9ydGVkIGJ5IGRldmljZSAqL1xcbiAjZGVmaW5lIFBDSUVfUkVHX1BDSUVSX1RMX0hEUl9GQ19TVFxcdFxcdDB4Mjk4MFxcbiBcXHR2YWwgPSBSRUdfUkQoYnAsIFBDSUVfUkVHX1BDSUVSX1RMX0hEUl9GQ19TVCk7XFxuIFxcdHZhbCBcXHUwMDI2PSAweEZGO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmNcXG5pbmRleCBlYTMxMDA1N2ZlM2FmLi44NGQwMDJiMzE5MjBiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuY1xcbkBAIC0yNTM2LDcgKzI1MzYsNyBAQCBzdGF0aWMgaW50IGJueDJ4X3BiZl91cGRhdGUoc3RydWN0IGxpbmtfcGFyYW1zICpwYXJhbXMsIHUzMiBmbG93X2N0cmwsXFxuIH1cXG4gXFxuIC8qKlxcbi0gKiBibngyeF9nZXRfZW1hY19iYXNlIC0gcmV0cml2ZSBlbWFjIGJhc2UgYWRkcmVzc1xcbisgKiBibngyeF9nZXRfZW1hY19iYXNlIC0gcmV0cmlldmUgZW1hYyBiYXNlIGFkZHJlc3NcXG4gICpcXG4gICogQGJwOlxcdFxcdFxcdGRyaXZlciBoYW5kbGVcXG4gICogQG1kY19tZGlvX2FjY2VzczpcXHRhY2Nlc3MgdHlwZVxcbkBAIC0zNTkzLDcgKzM1OTMsNyBAQCBzdGF0aWMgdTggYm54MnhfZXh0X3BoeV9yZXNvbHZlX2ZjKHN0cnVjdCBibngyeF9waHkgKnBoeSxcXG4gXFx0dTggcmV0ID0gMDtcXG4gXFx0dmFycy1cXHUwMDNlZmxvd19jdHJsID0gQk5YMlhfRkxPV19DVFJMX05PTkU7XFxuIFxcdGlmIChwaHktXFx1MDAzZXJlcV9mbG93X2N0cmwgIT0gQk5YMlhfRkxPV19DVFJMX0FVVE8pIHtcXG4tXFx0XFx0LyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGVkIG9mIExEL0xQIGluIEFOICovXFxuK1xcdFxcdC8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xsZWQgb2YgTEQvTFAgaW4gQU4gKi9cXG4gXFx0XFx0aWYgKHBoeS1cXHUwMDNlcmVxX2xpbmVfc3BlZWQgPT0gU1BFRURfQVVUT19ORUcpXFxuIFxcdFxcdFxcdGJueDJ4X2V4dF9waHlfdXBkYXRlX2Fkdl9mYyhwaHksIHBhcmFtcywgdmFycyk7XFxuIFxcdFxcdC8qIEJ1dCBzZXQgdGhlIGZsb3ctY29udHJvbCByZXN1bHQgYXMgdGhlIHJlcXVlc3RlZCBvbmUgKi9cXG5AQCAtMzc0Myw3ICszNzQzLDcgQEAgc3RhdGljIHZvaWQgYm54Mnhfd2FycGNvcmVfZW5hYmxlX0FOX0tSKHN0cnVjdCBibngyeF9waHkgKnBoeSxcXG4gXFx0XFx0e01ESU9fV0NfREVWQUQsIE1ESU9fV0NfUkVHX0NMNzJfVVNFUkIwX0NMNzJfVFhfRklSX1RBUCwgMH0sXFxuIFxcdH07XFxuIFxcdERQKE5FVElGX01TR19MSU5LLCBcXFwiRW5hYmxlIEF1dG8gTmVnb3RpYXRpb24gZm9yIEtSXFxcXG5cXFwiKTtcXG4tXFx0LyogU2V0IHRvIGRlZmF1bHQgcmVnaXN0ZXJzIHRoYXQgbWF5IGJlIG92ZXJyaWRlbiBieSAxMEcgZm9yY2UgKi9cXG4rXFx0LyogU2V0IHRvIGRlZmF1bHQgcmVnaXN0ZXJzIHRoYXQgbWF5IGJlIG92ZXJyaWRkZW4gYnkgMTBHIGZvcmNlICovXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHJlZ19zZXQpOyBpKyspXFxuIFxcdFxcdGJueDJ4X2NsNDVfd3JpdGUoYnAsIHBoeSwgcmVnX3NldFtpXS5kZXZhZCwgcmVnX3NldFtpXS5yZWcsXFxuIFxcdFxcdFxcdFxcdCByZWdfc2V0W2ldLnZhbCk7XFxuQEAgLTU0MjUsNyArNTQyNSw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2Zsb3dfY3RybF9yZXNvbHZlKHN0cnVjdCBibngyeF9waHkgKnBoeSxcXG4gXFxuIFxcdC8qIFJlc29sdmUgZnJvbSBncF9zdGF0dXMgaW4gY2FzZSBvZiBBTiBjb21wbGV0ZSBhbmQgbm90IHNnbWlpICovXFxuIFxcdGlmIChwaHktXFx1MDAzZXJlcV9mbG93X2N0cmwgIT0gQk5YMlhfRkxPV19DVFJMX0FVVE8pIHtcXG4tXFx0XFx0LyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGVkIG9mIExEL0xQIGluIEFOICovXFxuK1xcdFxcdC8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xsZWQgb2YgTEQvTFAgaW4gQU4gKi9cXG4gXFx0XFx0aWYgKHBoeS1cXHUwMDNlcmVxX2xpbmVfc3BlZWQgPT0gU1BFRURfQVVUT19ORUcpXFxuIFxcdFxcdFxcdGJueDJ4X3VwZGF0ZV9hZHZfZmMocGh5LCBwYXJhbXMsIHZhcnMsIGdwX3N0YXR1cyk7XFxuIFxcdFxcdC8qIEJ1dCBzZXQgdGhlIGZsb3ctY29udHJvbCByZXN1bHQgYXMgdGhlIHJlcXVlc3RlZCBvbmUgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jXFxuaW5kZXggMzllYjZhYjVmODA1OC4uMjc3YzdiZDljNmU3NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmNcXG5AQCAtMTI2NjksNyArMTI2NjksNyBAQCBzdGF0aWMgaW50IGJueDJ4X3NldF9tY19saXN0KHN0cnVjdCBibngyeCAqYnApXFxuIFxcdFxcdGlmIChyYylcXG4gXFx0XFx0XFx0cmV0dXJuIHJjO1xcbiBcXG4tXFx0XFx0LyogT3ZlcnJpZGUgdGhlIGN1cmVudGx5IGNvbmZpZ3VyZWQgc2V0IG9mIG1jIGZpbHRlcnMgKi9cXG4rXFx0XFx0LyogT3ZlcnJpZGUgdGhlIGN1cnJlbnRseSBjb25maWd1cmVkIHNldCBvZiBtYyBmaWx0ZXJzICovXFxuIFxcdFxcdHJjID0gYm54MnhfY29uZmlnX21jYXN0KGJwLCBcXHUwMDI2cnBhcmFtLFxcbiBcXHRcXHRcXHRcXHRcXHRCTlgyWF9NQ0FTVF9DTURfU0VUKTtcXG4gXFx0XFx0aWYgKHJjIFxcdTAwM2MgMClcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaFxcbmluZGV4IGEwMThmMjUxZDE5ODYuLjMwOTQzZjM0NzE2NDIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaFxcbkBAIC0yMjM2LDcgKzIyMzYsNyBAQCBleHRlcm4gY29uc3QgdTMyIGRtYWVfcmVnX2dvX2NbXTtcXG4gLyogW1JXIDFdIE91dHB1dCBlbmFibGUgZm9yIFRYIFBBVVNFIHNpZ25hbCB0byB0aGUgTUFDLiAqL1xcbiAjZGVmaW5lIE5JR19SRUdfUDBfTUFDX1BBVVNFX09VVF9FTlxcdFxcdFxcdFxcdCAweDE4NWI0XFxuIC8qIFtSVyAzMl0gRWlnaHQgNC1iaXQgY29uZmlndXJhdGlvbnMgZm9yIHNwZWNpZnlpbmcgd2hpY2ggQ09TICgwLTE1IGZvclxcbi0gKiBmdXR1cmUgZXhwYW5zaW9uKSBlYWNoIHByaW9ydHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZVxcbisgKiBmdXR1cmUgZXhwYW5zaW9uKSBlYWNoIHByaW9yaXR5IGlzIHRvIGJlIG1hcHBlZCB0by4gQml0cyAzOjAgc3BlY2lmeSB0aGVcXG4gICogQ09TIGZvciBwcmlvcml0eSAwLiBCaXRzIDMxOjI4IHNwZWNpZnkgdGhlIENPUyBmb3IgcHJpb3JpdHkgNy4gVGhlIDMtYml0XFxuICAqIHByaW9yaXR5IGZpZWxkIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSBvdXRlci1tb3N0IFZMQU4gaW4gcmVjZWl2ZSBwYWNrZXQuXFxuICAqIE9ubHkgQ09TIDAgYW5kIENPUyAxIGFyZSBzdXBwb3J0ZWQgaW4gRTIuICovXFxuQEAgLTI0MzQsNyArMjQzNCw3IEBAIGV4dGVybiBjb25zdCB1MzIgZG1hZV9yZWdfZ29fY1tdO1xcbiAvKiBbUlcgMV0gT3V0cHV0IGVuYWJsZSBmb3IgVFggUEFVU0Ugc2lnbmFsIHRvIHRoZSBNQUMuICovXFxuICNkZWZpbmUgTklHX1JFR19QMV9NQUNfUEFVU0VfT1VUX0VOXFx0XFx0XFx0XFx0IDB4MTg1YzhcXG4gLyogW1JXIDMyXSBFaWdodCA0LWJpdCBjb25maWd1cmF0aW9ucyBmb3Igc3BlY2lmeWluZyB3aGljaCBDT1MgKDAtMTUgZm9yXFxuLSAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3J0eSBpcyB0byBiZSBtYXBwZWQgdG8uIEJpdHMgMzowIHNwZWNpZnkgdGhlXFxuKyAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3JpdHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZVxcbiAgKiBDT1MgZm9yIHByaW9yaXR5IDAuIEJpdHMgMzE6Mjggc3BlY2lmeSB0aGUgQ09TIGZvciBwcmlvcml0eSA3LiBUaGUgMy1iaXRcXG4gICogcHJpb3JpdHkgZmllbGQgaXMgZXh0cmFjdGVkIGZyb20gdGhlIG91dGVyLW1vc3QgVkxBTiBpbiByZWNlaXZlIHBhY2tldC5cXG4gICogT25seSBDT1MgMCBhbmQgQ09TIDEgYXJlIHN1cHBvcnRlZCBpbiBFMi4gKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuNjZ4eF9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmNcXG5pbmRleCA5M2ZjY2ZlYzI4OGQ0Li5kM2ViYmI0MDU3OWU0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY242Nnh4X2RldmljZS5jXFxuQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgdm9pZCBsaW9fY242Nnh4X3NldHVwX3BrdF9jdGxfcmVncyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0KVxcbiBcXG4gXFx0LyogNjZYWCBTUEVDSUZJQyAqL1xcbiBcXHRpZiAoQ0ZHX0dFVF9PUV9NQVhfUShjbjZ4eHgtXFx1MDAzZWNvbmYpIFxcdTAwM2M9IDQpXFxuLVxcdFxcdC8qIERpc2FibGUgUklOR19FTiBpZiBvbmx5IHVwdG8gNCByaW5ncyBhcmUgdXNlZC4gKi9cXG4rXFx0XFx0LyogRGlzYWJsZSBSSU5HX0VOIGlmIG9ubHkgdXAgdG8gNCByaW5ncyBhcmUgdXNlZC4gKi9cXG4gXFx0XFx0cGt0Y3RsIFxcdTAwMjY9IH4oMSBcXHUwMDNjXFx1MDAzYyA0KTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRwa3RjdGwgfD0gKDEgXFx1MDAzY1xcdTAwM2MgNCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmNcXG5pbmRleCA5M2IwNmQ1OTllZWQ2Li5iZWQ0NTBiZmFkMzgzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmNcXG5AQCAtNTY1LDcgKzU2NSw3IEBAIHN0YXRpYyBpbnQgb2N0ZW9uX3NldHVwX2Ryb3Eoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCwgaW50IHFfbm8sIGludCBudW1fZGVzY3MsXFxuIH1cXG4gXFxuIC8qKlxcbi0gKiBsaXF1aWRpb19wdXNoX3BhY2tldCAtIFJvdXRpbmUgdG8gcHVzaCBwYWNrZXRzIGFycml2aW5nIG9uIE9jdGVvbiBpbnRlcmZhY2UgdXB0byBuZXR3b3JrIGxheWVyLlxcbisgKiBsaXF1aWRpb19wdXNoX3BhY2tldCAtIFJvdXRpbmUgdG8gcHVzaCBwYWNrZXRzIGFycml2aW5nIG9uIE9jdGVvbiBpbnRlcmZhY2UgdXAgdG8gbmV0d29yayBsYXllci5cXG4gICogQG9jdGVvbl9pZDpvY3Rlb24gZGV2aWNlIGlkLlxcbiAgKiBAc2tidWZmOiAgIHNrYnVmZiBzdHJ1Y3QgdG8gYmUgcGFzc2VkIHRvIG5ldHdvcmsgbGF5ZXIuXFxuICAqIEBsZW46ICAgICAgc2l6ZSBvZiB0b3RhbCBkYXRhIHJlY2VpdmVkLlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbmZpZy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25maWcuaFxcbmluZGV4IDI0YzIxMjAwMTIxMjEuLmQyZDY0ZWRhZjNiZjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25maWcuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uZmlnLmhcXG5AQCAtMjU0LDcgKzI1NCw3IEBAIHN0cnVjdCBvY3Rlb25fb3FfY29uZmlnIHtcXG4gXFx0dTY0IHBrdHNfcGVyX2ludHI6MTY7XFxuIFxcbiBcXHQvKiogSW50ZXJydXB0IENvYWxlc2NpbmcgKFRpbWUgSW50ZXJ2YWwpLiBPY3Rlb24gd2lsbCBpbnRlcnJ1cHQgdGhlXFxuLVxcdCAqICBob3N0IGlmIGF0bGVhc3Qgb25lIHBhY2tldCB3YXMgc2VudCBpbiB0aGUgdGltZSBpbnRlcnZhbCBzcGVjaWZpZWRcXG4rXFx0ICogIGhvc3QgaWYgYXQgbGVhc3Qgb25lIHBhY2tldCB3YXMgc2VudCBpbiB0aGUgdGltZSBpbnRlcnZhbCBzcGVjaWZpZWRcXG4gXFx0ICogIGJ5IHRoaXMgZmllbGQuIFRoZSBkcml2ZXIgdXNlcyB0aW1lIGludGVydmFsIGludGVycnVwdCBjb2FsZXNjaW5nXFxuIFxcdCAqICBieSBkZWZhdWx0LiBUaGUgdGltZSBpcyBzcGVjaWZpZWQgaW4gbWljcm9zZWNvbmRzLlxcbiBcXHQgKi9cXG5AQCAtMjk2LDcgKzI5Niw3IEBAIHN0cnVjdCBvY3Rlb25fb3FfY29uZmlnIHtcXG4gXFx0dTY0IG9xX2ludHJfcGt0OjE2O1xcbiBcXG4gXFx0LyoqIEludGVycnVwdCBDb2FsZXNjaW5nIChUaW1lIEludGVydmFsKS4gT2N0ZW9uIHdpbGwgaW50ZXJydXB0IHRoZVxcbi1cXHQgKiAgaG9zdCBpZiBhdGxlYXN0IG9uZSBwYWNrZXQgd2FzIHNlbnQgaW4gdGhlIHRpbWUgaW50ZXJ2YWwgc3BlY2lmaWVkXFxuK1xcdCAqICBob3N0IGlmIGF0IGxlYXN0IG9uZSBwYWNrZXQgd2FzIHNlbnQgaW4gdGhlIHRpbWUgaW50ZXJ2YWwgc3BlY2lmaWVkXFxuIFxcdCAqICBieSB0aGlzIGZpZWxkLiBUaGUgZHJpdmVyIHVzZXMgdGltZSBpbnRlcnZhbCBpbnRlcnJ1cHQgY29hbGVzY2luZ1xcbiBcXHQgKiAgYnkgZGVmYXVsdC4gIFRoZSB0aW1lIGlzIHNwZWNpZmllZCBpbiBtaWNyb3NlY29uZHMuXFxuIFxcdCAqL1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2lxLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2lxLmhcXG5pbmRleCBhMDRmMzZhMGUxYTA4Li5mZGQ3ZDNhNzdhMmRjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25faXEuaFxcbkBAIC03MCw3ICs3MCw3IEBAIHN0cnVjdCBvY3RfaXFfc3RhdHMge1xcbiBcXG4gLyoqIFRoZSBpbnN0cnVjdGlvbiAoaW5wdXQpIHF1ZXVlLlxcbiAgKiAgVGhlIGlucHV0IHF1ZXVlIGlzIHVzZWQgdG8gcG9zdCByYXcgKGluc3RydWN0aW9uKSBtb2RlIGRhdGEgb3IgcGFja2V0XFxuLSAqICBkYXRhIHRvIE9jdGVvbiBkZXZpY2UgZnJvbSB0aGUgaG9zdC4gRWFjaCBpbnB1dCBxdWV1ZSAodXB0byA0KSBmb3JcXG4rICogIGRhdGEgdG8gT2N0ZW9uIGRldmljZSBmcm9tIHRoZSBob3N0LiBFYWNoIGlucHV0IHF1ZXVlICh1cCB0byA0KSBmb3JcXG4gICogIGEgT2N0ZW9uIGRldmljZSBoYXMgb25lIHN1Y2ggc3RydWN0dXJlIHRvIHJlcHJlc2VudCBpdC5cXG4gICovXFxuIHN0cnVjdCBvY3Rlb25faW5zdHJfcXVldWUge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oXFxuaW5kZXggOTUzZWRmMGM3MDk2Yy4uZDJhNTI2NzNjYWM1OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haW4uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oXFxuQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIGludCBvY3Rlb25fbWFwX3BjaV9iYXJ4KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsXFxuICAqIGVycm5vIC1FSU5UUjogdXNlciBhYm9ydCB0aGUgY29tbWFuZC5cXG4gICogZXJybm8gLUVUSU1FOiB1c2VyIHNwZWZpZmllZCB0aW1lb3V0IHZhbHVlIGhhcyBiZWVuIGV4cGlyZWQuXFxuICAqIGVycm5vIC1FQlVTWTogdGhlIHJlc3BvbnNlIG9mIHRoZSByZXF1ZXN0IGRvZXMgbm90IHJldHVybiBpblxcbi0gKiAgICAgICAgICAgICAgIHJlc29uYWJsZSB0aW1lIChMSU9fU0NfTUFYX1RNT19NUykuXFxuKyAqICAgICAgICAgICAgICAgcmVhc29uYWJsZSB0aW1lIChMSU9fU0NfTUFYX1RNT19NUykuXFxuICAqICAgICAgICAgICAgICAgdGhlIHNjIHdsbCBiZSBtb3ZlIHRvIHpvbWJpZSByZXNwb25zZSBsaXN0IGJ5XFxuICAqICAgICAgICAgICAgICAgbGlvX3Byb2Nlc3Nfb3JkZXJlZF9saXN0KClcXG4gICpcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uaWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmljLmhcXG5pbmRleCBjMTM5ZmM0MjM3NjRlLi44MzQxZmFhYTBjMjQ0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmljLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25pYy5oXFxuQEAgLTI3Nyw3ICsyNzcsNyBAQCBpbnQgb2N0bmV0X3NlbmRfbmljX2RhdGFfcGt0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsXFxuIFxcbiAvKiogU2VuZCBhIE5JQyBjb250cm9sIHBhY2tldCB0byB0aGUgZGV2aWNlXFxuICAqIEBwYXJhbSBvY3QgLSBvY3Rlb24gZGV2aWNlIHBvaW50ZXJcXG4tICogQHBhcmFtIG5jdHJsIC0gY29udHJvbCBzdHJ1Y3R1cmUgd2l0aCBjb21tYW5kLCB0aW1vdXQsIGFuZCBjYWxsYmFjayBpbmZvXFxuKyAqIEBwYXJhbSBuY3RybCAtIGNvbnRyb2wgc3RydWN0dXJlIHdpdGggY29tbWFuZCwgdGltZW91dCwgYW5kIGNhbGxiYWNrIGluZm9cXG4gICogQHJldHVybnMgSVFfRkFJTEVEIGlmIGl0IGZhaWxlZCB0byBhZGQgdG8gdGhlIGlucHV0IHF1ZXVlLiBJUV9TVE9QIGlmIHRoZVxcbiAgKiBxdWV1ZSBzaG91bGQgYmUgc3RvcHBlZCwgYW5kIElRX1NFTkRfT0sgaWYgaXQgc2VudCBva2F5LlxcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jXFxuaW5kZXggZDdjZmIyMGVlYTAwYy4uYTk4M2U3Zjc5NDYxZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vcmVxdWVzdF9tYW5hZ2VyLmNcXG5AQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgdm9pZCAgX19jaGVja19kYl90aW1lb3V0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsIHU2NCBpcV9ubyk7XFxuIFxcbiBzdGF0aWMgdm9pZCAoKnJlcXR5cGVfZnJlZV9mbltNQVhfT0NURU9OX0RFVklDRVNdW1JFUVRZUEVfTEFTVCArIDFdKSAodm9pZCAqKTtcXG4gXFxuLS8qIERlZmluZSB0aGlzIHRvIHJldHVybiB0aGUgcmVxdWVzdCBzdGF0dXMgY29tYXB0aWJsZSB0byBvbGQgY29kZSAqL1xcbisvKiBEZWZpbmUgdGhpcyB0byByZXR1cm4gdGhlIHJlcXVlc3Qgc3RhdHVzIGNvbXBhdGlibGUgdG8gb2xkIGNvZGUgKi9cXG4gLyojZGVmaW5lIE9DVEVPTl9VU0VfT0xEX1JFUV9TVEFUVVMqL1xcbiBcXG4gLyogUmV0dXJuIDAgb24gc3VjY2VzcywgMSBvbiBmYWlsdXJlICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmhcXG5pbmRleCAwOTBkNmI4Mzk4MmEyLi5iYjNmNGZhNmI5OTU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pYy5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmhcXG5AQCAtOTcsNyArOTcsNyBAQFxcbiAgKiBUaGlzIHZhbHVlIGVuc3VyZXMgdGhhdCBvbmNlIGEgcGFja2V0IGhhcyBiZWVuIFxcXCJhY2NlcHRlZFxcXCJcXG4gICogZm9yIHJlY2VwdGlvbiBpdCB3aWxsIG5vdCBnZXQgZHJvcHBlZCBkdWUgdG8gbm9uLWF2YWlsYWJpbGl0eVxcbiAgKiBvZiBDUSBkZXNjcmlwdG9yLiBBbiBlcnJhdGEgaW4gSFcgbWFuZGF0ZXMgdGhpcyB2YWx1ZSB0byBiZVxcbi0gKiBhdGxlYXN0IDB4MTAwLlxcbisgKiBhdCBsZWFzdCAweDEwMC5cXG4gICovXFxuICNkZWZpbmUgTklDUEZfQ1FNX01JTl9EUk9QX0xFVkVMICAgICAgIDB4MTAwXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uY1xcbmluZGV4IDBlYzY1ZWM2MzRkZjUuLjA4NmYzMmI2MTU4MGQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmNcXG5AQCAtNTk1LDcgKzU5NSw3IEBAIHN0YXRpYyB2b2lkIG5pY19jb25maWdfcnNzKHN0cnVjdCBuaWNwZiAqbmljLCBzdHJ1Y3QgcnNzX2NmZ19tc2cgKmNmZylcXG4gXFx0bmljX3JlZ193cml0ZShuaWMsIGlkeF9hZGRyIHwgKGNwaV9iYXNlIFxcdTAwM2NcXHUwMDNjIDMpLCBjcGlfY2ZnKTtcXG4gfVxcbiBcXG4tLyogNCBsZXZlbCB0cmFuc21pdCBzaWRlIHNjaGVkdWxlciBjb25maWd1dGF0aW9uXFxuKy8qIDQgbGV2ZWwgdHJhbnNtaXQgc2lkZSBzY2hlZHVsZXIgY29uZmlndXJhdGlvblxcbiAgKiBmb3IgVE5TIGJ5cGFzcyBtb2RlXFxuICAqXFxuICAqIFNhbXBsZSBjb25maWd1cmF0aW9uIGZvciBTUTAgb24gODh4eFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguY1xcbmluZGV4IGYzOGExMGM3OTkwN2YuLmZhNTJlMDk5NDA5YzUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmNcXG5AQCAtMzczLDcgKzM3Myw3IEBAIHN0YXRpYyB2b2lkIGRlX3J4X2Vycl9hY2N0IChzdHJ1Y3QgZGVfcHJpdmF0ZSAqZGUsIHVuc2lnbmVkIHJ4X3RhaWwsXFxuIFxcdFxcdCAgcnhfdGFpbCwgc3RhdHVzLCBsZW4pO1xcbiBcXG4gXFx0aWYgKChzdGF0dXMgXFx1MDAyNiAweDM4MDAwMzAwKSAhPSAweDAzMDApIHtcXG4tXFx0XFx0LyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cXG4rXFx0XFx0LyogSWdub3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cXG4gXFx0XFx0aWYgKChzdGF0dXMgXFx1MDAyNiAweGZmZmYpICE9IDB4N2ZmZikge1xcbiBcXHRcXHRcXHRuZXRpZl93YXJuKGRlLCByeF9lcnIsIGRlLVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcdCAgIFxcXCJPdmVyc2l6ZWQgRXRoZXJuZXQgZnJhbWUgc3Bhbm5lZCBtdWx0aXBsZSBidWZmZXJzLCBzdGF0dXMgJTA4eCFcXFxcblxcXCIsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuY1xcbmluZGV4IDBhMTJjYjliM2JhNzguLjhjMDI3NzFiMjhlNGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2ludGVycnVwdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2ludGVycnVwdC5jXFxuQEAgLTE3Nyw3ICsxNzcsNyBAQCBpbnQgdHVsaXBfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuIFxcdFxcdFxcdCAgIHBrdF9sZW4gXFx1MDAzZSAxNTE4KSB7XFxuIFxcdFxcdFxcdCAgICAgICBpZiAoKHN0YXR1cyBcXHUwMDI2IChSeExlbmd0aE92ZXIyMDQ3IHxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgUnhXaG9sZVBrdCkpICE9IFJ4V2hvbGVQa3QpIHtcXG4tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbmdvcmUgZWFybGllciBidWZmZXJzLiAqL1xcbisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc3RhdHVzIFxcdTAwMjYgMHhmZmZmKSAhPSAweDdmZmYpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHVsaXBfZGVidWcgXFx1MDAzZSAxKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X3dhcm4oXFx1MDAyNmRldi1cXHUwMDNlZGV2LFxcbkBAIC00MDgsNyArNDA4LDcgQEAgc3RhdGljIGludCB0dWxpcF9yeChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRcXHQgICAgcGt0X2xlbiBcXHUwMDNlIDE1MTgpIHtcXG4gXFx0XFx0XFx0aWYgKChzdGF0dXMgXFx1MDAyNiAoUnhMZW5ndGhPdmVyMjA0NyB8XFxuIFxcdFxcdFxcdCAgICAgUnhXaG9sZVBrdCkpICAgICAgICAgIT0gUnhXaG9sZVBrdCkge1xcbi1cXHRcXHRcXHRcXHQvKiBJbmdvcmUgZWFybGllciBidWZmZXJzLiAqL1xcbitcXHRcXHRcXHRcXHQvKiBJZ25vcmUgZWFybGllciBidWZmZXJzLiAqL1xcbiBcXHRcXHRcXHRcXHRpZiAoKHN0YXR1cyBcXHUwMDI2IDB4ZmZmZikgIT0gMHg3ZmZmKSB7XFxuIFxcdFxcdFxcdFxcdFxcdGlmICh0dWxpcF9kZWJ1ZyBcXHUwMDNlIDEpXFxuIFxcdFxcdFxcdFxcdFxcdFxcdG5ldGRldl93YXJuKGRldixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL21lZGlhLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuY1xcbmluZGV4IDU1ZDZmYzk5ZjQwYjYuLjBjOTY5NGQyYjM4YWUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL21lZGlhLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuY1xcbkBAIC0yNCw3ICsyNCw3IEBAXFxuIFxcbiAvKiBSZWFkIGFuZCB3cml0ZSB0aGUgTUlJIHJlZ2lzdGVycyB1c2luZyBzb2Z0d2FyZS1nZW5lcmF0ZWQgc2VyaWFsXFxuICAgIE1ESU8gcHJvdG9jb2wuICBJdCBpcyBqdXN0IGRpZmZlcmVudCBlbm91Z2ggZnJvbSB0aGUgRUVQUk9NIHByb3RvY29sXFxuLSAgIHRvIG5vdCBzaGFyZSBjb2RlLiAgVGhlIG1heGl1bSBkYXRhIGNsb2NrIHJhdGUgaXMgMi41IE1oei4gKi9cXG4rICAgdG8gbm90IHNoYXJlIGNvZGUuICBUaGUgbWF4aW11bSBkYXRhIGNsb2NrIHJhdGUgaXMgMi41IE1oei4gKi9cXG4gI2RlZmluZSBNRElPX1NISUZUX0NMS1xcdFxcdDB4MTAwMDBcXG4gI2RlZmluZSBNRElPX0RBVEFfV1JJVEUwXFx0MHgwMDAwMFxcbiAjZGVmaW5lIE1ESU9fREFUQV9XUklURTFcXHQweDIwMDAwXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3R1bGlwLmhcXG5pbmRleCA1ZTAxMGUxZmE2Zjc5Li5lMzllNWM3OGQ0Y2NkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3R1bGlwLmhcXG5AQCAtMjUwLDcgKzI1MCw3IEBAIGVudW0gdDIxMTQzX2NzcjZfYml0cyB7XFxuIFxcdGNzcjZfdHRtID0gKDFcXHUwMDNjXFx1MDAzYzIyKSwgIC8qIFRyYW5zbWl0IFRocmVzaG9sZCBNb2RlLCBzZXQgZm9yIDEwYmFzZVQsIDAgZm9yIDEwMEJhc2VUWCAqL1xcbiBcXHRjc3I2X3NmID0gKDFcXHUwMDNjXFx1MDAzYzIxKSwgICAvKiBTdG9yZSBhbmQgZm9yd2FyZC4gSWYgc2V0IGlnbm9yZXMgVFIgYml0cyAqL1xcbiBcXHRjc3I2X2hiZCA9ICgxXFx1MDAzY1xcdTAwM2MxOSksICAvKiBIZWFydCBiZWF0IGRpc2FibGUuIERpc2FibGVzIFNRRSBmdW5jdGlvbiBpbiAxMGJhc2VUICovXFxuLVxcdGNzcjZfcHMgPSAoMVxcdTAwM2NcXHUwMDNjMTgpLCAgIC8qIFBvcnQgU2VsZWN0LiAwIChkZWZ1YWx0KSA9IDEwYmFzZVQsIDEgPSAxMDBiYXNlVFg6IGNhbid0IGJlIHNldCAqL1xcbitcXHRjc3I2X3BzID0gKDFcXHUwMDNjXFx1MDAzYzE4KSwgICAvKiBQb3J0IFNlbGVjdC4gMCAoZGVmYXVsdCkgPSAxMGJhc2VULCAxID0gMTAwYmFzZVRYOiBjYW4ndCBiZSBzZXQgKi9cXG4gXFx0Y3NyNl9jYSA9ICgxXFx1MDAzY1xcdTAwM2MxNyksICAgLyogQ29sbGlzaW9uIE9mZnNldCBFbmFibGUuIElmIHNldCB1c2VzIHNwZWNpYWwgYWxnb3JpdGhtIGluIGxvdyBjb2xsaXNpb24gc2l0dWF0aW9ucyAqL1xcbiBcXHRjc3I2X3RyaCA9ICgxXFx1MDAzY1xcdTAwM2MxNSksICAvKiBUcmFuc21pdCBUaHJlc2hvbGQgaGlnaCBiaXQgKi9cXG4gXFx0Y3NyNl90cmwgPSAoMVxcdTAwM2NcXHUwMDNjMTQpLCAgLyogVHJhbnNtaXQgVGhyZXNob2xkIGxvdyBiaXQgKi9cXG5AQCAtMjc0LDcgKzI3NCw3IEBAIGVudW0gdDIxMTQzX2NzcjZfYml0cyB7XFxuIFxcdGNzcjZfb21faW50X2xvb3AgPSAoMVxcdTAwM2NcXHUwMDNjMTApLCAvKiBpbnRlcm5hbCAoRklGTykgbG9vcGJhY2sgZmxhZyAqL1xcbiBcXHRjc3I2X29tX2V4dF9sb29wID0gKDFcXHUwMDNjXFx1MDAzYzExKSwgLyogZXh0ZXJuYWwgKFBNRCkgbG9vcGJhY2sgZmxhZyAqL1xcbiBcXHQvKiBzZXQgYm90aCBhbmQgeW91IGdldCAoUEhZKSBsb29wYmFjayAqL1xcbi1cXHRjc3I2X2ZkID0gKDFcXHUwMDNjXFx1MDAzYzkpLCAgICAvKiBGdWxsIGR1cGxleCBtb2RlLCBkaXNhYmxlcyBoZWFyYmVhdCwgbm8gbG9vcGJhY2sgKi9cXG4rXFx0Y3NyNl9mZCA9ICgxXFx1MDAzY1xcdTAwM2M5KSwgICAgLyogRnVsbCBkdXBsZXggbW9kZSwgZGlzYWJsZXMgaGVhcnRiZWF0LCBubyBsb29wYmFjayAqL1xcbiBcXHRjc3I2X3BtID0gKDFcXHUwMDNjXFx1MDAzYzcpLCAgICAvKiBQYXNzIEFsbCBNdWx0aWNhc3QgKi9cXG4gXFx0Y3NyNl9wciA9ICgxXFx1MDAzY1xcdTAwM2M2KSwgICAgLyogUHJvbWlzY3VvdXMgbW9kZSAqL1xcbiBcXHRjc3I2X3NiID0gKDFcXHUwMDNjXFx1MDAzYzUpLCAgICAvKiBTdGFydCgxKS9TdG9wKDApIGJhY2tvZmYgY291bnRlciAqL1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvd2luYm9uZC04NDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jXFxuaW5kZXggYTU1ODFmMWQwMTQxNy4uYmU5MTk5ZjU1YThhOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvd2luYm9uZC04NDAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jXFxuQEAgLTExODgsNyArMTE4OCw3IEBAIHN0YXRpYyBpbnQgbmV0ZGV2X3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRpZiAoKHN0YXR1cyBcXHUwMDI2IDB4MzgwMDgzMDApICE9IDB4MDMwMCkge1xcbiBcXHRcXHRcXHRpZiAoKHN0YXR1cyBcXHUwMDI2IDB4MzgwMDAzMDApICE9IDB4MDMwMCkge1xcbi1cXHRcXHRcXHRcXHQvKiBJbmdvcmUgZWFybGllciBidWZmZXJzLiAqL1xcbitcXHRcXHRcXHRcXHQvKiBJZ25vcmUgZWFybGllciBidWZmZXJzLiAqL1xcbiBcXHRcXHRcXHRcXHRpZiAoKHN0YXR1cyBcXHUwMDI2IDB4ZmZmZikgIT0gMHg3ZmZmKSB7XFxuIFxcdFxcdFxcdFxcdFxcdGRldl93YXJuKFxcdTAwMjZkZXYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IFxcXCJPdmVyc2l6ZWQgRXRoZXJuZXQgZnJhbWUgc3Bhbm5lZCBtdWx0aXBsZSBidWZmZXJzLCBlbnRyeSAlI3ggc3RhdHVzICUwNHghXFxcXG5cXFwiLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jXFxuaW5kZXggOTEzOTFhNDlmY2VhMi4uYTU5ZmQyODBhMDQ1YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jXFxuQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgaW50IGhuc19tYWNfY29uZmlnX3Nkc19sb29wYmFjayhzdHJ1Y3QgaG5zX21hY19jYiAqbWFjX2NiLCBib29sIGVuKVxcbiAjZGVmaW5lIEhJTElOS19BQ0NFU1NfU0VMX0NGR1xcdFxcdDB4NDAwMDhcXG4gXFx0XFx0XFx0LyogaGlsaW5rNCBcXHUwMDI2IGhpbGluazMgdXNlIHRoZSBzYW1lIHhnZSB0cmFpbmluZyBhbmRcXG4gXFx0XFx0XFx0ICogeGdlIHUgYWRhcHRvci4gVGhlcmUgaXMgYSBoaWxpbmsgYWNjZXNzIHNlbCBjZmdcXG4tXFx0XFx0XFx0ICogcmVnaXN0ZXIgdG8gc2VsZWN0IHdoaWNoIG9uZSB0byBiZSBjb25maWdlZFxcbitcXHRcXHRcXHQgKiByZWdpc3RlciB0byBzZWxlY3Qgd2hpY2ggb25lIHRvIGJlIGNvbmZpZ3VyZWRcXG4gXFx0XFx0XFx0ICovXFxuIFxcdFxcdFxcdGlmICgoIUhOU19EU0FGX0lTX0RFQlVHKG1hY19jYi1cXHUwMDNlZHNhZl9kZXYpKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICAgKG1hY19jYi1cXHUwMDNlbWFjX2lkIFxcdTAwM2M9IDMpKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX3BwZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9wcGUuY1xcbmluZGV4IDUwMTNiZWI0ZDI4MjUuLjQwOGQzNmQ4NWZiMTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9wcGUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfcHBlLmNcXG5AQCAtMTM5LDcgKzEzOSw3IEBAIHN0YXRpYyB2b2lkIGhuc19wcGVfc2V0X3ZsYW5fc3RyaXAoc3RydWN0IGhuc19wcGVfY2IgKnBwZV9jYiwgaW50IGVuKVxcbiB9XFxuIFxcbiAvKipcXG4tICogaG5zX3BwZV9jaGVja3N1bV9odyAtIHNldCBwcGUgY2hlY2tzdW0gY2FjdWxhdGVcXG4rICogaG5zX3BwZV9jaGVja3N1bV9odyAtIHNldCBwcGUgY2hlY2tzdW0gY2FsY3VsYXRlXFxuICAqIEBwcGVfY2I6IHBwZSBkZXZpY2VcXG4gICogQHZhbHVlOiB2YWx1ZVxcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jXFxuaW5kZXggZTkwNWYxMGI4OTRlOC4uZDgxOWQyYmIzNDUwNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmNcXG5AQCAtMTIzMCw3ICsxMjMwLDcgQEAgc3RhdGljIHZvaWQgaG5zX25pY191cGRhdGVfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4gXFx0aC1cXHUwMDNlZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXVwZGF0ZV9zdGF0cyhoLCBcXHUwMDI2bmV0ZGV2LVxcdTAwM2VzdGF0cyk7XFxuIH1cXG4gXFxuLS8qIHNldCBtYWMgYWRkciBpZiBpdCBpcyBjb25maWdlZC4gb3IgbGVhdmUgaXQgdG8gdGhlIEFFIGRyaXZlciAqL1xcbisvKiBzZXQgbWFjIGFkZHIgaWYgaXQgaXMgY29uZmlndXJlZC4gb3IgbGVhdmUgaXQgdG8gdGhlIEFFIGRyaXZlciAqL1xcbiBzdGF0aWMgdm9pZCBobnNfaW5pdF9tYWNfYWRkcihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgaG5zX25pY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmRldik7XFxuQEAgLTIzMTcsNyArMjMxNyw3IEBAIHN0YXRpYyBpbnQgaG5zX25pY19kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0cmV0ID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgXFxcInBvcnQtaWRcXFwiLCBcXHUwMDI2cG9ydF9pZCk7XFxuIFxcdFxcdGlmIChyZXQpXFxuIFxcdFxcdFxcdGdvdG8gb3V0X3JlYWRfcHJvcF9mYWlsO1xcbi1cXHRcXHQvKiBmb3Igb2xkIGR0cywgd2UgbmVlZCB0byBjYWN1bGF0ZSB0aGUgcG9ydCBvZmZzZXQgKi9cXG4rXFx0XFx0LyogZm9yIG9sZCBkdHMsIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBwb3J0IG9mZnNldCAqL1xcbiBcXHRcXHRwb3J0X2lkID0gcG9ydF9pZCBcXHUwMDNjIEhOU19TUlZfT0ZGU0VUID8gcG9ydF9pZCArIEhOU19ERUJVR19PRkZTRVRcXG4gXFx0XFx0XFx0OiBwb3J0X2lkIC0gSE5TX1NSVl9PRkZTRVQ7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tYWluLmNcXG5pbmRleCBlNmFmOTM5YzFjMTliLi5iZjM1ZjU1ZjViOGZhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWFpbi5jXFxuQEAgLTEwNTI3LDcgKzEwNTI3LDcgQEAgc3RhdGljIGludCBoY2xnZV9nZXRfbGlua19kaWFnbm9zaXNfaW5mbyhzdHJ1Y3QgaG5hZTNfaGFuZGxlICpoYW5kbGUsXFxuIH1cXG4gXFxuIC8qIEFmdGVyIGRpc2FibGUgc3Jpb3YsIFZGIHN0aWxsIGhhcyBzb21lIGNvbmZpZyBhbmQgaW5mbyBuZWVkIGNsZWFuLFxcbi0gKiB3aGljaCBjb25maWdlZCBieSBQRi5cXG4rICogd2hpY2ggY29uZmlndXJlZCBieSBQRi5cXG4gICovXFxuIHN0YXRpYyB2b2lkIGhjbGdlX2NsZWFyX3Zwb3J0X3ZmX2luZm8oc3RydWN0IGhjbGdlX3Zwb3J0ICp2cG9ydCwgaW50IHZmaWQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX3RtLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfdG0uY1xcbmluZGV4IDAwYzNmMjU0OGJmNmIuLmJmNTMzYjhmNDZhZTQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX3RtLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfdG0uY1xcbkBAIC0zNSw3ICszNSw3IEBAIGVudW0gaGNsZ2Vfc2hhcGVyX2xldmVsIHtcXG4gICogSVIoTWJwcykgPSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAqICBDTE9DSygxMDAwTWJwcylcXG4gICpcXHRcXHRUaWNrICogKDIgXiBJUl9zKVxcbiAgKlxcbi0gKiBAcmV0dXJuOiAwOiBjYWxjdWxhdGUgc3VjZXNzZnVsLCBuZWdhdGl2ZTogZmFpbFxcbisgKiBAcmV0dXJuOiAwOiBjYWxjdWxhdGUgc3VjY2Vzc2Z1bCwgbmVnYXRpdmU6IGZhaWxcXG4gICovXFxuIHN0YXRpYyBpbnQgaGNsZ2Vfc2hhcGVyX3BhcmFfY2FsYyh1MzIgaXIsIHU4IHNoYXBlcl9sZXZlbCxcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaGNsZ2Vfc2hhcGVyX2lyX3BhcmEgKmlyX3BhcmEsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczN2Zi9oY2xnZXZmX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczN2Zi9oY2xnZXZmX21haW4uY1xcbmluZGV4IDA2M2E2OTJjMmI0MWUuLjVkMTRkMjliMDI5NjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jXFxuQEAgLTE4ODAsNyArMTg4MCw3IEBAIHN0YXRpYyB2b2lkIGhjbGdldmZfcmVzZXRfc2VydmljZV90YXNrKHN0cnVjdCBoY2xnZXZmX2RldiAqaGRldilcXG4gXFx0XFx0ICogZnJvbSBQRiBhcyBjbWRxIHdvdWxkIGJlIGluIHVucmVsaWFibGUgc3RhdGUgaS5lLiBtYWlsYm94XFxuIFxcdFxcdCAqIGNvbW11bmljYXRpb24gYmV0d2VlbiBQRiBhbmQgVkYgd291bGQgYmUgYnJva2VuLlxcbiBcXHRcXHQgKlxcbi1cXHRcXHQgKiBpZiB3ZSBhcmUgbmV2ZXIgZ2V0aW5nIGludG8gcGVuZGluZyBzdGF0ZSBpdCBtZWFucyBlaXRoZXI6XFxuK1xcdFxcdCAqIGlmIHdlIGFyZSBuZXZlciBnZXR0aW5nIGludG8gcGVuZGluZyBzdGF0ZSBpdCBtZWFucyBlaXRoZXI6XFxuIFxcdFxcdCAqIDEuIFBGIGlzIG5vdCByZWNlaXZpbmcgb3VyIHJlcXVlc3Qgd2hpY2ggY291bGQgYmUgZHVlIHRvIElNUFxcbiBcXHRcXHQgKiAgICByZXNldFxcbiBcXHRcXHQgKiAyLiBQRiBpcyBzY3Jld2VkXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaFxcbmluZGV4IDA2MWZjZDQ0NGQ1MDMuLjNlZDU2NzBmMDFjMjUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oXFxuQEAgLTcyOSw3ICs3MjksNyBAQFxcbiAjZGVmaW5lIE1WUFAyX01BWF9UWFFcXHRcXHRcXHQ4XFxuIFxcbiAvKiBNVlBQMl9NQVhfVFNPX1NFR1MgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGZyYWdtZW50cyB0byBhbGxvdyBpbiB0aGUgR1NPXFxuLSAqIHNrYi4gQXMgd2UgbmVlZCBhIG1heGl1bSBvZiB0d28gZGVzY3JpcHRvcnMgcGVyIGZyYWdtZW50cyAoMSBoZWFkZXIsIDEgZGF0YSksXFxuKyAqIHNrYi4gQXMgd2UgbmVlZCBhIG1heGltdW0gb2YgdHdvIGRlc2NyaXB0b3JzIHBlciBmcmFnbWVudHMgKDEgaGVhZGVyLCAxIGRhdGEpLFxcbiAgKiBtdWx0aXBseSB0aGlzIHZhbHVlIGJ5IHR3byB0byBjb3VudCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2tiIGRlc2NzIG5lZWRlZC5cXG4gICovXFxuICNkZWZpbmUgTVZQUDJfTUFYX1RTT19TRUdTXFx0XFx0MzAwXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfcHJzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX3Bycy5jXFxuaW5kZXggOTNlOTc4YmRmMzAzYy4uYWQ2NzdjZmRkYjRkNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX3Bycy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9wcnMuY1xcbkBAIC0zODIsNyArMzgyLDcgQEAgc3RhdGljIGludCBtdnBwMl9wcnNfZmxvd19maW5kKHN0cnVjdCBtdnBwMiAqcHJpdiwgaW50IGZsb3cpXFxuIFxcdHN0cnVjdCBtdnBwMl9wcnNfZW50cnkgcGU7XFxuIFxcdGludCB0aWQ7XFxuIFxcbi1cXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyB3aXRoIE1WUFAyX1BSU19MVV9GTE9XUyAqL1xcbitcXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50cmllcyB3aXRoIE1WUFAyX1BSU19MVV9GTE9XUyAqL1xcbiBcXHRmb3IgKHRpZCA9IE1WUFAyX1BSU19UQ0FNX1NSQU1fU0laRSAtIDE7IHRpZCBcXHUwMDNlPSAwOyB0aWQtLSkge1xcbiBcXHRcXHR1OCBiaXRzO1xcbiBcXG5AQCAtMTIxMiw3ICsxMjEyLDcgQEAgc3RhdGljIHZvaWQgbXZwcDJfcHJzX21oX2luaXQoc3RydWN0IG12cHAyICpwcml2KVxcbiBcXHRtdnBwMl9wcnNfaHdfd3JpdGUocHJpdiwgXFx1MDAyNnBlKTtcXG4gfVxcbiBcXG4tLyogU2V0IGRlZmF1bHQgZW50aXJlcyAocGxhY2UgaG9sZGVyKSBmb3IgcHJvbWlzY3VvdXMsIG5vbi1wcm9taXNjdW91cyBhbmRcXG4rLyogU2V0IGRlZmF1bHQgZW50cmllcyAocGxhY2UgaG9sZGVyKSBmb3IgcHJvbWlzY3VvdXMsIG5vbi1wcm9taXNjdW91cyBhbmRcXG4gICogbXVsdGljYXN0IE1BQyBhZGRyZXNzZXNcXG4gICovXFxuIHN0YXRpYyB2b2lkIG12cHAyX3Byc19tYWNfaW5pdChzdHJ1Y3QgbXZwcDIgKnByaXYpXFxuQEAgLTIyNDEsNyArMjI0MSw3IEBAIG12cHAyX3Byc19tYWNfZGFfcmFuZ2VfZmluZChzdHJ1Y3QgbXZwcDIgKnByaXYsIGludCBwbWFwLCBjb25zdCB1OCAqZGEsXFxuIFxcdHN0cnVjdCBtdnBwMl9wcnNfZW50cnkgcGU7XFxuIFxcdGludCB0aWQ7XFxuIFxcbi1cXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyB3aXRoIE1WUFAyX1BSU19MVV9NQUMgKi9cXG4rXFx0LyogR28gdGhyb3VnaCB0aGUgYWxsIGVudHJpZXMgd2l0aCBNVlBQMl9QUlNfTFVfTUFDICovXFxuIFxcdGZvciAodGlkID0gTVZQUDJfUEVfTUFDX1JBTkdFX1NUQVJUO1xcbiBcXHQgICAgIHRpZCBcXHUwMDNjPSBNVlBQMl9QRV9NQUNfUkFOR0VfRU5EOyB0aWQrKykge1xcbiBcXHRcXHR1bnNpZ25lZCBpbnQgZW50cnlfcG1hcDtcXG5AQCAtMjUzOSw3ICsyNTM5LDcgQEAgaW50IG12cHAyX3Byc19kZWZfZmxvdyhzdHJ1Y3QgbXZwcDJfcG9ydCAqcG9ydClcXG4gXFxuIFxcdC8qIFN1Y2ggZW50cnkgbm90IGV4aXN0ICovXFxuIFxcdGlmICh0aWQgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdC8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRpcmVzIGZyb20gbGFzdCB0byBmaXJzdCAqL1xcbitcXHRcXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50cmllcyBmcm9tIGxhc3QgdG8gZmlyc3QgKi9cXG4gXFx0XFx0dGlkID0gbXZwcDJfcHJzX3RjYW1fZmlyc3RfZnJlZShwb3J0LVxcdTAwM2Vwcml2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRNVlBQMl9QRV9MQVNUX0ZSRUVfVElELFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgTVZQUDJfUEVfRklSU1RfRlJFRV9USUQpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL25wYy5oXFxuaW5kZXggNzE5YjM2MThlZWI1Mi4uMzA5MjQ0ZmU4NzU0MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL25wYy5oXFxuQEAgLTg0LDcgKzg0LDcgQEAgZW51bSBucGNfa3B1X2xjX2x0eXBlIHtcXG4gXFx0TlBDX0xUX0xDX0NVU1RPTTEgPSAweEYsXFxuIH07XFxuIFxcbi0vKiBEb24ndCBtb2RpZnkgTHR5cGVzIHVwdG8gU0NUUCwgb3RoZXJ3aXNlIGl0IHdpbGxcXG4rLyogRG9uJ3QgbW9kaWZ5IEx0eXBlcyB1cCB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbFxcbiAgKiBlZmZlY3QgZmxvdyB0YWcgY2FsY3VsYXRpb24gYW5kIHRodXMgUlNTLlxcbiAgKi9cXG4gZW51bSBucGNfa3B1X2xkX2x0eXBlIHtcXG5AQCAtMTQwLDcgKzE0MCw3IEBAIGVudW0gbnBjX2twdV9sZ19sdHlwZSB7XFxuIFxcdE5QQ19MVF9MR19DVVNUT00xID0gMHhGLFxcbiB9O1xcbiBcXG4tLyogRG9uJ3QgbW9kaWZ5IEx0eXBlcyB1cHRvIFNDVFAsIG90aGVyd2lzZSBpdCB3aWxsXFxuKy8qIERvbid0IG1vZGlmeSBMdHlwZXMgdXAgdG8gU0NUUCwgb3RoZXJ3aXNlIGl0IHdpbGxcXG4gICogZWZmZWN0IGZsb3cgdGFnIGNhbGN1bGF0aW9uIGFuZCB0aHVzIFJTUy5cXG4gICovXFxuIGVudW0gbnBjX2twdV9saF9sdHlwZSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xcbmluZGV4IDE1M2ViNTdiYWQwNjcuLmQ4MGQyYzAwYmQ4NDMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jXFxuQEAgLTQ5NzQsNyArNDk3NCw3IEBAIHN0YXRpYyB2b2lkIHJ2dV9uaXhfc2V0dXBfY2FwYWJpbGl0aWVzKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIpXFxuIFxcbiBcXHQvKiBPbiBPY3Rlb25UeDIgRFdSUiBxdWFudHVtIGlzIGRpcmVjdGx5IGNvbmZpZ3VyZWQgaW50byBlYWNoIG9mXFxuIFxcdCAqIHRoZSB0cmFuc21pdCBzY2hlZHVsZXIgcXVldWVzLiBBbmQgUEYvVkYgZHJpdmVycyB3ZXJlIGZyZWUgdG9cXG4tXFx0ICogY29uZmlnIGFueSB2YWx1ZSB1cHRvIDJeMjQuXFxuK1xcdCAqIGNvbmZpZyBhbnkgdmFsdWUgdXAgdG8gMl4yNC5cXG4gXFx0ICogT24gQ04xMEssIEhXIGlzIG1vZGlmaWVkLCB0aGUgcXVhbnR1bSBjb25maWd1cmF0aW9uIGF0IHNjaGVkdWxlclxcbiBcXHQgKiBxdWV1ZXMgaXMgaW4gdGVybXMgb2Ygd2VpZ2h0LiBBbmQgU1cgbmVlZHMgdG8gc2V0dXAgYSBiYXNlIERXUlIgTVRVXFxuIFxcdCAqIGF0IE5JWF9BRl9EV1JSX1JQTV9NVFUgLyBOSVhfQUZfRFdSUl9TRFBfTVRVLiBIVyB3aWxsIGRvXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmNcXG5pbmRleCAzZTFiZjIyY2JhNjljLi5mOThlZjU0MzFjOTA2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmNcXG5AQCAtMzAxLDcgKzMwMSw3IEBAIHN0YXRpYyB2b2lkIGNuMTBrX2dldF9pbmdyZXNzX3JhdGVfY2ZnKHU2NCByYXRlLCB1MzIgKnJhdGVfZXhwLFxcbiBcXHQgKiBwb2xpY2VyIHRpbWV1bml0ICogMl5yZGl2IGllIDIgKiAyXnJkaXYgdXNlY3MsIHRvIHRoZSB0b2tlbiBidWNrZXQuXFxuIFxcdCAqIEhlcmUgcG9saWNlciB0aW1ldW5pdCBpcyAyIHVzZWNzIGFuZCByYXRlIGlzIGluIGJpdHMgcGVyIHNlYy5cXG4gXFx0ICogU2luY2UgZmxvYXRpbmcgcG9pbnQgY2Fubm90IGJlIHVzZWQgYmVsb3cgYWxnb3JpdGhtIHVzZXMgMTAwMDAwMFxcbi1cXHQgKiBzY2FsZSBmYWN0b3IgdG8gc3VwcG9ydCByYXRlcyB1cHRvIDEwMEdicHMuXFxuK1xcdCAqIHNjYWxlIGZhY3RvciB0byBzdXBwb3J0IHJhdGVzIHVwIHRvIDEwMEdicHMuXFxuIFxcdCAqL1xcbiBcXHR0bXAgPSByYXRlICogMzIgKiAyO1xcbiBcXHRpZiAodG1wIFxcdTAwM2MgMjU2MDAwMDAwKSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2RjYm5sLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9kY2JubC5jXFxuaW5kZXggZjExMGRmYTQyMzYwNS4uOTFkMzQ2ZDExNGFmNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9kY2JubC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZGNibmwuY1xcbkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBpbnQgb3R4Ml9wZmNfdHhzY2hxX2FsbG9jX29uZShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHU4IHByaW8pXFxuIFxcdGlmICghcmVxKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuLVxcdC8qIFJlcXVlc3Qgb25lIHNjaHEgcGVyIGxldmVsIHVwdG8gbWF4IGxldmVsIGFzIGNvbmZpZ3VyZWRcXG4rXFx0LyogUmVxdWVzdCBvbmUgc2NocSBwZXIgbGV2ZWwgdXAgdG8gbWF4IGxldmVsIGFzIGNvbmZpZ3VyZWRcXG4gXFx0ICogbGluayBjb25maWcgbGV2ZWwuIFRoZXNlIHJlc3Qgb2YgdGhlIHNjaGVkdWxlciBjYW4gYmVcXG4gXFx0ICogc2FtZSBhcyBody50eHNjaHFfbGlzdC5cXG4gXFx0ICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmNcXG5pbmRleCBiYmJiYmJhNjNlMTVkLi4yMzcwYjJkZGJhNmI2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmNcXG5AQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyBpbnQgYWRkX2RlbF9oYXNoX2VudHJ5KHN0cnVjdCBweGExNjhfZXRoX3ByaXZhdGUgKnBlcCxcXG4gLypcXG4gICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxcbiAgKiAgQ3JlYXRlIGFuIGFkZHJlc3NUYWJsZSBlbnRyeSBmcm9tIE1BQyBhZGRyZXNzIGluZm9cXG4tICogIGZvdW5kIGluIHRoZSBzcGVjaWZlZCBuZXRfZGV2aWNlIHN0cnVjdFxcbisgKiAgZm91bmQgaW4gdGhlIHNwZWNpZmllZCBuZXRfZGV2aWNlIHN0cnVjdFxcbiAgKlxcbiAgKiAgSW5wdXQgOiBwb2ludGVyIHRvIGV0aGVybmV0IGludGVyZmFjZSBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmVcXG4gICogIE91dHB1dCA6IE4vQVxcbkBAIC04MDYsNyArODA2LDcgQEAgc3RhdGljIGludCByeHFfcHJvY2VzcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgYnVkZ2V0KVxcbiBcXHRcXHRzdGF0cy1cXHUwMDNlcnhfYnl0ZXMgKz0gcnhfZGVzYy1cXHUwMDNlYnl0ZV9jbnQ7XFxuIFxcdFxcdC8qXFxuIFxcdFxcdCAqIEluIGNhc2UgcmVjZWl2ZWQgYSBwYWNrZXQgd2l0aG91dCBmaXJzdCAvIGxhc3QgYml0cyBvbiBPUlxcbi1cXHRcXHQgKiB0aGUgZXJyb3Igc3VtbWFyeSBiaXQgaXMgb24sIHRoZSBwYWNrZXRzIG5lZWRzIHRvIGJlIGRyb3BlZC5cXG4rXFx0XFx0ICogdGhlIGVycm9yIHN1bW1hcnkgYml0IGlzIG9uLCB0aGUgcGFja2V0cyBuZWVkcyB0byBiZSBkcm9wcGVkLlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKCgoY21kX3N0cyBcXHUwMDI2IChSWF9GSVJTVF9ERVNDIHwgUlhfTEFTVF9ERVNDKSkgIT1cXG4gXFx0XFx0ICAgICAoUlhfRklSU1RfREVTQyB8IFJYX0xBU1RfREVTQykpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19jdHguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9uZXR4ZW4vbmV0eGVuX25pY19jdHguY1xcbmluZGV4IGZlZjRiMmIwYjFmMjYuLjc5ZDZhODE5YmY5MDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jXFxuQEAgLTE3LDcgKzE3LDcgQEAgbmV0eGVuX3BvbGxfcnNwKHN0cnVjdCBuZXR4ZW5fYWRhcHRlciAqYWRhcHRlcilcXG4gXFx0aW50XFx0dGltZW91dCA9IDA7XFxuIFxcbiBcXHRkbyB7XFxuLVxcdFxcdC8qIGdpdmUgYXRsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi9cXG4rXFx0XFx0LyogZ2l2ZSBhdCBsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi9cXG4gXFx0XFx0bXNsZWVwKDEpO1xcbiBcXG4gXFx0XFx0aWYgKCsrdGltZW91dCBcXHUwMDNlIE5YX09TX0NSQl9SRVRSWV9DT1VOVClcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfY3h0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9jeHQuY1xcbmluZGV4IGI3MDI2MmU3MGJhZjYuLjg5Yjk0N2Y4MmNmMDAgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfY3h0LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9jeHQuY1xcbkBAIC01NjEsNyArNTYxLDcgQEAgaW50IHFlZF9jeHRfY2ZnX2lsdF9jb21wdXRlKHN0cnVjdCBxZWRfaHdmbiAqcF9od2ZuLCB1MzIgKmxpbmVfY291bnQpXFxuIFxcdFxcdFxcdCAqICAgICAgYmxvY2sgaW4gdGhlIElMVCBjbGllbnQuIFRoaXMgaXMgbGF0ZXIgdXNlZCB0b1xcbiBcXHRcXHRcXHQgKiAgICAgIGNvbmZpZ3VyZSB0aGUgQ0RVIHNlZ21lbnQgb2Zmc2V0IHJlZ2lzdGVycyBhbmRcXG4gXFx0XFx0XFx0ICogICAgICByZXN1bHRzIGluIGFuIEZMIGNvbW1hbmQgZm9yIFRJRHMgb2YgdGhpc1xcbi1cXHRcXHRcXHQgKiAgICAgIHNlZ2VtZW50IGJlaGF2ZXMgYXMgcmVndWxhciBsb2FkIGNvbW1hbmRzXFxuK1xcdFxcdFxcdCAqICAgICAgc2VnbWVudCBiZWhhdmVzIGFzIHJlZ3VsYXIgbG9hZCBjb21tYW5kc1xcbiBcXHRcXHRcXHQgKiAgICAgIChsb2FkaW5nIFRJRHMgZnJvbSB0aGUgd29ya2luZyBtZW1vcnkpLlxcbiBcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0bGluZSA9IHBfY2xpLVxcdTAwM2VwZl9ibGtzW0NEVVRfU0VHX0JMSyhpKV0uc3RhcnRfbGluZTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfbWNwLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9tY3AuaFxcbmluZGV4IDliZDA1NjVmZThhYmMuLjUwNjk5ZDYwMGI4ZTMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfbWNwLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9tY3AuaFxcbkBAIC03ODMsNyArNzgzLDcgQEAgc3RydWN0IHFlZF9tY3BfaW5mbyB7XFxuIFxcdHUxNlxcdFxcdFxcdFxcdFxcdG1md19tYl9sZW5ndGg7XFxuIFxcdHUzMlxcdFxcdFxcdFxcdFxcdG1jcF9oaXN0O1xcbiBcXG4tXFx0LyogQ2FwYWJpbHRpZXMgbmVnb3RpYXRlZCB3aXRoIHRoZSBNRlcgKi9cXG4rXFx0LyogQ2FwYWJpbGl0aWVzIG5lZ290aWF0ZWQgd2l0aCB0aGUgTUZXICovXFxuIFxcdHUzMlxcdFxcdFxcdFxcdFxcdGNhcGFiaWxpdGllcztcXG4gXFxuIFxcdC8qIFMvTiBmb3IgZGVidWcgZGF0YSBtYWlsYm94IGNvbW1hbmRzICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pYy5oXFxuaW5kZXggZDdjOGZhZGI0OWRlMS4uOTcyOGQ1ODNiODkxOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pYy5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWMuaFxcbkBAIC05MDksNyArOTA5LDcgQEAgc3RydWN0IHFsY25pY19tYWNfdmxhbl9saXN0IHtcXG4gXFxuICNkZWZpbmUgUUxDTklDX0xST19SRVFVRVNUX0NMRUFOVVBcXHQ0XFxuIFxcbi0vKiBDYXBhYmlsaXRlcyByZWNlaXZlZCAqL1xcbisvKiBDYXBhYmlsaXRpZXMgcmVjZWl2ZWQgKi9cXG4gI2RlZmluZSBRTENOSUNfRldfQ0FQQUJJTElUWV9UU09cXHRcXHRCSVRfMVxcbiAjZGVmaW5lIFFMQ05JQ19GV19DQVBBQklMSVRZX0JER1xcdFxcdEJJVF84XFxuICNkZWZpbmUgUUxDTklDX0ZXX0NBUEFCSUxJVFlfRlZMQU5UWFxcdFxcdEJJVF85XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcXG5pbmRleCA0N2NkOWVjNjY1ZWViLi5mZjMzN2E5MTcyNDNiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmNcXG5AQCAtMTk1Nyw5ICsxOTU3LDkgQEAgc3RhdGljIHZvaWQgcWxjbmljXzgzeHhfdGVtcGxhdGVfZW5kKHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqcF9kZXYpXFxuICogcWxjbmljXzgzeHhfZXhlY190ZW1wbGF0ZV9jbWRcXG4gKlxcbiAqIEBwX2RldjogYWRhcHRlciBzdHJ1Y3R1cmVcXG4tKiBAcF9idWZmOiBQb2l0ZXIgdG8gaW5zdHJ1Y3Rpb24gdGVtcGxhdGVcXG4rKiBAcF9idWZmOiBQb2ludGVyIHRvIGluc3RydWN0aW9uIHRlbXBsYXRlXFxuICpcXG4tKiBUZW1wbGF0ZSBwcm92aWRlcyBpbnN0cnVjdGlvbnMgdG8gc3RvcCwgcmVzdGFydCBhbmQgaW5pdGFsaXplIGZpcm13YXJlLlxcbisqIFRlbXBsYXRlIHByb3ZpZGVzIGluc3RydWN0aW9ucyB0byBzdG9wLCByZXN0YXJ0IGFuZCBpbml0aWFsaXplIGZpcm13YXJlLlxcbiAqIFRoZXNlIGluc3RydWN0aW9ucyBhcmUgYWJzdHJhY3RlZCBhcyBhIHNlcmllcyBvZiByZWFkLCB3cml0ZSBhbmRcXG4gKiBwb2xsIG9wZXJhdGlvbnMgb24gaGFyZHdhcmUgcmVnaXN0ZXJzLiBSZWdpc3RlciBpbmZvcm1hdGlvbiBhbmQgb3BlcmF0aW9uXFxuICogc3BlY2lmaWNzIGFyZSBub3QgZXhwb3NlZCB0byB0aGUgZHJpdmVyLiBEcml2ZXIgcmVhZHMgdGhlIHRlbXBsYXRlIGZyb21cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19jdHguY1xcbmluZGV4IGViODI3Yjg2ZWNhZTguLjFiOTRjNDJkNjY5YjMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19jdHguY1xcbkBAIC05NSw3ICs5NSw3IEBAIHFsY25pY19wb2xsX3JzcChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuIFxcdGludCB0aW1lb3V0ID0gMCwgZXJyID0gMDtcXG4gXFxuIFxcdGRvIHtcXG4tXFx0XFx0LyogZ2l2ZSBhdGxlYXN0IDFtcyBmb3IgZmlybXdhcmUgdG8gcmVzcG9uZCAqL1xcbitcXHRcXHQvKiBnaXZlIGF0IGxlYXN0IDFtcyBmb3IgZmlybXdhcmUgdG8gcmVzcG9uZCAqL1xcbiBcXHRcXHRtZGVsYXkoMSk7XFxuIFxcbiBcXHRcXHRpZiAoKyt0aW1lb3V0IFxcdTAwM2UgUUxDTklDX09TX0NSQl9SRVRSWV9DT1VOVClcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jXFxuaW5kZXggZmY0ZjdjZDIwYzc5MS4uMjNhZTc2Y2E4MWRiZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmNcXG5AQCAtNjQwLDcgKzY0MCw3IEBAIHN0YXRpYyBpbnQgcWxjbmljX21heF9yaW5ncyhzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHJpbmdfY250LFxcbiBcXG4gdm9pZCBxbGNuaWNfc2V0X3R4X3JpbmdfY291bnQoc3RydWN0IHFsY25pY19hZGFwdGVyICphZGFwdGVyLCB1OCB0eF9jbnQpXFxuIHtcXG4tXFx0LyogODN4eCBhZGFwdGVyIGRvZXMgbm90IGhhdmUgbWF4X3R4X3JpbmdzIGludGlhbGl6ZWQgaW4gcHJvYmUgKi9cXG4rXFx0LyogODN4eCBhZGFwdGVyIGRvZXMgbm90IGhhdmUgbWF4X3R4X3JpbmdzIGluaXRpYWxpemVkIGluIHByb2JlICovXFxuIFxcdGlmIChhZGFwdGVyLVxcdTAwM2VtYXhfdHhfcmluZ3MpXFxuIFxcdFxcdGFkYXB0ZXItXFx1MDAzZWRydl90eF9yaW5ncyA9IHFsY25pY19tYXhfcmluZ3MoYWRhcHRlciwgdHhfY250LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgUUxDTklDX1RYX1FVRVVFKTtcXG5AQCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgcWxjbmljX3NldF90eF9yaW5nX2NvdW50KHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqYWRhcHRlciwgdTggdHhfY250KVxcbiBcXG4gdm9pZCBxbGNuaWNfc2V0X3Nkc19yaW5nX2NvdW50KHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqYWRhcHRlciwgdTggcnhfY250KVxcbiB7XFxuLVxcdC8qIDgzeHggYWRhcHRlciBkb2VzIG5vdCBoYXZlIG1heF9zZHNfcmluZ3MgaW50aWFsaXplZCBpbiBwcm9iZSAqL1xcbitcXHQvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfc2RzX3JpbmdzIGluaXRpYWxpemVkIGluIHByb2JlICovXFxuIFxcdGlmIChhZGFwdGVyLVxcdTAwM2VtYXhfc2RzX3JpbmdzKVxcbiBcXHRcXHRhZGFwdGVyLVxcdTAwM2VkcnZfc2RzX3JpbmdzID0gcWxjbmljX21heF9yaW5ncyhhZGFwdGVyLCByeF9jbnQsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgUUxDTklDX1JYX1FVRVVFKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2NmbS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2NmbS5jXFxuaW5kZXggNGVlYTM0MDgwMzRiZS4uYjcyMmExOTVkODMxZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmNcXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmNcXG5AQCAtMTcsNyArMTcsNyBAQFxcbiAqL1xcbiBcXG4gLypcXG4tICpcXHRIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uXFxuKyAqXFx0SGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvblxcbiAgKlxcdFRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgU01UIGZ1bmN0aW9ucyBhcmUgcmVmZXJlbmNlZCA6XFxuICAqXFxuICAqXFx0XFx0cXVldWVfZXZlbnQoKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZWNtLmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZWNtLmNcXG5pbmRleCAyZjVmNWYyNmJiNDM0Li5lNDE4YWI2NWNiNjExIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uY1xcbkBAIC0xNyw3ICsxNyw3IEBAXFxuICovXFxuIFxcbiAvKlxcbi0gKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uXFxuKyAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtZW50YXRpb25cXG4gICogVGhlIGZvbGxvd2luZyBleHRlcm5hbCBTTVQgZnVuY3Rpb25zIGFyZSByZWZlcmVuY2VkIDpcXG4gICpcXG4gICogXFx0XFx0cXVldWVfZXZlbnQoKVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZnBsdXN0bS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uY1xcbmluZGV4IDAzNjA2MjM3NmMwNjYuLjBkNDIwMTM0NWY5YmUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmNcXG5AQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyB1X2xvbmcgcmVhZF9tZHIoc3RydWN0IHNfc21jICpzbWMsIHVuc2lnbmVkIGludCBhZGRyKVxcbiBcXHRDSEVDS19OUFAoKSA7XFxuIFxcdE1BUlIoYWRkcikgO1xcbiBcXHRvdXRwdyhGTV9BKEZNX0NNRFJFRzEpLEZNX0lSTUVNV08pIDtcXG4tXFx0Q0hFQ0tfTlBQKCkgO1xcdC8qIG5lZWRlZCBmb3IgUENJIHRvIHByZXZlbnQgZnJvbSB0aW1laW5nIHZpb2xhdGlvbnMgKi9cXG4rXFx0Q0hFQ0tfTlBQKCkgO1xcdC8qIG5lZWRlZCBmb3IgUENJIHRvIHByZXZlbnQgZnJvbSB0aW1pbmcgdmlvbGF0aW9ucyAqL1xcbiAvKlxcdHAgPSBNRFJSKCkgOyAqL1xcdC8qIGJhZCByZWFkIHZhbHVlcyBpZiB0aGUgd29ya2Fyb3VuZCAqL1xcbiBcXHRcXHRcXHQvKiBzbWMtXFx1MDAzZWh3Lm1jX2R1bW15ID0gKigoc2hvcnQgdm9sYXRpbGUgZmFyICopKGFkZHIpKSkqL1xcbiBcXHRcXHRcXHQvKiBpcyB1c2VkICovXFxuQEAgLTU3Miw3ICs1NzIsNyBAQCBOb3RlXFx0QWZ0ZXIgYW55IHJpbmcgb3BlcmF0aW9uYWwgY2hhbmdlIHRoZSB0cmFuc21pdCBjb21wbGV0ZVxcbiBcXHRUaGUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQgbW9kdWxlIG11c3QgZW5hYmxlXFxuIFxcdHRoZSB0cmFuc21pdCBjb21wbGV0ZSBpbnRlcnJ1cHQgb2YgYSBxdWV1ZSxcXG4gXFx0XFx0LSB3aGVuIGl0IHF1ZXVlcyB0aGUgZmlyc3QgZnJhbWUsXFxuLVxcdFxcdCAgYmVjYXVzZSBvZiBubyB0cmFuc21pdCByZXNvdXJjZXMgYXJlIGJlZWluZ1xcbitcXHRcXHQgIGJlY2F1c2Ugb2Ygbm8gdHJhbnNtaXQgcmVzb3VyY2VzIGFyZSBiZWluZ1xcbiBcXHRcXHQgIGF2YWlsYWJsZSBhbmRcXG4gXFx0XFx0LSB3aGVuIGl0IGVzY2FwZXMgZnJvbSB0aGUgZnVuY3Rpb24gbGxjX3Jlc3RhcnRfdHhcXG4gXFx0XFx0ICB3aGlsZSBzb21lIGZyYW1lcyBhcmUgc3RpbGwgcXVldWVkLlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9od210bS5oIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvaHdtdG0uaFxcbmluZGV4IGU5N2RiODI2Y2RkNDUuLjBhYjQ5Y2MwYThiZGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvaHdtdG0uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL2h3bXRtLmhcXG5AQCAtMTEzLDcgKzExMyw3IEBAIHN0cnVjdCBod19tb2R1bCB7XFxuIFxcdHN0cnVjdFxcdHNfbWJ1Zl9wb29sXFx0bWJ1Zl9wb29sIDtcXG4gXFx0c3RydWN0XFx0aHdtX3JcXHRyIDtcXG4gXFxuLVxcdHVuaW9uIHNfZnBfZGVzY3Igdm9sYXRpbGUgKmRlc2NyX3AgOyAvKiBwb2ludHMgdG8gdGhlIGRlc3JpcHRvciBhcmVhICovXFxuK1xcdHVuaW9uIHNfZnBfZGVzY3Igdm9sYXRpbGUgKmRlc2NyX3AgOyAvKiBwb2ludHMgdG8gdGhlIGRlc2NyaXB0b3IgYXJlYSAqL1xcbiBcXG4gXFx0dV9zaG9ydCBwYXNzX1NNVCA7XFx0XFx0LyogcGFzcyBTTVQgZnJhbWVzICovXFxuIFxcdHVfc2hvcnQgcGFzc19OU0EgO1xcdFxcdC8qIHBhc3MgYWxsIE5TQSBmcmFtZXMgKi9cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvc2JhLmggYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9zYmEuaFxcbmluZGV4IGYzMDMwMWZjZDAyMmMuLjdmZTk5YzEyZTIwMTUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvc2JhLmhcXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9zYmEuaFxcbkBAIC05NCw3ICs5NCw3IEBAIHN0cnVjdCBzX3NiYSB7XFxuIFxcdGxvbmdcXHRcXHRtc2dfbWliX292IDtcXHRcXHQvKiBDdXJyZW50IE92ZXJoZWFkIGZvciB0aGlzIFBhdGgqL1xcbiBcXHRsb25nXFx0XFx0bXNnX2NhdGVnb3J5IDtcXHRcXHQvKiBDYXRlZ29yeSBvZiB0aGUgQWxsb2NhdGlvbiAqL1xcbiBcXHR1X2xvbmdcXHRcXHRtc2dfbWF4X3RfbmVnIDtcXHRcXHQvKiBsb25nZXN0IFRfTmVnIGFjY2VwdGFibGUgKi9cXG4tXFx0dV9sb25nXFx0XFx0bXNnX21pbl9zZWdfc2l6IDtcXHQvKiBtaW5pbXVtIHNlZ2VtZW50IHNpemUgKi9cXG4rXFx0dV9sb25nXFx0XFx0bXNnX21pbl9zZWdfc2l6IDtcXHQvKiBtaW5pbXVtIHNlZ21lbnQgc2l6ZSAqL1xcbiBcXHRzdHJ1Y3Qgc210X2hlYWRlclxcdCpzbSA7XFx0XFx0LyogcG9pbnRzIHRvIHRoZSByZWMgbWVzc2FnZSAqL1xcbiBcXHRzdHJ1Y3QgZmRkaV9hZGRyXFx0Km1zZ19hbGxvY19hZGRyIDtcXHQvKiBBbGxvY2F0aW9uIEFkZHJlc3MgKi9cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wY21wbGMuYyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wY21wbGMuY1xcbmluZGV4IDkwZThkZjZkOWE4OGEuLjc0NTI4NWQ0ZDZkMmUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jXFxuQEAgLTE2LDcgKzE2LDcgQEBcXG4gKi9cXG4gXFxuIC8qXFxuLSAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb25cXG4rICogSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvblxcbiAgKiBUaGUgZm9sbG93aW5nIGV4dGVybmFsIFNNVCBmdW5jdGlvbnMgYXJlIHJlZmVyZW5jZWQgOlxcbiAgKlxcbiAgKiBcXHRcXHRxdWV1ZV9ldmVudCgpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9ybXQuYyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9ybXQuY1xcbmluZGV4IDMxNDYyMzY1MGE4NGIuLjU3MDgxMjRmMDVkMmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jXFxuQEAgLTE2LDcgKzE2LDcgQEBcXG4gKi9cXG4gXFxuIC8qXFxuLSAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb25cXG4rICogSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvblxcbiAgKiBUaGUgZm9sbG93aW5nIGV4dGVybmFsIFNNVCBmdW5jdGlvbnMgYXJlIHJlZmVyZW5jZWQgOlxcbiAgKlxcbiAgKiBcXHRcXHRxdWV1ZV9ldmVudCgpXFxuZGlmZiAtLWdpdCBhL25ldC9sbGMvbGxjX2Nvbm4uYyBiL25ldC9sbGMvbGxjX2Nvbm4uY1xcbmluZGV4IDI2MDQ2MGQ1MGY1NGMuLjRiNmZlOWE0NzNjYjMgMTAwNjQ0XFxuLS0tIGEvbmV0L2xsYy9sbGNfY29ubi5jXFxuKysrIGIvbmV0L2xsYy9sbGNfY29ubi5jXFxuQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIGxsY19jb25uX3J0bl9wZHUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB9XFxuIFxcbiAvKipcXG4tICpcXHRsbGNfY29ubl9yZXNlbmRfaV9wZHVfYXNfY21kIC0gcmVzZW5kIGFsbCBhbGwgdW5hY2tub3dsZWRnZWQgSSBQRFVzXFxuKyAqXFx0bGxjX2Nvbm5fcmVzZW5kX2lfcGR1X2FzX2NtZCAtIHJlc2VuZCBhbGwgdW5hY2tub3dsZWRnZWQgSSBQRFVzXFxuICAqXFx0QHNrOiBhY3RpdmUgY29ubmVjdGlvblxcbiAgKlxcdEBucjogTlJcXG4gICpcXHRAZmlyc3RfcF9iaXQ6IHBfYml0IHZhbHVlIG9mIGZpcnN0IHBkdVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQveGZybV9wb2xpY3kuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQveGZybV9wb2xpY3kuc2hcXG5pbmRleCAzZWVlZWZmYjQwMDViLi42Mjk0ZTQ5YTQ2ZTA0IDEwMDc1NVxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaFxcbkBAIC0yNDIsNyArMjQyLDcgQEAgY2hlY2tfZXhjZXB0aW9ucygpXFxuIFxcdFxcdGVjaG8gXFxcIlBBU1M6IHBpbmcgdG8gLjI1NCBieXBhc3NlZCBpcHNlYyB0dW5uZWwgKCRsb2dwb3N0Zml4KVxcXCJcXG4gXFx0ZmlcXG4gXFxuLVxcdCMgcGluZyB0byAuMjUzIHNob3VsZCB1c2UgdXNlIGlwc2VjIGR1ZSB0byBkaXJlY3QgcG9saWN5IGV4Y2VwdGlvbi5cXG4rXFx0IyBwaW5nIHRvIC4yNTMgc2hvdWxkIHVzZSBpcHNlYyBkdWUgdG8gZGlyZWN0IHBvbGljeSBleGNlcHRpb24uXFxuIFxcdGNoZWNrX3hmcm0gMSAyNTNcXG4gXFx0aWYgWyAkPyAtbmUgMCBdOyB0aGVuXFxuIFxcdFxcdGVjaG8gXFxcIkZBSUw6IGV4cGVjdGVkIHBpbmcgdG8gLjI1MyB0byB1c2UgaXBzZWMgdHVubmVsICgkbG9ncG9zdGZpeClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA1OjU5OjQzLjY0NDUzMjg2MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTMwNzA2MTc5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnRhaW5zIGV4Y2x1c2l2ZWx5IHNwZWxsaW5nIGFuZCB0eXBvIGZpeGVzIHdpdGhpbiBjb21tZW50cyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMsIGNvcmUgTExDIGNvZGUsIGFuZCBhIHNlbGZ0ZXN0IHNjcmlwdC4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDA0YjlmOTU5MzFkMTE3OWEyOGE1NGYzNTdhYzliYzliODkzZjE1NThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDA1OjU5OjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5oXG5pbmRleCBjNTY3YzkyMDYyOGYxLi44ZjAzYmI1NjFkNDQ4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxYy9hdGwxY19ody5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFjL2F0bDFjX2h3LmhcbkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBhdGwxY19wb3N0X3BoeV9saW5rY2hnKHN0cnVjdCBhdGwxY19odyAqaHcsIHUxNiBsaW5rX3NwZWVkKTtcbiAvKiBJTlQtdHJpZ2dsZS9TTUIgQ29udHJvbCBSZWdpc3RlciAqL1xuICNkZWZpbmUgUkVHX1NNQl9TVEFUX1RJTUVSXHRcdDB4MTVDNFx0LyogMnVzIHJlc29sdXRpb24gKi9cbiAjZGVmaW5lIFNNQl9TVEFUX1RJTUVSX01BU0tcdFx0MHhGRkZGRkZcbi0jZGVmaW5lIFJFR19USU5UX1RQRF9USFJFU0ggICAgICAgICAgICAgMHgxNUM4IC8qIHRwZCB0aCB0byB0cmlnIGludHJydXB0ICovXG4rI2RlZmluZSBSRUdfVElOVF9UUERfVEhSRVNIICAgICAgICAgICAgIDB4MTVDOCAvKiB0cGQgdGggdG8gdHJpZyBpbnRlcnJ1cHQgKi9cbiBcbiAvKiBNYWlsIGJveCAqL1xuICNkZWZpbmUgTUJfUkZEWF9QUk9EX0lEWF9NQVNLXHRcdDB4RkZGRlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaFxuaW5kZXggOWZjYWQ3ODNjOTM5YS4uNmIwMDY2ZjQ3ZTllNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWUuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZS5oXG5AQCAtMzgxLDcgKzM4MSw3IEBAIHN0cnVjdCBhdGwxZV9yeF9wYWdlIHtcbiBcdHU4XHRcdCphZGRyOyAgIC8qIHJlY2VpdmUgcmFnZSB2aXJ0dWFsIGFkZHJlc3MgKi9cbiBcdGRtYV9hZGRyX3RcdHdyaXRlX29mZnNldF9kbWE7ICAvKiB0aGUgRE1BIGFkZHJlc3Mgd2hpY2ggY29udGFpbiB0aGVcbiBcdFx0XHRcdFx0ICAgICAgcmVjZWl2ZSBkYXRhIG9mZnNldCBpbiB0aGUgcGFnZSAqL1xuLVx0dTMyXHRcdCp3cml0ZV9vZmZzZXRfYWRkcjsgLyogdGhlIHZpcnRhdWwgYWRkcmVzcyB3aGljaCBjb250YWluXG4rXHR1MzJcdFx0KndyaXRlX29mZnNldF9hZGRyOyAvKiB0aGUgdmlydHVhbCBhZGRyZXNzIHdoaWNoIGNvbnRhaW5cbiBcdFx0XHRcdFx0ICAgICB0aGUgcmVjZWl2ZSBkYXRhIG9mZnNldCBpbiB0aGUgcGFnZSAqL1xuIFx0dTMyXHRcdHJlYWRfb2Zmc2V0OyAgICAgICAvKiB0aGUgb2Zmc2V0IHdoZXJlIHdlIGhhdmUgcmVhZCAqL1xuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jXG5pbmRleCBmYTg5YmMyN2Y2MmRmLi4yNWQzZTc0NjkwNTgzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9ody5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX2h3LmNcbkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIGludCBhdGwxZV9waHlfc2V0dXBfYXV0b25lZ19hZHYoc3RydWN0IGF0bDFlX2h3ICpodylcbiAgKlxuICAqIGh3IC0gU3RydWN0IGNvbnRhaW5pbmcgdmFyaWFibGVzIGFjY2Vzc2VkIGJ5IHNoYXJlZCBjb2RlXG4gICpcbi0gKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBjb250cm9sIHJlZ2lzZXIgKGZvciBGMDAxIGJ1ZylcbisgKiBTZXRzIGJpdCAxNSBhbmQgMTIgb2YgdGhlIE1JSSBjb250cm9sIHJlZ2lzdGVyIChmb3IgRjAwMSBidWcpXG4gICovXG4gaW50IGF0bDFlX3BoeV9jb21taXQoc3RydWN0IGF0bDFlX2h3ICpodylcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGwxZS9hdGwxZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uY1xuaW5kZXggNDAyOTAwMjg1ODBiYS4uY2M2YzI2Mjg2OGE1NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRsMWUvYXRsMWVfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bDFlL2F0bDFlX21haW4uY1xuQEAgLTIxMTcsNyArMjExNyw3IEBAIHN0YXRpYyBpbnQgYXRsMWVfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRlKVxuIFx0XHRcdHdvbF9jdHJsX2RhdGEgfD0gV09MX01BR0lDX0VOIHwgV09MX01BR0lDX1BNRV9FTjtcbiBcbiBcdFx0aWYgKHd1ZmMgXHUwMDI2IEFUX1dVRkNfTE5LQykge1xuLVx0XHQvKiBpZiBvcmlnbmFsIGxpbmsgc3RhdHVzIGlzIGxpbmssIGp1c3Qgd2FpdCBmb3IgcmV0cml2ZSBsaW5rICovXG4rXHRcdC8qIGlmIG9yaWdpbmFsIGxpbmsgc3RhdHVzIGlzIGxpbmssIGp1c3Qgd2FpdCBmb3IgcmV0cmlldmUgbGluayAqL1xuIFx0XHRcdGlmIChtaWlfYm1zcl9kYXRhIFx1MDAyNiBCTVNSX0xTVEFUVVMpIHtcbiBcdFx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUX1NVU1BFTkRfTElOS19USU1FT1VUOyBpKyspIHtcbiBcdFx0XHRcdFx0bXNsZWVwKDEwMCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwxLmNcbmluZGV4IDk4YTRkMDg5MjcwZTQuLjE3OWQ3NGU5M2VmZGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMS5jXG5AQCAtNjI4LDcgKzYyOCw3IEBAIHN0YXRpYyBzMzIgYXRsMV9waHlfbGVhdmVfcG93ZXJfc2F2aW5nKHN0cnVjdCBhdGwxX2h3ICpodylcbiAgKiBSZXNldHMgdGhlIFBIWSBhbmQgbWFrZSBhbGwgY29uZmlnIHZhbGlkYXRlXG4gICogaHcgLSBTdHJ1Y3QgY29udGFpbmluZyB2YXJpYWJsZXMgYWNjZXNzZWQgYnkgc2hhcmVkIGNvZGVcbiAgKlxuLSAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIENvbnRyb2wgcmVnaXNlciAoZm9yIEYwMDEgYnVnKVxuKyAqIFNldHMgYml0IDE1IGFuZCAxMiBvZiB0aGUgTUlJIENvbnRyb2wgcmVnaXN0ZXIgKGZvciBGMDAxIGJ1ZylcbiAgKi9cbiBzdGF0aWMgczMyIGF0bDFfcGh5X3Jlc2V0KHN0cnVjdCBhdGwxX2h3ICpodylcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hdGx4L2F0bDIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYXRseC9hdGwyLmNcbmluZGV4IDU1NjBkNWNjMzE2OTIuLmM5YWNhMjE5ZWM5Y2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2F0bHgvYXRsMi5jXG5AQCAtMjU5MSw3ICsyNTkxLDcgQEAgc3RhdGljIHMzMiBhdGwyX3BoeV9zZXR1cF9hdXRvbmVnX2FkdihzdHJ1Y3QgYXRsMl9odyAqaHcpXG4gICpcbiAgKiBodyAtIFN0cnVjdCBjb250YWluaW5nIHZhcmlhYmxlcyBhY2Nlc3NlZCBieSBzaGFyZWQgY29kZVxuICAqXG4tICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgQ29udHJvbCByZWdpc2VyIChmb3IgRjAwMSBidWcpXG4rICogU2V0cyBiaXQgMTUgYW5kIDEyIG9mIHRoZSBNSUkgQ29udHJvbCByZWdpc3RlciAoZm9yIEYwMDEgYnVnKVxuICAqL1xuIHN0YXRpYyBzMzIgYXRsMl9waHlfY29tbWl0KHN0cnVjdCBhdGwyX2h3ICpodylcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuY1xuaW5kZXggN2VmMWJhYmZlY2E2OS4uZjY1OTVmZGM4ODhkMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuY1xuQEAgLTE1NjQsNyArMTU2NCw3IEBAIHN0YXRpYyBpbnQgYmNtX2VuZXRfc2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcbiBcdGlmIChwcml2LVx1MDAzZWhhc19waHkpIHtcbiBcdFx0aWYgKGVjbWQtXHUwMDNlYXV0b25lZyBcdTAwMjZcdTAwMjYgKGVjbWQtXHUwMDNlcnhfcGF1c2UgIT0gZWNtZC1cdTAwM2V0eF9wYXVzZSkpIHtcbi1cdFx0XHQvKiBhc3ltZXRyaWMgcGF1c2UgbW9kZSBub3Qgc3VwcG9ydGVkLFxuK1x0XHRcdC8qIGFzeW1tZXRyaWMgcGF1c2UgbW9kZSBub3Qgc3VwcG9ydGVkLFxuIFx0XHRcdCAqIGFjdHVhbGx5IHBvc3NpYmxlIGJ1dCBpbnRlZ3JhdGVkIFBIWSBoYXMgUk9cbiBcdFx0XHQgKiBhc3ltX3BhdXNlIGJpdCAqL1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbTYzeHhfZW5ldC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmhcbmluZGV4IDc4ZjE4MzBmYjNjYjUuLmJhOGY0MmNmNWZiMjcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY202M3h4X2VuZXQuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtNjN4eF9lbmV0LmhcbkBAIC0yNjUsNyArMjY1LDcgQEAgc3RydWN0IGJjbV9lbmV0X3ByaXYge1xuIFx0LyogbnVtYmVyIG9mIGF2YWlsYWJsZSBkZXNjcmlwdG9yIGZvciB0eCAqL1xuIFx0aW50IHR4X2Rlc2NfY291bnQ7XG4gXG4tXHQvKiBuZXh0IHR4IGRlc2NyaXB0b3IgYXZhaWFibGUgKi9cbitcdC8qIG5leHQgdHggZGVzY3JpcHRvciBhdmFpbGFibGUgKi9cbiBcdGludCB0eF9jdXJyX2Rlc2M7XG4gXG4gXHQvKiBuZXh0IGRpcnR5IHR4IGRlc2NyaXB0b3IgdG8gcmVjbGFpbSAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuaFxuaW5kZXggYTM0Mjk2Zjk4OWYxMi4uNmY4MDdlOTZkYmQ4ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5oXG5AQCAtNDAyLDcgKzQwMiw3IEBAIHN0cnVjdCBiY21fcnNiIHtcbiAjZGVmaW5lIFRETUFfREVTQ19SSU5HX0JBU0UoaSlcdFx0KFRETUFfREVTQ19SSU5HXzAwX0JBU0UgKyBcXFxuIFx0XHRcdFx0XHQoKGkpICogVERNQV9ERVNDX1JJTkdfU0laRSkpXG4gXG4tLyogUmluZyBpbmRleGVkIHJlZ2lzdGVyIGFkZHJlc2VzICovXG4rLyogUmluZyBpbmRleGVkIHJlZ2lzdGVyIGFkZHJlc3NlcyAqL1xuICNkZWZpbmUgVERNQV9ERVNDX1JJTkdfSEVBRF9UQUlMX1BUUihpKVx0KFRETUFfREVTQ19SSU5HX0JBU0UoaSkgKyBcXFxuIFx0XHRcdFx0XHRSSU5HX0hFQURfVEFJTF9QVFIpXG4gI2RlZmluZSBURE1BX0RFU0NfUklOR19DT1VOVChpKVx0XHQoVERNQV9ERVNDX1JJTkdfQkFTRShpKSArIFxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4LmhcbmluZGV4IDk1ODBhYjgzZDM4N2MuLjI4ZWE0YTMzZjI0NWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oXG5AQCAtMjgwLDcgKzI4MCw3IEBAIGVudW0ge1xuICAqIChkYl9tc2dfc3ogMSBcdTAwM2NcdTAwM2MgNyAqIGNpZCArIDB4NDAgRFBNIG9mZnNldCkgaXQgY2FuIGNvbWUgdXAgd2l0aCBhIHZhbGlkIG51bWJlclxuICAqIFdlIG11c3QgYXZvaWQgY29taW5nIHVwIHdpdGggY2lkIDggZm9yIGlzY3NpIHNpbmNlIGFjY29yZGluZyB0byB0aGlzIG1ldGhvZFxuICAqIHRoZSBkZXNpZ25hdGVkIFVJTyBjaWQgd2lsbCBjb21lIG91dCAwIGFuZCBpdCBoYXMgYSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGF0XG4tICogY2FzZSB3aGljaCBkb2Vzbid0IHN1aXQgdXMuIFRoZXJlZm9yZSB3aWxsIHdpbGwgY2llbGluZyB0byBjbG9zZXMgY2lkIHdoaWNoXG4rICogY2FzZSB3aGljaCBkb2Vzbid0IHN1aXQgdXMuIFRoZXJlZm9yZSB3aWxsIGNpZWxpbmcgdG8gY2xvc2VzIGNpZCB3aGljaFxuICAqIGhhcyBsZWFzdCBzaWduaWdpZmNhbnQgbmliYmxlIDggYW5kIGlmIGl0IGlzIDggd2Ugd2lsbCBtb3ZlIGZvcndhcmQgdG8gMHgxOC5cbiAgKi9cbiBcbkBAIC02NjYsNyArNjY2LDcgQEAgc3RydWN0IGJueDJ4X2Zhc3RwYXRoIHtcbiBcdFx0XHRcdCBNQVhfVFhfREVTQ19DTlQgKiBORVhUX1BBR0VfVFhfREVTQ19DTlQpXG4gLyogbWF4IEJEcyBwZXIgdHggcGFja2V0IHcvbyBuZXh0X3BhZ2VzOlxuICAqIFNUQVJUX0JEXHRcdC0gZGVzY3JpYmVzIHBhY2tlZFxuLSAqIFNUQVJUX0JEKHNwbGl0dGVkKVx0LSBpbmNsdWRlcyB1bnBhZ2VkIGRhdGEgc2VnbWVudCBmb3IgR1NPXG4rICogU1RBUlRfQkQoc3BsaXQpXHQtIGluY2x1ZGVzIHVucGFnZWQgZGF0YSBzZWdtZW50IGZvciBHU09cbiAgKiBQQVJTSU5HX0JEXHRcdC0gZm9yIFRTTyBhbmQgQ1NVTSBkYXRhXG4gICogUEFSU0lOR19CRDJcdFx0LSBmb3IgZW5jYXBzdWxhdGlvbiBkYXRhXG4gICogRnJhZyBCRHNcdFx0LSBkZXNjcmliZXMgcGFnZXMgZm9yIGZyYWdzXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfZGNiLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuY1xuaW5kZXggOWFmODE2MzBjOGE0NC4uM2RmOGE1OTg4NTIxOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2RjYi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9kY2IuY1xuQEAgLTE5ODYsNyArMTk4Niw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2RjYm5sX3NldF9wZ190Y2NmZ190eChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcHJpbyxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0LyoqXG4tXHQgKiBid19wY3QgaWdub3JlZCAtXHRiYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGV2aXNpb24gYmV0d2VlbiB1c2VyXG4rXHQgKiBid19wY3QgaWdub3JlZCAtXHRiYW5kLXdpZHRoIHBlcmNlbnRhZ2UgZGl2aXNpb24gYmV0d2VlbiB1c2VyXG4gXHQgKlx0XHRcdHByaW9yaXRpZXMgd2l0aGluIHRoZSBzYW1lIGdyb3VwIGlzIG5vdFxuIFx0ICpcdFx0XHRzdGFuZGFyZCBhbmQgaGVuY2Ugbm90IHN1cHBvcnRlZFxuIFx0ICpcbkBAIC0yMDM4LDcgKzIwMzgsNyBAQCBzdGF0aWMgdm9pZCBibngyeF9kY2JubF9nZXRfcGdfdGNjZmdfdHgoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHByaW8sXG4gXHREUChCTlgyWF9NU0dfRENCLCBcInByaW8gPSAlZFxcblwiLCBwcmlvKTtcbiBcbiBcdC8qKlxuLVx0ICogYndfcGN0IGlnbm9yZWQgLVx0YmFuZC13aWR0aCBwZXJjZW50YWdlIGRldmlzaW9uIGJldHdlZW4gdXNlclxuK1x0ICogYndfcGN0IGlnbm9yZWQgLVx0YmFuZC13aWR0aCBwZXJjZW50YWdlIGRpdmlzaW9uIGJldHdlZW4gdXNlclxuIFx0ICpcdFx0XHRwcmlvcml0aWVzIHdpdGhpbiB0aGUgc2FtZSBncm91cCBpcyBub3RcbiBcdCAqXHRcdFx0c3RhbmRhcmQgYW5kIGhlbmNlIG5vdCBzdXBwb3J0ZWRcbiBcdCAqXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaHNpLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaFxuaW5kZXggNjExZWZlZTc1ODM0MC4uNTI5N2FiNTc4YTZmMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2hzaS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9oc2kuaFxuQEAgLTIzNDIsNyArMjM0Miw3IEBAIHN0cnVjdCBzaG1lbTJfcmVnaW9uIHtcbiBcdFx0dTMyIG9lbV9pMmNfZGF0YV9hZGRyO1xuIFx0fTtcbiBcbi1cdC8qIDkgZW50aXJlcyBmb3IgdGhlIEMyUyBQQ1AgbWFwIGZvciBlYWNoIGlubmVyIFZMQU4gUENQICsgMSBkZWZhdWx0ICovXG4rXHQvKiA5IGVudHJpZXMgZm9yIHRoZSBDMlMgUENQIG1hcCBmb3IgZWFjaCBpbm5lciBWTEFOIFBDUCArIDEgZGVmYXVsdCAqL1xuIFx0LyogRm9yIFBDUCB2YWx1ZXMgMC0zIHVzZSB0aGUgbWFwIGxvd2VyICovXG4gXHQvKiAweEZGMDAwMDAwIC0gUENQIDAsIDB4MDBGRjAwMDAgLSBQQ1AgMSxcbiBcdCAqIDB4MDAwMEZGMDAgLSBQQ1AgMiwgMHgwMDAwMDBGRiBQQ1AgM1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2luaXRfb3BzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9pbml0X29wcy5oXG5pbmRleCBmYzdmY2U2NDI2NjZjLi5iNTAwNGFhYjEyNGRjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfaW5pdF9vcHMuaFxuQEAgLTU4Miw3ICs1ODIsNyBAQCBzdGF0aWMgdm9pZCBibngyeF9pbml0X3B4cF9hcmIoc3RydWN0IGJueDJ4ICpicCwgaW50IHJfb3JkZXIsXG4gXHRcdFJFR19XUihicCwgUFhQMl9SRUdfV1JfQ0RVX01QUywgdmFsKTtcbiBcdH1cbiBcbi1cdC8qIFZhbGlkYXRlIG51bWJlciBvZiB0YWdzIHN1cHBvdGVkIGJ5IGRldmljZSAqL1xuK1x0LyogVmFsaWRhdGUgbnVtYmVyIG9mIHRhZ3Mgc3VwcG9ydGVkIGJ5IGRldmljZSAqL1xuICNkZWZpbmUgUENJRV9SRUdfUENJRVJfVExfSERSX0ZDX1NUXHRcdDB4Mjk4MFxuIFx0dmFsID0gUkVHX1JEKGJwLCBQQ0lFX1JFR19QQ0lFUl9UTF9IRFJfRkNfU1QpO1xuIFx0dmFsIFx1MDAyNj0gMHhGRjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmNcbmluZGV4IGVhMzEwMDU3ZmUzYWYuLjg0ZDAwMmIzMTkyMGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9saW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2xpbmsuY1xuQEAgLTI1MzYsNyArMjUzNiw3IEBAIHN0YXRpYyBpbnQgYm54MnhfcGJmX3VwZGF0ZShzdHJ1Y3QgbGlua19wYXJhbXMgKnBhcmFtcywgdTMyIGZsb3dfY3RybCxcbiB9XG4gXG4gLyoqXG4tICogYm54MnhfZ2V0X2VtYWNfYmFzZSAtIHJldHJpdmUgZW1hYyBiYXNlIGFkZHJlc3NcbisgKiBibngyeF9nZXRfZW1hY19iYXNlIC0gcmV0cmlldmUgZW1hYyBiYXNlIGFkZHJlc3NcbiAgKlxuICAqIEBicDpcdFx0XHRkcml2ZXIgaGFuZGxlXG4gICogQG1kY19tZGlvX2FjY2VzczpcdGFjY2VzcyB0eXBlXG5AQCAtMzU5Myw3ICszNTkzLDcgQEAgc3RhdGljIHU4IGJueDJ4X2V4dF9waHlfcmVzb2x2ZV9mYyhzdHJ1Y3QgYm54MnhfcGh5ICpwaHksXG4gXHR1OCByZXQgPSAwO1xuIFx0dmFycy1cdTAwM2VmbG93X2N0cmwgPSBCTlgyWF9GTE9XX0NUUkxfTk9ORTtcbiBcdGlmIChwaHktXHUwMDNlcmVxX2Zsb3dfY3RybCAhPSBCTlgyWF9GTE9XX0NUUkxfQVVUTykge1xuLVx0XHQvKiBVcGRhdGUgdGhlIGFkdmVydGlzZWQgZmxvdy1jb250cm9sZWQgb2YgTEQvTFAgaW4gQU4gKi9cbitcdFx0LyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGxlZCBvZiBMRC9MUCBpbiBBTiAqL1xuIFx0XHRpZiAocGh5LVx1MDAzZXJlcV9saW5lX3NwZWVkID09IFNQRUVEX0FVVE9fTkVHKVxuIFx0XHRcdGJueDJ4X2V4dF9waHlfdXBkYXRlX2Fkdl9mYyhwaHksIHBhcmFtcywgdmFycyk7XG4gXHRcdC8qIEJ1dCBzZXQgdGhlIGZsb3ctY29udHJvbCByZXN1bHQgYXMgdGhlIHJlcXVlc3RlZCBvbmUgKi9cbkBAIC0zNzQzLDcgKzM3NDMsNyBAQCBzdGF0aWMgdm9pZCBibngyeF93YXJwY29yZV9lbmFibGVfQU5fS1Ioc3RydWN0IGJueDJ4X3BoeSAqcGh5LFxuIFx0XHR7TURJT19XQ19ERVZBRCwgTURJT19XQ19SRUdfQ0w3Ml9VU0VSQjBfQ0w3Ml9UWF9GSVJfVEFQLCAwfSxcbiBcdH07XG4gXHREUChORVRJRl9NU0dfTElOSywgXCJFbmFibGUgQXV0byBOZWdvdGlhdGlvbiBmb3IgS1JcXG5cIik7XG4tXHQvKiBTZXQgdG8gZGVmYXVsdCByZWdpc3RlcnMgdGhhdCBtYXkgYmUgb3ZlcnJpZGVuIGJ5IDEwRyBmb3JjZSAqL1xuK1x0LyogU2V0IHRvIGRlZmF1bHQgcmVnaXN0ZXJzIHRoYXQgbWF5IGJlIG92ZXJyaWRkZW4gYnkgMTBHIGZvcmNlICovXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHJlZ19zZXQpOyBpKyspXG4gXHRcdGJueDJ4X2NsNDVfd3JpdGUoYnAsIHBoeSwgcmVnX3NldFtpXS5kZXZhZCwgcmVnX3NldFtpXS5yZWcsXG4gXHRcdFx0XHQgcmVnX3NldFtpXS52YWwpO1xuQEAgLTU0MjUsNyArNTQyNSw3IEBAIHN0YXRpYyB2b2lkIGJueDJ4X2Zsb3dfY3RybF9yZXNvbHZlKHN0cnVjdCBibngyeF9waHkgKnBoeSxcbiBcbiBcdC8qIFJlc29sdmUgZnJvbSBncF9zdGF0dXMgaW4gY2FzZSBvZiBBTiBjb21wbGV0ZSBhbmQgbm90IHNnbWlpICovXG4gXHRpZiAocGh5LVx1MDAzZXJlcV9mbG93X2N0cmwgIT0gQk5YMlhfRkxPV19DVFJMX0FVVE8pIHtcbi1cdFx0LyogVXBkYXRlIHRoZSBhZHZlcnRpc2VkIGZsb3ctY29udHJvbGVkIG9mIExEL0xQIGluIEFOICovXG4rXHRcdC8qIFVwZGF0ZSB0aGUgYWR2ZXJ0aXNlZCBmbG93LWNvbnRyb2xsZWQgb2YgTEQvTFAgaW4gQU4gKi9cbiBcdFx0aWYgKHBoeS1cdTAwM2VyZXFfbGluZV9zcGVlZCA9PSBTUEVFRF9BVVRPX05FRylcbiBcdFx0XHRibngyeF91cGRhdGVfYWR2X2ZjKHBoeSwgcGFyYW1zLCB2YXJzLCBncF9zdGF0dXMpO1xuIFx0XHQvKiBCdXQgc2V0IHRoZSBmbG93LWNvbnRyb2wgcmVzdWx0IGFzIHRoZSByZXF1ZXN0ZWQgb25lICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jXG5pbmRleCAzOWViNmFiNWY4MDU4Li4yNzdjN2JkOWM2ZTc0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmNcbkBAIC0xMjY2OSw3ICsxMjY2OSw3IEBAIHN0YXRpYyBpbnQgYm54Mnhfc2V0X21jX2xpc3Qoc3RydWN0IGJueDJ4ICpicClcbiBcdFx0aWYgKHJjKVxuIFx0XHRcdHJldHVybiByYztcbiBcbi1cdFx0LyogT3ZlcnJpZGUgdGhlIGN1cmVudGx5IGNvbmZpZ3VyZWQgc2V0IG9mIG1jIGZpbHRlcnMgKi9cbitcdFx0LyogT3ZlcnJpZGUgdGhlIGN1cnJlbnRseSBjb25maWd1cmVkIHNldCBvZiBtYyBmaWx0ZXJzICovXG4gXHRcdHJjID0gYm54MnhfY29uZmlnX21jYXN0KGJwLCBcdTAwMjZycGFyYW0sXG4gXHRcdFx0XHRcdEJOWDJYX01DQVNUX0NNRF9TRVQpO1xuIFx0XHRpZiAocmMgXHUwMDNjIDApXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfcmVnLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaFxuaW5kZXggYTAxOGYyNTFkMTk4Ni4uMzA5NDNmMzQ3MTY0MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3JlZy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9yZWcuaFxuQEAgLTIyMzYsNyArMjIzNiw3IEBAIGV4dGVybiBjb25zdCB1MzIgZG1hZV9yZWdfZ29fY1tdO1xuIC8qIFtSVyAxXSBPdXRwdXQgZW5hYmxlIGZvciBUWCBQQVVTRSBzaWduYWwgdG8gdGhlIE1BQy4gKi9cbiAjZGVmaW5lIE5JR19SRUdfUDBfTUFDX1BBVVNFX09VVF9FTlx0XHRcdFx0IDB4MTg1YjRcbiAvKiBbUlcgMzJdIEVpZ2h0IDQtYml0IGNvbmZpZ3VyYXRpb25zIGZvciBzcGVjaWZ5aW5nIHdoaWNoIENPUyAoMC0xNSBmb3Jcbi0gKiBmdXR1cmUgZXhwYW5zaW9uKSBlYWNoIHByaW9ydHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZVxuKyAqIGZ1dHVyZSBleHBhbnNpb24pIGVhY2ggcHJpb3JpdHkgaXMgdG8gYmUgbWFwcGVkIHRvLiBCaXRzIDM6MCBzcGVjaWZ5IHRoZVxuICAqIENPUyBmb3IgcHJpb3JpdHkgMC4gQml0cyAzMToyOCBzcGVjaWZ5IHRoZSBDT1MgZm9yIHByaW9yaXR5IDcuIFRoZSAzLWJpdFxuICAqIHByaW9yaXR5IGZpZWxkIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSBvdXRlci1tb3N0IFZMQU4gaW4gcmVjZWl2ZSBwYWNrZXQuXG4gICogT25seSBDT1MgMCBhbmQgQ09TIDEgYXJlIHN1cHBvcnRlZCBpbiBFMi4gKi9cbkBAIC0yNDM0LDcgKzI0MzQsNyBAQCBleHRlcm4gY29uc3QgdTMyIGRtYWVfcmVnX2dvX2NbXTtcbiAvKiBbUlcgMV0gT3V0cHV0IGVuYWJsZSBmb3IgVFggUEFVU0Ugc2lnbmFsIHRvIHRoZSBNQUMuICovXG4gI2RlZmluZSBOSUdfUkVHX1AxX01BQ19QQVVTRV9PVVRfRU5cdFx0XHRcdCAweDE4NWM4XG4gLyogW1JXIDMyXSBFaWdodCA0LWJpdCBjb25maWd1cmF0aW9ucyBmb3Igc3BlY2lmeWluZyB3aGljaCBDT1MgKDAtMTUgZm9yXG4tICogZnV0dXJlIGV4cGFuc2lvbikgZWFjaCBwcmlvcnR5IGlzIHRvIGJlIG1hcHBlZCB0by4gQml0cyAzOjAgc3BlY2lmeSB0aGVcbisgKiBmdXR1cmUgZXhwYW5zaW9uKSBlYWNoIHByaW9yaXR5IGlzIHRvIGJlIG1hcHBlZCB0by4gQml0cyAzOjAgc3BlY2lmeSB0aGVcbiAgKiBDT1MgZm9yIHByaW9yaXR5IDAuIEJpdHMgMzE6Mjggc3BlY2lmeSB0aGUgQ09TIGZvciBwcmlvcml0eSA3LiBUaGUgMy1iaXRcbiAgKiBwcmlvcml0eSBmaWVsZCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgb3V0ZXItbW9zdCBWTEFOIGluIHJlY2VpdmUgcGFja2V0LlxuICAqIE9ubHkgQ09TIDAgYW5kIENPUyAxIGFyZSBzdXBwb3J0ZWQgaW4gRTIuICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2NuNjZ4eF9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9jbjY2eHhfZGV2aWNlLmNcbmluZGV4IDkzZmNjZmVjMjg4ZDQuLmQzZWJiYjQwNTc5ZTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY242Nnh4X2RldmljZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vY242Nnh4X2RldmljZS5jXG5AQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyB2b2lkIGxpb19jbjY2eHhfc2V0dXBfcGt0X2N0bF9yZWdzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QpXG4gXG4gXHQvKiA2NlhYIFNQRUNJRklDICovXG4gXHRpZiAoQ0ZHX0dFVF9PUV9NQVhfUShjbjZ4eHgtXHUwMDNlY29uZikgXHUwMDNjPSA0KVxuLVx0XHQvKiBEaXNhYmxlIFJJTkdfRU4gaWYgb25seSB1cHRvIDQgcmluZ3MgYXJlIHVzZWQuICovXG4rXHRcdC8qIERpc2FibGUgUklOR19FTiBpZiBvbmx5IHVwIHRvIDQgcmluZ3MgYXJlIHVzZWQuICovXG4gXHRcdHBrdGN0bCBcdTAwMjY9IH4oMSBcdTAwM2NcdTAwM2MgNCk7XG4gXHRlbHNlXG4gXHRcdHBrdGN0bCB8PSAoMSBcdTAwM2NcdTAwM2MgNCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19jb3JlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuY1xuaW5kZXggOTNiMDZkNTk5ZWVkNi4uYmVkNDUwYmZhZDM4MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX2NvcmUuY1xuQEAgLTU2NSw3ICs1NjUsNyBAQCBzdGF0aWMgaW50IG9jdGVvbl9zZXR1cF9kcm9xKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsIGludCBxX25vLCBpbnQgbnVtX2Rlc2NzLFxuIH1cbiBcbiAvKipcbi0gKiBsaXF1aWRpb19wdXNoX3BhY2tldCAtIFJvdXRpbmUgdG8gcHVzaCBwYWNrZXRzIGFycml2aW5nIG9uIE9jdGVvbiBpbnRlcmZhY2UgdXB0byBuZXR3b3JrIGxheWVyLlxuKyAqIGxpcXVpZGlvX3B1c2hfcGFja2V0IC0gUm91dGluZSB0byBwdXNoIHBhY2tldHMgYXJyaXZpbmcgb24gT2N0ZW9uIGludGVyZmFjZSB1cCB0byBuZXR3b3JrIGxheWVyLlxuICAqIEBvY3Rlb25faWQ6b2N0ZW9uIGRldmljZSBpZC5cbiAgKiBAc2tidWZmOiAgIHNrYnVmZiBzdHJ1Y3QgdG8gYmUgcGFzc2VkIHRvIG5ldHdvcmsgbGF5ZXIuXG4gICogQGxlbjogICAgICBzaXplIG9mIHRvdGFsIGRhdGEgcmVjZWl2ZWQuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9jb25maWcuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fY29uZmlnLmhcbmluZGV4IDI0YzIxMjAwMTIxMjEuLmQyZDY0ZWRhZjNiZjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbmZpZy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2NvbmZpZy5oXG5AQCAtMjU0LDcgKzI1NCw3IEBAIHN0cnVjdCBvY3Rlb25fb3FfY29uZmlnIHtcbiBcdHU2NCBwa3RzX3Blcl9pbnRyOjE2O1xuIFxuIFx0LyoqIEludGVycnVwdCBDb2FsZXNjaW5nIChUaW1lIEludGVydmFsKS4gT2N0ZW9uIHdpbGwgaW50ZXJydXB0IHRoZVxuLVx0ICogIGhvc3QgaWYgYXRsZWFzdCBvbmUgcGFja2V0IHdhcyBzZW50IGluIHRoZSB0aW1lIGludGVydmFsIHNwZWNpZmllZFxuK1x0ICogIGhvc3QgaWYgYXQgbGVhc3Qgb25lIHBhY2tldCB3YXMgc2VudCBpbiB0aGUgdGltZSBpbnRlcnZhbCBzcGVjaWZpZWRcbiBcdCAqICBieSB0aGlzIGZpZWxkLiBUaGUgZHJpdmVyIHVzZXMgdGltZSBpbnRlcnZhbCBpbnRlcnJ1cHQgY29hbGVzY2luZ1xuIFx0ICogIGJ5IGRlZmF1bHQuIFRoZSB0aW1lIGlzIHNwZWNpZmllZCBpbiBtaWNyb3NlY29uZHMuXG4gXHQgKi9cbkBAIC0yOTYsNyArMjk2LDcgQEAgc3RydWN0IG9jdGVvbl9vcV9jb25maWcge1xuIFx0dTY0IG9xX2ludHJfcGt0OjE2O1xuIFxuIFx0LyoqIEludGVycnVwdCBDb2FsZXNjaW5nIChUaW1lIEludGVydmFsKS4gT2N0ZW9uIHdpbGwgaW50ZXJydXB0IHRoZVxuLVx0ICogIGhvc3QgaWYgYXRsZWFzdCBvbmUgcGFja2V0IHdhcyBzZW50IGluIHRoZSB0aW1lIGludGVydmFsIHNwZWNpZmllZFxuK1x0ICogIGhvc3QgaWYgYXQgbGVhc3Qgb25lIHBhY2tldCB3YXMgc2VudCBpbiB0aGUgdGltZSBpbnRlcnZhbCBzcGVjaWZpZWRcbiBcdCAqICBieSB0aGlzIGZpZWxkLiBUaGUgZHJpdmVyIHVzZXMgdGltZSBpbnRlcnZhbCBpbnRlcnJ1cHQgY29hbGVzY2luZ1xuIFx0ICogIGJ5IGRlZmF1bHQuICBUaGUgdGltZSBpcyBzcGVjaWZpZWQgaW4gbWljcm9zZWNvbmRzLlxuIFx0ICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9pcS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9pcS5oXG5pbmRleCBhMDRmMzZhMGUxYTA4Li5mZGQ3ZDNhNzdhMmRjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9pcS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX2lxLmhcbkBAIC03MCw3ICs3MCw3IEBAIHN0cnVjdCBvY3RfaXFfc3RhdHMge1xuIFxuIC8qKiBUaGUgaW5zdHJ1Y3Rpb24gKGlucHV0KSBxdWV1ZS5cbiAgKiAgVGhlIGlucHV0IHF1ZXVlIGlzIHVzZWQgdG8gcG9zdCByYXcgKGluc3RydWN0aW9uKSBtb2RlIGRhdGEgb3IgcGFja2V0XG4tICogIGRhdGEgdG8gT2N0ZW9uIGRldmljZSBmcm9tIHRoZSBob3N0LiBFYWNoIGlucHV0IHF1ZXVlICh1cHRvIDQpIGZvclxuKyAqICBkYXRhIHRvIE9jdGVvbiBkZXZpY2UgZnJvbSB0aGUgaG9zdC4gRWFjaCBpbnB1dCBxdWV1ZSAodXAgdG8gNCkgZm9yXG4gICogIGEgT2N0ZW9uIGRldmljZSBoYXMgb25lIHN1Y2ggc3RydWN0dXJlIHRvIHJlcHJlc2VudCBpdC5cbiAgKi9cbiBzdHJ1Y3Qgb2N0ZW9uX2luc3RyX3F1ZXVlIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX21haW4uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oXG5pbmRleCA5NTNlZGYwYzcwOTZjLi5kMmE1MjY3M2NhYzU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9tYWluLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbWFpbi5oXG5AQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG9jdGVvbl9tYXBfcGNpX2Jhcngoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdCxcbiAgKiBlcnJubyAtRUlOVFI6IHVzZXIgYWJvcnQgdGhlIGNvbW1hbmQuXG4gICogZXJybm8gLUVUSU1FOiB1c2VyIHNwZWZpZmllZCB0aW1lb3V0IHZhbHVlIGhhcyBiZWVuIGV4cGlyZWQuXG4gICogZXJybm8gLUVCVVNZOiB0aGUgcmVzcG9uc2Ugb2YgdGhlIHJlcXVlc3QgZG9lcyBub3QgcmV0dXJuIGluXG4tICogICAgICAgICAgICAgICByZXNvbmFibGUgdGltZSAoTElPX1NDX01BWF9UTU9fTVMpLlxuKyAqICAgICAgICAgICAgICAgcmVhc29uYWJsZSB0aW1lIChMSU9fU0NfTUFYX1RNT19NUykuXG4gICogICAgICAgICAgICAgICB0aGUgc2Mgd2xsIGJlIG1vdmUgdG8gem9tYmllIHJlc3BvbnNlIGxpc3QgYnlcbiAgKiAgICAgICAgICAgICAgIGxpb19wcm9jZXNzX29yZGVyZWRfbGlzdCgpXG4gICpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vb2N0ZW9uX25pYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL29jdGVvbl9uaWMuaFxuaW5kZXggYzEzOWZjNDIzNzY0ZS4uODM0MWZhYWEwYzI0NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmljLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9vY3Rlb25fbmljLmhcbkBAIC0yNzcsNyArMjc3LDcgQEAgaW50IG9jdG5ldF9zZW5kX25pY19kYXRhX3BrdChzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0LFxuIFxuIC8qKiBTZW5kIGEgTklDIGNvbnRyb2wgcGFja2V0IHRvIHRoZSBkZXZpY2VcbiAgKiBAcGFyYW0gb2N0IC0gb2N0ZW9uIGRldmljZSBwb2ludGVyXG4tICogQHBhcmFtIG5jdHJsIC0gY29udHJvbCBzdHJ1Y3R1cmUgd2l0aCBjb21tYW5kLCB0aW1vdXQsIGFuZCBjYWxsYmFjayBpbmZvXG4rICogQHBhcmFtIG5jdHJsIC0gY29udHJvbCBzdHJ1Y3R1cmUgd2l0aCBjb21tYW5kLCB0aW1lb3V0LCBhbmQgY2FsbGJhY2sgaW5mb1xuICAqIEByZXR1cm5zIElRX0ZBSUxFRCBpZiBpdCBmYWlsZWQgdG8gYWRkIHRvIHRoZSBpbnB1dCBxdWV1ZS4gSVFfU1RPUCBpZiB0aGVcbiAgKiBxdWV1ZSBzaG91bGQgYmUgc3RvcHBlZCwgYW5kIElRX1NFTkRfT0sgaWYgaXQgc2VudCBva2F5LlxuICAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9yZXF1ZXN0X21hbmFnZXIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9yZXF1ZXN0X21hbmFnZXIuY1xuaW5kZXggZDdjZmIyMGVlYTAwYy4uYTk4M2U3Zjc5NDYxZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9yZXF1ZXN0X21hbmFnZXIuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL3JlcXVlc3RfbWFuYWdlci5jXG5AQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgdm9pZCAgX19jaGVja19kYl90aW1lb3V0KHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3QsIHU2NCBpcV9ubyk7XG4gXG4gc3RhdGljIHZvaWQgKCpyZXF0eXBlX2ZyZWVfZm5bTUFYX09DVEVPTl9ERVZJQ0VTXVtSRVFUWVBFX0xBU1QgKyAxXSkgKHZvaWQgKik7XG4gXG4tLyogRGVmaW5lIHRoaXMgdG8gcmV0dXJuIHRoZSByZXF1ZXN0IHN0YXR1cyBjb21hcHRpYmxlIHRvIG9sZCBjb2RlICovXG4rLyogRGVmaW5lIHRoaXMgdG8gcmV0dXJuIHRoZSByZXF1ZXN0IHN0YXR1cyBjb21wYXRpYmxlIHRvIG9sZCBjb2RlICovXG4gLyojZGVmaW5lIE9DVEVPTl9VU0VfT0xEX1JFUV9TVEFUVVMqL1xuIFxuIC8qIFJldHVybiAwIG9uIHN1Y2Nlc3MsIDEgb24gZmFpbHVyZSAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmhcbmluZGV4IDA5MGQ2YjgzOTgyYTIuLmJiM2Y0ZmE2Yjk5NTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWMuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljLmhcbkBAIC05Nyw3ICs5Nyw3IEBAXG4gICogVGhpcyB2YWx1ZSBlbnN1cmVzIHRoYXQgb25jZSBhIHBhY2tldCBoYXMgYmVlbiBcImFjY2VwdGVkXCJcbiAgKiBmb3IgcmVjZXB0aW9uIGl0IHdpbGwgbm90IGdldCBkcm9wcGVkIGR1ZSB0byBub24tYXZhaWxhYmlsaXR5XG4gICogb2YgQ1EgZGVzY3JpcHRvci4gQW4gZXJyYXRhIGluIEhXIG1hbmRhdGVzIHRoaXMgdmFsdWUgdG8gYmVcbi0gKiBhdGxlYXN0IDB4MTAwLlxuKyAqIGF0IGxlYXN0IDB4MTAwLlxuICAqL1xuICNkZWZpbmUgTklDUEZfQ1FNX01JTl9EUk9QX0xFVkVMICAgICAgIDB4MTAwXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL3RodW5kZXIvbmljX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS90aHVuZGVyL25pY19tYWluLmNcbmluZGV4IDBlYzY1ZWM2MzRkZjUuLjA4NmYzMmI2MTU4MGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci9uaWNfbWFpbi5jXG5AQCAtNTk1LDcgKzU5NSw3IEBAIHN0YXRpYyB2b2lkIG5pY19jb25maWdfcnNzKHN0cnVjdCBuaWNwZiAqbmljLCBzdHJ1Y3QgcnNzX2NmZ19tc2cgKmNmZylcbiBcdG5pY19yZWdfd3JpdGUobmljLCBpZHhfYWRkciB8IChjcGlfYmFzZSBcdTAwM2NcdTAwM2MgMyksIGNwaV9jZmcpO1xuIH1cbiBcbi0vKiA0IGxldmVsIHRyYW5zbWl0IHNpZGUgc2NoZWR1bGVyIGNvbmZpZ3V0YXRpb25cbisvKiA0IGxldmVsIHRyYW5zbWl0IHNpZGUgc2NoZWR1bGVyIGNvbmZpZ3VyYXRpb25cbiAgKiBmb3IgVE5TIGJ5cGFzcyBtb2RlXG4gICpcbiAgKiBTYW1wbGUgY29uZmlndXJhdGlvbiBmb3IgU1EwIG9uIDg4eHhcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvZGUyMTA0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguY1xuaW5kZXggZjM4YTEwYzc5OTA3Zi4uZmE1MmUwOTk0MDljNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmNcbkBAIC0zNzMsNyArMzczLDcgQEAgc3RhdGljIHZvaWQgZGVfcnhfZXJyX2FjY3QgKHN0cnVjdCBkZV9wcml2YXRlICpkZSwgdW5zaWduZWQgcnhfdGFpbCxcbiBcdFx0ICByeF90YWlsLCBzdGF0dXMsIGxlbik7XG4gXG4gXHRpZiAoKHN0YXR1cyBcdTAwMjYgMHgzODAwMDMwMCkgIT0gMHgwMzAwKSB7XG4tXHRcdC8qIEluZ29yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4rXHRcdC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4gXHRcdGlmICgoc3RhdHVzIFx1MDAyNiAweGZmZmYpICE9IDB4N2ZmZikge1xuIFx0XHRcdG5ldGlmX3dhcm4oZGUsIHJ4X2VyciwgZGUtXHUwMDNlZGV2LFxuIFx0XHRcdFx0ICAgXCJPdmVyc2l6ZWQgRXRoZXJuZXQgZnJhbWUgc3Bhbm5lZCBtdWx0aXBsZSBidWZmZXJzLCBzdGF0dXMgJTA4eCFcXG5cIixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvaW50ZXJydXB0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvaW50ZXJydXB0LmNcbmluZGV4IDBhMTJjYjliM2JhNzguLjhjMDI3NzFiMjhlNGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvaW50ZXJydXB0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9pbnRlcnJ1cHQuY1xuQEAgLTE3Nyw3ICsxNzcsNyBAQCBpbnQgdHVsaXBfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXHRcdFx0ICAgcGt0X2xlbiBcdTAwM2UgMTUxOCkge1xuIFx0XHRcdCAgICAgICBpZiAoKHN0YXR1cyBcdTAwMjYgKFJ4TGVuZ3RoT3ZlcjIwNDcgfFxuIFx0XHRcdFx0XHQgICAgICBSeFdob2xlUGt0KSkgIT0gUnhXaG9sZVBrdCkge1xuLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cbisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzdGF0dXMgXHUwMDI2IDB4ZmZmZikgIT0gMHg3ZmZmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHVsaXBfZGVidWcgXHUwMDNlIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl93YXJuKFx1MDAyNmRldi1cdTAwM2VkZXYsXG5AQCAtNDA4LDcgKzQwOCw3IEBAIHN0YXRpYyBpbnQgdHVsaXBfcngoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0ICAgIHBrdF9sZW4gXHUwMDNlIDE1MTgpIHtcbiBcdFx0XHRpZiAoKHN0YXR1cyBcdTAwMjYgKFJ4TGVuZ3RoT3ZlcjIwNDcgfFxuIFx0XHRcdCAgICAgUnhXaG9sZVBrdCkpICAgICAgICAgIT0gUnhXaG9sZVBrdCkge1xuLVx0XHRcdFx0LyogSW5nb3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cbitcdFx0XHRcdC8qIElnbm9yZSBlYXJsaWVyIGJ1ZmZlcnMuICovXG4gXHRcdFx0XHRpZiAoKHN0YXR1cyBcdTAwMjYgMHhmZmZmKSAhPSAweDdmZmYpIHtcbiBcdFx0XHRcdFx0aWYgKHR1bGlwX2RlYnVnIFx1MDAzZSAxKVxuIFx0XHRcdFx0XHRcdG5ldGRldl93YXJuKGRldixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvbWVkaWEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9tZWRpYS5jXG5pbmRleCA1NWQ2ZmM5OWY0MGI2Li4wYzk2OTRkMmIzOGFlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL21lZGlhLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9tZWRpYS5jXG5AQCAtMjQsNyArMjQsNyBAQFxuIFxuIC8qIFJlYWQgYW5kIHdyaXRlIHRoZSBNSUkgcmVnaXN0ZXJzIHVzaW5nIHNvZnR3YXJlLWdlbmVyYXRlZCBzZXJpYWxcbiAgICBNRElPIHByb3RvY29sLiAgSXQgaXMganVzdCBkaWZmZXJlbnQgZW5vdWdoIGZyb20gdGhlIEVFUFJPTSBwcm90b2NvbFxuLSAgIHRvIG5vdCBzaGFyZSBjb2RlLiAgVGhlIG1heGl1bSBkYXRhIGNsb2NrIHJhdGUgaXMgMi41IE1oei4gKi9cbisgICB0byBub3Qgc2hhcmUgY29kZS4gIFRoZSBtYXhpbXVtIGRhdGEgY2xvY2sgcmF0ZSBpcyAyLjUgTWh6LiAqL1xuICNkZWZpbmUgTURJT19TSElGVF9DTEtcdFx0MHgxMDAwMFxuICNkZWZpbmUgTURJT19EQVRBX1dSSVRFMFx0MHgwMDAwMFxuICNkZWZpbmUgTURJT19EQVRBX1dSSVRFMVx0MHgyMDAwMFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC90dWxpcC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3R1bGlwLmhcbmluZGV4IDVlMDEwZTFmYTZmNzkuLmUzOWU1Yzc4ZDRjY2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvdHVsaXAuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3R1bGlwLmhcbkBAIC0yNTAsNyArMjUwLDcgQEAgZW51bSB0MjExNDNfY3NyNl9iaXRzIHtcbiBcdGNzcjZfdHRtID0gKDFcdTAwM2NcdTAwM2MyMiksICAvKiBUcmFuc21pdCBUaHJlc2hvbGQgTW9kZSwgc2V0IGZvciAxMGJhc2VULCAwIGZvciAxMDBCYXNlVFggKi9cbiBcdGNzcjZfc2YgPSAoMVx1MDAzY1x1MDAzYzIxKSwgICAvKiBTdG9yZSBhbmQgZm9yd2FyZC4gSWYgc2V0IGlnbm9yZXMgVFIgYml0cyAqL1xuIFx0Y3NyNl9oYmQgPSAoMVx1MDAzY1x1MDAzYzE5KSwgIC8qIEhlYXJ0IGJlYXQgZGlzYWJsZS4gRGlzYWJsZXMgU1FFIGZ1bmN0aW9uIGluIDEwYmFzZVQgKi9cbi1cdGNzcjZfcHMgPSAoMVx1MDAzY1x1MDAzYzE4KSwgICAvKiBQb3J0IFNlbGVjdC4gMCAoZGVmdWFsdCkgPSAxMGJhc2VULCAxID0gMTAwYmFzZVRYOiBjYW4ndCBiZSBzZXQgKi9cbitcdGNzcjZfcHMgPSAoMVx1MDAzY1x1MDAzYzE4KSwgICAvKiBQb3J0IFNlbGVjdC4gMCAoZGVmYXVsdCkgPSAxMGJhc2VULCAxID0gMTAwYmFzZVRYOiBjYW4ndCBiZSBzZXQgKi9cbiBcdGNzcjZfY2EgPSAoMVx1MDAzY1x1MDAzYzE3KSwgICAvKiBDb2xsaXNpb24gT2Zmc2V0IEVuYWJsZS4gSWYgc2V0IHVzZXMgc3BlY2lhbCBhbGdvcml0aG0gaW4gbG93IGNvbGxpc2lvbiBzaXR1YXRpb25zICovXG4gXHRjc3I2X3RyaCA9ICgxXHUwMDNjXHUwMDNjMTUpLCAgLyogVHJhbnNtaXQgVGhyZXNob2xkIGhpZ2ggYml0ICovXG4gXHRjc3I2X3RybCA9ICgxXHUwMDNjXHUwMDNjMTQpLCAgLyogVHJhbnNtaXQgVGhyZXNob2xkIGxvdyBiaXQgKi9cbkBAIC0yNzQsNyArMjc0LDcgQEAgZW51bSB0MjExNDNfY3NyNl9iaXRzIHtcbiBcdGNzcjZfb21faW50X2xvb3AgPSAoMVx1MDAzY1x1MDAzYzEwKSwgLyogaW50ZXJuYWwgKEZJRk8pIGxvb3BiYWNrIGZsYWcgKi9cbiBcdGNzcjZfb21fZXh0X2xvb3AgPSAoMVx1MDAzY1x1MDAzYzExKSwgLyogZXh0ZXJuYWwgKFBNRCkgbG9vcGJhY2sgZmxhZyAqL1xuIFx0Lyogc2V0IGJvdGggYW5kIHlvdSBnZXQgKFBIWSkgbG9vcGJhY2sgKi9cbi1cdGNzcjZfZmQgPSAoMVx1MDAzY1x1MDAzYzkpLCAgICAvKiBGdWxsIGR1cGxleCBtb2RlLCBkaXNhYmxlcyBoZWFyYmVhdCwgbm8gbG9vcGJhY2sgKi9cbitcdGNzcjZfZmQgPSAoMVx1MDAzY1x1MDAzYzkpLCAgICAvKiBGdWxsIGR1cGxleCBtb2RlLCBkaXNhYmxlcyBoZWFydGJlYXQsIG5vIGxvb3BiYWNrICovXG4gXHRjc3I2X3BtID0gKDFcdTAwM2NcdTAwM2M3KSwgICAgLyogUGFzcyBBbGwgTXVsdGljYXN0ICovXG4gXHRjc3I2X3ByID0gKDFcdTAwM2NcdTAwM2M2KSwgICAgLyogUHJvbWlzY3VvdXMgbW9kZSAqL1xuIFx0Y3NyNl9zYiA9ICgxXHUwMDNjXHUwMDNjNSksICAgIC8qIFN0YXJ0KDEpL1N0b3AoMCkgYmFja29mZiBjb3VudGVyICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL3dpbmJvbmQtODQwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvd2luYm9uZC04NDAuY1xuaW5kZXggYTU1ODFmMWQwMTQxNy4uYmU5MTk5ZjU1YThhOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC93aW5ib25kLTg0MC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvd2luYm9uZC04NDAuY1xuQEAgLTExODgsNyArMTE4OCw3IEBAIHN0YXRpYyBpbnQgbmV0ZGV2X3J4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdFx0YnJlYWs7XG4gXHRcdGlmICgoc3RhdHVzIFx1MDAyNiAweDM4MDA4MzAwKSAhPSAweDAzMDApIHtcbiBcdFx0XHRpZiAoKHN0YXR1cyBcdTAwMjYgMHgzODAwMDMwMCkgIT0gMHgwMzAwKSB7XG4tXHRcdFx0XHQvKiBJbmdvcmUgZWFybGllciBidWZmZXJzLiAqL1xuK1x0XHRcdFx0LyogSWdub3JlIGVhcmxpZXIgYnVmZmVycy4gKi9cbiBcdFx0XHRcdGlmICgoc3RhdHVzIFx1MDAyNiAweGZmZmYpICE9IDB4N2ZmZikge1xuIFx0XHRcdFx0XHRkZXZfd2FybihcdTAwMjZkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFx0XHRcdCBcIk92ZXJzaXplZCBFdGhlcm5ldCBmcmFtZSBzcGFubmVkIG11bHRpcGxlIGJ1ZmZlcnMsIGVudHJ5ICUjeCBzdGF0dXMgJTA0eCFcXG5cIixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX21pc2MuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jXG5pbmRleCA5MTM5MWE0OWZjZWEyLi5hNTlmZDI4MGEwNDVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9taXNjLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfbWlzYy5jXG5AQCAtNTkxLDcgKzU5MSw3IEBAIHN0YXRpYyBpbnQgaG5zX21hY19jb25maWdfc2RzX2xvb3BiYWNrKHN0cnVjdCBobnNfbWFjX2NiICptYWNfY2IsIGJvb2wgZW4pXG4gI2RlZmluZSBISUxJTktfQUNDRVNTX1NFTF9DRkdcdFx0MHg0MDAwOFxuIFx0XHRcdC8qIGhpbGluazQgXHUwMDI2IGhpbGluazMgdXNlIHRoZSBzYW1lIHhnZSB0cmFpbmluZyBhbmRcbiBcdFx0XHQgKiB4Z2UgdSBhZGFwdG9yLiBUaGVyZSBpcyBhIGhpbGluayBhY2Nlc3Mgc2VsIGNmZ1xuLVx0XHRcdCAqIHJlZ2lzdGVyIHRvIHNlbGVjdCB3aGljaCBvbmUgdG8gYmUgY29uZmlnZWRcbitcdFx0XHQgKiByZWdpc3RlciB0byBzZWxlY3Qgd2hpY2ggb25lIHRvIGJlIGNvbmZpZ3VyZWRcbiBcdFx0XHQgKi9cbiBcdFx0XHRpZiAoKCFITlNfRFNBRl9JU19ERUJVRyhtYWNfY2ItXHUwMDNlZHNhZl9kZXYpKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgKG1hY19jYi1cdTAwM2VtYWNfaWQgXHUwMDNjPSAzKSlcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19kc2FmX3BwZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZHNhZl9wcGUuY1xuaW5kZXggNTAxM2JlYjRkMjgyNS4uNDA4ZDM2ZDg1ZmIxMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfcHBlLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2RzYWZfcHBlLmNcbkBAIC0xMzksNyArMTM5LDcgQEAgc3RhdGljIHZvaWQgaG5zX3BwZV9zZXRfdmxhbl9zdHJpcChzdHJ1Y3QgaG5zX3BwZV9jYiAqcHBlX2NiLCBpbnQgZW4pXG4gfVxuIFxuIC8qKlxuLSAqIGhuc19wcGVfY2hlY2tzdW1faHcgLSBzZXQgcHBlIGNoZWNrc3VtIGNhY3VsYXRlXG4rICogaG5zX3BwZV9jaGVja3N1bV9odyAtIHNldCBwcGUgY2hlY2tzdW0gY2FsY3VsYXRlXG4gICogQHBwZV9jYjogcHBlIGRldmljZVxuICAqIEB2YWx1ZTogdmFsdWVcbiAgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmNcbmluZGV4IGU5MDVmMTBiODk0ZTguLmQ4MTlkMmJiMzQ1MDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuY1xuQEAgLTEyMzAsNyArMTIzMCw3IEBAIHN0YXRpYyB2b2lkIGhuc19uaWNfdXBkYXRlX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4gXHRoLVx1MDAzZWRldi1cdTAwM2VvcHMtXHUwMDNldXBkYXRlX3N0YXRzKGgsIFx1MDAyNm5ldGRldi1cdTAwM2VzdGF0cyk7XG4gfVxuIFxuLS8qIHNldCBtYWMgYWRkciBpZiBpdCBpcyBjb25maWdlZC4gb3IgbGVhdmUgaXQgdG8gdGhlIEFFIGRyaXZlciAqL1xuKy8qIHNldCBtYWMgYWRkciBpZiBpdCBpcyBjb25maWd1cmVkLiBvciBsZWF2ZSBpdCB0byB0aGUgQUUgZHJpdmVyICovXG4gc3RhdGljIHZvaWQgaG5zX2luaXRfbWFjX2FkZHIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4ge1xuIFx0c3RydWN0IGhuc19uaWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5kZXYpO1xuQEAgLTIzMTcsNyArMjMxNyw3IEBAIHN0YXRpYyBpbnQgaG5zX25pY19kZXZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0cmV0ID0gZGV2aWNlX3Byb3BlcnR5X3JlYWRfdTMyKGRldiwgXCJwb3J0LWlkXCIsIFx1MDAyNnBvcnRfaWQpO1xuIFx0XHRpZiAocmV0KVxuIFx0XHRcdGdvdG8gb3V0X3JlYWRfcHJvcF9mYWlsO1xuLVx0XHQvKiBmb3Igb2xkIGR0cywgd2UgbmVlZCB0byBjYWN1bGF0ZSB0aGUgcG9ydCBvZmZzZXQgKi9cbitcdFx0LyogZm9yIG9sZCBkdHMsIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBwb3J0IG9mZnNldCAqL1xuIFx0XHRwb3J0X2lkID0gcG9ydF9pZCBcdTAwM2MgSE5TX1NSVl9PRkZTRVQgPyBwb3J0X2lkICsgSE5TX0RFQlVHX09GRlNFVFxuIFx0XHRcdDogcG9ydF9pZCAtIEhOU19TUlZfT0ZGU0VUO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfbWFpbi5jXG5pbmRleCBlNmFmOTM5YzFjMTliLi5iZjM1ZjU1ZjViOGZhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX21haW4uY1xuQEAgLTEwNTI3LDcgKzEwNTI3LDcgQEAgc3RhdGljIGludCBoY2xnZV9nZXRfbGlua19kaWFnbm9zaXNfaW5mbyhzdHJ1Y3QgaG5hZTNfaGFuZGxlICpoYW5kbGUsXG4gfVxuIFxuIC8qIEFmdGVyIGRpc2FibGUgc3Jpb3YsIFZGIHN0aWxsIGhhcyBzb21lIGNvbmZpZyBhbmQgaW5mbyBuZWVkIGNsZWFuLFxuLSAqIHdoaWNoIGNvbmZpZ2VkIGJ5IFBGLlxuKyAqIHdoaWNoIGNvbmZpZ3VyZWQgYnkgUEYuXG4gICovXG4gc3RhdGljIHZvaWQgaGNsZ2VfY2xlYXJfdnBvcnRfdmZfaW5mbyhzdHJ1Y3QgaGNsZ2VfdnBvcnQgKnZwb3J0LCBpbnQgdmZpZClcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3BmL2hjbGdlX3RtLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfdG0uY1xuaW5kZXggMDBjM2YyNTQ4YmY2Yi4uYmY1MzNiOGY0NmFlNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMzL2huczNwZi9oY2xnZV90bS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzcGYvaGNsZ2VfdG0uY1xuQEAgLTM1LDcgKzM1LDcgQEAgZW51bSBoY2xnZV9zaGFwZXJfbGV2ZWwge1xuICAqIElSKE1icHMpID0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgKiAgQ0xPQ0soMTAwME1icHMpXG4gICpcdFx0VGljayAqICgyIF4gSVJfcylcbiAgKlxuLSAqIEByZXR1cm46IDA6IGNhbGN1bGF0ZSBzdWNlc3NmdWwsIG5lZ2F0aXZlOiBmYWlsXG4rICogQHJldHVybjogMDogY2FsY3VsYXRlIHN1Y2Nlc3NmdWwsIG5lZ2F0aXZlOiBmYWlsXG4gICovXG4gc3RhdGljIGludCBoY2xnZV9zaGFwZXJfcGFyYV9jYWxjKHUzMiBpciwgdTggc2hhcGVyX2xldmVsLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgaGNsZ2Vfc2hhcGVyX2lyX3BhcmEgKmlyX3BhcmEsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jXG5pbmRleCAwNjNhNjkyYzJiNDFlLi41ZDE0ZDI5YjAyOTY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2huczMvaG5zM3ZmL2hjbGdldmZfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy9obnMzdmYvaGNsZ2V2Zl9tYWluLmNcbkBAIC0xODgwLDcgKzE4ODAsNyBAQCBzdGF0aWMgdm9pZCBoY2xnZXZmX3Jlc2V0X3NlcnZpY2VfdGFzayhzdHJ1Y3QgaGNsZ2V2Zl9kZXYgKmhkZXYpXG4gXHRcdCAqIGZyb20gUEYgYXMgY21kcSB3b3VsZCBiZSBpbiB1bnJlbGlhYmxlIHN0YXRlIGkuZS4gbWFpbGJveFxuIFx0XHQgKiBjb21tdW5pY2F0aW9uIGJldHdlZW4gUEYgYW5kIFZGIHdvdWxkIGJlIGJyb2tlbi5cbiBcdFx0ICpcbi1cdFx0ICogaWYgd2UgYXJlIG5ldmVyIGdldGluZyBpbnRvIHBlbmRpbmcgc3RhdGUgaXQgbWVhbnMgZWl0aGVyOlxuK1x0XHQgKiBpZiB3ZSBhcmUgbmV2ZXIgZ2V0dGluZyBpbnRvIHBlbmRpbmcgc3RhdGUgaXQgbWVhbnMgZWl0aGVyOlxuIFx0XHQgKiAxLiBQRiBpcyBub3QgcmVjZWl2aW5nIG91ciByZXF1ZXN0IHdoaWNoIGNvdWxkIGJlIGR1ZSB0byBJTVBcbiBcdFx0ICogICAgcmVzZXRcbiBcdFx0ICogMi4gUEYgaXMgc2NyZXdlZFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaFxuaW5kZXggMDYxZmNkNDQ0ZDUwMy4uM2VkNTY3MGYwMWMyNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDIuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMi5oXG5AQCAtNzI5LDcgKzcyOSw3IEBAXG4gI2RlZmluZSBNVlBQMl9NQVhfVFhRXHRcdFx0OFxuIFxuIC8qIE1WUFAyX01BWF9UU09fU0VHUyBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhZ21lbnRzIHRvIGFsbG93IGluIHRoZSBHU09cbi0gKiBza2IuIEFzIHdlIG5lZWQgYSBtYXhpdW0gb2YgdHdvIGRlc2NyaXB0b3JzIHBlciBmcmFnbWVudHMgKDEgaGVhZGVyLCAxIGRhdGEpLFxuKyAqIHNrYi4gQXMgd2UgbmVlZCBhIG1heGltdW0gb2YgdHdvIGRlc2NyaXB0b3JzIHBlciBmcmFnbWVudHMgKDEgaGVhZGVyLCAxIGRhdGEpLFxuICAqIG11bHRpcGx5IHRoaXMgdmFsdWUgYnkgdHdvIHRvIGNvdW50IHRoZSBtYXhpbXVtIG51bWJlciBvZiBza2IgZGVzY3MgbmVlZGVkLlxuICAqL1xuICNkZWZpbmUgTVZQUDJfTUFYX1RTT19TRUdTXHRcdDMwMFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfcHJzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX3Bycy5jXG5pbmRleCA5M2U5NzhiZGYzMDNjLi5hZDY3N2NmZGRiNGQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9wcnMuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9wcnMuY1xuQEAgLTM4Miw3ICszODIsNyBAQCBzdGF0aWMgaW50IG12cHAyX3Byc19mbG93X2ZpbmQoc3RydWN0IG12cHAyICpwcml2LCBpbnQgZmxvdylcbiBcdHN0cnVjdCBtdnBwMl9wcnNfZW50cnkgcGU7XG4gXHRpbnQgdGlkO1xuIFxuLVx0LyogR28gdGhyb3VnaCB0aGUgYWxsIGVudGlyZXMgd2l0aCBNVlBQMl9QUlNfTFVfRkxPV1MgKi9cbitcdC8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRyaWVzIHdpdGggTVZQUDJfUFJTX0xVX0ZMT1dTICovXG4gXHRmb3IgKHRpZCA9IE1WUFAyX1BSU19UQ0FNX1NSQU1fU0laRSAtIDE7IHRpZCBcdTAwM2U9IDA7IHRpZC0tKSB7XG4gXHRcdHU4IGJpdHM7XG4gXG5AQCAtMTIxMiw3ICsxMjEyLDcgQEAgc3RhdGljIHZvaWQgbXZwcDJfcHJzX21oX2luaXQoc3RydWN0IG12cHAyICpwcml2KVxuIFx0bXZwcDJfcHJzX2h3X3dyaXRlKHByaXYsIFx1MDAyNnBlKTtcbiB9XG4gXG4tLyogU2V0IGRlZmF1bHQgZW50aXJlcyAocGxhY2UgaG9sZGVyKSBmb3IgcHJvbWlzY3VvdXMsIG5vbi1wcm9taXNjdW91cyBhbmRcbisvKiBTZXQgZGVmYXVsdCBlbnRyaWVzIChwbGFjZSBob2xkZXIpIGZvciBwcm9taXNjdW91cywgbm9uLXByb21pc2N1b3VzIGFuZFxuICAqIG11bHRpY2FzdCBNQUMgYWRkcmVzc2VzXG4gICovXG4gc3RhdGljIHZvaWQgbXZwcDJfcHJzX21hY19pbml0KHN0cnVjdCBtdnBwMiAqcHJpdilcbkBAIC0yMjQxLDcgKzIyNDEsNyBAQCBtdnBwMl9wcnNfbWFjX2RhX3JhbmdlX2ZpbmQoc3RydWN0IG12cHAyICpwcml2LCBpbnQgcG1hcCwgY29uc3QgdTggKmRhLFxuIFx0c3RydWN0IG12cHAyX3Byc19lbnRyeSBwZTtcbiBcdGludCB0aWQ7XG4gXG4tXHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyB3aXRoIE1WUFAyX1BSU19MVV9NQUMgKi9cbitcdC8qIEdvIHRocm91Z2ggdGhlIGFsbCBlbnRyaWVzIHdpdGggTVZQUDJfUFJTX0xVX01BQyAqL1xuIFx0Zm9yICh0aWQgPSBNVlBQMl9QRV9NQUNfUkFOR0VfU1RBUlQ7XG4gXHQgICAgIHRpZCBcdTAwM2M9IE1WUFAyX1BFX01BQ19SQU5HRV9FTkQ7IHRpZCsrKSB7XG4gXHRcdHVuc2lnbmVkIGludCBlbnRyeV9wbWFwO1xuQEAgLTI1MzksNyArMjUzOSw3IEBAIGludCBtdnBwMl9wcnNfZGVmX2Zsb3coc3RydWN0IG12cHAyX3BvcnQgKnBvcnQpXG4gXG4gXHQvKiBTdWNoIGVudHJ5IG5vdCBleGlzdCAqL1xuIFx0aWYgKHRpZCBcdTAwM2MgMCkge1xuLVx0XHQvKiBHbyB0aHJvdWdoIHRoZSBhbGwgZW50aXJlcyBmcm9tIGxhc3QgdG8gZmlyc3QgKi9cbitcdFx0LyogR28gdGhyb3VnaCB0aGUgYWxsIGVudHJpZXMgZnJvbSBsYXN0IHRvIGZpcnN0ICovXG4gXHRcdHRpZCA9IG12cHAyX3Byc190Y2FtX2ZpcnN0X2ZyZWUocG9ydC1cdTAwM2Vwcml2LFxuIFx0XHRcdFx0XHRcdE1WUFAyX1BFX0xBU1RfRlJFRV9USUQsXG4gXHRcdFx0XHRcdCAgICAgICBNVlBQMl9QRV9GSVJTVF9GUkVFX1RJRCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvbnBjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaFxuaW5kZXggNzE5YjM2MThlZWI1Mi4uMzA5MjQ0ZmU4NzU0MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL25wYy5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ucGMuaFxuQEAgLTg0LDcgKzg0LDcgQEAgZW51bSBucGNfa3B1X2xjX2x0eXBlIHtcbiBcdE5QQ19MVF9MQ19DVVNUT00xID0gMHhGLFxuIH07XG4gXG4tLyogRG9uJ3QgbW9kaWZ5IEx0eXBlcyB1cHRvIFNDVFAsIG90aGVyd2lzZSBpdCB3aWxsXG4rLyogRG9uJ3QgbW9kaWZ5IEx0eXBlcyB1cCB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbFxuICAqIGVmZmVjdCBmbG93IHRhZyBjYWxjdWxhdGlvbiBhbmQgdGh1cyBSU1MuXG4gICovXG4gZW51bSBucGNfa3B1X2xkX2x0eXBlIHtcbkBAIC0xNDAsNyArMTQwLDcgQEAgZW51bSBucGNfa3B1X2xnX2x0eXBlIHtcbiBcdE5QQ19MVF9MR19DVVNUT00xID0gMHhGLFxuIH07XG4gXG4tLyogRG9uJ3QgbW9kaWZ5IEx0eXBlcyB1cHRvIFNDVFAsIG90aGVyd2lzZSBpdCB3aWxsXG4rLyogRG9uJ3QgbW9kaWZ5IEx0eXBlcyB1cCB0byBTQ1RQLCBvdGhlcndpc2UgaXQgd2lsbFxuICAqIGVmZmVjdCBmbG93IHRhZyBjYWxjdWxhdGlvbiBhbmQgdGh1cyBSU1MuXG4gICovXG4gZW51bSBucGNfa3B1X2xoX2x0eXBlIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbmluZGV4IDE1M2ViNTdiYWQwNjcuLmQ4MGQyYzAwYmQ4NDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguY1xuQEAgLTQ5NzQsNyArNDk3NCw3IEBAIHN0YXRpYyB2b2lkIHJ2dV9uaXhfc2V0dXBfY2FwYWJpbGl0aWVzKHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIpXG4gXG4gXHQvKiBPbiBPY3Rlb25UeDIgRFdSUiBxdWFudHVtIGlzIGRpcmVjdGx5IGNvbmZpZ3VyZWQgaW50byBlYWNoIG9mXG4gXHQgKiB0aGUgdHJhbnNtaXQgc2NoZWR1bGVyIHF1ZXVlcy4gQW5kIFBGL1ZGIGRyaXZlcnMgd2VyZSBmcmVlIHRvXG4tXHQgKiBjb25maWcgYW55IHZhbHVlIHVwdG8gMl4yNC5cbitcdCAqIGNvbmZpZyBhbnkgdmFsdWUgdXAgdG8gMl4yNC5cbiBcdCAqIE9uIENOMTBLLCBIVyBpcyBtb2RpZmllZCwgdGhlIHF1YW50dW0gY29uZmlndXJhdGlvbiBhdCBzY2hlZHVsZXJcbiBcdCAqIHF1ZXVlcyBpcyBpbiB0ZXJtcyBvZiB3ZWlnaHQuIEFuZCBTVyBuZWVkcyB0byBzZXR1cCBhIGJhc2UgRFdSUiBNVFVcbiBcdCAqIGF0IE5JWF9BRl9EV1JSX1JQTV9NVFUgLyBOSVhfQUZfRFdSUl9TRFBfTVRVLiBIVyB3aWxsIGRvXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuY1xuaW5kZXggM2UxYmYyMmNiYTY5Yy4uZjk4ZWY1NDMxYzkwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuY1xuQEAgLTMwMSw3ICszMDEsNyBAQCBzdGF0aWMgdm9pZCBjbjEwa19nZXRfaW5ncmVzc19yYXRlX2NmZyh1NjQgcmF0ZSwgdTMyICpyYXRlX2V4cCxcbiBcdCAqIHBvbGljZXIgdGltZXVuaXQgKiAyXnJkaXYgaWUgMiAqIDJecmRpdiB1c2VjcywgdG8gdGhlIHRva2VuIGJ1Y2tldC5cbiBcdCAqIEhlcmUgcG9saWNlciB0aW1ldW5pdCBpcyAyIHVzZWNzIGFuZCByYXRlIGlzIGluIGJpdHMgcGVyIHNlYy5cbiBcdCAqIFNpbmNlIGZsb2F0aW5nIHBvaW50IGNhbm5vdCBiZSB1c2VkIGJlbG93IGFsZ29yaXRobSB1c2VzIDEwMDAwMDBcbi1cdCAqIHNjYWxlIGZhY3RvciB0byBzdXBwb3J0IHJhdGVzIHVwdG8gMTAwR2Jwcy5cbitcdCAqIHNjYWxlIGZhY3RvciB0byBzdXBwb3J0IHJhdGVzIHVwIHRvIDEwMEdicHMuXG4gXHQgKi9cbiBcdHRtcCA9IHJhdGUgKiAzMiAqIDI7XG4gXHRpZiAodG1wIFx1MDAzYyAyNTYwMDAwMDApIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9kY2JubC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfZGNibmwuY1xuaW5kZXggZjExMGRmYTQyMzYwNS4uOTFkMzQ2ZDExNGFmNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2RjYm5sLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2RjYm5sLmNcbkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBpbnQgb3R4Ml9wZmNfdHhzY2hxX2FsbG9jX29uZShzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHU4IHByaW8pXG4gXHRpZiAoIXJlcSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHQvKiBSZXF1ZXN0IG9uZSBzY2hxIHBlciBsZXZlbCB1cHRvIG1heCBsZXZlbCBhcyBjb25maWd1cmVkXG4rXHQvKiBSZXF1ZXN0IG9uZSBzY2hxIHBlciBsZXZlbCB1cCB0byBtYXggbGV2ZWwgYXMgY29uZmlndXJlZFxuIFx0ICogbGluayBjb25maWcgbGV2ZWwuIFRoZXNlIHJlc3Qgb2YgdGhlIHNjaGVkdWxlciBjYW4gYmVcbiBcdCAqIHNhbWUgYXMgaHcudHhzY2hxX2xpc3QuXG4gXHQgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3B4YTE2OF9ldGguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jXG5pbmRleCBiYmJiYmJhNjNlMTVkLi4yMzcwYjJkZGJhNmI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9weGExNjhfZXRoLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHhhMTY4X2V0aC5jXG5AQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyBpbnQgYWRkX2RlbF9oYXNoX2VudHJ5KHN0cnVjdCBweGExNjhfZXRoX3ByaXZhdGUgKnBlcCxcbiAvKlxuICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgKiAgQ3JlYXRlIGFuIGFkZHJlc3NUYWJsZSBlbnRyeSBmcm9tIE1BQyBhZGRyZXNzIGluZm9cbi0gKiAgZm91bmQgaW4gdGhlIHNwZWNpZmVkIG5ldF9kZXZpY2Ugc3RydWN0XG4rICogIGZvdW5kIGluIHRoZSBzcGVjaWZpZWQgbmV0X2RldmljZSBzdHJ1Y3RcbiAgKlxuICAqICBJbnB1dCA6IHBvaW50ZXIgdG8gZXRoZXJuZXQgaW50ZXJmYWNlIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZVxuICAqICBPdXRwdXQgOiBOL0FcbkBAIC04MDYsNyArODA2LDcgQEAgc3RhdGljIGludCByeHFfcHJvY2VzcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgYnVkZ2V0KVxuIFx0XHRzdGF0cy1cdTAwM2VyeF9ieXRlcyArPSByeF9kZXNjLVx1MDAzZWJ5dGVfY250O1xuIFx0XHQvKlxuIFx0XHQgKiBJbiBjYXNlIHJlY2VpdmVkIGEgcGFja2V0IHdpdGhvdXQgZmlyc3QgLyBsYXN0IGJpdHMgb24gT1Jcbi1cdFx0ICogdGhlIGVycm9yIHN1bW1hcnkgYml0IGlzIG9uLCB0aGUgcGFja2V0cyBuZWVkcyB0byBiZSBkcm9wZWQuXG4rXHRcdCAqIHRoZSBlcnJvciBzdW1tYXJ5IGJpdCBpcyBvbiwgdGhlIHBhY2tldHMgbmVlZHMgdG8gYmUgZHJvcHBlZC5cbiBcdFx0ICovXG4gXHRcdGlmICgoKGNtZF9zdHMgXHUwMDI2IChSWF9GSVJTVF9ERVNDIHwgUlhfTEFTVF9ERVNDKSkgIT1cbiBcdFx0ICAgICAoUlhfRklSU1RfREVTQyB8IFJYX0xBU1RfREVTQykpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jXG5pbmRleCBmZWY0YjJiMGIxZjI2Li43OWQ2YTgxOWJmOTA1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL25ldHhlbi9uZXR4ZW5fbmljX2N0eC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuL25ldHhlbl9uaWNfY3R4LmNcbkBAIC0xNyw3ICsxNyw3IEBAIG5ldHhlbl9wb2xsX3JzcChzdHJ1Y3QgbmV0eGVuX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRpbnRcdHRpbWVvdXQgPSAwO1xuIFxuIFx0ZG8ge1xuLVx0XHQvKiBnaXZlIGF0bGVhc3QgMW1zIGZvciBmaXJtd2FyZSB0byByZXNwb25kICovXG4rXHRcdC8qIGdpdmUgYXQgbGVhc3QgMW1zIGZvciBmaXJtd2FyZSB0byByZXNwb25kICovXG4gXHRcdG1zbGVlcCgxKTtcbiBcbiBcdFx0aWYgKCsrdGltZW91dCBcdTAwM2UgTlhfT1NfQ1JCX1JFVFJZX0NPVU5UKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX2N4dC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfY3h0LmNcbmluZGV4IGI3MDI2MmU3MGJhZjYuLjg5Yjk0N2Y4MmNmMDAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9jeHQuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfY3h0LmNcbkBAIC01NjEsNyArNTYxLDcgQEAgaW50IHFlZF9jeHRfY2ZnX2lsdF9jb21wdXRlKHN0cnVjdCBxZWRfaHdmbiAqcF9od2ZuLCB1MzIgKmxpbmVfY291bnQpXG4gXHRcdFx0ICogICAgICBibG9jayBpbiB0aGUgSUxUIGNsaWVudC4gVGhpcyBpcyBsYXRlciB1c2VkIHRvXG4gXHRcdFx0ICogICAgICBjb25maWd1cmUgdGhlIENEVSBzZWdtZW50IG9mZnNldCByZWdpc3RlcnMgYW5kXG4gXHRcdFx0ICogICAgICByZXN1bHRzIGluIGFuIEZMIGNvbW1hbmQgZm9yIFRJRHMgb2YgdGhpc1xuLVx0XHRcdCAqICAgICAgc2VnZW1lbnQgYmVoYXZlcyBhcyByZWd1bGFyIGxvYWQgY29tbWFuZHNcbitcdFx0XHQgKiAgICAgIHNlZ21lbnQgYmVoYXZlcyBhcyByZWd1bGFyIGxvYWQgY29tbWFuZHNcbiBcdFx0XHQgKiAgICAgIChsb2FkaW5nIFRJRHMgZnJvbSB0aGUgd29ya2luZyBtZW1vcnkpLlxuIFx0XHRcdCAqL1xuIFx0XHRcdGxpbmUgPSBwX2NsaS1cdTAwM2VwZl9ibGtzW0NEVVRfU0VHX0JMSyhpKV0uc3RhcnRfbGluZTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkL3FlZF9tY3AuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oXG5pbmRleCA5YmQwNTY1ZmU4YWJjLi41MDY5OWQ2MDBiOGUzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC9xZWRfbWNwLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWQvcWVkX21jcC5oXG5AQCAtNzgzLDcgKzc4Myw3IEBAIHN0cnVjdCBxZWRfbWNwX2luZm8ge1xuIFx0dTE2XHRcdFx0XHRcdG1md19tYl9sZW5ndGg7XG4gXHR1MzJcdFx0XHRcdFx0bWNwX2hpc3Q7XG4gXG4tXHQvKiBDYXBhYmlsdGllcyBuZWdvdGlhdGVkIHdpdGggdGhlIE1GVyAqL1xuK1x0LyogQ2FwYWJpbGl0aWVzIG5lZ290aWF0ZWQgd2l0aCB0aGUgTUZXICovXG4gXHR1MzJcdFx0XHRcdFx0Y2FwYWJpbGl0aWVzO1xuIFxuIFx0LyogUy9OIGZvciBkZWJ1ZyBkYXRhIG1haWxib3ggY29tbWFuZHMgKi9cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pYy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWMuaFxuaW5kZXggZDdjOGZhZGI0OWRlMS4uOTcyOGQ1ODNiODkxOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljLmhcbkBAIC05MDksNyArOTA5LDcgQEAgc3RydWN0IHFsY25pY19tYWNfdmxhbl9saXN0IHtcbiBcbiAjZGVmaW5lIFFMQ05JQ19MUk9fUkVRVUVTVF9DTEVBTlVQXHQ0XG4gXG4tLyogQ2FwYWJpbGl0ZXMgcmVjZWl2ZWQgKi9cbisvKiBDYXBhYmlsaXRpZXMgcmVjZWl2ZWQgKi9cbiAjZGVmaW5lIFFMQ05JQ19GV19DQVBBQklMSVRZX1RTT1x0XHRCSVRfMVxuICNkZWZpbmUgUUxDTklDX0ZXX0NBUEFCSUxJVFlfQkRHXHRcdEJJVF84XG4gI2RlZmluZSBRTENOSUNfRldfQ0FQQUJJTElUWV9GVkxBTlRYXHRcdEJJVF85XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfODN4eF9pbml0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuY1xuaW5kZXggNDdjZDllYzY2NWVlYi4uZmYzMzdhOTE3MjQzYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljXzgzeHhfaW5pdC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY184M3h4X2luaXQuY1xuQEAgLTE5NTcsOSArMTk1Nyw5IEBAIHN0YXRpYyB2b2lkIHFsY25pY184M3h4X3RlbXBsYXRlX2VuZChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKnBfZGV2KVxuICogcWxjbmljXzgzeHhfZXhlY190ZW1wbGF0ZV9jbWRcbiAqXG4gKiBAcF9kZXY6IGFkYXB0ZXIgc3RydWN0dXJlXG4tKiBAcF9idWZmOiBQb2l0ZXIgdG8gaW5zdHJ1Y3Rpb24gdGVtcGxhdGVcbisqIEBwX2J1ZmY6IFBvaW50ZXIgdG8gaW5zdHJ1Y3Rpb24gdGVtcGxhdGVcbiAqXG4tKiBUZW1wbGF0ZSBwcm92aWRlcyBpbnN0cnVjdGlvbnMgdG8gc3RvcCwgcmVzdGFydCBhbmQgaW5pdGFsaXplIGZpcm13YXJlLlxuKyogVGVtcGxhdGUgcHJvdmlkZXMgaW5zdHJ1Y3Rpb25zIHRvIHN0b3AsIHJlc3RhcnQgYW5kIGluaXRpYWxpemUgZmlybXdhcmUuXG4gKiBUaGVzZSBpbnN0cnVjdGlvbnMgYXJlIGFic3RyYWN0ZWQgYXMgYSBzZXJpZXMgb2YgcmVhZCwgd3JpdGUgYW5kXG4gKiBwb2xsIG9wZXJhdGlvbnMgb24gaGFyZHdhcmUgcmVnaXN0ZXJzLiBSZWdpc3RlciBpbmZvcm1hdGlvbiBhbmQgb3BlcmF0aW9uXG4gKiBzcGVjaWZpY3MgYXJlIG5vdCBleHBvc2VkIHRvIHRoZSBkcml2ZXIuIERyaXZlciByZWFkcyB0aGUgdGVtcGxhdGUgZnJvbVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX2N0eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmNcbmluZGV4IGViODI3Yjg2ZWNhZTguLjFiOTRjNDJkNjY5YjMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19jdHguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfY3R4LmNcbkBAIC05NSw3ICs5NSw3IEBAIHFsY25pY19wb2xsX3JzcChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIpXG4gXHRpbnQgdGltZW91dCA9IDAsIGVyciA9IDA7XG4gXG4gXHRkbyB7XG4tXHRcdC8qIGdpdmUgYXRsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi9cbitcdFx0LyogZ2l2ZSBhdCBsZWFzdCAxbXMgZm9yIGZpcm13YXJlIHRvIHJlc3BvbmQgKi9cbiBcdFx0bWRlbGF5KDEpO1xuIFxuIFx0XHRpZiAoKyt0aW1lb3V0IFx1MDAzZSBRTENOSUNfT1NfQ1JCX1JFVFJZX0NPVU5UKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uY1xuaW5kZXggZmY0ZjdjZDIwYzc5MS4uMjNhZTc2Y2E4MWRiZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jXG5AQCAtNjQwLDcgKzY0MCw3IEBAIHN0YXRpYyBpbnQgcWxjbmljX21heF9yaW5ncyhzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHJpbmdfY250LFxuIFxuIHZvaWQgcWxjbmljX3NldF90eF9yaW5nX2NvdW50KHN0cnVjdCBxbGNuaWNfYWRhcHRlciAqYWRhcHRlciwgdTggdHhfY250KVxuIHtcbi1cdC8qIDgzeHggYWRhcHRlciBkb2VzIG5vdCBoYXZlIG1heF90eF9yaW5ncyBpbnRpYWxpemVkIGluIHByb2JlICovXG4rXHQvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfdHhfcmluZ3MgaW5pdGlhbGl6ZWQgaW4gcHJvYmUgKi9cbiBcdGlmIChhZGFwdGVyLVx1MDAzZW1heF90eF9yaW5ncylcbiBcdFx0YWRhcHRlci1cdTAwM2VkcnZfdHhfcmluZ3MgPSBxbGNuaWNfbWF4X3JpbmdzKGFkYXB0ZXIsIHR4X2NudCxcbiBcdFx0XHRcdFx0XHRcdCBRTENOSUNfVFhfUVVFVUUpO1xuQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIHFsY25pY19zZXRfdHhfcmluZ19jb3VudChzdHJ1Y3QgcWxjbmljX2FkYXB0ZXIgKmFkYXB0ZXIsIHU4IHR4X2NudClcbiBcbiB2b2lkIHFsY25pY19zZXRfc2RzX3JpbmdfY291bnQoc3RydWN0IHFsY25pY19hZGFwdGVyICphZGFwdGVyLCB1OCByeF9jbnQpXG4ge1xuLVx0LyogODN4eCBhZGFwdGVyIGRvZXMgbm90IGhhdmUgbWF4X3Nkc19yaW5ncyBpbnRpYWxpemVkIGluIHByb2JlICovXG4rXHQvKiA4M3h4IGFkYXB0ZXIgZG9lcyBub3QgaGF2ZSBtYXhfc2RzX3JpbmdzIGluaXRpYWxpemVkIGluIHByb2JlICovXG4gXHRpZiAoYWRhcHRlci1cdTAwM2VtYXhfc2RzX3JpbmdzKVxuIFx0XHRhZGFwdGVyLVx1MDAzZWRydl9zZHNfcmluZ3MgPSBxbGNuaWNfbWF4X3JpbmdzKGFkYXB0ZXIsIHJ4X2NudCxcbiBcdFx0XHRcdFx0XHRcdCAgUUxDTklDX1JYX1FVRVVFKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmNcbmluZGV4IDRlZWEzNDA4MDM0YmUuLmI3MjJhMTk1ZDgzMWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmNcbisrKyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9jZm0uY1xuQEAgLTE3LDcgKzE3LDcgQEBcbiAqL1xuIFxuIC8qXG4tICpcdEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb25cbisgKlx0SGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvblxuICAqXHRUaGUgZm9sbG93aW5nIGV4dGVybmFsIFNNVCBmdW5jdGlvbnMgYXJlIHJlZmVyZW5jZWQgOlxuICAqXG4gICpcdFx0cXVldWVfZXZlbnQoKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uYyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uY1xuaW5kZXggMmY1ZjVmMjZiYjQzNC4uZTQxOGFiNjVjYjYxMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uY1xuKysrIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jXG5AQCAtMTcsNyArMTcsNyBAQFxuICovXG4gXG4gLypcbi0gKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWFudGF0aW9uXG4rICogSGFyZHdhcmUgaW5kZXBlbmRlbnQgc3RhdGUgbWFjaGluZSBpbXBsZW1lbnRhdGlvblxuICAqIFRoZSBmb2xsb3dpbmcgZXh0ZXJuYWwgU01UIGZ1bmN0aW9ucyBhcmUgcmVmZXJlbmNlZCA6XG4gICpcbiAgKiBcdFx0cXVldWVfZXZlbnQoKVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvZnBsdXN0bS5jXG5pbmRleCAwMzYwNjIzNzZjMDY2Li4wZDQyMDEzNDVmOWJlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uY1xuKysrIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uY1xuQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgdV9sb25nIHJlYWRfbWRyKHN0cnVjdCBzX3NtYyAqc21jLCB1bnNpZ25lZCBpbnQgYWRkcilcbiBcdENIRUNLX05QUCgpIDtcbiBcdE1BUlIoYWRkcikgO1xuIFx0b3V0cHcoRk1fQShGTV9DTURSRUcxKSxGTV9JUk1FTVdPKSA7XG4tXHRDSEVDS19OUFAoKSA7XHQvKiBuZWVkZWQgZm9yIFBDSSB0byBwcmV2ZW50IGZyb20gdGltZWluZyB2aW9sYXRpb25zICovXG4rXHRDSEVDS19OUFAoKSA7XHQvKiBuZWVkZWQgZm9yIFBDSSB0byBwcmV2ZW50IGZyb20gdGltaW5nIHZpb2xhdGlvbnMgKi9cbiAvKlx0cCA9IE1EUlIoKSA7ICovXHQvKiBiYWQgcmVhZCB2YWx1ZXMgaWYgdGhlIHdvcmthcm91bmQgKi9cbiBcdFx0XHQvKiBzbWMtXHUwMDNlaHcubWNfZHVtbXkgPSAqKChzaG9ydCB2b2xhdGlsZSBmYXIgKikoYWRkcikpKSovXG4gXHRcdFx0LyogaXMgdXNlZCAqL1xuQEAgLTU3Miw3ICs1NzIsNyBAQCBOb3RlXHRBZnRlciBhbnkgcmluZyBvcGVyYXRpb25hbCBjaGFuZ2UgdGhlIHRyYW5zbWl0IGNvbXBsZXRlXG4gXHRUaGUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQgbW9kdWxlIG11c3QgZW5hYmxlXG4gXHR0aGUgdHJhbnNtaXQgY29tcGxldGUgaW50ZXJydXB0IG9mIGEgcXVldWUsXG4gXHRcdC0gd2hlbiBpdCBxdWV1ZXMgdGhlIGZpcnN0IGZyYW1lLFxuLVx0XHQgIGJlY2F1c2Ugb2Ygbm8gdHJhbnNtaXQgcmVzb3VyY2VzIGFyZSBiZWVpbmdcbitcdFx0ICBiZWNhdXNlIG9mIG5vIHRyYW5zbWl0IHJlc291cmNlcyBhcmUgYmVpbmdcbiBcdFx0ICBhdmFpbGFibGUgYW5kXG4gXHRcdC0gd2hlbiBpdCBlc2NhcGVzIGZyb20gdGhlIGZ1bmN0aW9uIGxsY19yZXN0YXJ0X3R4XG4gXHRcdCAgd2hpbGUgc29tZSBmcmFtZXMgYXJlIHN0aWxsIHF1ZXVlZC5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9od210bS5oIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvaHdtdG0uaFxuaW5kZXggZTk3ZGI4MjZjZGQ0NS4uMGFiNDljYzBhOGJkYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL2h3bXRtLmhcbisrKyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL2h3bXRtLmhcbkBAIC0xMTMsNyArMTEzLDcgQEAgc3RydWN0IGh3X21vZHVsIHtcbiBcdHN0cnVjdFx0c19tYnVmX3Bvb2xcdG1idWZfcG9vbCA7XG4gXHRzdHJ1Y3RcdGh3bV9yXHRyIDtcbiBcbi1cdHVuaW9uIHNfZnBfZGVzY3Igdm9sYXRpbGUgKmRlc2NyX3AgOyAvKiBwb2ludHMgdG8gdGhlIGRlc3JpcHRvciBhcmVhICovXG4rXHR1bmlvbiBzX2ZwX2Rlc2NyIHZvbGF0aWxlICpkZXNjcl9wIDsgLyogcG9pbnRzIHRvIHRoZSBkZXNjcmlwdG9yIGFyZWEgKi9cbiBcbiBcdHVfc2hvcnQgcGFzc19TTVQgO1x0XHQvKiBwYXNzIFNNVCBmcmFtZXMgKi9cbiBcdHVfc2hvcnQgcGFzc19OU0EgO1x0XHQvKiBwYXNzIGFsbCBOU0EgZnJhbWVzICovXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvc2JhLmggYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9zYmEuaFxuaW5kZXggZjMwMzAxZmNkMDIyYy4uN2ZlOTljMTJlMjAxNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3NiYS5oXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC9zYmEuaFxuQEAgLTk0LDcgKzk0LDcgQEAgc3RydWN0IHNfc2JhIHtcbiBcdGxvbmdcdFx0bXNnX21pYl9vdiA7XHRcdC8qIEN1cnJlbnQgT3ZlcmhlYWQgZm9yIHRoaXMgUGF0aCovXG4gXHRsb25nXHRcdG1zZ19jYXRlZ29yeSA7XHRcdC8qIENhdGVnb3J5IG9mIHRoZSBBbGxvY2F0aW9uICovXG4gXHR1X2xvbmdcdFx0bXNnX21heF90X25lZyA7XHRcdC8qIGxvbmdlc3QgVF9OZWcgYWNjZXB0YWJsZSAqL1xuLVx0dV9sb25nXHRcdG1zZ19taW5fc2VnX3NpeiA7XHQvKiBtaW5pbXVtIHNlZ2VtZW50IHNpemUgKi9cbitcdHVfbG9uZ1x0XHRtc2dfbWluX3NlZ19zaXogO1x0LyogbWluaW11bSBzZWdtZW50IHNpemUgKi9cbiBcdHN0cnVjdCBzbXRfaGVhZGVyXHQqc20gO1x0XHQvKiBwb2ludHMgdG8gdGhlIHJlYyBtZXNzYWdlICovXG4gXHRzdHJ1Y3QgZmRkaV9hZGRyXHQqbXNnX2FsbG9jX2FkZHIgO1x0LyogQWxsb2NhdGlvbiBBZGRyZXNzICovXG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jXG5pbmRleCA5MGU4ZGY2ZDlhODhhLi43NDUyODVkNGQ2ZDJlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcGNtcGxjLmNcbkBAIC0xNiw3ICsxNiw3IEBAXG4gKi9cbiBcbiAvKlxuLSAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb25cbisgKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWVudGF0aW9uXG4gICogVGhlIGZvbGxvd2luZyBleHRlcm5hbCBTTVQgZnVuY3Rpb25zIGFyZSByZWZlcmVuY2VkIDpcbiAgKlxuICAqIFx0XHRxdWV1ZV9ldmVudCgpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jXG5pbmRleCAzMTQ2MjM2NTBhODRiLi41NzA4MTI0ZjA1ZDJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmNcbkBAIC0xNiw3ICsxNiw3IEBAXG4gKi9cbiBcbiAvKlxuLSAqIEhhcmR3YXJlIGluZGVwZW5kZW50IHN0YXRlIG1hY2hpbmUgaW1wbGVtYW50YXRpb25cbisgKiBIYXJkd2FyZSBpbmRlcGVuZGVudCBzdGF0ZSBtYWNoaW5lIGltcGxlbWVudGF0aW9uXG4gICogVGhlIGZvbGxvd2luZyBleHRlcm5hbCBTTVQgZnVuY3Rpb25zIGFyZSByZWZlcmVuY2VkIDpcbiAgKlxuICAqIFx0XHRxdWV1ZV9ldmVudCgpXG5kaWZmIC0tZ2l0IGEvbmV0L2xsYy9sbGNfY29ubi5jIGIvbmV0L2xsYy9sbGNfY29ubi5jXG5pbmRleCAyNjA0NjBkNTBmNTRjLi40YjZmZTlhNDczY2IzIDEwMDY0NFxuLS0tIGEvbmV0L2xsYy9sbGNfY29ubi5jXG4rKysgYi9uZXQvbGxjL2xsY19jb25uLmNcbkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBsbGNfY29ubl9ydG5fcGR1KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB9XG4gXG4gLyoqXG4tICpcdGxsY19jb25uX3Jlc2VuZF9pX3BkdV9hc19jbWQgLSByZXNlbmQgYWxsIGFsbCB1bmFja25vd2xlZGdlZCBJIFBEVXNcbisgKlx0bGxjX2Nvbm5fcmVzZW5kX2lfcGR1X2FzX2NtZCAtIHJlc2VuZCBhbGwgdW5hY2tub3dsZWRnZWQgSSBQRFVzXG4gICpcdEBzazogYWN0aXZlIGNvbm5lY3Rpb25cbiAgKlx0QG5yOiBOUlxuICAqXHRAZmlyc3RfcF9iaXQ6IHBfYml0IHZhbHVlIG9mIGZpcnN0IHBkdVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaFxuaW5kZXggM2VlZWVmZmI0MDA1Yi4uNjI5NGU0OWE0NmUwNCAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC94ZnJtX3BvbGljeS5zaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L3hmcm1fcG9saWN5LnNoXG5AQCAtMjQyLDcgKzI0Miw3IEBAIGNoZWNrX2V4Y2VwdGlvbnMoKVxuIFx0XHRlY2hvIFwiUEFTUzogcGluZyB0byAuMjU0IGJ5cGFzc2VkIGlwc2VjIHR1bm5lbCAoJGxvZ3Bvc3RmaXgpXCJcbiBcdGZpXG4gXG4tXHQjIHBpbmcgdG8gLjI1MyBzaG91bGQgdXNlIHVzZSBpcHNlYyBkdWUgdG8gZGlyZWN0IHBvbGljeSBleGNlcHRpb24uXG4rXHQjIHBpbmcgdG8gLjI1MyBzaG91bGQgdXNlIGlwc2VjIGR1ZSB0byBkaXJlY3QgcG9saWN5IGV4Y2VwdGlvbi5cbiBcdGNoZWNrX3hmcm0gMSAyNTNcbiBcdGlmIFsgJD8gLW5lIDAgXTsgdGhlblxuIFx0XHRlY2hvIFwiRkFJTDogZXhwZWN0ZWQgcGluZyB0byAuMjUzIHRvIHVzZSBpcHNlYyB0dW5uZWwgKCRsb2dwb3N0Zml4KVwiXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNTo1OTo0My42NDQ1MzQwMjJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMzA3MDU5MDU4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBSZXZpZXc6IFNwZWxsaW5nIGFuZCBUeXBvIEZpeGVzIGluIENvbW1lbnRzIGFuZCBhIFNlbGYtVGVzdCBTY3JpcHQqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gdGhlIGxvb2tzIG9mIGl0LCB0aGlzIHBhdGNoIHNlcmllcyBpcyBsYXNlci1mb2N1c2VkIG9uIGNsZWFuaW5nIHVwIHNvbWUgbWlub3IgdGV4dHVhbCBpbmNvbnNpc3RlbmNpZXMuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgcHVyZSBjb21tZW50IGVkaXRzIOKAkyBlc3NlbnRpYWxseSBjb3JyZWN0aW5nIHNwZWxsaW5nIGVycm9ycyBhbmQgdHlwb3Mgc2NhdHRlcmVkIGFjcm9zcyB2YXJpb3VzIEV0aGVybmV0IGRyaXZlcnMgKEF0aGVyb3MsIEJyb2FkY29tLCBDYXZpdW0sIERFQywgSGlzaWxpY29uLCBNYXJ2ZWxsLCBRTG9naWMpLCBGRERJIGRyaXZlcnMsIGBsbGNfY29ubi5jYCwgYW5kIGV2ZW4gYSBzZWxmLXRlc3Qgc2NyaXB0IGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQveGZybV9wb2xpY3kuc2hgLlxuXG5JJ3ZlIG1ldGljdWxvdXNseSByZXZpZXdlZCBlYWNoIGRpZmYgY2h1bmssIGFzIHRoZSBjb21taXQgbWVzc2FnZSBkZXNjcmliZXMuIEV2ZXJ5IHNpbmdsZSBjaGFuZ2UgaXMgY29uZmluZWQgdG8gY29tbWVudHMuIFRoZXJlIGFyZSBubyBtb2RpZmljYXRpb25zIHRvIGFueSBhY3R1YWwgQyBjb2RlLCBkYXRhIHN0cnVjdHVyZXMsIG1hY3Jvcywgb3IgY29udHJvbCBmbG93LiBJdCdzIGFsbCBhYm91dCBlbnN1cmluZyB0aGUgY29tbWVudHMgYXJlIGdyYW1tYXRpY2FsbHkgY29ycmVjdCBhbmQgdGhhdCB0aGUgc2VsZi10ZXN0IHNjcmlwdCB1c2VzIGNvcnJlY3QgbGFuZ3VhZ2UuXG5cblRoZSBrZXkgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgd2FycmFudCBmdXp6aW5nLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSB3ZWxsIGF3YXJlIG9mIHRoZSBcIldvcnRoRnV6emluZ1wiIGNyaXRlcmlhLiBTaW5jZSB0aGlzIHBhdGNoIHN0cmljdGx5IGludm9sdmVzIG5vbi1rZXJuZWwsIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMg4oCTIHNwZWNpZmljYWxseSwgY29tbWVudCBhbmQgc2VsZi10ZXN0IHNjcmlwdCBtb2RpZmljYXRpb25zIHRoYXQgZG9uJ3QgaW1wYWN0IHRoZSBrZXJuZWwgaW1hZ2Ugb3IgbW9kdWxlcyDigJMgdGhpcyBwYXRjaCAqZGVmaW5pdGVseSogZG9lc24ndCB3YXJyYW50IGZ1cnRoZXIgZnV6emluZy5cblxuTXkgYW5hbHlzaXMgYWxpZ25zIHByZWNpc2VseSB3aXRoIFNlY3Rpb24gMidzIGNyaXRlcmlhLiBJdCdzIGEgY2xlYXItY3V0IGNhc2Ugb2YgYFdvcnRoRnV6emluZyA9IGZhbHNlYC4gQ29uc2VxdWVudGx5LCBgRW5hYmxlQ29uZmlnc2AgYW5kIGBGb2N1c1N5bWJvbHNgIGFyZSBlbXB0eS4gSSdsbCBzdW1tYXJpemUgaXQgYXM6IHRoZSBwYXRjaCBzb2xlbHkgYWRkcmVzc2VzIHR5cG8gYW5kIHNwZWxsaW5nIGVycm9ycyBpbiBjb21tZW50cyBhbmQgYSBzZWxmLXRlc3Qgc2NyaXB0LCB3aXRoIG5vIGZ1bmN0aW9uYWwgb3IgZXhlY3V0YWJsZSBjb2RlIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjc5LCJPdXRwdXRUb2tlbnMiOjY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDc0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDA1OjU5OjU2LjcxNTEyODE2NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY29udGFpbnMgZXhjbHVzaXZlbHkgc3BlbGxpbmcgYW5kIHR5cG8gZml4ZXMgd2l0aGluIGNvbW1lbnRzIGFjcm9zcyB2YXJpb3VzIG5ldHdvcmsgZHJpdmVycywgY29yZSBMTEMgY29kZSwgYW5kIGEgc2VsZnRlc3Qgc2NyaXB0LiBObyBleGVjdXRhYmxlIGNvZGUsIG1hY3Jvcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNvbnRhaW5zIGV4Y2x1c2l2ZWx5IHNwZWxsaW5nIGFuZCB0eXBvIGZpeGVzIHdpdGhpbiBjb21tZW50cyBhY3Jvc3MgdmFyaW91cyBuZXR3b3JrIGRyaXZlcnMsIGNvcmUgTExDIGNvZGUsIGFuZCBhIHNlbGZ0ZXN0IHNjcmlwdC4gTm8gZXhlY3V0YWJsZSBjb2RlLCBtYWNyb3MsIG9yIGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwNTo1OTo1Ni43MTUxNTMxOTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjd548[1] Phase: Running StartedAt: 2026-09-08 06:00:07 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjd548[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-08 06:00:07 +0000 UTC FinishedAt: 2026-09-08 06:00:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}