Name: series-workflow7nhjp Phase: Failed StartedAt: 2026-08-03 07:25:55 +0000 UTC FinishedAt: 2026-08-03 07:58:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhjp[0] Phase: Succeeded StartedAt: 2026-08-03 07:25:55 +0000 UTC FinishedAt: 2026-08-03 07:57:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhjp[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 07:25:55 +0000 UTC FinishedAt: 2026-08-03 07:57:52 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA3OjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtc2didWYuY2AgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKS4gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgZXhjbHVzaXZlbHkgdXNlZCBieSB0aGUgUENJZSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlciAoYHBjaWUuY2ApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgQnJvYWRjb20gV2ktRmkgUENJZSBoYXJkd2FyZSwgYW5kIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IERNQSByaW5ncyBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb25zIHJlcXVpcmVkIHRvIHJlYWNoIHRoaXMgY29kZSwgaXQgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDc6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyNjU1MmMyN2EyZDAxNTcyMmU2YzNlNjdiZmFiMTBmZTE1NjVjYzY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwNzo1NjozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbmluZGV4IGJhMWNlMTU1MmUwZjQuLjk1OTY1OWJmZWE5OWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xuQEAgLTI0LDcgJiM0MzsyNCw2IEBAXG4gI2luY2x1ZGUgXCYjMzQ7YnVzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0cmFjZXBvaW50LmhcJiMzNDtcbiBcbi1cbiAjZGVmaW5lIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVRcdFx0bXNlY3NfdG9famlmZmllcygyMDAwKVxuIFxuICNkZWZpbmUgTVNHQlVGX1RZUEVfR0VOX1NUQVRVU1x0XHRcdDB4MVxuQEAgLTI5MSw3ICYjNDM7MjkwLDYgQEAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMge1xuIFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpO1xuIFxuLVxuIHN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqXG4gYnJjbWZfbXNnYnVmX2luaXRfcGt0aWRzKHUzMiBucl9hcnJheV9lbnRyaWVzLFxuIFx0XHRcdCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pXG5AQCAtMzE0LDcgJiM0MzszMTIsNiBAQCBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsXG4gXHRyZXR1cm4gcGt0aWRzO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50XG4gYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbkBAIC0zNjIsNyAmIzQzOzM1OSw2IEBAIGJyY21mX21zZ2J1Zl9hbGxvY19wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpcbiBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbiBcdFx0ICAgICAgIHUzMiBpZHgpXG5AQCAtMzkwLDcgJiM0MzszODYsNiBAQCBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQgICBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzKVxuQEAgLTQxNiw3ICYjNDM7NDExLDYgQEAgYnJjbWZfbXNnYnVmX3JlbGVhc2VfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0a2ZyZWUocGt0aWRzKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRpZiAobXNnYnVmLVx1MDAzZXJ4X3BrdGlkcylcbkBAIC00MjcsNyAmIzQzOzQyMSw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yZWxlYXNlX3BrdGlkcyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRcdFx0XHRcdCAgIG1zZ2J1Zi1cdTAwM2V0eF9wa3RpZHMpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9pb2N0bChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRcdFx0XHQgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4pXG4ge1xuQEAgLTQ3Myw3ICYjNDM7NDY2LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRyZXR1cm4gd2FpdF9ldmVudF90aW1lb3V0KG1zZ2J1Zi1cdTAwM2Vpb2N0bF9yZXNwX3dhaXQsXG5AQCAtNDgxLDE0ICYjNDM7NDczLDEyIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRcdFx0XHQgIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWtlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRtc2didWYtXHUwMDNlY3RsX2NvbXBsZXRlZCA9IHRydWU7XG4gXHR3YWtlX3VwKFx1MDAyNm1zZ2J1Zi1cdTAwM2Vpb2N0bF9yZXNwX3dhaXQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCAgIHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKVxuIHtcbkBAIC01MjYsMTQgJiM0Mzs1MTYsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfcXVlcnlfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfc2V0X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0IHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKVxuIHtcbiBcdHJldHVybiBicmNtZl9tc2didWZfcXVlcnlfZGNtZChkcnZyLCBpZmlkeCwgY21kLCBidWYsIGxlbiwgZndlcnIpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9oZHJwdWxsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGJvb2wgZG9fZndzLFxuIFx0XHRcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyY21mX2lmICoqaWZwKVxuIHtcbkBAIC01NjAsNiAmIzQzOzU0OCwyNyBAQCBicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IGZsb3dpZClcbiBcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtXHUwMDNlZmxvdywgZmxvd2lkKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIGJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiYjNDM7XHRcdFx0XHQgICAgdTE2IGZsb3dfcmluZ19pZCwgdTE2ICpmbG93aWQpXG4mIzQzO3tcbiYjNDM7XHR1MzIgaWQgPSBmbG93X3JpbmdfaWQ7XG4mIzQzO1xuJiM0MztcdGlmIChpZCBcdTAwM2MgQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVCkge1xuJiM0MztcdFx0YnBoeV9lcnIobXNnYnVmLVx1MDAzZWRydnIsIFwmIzM0O2ludmFsaWQgZmxvd3JpbmcgaWQgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCBmbG93X3JpbmdfaWQpO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbiYjNDM7XHRpZiAoaWQgXHUwMDNlPSBtc2didWYtXHUwMDNlbWF4X2Zsb3dyaW5ncykge1xuJiM0MztcdFx0YnBoeV9lcnIobXNnYnVmLVx1MDAzZWRydnIsIFwmIzM0O2ludmFsaWQgZmxvd3JpbmcgaWQgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCBmbG93X3JpbmdfaWQpO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0KmZsb3dpZCA9IGlkO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4gXG4gc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICpcbiBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbkBAIC01NzgsNyAmIzQzOzU4Nyw2IEBAIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0cmV0dXJuIHdvcms7XG4gfVxuIFxuLVxuIHN0YXRpYyB1MzJcbiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRcdFx0XHQgICAgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKndvcmspXG5AQCAtNjQ3LDcgJiM0Mzs2NTUsNiBAQCBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRyZXR1cm4gZmxvd2lkO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7XG5AQCAtNjYxLDcgJiM0Mzs2NjgsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbkBAIC02OTQsNyAmIzQzOzcwMCw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGludCBpZmlkeCxcbiBcdHJldHVybiBmbG93aWQ7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdyA9IG1zZ2J1Zi1cdTAwM2VmbG93O1xuQEAgLTc2OCw3ICYjNDM7NzczLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXG4gXHRicmNtZl9jb21tb25yaW5nX3VubG9jayhjb21tb25yaW5nKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG4ge1xuIFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xuQEAgLTc4MSw3ICYjNDM7Nzg1LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG4gXHR9XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXG4gXHRcdFx0XHRcdGJvb2wgZm9yY2UpXG4ge1xuQEAgLTc5Niw3ICYjNDM7Nzk5LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCxcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuQEAgLTgyNCw3ICYjNDM7ODI2LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfcXVldWVfZGF0YShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfY29uZmlndXJlX2FkZHJfbW9kZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRcdFx0XHQgZW51bSBwcm90b19hZGRyX21vZGUgYWRkcl9tb2RlKVxuQEAgLTgzNCw3ICYjNDM7ODM1LDYgQEAgYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0YnJjbWZfZmxvd3JpbmdfY29uZmlndXJlX2FkZHJfbW9kZShtc2didWYtXHUwMDNlZmxvdywgaWZpZHgsIGFkZHJfbW9kZSk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4ge1xuQEAgLTg0Myw3ICYjNDM7ODQzLDYgQEAgYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4gXHRicmNtZl9mbG93cmluZ19kZWxldGVfcGVlcihtc2didWYtXHUwMDNlZmxvdywgaWZpZHgsIHBlZXIpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4ge1xuQEAgLTg1Miw3ICYjNDM7ODUxLDYgQEAgYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbiBcdGJyY21mX2Zsb3dyaW5nX2FkZF90ZGxzX3BlZXIobXNnYnVmLVx1MDAzZWZsb3csIGlmaWR4LCBwZWVyKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiB7XG5AQCAtODcyLDcgJiM0Mzs4NzAsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbkBAIC04ODAsMTcgJiM0Mzs4NzcsMjMgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4gXHRzdHJ1Y3QgbXNnYnVmX3R4X3N0YXR1cyAqdHhfc3RhdHVzO1xuIFx0dTMyIGlkeDtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0dTE2IGZsb3dfcmluZ19pZDtcbiBcdHUxNiBmbG93aWQ7XG4gXG4gXHR0eF9zdGF0dXMgPSAoc3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKilidWY7XG4gXHRpZHggPSBsZTMyX3RvX2NwdSh0eF9zdGF0dXMtXHUwMDNlbXNnLnJlcXVlc3RfaWQpIC0gMTtcbi1cdGZsb3dpZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbi1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuJiM0MztcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbiBcdHNrYiA9IGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQobXNnYnVmLVx1MDAzZWRydnItXHUwMDNlYnVzX2lmLVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgbXNnYnVmLVx1MDAzZXR4X3BrdGlkcywgaWR4KTtcbiBcdGlmICghc2tiKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXHUwMDI2Zmxvd2lkKSkge1xuJiM0MztcdFx0YnJjbWZfdHhmaW5hbGl6ZShicmNtZl9nZXRfaWZwKG1zZ2J1Zi1cdTAwM2VkcnZyLCB0eF9zdGF0dXMtXHUwMDNlbXNnLmlmaWR4KSxcbiYjNDM7XHRcdFx0XHQgc2tiLCBmYWxzZSk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiBcdHNldF9iaXQoZmxvd2lkLCBtc2didWYtXHUwMDNldHhzdGF0dXNfZG9uZV9tYXApO1xuIFx0Y29tbW9ucmluZyA9IG1zZ2J1Zi1cdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcbiBcdGF0b21pY19kZWMoXHUwMDI2Y29tbW9ucmluZy1cdTAwM2VvdXRzdGFuZGluZ190eCk7XG5AQCAtODk5LDcgJiM0Mzs5MDIsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdFx0XHQgc2tiLCB0cnVlKTtcbiB9XG4gXG4tXG4gc3RhdGljIHUzMiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGNvdW50KVxuIHtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXHUwMDNlZHJ2cjtcbkBAIC05NzcsNyAmIzQzOzk3OSw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudClcbiBcdHJldHVybiBpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbkBAIC05OTUsNyAmIzQzOzk5Niw2IEBAIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0fVxuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl91cGRhdGVfcnhidWZwb3N0X2NvdW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IHJ4Y250KVxuIHtcbkBAIC0xMDA1LDcgJiM0MzsxMDA1LDYgQEAgYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXG4gXHRcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcbiB9XG4gXG4tXG4gc3RhdGljIHUzMlxuIGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBib29sIGV2ZW50X2J1ZixcbiBcdFx0XHQgICAgIHUzMiBjb3VudClcbkBAIC0xMDc5LDcgJiM0MzsxMDc4LDYgQEAgYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxuIFx0cmV0dXJuIGk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4ge1xuIFx0dTMyIGNvdW50O1xuQEAgLTEwODksNyAmIzQzOzEwODcsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0bXNnYnVmLVx1MDAzZWN1cl9pb2N0bHJlc3BidWYgJiM0Mzs9IGNvdW50O1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4ge1xuIFx0dTMyIGNvdW50O1xuQEAgLTEwOTksNyAmIzQzOzEwOTYsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRtc2didWYtXHUwMDNlY3VyX2V2ZW50YnVmICYjNDM7PSBjb3VudDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4ge1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cdTAwM2VkcnZyO1xuQEAgLTExNDIsNyAmIzQzOzExMzgsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19ldmVudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdGJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiB7XG5AQCAtMTIzNywxMyAmIzQzOzEyMzIsMTYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICpmbG93cmluZ19jcmVhdGVfcmVzcDtcbiBcdHUxNiBzdGF0dXM7XG4gXHR1MTYgZmxvd2lkO1xuJiM0MztcdHUxNiBmbG93X3JpbmdfaWQ7XG4gXG4gXHRmbG93cmluZ19jcmVhdGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICopYnVmO1xuIFxuLVx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfY3JlYXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4tXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbiYjNDM7XHRmbG93X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbiBcdHN0YXR1cyA9ICBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuc3RhdHVzKTtcbiBcbiYjNDM7XHRpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCBcdTAwMjZmbG93aWQpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdGlmIChzdGF0dXMpIHtcbiBcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7Rmxvd3JpbmcgY3JlYXRpb24gZmFpbGVkLCBjb2RlICVkXFxuXCYjMzQ7LCBzdGF0dXMpO1xuIFx0XHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcbkBAIC0xMjU3LDcgJiM0MzsxMjU1LDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKG1zZ2J1ZiwgZmxvd2lkLCB0cnVlKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0XHRcdFx0ICAgICAgIHZvaWQgKmJ1ZilcbkBAIC0xMjY2LDEzICYjNDM7MTI2MywxNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdHN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKmZsb3dyaW5nX2RlbGV0ZV9yZXNwO1xuIFx0dTE2IHN0YXR1cztcbiBcdHUxNiBmbG93aWQ7XG4mIzQzO1x0dTE2IGZsb3dfcmluZ19pZDtcbiBcbiBcdGZsb3dyaW5nX2RlbGV0ZV9yZXNwID0gKHN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKilidWY7XG4gXG4tXHRmbG93aWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19kZWxldGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbi1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuJiM0MztcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xuIFx0c3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xuIFxuJiM0MztcdGlmICghYnJjbWZfbXNnYnVmX2dldF9mbG93aWQobXNnYnVmLCBmbG93X3JpbmdfaWQsIFx1MDAyNmZsb3dpZCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0aWYgKHN0YXR1cykge1xuIFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtGbG93cmluZyBkZWxldGlvbiBmYWlsZWQsIGNvZGUgJWRcXG5cJiMzNDssIHN0YXR1cyk7XG4gXHRcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtXHUwMDNlZmxvdywgZmxvd2lkKTtcbkBAIC0xMjg0LDcgJiM0MzsxMjg0LDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLVx1MDAzZWRydnI7XG5AQCAtMTMzMyw3ICYjNDM7MTMzMiw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4gXHR9XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZylcbiB7XG5AQCAtMTM2NSw3ICYjNDM7MTM2Myw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0Z290byBhZ2FpbjtcbiB9XG4gXG4tXG4gaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfYnVzICpidXNfaWYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbkBAIC0xMzk3LDcgJiM0MzsxMzk0LDYgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1cbiB2b2lkIGJyY21mX21zZ2J1Zl9kZWxldGVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgdTE2IGZsb3dpZClcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYgPSAoc3RydWN0IGJyY21mX21zZ2J1ZiAqKWRydnItXHUwMDNlcHJvdG8tXHUwMDNlcGQ7XG5AQCAtMTYxMyw3ICYjNDM7MTYwOSw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4gXHRpZiAoIW1zZ2J1Zi1cdTAwM2VmbG93KVxuIFx0XHRnb3RvIGZhaWw7XG4gXG4tXG4gXHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtGZWVkaW5nIGJ1ZmZlcnMsIHJ4IGRhdGEgJWQsIHJ4IGV2ZW50ICVkLCByeCBpb2N0bCByZXNwICVkXFxuXCYjMzQ7LFxuIFx0XHQgIG1zZ2J1Zi1cdTAwM2VtYXhfcnhidWZwb3N0LCBtc2didWYtXHUwMDNlbWF4X2V2ZW50YnVmLFxuIFx0XHQgIG1zZ2J1Zi1cdTAwM2VtYXhfaW9jdGxyZXNwYnVmKTtcbkBAIC0xNjUzLDcgJiM0MzsxNjQ4LDYgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbiBcdHJldHVybiAtRU5PTUVNO1xuIH1cbiBcbi1cbiB2b2lkIGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDc6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtc2didWYuY2AgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKS4gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgZXhjbHVzaXZlbHkgdXNlZCBieSB0aGUgUENJZSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlciAoYHBjaWUuY2ApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgQnJvYWRjb20gV2ktRmkgUENJZSBoYXJkd2FyZSwgYW5kIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IERNQSByaW5ncyBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb25zIHJlcXVpcmVkIHRvIHJlYWNoIHRoaXMgY29kZSwgaXQgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyNjU1MmMyN2EyZDAxNTcyMmU2YzNlNjdiZmFiMTBmZTE1NjVjYzY0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwNzo1NjozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYwppbmRleCBiYTFjZTE1NTJlMGY0Li45NTk2NTliZmVhOTllIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jCkBAIC0yNCw3ICYjNDM7MjQsNiBAQAogI2luY2x1ZGUgJiMzNDtidXMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3RyYWNlcG9pbnQuaCYjMzQ7CiAKLQogI2RlZmluZSBNU0dCVUZfSU9DVExfUkVTUF9USU1FT1VUCQltc2Vjc190b19qaWZmaWVzKDIwMDApCiAKICNkZWZpbmUgTVNHQlVGX1RZUEVfR0VOX1NUQVRVUwkJCTB4MQpAQCAtMjkxLDcgJiM0MzsyOTAsNiBAQCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyB7CiAKIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpOwogCi0KIHN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqCiBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsCiAJCQkgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMzE0LDcgJiM0MzszMTIsNiBAQCBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsCiAJcmV0dXJuIHBrdGlkczsKIH0KIAotCiBzdGF0aWMgaW50CiBicmNtZl9tc2didWZfYWxsb2NfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LAogCQkJIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMsCkBAIC0zNjIsNyAmIzQzOzM1OSw2IEBAIGJyY21mX21zZ2J1Zl9hbGxvY19wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJcmV0dXJuIDA7CiB9CiAKLQogc3RhdGljIHN0cnVjdCBza19idWZmICoKIGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLAogCQkgICAgICAgdTMyIGlkeCkKQEAgLTM5MCw3ICYjNDM7Mzg2LDYgQEAgYnJjbWZfbXNnYnVmX2dldF9wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMsCiAJcmV0dXJuIE5VTEw7CiB9CiAKLQogc3RhdGljIHZvaWQKIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCSAgIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMpCkBAIC00MTYsNyAmIzQzOzQxMSw2IEBAIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldiwKIAlrZnJlZShwa3RpZHMpOwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yZWxlYXNlX3BrdGlkcyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpCiB7CiAJaWYgKG1zZ2J1Zi0mZ3Q7cnhfcGt0aWRzKQpAQCAtNDI3LDcgJiM0Mzs0MjEsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcmVsZWFzZV9wa3RpZHMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogCQkJCQkgICBtc2didWYtJmd0O3R4X3BrdGlkcyk7CiB9CiAKLQogc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LAogCQkJCSB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbikKIHsKQEAgLTQ3Myw3ICYjNDM7NDY2LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LAogCXJldHVybiBlcnI7CiB9CiAKLQogc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAlyZXR1cm4gd2FpdF9ldmVudF90aW1lb3V0KG1zZ2J1Zi0mZ3Q7aW9jdGxfcmVzcF93YWl0LApAQCAtNDgxLDE0ICYjNDM7NDczLDEyIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpCiAJCQkJICBNU0dCVUZfSU9DVExfUkVTUF9USU1FT1VUKTsKIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWtlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAltc2didWYtJmd0O2N0bF9jb21wbGV0ZWQgPSB0cnVlOwogCXdha2VfdXAoJmFtcDttc2didWYtJmd0O2lvY3RsX3Jlc3Bfd2FpdCk7CiB9CiAKLQogc3RhdGljIGludCBicmNtZl9tc2didWZfcXVlcnlfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsCiAJCQkJICAgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4sIGludCAqZndlcnIpCiB7CkBAIC01MjYsMTQgJiM0Mzs1MTYsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfcXVlcnlfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsCiAJcmV0dXJuIDA7CiB9CiAKLQogc3RhdGljIGludCBicmNtZl9tc2didWZfc2V0X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LAogCQkJCSB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbiwgaW50ICpmd2VycikKIHsKIAlyZXR1cm4gYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoZHJ2ciwgaWZpZHgsIGNtZCwgYnVmLCBsZW4sIGZ3ZXJyKTsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9oZHJwdWxsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGJvb2wgZG9fZndzLAogCQkJCXN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicmNtZl9pZiAqKmlmcCkKIHsKQEAgLTU2MCw2ICYjNDM7NTQ4LDI3IEBAIGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKQogCWJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtJmd0O2Zsb3csIGZsb3dpZCk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiYjNDM7CQkJCSAgICB1MTYgZmxvd19yaW5nX2lkLCB1MTYgKmZsb3dpZCkKJiM0Mzt7CiYjNDM7CXUzMiBpZCA9IGZsb3dfcmluZ19pZDsKJiM0MzsKJiM0MzsJaWYgKGlkICZsdDsgQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVCkgewomIzQzOwkJYnBoeV9lcnIobXNnYnVmLSZndDtkcnZyLCAmIzM0O2ludmFsaWQgZmxvd3JpbmcgaWQgJXVcbiYjMzQ7LAomIzQzOwkJCSBmbG93X3JpbmdfaWQpOwomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7CiYjNDM7CWlmIChpZCAmZ3Q7PSBtc2didWYtJmd0O21heF9mbG93cmluZ3MpIHsKJiM0MzsJCWJwaHlfZXJyKG1zZ2J1Zi0mZ3Q7ZHJ2ciwgJiMzNDtpbnZhbGlkIGZsb3dyaW5nIGlkICV1XG4mIzM0OywKJiM0MzsJCQkgZmxvd19yaW5nX2lkKTsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwkqZmxvd2lkID0gaWQ7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KIAogc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICoKIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQpAQCAtNTc4LDcgJiM0Mzs1ODcsNiBAQCBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIAlyZXR1cm4gd29yazsKIH0KIAotCiBzdGF0aWMgdTMyCiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJCQkJICAgIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICp3b3JrKQpAQCAtNjQ3LDcgJiM0Mzs2NTUsNiBAQCBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJcmV0dXJuIGZsb3dpZDsKIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7CkBAIC02NjEsNyAmIzQzOzY2OCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9mbG93cmluZ193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCX0KIH0KIAotCiBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBpbnQgaWZpZHgsCiAJCQkJCXN0cnVjdCBza19idWZmICpza2IpCiB7CkBAIC02OTQsNyAmIzQzOzcwMCw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGludCBpZmlkeCwKIAlyZXR1cm4gZmxvd2lkOwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKQogewogCXN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdyA9IG1zZ2J1Zi0mZ3Q7ZmxvdzsKQEAgLTc2OCw3ICYjNDM7NzczLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpCiAJYnJjbWZfY29tbW9ucmluZ191bmxvY2soY29tbW9ucmluZyk7CiB9CiAKLQogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpCiB7CiAJc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmOwpAQCAtNzgxLDcgJiM0Mzs3ODUsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfdHhmbG93X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmtlcikKIAl9CiB9CiAKLQogc3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCwKIAkJCQkJYm9vbCBmb3JjZSkKIHsKQEAgLTc5Niw3ICYjNDM7Nzk5LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCwKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAkJCQkgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewpAQCAtODI0LDcgJiM0Mzs4MjYsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LAogCQkJCSBlbnVtIHByb3RvX2FkZHJfbW9kZSBhZGRyX21vZGUpCkBAIC04MzQsNyAmIzQzOzgzNSw2IEBAIGJyY21mX21zZ2J1Zl9jb25maWd1cmVfYWRkcl9tb2RlKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAlicmNtZl9mbG93cmluZ19jb25maWd1cmVfYWRkcl9tb2RlKG1zZ2J1Zi0mZ3Q7ZmxvdywgaWZpZHgsIGFkZHJfbW9kZSk7CiB9CiAKLQogc3RhdGljIHZvaWQKIGJyY21mX21zZ2J1Zl9kZWxldGVfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKQogewpAQCAtODQzLDcgJiM0Mzs4NDMsNiBAQCBicmNtZl9tc2didWZfZGVsZXRlX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSkKIAlicmNtZl9mbG93cmluZ19kZWxldGVfcGVlcihtc2didWYtJmd0O2Zsb3csIGlmaWR4LCBwZWVyKTsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSkKIHsKQEAgLTg1Miw3ICYjNDM7ODUxLDYgQEAgYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSkKIAlicmNtZl9mbG93cmluZ19hZGRfdGRsc19wZWVyKG1zZ2J1Zi0mZ3Q7ZmxvdywgaWZpZHgsIHBlZXIpOwogfQogCi0KIHN0YXRpYyB2b2lkCiBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIHsKQEAgLTg3Miw3ICYjNDM7ODcwLDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpCiAJYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KG1zZ2J1Zik7CiB9CiAKLQogc3RhdGljIHZvaWQKIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogewpAQCAtODgwLDE3ICYjNDM7ODc3LDIzIEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCXN0cnVjdCBtc2didWZfdHhfc3RhdHVzICp0eF9zdGF0dXM7CiAJdTMyIGlkeDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwl1MTYgZmxvd19yaW5nX2lkOwogCXUxNiBmbG93aWQ7CiAKIAl0eF9zdGF0dXMgPSAoc3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKilidWY7CiAJaWR4ID0gbGUzMl90b19jcHUodHhfc3RhdHVzLSZndDttc2cucmVxdWVzdF9pZCkgLSAxOwotCWZsb3dpZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7Ci0JZmxvd2lkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7CiYjNDM7CWZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7CiAJc2tiID0gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChtc2didWYtJmd0O2RydnItJmd0O2J1c19pZi0mZ3Q7ZGV2LAogCQkJCSAgICAgbXNnYnVmLSZndDt0eF9wa3RpZHMsIGlkeCk7CiAJaWYgKCFza2IpCiAJCXJldHVybjsKIAomIzQzOwlpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCAmYW1wO2Zsb3dpZCkpIHsKJiM0MzsJCWJyY21mX3R4ZmluYWxpemUoYnJjbWZfZ2V0X2lmcChtc2didWYtJmd0O2RydnIsIHR4X3N0YXR1cy0mZ3Q7bXNnLmlmaWR4KSwKJiM0MzsJCQkJIHNrYiwgZmFsc2UpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiAJc2V0X2JpdChmbG93aWQsIG1zZ2J1Zi0mZ3Q7dHhzdGF0dXNfZG9uZV9tYXApOwogCWNvbW1vbnJpbmcgPSBtc2didWYtJmd0O2Zsb3dyaW5nc1tmbG93aWRdOwogCWF0b21pY19kZWMoJmFtcDtjb21tb25yaW5nLSZndDtvdXRzdGFuZGluZ190eCk7CkBAIC04OTksNyAmIzQzOzkwMiw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCQkJIHNrYiwgdHJ1ZSk7CiB9CiAKLQogc3RhdGljIHUzMiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGNvdW50KQogewogCXN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtJmd0O2RydnI7CkBAIC05NzcsNyAmIzQzOzk3OSw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudCkKIAlyZXR1cm4gaTsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfZmlsbChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpCiB7CkBAIC05OTUsNyAmIzQzOzk5Niw2IEBAIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogCX0KIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpCiB7CkBAIC0xMDA1LDcgJiM0MzsxMDA1LDYgQEAgYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpCiAJCWJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTsKIH0KIAotCiBzdGF0aWMgdTMyCiBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsCiAJCQkgICAgIHUzMiBjb3VudCkKQEAgLTEwNzksNyAmIzQzOzEwNzgsNiBAQCBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsCiAJcmV0dXJuIGk7CiB9CiAKLQogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAl1MzIgY291bnQ7CkBAIC0xMDg5LDcgJiM0MzsxMDg3LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIAltc2didWYtJmd0O2N1cl9pb2N0bHJlc3BidWYgJiM0Mzs9IGNvdW50OwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAl1MzIgY291bnQ7CkBAIC0xMDk5LDcgJiM0MzsxMDk2LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogCW1zZ2J1Zi0mZ3Q7Y3VyX2V2ZW50YnVmICYjNDM7PSBjb3VudDsKIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19ldmVudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIHsKIAlzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLSZndDtkcnZyOwpAQCAtMTE0Miw3ICYjNDM7MTEzOCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCWJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpCiB7CkBAIC0xMjM3LDEzICYjNDM7MTIzMiwxNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwKIAlzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICpmbG93cmluZ19jcmVhdGVfcmVzcDsKIAl1MTYgc3RhdHVzOwogCXUxNiBmbG93aWQ7CiYjNDM7CXUxNiBmbG93X3JpbmdfaWQ7CiAKIAlmbG93cmluZ19jcmVhdGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICopYnVmOwogCi0JZmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfY3JlYXRlX3Jlc3AtJmd0O2NvbXBsX2hkci5mbG93X3JpbmdfaWQpOwotCWZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUOwomIzQzOwlmbG93X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7CiAJc3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLSZndDtjb21wbF9oZHIuc3RhdHVzKTsKIAomIzQzOwlpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCAmYW1wO2Zsb3dpZCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJaWYgKHN0YXR1cykgewogCQlicGh5X2VycihkcnZyLCAmIzM0O0Zsb3dyaW5nIGNyZWF0aW9uIGZhaWxlZCwgY29kZSAlZFxuJiMzNDssIHN0YXR1cyk7CiAJCWJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpOwpAQCAtMTI1Nyw3ICYjNDM7MTI1NSw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLAogCWJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEobXNnYnVmLCBmbG93aWQsIHRydWUpOwogfQogCi0KIHN0YXRpYyB2b2lkCiBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwKIAkJCQkJICAgICAgIHZvaWQgKmJ1ZikKQEAgLTEyNjYsMTMgJiM0MzsxMjYzLDE2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLAogCXN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKmZsb3dyaW5nX2RlbGV0ZV9yZXNwOwogCXUxNiBzdGF0dXM7CiAJdTE2IGZsb3dpZDsKJiM0MzsJdTE2IGZsb3dfcmluZ19pZDsKIAogCWZsb3dyaW5nX2RlbGV0ZV9yZXNwID0gKHN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKilidWY7CiAKLQlmbG93aWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19kZWxldGVfcmVzcC0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7Ci0JZmxvd2lkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7CiYjNDM7CWZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLSZndDtjb21wbF9oZHIuZmxvd19yaW5nX2lkKTsKIAlzdGF0dXMgPSAgbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtJmd0O2NvbXBsX2hkci5zdGF0dXMpOwogCiYjNDM7CWlmICghYnJjbWZfbXNnYnVmX2dldF9mbG93aWQobXNnYnVmLCBmbG93X3JpbmdfaWQsICZhbXA7Zmxvd2lkKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlpZiAoc3RhdHVzKSB7CiAJCWJwaHlfZXJyKGRydnIsICYjMzQ7Rmxvd3JpbmcgZGVsZXRpb24gZmFpbGVkLCBjb2RlICVkXG4mIzM0Oywgc3RhdHVzKTsKIAkJYnJjbWZfZmxvd3JpbmdfZGVsZXRlKG1zZ2J1Zi0mZ3Q7ZmxvdywgZmxvd2lkKTsKQEAgLTEyODQsNyAmIzQzOzEyODQsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwKIAlicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTsKIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogewogCXN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtJmd0O2RydnI7CkBAIC0xMzMzLDcgJiM0MzsxMzMyLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIAl9CiB9CiAKLQogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLAogCQkJCSAgICBzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZykKIHsKQEAgLTEzNjUsNyAmIzQzOzEzNjMsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJCWdvdG8gYWdhaW47CiB9CiAKLQogaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgYnJjbWZfYnVzICpidXNfaWYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKQEAgLTEzOTcsNyAmIzQzOzEzOTQsNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiAwOwogfQogCi0KIHZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKQogewogCXN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci0mZ3Q7cHJvdG8tJmd0O3BkOwpAQCAtMTYxMyw3ICYjNDM7MTYwOSw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpCiAJaWYgKCFtc2didWYtJmd0O2Zsb3cpCiAJCWdvdG8gZmFpbDsKIAotCiAJYnJjbWZfZGJnKE1TR0JVRiwgJiMzNDtGZWVkaW5nIGJ1ZmZlcnMsIHJ4IGRhdGEgJWQsIHJ4IGV2ZW50ICVkLCByeCBpb2N0bCByZXNwICVkXG4mIzM0OywKIAkJICBtc2didWYtJmd0O21heF9yeGJ1ZnBvc3QsIG1zZ2J1Zi0mZ3Q7bWF4X2V2ZW50YnVmLAogCQkgIG1zZ2J1Zi0mZ3Q7bWF4X2lvY3RscmVzcGJ1Zik7CkBAIC0xNjUzLDcgJiM0MzsxNjQ4LDYgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cikKIAlyZXR1cm4gLUVOT01FTTsKIH0KIAotCiB2b2lkIGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cikKIHsKIAlzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA3OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczOTcKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAzODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV0xBTiBEcml2ZXIgUGF0Y2ggZm9yIFZpcnR1YWxpemF0aW9uIEZlYXNpYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBgYnJjbWZtYWNgIOKAkyBzcGVjaWZpY2FsbHksIGluIGBtc2didWYuY2AuIEl0JiMzOTtzIGludHJvZHVjaW5nIGBicmNtZl9tc2didWZfZ2V0X2Zsb3dpZGAgdG8gdmFsaWRhdGUgYGZsb3dfcmluZ19pZGAgYmVmb3JlIGNhbGN1bGF0aW5nIGBmbG93aWRgLiBTbWFydCBtb3ZlLCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGFuIGludmFsaWQgZmxvd2lkIHNpdHVhdGlvbiB3aXRoaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFdlJiMzOTtyZSByZXBsYWNpbmcgdGhlIGRpcmVjdCBjYWxjdWxhdGlvbiB3aXRoIGEgc2FmZXIgY2hlY2sgdXNpbmcgdGhlIG5ldyBmdW5jdGlvbi4gR29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGFsd2F5cyBhcHByZWNpYXRlZC4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMsIGNhbiBJIHJlYXNvbmFibHkgdGVzdCB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFFFTVUgaXMgbXkgZ28tdG8sIG9mIGNvdXJzZS4gVGhpcyBgYnJjbWZtYWNgIGRyaXZlciBzdXBwb3J0cyBTRElPLCBVU0IsIGFuZCBQQ0lFLiBTaW5jZSBJIGNhbiB3b3JrIHdpdGggVVNCIGRldmljZXMgaW4gUUVNVSwgZWl0aGVyIHRocm91Z2ggcGFzc3Rocm91Z2ggb3IgZXZlbiBkdW1teSBVU0IgZGV2aWNlcyDigJMgbGlrZSB3aGF0IHN5emthbGxlciB1c2VzIGZvciBmdXp6aW5nIOKAkyB0aGF0JiMzOTtzIGEgcHJvbWlzaW5nIGF2ZW51ZS4KCk15IGh1bmNoIGlzIHRoYXQgZnV6emluZyBpcyB0aGUgYmVzdCBhcHByb2FjaC4gU3l6a2FsbGVyIGhhcyBhIFVTQiBmdXp6ZXIgd2hpY2ggaXMgZ3JlYXQuIFNvLCBJIG5lZWQgdG8gY2hlY2sgaWYgU3l6a2FsbGVyIGFscmVhZHkgdGFyZ2V0cyBicmNtZm1hYyBvdmVyIFVTQi4gU3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCByZWdpc3RlcnMgYSBVU0IgZHJpdmVyLiBJZiBpdCBkb2VzLCBhbmQgU3l6a2FsbGVyIGlzIGluZGVlZCBoaXR0aW5nIGl0LCB0aGVuIHRoaXMgcGF0Y2ggaXMgY2VydGFpbmx5IHRlc3RhYmxlIHdpdGhpbiBteSBjdXJyZW50IHNldHVwLiBJZiBub3QsIEkgbWF5IGhhdmUgdG8gZmlndXJlIG91dCBhIG5ldyBVU0Igc2V0dXAgb3IgYXR0ZW1wdCBTRElPLiBQQ0lFIGlzIHByb2JhYmx5IG91dCBvZiB0aGUgcXVlc3Rpb24gZm9yIHRoaXMgcXVpY2sgdGVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl91c2JfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMTY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJjbWZfYnVzX29wcyBicmNtZl91c2JfYnVzX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTE3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMTc2OnN0YXRpYyB2b2lkIGJyY21mX3VzYl9wcm9iZV9waGFzZTIoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcmV0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTExNzctXHRcdFx0XHQgICBzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqZndyZXEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTEyMjQ9YnJjbWZfdXNiX3ByZXBhcmVfZndfcmVxdWVzdChzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTI0NDpzdGF0aWMgaW50IGJyY21mX3VzYl9wcm9iZV9jYihzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI0NS1cdFx0XHQgICAgICBlbnVtIGJyY21mX2Z3dmVuZG9yIGZ3dmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzA4LVx0LyogcmVxdWVzdCBmaXJtd2FyZSBoZXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTMwOTpcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMxMC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTM0ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTM0NTpicmNtZl91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNDQ2Olx0cmV0ID0gYnJjbWZfdXNiX3Byb2JlX2NiKGRldmluZm8sIGlkLVx1MDAzZWRyaXZlcl9pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNDQ3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTUxND1zdGF0aWMgaW50IGJyY21mX3VzYl9yZXNldF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTUyNzpcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoXHUwMDI2dXNiLVx1MDAzZWRldiwgZndyZXEsIGJyY21mX3VzYl9wcm9iZV9waGFzZTIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjgtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTY4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBicmNtZl91c2JkcnZyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NjktXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1NzA6XHQucHJvYmUgPSBicmNtZl91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU3MS1cdC5kaXNjb25uZWN0ID0gYnJjbWZfdXNiX2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDc6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTM0MQoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVTQiBEcml2ZXIgRnV6emluZzogQSBRdWljayBNZW50YWwgQ2hlY2tsaXN0KioKCk9rYXksIHNvIFN5emthbGxlciYjMzk7cyBnb3QgdGhhdCBkdW1teSBVU0IgZnV6emVyLCBhbmQgdGhlIGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHJlZ2lzdGVyaW5nIHRoZSBVU0IgZHJpdmVyLiBDbGFzc2ljLiBCdXQgdGhlbiB0aGUgdGhvdWdodCBoaXRzIG1lOiBJIG5lZWQgdG8gdmVyaWZ5IGhvdyBgbXNnYnVmLmNgIGZhY3RvcnMgaW4uIElzIGl0IHNvbWV0aGluZyBzcGVjaWZpYyB0byB0aGUgUENJZSBidXMsIG9yIGRvZXMgdGhlIFVTQiBkcml2ZXIgZW5kIHVwIHV0aWxpemluZyBpdD8gVGhhdCYjMzk7cyB0aGUgcXVlc3Rpb24uIEkgbmVlZCB0byBnZXQgdGhpcyBzdHJhaWdodCBpZiBJJiMzOTttIGdvaW5nIHRvIGdldCB0aGlzIGZ1enppbmcgdGFzayBvZmYgdGhlIGdyb3VuZC4gQWxyaWdodCwgbGV0JiMzOTtzIGRyaWxsIGRvd24gYW5kIHNlZSBob3cgYG1zZ2J1Zi5jYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gR290dGEgY2xhcmlmeSB0aGlzIHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9wcm90b19tc2didWZfYXR0YWNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTUxOD1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZGVidWdmc19jcmVhdGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTUyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNTIzOmludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTUyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oPTMyPXZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozMzppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zNC12b2lkIGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzUtI2Vsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozNjpzdGF0aWMgaW5saW5lIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTIwPWludCBicmNtZl9wcm90b19hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zNS1cdH0gZWxzZSBpZiAoZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19NU0dCVUYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjM2Olx0XHRpZiAoYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChkcnZyKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM3LVx0XHRcdGdvdG8gZmFpbDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI2NQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIFByb3RvY29sIFR5cGUgZm9yIE1lc3NhZ2UgQnVmZmVyIEF0dGFjaG1lbnQqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgcXVlc3Rpb24gaXMgKmlmKiBhIHNwZWNpZmljIHN0cnVjdHVyZSwgYGRydnJgLCBpcyBhdHRhY2hlZCB3aGVuIHRoZSBwcm90b2NvbCB0eXBlIGlzIHNldCB0byBgQlJDTUZfUFJPVE9fTVNHQlVGYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBgZHJ2ci0mZ3Q7YnVzX2lmYCBhbmQgaXRzIGBwcm90b190eXBlYCBmaWVsZC4gSXQgc2VlbXMgdGhhdCB0aGlzIGF0dGFjaG1lbnQgaXMgY29uZGl0aW9uYWxseSBkZXBlbmRlbnQgb24gdGhhdCBwcm90b2NvbCB0eXBlLiBNYWtlcyBzZW5zZS4gSSYjMzk7bSB1c2VkIHRvIHNlZWluZyBzaW1pbGFyIHN0cnVjdHVyZXMgd2hlcmUgZGlmZmVyZW50IHVuZGVybHlpbmcgYnVzIGludGVyZmFjZXMgZGljdGF0ZSBob3cgZGF0YSBpcyBoYW5kbGVkLgoKVGhlIG5leHQgb2J2aW91cyBzdGVwIGlzIHRvIGJhY2t0cmFjay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoaWNoKiBidXNlcyBhcmUgY29uZmlndXJpbmcgdGhlIGBwcm90b190eXBlYCB0byBgQlJDTUZfUFJPVE9fTVNHQlVGYC4gVW5kZXJzdGFuZGluZyB0aGF0IHdpbGwgc2hlZCBsaWdodCBvbiB3aGF0IGtpbmQgb2Ygc2l0dWF0aW9ucyBvciBoYXJkd2FyZSBjb250ZXh0cyB0aGlzIGF0dGFjaG1lbnQgaXMgcmVsZXZhbnQgZm9yLiBLbm93aW5nIHdoaWNoIGJ1c2VzIGRvICpub3QqIHVzZSB0aGlzIHNwZWNpZmljIHByb3RvY29sLCBhbmQgd2h5LCBjb3VsZCBiZSBldmVuIG1vcmUgaW5zaWdodGZ1bC4gVGhpcyBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGRlc2lnbiBhbmQgcG90ZW50aWFsbHkgc3BvdCBhbnkgdnVsbmVyYWJpbGl0aWVzIG9yIGluZWZmaWNpZW5jaWVzLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRocm91Z2ggdGhlIGNvZGUgYW5kIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXJlIHRoYXQgdmFyaWFibGUgaXMgYmVpbmcgc2V0LCBhbmQgaW4gd2hhdCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JSQ01GX1BST1RPX01TR0JVRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTUxPWVudW0gYnJjbWZfYnVzX3Byb3RvY29sX3R5cGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTUyLVx0QlJDTUZfUFJPVE9fQkNEQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaDo1MzpcdEJSQ01GX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTU0LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDQzPWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MTktXHRidXMtXHUwMDNlb3BzID0gXHUwMDI2YnJjbWZfcGNpZV9idXNfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTIwOlx0YnVzLVx1MDAzZXByb3RvX3R5cGUgPSBCUkNNRl9QUk9UT19NU0dCVUY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MjEtXHRidXMtXHUwMDNlY2hpcCA9IGRldmluZm8tXHUwMDNlY29yZWlkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTIwPWludCBicmNtZl9wcm90b19hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zNC1cdFx0XHRnb3RvIGZhaWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYzozNTpcdH0gZWxzZSBpZiAoZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19NU0dCVUYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM2LVx0XHRpZiAoYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChkcnZyKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYz01OT12b2lkIGJyY21mX3Byb3RvX2RldGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTY1LVx0XHRcdGJyY21mX3Byb3RvX2JjZGNfZGV0YWNoKGRydnIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6NjY6XHRcdGVsc2UgaWYgKGRydnItXHUwMDNlYnVzX2lmLVx1MDAzZXByb3RvX3R5cGUgPT0gQlJDTUZfUFJPVE9fTVNHQlVGKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtNjctXHRcdFx0YnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChkcnZyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTM3OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgQlJDTUZfUFJPVE9fTVNHQlVGYCBBc3NpZ25tZW50KioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYEJSQ01GX1BST1RPX01TR0JVRmAgaXMgYmVpbmcgYXNzaWduZWQgKnNwZWNpZmljYWxseSogaW4gYHBjaWUuY2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB3YW50IHRvIGJyb2FkZW4gdGhlIHNjb3BlIG9mIG15IGludmVzdGlnYXRpb24uIExldCYjMzk7cyBzZWUgaWYgdGhpcyBpcyB0aGUgKm9ubHkqIHBsYWNlIGl0JiMzOTtzIGJlaW5nIHNldC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29kZWJhc2UuIFNwZWNpZmljYWxseSwgdGhlIGZpbGUgcGF0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuY2AgaGFzIHRoYXQgbGluZTogYGJ1cy0mZ3Q7cHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtgLiBOb3cgSSYjMzk7bSB3b25kZXJpbmcsIHNpbmNlIGl0JiMzOTtzIHRoZSBvbmx5IG9uZSBJJiMzOTt2ZSBzZWVuIHNvIGZhciwgd2hhdCBhYm91dCBgdXNiLmNgPyBXaGF0IGRvZXMgKml0KiBkbyB3aXRoIHRoZSBgcHJvdG9fdHlwZWAgdmFyaWFibGU/IFRpbWUgdG8gZGlnIGluIHRoZXJlIGFuZCBzZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb3RvX3R5cGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTEyNDQ9c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjY5LVx0YnVzLVx1MDAzZW9wcyA9IFx1MDAyNmJyY21mX3VzYl9idXNfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNzA6XHRidXMtXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX0JDREM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI3MS1cdGJ1cy1cdTAwM2Vmd3ZpZCA9IGZ3dmlkO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTk0MQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIEJyb2FkY29tIEZpcm13YXJlIFByb3RvY29sIFVzYWdlKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gc28sIGZyb20gdGhlIGNvZGUgSSB3YXMganVzdCByZXZpZXdpbmcsIGB1c2IuY2AgZXhwbGljaXRseSB1c2VzIGBCUkNNRl9QUk9UT19CQ0RDYC4gVGhhdCYjMzk7cyBub3QgdW5leHBlY3RlZDsgQkNEQyBpcyBhIGNvbW1vbiBjaG9pY2UgZm9yIFVTQi1iYXNlZCBCcm9hZGNvbSBXaUZpIGFkYXB0ZXJzLCByaWdodD8gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBTRElPIGRyaXZlciwgYHNkaW8uY2AsIGlzIGFsc28gZW1wbG95aW5nIHRoZSBCQ0RDIHByb3RvY29sLiBMb2dpY2FsbHksIGl0JiMzOTtzIGEgc3Ryb25nIHBvc3NpYmlsaXR5LiBJdCYjMzk7cyBvZnRlbiB1c2VkIHdoZXJlIHdlIG5lZWQgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSBhbmQgY29tbW9uYWxpdHkuIEJ1dCBsZXQmIzM5O3Mgbm90IGFzc3VtZSwgbGV0JiMzOTtzIGNvbmZpcm0gaXQgZGVmaW5pdGl2ZWx5LiBJIHNob3VsZCBwcm9iYWJseSBnbyBhbmQgZG91YmxlLWNoZWNrIHRoYXQgYHNkaW8uY2AgZmlsZSBhbmQgc2VlIGlmIHRoYXQmIzM5O3MgdGhlIGNhc2UuIEl0JiMzOTtzIGltcG9ydGFudCB0byBoYXZlIGEgY2xlYXIgbWVudGFsIG1vZGVsIG9mIHRoZSBwcm90b2NvbCB1c2FnZSBhY3Jvc3MgdGhlc2UgZGlmZmVyZW50IGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHJvdG9fdHlwZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI0NwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBTRElPIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgU0RJTyBidXMgcHJvdG9jb2wgaXMgYmVpbmcgaGFuZGxlZCBoZXJlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBzZGlvLmNgLiBNeSBwcmltYXJ5IGludGVyZXN0IGF0IHRoaXMgbW9tZW50IGlzIHRvIHBpbnBvaW50IGhvdyB0aGUgYGJ1cy0mZ3Q7cHJvdG9fdHlwZWAgdmFyaWFibGUgaXMgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGNvZGUuIFRoaXMgd2lsbCB0ZWxsIG1lIHdoYXQgc3BlY2lmaWMgU0RJTyBwcm90b2NvbCBmZWF0dXJlcyBhcmUgYmVpbmcgaW1wbGVtZW50ZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGBwcm90b190eXBlYCBhc3NpZ25tZW50IGFuZCB1c2FnZSBpcyBjcml0aWNhbCB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgc3RhdGUgYW5kIGNhcGFiaWxpdGllcyBvZiB0aGUgZHJpdmVyIHdpdGggcmVzcGVjdCB0byBTRElPLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm90b190eXBlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM9MTA0MT1zdGF0aWMgaW50IGJyY21mX29wc19zZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jLTEwODctXHRidXNfaWYtXHUwMDNlYnVzX3ByaXYuc2RpbyA9IHNkaW9kZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6MTA4ODpcdGJ1c19pZi1cdTAwM2Vwcm90b190eXBlID0gQlJDTUZfUFJPVE9fQkNEQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy0xMDg5LVx0YnVzX2lmLVx1MDAzZWZ3dmlkID0gaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTE0Mj1zdHJ1Y3QgYnJjbWZfYnVzX3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMTUwLSAqIEBidXNfcHJpdjogcG9pbnRlciB0byBwcml2YXRlIGJ1cyBkZXZpY2UuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MTUxOiAqIEBwcm90b190eXBlOiBwcm90b2NvbCB0eXBlLCBiY2RjIG9yIG1zZ2J1ZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTE1Mi0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlciBvZiBidXMgZGV2aWNlLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaD0xNjY9c3RydWN0IGJyY21mX2J1cyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTE3MS1cdH0gYnVzX3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MTcyOlx0ZW51bSBicmNtZl9idXNfcHJvdG9jb2xfdHlwZSBwcm90b190eXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTE3My1cdHN0cnVjdCBkZXZpY2UgKmRldjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI0NDM9YnJjbWZfcGNpZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUxOS1cdGJ1cy1cdTAwM2VvcHMgPSBcdTAwMjZicmNtZl9wY2llX2J1c19vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI1MjA6XHRidXMtXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUyMS1cdGJ1cy1cdTAwM2VjaGlwID0gZGV2aW5mby1cdTAwM2Vjb3JlaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9MjA9aW50IGJyY21mX3Byb3RvX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6MzI6XHRpZiAoZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19CQ0RDKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zMy1cdFx0aWYgKGJyY21mX3Byb3RvX2JjZGNfYXR0YWNoKGRydnIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzQtXHRcdFx0Z290byBmYWlsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6MzU6XHR9IGVsc2UgaWYgKGRydnItXHUwMDNlYnVzX2lmLVx1MDAzZXByb3RvX3R5cGUgPT0gQlJDTUZfUFJPVE9fTVNHQlVGKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zNi1cdFx0aWYgKGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goZHJ2cikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzktXHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O1Vuc3VwcG9ydGVkIHByb3RvIHR5cGUgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYzo0MDpcdFx0XHQgZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlcHJvdG9fdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy00MS1cdFx0Z290byBmYWlsO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTU5PXZvaWQgYnJjbWZfcHJvdG9fZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtNjMtXHRpZiAoZHJ2ci1cdTAwM2Vwcm90bykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6NjQ6XHRcdGlmIChkcnZyLVx1MDAzZWJ1c19pZi1cdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX0JDREMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy02NS1cdFx0XHRicmNtZl9wcm90b19iY2RjX2RldGFjaChkcnZyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjY2Olx0XHRlbHNlIGlmIChkcnZyLVx1MDAzZWJ1c19pZi1cdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTY3LVx0XHRcdGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goZHJ2cik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTEyNDQ9c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjY5LVx0YnVzLVx1MDAzZW9wcyA9IFx1MDAyNmJyY21mX3VzYl9idXNfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNzA6XHRidXMtXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX0JDREM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI3MS1cdGJ1cy1cdTAwM2Vmd3ZpZCA9IGZ3dmlkO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDEzMgoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDM3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgYnJjbWZtYWNgIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGBCUkNNRl9QUk9UT19NU0dCVUZgLiBJdCBsb29rcyBsaWtlIHRoaXMgaXMgZXhjbHVzaXZlbHkgdXNlZCB3aXRoaW4gYHBjaWUuY2AuIEFuZCBmdXJ0aGVyLCB0aGlzIGBtc2didWYuY2AgZmlsZSBpcyBvbmx5IGVuZ2FnZWQgd2hlbiB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIGEgUENJZSBkZXZpY2UsIHdoaWNoIG1ha2VzIGl0IHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4KClRoZSB0YXNrIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHRlbGxzIG1lIHRvIHJldHVybiBgZmFsc2VgIGlmIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb246IGRvZXMgYGJyY21mbWFjYCBmYWxsIGludG8gdGhhdCBjYXRlZ29yeT8KClllcywgYWJzb2x1dGVseS4gYGJyY21mbWFjYCBpcyBhIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFRoZSBQQ0llIHZhcmlhbnQsIHRoZSBvbmUgdGhhdCYjMzk7cyByZWxldmFudCBoZXJlLCBkZXBlbmRzIG9uIGFuIGFjdHVhbCBCcm9hZGNvbSBXaS1GaSBjaGlwLCBzb21ldGhpbmcgbGlrZSBhIEJDTTQzNjAyIG9yIEJDTTQzNTAsIGNvbm5lY3RlZCB2aWEgUENJZS4gUUVNVSwgYXMgZmFyIGFzIEkgdW5kZXJzdGFuZCwgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGVzZSBCcm9hZGNvbSBXaS1GaSBQQ0llIGNhcmRzLiBUaGVyZWZvcmUsIEkgY2FuJiMzOTt0IGV2ZW4gZ2V0IHN0YXJ0ZWQgZnV6emluZyB0aGlzIHNwZWNpZmljIGludGVyZmFjZSB3aXRoIGEgdmlydHVhbCBtYWNoaW5lLCBhbmQgUUVNVSB3b24mIzM5O3QgYWxsb3cgbWUgdG8uCgpTeXprYWxsZXIgY2FuJiMzOTt0IGVmZmVjdGl2ZWx5IGZ1enogdGhlIFBDSWUgaW50ZXJmYWNlIG9mIHRoaXMgZHJpdmVyIGJlY2F1c2UgaXQgbGFja3MgdGhlIG5lY2Vzc2FyeSBjYXBhYmlsaXRpZXMgdG8gZW11bGF0ZSB0aGUgc3BlY2lmaWMgcmVnaXN0ZXJzIGFuZCBETUEgcmluZ3Mgb2YgdGhpcyBCcm9hZGNvbSBXaS1GaSBjaGlwLiBXaGlsZSBTeXprYWxsZXIgaGFzIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCB0aGV5IGFyZSBtb3N0bHkgZm9yIGdlbmVyaWMgZGV2aWNlcyBvciB2aXJ0aW8sIGFuZCBub3QgY29tcGxleCB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgTUFDcy4KCldhaXQgYSBtb21lbnQsIEkgbmVlZCB0byBjaGVjayBteSBmYWN0cyBoZXJlLiBTeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBidXQgaXRzIGNhcGFiaWxpdGllcyBhcmUgbGltaXRlZCB0byB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIEJBUnMuIFRoaXMgZG9lc24mIzM5O3QgZ28gZGVlcCBlbm91Z2ggaW50byBlbXVsYXRpbmcgZGV2aWNlIGZpcm13YXJlIG9yIERNQSByaW5ncyB0byByZWFjaCB0aGUgcG9pbnQgd2hlcmUgdGhlIGBtc2didWYuY2AgZmlsZSBwcm9jZXNzZXMgbWVzc2FnZXMgZnJvbSB0aGUgZmlybXdhcmUuCgpJIHJlYWxseSBuZWVkIHRvIGNvbmZpcm0gaWYgYG1zZ2J1Zi5jYCBwcm9jZXNzZXMgRE1BIHJpbmdzIGF0IGFsbC4gSWYgaXQgZG9lcywgdGhlbiB0aGUgcHJvYmxlbSBpcyBldmVuIHdvcnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTg3Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjg3NDpicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04NzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMjg3PXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzMjItXHRcdGJyY21mX2RiZyhNU0dCVUYsIFwmIzM0O01TR0JVRl9UWVBFX1RYX1NUQVRVU1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTMyMzpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzMjQtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM0OAoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgY29kZSBmbG93LCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipVbmRlcnN0YW5kaW5nIHRoZSBicmNtZl9tc2didWYgTWVzc2FnZSBIYW5kbGluZyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgIGZ1bmN0aW9uLCBhbmQgSSYjMzk7bSBpbW1lZGlhdGVseSB0cmFjaW5nIGl0cyBjYWxsIHBhdGggdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLiBJdCYjMzk7cyBjbGVhciB0aGF0IGl0JiMzOTtzIGRlZXBseSBpbnZvbHZlZCBpbiB0aGUgaGFuZGxpbmcgb2YgbWVzc2FnZXMgd2l0aGluIHRoZSBicmNtZiBmcmFtZXdvcmssIHNwZWNpZmljYWxseSBtZXNzYWdlcyB0aGF0IGFyZSBiZWluZyAqcmVjZWl2ZWQqLgoKVGhlIGNhbGwgc3RhY2sgY29uZmlybXMgbXkgc3VzcGljaW9uOiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAgaXMgKnRyaWdnZXJlZCogZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLiBUaGlzIGBwcm9jZXNzX3J4YCBmdW5jdGlvbiBpcyBsaWtlbHkgdGhlIGNlbnRyYWwgcHJvY2Vzc2luZyBwb2ludCBmb3IgaW5jb21pbmcgZGF0YS4gSXQmIzM5O3MgdGhlICYjMzQ7cmVjZWl2ZXImIzM0OyBpbiB0aGlzIHNwZWNpZmljIHN1YnN5c3RlbS4KCkFuZCB0aGUgZXZlbiBiaWdnZXIgcGljdHVyZSByZXZlYWxzIHRoYXQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YCwgdGhlIGNvcmUgJiMzNDtyZWNlaXZlciYjMzQ7IGZ1bmN0aW9uLCBpcyBpdHNlbGYgaW52b2tlZCBmcm9tIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAuIEFoLCBzbyBgcnhfdHJpZ2dlcmAgaXMgd2hhdCYjMzk7cyBraWNraW5nIG9mZiB0aGUgd2hvbGUgaW5ib3VuZCBtZXNzYWdlIGhhbmRsaW5nIHByb2Nlc3MuIFRoaXMgdHJpZ2dlciBmdW5jdGlvbiBwcm9iYWJseSBtYW5hZ2VzIHRoZSBsb3dlci1sZXZlbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgc2lnbmFscyB0aGUgYXZhaWxhYmlsaXR5IG9mIG5ldyBkYXRhLCB0aGVuIHRoaXMgaW5jb21pbmcgZGF0YSBpcyB1bHRpbWF0ZWx5ICpwcm9jZXNzZWQqIGJ5IGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYC4KClNvLCBpbiBlc3NlbmNlLCBJIHVuZGVyc3RhbmQgdGhlIHNlcXVlbmNlOiBgcnhfdHJpZ2dlcmAgaW5pdGlhdGVzIHRoZSBwcm9jZXNzLCBgcHJvY2Vzc19yeGAgcmVjZWl2ZXMvbWFuYWdlcyB0aGUgZGF0YSwgYW5kIGZpbmFsbHksIGBwcm9jZXNzX21zZ3R5cGVgIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgc3BlY2lmaWMgKnR5cGUqIG9mIGluY29taW5nIG1lc3NhZ2UuIFRoaXMgaXMgY3JpdGljYWwgZm9yIGRpc3Rpbmd1aXNoaW5nIGRpZmZlcmVudCBjb250cm9sLCBkYXRhLCBhbmQgb3RoZXIgdHlwZXMgb2YgbWVzc2FnZXMuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIE5vdyBJIGNhbiBkaXZlIGRlZXBlciBpbnRvIGVhY2ggb2YgdGhlc2UgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIG1lc3NhZ2UgcGFyc2luZyBhbmQgaGFuZGxpbmcgaXMgZG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDc6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMzM1PXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzY2OmludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM2Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oPTI2PXN0cnVjdCBtc2didWZfYnVmX2FkZHIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozMTppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zMi12b2lkIGJyY21mX21zZ2J1Zl9kZWxldGVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgdTE2IGZsb3dpZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz05NDE9c3RhdGljIGlycXJldHVybl90IGJyY21mX3BjaWVfaXNyX3RocmVhZChpbnQgaXJxLCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NTUtXHRcdFx0aWYgKGRldmluZm8tXHUwMDNlc3RhdGUgPT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6OTU2Olx0XHRcdFx0YnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTk1Ny1cdFx0XHRcdFx0XHRcdFx1MDAyNmRldmluZm8tXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQwMQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDM4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIEFuYWx5c2lzKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIHNpdHVhdGlvbi4gVGhpcyBjb2RlIEkmIzM5O20gbG9va2luZyBhdCwgdGhlIGBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c2AgZnVuY3Rpb24sIGlzIGNhbGxlZCBmcm9tIGBicmNtZl9wY2llX2lzcl90aHJlYWRgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIFBDSWUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEJyb2FkY29tIFdpLUZpIGRyaXZlci4gR2l2ZW4gUUVNVSYjMzk7cyBsaW1pdGF0aW9ucyBhbmQgc3l6a2FsbGVyJiMzOTtzIGN1cnJlbnQgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBJIGNhbiYjMzk7dCBzZWUgYSB3YXkgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aCBpbiBhIHZpcnR1YWxpemVkIHNldHVwLiBUaGUgUENJIGZ1enplciBjYW4mIzM5O3QgbWVhbmluZ2Z1bGx5IGludGVyYWN0IHdpdGggdGhlIERNQSByaW5ncywgaW50ZXJydXB0IGhhbmRsaW5nLCBvciBldmVuIGdldCB0aGUgZGV2aWNlIGludG8gdGhlIHJlcXVpcmVkIGBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQYCBzdGF0ZSBhbmQgc2V0IHVwIHRoZSBuZWNlc3NhcnkgRE1BIHJpbmdzIGFuZCBmaXJtd2FyZSB0byByZWFjaCB0aGlzIGZ1bmN0aW9uLgoKSSBkaWQgYnJpZWZseSB3b25kZXIgaWYgbWFjODAyMTFfaHdzaW0gbWlnaHQgYmUgYSBiYWNrZG9vciwgYnV0IG5vLCB0aGF0JiMzOTtzIGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBtYWM4MDIxMSwgYW5kIGBicmNtZm1hY2AgaXMgYSBGdWxsTUFDIGRyaXZlciB0aGF0IHVzZXMgY2ZnODAyMTEgYW5kIGl0cyBvd24gZmlybXdhcmUuIE5vIGx1Y2sgdGhlcmUuIFRoZXJlJiMzOTtzIG5vIGtub3duIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhlIGBicmNtZm1hY2AgUENJZSBzZXR1cCwgZWl0aGVyLgoKTGV0JiMzOTtzIGRvIGEgc2FuaXR5IGNoZWNrLiBDYW4gYGJyY21mbWFjYCBiZSBmdXp6ZWQgYXQgYWxsPyBXZWxsLCBzeXprYWxsZXIgZG9lcyBoYXZlIGEgVVNCIGZ1enplciwgYW5kIHRoYXQgd291bGQgZ2l2ZSB1cyBzb21lIGNvdmVyYWdlIG9mIGBicmNtZm1hY2AuIEhvd2V2ZXIsIFVTQiB1c2VzIGBCUkNNRl9QUk9UT19CQ0RDYCwgYW5kIHdlJiMzOTtyZSBsb29raW5nIGF0IGBtc2didWYuY2AsIHdoaWNoIGlzIGRpcmVjdGx5IHRpZWQgdG8gYEJSQ01GX1BST1RPX01TR0JVRmAuIFRoZSBVU0IgcGF0aCB3b24mIzM5O3QgdG91Y2ggdGhpcyBjb2RlLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBtc2didWYuY2AsIHdoaWNoIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgYHBjaWUuY2AuCgpUbyBzb2xpZGlmeSB0aGlzLCBsZXQmIzM5O3MgdmVyaWZ5IHRoYXQgYEJSQ01GX1BST1RPX01TR0JVRmAgaXMgbm90IHVzZWQgZWxzZXdoZXJlLiBUaGF0IHdpbGwgY2VtZW50IHRoZSBjb25jbHVzaW9uIHRoYXQgdGhpcyBjb2RlIHBhdGggaXMgYWJzb2x1dGVseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUkNNRl9QUk9UT19NU0dCVUYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaD01MT1lbnVtIGJyY21mX2J1c19wcm90b2NvbF90eXBlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC01Mi1cdEJSQ01GX1BST1RPX0JDREMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6NTM6XHRCUkNNRl9QUk9UT19NU0dCVUZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC01NC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQ0Mz1icmNtZl9wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTE5LVx0YnVzLVx1MDAzZW9wcyA9IFx1MDAyNmJyY21mX3BjaWVfYnVzX29wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjUyMDpcdGJ1cy1cdTAwM2Vwcm90b190eXBlID0gQlJDTUZfUFJPVE9fTVNHQlVGO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTIxLVx0YnVzLVx1MDAzZWNoaXAgPSBkZXZpbmZvLVx1MDAzZWNvcmVpZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYz0yMD1pbnQgYnJjbWZfcHJvdG9fYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzQtXHRcdFx0Z290byBmYWlsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6MzU6XHR9IGVsc2UgaWYgKGRydnItXHUwMDNlYnVzX2lmLVx1MDAzZXByb3RvX3R5cGUgPT0gQlJDTUZfUFJPVE9fTVNHQlVGKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zNi1cdFx0aWYgKGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goZHJ2cikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9NTk9dm9pZCBicmNtZl9wcm90b19kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy02NS1cdFx0XHRicmNtZl9wcm90b19iY2RjX2RldGFjaChkcnZyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjY2Olx0XHRlbHNlIGlmIChkcnZyLVx1MDAzZWJ1c19pZi1cdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTY3LVx0XHRcdGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goZHJ2cik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDE4CgkJCQkJCQlvdXRwdXQ6IDEzMAoJCQkJCQkJdGhvdWdodHM6IDE4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIHRoZSBCcm9hZGNvbSBXaS1GaSBQQ0llIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCYjMzk7cyBjbGVhciB0aGF0IHRoZSBjb2RlIHNldHRpbmcgYEJSQ01GX1BST1RPX01TR0JVRmAgaXMgKm9ubHkqIGZvdW5kIHdpdGhpbiBgcGNpZS5jYC4gQW5kIHRoYXQmIzM5O3Mgc3BlY2lmaWNhbGx5IHRoZSBQQ0llIGRyaXZlciBmb3IgQnJvYWRjb20gV2ktRmkgY2hpcHMuIEhlcmUmIzM5O3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZzogUUVNVSwgYXMgd2Uga25vdywgZG9lc24mIzM5O3QgZW11bGF0ZSBCcm9hZGNvbSBXaS1GaSBQQ0llIGNhcmRzLiBUaGVyZWZvcmUsIGJ5IGl0cyBuYXR1cmUsIHRoaXMgY29kZSBwYXRoIGlzIHNpbXBseSBpbmFjY2Vzc2libGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudC4KCk5vdywgcmV2aWV3aW5nIHRoZSBwcm9tcHQmIzM5O3MgZXhwbGljaXQgaW5zdHJ1Y3Rpb24sIGl0IG5haWxzIHRoaXMgc2NlbmFyaW86ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKClRoaXMgaXMgYSB0ZXh0Ym9vayBtYXRjaC4gVGhlIGBicmNtZm1hY2AgUENJZSBkcml2ZXIgKnVuZXF1aXZvY2FsbHkqIHJlcXVpcmVzIGEgcGh5c2ljYWwgQnJvYWRjb20gV2ktRmkgUENJZSBjYXJkLiBUaGUgZW11bGF0aW9uIGp1c3QgaXNuJiMzOTt0IHRoZXJlIGluIHN0YW5kYXJkIFFFTVUuIFNvLCBhZnRlciB0aGlzIGFuYWx5c2lzLCBpdCYjMzk7cyBjbGVhcjogYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBmdXp6aW5nIGVmZm9ydCB3b3VsZCBiZSB1bnByb2R1Y3RpdmUgYmVjYXVzZSBpdCBjYW4mIzM5O3QgcmVhY2ggdGhpcyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtc2didWYuY2AgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKS4gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgZXhjbHVzaXZlbHkgdXNlZCBieSB0aGUgUENJZSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlciAoYHBjaWUuY2ApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgQnJvYWRjb20gV2ktRmkgUENJZSBoYXJkd2FyZSwgYW5kIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IERNQSByaW5ncyBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb25zIHJlcXVpcmVkIHRvIHJlYWNoIHRoaXMgY29kZSwgaXQgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtc2didWYuY2AgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKS4gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgZXhjbHVzaXZlbHkgdXNlZCBieSB0aGUgUENJZSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlciAoYHBjaWUuY2ApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgQnJvYWRjb20gV2ktRmkgUENJZSBoYXJkd2FyZSwgYW5kIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IERNQSByaW5ncyBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb25zIHJlcXVpcmVkIHRvIHJlYWNoIHRoaXMgY29kZSwgaXQgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNzo1NjozMy44NzkzODk1NzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTc4NDQ2Njg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG1zZ2J1Zi5jYCBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlciAoYnJjbWZtYWMpLiBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgTVNHQlVGIHByb3RvY29sLCB3aGljaCBpcyBleGNsdXNpdmVseSB1c2VkIGJ5IHRoZSBQQ0llIGludGVyZmFjZSBvZiB0aGUgZHJpdmVyIChgcGNpZS5jYCkuIFNpbmNlIFFFTVUgZG9lcyBub3QgZW11bGF0ZSBCcm9hZGNvbSBXaS1GaSBQQ0llIGhhcmR3YXJlLCBhbmQgc3l6a2FsbGVyJ3MgUENJIGZ1enplciBjYW5ub3QgZW11bGF0ZSB0aGUgY29tcGxleCBETUEgcmluZ3MgYW5kIGZpcm13YXJlIGludGVyYWN0aW9ucyByZXF1aXJlZCB0byByZWFjaCB0aGlzIGNvZGUsIGl0IGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNzo1NjozMy44NzkzOTY2ODlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NTI1MjEwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI2NTUyYzI3YTJkMDE1NzIyZTZjM2U2N2JmYWIxMGZlMTU2NWNjNjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwNzo1NjozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcXG5pbmRleCBiYTFjZTE1NTJlMGY0Li45NTk2NTliZmVhOTllIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xcbkBAIC0yNCw3ICsyNCw2IEBAXFxuICNpbmNsdWRlIFxcXCJidXMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRyYWNlcG9pbnQuaFxcXCJcXG4gXFxuLVxcbiAjZGVmaW5lIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVRcXHRcXHRtc2Vjc190b19qaWZmaWVzKDIwMDApXFxuIFxcbiAjZGVmaW5lIE1TR0JVRl9UWVBFX0dFTl9TVEFUVVNcXHRcXHRcXHQweDFcXG5AQCAtMjkxLDcgKzI5MCw2IEBAIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzIHtcXG4gXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpO1xcbiBcXG4tXFxuIHN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqXFxuIGJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcyxcXG4gXFx0XFx0XFx0IGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbilcXG5AQCAtMzE0LDcgKzMxMiw2IEBAIGJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcyxcXG4gXFx0cmV0dXJuIHBrdGlkcztcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnRcXG4gYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0IHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMsXFxuQEAgLTM2Miw3ICszNTksNiBAQCBicmNtZl9tc2didWZfYWxsb2NfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqXFxuIGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLFxcbiBcXHRcXHQgICAgICAgdTMyIGlkeClcXG5AQCAtMzkwLDcgKzM4Niw2IEBAIGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLFxcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0ICAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcylcXG5AQCAtNDE2LDcgKzQxMSw2IEBAIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0a2ZyZWUocGt0aWRzKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yZWxlYXNlX3BrdGlkcyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG4gXFx0aWYgKG1zZ2J1Zi1cXHUwMDNlcnhfcGt0aWRzKVxcbkBAIC00MjcsNyArNDIxLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4gXFx0XFx0XFx0XFx0XFx0ICAgbXNnYnVmLVxcdTAwM2V0eF9wa3RpZHMpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxcbiBcXHRcXHRcXHRcXHQgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4pXFxuIHtcXG5AQCAtNDczLDcgKzQ2Niw2IEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X2lvY3RsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG4gXFx0cmV0dXJuIHdhaXRfZXZlbnRfdGltZW91dChtc2didWYtXFx1MDAzZWlvY3RsX3Jlc3Bfd2FpdCxcXG5AQCAtNDgxLDE0ICs0NzMsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4gXFx0XFx0XFx0XFx0ICBNU0dCVUZfSU9DVExfUkVTUF9USU1FT1VUKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9pb2N0bF9yZXNwX3dha2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbiB7XFxuIFxcdG1zZ2J1Zi1cXHUwMDNlY3RsX2NvbXBsZXRlZCA9IHRydWU7XFxuIFxcdHdha2VfdXAoXFx1MDAyNm1zZ2J1Zi1cXHUwMDNlaW9jdGxfcmVzcF93YWl0KTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxcbiBcXHRcXHRcXHRcXHQgICB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbiwgaW50ICpmd2VycilcXG4ge1xcbkBAIC01MjYsMTQgKzUxNiwxMiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zZXRfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuIFxcdFxcdFxcdFxcdCB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbiwgaW50ICpmd2VycilcXG4ge1xcbiBcXHRyZXR1cm4gYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoZHJ2ciwgaWZpZHgsIGNtZCwgYnVmLCBsZW4sIGZ3ZXJyKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2hkcnB1bGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgYm9vbCBkb19md3MsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicmNtZl9pZiAqKmlmcClcXG4ge1xcbkBAIC01NjAsNiArNTQ4LDI3IEBAIGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxcbiBcXHRicmNtZl9mbG93cmluZ19kZWxldGUobXNnYnVmLVxcdTAwM2VmbG93LCBmbG93aWQpO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuK1xcdFxcdFxcdFxcdCAgICB1MTYgZmxvd19yaW5nX2lkLCB1MTYgKmZsb3dpZClcXG4re1xcbitcXHR1MzIgaWQgPSBmbG93X3JpbmdfaWQ7XFxuK1xcbitcXHRpZiAoaWQgXFx1MDAzYyBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUKSB7XFxuK1xcdFxcdGJwaHlfZXJyKG1zZ2J1Zi1cXHUwMDNlZHJ2ciwgXFxcImludmFsaWQgZmxvd3JpbmcgaWQgJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCBmbG93X3JpbmdfaWQpO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rXFxuK1xcdGlkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7XFxuK1xcdGlmIChpZCBcXHUwMDNlPSBtc2didWYtXFx1MDAzZW1heF9mbG93cmluZ3MpIHtcXG4rXFx0XFx0YnBoeV9lcnIobXNnYnVmLVxcdTAwM2VkcnZyLCBcXFwiaW52YWxpZCBmbG93cmluZyBpZCAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGZsb3dfcmluZ19pZCk7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4rXFx0KmZsb3dpZCA9IGlkO1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbiBcXG4gc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICpcXG4gYnJjbWZfbXNnYnVmX2RlcXVldWVfd29yayhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuQEAgLTU3OCw3ICs1ODcsNiBAQCBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4gXFx0cmV0dXJuIHdvcms7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdTMyXFxuIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGVfd29ya2VyKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICp3b3JrKVxcbkBAIC02NDcsNyArNjU1LDYgQEAgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV93b3JrZXIoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbiBcXHRyZXR1cm4gZmxvd2lkO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xcbkBAIC02NjEsNyArNjY4LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdH1cXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGludCBpZmlkeCxcXG4gXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbkBAIC02OTQsNyArNzAwLDYgQEAgc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxcbiBcXHRyZXR1cm4gZmxvd2lkO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2Zsb3dyaW5nICpmbG93ID0gbXNnYnVmLVxcdTAwM2VmbG93O1xcbkBAIC03NjgsNyArNzczLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXFxuIFxcdGJyY21mX2NvbW1vbnJpbmdfdW5sb2NrKGNvbW1vbnJpbmcpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xcbkBAIC03ODEsNyArNzg1LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXFxuIFxcdH1cXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXFxuIFxcdFxcdFxcdFxcdFxcdGJvb2wgZm9yY2UpXFxuIHtcXG5AQCAtNzk2LDcgKzc5OSw2IEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfcXVldWVfZGF0YShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG5AQCAtODI0LDcgKzgyNiw2IEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9jb25maWd1cmVfYWRkcl9tb2RlKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0XFx0XFx0XFx0IGVudW0gcHJvdG9fYWRkcl9tb2RlIGFkZHJfbW9kZSlcXG5AQCAtODM0LDcgKzgzNSw2IEBAIGJyY21mX21zZ2J1Zl9jb25maWd1cmVfYWRkcl9tb2RlKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0YnJjbWZfZmxvd3JpbmdfY29uZmlndXJlX2FkZHJfbW9kZShtc2didWYtXFx1MDAzZWZsb3csIGlmaWR4LCBhZGRyX21vZGUpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWRcXG4gYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXFxuIHtcXG5AQCAtODQzLDcgKzg0Myw2IEBAIGJyY21mX21zZ2J1Zl9kZWxldGVfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKVxcbiBcXHRicmNtZl9mbG93cmluZ19kZWxldGVfcGVlcihtc2didWYtXFx1MDAzZWZsb3csIGlmaWR4LCBwZWVyKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXFxuIHtcXG5AQCAtODUyLDcgKzg1MSw2IEBAIGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXFxuIFxcdGJyY21mX2Zsb3dyaW5nX2FkZF90ZGxzX3BlZXIobXNnYnVmLVxcdTAwM2VmbG93LCBpZmlkeCwgcGVlcik7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZFxcbiBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4ge1xcbkBAIC04NzIsNyArODcwLDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIFxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWRcXG4gYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIHtcXG5AQCAtODgwLDE3ICs4NzcsMjMgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIFxcdHN0cnVjdCBtc2didWZfdHhfc3RhdHVzICp0eF9zdGF0dXM7XFxuIFxcdHUzMiBpZHg7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdHUxNiBmbG93X3JpbmdfaWQ7XFxuIFxcdHUxNiBmbG93aWQ7XFxuIFxcbiBcXHR0eF9zdGF0dXMgPSAoc3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKilidWY7XFxuIFxcdGlkeCA9IGxlMzJfdG9fY3B1KHR4X3N0YXR1cy1cXHUwMDNlbXNnLnJlcXVlc3RfaWQpIC0gMTtcXG4tXFx0Zmxvd2lkID0gbGUxNl90b19jcHUodHhfc3RhdHVzLVxcdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcXG4tXFx0Zmxvd2lkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7XFxuK1xcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XFxuIFxcdHNrYiA9IGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQobXNnYnVmLVxcdTAwM2VkcnZyLVxcdTAwM2VidXNfaWYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0ICAgICBtc2didWYtXFx1MDAzZXR4X3BrdGlkcywgaWR4KTtcXG4gXFx0aWYgKCFza2IpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdGlmICghYnJjbWZfbXNnYnVmX2dldF9mbG93aWQobXNnYnVmLCBmbG93X3JpbmdfaWQsIFxcdTAwMjZmbG93aWQpKSB7XFxuK1xcdFxcdGJyY21mX3R4ZmluYWxpemUoYnJjbWZfZ2V0X2lmcChtc2didWYtXFx1MDAzZWRydnIsIHR4X3N0YXR1cy1cXHUwMDNlbXNnLmlmaWR4KSxcXG4rXFx0XFx0XFx0XFx0IHNrYiwgZmFsc2UpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuIFxcdHNldF9iaXQoZmxvd2lkLCBtc2didWYtXFx1MDAzZXR4c3RhdHVzX2RvbmVfbWFwKTtcXG4gXFx0Y29tbW9ucmluZyA9IG1zZ2J1Zi1cXHUwMDNlZmxvd3JpbmdzW2Zsb3dpZF07XFxuIFxcdGF0b21pY19kZWMoXFx1MDAyNmNvbW1vbnJpbmctXFx1MDAzZW91dHN0YW5kaW5nX3R4KTtcXG5AQCAtODk5LDcgKzkwMiw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiBcXHRcXHRcXHQgc2tiLCB0cnVlKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudClcXG4ge1xcbiBcXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLVxcdTAwM2VkcnZyO1xcbkBAIC05NzcsNyArOTc5LDYgQEAgc3RhdGljIHUzMiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGNvdW50KVxcbiBcXHRyZXR1cm4gaTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbiB7XFxuQEAgLTk5NSw3ICs5OTYsNiBAQCBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4gXFx0fVxcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWRcXG4gYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXFxuIHtcXG5AQCAtMTAwNSw3ICsxMDA1LDYgQEAgYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXFxuIFxcdFxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB1MzJcXG4gYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxcbiBcXHRcXHRcXHQgICAgIHUzMiBjb3VudClcXG5AQCAtMTA3OSw3ICsxMDc4LDYgQEAgYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxcbiBcXHRyZXR1cm4gaTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG4gXFx0dTMyIGNvdW50O1xcbkBAIC0xMDg5LDcgKzEwODcsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbiBcXHRtc2didWYtXFx1MDAzZWN1cl9pb2N0bHJlc3BidWYgKz0gY291bnQ7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG4gXFx0dTMyIGNvdW50O1xcbkBAIC0xMDk5LDcgKzEwOTYsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIFxcdG1zZ2J1Zi1cXHUwMDNlY3VyX2V2ZW50YnVmICs9IGNvdW50O1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cXHUwMDNlZHJ2cjtcXG5AQCAtMTE0Miw3ICsxMTM4LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIFxcdGJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiB7XFxuQEAgLTEyMzcsMTMgKzEyMzIsMTYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuIFxcdHN0cnVjdCBtc2didWZfZmxvd3JpbmdfY3JlYXRlX3Jlc3AgKmZsb3dyaW5nX2NyZWF0ZV9yZXNwO1xcbiBcXHR1MTYgc3RhdHVzO1xcbiBcXHR1MTYgZmxvd2lkO1xcbitcXHR1MTYgZmxvd19yaW5nX2lkO1xcbiBcXG4gXFx0Zmxvd3JpbmdfY3JlYXRlX3Jlc3AgPSAoc3RydWN0IG1zZ2J1Zl9mbG93cmluZ19jcmVhdGVfcmVzcCAqKWJ1ZjtcXG4gXFxuLVxcdGZsb3dpZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVxcdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcXG4tXFx0Zmxvd2lkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7XFxuK1xcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVxcdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcXG4gXFx0c3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVxcdTAwM2Vjb21wbF9oZHIuc3RhdHVzKTtcXG4gXFxuK1xcdGlmICghYnJjbWZfbXNnYnVmX2dldF9mbG93aWQobXNnYnVmLCBmbG93X3JpbmdfaWQsIFxcdTAwMjZmbG93aWQpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRpZiAoc3RhdHVzKSB7XFxuIFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJGbG93cmluZyBjcmVhdGlvbiBmYWlsZWQsIGNvZGUgJWRcXFxcblxcXCIsIHN0YXR1cyk7XFxuIFxcdFxcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xcbkBAIC0xMjU3LDcgKzEyNTUsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0YnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShtc2didWYsIGZsb3dpZCwgdHJ1ZSk7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZFxcbiBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgIHZvaWQgKmJ1ZilcXG5AQCAtMTI2NiwxMyArMTI2MywxNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0c3RydWN0IG1zZ2J1Zl9mbG93cmluZ19kZWxldGVfcmVzcCAqZmxvd3JpbmdfZGVsZXRlX3Jlc3A7XFxuIFxcdHUxNiBzdGF0dXM7XFxuIFxcdHUxNiBmbG93aWQ7XFxuK1xcdHUxNiBmbG93X3JpbmdfaWQ7XFxuIFxcbiBcXHRmbG93cmluZ19kZWxldGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2RlbGV0ZV9yZXNwICopYnVmO1xcbiBcXG4tXFx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXFx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xcbi1cXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcXG4rXFx0Zmxvd19yaW5nX2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXFx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xcbiBcXHRzdGF0dXMgPSAgbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXFx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xcbiBcXG4rXFx0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXFx1MDAyNmZsb3dpZCkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdGlmIChzdGF0dXMpIHtcXG4gXFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkZsb3dyaW5nIGRlbGV0aW9uIGZhaWxlZCwgY29kZSAlZFxcXFxuXFxcIiwgc3RhdHVzKTtcXG4gXFx0XFx0YnJjbWZfZmxvd3JpbmdfZGVsZXRlKG1zZ2J1Zi1cXHUwMDNlZmxvdywgZmxvd2lkKTtcXG5AQCAtMTI4NCw3ICsxMjg0LDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuIFxcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4ge1xcbiBcXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLVxcdTAwM2VkcnZyO1xcbkBAIC0xMzMzLDcgKzEzMzIsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiBcXHR9XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZylcXG4ge1xcbkBAIC0xMzY1LDcgKzEzNjMsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuIFxcdFxcdGdvdG8gYWdhaW47XFxuIH1cXG4gXFxuLVxcbiBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9idXMgKmJ1c19pZiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbkBAIC0xMzk3LDcgKzEzOTQsNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tXFxuIHZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cXHUwMDNlcHJvdG8tXFx1MDAzZXBkO1xcbkBAIC0xNjEzLDcgKzE2MDksNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbiBcXHRpZiAoIW1zZ2J1Zi1cXHUwMDNlZmxvdylcXG4gXFx0XFx0Z290byBmYWlsO1xcbiBcXG4tXFxuIFxcdGJyY21mX2RiZyhNU0dCVUYsIFxcXCJGZWVkaW5nIGJ1ZmZlcnMsIHJ4IGRhdGEgJWQsIHJ4IGV2ZW50ICVkLCByeCBpb2N0bCByZXNwICVkXFxcXG5cXFwiLFxcbiBcXHRcXHQgIG1zZ2J1Zi1cXHUwMDNlbWF4X3J4YnVmcG9zdCwgbXNnYnVmLVxcdTAwM2VtYXhfZXZlbnRidWYsXFxuIFxcdFxcdCAgbXNnYnVmLVxcdTAwM2VtYXhfaW9jdGxyZXNwYnVmKTtcXG5AQCAtMTY1Myw3ICsxNjQ4LDYgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4gXFx0cmV0dXJuIC1FTk9NRU07XFxuIH1cXG4gXFxuLVxcbiB2b2lkIGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4ge1xcbiBcXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU2OjM0LjE3NTM3OTY1NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUxNDg4NDcxODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbXNnYnVmLmNgIGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyIChicmNtZm1hYykuIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBNU0dCVUYgcHJvdG9jb2wsIHdoaWNoIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgdGhlIFBDSWUgaW50ZXJmYWNlIG9mIHRoZSBkcml2ZXIgKGBwY2llLmNgKS4gU2luY2UgUUVNVSBkb2VzIG5vdCBlbXVsYXRlIEJyb2FkY29tIFdpLUZpIFBDSWUgaGFyZHdhcmUsIGFuZCBzeXprYWxsZXIncyBQQ0kgZnV6emVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IERNQSByaW5ncyBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb25zIHJlcXVpcmVkIHRvIHJlYWNoIHRoaXMgY29kZSwgaXQgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI2NTUyYzI3YTJkMDE1NzIyZTZjM2U2N2JmYWIxMGZlMTU2NWNjNjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA3OjU2OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXG5pbmRleCBiYTFjZTE1NTJlMGY0Li45NTk2NTliZmVhOTllIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbkBAIC0yNCw3ICsyNCw2IEBAXG4gI2luY2x1ZGUgXCJidXMuaFwiXG4gI2luY2x1ZGUgXCJ0cmFjZXBvaW50LmhcIlxuIFxuLVxuICNkZWZpbmUgTVNHQlVGX0lPQ1RMX1JFU1BfVElNRU9VVFx0XHRtc2Vjc190b19qaWZmaWVzKDIwMDApXG4gXG4gI2RlZmluZSBNU0dCVUZfVFlQRV9HRU5fU1RBVFVTXHRcdFx0MHgxXG5AQCAtMjkxLDcgKzI5MCw2IEBAIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzIHtcbiBcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKTtcbiBcbi1cbiBzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKlxuIGJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcyxcbiBcdFx0XHQgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKVxuQEAgLTMxNCw3ICszMTIsNiBAQCBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsXG4gXHRyZXR1cm4gcGt0aWRzO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50XG4gYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbkBAIC0zNjIsNyArMzU5LDYgQEAgYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1cbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKlxuIGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLFxuIFx0XHQgICAgICAgdTMyIGlkeClcbkBAIC0zOTAsNyArMzg2LDYgQEAgYnJjbWZfbXNnYnVmX2dldF9wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcmVsZWFzZV9hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcylcbkBAIC00MTYsNyArNDExLDYgQEAgYnJjbWZfbXNnYnVmX3JlbGVhc2VfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0a2ZyZWUocGt0aWRzKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRpZiAobXNnYnVmLVx1MDAzZXJ4X3BrdGlkcylcbkBAIC00MjcsNyArNDIxLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdFx0XHRcdFx0ICAgbXNnYnVmLVx1MDAzZXR4X3BrdGlkcyk7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X2lvY3RsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbilcbiB7XG5AQCAtNDczLDcgKzQ2Niw2IEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X2lvY3RsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4ge1xuIFx0cmV0dXJuIHdhaXRfZXZlbnRfdGltZW91dChtc2didWYtXHUwMDNlaW9jdGxfcmVzcF93YWl0LFxuQEAgLTQ4MSwxNCArNDczLDEyIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRcdFx0XHQgIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWtlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRtc2didWYtXHUwMDNlY3RsX2NvbXBsZXRlZCA9IHRydWU7XG4gXHR3YWtlX3VwKFx1MDAyNm1zZ2J1Zi1cdTAwM2Vpb2N0bF9yZXNwX3dhaXQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCAgIHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKVxuIHtcbkBAIC01MjYsMTQgKzUxNiwxMiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zZXRfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRcdFx0XHQgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4sIGludCAqZndlcnIpXG4ge1xuIFx0cmV0dXJuIGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKGRydnIsIGlmaWR4LCBjbWQsIGJ1ZiwgbGVuLCBmd2Vycik7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2hkcnB1bGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgYm9vbCBkb19md3MsXG4gXHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJjbWZfaWYgKippZnApXG4ge1xuQEAgLTU2MCw2ICs1NDgsMjcgQEAgYnJjbWZfbXNnYnVmX3JlbW92ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXG4gXHRicmNtZl9mbG93cmluZ19kZWxldGUobXNnYnVmLVx1MDAzZWZsb3csIGZsb3dpZCk7XG4gfVxuIFxuK3N0YXRpYyBib29sIGJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbitcdFx0XHRcdCAgICB1MTYgZmxvd19yaW5nX2lkLCB1MTYgKmZsb3dpZClcbit7XG4rXHR1MzIgaWQgPSBmbG93X3JpbmdfaWQ7XG4rXG4rXHRpZiAoaWQgXHUwMDNjIEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQpIHtcbitcdFx0YnBoeV9lcnIobXNnYnVmLVx1MDAzZWRydnIsIFwiaW52YWxpZCBmbG93cmluZyBpZCAldVxcblwiLFxuK1x0XHRcdCBmbG93X3JpbmdfaWQpO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXG4rXHRpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuK1x0aWYgKGlkIFx1MDAzZT0gbXNnYnVmLVx1MDAzZW1heF9mbG93cmluZ3MpIHtcbitcdFx0YnBoeV9lcnIobXNnYnVmLVx1MDAzZWRydnIsIFwiaW52YWxpZCBmbG93cmluZyBpZCAldVxcblwiLFxuK1x0XHRcdCBmbG93X3JpbmdfaWQpO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXG4rXHQqZmxvd2lkID0gaWQ7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4gXG4gc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICpcbiBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbkBAIC01NzgsNyArNTg3LDYgQEAgYnJjbWZfbXNnYnVmX2RlcXVldWVfd29yayhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRyZXR1cm4gd29yaztcbiB9XG4gXG4tXG4gc3RhdGljIHUzMlxuIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGVfd29ya2VyKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3dvcmtfaXRlbSAqd29yaylcbkBAIC02NDcsNyArNjU1LDYgQEAgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV93b3JrZXIoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0cmV0dXJuIGZsb3dpZDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xuQEAgLTY2MSw3ICs2NjgsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbkBAIC02OTQsNyArNzAwLDYgQEAgc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIGZsb3dpZDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXG4ge1xuIFx0c3RydWN0IGJyY21mX2Zsb3dyaW5nICpmbG93ID0gbXNnYnVmLVx1MDAzZWZsb3c7XG5AQCAtNzY4LDcgKzc3Myw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxuIFx0YnJjbWZfY29tbW9ucmluZ191bmxvY2soY29tbW9ucmluZyk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3dfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29ya2VyKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcbkBAIC03ODEsNyArNzg1LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG4gXHR9XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXG4gXHRcdFx0XHRcdGJvb2wgZm9yY2UpXG4ge1xuQEAgLTc5Niw3ICs3OTksNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgZmxvd2lkLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG5AQCAtODI0LDcgKzgyNiw2IEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0IGVudW0gcHJvdG9fYWRkcl9tb2RlIGFkZHJfbW9kZSlcbkBAIC04MzQsNyArODM1LDYgQEAgYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0YnJjbWZfZmxvd3JpbmdfY29uZmlndXJlX2FkZHJfbW9kZShtc2didWYtXHUwMDNlZmxvdywgaWZpZHgsIGFkZHJfbW9kZSk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4ge1xuQEAgLTg0Myw3ICs4NDMsNiBAQCBicmNtZl9tc2didWZfZGVsZXRlX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbiBcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZV9wZWVyKG1zZ2J1Zi1cdTAwM2VmbG93LCBpZmlkeCwgcGVlcik7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbiB7XG5AQCAtODUyLDcgKzg1MSw2IEBAIGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4gXHRicmNtZl9mbG93cmluZ19hZGRfdGRsc19wZWVyKG1zZ2J1Zi1cdTAwM2VmbG93LCBpZmlkeCwgcGVlcik7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4ge1xuQEAgLTg3Miw3ICs4NzAsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbkBAIC04ODAsMTcgKzg3NywyMyBAQCBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdHN0cnVjdCBtc2didWZfdHhfc3RhdHVzICp0eF9zdGF0dXM7XG4gXHR1MzIgaWR4O1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdHUxNiBmbG93X3JpbmdfaWQ7XG4gXHR1MTYgZmxvd2lkO1xuIFxuIFx0dHhfc3RhdHVzID0gKHN0cnVjdCBtc2didWZfdHhfc3RhdHVzICopYnVmO1xuIFx0aWR4ID0gbGUzMl90b19jcHUodHhfc3RhdHVzLVx1MDAzZW1zZy5yZXF1ZXN0X2lkKSAtIDE7XG4tXHRmbG93aWQgPSBsZTE2X3RvX2NwdSh0eF9zdGF0dXMtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4tXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbitcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbiBcdHNrYiA9IGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQobXNnYnVmLVx1MDAzZWRydnItXHUwMDNlYnVzX2lmLVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgbXNnYnVmLVx1MDAzZXR4X3BrdGlkcywgaWR4KTtcbiBcdGlmICghc2tiKVxuIFx0XHRyZXR1cm47XG4gXG4rXHRpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCBcdTAwMjZmbG93aWQpKSB7XG4rXHRcdGJyY21mX3R4ZmluYWxpemUoYnJjbWZfZ2V0X2lmcChtc2didWYtXHUwMDNlZHJ2ciwgdHhfc3RhdHVzLVx1MDAzZW1zZy5pZmlkeCksXG4rXHRcdFx0XHQgc2tiLCBmYWxzZSk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHNldF9iaXQoZmxvd2lkLCBtc2didWYtXHUwMDNldHhzdGF0dXNfZG9uZV9tYXApO1xuIFx0Y29tbW9ucmluZyA9IG1zZ2J1Zi1cdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcbiBcdGF0b21pY19kZWMoXHUwMDI2Y29tbW9ucmluZy1cdTAwM2VvdXRzdGFuZGluZ190eCk7XG5AQCAtODk5LDcgKzkwMiw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIFx0XHRcdCBza2IsIHRydWUpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgY291bnQpXG4ge1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cdTAwM2VkcnZyO1xuQEAgLTk3Nyw3ICs5NzksNiBAQCBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgY291bnQpXG4gXHRyZXR1cm4gaTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG5AQCAtOTk1LDcgKzk5Niw2IEBAIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0fVxuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl91cGRhdGVfcnhidWZwb3N0X2NvdW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IHJ4Y250KVxuIHtcbkBAIC0xMDA1LDcgKzEwMDUsNiBAQCBicmNtZl9tc2didWZfdXBkYXRlX3J4YnVmcG9zdF9jb3VudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiByeGNudClcbiBcdFx0YnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfZmlsbChtc2didWYpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdTMyXG4gYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxuIFx0XHRcdCAgICAgdTMyIGNvdW50KVxuQEAgLTEwNzksNyArMTA3OCw2IEBAIGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBib29sIGV2ZW50X2J1ZixcbiBcdHJldHVybiBpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbiBcdHUzMiBjb3VudDtcbkBAIC0xMDg5LDcgKzEwODcsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0bXNnYnVmLVx1MDAzZWN1cl9pb2N0bHJlc3BidWYgKz0gY291bnQ7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHR1MzIgY291bnQ7XG5AQCAtMTA5OSw3ICsxMDk2LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0bXNnYnVmLVx1MDAzZWN1cl9ldmVudGJ1ZiArPSBjb3VudDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4ge1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cdTAwM2VkcnZyO1xuQEAgLTExNDIsNyArMTEzOCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIFx0YnJjbXVfcGt0X2J1Zl9mcmVlX3NrYihza2IpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbkBAIC0xMjM3LDEzICsxMjMyLDE2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0c3RydWN0IG1zZ2J1Zl9mbG93cmluZ19jcmVhdGVfcmVzcCAqZmxvd3JpbmdfY3JlYXRlX3Jlc3A7XG4gXHR1MTYgc3RhdHVzO1xuIFx0dTE2IGZsb3dpZDtcbitcdHUxNiBmbG93X3JpbmdfaWQ7XG4gXG4gXHRmbG93cmluZ19jcmVhdGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICopYnVmO1xuIFxuLVx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfY3JlYXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4tXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbitcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xuIFx0c3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xuIFxuK1x0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXHUwMDI2Zmxvd2lkKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKHN0YXR1cykge1xuIFx0XHRicGh5X2VycihkcnZyLCBcIkZsb3dyaW5nIGNyZWF0aW9uIGZhaWxlZCwgY29kZSAlZFxcblwiLCBzdGF0dXMpO1xuIFx0XHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcbkBAIC0xMjU3LDcgKzEyNTUsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEobXNnYnVmLCBmbG93aWQsIHRydWUpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0XHRcdFx0XHQgICAgICAgdm9pZCAqYnVmKVxuQEAgLTEyNjYsMTMgKzEyNjMsMTYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2RlbGV0ZV9yZXNwICpmbG93cmluZ19kZWxldGVfcmVzcDtcbiBcdHUxNiBzdGF0dXM7XG4gXHR1MTYgZmxvd2lkO1xuK1x0dTE2IGZsb3dfcmluZ19pZDtcbiBcbiBcdGZsb3dyaW5nX2RlbGV0ZV9yZXNwID0gKHN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKilidWY7XG4gXG4tXHRmbG93aWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19kZWxldGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbi1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuK1x0Zmxvd19yaW5nX2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4gXHRzdGF0dXMgPSAgbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLnN0YXR1cyk7XG4gXG4rXHRpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCBcdTAwMjZmbG93aWQpKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRpZiAoc3RhdHVzKSB7XG4gXHRcdGJwaHlfZXJyKGRydnIsIFwiRmxvd3JpbmcgZGVsZXRpb24gZmFpbGVkLCBjb2RlICVkXFxuXCIsIHN0YXR1cyk7XG4gXHRcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtXHUwMDNlZmxvdywgZmxvd2lkKTtcbkBAIC0xMjg0LDcgKzEyODQsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXHUwMDNlZHJ2cjtcbkBAIC0xMzMzLDcgKzEzMzIsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIFx0fVxuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRcdFx0XHQgICAgc3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmcpXG4ge1xuQEAgLTEzNjUsNyArMTM2Myw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0Z290byBhZ2FpbjtcbiB9XG4gXG4tXG4gaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfYnVzICpidXNfaWYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbkBAIC0xMzk3LDcgKzEzOTQsNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VwZDtcbkBAIC0xNjEzLDcgKzE2MDksNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuIFx0aWYgKCFtc2didWYtXHUwMDNlZmxvdylcbiBcdFx0Z290byBmYWlsO1xuIFxuLVxuIFx0YnJjbWZfZGJnKE1TR0JVRiwgXCJGZWVkaW5nIGJ1ZmZlcnMsIHJ4IGRhdGEgJWQsIHJ4IGV2ZW50ICVkLCByeCBpb2N0bCByZXNwICVkXFxuXCIsXG4gXHRcdCAgbXNnYnVmLVx1MDAzZW1heF9yeGJ1ZnBvc3QsIG1zZ2J1Zi1cdTAwM2VtYXhfZXZlbnRidWYsXG4gXHRcdCAgbXNnYnVmLVx1MDAzZW1heF9pb2N0bHJlc3BidWYpO1xuQEAgLTE2NTMsNyArMTY0OCw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4gXHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG4tXG4gdm9pZCBicmNtZl9wcm90b19tc2didWZfZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4ge1xuIFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTY6MzQuMTc1MzgwNzU1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE3ODgzODQ5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXTEFOIERyaXZlciBQYXRjaCBmb3IgVmlydHVhbGl6YXRpb24gRmVhc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGBicmNtZm1hY2Ag4oCTIHNwZWNpZmljYWxseSwgaW4gYG1zZ2J1Zi5jYC4gSXQncyBpbnRyb2R1Y2luZyBgYnJjbWZfbXNnYnVmX2dldF9mbG93aWRgIHRvIHZhbGlkYXRlIGBmbG93X3JpbmdfaWRgIGJlZm9yZSBjYWxjdWxhdGluZyBgZmxvd2lkYC4gU21hcnQgbW92ZSwgcHJldmVudGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyBvciBhbiBpbnZhbGlkIGZsb3dpZCBzaXR1YXRpb24gd2l0aGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyLiBXZSdyZSByZXBsYWNpbmcgdGhlIGRpcmVjdCBjYWxjdWxhdGlvbiB3aXRoIGEgc2FmZXIgY2hlY2sgdXNpbmcgdGhlIG5ldyBmdW5jdGlvbi4gR29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGFsd2F5cyBhcHByZWNpYXRlZC5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcywgY2FuIEkgcmVhc29uYWJseSB0ZXN0IHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gUUVNVSBpcyBteSBnby10bywgb2YgY291cnNlLiBUaGlzIGBicmNtZm1hY2AgZHJpdmVyIHN1cHBvcnRzIFNESU8sIFVTQiwgYW5kIFBDSUUuIFNpbmNlIEkgY2FuIHdvcmsgd2l0aCBVU0IgZGV2aWNlcyBpbiBRRU1VLCBlaXRoZXIgdGhyb3VnaCBwYXNzdGhyb3VnaCBvciBldmVuIGR1bW15IFVTQiBkZXZpY2VzIOKAkyBsaWtlIHdoYXQgc3l6a2FsbGVyIHVzZXMgZm9yIGZ1enppbmcg4oCTIHRoYXQncyBhIHByb21pc2luZyBhdmVudWUuXG5cbk15IGh1bmNoIGlzIHRoYXQgZnV6emluZyBpcyB0aGUgYmVzdCBhcHByb2FjaC4gU3l6a2FsbGVyIGhhcyBhIFVTQiBmdXp6ZXIgd2hpY2ggaXMgZ3JlYXQuIFNvLCBJIG5lZWQgdG8gY2hlY2sgaWYgU3l6a2FsbGVyIGFscmVhZHkgdGFyZ2V0cyBicmNtZm1hYyBvdmVyIFVTQi4gU3BlY2lmaWNhbGx5LCBsZXQncyBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGl0IHJlZ2lzdGVycyBhIFVTQiBkcml2ZXIuIElmIGl0IGRvZXMsIGFuZCBTeXprYWxsZXIgaXMgaW5kZWVkIGhpdHRpbmcgaXQsIHRoZW4gdGhpcyBwYXRjaCBpcyBjZXJ0YWlubHkgdGVzdGFibGUgd2l0aGluIG15IGN1cnJlbnQgc2V0dXAuIElmIG5vdCwgSSBtYXkgaGF2ZSB0byBmaWd1cmUgb3V0IGEgbmV3IFVTQiBzZXR1cCBvciBhdHRlbXB0IFNESU8uIFBDSUUgaXMgcHJvYmFibHkgb3V0IG9mIHRoZSBxdWVzdGlvbiBmb3IgdGhpcyBxdWljayB0ZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Mzk3LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTY6NDEuMzU0MjIyMTMyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Nzc0ODYwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl91c2JfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTE2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX2J1c19vcHMgYnJjbWZfdXNiX2J1c19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTE3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTE3NjpzdGF0aWMgdm9pZCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTE3Ny1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqZndyZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTIyND1icmNtZl91c2JfcHJlcGFyZV9md19yZXF1ZXN0KHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMjQ0OnN0YXRpYyBpbnQgYnJjbWZfdXNiX3Byb2JlX2NiKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI0NS1cXHRcXHRcXHQgICAgICBlbnVtIGJyY21mX2Z3dmVuZG9yIGZ3dmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMDgtXFx0LyogcmVxdWVzdCBmaXJtd2FyZSBoZXJlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEzMDk6XFx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMxMC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTM0ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEzNDU6YnJjbWZfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE0NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE0NDY6XFx0cmV0ID0gYnJjbWZfdXNiX3Byb2JlX2NiKGRldmluZm8sIGlkLVxcdTAwM2Vkcml2ZXJfaW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE0NDctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTE0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTI3OlxcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoXFx1MDAyNnVzYi1cXHUwMDNlZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjgtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTU2OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYnJjbWZfdXNiZHJ2ciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU2OS1cXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTcwOlxcdC5wcm9iZSA9IGJyY21mX3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU3MS1cXHQuZGlzY29ubmVjdCA9IGJyY21mX3VzYl9kaXNjb25uZWN0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNzo1Njo0MS41MjE5NzU4NTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTM1OTY0ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVTQiBEcml2ZXIgRnV6emluZzogQSBRdWljayBNZW50YWwgQ2hlY2tsaXN0KipcblxuT2theSwgc28gU3l6a2FsbGVyJ3MgZ290IHRoYXQgZHVtbXkgVVNCIGZ1enplciwgYW5kIHRoZSBmaXJzdCBzdGVwIGlzIGFsd2F5cyByZWdpc3RlcmluZyB0aGUgVVNCIGRyaXZlci4gQ2xhc3NpYy4gQnV0IHRoZW4gdGhlIHRob3VnaHQgaGl0cyBtZTogSSBuZWVkIHRvIHZlcmlmeSBob3cgYG1zZ2J1Zi5jYCBmYWN0b3JzIGluLiBJcyBpdCBzb21ldGhpbmcgc3BlY2lmaWMgdG8gdGhlIFBDSWUgYnVzLCBvciBkb2VzIHRoZSBVU0IgZHJpdmVyIGVuZCB1cCB1dGlsaXppbmcgaXQ/IFRoYXQncyB0aGUgcXVlc3Rpb24uIEkgbmVlZCB0byBnZXQgdGhpcyBzdHJhaWdodCBpZiBJJ20gZ29pbmcgdG8gZ2V0IHRoaXMgZnV6emluZyB0YXNrIG9mZiB0aGUgZ3JvdW5kLiBBbHJpZ2h0LCBsZXQncyBkcmlsbCBkb3duIGFuZCBzZWUgaG93IGBtc2didWYuY2AgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuIEdvdHRhIGNsYXJpZnkgdGhpcyB0byBlbnN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzNDEsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNzo1Njo0Ni40NTc5NDQzMzVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0NzI3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xNTE4PXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9kZWJ1Z2ZzX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1MjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE1MjM6aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTUyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmg9MzI9dm9pZCBicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIHUxNiBmbG93aWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozMzppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzQtdm9pZCBicmNtZl9wcm90b19tc2didWZfZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zNS0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozNjpzdGF0aWMgaW5saW5lIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oLTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTIwPWludCBicmNtZl9wcm90b19hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM1LVxcdH0gZWxzZSBpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjM2OlxcdFxcdGlmIChicmNtZl9wcm90b19tc2didWZfYXR0YWNoKGRydnIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM3LVxcdFxcdFxcdGdvdG8gZmFpbDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTY6NDYuNTAyNDIzNTc0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM0MTIzMzIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgUHJvdG9jb2wgVHlwZSBmb3IgTWVzc2FnZSBCdWZmZXIgQXR0YWNobWVudCoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIHF1ZXN0aW9uIGlzICppZiogYSBzcGVjaWZpYyBzdHJ1Y3R1cmUsIGBkcnZyYCwgaXMgYXR0YWNoZWQgd2hlbiB0aGUgcHJvdG9jb2wgdHlwZSBpcyBzZXQgdG8gYEJSQ01GX1BST1RPX01TR0JVRmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYGRydnItXHUwMDNlYnVzX2lmYCBhbmQgaXRzIGBwcm90b190eXBlYCBmaWVsZC4gSXQgc2VlbXMgdGhhdCB0aGlzIGF0dGFjaG1lbnQgaXMgY29uZGl0aW9uYWxseSBkZXBlbmRlbnQgb24gdGhhdCBwcm90b2NvbCB0eXBlLiBNYWtlcyBzZW5zZS4gSSdtIHVzZWQgdG8gc2VlaW5nIHNpbWlsYXIgc3RydWN0dXJlcyB3aGVyZSBkaWZmZXJlbnQgdW5kZXJseWluZyBidXMgaW50ZXJmYWNlcyBkaWN0YXRlIGhvdyBkYXRhIGlzIGhhbmRsZWQuXG5cblRoZSBuZXh0IG9idmlvdXMgc3RlcCBpcyB0byBiYWNrdHJhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGljaCogYnVzZXMgYXJlIGNvbmZpZ3VyaW5nIHRoZSBgcHJvdG9fdHlwZWAgdG8gYEJSQ01GX1BST1RPX01TR0JVRmAuIFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIHNoZWQgbGlnaHQgb24gd2hhdCBraW5kIG9mIHNpdHVhdGlvbnMgb3IgaGFyZHdhcmUgY29udGV4dHMgdGhpcyBhdHRhY2htZW50IGlzIHJlbGV2YW50IGZvci4gS25vd2luZyB3aGljaCBidXNlcyBkbyAqbm90KiB1c2UgdGhpcyBzcGVjaWZpYyBwcm90b2NvbCwgYW5kIHdoeSwgY291bGQgYmUgZXZlbiBtb3JlIGluc2lnaHRmdWwuIFRoaXMgaGVscHMgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkZXNpZ24gYW5kIHBvdGVudGlhbGx5IHNwb3QgYW55IHZ1bG5lcmFiaWxpdGllcyBvciBpbmVmZmljaWVuY2llcy4gSSdsbCBuZWVkIHRvIHRyYWNlIHRocm91Z2ggdGhlIGNvZGUgYW5kIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXJlIHRoYXQgdmFyaWFibGUgaXMgYmVpbmcgc2V0LCBhbmQgaW4gd2hhdCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI2NSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU2OjUwLjg0MzY1OTgxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjMzNTMzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUkNNRl9QUk9UT19NU0dCVUZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg9NTE9ZW51bSBicmNtZl9idXNfcHJvdG9jb2xfdHlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTUyLVxcdEJSQ01GX1BST1RPX0JDREMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjUzOlxcdEJSQ01GX1BST1RPX01TR0JVRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC01NC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDQzPWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUxOS1cXHRidXMtXFx1MDAzZW9wcyA9IFxcdTAwMjZicmNtZl9wY2llX2J1c19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTIwOlxcdGJ1cy1cXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MjEtXFx0YnVzLVxcdTAwM2VjaGlwID0gZGV2aW5mby1cXHUwMDNlY29yZWlkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9MjA9aW50IGJyY21mX3Byb3RvX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzQtXFx0XFx0XFx0Z290byBmYWlsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjM1OlxcdH0gZWxzZSBpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM2LVxcdFxcdGlmIChicmNtZl9wcm90b19tc2didWZfYXR0YWNoKGRydnIpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9NTk9dm9pZCBicmNtZl9wcm90b19kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTY1LVxcdFxcdFxcdGJyY21mX3Byb3RvX2JjZGNfZGV0YWNoKGRydnIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjY2OlxcdFxcdGVsc2UgaWYgKGRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19NU0dCVUYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtNjctXFx0XFx0XFx0YnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChkcnZyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTY6NTAuODkwMDAwMzk3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyNTMzMTY4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgQlJDTUZfUFJPVE9fTVNHQlVGYCBBc3NpZ25tZW50KipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgQlJDTUZfUFJPVE9fTVNHQlVGYCBpcyBiZWluZyBhc3NpZ25lZCAqc3BlY2lmaWNhbGx5KiBpbiBgcGNpZS5jYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgaXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgd2FudCB0byBicm9hZGVuIHRoZSBzY29wZSBvZiBteSBpbnZlc3RpZ2F0aW9uLiBMZXQncyBzZWUgaWYgdGhpcyBpcyB0aGUgKm9ubHkqIHBsYWNlIGl0J3MgYmVpbmcgc2V0LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGViYXNlLiBTcGVjaWZpY2FsbHksIHRoZSBmaWxlIHBhdGggYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmNgIGhhcyB0aGF0IGxpbmU6IGBidXMtXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtgLiBOb3cgSSdtIHdvbmRlcmluZywgc2luY2UgaXQncyB0aGUgb25seSBvbmUgSSd2ZSBzZWVuIHNvIGZhciwgd2hhdCBhYm91dCBgdXNiLmNgPyBXaGF0IGRvZXMgKml0KiBkbyB3aXRoIHRoZSBgcHJvdG9fdHlwZWAgdmFyaWFibGU/IFRpbWUgdG8gZGlnIGluIHRoZXJlIGFuZCBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzc5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU2OjU1LjExNTMzNDgwMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzNzc2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHJvdG9fdHlwZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTEyNDQ9c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNjktXFx0YnVzLVxcdTAwM2VvcHMgPSBcXHUwMDI2YnJjbWZfdXNiX2J1c19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNzA6XFx0YnVzLVxcdTAwM2Vwcm90b190eXBlID0gQlJDTUZfUFJPVE9fQkNEQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI3MS1cXHRidXMtXFx1MDAzZWZ3dmlkID0gZnd2aWQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU2OjU1LjE1OTcyMjEzMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA4NzUzNzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIEJyb2FkY29tIEZpcm13YXJlIFByb3RvY29sIFVzYWdlKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIHNvLCBmcm9tIHRoZSBjb2RlIEkgd2FzIGp1c3QgcmV2aWV3aW5nLCBgdXNiLmNgIGV4cGxpY2l0bHkgdXNlcyBgQlJDTUZfUFJPVE9fQkNEQ2AuIFRoYXQncyBub3QgdW5leHBlY3RlZDsgQkNEQyBpcyBhIGNvbW1vbiBjaG9pY2UgZm9yIFVTQi1iYXNlZCBCcm9hZGNvbSBXaUZpIGFkYXB0ZXJzLCByaWdodD8gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBTRElPIGRyaXZlciwgYHNkaW8uY2AsIGlzIGFsc28gZW1wbG95aW5nIHRoZSBCQ0RDIHByb3RvY29sLiBMb2dpY2FsbHksIGl0J3MgYSBzdHJvbmcgcG9zc2liaWxpdHkuIEl0J3Mgb2Z0ZW4gdXNlZCB3aGVyZSB3ZSBuZWVkIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgYW5kIGNvbW1vbmFsaXR5LiBCdXQgbGV0J3Mgbm90IGFzc3VtZSwgbGV0J3MgY29uZmlybSBpdCBkZWZpbml0aXZlbHkuIEkgc2hvdWxkIHByb2JhYmx5IGdvIGFuZCBkb3VibGUtY2hlY2sgdGhhdCBgc2Rpby5jYCBmaWxlIGFuZCBzZWUgaWYgdGhhdCdzIHRoZSBjYXNlLiBJdCdzIGltcG9ydGFudCB0byBoYXZlIGEgY2xlYXIgbWVudGFsIG1vZGVsIG9mIHRoZSBwcm90b2NvbCB1c2FnZSBhY3Jvc3MgdGhlc2UgZGlmZmVyZW50IGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTQxLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTY6NTguNTY4NDc5ODU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzYxNzg5MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHJvdG9fdHlwZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNzo1Njo1OC42MTIxMDQ0NTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyMjc4MTE3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNESU8gSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFNESU8gYnVzIHByb3RvY29sIGlzIGJlaW5nIGhhbmRsZWQgaGVyZS4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBzZGlvLmNgLiBNeSBwcmltYXJ5IGludGVyZXN0IGF0IHRoaXMgbW9tZW50IGlzIHRvIHBpbnBvaW50IGhvdyB0aGUgYGJ1cy1cdTAwM2Vwcm90b190eXBlYCB2YXJpYWJsZSBpcyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgY29kZS4gVGhpcyB3aWxsIHRlbGwgbWUgd2hhdCBzcGVjaWZpYyBTRElPIHByb3RvY29sIGZlYXR1cmVzIGFyZSBiZWluZyBpbXBsZW1lbnRlZC4gVW5kZXJzdGFuZGluZyB0aGUgYHByb3RvX3R5cGVgIGFzc2lnbm1lbnQgYW5kIHVzYWdlIGlzIGNyaXRpY2FsIHRvIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0ZSBhbmQgY2FwYWJpbGl0aWVzIG9mIHRoZSBkcml2ZXIgd2l0aCByZXNwZWN0IHRvIFNESU8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjQ3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTc6MDEuNDM0ODg4MDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTYyMDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb3RvX3R5cGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM9MTA0MT1zdGF0aWMgaW50IGJyY21mX29wc19zZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmMtMTA4Ny1cXHRidXNfaWYtXFx1MDAzZWJ1c19wcml2LnNkaW8gPSBzZGlvZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzoxMDg4OlxcdGJ1c19pZi1cXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX0JDREM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jLTEwODktXFx0YnVzX2lmLVxcdTAwM2Vmd3ZpZCA9IGlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaD0xNDI9c3RydWN0IGJyY21mX2J1c19zdGF0cyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMTUwLSAqIEBidXNfcHJpdjogcG9pbnRlciB0byBwcml2YXRlIGJ1cyBkZXZpY2UuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjE1MTogKiBAcHJvdG9fdHlwZTogcHJvdG9jb2wgdHlwZSwgYmNkYyBvciBtc2didWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMTUyLSAqIEBkZXY6IGRldmljZSBwb2ludGVyIG9mIGJ1cyBkZXZpY2UuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg9MTY2PXN0cnVjdCBicmNtZl9idXMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTE3MS1cXHR9IGJ1c19wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaDoxNzI6XFx0ZW51bSBicmNtZl9idXNfcHJvdG9jb2xfdHlwZSBwcm90b190eXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0xNzMtXFx0c3RydWN0IGRldmljZSAqZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDQzPWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUxOS1cXHRidXMtXFx1MDAzZW9wcyA9IFxcdTAwMjZicmNtZl9wY2llX2J1c19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTIwOlxcdGJ1cy1cXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MjEtXFx0YnVzLVxcdTAwM2VjaGlwID0gZGV2aW5mby1cXHUwMDNlY29yZWlkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9MjA9aW50IGJyY21mX3Byb3RvX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6MzI6XFx0aWYgKGRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19CQ0RDKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzMtXFx0XFx0aWYgKGJyY21mX3Byb3RvX2JjZGNfYXR0YWNoKGRydnIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM0LVxcdFxcdFxcdGdvdG8gZmFpbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYzozNTpcXHR9IGVsc2UgaWYgKGRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19NU0dCVUYpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zNi1cXHRcXHRpZiAoYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChkcnZyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM5LVxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJVbnN1cHBvcnRlZCBwcm90byB0eXBlICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjQwOlxcdFxcdFxcdCBkcnZyLVxcdTAwM2VidXNfaWYtXFx1MDAzZXByb3RvX3R5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTQxLVxcdFxcdGdvdG8gZmFpbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTU5PXZvaWQgYnJjbWZfcHJvdG9fZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy02My1cXHRpZiAoZHJ2ci1cXHUwMDNlcHJvdG8pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYzo2NDpcXHRcXHRpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX0JDREMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtNjUtXFx0XFx0XFx0YnJjbWZfcHJvdG9fYmNkY19kZXRhY2goZHJ2cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6NjY6XFx0XFx0ZWxzZSBpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy02Ny1cXHRcXHRcXHRicmNtZl9wcm90b19tc2didWZfZGV0YWNoKGRydnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTEyNDQ9c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNjktXFx0YnVzLVxcdTAwM2VvcHMgPSBcXHUwMDI2YnJjbWZfdXNiX2J1c19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNzA6XFx0YnVzLVxcdTAwM2Vwcm90b190eXBlID0gQlJDTUZfUFJPVE9fQkNEQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI3MS1cXHRidXMtXFx1MDAzZWZ3dmlkID0gZnd2aWQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU3OjAxLjQ4MDA1NTYzOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzU2NTUwMTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBicmNtZm1hY2AgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIGBCUkNNRl9QUk9UT19NU0dCVUZgLiBJdCBsb29rcyBsaWtlIHRoaXMgaXMgZXhjbHVzaXZlbHkgdXNlZCB3aXRoaW4gYHBjaWUuY2AuIEFuZCBmdXJ0aGVyLCB0aGlzIGBtc2didWYuY2AgZmlsZSBpcyBvbmx5IGVuZ2FnZWQgd2hlbiB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIGEgUENJZSBkZXZpY2UsIHdoaWNoIG1ha2VzIGl0IHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy5cblxuVGhlIHRhc2sgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgXCJXb3J0aEZ1enppbmdcIi4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgdGVsbHMgbWUgdG8gcmV0dXJuIGBmYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyB0aGUga2V5IHF1ZXN0aW9uOiBkb2VzIGBicmNtZm1hY2AgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnk/XG5cblllcywgYWJzb2x1dGVseS4gYGJyY21mbWFjYCBpcyBhIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFRoZSBQQ0llIHZhcmlhbnQsIHRoZSBvbmUgdGhhdCdzIHJlbGV2YW50IGhlcmUsIGRlcGVuZHMgb24gYW4gYWN0dWFsIEJyb2FkY29tIFdpLUZpIGNoaXAsIHNvbWV0aGluZyBsaWtlIGEgQkNNNDM2MDIgb3IgQkNNNDM1MCwgY29ubmVjdGVkIHZpYSBQQ0llLiBRRU1VLCBhcyBmYXIgYXMgSSB1bmRlcnN0YW5kLCBkb2Vzbid0IGVtdWxhdGUgdGhlc2UgQnJvYWRjb20gV2ktRmkgUENJZSBjYXJkcy4gVGhlcmVmb3JlLCBJIGNhbid0IGV2ZW4gZ2V0IHN0YXJ0ZWQgZnV6emluZyB0aGlzIHNwZWNpZmljIGludGVyZmFjZSB3aXRoIGEgdmlydHVhbCBtYWNoaW5lLCBhbmQgUUVNVSB3b24ndCBhbGxvdyBtZSB0by5cblxuU3l6a2FsbGVyIGNhbid0IGVmZmVjdGl2ZWx5IGZ1enogdGhlIFBDSWUgaW50ZXJmYWNlIG9mIHRoaXMgZHJpdmVyIGJlY2F1c2UgaXQgbGFja3MgdGhlIG5lY2Vzc2FyeSBjYXBhYmlsaXRpZXMgdG8gZW11bGF0ZSB0aGUgc3BlY2lmaWMgcmVnaXN0ZXJzIGFuZCBETUEgcmluZ3Mgb2YgdGhpcyBCcm9hZGNvbSBXaS1GaSBjaGlwLiBXaGlsZSBTeXprYWxsZXIgaGFzIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCB0aGV5IGFyZSBtb3N0bHkgZm9yIGdlbmVyaWMgZGV2aWNlcyBvciB2aXJ0aW8sIGFuZCBub3QgY29tcGxleCB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgTUFDcy5cblxuV2FpdCBhIG1vbWVudCwgSSBuZWVkIHRvIGNoZWNrIG15IGZhY3RzIGhlcmUuIFN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIGJ1dCBpdHMgY2FwYWJpbGl0aWVzIGFyZSBsaW1pdGVkIHRvIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgQkFScy4gVGhpcyBkb2Vzbid0IGdvIGRlZXAgZW5vdWdoIGludG8gZW11bGF0aW5nIGRldmljZSBmaXJtd2FyZSBvciBETUEgcmluZ3MgdG8gcmVhY2ggdGhlIHBvaW50IHdoZXJlIHRoZSBgbXNnYnVmLmNgIGZpbGUgcHJvY2Vzc2VzIG1lc3NhZ2VzIGZyb20gdGhlIGZpcm13YXJlLlxuXG5JIHJlYWxseSBuZWVkIHRvIGNvbmZpcm0gaWYgYG1zZ2J1Zi5jYCBwcm9jZXNzZXMgRE1BIHJpbmdzIGF0IGFsbC4gSWYgaXQgZG9lcywgdGhlbiB0aGUgcHJvYmxlbSBpcyBldmVuIHdvcnNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDEzMiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNzo1NzowOC44MzY2MDgzMzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODE1NDk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz04NzM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6ODc0OmJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04NzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEyODc9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzIyLVxcdFxcdGJyY21mX2RiZyhNU0dCVUYsIFxcXCJNU0dCVUZfVFlQRV9UWF9TVEFUVVNcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzIzOlxcdFxcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKG1zZ2J1ZiwgYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMyNC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTc6MDguOTg0NzY3ODIxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzAwMjA5MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IGNvZGUgZmxvdywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBicmNtZl9tc2didWYgTWVzc2FnZSBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYCBmdW5jdGlvbiwgYW5kIEknbSBpbW1lZGlhdGVseSB0cmFjaW5nIGl0cyBjYWxsIHBhdGggdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLiBJdCdzIGNsZWFyIHRoYXQgaXQncyBkZWVwbHkgaW52b2x2ZWQgaW4gdGhlIGhhbmRsaW5nIG9mIG1lc3NhZ2VzIHdpdGhpbiB0aGUgYnJjbWYgZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgbWVzc2FnZXMgdGhhdCBhcmUgYmVpbmcgKnJlY2VpdmVkKi5cblxuVGhlIGNhbGwgc3RhY2sgY29uZmlybXMgbXkgc3VzcGljaW9uOiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAgaXMgKnRyaWdnZXJlZCogZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLiBUaGlzIGBwcm9jZXNzX3J4YCBmdW5jdGlvbiBpcyBsaWtlbHkgdGhlIGNlbnRyYWwgcHJvY2Vzc2luZyBwb2ludCBmb3IgaW5jb21pbmcgZGF0YS4gSXQncyB0aGUgXCJyZWNlaXZlclwiIGluIHRoaXMgc3BlY2lmaWMgc3Vic3lzdGVtLlxuXG5BbmQgdGhlIGV2ZW4gYmlnZ2VyIHBpY3R1cmUgcmV2ZWFscyB0aGF0IGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAsIHRoZSBjb3JlIFwicmVjZWl2ZXJcIiBmdW5jdGlvbiwgaXMgaXRzZWxmIGludm9rZWQgZnJvbSBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgLiBBaCwgc28gYHJ4X3RyaWdnZXJgIGlzIHdoYXQncyBraWNraW5nIG9mZiB0aGUgd2hvbGUgaW5ib3VuZCBtZXNzYWdlIGhhbmRsaW5nIHByb2Nlc3MuIFRoaXMgdHJpZ2dlciBmdW5jdGlvbiBwcm9iYWJseSBtYW5hZ2VzIHRoZSBsb3dlci1sZXZlbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgc2lnbmFscyB0aGUgYXZhaWxhYmlsaXR5IG9mIG5ldyBkYXRhLCB0aGVuIHRoaXMgaW5jb21pbmcgZGF0YSBpcyB1bHRpbWF0ZWx5ICpwcm9jZXNzZWQqIGJ5IGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYC5cblxuU28sIGluIGVzc2VuY2UsIEkgdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2U6IGByeF90cmlnZ2VyYCBpbml0aWF0ZXMgdGhlIHByb2Nlc3MsIGBwcm9jZXNzX3J4YCByZWNlaXZlcy9tYW5hZ2VzIHRoZSBkYXRhLCBhbmQgZmluYWxseSwgYHByb2Nlc3NfbXNndHlwZWAgaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBzcGVjaWZpYyAqdHlwZSogb2YgaW5jb21pbmcgbWVzc2FnZS4gVGhpcyBpcyBjcml0aWNhbCBmb3IgZGlzdGluZ3Vpc2hpbmcgZGlmZmVyZW50IGNvbnRyb2wsIGRhdGEsIGFuZCBvdGhlciB0eXBlcyBvZiBtZXNzYWdlcy4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93IEkgY2FuIGRpdmUgZGVlcGVyIGludG8gZWFjaCBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgbWVzc2FnZSBwYXJzaW5nIGFuZCBoYW5kbGluZyBpcyBkb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM0OCwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU3OjEzLjIxNDc5MzY2NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1MzEzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMzNT1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM2NjppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaD0yNj1zdHJ1Y3QgbXNnYnVmX2J1Zl9hZGRyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmg6MzE6aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oLTMyLXZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9OTQxPXN0YXRpYyBpcnFyZXR1cm5fdCBicmNtZl9wY2llX2lzcl90aHJlYWQoaW50IGlycSwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NTUtXFx0XFx0XFx0aWYgKGRldmluZm8tXFx1MDAzZXN0YXRlID09IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzo5NTY6XFx0XFx0XFx0XFx0YnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NTctXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmRldmluZm8tXFx1MDAzZXBkZXYtXFx1MDAzZWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU3OjEzLjI1ODMzMTI4NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTAzMzg5NDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgQW5hbHlzaXMqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIHNpdHVhdGlvbi4gVGhpcyBjb2RlIEknbSBsb29raW5nIGF0LCB0aGUgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCBmdW5jdGlvbiwgaXMgY2FsbGVkIGZyb20gYGJyY21mX3BjaWVfaXNyX3RocmVhZGAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgUENJZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQnJvYWRjb20gV2ktRmkgZHJpdmVyLiBHaXZlbiBRRU1VJ3MgbGltaXRhdGlvbnMgYW5kIHN5emthbGxlcidzIGN1cnJlbnQgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBJIGNhbid0IHNlZSBhIHdheSB0byB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuIFRoZSBQQ0kgZnV6emVyIGNhbid0IG1lYW5pbmdmdWxseSBpbnRlcmFjdCB3aXRoIHRoZSBETUEgcmluZ3MsIGludGVycnVwdCBoYW5kbGluZywgb3IgZXZlbiBnZXQgdGhlIGRldmljZSBpbnRvIHRoZSByZXF1aXJlZCBgQlJDTUZNQUNfUENJRV9TVEFURV9VUGAgc3RhdGUgYW5kIHNldCB1cCB0aGUgbmVjZXNzYXJ5IERNQSByaW5ncyBhbmQgZmlybXdhcmUgdG8gcmVhY2ggdGhpcyBmdW5jdGlvbi5cblxuSSBkaWQgYnJpZWZseSB3b25kZXIgaWYgbWFjODAyMTFfaHdzaW0gbWlnaHQgYmUgYSBiYWNrZG9vciwgYnV0IG5vLCB0aGF0J3MgYSBzb2Z0d2FyZSBzaW11bGF0b3IgZm9yIG1hYzgwMjExLCBhbmQgYGJyY21mbWFjYCBpcyBhIEZ1bGxNQUMgZHJpdmVyIHRoYXQgdXNlcyBjZmc4MDIxMSBhbmQgaXRzIG93biBmaXJtd2FyZS4gTm8gbHVjayB0aGVyZS4gVGhlcmUncyBubyBrbm93biBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBgYnJjbWZtYWNgIFBDSWUgc2V0dXAsIGVpdGhlci5cblxuTGV0J3MgZG8gYSBzYW5pdHkgY2hlY2suIENhbiBgYnJjbWZtYWNgIGJlIGZ1enplZCBhdCBhbGw/IFdlbGwsIHN5emthbGxlciBkb2VzIGhhdmUgYSBVU0IgZnV6emVyLCBhbmQgdGhhdCB3b3VsZCBnaXZlIHVzIHNvbWUgY292ZXJhZ2Ugb2YgYGJyY21mbWFjYC4gSG93ZXZlciwgVVNCIHVzZXMgYEJSQ01GX1BST1RPX0JDRENgLCBhbmQgd2UncmUgbG9va2luZyBhdCBgbXNnYnVmLmNgLCB3aGljaCBpcyBkaXJlY3RseSB0aWVkIHRvIGBCUkNNRl9QUk9UT19NU0dCVUZgLiBUaGUgVVNCIHBhdGggd29uJ3QgdG91Y2ggdGhpcyBjb2RlLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBtc2didWYuY2AsIHdoaWNoIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgYHBjaWUuY2AuXG5cblRvIHNvbGlkaWZ5IHRoaXMsIGxldCdzIHZlcmlmeSB0aGF0IGBCUkNNRl9QUk9UT19NU0dCVUZgIGlzIG5vdCB1c2VkIGVsc2V3aGVyZS4gVGhhdCB3aWxsIGNlbWVudCB0aGUgY29uY2x1c2lvbiB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGFic29sdXRlbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY0MDEsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTc6MjAuMzYxNzIzNDkzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA1NTAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUkNNRl9QUk9UT19NU0dCVUZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg9NTE9ZW51bSBicmNtZl9idXNfcHJvdG9jb2xfdHlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTUyLVxcdEJSQ01GX1BST1RPX0JDREMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjUzOlxcdEJSQ01GX1BST1RPX01TR0JVRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC01NC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDQzPWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUxOS1cXHRidXMtXFx1MDAzZW9wcyA9IFxcdTAwMjZicmNtZl9wY2llX2J1c19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTIwOlxcdGJ1cy1cXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MjEtXFx0YnVzLVxcdTAwM2VjaGlwID0gZGV2aW5mby1cXHUwMDNlY29yZWlkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9MjA9aW50IGJyY21mX3Byb3RvX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzQtXFx0XFx0XFx0Z290byBmYWlsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjM1OlxcdH0gZWxzZSBpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM2LVxcdFxcdGlmIChicmNtZl9wcm90b19tc2didWZfYXR0YWNoKGRydnIpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9NTk9dm9pZCBicmNtZl9wcm90b19kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTY1LVxcdFxcdFxcdGJyY21mX3Byb3RvX2JjZGNfZGV0YWNoKGRydnIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjY2OlxcdFxcdGVsc2UgaWYgKGRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19NU0dCVUYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtNjctXFx0XFx0XFx0YnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChkcnZyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTc6MjAuNDEwNzg0NjMyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNTMwMzY4NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgQnJvYWRjb20gV2ktRmkgUENJZSBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0J3MgY2xlYXIgdGhhdCB0aGUgY29kZSBzZXR0aW5nIGBCUkNNRl9QUk9UT19NU0dCVUZgIGlzICpvbmx5KiBmb3VuZCB3aXRoaW4gYHBjaWUuY2AuIEFuZCB0aGF0J3Mgc3BlY2lmaWNhbGx5IHRoZSBQQ0llIGRyaXZlciBmb3IgQnJvYWRjb20gV2ktRmkgY2hpcHMuIEhlcmUncyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nOiBRRU1VLCBhcyB3ZSBrbm93LCBkb2Vzbid0IGVtdWxhdGUgQnJvYWRjb20gV2ktRmkgUENJZSBjYXJkcy4gVGhlcmVmb3JlLCBieSBpdHMgbmF0dXJlLCB0aGlzIGNvZGUgcGF0aCBpcyBzaW1wbHkgaW5hY2Nlc3NpYmxlIHdpdGhpbiBhIHZpcnR1YWxpemVkIFFFTVUgZW52aXJvbm1lbnQuXG5cbk5vdywgcmV2aWV3aW5nIHRoZSBwcm9tcHQncyBleHBsaWNpdCBpbnN0cnVjdGlvbiwgaXQgbmFpbHMgdGhpcyBzY2VuYXJpbzogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5UaGlzIGlzIGEgdGV4dGJvb2sgbWF0Y2guIFRoZSBgYnJjbWZtYWNgIFBDSWUgZHJpdmVyICp1bmVxdWl2b2NhbGx5KiByZXF1aXJlcyBhIHBoeXNpY2FsIEJyb2FkY29tIFdpLUZpIFBDSWUgY2FyZC4gVGhlIGVtdWxhdGlvbiBqdXN0IGlzbid0IHRoZXJlIGluIHN0YW5kYXJkIFFFTVUuIFNvLCBhZnRlciB0aGlzIGFuYWx5c2lzLCBpdCdzIGNsZWFyOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGZ1enppbmcgZWZmb3J0IHdvdWxkIGJlIHVucHJvZHVjdGl2ZSBiZWNhdXNlIGl0IGNhbid0IHJlYWNoIHRoaXMgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwMTgsIk91dHB1dFRva2VucyI6MTMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU3OjI1LjY2MzgyNTUxNFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBtc2didWYuY2AgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKS4gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgZXhjbHVzaXZlbHkgdXNlZCBieSB0aGUgUENJZSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlciAoYHBjaWUuY2ApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgQnJvYWRjb20gV2ktRmkgUENJZSBoYXJkd2FyZSwgYW5kIHN5emthbGxlcidzIFBDSSBmdXp6ZXIgY2Fubm90IGVtdWxhdGUgdGhlIGNvbXBsZXggRE1BIHJpbmdzIGFuZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMgcmVxdWlyZWQgdG8gcmVhY2ggdGhpcyBjb2RlLCBpdCBpcyB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG1zZ2J1Zi5jYCBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlciAoYnJjbWZtYWMpLiBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgTVNHQlVGIHByb3RvY29sLCB3aGljaCBpcyBleGNsdXNpdmVseSB1c2VkIGJ5IHRoZSBQQ0llIGludGVyZmFjZSBvZiB0aGUgZHJpdmVyIChgcGNpZS5jYCkuIFNpbmNlIFFFTVUgZG9lcyBub3QgZW11bGF0ZSBCcm9hZGNvbSBXaS1GaSBQQ0llIGhhcmR3YXJlLCBhbmQgc3l6a2FsbGVyJ3MgUENJIGZ1enplciBjYW5ub3QgZW11bGF0ZSB0aGUgY29tcGxleCBETUEgcmluZ3MgYW5kIGZpcm13YXJlIGludGVyYWN0aW9ucyByZXF1aXJlZCB0byByZWFjaCB0aGlzIGNvZGUsIGl0IGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow7nhjp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 07:25:55 +0000 UTC FinishedAt: 2026-08-03 07:57:26 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA3OjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtc2didWYuY2AgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKS4gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgZXhjbHVzaXZlbHkgdXNlZCBieSB0aGUgUENJZSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlciAoYHBjaWUuY2ApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgQnJvYWRjb20gV2ktRmkgUENJZSBoYXJkd2FyZSwgYW5kIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IERNQSByaW5ncyBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb25zIHJlcXVpcmVkIHRvIHJlYWNoIHRoaXMgY29kZSwgaXQgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDc6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyNjU1MmMyN2EyZDAxNTcyMmU2YzNlNjdiZmFiMTBmZTE1NjVjYzY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwNzo1NjozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbmluZGV4IGJhMWNlMTU1MmUwZjQuLjk1OTY1OWJmZWE5OWUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xuQEAgLTI0LDcgJiM0MzsyNCw2IEBAXG4gI2luY2x1ZGUgXCYjMzQ7YnVzLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDt0cmFjZXBvaW50LmhcJiMzNDtcbiBcbi1cbiAjZGVmaW5lIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVRcdFx0bXNlY3NfdG9famlmZmllcygyMDAwKVxuIFxuICNkZWZpbmUgTVNHQlVGX1RZUEVfR0VOX1NUQVRVU1x0XHRcdDB4MVxuQEAgLTI5MSw3ICYjNDM7MjkwLDYgQEAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMge1xuIFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpO1xuIFxuLVxuIHN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqXG4gYnJjbWZfbXNnYnVmX2luaXRfcGt0aWRzKHUzMiBucl9hcnJheV9lbnRyaWVzLFxuIFx0XHRcdCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pXG5AQCAtMzE0LDcgJiM0MzszMTIsNiBAQCBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsXG4gXHRyZXR1cm4gcGt0aWRzO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50XG4gYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbkBAIC0zNjIsNyAmIzQzOzM1OSw2IEBAIGJyY21mX21zZ2J1Zl9hbGxvY19wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tXG4gc3RhdGljIHN0cnVjdCBza19idWZmICpcbiBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbiBcdFx0ICAgICAgIHUzMiBpZHgpXG5AQCAtMzkwLDcgJiM0MzszODYsNiBAQCBicmNtZl9tc2didWZfZ2V0X3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQgICBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzKVxuQEAgLTQxNiw3ICYjNDM7NDExLDYgQEAgYnJjbWZfbXNnYnVmX3JlbGVhc2VfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0a2ZyZWUocGt0aWRzKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRpZiAobXNnYnVmLVx1MDAzZXJ4X3BrdGlkcylcbkBAIC00MjcsNyAmIzQzOzQyMSw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yZWxlYXNlX3BrdGlkcyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRcdFx0XHRcdCAgIG1zZ2J1Zi1cdTAwM2V0eF9wa3RpZHMpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9pb2N0bChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRcdFx0XHQgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4pXG4ge1xuQEAgLTQ3Myw3ICYjNDM7NDY2LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIGVycjtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRyZXR1cm4gd2FpdF9ldmVudF90aW1lb3V0KG1zZ2J1Zi1cdTAwM2Vpb2N0bF9yZXNwX3dhaXQsXG5AQCAtNDgxLDE0ICYjNDM7NDczLDEyIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRcdFx0XHQgIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWtlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRtc2didWYtXHUwMDNlY3RsX2NvbXBsZXRlZCA9IHRydWU7XG4gXHR3YWtlX3VwKFx1MDAyNm1zZ2J1Zi1cdTAwM2Vpb2N0bF9yZXNwX3dhaXQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCAgIHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKVxuIHtcbkBAIC01MjYsMTQgJiM0Mzs1MTYsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfcXVlcnlfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfc2V0X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0IHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKVxuIHtcbiBcdHJldHVybiBicmNtZl9tc2didWZfcXVlcnlfZGNtZChkcnZyLCBpZmlkeCwgY21kLCBidWYsIGxlbiwgZndlcnIpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9oZHJwdWxsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGJvb2wgZG9fZndzLFxuIFx0XHRcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyY21mX2lmICoqaWZwKVxuIHtcbkBAIC01NjAsNiAmIzQzOzU0OCwyNyBAQCBicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IGZsb3dpZClcbiBcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtXHUwMDNlZmxvdywgZmxvd2lkKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIGJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiYjNDM7XHRcdFx0XHQgICAgdTE2IGZsb3dfcmluZ19pZCwgdTE2ICpmbG93aWQpXG4mIzQzO3tcbiYjNDM7XHR1MzIgaWQgPSBmbG93X3JpbmdfaWQ7XG4mIzQzO1xuJiM0MztcdGlmIChpZCBcdTAwM2MgQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVCkge1xuJiM0MztcdFx0YnBoeV9lcnIobXNnYnVmLVx1MDAzZWRydnIsIFwmIzM0O2ludmFsaWQgZmxvd3JpbmcgaWQgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCBmbG93X3JpbmdfaWQpO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbiYjNDM7XHRpZiAoaWQgXHUwMDNlPSBtc2didWYtXHUwMDNlbWF4X2Zsb3dyaW5ncykge1xuJiM0MztcdFx0YnBoeV9lcnIobXNnYnVmLVx1MDAzZWRydnIsIFwmIzM0O2ludmFsaWQgZmxvd3JpbmcgaWQgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCBmbG93X3JpbmdfaWQpO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0KmZsb3dpZCA9IGlkO1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4gXG4gc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICpcbiBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbkBAIC01NzgsNyAmIzQzOzU4Nyw2IEBAIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0cmV0dXJuIHdvcms7XG4gfVxuIFxuLVxuIHN0YXRpYyB1MzJcbiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRcdFx0XHQgICAgc3RydWN0IGJyY21mX21zZ2J1Zl93b3JrX2l0ZW0gKndvcmspXG5AQCAtNjQ3LDcgJiM0Mzs2NTUsNiBAQCBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRyZXR1cm4gZmxvd2lkO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7XG5AQCAtNjYxLDcgJiM0Mzs2NjgsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbkBAIC02OTQsNyAmIzQzOzcwMCw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGludCBpZmlkeCxcbiBcdHJldHVybiBmbG93aWQ7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdyA9IG1zZ2J1Zi1cdTAwM2VmbG93O1xuQEAgLTc2OCw3ICYjNDM7NzczLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXG4gXHRicmNtZl9jb21tb25yaW5nX3VubG9jayhjb21tb25yaW5nKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG4ge1xuIFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xuQEAgLTc4MSw3ICYjNDM7Nzg1LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG4gXHR9XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXG4gXHRcdFx0XHRcdGJvb2wgZm9yY2UpXG4ge1xuQEAgLTc5Niw3ICYjNDM7Nzk5LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCxcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuQEAgLTgyNCw3ICYjNDM7ODI2LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfcXVldWVfZGF0YShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfY29uZmlndXJlX2FkZHJfbW9kZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRcdFx0XHQgZW51bSBwcm90b19hZGRyX21vZGUgYWRkcl9tb2RlKVxuQEAgLTgzNCw3ICYjNDM7ODM1LDYgQEAgYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0YnJjbWZfZmxvd3JpbmdfY29uZmlndXJlX2FkZHJfbW9kZShtc2didWYtXHUwMDNlZmxvdywgaWZpZHgsIGFkZHJfbW9kZSk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4ge1xuQEAgLTg0Myw3ICYjNDM7ODQzLDYgQEAgYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4gXHRicmNtZl9mbG93cmluZ19kZWxldGVfcGVlcihtc2didWYtXHUwMDNlZmxvdywgaWZpZHgsIHBlZXIpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4ge1xuQEAgLTg1Miw3ICYjNDM7ODUxLDYgQEAgYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbiBcdGJyY21mX2Zsb3dyaW5nX2FkZF90ZGxzX3BlZXIobXNnYnVmLVx1MDAzZWZsb3csIGlmaWR4LCBwZWVyKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiB7XG5AQCAtODcyLDcgJiM0Mzs4NzAsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbkBAIC04ODAsMTcgJiM0Mzs4NzcsMjMgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4gXHRzdHJ1Y3QgbXNnYnVmX3R4X3N0YXR1cyAqdHhfc3RhdHVzO1xuIFx0dTMyIGlkeDtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0dTE2IGZsb3dfcmluZ19pZDtcbiBcdHUxNiBmbG93aWQ7XG4gXG4gXHR0eF9zdGF0dXMgPSAoc3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKilidWY7XG4gXHRpZHggPSBsZTMyX3RvX2NwdSh0eF9zdGF0dXMtXHUwMDNlbXNnLnJlcXVlc3RfaWQpIC0gMTtcbi1cdGZsb3dpZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbi1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuJiM0MztcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbiBcdHNrYiA9IGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQobXNnYnVmLVx1MDAzZWRydnItXHUwMDNlYnVzX2lmLVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgbXNnYnVmLVx1MDAzZXR4X3BrdGlkcywgaWR4KTtcbiBcdGlmICghc2tiKVxuIFx0XHRyZXR1cm47XG4gXG4mIzQzO1x0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXHUwMDI2Zmxvd2lkKSkge1xuJiM0MztcdFx0YnJjbWZfdHhmaW5hbGl6ZShicmNtZl9nZXRfaWZwKG1zZ2J1Zi1cdTAwM2VkcnZyLCB0eF9zdGF0dXMtXHUwMDNlbXNnLmlmaWR4KSxcbiYjNDM7XHRcdFx0XHQgc2tiLCBmYWxzZSk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcbiBcdHNldF9iaXQoZmxvd2lkLCBtc2didWYtXHUwMDNldHhzdGF0dXNfZG9uZV9tYXApO1xuIFx0Y29tbW9ucmluZyA9IG1zZ2J1Zi1cdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcbiBcdGF0b21pY19kZWMoXHUwMDI2Y29tbW9ucmluZy1cdTAwM2VvdXRzdGFuZGluZ190eCk7XG5AQCAtODk5LDcgJiM0Mzs5MDIsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdFx0XHQgc2tiLCB0cnVlKTtcbiB9XG4gXG4tXG4gc3RhdGljIHUzMiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGNvdW50KVxuIHtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXHUwMDNlZHJ2cjtcbkBAIC05NzcsNyAmIzQzOzk3OSw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudClcbiBcdHJldHVybiBpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbkBAIC05OTUsNyAmIzQzOzk5Niw2IEBAIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0fVxuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl91cGRhdGVfcnhidWZwb3N0X2NvdW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IHJ4Y250KVxuIHtcbkBAIC0xMDA1LDcgJiM0MzsxMDA1LDYgQEAgYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXG4gXHRcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcbiB9XG4gXG4tXG4gc3RhdGljIHUzMlxuIGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBib29sIGV2ZW50X2J1ZixcbiBcdFx0XHQgICAgIHUzMiBjb3VudClcbkBAIC0xMDc5LDcgJiM0MzsxMDc4LDYgQEAgYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxuIFx0cmV0dXJuIGk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4ge1xuIFx0dTMyIGNvdW50O1xuQEAgLTEwODksNyAmIzQzOzEwODcsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0bXNnYnVmLVx1MDAzZWN1cl9pb2N0bHJlc3BidWYgJiM0Mzs9IGNvdW50O1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4ge1xuIFx0dTMyIGNvdW50O1xuQEAgLTEwOTksNyAmIzQzOzEwOTYsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRtc2didWYtXHUwMDNlY3VyX2V2ZW50YnVmICYjNDM7PSBjb3VudDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4ge1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cdTAwM2VkcnZyO1xuQEAgLTExNDIsNyAmIzQzOzExMzgsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19ldmVudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdGJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcHJvY2Vzc19yeF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiB7XG5AQCAtMTIzNywxMyAmIzQzOzEyMzIsMTYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICpmbG93cmluZ19jcmVhdGVfcmVzcDtcbiBcdHUxNiBzdGF0dXM7XG4gXHR1MTYgZmxvd2lkO1xuJiM0MztcdHUxNiBmbG93X3JpbmdfaWQ7XG4gXG4gXHRmbG93cmluZ19jcmVhdGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICopYnVmO1xuIFxuLVx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfY3JlYXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4tXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbiYjNDM7XHRmbG93X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbiBcdHN0YXR1cyA9ICBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuc3RhdHVzKTtcbiBcbiYjNDM7XHRpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCBcdTAwMjZmbG93aWQpKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdGlmIChzdGF0dXMpIHtcbiBcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7Rmxvd3JpbmcgY3JlYXRpb24gZmFpbGVkLCBjb2RlICVkXFxuXCYjMzQ7LCBzdGF0dXMpO1xuIFx0XHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcbkBAIC0xMjU3LDcgJiM0MzsxMjU1LDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKG1zZ2J1ZiwgZmxvd2lkLCB0cnVlKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0XHRcdFx0ICAgICAgIHZvaWQgKmJ1ZilcbkBAIC0xMjY2LDEzICYjNDM7MTI2MywxNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdHN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKmZsb3dyaW5nX2RlbGV0ZV9yZXNwO1xuIFx0dTE2IHN0YXR1cztcbiBcdHUxNiBmbG93aWQ7XG4mIzQzO1x0dTE2IGZsb3dfcmluZ19pZDtcbiBcbiBcdGZsb3dyaW5nX2RlbGV0ZV9yZXNwID0gKHN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKilidWY7XG4gXG4tXHRmbG93aWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19kZWxldGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbi1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuJiM0MztcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xuIFx0c3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xuIFxuJiM0MztcdGlmICghYnJjbWZfbXNnYnVmX2dldF9mbG93aWQobXNnYnVmLCBmbG93X3JpbmdfaWQsIFx1MDAyNmZsb3dpZCkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0aWYgKHN0YXR1cykge1xuIFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtGbG93cmluZyBkZWxldGlvbiBmYWlsZWQsIGNvZGUgJWRcXG5cJiMzNDssIHN0YXR1cyk7XG4gXHRcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtXHUwMDNlZmxvdywgZmxvd2lkKTtcbkBAIC0xMjg0LDcgJiM0MzsxMjg0LDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLVx1MDAzZWRydnI7XG5AQCAtMTMzMyw3ICYjNDM7MTMzMiw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4gXHR9XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZylcbiB7XG5AQCAtMTM2NSw3ICYjNDM7MTM2Myw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0Z290byBhZ2FpbjtcbiB9XG4gXG4tXG4gaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfYnVzICpidXNfaWYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbkBAIC0xMzk3LDcgJiM0MzsxMzk0LDYgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1cbiB2b2lkIGJyY21mX21zZ2J1Zl9kZWxldGVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgdTE2IGZsb3dpZClcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYgPSAoc3RydWN0IGJyY21mX21zZ2J1ZiAqKWRydnItXHUwMDNlcHJvdG8tXHUwMDNlcGQ7XG5AQCAtMTYxMyw3ICYjNDM7MTYwOSw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4gXHRpZiAoIW1zZ2J1Zi1cdTAwM2VmbG93KVxuIFx0XHRnb3RvIGZhaWw7XG4gXG4tXG4gXHRicmNtZl9kYmcoTVNHQlVGLCBcJiMzNDtGZWVkaW5nIGJ1ZmZlcnMsIHJ4IGRhdGEgJWQsIHJ4IGV2ZW50ICVkLCByeCBpb2N0bCByZXNwICVkXFxuXCYjMzQ7LFxuIFx0XHQgIG1zZ2J1Zi1cdTAwM2VtYXhfcnhidWZwb3N0LCBtc2didWYtXHUwMDNlbWF4X2V2ZW50YnVmLFxuIFx0XHQgIG1zZ2J1Zi1cdTAwM2VtYXhfaW9jdGxyZXNwYnVmKTtcbkBAIC0xNjUzLDcgJiM0MzsxNjQ4LDYgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbiBcdHJldHVybiAtRU5PTUVNO1xuIH1cbiBcbi1cbiB2b2lkIGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDc6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtc2didWYuY2AgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKS4gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgZXhjbHVzaXZlbHkgdXNlZCBieSB0aGUgUENJZSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlciAoYHBjaWUuY2ApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgQnJvYWRjb20gV2ktRmkgUENJZSBoYXJkd2FyZSwgYW5kIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IERNQSByaW5ncyBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb25zIHJlcXVpcmVkIHRvIHJlYWNoIHRoaXMgY29kZSwgaXQgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyNjU1MmMyN2EyZDAxNTcyMmU2YzNlNjdiZmFiMTBmZTE1NjVjYzY0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwNzo1NjozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYwppbmRleCBiYTFjZTE1NTJlMGY0Li45NTk2NTliZmVhOTllIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jCkBAIC0yNCw3ICYjNDM7MjQsNiBAQAogI2luY2x1ZGUgJiMzNDtidXMuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0O3RyYWNlcG9pbnQuaCYjMzQ7CiAKLQogI2RlZmluZSBNU0dCVUZfSU9DVExfUkVTUF9USU1FT1VUCQltc2Vjc190b19qaWZmaWVzKDIwMDApCiAKICNkZWZpbmUgTVNHQlVGX1RZUEVfR0VOX1NUQVRVUwkJCTB4MQpAQCAtMjkxLDcgJiM0MzsyOTAsNiBAQCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyB7CiAKIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpOwogCi0KIHN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqCiBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsCiAJCQkgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMzE0LDcgJiM0MzszMTIsNiBAQCBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsCiAJcmV0dXJuIHBrdGlkczsKIH0KIAotCiBzdGF0aWMgaW50CiBicmNtZl9tc2didWZfYWxsb2NfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LAogCQkJIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMsCkBAIC0zNjIsNyAmIzQzOzM1OSw2IEBAIGJyY21mX21zZ2J1Zl9hbGxvY19wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJcmV0dXJuIDA7CiB9CiAKLQogc3RhdGljIHN0cnVjdCBza19idWZmICoKIGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLAogCQkgICAgICAgdTMyIGlkeCkKQEAgLTM5MCw3ICYjNDM7Mzg2LDYgQEAgYnJjbWZfbXNnYnVmX2dldF9wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMsCiAJcmV0dXJuIE5VTEw7CiB9CiAKLQogc3RhdGljIHZvaWQKIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCSAgIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMpCkBAIC00MTYsNyAmIzQzOzQxMSw2IEBAIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldiwKIAlrZnJlZShwa3RpZHMpOwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yZWxlYXNlX3BrdGlkcyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpCiB7CiAJaWYgKG1zZ2J1Zi0mZ3Q7cnhfcGt0aWRzKQpAQCAtNDI3LDcgJiM0Mzs0MjEsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcmVsZWFzZV9wa3RpZHMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogCQkJCQkgICBtc2didWYtJmd0O3R4X3BrdGlkcyk7CiB9CiAKLQogc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LAogCQkJCSB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbikKIHsKQEAgLTQ3Myw3ICYjNDM7NDY2LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LAogCXJldHVybiBlcnI7CiB9CiAKLQogc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAlyZXR1cm4gd2FpdF9ldmVudF90aW1lb3V0KG1zZ2J1Zi0mZ3Q7aW9jdGxfcmVzcF93YWl0LApAQCAtNDgxLDE0ICYjNDM7NDczLDEyIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpCiAJCQkJICBNU0dCVUZfSU9DVExfUkVTUF9USU1FT1VUKTsKIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWtlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAltc2didWYtJmd0O2N0bF9jb21wbGV0ZWQgPSB0cnVlOwogCXdha2VfdXAoJmFtcDttc2didWYtJmd0O2lvY3RsX3Jlc3Bfd2FpdCk7CiB9CiAKLQogc3RhdGljIGludCBicmNtZl9tc2didWZfcXVlcnlfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsCiAJCQkJICAgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4sIGludCAqZndlcnIpCiB7CkBAIC01MjYsMTQgJiM0Mzs1MTYsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfcXVlcnlfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsCiAJcmV0dXJuIDA7CiB9CiAKLQogc3RhdGljIGludCBicmNtZl9tc2didWZfc2V0X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LAogCQkJCSB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbiwgaW50ICpmd2VycikKIHsKIAlyZXR1cm4gYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoZHJ2ciwgaWZpZHgsIGNtZCwgYnVmLCBsZW4sIGZ3ZXJyKTsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9oZHJwdWxsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGJvb2wgZG9fZndzLAogCQkJCXN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicmNtZl9pZiAqKmlmcCkKIHsKQEAgLTU2MCw2ICYjNDM7NTQ4LDI3IEBAIGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKQogCWJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtJmd0O2Zsb3csIGZsb3dpZCk7CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiYjNDM7CQkJCSAgICB1MTYgZmxvd19yaW5nX2lkLCB1MTYgKmZsb3dpZCkKJiM0Mzt7CiYjNDM7CXUzMiBpZCA9IGZsb3dfcmluZ19pZDsKJiM0MzsKJiM0MzsJaWYgKGlkICZsdDsgQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVCkgewomIzQzOwkJYnBoeV9lcnIobXNnYnVmLSZndDtkcnZyLCAmIzM0O2ludmFsaWQgZmxvd3JpbmcgaWQgJXVcbiYjMzQ7LAomIzQzOwkJCSBmbG93X3JpbmdfaWQpOwomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7CiYjNDM7CWlmIChpZCAmZ3Q7PSBtc2didWYtJmd0O21heF9mbG93cmluZ3MpIHsKJiM0MzsJCWJwaHlfZXJyKG1zZ2J1Zi0mZ3Q7ZHJ2ciwgJiMzNDtpbnZhbGlkIGZsb3dyaW5nIGlkICV1XG4mIzM0OywKJiM0MzsJCQkgZmxvd19yaW5nX2lkKTsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwomIzQzOwkqZmxvd2lkID0gaWQ7CiYjNDM7CXJldHVybiB0cnVlOwomIzQzO30KIAogc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICoKIGJyY21mX21zZ2J1Zl9kZXF1ZXVlX3dvcmsoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQpAQCAtNTc4LDcgJiM0Mzs1ODcsNiBAQCBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIAlyZXR1cm4gd29yazsKIH0KIAotCiBzdGF0aWMgdTMyCiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJCQkJICAgIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICp3b3JrKQpAQCAtNjQ3LDcgJiM0Mzs2NTUsNiBAQCBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlX3dvcmtlcihzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJcmV0dXJuIGZsb3dpZDsKIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7CkBAIC02NjEsNyAmIzQzOzY2OCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9mbG93cmluZ193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCX0KIH0KIAotCiBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBpbnQgaWZpZHgsCiAJCQkJCXN0cnVjdCBza19idWZmICpza2IpCiB7CkBAIC02OTQsNyAmIzQzOzcwMCw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGludCBpZmlkeCwKIAlyZXR1cm4gZmxvd2lkOwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKQogewogCXN0cnVjdCBicmNtZl9mbG93cmluZyAqZmxvdyA9IG1zZ2J1Zi0mZ3Q7ZmxvdzsKQEAgLTc2OCw3ICYjNDM7NzczLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpCiAJYnJjbWZfY29tbW9ucmluZ191bmxvY2soY29tbW9ucmluZyk7CiB9CiAKLQogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpCiB7CiAJc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmOwpAQCAtNzgxLDcgJiM0Mzs3ODUsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfdHhmbG93X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmtlcikKIAl9CiB9CiAKLQogc3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCwKIAkJCQkJYm9vbCBmb3JjZSkKIHsKQEAgLTc5Niw3ICYjNDM7Nzk5LDYgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfc2NoZWR1bGVfdHhkYXRhKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGZsb3dpZCwKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAkJCQkgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewpAQCAtODI0LDcgJiM0Mzs4MjYsNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl90eF9xdWV1ZV9kYXRhKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAlyZXR1cm4gMDsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LAogCQkJCSBlbnVtIHByb3RvX2FkZHJfbW9kZSBhZGRyX21vZGUpCkBAIC04MzQsNyAmIzQzOzgzNSw2IEBAIGJyY21mX21zZ2J1Zl9jb25maWd1cmVfYWRkcl9tb2RlKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwKIAlicmNtZl9mbG93cmluZ19jb25maWd1cmVfYWRkcl9tb2RlKG1zZ2J1Zi0mZ3Q7ZmxvdywgaWZpZHgsIGFkZHJfbW9kZSk7CiB9CiAKLQogc3RhdGljIHZvaWQKIGJyY21mX21zZ2J1Zl9kZWxldGVfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKQogewpAQCAtODQzLDcgJiM0Mzs4NDMsNiBAQCBicmNtZl9tc2didWZfZGVsZXRlX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSkKIAlicmNtZl9mbG93cmluZ19kZWxldGVfcGVlcihtc2didWYtJmd0O2Zsb3csIGlmaWR4LCBwZWVyKTsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSkKIHsKQEAgLTg1Miw3ICYjNDM7ODUxLDYgQEAgYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSkKIAlicmNtZl9mbG93cmluZ19hZGRfdGRsc19wZWVyKG1zZ2J1Zi0mZ3Q7ZmxvdywgaWZpZHgsIHBlZXIpOwogfQogCi0KIHN0YXRpYyB2b2lkCiBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIHsKQEAgLTg3Miw3ICYjNDM7ODcwLDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpCiAJYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KG1zZ2J1Zik7CiB9CiAKLQogc3RhdGljIHZvaWQKIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogewpAQCAtODgwLDE3ICYjNDM7ODc3LDIzIEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCXN0cnVjdCBtc2didWZfdHhfc3RhdHVzICp0eF9zdGF0dXM7CiAJdTMyIGlkeDsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwl1MTYgZmxvd19yaW5nX2lkOwogCXUxNiBmbG93aWQ7CiAKIAl0eF9zdGF0dXMgPSAoc3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKilidWY7CiAJaWR4ID0gbGUzMl90b19jcHUodHhfc3RhdHVzLSZndDttc2cucmVxdWVzdF9pZCkgLSAxOwotCWZsb3dpZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7Ci0JZmxvd2lkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7CiYjNDM7CWZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7CiAJc2tiID0gYnJjbWZfbXNnYnVmX2dldF9wa3RpZChtc2didWYtJmd0O2RydnItJmd0O2J1c19pZi0mZ3Q7ZGV2LAogCQkJCSAgICAgbXNnYnVmLSZndDt0eF9wa3RpZHMsIGlkeCk7CiAJaWYgKCFza2IpCiAJCXJldHVybjsKIAomIzQzOwlpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCAmYW1wO2Zsb3dpZCkpIHsKJiM0MzsJCWJyY21mX3R4ZmluYWxpemUoYnJjbWZfZ2V0X2lmcChtc2didWYtJmd0O2RydnIsIHR4X3N0YXR1cy0mZ3Q7bXNnLmlmaWR4KSwKJiM0MzsJCQkJIHNrYiwgZmFsc2UpOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CiAJc2V0X2JpdChmbG93aWQsIG1zZ2J1Zi0mZ3Q7dHhzdGF0dXNfZG9uZV9tYXApOwogCWNvbW1vbnJpbmcgPSBtc2didWYtJmd0O2Zsb3dyaW5nc1tmbG93aWRdOwogCWF0b21pY19kZWMoJmFtcDtjb21tb25yaW5nLSZndDtvdXRzdGFuZGluZ190eCk7CkBAIC04OTksNyAmIzQzOzkwMiw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCQkJIHNrYiwgdHJ1ZSk7CiB9CiAKLQogc3RhdGljIHUzMiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGNvdW50KQogewogCXN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtJmd0O2RydnI7CkBAIC05NzcsNyAmIzQzOzk3OSw2IEBAIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudCkKIAlyZXR1cm4gaTsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfZmlsbChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpCiB7CkBAIC05OTUsNyAmIzQzOzk5Niw2IEBAIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogCX0KIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpCiB7CkBAIC0xMDA1LDcgJiM0MzsxMDA1LDYgQEAgYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpCiAJCWJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTsKIH0KIAotCiBzdGF0aWMgdTMyCiBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsCiAJCQkgICAgIHUzMiBjb3VudCkKQEAgLTEwNzksNyAmIzQzOzEwNzgsNiBAQCBicmNtZl9tc2didWZfcnhidWZfY3RybF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgYm9vbCBldmVudF9idWYsCiAJcmV0dXJuIGk7CiB9CiAKLQogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAl1MzIgY291bnQ7CkBAIC0xMDg5LDcgJiM0MzsxMDg3LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2lvY3RscmVzcF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIAltc2didWYtJmd0O2N1cl9pb2N0bHJlc3BidWYgJiM0Mzs9IGNvdW50OwogfQogCi0KIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZikKIHsKIAl1MzIgY291bnQ7CkBAIC0xMDk5LDcgJiM0MzsxMDk2LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKQogCW1zZ2J1Zi0mZ3Q7Y3VyX2V2ZW50YnVmICYjNDM7PSBjb3VudDsKIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19ldmVudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIHsKIAlzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLSZndDtkcnZyOwpAQCAtMTE0Miw3ICYjNDM7MTEzOCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogCWJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTsKIH0KIAotCiBzdGF0aWMgdm9pZAogYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpCiB7CkBAIC0xMjM3LDEzICYjNDM7MTIzMiwxNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwKIAlzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICpmbG93cmluZ19jcmVhdGVfcmVzcDsKIAl1MTYgc3RhdHVzOwogCXUxNiBmbG93aWQ7CiYjNDM7CXUxNiBmbG93X3JpbmdfaWQ7CiAKIAlmbG93cmluZ19jcmVhdGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICopYnVmOwogCi0JZmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfY3JlYXRlX3Jlc3AtJmd0O2NvbXBsX2hkci5mbG93X3JpbmdfaWQpOwotCWZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUOwomIzQzOwlmbG93X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19jcmVhdGVfcmVzcC0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7CiAJc3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLSZndDtjb21wbF9oZHIuc3RhdHVzKTsKIAomIzQzOwlpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCAmYW1wO2Zsb3dpZCkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJaWYgKHN0YXR1cykgewogCQlicGh5X2VycihkcnZyLCAmIzM0O0Zsb3dyaW5nIGNyZWF0aW9uIGZhaWxlZCwgY29kZSAlZFxuJiMzNDssIHN0YXR1cyk7CiAJCWJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpOwpAQCAtMTI1Nyw3ICYjNDM7MTI1NSw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLAogCWJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEobXNnYnVmLCBmbG93aWQsIHRydWUpOwogfQogCi0KIHN0YXRpYyB2b2lkCiBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwKIAkJCQkJICAgICAgIHZvaWQgKmJ1ZikKQEAgLTEyNjYsMTMgJiM0MzsxMjYzLDE2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLAogCXN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKmZsb3dyaW5nX2RlbGV0ZV9yZXNwOwogCXUxNiBzdGF0dXM7CiAJdTE2IGZsb3dpZDsKJiM0MzsJdTE2IGZsb3dfcmluZ19pZDsKIAogCWZsb3dyaW5nX2RlbGV0ZV9yZXNwID0gKHN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKilidWY7CiAKLQlmbG93aWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19kZWxldGVfcmVzcC0mZ3Q7Y29tcGxfaGRyLmZsb3dfcmluZ19pZCk7Ci0JZmxvd2lkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7CiYjNDM7CWZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2RlbGV0ZV9yZXNwLSZndDtjb21wbF9oZHIuZmxvd19yaW5nX2lkKTsKIAlzdGF0dXMgPSAgbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtJmd0O2NvbXBsX2hkci5zdGF0dXMpOwogCiYjNDM7CWlmICghYnJjbWZfbXNnYnVmX2dldF9mbG93aWQobXNnYnVmLCBmbG93X3JpbmdfaWQsICZhbXA7Zmxvd2lkKSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlpZiAoc3RhdHVzKSB7CiAJCWJwaHlfZXJyKGRydnIsICYjMzQ7Rmxvd3JpbmcgZGVsZXRpb24gZmFpbGVkLCBjb2RlICVkXG4mIzM0Oywgc3RhdHVzKTsKIAkJYnJjbWZfZmxvd3JpbmdfZGVsZXRlKG1zZ2J1Zi0mZ3Q7ZmxvdywgZmxvd2lkKTsKQEAgLTEyODQsNyAmIzQzOzEyODQsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwKIAlicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTsKIH0KIAotCiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKQogewogCXN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtJmd0O2RydnI7CkBAIC0xMzMzLDcgJiM0MzsxMzMyLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZikKIAl9CiB9CiAKLQogc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3Nfcngoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLAogCQkJCSAgICBzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZykKIHsKQEAgLTEzNjUsNyAmIzQzOzEzNjMsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsCiAJCWdvdG8gYWdhaW47CiB9CiAKLQogaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgYnJjbWZfYnVzICpidXNfaWYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKQEAgLTEzOTcsNyAmIzQzOzEzOTQsNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiAwOwogfQogCi0KIHZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKQogewogCXN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci0mZ3Q7cHJvdG8tJmd0O3BkOwpAQCAtMTYxMyw3ICYjNDM7MTYwOSw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpCiAJaWYgKCFtc2didWYtJmd0O2Zsb3cpCiAJCWdvdG8gZmFpbDsKIAotCiAJYnJjbWZfZGJnKE1TR0JVRiwgJiMzNDtGZWVkaW5nIGJ1ZmZlcnMsIHJ4IGRhdGEgJWQsIHJ4IGV2ZW50ICVkLCByeCBpb2N0bCByZXNwICVkXG4mIzM0OywKIAkJICBtc2didWYtJmd0O21heF9yeGJ1ZnBvc3QsIG1zZ2J1Zi0mZ3Q7bWF4X2V2ZW50YnVmLAogCQkgIG1zZ2J1Zi0mZ3Q7bWF4X2lvY3RscmVzcGJ1Zik7CkBAIC0xNjUzLDcgJiM0MzsxNjQ4LDYgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cikKIAlyZXR1cm4gLUVOT01FTTsKIH0KIAotCiB2b2lkIGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cikKIHsKIAlzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA3OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczOTcKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAzODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV0xBTiBEcml2ZXIgUGF0Y2ggZm9yIFZpcnR1YWxpemF0aW9uIEZlYXNpYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBgYnJjbWZtYWNgIOKAkyBzcGVjaWZpY2FsbHksIGluIGBtc2didWYuY2AuIEl0JiMzOTtzIGludHJvZHVjaW5nIGBicmNtZl9tc2didWZfZ2V0X2Zsb3dpZGAgdG8gdmFsaWRhdGUgYGZsb3dfcmluZ19pZGAgYmVmb3JlIGNhbGN1bGF0aW5nIGBmbG93aWRgLiBTbWFydCBtb3ZlLCBwcmV2ZW50aW5nIGEgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGFuIGludmFsaWQgZmxvd2lkIHNpdHVhdGlvbiB3aXRoaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFdlJiMzOTtyZSByZXBsYWNpbmcgdGhlIGRpcmVjdCBjYWxjdWxhdGlvbiB3aXRoIGEgc2FmZXIgY2hlY2sgdXNpbmcgdGhlIG5ldyBmdW5jdGlvbi4gR29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGFsd2F5cyBhcHByZWNpYXRlZC4KClRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cgaXMsIGNhbiBJIHJlYXNvbmFibHkgdGVzdCB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFFFTVUgaXMgbXkgZ28tdG8sIG9mIGNvdXJzZS4gVGhpcyBgYnJjbWZtYWNgIGRyaXZlciBzdXBwb3J0cyBTRElPLCBVU0IsIGFuZCBQQ0lFLiBTaW5jZSBJIGNhbiB3b3JrIHdpdGggVVNCIGRldmljZXMgaW4gUUVNVSwgZWl0aGVyIHRocm91Z2ggcGFzc3Rocm91Z2ggb3IgZXZlbiBkdW1teSBVU0IgZGV2aWNlcyDigJMgbGlrZSB3aGF0IHN5emthbGxlciB1c2VzIGZvciBmdXp6aW5nIOKAkyB0aGF0JiMzOTtzIGEgcHJvbWlzaW5nIGF2ZW51ZS4KCk15IGh1bmNoIGlzIHRoYXQgZnV6emluZyBpcyB0aGUgYmVzdCBhcHByb2FjaC4gU3l6a2FsbGVyIGhhcyBhIFVTQiBmdXp6ZXIgd2hpY2ggaXMgZ3JlYXQuIFNvLCBJIG5lZWQgdG8gY2hlY2sgaWYgU3l6a2FsbGVyIGFscmVhZHkgdGFyZ2V0cyBicmNtZm1hYyBvdmVyIFVTQi4gU3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgbG9vayBhdCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCByZWdpc3RlcnMgYSBVU0IgZHJpdmVyLiBJZiBpdCBkb2VzLCBhbmQgU3l6a2FsbGVyIGlzIGluZGVlZCBoaXR0aW5nIGl0LCB0aGVuIHRoaXMgcGF0Y2ggaXMgY2VydGFpbmx5IHRlc3RhYmxlIHdpdGhpbiBteSBjdXJyZW50IHNldHVwLiBJZiBub3QsIEkgbWF5IGhhdmUgdG8gZmlndXJlIG91dCBhIG5ldyBVU0Igc2V0dXAgb3IgYXR0ZW1wdCBTRElPLiBQQ0lFIGlzIHByb2JhYmx5IG91dCBvZiB0aGUgcXVlc3Rpb24gZm9yIHRoaXMgcXVpY2sgdGVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl91c2JfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xMTY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnJjbWZfYnVzX29wcyBicmNtZl91c2JfYnVzX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTE3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMTc2OnN0YXRpYyB2b2lkIGJyY21mX3VzYl9wcm9iZV9waGFzZTIoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcmV0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTExNzctXHRcdFx0XHQgICBzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqZndyZXEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTEyMjQ9YnJjbWZfdXNiX3ByZXBhcmVfZndfcmVxdWVzdChzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTI0NDpzdGF0aWMgaW50IGJyY21mX3VzYl9wcm9iZV9jYihzdHJ1Y3QgYnJjbWZfdXNiZGV2X2luZm8gKmRldmluZm8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI0NS1cdFx0XHQgICAgICBlbnVtIGJyY21mX2Z3dmVuZG9yIGZ3dmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzA4LVx0LyogcmVxdWVzdCBmaXJtd2FyZSBoZXJlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTMwOTpcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMxMC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTM0ND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTM0NTpicmNtZl91c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMzQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTQ0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNDQ2Olx0cmV0ID0gYnJjbWZfdXNiX3Byb2JlX2NiKGRldmluZm8sIGlkLVx1MDAzZWRyaXZlcl9pbmZvKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNDQ3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTUxND1zdGF0aWMgaW50IGJyY21mX3VzYl9yZXNldF9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTUyNzpcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoXHUwMDI2dXNiLVx1MDAzZWRldiwgZndyZXEsIGJyY21mX3VzYl9wcm9iZV9waGFzZTIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjgtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTY4PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBicmNtZl91c2JkcnZyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1NjktXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE1NzA6XHQucHJvYmUgPSBicmNtZl91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU3MS1cdC5kaXNjb25uZWN0ID0gYnJjbWZfdXNiX2Rpc2Nvbm5lY3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDc6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTM0MQoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVTQiBEcml2ZXIgRnV6emluZzogQSBRdWljayBNZW50YWwgQ2hlY2tsaXN0KioKCk9rYXksIHNvIFN5emthbGxlciYjMzk7cyBnb3QgdGhhdCBkdW1teSBVU0IgZnV6emVyLCBhbmQgdGhlIGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHJlZ2lzdGVyaW5nIHRoZSBVU0IgZHJpdmVyLiBDbGFzc2ljLiBCdXQgdGhlbiB0aGUgdGhvdWdodCBoaXRzIG1lOiBJIG5lZWQgdG8gdmVyaWZ5IGhvdyBgbXNnYnVmLmNgIGZhY3RvcnMgaW4uIElzIGl0IHNvbWV0aGluZyBzcGVjaWZpYyB0byB0aGUgUENJZSBidXMsIG9yIGRvZXMgdGhlIFVTQiBkcml2ZXIgZW5kIHVwIHV0aWxpemluZyBpdD8gVGhhdCYjMzk7cyB0aGUgcXVlc3Rpb24uIEkgbmVlZCB0byBnZXQgdGhpcyBzdHJhaWdodCBpZiBJJiMzOTttIGdvaW5nIHRvIGdldCB0aGlzIGZ1enppbmcgdGFzayBvZmYgdGhlIGdyb3VuZC4gQWxyaWdodCwgbGV0JiMzOTtzIGRyaWxsIGRvd24gYW5kIHNlZSBob3cgYG1zZ2J1Zi5jYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gR290dGEgY2xhcmlmeSB0aGlzIHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9wcm90b19tc2didWZfYXR0YWNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTUxOD1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZGVidWdmc19jcmVhdGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTUyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxNTIzOmludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTUyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oPTMyPXZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozMzppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zNC12b2lkIGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzUtI2Vsc2VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozNjpzdGF0aWMgaW5saW5lIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTIwPWludCBicmNtZl9wcm90b19hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zNS1cdH0gZWxzZSBpZiAoZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19NU0dCVUYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjM2Olx0XHRpZiAoYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChkcnZyKSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM3LVx0XHRcdGdvdG8gZmFpbDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDI2NQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkNoZWNraW5nIFByb3RvY29sIFR5cGUgZm9yIE1lc3NhZ2UgQnVmZmVyIEF0dGFjaG1lbnQqKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgcXVlc3Rpb24gaXMgKmlmKiBhIHNwZWNpZmljIHN0cnVjdHVyZSwgYGRydnJgLCBpcyBhdHRhY2hlZCB3aGVuIHRoZSBwcm90b2NvbCB0eXBlIGlzIHNldCB0byBgQlJDTUZfUFJPVE9fTVNHQlVGYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBgZHJ2ci0mZ3Q7YnVzX2lmYCBhbmQgaXRzIGBwcm90b190eXBlYCBmaWVsZC4gSXQgc2VlbXMgdGhhdCB0aGlzIGF0dGFjaG1lbnQgaXMgY29uZGl0aW9uYWxseSBkZXBlbmRlbnQgb24gdGhhdCBwcm90b2NvbCB0eXBlLiBNYWtlcyBzZW5zZS4gSSYjMzk7bSB1c2VkIHRvIHNlZWluZyBzaW1pbGFyIHN0cnVjdHVyZXMgd2hlcmUgZGlmZmVyZW50IHVuZGVybHlpbmcgYnVzIGludGVyZmFjZXMgZGljdGF0ZSBob3cgZGF0YSBpcyBoYW5kbGVkLgoKVGhlIG5leHQgb2J2aW91cyBzdGVwIGlzIHRvIGJhY2t0cmFjay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoaWNoKiBidXNlcyBhcmUgY29uZmlndXJpbmcgdGhlIGBwcm90b190eXBlYCB0byBgQlJDTUZfUFJPVE9fTVNHQlVGYC4gVW5kZXJzdGFuZGluZyB0aGF0IHdpbGwgc2hlZCBsaWdodCBvbiB3aGF0IGtpbmQgb2Ygc2l0dWF0aW9ucyBvciBoYXJkd2FyZSBjb250ZXh0cyB0aGlzIGF0dGFjaG1lbnQgaXMgcmVsZXZhbnQgZm9yLiBLbm93aW5nIHdoaWNoIGJ1c2VzIGRvICpub3QqIHVzZSB0aGlzIHNwZWNpZmljIHByb3RvY29sLCBhbmQgd2h5LCBjb3VsZCBiZSBldmVuIG1vcmUgaW5zaWdodGZ1bC4gVGhpcyBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGRlc2lnbiBhbmQgcG90ZW50aWFsbHkgc3BvdCBhbnkgdnVsbmVyYWJpbGl0aWVzIG9yIGluZWZmaWNpZW5jaWVzLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRocm91Z2ggdGhlIGNvZGUgYW5kIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXJlIHRoYXQgdmFyaWFibGUgaXMgYmVpbmcgc2V0LCBhbmQgaW4gd2hhdCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JSQ01GX1BST1RPX01TR0JVRiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTUxPWVudW0gYnJjbWZfYnVzX3Byb3RvY29sX3R5cGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTUyLVx0QlJDTUZfUFJPVE9fQkNEQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaDo1MzpcdEJSQ01GX1BST1RPX01TR0JVRlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTU0LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDQzPWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MTktXHRidXMtXHUwMDNlb3BzID0gXHUwMDI2YnJjbWZfcGNpZV9idXNfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTIwOlx0YnVzLVx1MDAzZXByb3RvX3R5cGUgPSBCUkNNRl9QUk9UT19NU0dCVUY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MjEtXHRidXMtXHUwMDNlY2hpcCA9IGRldmluZm8tXHUwMDNlY29yZWlkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTIwPWludCBicmNtZl9wcm90b19hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zNC1cdFx0XHRnb3RvIGZhaWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYzozNTpcdH0gZWxzZSBpZiAoZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19NU0dCVUYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM2LVx0XHRpZiAoYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChkcnZyKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYz01OT12b2lkIGJyY21mX3Byb3RvX2RldGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTY1LVx0XHRcdGJyY21mX3Byb3RvX2JjZGNfZGV0YWNoKGRydnIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6NjY6XHRcdGVsc2UgaWYgKGRydnItXHUwMDNlYnVzX2lmLVx1MDAzZXByb3RvX3R5cGUgPT0gQlJDTUZfUFJPVE9fTVNHQlVGKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtNjctXHRcdFx0YnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChkcnZyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTM3OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgQlJDTUZfUFJPVE9fTVNHQlVGYCBBc3NpZ25tZW50KioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYEJSQ01GX1BST1RPX01TR0JVRmAgaXMgYmVpbmcgYXNzaWduZWQgKnNwZWNpZmljYWxseSogaW4gYHBjaWUuY2AuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB3YW50IHRvIGJyb2FkZW4gdGhlIHNjb3BlIG9mIG15IGludmVzdGlnYXRpb24uIExldCYjMzk7cyBzZWUgaWYgdGhpcyBpcyB0aGUgKm9ubHkqIHBsYWNlIGl0JiMzOTtzIGJlaW5nIHNldC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29kZWJhc2UuIFNwZWNpZmljYWxseSwgdGhlIGZpbGUgcGF0aCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuY2AgaGFzIHRoYXQgbGluZTogYGJ1cy0mZ3Q7cHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtgLiBOb3cgSSYjMzk7bSB3b25kZXJpbmcsIHNpbmNlIGl0JiMzOTtzIHRoZSBvbmx5IG9uZSBJJiMzOTt2ZSBzZWVuIHNvIGZhciwgd2hhdCBhYm91dCBgdXNiLmNgPyBXaGF0IGRvZXMgKml0KiBkbyB3aXRoIHRoZSBgcHJvdG9fdHlwZWAgdmFyaWFibGU/IFRpbWUgdG8gZGlnIGluIHRoZXJlIGFuZCBzZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb3RvX3R5cGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTEyNDQ9c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjY5LVx0YnVzLVx1MDAzZW9wcyA9IFx1MDAyNmJyY21mX3VzYl9idXNfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNzA6XHRidXMtXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX0JDREM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI3MS1cdGJ1cy1cdTAwM2Vmd3ZpZCA9IGZ3dmlkO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTk0MQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIEJyb2FkY29tIEZpcm13YXJlIFByb3RvY29sIFVzYWdlKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gc28sIGZyb20gdGhlIGNvZGUgSSB3YXMganVzdCByZXZpZXdpbmcsIGB1c2IuY2AgZXhwbGljaXRseSB1c2VzIGBCUkNNRl9QUk9UT19CQ0RDYC4gVGhhdCYjMzk7cyBub3QgdW5leHBlY3RlZDsgQkNEQyBpcyBhIGNvbW1vbiBjaG9pY2UgZm9yIFVTQi1iYXNlZCBCcm9hZGNvbSBXaUZpIGFkYXB0ZXJzLCByaWdodD8gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBTRElPIGRyaXZlciwgYHNkaW8uY2AsIGlzIGFsc28gZW1wbG95aW5nIHRoZSBCQ0RDIHByb3RvY29sLiBMb2dpY2FsbHksIGl0JiMzOTtzIGEgc3Ryb25nIHBvc3NpYmlsaXR5LiBJdCYjMzk7cyBvZnRlbiB1c2VkIHdoZXJlIHdlIG5lZWQgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSBhbmQgY29tbW9uYWxpdHkuIEJ1dCBsZXQmIzM5O3Mgbm90IGFzc3VtZSwgbGV0JiMzOTtzIGNvbmZpcm0gaXQgZGVmaW5pdGl2ZWx5LiBJIHNob3VsZCBwcm9iYWJseSBnbyBhbmQgZG91YmxlLWNoZWNrIHRoYXQgYHNkaW8uY2AgZmlsZSBhbmQgc2VlIGlmIHRoYXQmIzM5O3MgdGhlIGNhc2UuIEl0JiMzOTtzIGltcG9ydGFudCB0byBoYXZlIGEgY2xlYXIgbWVudGFsIG1vZGVsIG9mIHRoZSBwcm90b2NvbCB1c2FnZSBhY3Jvc3MgdGhlc2UgZGlmZmVyZW50IGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA3OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHJvdG9fdHlwZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9zZGlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjI0NwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBTRElPIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgU0RJTyBidXMgcHJvdG9jb2wgaXMgYmVpbmcgaGFuZGxlZCBoZXJlLiBMZXQmIzM5O3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBzZGlvLmNgLiBNeSBwcmltYXJ5IGludGVyZXN0IGF0IHRoaXMgbW9tZW50IGlzIHRvIHBpbnBvaW50IGhvdyB0aGUgYGJ1cy0mZ3Q7cHJvdG9fdHlwZWAgdmFyaWFibGUgaXMgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGNvZGUuIFRoaXMgd2lsbCB0ZWxsIG1lIHdoYXQgc3BlY2lmaWMgU0RJTyBwcm90b2NvbCBmZWF0dXJlcyBhcmUgYmVpbmcgaW1wbGVtZW50ZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGBwcm90b190eXBlYCBhc3NpZ25tZW50IGFuZCB1c2FnZSBpcyBjcml0aWNhbCB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgc3RhdGUgYW5kIGNhcGFiaWxpdGllcyBvZiB0aGUgZHJpdmVyIHdpdGggcmVzcGVjdCB0byBTRElPLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwcm90b190eXBlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM9MTA0MT1zdGF0aWMgaW50IGJyY21mX29wc19zZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jLTEwODctXHRidXNfaWYtXHUwMDNlYnVzX3ByaXYuc2RpbyA9IHNkaW9kZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM6MTA4ODpcdGJ1c19pZi1cdTAwM2Vwcm90b190eXBlID0gQlJDTUZfUFJPVE9fQkNEQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYy0xMDg5LVx0YnVzX2lmLVx1MDAzZWZ3dmlkID0gaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTE0Mj1zdHJ1Y3QgYnJjbWZfYnVzX3N0YXRzIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMTUwLSAqIEBidXNfcHJpdjogcG9pbnRlciB0byBwcml2YXRlIGJ1cyBkZXZpY2UuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MTUxOiAqIEBwcm90b190eXBlOiBwcm90b2NvbCB0eXBlLCBiY2RjIG9yIG1zZ2J1ZlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTE1Mi0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlciBvZiBidXMgZGV2aWNlLlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaD0xNjY9c3RydWN0IGJyY21mX2J1cyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTE3MS1cdH0gYnVzX3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MTcyOlx0ZW51bSBicmNtZl9idXNfcHJvdG9jb2xfdHlwZSBwcm90b190eXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTE3My1cdHN0cnVjdCBkZXZpY2UgKmRldjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI0NDM9YnJjbWZfcGNpZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUxOS1cdGJ1cy1cdTAwM2VvcHMgPSBcdTAwMjZicmNtZl9wY2llX2J1c19vcHM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI1MjA6XHRidXMtXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUyMS1cdGJ1cy1cdTAwM2VjaGlwID0gZGV2aW5mby1cdTAwM2Vjb3JlaWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9MjA9aW50IGJyY21mX3Byb3RvX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTMxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6MzI6XHRpZiAoZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19CQ0RDKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zMy1cdFx0aWYgKGJyY21mX3Byb3RvX2JjZGNfYXR0YWNoKGRydnIpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzQtXHRcdFx0Z290byBmYWlsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6MzU6XHR9IGVsc2UgaWYgKGRydnItXHUwMDNlYnVzX2lmLVx1MDAzZXByb3RvX3R5cGUgPT0gQlJDTUZfUFJPVE9fTVNHQlVGKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zNi1cdFx0aWYgKGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goZHJ2cikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzktXHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O1Vuc3VwcG9ydGVkIHByb3RvIHR5cGUgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYzo0MDpcdFx0XHQgZHJ2ci1cdTAwM2VidXNfaWYtXHUwMDNlcHJvdG9fdHlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy00MS1cdFx0Z290byBmYWlsO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTU5PXZvaWQgYnJjbWZfcHJvdG9fZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtNjMtXHRpZiAoZHJ2ci1cdTAwM2Vwcm90bykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6NjQ6XHRcdGlmIChkcnZyLVx1MDAzZWJ1c19pZi1cdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX0JDREMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy02NS1cdFx0XHRicmNtZl9wcm90b19iY2RjX2RldGFjaChkcnZyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjY2Olx0XHRlbHNlIGlmIChkcnZyLVx1MDAzZWJ1c19pZi1cdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTY3LVx0XHRcdGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goZHJ2cik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTEyNDQ9c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjY5LVx0YnVzLVx1MDAzZW9wcyA9IFx1MDAyNmJyY21mX3VzYl9idXNfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNzA6XHRidXMtXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX0JDREM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI3MS1cdGJ1cy1cdTAwM2Vmd3ZpZCA9IGZ3dmlkO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDEzMgoJCQkJCQkJb3V0cHV0OiA1MwoJCQkJCQkJdGhvdWdodHM6IDM3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgYnJjbWZtYWNgIERyaXZlciBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIGBCUkNNRl9QUk9UT19NU0dCVUZgLiBJdCBsb29rcyBsaWtlIHRoaXMgaXMgZXhjbHVzaXZlbHkgdXNlZCB3aXRoaW4gYHBjaWUuY2AuIEFuZCBmdXJ0aGVyLCB0aGlzIGBtc2didWYuY2AgZmlsZSBpcyBvbmx5IGVuZ2FnZWQgd2hlbiB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIGEgUENJZSBkZXZpY2UsIHdoaWNoIG1ha2VzIGl0IHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4KClRoZSB0YXNrIGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHRlbGxzIG1lIHRvIHJldHVybiBgZmFsc2VgIGlmIHRoZSBjaGFuZ2VzIGFyZSBsaW1pdGVkIHRvIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb246IGRvZXMgYGJyY21mbWFjYCBmYWxsIGludG8gdGhhdCBjYXRlZ29yeT8KClllcywgYWJzb2x1dGVseS4gYGJyY21mbWFjYCBpcyBhIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFRoZSBQQ0llIHZhcmlhbnQsIHRoZSBvbmUgdGhhdCYjMzk7cyByZWxldmFudCBoZXJlLCBkZXBlbmRzIG9uIGFuIGFjdHVhbCBCcm9hZGNvbSBXaS1GaSBjaGlwLCBzb21ldGhpbmcgbGlrZSBhIEJDTTQzNjAyIG9yIEJDTTQzNTAsIGNvbm5lY3RlZCB2aWEgUENJZS4gUUVNVSwgYXMgZmFyIGFzIEkgdW5kZXJzdGFuZCwgZG9lc24mIzM5O3QgZW11bGF0ZSB0aGVzZSBCcm9hZGNvbSBXaS1GaSBQQ0llIGNhcmRzLiBUaGVyZWZvcmUsIEkgY2FuJiMzOTt0IGV2ZW4gZ2V0IHN0YXJ0ZWQgZnV6emluZyB0aGlzIHNwZWNpZmljIGludGVyZmFjZSB3aXRoIGEgdmlydHVhbCBtYWNoaW5lLCBhbmQgUUVNVSB3b24mIzM5O3QgYWxsb3cgbWUgdG8uCgpTeXprYWxsZXIgY2FuJiMzOTt0IGVmZmVjdGl2ZWx5IGZ1enogdGhlIFBDSWUgaW50ZXJmYWNlIG9mIHRoaXMgZHJpdmVyIGJlY2F1c2UgaXQgbGFja3MgdGhlIG5lY2Vzc2FyeSBjYXBhYmlsaXRpZXMgdG8gZW11bGF0ZSB0aGUgc3BlY2lmaWMgcmVnaXN0ZXJzIGFuZCBETUEgcmluZ3Mgb2YgdGhpcyBCcm9hZGNvbSBXaS1GaSBjaGlwLiBXaGlsZSBTeXprYWxsZXIgaGFzIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCB0aGV5IGFyZSBtb3N0bHkgZm9yIGdlbmVyaWMgZGV2aWNlcyBvciB2aXJ0aW8sIGFuZCBub3QgY29tcGxleCB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgTUFDcy4KCldhaXQgYSBtb21lbnQsIEkgbmVlZCB0byBjaGVjayBteSBmYWN0cyBoZXJlLiBTeXprYWxsZXIgKmRvZXMqIGhhdmUgYSBQQ0kgZnV6emVyLCBidXQgaXRzIGNhcGFiaWxpdGllcyBhcmUgbGltaXRlZCB0byB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIEJBUnMuIFRoaXMgZG9lc24mIzM5O3QgZ28gZGVlcCBlbm91Z2ggaW50byBlbXVsYXRpbmcgZGV2aWNlIGZpcm13YXJlIG9yIERNQSByaW5ncyB0byByZWFjaCB0aGUgcG9pbnQgd2hlcmUgdGhlIGBtc2didWYuY2AgZmlsZSBwcm9jZXNzZXMgbWVzc2FnZXMgZnJvbSB0aGUgZmlybXdhcmUuCgpJIHJlYWxseSBuZWVkIHRvIGNvbmZpcm0gaWYgYG1zZ2J1Zi5jYCBwcm9jZXNzZXMgRE1BIHJpbmdzIGF0IGFsbC4gSWYgaXQgZG9lcywgdGhlbiB0aGUgcHJvYmxlbSBpcyBldmVuIHdvcnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTg3Mz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjg3NDpicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04NzUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMjg3PXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzMjItXHRcdGJyY21mX2RiZyhNU0dCVUYsIFwmIzM0O01TR0JVRl9UWVBFX1RYX1NUQVRVU1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTMyMzpcdFx0YnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMobXNnYnVmLCBidWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTEzMjQtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM0OAoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgY29kZSBmbG93LCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipVbmRlcnN0YW5kaW5nIHRoZSBicmNtZl9tc2didWYgTWVzc2FnZSBIYW5kbGluZyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX21zZ3R5cGVgIGZ1bmN0aW9uLCBhbmQgSSYjMzk7bSBpbW1lZGlhdGVseSB0cmFjaW5nIGl0cyBjYWxsIHBhdGggdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLiBJdCYjMzk7cyBjbGVhciB0aGF0IGl0JiMzOTtzIGRlZXBseSBpbnZvbHZlZCBpbiB0aGUgaGFuZGxpbmcgb2YgbWVzc2FnZXMgd2l0aGluIHRoZSBicmNtZiBmcmFtZXdvcmssIHNwZWNpZmljYWxseSBtZXNzYWdlcyB0aGF0IGFyZSBiZWluZyAqcmVjZWl2ZWQqLgoKVGhlIGNhbGwgc3RhY2sgY29uZmlybXMgbXkgc3VzcGljaW9uOiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAgaXMgKnRyaWdnZXJlZCogZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLiBUaGlzIGBwcm9jZXNzX3J4YCBmdW5jdGlvbiBpcyBsaWtlbHkgdGhlIGNlbnRyYWwgcHJvY2Vzc2luZyBwb2ludCBmb3IgaW5jb21pbmcgZGF0YS4gSXQmIzM5O3MgdGhlICYjMzQ7cmVjZWl2ZXImIzM0OyBpbiB0aGlzIHNwZWNpZmljIHN1YnN5c3RlbS4KCkFuZCB0aGUgZXZlbiBiaWdnZXIgcGljdHVyZSByZXZlYWxzIHRoYXQgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4YCwgdGhlIGNvcmUgJiMzNDtyZWNlaXZlciYjMzQ7IGZ1bmN0aW9uLCBpcyBpdHNlbGYgaW52b2tlZCBmcm9tIGBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcmAuIEFoLCBzbyBgcnhfdHJpZ2dlcmAgaXMgd2hhdCYjMzk7cyBraWNraW5nIG9mZiB0aGUgd2hvbGUgaW5ib3VuZCBtZXNzYWdlIGhhbmRsaW5nIHByb2Nlc3MuIFRoaXMgdHJpZ2dlciBmdW5jdGlvbiBwcm9iYWJseSBtYW5hZ2VzIHRoZSBsb3dlci1sZXZlbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgc2lnbmFscyB0aGUgYXZhaWxhYmlsaXR5IG9mIG5ldyBkYXRhLCB0aGVuIHRoaXMgaW5jb21pbmcgZGF0YSBpcyB1bHRpbWF0ZWx5ICpwcm9jZXNzZWQqIGJ5IGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYC4KClNvLCBpbiBlc3NlbmNlLCBJIHVuZGVyc3RhbmQgdGhlIHNlcXVlbmNlOiBgcnhfdHJpZ2dlcmAgaW5pdGlhdGVzIHRoZSBwcm9jZXNzLCBgcHJvY2Vzc19yeGAgcmVjZWl2ZXMvbWFuYWdlcyB0aGUgZGF0YSwgYW5kIGZpbmFsbHksIGBwcm9jZXNzX21zZ3R5cGVgIGlzIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgc3BlY2lmaWMgKnR5cGUqIG9mIGluY29taW5nIG1lc3NhZ2UuIFRoaXMgaXMgY3JpdGljYWwgZm9yIGRpc3Rpbmd1aXNoaW5nIGRpZmZlcmVudCBjb250cm9sLCBkYXRhLCBhbmQgb3RoZXIgdHlwZXMgb2YgbWVzc2FnZXMuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuIE5vdyBJIGNhbiBkaXZlIGRlZXBlciBpbnRvIGVhY2ggb2YgdGhlc2UgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhlIG1lc3NhZ2UgcGFyc2luZyBhbmQgaGFuZGxpbmcgaXMgZG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDc6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xMzM1PXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM2NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzY2OmludCBicmNtZl9wcm90b19tc2didWZfcnhfdHJpZ2dlcihzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM2Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oPTI2PXN0cnVjdCBtc2didWZfYnVmX2FkZHIge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozMTppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zMi12b2lkIGJyY21mX21zZ2J1Zl9kZWxldGVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgdTE2IGZsb3dpZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz05NDE9c3RhdGljIGlycXJldHVybl90IGJyY21mX3BjaWVfaXNyX3RocmVhZChpbnQgaXJxLCB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NTUtXHRcdFx0aWYgKGRldmluZm8tXHUwMDNlc3RhdGUgPT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6OTU2Olx0XHRcdFx0YnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTk1Ny1cdFx0XHRcdFx0XHRcdFx1MDAyNmRldmluZm8tXHUwMDNlcGRldi1cdTAwM2VkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjQwMQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDM4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIEFuYWx5c2lzKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIHNpdHVhdGlvbi4gVGhpcyBjb2RlIEkmIzM5O20gbG9va2luZyBhdCwgdGhlIGBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c2AgZnVuY3Rpb24sIGlzIGNhbGxlZCBmcm9tIGBicmNtZl9wY2llX2lzcl90aHJlYWRgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgc3BlY2lmaWMgdG8gdGhlIFBDSWUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEJyb2FkY29tIFdpLUZpIGRyaXZlci4gR2l2ZW4gUUVNVSYjMzk7cyBsaW1pdGF0aW9ucyBhbmQgc3l6a2FsbGVyJiMzOTtzIGN1cnJlbnQgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBJIGNhbiYjMzk7dCBzZWUgYSB3YXkgdG8gdHJpZ2dlciB0aGlzIGNvZGUgcGF0aCBpbiBhIHZpcnR1YWxpemVkIHNldHVwLiBUaGUgUENJIGZ1enplciBjYW4mIzM5O3QgbWVhbmluZ2Z1bGx5IGludGVyYWN0IHdpdGggdGhlIERNQSByaW5ncywgaW50ZXJydXB0IGhhbmRsaW5nLCBvciBldmVuIGdldCB0aGUgZGV2aWNlIGludG8gdGhlIHJlcXVpcmVkIGBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQYCBzdGF0ZSBhbmQgc2V0IHVwIHRoZSBuZWNlc3NhcnkgRE1BIHJpbmdzIGFuZCBmaXJtd2FyZSB0byByZWFjaCB0aGlzIGZ1bmN0aW9uLgoKSSBkaWQgYnJpZWZseSB3b25kZXIgaWYgbWFjODAyMTFfaHdzaW0gbWlnaHQgYmUgYSBiYWNrZG9vciwgYnV0IG5vLCB0aGF0JiMzOTtzIGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBtYWM4MDIxMSwgYW5kIGBicmNtZm1hY2AgaXMgYSBGdWxsTUFDIGRyaXZlciB0aGF0IHVzZXMgY2ZnODAyMTEgYW5kIGl0cyBvd24gZmlybXdhcmUuIE5vIGx1Y2sgdGhlcmUuIFRoZXJlJiMzOTtzIG5vIGtub3duIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhlIGBicmNtZm1hY2AgUENJZSBzZXR1cCwgZWl0aGVyLgoKTGV0JiMzOTtzIGRvIGEgc2FuaXR5IGNoZWNrLiBDYW4gYGJyY21mbWFjYCBiZSBmdXp6ZWQgYXQgYWxsPyBXZWxsLCBzeXprYWxsZXIgZG9lcyBoYXZlIGEgVVNCIGZ1enplciwgYW5kIHRoYXQgd291bGQgZ2l2ZSB1cyBzb21lIGNvdmVyYWdlIG9mIGBicmNtZm1hY2AuIEhvd2V2ZXIsIFVTQiB1c2VzIGBCUkNNRl9QUk9UT19CQ0RDYCwgYW5kIHdlJiMzOTtyZSBsb29raW5nIGF0IGBtc2didWYuY2AsIHdoaWNoIGlzIGRpcmVjdGx5IHRpZWQgdG8gYEJSQ01GX1BST1RPX01TR0JVRmAuIFRoZSBVU0IgcGF0aCB3b24mIzM5O3QgdG91Y2ggdGhpcyBjb2RlLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBtc2didWYuY2AsIHdoaWNoIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgYHBjaWUuY2AuCgpUbyBzb2xpZGlmeSB0aGlzLCBsZXQmIzM5O3MgdmVyaWZ5IHRoYXQgYEJSQ01GX1BST1RPX01TR0JVRmAgaXMgbm90IHVzZWQgZWxzZXdoZXJlLiBUaGF0IHdpbGwgY2VtZW50IHRoZSBjb25jbHVzaW9uIHRoYXQgdGhpcyBjb2RlIHBhdGggaXMgYWJzb2x1dGVseSB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUkNNRl9QUk9UT19NU0dCVUYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaD01MT1lbnVtIGJyY21mX2J1c19wcm90b2NvbF90eXBlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC01Mi1cdEJSQ01GX1BST1RPX0JDREMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6NTM6XHRCUkNNRl9QUk9UT19NU0dCVUZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC01NC19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjQ0Mz1icmNtZl9wY2llX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTE5LVx0YnVzLVx1MDAzZW9wcyA9IFx1MDAyNmJyY21mX3BjaWVfYnVzX29wcztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjUyMDpcdGJ1cy1cdTAwM2Vwcm90b190eXBlID0gQlJDTUZfUFJPVE9fTVNHQlVGO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTIxLVx0YnVzLVx1MDAzZWNoaXAgPSBkZXZpbmZvLVx1MDAzZWNvcmVpZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYz0yMD1pbnQgYnJjbWZfcHJvdG9fYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzQtXHRcdFx0Z290byBmYWlsO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6MzU6XHR9IGVsc2UgaWYgKGRydnItXHUwMDNlYnVzX2lmLVx1MDAzZXByb3RvX3R5cGUgPT0gQlJDTUZfUFJPVE9fTVNHQlVGKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zNi1cdFx0aWYgKGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goZHJ2cikpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9NTk9dm9pZCBicmNtZl9wcm90b19kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy02NS1cdFx0XHRicmNtZl9wcm90b19iY2RjX2RldGFjaChkcnZyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjY2Olx0XHRlbHNlIGlmIChkcnZyLVx1MDAzZWJ1c19pZi1cdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTY3LVx0XHRcdGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goZHJ2cik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA3OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDE4CgkJCQkJCQlvdXRwdXQ6IDEzMAoJCQkJCQkJdGhvdWdodHM6IDE4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRGVjaXNpb24gZm9yIHRoZSBCcm9hZGNvbSBXaS1GaSBQQ0llIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCYjMzk7cyBjbGVhciB0aGF0IHRoZSBjb2RlIHNldHRpbmcgYEJSQ01GX1BST1RPX01TR0JVRmAgaXMgKm9ubHkqIGZvdW5kIHdpdGhpbiBgcGNpZS5jYC4gQW5kIHRoYXQmIzM5O3Mgc3BlY2lmaWNhbGx5IHRoZSBQQ0llIGRyaXZlciBmb3IgQnJvYWRjb20gV2ktRmkgY2hpcHMuIEhlcmUmIzM5O3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZzogUUVNVSwgYXMgd2Uga25vdywgZG9lc24mIzM5O3QgZW11bGF0ZSBCcm9hZGNvbSBXaS1GaSBQQ0llIGNhcmRzLiBUaGVyZWZvcmUsIGJ5IGl0cyBuYXR1cmUsIHRoaXMgY29kZSBwYXRoIGlzIHNpbXBseSBpbmFjY2Vzc2libGUgd2l0aGluIGEgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudC4KCk5vdywgcmV2aWV3aW5nIHRoZSBwcm9tcHQmIzM5O3MgZXhwbGljaXQgaW5zdHJ1Y3Rpb24sIGl0IG5haWxzIHRoaXMgc2NlbmFyaW86ICYjMzQ7UmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKClRoaXMgaXMgYSB0ZXh0Ym9vayBtYXRjaC4gVGhlIGBicmNtZm1hY2AgUENJZSBkcml2ZXIgKnVuZXF1aXZvY2FsbHkqIHJlcXVpcmVzIGEgcGh5c2ljYWwgQnJvYWRjb20gV2ktRmkgUENJZSBjYXJkLiBUaGUgZW11bGF0aW9uIGp1c3QgaXNuJiMzOTt0IHRoZXJlIGluIHN0YW5kYXJkIFFFTVUuIFNvLCBhZnRlciB0aGlzIGFuYWx5c2lzLCBpdCYjMzk7cyBjbGVhcjogYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBmdXp6aW5nIGVmZm9ydCB3b3VsZCBiZSB1bnByb2R1Y3RpdmUgYmVjYXVzZSBpdCBjYW4mIzM5O3QgcmVhY2ggdGhpcyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtc2didWYuY2AgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKS4gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgZXhjbHVzaXZlbHkgdXNlZCBieSB0aGUgUENJZSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlciAoYHBjaWUuY2ApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgQnJvYWRjb20gV2ktRmkgUENJZSBoYXJkd2FyZSwgYW5kIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IERNQSByaW5ncyBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb25zIHJlcXVpcmVkIHRvIHJlYWNoIHRoaXMgY29kZSwgaXQgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBtc2didWYuY2AgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKS4gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgZXhjbHVzaXZlbHkgdXNlZCBieSB0aGUgUENJZSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlciAoYHBjaWUuY2ApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgQnJvYWRjb20gV2ktRmkgUENJZSBoYXJkd2FyZSwgYW5kIHN5emthbGxlciYjMzk7cyBQQ0kgZnV6emVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IERNQSByaW5ncyBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb25zIHJlcXVpcmVkIHRvIHJlYWNoIHRoaXMgY29kZSwgaXQgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNzo1NjozMy44NzkzODk1NzlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTc4NDQ2Njg1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG1zZ2J1Zi5jYCBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlciAoYnJjbWZtYWMpLiBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgTVNHQlVGIHByb3RvY29sLCB3aGljaCBpcyBleGNsdXNpdmVseSB1c2VkIGJ5IHRoZSBQQ0llIGludGVyZmFjZSBvZiB0aGUgZHJpdmVyIChgcGNpZS5jYCkuIFNpbmNlIFFFTVUgZG9lcyBub3QgZW11bGF0ZSBCcm9hZGNvbSBXaS1GaSBQQ0llIGhhcmR3YXJlLCBhbmQgc3l6a2FsbGVyJ3MgUENJIGZ1enplciBjYW5ub3QgZW11bGF0ZSB0aGUgY29tcGxleCBETUEgcmluZ3MgYW5kIGZpcm13YXJlIGludGVyYWN0aW9ucyByZXF1aXJlZCB0byByZWFjaCB0aGlzIGNvZGUsIGl0IGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNzo1NjozMy44NzkzOTY2ODlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NTI1MjEwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI2NTUyYzI3YTJkMDE1NzIyZTZjM2U2N2JmYWIxMGZlMTU2NWNjNjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwNzo1NjozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcXG5pbmRleCBiYTFjZTE1NTJlMGY0Li45NTk2NTliZmVhOTllIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuY1xcbkBAIC0yNCw3ICsyNCw2IEBAXFxuICNpbmNsdWRlIFxcXCJidXMuaFxcXCJcXG4gI2luY2x1ZGUgXFxcInRyYWNlcG9pbnQuaFxcXCJcXG4gXFxuLVxcbiAjZGVmaW5lIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVRcXHRcXHRtc2Vjc190b19qaWZmaWVzKDIwMDApXFxuIFxcbiAjZGVmaW5lIE1TR0JVRl9UWVBFX0dFTl9TVEFUVVNcXHRcXHRcXHQweDFcXG5AQCAtMjkxLDcgKzI5MCw2IEBAIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzIHtcXG4gXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpO1xcbiBcXG4tXFxuIHN0YXRpYyBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqXFxuIGJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcyxcXG4gXFx0XFx0XFx0IGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbilcXG5AQCAtMzE0LDcgKzMxMiw2IEBAIGJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcyxcXG4gXFx0cmV0dXJuIHBrdGlkcztcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnRcXG4gYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0IHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMsXFxuQEAgLTM2Miw3ICszNTksNiBAQCBicmNtZl9tc2didWZfYWxsb2NfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqXFxuIGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLFxcbiBcXHRcXHQgICAgICAgdTMyIGlkeClcXG5AQCAtMzkwLDcgKzM4Niw2IEBAIGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLFxcbiBcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0ICAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcylcXG5AQCAtNDE2LDcgKzQxMSw2IEBAIGJyY21mX21zZ2J1Zl9yZWxlYXNlX2FycmF5KHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0a2ZyZWUocGt0aWRzKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yZWxlYXNlX3BrdGlkcyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG4gXFx0aWYgKG1zZ2J1Zi1cXHUwMDNlcnhfcGt0aWRzKVxcbkBAIC00MjcsNyArNDIxLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4gXFx0XFx0XFx0XFx0XFx0ICAgbXNnYnVmLVxcdTAwM2V0eF9wa3RpZHMpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfaW9jdGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxcbiBcXHRcXHRcXHRcXHQgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4pXFxuIHtcXG5AQCAtNDczLDcgKzQ2Niw2IEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X2lvY3RsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG4gXFx0cmV0dXJuIHdhaXRfZXZlbnRfdGltZW91dChtc2didWYtXFx1MDAzZWlvY3RsX3Jlc3Bfd2FpdCxcXG5AQCAtNDgxLDE0ICs0NzMsMTIgQEAgc3RhdGljIGludCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWl0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4gXFx0XFx0XFx0XFx0ICBNU0dCVUZfSU9DVExfUkVTUF9USU1FT1VUKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9pb2N0bF9yZXNwX3dha2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbiB7XFxuIFxcdG1zZ2J1Zi1cXHUwMDNlY3RsX2NvbXBsZXRlZCA9IHRydWU7XFxuIFxcdHdha2VfdXAoXFx1MDAyNm1zZ2J1Zi1cXHUwMDNlaW9jdGxfcmVzcF93YWl0KTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxcbiBcXHRcXHRcXHRcXHQgICB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbiwgaW50ICpmd2VycilcXG4ge1xcbkBAIC01MjYsMTQgKzUxNiwxMiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zZXRfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuIFxcdFxcdFxcdFxcdCB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbiwgaW50ICpmd2VycilcXG4ge1xcbiBcXHRyZXR1cm4gYnJjbWZfbXNnYnVmX3F1ZXJ5X2RjbWQoZHJ2ciwgaWZpZHgsIGNtZCwgYnVmLCBsZW4sIGZ3ZXJyKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2hkcnB1bGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgYm9vbCBkb19md3MsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicmNtZl9pZiAqKmlmcClcXG4ge1xcbkBAIC01NjAsNiArNTQ4LDI3IEBAIGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3Jpbmcoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxcbiBcXHRicmNtZl9mbG93cmluZ19kZWxldGUobXNnYnVmLVxcdTAwM2VmbG93LCBmbG93aWQpO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuK1xcdFxcdFxcdFxcdCAgICB1MTYgZmxvd19yaW5nX2lkLCB1MTYgKmZsb3dpZClcXG4re1xcbitcXHR1MzIgaWQgPSBmbG93X3JpbmdfaWQ7XFxuK1xcbitcXHRpZiAoaWQgXFx1MDAzYyBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUKSB7XFxuK1xcdFxcdGJwaHlfZXJyKG1zZ2J1Zi1cXHUwMDNlZHJ2ciwgXFxcImludmFsaWQgZmxvd3JpbmcgaWQgJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCBmbG93X3JpbmdfaWQpO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rXFxuK1xcdGlkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7XFxuK1xcdGlmIChpZCBcXHUwMDNlPSBtc2didWYtXFx1MDAzZW1heF9mbG93cmluZ3MpIHtcXG4rXFx0XFx0YnBoeV9lcnIobXNnYnVmLVxcdTAwM2VkcnZyLCBcXFwiaW52YWxpZCBmbG93cmluZyBpZCAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0IGZsb3dfcmluZ19pZCk7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4rXFx0KmZsb3dpZCA9IGlkO1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbiBcXG4gc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICpcXG4gYnJjbWZfbXNnYnVmX2RlcXVldWVfd29yayhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuQEAgLTU3OCw3ICs1ODcsNiBAQCBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4gXFx0cmV0dXJuIHdvcms7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdTMyXFxuIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGVfd29ya2VyKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICp3b3JrKVxcbkBAIC02NDcsNyArNjU1LDYgQEAgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV93b3JrZXIoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxcbiBcXHRyZXR1cm4gZmxvd2lkO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xcbkBAIC02NjEsNyArNjY4LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdH1cXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGludCBpZmlkeCxcXG4gXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbkBAIC02OTQsNyArNzAwLDYgQEAgc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxcbiBcXHRyZXR1cm4gZmxvd2lkO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2Zsb3dyaW5nICpmbG93ID0gbXNnYnVmLVxcdTAwM2VmbG93O1xcbkBAIC03NjgsNyArNzczLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXFxuIFxcdGJyY21mX2NvbW1vbnJpbmdfdW5sb2NrKGNvbW1vbnJpbmcpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xcbkBAIC03ODEsNyArNzg1LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXFxuIFxcdH1cXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXFxuIFxcdFxcdFxcdFxcdFxcdGJvb2wgZm9yY2UpXFxuIHtcXG5AQCAtNzk2LDcgKzc5OSw2IEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIGludCBicmNtZl9tc2didWZfdHhfcXVldWVfZGF0YShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuIHtcXG5AQCAtODI0LDcgKzgyNiw2IEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9jb25maWd1cmVfYWRkcl9tb2RlKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0XFx0XFx0XFx0IGVudW0gcHJvdG9fYWRkcl9tb2RlIGFkZHJfbW9kZSlcXG5AQCAtODM0LDcgKzgzNSw2IEBAIGJyY21mX21zZ2J1Zl9jb25maWd1cmVfYWRkcl9tb2RlKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcXG4gXFx0YnJjbWZfZmxvd3JpbmdfY29uZmlndXJlX2FkZHJfbW9kZShtc2didWYtXFx1MDAzZWZsb3csIGlmaWR4LCBhZGRyX21vZGUpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWRcXG4gYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXFxuIHtcXG5AQCAtODQzLDcgKzg0Myw2IEBAIGJyY21mX21zZ2J1Zl9kZWxldGVfcGVlcihzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsIHU4IHBlZXJbRVRIX0FMRU5dKVxcbiBcXHRicmNtZl9mbG93cmluZ19kZWxldGVfcGVlcihtc2didWYtXFx1MDAzZWZsb3csIGlmaWR4LCBwZWVyKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXFxuIHtcXG5AQCAtODUyLDcgKzg1MSw2IEBAIGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXFxuIFxcdGJyY21mX2Zsb3dyaW5nX2FkZF90ZGxzX3BlZXIobXNnYnVmLVxcdTAwM2VmbG93LCBpZmlkeCwgcGVlcik7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZFxcbiBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4ge1xcbkBAIC04NzIsNyArODcwLDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIFxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWRcXG4gYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIHtcXG5AQCAtODgwLDE3ICs4NzcsMjMgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfdHhzdGF0dXMoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIFxcdHN0cnVjdCBtc2didWZfdHhfc3RhdHVzICp0eF9zdGF0dXM7XFxuIFxcdHUzMiBpZHg7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuK1xcdHUxNiBmbG93X3JpbmdfaWQ7XFxuIFxcdHUxNiBmbG93aWQ7XFxuIFxcbiBcXHR0eF9zdGF0dXMgPSAoc3RydWN0IG1zZ2J1Zl90eF9zdGF0dXMgKilidWY7XFxuIFxcdGlkeCA9IGxlMzJfdG9fY3B1KHR4X3N0YXR1cy1cXHUwMDNlbXNnLnJlcXVlc3RfaWQpIC0gMTtcXG4tXFx0Zmxvd2lkID0gbGUxNl90b19jcHUodHhfc3RhdHVzLVxcdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcXG4tXFx0Zmxvd2lkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7XFxuK1xcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XFxuIFxcdHNrYiA9IGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQobXNnYnVmLVxcdTAwM2VkcnZyLVxcdTAwM2VidXNfaWYtXFx1MDAzZWRldixcXG4gXFx0XFx0XFx0XFx0ICAgICBtc2didWYtXFx1MDAzZXR4X3BrdGlkcywgaWR4KTtcXG4gXFx0aWYgKCFza2IpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdGlmICghYnJjbWZfbXNnYnVmX2dldF9mbG93aWQobXNnYnVmLCBmbG93X3JpbmdfaWQsIFxcdTAwMjZmbG93aWQpKSB7XFxuK1xcdFxcdGJyY21mX3R4ZmluYWxpemUoYnJjbWZfZ2V0X2lmcChtc2didWYtXFx1MDAzZWRydnIsIHR4X3N0YXR1cy1cXHUwMDNlbXNnLmlmaWR4KSxcXG4rXFx0XFx0XFx0XFx0IHNrYiwgZmFsc2UpO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4rXFxuIFxcdHNldF9iaXQoZmxvd2lkLCBtc2didWYtXFx1MDAzZXR4c3RhdHVzX2RvbmVfbWFwKTtcXG4gXFx0Y29tbW9ucmluZyA9IG1zZ2J1Zi1cXHUwMDNlZmxvd3JpbmdzW2Zsb3dpZF07XFxuIFxcdGF0b21pY19kZWMoXFx1MDAyNmNvbW1vbnJpbmctXFx1MDAzZW91dHN0YW5kaW5nX3R4KTtcXG5AQCAtODk5LDcgKzkwMiw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiBcXHRcXHRcXHQgc2tiLCB0cnVlKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB1MzIgYnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBjb3VudClcXG4ge1xcbiBcXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLVxcdTAwM2VkcnZyO1xcbkBAIC05NzcsNyArOTc5LDYgQEAgc3RhdGljIHUzMiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTMyIGNvdW50KVxcbiBcXHRyZXR1cm4gaTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbiB7XFxuQEAgLTk5NSw3ICs5OTYsNiBAQCBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcXG4gXFx0fVxcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWRcXG4gYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXFxuIHtcXG5AQCAtMTAwNSw3ICsxMDA1LDYgQEAgYnJjbWZfbXNnYnVmX3VwZGF0ZV9yeGJ1ZnBvc3RfY291bnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgcnhjbnQpXFxuIFxcdFxcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwobXNnYnVmKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB1MzJcXG4gYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxcbiBcXHRcXHRcXHQgICAgIHUzMiBjb3VudClcXG5AQCAtMTA3OSw3ICsxMDc4LDYgQEAgYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxcbiBcXHRyZXR1cm4gaTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG4gXFx0dTMyIGNvdW50O1xcbkBAIC0xMDg5LDcgKzEwODcsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxcbiBcXHRtc2didWYtXFx1MDAzZWN1cl9pb2N0bHJlc3BidWYgKz0gY291bnQ7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIHtcXG4gXFx0dTMyIGNvdW50O1xcbkBAIC0xMDk5LDcgKzEwOTYsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfZXZlbnRfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXFxuIFxcdG1zZ2J1Zi1cXHUwMDNlY3VyX2V2ZW50YnVmICs9IGNvdW50O1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cXHUwMDNlZHJ2cjtcXG5AQCAtMTE0Miw3ICsxMTM4LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXFxuIFxcdGJyY211X3BrdF9idWZfZnJlZV9za2Ioc2tiKTtcXG4gfVxcbiBcXG4tXFxuIHN0YXRpYyB2b2lkXFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiB7XFxuQEAgLTEyMzcsMTMgKzEyMzIsMTYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2NyZWF0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuIFxcdHN0cnVjdCBtc2didWZfZmxvd3JpbmdfY3JlYXRlX3Jlc3AgKmZsb3dyaW5nX2NyZWF0ZV9yZXNwO1xcbiBcXHR1MTYgc3RhdHVzO1xcbiBcXHR1MTYgZmxvd2lkO1xcbitcXHR1MTYgZmxvd19yaW5nX2lkO1xcbiBcXG4gXFx0Zmxvd3JpbmdfY3JlYXRlX3Jlc3AgPSAoc3RydWN0IG1zZ2J1Zl9mbG93cmluZ19jcmVhdGVfcmVzcCAqKWJ1ZjtcXG4gXFxuLVxcdGZsb3dpZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVxcdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcXG4tXFx0Zmxvd2lkIC09IEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQ7XFxuK1xcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVxcdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcXG4gXFx0c3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVxcdTAwM2Vjb21wbF9oZHIuc3RhdHVzKTtcXG4gXFxuK1xcdGlmICghYnJjbWZfbXNnYnVmX2dldF9mbG93aWQobXNnYnVmLCBmbG93X3JpbmdfaWQsIFxcdTAwMjZmbG93aWQpKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRpZiAoc3RhdHVzKSB7XFxuIFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJGbG93cmluZyBjcmVhdGlvbiBmYWlsZWQsIGNvZGUgJWRcXFxcblxcXCIsIHN0YXR1cyk7XFxuIFxcdFxcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xcbkBAIC0xMjU3LDcgKzEyNTUsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0YnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShtc2didWYsIGZsb3dpZCwgdHJ1ZSk7XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZFxcbiBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgIHZvaWQgKmJ1ZilcXG5AQCAtMTI2NiwxMyArMTI2MywxNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcXG4gXFx0c3RydWN0IG1zZ2J1Zl9mbG93cmluZ19kZWxldGVfcmVzcCAqZmxvd3JpbmdfZGVsZXRlX3Jlc3A7XFxuIFxcdHUxNiBzdGF0dXM7XFxuIFxcdHUxNiBmbG93aWQ7XFxuK1xcdHUxNiBmbG93X3JpbmdfaWQ7XFxuIFxcbiBcXHRmbG93cmluZ19kZWxldGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2RlbGV0ZV9yZXNwICopYnVmO1xcbiBcXG4tXFx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXFx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xcbi1cXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcXG4rXFx0Zmxvd19yaW5nX2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXFx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xcbiBcXHRzdGF0dXMgPSAgbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXFx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xcbiBcXG4rXFx0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXFx1MDAyNmZsb3dpZCkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdGlmIChzdGF0dXMpIHtcXG4gXFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkZsb3dyaW5nIGRlbGV0aW9uIGZhaWxlZCwgY29kZSAlZFxcXFxuXFxcIiwgc3RhdHVzKTtcXG4gXFx0XFx0YnJjbWZfZmxvd3JpbmdfZGVsZXRlKG1zZ2J1Zi1cXHUwMDNlZmxvdywgZmxvd2lkKTtcXG5AQCAtMTI4NCw3ICsxMjg0LDYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuIFxcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xcbiB9XFxuIFxcbi1cXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4ge1xcbiBcXHRzdHJ1Y3QgYnJjbWZfcHViICpkcnZyID0gbXNnYnVmLVxcdTAwM2VkcnZyO1xcbkBAIC0xMzMzLDcgKzEzMzIsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbiBcXHR9XFxuIH1cXG4gXFxuLVxcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYnJjbWZfY29tbW9ucmluZyAqY29tbW9ucmluZylcXG4ge1xcbkBAIC0xMzY1LDcgKzEzNjMsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuIFxcdFxcdGdvdG8gYWdhaW47XFxuIH1cXG4gXFxuLVxcbiBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9idXMgKmJ1c19pZiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbkBAIC0xMzk3LDcgKzEzOTQsNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tXFxuIHZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cXHUwMDNlcHJvdG8tXFx1MDAzZXBkO1xcbkBAIC0xNjEzLDcgKzE2MDksNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbiBcXHRpZiAoIW1zZ2J1Zi1cXHUwMDNlZmxvdylcXG4gXFx0XFx0Z290byBmYWlsO1xcbiBcXG4tXFxuIFxcdGJyY21mX2RiZyhNU0dCVUYsIFxcXCJGZWVkaW5nIGJ1ZmZlcnMsIHJ4IGRhdGEgJWQsIHJ4IGV2ZW50ICVkLCByeCBpb2N0bCByZXNwICVkXFxcXG5cXFwiLFxcbiBcXHRcXHQgIG1zZ2J1Zi1cXHUwMDNlbWF4X3J4YnVmcG9zdCwgbXNnYnVmLVxcdTAwM2VtYXhfZXZlbnRidWYsXFxuIFxcdFxcdCAgbXNnYnVmLVxcdTAwM2VtYXhfaW9jdGxyZXNwYnVmKTtcXG5AQCAtMTY1Myw3ICsxNjQ4LDYgQEAgaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4gXFx0cmV0dXJuIC1FTk9NRU07XFxuIH1cXG4gXFxuLVxcbiB2b2lkIGJyY21mX3Byb3RvX21zZ2J1Zl9kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4ge1xcbiBcXHRzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU2OjM0LjE3NTM3OTY1NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUxNDg4NDcxODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbXNnYnVmLmNgIGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyIChicmNtZm1hYykuIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBNU0dCVUYgcHJvdG9jb2wsIHdoaWNoIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgdGhlIFBDSWUgaW50ZXJmYWNlIG9mIHRoZSBkcml2ZXIgKGBwY2llLmNgKS4gU2luY2UgUUVNVSBkb2VzIG5vdCBlbXVsYXRlIEJyb2FkY29tIFdpLUZpIFBDSWUgaGFyZHdhcmUsIGFuZCBzeXprYWxsZXIncyBQQ0kgZnV6emVyIGNhbm5vdCBlbXVsYXRlIHRoZSBjb21wbGV4IERNQSByaW5ncyBhbmQgZmlybXdhcmUgaW50ZXJhY3Rpb25zIHJlcXVpcmVkIHRvIHJlYWNoIHRoaXMgY29kZSwgaXQgaXMgdW5yZWFjaGFibGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI2NTUyYzI3YTJkMDE1NzIyZTZjM2U2N2JmYWIxMGZlMTU2NWNjNjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA3OjU2OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXG5pbmRleCBiYTFjZTE1NTJlMGY0Li45NTk2NTliZmVhOTllIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmNcbkBAIC0yNCw3ICsyNCw2IEBAXG4gI2luY2x1ZGUgXCJidXMuaFwiXG4gI2luY2x1ZGUgXCJ0cmFjZXBvaW50LmhcIlxuIFxuLVxuICNkZWZpbmUgTVNHQlVGX0lPQ1RMX1JFU1BfVElNRU9VVFx0XHRtc2Vjc190b19qaWZmaWVzKDIwMDApXG4gXG4gI2RlZmluZSBNU0dCVUZfVFlQRV9HRU5fU1RBVFVTXHRcdFx0MHgxXG5AQCAtMjkxLDcgKzI5MCw2IEBAIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzIHtcbiBcbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKTtcbiBcbi1cbiBzdGF0aWMgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKlxuIGJyY21mX21zZ2J1Zl9pbml0X3BrdGlkcyh1MzIgbnJfYXJyYXlfZW50cmllcyxcbiBcdFx0XHQgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKVxuQEAgLTMxNCw3ICszMTIsNiBAQCBicmNtZl9tc2didWZfaW5pdF9wa3RpZHModTMyIG5yX2FycmF5X2VudHJpZXMsXG4gXHRyZXR1cm4gcGt0aWRzO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50XG4gYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHQgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcyxcbkBAIC0zNjIsNyArMzU5LDYgQEAgYnJjbWZfbXNnYnVmX2FsbG9jX3BrdGlkKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1cbiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKlxuIGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3BrdGlkcyAqcGt0aWRzLFxuIFx0XHQgICAgICAgdTMyIGlkeClcbkBAIC0zOTAsNyArMzg2LDYgQEAgYnJjbWZfbXNnYnVmX2dldF9wa3RpZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBicmNtZl9tc2didWZfcGt0aWRzICpwa3RpZHMsXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcmVsZWFzZV9hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgc3RydWN0IGJyY21mX21zZ2J1Zl9wa3RpZHMgKnBrdGlkcylcbkBAIC00MTYsNyArNDExLDYgQEAgYnJjbWZfbXNnYnVmX3JlbGVhc2VfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0a2ZyZWUocGt0aWRzKTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRpZiAobXNnYnVmLVx1MDAzZXJ4X3BrdGlkcylcbkBAIC00MjcsNyArNDIxLDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3JlbGVhc2VfcGt0aWRzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiBcdFx0XHRcdFx0ICAgbXNnYnVmLVx1MDAzZXR4X3BrdGlkcyk7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X2lvY3RsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCB1aW50IGNtZCwgdm9pZCAqYnVmLCB1aW50IGxlbilcbiB7XG5AQCAtNDczLDcgKzQ2Niw2IEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X2lvY3RsKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4ge1xuIFx0cmV0dXJuIHdhaXRfZXZlbnRfdGltZW91dChtc2didWYtXHUwMDNlaW9jdGxfcmVzcF93YWl0LFxuQEAgLTQ4MSwxNCArNDczLDEyIEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2lvY3RsX3Jlc3Bfd2FpdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRcdFx0XHQgIE1TR0JVRl9JT0NUTF9SRVNQX1RJTUVPVVQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfaW9jdGxfcmVzcF93YWtlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHRtc2didWYtXHUwMDNlY3RsX2NvbXBsZXRlZCA9IHRydWU7XG4gXHR3YWtlX3VwKFx1MDAyNm1zZ2J1Zi1cdTAwM2Vpb2N0bF9yZXNwX3dhaXQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdFx0XHRcdCAgIHVpbnQgY21kLCB2b2lkICpidWYsIHVpbnQgbGVuLCBpbnQgKmZ3ZXJyKVxuIHtcbkBAIC01MjYsMTQgKzUxNiwxMiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCxcbiBcdHJldHVybiAwO1xuIH1cbiBcbi1cbiBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zZXRfZGNtZChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCBpbnQgaWZpZHgsXG4gXHRcdFx0XHQgdWludCBjbWQsIHZvaWQgKmJ1ZiwgdWludCBsZW4sIGludCAqZndlcnIpXG4ge1xuIFx0cmV0dXJuIGJyY21mX21zZ2J1Zl9xdWVyeV9kY21kKGRydnIsIGlmaWR4LCBjbWQsIGJ1ZiwgbGVuLCBmd2Vycik7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX2hkcnB1bGwoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgYm9vbCBkb19md3MsXG4gXHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJjbWZfaWYgKippZnApXG4ge1xuQEAgLTU2MCw2ICs1NDgsMjcgQEAgYnJjbWZfbXNnYnVmX3JlbW92ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXG4gXHRicmNtZl9mbG93cmluZ19kZWxldGUobXNnYnVmLVx1MDAzZWZsb3csIGZsb3dpZCk7XG4gfVxuIFxuK3N0YXRpYyBib29sIGJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbitcdFx0XHRcdCAgICB1MTYgZmxvd19yaW5nX2lkLCB1MTYgKmZsb3dpZClcbit7XG4rXHR1MzIgaWQgPSBmbG93X3JpbmdfaWQ7XG4rXG4rXHRpZiAoaWQgXHUwMDNjIEJSQ01GX0gyRF9NU0dSSU5HX0ZMT1dSSU5HX0lEU1RBUlQpIHtcbitcdFx0YnBoeV9lcnIobXNnYnVmLVx1MDAzZWRydnIsIFwiaW52YWxpZCBmbG93cmluZyBpZCAldVxcblwiLFxuK1x0XHRcdCBmbG93X3JpbmdfaWQpO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXG4rXHRpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuK1x0aWYgKGlkIFx1MDAzZT0gbXNnYnVmLVx1MDAzZW1heF9mbG93cmluZ3MpIHtcbitcdFx0YnBoeV9lcnIobXNnYnVmLVx1MDAzZWRydnIsIFwiaW52YWxpZCBmbG93cmluZyBpZCAldVxcblwiLFxuK1x0XHRcdCBmbG93X3JpbmdfaWQpO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXG4rXHQqZmxvd2lkID0gaWQ7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4gXG4gc3RhdGljIHN0cnVjdCBicmNtZl9tc2didWZfd29ya19pdGVtICpcbiBicmNtZl9tc2didWZfZGVxdWV1ZV93b3JrKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbkBAIC01NzgsNyArNTg3LDYgQEAgYnJjbWZfbXNnYnVmX2RlcXVldWVfd29yayhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYpXG4gXHRyZXR1cm4gd29yaztcbiB9XG4gXG4tXG4gc3RhdGljIHUzMlxuIGJyY21mX21zZ2J1Zl9mbG93cmluZ19jcmVhdGVfd29ya2VyKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgYnJjbWZfbXNnYnVmX3dvcmtfaXRlbSAqd29yaylcbkBAIC02NDcsNyArNjU1LDYgQEAgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV93b3JrZXIoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0cmV0dXJuIGZsb3dpZDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX2Zsb3dyaW5nX3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xuQEAgLTY2MSw3ICs2NjgsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfZmxvd3Jpbmdfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdH1cbiB9XG4gXG4tXG4gc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbkBAIC02OTQsNyArNzAwLDYgQEAgc3RhdGljIHUzMiBicmNtZl9tc2didWZfZmxvd3JpbmdfY3JlYXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIGZsb3dpZDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4ZmxvdyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiBmbG93aWQpXG4ge1xuIFx0c3RydWN0IGJyY21mX2Zsb3dyaW5nICpmbG93ID0gbXNnYnVmLVx1MDAzZWZsb3c7XG5AQCAtNzY4LDcgKzc3Myw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3coc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MTYgZmxvd2lkKVxuIFx0YnJjbWZfY29tbW9ucmluZ191bmxvY2soY29tbW9ucmluZyk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl90eGZsb3dfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29ya2VyKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZjtcbkBAIC03ODEsNyArNzg1LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3R4Zmxvd193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrZXIpXG4gXHR9XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3NjaGVkdWxlX3R4ZGF0YShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUzMiBmbG93aWQsXG4gXHRcdFx0XHRcdGJvb2wgZm9yY2UpXG4ge1xuQEAgLTc5Niw3ICs3OTksNiBAQCBzdGF0aWMgaW50IGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgZmxvd2lkLFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG5AQCAtODI0LDcgKzgyNiw2IEBAIHN0YXRpYyBpbnQgYnJjbWZfbXNnYnVmX3R4X3F1ZXVlX2RhdGEoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0XHRcdFx0IGVudW0gcHJvdG9fYWRkcl9tb2RlIGFkZHJfbW9kZSlcbkBAIC04MzQsNyArODM1LDYgQEAgYnJjbWZfbXNnYnVmX2NvbmZpZ3VyZV9hZGRyX21vZGUoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LFxuIFx0YnJjbWZfZmxvd3JpbmdfY29uZmlndXJlX2FkZHJfbW9kZShtc2didWYtXHUwMDNlZmxvdywgaWZpZHgsIGFkZHJfbW9kZSk7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2RlbGV0ZV9wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4ge1xuQEAgLTg0Myw3ICs4NDMsNiBAQCBicmNtZl9tc2didWZfZGVsZXRlX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbiBcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZV9wZWVyKG1zZ2J1Zi1cdTAwM2VmbG93LCBpZmlkeCwgcGVlcik7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX2FkZF90ZGxzX3BlZXIoc3RydWN0IGJyY21mX3B1YiAqZHJ2ciwgaW50IGlmaWR4LCB1OCBwZWVyW0VUSF9BTEVOXSlcbiB7XG5AQCAtODUyLDcgKzg1MSw2IEBAIGJyY21mX21zZ2J1Zl9hZGRfdGRsc19wZWVyKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIGludCBpZmlkeCwgdTggcGVlcltFVEhfQUxFTl0pXG4gXHRicmNtZl9mbG93cmluZ19hZGRfdGRsc19wZWVyKG1zZ2J1Zi1cdTAwM2VmbG93LCBpZmlkeCwgcGVlcik7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkXG4gYnJjbWZfbXNnYnVmX3Byb2Nlc3NfaW9jdGxfY29tcGxldGUoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4ge1xuQEAgLTg3Miw3ICs4NzAsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19pb2N0bF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdGJyY21mX21zZ2J1Zl9yeGJ1Zl9pb2N0bHJlc3BfcG9zdChtc2didWYpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbkBAIC04ODAsMTcgKzg3NywyMyBAQCBicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1cyhzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcbiBcdHN0cnVjdCBtc2didWZfdHhfc3RhdHVzICp0eF9zdGF0dXM7XG4gXHR1MzIgaWR4O1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdHUxNiBmbG93X3JpbmdfaWQ7XG4gXHR1MTYgZmxvd2lkO1xuIFxuIFx0dHhfc3RhdHVzID0gKHN0cnVjdCBtc2didWZfdHhfc3RhdHVzICopYnVmO1xuIFx0aWR4ID0gbGUzMl90b19jcHUodHhfc3RhdHVzLVx1MDAzZW1zZy5yZXF1ZXN0X2lkKSAtIDE7XG4tXHRmbG93aWQgPSBsZTE2X3RvX2NwdSh0eF9zdGF0dXMtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4tXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbitcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHR4X3N0YXR1cy1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbiBcdHNrYiA9IGJyY21mX21zZ2J1Zl9nZXRfcGt0aWQobXNnYnVmLVx1MDAzZWRydnItXHUwMDNlYnVzX2lmLVx1MDAzZWRldixcbiBcdFx0XHRcdCAgICAgbXNnYnVmLVx1MDAzZXR4X3BrdGlkcywgaWR4KTtcbiBcdGlmICghc2tiKVxuIFx0XHRyZXR1cm47XG4gXG4rXHRpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCBcdTAwMjZmbG93aWQpKSB7XG4rXHRcdGJyY21mX3R4ZmluYWxpemUoYnJjbWZfZ2V0X2lmcChtc2didWYtXHUwMDNlZHJ2ciwgdHhfc3RhdHVzLVx1MDAzZW1zZy5pZmlkeCksXG4rXHRcdFx0XHQgc2tiLCBmYWxzZSk7XG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdHNldF9iaXQoZmxvd2lkLCBtc2didWYtXHUwMDNldHhzdGF0dXNfZG9uZV9tYXApO1xuIFx0Y29tbW9ucmluZyA9IG1zZ2J1Zi1cdTAwM2VmbG93cmluZ3NbZmxvd2lkXTtcbiBcdGF0b21pY19kZWMoXHUwMDI2Y29tbW9ucmluZy1cdTAwM2VvdXRzdGFuZGluZ190eCk7XG5AQCAtODk5LDcgKzkwMiw2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIFx0XHRcdCBza2IsIHRydWUpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgY291bnQpXG4ge1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cdTAwM2VkcnZyO1xuQEAgLTk3Nyw3ICs5NzksNiBAQCBzdGF0aWMgdTMyIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB1MzIgY291bnQpXG4gXHRyZXR1cm4gaTtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWRcbiBicmNtZl9tc2didWZfcnhidWZfZGF0YV9maWxsKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG5AQCAtOTk1LDcgKzk5Niw2IEBAIGJyY21mX21zZ2J1Zl9yeGJ1Zl9kYXRhX2ZpbGwoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0fVxuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl91cGRhdGVfcnhidWZwb3N0X2NvdW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiwgdTE2IHJ4Y250KVxuIHtcbkBAIC0xMDA1LDcgKzEwMDUsNiBAQCBicmNtZl9tc2didWZfdXBkYXRlX3J4YnVmcG9zdF9jb3VudChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHUxNiByeGNudClcbiBcdFx0YnJjbWZfbXNnYnVmX3J4YnVmX2RhdGFfZmlsbChtc2didWYpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdTMyXG4gYnJjbWZfbXNnYnVmX3J4YnVmX2N0cmxfcG9zdChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIGJvb2wgZXZlbnRfYnVmLFxuIFx0XHRcdCAgICAgdTMyIGNvdW50KVxuQEAgLTEwNzksNyArMTA3OCw2IEBAIGJyY21mX21zZ2J1Zl9yeGJ1Zl9jdHJsX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCBib29sIGV2ZW50X2J1ZixcbiBcdHJldHVybiBpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIHtcbiBcdHUzMiBjb3VudDtcbkBAIC0xMDg5LDcgKzEwODcsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcnhidWZfaW9jdGxyZXNwX3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0bXNnYnVmLVx1MDAzZWN1cl9pb2N0bHJlc3BidWYgKz0gY291bnQ7XG4gfVxuIFxuLVxuIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9yeGJ1Zl9ldmVudF9wb3N0KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZilcbiB7XG4gXHR1MzIgY291bnQ7XG5AQCAtMTA5OSw3ICsxMDk2LDYgQEAgc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3J4YnVmX2V2ZW50X3Bvc3Qoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmKVxuIFx0bXNnYnVmLVx1MDAzZWN1cl9ldmVudGJ1ZiArPSBjb3VudDtcbiB9XG4gXG4tXG4gc3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLCB2b2lkICpidWYpXG4ge1xuIFx0c3RydWN0IGJyY21mX3B1YiAqZHJ2ciA9IG1zZ2J1Zi1cdTAwM2VkcnZyO1xuQEAgLTExNDIsNyArMTEzOCw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2V2ZW50KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIFx0YnJjbXVfcGt0X2J1Zl9mcmVlX3NrYihza2IpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4X2NvbXBsZXRlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbkBAIC0xMjM3LDEzICsxMjMyLDE2IEBAIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19jcmVhdGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0c3RydWN0IG1zZ2J1Zl9mbG93cmluZ19jcmVhdGVfcmVzcCAqZmxvd3JpbmdfY3JlYXRlX3Jlc3A7XG4gXHR1MTYgc3RhdHVzO1xuIFx0dTE2IGZsb3dpZDtcbitcdHUxNiBmbG93X3JpbmdfaWQ7XG4gXG4gXHRmbG93cmluZ19jcmVhdGVfcmVzcCA9IChzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2NyZWF0ZV9yZXNwICopYnVmO1xuIFxuLVx0Zmxvd2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfY3JlYXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4tXHRmbG93aWQgLT0gQlJDTUZfSDJEX01TR1JJTkdfRkxPV1JJTkdfSURTVEFSVDtcbitcdGZsb3dfcmluZ19pZCA9IGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5mbG93X3JpbmdfaWQpO1xuIFx0c3RhdHVzID0gIGxlMTZfdG9fY3B1KGZsb3dyaW5nX2NyZWF0ZV9yZXNwLVx1MDAzZWNvbXBsX2hkci5zdGF0dXMpO1xuIFxuK1x0aWYgKCFicmNtZl9tc2didWZfZ2V0X2Zsb3dpZChtc2didWYsIGZsb3dfcmluZ19pZCwgXHUwMDI2Zmxvd2lkKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKHN0YXR1cykge1xuIFx0XHRicGh5X2VycihkcnZyLCBcIkZsb3dyaW5nIGNyZWF0aW9uIGZhaWxlZCwgY29kZSAlZFxcblwiLCBzdGF0dXMpO1xuIFx0XHRicmNtZl9tc2didWZfcmVtb3ZlX2Zsb3dyaW5nKG1zZ2J1ZiwgZmxvd2lkKTtcbkBAIC0xMjU3LDcgKzEyNTUsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfY3JlYXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdGJyY21mX21zZ2J1Zl9zY2hlZHVsZV90eGRhdGEobXNnYnVmLCBmbG93aWQsIHRydWUpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZFxuIGJyY21mX21zZ2J1Zl9wcm9jZXNzX2Zsb3dfcmluZ19kZWxldGVfcmVzcG9uc2Uoc3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmLFxuIFx0XHRcdFx0XHQgICAgICAgdm9pZCAqYnVmKVxuQEAgLTEyNjYsMTMgKzEyNjMsMTYgQEAgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfZmxvd19yaW5nX2RlbGV0ZV9yZXNwb25zZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRzdHJ1Y3QgbXNnYnVmX2Zsb3dyaW5nX2RlbGV0ZV9yZXNwICpmbG93cmluZ19kZWxldGVfcmVzcDtcbiBcdHUxNiBzdGF0dXM7XG4gXHR1MTYgZmxvd2lkO1xuK1x0dTE2IGZsb3dfcmluZ19pZDtcbiBcbiBcdGZsb3dyaW5nX2RlbGV0ZV9yZXNwID0gKHN0cnVjdCBtc2didWZfZmxvd3JpbmdfZGVsZXRlX3Jlc3AgKilidWY7XG4gXG4tXHRmbG93aWQgPSBsZTE2X3RvX2NwdShmbG93cmluZ19kZWxldGVfcmVzcC1cdTAwM2Vjb21wbF9oZHIuZmxvd19yaW5nX2lkKTtcbi1cdGZsb3dpZCAtPSBCUkNNRl9IMkRfTVNHUklOR19GTE9XUklOR19JRFNUQVJUO1xuK1x0Zmxvd19yaW5nX2lkID0gbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLmZsb3dfcmluZ19pZCk7XG4gXHRzdGF0dXMgPSAgbGUxNl90b19jcHUoZmxvd3JpbmdfZGVsZXRlX3Jlc3AtXHUwMDNlY29tcGxfaGRyLnN0YXR1cyk7XG4gXG4rXHRpZiAoIWJyY21mX21zZ2J1Zl9nZXRfZmxvd2lkKG1zZ2J1ZiwgZmxvd19yaW5nX2lkLCBcdTAwMjZmbG93aWQpKVxuK1x0XHRyZXR1cm47XG4rXG4gXHRpZiAoc3RhdHVzKSB7XG4gXHRcdGJwaHlfZXJyKGRydnIsIFwiRmxvd3JpbmcgZGVsZXRpb24gZmFpbGVkLCBjb2RlICVkXFxuXCIsIHN0YXR1cyk7XG4gXHRcdGJyY21mX2Zsb3dyaW5nX2RlbGV0ZShtc2didWYtXHUwMDNlZmxvdywgZmxvd2lkKTtcbkBAIC0xMjg0LDcgKzEyODQsNiBAQCBicmNtZl9tc2didWZfcHJvY2Vzc19mbG93X3JpbmdfZGVsZXRlX3Jlc3BvbnNlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdGJyY21mX21zZ2J1Zl9yZW1vdmVfZmxvd3JpbmcobXNnYnVmLCBmbG93aWQpO1xuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9wdWIgKmRydnIgPSBtc2didWYtXHUwMDNlZHJ2cjtcbkBAIC0xMzMzLDcgKzEzMzIsNiBAQCBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxuIFx0fVxuIH1cbiBcbi1cbiBzdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXG4gXHRcdFx0XHQgICAgc3RydWN0IGJyY21mX2NvbW1vbnJpbmcgKmNvbW1vbnJpbmcpXG4ge1xuQEAgLTEzNjUsNyArMTM2Myw2IEBAIHN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9wcm9jZXNzX3J4KHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZixcbiBcdFx0Z290byBhZ2FpbjtcbiB9XG4gXG4tXG4gaW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldilcbiB7XG4gXHRzdHJ1Y3QgYnJjbWZfYnVzICpidXNfaWYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTtcbkBAIC0xMzk3LDcgKzEzOTQsNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLVxuIHZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1ZiA9IChzdHJ1Y3QgYnJjbWZfbXNnYnVmICopZHJ2ci1cdTAwM2Vwcm90by1cdTAwM2VwZDtcbkBAIC0xNjEzLDcgKzE2MDksNiBAQCBpbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxuIFx0aWYgKCFtc2didWYtXHUwMDNlZmxvdylcbiBcdFx0Z290byBmYWlsO1xuIFxuLVxuIFx0YnJjbWZfZGJnKE1TR0JVRiwgXCJGZWVkaW5nIGJ1ZmZlcnMsIHJ4IGRhdGEgJWQsIHJ4IGV2ZW50ICVkLCByeCBpb2N0bCByZXNwICVkXFxuXCIsXG4gXHRcdCAgbXNnYnVmLVx1MDAzZW1heF9yeGJ1ZnBvc3QsIG1zZ2J1Zi1cdTAwM2VtYXhfZXZlbnRidWYsXG4gXHRcdCAgbXNnYnVmLVx1MDAzZW1heF9pb2N0bHJlc3BidWYpO1xuQEAgLTE2NTMsNyArMTY0OCw2IEBAIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4gXHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG4tXG4gdm9pZCBicmNtZl9wcm90b19tc2didWZfZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXG4ge1xuIFx0c3RydWN0IGJyY21mX21zZ2J1ZiAqbXNnYnVmO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTY6MzQuMTc1MzgwNzU1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzE3ODgzODQ5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXTEFOIERyaXZlciBQYXRjaCBmb3IgVmlydHVhbGl6YXRpb24gRmVhc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGBicmNtZm1hY2Ag4oCTIHNwZWNpZmljYWxseSwgaW4gYG1zZ2J1Zi5jYC4gSXQncyBpbnRyb2R1Y2luZyBgYnJjbWZfbXNnYnVmX2dldF9mbG93aWRgIHRvIHZhbGlkYXRlIGBmbG93X3JpbmdfaWRgIGJlZm9yZSBjYWxjdWxhdGluZyBgZmxvd2lkYC4gU21hcnQgbW92ZSwgcHJldmVudGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyBvciBhbiBpbnZhbGlkIGZsb3dpZCBzaXR1YXRpb24gd2l0aGluIHRoZSBCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyLiBXZSdyZSByZXBsYWNpbmcgdGhlIGRpcmVjdCBjYWxjdWxhdGlvbiB3aXRoIGEgc2FmZXIgY2hlY2sgdXNpbmcgdGhlIG5ldyBmdW5jdGlvbi4gR29vZCBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcsIGFsd2F5cyBhcHByZWNpYXRlZC5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIG5vdyBpcywgY2FuIEkgcmVhc29uYWJseSB0ZXN0IHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gUUVNVSBpcyBteSBnby10bywgb2YgY291cnNlLiBUaGlzIGBicmNtZm1hY2AgZHJpdmVyIHN1cHBvcnRzIFNESU8sIFVTQiwgYW5kIFBDSUUuIFNpbmNlIEkgY2FuIHdvcmsgd2l0aCBVU0IgZGV2aWNlcyBpbiBRRU1VLCBlaXRoZXIgdGhyb3VnaCBwYXNzdGhyb3VnaCBvciBldmVuIGR1bW15IFVTQiBkZXZpY2VzIOKAkyBsaWtlIHdoYXQgc3l6a2FsbGVyIHVzZXMgZm9yIGZ1enppbmcg4oCTIHRoYXQncyBhIHByb21pc2luZyBhdmVudWUuXG5cbk15IGh1bmNoIGlzIHRoYXQgZnV6emluZyBpcyB0aGUgYmVzdCBhcHByb2FjaC4gU3l6a2FsbGVyIGhhcyBhIFVTQiBmdXp6ZXIgd2hpY2ggaXMgZ3JlYXQuIFNvLCBJIG5lZWQgdG8gY2hlY2sgaWYgU3l6a2FsbGVyIGFscmVhZHkgdGFyZ2V0cyBicmNtZm1hYyBvdmVyIFVTQi4gU3BlY2lmaWNhbGx5LCBsZXQncyBsb29rIGF0IGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGl0IHJlZ2lzdGVycyBhIFVTQiBkcml2ZXIuIElmIGl0IGRvZXMsIGFuZCBTeXprYWxsZXIgaXMgaW5kZWVkIGhpdHRpbmcgaXQsIHRoZW4gdGhpcyBwYXRjaCBpcyBjZXJ0YWlubHkgdGVzdGFibGUgd2l0aGluIG15IGN1cnJlbnQgc2V0dXAuIElmIG5vdCwgSSBtYXkgaGF2ZSB0byBmaWd1cmUgb3V0IGEgbmV3IFVTQiBzZXR1cCBvciBhdHRlbXB0IFNESU8uIFBDSUUgaXMgcHJvYmFibHkgb3V0IG9mIHRoZSBxdWVzdGlvbiBmb3IgdGhpcyBxdWljayB0ZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Mzk3LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTY6NDEuMzU0MjIyMTMyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Nzc0ODYwNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl91c2JfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTE2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGJyY21mX2J1c19vcHMgYnJjbWZfdXNiX2J1c19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTE3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM6MTE3NjpzdGF0aWMgdm9pZCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTE3Ny1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYnJjbWZfZndfcmVxdWVzdCAqZndyZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTIyND1icmNtZl91c2JfcHJlcGFyZV9md19yZXF1ZXN0KHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xMjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxMjQ0OnN0YXRpYyBpbnQgYnJjbWZfdXNiX3Byb2JlX2NiKHN0cnVjdCBicmNtZl91c2JkZXZfaW5mbyAqZGV2aW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI0NS1cXHRcXHRcXHQgICAgICBlbnVtIGJyY21mX2Z3dmVuZG9yIGZ3dmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzMDgtXFx0LyogcmVxdWVzdCBmaXJtd2FyZSBoZXJlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEzMDk6XFx0cmV0ID0gYnJjbWZfZndfZ2V0X2Zpcm13YXJlcyhkZXYsIGZ3cmVxLCBicmNtZl91c2JfcHJvYmVfcGhhc2UyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTMxMC1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTM0ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEzNDU6YnJjbWZfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEzNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE0NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjE0NDY6XFx0cmV0ID0gYnJjbWZfdXNiX3Byb2JlX2NiKGRldmluZm8sIGlkLVxcdTAwM2Vkcml2ZXJfaW5mbyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE0NDctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYz0xNTE0PXN0YXRpYyBpbnQgYnJjbWZfdXNiX3Jlc2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYy0xNTI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTI3OlxcdHJldCA9IGJyY21mX2Z3X2dldF9maXJtd2FyZXMoXFx1MDAyNnVzYi1cXHUwMDNlZGV2LCBmd3JlcSwgYnJjbWZfdXNiX3Byb2JlX3BoYXNlMik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTE1MjgtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmM9MTU2OD1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYnJjbWZfdXNiZHJ2ciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU2OS1cXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy91c2IuYzoxNTcwOlxcdC5wcm9iZSA9IGJyY21mX3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTU3MS1cXHQuZGlzY29ubmVjdCA9IGJyY21mX3VzYl9kaXNjb25uZWN0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNzo1Njo0MS41MjE5NzU4NTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTM1OTY0ODI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVTQiBEcml2ZXIgRnV6emluZzogQSBRdWljayBNZW50YWwgQ2hlY2tsaXN0KipcblxuT2theSwgc28gU3l6a2FsbGVyJ3MgZ290IHRoYXQgZHVtbXkgVVNCIGZ1enplciwgYW5kIHRoZSBmaXJzdCBzdGVwIGlzIGFsd2F5cyByZWdpc3RlcmluZyB0aGUgVVNCIGRyaXZlci4gQ2xhc3NpYy4gQnV0IHRoZW4gdGhlIHRob3VnaHQgaGl0cyBtZTogSSBuZWVkIHRvIHZlcmlmeSBob3cgYG1zZ2J1Zi5jYCBmYWN0b3JzIGluLiBJcyBpdCBzb21ldGhpbmcgc3BlY2lmaWMgdG8gdGhlIFBDSWUgYnVzLCBvciBkb2VzIHRoZSBVU0IgZHJpdmVyIGVuZCB1cCB1dGlsaXppbmcgaXQ/IFRoYXQncyB0aGUgcXVlc3Rpb24uIEkgbmVlZCB0byBnZXQgdGhpcyBzdHJhaWdodCBpZiBJJ20gZ29pbmcgdG8gZ2V0IHRoaXMgZnV6emluZyB0YXNrIG9mZiB0aGUgZ3JvdW5kLiBBbHJpZ2h0LCBsZXQncyBkcmlsbCBkb3duIGFuZCBzZWUgaG93IGBtc2didWYuY2AgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuIEdvdHRhIGNsYXJpZnkgdGhpcyB0byBlbnN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzNDEsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNzo1Njo0Ni40NTc5NDQzMzVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0NzI3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz0xNTE4PXN0YXRpYyB2b2lkIGJyY21mX21zZ2J1Zl9kZWJ1Z2ZzX2NyZWF0ZShzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jLTE1MjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jOjE1MjM6aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTUyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmg9MzI9dm9pZCBicmNtZl9tc2didWZfZGVsZXRlX2Zsb3dyaW5nKHN0cnVjdCBicmNtZl9wdWIgKmRydnIsIHUxNiBmbG93aWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozMzppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmgtMzQtdm9pZCBicmNtZl9wcm90b19tc2didWZfZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zNS0jZWxzZVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaDozNjpzdGF0aWMgaW5saW5lIGludCBicmNtZl9wcm90b19tc2didWZfYXR0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oLTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTIwPWludCBicmNtZl9wcm90b19hdHRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM1LVxcdH0gZWxzZSBpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjM2OlxcdFxcdGlmIChicmNtZl9wcm90b19tc2didWZfYXR0YWNoKGRydnIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM3LVxcdFxcdFxcdGdvdG8gZmFpbDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTY6NDYuNTAyNDIzNTc0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM0MTIzMzIwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgUHJvdG9jb2wgVHlwZSBmb3IgTWVzc2FnZSBCdWZmZXIgQXR0YWNobWVudCoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIHF1ZXN0aW9uIGlzICppZiogYSBzcGVjaWZpYyBzdHJ1Y3R1cmUsIGBkcnZyYCwgaXMgYXR0YWNoZWQgd2hlbiB0aGUgcHJvdG9jb2wgdHlwZSBpcyBzZXQgdG8gYEJSQ01GX1BST1RPX01TR0JVRmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYGRydnItXHUwMDNlYnVzX2lmYCBhbmQgaXRzIGBwcm90b190eXBlYCBmaWVsZC4gSXQgc2VlbXMgdGhhdCB0aGlzIGF0dGFjaG1lbnQgaXMgY29uZGl0aW9uYWxseSBkZXBlbmRlbnQgb24gdGhhdCBwcm90b2NvbCB0eXBlLiBNYWtlcyBzZW5zZS4gSSdtIHVzZWQgdG8gc2VlaW5nIHNpbWlsYXIgc3RydWN0dXJlcyB3aGVyZSBkaWZmZXJlbnQgdW5kZXJseWluZyBidXMgaW50ZXJmYWNlcyBkaWN0YXRlIGhvdyBkYXRhIGlzIGhhbmRsZWQuXG5cblRoZSBuZXh0IG9idmlvdXMgc3RlcCBpcyB0byBiYWNrdHJhY2suIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aGljaCogYnVzZXMgYXJlIGNvbmZpZ3VyaW5nIHRoZSBgcHJvdG9fdHlwZWAgdG8gYEJSQ01GX1BST1RPX01TR0JVRmAuIFVuZGVyc3RhbmRpbmcgdGhhdCB3aWxsIHNoZWQgbGlnaHQgb24gd2hhdCBraW5kIG9mIHNpdHVhdGlvbnMgb3IgaGFyZHdhcmUgY29udGV4dHMgdGhpcyBhdHRhY2htZW50IGlzIHJlbGV2YW50IGZvci4gS25vd2luZyB3aGljaCBidXNlcyBkbyAqbm90KiB1c2UgdGhpcyBzcGVjaWZpYyBwcm90b2NvbCwgYW5kIHdoeSwgY291bGQgYmUgZXZlbiBtb3JlIGluc2lnaHRmdWwuIFRoaXMgaGVscHMgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBkZXNpZ24gYW5kIHBvdGVudGlhbGx5IHNwb3QgYW55IHZ1bG5lcmFiaWxpdGllcyBvciBpbmVmZmljaWVuY2llcy4gSSdsbCBuZWVkIHRvIHRyYWNlIHRocm91Z2ggdGhlIGNvZGUgYW5kIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXJlIHRoYXQgdmFyaWFibGUgaXMgYmVpbmcgc2V0LCBhbmQgaW4gd2hhdCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDI2NSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU2OjUwLjg0MzY1OTgxOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjMzNTMzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUkNNRl9QUk9UT19NU0dCVUZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg9NTE9ZW51bSBicmNtZl9idXNfcHJvdG9jb2xfdHlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTUyLVxcdEJSQ01GX1BST1RPX0JDREMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjUzOlxcdEJSQ01GX1BST1RPX01TR0JVRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC01NC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDQzPWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUxOS1cXHRidXMtXFx1MDAzZW9wcyA9IFxcdTAwMjZicmNtZl9wY2llX2J1c19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTIwOlxcdGJ1cy1cXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MjEtXFx0YnVzLVxcdTAwM2VjaGlwID0gZGV2aW5mby1cXHUwMDNlY29yZWlkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9MjA9aW50IGJyY21mX3Byb3RvX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzQtXFx0XFx0XFx0Z290byBmYWlsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjM1OlxcdH0gZWxzZSBpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM2LVxcdFxcdGlmIChicmNtZl9wcm90b19tc2didWZfYXR0YWNoKGRydnIpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9NTk9dm9pZCBicmNtZl9wcm90b19kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTY1LVxcdFxcdFxcdGJyY21mX3Byb3RvX2JjZGNfZGV0YWNoKGRydnIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjY2OlxcdFxcdGVsc2UgaWYgKGRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19NU0dCVUYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtNjctXFx0XFx0XFx0YnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChkcnZyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTY6NTAuODkwMDAwMzk3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIyNTMzMTY4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgQlJDTUZfUFJPVE9fTVNHQlVGYCBBc3NpZ25tZW50KipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgQlJDTUZfUFJPVE9fTVNHQlVGYCBpcyBiZWluZyBhc3NpZ25lZCAqc3BlY2lmaWNhbGx5KiBpbiBgcGNpZS5jYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhbmQgaXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgd2FudCB0byBicm9hZGVuIHRoZSBzY29wZSBvZiBteSBpbnZlc3RpZ2F0aW9uLiBMZXQncyBzZWUgaWYgdGhpcyBpcyB0aGUgKm9ubHkqIHBsYWNlIGl0J3MgYmVpbmcgc2V0LiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvZGViYXNlLiBTcGVjaWZpY2FsbHksIHRoZSBmaWxlIHBhdGggYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmNgIGhhcyB0aGF0IGxpbmU6IGBidXMtXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtgLiBOb3cgSSdtIHdvbmRlcmluZywgc2luY2UgaXQncyB0aGUgb25seSBvbmUgSSd2ZSBzZWVuIHNvIGZhciwgd2hhdCBhYm91dCBgdXNiLmNgPyBXaGF0IGRvZXMgKml0KiBkbyB3aXRoIHRoZSBgcHJvdG9fdHlwZWAgdmFyaWFibGU/IFRpbWUgdG8gZGlnIGluIHRoZXJlIGFuZCBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMzc5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU2OjU1LjExNTMzNDgwMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzNzc2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHJvdG9fdHlwZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTEyNDQ9c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNjktXFx0YnVzLVxcdTAwM2VvcHMgPSBcXHUwMDI2YnJjbWZfdXNiX2J1c19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNzA6XFx0YnVzLVxcdTAwM2Vwcm90b190eXBlID0gQlJDTUZfUFJPVE9fQkNEQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI3MS1cXHRidXMtXFx1MDAzZWZ3dmlkID0gZnd2aWQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU2OjU1LjE1OTcyMjEzMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA4NzUzNzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIEJyb2FkY29tIEZpcm13YXJlIFByb3RvY29sIFVzYWdlKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLi4uIHNvLCBmcm9tIHRoZSBjb2RlIEkgd2FzIGp1c3QgcmV2aWV3aW5nLCBgdXNiLmNgIGV4cGxpY2l0bHkgdXNlcyBgQlJDTUZfUFJPVE9fQkNEQ2AuIFRoYXQncyBub3QgdW5leHBlY3RlZDsgQkNEQyBpcyBhIGNvbW1vbiBjaG9pY2UgZm9yIFVTQi1iYXNlZCBCcm9hZGNvbSBXaUZpIGFkYXB0ZXJzLCByaWdodD8gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBTRElPIGRyaXZlciwgYHNkaW8uY2AsIGlzIGFsc28gZW1wbG95aW5nIHRoZSBCQ0RDIHByb3RvY29sLiBMb2dpY2FsbHksIGl0J3MgYSBzdHJvbmcgcG9zc2liaWxpdHkuIEl0J3Mgb2Z0ZW4gdXNlZCB3aGVyZSB3ZSBuZWVkIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgYW5kIGNvbW1vbmFsaXR5LiBCdXQgbGV0J3Mgbm90IGFzc3VtZSwgbGV0J3MgY29uZmlybSBpdCBkZWZpbml0aXZlbHkuIEkgc2hvdWxkIHByb2JhYmx5IGdvIGFuZCBkb3VibGUtY2hlY2sgdGhhdCBgc2Rpby5jYCBmaWxlIGFuZCBzZWUgaWYgdGhhdCdzIHRoZSBjYXNlLiBJdCdzIGltcG9ydGFudCB0byBoYXZlIGEgY2xlYXIgbWVudGFsIG1vZGVsIG9mIHRoZSBwcm90b2NvbCB1c2FnZSBhY3Jvc3MgdGhlc2UgZGlmZmVyZW50IGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTQxLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTY6NTguNTY4NDc5ODU3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzYxNzg5MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHJvdG9fdHlwZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvc2Rpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNzo1Njo1OC42MTIxMDQ0NTdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyMjc4MTE3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNESU8gSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFNESU8gYnVzIHByb3RvY29sIGlzIGJlaW5nIGhhbmRsZWQgaGVyZS4gTGV0J3Mgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBzZGlvLmNgLiBNeSBwcmltYXJ5IGludGVyZXN0IGF0IHRoaXMgbW9tZW50IGlzIHRvIHBpbnBvaW50IGhvdyB0aGUgYGJ1cy1cdTAwM2Vwcm90b190eXBlYCB2YXJpYWJsZSBpcyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgY29kZS4gVGhpcyB3aWxsIHRlbGwgbWUgd2hhdCBzcGVjaWZpYyBTRElPIHByb3RvY29sIGZlYXR1cmVzIGFyZSBiZWluZyBpbXBsZW1lbnRlZC4gVW5kZXJzdGFuZGluZyB0aGUgYHByb3RvX3R5cGVgIGFzc2lnbm1lbnQgYW5kIHVzYWdlIGlzIGNyaXRpY2FsIHRvIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0ZSBhbmQgY2FwYWJpbGl0aWVzIG9mIHRoZSBkcml2ZXIgd2l0aCByZXNwZWN0IHRvIFNESU8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMjQ3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTc6MDEuNDM0ODg4MDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTYyMDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb3RvX3R5cGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmM9MTA0MT1zdGF0aWMgaW50IGJyY21mX29wc19zZGlvX3Byb2JlKHN0cnVjdCBzZGlvX2Z1bmMgKmZ1bmMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYmNtc2RoLmMtMTA4Ny1cXHRidXNfaWYtXFx1MDAzZWJ1c19wcml2LnNkaW8gPSBzZGlvZGV2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9iY21zZGguYzoxMDg4OlxcdGJ1c19pZi1cXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX0JDREM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2JjbXNkaC5jLTEwODktXFx0YnVzX2lmLVxcdTAwM2Vmd3ZpZCA9IGlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaD0xNDI9c3RydWN0IGJyY21mX2J1c19zdGF0cyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMTUwLSAqIEBidXNfcHJpdjogcG9pbnRlciB0byBwcml2YXRlIGJ1cyBkZXZpY2UuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjE1MTogKiBAcHJvdG9fdHlwZTogcHJvdG9jb2wgdHlwZSwgYmNkYyBvciBtc2didWZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmgtMTUyLSAqIEBkZXY6IGRldmljZSBwb2ludGVyIG9mIGJ1cyBkZXZpY2UuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg9MTY2PXN0cnVjdCBicmNtZl9idXMge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTE3MS1cXHR9IGJ1c19wcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaDoxNzI6XFx0ZW51bSBicmNtZl9idXNfcHJvdG9jb2xfdHlwZSBwcm90b190eXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0xNzMtXFx0c3RydWN0IGRldmljZSAqZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDQzPWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUxOS1cXHRidXMtXFx1MDAzZW9wcyA9IFxcdTAwMjZicmNtZl9wY2llX2J1c19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTIwOlxcdGJ1cy1cXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MjEtXFx0YnVzLVxcdTAwM2VjaGlwID0gZGV2aW5mby1cXHUwMDNlY29yZWlkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9MjA9aW50IGJyY21mX3Byb3RvX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6MzI6XFx0aWYgKGRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19CQ0RDKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzMtXFx0XFx0aWYgKGJyY21mX3Byb3RvX2JjZGNfYXR0YWNoKGRydnIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM0LVxcdFxcdFxcdGdvdG8gZmFpbDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYzozNTpcXHR9IGVsc2UgaWYgKGRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19NU0dCVUYpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy0zNi1cXHRcXHRpZiAoYnJjbWZfcHJvdG9fbXNnYnVmX2F0dGFjaChkcnZyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM5LVxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJVbnN1cHBvcnRlZCBwcm90byB0eXBlICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjQwOlxcdFxcdFxcdCBkcnZyLVxcdTAwM2VidXNfaWYtXFx1MDAzZXByb3RvX3R5cGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTQxLVxcdFxcdGdvdG8gZmFpbDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jPTU5PXZvaWQgYnJjbWZfcHJvdG9fZGV0YWNoKHN0cnVjdCBicmNtZl9wdWIgKmRydnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy02My1cXHRpZiAoZHJ2ci1cXHUwMDNlcHJvdG8pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYzo2NDpcXHRcXHRpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX0JDREMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtNjUtXFx0XFx0XFx0YnJjbWZfcHJvdG9fYmNkY19kZXRhY2goZHJ2cik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM6NjY6XFx0XFx0ZWxzZSBpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcHJvdG8uYy02Ny1cXHRcXHRcXHRicmNtZl9wcm90b19tc2didWZfZGV0YWNoKGRydnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jPTEyNDQ9c3RhdGljIGludCBicmNtZl91c2JfcHJvYmVfY2Ioc3RydWN0IGJyY21mX3VzYmRldl9pbmZvICpkZXZpbmZvLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jLTEyNjktXFx0YnVzLVxcdTAwM2VvcHMgPSBcXHUwMDI2YnJjbWZfdXNiX2J1c19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3VzYi5jOjEyNzA6XFx0YnVzLVxcdTAwM2Vwcm90b190eXBlID0gQlJDTUZfUFJPVE9fQkNEQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvdXNiLmMtMTI3MS1cXHRidXMtXFx1MDAzZWZ3dmlkID0gZnd2aWQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU3OjAxLjQ4MDA1NTYzOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzU2NTUwMTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBicmNtZm1hY2AgRHJpdmVyIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIGBCUkNNRl9QUk9UT19NU0dCVUZgLiBJdCBsb29rcyBsaWtlIHRoaXMgaXMgZXhjbHVzaXZlbHkgdXNlZCB3aXRoaW4gYHBjaWUuY2AuIEFuZCBmdXJ0aGVyLCB0aGlzIGBtc2didWYuY2AgZmlsZSBpcyBvbmx5IGVuZ2FnZWQgd2hlbiB0aGUgZHJpdmVyIGlzIGJvdW5kIHRvIGEgUENJZSBkZXZpY2UsIHdoaWNoIG1ha2VzIGl0IHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy5cblxuVGhlIHRhc2sgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggaXMgXCJXb3J0aEZ1enppbmdcIi4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgdGVsbHMgbWUgdG8gcmV0dXJuIGBmYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyB0aGUga2V5IHF1ZXN0aW9uOiBkb2VzIGBicmNtZm1hY2AgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnk/XG5cblllcywgYWJzb2x1dGVseS4gYGJyY21mbWFjYCBpcyBhIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIuIFRoZSBQQ0llIHZhcmlhbnQsIHRoZSBvbmUgdGhhdCdzIHJlbGV2YW50IGhlcmUsIGRlcGVuZHMgb24gYW4gYWN0dWFsIEJyb2FkY29tIFdpLUZpIGNoaXAsIHNvbWV0aGluZyBsaWtlIGEgQkNNNDM2MDIgb3IgQkNNNDM1MCwgY29ubmVjdGVkIHZpYSBQQ0llLiBRRU1VLCBhcyBmYXIgYXMgSSB1bmRlcnN0YW5kLCBkb2Vzbid0IGVtdWxhdGUgdGhlc2UgQnJvYWRjb20gV2ktRmkgUENJZSBjYXJkcy4gVGhlcmVmb3JlLCBJIGNhbid0IGV2ZW4gZ2V0IHN0YXJ0ZWQgZnV6emluZyB0aGlzIHNwZWNpZmljIGludGVyZmFjZSB3aXRoIGEgdmlydHVhbCBtYWNoaW5lLCBhbmQgUUVNVSB3b24ndCBhbGxvdyBtZSB0by5cblxuU3l6a2FsbGVyIGNhbid0IGVmZmVjdGl2ZWx5IGZ1enogdGhlIFBDSWUgaW50ZXJmYWNlIG9mIHRoaXMgZHJpdmVyIGJlY2F1c2UgaXQgbGFja3MgdGhlIG5lY2Vzc2FyeSBjYXBhYmlsaXRpZXMgdG8gZW11bGF0ZSB0aGUgc3BlY2lmaWMgcmVnaXN0ZXJzIGFuZCBETUEgcmluZ3Mgb2YgdGhpcyBCcm9hZGNvbSBXaS1GaSBjaGlwLiBXaGlsZSBTeXprYWxsZXIgaGFzIHNvbWUgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCB0aGV5IGFyZSBtb3N0bHkgZm9yIGdlbmVyaWMgZGV2aWNlcyBvciB2aXJ0aW8sIGFuZCBub3QgY29tcGxleCB2ZW5kb3Itc3BlY2lmaWMgV2ktRmkgTUFDcy5cblxuV2FpdCBhIG1vbWVudCwgSSBuZWVkIHRvIGNoZWNrIG15IGZhY3RzIGhlcmUuIFN5emthbGxlciAqZG9lcyogaGF2ZSBhIFBDSSBmdXp6ZXIsIGJ1dCBpdHMgY2FwYWJpbGl0aWVzIGFyZSBsaW1pdGVkIHRvIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgQkFScy4gVGhpcyBkb2Vzbid0IGdvIGRlZXAgZW5vdWdoIGludG8gZW11bGF0aW5nIGRldmljZSBmaXJtd2FyZSBvciBETUEgcmluZ3MgdG8gcmVhY2ggdGhlIHBvaW50IHdoZXJlIHRoZSBgbXNnYnVmLmNgIGZpbGUgcHJvY2Vzc2VzIG1lc3NhZ2VzIGZyb20gdGhlIGZpcm13YXJlLlxuXG5JIHJlYWxseSBuZWVkIHRvIGNvbmZpcm0gaWYgYG1zZ2J1Zi5jYCBwcm9jZXNzZXMgRE1BIHJpbmdzIGF0IGFsbC4gSWYgaXQgZG9lcywgdGhlbiB0aGUgcHJvYmxlbSBpcyBldmVuIHdvcnNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDEzMiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNzo1NzowOC44MzY2MDgzMzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODE1NDk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9tc2didWZfcHJvY2Vzc190eHN0YXR1c1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYz04NzM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6ODc0OmJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKHN0cnVjdCBicmNtZl9tc2didWYgKm1zZ2J1Ziwgdm9pZCAqYnVmKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy04NzUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5jPTEyODc9c3RhdGljIHZvaWQgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZShzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsIHZvaWQgKmJ1ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzIyLVxcdFxcdGJyY21mX2RiZyhNU0dCVUYsIFxcXCJNU0dCVUZfVFlQRV9UWF9TVEFUVVNcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYzoxMzIzOlxcdFxcdGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzKG1zZ2J1ZiwgYnVmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTMyNC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTc6MDguOTg0NzY3ODIxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzAwMjA5MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IGNvZGUgZmxvdywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipVbmRlcnN0YW5kaW5nIHRoZSBicmNtZl9tc2didWYgTWVzc2FnZSBIYW5kbGluZyoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYCBmdW5jdGlvbiwgYW5kIEknbSBpbW1lZGlhdGVseSB0cmFjaW5nIGl0cyBjYWxsIHBhdGggdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgYXJjaGl0ZWN0dXJlLiBJdCdzIGNsZWFyIHRoYXQgaXQncyBkZWVwbHkgaW52b2x2ZWQgaW4gdGhlIGhhbmRsaW5nIG9mIG1lc3NhZ2VzIHdpdGhpbiB0aGUgYnJjbWYgZnJhbWV3b3JrLCBzcGVjaWZpY2FsbHkgbWVzc2FnZXMgdGhhdCBhcmUgYmVpbmcgKnJlY2VpdmVkKi5cblxuVGhlIGNhbGwgc3RhY2sgY29uZmlybXMgbXkgc3VzcGljaW9uOiBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfbXNndHlwZWAgaXMgKnRyaWdnZXJlZCogZnJvbSBgYnJjbWZfbXNnYnVmX3Byb2Nlc3NfcnhgLiBUaGlzIGBwcm9jZXNzX3J4YCBmdW5jdGlvbiBpcyBsaWtlbHkgdGhlIGNlbnRyYWwgcHJvY2Vzc2luZyBwb2ludCBmb3IgaW5jb21pbmcgZGF0YS4gSXQncyB0aGUgXCJyZWNlaXZlclwiIGluIHRoaXMgc3BlY2lmaWMgc3Vic3lzdGVtLlxuXG5BbmQgdGhlIGV2ZW4gYmlnZ2VyIHBpY3R1cmUgcmV2ZWFscyB0aGF0IGBicmNtZl9tc2didWZfcHJvY2Vzc19yeGAsIHRoZSBjb3JlIFwicmVjZWl2ZXJcIiBmdW5jdGlvbiwgaXMgaXRzZWxmIGludm9rZWQgZnJvbSBgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJgLiBBaCwgc28gYHJ4X3RyaWdnZXJgIGlzIHdoYXQncyBraWNraW5nIG9mZiB0aGUgd2hvbGUgaW5ib3VuZCBtZXNzYWdlIGhhbmRsaW5nIHByb2Nlc3MuIFRoaXMgdHJpZ2dlciBmdW5jdGlvbiBwcm9iYWJseSBtYW5hZ2VzIHRoZSBsb3dlci1sZXZlbCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgc2lnbmFscyB0aGUgYXZhaWxhYmlsaXR5IG9mIG5ldyBkYXRhLCB0aGVuIHRoaXMgaW5jb21pbmcgZGF0YSBpcyB1bHRpbWF0ZWx5ICpwcm9jZXNzZWQqIGJ5IGBicmNtZl9tc2didWZfcHJvY2Vzc19tc2d0eXBlYC5cblxuU28sIGluIGVzc2VuY2UsIEkgdW5kZXJzdGFuZCB0aGUgc2VxdWVuY2U6IGByeF90cmlnZ2VyYCBpbml0aWF0ZXMgdGhlIHByb2Nlc3MsIGBwcm9jZXNzX3J4YCByZWNlaXZlcy9tYW5hZ2VzIHRoZSBkYXRhLCBhbmQgZmluYWxseSwgYHByb2Nlc3NfbXNndHlwZWAgaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBzcGVjaWZpYyAqdHlwZSogb2YgaW5jb21pbmcgbWVzc2FnZS4gVGhpcyBpcyBjcml0aWNhbCBmb3IgZGlzdGluZ3Vpc2hpbmcgZGlmZmVyZW50IGNvbnRyb2wsIGRhdGEsIGFuZCBvdGhlciB0eXBlcyBvZiBtZXNzYWdlcy4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93IEkgY2FuIGRpdmUgZGVlcGVyIGludG8gZWFjaCBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgbWVzc2FnZSBwYXJzaW5nIGFuZCBoYW5kbGluZyBpcyBkb25lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM0OCwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU3OjEzLjIxNDc5MzY2NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1MzEzMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM9MTMzNT1zdGF0aWMgdm9pZCBicmNtZl9tc2didWZfcHJvY2Vzc19yeChzdHJ1Y3QgYnJjbWZfbXNnYnVmICptc2didWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmMtMTM2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmM6MTM2NjppbnQgYnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuYy0xMzY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaD0yNj1zdHJ1Y3QgbXNnYnVmX2J1Zl9hZGRyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9tc2didWYuaC0zMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvbXNnYnVmLmg6MzE6aW50IGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKHN0cnVjdCBkZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL21zZ2J1Zi5oLTMyLXZvaWQgYnJjbWZfbXNnYnVmX2RlbGV0ZV9mbG93cmluZyhzdHJ1Y3QgYnJjbWZfcHViICpkcnZyLCB1MTYgZmxvd2lkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9OTQxPXN0YXRpYyBpcnFyZXR1cm5fdCBicmNtZl9wY2llX2lzcl90aHJlYWQoaW50IGlycSwgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NTUtXFx0XFx0XFx0aWYgKGRldmluZm8tXFx1MDAzZXN0YXRlID09IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzo5NTY6XFx0XFx0XFx0XFx0YnJjbWZfcHJvdG9fbXNnYnVmX3J4X3RyaWdnZXIoXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NTctXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNmRldmluZm8tXFx1MDAzZXBkZXYtXFx1MDAzZWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU3OjEzLjI1ODMzMTI4NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTAzMzg5NDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgQW5hbHlzaXMqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIHNpdHVhdGlvbi4gVGhpcyBjb2RlIEknbSBsb29raW5nIGF0LCB0aGUgYGJyY21mX21zZ2J1Zl9wcm9jZXNzX3R4c3RhdHVzYCBmdW5jdGlvbiwgaXMgY2FsbGVkIGZyb20gYGJyY21mX3BjaWVfaXNyX3RocmVhZGAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBzcGVjaWZpYyB0byB0aGUgUENJZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQnJvYWRjb20gV2ktRmkgZHJpdmVyLiBHaXZlbiBRRU1VJ3MgbGltaXRhdGlvbnMgYW5kIHN5emthbGxlcidzIGN1cnJlbnQgUENJIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBJIGNhbid0IHNlZSBhIHdheSB0byB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoIGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuIFRoZSBQQ0kgZnV6emVyIGNhbid0IG1lYW5pbmdmdWxseSBpbnRlcmFjdCB3aXRoIHRoZSBETUEgcmluZ3MsIGludGVycnVwdCBoYW5kbGluZywgb3IgZXZlbiBnZXQgdGhlIGRldmljZSBpbnRvIHRoZSByZXF1aXJlZCBgQlJDTUZNQUNfUENJRV9TVEFURV9VUGAgc3RhdGUgYW5kIHNldCB1cCB0aGUgbmVjZXNzYXJ5IERNQSByaW5ncyBhbmQgZmlybXdhcmUgdG8gcmVhY2ggdGhpcyBmdW5jdGlvbi5cblxuSSBkaWQgYnJpZWZseSB3b25kZXIgaWYgbWFjODAyMTFfaHdzaW0gbWlnaHQgYmUgYSBiYWNrZG9vciwgYnV0IG5vLCB0aGF0J3MgYSBzb2Z0d2FyZSBzaW11bGF0b3IgZm9yIG1hYzgwMjExLCBhbmQgYGJyY21mbWFjYCBpcyBhIEZ1bGxNQUMgZHJpdmVyIHRoYXQgdXNlcyBjZmc4MDIxMSBhbmQgaXRzIG93biBmaXJtd2FyZS4gTm8gbHVjayB0aGVyZS4gVGhlcmUncyBubyBrbm93biBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoZSBgYnJjbWZtYWNgIFBDSWUgc2V0dXAsIGVpdGhlci5cblxuTGV0J3MgZG8gYSBzYW5pdHkgY2hlY2suIENhbiBgYnJjbWZtYWNgIGJlIGZ1enplZCBhdCBhbGw/IFdlbGwsIHN5emthbGxlciBkb2VzIGhhdmUgYSBVU0IgZnV6emVyLCBhbmQgdGhhdCB3b3VsZCBnaXZlIHVzIHNvbWUgY292ZXJhZ2Ugb2YgYGJyY21mbWFjYC4gSG93ZXZlciwgVVNCIHVzZXMgYEJSQ01GX1BST1RPX0JDRENgLCBhbmQgd2UncmUgbG9va2luZyBhdCBgbXNnYnVmLmNgLCB3aGljaCBpcyBkaXJlY3RseSB0aWVkIHRvIGBCUkNNRl9QUk9UT19NU0dCVUZgLiBUaGUgVVNCIHBhdGggd29uJ3QgdG91Y2ggdGhpcyBjb2RlLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IG1vZGlmaWVzIGBtc2didWYuY2AsIHdoaWNoIGlzIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgYHBjaWUuY2AuXG5cblRvIHNvbGlkaWZ5IHRoaXMsIGxldCdzIHZlcmlmeSB0aGF0IGBCUkNNRl9QUk9UT19NU0dCVUZgIGlzIG5vdCB1c2VkIGVsc2V3aGVyZS4gVGhhdCB3aWxsIGNlbWVudCB0aGUgY29uY2x1c2lvbiB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGFic29sdXRlbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY0MDEsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTc6MjAuMzYxNzIzNDkzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA1NTAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUkNNRl9QUk9UT19NU0dCVUZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg9NTE9ZW51bSBicmNtZl9idXNfcHJvdG9jb2xfdHlwZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTUyLVxcdEJSQ01GX1BST1RPX0JDREMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oOjUzOlxcdEJSQ01GX1BST1RPX01TR0JVRlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC01NC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNDQzPWJyY21mX3BjaWVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjUxOS1cXHRidXMtXFx1MDAzZW9wcyA9IFxcdTAwMjZicmNtZl9wY2llX2J1c19vcHM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTIwOlxcdGJ1cy1cXHUwMDNlcHJvdG9fdHlwZSA9IEJSQ01GX1BST1RPX01TR0JVRjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1MjEtXFx0YnVzLVxcdTAwM2VjaGlwID0gZGV2aW5mby1cXHUwMDNlY29yZWlkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9MjA9aW50IGJyY21mX3Byb3RvX2F0dGFjaChzdHJ1Y3QgYnJjbWZfcHViICpkcnZyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtMzQtXFx0XFx0XFx0Z290byBmYWlsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjM1OlxcdH0gZWxzZSBpZiAoZHJ2ci1cXHUwMDNlYnVzX2lmLVxcdTAwM2Vwcm90b190eXBlID09IEJSQ01GX1BST1RPX01TR0JVRikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTM2LVxcdFxcdGlmIChicmNtZl9wcm90b19tc2didWZfYXR0YWNoKGRydnIpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmM9NTk9dm9pZCBicmNtZl9wcm90b19kZXRhY2goc3RydWN0IGJyY21mX3B1YiAqZHJ2cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jLTY1LVxcdFxcdFxcdGJyY21mX3Byb3RvX2JjZGNfZGV0YWNoKGRydnIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wcm90by5jOjY2OlxcdFxcdGVsc2UgaWYgKGRydnItXFx1MDAzZWJ1c19pZi1cXHUwMDNlcHJvdG9fdHlwZSA9PSBCUkNNRl9QUk9UT19NU0dCVUYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3Byb3RvLmMtNjctXFx0XFx0XFx0YnJjbWZfcHJvdG9fbXNnYnVmX2RldGFjaChkcnZyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDc6NTc6MjAuNDEwNzg0NjMyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNTMwMzY4NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgQnJvYWRjb20gV2ktRmkgUENJZSBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0J3MgY2xlYXIgdGhhdCB0aGUgY29kZSBzZXR0aW5nIGBCUkNNRl9QUk9UT19NU0dCVUZgIGlzICpvbmx5KiBmb3VuZCB3aXRoaW4gYHBjaWUuY2AuIEFuZCB0aGF0J3Mgc3BlY2lmaWNhbGx5IHRoZSBQQ0llIGRyaXZlciBmb3IgQnJvYWRjb20gV2ktRmkgY2hpcHMuIEhlcmUncyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nOiBRRU1VLCBhcyB3ZSBrbm93LCBkb2Vzbid0IGVtdWxhdGUgQnJvYWRjb20gV2ktRmkgUENJZSBjYXJkcy4gVGhlcmVmb3JlLCBieSBpdHMgbmF0dXJlLCB0aGlzIGNvZGUgcGF0aCBpcyBzaW1wbHkgaW5hY2Nlc3NpYmxlIHdpdGhpbiBhIHZpcnR1YWxpemVkIFFFTVUgZW52aXJvbm1lbnQuXG5cbk5vdywgcmV2aWV3aW5nIHRoZSBwcm9tcHQncyBleHBsaWNpdCBpbnN0cnVjdGlvbiwgaXQgbmFpbHMgdGhpcyBzY2VuYXJpbzogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5UaGlzIGlzIGEgdGV4dGJvb2sgbWF0Y2guIFRoZSBgYnJjbWZtYWNgIFBDSWUgZHJpdmVyICp1bmVxdWl2b2NhbGx5KiByZXF1aXJlcyBhIHBoeXNpY2FsIEJyb2FkY29tIFdpLUZpIFBDSWUgY2FyZC4gVGhlIGVtdWxhdGlvbiBqdXN0IGlzbid0IHRoZXJlIGluIHN0YW5kYXJkIFFFTVUuIFNvLCBhZnRlciB0aGlzIGFuYWx5c2lzLCBpdCdzIGNsZWFyOiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGZ1enppbmcgZWZmb3J0IHdvdWxkIGJlIHVucHJvZHVjdGl2ZSBiZWNhdXNlIGl0IGNhbid0IHJlYWNoIHRoaXMgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwMTgsIk91dHB1dFRva2VucyI6MTMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA3OjU3OjI1LjY2MzgyNTUxNFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBtc2didWYuY2AgaW4gdGhlIEJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXIgKGJyY21mbWFjKS4gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIE1TR0JVRiBwcm90b2NvbCwgd2hpY2ggaXMgZXhjbHVzaXZlbHkgdXNlZCBieSB0aGUgUENJZSBpbnRlcmZhY2Ugb2YgdGhlIGRyaXZlciAoYHBjaWUuY2ApLiBTaW5jZSBRRU1VIGRvZXMgbm90IGVtdWxhdGUgQnJvYWRjb20gV2ktRmkgUENJZSBoYXJkd2FyZSwgYW5kIHN5emthbGxlcidzIFBDSSBmdXp6ZXIgY2Fubm90IGVtdWxhdGUgdGhlIGNvbXBsZXggRE1BIHJpbmdzIGFuZCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMgcmVxdWlyZWQgdG8gcmVhY2ggdGhpcyBjb2RlLCBpdCBpcyB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG1zZ2J1Zi5jYCBpbiB0aGUgQnJvYWRjb20gRnVsbE1BQyBXTEFOIGRyaXZlciAoYnJjbWZtYWMpLiBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgTVNHQlVGIHByb3RvY29sLCB3aGljaCBpcyBleGNsdXNpdmVseSB1c2VkIGJ5IHRoZSBQQ0llIGludGVyZmFjZSBvZiB0aGUgZHJpdmVyIChgcGNpZS5jYCkuIFNpbmNlIFFFTVUgZG9lcyBub3QgZW11bGF0ZSBCcm9hZGNvbSBXaS1GaSBQQ0llIGhhcmR3YXJlLCBhbmQgc3l6a2FsbGVyJ3MgUENJIGZ1enplciBjYW5ub3QgZW11bGF0ZSB0aGUgY29tcGxleCBETUEgcmluZ3MgYW5kIGZpcm13YXJlIGludGVyYWN0aW9ucyByZXF1aXJlZCB0byByZWFjaCB0aGlzIGNvZGUsIGl0IGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow7nhjp[1] Phase: Running StartedAt: 2026-08-03 07:57:52 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhjp[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-03 07:57:52 +0000 UTC FinishedAt: 2026-08-03 07:57:56 +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,}