Name: series-workflowngx8c Phase: Failed StartedAt: 2026-09-07 00:49:42 +0000 UTC FinishedAt: 2026-09-07 00:52:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowngx8c[0] Phase: Succeeded StartedAt: 2026-09-07 00:49:42 +0000 UTC FinishedAt: 2026-09-07 00:52:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowngx8c[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 00:49:42 +0000 UTC FinishedAt: 2026-09-07 00:52:21 +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+CgkJCTx0ZD4yMDI2LzA5LzA3IDAwOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHVzZXJzcGFjZSB0b29scyAodG9vbHMvcGVyZiBhbmQgdG9vbHMvYnVpbGQpLCBwb3J0aW5nIHBlcmYmIzM5O3MgR1RLIGludGVyZmFjZSBzdXBwb3J0IGZyb20gR1RLMiB0byBHVEs0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDA6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMzA5YzgyMzVkZWY2ZGY3MTNmYTQwOTk5NDFlZTkyMDZhZmNmMWNmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwMDo1MjowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlIGIvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZVxuaW5kZXggOTllYjBlYTA5NTM3NS4uN2ZmZWI3NWEwMWM3OSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcbkBAIC0xMTMsOCAmIzQzOzExMyw4IEBAIEZFQVRVUkVfVEVTVFNfRVhUUkEgOj0gICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGNvbXBpbGUteDMyICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGNwbHVzLWRlbWFuZ2xlICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGN4YS1kZW1hbmdsZSAgICAgICAgICAgICAgICAgICBcXFxuLSAgICAgICAgIGd0azIgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLSAgICAgICAgIGd0azItaW5mb2JhciAgICAgICAgICAgICAgICAgICBcXFxuJiM0MzsgICAgICAgICBndGs0ICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiYjNDM7ICAgICAgICAgZ3RrNC1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgaGVsbG8gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgYmFiZWx0cmFjZTItY3RmLXdyaXRlciAgICAgICAgIFxcXG4gICAgICAgICAgbGliY2Fwc3RvbmUgICAgICAgICAgICAgICAgICAgIFxcXG5AQCAtMTQzLDYgJiM0MzsxNDMsNyBAQCBlbmRpZlxuIEZFQVRVUkVfRElTUExBWSA/PSAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBsaWJkdyAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgZ2xpYmMgICAgICAgICAgICAgICAgICBcXFxuJiM0MzsgICAgICAgICBndGs0ICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgbGliZWxmICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGxpYm51bWEgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBudW1hX251bV9wb3NzaWJsZV9jcHVzIFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZSBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGVcbmluZGV4IDdkMTY1MDE4MTE2YTUuLjJjYTk5MmZiYjlhZDUgMTAwNjQ0XG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXG5AQCAtMTEsOCAmIzQzOzExLDggQEAgRklMRVM9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICB0ZXN0LWV2ZW50ZmQuYmluICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtZm9ydGlmeS1zb3VyY2UuYmluICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1nbGliYy5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi0gICAgICAgICB0ZXN0LWd0azIuYmluICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLSAgICAgICAgIHRlc3QtZ3RrMi1pbmZvYmFyLmJpbiAgICAgICAgICAgICAgICAgIFxcXG4mIzQzOyAgICAgICAgIHRlc3QtZ3RrNC5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4mIzQzOyAgICAgICAgIHRlc3QtZ3RrNC1pbmZvYmFyLmJpbiAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1oZWxsby5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICB0ZXN0LWxpYmJmZC5iaW4gICAgICAgICAgICAgICAgICAgICAgICBcXFxuIFx0IHRlc3QtbGliYmZkLXRocmVhZHNhZmUuYmluICAgICAgXHRcXFxuQEAgLTI0MCwxMSAmIzQzOzI0MCwxMSBAQCAkKE9VVFBVVCl0ZXN0LWxpYmNwdXBvd2VyLmJpbjpcbiAkKE9VVFBVVCl0ZXN0LWxpYnRyYWNlZnMuYmluOlxuIFx0ICQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJ0cmFjZWZzIDJcdTAwM2UvZGV2L251bGwpIC1sdHJhY2Vmc1xuIFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46XG4tXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyXHUwMDNlL2Rldi9udWxsKSAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXG4mIzQzOyQoT1VUUFVUKXRlc3QtZ3RrNC5iaW46XG4mIzQzO1x0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4gXG4tJChPVVRQVVQpdGVzdC1ndGsyLWluZm9iYXIuYmluOlxuLVx0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsmIzQzOy0yLjAgMlx1MDAzZS9kZXYvbnVsbClcbiYjNDM7JChPVVRQVVQpdGVzdC1ndGs0LWluZm9iYXIuYmluOlxuJiM0MztcdCQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXHUwMDNlL2Rldi9udWxsKVxuIFxuIGdyZXAtbGlicyAgPSAkKGZpbHRlciAtbCUsJCgxKSlcbiBzdHJpcC1saWJzID0gJChmaWx0ZXItb3V0IC1sJSwkKDEpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuY1xuc2ltaWxhcml0eSBpbmRleCA3NyVcbnJlbmFtZSBmcm9tIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuY1xucmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuY1xuaW5kZXggYjFiNzE2ZGQ1NzMzMC4uNmMxYmNlZTU5NWE5YyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQtaW5mb2Jhci5jXG5AQCAtMyw5ICYjNDM7Myw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjZ3RrL2d0ay5oXHUwMDNlXG4gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBlcnJvciBcJiMzNDstV3N0cmljdC1wcm90b3R5cGVzXCYjMzQ7XG4gXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiYjNDM7aW50IG1haW4odm9pZClcbiB7XG4tXHRndGtfaW5pdChcdTAwMjZhcmdjLCBcdTAwMjZhcmd2KTtcbiYjNDM7XHRndGtfaW5pdCgpO1xuIFx0Z3RrX2luZm9fYmFyX25ldygpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LmNcbnNpbWlsYXJpdHkgaW5kZXggNzYlXG5yZW5hbWUgZnJvbSB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jXG5yZW5hbWUgdG8gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuY1xuaW5kZXggMmFhZjRiZmMyMDU1Ni4uYjk1MjBlNzQwOGI5OSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LmNcbkBAIC0zLDkgJiM0MzszLDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NndGsvZ3RrLmhcdTAwM2VcbiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFwmIzM0Oy1Xc3RyaWN0LXByb3RvdHlwZXNcJiMzNDtcbiBcbi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuJiM0MztpbnQgbWFpbih2b2lkKVxuIHtcbi1cdGd0a19pbml0KFx1MDAyNmFyZ2MsIFx1MDAyNmFyZ3YpO1xuJiM0MztcdGd0a19pbml0KCk7XG4gXG4gICAgICAgICByZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dCBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcbmluZGV4IDIyZjg3ZWFhMzI3OTYuLjdhZjliM2Y4MWMwNjUgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0XG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0XG5AQCAtMzUxLDcgJiM0MzszNTEsNyBAQCBPUFRJT05TXG4gXHRyZXF1aXJlcyBhIHR0eSwgaWYgb25lIGlzIG5vdCBwcmVzZW50LCBhcyB3aGVuIHBpcGluZyB0byBvdGhlclxuIFx0Y29tbWFuZHMsIHRoZSBzdGRpbyBpbnRlcmZhY2UgaXMgdXNlZC5cbiBcbi0tLWd0azo6IFVzZSB0aGUgR1RLMiBpbnRlcmZhY2UuXG4mIzQzOy0tZ3RrOjogVXNlIHRoZSBHVEs0IGludGVyZmFjZS5cbiBcbiAtazo6XG4gLS12bWxpbnV4PVx1MDAzY2ZpbGVcdTAwM2U6OlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUgYi90b29scy9wZXJmL01ha2VmaWxlXG5pbmRleCA1YjcxMzgzN2VlZGU3Li41NjAxNDEwNjQ3OWEzIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9NYWtlZmlsZVxuQEAgLTEwNiw3ICYjNDM7MTA2LDcgQEAgY2xlYW46XG4gIyBtYWtlIC1DIHRvb2xzL3BlcmYgLWYgdGVzdHMvbWFrZVxuICNcbiBidWlsZC10ZXN0OlxuLVx0QCQoTUFLRSkgU0hVRj0xIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IHRhcnBrZyBtYWtlX3N0YXRpYyBtYWtlX3dpdGhfZ3RrMiBvdXRcbiYjNDM7XHRAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGs0IG91dFxuIFxuIGJ1aWxkLXRlc3QtdGFyYmFsbDpcbiBcdEAkKE1BS0UpIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IG91dFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnIGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5jb25maWdcbmluZGV4IDRkNTk5M2RhOWY5NDUuLmVmNzQxOWE1YjAxMzcgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5jb25maWdcbkBAIC03NzQsMjEgJiM0Mzs3NzQsMjYgQEAgaWZuZGVmIE5PX1NMQU5HXG4gICBlbmRpZlxuIGVuZGlmXG4gXG4taWZkZWYgR1RLMlxuLSAgRkxBR1NfR1RLMj0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrJiM0MzstMi4wIDJcdTAwM2UvZGV2L251bGwpXG4tICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGsyKVxuLSAgaWZuZXEgKCQoZmVhdHVyZS1ndGsyKSwgMSlcbi0gICAgJCh3YXJuaW5nIEdUSzIgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEsyIHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azItZGV2ZWwgb3IgbGliZ3RrMi4wLWRldilcbi0gICAgTk9fR1RLMiA6PSAxXG4mIzQzO2lmZGVmIEdUSzRcbiYjNDM7ICBGTEFHU19HVEs0PSQoQ0ZMQUdTKSAkKExERkxBR1MpICQoRVhUTElCUykgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4mIzQzOyAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrNClcbiYjNDM7ICBpZm5lcSAoJChmZWF0dXJlLWd0azQpLCAxKVxuJiM0MzsgICAgJCh3YXJuaW5nIEdUSzQgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEs0IHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azQtZGV2ZWwgb3IgbGliZ3RrLTQtZGV2KVxuJiM0MzsgICAgTk9fR1RLNCA6PSAxXG4gICBlbHNlXG4tICAgICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azItaW5mb2Jhcilcbi0gICAgaWZlcSAoJChmZWF0dXJlLWd0azItaW5mb2JhciksIDEpXG4mIzQzOyAgICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0LWluZm9iYXIpXG4mIzQzOyAgICBpZmVxICgkKGZlYXR1cmUtZ3RrNC1pbmZvYmFyKSwgMSlcbiAgICAgICBHVEtfQ0ZMQUdTIDo9IC1ESEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuICAgICBlbmRpZlxuLSAgICBDRkxBR1MgJiM0Mzs9IC1ESEFWRV9HVEsyX1NVUFBPUlRcbi0gICAgR1RLX0NGTEFHUyAmIzQzOz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyXHUwMDNlL2Rldi9udWxsKVxuLSAgICBHVEtfTElCUyA6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGd0ayYjNDM7LTIuMCAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MzsgICAgQ0ZMQUdTICYjNDM7PSAtREhBVkVfR1RLNF9TVVBQT1JUXG4mIzQzOyAgICBHVEtfQ0ZMQUdTICYjNDM7PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgZ3RrNCAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MzsgICAgR1RLX0xJQlMgOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4gICAgIEVYVExJQlMgJiM0Mzs9IC1sZGxcbiYjNDM7ICAgICMgbGlicGVyZi1ndGsuc28gaXMgZGxvcGVuKCllZCBhdCBydW50aW1lIGFuZCBjYWxscyBiYWNrIGludG9cbiYjNDM7ICAgICMgc3ltYm9scyBkZWZpbmVkIGluIHRoZSBwZXJmIGJpbmFyeSBpdHNlbGYgKGNhbGxjaGFpbl9wYXJhbSxcbiYjNDM7ICAgICMgc3ltYm9sX2NvbmYsIGV2c2VsX19uYW1lLCAuLi4pOiBwZXJmIG5lZWRzIHRvIGV4cG9ydCB0aG9zZVxuJiM0MzsgICAgIyBkeW5hbWljYWxseSBmb3IgdGhlIHBsdWdpbiB0byByZXNvbHZlIHRoZW0uXG4mIzQzOyAgICBMREZMQUdTICYjNDM7PSAtcmR5bmFtaWNcbiAgIGVuZGlmXG4gZW5kaWZcbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLnBlcmYgYi90b29scy9wZXJmL01ha2VmaWxlLnBlcmZcbmluZGV4IDI5Y2ZkNDRjNDI3ZjMuLjI0MzhiNDBlYWFlYzEgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL01ha2VmaWxlLnBlcmZcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuQEAgLTQ5LDcgJiM0Mzs0OSw3IEBAIGluY2x1ZGUgLi4vc2NyaXB0cy91dGlsaXRpZXMubWFrXG4gI1xuICMgRGVmaW5lIE5PX1NMQU5HIGlmIHlvdSBkbyBub3Qgd2FudCBUVUkgc3VwcG9ydC5cbiAjXG4tIyBEZWZpbmUgR1RLMiBpZiB5b3Ugd2FudCBHVEsmIzQzOyBHVUkgc3VwcG9ydC5cbiYjNDM7IyBEZWZpbmUgR1RLNCBpZiB5b3Ugd2FudCBHVEsmIzQzOyBHVUkgc3VwcG9ydC5cbiAjXG4gIyBEZWZpbmUgTk9fREVNQU5HTEUgaWYgeW91IGRvIG5vdCB3YW50IEMmIzQzOyYjNDM7IHN5bWJvbCBkZW1hbmdsaW5nLlxuICNcbkBAIC00NzMsNyAmIzQzOzQ3Myw3IEBAIGlmbmVxICgkKE9VVFBVVCksKVxuICAgQ0ZMQUdTICYjNDM7PSAtSSQoT1VUUFVUKVxuIGVuZGlmXG4gXG4taWZkZWYgR1RLMlxuJiM0MztpZmRlZiBHVEs0XG4gICBBTExfUFJPR1JBTVMgJiM0Mzs9ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvXG4gICBHVEtfSU4gOj0gJChPVVRQVVQpZ3RrLWluLm9cbiBlbmRpZlxuQEAgLTgxMSw3ICYjNDM7ODExLDcgQEAgY2hlY2s6IHByZXBhcmVcbiBcbiAjIyMgSW5zdGFsbGF0aW9uIHJ1bGVzXG4gXG4taWZkZWYgR1RLMlxuJiM0MztpZmRlZiBHVEs0XG4gaW5zdGFsbC1ndGs6ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvXG4gXHQkKGNhbGwgUVVJRVRfSU5TVEFMTCwgJiMzOTtHVEsgVUkmIzM5OykgXFxcbiBcdFx0JChJTlNUQUxMKSAtZCAtbSA3NTUgJiMzOTskKERFU1RESVJfU1EpJChsaWJkaXJfU1EpJiMzOTs7IFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMgYi90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuY1xuaW5kZXggNjljYjcyYjIwODJhNi4uMTUxNjNlMDgxYThjZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuY1xuQEAgLTUyLDcgJiM0Mzs1Miw3IEBAIHN0cnVjdCBwZXJmX2Fubm90YXRlIHtcbiBcdGJvb2xcdCAgIHVzZV90dWk7XG4gI2VuZGlmXG4gXHRib29sXHQgICB1c2Vfc3RkaW8sIHVzZV9zdGRpbzI7XG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4mIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxuIFx0Ym9vbFx0ICAgdXNlX2d0aztcbiAjZW5kaWZcbiBcdGJvb2xcdCAgIHNraXBfbWlzc2luZztcbkBAIC03MTIsNyAmIzQzOzcxMiw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0T1BUX0JPT0xFQU4oJiMzOTtxJiMzOTssIFwmIzM0O3F1aWV0XCYjMzQ7LCBcdTAwMjZxdWlldCwgXCYjMzQ7ZG8gbm93IHNob3cgYW55IHdhcm5pbmdzIG9yIG1lc3NhZ2VzXCYjMzQ7KSxcbiBcdE9QVF9CT09MRUFOKCYjMzk7RCYjMzk7LCBcJiMzNDtkdW1wLXJhdy10cmFjZVwmIzM0OywgXHUwMDI2ZHVtcF90cmFjZSxcbiBcdFx0ICAgIFwmIzM0O2R1bXAgcmF3IHRyYWNlIGluIEFTQ0lJXCYjMzQ7KSxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRPUFRfQk9PTEVBTigwLCBcJiMzNDtndGtcJiMzNDssIFx1MDAyNmFubm90YXRlLnVzZV9ndGssIFwmIzM0O1VzZSB0aGUgR1RLIGludGVyZmFjZVwmIzM0OyksXG4gI2VuZGlmXG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxuQEAgLTgyOCw3ICYjNDM7ODI4LDcgQEAgaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gXHRpZiAoYW5ub3RhdGVfY2hlY2tfYXJncygpIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRpZiAoc3ltYm9sX2NvbmYuc2hvd19ucl9zYW1wbGVzIFx1MDAyNlx1MDAyNiBhbm5vdGF0ZS51c2VfZ3RrKSB7XG4gXHRcdHByX2VycihcJiMzNDstLXNob3ctbnItc2FtcGxlcyBpcyBub3QgYXZhaWxhYmxlIGluIC0tZ3RrIG1vZGUgYXQgdGhpcyB0aW1lXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC04OTgsNyAmIzQzOzg5OCw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX3R1aSlcbiBcdFx0dXNlX2Jyb3dzZXIgPSAxO1xuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdGVsc2UgaWYgKGFubm90YXRlLnVzZV9ndGspXG4gXHRcdHVzZV9icm93c2VyID0gMjtcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmMgYi90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmNcbmluZGV4IDYwZDFmMTY2NjI5ZTAuLmQxNDM4NGM1ODQ2NjEgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuQEAgLTgyLDcgJiM0Mzs4Miw3IEBAIHN0cnVjdCByZXBvcnQge1xuICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlRcbiBcdGJvb2xcdFx0XHR1c2VfdHVpO1xuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdGJvb2xcdFx0XHR1c2VfZ3RrO1xuICNlbmRpZlxuIFx0Ym9vbFx0XHRcdHVzZV9zdGRpbztcbkBAIC0xMzU5LDggJiM0MzsxMzU5LDggQEAgaW50IGNtZF9yZXBvcnQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlRcbiBcdE9QVF9CT09MRUFOKDAsIFwmIzM0O3R1aVwmIzM0OywgXHUwMDI2cmVwb3J0LnVzZV90dWksIFwmIzM0O1VzZSB0aGUgVFVJIGludGVyZmFjZVwmIzM0OyksXG4gI2VuZGlmXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4tXHRPUFRfQk9PTEVBTigwLCBcJiMzNDtndGtcJiMzNDssIFx1MDAyNnJlcG9ydC51c2VfZ3RrLCBcJiMzNDtVc2UgdGhlIEdUSzIgaW50ZXJmYWNlXCYjMzQ7KSxcbiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4mIzQzO1x0T1BUX0JPT0xFQU4oMCwgXCYjMzQ7Z3RrXCYjMzQ7LCBcdTAwMjZyZXBvcnQudXNlX2d0aywgXCYjMzQ7VXNlIHRoZSBHVEs0IGludGVyZmFjZVwmIzM0OyksXG4gI2VuZGlmXG4gXHRPUFRfQk9PTEVBTigwLCBcJiMzNDtzdGRpb1wmIzM0OywgXHUwMDI2cmVwb3J0LnVzZV9zdGRpbyxcbiBcdFx0ICAgIFwmIzM0O1VzZSB0aGUgc3RkaW8gaW50ZXJmYWNlXCYjMzQ7KSxcbkBAIC0xNzEwLDcgJiM0MzsxNzEwLDcgQEAgaW50IGNtZF9yZXBvcnQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0ZWxzZSBpZiAocmVwb3J0LnVzZV90dWkpXG4gXHRcdHVzZV9icm93c2VyID0gMTtcbiAjZW5kaWZcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRlbHNlIGlmIChyZXBvcnQudXNlX2d0aylcbiBcdFx0dXNlX2Jyb3dzZXIgPSAyO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2ggYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXG5pbmRleCBkMDAzZTdmYWIyYmU4Li5hNjAxYTUyNjBjMTdlIDEwMDc1NVxuLS0tIGEvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxuQEAgLTE5OSw4ICYjNDM7MTk5LDggQEAgZmVkb3JhX3BrZ19mb3IoKSB7XG4gXHQjIG9wdC1pbiBmZWF0dXJlcywgd2hpY2ggYSBkZWZhdWx0IGJ1aWxkIGRvZXMgbm90IGVuYWJsZTogdGhlIGxpYmJmZFxuIFx0IyBkaXNhc3NlbWJsZXIgZmFtaWx5IChsaWJiZmQsIGxpYmJmZC10aHJlYWRzYWZlLCBsaWJiZmQtbGliZXJ0eSxcbiBcdCMgZGlzYXNzZW1ibGVyLSosIGNwbHVzLWRlbWFuZ2xlKSwgb25seSBsaW5rZWQgb24gQlVJTERfTk9ORElTVFJPXG4tXHQjIGJ1aWxkcyBhbmQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjYXBzdG9uZSwgR1RLMiwgTElCUEVSTCBhbmRcbi1cdCMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzIgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLFxuJiM0MztcdCMgYnVpbGRzIGFuZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNhcHN0b25lLCBHVEs0LCBMSUJQRVJMIGFuZFxuJiM0MztcdCMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzQgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLFxuIFx0IyBhbmQgQ29yZVNpZ2h0IChpZmRlZiBDT1JFU0lHSFQpLCBhcmUgZGVsaWJlcmF0ZWx5IG5vdCBtYXBwZWQuXG4gXHQjIGxpYmFpbyBpcyBub3QgbWFwcGVkIGVpdGhlcjogaXRzXG4gXHQjIHRlc3QgdXNlcyB0aGUgUE9TSVggQUlPIEFQSSAoYWlvLmgsIGFpb18qLCAtbHJ0KSwgcHJvdmlkZWQgYnlcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3Rlc3RzL21ha2UgYi90b29scy9wZXJmL3Rlc3RzL21ha2VcbmluZGV4IGQyYzJmNTI2ZTFkYjAuLjIwMmFiNTUwMTkxNjEgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3Rlc3RzL21ha2VcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZVxuQEAgLTk1LDcgJiM0Mzs5NSw3IEBAIG1ha2Vfbm9fYmFiZWx0cmFjZTIgOj0gTk9fQkFCRUxUUkFDRTI9MVxuIG1ha2Vfd2l0aF9jb3Jlc2lnaHQgOj0gQ09SRVNJR0hUPTFcbiBtYWtlX25vX3NkdFx0ICAgIDo9IE5PX1NEVD0xXG4gbWFrZV9ub19saWJwZm00ICAgICA6PSBOT19MSUJQRk00PTFcbi1tYWtlX3dpdGhfZ3RrMiAgICAgIDo9IEdUSzI9MVxuJiM0MzttYWtlX3dpdGhfZ3RrNCAgICAgIDo9IEdUSzQ9MVxuIG1ha2VfcmVmY250X2NoZWNrICAgOj0gRVhUUkFfQ0ZMQUdTPVwmIzM0Oy1EUkVGQ05UX0NIRUNLSU5HPTFcJiMzNDtcbiBtYWtlX3RhZ3MgICAgICAgICAgIDo9IHRhZ3NcbiBtYWtlX2NzY29wZSAgICAgICAgIDo9IGNzY29wZVxuQEAgLTMxOCw3ICYjNDM7MzE4LDcgQEAgJChydW4pOlxuIFx0JChjYWxsIHRlc3QsJEApIFx1MDAyNlx1MDAyNiBcXFxuIFx0cm0gLXJmICRAICQkVE1QX0RFU1QgfHwgKGNhdCAkQCA7IGZhbHNlKVxuIFxuLW1ha2Vfd2l0aF9ndGsyOlxuJiM0MzttYWtlX3dpdGhfZ3RrNDpcbiBcdCQoY2FsbCBjbGVhbilcbiBcdEBUTVBfREVTVD0kJChta3RlbXAgLWQpOyBcXFxuIFx0Y21kPVwmIzM0O2NkICQoUEVSRikgXHUwMDI2XHUwMDI2ICQoTUFLRV9GKSAkKCRAKSAkKFBBUkFMTEVMX09QVCkgJChPX09QVCkgREVTVERJUj0kJFRNUF9ERVNUXCYjMzQ7OyBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmMgYi90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jXG5pbmRleCA4OTIwZTI5ODQyMGE4Li5mYzQ2YWMxNTA0MDg4IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xuQEAgLTE2MSw3ICYjNDM7MTYxLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fYW5ub3RhdGVfc3ltYm9sKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsXG4gXHRcdFx0Z3RrX2xpc3Rfc3RvcmVfc2V0KHN0b3JlLCBcdTAwMjZpdGVyLCBBTk5fQ09MX19MSU5FLCBzLCAtMSk7XG4gXHR9XG4gXG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xuJiM0MztcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCBuLCBcdTAwMjZub3Rlcy1cdTAwM2VzcmMtXHUwMDNlc291cmNlLCBhbC5ub2RlKSB7XG4gXHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2cG9zLVx1MDAzZWFsLm5vZGUpO1xuQEAgLTIxMSwzNCAmIzQzOzIxMSwzMSBAQCBzdGF0aWMgaW50IHN5bWJvbF9fZ3RrX2Fubm90YXRlKHN0cnVjdCBtYXBfc3ltYm9sICptcywgc3RydWN0IGV2c2VsICpldnNlbCxcbiBcdFx0c2lnbmFsKFNJR1FVSVQsIHBlcmZfZ3RrX19zaWduYWwpO1xuIFx0XHRzaWduYWwoU0lHVEVSTSwgcGVyZl9ndGtfX3NpZ25hbCk7XG4gXG4tXHRcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpO1xuJiM0MztcdFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcdFx0Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyh3aW5kb3cpLCBcJiMzNDtwZXJmIGFubm90YXRlXCYjMzQ7KTtcbiBcbi1cdFx0Z19zaWduYWxfY29ubmVjdCh3aW5kb3csIFwmIzM0O2RlbGV0ZV9ldmVudFwmIzM0OywgZ3RrX21haW5fcXVpdCwgTlVMTCk7XG4tXG4gXHRcdHBnY3R4ID0gcGVyZl9ndGtfX2FjdGl2YXRlX2NvbnRleHQod2luZG93KTtcbiBcdFx0aWYgKCFwZ2N0eClcbiBcdFx0XHRyZXR1cm4gLTE7XG4gXG4tXHRcdHZib3ggPSBndGtfdmJveF9uZXcoRkFMU0UsIDApO1xuJiM0MztcdFx0dmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7XG4gXHRcdG5vdGVib29rID0gZ3RrX25vdGVib29rX25ldygpO1xuIFx0XHRwZ2N0eC1cdTAwM2Vub3RlYm9vayA9IG5vdGVib29rO1xuIFxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApO1xuJiM0MztcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4mIzQzO1x0XHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBub3RlYm9vayk7XG4gXG4gXHRcdGluZm9iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTtcbi1cdFx0aWYgKGluZm9iYXIpIHtcbi1cdFx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb2Jhcixcbi1cdFx0XHRcdFx0ICAgRkFMU0UsIEZBTFNFLCAwKTtcbi1cdFx0fVxuJiM0MztcdFx0aWYgKGluZm9iYXIpXG4mIzQzO1x0XHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9iYXIpO1xuIFxuIFx0XHRzdGF0YmFyID0gcGVyZl9ndGtfX3NldHVwX3N0YXR1c2JhcigpO1xuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTtcbiYjNDM7XHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpO1xuIFxuLVx0XHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZib3gpO1xuJiM0MztcdFx0Z3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyh3aW5kb3cpLCB2Ym94KTtcbiBcdH1cbiBcbi1cdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpO1xuJiM0MztcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KCk7XG4gXHR0YWJfbGFiZWwgPSBndGtfbGFiZWxfbmV3KHN5bS1cdTAwM2VuYW1lKTtcbiBcbiBcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksXG5AQCAtMjY3LDEyICYjNDM7MjY0LDExIEBAIHZvaWQgcGVyZl9ndGtfX3Nob3dfYW5ub3RhdGlvbnModm9pZClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0d2luZG93ID0gcGdjdHgtXHUwMDNlbWFpbl93aW5kb3c7XG4tXHRndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7XG4gXG4gXHRwZXJmX2d0a19fcmVzaXplX3dpbmRvdyh3aW5kb3cpO1xuLVx0Z3RrX3dpbmRvd19zZXRfcG9zaXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpLCBHVEtfV0lOX1BPU19DRU5URVIpO1xuJiM0MztcdGd0a193aWRnZXRfc2V0X3Zpc2libGUod2luZG93LCBUUlVFKTtcbiBcbi1cdGd0a19tYWluKCk7XG4mIzQzO1x0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXHUwMDI2cGdjdHgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmMgYi90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcbmluZGV4IGQyZGFkZjM4NzNmYmQuLjk5YmIwZWE3NmQ3NzUgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xuQEAgLTE2LDIxICYjNDM7MTYsNTMgQEAgdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpXG4gdm9pZCBwZXJmX2d0a19fcmVzaXplX3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdylcbiB7XG4gXHRHZGtSZWN0YW5nbGUgcmVjdDtcbi1cdEdka1NjcmVlbiAqc2NyZWVuO1xuLVx0aW50IG1vbml0b3I7XG4mIzQzO1x0R2RrTW9uaXRvciAqbW9uaXRvcjtcbiYjNDM7XHRHZGtEaXNwbGF5ICpkaXNwbGF5O1xuJiM0MztcdEdMaXN0TW9kZWwgKm1vbml0b3JzO1xuIFx0aW50IGhlaWdodDtcbiBcdGludCB3aWR0aDtcbiBcbi1cdHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbih3aW5kb3cpO1xuJiM0MztcdGRpc3BsYXkgPSBndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHdpbmRvdyk7XG4mIzQzO1x0bW9uaXRvcnMgPSBnZGtfZGlzcGxheV9nZXRfbW9uaXRvcnMoZGlzcGxheSk7XG4mIzQzO1x0bW9uaXRvciA9IGdfbGlzdF9tb2RlbF9nZXRfaXRlbShtb25pdG9ycywgMCk7XG4mIzQzO1x0aWYgKCFtb25pdG9yKSB7XG4mIzQzO1x0XHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCA4MDAsIDYwMCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFxuLVx0bW9uaXRvciA9IGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93LVx1MDAzZXdpbmRvdyk7XG4tXG4tXHRnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5KHNjcmVlbiwgbW9uaXRvciwgXHUwMDI2cmVjdCk7XG4mIzQzO1x0Z2RrX21vbml0b3JfZ2V0X2dlb21ldHJ5KG1vbml0b3IsIFx1MDAyNnJlY3QpO1xuJiM0MztcdGdfb2JqZWN0X3VucmVmKG1vbml0b3IpO1xuIFxuIFx0d2lkdGhcdD0gcmVjdC53aWR0aCAqIDMgLyA0O1xuIFx0aGVpZ2h0XHQ9IHJlY3QuaGVpZ2h0ICogMyAvIDQ7XG4gXG4tXHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpO1xuJiM0MztcdGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgR01haW5Mb29wICpwZXJmX2d0a19fbWFpbl9sb29wO1xuJiM0MztcbiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9tYWluX2xvb3Aodm9pZClcbiYjNDM7e1xuJiM0MztcdGlmIChwZXJmX2d0a19fbWFpbl9sb29wKVxuJiM0MztcdFx0Z19tYWluX2xvb3BfcXVpdChwZXJmX2d0a19fbWFpbl9sb29wKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGdib29sZWFuIHBlcmZfZ3RrX19jbG9zZV9yZXF1ZXN0KEd0a1dpZGdldCAqd2lkZ2V0IF9fbWF5YmVfdW51c2VkLFxuJiM0MztcdFx0XHRcdFx0Z3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcbiYjNDM7e1xuJiM0MztcdHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCgpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gRkFMU0U7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpXG4mIzQzO3tcbiYjNDM7XHRnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgXCYjMzQ7Y2xvc2UtcmVxdWVzdFwmIzM0OyxcbiYjNDM7XHRcdFx0IEdfQ0FMTEJBQ0socGVyZl9ndGtfX2Nsb3NlX3JlcXVlc3QpLCBOVUxMKTtcbiYjNDM7XG4mIzQzO1x0cGVyZl9ndGtfX21haW5fbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBGQUxTRSk7XG4mIzQzO1x0Z19tYWluX2xvb3BfcnVuKHBlcmZfZ3RrX19tYWluX2xvb3ApO1xuJiM0MztcdGdfY2xlYXJfcG9pbnRlcihcdTAwMjZwZXJmX2d0a19fbWFpbl9sb29wLCBnX21haW5fbG9vcF91bnJlZik7XG4gfVxuIFxuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudClcbkBAIC00NywxOCAmIzQzOzc5LDE2IEBAIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKHZvaWQpXG4ge1xuIFx0R3RrV2lkZ2V0ICppbmZvX2JhcjtcbiBcdEd0a1dpZGdldCAqbGFiZWw7XG4tXHRHdGtXaWRnZXQgKmNvbnRlbnRfYXJlYTtcbiBcbiBcdGluZm9fYmFyID0gZ3RrX2luZm9fYmFyX25ldygpO1xuLVx0Z3RrX3dpZGdldF9zZXRfbm9fc2hvd19hbGwoaW5mb19iYXIsIFRSVUUpO1xuJiM0MztcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoaW5mb19iYXIsIEZBTFNFKTtcbiBcbiBcdGxhYmVsID0gZ3RrX2xhYmVsX25ldyhcJiMzNDtcJiMzNDspO1xuIFx0Z3RrX3dpZGdldF9zaG93KGxhYmVsKTtcbiBcbi1cdGNvbnRlbnRfYXJlYSA9IGd0a19pbmZvX2Jhcl9nZXRfY29udGVudF9hcmVhKEdUS19JTkZPX0JBUihpbmZvX2JhcikpO1xuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihjb250ZW50X2FyZWEpLCBsYWJlbCk7XG4mIzQzO1x0Z3RrX2luZm9fYmFyX2FkZF9jaGlsZChHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBsYWJlbCk7XG4gXG4tXHRndGtfaW5mb19iYXJfYWRkX2J1dHRvbihHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBHVEtfU1RPQ0tfT0ssXG4mIzQzO1x0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgXCYjMzQ7X09LXCYjMzQ7LFxuIFx0XHRcdFx0R1RLX1JFU1BPTlNFX09LKTtcbiBcdGdfc2lnbmFsX2Nvbm5lY3QoaW5mb19iYXIsIFwmIzM0O3Jlc3BvbnNlXCYjMzQ7LFxuIFx0XHRcdCBHX0NBTExCQUNLKGd0a193aWRnZXRfaGlkZSksIE5VTEwpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oIGIvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmhcbmluZGV4IGEyYjQ5N2YwM2ZkNmUuLmJlZWE3NWQwMTk1NTYgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmhcbkBAIC00MCw2ICYjNDM7NDAsOSBAQCB2b2lkIHBlcmZfZ3RrX19pbml0X2hwcCh2b2lkKTtcbiBcbiB2b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZyk7XG4gdm9pZCBwZXJmX2d0a19fcmVzaXplX3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdyk7XG4mIzQzO3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpO1xuJiM0Mzt2b2lkIHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCh2b2lkKTtcbiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2codm9pZCk7XG4gY29uc3QgY2hhciAqcGVyZl9ndGtfX2dldF9wZXJjZW50X2NvbG9yKGRvdWJsZSBwZXJjZW50KTtcbiBHdGtXaWRnZXQgKnBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIodm9pZCk7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmNcbmluZGV4IGJhZTIxZjMzNmFlNmQuLmYwMDUzZTNhZjA3NzYgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXG5AQCAtMzk1LDExICYjNDM7Mzk1LDkgQEAgc3RhdGljIHZvaWQgcGVyZl9ndGtfX3Nob3dfaGlzdHMoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGd0a190cmVlX3ZpZXdfc2V0X3J1bGVzX2hpbnQoR1RLX1RSRUVfVklFVyh2aWV3KSwgVFJVRSk7XG4tXG4gXHRnX3NpZ25hbF9jb25uZWN0KHZpZXcsIFwmIzM0O3Jvdy1hY3RpdmF0ZWRcJiMzNDssXG4gXHRcdFx0IEdfQ0FMTEJBQ0sob25fcm93X2FjdGl2YXRlZCksIE5VTEwpO1xuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTtcbiYjNDM7XHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwZXJmX2d0a19fYWRkX2hpZXJhcmNoeV9lbnRyaWVzKHN0cnVjdCBoaXN0cyAqaGlzdHMsXG5AQCAtNTgzLDExICYjNDM7NTgxLDkgQEAgc3RhdGljIHZvaWQgcGVyZl9ndGtfX3Nob3dfaGllcmFyY2h5KEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxuIFx0cGVyZl9ndGtfX2FkZF9oaWVyYXJjaHlfZW50cmllcyhoaXN0cywgXHUwMDI2aGlzdHMtXHUwMDNlZW50cmllcywgc3RvcmUsXG4gXHRcdFx0XHRcdE5VTEwsIFx1MDAyNmhwcCwgbWluX3BjbnQpO1xuIFxuLVx0Z3RrX3RyZWVfdmlld19zZXRfcnVsZXNfaGludChHVEtfVFJFRV9WSUVXKHZpZXcpLCBUUlVFKTtcbi1cbiBcdGdfc2lnbmFsX2Nvbm5lY3QodmlldywgXCYjMzQ7cm93LWFjdGl2YXRlZFwmIzM0OyxcbiBcdFx0XHQgR19DQUxMQkFDSyhvbl9yb3dfYWN0aXZhdGVkKSwgTlVMTCk7XG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xuJiM0MztcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7XG4gfVxuIFxuIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxuQEAgLTYwNiwzMCAmIzQzOzYwMiwyOSBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcbiBcdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcbiBcdHNpZ25hbChTSUdURVJNLCBwZXJmX2d0a19fc2lnbmFsKTtcbiBcbi1cdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpO1xuJiM0MztcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7XG4gXG4gXHRndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksIFwmIzM0O3BlcmYgcmVwb3J0XCYjMzQ7KTtcbiBcbi1cdGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCBcJiMzNDtkZWxldGVfZXZlbnRcJiMzNDssIGd0a19tYWluX3F1aXQsIE5VTEwpO1xuLVxuIFx0cGdjdHggPSBwZXJmX2d0a19fYWN0aXZhdGVfY29udGV4dCh3aW5kb3cpO1xuIFx0aWYgKCFwZ2N0eClcbiBcdFx0cmV0dXJuIC0xO1xuIFxuLVx0dmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7XG4mIzQzO1x0dmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7XG4gXG4gXHRub3RlYm9vayA9IGd0a19ub3RlYm9va19uZXcoKTtcbiBcbi1cdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBub3RlYm9vaywgVFJVRSwgVFJVRSwgMCk7XG4mIzQzO1x0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4mIzQzO1x0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2spO1xuIFxuIFx0aW5mb19iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTtcbiBcdGlmIChpbmZvX2Jhcilcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGluZm9fYmFyLCBGQUxTRSwgRkFMU0UsIDApO1xuJiM0MztcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIpO1xuIFxuIFx0c3RhdGJhciA9IHBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIoKTtcbi1cdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBzdGF0YmFyLCBGQUxTRSwgRkFMU0UsIDApO1xuJiM0MztcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpO1xuIFxuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTtcbiYjNDM7XHRndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpO1xuIFxuIFx0ZXZsaXN0X19mb3JfZWFjaF9lbnRyeShldmxpc3QsIHBvcykge1xuIFx0XHRzdHJ1Y3QgaGlzdHMgKmhpc3RzID0gZXZzZWxfX2hpc3RzKHBvcyk7XG5AQCAtNjQ5LDcgJiM0Mzs2NDQsNyBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbi1cdFx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7XG4mIzQzO1x0XHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldygpO1xuIFxuIFx0XHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZF93aW5kb3cpLFxuIFx0XHRcdFx0XHRcdFx0R1RLX1BPTElDWV9BVVRPTUFUSUMsXG5AQCAtNjY1LDE1ICYjNDM7NjYwLDEyIEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxuIFx0XHRndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2UoR1RLX05PVEVCT09LKG5vdGVib29rKSwgc2Nyb2xsZWRfd2luZG93LCB0YWJfbGFiZWwpO1xuIFx0fVxuIFxuLVx0Z3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpO1xuLVxuIFx0cGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3cod2luZG93KTtcbi1cbi1cdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcbiYjNDM7XHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpbmRvdywgVFJVRSk7XG4gXG4gXHR1aV9oZWxwbGluZV9fcHVzaChoZWxwKTtcbiBcbi1cdGd0a19tYWluKCk7XG4mIzQzO1x0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXHUwMDI2cGdjdHgpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMgYi90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jXG5pbmRleCBlZWE2ZmNkZTUxOGE4Li4yOGE0YjQ4NjM2MGRlIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuQEAgLTMsNDcgJiM0MzszLDYyIEBAXG4gXG4gI2luY2x1ZGUgXCYjMzQ7Z3RrLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDsuLi9wcm9ncmVzcy5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcdTAwM2VcbiBcbiBzdGF0aWMgR3RrV2lkZ2V0ICpkaWFsb2c7XG4gc3RhdGljIEd0a1dpZGdldCAqcHJvZ3Jlc3M7XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fZGVzdHJveWVkKEd0a1dpZGdldCAqd2lkZ2V0IF9fbWF5YmVfdW51c2VkLFxuJiM0MztcdFx0XHRcdFx0Z3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcbiYjNDM7e1xuJiM0MztcdGRpYWxvZyA9IE5VTEw7XG4mIzQzO1x0cHJvZ3Jlc3MgPSBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fdXBkYXRlKHN0cnVjdCB1aV9wcm9ncmVzcyAqcClcbiB7XG4gXHRkb3VibGUgZnJhY3Rpb24gPSBwLVx1MDAzZXRvdGFsID8gMS4wICogcC1cdTAwM2VjdXJyIC8gcC1cdTAwM2V0b3RhbCA6IDAuMDtcbiBcdGNoYXIgYnVmWzEwMjRdO1xuIFxuIFx0aWYgKGRpYWxvZyA9PSBOVUxMKSB7XG4tXHRcdEd0a1dpZGdldCAqdmJveCA9IGd0a192Ym94X25ldyhUUlVFLCA1KTtcbiYjNDM7XHRcdEd0a1dpZGdldCAqdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgNSk7XG4gXHRcdEd0a1dpZGdldCAqbGFiZWwgPSBndGtfbGFiZWxfbmV3KHAtXHUwMDNldGl0bGUpO1xuIFxuLVx0XHRkaWFsb2cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcbiYjNDM7XHRcdGRpYWxvZyA9IGd0a193aW5kb3dfbmV3KCk7XG4gXHRcdHByb2dyZXNzID0gZ3RrX3Byb2dyZXNzX2Jhcl9uZXcoKTtcbiBcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGxhYmVsLCBUUlVFLCBGQUxTRSwgMyk7XG4tXHRcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBwcm9ncmVzcywgVFJVRSwgVFJVRSwgMyk7XG4mIzQzO1x0XHRndGtfd2lkZ2V0X3NldF92ZXhwYW5kKGxhYmVsLCBUUlVFKTtcbiYjNDM7XHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGxhYmVsKTtcbiYjNDM7XHRcdGd0a193aWRnZXRfc2V0X3ZleHBhbmQocHJvZ3Jlc3MsIFRSVUUpO1xuJiM0MztcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgcHJvZ3Jlc3MpO1xuJiM0MztcbiYjNDM7XHRcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1coZGlhbG9nKSwgdmJveCk7XG4gXG4tXHRcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZGlhbG9nKSwgdmJveCk7XG4mIzQzO1x0XHRnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgXCYjMzQ7ZGVzdHJveVwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgR19DQUxMQkFDSyhndGtfdWlfcHJvZ3Jlc3NfX2Rlc3Ryb3llZCksIE5VTEwpO1xuIFxuIFx0XHRndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyksIFwmIzM0O3BlcmZcJiMzNDspO1xuLVx0XHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApO1xuLVx0XHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKGRpYWxvZyksIEdUS19XSU5fUE9TX0NFTlRFUik7XG4mIzQzO1x0XHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyhkaWFsb2cpLCAzMDAsIDgwKTtcbiBcbi1cdFx0Z3RrX3dpZGdldF9zaG93X2FsbChkaWFsb2cpO1xuJiM0MztcdFx0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZShkaWFsb2csIFRSVUUpO1xuIFx0fVxuIFxuIFx0Z3RrX3Byb2dyZXNzX2Jhcl9zZXRfZnJhY3Rpb24oR1RLX1BST0dSRVNTX0JBUihwcm9ncmVzcyksIGZyYWN0aW9uKTtcbiBcdHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFwmIzM0OyVcJiMzNDtQUkl1NjRcJiMzNDsgLyAlXCYjMzQ7UFJJdTY0LCBwLVx1MDAzZWN1cnIsIHAtXHUwMDNldG90YWwpO1xuIFx0Z3RrX3Byb2dyZXNzX2Jhcl9zZXRfdGV4dChHVEtfUFJPR1JFU1NfQkFSKHByb2dyZXNzKSwgYnVmKTtcbiBcbi1cdC8qIHdlIGRpZG4mIzM5O3QgY2FsbCBndGtfbWFpbiB5ZXQsIHNvIGRvIGl0IG1hbnVhbGx5ICovXG4tXHR3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpXG4tXHRcdGd0a19tYWluX2l0ZXJhdGlvbigpO1xuJiM0MztcdC8qIHdlIGRpZG4mIzM5O3Qgc3RhcnQgYSBtYWluIGxvb3AgeWV0LCBzbyBwdW1wIGV2ZW50cyBtYW51YWxseSAqL1xuJiM0MztcdHdoaWxlIChnX21haW5fY29udGV4dF9wZW5kaW5nKE5VTEwpKVxuJiM0MztcdFx0Z19tYWluX2NvbnRleHRfaXRlcmF0aW9uKE5VTEwsIEZBTFNFKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19maW5pc2godm9pZClcbiB7XG4mIzQzO1x0aWYgKGRpYWxvZyA9PSBOVUxMKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdC8qIHRoaXMgd2lsbCBhbHNvIGRlc3Ryb3kgYWxsIG9mIGl0cyBjaGlsZHJlbiAqL1xuLVx0Z3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7XG4mIzQzO1x0Z3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7XG4gXG4gXHRkaWFsb2cgPSBOVUxMO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jIGIvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xuaW5kZXggZjVlZWU0ZDY2ODczOC4uOWI0NGYzNzE5NzQ3NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmNcbkBAIC0xMiw3ICYjNDM7MTIsNyBAQCBpbnQgcGVyZl9ndGtfX2luaXQodm9pZClcbiBcdGd0a191aV9wcm9ncmVzc19faW5pdCgpO1xuIFx0cGVyZl9ndGtfX2luaXRfaHBwKCk7XG4gXG4tXHRyZXR1cm4gZ3RrX2luaXRfY2hlY2soTlVMTCwgTlVMTCkgPyAwIDogLTE7XG4mIzQzO1x0cmV0dXJuIGd0a19pbml0X2NoZWNrKCkgPyAwIDogLTE7XG4gfVxuIFxuIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZClcbkBAIC0yMCw1ICYjNDM7MjAsNiBAQCB2b2lkIHBlcmZfZ3RrX19leGl0KGJvb2wgd2FpdF9mb3Jfb2sgX19tYXliZV91bnVzZWQpXG4gXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkpXG4gXHRcdHJldHVybjtcbiBcdHBlcmZfZXJyb3JfX3VucmVnaXN0ZXIoXHUwMDI2cGVyZl9ndGtfZW9wcyk7XG4tXHRndGtfbWFpbl9xdWl0KCk7XG4mIzQzO1x0cGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKCk7XG4mIzQzO1x0cGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuaW5kZXggYzQ3ZjVjMzg3ODM4Yy4uNTA5Njg4OGI3YzE2MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXG5AQCAtNCw2ICYjNDM7NCw3IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdHJpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9jb21waWxlci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvemFsbG9jLmhcdTAwM2VcbiBcbiBzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCAqcGdjdHg7XG5AQCAtMjgsMjcgJiM0MzsyOSw2MCBAQCBpbnQgcGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dChzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCAqKmN0eClcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIEdNYWluTG9vcCAqcGVyZl9ndGtfX2Vycm9yX2xvb3A7XG4mIzQzO1xuJiM0Mzt2b2lkIHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHBlcmZfZ3RrX19lcnJvcl9sb29wKVxuJiM0MztcdFx0Z19tYWluX2xvb3BfcXVpdChwZXJmX2d0a19fZXJyb3JfbG9vcCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UoR3RrRGlhbG9nICpkaWFsb2csXG4mIzQzO1x0XHRcdFx0ICAgICAgZ2ludCByZXNwb25zZV9pZCBfX21heWJlX3VudXNlZCxcbiYjNDM7XHRcdFx0XHQgICAgICBncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxuJiM0Mzt7XG4mIzQzO1x0Z3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuIFx0R3RrV2lkZ2V0ICpkaWFsb2c7XG4mIzQzO1x0dmFfbGlzdCBhcmdzX2NvcHk7XG4gXG4mIzQzO1x0dmFfY29weShhcmdzX2NvcHksIGFyZ3MpO1xuIFx0aWYgKCFwZXJmX2d0a19faXNfYWN0aXZlX2NvbnRleHQocGdjdHgpIHx8XG4tXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcdTAwM2MgMCkge1xuJiM0MztcdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3NfY29weSkgXHUwMDNjIDApIHtcbiYjNDM7XHRcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7RXJyb3I6XFxuXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuJiM0MztcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0ZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ld193aXRoX21hcmt1cChHVEtfV0lORE9XKHBnY3R4LVx1MDAzZW1haW5fd2luZG93KSxcbiBcdFx0XHRcdFx0R1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULFxuIFx0XHRcdFx0XHRHVEtfTUVTU0FHRV9FUlJPUixcbiBcdFx0XHRcdFx0R1RLX0JVVFRPTlNfQ0xPU0UsXG4gXHRcdFx0XHRcdFwmIzM0O1x1MDAzY2JcdTAwM2VFcnJvclx1MDAzYy9iXHUwMDNlXFxuXFxuJXNcJiMzNDssIG1zZyk7XG4tXHRndGtfZGlhbG9nX3J1bihHVEtfRElBTE9HKGRpYWxvZykpO1xuIFxuLVx0Z3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBcJiMzNDtyZXNwb25zZVwmIzM0OyBvbmx5IGZpcmVzIHdoZW4gYSBidXR0b24gaXMgY2xpY2tlZDsgREVTVFJPWV9XSVRIX1BBUkVOVFxuJiM0MztcdCAqIGRlc3Ryb3lzIHRoZSBkaWFsb2cgZGlyZWN0bHkgd2l0aG91dCBpdC4gUXVpdCBmcm9tIFwmIzM0O2Rlc3Ryb3lcJiMzNDtcbiYjNDM7XHQgKiBpbnN0ZWFkLCB3aGljaCBmaXJlcyBlaXRoZXIgd2F5LCBzbyB0aGUgbmVzdGVkIGxvb3AgYmVsb3cgY2FuJiMzOTt0XG4mIzQzO1x0ICogb3V0bGl2ZSB0aGUgZGlhbG9nIGFuZCBoYW5nLlxuJiM0MztcdCAqL1xuJiM0MztcdHBlcmZfZ3RrX19lcnJvcl9sb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIEZBTFNFKTtcbiYjNDM7XHRnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgXCYjMzQ7cmVzcG9uc2VcJiMzNDssXG4mIzQzO1x0XHRcdCBHX0NBTExCQUNLKHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UpLCBOVUxMKTtcbiYjNDM7XHRnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCBcJiMzNDtkZXN0cm95XCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBHX0NBTExCQUNLKGdfbWFpbl9sb29wX3F1aXQpLCBwZXJmX2d0a19fZXJyb3JfbG9vcCk7XG4mIzQzO1xuJiM0MztcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoZGlhbG9nLCBUUlVFKTtcbiYjNDM7XHRnX21haW5fbG9vcF9ydW4ocGVyZl9ndGtfX2Vycm9yX2xvb3ApO1xuJiM0MztcdGdfY2xlYXJfcG9pbnRlcihcdTAwMjZwZXJmX2d0a19fZXJyb3JfbG9vcCwgZ19tYWluX2xvb3BfdW5yZWYpO1xuJiM0MztcbiBcdGZyZWUobXNnKTtcbiBcdHJldHVybiAwO1xuIH1cbkBAIC01NywxNCAmIzQzOzkxLDE4IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuJiM0MztcdHZhX2xpc3QgYXJnc19jb3B5O1xuIFxuJiM0MztcdHZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTtcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxuLVx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbiYjNDM7XHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHR2YV9lbmQoYXJnc19jb3B5KTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1dhcm5pbmc6XFxuXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuJiM0MztcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0Z3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChwZ2N0eC1cdTAwM2VtZXNzYWdlX2xhYmVsKSwgbXNnKTtcbiBcdGd0a19pbmZvX2Jhcl9zZXRfbWVzc2FnZV90eXBlKEdUS19JTkZPX0JBUihwZ2N0eC1cdTAwM2VpbmZvX2JhciksXG5AQCAtNzgsMTQgJiM0MzsxMTYsMTggQEAgc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19pbmZvX2Jhcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbiBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX3N0YXR1c2Jhcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbiB7XG4gXHRjaGFyICptc2csICpwO1xuJiM0MztcdHZhX2xpc3QgYXJnc19jb3B5O1xuIFxuJiM0MztcdHZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTtcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxuLVx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbiYjNDM7XHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHR2YV9lbmQoYXJnc19jb3B5KTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1dhcm5pbmc6XFxuXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuJiM0MztcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0Z3RrX3N0YXR1c2Jhcl9wb3AoR1RLX1NUQVRVU0JBUihwZ2N0eC1cdTAwM2VzdGF0YmFyKSxcbiBcdFx0XHQgIHBnY3R4LVx1MDAzZXN0YXRiYXJfY3R4X2lkKTtcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL3NldHVwLmMgYi90b29scy9wZXJmL3VpL3NldHVwLmNcbmluZGV4IGZmODAwMDQ3ZTY5N2YuLmQ4ODczNDZjN2E2MzIgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL3NldHVwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuQEAgLTE0LDcgJiM0MzsxNCw3IEBAIGludCB1c2VfYnJvd3NlciA9IC0xO1xuIFxuICNkZWZpbmUgUEVSRl9HVEtfRFNPIFwmIzM0O2xpYnBlcmYtZ3RrLnNvXCYjMzQ7XG4gXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4mIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxuIFxuIHN0YXRpYyBpbnQgc2V0dXBfZ3RrX2Jyb3dzZXIodm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmMgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuY1xuaW5kZXggZGY3MGU5NWE4NDcwNC4uMTIzYjZkNWZjZWE3OCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuY1xuQEAgLTE0NSw2ICYjNDM7MTQ1LDE3IEBAIHN0YXRpYyBpbnQgYW5ub3RhdGVkX3NvdXJjZV9fYWxsb2NfaGlzdG9ncmFtcyhzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLFxuIFx0cmV0dXJuIHNyYy1cdTAwM2VoaXN0b2dyYW1zID8gMCA6IC0xO1xuIH1cbiBcbiYjNDM7c3RydWN0IHN5bV9oaXN0X2VudHJ5ICpcbiYjNDM7YW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHN5bV9oaXN0X2VudHJ5ICplbnRyeTtcbiYjNDM7XHRsb25nIGtleSA9IG9mZnNldCBcdTAwM2NcdTAwM2MgMTYgfCBldnNlbC1cdTAwM2Vjb3JlLmlkeDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFoYXNobWFwX19maW5kKHNyYy1cdTAwM2VzYW1wbGVzLCBrZXksIFx1MDAyNmVudHJ5KSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcdHJldHVybiBlbnRyeTtcbiYjNDM7fVxuJiM0MztcbiB2b2lkIHN5bWJvbF9fYW5ub3RhdGVfemVyb19oaXN0b2dyYW1zKHN0cnVjdCBzeW1ib2wgKnN5bSlcbiB7XG4gXHRzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMgPSBzeW1ib2xfX2Fubm90YXRpb24oc3ltKTtcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaCBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oXG5pbmRleCBmYTA4ZDA5YjgwZjc2Li40MDAzOGEzNzc5ZDQ2IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oXG5AQCAtNDA2LDE2ICYjNDM7NDA2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3QgKmFubm90YXRpb25fX2hpc3RvZ3JhbShzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMsXG4gXHRyZXR1cm4gYW5ub3RhdGVkX3NvdXJjZV9faGlzdG9ncmFtKG5vdGVzLVx1MDAzZXNyYywgZXZzZWwpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqXG4tYW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KVxuLXtcbi1cdHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqZW50cnk7XG4tXHRsb25nIGtleSA9IG9mZnNldCBcdTAwM2NcdTAwM2MgMTYgfCBldnNlbC1cdTAwM2Vjb3JlLmlkeDtcbi1cbi1cdGlmICghaGFzaG1hcF9fZmluZChzcmMtXHUwMDNlc2FtcGxlcywga2V5LCBcdTAwMjZlbnRyeSkpXG4tXHRcdHJldHVybiBOVUxMO1xuLVx0cmV0dXJuIGVudHJ5O1xuLX1cbiYjNDM7c3RydWN0IHN5bV9oaXN0X2VudHJ5ICpcbiYjNDM7YW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KTtcbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBhbm5vdGF0aW9uICpzeW1ib2xfX2Fubm90YXRpb24oc3RydWN0IHN5bWJvbCAqc3ltKVxuIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMDo1MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRvb2xzICh0b29scy9wZXJmIGFuZCB0b29scy9idWlsZCksIHBvcnRpbmcgcGVyZiYjMzk7cyBHVEsgaW50ZXJmYWNlIHN1cHBvcnQgZnJvbSBHVEsyIHRvIEdUSzQuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIGNvZGUgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAzMDljODIzNWRlZjZkZjcxM2ZhNDA5OTk0MWVlOTIwNmFmY2YxY2YKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIFNlcCA3IDAwOjUyOjAyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZSBiL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmUKaW5kZXggOTllYjBlYTA5NTM3NS4uN2ZmZWI3NWEwMWM3OSAxMDA2NDQKLS0tIGEvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlCkBAIC0xMTMsOCAmIzQzOzExMyw4IEBAIEZFQVRVUkVfVEVTVFNfRVhUUkEgOj0gICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBjb21waWxlLXgzMiAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgY3BsdXMtZGVtYW5nbGUgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIGN4YS1kZW1hbmdsZSAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBndGsyICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZ3RrMi1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFwKJiM0MzsgICAgICAgICBndGs0ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAomIzQzOyAgICAgICAgIGd0azQtaW5mb2JhciAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBoZWxsbyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgYmFiZWx0cmFjZTItY3RmLXdyaXRlciAgICAgICAgIFwKICAgICAgICAgIGxpYmNhcHN0b25lICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNDMsNiAmIzQzOzE0Myw3IEBAIGVuZGlmCiBGRUFUVVJFX0RJU1BMQVkgPz0gICAgICAgICAgICAgIFwKICAgICAgICAgIGxpYmR3ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgZ2xpYmMgICAgICAgICAgICAgICAgICBcCiYjNDM7ICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBsaWJlbGYgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIGxpYm51bWEgICAgICAgICAgICAgICAgXAogICAgICAgICAgbnVtYV9udW1fcG9zc2libGVfY3B1cyBcCmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZQppbmRleCA3ZDE2NTAxODExNmE1Li4yY2E5OTJmYmI5YWQ1IDEwMDY0NAotLS0gYS90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUKQEAgLTExLDggJiM0MzsxMSw4IEBAIEZJTEVTPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIHRlc3QtZXZlbnRmZC5iaW4gICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIHRlc3QtZm9ydGlmeS1zb3VyY2UuYmluICAgICAgICAgICAgICAgIFwKICAgICAgICAgIHRlc3QtZ2xpYmMuYmluICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIHRlc3QtZ3RrMi5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIHRlc3QtZ3RrMi1pbmZvYmFyLmJpbiAgICAgICAgICAgICAgICAgIFwKJiM0MzsgICAgICAgICB0ZXN0LWd0azQuYmluICAgICAgICAgICAgICAgICAgICAgICAgICBcCiYjNDM7ICAgICAgICAgdGVzdC1ndGs0LWluZm9iYXIuYmluICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgdGVzdC1oZWxsby5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgdGVzdC1saWJiZmQuYmluICAgICAgICAgICAgICAgICAgICAgICAgXAogCSB0ZXN0LWxpYmJmZC10aHJlYWRzYWZlLmJpbiAgICAgIAlcCkBAIC0yNDAsMTEgJiM0MzsyNDAsMTEgQEAgJChPVVRQVVQpdGVzdC1saWJjcHVwb3dlci5iaW46CiAkKE9VVFBVVCl0ZXN0LWxpYnRyYWNlZnMuYmluOgogCSAkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlidHJhY2VmcyAyJmd0Oy9kZXYvbnVsbCkgLWx0cmFjZWZzCiAKLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46Ci0JJChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsmIzQzOy0yLjAgMiZndDsvZGV2L251bGwpIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMKJiM0MzskKE9VVFBVVCl0ZXN0LWd0azQuYmluOgomIzQzOwkkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0azQgMiZndDsvZGV2L251bGwpCiAKLSQoT1VUUFVUKXRlc3QtZ3RrMi1pbmZvYmFyLmJpbjoKLQkkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyJmd0Oy9kZXYvbnVsbCkKJiM0MzskKE9VVFBVVCl0ZXN0LWd0azQtaW5mb2Jhci5iaW46CiYjNDM7CSQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyJmd0Oy9kZXYvbnVsbCkKIAogZ3JlcC1saWJzICA9ICQoZmlsdGVyIC1sJSwkKDEpKQogc3RyaXAtbGlicyA9ICQoZmlsdGVyLW91dCAtbCUsJCgxKSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuYwpzaW1pbGFyaXR5IGluZGV4IDc3JQpyZW5hbWUgZnJvbSB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmMKcmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuYwppbmRleCBiMWI3MTZkZDU3MzMwLi42YzFiY2VlNTk1YTljIDEwMDY0NAotLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQtaW5mb2Jhci5jCkBAIC0zLDkgJiM0MzszLDkgQEAKICNpbmNsdWRlICZsdDtndGsvZ3RrLmgmZ3Q7CiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yICYjMzQ7LVdzdHJpY3QtcHJvdG90eXBlcyYjMzQ7CiAKLWludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiYjNDM7aW50IG1haW4odm9pZCkKIHsKLQlndGtfaW5pdCgmYW1wO2FyZ2MsICZhbXA7YXJndik7CiYjNDM7CWd0a19pbml0KCk7CiAJZ3RrX2luZm9fYmFyX25ldygpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuYwpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jCnJlbmFtZSB0byB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jCmluZGV4IDJhYWY0YmZjMjA1NTYuLmI5NTIwZTc0MDhiOTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuYwpAQCAtMyw5ICYjNDM7Myw5IEBACiAjaW5jbHVkZSAmbHQ7Z3RrL2d0ay5oJmd0OwogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBlcnJvciAmIzM0Oy1Xc3RyaWN0LXByb3RvdHlwZXMmIzM0OwogCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQomIzQzO2ludCBtYWluKHZvaWQpCiB7Ci0JZ3RrX2luaXQoJmFtcDthcmdjLCAmYW1wO2FyZ3YpOwomIzQzOwlndGtfaW5pdCgpOwogCiAgICAgICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dCBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHQKaW5kZXggMjJmODdlYWEzMjc5Ni4uN2FmOWIzZjgxYzA2NSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0CkBAIC0zNTEsNyAmIzQzOzM1MSw3IEBAIE9QVElPTlMKIAlyZXF1aXJlcyBhIHR0eSwgaWYgb25lIGlzIG5vdCBwcmVzZW50LCBhcyB3aGVuIHBpcGluZyB0byBvdGhlcgogCWNvbW1hbmRzLCB0aGUgc3RkaW8gaW50ZXJmYWNlIGlzIHVzZWQuCiAKLS0tZ3RrOjogVXNlIHRoZSBHVEsyIGludGVyZmFjZS4KJiM0MzstLWd0azo6IFVzZSB0aGUgR1RLNCBpbnRlcmZhY2UuCiAKIC1rOjoKIC0tdm1saW51eD0mbHQ7ZmlsZSZndDs6OgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9NYWtlZmlsZSBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUKaW5kZXggNWI3MTM4MzdlZWRlNy4uNTYwMTQxMDY0NzlhMyAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL01ha2VmaWxlCkBAIC0xMDYsNyAmIzQzOzEwNiw3IEBAIGNsZWFuOgogIyBtYWtlIC1DIHRvb2xzL3BlcmYgLWYgdGVzdHMvbWFrZQogIwogYnVpbGQtdGVzdDoKLQlAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGsyIG91dAomIzQzOwlAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGs0IG91dAogCiBidWlsZC10ZXN0LXRhcmJhbGw6CiAJQCQoTUFLRSkgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3Rvcnkgb3V0CmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnCmluZGV4IDRkNTk5M2RhOWY5NDUuLmVmNzQxOWE1YjAxMzcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnCkBAIC03NzQsMjEgJiM0Mzs3NzQsMjYgQEAgaWZuZGVmIE5PX1NMQU5HCiAgIGVuZGlmCiBlbmRpZgogCi1pZmRlZiBHVEsyCi0gIEZMQUdTX0dUSzI9JChDRkxBR1MpICQoTERGTEFHUykgJChFWFRMSUJTKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyJmd0Oy9kZXYvbnVsbCkKLSAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMikKLSAgaWZuZXEgKCQoZmVhdHVyZS1ndGsyKSwgMSkKLSAgICAkKHdhcm5pbmcgR1RLMiBub3QgZm91bmQsIGRpc2FibGVzIEdUSzIgc3VwcG9ydC4gUGxlYXNlIGluc3RhbGwgZ3RrMi1kZXZlbCBvciBsaWJndGsyLjAtZGV2KQotICAgIE5PX0dUSzIgOj0gMQomIzQzO2lmZGVmIEdUSzQKJiM0MzsgIEZMQUdTX0dUSzQ9JChDRkxBR1MpICQoTERGTEFHUykgJChFWFRMSUJTKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0azQgMiZndDsvZGV2L251bGwpCiYjNDM7ICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0KQomIzQzOyAgaWZuZXEgKCQoZmVhdHVyZS1ndGs0KSwgMSkKJiM0MzsgICAgJCh3YXJuaW5nIEdUSzQgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEs0IHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azQtZGV2ZWwgb3IgbGliZ3RrLTQtZGV2KQomIzQzOyAgICBOT19HVEs0IDo9IDEKICAgZWxzZQotICAgICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azItaW5mb2JhcikKLSAgICBpZmVxICgkKGZlYXR1cmUtZ3RrMi1pbmZvYmFyKSwgMSkKJiM0MzsgICAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrNC1pbmZvYmFyKQomIzQzOyAgICBpZmVxICgkKGZlYXR1cmUtZ3RrNC1pbmZvYmFyKSwgMSkKICAgICAgIEdUS19DRkxBR1MgOj0gLURIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUCiAgICAgZW5kaWYKLSAgICBDRkxBR1MgJiM0Mzs9IC1ESEFWRV9HVEsyX1NVUFBPUlQKLSAgICBHVEtfQ0ZMQUdTICYjNDM7PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgZ3RrJiM0MzstMi4wIDImZ3Q7L2Rldi9udWxsKQotICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrJiM0MzstMi4wIDImZ3Q7L2Rldi9udWxsKQomIzQzOyAgICBDRkxBR1MgJiM0Mzs9IC1ESEFWRV9HVEs0X1NVUFBPUlQKJiM0MzsgICAgR1RLX0NGTEFHUyAmIzQzOz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGd0azQgMiZndDsvZGV2L251bGwpCiYjNDM7ICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrNCAyJmd0Oy9kZXYvbnVsbCkKICAgICBFWFRMSUJTICYjNDM7PSAtbGRsCiYjNDM7ICAgICMgbGlicGVyZi1ndGsuc28gaXMgZGxvcGVuKCllZCBhdCBydW50aW1lIGFuZCBjYWxscyBiYWNrIGludG8KJiM0MzsgICAgIyBzeW1ib2xzIGRlZmluZWQgaW4gdGhlIHBlcmYgYmluYXJ5IGl0c2VsZiAoY2FsbGNoYWluX3BhcmFtLAomIzQzOyAgICAjIHN5bWJvbF9jb25mLCBldnNlbF9fbmFtZSwgLi4uKTogcGVyZiBuZWVkcyB0byBleHBvcnQgdGhvc2UKJiM0MzsgICAgIyBkeW5hbWljYWxseSBmb3IgdGhlIHBsdWdpbiB0byByZXNvbHZlIHRoZW0uCiYjNDM7ICAgIExERkxBR1MgJiM0Mzs9IC1yZHluYW1pYwogICBlbmRpZgogZW5kaWYKIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmIGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmCmluZGV4IDI5Y2ZkNDRjNDI3ZjMuLjI0MzhiNDBlYWFlYzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZgomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL01ha2VmaWxlLnBlcmYKQEAgLTQ5LDcgJiM0Mzs0OSw3IEBAIGluY2x1ZGUgLi4vc2NyaXB0cy91dGlsaXRpZXMubWFrCiAjCiAjIERlZmluZSBOT19TTEFORyBpZiB5b3UgZG8gbm90IHdhbnQgVFVJIHN1cHBvcnQuCiAjCi0jIERlZmluZSBHVEsyIGlmIHlvdSB3YW50IEdUSyYjNDM7IEdVSSBzdXBwb3J0LgomIzQzOyMgRGVmaW5lIEdUSzQgaWYgeW91IHdhbnQgR1RLJiM0MzsgR1VJIHN1cHBvcnQuCiAjCiAjIERlZmluZSBOT19ERU1BTkdMRSBpZiB5b3UgZG8gbm90IHdhbnQgQyYjNDM7JiM0Mzsgc3ltYm9sIGRlbWFuZ2xpbmcuCiAjCkBAIC00NzMsNyAmIzQzOzQ3Myw3IEBAIGlmbmVxICgkKE9VVFBVVCksKQogICBDRkxBR1MgJiM0Mzs9IC1JJChPVVRQVVQpCiBlbmRpZgogCi1pZmRlZiBHVEsyCiYjNDM7aWZkZWYgR1RLNAogICBBTExfUFJPR1JBTVMgJiM0Mzs9ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvCiAgIEdUS19JTiA6PSAkKE9VVFBVVClndGstaW4ubwogZW5kaWYKQEAgLTgxMSw3ICYjNDM7ODExLDcgQEAgY2hlY2s6IHByZXBhcmUKIAogIyMjIEluc3RhbGxhdGlvbiBydWxlcwogCi1pZmRlZiBHVEsyCiYjNDM7aWZkZWYgR1RLNAogaW5zdGFsbC1ndGs6ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvCiAJJChjYWxsIFFVSUVUX0lOU1RBTEwsICYjMzk7R1RLIFVJJiMzOTspIFwKIAkJJChJTlNUQUxMKSAtZCAtbSA3NTUgJiMzOTskKERFU1RESVJfU1EpJChsaWJkaXJfU1EpJiMzOTs7IFwKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMKaW5kZXggNjljYjcyYjIwODJhNi4uMTUxNjNlMDgxYThjZSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMKQEAgLTUyLDcgJiM0Mzs1Miw3IEBAIHN0cnVjdCBwZXJmX2Fubm90YXRlIHsKIAlib29sCSAgIHVzZV90dWk7CiAjZW5kaWYKIAlib29sCSAgIHVzZV9zdGRpbywgdXNlX3N0ZGlvMjsKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCWJvb2wJICAgdXNlX2d0azsKICNlbmRpZgogCWJvb2wJICAgc2tpcF9taXNzaW5nOwpAQCAtNzEyLDcgJiM0Mzs3MTIsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIAlPUFRfQk9PTEVBTigmIzM5O3EmIzM5OywgJiMzNDtxdWlldCYjMzQ7LCAmYW1wO3F1aWV0LCAmIzM0O2RvIG5vdyBzaG93IGFueSB3YXJuaW5ncyBvciBtZXNzYWdlcyYjMzQ7KSwKIAlPUFRfQk9PTEVBTigmIzM5O0QmIzM5OywgJiMzNDtkdW1wLXJhdy10cmFjZSYjMzQ7LCAmYW1wO2R1bXBfdHJhY2UsCiAJCSAgICAmIzM0O2R1bXAgcmF3IHRyYWNlIGluIEFTQ0lJJiMzNDspLAotI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUCiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUCiAJT1BUX0JPT0xFQU4oMCwgJiMzNDtndGsmIzM0OywgJmFtcDthbm5vdGF0ZS51c2VfZ3RrLCAmIzM0O1VzZSB0aGUgR1RLIGludGVyZmFjZSYjMzQ7KSwKICNlbmRpZgogI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVApAQCAtODI4LDcgJiM0Mzs4MjgsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIAlpZiAoYW5ub3RhdGVfY2hlY2tfYXJncygpICZsdDsgMCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCWlmIChzeW1ib2xfY29uZi5zaG93X25yX3NhbXBsZXMgJmFtcDsmYW1wOyBhbm5vdGF0ZS51c2VfZ3RrKSB7CiAJCXByX2VycigmIzM0Oy0tc2hvdy1uci1zYW1wbGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gLS1ndGsgbW9kZSBhdCB0aGlzIHRpbWVcbiYjMzQ7KTsKIAkJcmV0dXJuIHJldDsKQEAgLTg5OCw3ICYjNDM7ODk4LDcgQEAgaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCiAJZWxzZSBpZiAoYW5ub3RhdGUudXNlX3R1aSkKIAkJdXNlX2Jyb3dzZXIgPSAxOwogI2VuZGlmCi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlQKJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlQKIAllbHNlIGlmIChhbm5vdGF0ZS51c2VfZ3RrKQogCQl1c2VfYnJvd3NlciA9IDI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYwppbmRleCA2MGQxZjE2NjYyOWUwLi5kMTQzODRjNTg0NjYxIDEwMDY0NAotLS0gYS90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jCkBAIC04Miw3ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgcmVwb3J0IHsKICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlQKIAlib29sCQkJdXNlX3R1aTsKICNlbmRpZgotI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUCiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUCiAJYm9vbAkJCXVzZV9ndGs7CiAjZW5kaWYKIAlib29sCQkJdXNlX3N0ZGlvOwpAQCAtMTM1OSw4ICYjNDM7MTM1OSw4IEBAIGludCBjbWRfcmVwb3J0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlQKIAlPUFRfQk9PTEVBTigwLCAmIzM0O3R1aSYjMzQ7LCAmYW1wO3JlcG9ydC51c2VfdHVpLCAmIzM0O1VzZSB0aGUgVFVJIGludGVyZmFjZSYjMzQ7KSwKICNlbmRpZgotI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUCi0JT1BUX0JPT0xFQU4oMCwgJiMzNDtndGsmIzM0OywgJmFtcDtyZXBvcnQudXNlX2d0aywgJiMzNDtVc2UgdGhlIEdUSzIgaW50ZXJmYWNlJiMzNDspLAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAomIzQzOwlPUFRfQk9PTEVBTigwLCAmIzM0O2d0ayYjMzQ7LCAmYW1wO3JlcG9ydC51c2VfZ3RrLCAmIzM0O1VzZSB0aGUgR1RLNCBpbnRlcmZhY2UmIzM0OyksCiAjZW5kaWYKIAlPUFRfQk9PTEVBTigwLCAmIzM0O3N0ZGlvJiMzNDssICZhbXA7cmVwb3J0LnVzZV9zdGRpbywKIAkJICAgICYjMzQ7VXNlIHRoZSBzdGRpbyBpbnRlcmZhY2UmIzM0OyksCkBAIC0xNzEwLDcgJiM0MzsxNzEwLDcgQEAgaW50IGNtZF9yZXBvcnQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQogCWVsc2UgaWYgKHJlcG9ydC51c2VfdHVpKQogCQl1c2VfYnJvd3NlciA9IDE7CiAjZW5kaWYKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCWVsc2UgaWYgKHJlcG9ydC51c2VfZ3RrKQogCQl1c2VfYnJvd3NlciA9IDI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2ggYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoCmluZGV4IGQwMDNlN2ZhYjJiZTguLmE2MDFhNTI2MGMxN2UgMTAwNzU1Ci0tLSBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2gKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaApAQCAtMTk5LDggJiM0MzsxOTksOCBAQCBmZWRvcmFfcGtnX2ZvcigpIHsKIAkjIG9wdC1pbiBmZWF0dXJlcywgd2hpY2ggYSBkZWZhdWx0IGJ1aWxkIGRvZXMgbm90IGVuYWJsZTogdGhlIGxpYmJmZAogCSMgZGlzYXNzZW1ibGVyIGZhbWlseSAobGliYmZkLCBsaWJiZmQtdGhyZWFkc2FmZSwgbGliYmZkLWxpYmVydHksCiAJIyBkaXNhc3NlbWJsZXItKiwgY3BsdXMtZGVtYW5nbGUpLCBvbmx5IGxpbmtlZCBvbiBCVUlMRF9OT05ESVNUUk8KLQkjIGJ1aWxkcyBhbmQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjYXBzdG9uZSwgR1RLMiwgTElCUEVSTCBhbmQKLQkjIExJQlVOV0lORCBzdXBwb3J0IChpZmRlZiBHVEsyIC8gaWZkZWYgTElCUEVSTCAvIExJQlVOV0lORD0xKSwKJiM0MzsJIyBidWlsZHMgYW5kIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgY2Fwc3RvbmUsIEdUSzQsIExJQlBFUkwgYW5kCiYjNDM7CSMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzQgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLAogCSMgYW5kIENvcmVTaWdodCAoaWZkZWYgQ09SRVNJR0hUKSwgYXJlIGRlbGliZXJhdGVseSBub3QgbWFwcGVkLgogCSMgbGliYWlvIGlzIG5vdCBtYXBwZWQgZWl0aGVyOiBpdHMKIAkjIHRlc3QgdXNlcyB0aGUgUE9TSVggQUlPIEFQSSAoYWlvLmgsIGFpb18qLCAtbHJ0KSwgcHJvdmlkZWQgYnkKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZSBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZQppbmRleCBkMmMyZjUyNmUxZGIwLi4yMDJhYjU1MDE5MTYxIDEwMDY0NAotLS0gYS90b29scy9wZXJmL3Rlc3RzL21ha2UKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi90ZXN0cy9tYWtlCkBAIC05NSw3ICYjNDM7OTUsNyBAQCBtYWtlX25vX2JhYmVsdHJhY2UyIDo9IE5PX0JBQkVMVFJBQ0UyPTEKIG1ha2Vfd2l0aF9jb3Jlc2lnaHQgOj0gQ09SRVNJR0hUPTEKIG1ha2Vfbm9fc2R0CSAgICA6PSBOT19TRFQ9MQogbWFrZV9ub19saWJwZm00ICAgICA6PSBOT19MSUJQRk00PTEKLW1ha2Vfd2l0aF9ndGsyICAgICAgOj0gR1RLMj0xCiYjNDM7bWFrZV93aXRoX2d0azQgICAgICA6PSBHVEs0PTEKIG1ha2VfcmVmY250X2NoZWNrICAgOj0gRVhUUkFfQ0ZMQUdTPSYjMzQ7LURSRUZDTlRfQ0hFQ0tJTkc9MSYjMzQ7CiBtYWtlX3RhZ3MgICAgICAgICAgIDo9IHRhZ3MKIG1ha2VfY3Njb3BlICAgICAgICAgOj0gY3Njb3BlCkBAIC0zMTgsNyAmIzQzOzMxOCw3IEBAICQocnVuKToKIAkkKGNhbGwgdGVzdCwkQCkgJmFtcDsmYW1wOyBcCiAJcm0gLXJmICRAICQkVE1QX0RFU1QgfHwgKGNhdCAkQCA7IGZhbHNlKQogCi1tYWtlX3dpdGhfZ3RrMjoKJiM0MzttYWtlX3dpdGhfZ3RrNDoKIAkkKGNhbGwgY2xlYW4pCiAJQFRNUF9ERVNUPSQkKG1rdGVtcCAtZCk7IFwKIAljbWQ9JiMzNDtjZCAkKFBFUkYpICZhbXA7JmFtcDsgJChNQUtFX0YpICQoJEApICQoUEFSQUxMRUxfT1BUKSAkKE9fT1BUKSBERVNURElSPSQkVE1QX0RFU1QmIzM0OzsgXApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmMKaW5kZXggODkyMGUyOTg0MjBhOC4uZmM0NmFjMTUwNDA4OCAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jCkBAIC0xNjEsNyAmIzQzOzE2MSw3IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Fubm90YXRlX3N5bWJvbChHdGtXaWRnZXQgKndpbmRvdywgc3RydWN0IG1hcF9zeW1ib2wgKm1zLAogCQkJZ3RrX2xpc3Rfc3RvcmVfc2V0KHN0b3JlLCAmYW1wO2l0ZXIsIEFOTl9DT0xfX0xJTkUsIHMsIC0xKTsKIAl9CiAKLQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpOwomIzQzOwlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcywgbiwgJmFtcDtub3Rlcy0mZ3Q7c3JjLSZndDtzb3VyY2UsIGFsLm5vZGUpIHsKIAkJbGlzdF9kZWxfaW5pdCgmYW1wO3Bvcy0mZ3Q7YWwubm9kZSk7CkBAIC0yMTEsMzQgJiM0MzsyMTEsMzEgQEAgc3RhdGljIGludCBzeW1ib2xfX2d0a19hbm5vdGF0ZShzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsIHN0cnVjdCBldnNlbCAqZXZzZWwsCiAJCXNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTsKIAkJc2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpOwogCi0JCXdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOwomIzQzOwkJd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTsKIAkJZ3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyh3aW5kb3cpLCAmIzM0O3BlcmYgYW5ub3RhdGUmIzM0Oyk7CiAKLQkJZ19zaWduYWxfY29ubmVjdCh3aW5kb3csICYjMzQ7ZGVsZXRlX2V2ZW50JiMzNDssIGd0a19tYWluX3F1aXQsIE5VTEwpOwotCiAJCXBnY3R4ID0gcGVyZl9ndGtfX2FjdGl2YXRlX2NvbnRleHQod2luZG93KTsKIAkJaWYgKCFwZ2N0eCkKIAkJCXJldHVybiAtMTsKIAotCQl2Ym94ID0gZ3RrX3Zib3hfbmV3KEZBTFNFLCAwKTsKJiM0MzsJCXZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApOwogCQlub3RlYm9vayA9IGd0a19ub3RlYm9va19uZXcoKTsKIAkJcGdjdHgtJmd0O25vdGVib29rID0gbm90ZWJvb2s7CiAKLQkJZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG5vdGVib29rLCBUUlVFLCBUUlVFLCAwKTsKJiM0MzsJCWd0a193aWRnZXRfc2V0X3ZleHBhbmQobm90ZWJvb2ssIFRSVUUpOwomIzQzOwkJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2spOwogCiAJCWluZm9iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTsKLQkJaWYgKGluZm9iYXIpIHsKLQkJCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBpbmZvYmFyLAotCQkJCQkgICBGQUxTRSwgRkFMU0UsIDApOwotCQl9CiYjNDM7CQlpZiAoaW5mb2JhcikKJiM0MzsJCQlndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBpbmZvYmFyKTsKIAogCQlzdGF0YmFyID0gcGVyZl9ndGtfX3NldHVwX3N0YXR1c2JhcigpOwotCQlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTsKJiM0MzsJCWd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpOwogCi0JCWd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7CiYjNDM7CQlndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpOwogCX0KIAotCXNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpOwomIzQzOwlzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldygpOwogCXRhYl9sYWJlbCA9IGd0a19sYWJlbF9uZXcoc3ltLSZndDtuYW1lKTsKIAogCWd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksCkBAIC0yNjcsMTIgJiM0MzsyNjQsMTEgQEAgdm9pZCBwZXJmX2d0a19fc2hvd19hbm5vdGF0aW9ucyh2b2lkKQogCQlyZXR1cm47CiAKIAl3aW5kb3cgPSBwZ2N0eC0mZ3Q7bWFpbl93aW5kb3c7Ci0JZ3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpOwogCiAJcGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3cod2luZG93KTsKLQlndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7CiYjNDM7CWd0a193aWRnZXRfc2V0X3Zpc2libGUod2luZG93LCBUUlVFKTsKIAotCWd0a19tYWluKCk7CiYjNDM7CXBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKHdpbmRvdyk7CiAKIAlwZXJmX2d0a19fZGVhY3RpdmF0ZV9jb250ZXh0KCZhbXA7cGdjdHgpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvYnJvd3Nlci5jIGIvdG9vbHMvcGVyZi91aS9ndGsvYnJvd3Nlci5jCmluZGV4IGQyZGFkZjM4NzNmYmQuLjk5YmIwZWE3NmQ3NzUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmMKQEAgLTE2LDIxICYjNDM7MTYsNTMgQEAgdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpCiB2b2lkIHBlcmZfZ3RrX19yZXNpemVfd2luZG93KEd0a1dpZGdldCAqd2luZG93KQogewogCUdka1JlY3RhbmdsZSByZWN0OwotCUdka1NjcmVlbiAqc2NyZWVuOwotCWludCBtb25pdG9yOwomIzQzOwlHZGtNb25pdG9yICptb25pdG9yOwomIzQzOwlHZGtEaXNwbGF5ICpkaXNwbGF5OwomIzQzOwlHTGlzdE1vZGVsICptb25pdG9yczsKIAlpbnQgaGVpZ2h0OwogCWludCB3aWR0aDsKIAotCXNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbih3aW5kb3cpOwomIzQzOwlkaXNwbGF5ID0gZ3RrX3dpZGdldF9nZXRfZGlzcGxheSh3aW5kb3cpOwomIzQzOwltb25pdG9ycyA9IGdka19kaXNwbGF5X2dldF9tb25pdG9ycyhkaXNwbGF5KTsKJiM0MzsJbW9uaXRvciA9IGdfbGlzdF9tb2RlbF9nZXRfaXRlbShtb25pdG9ycywgMCk7CiYjNDM7CWlmICghbW9uaXRvcikgewomIzQzOwkJZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgODAwLCA2MDApOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiAKLQltb25pdG9yID0gZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5kb3coc2NyZWVuLCB3aW5kb3ctJmd0O3dpbmRvdyk7Ci0KLQlnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5KHNjcmVlbiwgbW9uaXRvciwgJmFtcDtyZWN0KTsKJiM0MzsJZ2RrX21vbml0b3JfZ2V0X2dlb21ldHJ5KG1vbml0b3IsICZhbXA7cmVjdCk7CiYjNDM7CWdfb2JqZWN0X3VucmVmKG1vbml0b3IpOwogCiAJd2lkdGgJPSByZWN0LndpZHRoICogMyAvIDQ7CiAJaGVpZ2h0CT0gcmVjdC5oZWlnaHQgKiAzIC8gNDsKIAotCWd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1cod2luZG93KSwgd2lkdGgsIGhlaWdodCk7CiYjNDM7CWd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgR01haW5Mb29wICpwZXJmX2d0a19fbWFpbl9sb29wOwomIzQzOwomIzQzO3ZvaWQgcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKHZvaWQpCiYjNDM7ewomIzQzOwlpZiAocGVyZl9ndGtfX21haW5fbG9vcCkKJiM0MzsJCWdfbWFpbl9sb29wX3F1aXQocGVyZl9ndGtfX21haW5fbG9vcCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBnYm9vbGVhbiBwZXJmX2d0a19fY2xvc2VfcmVxdWVzdChHdGtXaWRnZXQgKndpZGdldCBfX21heWJlX3VudXNlZCwKJiM0MzsJCQkJCWdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpCiYjNDM7ewomIzQzOwlwZXJmX2d0a19fcXVpdF9tYWluX2xvb3AoKTsKJiM0MzsKJiM0MzsJcmV0dXJuIEZBTFNFOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKEd0a1dpZGdldCAqd2luZG93KQomIzQzO3sKJiM0MzsJZ19zaWduYWxfY29ubmVjdCh3aW5kb3csICYjMzQ7Y2xvc2UtcmVxdWVzdCYjMzQ7LAomIzQzOwkJCSBHX0NBTExCQUNLKHBlcmZfZ3RrX19jbG9zZV9yZXF1ZXN0KSwgTlVMTCk7CiYjNDM7CiYjNDM7CXBlcmZfZ3RrX19tYWluX2xvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgRkFMU0UpOwomIzQzOwlnX21haW5fbG9vcF9ydW4ocGVyZl9ndGtfX21haW5fbG9vcCk7CiYjNDM7CWdfY2xlYXJfcG9pbnRlcigmYW1wO3BlcmZfZ3RrX19tYWluX2xvb3AsIGdfbWFpbl9sb29wX3VucmVmKTsKIH0KIAogY29uc3QgY2hhciAqcGVyZl9ndGtfX2dldF9wZXJjZW50X2NvbG9yKGRvdWJsZSBwZXJjZW50KQpAQCAtNDcsMTggJiM0Mzs3OSwxNiBAQCBHdGtXaWRnZXQgKnBlcmZfZ3RrX19zZXR1cF9pbmZvX2Jhcih2b2lkKQogewogCUd0a1dpZGdldCAqaW5mb19iYXI7CiAJR3RrV2lkZ2V0ICpsYWJlbDsKLQlHdGtXaWRnZXQgKmNvbnRlbnRfYXJlYTsKIAogCWluZm9fYmFyID0gZ3RrX2luZm9fYmFyX25ldygpOwotCWd0a193aWRnZXRfc2V0X25vX3Nob3dfYWxsKGluZm9fYmFyLCBUUlVFKTsKJiM0MzsJZ3RrX3dpZGdldF9zZXRfdmlzaWJsZShpbmZvX2JhciwgRkFMU0UpOwogCiAJbGFiZWwgPSBndGtfbGFiZWxfbmV3KCYjMzQ7JiMzNDspOwogCWd0a193aWRnZXRfc2hvdyhsYWJlbCk7CiAKLQljb250ZW50X2FyZWEgPSBndGtfaW5mb19iYXJfZ2V0X2NvbnRlbnRfYXJlYShHVEtfSU5GT19CQVIoaW5mb19iYXIpKTsKLQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGNvbnRlbnRfYXJlYSksIGxhYmVsKTsKJiM0MzsJZ3RrX2luZm9fYmFyX2FkZF9jaGlsZChHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBsYWJlbCk7CiAKLQlndGtfaW5mb19iYXJfYWRkX2J1dHRvbihHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBHVEtfU1RPQ0tfT0ssCiYjNDM7CWd0a19pbmZvX2Jhcl9hZGRfYnV0dG9uKEdUS19JTkZPX0JBUihpbmZvX2JhciksICYjMzQ7X09LJiMzNDssCiAJCQkJR1RLX1JFU1BPTlNFX09LKTsKIAlnX3NpZ25hbF9jb25uZWN0KGluZm9fYmFyLCAmIzM0O3Jlc3BvbnNlJiMzNDssCiAJCQkgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2hpZGUpLCBOVUxMKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oIGIvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmgKaW5kZXggYTJiNDk3ZjAzZmQ2ZS4uYmVlYTc1ZDAxOTU1NiAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmgKQEAgLTQwLDYgJiM0Mzs0MCw5IEBAIHZvaWQgcGVyZl9ndGtfX2luaXRfaHBwKHZvaWQpOwogCiB2b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZyk7CiB2b2lkIHBlcmZfZ3RrX19yZXNpemVfd2luZG93KEd0a1dpZGdldCAqd2luZG93KTsKJiM0Mzt2b2lkIHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKEd0a1dpZGdldCAqd2luZG93KTsKJiM0Mzt2b2lkIHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCh2b2lkKTsKJiM0Mzt2b2lkIHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZyh2b2lkKTsKIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudCk7CiBHdGtXaWRnZXQgKnBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmMgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jCmluZGV4IGJhZTIxZjMzNmFlNmQuLmYwMDUzZTNhZjA3NzYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuYwpAQCAtMzk1LDExICYjNDM7Mzk1LDkgQEAgc3RhdGljIHZvaWQgcGVyZl9ndGtfX3Nob3dfaGlzdHMoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsCiAJCX0KIAl9CiAKLQlndGtfdHJlZV92aWV3X3NldF9ydWxlc19oaW50KEdUS19UUkVFX1ZJRVcodmlldyksIFRSVUUpOwotCiAJZ19zaWduYWxfY29ubmVjdCh2aWV3LCAmIzM0O3Jvdy1hY3RpdmF0ZWQmIzM0OywKIAkJCSBHX0NBTExCQUNLKG9uX3Jvd19hY3RpdmF0ZWQpLCBOVUxMKTsKLQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpOwomIzQzOwlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpOwogfQogCiBzdGF0aWMgdm9pZCBwZXJmX2d0a19fYWRkX2hpZXJhcmNoeV9lbnRyaWVzKHN0cnVjdCBoaXN0cyAqaGlzdHMsCkBAIC01ODMsMTEgJiM0Mzs1ODEsOSBAQCBzdGF0aWMgdm9pZCBwZXJmX2d0a19fc2hvd19oaWVyYXJjaHkoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsCiAJcGVyZl9ndGtfX2FkZF9oaWVyYXJjaHlfZW50cmllcyhoaXN0cywgJmFtcDtoaXN0cy0mZ3Q7ZW50cmllcywgc3RvcmUsCiAJCQkJCU5VTEwsICZhbXA7aHBwLCBtaW5fcGNudCk7CiAKLQlndGtfdHJlZV92aWV3X3NldF9ydWxlc19oaW50KEdUS19UUkVFX1ZJRVcodmlldyksIFRSVUUpOwotCiAJZ19zaWduYWxfY29ubmVjdCh2aWV3LCAmIzM0O3Jvdy1hY3RpdmF0ZWQmIzM0OywKIAkJCSBHX0NBTExCQUNLKG9uX3Jvd19hY3RpdmF0ZWQpLCBOVUxMKTsKLQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpOwomIzQzOwlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpOwogfQogCiBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCwKQEAgLTYwNiwzMCAmIzQzOzYwMiwyOSBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCwKIAlzaWduYWwoU0lHUVVJVCwgcGVyZl9ndGtfX3NpZ25hbCk7CiAJc2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpOwogCi0Jd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiYjNDM7CXdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7CiAKIAlndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksICYjMzQ7cGVyZiByZXBvcnQmIzM0Oyk7CiAKLQlnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgJiMzNDtkZWxldGVfZXZlbnQmIzM0OywgZ3RrX21haW5fcXVpdCwgTlVMTCk7Ci0KIAlwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7CiAJaWYgKCFwZ2N0eCkKIAkJcmV0dXJuIC0xOwogCi0JdmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7CiYjNDM7CXZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApOwogCiAJbm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7CiAKLQlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApOwomIzQzOwlndGtfd2lkZ2V0X3NldF92ZXhwYW5kKG5vdGVib29rLCBUUlVFKTsKJiM0MzsJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2spOwogCiAJaW5mb19iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTsKIAlpZiAoaW5mb19iYXIpCi0JCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBpbmZvX2JhciwgRkFMU0UsIEZBTFNFLCAwKTsKJiM0MzsJCWd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9fYmFyKTsKIAogCXN0YXRiYXIgPSBwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKCk7Ci0JZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHN0YXRiYXIsIEZBTFNFLCBGQUxTRSwgMCk7CiYjNDM7CWd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpOwogCi0JZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTsKJiM0MzsJZ3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyh3aW5kb3cpLCB2Ym94KTsKIAogCWV2bGlzdF9fZm9yX2VhY2hfZW50cnkoZXZsaXN0LCBwb3MpIHsKIAkJc3RydWN0IGhpc3RzICpoaXN0cyA9IGV2c2VsX19oaXN0cyhwb3MpOwpAQCAtNjQ5LDcgJiM0Mzs2NDQsNyBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCwKIAkJCX0KIAkJfQogCi0JCXNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpOwomIzQzOwkJc2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoKTsKIAogCQlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZF93aW5kb3cpLAogCQkJCQkJCUdUS19QT0xJQ1lfQVVUT01BVElDLApAQCAtNjY1LDE1ICYjNDM7NjYwLDEyIEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLAogCQlndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2UoR1RLX05PVEVCT09LKG5vdGVib29rKSwgc2Nyb2xsZWRfd2luZG93LCB0YWJfbGFiZWwpOwogCX0KIAotCWd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTsKLQogCXBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7Ci0KLQlndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7CiYjNDM7CWd0a193aWRnZXRfc2V0X3Zpc2libGUod2luZG93LCBUUlVFKTsKIAogCXVpX2hlbHBsaW5lX19wdXNoKGhlbHApOwogCi0JZ3RrX21haW4oKTsKJiM0MzsJcGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTsKIAogCXBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoJmFtcDtwZ2N0eCk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMgYi90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jCmluZGV4IGVlYTZmY2RlNTE4YTguLjI4YTRiNDg2MzYwZGUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuYwpAQCAtMyw0NyAmIzQzOzMsNjIgQEAKIAogI2luY2x1ZGUgJiMzNDtndGsuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0Oy4uL3Byb2dyZXNzLmgmIzM0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jb21waWxlci5oJmd0OwogCiBzdGF0aWMgR3RrV2lkZ2V0ICpkaWFsb2c7CiBzdGF0aWMgR3RrV2lkZ2V0ICpwcm9ncmVzczsKIAomIzQzO3N0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fZGVzdHJveWVkKEd0a1dpZGdldCAqd2lkZ2V0IF9fbWF5YmVfdW51c2VkLAomIzQzOwkJCQkJZ3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZCkKJiM0Mzt7CiYjNDM7CWRpYWxvZyA9IE5VTEw7CiYjNDM7CXByb2dyZXNzID0gTlVMTDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX3VwZGF0ZShzdHJ1Y3QgdWlfcHJvZ3Jlc3MgKnApCiB7CiAJZG91YmxlIGZyYWN0aW9uID0gcC0mZ3Q7dG90YWwgPyAxLjAgKiBwLSZndDtjdXJyIC8gcC0mZ3Q7dG90YWwgOiAwLjA7CiAJY2hhciBidWZbMTAyNF07CiAKIAlpZiAoZGlhbG9nID09IE5VTEwpIHsKLQkJR3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX3Zib3hfbmV3KFRSVUUsIDUpOwomIzQzOwkJR3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCA1KTsKIAkJR3RrV2lkZ2V0ICpsYWJlbCA9IGd0a19sYWJlbF9uZXcocC0mZ3Q7dGl0bGUpOwogCi0JCWRpYWxvZyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOwomIzQzOwkJZGlhbG9nID0gZ3RrX3dpbmRvd19uZXcoKTsKIAkJcHJvZ3Jlc3MgPSBndGtfcHJvZ3Jlc3NfYmFyX25ldygpOwogCi0JCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBsYWJlbCwgVFJVRSwgRkFMU0UsIDMpOwotCQlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgcHJvZ3Jlc3MsIFRSVUUsIFRSVUUsIDMpOwomIzQzOwkJZ3RrX3dpZGdldF9zZXRfdmV4cGFuZChsYWJlbCwgVFJVRSk7CiYjNDM7CQlndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBsYWJlbCk7CiYjNDM7CQlndGtfd2lkZ2V0X3NldF92ZXhwYW5kKHByb2dyZXNzLCBUUlVFKTsKJiM0MzsJCWd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHByb2dyZXNzKTsKJiM0MzsKJiM0MzsJCWd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1coZGlhbG9nKSwgdmJveCk7CiAKLQkJZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihkaWFsb2cpLCB2Ym94KTsKJiM0MzsJCWdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAmIzM0O2Rlc3Ryb3kmIzM0OywKJiM0MzsJCQkJIEdfQ0FMTEJBQ0soZ3RrX3VpX3Byb2dyZXNzX19kZXN0cm95ZWQpLCBOVUxMKTsKIAogCQlndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyksICYjMzQ7cGVyZiYjMzQ7KTsKLQkJZ3RrX3dpbmRvd19yZXNpemUoR1RLX1dJTkRPVyhkaWFsb2cpLCAzMDAsIDgwKTsKLQkJZ3RrX3dpbmRvd19zZXRfcG9zaXRpb24oR1RLX1dJTkRPVyhkaWFsb2cpLCBHVEtfV0lOX1BPU19DRU5URVIpOwomIzQzOwkJZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1coZGlhbG9nKSwgMzAwLCA4MCk7CiAKLQkJZ3RrX3dpZGdldF9zaG93X2FsbChkaWFsb2cpOwomIzQzOwkJZ3RrX3dpZGdldF9zZXRfdmlzaWJsZShkaWFsb2csIFRSVUUpOwogCX0KIAogCWd0a19wcm9ncmVzc19iYXJfc2V0X2ZyYWN0aW9uKEdUS19QUk9HUkVTU19CQVIocHJvZ3Jlc3MpLCBmcmFjdGlvbik7CiAJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgJiMzNDslJiMzNDtQUkl1NjQmIzM0OyAvICUmIzM0O1BSSXU2NCwgcC0mZ3Q7Y3VyciwgcC0mZ3Q7dG90YWwpOwogCWd0a19wcm9ncmVzc19iYXJfc2V0X3RleHQoR1RLX1BST0dSRVNTX0JBUihwcm9ncmVzcyksIGJ1Zik7CiAKLQkvKiB3ZSBkaWRuJiMzOTt0IGNhbGwgZ3RrX21haW4geWV0LCBzbyBkbyBpdCBtYW51YWxseSAqLwotCXdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSkKLQkJZ3RrX21haW5faXRlcmF0aW9uKCk7CiYjNDM7CS8qIHdlIGRpZG4mIzM5O3Qgc3RhcnQgYSBtYWluIGxvb3AgeWV0LCBzbyBwdW1wIGV2ZW50cyBtYW51YWxseSAqLwomIzQzOwl3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZyhOVUxMKSkKJiM0MzsJCWdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihOVUxMLCBGQUxTRSk7CiB9CiAKIHN0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fZmluaXNoKHZvaWQpCiB7CiYjNDM7CWlmIChkaWFsb2cgPT0gTlVMTCkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAkvKiB0aGlzIHdpbGwgYWxzbyBkZXN0cm95IGFsbCBvZiBpdHMgY2hpbGRyZW4gKi8KLQlndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsKJiM0MzsJZ3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7CiAKIAlkaWFsb2cgPSBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmMKaW5kZXggZjVlZWU0ZDY2ODczOC4uOWI0NGYzNzE5NzQ3NyAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jCkBAIC0xMiw3ICYjNDM7MTIsNyBAQCBpbnQgcGVyZl9ndGtfX2luaXQodm9pZCkKIAlndGtfdWlfcHJvZ3Jlc3NfX2luaXQoKTsKIAlwZXJmX2d0a19faW5pdF9ocHAoKTsKIAotCXJldHVybiBndGtfaW5pdF9jaGVjayhOVUxMLCBOVUxMKSA/IDAgOiAtMTsKJiM0MzsJcmV0dXJuIGd0a19pbml0X2NoZWNrKCkgPyAwIDogLTE7CiB9CiAKIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZCkKQEAgLTIwLDUgJiM0MzsyMCw2IEBAIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZCkKIAlpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkpCiAJCXJldHVybjsKIAlwZXJmX2Vycm9yX191bnJlZ2lzdGVyKCZhbXA7cGVyZl9ndGtfZW9wcyk7Ci0JZ3RrX21haW5fcXVpdCgpOwomIzQzOwlwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2coKTsKJiM0MzsJcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7CiB9CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmMgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmMKaW5kZXggYzQ3ZjVjMzg3ODM4Yy4uNTA5Njg4OGI3YzE2MCAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYwpAQCAtNCw2ICYjNDM7NCw3IEBACiAKICNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDsKICNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvY29tcGlsZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC96YWxsb2MuaCZndDsKIAogc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKnBnY3R4OwpAQCAtMjgsMjcgJiM0MzsyOSw2MCBAQCBpbnQgcGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dChzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCAqKmN0eCkKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBHTWFpbkxvb3AgKnBlcmZfZ3RrX19lcnJvcl9sb29wOwomIzQzOwomIzQzO3ZvaWQgcGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKHZvaWQpCiYjNDM7ewomIzQzOwlpZiAocGVyZl9ndGtfX2Vycm9yX2xvb3ApCiYjNDM7CQlnX21haW5fbG9vcF9xdWl0KHBlcmZfZ3RrX19lcnJvcl9sb29wKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgcGVyZl9ndGtfX2RpYWxvZ19yZXNwb25zZShHdGtEaWFsb2cgKmRpYWxvZywKJiM0MzsJCQkJICAgICAgZ2ludCByZXNwb25zZV9pZCBfX21heWJlX3VudXNlZCwKJiM0MzsJCQkJICAgICAgZ3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZCkKJiM0Mzt7CiYjNDM7CWd0a193aW5kb3dfZGVzdHJveShHVEtfV0lORE9XKGRpYWxvZykpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogewogCWNoYXIgKm1zZzsKIAlHdGtXaWRnZXQgKmRpYWxvZzsKJiM0MzsJdmFfbGlzdCBhcmdzX2NvcHk7CiAKJiM0MzsJdmFfY29weShhcmdzX2NvcHksIGFyZ3MpOwogCWlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fAotCSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJncykgJmx0OyAwKSB7CiYjNDM7CSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJnc19jb3B5KSAmbHQ7IDApIHsKJiM0MzsJCXZhX2VuZChhcmdzX2NvcHkpOwogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtFcnJvcjpcbiYjMzQ7KTsKIAkJdmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpOwogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKIAkJcmV0dXJuIC0xOwogCX0KJiM0MzsJdmFfZW5kKGFyZ3NfY29weSk7CiAKIAlkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3X3dpdGhfbWFya3VwKEdUS19XSU5ET1cocGdjdHgtJmd0O21haW5fd2luZG93KSwKIAkJCQkJR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULAogCQkJCQlHVEtfTUVTU0FHRV9FUlJPUiwKIAkJCQkJR1RLX0JVVFRPTlNfQ0xPU0UsCiAJCQkJCSYjMzQ7Jmx0O2ImZ3Q7RXJyb3ImbHQ7L2ImZ3Q7XG5cbiVzJiMzNDssIG1zZyk7Ci0JZ3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTsKIAotCWd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOwomIzQzOwkvKgomIzQzOwkgKiAmIzM0O3Jlc3BvbnNlJiMzNDsgb25seSBmaXJlcyB3aGVuIGEgYnV0dG9uIGlzIGNsaWNrZWQ7IERFU1RST1lfV0lUSF9QQVJFTlQKJiM0MzsJICogZGVzdHJveXMgdGhlIGRpYWxvZyBkaXJlY3RseSB3aXRob3V0IGl0LiBRdWl0IGZyb20gJiMzNDtkZXN0cm95JiMzNDsKJiM0MzsJICogaW5zdGVhZCwgd2hpY2ggZmlyZXMgZWl0aGVyIHdheSwgc28gdGhlIG5lc3RlZCBsb29wIGJlbG93IGNhbiYjMzk7dAomIzQzOwkgKiBvdXRsaXZlIHRoZSBkaWFsb2cgYW5kIGhhbmcuCiYjNDM7CSAqLwomIzQzOwlwZXJmX2d0a19fZXJyb3JfbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBGQUxTRSk7CiYjNDM7CWdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAmIzM0O3Jlc3BvbnNlJiMzNDssCiYjNDM7CQkJIEdfQ0FMTEJBQ0socGVyZl9ndGtfX2RpYWxvZ19yZXNwb25zZSksIE5VTEwpOwomIzQzOwlnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCAmIzM0O2Rlc3Ryb3kmIzM0OywKJiM0MzsJCQkJIEdfQ0FMTEJBQ0soZ19tYWluX2xvb3BfcXVpdCksIHBlcmZfZ3RrX19lcnJvcl9sb29wKTsKJiM0MzsKJiM0MzsJZ3RrX3dpZGdldF9zZXRfdmlzaWJsZShkaWFsb2csIFRSVUUpOwomIzQzOwlnX21haW5fbG9vcF9ydW4ocGVyZl9ndGtfX2Vycm9yX2xvb3ApOwomIzQzOwlnX2NsZWFyX3BvaW50ZXIoJmFtcDtwZXJmX2d0a19fZXJyb3JfbG9vcCwgZ19tYWluX2xvb3BfdW5yZWYpOwomIzQzOwogCWZyZWUobXNnKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTU3LDE0ICYjNDM7OTEsMTggQEAgc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCiBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX2luZm9fYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogewogCWNoYXIgKm1zZzsKJiM0MzsJdmFfbGlzdCBhcmdzX2NvcHk7CiAKJiM0MzsJdmFfY29weShhcmdzX2NvcHksIGFyZ3MpOwogCWlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fAotCSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJncykgJmx0OyAwKSB7CiYjNDM7CSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJnc19jb3B5KSAmbHQ7IDApIHsKJiM0MzsJCXZhX2VuZChhcmdzX2NvcHkpOwogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtXYXJuaW5nOlxuJiMzNDspOwogCQl2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7CiAJCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwogCQlyZXR1cm4gLTE7CiAJfQomIzQzOwl2YV9lbmQoYXJnc19jb3B5KTsKIAogCWd0a19sYWJlbF9zZXRfdGV4dChHVEtfTEFCRUwocGdjdHgtJmd0O21lc3NhZ2VfbGFiZWwpLCBtc2cpOwogCWd0a19pbmZvX2Jhcl9zZXRfbWVzc2FnZV90eXBlKEdUS19JTkZPX0JBUihwZ2N0eC0mZ3Q7aW5mb19iYXIpLApAQCAtNzgsMTQgJiM0MzsxMTYsMTggQEAgc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19pbmZvX2Jhcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfc3RhdHVzYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogewogCWNoYXIgKm1zZywgKnA7CiYjNDM7CXZhX2xpc3QgYXJnc19jb3B5OwogCiYjNDM7CXZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTsKIAlpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkgfHwKLQkgICAgdmFzcHJpbnRmKCZhbXA7bXNnLCBmb3JtYXQsIGFyZ3MpICZsdDsgMCkgewomIzQzOwkgICAgdmFzcHJpbnRmKCZhbXA7bXNnLCBmb3JtYXQsIGFyZ3NfY29weSkgJmx0OyAwKSB7CiYjNDM7CQl2YV9lbmQoYXJnc19jb3B5KTsKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7V2FybmluZzpcbiYjMzQ7KTsKIAkJdmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpOwogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKIAkJcmV0dXJuIC0xOwogCX0KJiM0MzsJdmFfZW5kKGFyZ3NfY29weSk7CiAKIAlndGtfc3RhdHVzYmFyX3BvcChHVEtfU1RBVFVTQkFSKHBnY3R4LSZndDtzdGF0YmFyKSwKIAkJCSAgcGdjdHgtJmd0O3N0YXRiYXJfY3R4X2lkKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYwppbmRleCBmZjgwMDA0N2U2OTdmLi5kODg3MzQ2YzdhNjMyIDEwMDY0NAotLS0gYS90b29scy9wZXJmL3VpL3NldHVwLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9zZXR1cC5jCkBAIC0xNCw3ICYjNDM7MTQsNyBAQCBpbnQgdXNlX2Jyb3dzZXIgPSAtMTsKIAogI2RlZmluZSBQRVJGX0dUS19EU08gJiMzNDtsaWJwZXJmLWd0ay5zbyYjMzQ7CiAKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCiBzdGF0aWMgaW50IHNldHVwX2d0a19icm93c2VyKHZvaWQpCiB7CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuYyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jCmluZGV4IGRmNzBlOTVhODQ3MDQuLjEyM2I2ZDVmY2VhNzggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jCkBAIC0xNDUsNiAmIzQzOzE0NSwxNyBAQCBzdGF0aWMgaW50IGFubm90YXRlZF9zb3VyY2VfX2FsbG9jX2hpc3RvZ3JhbXMoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywKIAlyZXR1cm4gc3JjLSZndDtoaXN0b2dyYW1zID8gMCA6IC0xOwogfQogCiYjNDM7c3RydWN0IHN5bV9oaXN0X2VudHJ5ICoKJiM0Mzthbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKmVudHJ5OwomIzQzOwlsb25nIGtleSA9IG9mZnNldCAmbHQ7Jmx0OyAxNiB8IGV2c2VsLSZndDtjb3JlLmlkeDsKJiM0MzsKJiM0MzsJaWYgKCFoYXNobWFwX19maW5kKHNyYy0mZ3Q7c2FtcGxlcywga2V5LCAmYW1wO2VudHJ5KSkKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwlyZXR1cm4gZW50cnk7CiYjNDM7fQomIzQzOwogdm9pZCBzeW1ib2xfX2Fubm90YXRlX3plcm9faGlzdG9ncmFtcyhzdHJ1Y3Qgc3ltYm9sICpzeW0pCiB7CiAJc3RydWN0IGFubm90YXRpb24gKm5vdGVzID0gc3ltYm9sX19hbm5vdGF0aW9uKHN5bSk7CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaCBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oCmluZGV4IGZhMDhkMDliODBmNzYuLjQwMDM4YTM3NzlkNDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oCkBAIC00MDYsMTYgJiM0Mzs0MDYsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBzeW1faGlzdCAqYW5ub3RhdGlvbl9faGlzdG9ncmFtKHN0cnVjdCBhbm5vdGF0aW9uICpub3RlcywKIAlyZXR1cm4gYW5ub3RhdGVkX3NvdXJjZV9faGlzdG9ncmFtKG5vdGVzLSZndDtzcmMsIGV2c2VsKTsKIH0KIAotc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKgotYW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KQotewotCXN0cnVjdCBzeW1faGlzdF9lbnRyeSAqZW50cnk7Ci0JbG9uZyBrZXkgPSBvZmZzZXQgJmx0OyZsdDsgMTYgfCBldnNlbC0mZ3Q7Y29yZS5pZHg7Ci0KLQlpZiAoIWhhc2htYXBfX2ZpbmQoc3JjLSZndDtzYW1wbGVzLCBrZXksICZhbXA7ZW50cnkpKQotCQlyZXR1cm4gTlVMTDsKLQlyZXR1cm4gZW50cnk7Ci19CiYjNDM7c3RydWN0IHN5bV9oaXN0X2VudHJ5ICoKJiM0Mzthbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpOwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBhbm5vdGF0aW9uICpzeW1ib2xfX2Fubm90YXRpb24oc3RydWN0IHN5bWJvbCAqc3ltKQogewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDEzNwoJCQkJCQkJb3V0cHV0OiA4MgoJCQkJCQkJdGhvdWdodHM6IDkyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRXZhbHVhdGlvbjogTmVnYXRpdmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHVzZXIgd2FudHMgbWUgdG8gZXZhbHVhdGUgdGhpcyBwYXRjaCBzZXJpZXMgYXBwbGllZCB0byB0aGUga2VybmVsIEhFQUQuIEZpcnN0LCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgZmlsZXMgdGhhdCB3ZXJlIG1vZGlmaWVkLiBGcm9tIHRoZSBkaWZmLCBJJiMzOTttIHNlZWluZyBldmVyeXRoaW5nIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSDigJMgc3BlY2lmaWNhbGx5LCBgdG9vbHMvcGVyZmAgYW5kIGB0b29scy9idWlsZGAuCgpOb3csIGFjY29yZGluZyB0byB0aGUgdHJpYWdlIGd1aWRlbGluZXMsIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBmYWxscyBpbnRvIHRoZSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGNhdGVnb3J5LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gY2hlY2tpbmcgaWYgYWxsIHRoZSBtb2RpZmllZCBjb2RlIHN0cmljdGx5IGZhbGxzIGludG8gdGhlIGNyaXRlcmlhIG9mOiAmIzM0O05vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMsIGxpa2UgbW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgc3BlbGxpbmcgZml4ZXMsIG9yIHVzZXItc3BhY2UgZGlyZWN0b3JpZXMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKSB0aGF0IGRvbiYjMzk7dCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBgdm1saW51eGAgb3Iga2VybmVsIG1vZHVsZXMuJiMzNDsKCkxvb2tpbmcgYXQgdGhlIGxpc3Qgb2YgZmlsZXMgYWdhaW46IGB0b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlYCwgYHRvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGVgLCBhbmQgdGhlIGB0ZXN0LWd0azQtaW5mb2Jhci5jYCBhbmQgYHRlc3QtZ3RrNC5jYCBmaWxlcyB3aXRoaW4gYHRvb2xzL2J1aWxkL2ZlYXR1cmVgIGxvb2sgbGlrZSBidWlsZCBzeXN0ZW0gY2hhbmdlcywgYW5kIHRlc3RpbmcsIHNwZWNpZmljYWxseSBmb3IgdGhlIEdUSyBidWlsZCwgd2hpY2ggaXMgdXNlci1zcGFjZSBhbmQgZG9lc24mIzM5O3QgZGlyZWN0bHkgaW1wYWN0IHRoZSBrZXJuZWwuIFRoZSBgdG9vbHMvcGVyZmAgZGlyZWN0b3J5IGhvdXNlcyB0aGUgbWFqb3JpdHkgb2YgdGhlIGNoYW5nZXMsIGFuZCBzZWVtcyB0byBiZSB1cGRhdGluZyBgcGVyZmAgdG9vbGluZy4gVGhlcmUgYXJlIE1ha2VmaWxlIGNoYW5nZXMsIGRvY3VtZW50YXRpb24gdXBkYXRlcyAoYHBlcmYtcmVwb3J0LnR4dGApLCBidWlsZCBjb25maWd1cmF0aW9ucywgc2NyaXB0cywgYW5kIHVwZGF0ZXMgdG8gdGhlIEdUSy1iYXNlZCBVSSAoYHVpL2d0ay8qYCkgYW5kIHJlbGF0ZWQgdXRpbGl0aWVzIChgdXRpbC8qYCwgYGJ1aWx0aW4tKmApLiBUaGUgZm9jdXMgaGVyZSBhcHBlYXJzIHRvIGJlIHBvcnRpbmcgYHBlcmZgJiMzOTtzIEdUSyBVSSBzdXBwb3J0IGZyb20gR1RLMiB0byBHVEs0LgoKR2l2ZW4gdGhhdCAqYWxsKiB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvYCAoYW5kIHRoZSBgYnVpbGRgIHN1YmRpcmVjdG9yeSksIGRlYWxpbmcgd2l0aCB1c2VyLXNwYWNlIHRvb2xpbmcgYW5kIGJ1aWxkIGluZnJhc3RydWN0dXJlLCBhbmQgY3J1Y2lhbGx5LCAqbm9uZSogb2YgdGhlc2UgY2hhbmdlcyBhcmUgdG91Y2hpbmcgdGhlIGNvcmUga2VybmVsIGltYWdlIChgdm1saW51eGApIG9yIGFueSBrZXJuZWwgbW9kdWxlcywgSSBjYW4gY29uZmlkZW50bHkgY29uY2x1ZGUgdGhhdCB0aGUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIG1ldC4KClRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bGwgcmUtc2NhbiB0aGUgZW50aXJlIGRpZmYgdG8gbWFrZSBzdXJlIG5vIGZpbGVzIHdlcmUgaW5hZHZlcnRlbnRseSBtaXNzZWQuIE5vcGUsIGl0JiMzOTtzIGFsbCBjb250YWluZWQgd2l0aGluIGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYC4KClRoZXJlZm9yZSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgc2V0IHRvIGZhbHNlLiBObyBzcGVjaWZpYyBlbmFibGUgY29uZmlndXJhdGlvbnMgb3IgZm9jdXMgc3ltYm9scyBhcmUgbmVlZGVkIGZvciB0aGlzIHBhdGNoLiBNeSByZWFzb25pbmcgaXMgY2xlYXI6IFRoZSBwYXRjaCBzZXJpZXMgZm9jdXNlcyAqZXhjbHVzaXZlbHkqIG9uIHVzZXItc3BhY2UgdG9vbGluZywgc3BlY2lmaWNhbGx5IGNoYW5nZXMgd2l0aGluIGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCByZWxhdGVkIHRvIHBvcnRpbmcgcGVyZiYjMzk7cyBHVEsgVUkgdG8gR1RLNCwgd2hpY2ggZG9lcyBub3QgaW1wYWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2Ugb3IgYW55IGtlcm5lbCBtb2R1bGVzLiBJJiMzOTttIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBleGNsdXNpdmVseSBtb2RpZmllcyB1c2Vyc3BhY2UgdG9vbHMgKHRvb2xzL3BlcmYgYW5kIHRvb2xzL2J1aWxkKSwgcG9ydGluZyBwZXJmJiMzOTtzIEdUSyBpbnRlcmZhY2Ugc3VwcG9ydCBmcm9tIEdUSzIgdG8gR1RLNC4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBrZXJuZWwgY29kZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRvb2xzICh0b29scy9wZXJmIGFuZCB0b29scy9idWlsZCksIHBvcnRpbmcgcGVyZiYjMzk7cyBHVEsgaW50ZXJmYWNlIHN1cHBvcnQgZnJvbSBHVEsyIHRvIEdUSzQuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIGNvZGUgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMDo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMDA6NTI6MDMuNjE4NjIyOTk4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA0MzQ0ODA3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBleGNsdXNpdmVseSBtb2RpZmllcyB1c2Vyc3BhY2UgdG9vbHMgKHRvb2xzL3BlcmYgYW5kIHRvb2xzL2J1aWxkKSwgcG9ydGluZyBwZXJmJ3MgR1RLIGludGVyZmFjZSBzdXBwb3J0IGZyb20gR1RLMiB0byBHVEs0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAwOjUyOjAzLjYxODYzMjMwOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQyNTAxMDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDMwOWM4MjM1ZGVmNmRmNzEzZmE0MDk5OTQxZWU5MjA2YWZjZjFjZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCA3IDAwOjUyOjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmUgYi90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlXFxuaW5kZXggOTllYjBlYTA5NTM3NS4uN2ZmZWI3NWEwMWM3OSAxMDA2NDRcXG4tLS0gYS90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlXFxuKysrIGIvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZVxcbkBAIC0xMTMsOCArMTEzLDggQEAgRkVBVFVSRV9URVNUU19FWFRSQSA6PSAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgY29tcGlsZS14MzIgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgY3BsdXMtZGVtYW5nbGUgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgY3hhLWRlbWFuZ2xlICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tICAgICAgICAgZ3RrMiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tICAgICAgICAgZ3RrMi1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXFxcXG4rICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4rICAgICAgICAgZ3RrNC1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgaGVsbG8gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgYmFiZWx0cmFjZTItY3RmLXdyaXRlciAgICAgICAgIFxcXFxcXG4gICAgICAgICAgbGliY2Fwc3RvbmUgICAgICAgICAgICAgICAgICAgIFxcXFxcXG5AQCAtMTQzLDYgKzE0Myw3IEBAIGVuZGlmXFxuIEZFQVRVUkVfRElTUExBWSA/PSAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBsaWJkdyAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgZ2xpYmMgICAgICAgICAgICAgICAgICBcXFxcXFxuKyAgICAgICAgIGd0azQgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBsaWJlbGYgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgbGlibnVtYSAgICAgICAgICAgICAgICBcXFxcXFxuICAgICAgICAgIG51bWFfbnVtX3Bvc3NpYmxlX2NwdXMgXFxcXFxcbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxcbmluZGV4IDdkMTY1MDE4MTE2YTUuLjJjYTk5MmZiYjlhZDUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxcbisrKyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGVcXG5AQCAtMTEsOCArMTEsOCBAQCBGSUxFUz0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuICAgICAgICAgIHRlc3QtZXZlbnRmZC5iaW4gICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgdGVzdC1mb3J0aWZ5LXNvdXJjZS5iaW4gICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICB0ZXN0LWdsaWJjLmJpbiAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuLSAgICAgICAgIHRlc3QtZ3RrMi5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tICAgICAgICAgdGVzdC1ndGsyLWluZm9iYXIuYmluICAgICAgICAgICAgICAgICAgXFxcXFxcbisgICAgICAgICB0ZXN0LWd0azQuYmluICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuKyAgICAgICAgIHRlc3QtZ3RrNC1pbmZvYmFyLmJpbiAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgdGVzdC1oZWxsby5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICB0ZXN0LWxpYmJmZC5iaW4gICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuIFxcdCB0ZXN0LWxpYmJmZC10aHJlYWRzYWZlLmJpbiAgICAgIFxcdFxcXFxcXG5AQCAtMjQwLDExICsyNDAsMTEgQEAgJChPVVRQVVQpdGVzdC1saWJjcHVwb3dlci5iaW46XFxuICQoT1VUUFVUKXRlc3QtbGlidHJhY2Vmcy5iaW46XFxuIFxcdCAkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlidHJhY2VmcyAyXFx1MDAzZS9kZXYvbnVsbCkgLWx0cmFjZWZzXFxuIFxcbi0kKE9VVFBVVCl0ZXN0LWd0azIuYmluOlxcbi1cXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0aystMi4wIDJcXHUwMDNlL2Rldi9udWxsKSAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXFxuKyQoT1VUUFVUKXRlc3QtZ3RrNC5iaW46XFxuK1xcdCQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXFx1MDAzZS9kZXYvbnVsbClcXG4gXFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi1pbmZvYmFyLmJpbjpcXG4tXFx0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsrLTIuMCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rJChPVVRQVVQpdGVzdC1ndGs0LWluZm9iYXIuYmluOlxcbitcXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0azQgMlxcdTAwM2UvZGV2L251bGwpXFxuIFxcbiBncmVwLWxpYnMgID0gJChmaWx0ZXIgLWwlLCQoMSkpXFxuIHN0cmlwLWxpYnMgPSAkKGZpbHRlci1vdXQgLWwlLCQoMSkpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuY1xcbnNpbWlsYXJpdHkgaW5kZXggNzclXFxucmVuYW1lIGZyb20gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azItaW5mb2Jhci5jXFxucmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuY1xcbmluZGV4IGIxYjcxNmRkNTczMzAuLjZjMWJjZWU1OTVhOWMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azItaW5mb2Jhci5jXFxuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQtaW5mb2Jhci5jXFxuQEAgLTMsOSArMyw5IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NndGsvZ3RrLmhcXHUwMDNlXFxuICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgZXJyb3IgXFxcIi1Xc3RyaWN0LXByb3RvdHlwZXNcXFwiXFxuIFxcbi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbitpbnQgbWFpbih2b2lkKVxcbiB7XFxuLVxcdGd0a19pbml0KFxcdTAwMjZhcmdjLCBcXHUwMDI2YXJndik7XFxuK1xcdGd0a19pbml0KCk7XFxuIFxcdGd0a19pbmZvX2Jhcl9uZXcoKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuY1xcbnNpbWlsYXJpdHkgaW5kZXggNzYlXFxucmVuYW1lIGZyb20gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azIuY1xcbnJlbmFtZSB0byB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXFxuaW5kZXggMmFhZjRiZmMyMDU1Ni4uYjk1MjBlNzQwOGI5OSAxMDA2NDRcXG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jXFxuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuY1xcbkBAIC0zLDkgKzMsOSBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjZ3RrL2d0ay5oXFx1MDAzZVxcbiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFxcXCItV3N0cmljdC1wcm90b3R5cGVzXFxcIlxcbiBcXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4raW50IG1haW4odm9pZClcXG4ge1xcbi1cXHRndGtfaW5pdChcXHUwMDI2YXJnYywgXFx1MDAyNmFyZ3YpO1xcbitcXHRndGtfaW5pdCgpO1xcbiBcXG4gICAgICAgICByZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0IGIvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxcbmluZGV4IDIyZjg3ZWFhMzI3OTYuLjdhZjliM2Y4MWMwNjUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxcbisrKyBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcXG5AQCAtMzUxLDcgKzM1MSw3IEBAIE9QVElPTlNcXG4gXFx0cmVxdWlyZXMgYSB0dHksIGlmIG9uZSBpcyBub3QgcHJlc2VudCwgYXMgd2hlbiBwaXBpbmcgdG8gb3RoZXJcXG4gXFx0Y29tbWFuZHMsIHRoZSBzdGRpbyBpbnRlcmZhY2UgaXMgdXNlZC5cXG4gXFxuLS0tZ3RrOjogVXNlIHRoZSBHVEsyIGludGVyZmFjZS5cXG4rLS1ndGs6OiBVc2UgdGhlIEdUSzQgaW50ZXJmYWNlLlxcbiBcXG4gLWs6OlxcbiAtLXZtbGludXg9XFx1MDAzY2ZpbGVcXHUwMDNlOjpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9NYWtlZmlsZSBiL3Rvb2xzL3BlcmYvTWFrZWZpbGVcXG5pbmRleCA1YjcxMzgzN2VlZGU3Li41NjAxNDEwNjQ3OWEzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGVcXG4rKysgYi90b29scy9wZXJmL01ha2VmaWxlXFxuQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGVhbjpcXG4gIyBtYWtlIC1DIHRvb2xzL3BlcmYgLWYgdGVzdHMvbWFrZVxcbiAjXFxuIGJ1aWxkLXRlc3Q6XFxuLVxcdEAkKE1BS0UpIFNIVUY9MSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSB0YXJwa2cgbWFrZV9zdGF0aWMgbWFrZV93aXRoX2d0azIgb3V0XFxuK1xcdEAkKE1BS0UpIFNIVUY9MSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSB0YXJwa2cgbWFrZV9zdGF0aWMgbWFrZV93aXRoX2d0azQgb3V0XFxuIFxcbiBidWlsZC10ZXN0LXRhcmJhbGw6XFxuIFxcdEAkKE1BS0UpIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IG91dFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXFxuaW5kZXggNGQ1OTkzZGE5Zjk0NS4uZWY3NDE5YTViMDEzNyAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZ1xcbisrKyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXFxuQEAgLTc3NCwyMSArNzc0LDI2IEBAIGlmbmRlZiBOT19TTEFOR1xcbiAgIGVuZGlmXFxuIGVuZGlmXFxuIFxcbi1pZmRlZiBHVEsyXFxuLSAgRkxBR1NfR1RLMj0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrKy0yLjAgMlxcdTAwM2UvZGV2L251bGwpXFxuLSAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMilcXG4tICBpZm5lcSAoJChmZWF0dXJlLWd0azIpLCAxKVxcbi0gICAgJCh3YXJuaW5nIEdUSzIgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEsyIHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azItZGV2ZWwgb3IgbGliZ3RrMi4wLWRldilcXG4tICAgIE5PX0dUSzIgOj0gMVxcbitpZmRlZiBHVEs0XFxuKyAgRkxBR1NfR1RLND0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0KVxcbisgIGlmbmVxICgkKGZlYXR1cmUtZ3RrNCksIDEpXFxuKyAgICAkKHdhcm5pbmcgR1RLNCBub3QgZm91bmQsIGRpc2FibGVzIEdUSzQgc3VwcG9ydC4gUGxlYXNlIGluc3RhbGwgZ3RrNC1kZXZlbCBvciBsaWJndGstNC1kZXYpXFxuKyAgICBOT19HVEs0IDo9IDFcXG4gICBlbHNlXFxuLSAgICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGsyLWluZm9iYXIpXFxuLSAgICBpZmVxICgkKGZlYXR1cmUtZ3RrMi1pbmZvYmFyKSwgMSlcXG4rICAgICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azQtaW5mb2JhcilcXG4rICAgIGlmZXEgKCQoZmVhdHVyZS1ndGs0LWluZm9iYXIpLCAxKVxcbiAgICAgICBHVEtfQ0ZMQUdTIDo9IC1ESEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxcbiAgICAgZW5kaWZcXG4tICAgIENGTEFHUyArPSAtREhBVkVfR1RLMl9TVVBQT1JUXFxuLSAgICBHVEtfQ0ZMQUdTICs9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBndGsrLTIuMCAyXFx1MDAzZS9kZXYvbnVsbClcXG4tICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrKy0yLjAgMlxcdTAwM2UvZGV2L251bGwpXFxuKyAgICBDRkxBR1MgKz0gLURIQVZFX0dUSzRfU1VQUE9SVFxcbisgICAgR1RLX0NGTEFHUyArPSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgZ3RrNCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrNCAyXFx1MDAzZS9kZXYvbnVsbClcXG4gICAgIEVYVExJQlMgKz0gLWxkbFxcbisgICAgIyBsaWJwZXJmLWd0ay5zbyBpcyBkbG9wZW4oKWVkIGF0IHJ1bnRpbWUgYW5kIGNhbGxzIGJhY2sgaW50b1xcbisgICAgIyBzeW1ib2xzIGRlZmluZWQgaW4gdGhlIHBlcmYgYmluYXJ5IGl0c2VsZiAoY2FsbGNoYWluX3BhcmFtLFxcbisgICAgIyBzeW1ib2xfY29uZiwgZXZzZWxfX25hbWUsIC4uLik6IHBlcmYgbmVlZHMgdG8gZXhwb3J0IHRob3NlXFxuKyAgICAjIGR5bmFtaWNhbGx5IGZvciB0aGUgcGx1Z2luIHRvIHJlc29sdmUgdGhlbS5cXG4rICAgIExERkxBR1MgKz0gLXJkeW5hbWljXFxuICAgZW5kaWZcXG4gZW5kaWZcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZiBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxcbmluZGV4IDI5Y2ZkNDRjNDI3ZjMuLjI0MzhiNDBlYWFlYzEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmXFxuKysrIGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmXFxuQEAgLTQ5LDcgKzQ5LDcgQEAgaW5jbHVkZSAuLi9zY3JpcHRzL3V0aWxpdGllcy5tYWtcXG4gI1xcbiAjIERlZmluZSBOT19TTEFORyBpZiB5b3UgZG8gbm90IHdhbnQgVFVJIHN1cHBvcnQuXFxuICNcXG4tIyBEZWZpbmUgR1RLMiBpZiB5b3Ugd2FudCBHVEsrIEdVSSBzdXBwb3J0LlxcbisjIERlZmluZSBHVEs0IGlmIHlvdSB3YW50IEdUSysgR1VJIHN1cHBvcnQuXFxuICNcXG4gIyBEZWZpbmUgTk9fREVNQU5HTEUgaWYgeW91IGRvIG5vdCB3YW50IEMrKyBzeW1ib2wgZGVtYW5nbGluZy5cXG4gI1xcbkBAIC00NzMsNyArNDczLDcgQEAgaWZuZXEgKCQoT1VUUFVUKSwpXFxuICAgQ0ZMQUdTICs9IC1JJChPVVRQVVQpXFxuIGVuZGlmXFxuIFxcbi1pZmRlZiBHVEsyXFxuK2lmZGVmIEdUSzRcXG4gICBBTExfUFJPR1JBTVMgKz0gJChPVVRQVVQpbGlicGVyZi1ndGsuc29cXG4gICBHVEtfSU4gOj0gJChPVVRQVVQpZ3RrLWluLm9cXG4gZW5kaWZcXG5AQCAtODExLDcgKzgxMSw3IEBAIGNoZWNrOiBwcmVwYXJlXFxuIFxcbiAjIyMgSW5zdGFsbGF0aW9uIHJ1bGVzXFxuIFxcbi1pZmRlZiBHVEsyXFxuK2lmZGVmIEdUSzRcXG4gaW5zdGFsbC1ndGs6ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvXFxuIFxcdCQoY2FsbCBRVUlFVF9JTlNUQUxMLCAnR1RLIFVJJykgXFxcXFxcbiBcXHRcXHQkKElOU1RBTEwpIC1kIC1tIDc1NSAnJChERVNURElSX1NRKSQobGliZGlyX1NRKSc7IFxcXFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMgYi90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuY1xcbmluZGV4IDY5Y2I3MmIyMDgyYTYuLjE1MTYzZTA4MWE4Y2UgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcXG4rKysgYi90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuY1xcbkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBwZXJmX2Fubm90YXRlIHtcXG4gXFx0Ym9vbFxcdCAgIHVzZV90dWk7XFxuICNlbmRpZlxcbiBcXHRib29sXFx0ICAgdXNlX3N0ZGlvLCB1c2Vfc3RkaW8yO1xcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuIFxcdGJvb2xcXHQgICB1c2VfZ3RrO1xcbiAjZW5kaWZcXG4gXFx0Ym9vbFxcdCAgIHNraXBfbWlzc2luZztcXG5AQCAtNzEyLDcgKzcxMiw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxcbiBcXHRPUFRfQk9PTEVBTigncScsIFxcXCJxdWlldFxcXCIsIFxcdTAwMjZxdWlldCwgXFxcImRvIG5vdyBzaG93IGFueSB3YXJuaW5ncyBvciBtZXNzYWdlc1xcXCIpLFxcbiBcXHRPUFRfQk9PTEVBTignRCcsIFxcXCJkdW1wLXJhdy10cmFjZVxcXCIsIFxcdTAwMjZkdW1wX3RyYWNlLFxcbiBcXHRcXHQgICAgXFxcImR1bXAgcmF3IHRyYWNlIGluIEFTQ0lJXFxcIiksXFxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcXG4gXFx0T1BUX0JPT0xFQU4oMCwgXFxcImd0a1xcXCIsIFxcdTAwMjZhbm5vdGF0ZS51c2VfZ3RrLCBcXFwiVXNlIHRoZSBHVEsgaW50ZXJmYWNlXFxcIiksXFxuICNlbmRpZlxcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXFxuQEAgLTgyOCw3ICs4MjgsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcXG4gXFx0aWYgKGFubm90YXRlX2NoZWNrX2FyZ3MoKSBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxcbiBcXHRpZiAoc3ltYm9sX2NvbmYuc2hvd19ucl9zYW1wbGVzIFxcdTAwMjZcXHUwMDI2IGFubm90YXRlLnVzZV9ndGspIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCItLXNob3ctbnItc2FtcGxlcyBpcyBub3QgYXZhaWxhYmxlIGluIC0tZ3RrIG1vZGUgYXQgdGhpcyB0aW1lXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5AQCAtODk4LDcgKzg5OCw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxcbiBcXHRlbHNlIGlmIChhbm5vdGF0ZS51c2VfdHVpKVxcbiBcXHRcXHR1c2VfYnJvd3NlciA9IDE7XFxuICNlbmRpZlxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuIFxcdGVsc2UgaWYgKGFubm90YXRlLnVzZV9ndGspXFxuIFxcdFxcdHVzZV9icm93c2VyID0gMjtcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xcbmluZGV4IDYwZDFmMTY2NjI5ZTAuLmQxNDM4NGM1ODQ2NjEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jXFxuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jXFxuQEAgLTgyLDcgKzgyLDcgQEAgc3RydWN0IHJlcG9ydCB7XFxuICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlRcXG4gXFx0Ym9vbFxcdFxcdFxcdHVzZV90dWk7XFxuICNlbmRpZlxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuIFxcdGJvb2xcXHRcXHRcXHR1c2VfZ3RrO1xcbiAjZW5kaWZcXG4gXFx0Ym9vbFxcdFxcdFxcdHVzZV9zdGRpbztcXG5AQCAtMTM1OSw4ICsxMzU5LDggQEAgaW50IGNtZF9yZXBvcnQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXFxuIFxcdE9QVF9CT09MRUFOKDAsIFxcXCJ0dWlcXFwiLCBcXHUwMDI2cmVwb3J0LnVzZV90dWksIFxcXCJVc2UgdGhlIFRVSSBpbnRlcmZhY2VcXFwiKSxcXG4gI2VuZGlmXFxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxcbi1cXHRPUFRfQk9PTEVBTigwLCBcXFwiZ3RrXFxcIiwgXFx1MDAyNnJlcG9ydC51c2VfZ3RrLCBcXFwiVXNlIHRoZSBHVEsyIGludGVyZmFjZVxcXCIpLFxcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcXG4rXFx0T1BUX0JPT0xFQU4oMCwgXFxcImd0a1xcXCIsIFxcdTAwMjZyZXBvcnQudXNlX2d0aywgXFxcIlVzZSB0aGUgR1RLNCBpbnRlcmZhY2VcXFwiKSxcXG4gI2VuZGlmXFxuIFxcdE9QVF9CT09MRUFOKDAsIFxcXCJzdGRpb1xcXCIsIFxcdTAwMjZyZXBvcnQudXNlX3N0ZGlvLFxcbiBcXHRcXHQgICAgXFxcIlVzZSB0aGUgc3RkaW8gaW50ZXJmYWNlXFxcIiksXFxuQEAgLTE3MTAsNyArMTcxMCw3IEBAIGludCBjbWRfcmVwb3J0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcXG4gXFx0ZWxzZSBpZiAocmVwb3J0LnVzZV90dWkpXFxuIFxcdFxcdHVzZV9icm93c2VyID0gMTtcXG4gI2VuZGlmXFxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcXG4gXFx0ZWxzZSBpZiAocmVwb3J0LnVzZV9ndGspXFxuIFxcdFxcdHVzZV9icm93c2VyID0gMjtcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2ggYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXFxuaW5kZXggZDAwM2U3ZmFiMmJlOC4uYTYwMWE1MjYwYzE3ZSAxMDA3NTVcXG4tLS0gYS90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXFxuKysrIGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxcbkBAIC0xOTksOCArMTk5LDggQEAgZmVkb3JhX3BrZ19mb3IoKSB7XFxuIFxcdCMgb3B0LWluIGZlYXR1cmVzLCB3aGljaCBhIGRlZmF1bHQgYnVpbGQgZG9lcyBub3QgZW5hYmxlOiB0aGUgbGliYmZkXFxuIFxcdCMgZGlzYXNzZW1ibGVyIGZhbWlseSAobGliYmZkLCBsaWJiZmQtdGhyZWFkc2FmZSwgbGliYmZkLWxpYmVydHksXFxuIFxcdCMgZGlzYXNzZW1ibGVyLSosIGNwbHVzLWRlbWFuZ2xlKSwgb25seSBsaW5rZWQgb24gQlVJTERfTk9ORElTVFJPXFxuLVxcdCMgYnVpbGRzIGFuZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNhcHN0b25lLCBHVEsyLCBMSUJQRVJMIGFuZFxcbi1cXHQjIExJQlVOV0lORCBzdXBwb3J0IChpZmRlZiBHVEsyIC8gaWZkZWYgTElCUEVSTCAvIExJQlVOV0lORD0xKSxcXG4rXFx0IyBidWlsZHMgYW5kIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgY2Fwc3RvbmUsIEdUSzQsIExJQlBFUkwgYW5kXFxuK1xcdCMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzQgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLFxcbiBcXHQjIGFuZCBDb3JlU2lnaHQgKGlmZGVmIENPUkVTSUdIVCksIGFyZSBkZWxpYmVyYXRlbHkgbm90IG1hcHBlZC5cXG4gXFx0IyBsaWJhaW8gaXMgbm90IG1hcHBlZCBlaXRoZXI6IGl0c1xcbiBcXHQjIHRlc3QgdXNlcyB0aGUgUE9TSVggQUlPIEFQSSAoYWlvLmgsIGFpb18qLCAtbHJ0KSwgcHJvdmlkZWQgYnlcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi90ZXN0cy9tYWtlIGIvdG9vbHMvcGVyZi90ZXN0cy9tYWtlXFxuaW5kZXggZDJjMmY1MjZlMWRiMC4uMjAyYWI1NTAxOTE2MSAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3Rlc3RzL21ha2VcXG4rKysgYi90b29scy9wZXJmL3Rlc3RzL21ha2VcXG5AQCAtOTUsNyArOTUsNyBAQCBtYWtlX25vX2JhYmVsdHJhY2UyIDo9IE5PX0JBQkVMVFJBQ0UyPTFcXG4gbWFrZV93aXRoX2NvcmVzaWdodCA6PSBDT1JFU0lHSFQ9MVxcbiBtYWtlX25vX3NkdFxcdCAgICA6PSBOT19TRFQ9MVxcbiBtYWtlX25vX2xpYnBmbTQgICAgIDo9IE5PX0xJQlBGTTQ9MVxcbi1tYWtlX3dpdGhfZ3RrMiAgICAgIDo9IEdUSzI9MVxcbittYWtlX3dpdGhfZ3RrNCAgICAgIDo9IEdUSzQ9MVxcbiBtYWtlX3JlZmNudF9jaGVjayAgIDo9IEVYVFJBX0NGTEFHUz1cXFwiLURSRUZDTlRfQ0hFQ0tJTkc9MVxcXCJcXG4gbWFrZV90YWdzICAgICAgICAgICA6PSB0YWdzXFxuIG1ha2VfY3Njb3BlICAgICAgICAgOj0gY3Njb3BlXFxuQEAgLTMxOCw3ICszMTgsNyBAQCAkKHJ1bik6XFxuIFxcdCQoY2FsbCB0ZXN0LCRAKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdHJtIC1yZiAkQCAkJFRNUF9ERVNUIHx8IChjYXQgJEAgOyBmYWxzZSlcXG4gXFxuLW1ha2Vfd2l0aF9ndGsyOlxcbittYWtlX3dpdGhfZ3RrNDpcXG4gXFx0JChjYWxsIGNsZWFuKVxcbiBcXHRAVE1QX0RFU1Q9JCQobWt0ZW1wIC1kKTsgXFxcXFxcbiBcXHRjbWQ9XFxcImNkICQoUEVSRikgXFx1MDAyNlxcdTAwMjYgJChNQUtFX0YpICQoJEApICQoUEFSQUxMRUxfT1BUKSAkKE9fT1BUKSBERVNURElSPSQkVE1QX0RFU1RcXFwiOyBcXFxcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmMgYi90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jXFxuaW5kZXggODkyMGUyOTg0MjBhOC4uZmM0NmFjMTUwNDA4OCAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jXFxuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xcbkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fYW5ub3RhdGVfc3ltYm9sKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsXFxuIFxcdFxcdFxcdGd0a19saXN0X3N0b3JlX3NldChzdG9yZSwgXFx1MDAyNml0ZXIsIEFOTl9DT0xfX0xJTkUsIHMsIC0xKTtcXG4gXFx0fVxcbiBcXG4tXFx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTtcXG4rXFx0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTtcXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIG4sIFxcdTAwMjZub3Rlcy1cXHUwMDNlc3JjLVxcdTAwM2Vzb3VyY2UsIGFsLm5vZGUpIHtcXG4gXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2cG9zLVxcdTAwM2VhbC5ub2RlKTtcXG5AQCAtMjExLDM0ICsyMTEsMzEgQEAgc3RhdGljIGludCBzeW1ib2xfX2d0a19hbm5vdGF0ZShzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsIHN0cnVjdCBldnNlbCAqZXZzZWwsXFxuIFxcdFxcdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcXG4gXFx0XFx0c2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpO1xcbiBcXG4tXFx0XFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7XFxuK1xcdFxcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7XFxuIFxcdFxcdGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1cod2luZG93KSwgXFxcInBlcmYgYW5ub3RhdGVcXFwiKTtcXG4gXFxuLVxcdFxcdGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCBcXFwiZGVsZXRlX2V2ZW50XFxcIiwgZ3RrX21haW5fcXVpdCwgTlVMTCk7XFxuLVxcbiBcXHRcXHRwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7XFxuIFxcdFxcdGlmICghcGdjdHgpXFxuIFxcdFxcdFxcdHJldHVybiAtMTtcXG4gXFxuLVxcdFxcdHZib3ggPSBndGtfdmJveF9uZXcoRkFMU0UsIDApO1xcbitcXHRcXHR2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTtcXG4gXFx0XFx0bm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7XFxuIFxcdFxcdHBnY3R4LVxcdTAwM2Vub3RlYm9vayA9IG5vdGVib29rO1xcbiBcXG4tXFx0XFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG5vdGVib29rLCBUUlVFLCBUUlVFLCAwKTtcXG4rXFx0XFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XFxuK1xcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIG5vdGVib29rKTtcXG4gXFxuIFxcdFxcdGluZm9iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTtcXG4tXFx0XFx0aWYgKGluZm9iYXIpIHtcXG4tXFx0XFx0XFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGluZm9iYXIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIEZBTFNFLCBGQUxTRSwgMCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0aWYgKGluZm9iYXIpXFxuK1xcdFxcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9iYXIpO1xcbiBcXG4gXFx0XFx0c3RhdGJhciA9IHBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIoKTtcXG4tXFx0XFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHN0YXRiYXIsIEZBTFNFLCBGQUxTRSwgMCk7XFxuK1xcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpO1xcbiBcXG4tXFx0XFx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTtcXG4rXFx0XFx0Z3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyh3aW5kb3cpLCB2Ym94KTtcXG4gXFx0fVxcbiBcXG4tXFx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7XFxuK1xcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KCk7XFxuIFxcdHRhYl9sYWJlbCA9IGd0a19sYWJlbF9uZXcoc3ltLVxcdTAwM2VuYW1lKTtcXG4gXFxuIFxcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksXFxuQEAgLTI2NywxMiArMjY0LDExIEBAIHZvaWQgcGVyZl9ndGtfX3Nob3dfYW5ub3RhdGlvbnModm9pZClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0d2luZG93ID0gcGdjdHgtXFx1MDAzZW1haW5fd2luZG93O1xcbi1cXHRndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7XFxuIFxcbiBcXHRwZXJmX2d0a19fcmVzaXplX3dpbmRvdyh3aW5kb3cpO1xcbi1cXHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7XFxuK1xcdGd0a193aWRnZXRfc2V0X3Zpc2libGUod2luZG93LCBUUlVFKTtcXG4gXFxuLVxcdGd0a19tYWluKCk7XFxuK1xcdHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKHdpbmRvdyk7XFxuIFxcbiBcXHRwZXJmX2d0a19fZGVhY3RpdmF0ZV9jb250ZXh0KFxcdTAwMjZwZ2N0eCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvYnJvd3Nlci5jIGIvdG9vbHMvcGVyZi91aS9ndGsvYnJvd3Nlci5jXFxuaW5kZXggZDJkYWRmMzg3M2ZiZC4uOTliYjBlYTc2ZDc3NSAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcXG5AQCAtMTYsMjEgKzE2LDUzIEBAIHZvaWQgcGVyZl9ndGtfX3NpZ25hbChpbnQgc2lnKVxcbiB2b2lkIHBlcmZfZ3RrX19yZXNpemVfd2luZG93KEd0a1dpZGdldCAqd2luZG93KVxcbiB7XFxuIFxcdEdka1JlY3RhbmdsZSByZWN0O1xcbi1cXHRHZGtTY3JlZW4gKnNjcmVlbjtcXG4tXFx0aW50IG1vbml0b3I7XFxuK1xcdEdka01vbml0b3IgKm1vbml0b3I7XFxuK1xcdEdka0Rpc3BsYXkgKmRpc3BsYXk7XFxuK1xcdEdMaXN0TW9kZWwgKm1vbml0b3JzO1xcbiBcXHRpbnQgaGVpZ2h0O1xcbiBcXHRpbnQgd2lkdGg7XFxuIFxcbi1cXHRzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4od2luZG93KTtcXG4rXFx0ZGlzcGxheSA9IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkod2luZG93KTtcXG4rXFx0bW9uaXRvcnMgPSBnZGtfZGlzcGxheV9nZXRfbW9uaXRvcnMoZGlzcGxheSk7XFxuK1xcdG1vbml0b3IgPSBnX2xpc3RfbW9kZWxfZ2V0X2l0ZW0obW9uaXRvcnMsIDApO1xcbitcXHRpZiAoIW1vbml0b3IpIHtcXG4rXFx0XFx0Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgODAwLCA2MDApO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4gXFxuLVxcdG1vbml0b3IgPSBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2F0X3dpbmRvdyhzY3JlZW4sIHdpbmRvdy1cXHUwMDNld2luZG93KTtcXG4tXFxuLVxcdGdka19zY3JlZW5fZ2V0X21vbml0b3JfZ2VvbWV0cnkoc2NyZWVuLCBtb25pdG9yLCBcXHUwMDI2cmVjdCk7XFxuK1xcdGdka19tb25pdG9yX2dldF9nZW9tZXRyeShtb25pdG9yLCBcXHUwMDI2cmVjdCk7XFxuK1xcdGdfb2JqZWN0X3VucmVmKG1vbml0b3IpO1xcbiBcXG4gXFx0d2lkdGhcXHQ9IHJlY3Qud2lkdGggKiAzIC8gNDtcXG4gXFx0aGVpZ2h0XFx0PSByZWN0LmhlaWdodCAqIDMgLyA0O1xcbiBcXG4tXFx0Z3RrX3dpbmRvd19yZXNpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTtcXG4rXFx0Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgd2lkdGgsIGhlaWdodCk7XFxuK31cXG4rXFxuK3N0YXRpYyBHTWFpbkxvb3AgKnBlcmZfZ3RrX19tYWluX2xvb3A7XFxuK1xcbit2b2lkIHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCh2b2lkKVxcbit7XFxuK1xcdGlmIChwZXJmX2d0a19fbWFpbl9sb29wKVxcbitcXHRcXHRnX21haW5fbG9vcF9xdWl0KHBlcmZfZ3RrX19tYWluX2xvb3ApO1xcbit9XFxuK1xcbitzdGF0aWMgZ2Jvb2xlYW4gcGVyZl9ndGtfX2Nsb3NlX3JlcXVlc3QoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsXFxuK1xcdFxcdFxcdFxcdFxcdGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXFxuK3tcXG4rXFx0cGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7XFxuK1xcbitcXHRyZXR1cm4gRkFMU0U7XFxuK31cXG4rXFxuK3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpXFxuK3tcXG4rXFx0Z19zaWduYWxfY29ubmVjdCh3aW5kb3csIFxcXCJjbG9zZS1yZXF1ZXN0XFxcIixcXG4rXFx0XFx0XFx0IEdfQ0FMTEJBQ0socGVyZl9ndGtfX2Nsb3NlX3JlcXVlc3QpLCBOVUxMKTtcXG4rXFxuK1xcdHBlcmZfZ3RrX19tYWluX2xvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgRkFMU0UpO1xcbitcXHRnX21haW5fbG9vcF9ydW4ocGVyZl9ndGtfX21haW5fbG9vcCk7XFxuK1xcdGdfY2xlYXJfcG9pbnRlcihcXHUwMDI2cGVyZl9ndGtfX21haW5fbG9vcCwgZ19tYWluX2xvb3BfdW5yZWYpO1xcbiB9XFxuIFxcbiBjb25zdCBjaGFyICpwZXJmX2d0a19fZ2V0X3BlcmNlbnRfY29sb3IoZG91YmxlIHBlcmNlbnQpXFxuQEAgLTQ3LDE4ICs3OSwxNiBAQCBHdGtXaWRnZXQgKnBlcmZfZ3RrX19zZXR1cF9pbmZvX2Jhcih2b2lkKVxcbiB7XFxuIFxcdEd0a1dpZGdldCAqaW5mb19iYXI7XFxuIFxcdEd0a1dpZGdldCAqbGFiZWw7XFxuLVxcdEd0a1dpZGdldCAqY29udGVudF9hcmVhO1xcbiBcXG4gXFx0aW5mb19iYXIgPSBndGtfaW5mb19iYXJfbmV3KCk7XFxuLVxcdGd0a193aWRnZXRfc2V0X25vX3Nob3dfYWxsKGluZm9fYmFyLCBUUlVFKTtcXG4rXFx0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZShpbmZvX2JhciwgRkFMU0UpO1xcbiBcXG4gXFx0bGFiZWwgPSBndGtfbGFiZWxfbmV3KFxcXCJcXFwiKTtcXG4gXFx0Z3RrX3dpZGdldF9zaG93KGxhYmVsKTtcXG4gXFxuLVxcdGNvbnRlbnRfYXJlYSA9IGd0a19pbmZvX2Jhcl9nZXRfY29udGVudF9hcmVhKEdUS19JTkZPX0JBUihpbmZvX2JhcikpO1xcbi1cXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGNvbnRlbnRfYXJlYSksIGxhYmVsKTtcXG4rXFx0Z3RrX2luZm9fYmFyX2FkZF9jaGlsZChHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBsYWJlbCk7XFxuIFxcbi1cXHRndGtfaW5mb19iYXJfYWRkX2J1dHRvbihHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBHVEtfU1RPQ0tfT0ssXFxuK1xcdGd0a19pbmZvX2Jhcl9hZGRfYnV0dG9uKEdUS19JTkZPX0JBUihpbmZvX2JhciksIFxcXCJfT0tcXFwiLFxcbiBcXHRcXHRcXHRcXHRHVEtfUkVTUE9OU0VfT0spO1xcbiBcXHRnX3NpZ25hbF9jb25uZWN0KGluZm9fYmFyLCBcXFwicmVzcG9uc2VcXFwiLFxcbiBcXHRcXHRcXHQgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2hpZGUpLCBOVUxMKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmggYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxcbmluZGV4IGEyYjQ5N2YwM2ZkNmUuLmJlZWE3NWQwMTk1NTYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmhcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxcbkBAIC00MCw2ICs0MCw5IEBAIHZvaWQgcGVyZl9ndGtfX2luaXRfaHBwKHZvaWQpO1xcbiBcXG4gdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpO1xcbiB2b2lkIHBlcmZfZ3RrX19yZXNpemVfd2luZG93KEd0a1dpZGdldCAqd2luZG93KTtcXG4rdm9pZCBwZXJmX2d0a19fcnVuX21haW5fbG9vcChHdGtXaWRnZXQgKndpbmRvdyk7XFxuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKHZvaWQpO1xcbit2b2lkIHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZyh2b2lkKTtcXG4gY29uc3QgY2hhciAqcGVyZl9ndGtfX2dldF9wZXJjZW50X2NvbG9yKGRvdWJsZSBwZXJjZW50KTtcXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmNcXG5pbmRleCBiYWUyMWYzMzZhZTZkLi5mMDA1M2UzYWYwNzc2IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmNcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXFxuQEAgLTM5NSwxMSArMzk1LDkgQEAgc3RhdGljIHZvaWQgcGVyZl9ndGtfX3Nob3dfaGlzdHMoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0Z3RrX3RyZWVfdmlld19zZXRfcnVsZXNfaGludChHVEtfVFJFRV9WSUVXKHZpZXcpLCBUUlVFKTtcXG4tXFxuIFxcdGdfc2lnbmFsX2Nvbm5lY3QodmlldywgXFxcInJvdy1hY3RpdmF0ZWRcXFwiLFxcbiBcXHRcXHRcXHQgR19DQUxMQkFDSyhvbl9yb3dfYWN0aXZhdGVkKSwgTlVMTCk7XFxuLVxcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmlldyk7XFxuK1xcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19hZGRfaGllcmFyY2h5X2VudHJpZXMoc3RydWN0IGhpc3RzICpoaXN0cyxcXG5AQCAtNTgzLDExICs1ODEsOSBAQCBzdGF0aWMgdm9pZCBwZXJmX2d0a19fc2hvd19oaWVyYXJjaHkoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsXFxuIFxcdHBlcmZfZ3RrX19hZGRfaGllcmFyY2h5X2VudHJpZXMoaGlzdHMsIFxcdTAwMjZoaXN0cy1cXHUwMDNlZW50cmllcywgc3RvcmUsXFxuIFxcdFxcdFxcdFxcdFxcdE5VTEwsIFxcdTAwMjZocHAsIG1pbl9wY250KTtcXG4gXFxuLVxcdGd0a190cmVlX3ZpZXdfc2V0X3J1bGVzX2hpbnQoR1RLX1RSRUVfVklFVyh2aWV3KSwgVFJVRSk7XFxuLVxcbiBcXHRnX3NpZ25hbF9jb25uZWN0KHZpZXcsIFxcXCJyb3ctYWN0aXZhdGVkXFxcIixcXG4gXFx0XFx0XFx0IEdfQ0FMTEJBQ0sob25fcm93X2FjdGl2YXRlZCksIE5VTEwpO1xcbi1cXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xcbitcXHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpO1xcbiB9XFxuIFxcbiBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcXG5AQCAtNjA2LDMwICs2MDIsMjkgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXFxuIFxcdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcXG4gXFx0c2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpO1xcbiBcXG4tXFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7XFxuK1xcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7XFxuIFxcbiBcXHRndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksIFxcXCJwZXJmIHJlcG9ydFxcXCIpO1xcbiBcXG4tXFx0Z19zaWduYWxfY29ubmVjdCh3aW5kb3csIFxcXCJkZWxldGVfZXZlbnRcXFwiLCBndGtfbWFpbl9xdWl0LCBOVUxMKTtcXG4tXFxuIFxcdHBnY3R4ID0gcGVyZl9ndGtfX2FjdGl2YXRlX2NvbnRleHQod2luZG93KTtcXG4gXFx0aWYgKCFwZ2N0eClcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbiBcXG4tXFx0dmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7XFxuK1xcdHZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApO1xcbiBcXG4gXFx0bm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7XFxuIFxcbi1cXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApO1xcbitcXHRndGtfd2lkZ2V0X3NldF92ZXhwYW5kKG5vdGVib29rLCBUUlVFKTtcXG4rXFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2spO1xcbiBcXG4gXFx0aW5mb19iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTtcXG4gXFx0aWYgKGluZm9fYmFyKVxcbi1cXHRcXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIsIEZBTFNFLCBGQUxTRSwgMCk7XFxuK1xcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9fYmFyKTtcXG4gXFxuIFxcdHN0YXRiYXIgPSBwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKCk7XFxuLVxcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBzdGF0YmFyLCBGQUxTRSwgRkFMU0UsIDApO1xcbitcXHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBzdGF0YmFyKTtcXG4gXFxuLVxcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7XFxuK1xcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cod2luZG93KSwgdmJveCk7XFxuIFxcbiBcXHRldmxpc3RfX2Zvcl9lYWNoX2VudHJ5KGV2bGlzdCwgcG9zKSB7XFxuIFxcdFxcdHN0cnVjdCBoaXN0cyAqaGlzdHMgPSBldnNlbF9faGlzdHMocG9zKTtcXG5AQCAtNjQ5LDcgKzY0NCw3IEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpO1xcbitcXHRcXHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldygpO1xcbiBcXG4gXFx0XFx0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5KEdUS19TQ1JPTExFRF9XSU5ET1coc2Nyb2xsZWRfd2luZG93KSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0R1RLX1BPTElDWV9BVVRPTUFUSUMsXFxuQEAgLTY2NSwxNSArNjYwLDEyIEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxcbiBcXHRcXHRndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2UoR1RLX05PVEVCT09LKG5vdGVib29rKSwgc2Nyb2xsZWRfd2luZG93LCB0YWJfbGFiZWwpO1xcbiBcXHR9XFxuIFxcbi1cXHRndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7XFxuLVxcbiBcXHRwZXJmX2d0a19fcmVzaXplX3dpbmRvdyh3aW5kb3cpO1xcbi1cXG4tXFx0Z3RrX3dpbmRvd19zZXRfcG9zaXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpLCBHVEtfV0lOX1BPU19DRU5URVIpO1xcbitcXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpbmRvdywgVFJVRSk7XFxuIFxcbiBcXHR1aV9oZWxwbGluZV9fcHVzaChoZWxwKTtcXG4gXFxuLVxcdGd0a19tYWluKCk7XFxuK1xcdHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKHdpbmRvdyk7XFxuIFxcbiBcXHRwZXJmX2d0a19fZGVhY3RpdmF0ZV9jb250ZXh0KFxcdTAwMjZwZ2N0eCk7XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jIGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xcbmluZGV4IGVlYTZmY2RlNTE4YTguLjI4YTRiNDg2MzYwZGUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmNcXG5AQCAtMyw0NyArMyw2MiBAQFxcbiBcXG4gI2luY2x1ZGUgXFxcImd0ay5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiLi4vcHJvZ3Jlc3MuaFxcXCJcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcXHUwMDNlXFxuIFxcbiBzdGF0aWMgR3RrV2lkZ2V0ICpkaWFsb2c7XFxuIHN0YXRpYyBHdGtXaWRnZXQgKnByb2dyZXNzO1xcbiBcXG4rc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19kZXN0cm95ZWQoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsXFxuK1xcdFxcdFxcdFxcdFxcdGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXFxuK3tcXG4rXFx0ZGlhbG9nID0gTlVMTDtcXG4rXFx0cHJvZ3Jlc3MgPSBOVUxMO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX3VwZGF0ZShzdHJ1Y3QgdWlfcHJvZ3Jlc3MgKnApXFxuIHtcXG4gXFx0ZG91YmxlIGZyYWN0aW9uID0gcC1cXHUwMDNldG90YWwgPyAxLjAgKiBwLVxcdTAwM2VjdXJyIC8gcC1cXHUwMDNldG90YWwgOiAwLjA7XFxuIFxcdGNoYXIgYnVmWzEwMjRdO1xcbiBcXG4gXFx0aWYgKGRpYWxvZyA9PSBOVUxMKSB7XFxuLVxcdFxcdEd0a1dpZGdldCAqdmJveCA9IGd0a192Ym94X25ldyhUUlVFLCA1KTtcXG4rXFx0XFx0R3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCA1KTtcXG4gXFx0XFx0R3RrV2lkZ2V0ICpsYWJlbCA9IGd0a19sYWJlbF9uZXcocC1cXHUwMDNldGl0bGUpO1xcbiBcXG4tXFx0XFx0ZGlhbG9nID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7XFxuK1xcdFxcdGRpYWxvZyA9IGd0a193aW5kb3dfbmV3KCk7XFxuIFxcdFxcdHByb2dyZXNzID0gZ3RrX3Byb2dyZXNzX2Jhcl9uZXcoKTtcXG4gXFxuLVxcdFxcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBsYWJlbCwgVFJVRSwgRkFMU0UsIDMpO1xcbi1cXHRcXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgcHJvZ3Jlc3MsIFRSVUUsIFRSVUUsIDMpO1xcbitcXHRcXHRndGtfd2lkZ2V0X3NldF92ZXhwYW5kKGxhYmVsLCBUUlVFKTtcXG4rXFx0XFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbGFiZWwpO1xcbitcXHRcXHRndGtfd2lkZ2V0X3NldF92ZXhwYW5kKHByb2dyZXNzLCBUUlVFKTtcXG4rXFx0XFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgcHJvZ3Jlc3MpO1xcbitcXG4rXFx0XFx0Z3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyhkaWFsb2cpLCB2Ym94KTtcXG4gXFxuLVxcdFxcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZGlhbG9nKSwgdmJveCk7XFxuK1xcdFxcdGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCBcXFwiZGVzdHJveVxcXCIsXFxuK1xcdFxcdFxcdFxcdCBHX0NBTExCQUNLKGd0a191aV9wcm9ncmVzc19fZGVzdHJveWVkKSwgTlVMTCk7XFxuIFxcbiBcXHRcXHRndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyksIFxcXCJwZXJmXFxcIik7XFxuLVxcdFxcdGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1coZGlhbG9nKSwgMzAwLCA4MCk7XFxuLVxcdFxcdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1coZGlhbG9nKSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcXG4rXFx0XFx0Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1coZGlhbG9nKSwgMzAwLCA4MCk7XFxuIFxcbi1cXHRcXHRndGtfd2lkZ2V0X3Nob3dfYWxsKGRpYWxvZyk7XFxuK1xcdFxcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoZGlhbG9nLCBUUlVFKTtcXG4gXFx0fVxcbiBcXG4gXFx0Z3RrX3Byb2dyZXNzX2Jhcl9zZXRfZnJhY3Rpb24oR1RLX1BST0dSRVNTX0JBUihwcm9ncmVzcyksIGZyYWN0aW9uKTtcXG4gXFx0c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgXFxcIiVcXFwiUFJJdTY0XFxcIiAvICVcXFwiUFJJdTY0LCBwLVxcdTAwM2VjdXJyLCBwLVxcdTAwM2V0b3RhbCk7XFxuIFxcdGd0a19wcm9ncmVzc19iYXJfc2V0X3RleHQoR1RLX1BST0dSRVNTX0JBUihwcm9ncmVzcyksIGJ1Zik7XFxuIFxcbi1cXHQvKiB3ZSBkaWRuJ3QgY2FsbCBndGtfbWFpbiB5ZXQsIHNvIGRvIGl0IG1hbnVhbGx5ICovXFxuLVxcdHdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSlcXG4tXFx0XFx0Z3RrX21haW5faXRlcmF0aW9uKCk7XFxuK1xcdC8qIHdlIGRpZG4ndCBzdGFydCBhIG1haW4gbG9vcCB5ZXQsIHNvIHB1bXAgZXZlbnRzIG1hbnVhbGx5ICovXFxuK1xcdHdoaWxlIChnX21haW5fY29udGV4dF9wZW5kaW5nKE5VTEwpKVxcbitcXHRcXHRnX21haW5fY29udGV4dF9pdGVyYXRpb24oTlVMTCwgRkFMU0UpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX2ZpbmlzaCh2b2lkKVxcbiB7XFxuK1xcdGlmIChkaWFsb2cgPT0gTlVMTClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0LyogdGhpcyB3aWxsIGFsc28gZGVzdHJveSBhbGwgb2YgaXRzIGNoaWxkcmVuICovXFxuLVxcdGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpO1xcbitcXHRndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTtcXG4gXFxuIFxcdGRpYWxvZyA9IE5VTEw7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmNcXG5pbmRleCBmNWVlZTRkNjY4NzM4Li45YjQ0ZjM3MTk3NDc3IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmNcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jXFxuQEAgLTEyLDcgKzEyLDcgQEAgaW50IHBlcmZfZ3RrX19pbml0KHZvaWQpXFxuIFxcdGd0a191aV9wcm9ncmVzc19faW5pdCgpO1xcbiBcXHRwZXJmX2d0a19faW5pdF9ocHAoKTtcXG4gXFxuLVxcdHJldHVybiBndGtfaW5pdF9jaGVjayhOVUxMLCBOVUxMKSA/IDAgOiAtMTtcXG4rXFx0cmV0dXJuIGd0a19pbml0X2NoZWNrKCkgPyAwIDogLTE7XFxuIH1cXG4gXFxuIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZClcXG5AQCAtMjAsNSArMjAsNiBAQCB2b2lkIHBlcmZfZ3RrX19leGl0KGJvb2wgd2FpdF9mb3Jfb2sgX19tYXliZV91bnVzZWQpXFxuIFxcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHRwZXJmX2Vycm9yX191bnJlZ2lzdGVyKFxcdTAwMjZwZXJmX2d0a19lb3BzKTtcXG4tXFx0Z3RrX21haW5fcXVpdCgpO1xcbitcXHRwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2coKTtcXG4rXFx0cGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jIGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXFxuaW5kZXggYzQ3ZjVjMzg3ODM4Yy4uNTA5Njg4OGI3YzE2MCAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcXG5AQCAtNCw2ICs0LDcgQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NzdGRsaWIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY3N0cmluZy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGlsZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3phbGxvYy5oXFx1MDAzZVxcbiBcXG4gc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKnBnY3R4O1xcbkBAIC0yOCwyNyArMjksNjAgQEAgaW50IHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKipjdHgpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgR01haW5Mb29wICpwZXJmX2d0a19fZXJyb3JfbG9vcDtcXG4rXFxuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKHZvaWQpXFxuK3tcXG4rXFx0aWYgKHBlcmZfZ3RrX19lcnJvcl9sb29wKVxcbitcXHRcXHRnX21haW5fbG9vcF9xdWl0KHBlcmZfZ3RrX19lcnJvcl9sb29wKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcGVyZl9ndGtfX2RpYWxvZ19yZXNwb25zZShHdGtEaWFsb2cgKmRpYWxvZyxcXG4rXFx0XFx0XFx0XFx0ICAgICAgZ2ludCByZXNwb25zZV9pZCBfX21heWJlX3VudXNlZCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgZ3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcXG4re1xcbitcXHRndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIHtcXG4gXFx0Y2hhciAqbXNnO1xcbiBcXHRHdGtXaWRnZXQgKmRpYWxvZztcXG4rXFx0dmFfbGlzdCBhcmdzX2NvcHk7XFxuIFxcbitcXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XFxuIFxcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxcbi1cXHQgICAgdmFzcHJpbnRmKFxcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXFx1MDAzYyAwKSB7XFxuK1xcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFxcdTAwM2MgMCkge1xcbitcXHRcXHR2YV9lbmQoYXJnc19jb3B5KTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJFcnJvcjpcXFxcblxcXCIpO1xcbiBcXHRcXHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbiBcXHR9XFxuK1xcdHZhX2VuZChhcmdzX2NvcHkpO1xcbiBcXG4gXFx0ZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ld193aXRoX21hcmt1cChHVEtfV0lORE9XKHBnY3R4LVxcdTAwM2VtYWluX3dpbmRvdyksXFxuIFxcdFxcdFxcdFxcdFxcdEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCxcXG4gXFx0XFx0XFx0XFx0XFx0R1RLX01FU1NBR0VfRVJST1IsXFxuIFxcdFxcdFxcdFxcdFxcdEdUS19CVVRUT05TX0NMT1NFLFxcbiBcXHRcXHRcXHRcXHRcXHRcXFwiXFx1MDAzY2JcXHUwMDNlRXJyb3JcXHUwMDNjL2JcXHUwMDNlXFxcXG5cXFxcbiVzXFxcIiwgbXNnKTtcXG4tXFx0Z3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTtcXG4gXFxuLVxcdGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpO1xcbitcXHQvKlxcbitcXHQgKiBcXFwicmVzcG9uc2VcXFwiIG9ubHkgZmlyZXMgd2hlbiBhIGJ1dHRvbiBpcyBjbGlja2VkOyBERVNUUk9ZX1dJVEhfUEFSRU5UXFxuK1xcdCAqIGRlc3Ryb3lzIHRoZSBkaWFsb2cgZGlyZWN0bHkgd2l0aG91dCBpdC4gUXVpdCBmcm9tIFxcXCJkZXN0cm95XFxcIlxcbitcXHQgKiBpbnN0ZWFkLCB3aGljaCBmaXJlcyBlaXRoZXIgd2F5LCBzbyB0aGUgbmVzdGVkIGxvb3AgYmVsb3cgY2FuJ3RcXG4rXFx0ICogb3V0bGl2ZSB0aGUgZGlhbG9nIGFuZCBoYW5nLlxcbitcXHQgKi9cXG4rXFx0cGVyZl9ndGtfX2Vycm9yX2xvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgRkFMU0UpO1xcbitcXHRnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgXFxcInJlc3BvbnNlXFxcIixcXG4rXFx0XFx0XFx0IEdfQ0FMTEJBQ0socGVyZl9ndGtfX2RpYWxvZ19yZXNwb25zZSksIE5VTEwpO1xcbitcXHRnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCBcXFwiZGVzdHJveVxcXCIsXFxuK1xcdFxcdFxcdFxcdCBHX0NBTExCQUNLKGdfbWFpbl9sb29wX3F1aXQpLCBwZXJmX2d0a19fZXJyb3JfbG9vcCk7XFxuK1xcbitcXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGRpYWxvZywgVFJVRSk7XFxuK1xcdGdfbWFpbl9sb29wX3J1bihwZXJmX2d0a19fZXJyb3JfbG9vcCk7XFxuK1xcdGdfY2xlYXJfcG9pbnRlcihcXHUwMDI2cGVyZl9ndGtfX2Vycm9yX2xvb3AsIGdfbWFpbl9sb29wX3VucmVmKTtcXG4rXFxuIFxcdGZyZWUobXNnKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtNTcsMTQgKzkxLDE4IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxcbiBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX2luZm9fYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxcbiB7XFxuIFxcdGNoYXIgKm1zZztcXG4rXFx0dmFfbGlzdCBhcmdzX2NvcHk7XFxuIFxcbitcXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XFxuIFxcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxcbi1cXHQgICAgdmFzcHJpbnRmKFxcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXFx1MDAzYyAwKSB7XFxuK1xcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFxcdTAwM2MgMCkge1xcbitcXHRcXHR2YV9lbmQoYXJnc19jb3B5KTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJXYXJuaW5nOlxcXFxuXFxcIik7XFxuIFxcdFxcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdH1cXG4rXFx0dmFfZW5kKGFyZ3NfY29weSk7XFxuIFxcbiBcXHRndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKHBnY3R4LVxcdTAwM2VtZXNzYWdlX2xhYmVsKSwgbXNnKTtcXG4gXFx0Z3RrX2luZm9fYmFyX3NldF9tZXNzYWdlX3R5cGUoR1RLX0lORk9fQkFSKHBnY3R4LVxcdTAwM2VpbmZvX2JhciksXFxuQEAgLTc4LDE0ICsxMTYsMTggQEAgc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19pbmZvX2Jhcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcXG4gc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19zdGF0dXNiYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIHtcXG4gXFx0Y2hhciAqbXNnLCAqcDtcXG4rXFx0dmFfbGlzdCBhcmdzX2NvcHk7XFxuIFxcbitcXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XFxuIFxcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxcbi1cXHQgICAgdmFzcHJpbnRmKFxcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXFx1MDAzYyAwKSB7XFxuK1xcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFxcdTAwM2MgMCkge1xcbitcXHRcXHR2YV9lbmQoYXJnc19jb3B5KTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJXYXJuaW5nOlxcXFxuXFxcIik7XFxuIFxcdFxcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdH1cXG4rXFx0dmFfZW5kKGFyZ3NfY29weSk7XFxuIFxcbiBcXHRndGtfc3RhdHVzYmFyX3BvcChHVEtfU1RBVFVTQkFSKHBnY3R4LVxcdTAwM2VzdGF0YmFyKSxcXG4gXFx0XFx0XFx0ICBwZ2N0eC1cXHUwMDNlc3RhdGJhcl9jdHhfaWQpO1xcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL3NldHVwLmMgYi90b29scy9wZXJmL3VpL3NldHVwLmNcXG5pbmRleCBmZjgwMDA0N2U2OTdmLi5kODg3MzQ2YzdhNjMyIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xcbisrKyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xcbkBAIC0xNCw3ICsxNCw3IEBAIGludCB1c2VfYnJvd3NlciA9IC0xO1xcbiBcXG4gI2RlZmluZSBQRVJGX0dUS19EU08gXFxcImxpYnBlcmYtZ3RrLnNvXFxcIlxcbiBcXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxcbiBcXG4gc3RhdGljIGludCBzZXR1cF9ndGtfYnJvd3Nlcih2b2lkKVxcbiB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcXG5pbmRleCBkZjcwZTk1YTg0NzA0Li4xMjNiNmQ1ZmNlYTc4IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jXFxuKysrIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcXG5AQCAtMTQ1LDYgKzE0NSwxNyBAQCBzdGF0aWMgaW50IGFubm90YXRlZF9zb3VyY2VfX2FsbG9jX2hpc3RvZ3JhbXMoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYyxcXG4gXFx0cmV0dXJuIHNyYy1cXHUwMDNlaGlzdG9ncmFtcyA/IDAgOiAtMTtcXG4gfVxcbiBcXG4rc3RydWN0IHN5bV9oaXN0X2VudHJ5ICpcXG4rYW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KVxcbit7XFxuK1xcdHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqZW50cnk7XFxuK1xcdGxvbmcga2V5ID0gb2Zmc2V0IFxcdTAwM2NcXHUwMDNjIDE2IHwgZXZzZWwtXFx1MDAzZWNvcmUuaWR4O1xcbitcXG4rXFx0aWYgKCFoYXNobWFwX19maW5kKHNyYy1cXHUwMDNlc2FtcGxlcywga2V5LCBcXHUwMDI2ZW50cnkpKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0cmV0dXJuIGVudHJ5O1xcbit9XFxuK1xcbiB2b2lkIHN5bWJvbF9fYW5ub3RhdGVfemVyb19oaXN0b2dyYW1zKHN0cnVjdCBzeW1ib2wgKnN5bSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMgPSBzeW1ib2xfX2Fubm90YXRpb24oc3ltKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmggYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxcbmluZGV4IGZhMDhkMDliODBmNzYuLjQwMDM4YTM3NzlkNDYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmhcXG4rKysgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxcbkBAIC00MDYsMTYgKzQwNiw4IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHN5bV9oaXN0ICphbm5vdGF0aW9uX19oaXN0b2dyYW0oc3RydWN0IGFubm90YXRpb24gKm5vdGVzLFxcbiBcXHRyZXR1cm4gYW5ub3RhdGVkX3NvdXJjZV9faGlzdG9ncmFtKG5vdGVzLVxcdTAwM2VzcmMsIGV2c2VsKTtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxcbi1hbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpXFxuLXtcXG4tXFx0c3RydWN0IHN5bV9oaXN0X2VudHJ5ICplbnRyeTtcXG4tXFx0bG9uZyBrZXkgPSBvZmZzZXQgXFx1MDAzY1xcdTAwM2MgMTYgfCBldnNlbC1cXHUwMDNlY29yZS5pZHg7XFxuLVxcbi1cXHRpZiAoIWhhc2htYXBfX2ZpbmQoc3JjLVxcdTAwM2VzYW1wbGVzLCBrZXksIFxcdTAwMjZlbnRyeSkpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbi1cXHRyZXR1cm4gZW50cnk7XFxuLX1cXG4rc3RydWN0IHN5bV9oaXN0X2VudHJ5ICpcXG4rYW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KTtcXG4gXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGFubm90YXRpb24gKnN5bWJvbF9fYW5ub3RhdGlvbihzdHJ1Y3Qgc3ltYm9sICpzeW0pXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDA6NTI6MDQuMzYyMDMyNTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjYyOTk5OTUxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBleGNsdXNpdmVseSBtb2RpZmllcyB1c2Vyc3BhY2UgdG9vbHMgKHRvb2xzL3BlcmYgYW5kIHRvb2xzL2J1aWxkKSwgcG9ydGluZyBwZXJmJ3MgR1RLIGludGVyZmFjZSBzdXBwb3J0IGZyb20gR1RLMiB0byBHVEs0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDMwOWM4MjM1ZGVmNmRmNzEzZmE0MDk5OTQxZWU5MjA2YWZjZjFjZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMDA6NTI6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlIGIvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZVxuaW5kZXggOTllYjBlYTA5NTM3NS4uN2ZmZWI3NWEwMWM3OSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcbisrKyBiL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcbkBAIC0xMTMsOCArMTEzLDggQEAgRkVBVFVSRV9URVNUU19FWFRSQSA6PSAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY29tcGlsZS14MzIgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY3BsdXMtZGVtYW5nbGUgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY3hhLWRlbWFuZ2xlICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgZ3RrMiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgZ3RrMi1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgZ3RrNC1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgaGVsbG8gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgYmFiZWx0cmFjZTItY3RmLXdyaXRlciAgICAgICAgIFxcXG4gICAgICAgICAgbGliY2Fwc3RvbmUgICAgICAgICAgICAgICAgICAgIFxcXG5AQCAtMTQzLDYgKzE0Myw3IEBAIGVuZGlmXG4gRkVBVFVSRV9ESVNQTEFZID89ICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGxpYmR3ICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBnbGliYyAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGxpYmVsZiAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBsaWJudW1hICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgbnVtYV9udW1fcG9zc2libGVfY3B1cyBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUgYi90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXG5pbmRleCA3ZDE2NTAxODExNmE1Li4yY2E5OTJmYmI5YWQ1IDEwMDY0NFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxuQEAgLTExLDggKzExLDggQEAgRklMRVM9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICB0ZXN0LWV2ZW50ZmQuYmluICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtZm9ydGlmeS1zb3VyY2UuYmluICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1nbGliYy5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi0gICAgICAgICB0ZXN0LWd0azIuYmluICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLSAgICAgICAgIHRlc3QtZ3RrMi1pbmZvYmFyLmJpbiAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgdGVzdC1ndGs0LmJpbiAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbisgICAgICAgICB0ZXN0LWd0azQtaW5mb2Jhci5iaW4gICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtaGVsbG8uYmluICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1saWJiZmQuYmluICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiBcdCB0ZXN0LWxpYmJmZC10aHJlYWRzYWZlLmJpbiAgICAgIFx0XFxcbkBAIC0yNDAsMTEgKzI0MCwxMSBAQCAkKE9VVFBVVCl0ZXN0LWxpYmNwdXBvd2VyLmJpbjpcbiAkKE9VVFBVVCl0ZXN0LWxpYnRyYWNlZnMuYmluOlxuIFx0ICQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJ0cmFjZWZzIDJcdTAwM2UvZGV2L251bGwpIC1sdHJhY2Vmc1xuIFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46XG4tXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0aystMi4wIDJcdTAwM2UvZGV2L251bGwpIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcbiskKE9VVFBVVCl0ZXN0LWd0azQuYmluOlxuK1x0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4gXG4tJChPVVRQVVQpdGVzdC1ndGsyLWluZm9iYXIuYmluOlxuLVx0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsrLTIuMCAyXHUwMDNlL2Rldi9udWxsKVxuKyQoT1VUUFVUKXRlc3QtZ3RrNC1pbmZvYmFyLmJpbjpcbitcdCQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXHUwMDNlL2Rldi9udWxsKVxuIFxuIGdyZXAtbGlicyAgPSAkKGZpbHRlciAtbCUsJCgxKSlcbiBzdHJpcC1saWJzID0gJChmaWx0ZXItb3V0IC1sJSwkKDEpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuY1xuc2ltaWxhcml0eSBpbmRleCA3NyVcbnJlbmFtZSBmcm9tIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuY1xucmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuY1xuaW5kZXggYjFiNzE2ZGQ1NzMzMC4uNmMxYmNlZTU5NWE5YyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuY1xuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQtaW5mb2Jhci5jXG5AQCAtMyw5ICszLDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NndGsvZ3RrLmhcdTAwM2VcbiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiXG4gXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbitpbnQgbWFpbih2b2lkKVxuIHtcbi1cdGd0a19pbml0KFx1MDAyNmFyZ2MsIFx1MDAyNmFyZ3YpO1xuK1x0Z3RrX2luaXQoKTtcbiBcdGd0a19pbmZvX2Jhcl9uZXcoKTtcbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLmMgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXG5zaW1pbGFyaXR5IGluZGV4IDc2JVxucmVuYW1lIGZyb20gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azIuY1xucmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LmNcbmluZGV4IDJhYWY0YmZjMjA1NTYuLmI5NTIwZTc0MDhiOTkgMTAwNjQ0XG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jXG4rKysgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXG5AQCAtMyw5ICszLDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NndGsvZ3RrLmhcdTAwM2VcbiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiXG4gXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbitpbnQgbWFpbih2b2lkKVxuIHtcbi1cdGd0a19pbml0KFx1MDAyNmFyZ2MsIFx1MDAyNmFyZ3YpO1xuK1x0Z3RrX2luaXQoKTtcbiBcbiAgICAgICAgIHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0IGIvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxuaW5kZXggMjJmODdlYWEzMjc5Ni4uN2FmOWIzZjgxYzA2NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcbisrKyBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcbkBAIC0zNTEsNyArMzUxLDcgQEAgT1BUSU9OU1xuIFx0cmVxdWlyZXMgYSB0dHksIGlmIG9uZSBpcyBub3QgcHJlc2VudCwgYXMgd2hlbiBwaXBpbmcgdG8gb3RoZXJcbiBcdGNvbW1hbmRzLCB0aGUgc3RkaW8gaW50ZXJmYWNlIGlzIHVzZWQuXG4gXG4tLS1ndGs6OiBVc2UgdGhlIEdUSzIgaW50ZXJmYWNlLlxuKy0tZ3RrOjogVXNlIHRoZSBHVEs0IGludGVyZmFjZS5cbiBcbiAtazo6XG4gLS12bWxpbnV4PVx1MDAzY2ZpbGVcdTAwM2U6OlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUgYi90b29scy9wZXJmL01ha2VmaWxlXG5pbmRleCA1YjcxMzgzN2VlZGU3Li41NjAxNDEwNjQ3OWEzIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZVxuKysrIGIvdG9vbHMvcGVyZi9NYWtlZmlsZVxuQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGVhbjpcbiAjIG1ha2UgLUMgdG9vbHMvcGVyZiAtZiB0ZXN0cy9tYWtlXG4gI1xuIGJ1aWxkLXRlc3Q6XG4tXHRAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGsyIG91dFxuK1x0QCQoTUFLRSkgU0hVRj0xIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IHRhcnBrZyBtYWtlX3N0YXRpYyBtYWtlX3dpdGhfZ3RrNCBvdXRcbiBcbiBidWlsZC10ZXN0LXRhcmJhbGw6XG4gXHRAJChNQUtFKSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSBvdXRcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXG5pbmRleCA0ZDU5OTNkYTlmOTQ1Li5lZjc0MTlhNWIwMTM3IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZS5jb25maWdcbisrKyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXG5AQCAtNzc0LDIxICs3NzQsMjYgQEAgaWZuZGVmIE5PX1NMQU5HXG4gICBlbmRpZlxuIGVuZGlmXG4gXG4taWZkZWYgR1RLMlxuLSAgRkxBR1NfR1RLMj0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrKy0yLjAgMlx1MDAzZS9kZXYvbnVsbClcbi0gICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azIpXG4tICBpZm5lcSAoJChmZWF0dXJlLWd0azIpLCAxKVxuLSAgICAkKHdhcm5pbmcgR1RLMiBub3QgZm91bmQsIGRpc2FibGVzIEdUSzIgc3VwcG9ydC4gUGxlYXNlIGluc3RhbGwgZ3RrMi1kZXZlbCBvciBsaWJndGsyLjAtZGV2KVxuLSAgICBOT19HVEsyIDo9IDFcbitpZmRlZiBHVEs0XG4rICBGTEFHU19HVEs0PSQoQ0ZMQUdTKSAkKExERkxBR1MpICQoRVhUTElCUykgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4rICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0KVxuKyAgaWZuZXEgKCQoZmVhdHVyZS1ndGs0KSwgMSlcbisgICAgJCh3YXJuaW5nIEdUSzQgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEs0IHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azQtZGV2ZWwgb3IgbGliZ3RrLTQtZGV2KVxuKyAgICBOT19HVEs0IDo9IDFcbiAgIGVsc2Vcbi0gICAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMi1pbmZvYmFyKVxuLSAgICBpZmVxICgkKGZlYXR1cmUtZ3RrMi1pbmZvYmFyKSwgMSlcbisgICAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrNC1pbmZvYmFyKVxuKyAgICBpZmVxICgkKGZlYXR1cmUtZ3RrNC1pbmZvYmFyKSwgMSlcbiAgICAgICBHVEtfQ0ZMQUdTIDo9IC1ESEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuICAgICBlbmRpZlxuLSAgICBDRkxBR1MgKz0gLURIQVZFX0dUSzJfU1VQUE9SVFxuLSAgICBHVEtfQ0ZMQUdTICs9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBndGsrLTIuMCAyXHUwMDNlL2Rldi9udWxsKVxuLSAgICBHVEtfTElCUyA6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGd0aystMi4wIDJcdTAwM2UvZGV2L251bGwpXG4rICAgIENGTEFHUyArPSAtREhBVkVfR1RLNF9TVVBQT1JUXG4rICAgIEdUS19DRkxBR1MgKz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGd0azQgMlx1MDAzZS9kZXYvbnVsbClcbisgICAgR1RLX0xJQlMgOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4gICAgIEVYVExJQlMgKz0gLWxkbFxuKyAgICAjIGxpYnBlcmYtZ3RrLnNvIGlzIGRsb3BlbigpZWQgYXQgcnVudGltZSBhbmQgY2FsbHMgYmFjayBpbnRvXG4rICAgICMgc3ltYm9scyBkZWZpbmVkIGluIHRoZSBwZXJmIGJpbmFyeSBpdHNlbGYgKGNhbGxjaGFpbl9wYXJhbSxcbisgICAgIyBzeW1ib2xfY29uZiwgZXZzZWxfX25hbWUsIC4uLik6IHBlcmYgbmVlZHMgdG8gZXhwb3J0IHRob3NlXG4rICAgICMgZHluYW1pY2FsbHkgZm9yIHRoZSBwbHVnaW4gdG8gcmVzb2x2ZSB0aGVtLlxuKyAgICBMREZMQUdTICs9IC1yZHluYW1pY1xuICAgZW5kaWZcbiBlbmRpZlxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZiBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuaW5kZXggMjljZmQ0NGM0MjdmMy4uMjQzOGI0MGVhYWVjMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuKysrIGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmXG5AQCAtNDksNyArNDksNyBAQCBpbmNsdWRlIC4uL3NjcmlwdHMvdXRpbGl0aWVzLm1ha1xuICNcbiAjIERlZmluZSBOT19TTEFORyBpZiB5b3UgZG8gbm90IHdhbnQgVFVJIHN1cHBvcnQuXG4gI1xuLSMgRGVmaW5lIEdUSzIgaWYgeW91IHdhbnQgR1RLKyBHVUkgc3VwcG9ydC5cbisjIERlZmluZSBHVEs0IGlmIHlvdSB3YW50IEdUSysgR1VJIHN1cHBvcnQuXG4gI1xuICMgRGVmaW5lIE5PX0RFTUFOR0xFIGlmIHlvdSBkbyBub3Qgd2FudCBDKysgc3ltYm9sIGRlbWFuZ2xpbmcuXG4gI1xuQEAgLTQ3Myw3ICs0NzMsNyBAQCBpZm5lcSAoJChPVVRQVVQpLClcbiAgIENGTEFHUyArPSAtSSQoT1VUUFVUKVxuIGVuZGlmXG4gXG4taWZkZWYgR1RLMlxuK2lmZGVmIEdUSzRcbiAgIEFMTF9QUk9HUkFNUyArPSAkKE9VVFBVVClsaWJwZXJmLWd0ay5zb1xuICAgR1RLX0lOIDo9ICQoT1VUUFVUKWd0ay1pbi5vXG4gZW5kaWZcbkBAIC04MTEsNyArODExLDcgQEAgY2hlY2s6IHByZXBhcmVcbiBcbiAjIyMgSW5zdGFsbGF0aW9uIHJ1bGVzXG4gXG4taWZkZWYgR1RLMlxuK2lmZGVmIEdUSzRcbiBpbnN0YWxsLWd0azogJChPVVRQVVQpbGlicGVyZi1ndGsuc29cbiBcdCQoY2FsbCBRVUlFVF9JTlNUQUxMLCAnR1RLIFVJJykgXFxcbiBcdFx0JChJTlNUQUxMKSAtZCAtbSA3NTUgJyQoREVTVERJUl9TUSkkKGxpYmRpcl9TUSknOyBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcbmluZGV4IDY5Y2I3MmIyMDgyYTYuLjE1MTYzZTA4MWE4Y2UgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuY1xuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcbkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBwZXJmX2Fubm90YXRlIHtcbiBcdGJvb2xcdCAgIHVzZV90dWk7XG4gI2VuZGlmXG4gXHRib29sXHQgICB1c2Vfc3RkaW8sIHVzZV9zdGRpbzI7XG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRib29sXHQgICB1c2VfZ3RrO1xuICNlbmRpZlxuIFx0Ym9vbFx0ICAgc2tpcF9taXNzaW5nO1xuQEAgLTcxMiw3ICs3MTIsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcbiBcdE9QVF9CT09MRUFOKCdxJywgXCJxdWlldFwiLCBcdTAwMjZxdWlldCwgXCJkbyBub3cgc2hvdyBhbnkgd2FybmluZ3Mgb3IgbWVzc2FnZXNcIiksXG4gXHRPUFRfQk9PTEVBTignRCcsIFwiZHVtcC1yYXctdHJhY2VcIiwgXHUwMDI2ZHVtcF90cmFjZSxcbiBcdFx0ICAgIFwiZHVtcCByYXcgdHJhY2UgaW4gQVNDSUlcIiksXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRPUFRfQk9PTEVBTigwLCBcImd0a1wiLCBcdTAwMjZhbm5vdGF0ZS51c2VfZ3RrLCBcIlVzZSB0aGUgR1RLIGludGVyZmFjZVwiKSxcbiAjZW5kaWZcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXG5AQCAtODI4LDcgKzgyOCw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0aWYgKGFubm90YXRlX2NoZWNrX2FyZ3MoKSBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRpZiAoc3ltYm9sX2NvbmYuc2hvd19ucl9zYW1wbGVzIFx1MDAyNlx1MDAyNiBhbm5vdGF0ZS51c2VfZ3RrKSB7XG4gXHRcdHByX2VycihcIi0tc2hvdy1uci1zYW1wbGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gLS1ndGsgbW9kZSBhdCB0aGlzIHRpbWVcXG5cIik7XG4gXHRcdHJldHVybiByZXQ7XG5AQCAtODk4LDcgKzg5OCw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX3R1aSlcbiBcdFx0dXNlX2Jyb3dzZXIgPSAxO1xuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxuIFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX2d0aylcbiBcdFx0dXNlX2Jyb3dzZXIgPSAyO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuaW5kZXggNjBkMWYxNjY2MjllMC4uZDE0Mzg0YzU4NDY2MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jXG5AQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgcmVwb3J0IHtcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXG4gXHRib29sXHRcdFx0dXNlX3R1aTtcbiAjZW5kaWZcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdGJvb2xcdFx0XHR1c2VfZ3RrO1xuICNlbmRpZlxuIFx0Ym9vbFx0XHRcdHVzZV9zdGRpbztcbkBAIC0xMzU5LDggKzEzNTksOCBAQCBpbnQgY21kX3JlcG9ydChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxuIFx0T1BUX0JPT0xFQU4oMCwgXCJ0dWlcIiwgXHUwMDI2cmVwb3J0LnVzZV90dWksIFwiVXNlIHRoZSBUVUkgaW50ZXJmYWNlXCIpLFxuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuLVx0T1BUX0JPT0xFQU4oMCwgXCJndGtcIiwgXHUwMDI2cmVwb3J0LnVzZV9ndGssIFwiVXNlIHRoZSBHVEsyIGludGVyZmFjZVwiKSxcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbitcdE9QVF9CT09MRUFOKDAsIFwiZ3RrXCIsIFx1MDAyNnJlcG9ydC51c2VfZ3RrLCBcIlVzZSB0aGUgR1RLNCBpbnRlcmZhY2VcIiksXG4gI2VuZGlmXG4gXHRPUFRfQk9PTEVBTigwLCBcInN0ZGlvXCIsIFx1MDAyNnJlcG9ydC51c2Vfc3RkaW8sXG4gXHRcdCAgICBcIlVzZSB0aGUgc3RkaW8gaW50ZXJmYWNlXCIpLFxuQEAgLTE3MTAsNyArMTcxMCw3IEBAIGludCBjbWRfcmVwb3J0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcbiBcdGVsc2UgaWYgKHJlcG9ydC51c2VfdHVpKVxuIFx0XHR1c2VfYnJvd3NlciA9IDE7XG4gI2VuZGlmXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRlbHNlIGlmIChyZXBvcnQudXNlX2d0aylcbiBcdFx0dXNlX2Jyb3dzZXIgPSAyO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2ggYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXG5pbmRleCBkMDAzZTdmYWIyYmU4Li5hNjAxYTUyNjBjMTdlIDEwMDc1NVxuLS0tIGEvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxuKysrIGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxuQEAgLTE5OSw4ICsxOTksOCBAQCBmZWRvcmFfcGtnX2ZvcigpIHtcbiBcdCMgb3B0LWluIGZlYXR1cmVzLCB3aGljaCBhIGRlZmF1bHQgYnVpbGQgZG9lcyBub3QgZW5hYmxlOiB0aGUgbGliYmZkXG4gXHQjIGRpc2Fzc2VtYmxlciBmYW1pbHkgKGxpYmJmZCwgbGliYmZkLXRocmVhZHNhZmUsIGxpYmJmZC1saWJlcnR5LFxuIFx0IyBkaXNhc3NlbWJsZXItKiwgY3BsdXMtZGVtYW5nbGUpLCBvbmx5IGxpbmtlZCBvbiBCVUlMRF9OT05ESVNUUk9cbi1cdCMgYnVpbGRzIGFuZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNhcHN0b25lLCBHVEsyLCBMSUJQRVJMIGFuZFxuLVx0IyBMSUJVTldJTkQgc3VwcG9ydCAoaWZkZWYgR1RLMiAvIGlmZGVmIExJQlBFUkwgLyBMSUJVTldJTkQ9MSksXG4rXHQjIGJ1aWxkcyBhbmQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjYXBzdG9uZSwgR1RLNCwgTElCUEVSTCBhbmRcbitcdCMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzQgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLFxuIFx0IyBhbmQgQ29yZVNpZ2h0IChpZmRlZiBDT1JFU0lHSFQpLCBhcmUgZGVsaWJlcmF0ZWx5IG5vdCBtYXBwZWQuXG4gXHQjIGxpYmFpbyBpcyBub3QgbWFwcGVkIGVpdGhlcjogaXRzXG4gXHQjIHRlc3QgdXNlcyB0aGUgUE9TSVggQUlPIEFQSSAoYWlvLmgsIGFpb18qLCAtbHJ0KSwgcHJvdmlkZWQgYnlcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3Rlc3RzL21ha2UgYi90b29scy9wZXJmL3Rlc3RzL21ha2VcbmluZGV4IGQyYzJmNTI2ZTFkYjAuLjIwMmFiNTUwMTkxNjEgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3Rlc3RzL21ha2VcbisrKyBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZVxuQEAgLTk1LDcgKzk1LDcgQEAgbWFrZV9ub19iYWJlbHRyYWNlMiA6PSBOT19CQUJFTFRSQUNFMj0xXG4gbWFrZV93aXRoX2NvcmVzaWdodCA6PSBDT1JFU0lHSFQ9MVxuIG1ha2Vfbm9fc2R0XHQgICAgOj0gTk9fU0RUPTFcbiBtYWtlX25vX2xpYnBmbTQgICAgIDo9IE5PX0xJQlBGTTQ9MVxuLW1ha2Vfd2l0aF9ndGsyICAgICAgOj0gR1RLMj0xXG4rbWFrZV93aXRoX2d0azQgICAgICA6PSBHVEs0PTFcbiBtYWtlX3JlZmNudF9jaGVjayAgIDo9IEVYVFJBX0NGTEFHUz1cIi1EUkVGQ05UX0NIRUNLSU5HPTFcIlxuIG1ha2VfdGFncyAgICAgICAgICAgOj0gdGFnc1xuIG1ha2VfY3Njb3BlICAgICAgICAgOj0gY3Njb3BlXG5AQCAtMzE4LDcgKzMxOCw3IEBAICQocnVuKTpcbiBcdCQoY2FsbCB0ZXN0LCRAKSBcdTAwMjZcdTAwMjYgXFxcbiBcdHJtIC1yZiAkQCAkJFRNUF9ERVNUIHx8IChjYXQgJEAgOyBmYWxzZSlcbiBcbi1tYWtlX3dpdGhfZ3RrMjpcbittYWtlX3dpdGhfZ3RrNDpcbiBcdCQoY2FsbCBjbGVhbilcbiBcdEBUTVBfREVTVD0kJChta3RlbXAgLWQpOyBcXFxuIFx0Y21kPVwiY2QgJChQRVJGKSBcdTAwMjZcdTAwMjYgJChNQUtFX0YpICQoJEApICQoUEFSQUxMRUxfT1BUKSAkKE9fT1BUKSBERVNURElSPSQkVE1QX0RFU1RcIjsgXFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xuaW5kZXggODkyMGUyOTg0MjBhOC4uZmM0NmFjMTUwNDA4OCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmNcbkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fYW5ub3RhdGVfc3ltYm9sKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsXG4gXHRcdFx0Z3RrX2xpc3Rfc3RvcmVfc2V0KHN0b3JlLCBcdTAwMjZpdGVyLCBBTk5fQ09MX19MSU5FLCBzLCAtMSk7XG4gXHR9XG4gXG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xuK1x0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTtcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIG4sIFx1MDAyNm5vdGVzLVx1MDAzZXNyYy1cdTAwM2Vzb3VyY2UsIGFsLm5vZGUpIHtcbiBcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZwb3MtXHUwMDNlYWwubm9kZSk7XG5AQCAtMjExLDM0ICsyMTEsMzEgQEAgc3RhdGljIGludCBzeW1ib2xfX2d0a19hbm5vdGF0ZShzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsIHN0cnVjdCBldnNlbCAqZXZzZWwsXG4gXHRcdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcbiBcdFx0c2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpO1xuIFxuLVx0XHR3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcbitcdFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcdFx0Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyh3aW5kb3cpLCBcInBlcmYgYW5ub3RhdGVcIik7XG4gXG4tXHRcdGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCBcImRlbGV0ZV9ldmVudFwiLCBndGtfbWFpbl9xdWl0LCBOVUxMKTtcbi1cbiBcdFx0cGdjdHggPSBwZXJmX2d0a19fYWN0aXZhdGVfY29udGV4dCh3aW5kb3cpO1xuIFx0XHRpZiAoIXBnY3R4KVxuIFx0XHRcdHJldHVybiAtMTtcbiBcbi1cdFx0dmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7XG4rXHRcdHZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApO1xuIFx0XHRub3RlYm9vayA9IGd0a19ub3RlYm9va19uZXcoKTtcbiBcdFx0cGdjdHgtXHUwMDNlbm90ZWJvb2sgPSBub3RlYm9vaztcbiBcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG5vdGVib29rLCBUUlVFLCBUUlVFLCAwKTtcbitcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4rXHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIG5vdGVib29rKTtcbiBcbiBcdFx0aW5mb2JhciA9IHBlcmZfZ3RrX19zZXR1cF9pbmZvX2JhcigpO1xuLVx0XHRpZiAoaW5mb2Jhcikge1xuLVx0XHRcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBpbmZvYmFyLFxuLVx0XHRcdFx0XHQgICBGQUxTRSwgRkFMU0UsIDApO1xuLVx0XHR9XG4rXHRcdGlmIChpbmZvYmFyKVxuK1x0XHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9iYXIpO1xuIFxuIFx0XHRzdGF0YmFyID0gcGVyZl9ndGtfX3NldHVwX3N0YXR1c2JhcigpO1xuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTtcbitcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhcik7XG4gXG4tXHRcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7XG4rXHRcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cod2luZG93KSwgdmJveCk7XG4gXHR9XG4gXG4tXHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBOVUxMKTtcbitcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KCk7XG4gXHR0YWJfbGFiZWwgPSBndGtfbGFiZWxfbmV3KHN5bS1cdTAwM2VuYW1lKTtcbiBcbiBcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksXG5AQCAtMjY3LDEyICsyNjQsMTEgQEAgdm9pZCBwZXJmX2d0a19fc2hvd19hbm5vdGF0aW9ucyh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR3aW5kb3cgPSBwZ2N0eC1cdTAwM2VtYWluX3dpbmRvdztcbi1cdGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7XG4tXHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7XG4rXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpbmRvdywgVFJVRSk7XG4gXG4tXHRndGtfbWFpbigpO1xuK1x0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXHUwMDI2cGdjdHgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmMgYi90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcbmluZGV4IGQyZGFkZjM4NzNmYmQuLjk5YmIwZWE3NmQ3NzUgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xuQEAgLTE2LDIxICsxNiw1MyBAQCB2b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZylcbiB2b2lkIHBlcmZfZ3RrX19yZXNpemVfd2luZG93KEd0a1dpZGdldCAqd2luZG93KVxuIHtcbiBcdEdka1JlY3RhbmdsZSByZWN0O1xuLVx0R2RrU2NyZWVuICpzY3JlZW47XG4tXHRpbnQgbW9uaXRvcjtcbitcdEdka01vbml0b3IgKm1vbml0b3I7XG4rXHRHZGtEaXNwbGF5ICpkaXNwbGF5O1xuK1x0R0xpc3RNb2RlbCAqbW9uaXRvcnM7XG4gXHRpbnQgaGVpZ2h0O1xuIFx0aW50IHdpZHRoO1xuIFxuLVx0c2NyZWVuID0gZ3RrX3dpZGdldF9nZXRfc2NyZWVuKHdpbmRvdyk7XG4rXHRkaXNwbGF5ID0gZ3RrX3dpZGdldF9nZXRfZGlzcGxheSh3aW5kb3cpO1xuK1x0bW9uaXRvcnMgPSBnZGtfZGlzcGxheV9nZXRfbW9uaXRvcnMoZGlzcGxheSk7XG4rXHRtb25pdG9yID0gZ19saXN0X21vZGVsX2dldF9pdGVtKG1vbml0b3JzLCAwKTtcbitcdGlmICghbW9uaXRvcikge1xuK1x0XHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCA4MDAsIDYwMCk7XG4rXHRcdHJldHVybjtcbitcdH1cbiBcbi1cdG1vbml0b3IgPSBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2F0X3dpbmRvdyhzY3JlZW4sIHdpbmRvdy1cdTAwM2V3aW5kb3cpO1xuLVxuLVx0Z2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRyeShzY3JlZW4sIG1vbml0b3IsIFx1MDAyNnJlY3QpO1xuK1x0Z2RrX21vbml0b3JfZ2V0X2dlb21ldHJ5KG1vbml0b3IsIFx1MDAyNnJlY3QpO1xuK1x0Z19vYmplY3RfdW5yZWYobW9uaXRvcik7XG4gXG4gXHR3aWR0aFx0PSByZWN0LndpZHRoICogMyAvIDQ7XG4gXHRoZWlnaHRcdD0gcmVjdC5oZWlnaHQgKiAzIC8gNDtcbiBcbi1cdGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1cod2luZG93KSwgd2lkdGgsIGhlaWdodCk7XG4rXHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTtcbit9XG4rXG4rc3RhdGljIEdNYWluTG9vcCAqcGVyZl9ndGtfX21haW5fbG9vcDtcbitcbit2b2lkIHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCh2b2lkKVxuK3tcbitcdGlmIChwZXJmX2d0a19fbWFpbl9sb29wKVxuK1x0XHRnX21haW5fbG9vcF9xdWl0KHBlcmZfZ3RrX19tYWluX2xvb3ApO1xuK31cbitcbitzdGF0aWMgZ2Jvb2xlYW4gcGVyZl9ndGtfX2Nsb3NlX3JlcXVlc3QoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsXG4rXHRcdFx0XHRcdGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXG4re1xuK1x0cGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7XG4rXG4rXHRyZXR1cm4gRkFMU0U7XG4rfVxuK1xuK3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpXG4re1xuK1x0Z19zaWduYWxfY29ubmVjdCh3aW5kb3csIFwiY2xvc2UtcmVxdWVzdFwiLFxuK1x0XHRcdCBHX0NBTExCQUNLKHBlcmZfZ3RrX19jbG9zZV9yZXF1ZXN0KSwgTlVMTCk7XG4rXG4rXHRwZXJmX2d0a19fbWFpbl9sb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIEZBTFNFKTtcbitcdGdfbWFpbl9sb29wX3J1bihwZXJmX2d0a19fbWFpbl9sb29wKTtcbitcdGdfY2xlYXJfcG9pbnRlcihcdTAwMjZwZXJmX2d0a19fbWFpbl9sb29wLCBnX21haW5fbG9vcF91bnJlZik7XG4gfVxuIFxuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudClcbkBAIC00NywxOCArNzksMTYgQEAgR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZClcbiB7XG4gXHRHdGtXaWRnZXQgKmluZm9fYmFyO1xuIFx0R3RrV2lkZ2V0ICpsYWJlbDtcbi1cdEd0a1dpZGdldCAqY29udGVudF9hcmVhO1xuIFxuIFx0aW5mb19iYXIgPSBndGtfaW5mb19iYXJfbmV3KCk7XG4tXHRndGtfd2lkZ2V0X3NldF9ub19zaG93X2FsbChpbmZvX2JhciwgVFJVRSk7XG4rXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGluZm9fYmFyLCBGQUxTRSk7XG4gXG4gXHRsYWJlbCA9IGd0a19sYWJlbF9uZXcoXCJcIik7XG4gXHRndGtfd2lkZ2V0X3Nob3cobGFiZWwpO1xuIFxuLVx0Y29udGVudF9hcmVhID0gZ3RrX2luZm9fYmFyX2dldF9jb250ZW50X2FyZWEoR1RLX0lORk9fQkFSKGluZm9fYmFyKSk7XG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGNvbnRlbnRfYXJlYSksIGxhYmVsKTtcbitcdGd0a19pbmZvX2Jhcl9hZGRfY2hpbGQoR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgbGFiZWwpO1xuIFxuLVx0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgR1RLX1NUT0NLX09LLFxuK1x0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgXCJfT0tcIixcbiBcdFx0XHRcdEdUS19SRVNQT05TRV9PSyk7XG4gXHRnX3NpZ25hbF9jb25uZWN0KGluZm9fYmFyLCBcInJlc3BvbnNlXCIsXG4gXHRcdFx0IEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9oaWRlKSwgTlVMTCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmggYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxuaW5kZXggYTJiNDk3ZjAzZmQ2ZS4uYmVlYTc1ZDAxOTU1NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxuQEAgLTQwLDYgKzQwLDkgQEAgdm9pZCBwZXJmX2d0a19faW5pdF9ocHAodm9pZCk7XG4gXG4gdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpO1xuIHZvaWQgcGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3coR3RrV2lkZ2V0ICp3aW5kb3cpO1xuK3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpO1xuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKHZvaWQpO1xuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKHZvaWQpO1xuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudCk7XG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmMgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXG5pbmRleCBiYWUyMWYzMzZhZTZkLi5mMDA1M2UzYWYwNzc2IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuY1xuQEAgLTM5NSwxMSArMzk1LDkgQEAgc3RhdGljIHZvaWQgcGVyZl9ndGtfX3Nob3dfaGlzdHMoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGd0a190cmVlX3ZpZXdfc2V0X3J1bGVzX2hpbnQoR1RLX1RSRUVfVklFVyh2aWV3KSwgVFJVRSk7XG4tXG4gXHRnX3NpZ25hbF9jb25uZWN0KHZpZXcsIFwicm93LWFjdGl2YXRlZFwiLFxuIFx0XHRcdCBHX0NBTExCQUNLKG9uX3Jvd19hY3RpdmF0ZWQpLCBOVUxMKTtcbi1cdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmlldyk7XG4rXHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwZXJmX2d0a19fYWRkX2hpZXJhcmNoeV9lbnRyaWVzKHN0cnVjdCBoaXN0cyAqaGlzdHMsXG5AQCAtNTgzLDExICs1ODEsOSBAQCBzdGF0aWMgdm9pZCBwZXJmX2d0a19fc2hvd19oaWVyYXJjaHkoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsXG4gXHRwZXJmX2d0a19fYWRkX2hpZXJhcmNoeV9lbnRyaWVzKGhpc3RzLCBcdTAwMjZoaXN0cy1cdTAwM2VlbnRyaWVzLCBzdG9yZSxcbiBcdFx0XHRcdFx0TlVMTCwgXHUwMDI2aHBwLCBtaW5fcGNudCk7XG4gXG4tXHRndGtfdHJlZV92aWV3X3NldF9ydWxlc19oaW50KEdUS19UUkVFX1ZJRVcodmlldyksIFRSVUUpO1xuLVxuIFx0Z19zaWduYWxfY29ubmVjdCh2aWV3LCBcInJvdy1hY3RpdmF0ZWRcIixcbiBcdFx0XHQgR19DQUxMQkFDSyhvbl9yb3dfYWN0aXZhdGVkKSwgTlVMTCk7XG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xuK1x0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTtcbiB9XG4gXG4gaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXG5AQCAtNjA2LDMwICs2MDIsMjkgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXG4gXHRzaWduYWwoU0lHUVVJVCwgcGVyZl9ndGtfX3NpZ25hbCk7XG4gXHRzaWduYWwoU0lHVEVSTSwgcGVyZl9ndGtfX3NpZ25hbCk7XG4gXG4tXHR3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcbitcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7XG4gXG4gXHRndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksIFwicGVyZiByZXBvcnRcIik7XG4gXG4tXHRnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgXCJkZWxldGVfZXZlbnRcIiwgZ3RrX21haW5fcXVpdCwgTlVMTCk7XG4tXG4gXHRwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7XG4gXHRpZiAoIXBnY3R4KVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4tXHR2Ym94ID0gZ3RrX3Zib3hfbmV3KEZBTFNFLCAwKTtcbitcdHZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApO1xuIFxuIFx0bm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7XG4gXG4tXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApO1xuK1x0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4rXHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBub3RlYm9vayk7XG4gXG4gXHRpbmZvX2JhciA9IHBlcmZfZ3RrX19zZXR1cF9pbmZvX2JhcigpO1xuIFx0aWYgKGluZm9fYmFyKVxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIsIEZBTFNFLCBGQUxTRSwgMCk7XG4rXHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9fYmFyKTtcbiBcbiBcdHN0YXRiYXIgPSBwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKCk7XG4tXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTtcbitcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpO1xuIFxuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTtcbitcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cod2luZG93KSwgdmJveCk7XG4gXG4gXHRldmxpc3RfX2Zvcl9lYWNoX2VudHJ5KGV2bGlzdCwgcG9zKSB7XG4gXHRcdHN0cnVjdCBoaXN0cyAqaGlzdHMgPSBldnNlbF9faGlzdHMocG9zKTtcbkBAIC02NDksNyArNjQ0LDcgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXG4gXHRcdFx0fVxuIFx0XHR9XG4gXG4tXHRcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpO1xuK1x0XHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldygpO1xuIFxuIFx0XHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZF93aW5kb3cpLFxuIFx0XHRcdFx0XHRcdFx0R1RLX1BPTElDWV9BVVRPTUFUSUMsXG5AQCAtNjY1LDE1ICs2NjAsMTIgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXG4gXHRcdGd0a19ub3RlYm9va19hcHBlbmRfcGFnZShHVEtfTk9URUJPT0sobm90ZWJvb2spLCBzY3JvbGxlZF93aW5kb3csIHRhYl9sYWJlbCk7XG4gXHR9XG4gXG4tXHRndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7XG4tXG4gXHRwZXJmX2d0a19fcmVzaXplX3dpbmRvdyh3aW5kb3cpO1xuLVxuLVx0Z3RrX3dpbmRvd19zZXRfcG9zaXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpLCBHVEtfV0lOX1BPU19DRU5URVIpO1xuK1x0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZSh3aW5kb3csIFRSVUUpO1xuIFxuIFx0dWlfaGVscGxpbmVfX3B1c2goaGVscCk7XG4gXG4tXHRndGtfbWFpbigpO1xuK1x0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXHUwMDI2cGdjdHgpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMgYi90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jXG5pbmRleCBlZWE2ZmNkZTUxOGE4Li4yOGE0YjQ4NjM2MGRlIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuQEAgLTMsNDcgKzMsNjIgQEBcbiBcbiAjaW5jbHVkZSBcImd0ay5oXCJcbiAjaW5jbHVkZSBcIi4uL3Byb2dyZXNzLmhcIlxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcdTAwM2VcbiBcbiBzdGF0aWMgR3RrV2lkZ2V0ICpkaWFsb2c7XG4gc3RhdGljIEd0a1dpZGdldCAqcHJvZ3Jlc3M7XG4gXG4rc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19kZXN0cm95ZWQoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsXG4rXHRcdFx0XHRcdGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXG4re1xuK1x0ZGlhbG9nID0gTlVMTDtcbitcdHByb2dyZXNzID0gTlVMTDtcbit9XG4rXG4gc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX191cGRhdGUoc3RydWN0IHVpX3Byb2dyZXNzICpwKVxuIHtcbiBcdGRvdWJsZSBmcmFjdGlvbiA9IHAtXHUwMDNldG90YWwgPyAxLjAgKiBwLVx1MDAzZWN1cnIgLyBwLVx1MDAzZXRvdGFsIDogMC4wO1xuIFx0Y2hhciBidWZbMTAyNF07XG4gXG4gXHRpZiAoZGlhbG9nID09IE5VTEwpIHtcbi1cdFx0R3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX3Zib3hfbmV3KFRSVUUsIDUpO1xuK1x0XHRHdGtXaWRnZXQgKnZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDUpO1xuIFx0XHRHdGtXaWRnZXQgKmxhYmVsID0gZ3RrX2xhYmVsX25ldyhwLVx1MDAzZXRpdGxlKTtcbiBcbi1cdFx0ZGlhbG9nID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7XG4rXHRcdGRpYWxvZyA9IGd0a193aW5kb3dfbmV3KCk7XG4gXHRcdHByb2dyZXNzID0gZ3RrX3Byb2dyZXNzX2Jhcl9uZXcoKTtcbiBcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGxhYmVsLCBUUlVFLCBGQUxTRSwgMyk7XG4tXHRcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBwcm9ncmVzcywgVFJVRSwgVFJVRSwgMyk7XG4rXHRcdGd0a193aWRnZXRfc2V0X3ZleHBhbmQobGFiZWwsIFRSVUUpO1xuK1x0XHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBsYWJlbCk7XG4rXHRcdGd0a193aWRnZXRfc2V0X3ZleHBhbmQocHJvZ3Jlc3MsIFRSVUUpO1xuK1x0XHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBwcm9ncmVzcyk7XG4rXG4rXHRcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1coZGlhbG9nKSwgdmJveCk7XG4gXG4tXHRcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZGlhbG9nKSwgdmJveCk7XG4rXHRcdGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCBcImRlc3Ryb3lcIixcbitcdFx0XHRcdCBHX0NBTExCQUNLKGd0a191aV9wcm9ncmVzc19fZGVzdHJveWVkKSwgTlVMTCk7XG4gXG4gXHRcdGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1coZGlhbG9nKSwgXCJwZXJmXCIpO1xuLVx0XHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApO1xuLVx0XHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKGRpYWxvZyksIEdUS19XSU5fUE9TX0NFTlRFUik7XG4rXHRcdGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApO1xuIFxuLVx0XHRndGtfd2lkZ2V0X3Nob3dfYWxsKGRpYWxvZyk7XG4rXHRcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoZGlhbG9nLCBUUlVFKTtcbiBcdH1cbiBcbiBcdGd0a19wcm9ncmVzc19iYXJfc2V0X2ZyYWN0aW9uKEdUS19QUk9HUkVTU19CQVIocHJvZ3Jlc3MpLCBmcmFjdGlvbik7XG4gXHRzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBcIiVcIlBSSXU2NFwiIC8gJVwiUFJJdTY0LCBwLVx1MDAzZWN1cnIsIHAtXHUwMDNldG90YWwpO1xuIFx0Z3RrX3Byb2dyZXNzX2Jhcl9zZXRfdGV4dChHVEtfUFJPR1JFU1NfQkFSKHByb2dyZXNzKSwgYnVmKTtcbiBcbi1cdC8qIHdlIGRpZG4ndCBjYWxsIGd0a19tYWluIHlldCwgc28gZG8gaXQgbWFudWFsbHkgKi9cbi1cdHdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSlcbi1cdFx0Z3RrX21haW5faXRlcmF0aW9uKCk7XG4rXHQvKiB3ZSBkaWRuJ3Qgc3RhcnQgYSBtYWluIGxvb3AgeWV0LCBzbyBwdW1wIGV2ZW50cyBtYW51YWxseSAqL1xuK1x0d2hpbGUgKGdfbWFpbl9jb250ZXh0X3BlbmRpbmcoTlVMTCkpXG4rXHRcdGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihOVUxMLCBGQUxTRSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fZmluaXNoKHZvaWQpXG4ge1xuK1x0aWYgKGRpYWxvZyA9PSBOVUxMKVxuK1x0XHRyZXR1cm47XG4rXG4gXHQvKiB0aGlzIHdpbGwgYWxzbyBkZXN0cm95IGFsbCBvZiBpdHMgY2hpbGRyZW4gKi9cbi1cdGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpO1xuK1x0Z3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7XG4gXG4gXHRkaWFsb2cgPSBOVUxMO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jIGIvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xuaW5kZXggZjVlZWU0ZDY2ODczOC4uOWI0NGYzNzE5NzQ3NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmNcbkBAIC0xMiw3ICsxMiw3IEBAIGludCBwZXJmX2d0a19faW5pdCh2b2lkKVxuIFx0Z3RrX3VpX3Byb2dyZXNzX19pbml0KCk7XG4gXHRwZXJmX2d0a19faW5pdF9ocHAoKTtcbiBcbi1cdHJldHVybiBndGtfaW5pdF9jaGVjayhOVUxMLCBOVUxMKSA/IDAgOiAtMTtcbitcdHJldHVybiBndGtfaW5pdF9jaGVjaygpID8gMCA6IC0xO1xuIH1cbiBcbiB2b2lkIHBlcmZfZ3RrX19leGl0KGJvb2wgd2FpdF9mb3Jfb2sgX19tYXliZV91bnVzZWQpXG5AQCAtMjAsNSArMjAsNiBAQCB2b2lkIHBlcmZfZ3RrX19leGl0KGJvb2wgd2FpdF9mb3Jfb2sgX19tYXliZV91bnVzZWQpXG4gXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkpXG4gXHRcdHJldHVybjtcbiBcdHBlcmZfZXJyb3JfX3VucmVnaXN0ZXIoXHUwMDI2cGVyZl9ndGtfZW9wcyk7XG4tXHRndGtfbWFpbl9xdWl0KCk7XG4rXHRwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2coKTtcbitcdHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmMgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcbmluZGV4IGM0N2Y1YzM4NzgzOGMuLjUwOTY4ODhiN2MxNjAgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuQEAgLTQsNiArNCw3IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdHJpbmcuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC96YWxsb2MuaFx1MDAzZVxuIFxuIHN0cnVjdCBwZXJmX2d0a19jb250ZXh0ICpwZ2N0eDtcbkBAIC0yOCwyNyArMjksNjAgQEAgaW50IHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKipjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIEdNYWluTG9vcCAqcGVyZl9ndGtfX2Vycm9yX2xvb3A7XG4rXG4rdm9pZCBwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2codm9pZClcbit7XG4rXHRpZiAocGVyZl9ndGtfX2Vycm9yX2xvb3ApXG4rXHRcdGdfbWFpbl9sb29wX3F1aXQocGVyZl9ndGtfX2Vycm9yX2xvb3ApO1xuK31cbitcbitzdGF0aWMgdm9pZCBwZXJmX2d0a19fZGlhbG9nX3Jlc3BvbnNlKEd0a0RpYWxvZyAqZGlhbG9nLFxuK1x0XHRcdFx0ICAgICAgZ2ludCByZXNwb25zZV9pZCBfX21heWJlX3VudXNlZCxcbitcdFx0XHRcdCAgICAgIGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXG4re1xuK1x0Z3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHtcbiBcdGNoYXIgKm1zZztcbiBcdEd0a1dpZGdldCAqZGlhbG9nO1xuK1x0dmFfbGlzdCBhcmdzX2NvcHk7XG4gXG4rXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XG4gXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkgfHxcbi1cdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3MpIFx1MDAzYyAwKSB7XG4rXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4rXHRcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJFcnJvcjpcXG5cIik7XG4gXHRcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuIFx0XHRyZXR1cm4gLTE7XG4gXHR9XG4rXHR2YV9lbmQoYXJnc19jb3B5KTtcbiBcbiBcdGRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXdfd2l0aF9tYXJrdXAoR1RLX1dJTkRPVyhwZ2N0eC1cdTAwM2VtYWluX3dpbmRvdyksXG4gXHRcdFx0XHRcdEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCxcbiBcdFx0XHRcdFx0R1RLX01FU1NBR0VfRVJST1IsXG4gXHRcdFx0XHRcdEdUS19CVVRUT05TX0NMT1NFLFxuIFx0XHRcdFx0XHRcIlx1MDAzY2JcdTAwM2VFcnJvclx1MDAzYy9iXHUwMDNlXFxuXFxuJXNcIiwgbXNnKTtcbi1cdGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSk7XG4gXG4tXHRndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTtcbitcdC8qXG4rXHQgKiBcInJlc3BvbnNlXCIgb25seSBmaXJlcyB3aGVuIGEgYnV0dG9uIGlzIGNsaWNrZWQ7IERFU1RST1lfV0lUSF9QQVJFTlRcbitcdCAqIGRlc3Ryb3lzIHRoZSBkaWFsb2cgZGlyZWN0bHkgd2l0aG91dCBpdC4gUXVpdCBmcm9tIFwiZGVzdHJveVwiXG4rXHQgKiBpbnN0ZWFkLCB3aGljaCBmaXJlcyBlaXRoZXIgd2F5LCBzbyB0aGUgbmVzdGVkIGxvb3AgYmVsb3cgY2FuJ3RcbitcdCAqIG91dGxpdmUgdGhlIGRpYWxvZyBhbmQgaGFuZy5cbitcdCAqL1xuK1x0cGVyZl9ndGtfX2Vycm9yX2xvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgRkFMU0UpO1xuK1x0Z19zaWduYWxfY29ubmVjdChkaWFsb2csIFwicmVzcG9uc2VcIixcbitcdFx0XHQgR19DQUxMQkFDSyhwZXJmX2d0a19fZGlhbG9nX3Jlc3BvbnNlKSwgTlVMTCk7XG4rXHRnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCBcImRlc3Ryb3lcIixcbitcdFx0XHRcdCBHX0NBTExCQUNLKGdfbWFpbl9sb29wX3F1aXQpLCBwZXJmX2d0a19fZXJyb3JfbG9vcCk7XG4rXG4rXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGRpYWxvZywgVFJVRSk7XG4rXHRnX21haW5fbG9vcF9ydW4ocGVyZl9ndGtfX2Vycm9yX2xvb3ApO1xuK1x0Z19jbGVhcl9wb2ludGVyKFx1MDAyNnBlcmZfZ3RrX19lcnJvcl9sb29wLCBnX21haW5fbG9vcF91bnJlZik7XG4rXG4gXHRmcmVlKG1zZyk7XG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtNTcsMTQgKzkxLDE4IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuK1x0dmFfbGlzdCBhcmdzX2NvcHk7XG4gXG4rXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XG4gXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkgfHxcbi1cdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3MpIFx1MDAzYyAwKSB7XG4rXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4rXHRcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJXYXJuaW5nOlxcblwiKTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbitcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0Z3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChwZ2N0eC1cdTAwM2VtZXNzYWdlX2xhYmVsKSwgbXNnKTtcbiBcdGd0a19pbmZvX2Jhcl9zZXRfbWVzc2FnZV90eXBlKEdUS19JTkZPX0JBUihwZ2N0eC1cdTAwM2VpbmZvX2JhciksXG5AQCAtNzgsMTQgKzExNiwxOCBAQCBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX2luZm9fYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfc3RhdHVzYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHtcbiBcdGNoYXIgKm1zZywgKnA7XG4rXHR2YV9saXN0IGFyZ3NfY29weTtcbiBcbitcdHZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTtcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxuLVx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbitcdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3NfY29weSkgXHUwMDNjIDApIHtcbitcdFx0dmFfZW5kKGFyZ3NfY29weSk7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIldhcm5pbmc6XFxuXCIpO1xuIFx0XHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuK1x0dmFfZW5kKGFyZ3NfY29weSk7XG4gXG4gXHRndGtfc3RhdHVzYmFyX3BvcChHVEtfU1RBVFVTQkFSKHBnY3R4LVx1MDAzZXN0YXRiYXIpLFxuIFx0XHRcdCAgcGdjdHgtXHUwMDNlc3RhdGJhcl9jdHhfaWQpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuaW5kZXggZmY4MDAwNDdlNjk3Zi4uZDg4NzM0NmM3YTYzMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9zZXR1cC5jXG5AQCAtMTQsNyArMTQsNyBAQCBpbnQgdXNlX2Jyb3dzZXIgPSAtMTtcbiBcbiAjZGVmaW5lIFBFUkZfR1RLX0RTTyBcImxpYnBlcmYtZ3RrLnNvXCJcbiBcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcbiBzdGF0aWMgaW50IHNldHVwX2d0a19icm93c2VyKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcbmluZGV4IGRmNzBlOTVhODQ3MDQuLjEyM2I2ZDVmY2VhNzggMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuY1xuKysrIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcbkBAIC0xNDUsNiArMTQ1LDE3IEBAIHN0YXRpYyBpbnQgYW5ub3RhdGVkX3NvdXJjZV9fYWxsb2NfaGlzdG9ncmFtcyhzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLFxuIFx0cmV0dXJuIHNyYy1cdTAwM2VoaXN0b2dyYW1zID8gMCA6IC0xO1xuIH1cbiBcbitzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxuK2Fubm90YXRlZF9zb3VyY2VfX2hpc3RfZW50cnkoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywgY29uc3Qgc3RydWN0IGV2c2VsICpldnNlbCwgdTY0IG9mZnNldClcbit7XG4rXHRzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKmVudHJ5O1xuK1x0bG9uZyBrZXkgPSBvZmZzZXQgXHUwMDNjXHUwMDNjIDE2IHwgZXZzZWwtXHUwMDNlY29yZS5pZHg7XG4rXG4rXHRpZiAoIWhhc2htYXBfX2ZpbmQoc3JjLVx1MDAzZXNhbXBsZXMsIGtleSwgXHUwMDI2ZW50cnkpKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcdHJldHVybiBlbnRyeTtcbit9XG4rXG4gdm9pZCBzeW1ib2xfX2Fubm90YXRlX3plcm9faGlzdG9ncmFtcyhzdHJ1Y3Qgc3ltYm9sICpzeW0pXG4ge1xuIFx0c3RydWN0IGFubm90YXRpb24gKm5vdGVzID0gc3ltYm9sX19hbm5vdGF0aW9uKHN5bSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmggYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxuaW5kZXggZmEwOGQwOWI4MGY3Ni4uNDAwMzhhMzc3OWQ0NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oXG4rKysgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxuQEAgLTQwNiwxNiArNDA2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3QgKmFubm90YXRpb25fX2hpc3RvZ3JhbShzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMsXG4gXHRyZXR1cm4gYW5ub3RhdGVkX3NvdXJjZV9faGlzdG9ncmFtKG5vdGVzLVx1MDAzZXNyYywgZXZzZWwpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqXG4tYW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KVxuLXtcbi1cdHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqZW50cnk7XG4tXHRsb25nIGtleSA9IG9mZnNldCBcdTAwM2NcdTAwM2MgMTYgfCBldnNlbC1cdTAwM2Vjb3JlLmlkeDtcbi1cbi1cdGlmICghaGFzaG1hcF9fZmluZChzcmMtXHUwMDNlc2FtcGxlcywga2V5LCBcdTAwMjZlbnRyeSkpXG4tXHRcdHJldHVybiBOVUxMO1xuLVx0cmV0dXJuIGVudHJ5O1xuLX1cbitzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxuK2Fubm90YXRlZF9zb3VyY2VfX2hpc3RfZW50cnkoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywgY29uc3Qgc3RydWN0IGV2c2VsICpldnNlbCwgdTY0IG9mZnNldCk7XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgYW5ub3RhdGlvbiAqc3ltYm9sX19hbm5vdGF0aW9uKHN0cnVjdCBzeW1ib2wgKnN5bSlcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMDo1MjowNC4zNjIwMzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Mjk5OTUwNDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBFdmFsdWF0aW9uOiBOZWdhdGl2ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHVzZXIgd2FudHMgbWUgdG8gZXZhbHVhdGUgdGhpcyBwYXRjaCBzZXJpZXMgYXBwbGllZCB0byB0aGUga2VybmVsIEhFQUQuIEZpcnN0LCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgZmlsZXMgdGhhdCB3ZXJlIG1vZGlmaWVkLiBGcm9tIHRoZSBkaWZmLCBJJ20gc2VlaW5nIGV2ZXJ5dGhpbmcgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5IOKAkyBzcGVjaWZpY2FsbHksIGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYC5cblxuTm93LCBhY2NvcmRpbmcgdG8gdGhlIHRyaWFnZSBndWlkZWxpbmVzLCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggZmFsbHMgaW50byB0aGUgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiBjYXRlZ29yeS4gU3BlY2lmaWNhbGx5LCBJJ20gY2hlY2tpbmcgaWYgYWxsIHRoZSBtb2RpZmllZCBjb2RlIHN0cmljdGx5IGZhbGxzIGludG8gdGhlIGNyaXRlcmlhIG9mOiBcIk5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMsIGxpa2UgbW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgc3BlbGxpbmcgZml4ZXMsIG9yIHVzZXItc3BhY2UgZGlyZWN0b3JpZXMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKSB0aGF0IGRvbid0IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIGB2bWxpbnV4YCBvciBrZXJuZWwgbW9kdWxlcy5cIlxuXG5Mb29raW5nIGF0IHRoZSBsaXN0IG9mIGZpbGVzIGFnYWluOiBgdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZWAsIGB0b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlYCwgYW5kIHRoZSBgdGVzdC1ndGs0LWluZm9iYXIuY2AgYW5kIGB0ZXN0LWd0azQuY2AgZmlsZXMgd2l0aGluIGB0b29scy9idWlsZC9mZWF0dXJlYCBsb29rIGxpa2UgYnVpbGQgc3lzdGVtIGNoYW5nZXMsIGFuZCB0ZXN0aW5nLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBHVEsgYnVpbGQsIHdoaWNoIGlzIHVzZXItc3BhY2UgYW5kIGRvZXNuJ3QgZGlyZWN0bHkgaW1wYWN0IHRoZSBrZXJuZWwuIFRoZSBgdG9vbHMvcGVyZmAgZGlyZWN0b3J5IGhvdXNlcyB0aGUgbWFqb3JpdHkgb2YgdGhlIGNoYW5nZXMsIGFuZCBzZWVtcyB0byBiZSB1cGRhdGluZyBgcGVyZmAgdG9vbGluZy4gVGhlcmUgYXJlIE1ha2VmaWxlIGNoYW5nZXMsIGRvY3VtZW50YXRpb24gdXBkYXRlcyAoYHBlcmYtcmVwb3J0LnR4dGApLCBidWlsZCBjb25maWd1cmF0aW9ucywgc2NyaXB0cywgYW5kIHVwZGF0ZXMgdG8gdGhlIEdUSy1iYXNlZCBVSSAoYHVpL2d0ay8qYCkgYW5kIHJlbGF0ZWQgdXRpbGl0aWVzIChgdXRpbC8qYCwgYGJ1aWx0aW4tKmApLiBUaGUgZm9jdXMgaGVyZSBhcHBlYXJzIHRvIGJlIHBvcnRpbmcgYHBlcmZgJ3MgR1RLIFVJIHN1cHBvcnQgZnJvbSBHVEsyIHRvIEdUSzQuXG5cbkdpdmVuIHRoYXQgKmFsbCogdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gYHRvb2xzL2AgKGFuZCB0aGUgYGJ1aWxkYCBzdWJkaXJlY3RvcnkpLCBkZWFsaW5nIHdpdGggdXNlci1zcGFjZSB0b29saW5nIGFuZCBidWlsZCBpbmZyYXN0cnVjdHVyZSwgYW5kIGNydWNpYWxseSwgKm5vbmUqIG9mIHRoZXNlIGNoYW5nZXMgYXJlIHRvdWNoaW5nIHRoZSBjb3JlIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBhbnkga2VybmVsIG1vZHVsZXMsIEkgY2FuIGNvbmZpZGVudGx5IGNvbmNsdWRlIHRoYXQgdGhlIGNyaXRlcmlhIGZvciBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyBtZXQuXG5cblRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCByZS1zY2FuIHRoZSBlbnRpcmUgZGlmZiB0byBtYWtlIHN1cmUgbm8gZmlsZXMgd2VyZSBpbmFkdmVydGVudGx5IG1pc3NlZC4gTm9wZSwgaXQncyBhbGwgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvcGVyZmAgYW5kIGB0b29scy9idWlsZGAuXG5cblRoZXJlZm9yZSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgc2V0IHRvIGZhbHNlLiBObyBzcGVjaWZpYyBlbmFibGUgY29uZmlndXJhdGlvbnMgb3IgZm9jdXMgc3ltYm9scyBhcmUgbmVlZGVkIGZvciB0aGlzIHBhdGNoLiBNeSByZWFzb25pbmcgaXMgY2xlYXI6IFRoZSBwYXRjaCBzZXJpZXMgZm9jdXNlcyAqZXhjbHVzaXZlbHkqIG9uIHVzZXItc3BhY2UgdG9vbGluZywgc3BlY2lmaWNhbGx5IGNoYW5nZXMgd2l0aGluIGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCByZWxhdGVkIHRvIHBvcnRpbmcgcGVyZidzIEdUSyBVSSB0byBHVEs0LCB3aGljaCBkb2VzIG5vdCBpbXBhY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBhbnkga2VybmVsIG1vZHVsZXMuIEknbSBnb2luZyB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MTM3LCJPdXRwdXRUb2tlbnMiOjgyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTI3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDA6NTI6MTAuNjYxOTg4ODk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRvb2xzICh0b29scy9wZXJmIGFuZCB0b29scy9idWlsZCksIHBvcnRpbmcgcGVyZidzIEdUSyBpbnRlcmZhY2Ugc3VwcG9ydCBmcm9tIEdUSzIgdG8gR1RLNC4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBrZXJuZWwgY29kZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRvb2xzICh0b29scy9wZXJmIGFuZCB0b29scy9idWlsZCksIHBvcnRpbmcgcGVyZidzIEdUSyBpbnRlcmZhY2Ugc3VwcG9ydCBmcm9tIEdUSzIgdG8gR1RLNC4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBrZXJuZWwgY29kZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMDo1MjoxMC42NjIwMzA2MDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowngx8c[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 00:49:42 +0000 UTC FinishedAt: 2026-09-07 00:52:11 +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+CgkJCTx0ZD4yMDI2LzA5LzA3IDAwOjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIHVzZXJzcGFjZSB0b29scyAodG9vbHMvcGVyZiBhbmQgdG9vbHMvYnVpbGQpLCBwb3J0aW5nIHBlcmYmIzM5O3MgR1RLIGludGVyZmFjZSBzdXBwb3J0IGZyb20gR1RLMiB0byBHVEs0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDA6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMzA5YzgyMzVkZWY2ZGY3MTNmYTQwOTk5NDFlZTkyMDZhZmNmMWNmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwMDo1MjowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlIGIvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZVxuaW5kZXggOTllYjBlYTA5NTM3NS4uN2ZmZWI3NWEwMWM3OSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcbkBAIC0xMTMsOCAmIzQzOzExMyw4IEBAIEZFQVRVUkVfVEVTVFNfRVhUUkEgOj0gICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGNvbXBpbGUteDMyICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGNwbHVzLWRlbWFuZ2xlICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGN4YS1kZW1hbmdsZSAgICAgICAgICAgICAgICAgICBcXFxuLSAgICAgICAgIGd0azIgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLSAgICAgICAgIGd0azItaW5mb2JhciAgICAgICAgICAgICAgICAgICBcXFxuJiM0MzsgICAgICAgICBndGs0ICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiYjNDM7ICAgICAgICAgZ3RrNC1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgaGVsbG8gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgYmFiZWx0cmFjZTItY3RmLXdyaXRlciAgICAgICAgIFxcXG4gICAgICAgICAgbGliY2Fwc3RvbmUgICAgICAgICAgICAgICAgICAgIFxcXG5AQCAtMTQzLDYgJiM0MzsxNDMsNyBAQCBlbmRpZlxuIEZFQVRVUkVfRElTUExBWSA/PSAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBsaWJkdyAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgZ2xpYmMgICAgICAgICAgICAgICAgICBcXFxuJiM0MzsgICAgICAgICBndGs0ICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgbGliZWxmICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGxpYm51bWEgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBudW1hX251bV9wb3NzaWJsZV9jcHVzIFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZSBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGVcbmluZGV4IDdkMTY1MDE4MTE2YTUuLjJjYTk5MmZiYjlhZDUgMTAwNjQ0XG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXG5AQCAtMTEsOCAmIzQzOzExLDggQEAgRklMRVM9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICB0ZXN0LWV2ZW50ZmQuYmluICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtZm9ydGlmeS1zb3VyY2UuYmluICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1nbGliYy5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi0gICAgICAgICB0ZXN0LWd0azIuYmluICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLSAgICAgICAgIHRlc3QtZ3RrMi1pbmZvYmFyLmJpbiAgICAgICAgICAgICAgICAgIFxcXG4mIzQzOyAgICAgICAgIHRlc3QtZ3RrNC5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4mIzQzOyAgICAgICAgIHRlc3QtZ3RrNC1pbmZvYmFyLmJpbiAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1oZWxsby5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICB0ZXN0LWxpYmJmZC5iaW4gICAgICAgICAgICAgICAgICAgICAgICBcXFxuIFx0IHRlc3QtbGliYmZkLXRocmVhZHNhZmUuYmluICAgICAgXHRcXFxuQEAgLTI0MCwxMSAmIzQzOzI0MCwxMSBAQCAkKE9VVFBVVCl0ZXN0LWxpYmNwdXBvd2VyLmJpbjpcbiAkKE9VVFBVVCl0ZXN0LWxpYnRyYWNlZnMuYmluOlxuIFx0ICQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJ0cmFjZWZzIDJcdTAwM2UvZGV2L251bGwpIC1sdHJhY2Vmc1xuIFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46XG4tXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyXHUwMDNlL2Rldi9udWxsKSAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXG4mIzQzOyQoT1VUUFVUKXRlc3QtZ3RrNC5iaW46XG4mIzQzO1x0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4gXG4tJChPVVRQVVQpdGVzdC1ndGsyLWluZm9iYXIuYmluOlxuLVx0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsmIzQzOy0yLjAgMlx1MDAzZS9kZXYvbnVsbClcbiYjNDM7JChPVVRQVVQpdGVzdC1ndGs0LWluZm9iYXIuYmluOlxuJiM0MztcdCQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXHUwMDNlL2Rldi9udWxsKVxuIFxuIGdyZXAtbGlicyAgPSAkKGZpbHRlciAtbCUsJCgxKSlcbiBzdHJpcC1saWJzID0gJChmaWx0ZXItb3V0IC1sJSwkKDEpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuY1xuc2ltaWxhcml0eSBpbmRleCA3NyVcbnJlbmFtZSBmcm9tIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuY1xucmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuY1xuaW5kZXggYjFiNzE2ZGQ1NzMzMC4uNmMxYmNlZTU5NWE5YyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQtaW5mb2Jhci5jXG5AQCAtMyw5ICYjNDM7Myw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjZ3RrL2d0ay5oXHUwMDNlXG4gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBlcnJvciBcJiMzNDstV3N0cmljdC1wcm90b3R5cGVzXCYjMzQ7XG4gXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiYjNDM7aW50IG1haW4odm9pZClcbiB7XG4tXHRndGtfaW5pdChcdTAwMjZhcmdjLCBcdTAwMjZhcmd2KTtcbiYjNDM7XHRndGtfaW5pdCgpO1xuIFx0Z3RrX2luZm9fYmFyX25ldygpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LmNcbnNpbWlsYXJpdHkgaW5kZXggNzYlXG5yZW5hbWUgZnJvbSB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jXG5yZW5hbWUgdG8gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuY1xuaW5kZXggMmFhZjRiZmMyMDU1Ni4uYjk1MjBlNzQwOGI5OSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LmNcbkBAIC0zLDkgJiM0MzszLDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NndGsvZ3RrLmhcdTAwM2VcbiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFwmIzM0Oy1Xc3RyaWN0LXByb3RvdHlwZXNcJiMzNDtcbiBcbi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuJiM0MztpbnQgbWFpbih2b2lkKVxuIHtcbi1cdGd0a19pbml0KFx1MDAyNmFyZ2MsIFx1MDAyNmFyZ3YpO1xuJiM0MztcdGd0a19pbml0KCk7XG4gXG4gICAgICAgICByZXR1cm4gMDtcbiB9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dCBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcbmluZGV4IDIyZjg3ZWFhMzI3OTYuLjdhZjliM2Y4MWMwNjUgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0XG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0XG5AQCAtMzUxLDcgJiM0MzszNTEsNyBAQCBPUFRJT05TXG4gXHRyZXF1aXJlcyBhIHR0eSwgaWYgb25lIGlzIG5vdCBwcmVzZW50LCBhcyB3aGVuIHBpcGluZyB0byBvdGhlclxuIFx0Y29tbWFuZHMsIHRoZSBzdGRpbyBpbnRlcmZhY2UgaXMgdXNlZC5cbiBcbi0tLWd0azo6IFVzZSB0aGUgR1RLMiBpbnRlcmZhY2UuXG4mIzQzOy0tZ3RrOjogVXNlIHRoZSBHVEs0IGludGVyZmFjZS5cbiBcbiAtazo6XG4gLS12bWxpbnV4PVx1MDAzY2ZpbGVcdTAwM2U6OlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUgYi90b29scy9wZXJmL01ha2VmaWxlXG5pbmRleCA1YjcxMzgzN2VlZGU3Li41NjAxNDEwNjQ3OWEzIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9NYWtlZmlsZVxuQEAgLTEwNiw3ICYjNDM7MTA2LDcgQEAgY2xlYW46XG4gIyBtYWtlIC1DIHRvb2xzL3BlcmYgLWYgdGVzdHMvbWFrZVxuICNcbiBidWlsZC10ZXN0OlxuLVx0QCQoTUFLRSkgU0hVRj0xIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IHRhcnBrZyBtYWtlX3N0YXRpYyBtYWtlX3dpdGhfZ3RrMiBvdXRcbiYjNDM7XHRAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGs0IG91dFxuIFxuIGJ1aWxkLXRlc3QtdGFyYmFsbDpcbiBcdEAkKE1BS0UpIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IG91dFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnIGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5jb25maWdcbmluZGV4IDRkNTk5M2RhOWY5NDUuLmVmNzQxOWE1YjAxMzcgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZ1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5jb25maWdcbkBAIC03NzQsMjEgJiM0Mzs3NzQsMjYgQEAgaWZuZGVmIE5PX1NMQU5HXG4gICBlbmRpZlxuIGVuZGlmXG4gXG4taWZkZWYgR1RLMlxuLSAgRkxBR1NfR1RLMj0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrJiM0MzstMi4wIDJcdTAwM2UvZGV2L251bGwpXG4tICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGsyKVxuLSAgaWZuZXEgKCQoZmVhdHVyZS1ndGsyKSwgMSlcbi0gICAgJCh3YXJuaW5nIEdUSzIgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEsyIHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azItZGV2ZWwgb3IgbGliZ3RrMi4wLWRldilcbi0gICAgTk9fR1RLMiA6PSAxXG4mIzQzO2lmZGVmIEdUSzRcbiYjNDM7ICBGTEFHU19HVEs0PSQoQ0ZMQUdTKSAkKExERkxBR1MpICQoRVhUTElCUykgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4mIzQzOyAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrNClcbiYjNDM7ICBpZm5lcSAoJChmZWF0dXJlLWd0azQpLCAxKVxuJiM0MzsgICAgJCh3YXJuaW5nIEdUSzQgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEs0IHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azQtZGV2ZWwgb3IgbGliZ3RrLTQtZGV2KVxuJiM0MzsgICAgTk9fR1RLNCA6PSAxXG4gICBlbHNlXG4tICAgICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azItaW5mb2Jhcilcbi0gICAgaWZlcSAoJChmZWF0dXJlLWd0azItaW5mb2JhciksIDEpXG4mIzQzOyAgICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0LWluZm9iYXIpXG4mIzQzOyAgICBpZmVxICgkKGZlYXR1cmUtZ3RrNC1pbmZvYmFyKSwgMSlcbiAgICAgICBHVEtfQ0ZMQUdTIDo9IC1ESEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuICAgICBlbmRpZlxuLSAgICBDRkxBR1MgJiM0Mzs9IC1ESEFWRV9HVEsyX1NVUFBPUlRcbi0gICAgR1RLX0NGTEFHUyAmIzQzOz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyXHUwMDNlL2Rldi9udWxsKVxuLSAgICBHVEtfTElCUyA6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGd0ayYjNDM7LTIuMCAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MzsgICAgQ0ZMQUdTICYjNDM7PSAtREhBVkVfR1RLNF9TVVBQT1JUXG4mIzQzOyAgICBHVEtfQ0ZMQUdTICYjNDM7PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgZ3RrNCAyXHUwMDNlL2Rldi9udWxsKVxuJiM0MzsgICAgR1RLX0xJQlMgOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4gICAgIEVYVExJQlMgJiM0Mzs9IC1sZGxcbiYjNDM7ICAgICMgbGlicGVyZi1ndGsuc28gaXMgZGxvcGVuKCllZCBhdCBydW50aW1lIGFuZCBjYWxscyBiYWNrIGludG9cbiYjNDM7ICAgICMgc3ltYm9scyBkZWZpbmVkIGluIHRoZSBwZXJmIGJpbmFyeSBpdHNlbGYgKGNhbGxjaGFpbl9wYXJhbSxcbiYjNDM7ICAgICMgc3ltYm9sX2NvbmYsIGV2c2VsX19uYW1lLCAuLi4pOiBwZXJmIG5lZWRzIHRvIGV4cG9ydCB0aG9zZVxuJiM0MzsgICAgIyBkeW5hbWljYWxseSBmb3IgdGhlIHBsdWdpbiB0byByZXNvbHZlIHRoZW0uXG4mIzQzOyAgICBMREZMQUdTICYjNDM7PSAtcmR5bmFtaWNcbiAgIGVuZGlmXG4gZW5kaWZcbiBcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLnBlcmYgYi90b29scy9wZXJmL01ha2VmaWxlLnBlcmZcbmluZGV4IDI5Y2ZkNDRjNDI3ZjMuLjI0MzhiNDBlYWFlYzEgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL01ha2VmaWxlLnBlcmZcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuQEAgLTQ5LDcgJiM0Mzs0OSw3IEBAIGluY2x1ZGUgLi4vc2NyaXB0cy91dGlsaXRpZXMubWFrXG4gI1xuICMgRGVmaW5lIE5PX1NMQU5HIGlmIHlvdSBkbyBub3Qgd2FudCBUVUkgc3VwcG9ydC5cbiAjXG4tIyBEZWZpbmUgR1RLMiBpZiB5b3Ugd2FudCBHVEsmIzQzOyBHVUkgc3VwcG9ydC5cbiYjNDM7IyBEZWZpbmUgR1RLNCBpZiB5b3Ugd2FudCBHVEsmIzQzOyBHVUkgc3VwcG9ydC5cbiAjXG4gIyBEZWZpbmUgTk9fREVNQU5HTEUgaWYgeW91IGRvIG5vdCB3YW50IEMmIzQzOyYjNDM7IHN5bWJvbCBkZW1hbmdsaW5nLlxuICNcbkBAIC00NzMsNyAmIzQzOzQ3Myw3IEBAIGlmbmVxICgkKE9VVFBVVCksKVxuICAgQ0ZMQUdTICYjNDM7PSAtSSQoT1VUUFVUKVxuIGVuZGlmXG4gXG4taWZkZWYgR1RLMlxuJiM0MztpZmRlZiBHVEs0XG4gICBBTExfUFJPR1JBTVMgJiM0Mzs9ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvXG4gICBHVEtfSU4gOj0gJChPVVRQVVQpZ3RrLWluLm9cbiBlbmRpZlxuQEAgLTgxMSw3ICYjNDM7ODExLDcgQEAgY2hlY2s6IHByZXBhcmVcbiBcbiAjIyMgSW5zdGFsbGF0aW9uIHJ1bGVzXG4gXG4taWZkZWYgR1RLMlxuJiM0MztpZmRlZiBHVEs0XG4gaW5zdGFsbC1ndGs6ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvXG4gXHQkKGNhbGwgUVVJRVRfSU5TVEFMTCwgJiMzOTtHVEsgVUkmIzM5OykgXFxcbiBcdFx0JChJTlNUQUxMKSAtZCAtbSA3NTUgJiMzOTskKERFU1RESVJfU1EpJChsaWJkaXJfU1EpJiMzOTs7IFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMgYi90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuY1xuaW5kZXggNjljYjcyYjIwODJhNi4uMTUxNjNlMDgxYThjZSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuY1xuQEAgLTUyLDcgJiM0Mzs1Miw3IEBAIHN0cnVjdCBwZXJmX2Fubm90YXRlIHtcbiBcdGJvb2xcdCAgIHVzZV90dWk7XG4gI2VuZGlmXG4gXHRib29sXHQgICB1c2Vfc3RkaW8sIHVzZV9zdGRpbzI7XG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4mIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxuIFx0Ym9vbFx0ICAgdXNlX2d0aztcbiAjZW5kaWZcbiBcdGJvb2xcdCAgIHNraXBfbWlzc2luZztcbkBAIC03MTIsNyAmIzQzOzcxMiw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0T1BUX0JPT0xFQU4oJiMzOTtxJiMzOTssIFwmIzM0O3F1aWV0XCYjMzQ7LCBcdTAwMjZxdWlldCwgXCYjMzQ7ZG8gbm93IHNob3cgYW55IHdhcm5pbmdzIG9yIG1lc3NhZ2VzXCYjMzQ7KSxcbiBcdE9QVF9CT09MRUFOKCYjMzk7RCYjMzk7LCBcJiMzNDtkdW1wLXJhdy10cmFjZVwmIzM0OywgXHUwMDI2ZHVtcF90cmFjZSxcbiBcdFx0ICAgIFwmIzM0O2R1bXAgcmF3IHRyYWNlIGluIEFTQ0lJXCYjMzQ7KSxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRPUFRfQk9PTEVBTigwLCBcJiMzNDtndGtcJiMzNDssIFx1MDAyNmFubm90YXRlLnVzZV9ndGssIFwmIzM0O1VzZSB0aGUgR1RLIGludGVyZmFjZVwmIzM0OyksXG4gI2VuZGlmXG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxuQEAgLTgyOCw3ICYjNDM7ODI4LDcgQEAgaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gXHRpZiAoYW5ub3RhdGVfY2hlY2tfYXJncygpIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRpZiAoc3ltYm9sX2NvbmYuc2hvd19ucl9zYW1wbGVzIFx1MDAyNlx1MDAyNiBhbm5vdGF0ZS51c2VfZ3RrKSB7XG4gXHRcdHByX2VycihcJiMzNDstLXNob3ctbnItc2FtcGxlcyBpcyBub3QgYXZhaWxhYmxlIGluIC0tZ3RrIG1vZGUgYXQgdGhpcyB0aW1lXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIHJldDtcbkBAIC04OTgsNyAmIzQzOzg5OCw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX3R1aSlcbiBcdFx0dXNlX2Jyb3dzZXIgPSAxO1xuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdGVsc2UgaWYgKGFubm90YXRlLnVzZV9ndGspXG4gXHRcdHVzZV9icm93c2VyID0gMjtcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmMgYi90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmNcbmluZGV4IDYwZDFmMTY2NjI5ZTAuLmQxNDM4NGM1ODQ2NjEgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuQEAgLTgyLDcgJiM0Mzs4Miw3IEBAIHN0cnVjdCByZXBvcnQge1xuICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlRcbiBcdGJvb2xcdFx0XHR1c2VfdHVpO1xuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdGJvb2xcdFx0XHR1c2VfZ3RrO1xuICNlbmRpZlxuIFx0Ym9vbFx0XHRcdHVzZV9zdGRpbztcbkBAIC0xMzU5LDggJiM0MzsxMzU5LDggQEAgaW50IGNtZF9yZXBvcnQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlRcbiBcdE9QVF9CT09MRUFOKDAsIFwmIzM0O3R1aVwmIzM0OywgXHUwMDI2cmVwb3J0LnVzZV90dWksIFwmIzM0O1VzZSB0aGUgVFVJIGludGVyZmFjZVwmIzM0OyksXG4gI2VuZGlmXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4tXHRPUFRfQk9PTEVBTigwLCBcJiMzNDtndGtcJiMzNDssIFx1MDAyNnJlcG9ydC51c2VfZ3RrLCBcJiMzNDtVc2UgdGhlIEdUSzIgaW50ZXJmYWNlXCYjMzQ7KSxcbiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4mIzQzO1x0T1BUX0JPT0xFQU4oMCwgXCYjMzQ7Z3RrXCYjMzQ7LCBcdTAwMjZyZXBvcnQudXNlX2d0aywgXCYjMzQ7VXNlIHRoZSBHVEs0IGludGVyZmFjZVwmIzM0OyksXG4gI2VuZGlmXG4gXHRPUFRfQk9PTEVBTigwLCBcJiMzNDtzdGRpb1wmIzM0OywgXHUwMDI2cmVwb3J0LnVzZV9zdGRpbyxcbiBcdFx0ICAgIFwmIzM0O1VzZSB0aGUgc3RkaW8gaW50ZXJmYWNlXCYjMzQ7KSxcbkBAIC0xNzEwLDcgJiM0MzsxNzEwLDcgQEAgaW50IGNtZF9yZXBvcnQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0ZWxzZSBpZiAocmVwb3J0LnVzZV90dWkpXG4gXHRcdHVzZV9icm93c2VyID0gMTtcbiAjZW5kaWZcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRlbHNlIGlmIChyZXBvcnQudXNlX2d0aylcbiBcdFx0dXNlX2Jyb3dzZXIgPSAyO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2ggYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXG5pbmRleCBkMDAzZTdmYWIyYmU4Li5hNjAxYTUyNjBjMTdlIDEwMDc1NVxuLS0tIGEvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxuQEAgLTE5OSw4ICYjNDM7MTk5LDggQEAgZmVkb3JhX3BrZ19mb3IoKSB7XG4gXHQjIG9wdC1pbiBmZWF0dXJlcywgd2hpY2ggYSBkZWZhdWx0IGJ1aWxkIGRvZXMgbm90IGVuYWJsZTogdGhlIGxpYmJmZFxuIFx0IyBkaXNhc3NlbWJsZXIgZmFtaWx5IChsaWJiZmQsIGxpYmJmZC10aHJlYWRzYWZlLCBsaWJiZmQtbGliZXJ0eSxcbiBcdCMgZGlzYXNzZW1ibGVyLSosIGNwbHVzLWRlbWFuZ2xlKSwgb25seSBsaW5rZWQgb24gQlVJTERfTk9ORElTVFJPXG4tXHQjIGJ1aWxkcyBhbmQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjYXBzdG9uZSwgR1RLMiwgTElCUEVSTCBhbmRcbi1cdCMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzIgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLFxuJiM0MztcdCMgYnVpbGRzIGFuZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNhcHN0b25lLCBHVEs0LCBMSUJQRVJMIGFuZFxuJiM0MztcdCMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzQgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLFxuIFx0IyBhbmQgQ29yZVNpZ2h0IChpZmRlZiBDT1JFU0lHSFQpLCBhcmUgZGVsaWJlcmF0ZWx5IG5vdCBtYXBwZWQuXG4gXHQjIGxpYmFpbyBpcyBub3QgbWFwcGVkIGVpdGhlcjogaXRzXG4gXHQjIHRlc3QgdXNlcyB0aGUgUE9TSVggQUlPIEFQSSAoYWlvLmgsIGFpb18qLCAtbHJ0KSwgcHJvdmlkZWQgYnlcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3Rlc3RzL21ha2UgYi90b29scy9wZXJmL3Rlc3RzL21ha2VcbmluZGV4IGQyYzJmNTI2ZTFkYjAuLjIwMmFiNTUwMTkxNjEgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3Rlc3RzL21ha2VcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZVxuQEAgLTk1LDcgJiM0Mzs5NSw3IEBAIG1ha2Vfbm9fYmFiZWx0cmFjZTIgOj0gTk9fQkFCRUxUUkFDRTI9MVxuIG1ha2Vfd2l0aF9jb3Jlc2lnaHQgOj0gQ09SRVNJR0hUPTFcbiBtYWtlX25vX3NkdFx0ICAgIDo9IE5PX1NEVD0xXG4gbWFrZV9ub19saWJwZm00ICAgICA6PSBOT19MSUJQRk00PTFcbi1tYWtlX3dpdGhfZ3RrMiAgICAgIDo9IEdUSzI9MVxuJiM0MzttYWtlX3dpdGhfZ3RrNCAgICAgIDo9IEdUSzQ9MVxuIG1ha2VfcmVmY250X2NoZWNrICAgOj0gRVhUUkFfQ0ZMQUdTPVwmIzM0Oy1EUkVGQ05UX0NIRUNLSU5HPTFcJiMzNDtcbiBtYWtlX3RhZ3MgICAgICAgICAgIDo9IHRhZ3NcbiBtYWtlX2NzY29wZSAgICAgICAgIDo9IGNzY29wZVxuQEAgLTMxOCw3ICYjNDM7MzE4LDcgQEAgJChydW4pOlxuIFx0JChjYWxsIHRlc3QsJEApIFx1MDAyNlx1MDAyNiBcXFxuIFx0cm0gLXJmICRAICQkVE1QX0RFU1QgfHwgKGNhdCAkQCA7IGZhbHNlKVxuIFxuLW1ha2Vfd2l0aF9ndGsyOlxuJiM0MzttYWtlX3dpdGhfZ3RrNDpcbiBcdCQoY2FsbCBjbGVhbilcbiBcdEBUTVBfREVTVD0kJChta3RlbXAgLWQpOyBcXFxuIFx0Y21kPVwmIzM0O2NkICQoUEVSRikgXHUwMDI2XHUwMDI2ICQoTUFLRV9GKSAkKCRAKSAkKFBBUkFMTEVMX09QVCkgJChPX09QVCkgREVTVERJUj0kJFRNUF9ERVNUXCYjMzQ7OyBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmMgYi90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jXG5pbmRleCA4OTIwZTI5ODQyMGE4Li5mYzQ2YWMxNTA0MDg4IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xuQEAgLTE2MSw3ICYjNDM7MTYxLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fYW5ub3RhdGVfc3ltYm9sKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsXG4gXHRcdFx0Z3RrX2xpc3Rfc3RvcmVfc2V0KHN0b3JlLCBcdTAwMjZpdGVyLCBBTk5fQ09MX19MSU5FLCBzLCAtMSk7XG4gXHR9XG4gXG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xuJiM0MztcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7XG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCBuLCBcdTAwMjZub3Rlcy1cdTAwM2VzcmMtXHUwMDNlc291cmNlLCBhbC5ub2RlKSB7XG4gXHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2cG9zLVx1MDAzZWFsLm5vZGUpO1xuQEAgLTIxMSwzNCAmIzQzOzIxMSwzMSBAQCBzdGF0aWMgaW50IHN5bWJvbF9fZ3RrX2Fubm90YXRlKHN0cnVjdCBtYXBfc3ltYm9sICptcywgc3RydWN0IGV2c2VsICpldnNlbCxcbiBcdFx0c2lnbmFsKFNJR1FVSVQsIHBlcmZfZ3RrX19zaWduYWwpO1xuIFx0XHRzaWduYWwoU0lHVEVSTSwgcGVyZl9ndGtfX3NpZ25hbCk7XG4gXG4tXHRcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpO1xuJiM0MztcdFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcdFx0Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyh3aW5kb3cpLCBcJiMzNDtwZXJmIGFubm90YXRlXCYjMzQ7KTtcbiBcbi1cdFx0Z19zaWduYWxfY29ubmVjdCh3aW5kb3csIFwmIzM0O2RlbGV0ZV9ldmVudFwmIzM0OywgZ3RrX21haW5fcXVpdCwgTlVMTCk7XG4tXG4gXHRcdHBnY3R4ID0gcGVyZl9ndGtfX2FjdGl2YXRlX2NvbnRleHQod2luZG93KTtcbiBcdFx0aWYgKCFwZ2N0eClcbiBcdFx0XHRyZXR1cm4gLTE7XG4gXG4tXHRcdHZib3ggPSBndGtfdmJveF9uZXcoRkFMU0UsIDApO1xuJiM0MztcdFx0dmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7XG4gXHRcdG5vdGVib29rID0gZ3RrX25vdGVib29rX25ldygpO1xuIFx0XHRwZ2N0eC1cdTAwM2Vub3RlYm9vayA9IG5vdGVib29rO1xuIFxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApO1xuJiM0MztcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4mIzQzO1x0XHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBub3RlYm9vayk7XG4gXG4gXHRcdGluZm9iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTtcbi1cdFx0aWYgKGluZm9iYXIpIHtcbi1cdFx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb2Jhcixcbi1cdFx0XHRcdFx0ICAgRkFMU0UsIEZBTFNFLCAwKTtcbi1cdFx0fVxuJiM0MztcdFx0aWYgKGluZm9iYXIpXG4mIzQzO1x0XHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9iYXIpO1xuIFxuIFx0XHRzdGF0YmFyID0gcGVyZl9ndGtfX3NldHVwX3N0YXR1c2JhcigpO1xuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTtcbiYjNDM7XHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpO1xuIFxuLVx0XHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZib3gpO1xuJiM0MztcdFx0Z3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyh3aW5kb3cpLCB2Ym94KTtcbiBcdH1cbiBcbi1cdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpO1xuJiM0MztcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KCk7XG4gXHR0YWJfbGFiZWwgPSBndGtfbGFiZWxfbmV3KHN5bS1cdTAwM2VuYW1lKTtcbiBcbiBcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksXG5AQCAtMjY3LDEyICYjNDM7MjY0LDExIEBAIHZvaWQgcGVyZl9ndGtfX3Nob3dfYW5ub3RhdGlvbnModm9pZClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0d2luZG93ID0gcGdjdHgtXHUwMDNlbWFpbl93aW5kb3c7XG4tXHRndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7XG4gXG4gXHRwZXJmX2d0a19fcmVzaXplX3dpbmRvdyh3aW5kb3cpO1xuLVx0Z3RrX3dpbmRvd19zZXRfcG9zaXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpLCBHVEtfV0lOX1BPU19DRU5URVIpO1xuJiM0MztcdGd0a193aWRnZXRfc2V0X3Zpc2libGUod2luZG93LCBUUlVFKTtcbiBcbi1cdGd0a19tYWluKCk7XG4mIzQzO1x0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXHUwMDI2cGdjdHgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmMgYi90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcbmluZGV4IGQyZGFkZjM4NzNmYmQuLjk5YmIwZWE3NmQ3NzUgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xuQEAgLTE2LDIxICYjNDM7MTYsNTMgQEAgdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpXG4gdm9pZCBwZXJmX2d0a19fcmVzaXplX3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdylcbiB7XG4gXHRHZGtSZWN0YW5nbGUgcmVjdDtcbi1cdEdka1NjcmVlbiAqc2NyZWVuO1xuLVx0aW50IG1vbml0b3I7XG4mIzQzO1x0R2RrTW9uaXRvciAqbW9uaXRvcjtcbiYjNDM7XHRHZGtEaXNwbGF5ICpkaXNwbGF5O1xuJiM0MztcdEdMaXN0TW9kZWwgKm1vbml0b3JzO1xuIFx0aW50IGhlaWdodDtcbiBcdGludCB3aWR0aDtcbiBcbi1cdHNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbih3aW5kb3cpO1xuJiM0MztcdGRpc3BsYXkgPSBndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHdpbmRvdyk7XG4mIzQzO1x0bW9uaXRvcnMgPSBnZGtfZGlzcGxheV9nZXRfbW9uaXRvcnMoZGlzcGxheSk7XG4mIzQzO1x0bW9uaXRvciA9IGdfbGlzdF9tb2RlbF9nZXRfaXRlbShtb25pdG9ycywgMCk7XG4mIzQzO1x0aWYgKCFtb25pdG9yKSB7XG4mIzQzO1x0XHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCA4MDAsIDYwMCk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuIFxuLVx0bW9uaXRvciA9IGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwgd2luZG93LVx1MDAzZXdpbmRvdyk7XG4tXG4tXHRnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5KHNjcmVlbiwgbW9uaXRvciwgXHUwMDI2cmVjdCk7XG4mIzQzO1x0Z2RrX21vbml0b3JfZ2V0X2dlb21ldHJ5KG1vbml0b3IsIFx1MDAyNnJlY3QpO1xuJiM0MztcdGdfb2JqZWN0X3VucmVmKG1vbml0b3IpO1xuIFxuIFx0d2lkdGhcdD0gcmVjdC53aWR0aCAqIDMgLyA0O1xuIFx0aGVpZ2h0XHQ9IHJlY3QuaGVpZ2h0ICogMyAvIDQ7XG4gXG4tXHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpO1xuJiM0MztcdGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgR01haW5Mb29wICpwZXJmX2d0a19fbWFpbl9sb29wO1xuJiM0MztcbiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9tYWluX2xvb3Aodm9pZClcbiYjNDM7e1xuJiM0MztcdGlmIChwZXJmX2d0a19fbWFpbl9sb29wKVxuJiM0MztcdFx0Z19tYWluX2xvb3BfcXVpdChwZXJmX2d0a19fbWFpbl9sb29wKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGdib29sZWFuIHBlcmZfZ3RrX19jbG9zZV9yZXF1ZXN0KEd0a1dpZGdldCAqd2lkZ2V0IF9fbWF5YmVfdW51c2VkLFxuJiM0MztcdFx0XHRcdFx0Z3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcbiYjNDM7e1xuJiM0MztcdHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCgpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gRkFMU0U7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpXG4mIzQzO3tcbiYjNDM7XHRnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgXCYjMzQ7Y2xvc2UtcmVxdWVzdFwmIzM0OyxcbiYjNDM7XHRcdFx0IEdfQ0FMTEJBQ0socGVyZl9ndGtfX2Nsb3NlX3JlcXVlc3QpLCBOVUxMKTtcbiYjNDM7XG4mIzQzO1x0cGVyZl9ndGtfX21haW5fbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBGQUxTRSk7XG4mIzQzO1x0Z19tYWluX2xvb3BfcnVuKHBlcmZfZ3RrX19tYWluX2xvb3ApO1xuJiM0MztcdGdfY2xlYXJfcG9pbnRlcihcdTAwMjZwZXJmX2d0a19fbWFpbl9sb29wLCBnX21haW5fbG9vcF91bnJlZik7XG4gfVxuIFxuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudClcbkBAIC00NywxOCAmIzQzOzc5LDE2IEBAIEd0a1dpZGdldCAqcGVyZl9ndGtfX3NldHVwX2luZm9fYmFyKHZvaWQpXG4ge1xuIFx0R3RrV2lkZ2V0ICppbmZvX2JhcjtcbiBcdEd0a1dpZGdldCAqbGFiZWw7XG4tXHRHdGtXaWRnZXQgKmNvbnRlbnRfYXJlYTtcbiBcbiBcdGluZm9fYmFyID0gZ3RrX2luZm9fYmFyX25ldygpO1xuLVx0Z3RrX3dpZGdldF9zZXRfbm9fc2hvd19hbGwoaW5mb19iYXIsIFRSVUUpO1xuJiM0MztcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoaW5mb19iYXIsIEZBTFNFKTtcbiBcbiBcdGxhYmVsID0gZ3RrX2xhYmVsX25ldyhcJiMzNDtcJiMzNDspO1xuIFx0Z3RrX3dpZGdldF9zaG93KGxhYmVsKTtcbiBcbi1cdGNvbnRlbnRfYXJlYSA9IGd0a19pbmZvX2Jhcl9nZXRfY29udGVudF9hcmVhKEdUS19JTkZPX0JBUihpbmZvX2JhcikpO1xuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihjb250ZW50X2FyZWEpLCBsYWJlbCk7XG4mIzQzO1x0Z3RrX2luZm9fYmFyX2FkZF9jaGlsZChHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBsYWJlbCk7XG4gXG4tXHRndGtfaW5mb19iYXJfYWRkX2J1dHRvbihHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBHVEtfU1RPQ0tfT0ssXG4mIzQzO1x0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgXCYjMzQ7X09LXCYjMzQ7LFxuIFx0XHRcdFx0R1RLX1JFU1BPTlNFX09LKTtcbiBcdGdfc2lnbmFsX2Nvbm5lY3QoaW5mb19iYXIsIFwmIzM0O3Jlc3BvbnNlXCYjMzQ7LFxuIFx0XHRcdCBHX0NBTExCQUNLKGd0a193aWRnZXRfaGlkZSksIE5VTEwpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oIGIvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmhcbmluZGV4IGEyYjQ5N2YwM2ZkNmUuLmJlZWE3NWQwMTk1NTYgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmhcbkBAIC00MCw2ICYjNDM7NDAsOSBAQCB2b2lkIHBlcmZfZ3RrX19pbml0X2hwcCh2b2lkKTtcbiBcbiB2b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZyk7XG4gdm9pZCBwZXJmX2d0a19fcmVzaXplX3dpbmRvdyhHdGtXaWRnZXQgKndpbmRvdyk7XG4mIzQzO3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpO1xuJiM0Mzt2b2lkIHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCh2b2lkKTtcbiYjNDM7dm9pZCBwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2codm9pZCk7XG4gY29uc3QgY2hhciAqcGVyZl9ndGtfX2dldF9wZXJjZW50X2NvbG9yKGRvdWJsZSBwZXJjZW50KTtcbiBHdGtXaWRnZXQgKnBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIodm9pZCk7XG4gXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmNcbmluZGV4IGJhZTIxZjMzNmFlNmQuLmYwMDUzZTNhZjA3NzYgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXG5AQCAtMzk1LDExICYjNDM7Mzk1LDkgQEAgc3RhdGljIHZvaWQgcGVyZl9ndGtfX3Nob3dfaGlzdHMoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGd0a190cmVlX3ZpZXdfc2V0X3J1bGVzX2hpbnQoR1RLX1RSRUVfVklFVyh2aWV3KSwgVFJVRSk7XG4tXG4gXHRnX3NpZ25hbF9jb25uZWN0KHZpZXcsIFwmIzM0O3Jvdy1hY3RpdmF0ZWRcJiMzNDssXG4gXHRcdFx0IEdfQ0FMTEJBQ0sob25fcm93X2FjdGl2YXRlZCksIE5VTEwpO1xuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTtcbiYjNDM7XHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwZXJmX2d0a19fYWRkX2hpZXJhcmNoeV9lbnRyaWVzKHN0cnVjdCBoaXN0cyAqaGlzdHMsXG5AQCAtNTgzLDExICYjNDM7NTgxLDkgQEAgc3RhdGljIHZvaWQgcGVyZl9ndGtfX3Nob3dfaGllcmFyY2h5KEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgaGlzdHMgKmhpc3RzLFxuIFx0cGVyZl9ndGtfX2FkZF9oaWVyYXJjaHlfZW50cmllcyhoaXN0cywgXHUwMDI2aGlzdHMtXHUwMDNlZW50cmllcywgc3RvcmUsXG4gXHRcdFx0XHRcdE5VTEwsIFx1MDAyNmhwcCwgbWluX3BjbnQpO1xuIFxuLVx0Z3RrX3RyZWVfdmlld19zZXRfcnVsZXNfaGludChHVEtfVFJFRV9WSUVXKHZpZXcpLCBUUlVFKTtcbi1cbiBcdGdfc2lnbmFsX2Nvbm5lY3QodmlldywgXCYjMzQ7cm93LWFjdGl2YXRlZFwmIzM0OyxcbiBcdFx0XHQgR19DQUxMQkFDSyhvbl9yb3dfYWN0aXZhdGVkKSwgTlVMTCk7XG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xuJiM0MztcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7XG4gfVxuIFxuIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxuQEAgLTYwNiwzMCAmIzQzOzYwMiwyOSBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcbiBcdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcbiBcdHNpZ25hbChTSUdURVJNLCBwZXJmX2d0a19fc2lnbmFsKTtcbiBcbi1cdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpO1xuJiM0MztcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7XG4gXG4gXHRndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksIFwmIzM0O3BlcmYgcmVwb3J0XCYjMzQ7KTtcbiBcbi1cdGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCBcJiMzNDtkZWxldGVfZXZlbnRcJiMzNDssIGd0a19tYWluX3F1aXQsIE5VTEwpO1xuLVxuIFx0cGdjdHggPSBwZXJmX2d0a19fYWN0aXZhdGVfY29udGV4dCh3aW5kb3cpO1xuIFx0aWYgKCFwZ2N0eClcbiBcdFx0cmV0dXJuIC0xO1xuIFxuLVx0dmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7XG4mIzQzO1x0dmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7XG4gXG4gXHRub3RlYm9vayA9IGd0a19ub3RlYm9va19uZXcoKTtcbiBcbi1cdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBub3RlYm9vaywgVFJVRSwgVFJVRSwgMCk7XG4mIzQzO1x0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4mIzQzO1x0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2spO1xuIFxuIFx0aW5mb19iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTtcbiBcdGlmIChpbmZvX2Jhcilcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGluZm9fYmFyLCBGQUxTRSwgRkFMU0UsIDApO1xuJiM0MztcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIpO1xuIFxuIFx0c3RhdGJhciA9IHBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIoKTtcbi1cdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBzdGF0YmFyLCBGQUxTRSwgRkFMU0UsIDApO1xuJiM0MztcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpO1xuIFxuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTtcbiYjNDM7XHRndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpO1xuIFxuIFx0ZXZsaXN0X19mb3JfZWFjaF9lbnRyeShldmxpc3QsIHBvcykge1xuIFx0XHRzdHJ1Y3QgaGlzdHMgKmhpc3RzID0gZXZzZWxfX2hpc3RzKHBvcyk7XG5AQCAtNjQ5LDcgJiM0Mzs2NDQsNyBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbi1cdFx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7XG4mIzQzO1x0XHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldygpO1xuIFxuIFx0XHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZF93aW5kb3cpLFxuIFx0XHRcdFx0XHRcdFx0R1RLX1BPTElDWV9BVVRPTUFUSUMsXG5AQCAtNjY1LDE1ICYjNDM7NjYwLDEyIEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxuIFx0XHRndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2UoR1RLX05PVEVCT09LKG5vdGVib29rKSwgc2Nyb2xsZWRfd2luZG93LCB0YWJfbGFiZWwpO1xuIFx0fVxuIFxuLVx0Z3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpO1xuLVxuIFx0cGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3cod2luZG93KTtcbi1cbi1cdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcbiYjNDM7XHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpbmRvdywgVFJVRSk7XG4gXG4gXHR1aV9oZWxwbGluZV9fcHVzaChoZWxwKTtcbiBcbi1cdGd0a19tYWluKCk7XG4mIzQzO1x0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXHUwMDI2cGdjdHgpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMgYi90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jXG5pbmRleCBlZWE2ZmNkZTUxOGE4Li4yOGE0YjQ4NjM2MGRlIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuQEAgLTMsNDcgJiM0MzszLDYyIEBAXG4gXG4gI2luY2x1ZGUgXCYjMzQ7Z3RrLmhcJiMzNDtcbiAjaW5jbHVkZSBcJiMzNDsuLi9wcm9ncmVzcy5oXCYjMzQ7XG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcdTAwM2VcbiBcbiBzdGF0aWMgR3RrV2lkZ2V0ICpkaWFsb2c7XG4gc3RhdGljIEd0a1dpZGdldCAqcHJvZ3Jlc3M7XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fZGVzdHJveWVkKEd0a1dpZGdldCAqd2lkZ2V0IF9fbWF5YmVfdW51c2VkLFxuJiM0MztcdFx0XHRcdFx0Z3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcbiYjNDM7e1xuJiM0MztcdGRpYWxvZyA9IE5VTEw7XG4mIzQzO1x0cHJvZ3Jlc3MgPSBOVUxMO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fdXBkYXRlKHN0cnVjdCB1aV9wcm9ncmVzcyAqcClcbiB7XG4gXHRkb3VibGUgZnJhY3Rpb24gPSBwLVx1MDAzZXRvdGFsID8gMS4wICogcC1cdTAwM2VjdXJyIC8gcC1cdTAwM2V0b3RhbCA6IDAuMDtcbiBcdGNoYXIgYnVmWzEwMjRdO1xuIFxuIFx0aWYgKGRpYWxvZyA9PSBOVUxMKSB7XG4tXHRcdEd0a1dpZGdldCAqdmJveCA9IGd0a192Ym94X25ldyhUUlVFLCA1KTtcbiYjNDM7XHRcdEd0a1dpZGdldCAqdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgNSk7XG4gXHRcdEd0a1dpZGdldCAqbGFiZWwgPSBndGtfbGFiZWxfbmV3KHAtXHUwMDNldGl0bGUpO1xuIFxuLVx0XHRkaWFsb2cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcbiYjNDM7XHRcdGRpYWxvZyA9IGd0a193aW5kb3dfbmV3KCk7XG4gXHRcdHByb2dyZXNzID0gZ3RrX3Byb2dyZXNzX2Jhcl9uZXcoKTtcbiBcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGxhYmVsLCBUUlVFLCBGQUxTRSwgMyk7XG4tXHRcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBwcm9ncmVzcywgVFJVRSwgVFJVRSwgMyk7XG4mIzQzO1x0XHRndGtfd2lkZ2V0X3NldF92ZXhwYW5kKGxhYmVsLCBUUlVFKTtcbiYjNDM7XHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGxhYmVsKTtcbiYjNDM7XHRcdGd0a193aWRnZXRfc2V0X3ZleHBhbmQocHJvZ3Jlc3MsIFRSVUUpO1xuJiM0MztcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgcHJvZ3Jlc3MpO1xuJiM0MztcbiYjNDM7XHRcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1coZGlhbG9nKSwgdmJveCk7XG4gXG4tXHRcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZGlhbG9nKSwgdmJveCk7XG4mIzQzO1x0XHRnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgXCYjMzQ7ZGVzdHJveVwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgR19DQUxMQkFDSyhndGtfdWlfcHJvZ3Jlc3NfX2Rlc3Ryb3llZCksIE5VTEwpO1xuIFxuIFx0XHRndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyksIFwmIzM0O3BlcmZcJiMzNDspO1xuLVx0XHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApO1xuLVx0XHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKGRpYWxvZyksIEdUS19XSU5fUE9TX0NFTlRFUik7XG4mIzQzO1x0XHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyhkaWFsb2cpLCAzMDAsIDgwKTtcbiBcbi1cdFx0Z3RrX3dpZGdldF9zaG93X2FsbChkaWFsb2cpO1xuJiM0MztcdFx0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZShkaWFsb2csIFRSVUUpO1xuIFx0fVxuIFxuIFx0Z3RrX3Byb2dyZXNzX2Jhcl9zZXRfZnJhY3Rpb24oR1RLX1BST0dSRVNTX0JBUihwcm9ncmVzcyksIGZyYWN0aW9uKTtcbiBcdHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIFwmIzM0OyVcJiMzNDtQUkl1NjRcJiMzNDsgLyAlXCYjMzQ7UFJJdTY0LCBwLVx1MDAzZWN1cnIsIHAtXHUwMDNldG90YWwpO1xuIFx0Z3RrX3Byb2dyZXNzX2Jhcl9zZXRfdGV4dChHVEtfUFJPR1JFU1NfQkFSKHByb2dyZXNzKSwgYnVmKTtcbiBcbi1cdC8qIHdlIGRpZG4mIzM5O3QgY2FsbCBndGtfbWFpbiB5ZXQsIHNvIGRvIGl0IG1hbnVhbGx5ICovXG4tXHR3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpXG4tXHRcdGd0a19tYWluX2l0ZXJhdGlvbigpO1xuJiM0MztcdC8qIHdlIGRpZG4mIzM5O3Qgc3RhcnQgYSBtYWluIGxvb3AgeWV0LCBzbyBwdW1wIGV2ZW50cyBtYW51YWxseSAqL1xuJiM0MztcdHdoaWxlIChnX21haW5fY29udGV4dF9wZW5kaW5nKE5VTEwpKVxuJiM0MztcdFx0Z19tYWluX2NvbnRleHRfaXRlcmF0aW9uKE5VTEwsIEZBTFNFKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19maW5pc2godm9pZClcbiB7XG4mIzQzO1x0aWYgKGRpYWxvZyA9PSBOVUxMKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdC8qIHRoaXMgd2lsbCBhbHNvIGRlc3Ryb3kgYWxsIG9mIGl0cyBjaGlsZHJlbiAqL1xuLVx0Z3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7XG4mIzQzO1x0Z3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7XG4gXG4gXHRkaWFsb2cgPSBOVUxMO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jIGIvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xuaW5kZXggZjVlZWU0ZDY2ODczOC4uOWI0NGYzNzE5NzQ3NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmNcbkBAIC0xMiw3ICYjNDM7MTIsNyBAQCBpbnQgcGVyZl9ndGtfX2luaXQodm9pZClcbiBcdGd0a191aV9wcm9ncmVzc19faW5pdCgpO1xuIFx0cGVyZl9ndGtfX2luaXRfaHBwKCk7XG4gXG4tXHRyZXR1cm4gZ3RrX2luaXRfY2hlY2soTlVMTCwgTlVMTCkgPyAwIDogLTE7XG4mIzQzO1x0cmV0dXJuIGd0a19pbml0X2NoZWNrKCkgPyAwIDogLTE7XG4gfVxuIFxuIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZClcbkBAIC0yMCw1ICYjNDM7MjAsNiBAQCB2b2lkIHBlcmZfZ3RrX19leGl0KGJvb2wgd2FpdF9mb3Jfb2sgX19tYXliZV91bnVzZWQpXG4gXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkpXG4gXHRcdHJldHVybjtcbiBcdHBlcmZfZXJyb3JfX3VucmVnaXN0ZXIoXHUwMDI2cGVyZl9ndGtfZW9wcyk7XG4tXHRndGtfbWFpbl9xdWl0KCk7XG4mIzQzO1x0cGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKCk7XG4mIzQzO1x0cGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7XG4gfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuaW5kZXggYzQ3ZjVjMzg3ODM4Yy4uNTA5Njg4OGI3YzE2MCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXG5AQCAtNCw2ICYjNDM7NCw3IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdHJpbmcuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9jb21waWxlci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvemFsbG9jLmhcdTAwM2VcbiBcbiBzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCAqcGdjdHg7XG5AQCAtMjgsMjcgJiM0MzsyOSw2MCBAQCBpbnQgcGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dChzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCAqKmN0eClcbiBcdHJldHVybiAwO1xuIH1cbiBcbiYjNDM7c3RhdGljIEdNYWluTG9vcCAqcGVyZl9ndGtfX2Vycm9yX2xvb3A7XG4mIzQzO1xuJiM0Mzt2b2lkIHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHBlcmZfZ3RrX19lcnJvcl9sb29wKVxuJiM0MztcdFx0Z19tYWluX2xvb3BfcXVpdChwZXJmX2d0a19fZXJyb3JfbG9vcCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UoR3RrRGlhbG9nICpkaWFsb2csXG4mIzQzO1x0XHRcdFx0ICAgICAgZ2ludCByZXNwb25zZV9pZCBfX21heWJlX3VudXNlZCxcbiYjNDM7XHRcdFx0XHQgICAgICBncG9pbnRlciBkYXRhIF9fbWF5YmVfdW51c2VkKVxuJiM0Mzt7XG4mIzQzO1x0Z3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuIFx0R3RrV2lkZ2V0ICpkaWFsb2c7XG4mIzQzO1x0dmFfbGlzdCBhcmdzX2NvcHk7XG4gXG4mIzQzO1x0dmFfY29weShhcmdzX2NvcHksIGFyZ3MpO1xuIFx0aWYgKCFwZXJmX2d0a19faXNfYWN0aXZlX2NvbnRleHQocGdjdHgpIHx8XG4tXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzKSBcdTAwM2MgMCkge1xuJiM0MztcdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3NfY29weSkgXHUwMDNjIDApIHtcbiYjNDM7XHRcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7RXJyb3I6XFxuXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuJiM0MztcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0ZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ld193aXRoX21hcmt1cChHVEtfV0lORE9XKHBnY3R4LVx1MDAzZW1haW5fd2luZG93KSxcbiBcdFx0XHRcdFx0R1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULFxuIFx0XHRcdFx0XHRHVEtfTUVTU0FHRV9FUlJPUixcbiBcdFx0XHRcdFx0R1RLX0JVVFRPTlNfQ0xPU0UsXG4gXHRcdFx0XHRcdFwmIzM0O1x1MDAzY2JcdTAwM2VFcnJvclx1MDAzYy9iXHUwMDNlXFxuXFxuJXNcJiMzNDssIG1zZyk7XG4tXHRndGtfZGlhbG9nX3J1bihHVEtfRElBTE9HKGRpYWxvZykpO1xuIFxuLVx0Z3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBcJiMzNDtyZXNwb25zZVwmIzM0OyBvbmx5IGZpcmVzIHdoZW4gYSBidXR0b24gaXMgY2xpY2tlZDsgREVTVFJPWV9XSVRIX1BBUkVOVFxuJiM0MztcdCAqIGRlc3Ryb3lzIHRoZSBkaWFsb2cgZGlyZWN0bHkgd2l0aG91dCBpdC4gUXVpdCBmcm9tIFwmIzM0O2Rlc3Ryb3lcJiMzNDtcbiYjNDM7XHQgKiBpbnN0ZWFkLCB3aGljaCBmaXJlcyBlaXRoZXIgd2F5LCBzbyB0aGUgbmVzdGVkIGxvb3AgYmVsb3cgY2FuJiMzOTt0XG4mIzQzO1x0ICogb3V0bGl2ZSB0aGUgZGlhbG9nIGFuZCBoYW5nLlxuJiM0MztcdCAqL1xuJiM0MztcdHBlcmZfZ3RrX19lcnJvcl9sb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIEZBTFNFKTtcbiYjNDM7XHRnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgXCYjMzQ7cmVzcG9uc2VcJiMzNDssXG4mIzQzO1x0XHRcdCBHX0NBTExCQUNLKHBlcmZfZ3RrX19kaWFsb2dfcmVzcG9uc2UpLCBOVUxMKTtcbiYjNDM7XHRnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCBcJiMzNDtkZXN0cm95XCYjMzQ7LFxuJiM0MztcdFx0XHRcdCBHX0NBTExCQUNLKGdfbWFpbl9sb29wX3F1aXQpLCBwZXJmX2d0a19fZXJyb3JfbG9vcCk7XG4mIzQzO1xuJiM0MztcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoZGlhbG9nLCBUUlVFKTtcbiYjNDM7XHRnX21haW5fbG9vcF9ydW4ocGVyZl9ndGtfX2Vycm9yX2xvb3ApO1xuJiM0MztcdGdfY2xlYXJfcG9pbnRlcihcdTAwMjZwZXJmX2d0a19fZXJyb3JfbG9vcCwgZ19tYWluX2xvb3BfdW5yZWYpO1xuJiM0MztcbiBcdGZyZWUobXNnKTtcbiBcdHJldHVybiAwO1xuIH1cbkBAIC01NywxNCAmIzQzOzkxLDE4IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuJiM0MztcdHZhX2xpc3QgYXJnc19jb3B5O1xuIFxuJiM0MztcdHZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTtcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxuLVx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbiYjNDM7XHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHR2YV9lbmQoYXJnc19jb3B5KTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1dhcm5pbmc6XFxuXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuJiM0MztcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0Z3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChwZ2N0eC1cdTAwM2VtZXNzYWdlX2xhYmVsKSwgbXNnKTtcbiBcdGd0a19pbmZvX2Jhcl9zZXRfbWVzc2FnZV90eXBlKEdUS19JTkZPX0JBUihwZ2N0eC1cdTAwM2VpbmZvX2JhciksXG5AQCAtNzgsMTQgJiM0MzsxMTYsMTggQEAgc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19pbmZvX2Jhcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbiBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX3N0YXR1c2Jhcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcbiB7XG4gXHRjaGFyICptc2csICpwO1xuJiM0MztcdHZhX2xpc3QgYXJnc19jb3B5O1xuIFxuJiM0MztcdHZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTtcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxuLVx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbiYjNDM7XHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHR2YV9lbmQoYXJnc19jb3B5KTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwmIzM0O1dhcm5pbmc6XFxuXCYjMzQ7KTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuJiM0MztcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0Z3RrX3N0YXR1c2Jhcl9wb3AoR1RLX1NUQVRVU0JBUihwZ2N0eC1cdTAwM2VzdGF0YmFyKSxcbiBcdFx0XHQgIHBnY3R4LVx1MDAzZXN0YXRiYXJfY3R4X2lkKTtcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL3NldHVwLmMgYi90b29scy9wZXJmL3VpL3NldHVwLmNcbmluZGV4IGZmODAwMDQ3ZTY5N2YuLmQ4ODczNDZjN2E2MzIgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL3NldHVwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuQEAgLTE0LDcgJiM0MzsxNCw3IEBAIGludCB1c2VfYnJvd3NlciA9IC0xO1xuIFxuICNkZWZpbmUgUEVSRl9HVEtfRFNPIFwmIzM0O2xpYnBlcmYtZ3RrLnNvXCYjMzQ7XG4gXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4mIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxuIFxuIHN0YXRpYyBpbnQgc2V0dXBfZ3RrX2Jyb3dzZXIodm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmMgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuY1xuaW5kZXggZGY3MGU5NWE4NDcwNC4uMTIzYjZkNWZjZWE3OCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuY1xuQEAgLTE0NSw2ICYjNDM7MTQ1LDE3IEBAIHN0YXRpYyBpbnQgYW5ub3RhdGVkX3NvdXJjZV9fYWxsb2NfaGlzdG9ncmFtcyhzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLFxuIFx0cmV0dXJuIHNyYy1cdTAwM2VoaXN0b2dyYW1zID8gMCA6IC0xO1xuIH1cbiBcbiYjNDM7c3RydWN0IHN5bV9oaXN0X2VudHJ5ICpcbiYjNDM7YW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHN5bV9oaXN0X2VudHJ5ICplbnRyeTtcbiYjNDM7XHRsb25nIGtleSA9IG9mZnNldCBcdTAwM2NcdTAwM2MgMTYgfCBldnNlbC1cdTAwM2Vjb3JlLmlkeDtcbiYjNDM7XG4mIzQzO1x0aWYgKCFoYXNobWFwX19maW5kKHNyYy1cdTAwM2VzYW1wbGVzLCBrZXksIFx1MDAyNmVudHJ5KSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcdHJldHVybiBlbnRyeTtcbiYjNDM7fVxuJiM0MztcbiB2b2lkIHN5bWJvbF9fYW5ub3RhdGVfemVyb19oaXN0b2dyYW1zKHN0cnVjdCBzeW1ib2wgKnN5bSlcbiB7XG4gXHRzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMgPSBzeW1ib2xfX2Fubm90YXRpb24oc3ltKTtcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaCBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oXG5pbmRleCBmYTA4ZDA5YjgwZjc2Li40MDAzOGEzNzc5ZDQ2IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oXG5AQCAtNDA2LDE2ICYjNDM7NDA2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3QgKmFubm90YXRpb25fX2hpc3RvZ3JhbShzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMsXG4gXHRyZXR1cm4gYW5ub3RhdGVkX3NvdXJjZV9faGlzdG9ncmFtKG5vdGVzLVx1MDAzZXNyYywgZXZzZWwpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqXG4tYW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KVxuLXtcbi1cdHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqZW50cnk7XG4tXHRsb25nIGtleSA9IG9mZnNldCBcdTAwM2NcdTAwM2MgMTYgfCBldnNlbC1cdTAwM2Vjb3JlLmlkeDtcbi1cbi1cdGlmICghaGFzaG1hcF9fZmluZChzcmMtXHUwMDNlc2FtcGxlcywga2V5LCBcdTAwMjZlbnRyeSkpXG4tXHRcdHJldHVybiBOVUxMO1xuLVx0cmV0dXJuIGVudHJ5O1xuLX1cbiYjNDM7c3RydWN0IHN5bV9oaXN0X2VudHJ5ICpcbiYjNDM7YW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KTtcbiBcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBhbm5vdGF0aW9uICpzeW1ib2xfX2Fubm90YXRpb24oc3RydWN0IHN5bWJvbCAqc3ltKVxuIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMDo1MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRvb2xzICh0b29scy9wZXJmIGFuZCB0b29scy9idWlsZCksIHBvcnRpbmcgcGVyZiYjMzk7cyBHVEsgaW50ZXJmYWNlIHN1cHBvcnQgZnJvbSBHVEsyIHRvIEdUSzQuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIGNvZGUgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAzMDljODIzNWRlZjZkZjcxM2ZhNDA5OTk0MWVlOTIwNmFmY2YxY2YKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIFNlcCA3IDAwOjUyOjAyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZSBiL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmUKaW5kZXggOTllYjBlYTA5NTM3NS4uN2ZmZWI3NWEwMWM3OSAxMDA2NDQKLS0tIGEvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlCkBAIC0xMTMsOCAmIzQzOzExMyw4IEBAIEZFQVRVUkVfVEVTVFNfRVhUUkEgOj0gICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBjb21waWxlLXgzMiAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgY3BsdXMtZGVtYW5nbGUgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIGN4YS1kZW1hbmdsZSAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBndGsyICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZ3RrMi1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFwKJiM0MzsgICAgICAgICBndGs0ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAomIzQzOyAgICAgICAgIGd0azQtaW5mb2JhciAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBoZWxsbyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgYmFiZWx0cmFjZTItY3RmLXdyaXRlciAgICAgICAgIFwKICAgICAgICAgIGxpYmNhcHN0b25lICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNDMsNiAmIzQzOzE0Myw3IEBAIGVuZGlmCiBGRUFUVVJFX0RJU1BMQVkgPz0gICAgICAgICAgICAgIFwKICAgICAgICAgIGxpYmR3ICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgZ2xpYmMgICAgICAgICAgICAgICAgICBcCiYjNDM7ICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICBsaWJlbGYgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIGxpYm51bWEgICAgICAgICAgICAgICAgXAogICAgICAgICAgbnVtYV9udW1fcG9zc2libGVfY3B1cyBcCmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZQppbmRleCA3ZDE2NTAxODExNmE1Li4yY2E5OTJmYmI5YWQ1IDEwMDY0NAotLS0gYS90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUKQEAgLTExLDggJiM0MzsxMSw4IEBAIEZJTEVTPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIHRlc3QtZXZlbnRmZC5iaW4gICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgIHRlc3QtZm9ydGlmeS1zb3VyY2UuYmluICAgICAgICAgICAgICAgIFwKICAgICAgICAgIHRlc3QtZ2xpYmMuYmluICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIHRlc3QtZ3RrMi5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIHRlc3QtZ3RrMi1pbmZvYmFyLmJpbiAgICAgICAgICAgICAgICAgIFwKJiM0MzsgICAgICAgICB0ZXN0LWd0azQuYmluICAgICAgICAgICAgICAgICAgICAgICAgICBcCiYjNDM7ICAgICAgICAgdGVzdC1ndGs0LWluZm9iYXIuYmluICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgdGVzdC1oZWxsby5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgdGVzdC1saWJiZmQuYmluICAgICAgICAgICAgICAgICAgICAgICAgXAogCSB0ZXN0LWxpYmJmZC10aHJlYWRzYWZlLmJpbiAgICAgIAlcCkBAIC0yNDAsMTEgJiM0MzsyNDAsMTEgQEAgJChPVVRQVVQpdGVzdC1saWJjcHVwb3dlci5iaW46CiAkKE9VVFBVVCl0ZXN0LWxpYnRyYWNlZnMuYmluOgogCSAkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlidHJhY2VmcyAyJmd0Oy9kZXYvbnVsbCkgLWx0cmFjZWZzCiAKLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46Ci0JJChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsmIzQzOy0yLjAgMiZndDsvZGV2L251bGwpIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMKJiM0MzskKE9VVFBVVCl0ZXN0LWd0azQuYmluOgomIzQzOwkkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0azQgMiZndDsvZGV2L251bGwpCiAKLSQoT1VUUFVUKXRlc3QtZ3RrMi1pbmZvYmFyLmJpbjoKLQkkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyJmd0Oy9kZXYvbnVsbCkKJiM0MzskKE9VVFBVVCl0ZXN0LWd0azQtaW5mb2Jhci5iaW46CiYjNDM7CSQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyJmd0Oy9kZXYvbnVsbCkKIAogZ3JlcC1saWJzICA9ICQoZmlsdGVyIC1sJSwkKDEpKQogc3RyaXAtbGlicyA9ICQoZmlsdGVyLW91dCAtbCUsJCgxKSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuYwpzaW1pbGFyaXR5IGluZGV4IDc3JQpyZW5hbWUgZnJvbSB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmMKcmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuYwppbmRleCBiMWI3MTZkZDU3MzMwLi42YzFiY2VlNTk1YTljIDEwMDY0NAotLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi1pbmZvYmFyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQtaW5mb2Jhci5jCkBAIC0zLDkgJiM0MzszLDkgQEAKICNpbmNsdWRlICZsdDtndGsvZ3RrLmgmZ3Q7CiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yICYjMzQ7LVdzdHJpY3QtcHJvdG90eXBlcyYjMzQ7CiAKLWludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiYjNDM7aW50IG1haW4odm9pZCkKIHsKLQlndGtfaW5pdCgmYW1wO2FyZ2MsICZhbXA7YXJndik7CiYjNDM7CWd0a19pbml0KCk7CiAJZ3RrX2luZm9fYmFyX25ldygpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuYwpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jCnJlbmFtZSB0byB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jCmluZGV4IDJhYWY0YmZjMjA1NTYuLmI5NTIwZTc0MDhiOTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuYwpAQCAtMyw5ICYjNDM7Myw5IEBACiAjaW5jbHVkZSAmbHQ7Z3RrL2d0ay5oJmd0OwogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBlcnJvciAmIzM0Oy1Xc3RyaWN0LXByb3RvdHlwZXMmIzM0OwogCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQomIzQzO2ludCBtYWluKHZvaWQpCiB7Ci0JZ3RrX2luaXQoJmFtcDthcmdjLCAmYW1wO2FyZ3YpOwomIzQzOwlndGtfaW5pdCgpOwogCiAgICAgICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dCBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHQKaW5kZXggMjJmODdlYWEzMjc5Ni4uN2FmOWIzZjgxYzA2NSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0CkBAIC0zNTEsNyAmIzQzOzM1MSw3IEBAIE9QVElPTlMKIAlyZXF1aXJlcyBhIHR0eSwgaWYgb25lIGlzIG5vdCBwcmVzZW50LCBhcyB3aGVuIHBpcGluZyB0byBvdGhlcgogCWNvbW1hbmRzLCB0aGUgc3RkaW8gaW50ZXJmYWNlIGlzIHVzZWQuCiAKLS0tZ3RrOjogVXNlIHRoZSBHVEsyIGludGVyZmFjZS4KJiM0MzstLWd0azo6IFVzZSB0aGUgR1RLNCBpbnRlcmZhY2UuCiAKIC1rOjoKIC0tdm1saW51eD0mbHQ7ZmlsZSZndDs6OgpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9NYWtlZmlsZSBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUKaW5kZXggNWI3MTM4MzdlZWRlNy4uNTYwMTQxMDY0NzlhMyAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL01ha2VmaWxlCkBAIC0xMDYsNyAmIzQzOzEwNiw3IEBAIGNsZWFuOgogIyBtYWtlIC1DIHRvb2xzL3BlcmYgLWYgdGVzdHMvbWFrZQogIwogYnVpbGQtdGVzdDoKLQlAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGsyIG91dAomIzQzOwlAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGs0IG91dAogCiBidWlsZC10ZXN0LXRhcmJhbGw6CiAJQCQoTUFLRSkgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3Rvcnkgb3V0CmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnCmluZGV4IDRkNTk5M2RhOWY5NDUuLmVmNzQxOWE1YjAxMzcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnCkBAIC03NzQsMjEgJiM0Mzs3NzQsMjYgQEAgaWZuZGVmIE5PX1NMQU5HCiAgIGVuZGlmCiBlbmRpZgogCi1pZmRlZiBHVEsyCi0gIEZMQUdTX0dUSzI9JChDRkxBR1MpICQoTERGTEFHUykgJChFWFRMSUJTKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0ayYjNDM7LTIuMCAyJmd0Oy9kZXYvbnVsbCkKLSAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMikKLSAgaWZuZXEgKCQoZmVhdHVyZS1ndGsyKSwgMSkKLSAgICAkKHdhcm5pbmcgR1RLMiBub3QgZm91bmQsIGRpc2FibGVzIEdUSzIgc3VwcG9ydC4gUGxlYXNlIGluc3RhbGwgZ3RrMi1kZXZlbCBvciBsaWJndGsyLjAtZGV2KQotICAgIE5PX0dUSzIgOj0gMQomIzQzO2lmZGVmIEdUSzQKJiM0MzsgIEZMQUdTX0dUSzQ9JChDRkxBR1MpICQoTERGTEFHUykgJChFWFRMSUJTKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0azQgMiZndDsvZGV2L251bGwpCiYjNDM7ICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0KQomIzQzOyAgaWZuZXEgKCQoZmVhdHVyZS1ndGs0KSwgMSkKJiM0MzsgICAgJCh3YXJuaW5nIEdUSzQgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEs0IHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azQtZGV2ZWwgb3IgbGliZ3RrLTQtZGV2KQomIzQzOyAgICBOT19HVEs0IDo9IDEKICAgZWxzZQotICAgICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azItaW5mb2JhcikKLSAgICBpZmVxICgkKGZlYXR1cmUtZ3RrMi1pbmZvYmFyKSwgMSkKJiM0MzsgICAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrNC1pbmZvYmFyKQomIzQzOyAgICBpZmVxICgkKGZlYXR1cmUtZ3RrNC1pbmZvYmFyKSwgMSkKICAgICAgIEdUS19DRkxBR1MgOj0gLURIQVZFX0dUS19JTkZPX0JBUl9TVVBQT1JUCiAgICAgZW5kaWYKLSAgICBDRkxBR1MgJiM0Mzs9IC1ESEFWRV9HVEsyX1NVUFBPUlQKLSAgICBHVEtfQ0ZMQUdTICYjNDM7PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgZ3RrJiM0MzstMi4wIDImZ3Q7L2Rldi9udWxsKQotICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrJiM0MzstMi4wIDImZ3Q7L2Rldi9udWxsKQomIzQzOyAgICBDRkxBR1MgJiM0Mzs9IC1ESEFWRV9HVEs0X1NVUFBPUlQKJiM0MzsgICAgR1RLX0NGTEFHUyAmIzQzOz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGd0azQgMiZndDsvZGV2L251bGwpCiYjNDM7ICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrNCAyJmd0Oy9kZXYvbnVsbCkKICAgICBFWFRMSUJTICYjNDM7PSAtbGRsCiYjNDM7ICAgICMgbGlicGVyZi1ndGsuc28gaXMgZGxvcGVuKCllZCBhdCBydW50aW1lIGFuZCBjYWxscyBiYWNrIGludG8KJiM0MzsgICAgIyBzeW1ib2xzIGRlZmluZWQgaW4gdGhlIHBlcmYgYmluYXJ5IGl0c2VsZiAoY2FsbGNoYWluX3BhcmFtLAomIzQzOyAgICAjIHN5bWJvbF9jb25mLCBldnNlbF9fbmFtZSwgLi4uKTogcGVyZiBuZWVkcyB0byBleHBvcnQgdGhvc2UKJiM0MzsgICAgIyBkeW5hbWljYWxseSBmb3IgdGhlIHBsdWdpbiB0byByZXNvbHZlIHRoZW0uCiYjNDM7ICAgIExERkxBR1MgJiM0Mzs9IC1yZHluYW1pYwogICBlbmRpZgogZW5kaWYKIApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmIGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmCmluZGV4IDI5Y2ZkNDRjNDI3ZjMuLjI0MzhiNDBlYWFlYzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZgomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL01ha2VmaWxlLnBlcmYKQEAgLTQ5LDcgJiM0Mzs0OSw3IEBAIGluY2x1ZGUgLi4vc2NyaXB0cy91dGlsaXRpZXMubWFrCiAjCiAjIERlZmluZSBOT19TTEFORyBpZiB5b3UgZG8gbm90IHdhbnQgVFVJIHN1cHBvcnQuCiAjCi0jIERlZmluZSBHVEsyIGlmIHlvdSB3YW50IEdUSyYjNDM7IEdVSSBzdXBwb3J0LgomIzQzOyMgRGVmaW5lIEdUSzQgaWYgeW91IHdhbnQgR1RLJiM0MzsgR1VJIHN1cHBvcnQuCiAjCiAjIERlZmluZSBOT19ERU1BTkdMRSBpZiB5b3UgZG8gbm90IHdhbnQgQyYjNDM7JiM0Mzsgc3ltYm9sIGRlbWFuZ2xpbmcuCiAjCkBAIC00NzMsNyAmIzQzOzQ3Myw3IEBAIGlmbmVxICgkKE9VVFBVVCksKQogICBDRkxBR1MgJiM0Mzs9IC1JJChPVVRQVVQpCiBlbmRpZgogCi1pZmRlZiBHVEsyCiYjNDM7aWZkZWYgR1RLNAogICBBTExfUFJPR1JBTVMgJiM0Mzs9ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvCiAgIEdUS19JTiA6PSAkKE9VVFBVVClndGstaW4ubwogZW5kaWYKQEAgLTgxMSw3ICYjNDM7ODExLDcgQEAgY2hlY2s6IHByZXBhcmUKIAogIyMjIEluc3RhbGxhdGlvbiBydWxlcwogCi1pZmRlZiBHVEsyCiYjNDM7aWZkZWYgR1RLNAogaW5zdGFsbC1ndGs6ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvCiAJJChjYWxsIFFVSUVUX0lOU1RBTEwsICYjMzk7R1RLIFVJJiMzOTspIFwKIAkJJChJTlNUQUxMKSAtZCAtbSA3NTUgJiMzOTskKERFU1RESVJfU1EpJChsaWJkaXJfU1EpJiMzOTs7IFwKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMKaW5kZXggNjljYjcyYjIwODJhNi4uMTUxNjNlMDgxYThjZSAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMKQEAgLTUyLDcgJiM0Mzs1Miw3IEBAIHN0cnVjdCBwZXJmX2Fubm90YXRlIHsKIAlib29sCSAgIHVzZV90dWk7CiAjZW5kaWYKIAlib29sCSAgIHVzZV9zdGRpbywgdXNlX3N0ZGlvMjsKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCWJvb2wJICAgdXNlX2d0azsKICNlbmRpZgogCWJvb2wJICAgc2tpcF9taXNzaW5nOwpAQCAtNzEyLDcgJiM0Mzs3MTIsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIAlPUFRfQk9PTEVBTigmIzM5O3EmIzM5OywgJiMzNDtxdWlldCYjMzQ7LCAmYW1wO3F1aWV0LCAmIzM0O2RvIG5vdyBzaG93IGFueSB3YXJuaW5ncyBvciBtZXNzYWdlcyYjMzQ7KSwKIAlPUFRfQk9PTEVBTigmIzM5O0QmIzM5OywgJiMzNDtkdW1wLXJhdy10cmFjZSYjMzQ7LCAmYW1wO2R1bXBfdHJhY2UsCiAJCSAgICAmIzM0O2R1bXAgcmF3IHRyYWNlIGluIEFTQ0lJJiMzNDspLAotI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUCiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUCiAJT1BUX0JPT0xFQU4oMCwgJiMzNDtndGsmIzM0OywgJmFtcDthbm5vdGF0ZS51c2VfZ3RrLCAmIzM0O1VzZSB0aGUgR1RLIGludGVyZmFjZSYjMzQ7KSwKICNlbmRpZgogI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVApAQCAtODI4LDcgJiM0Mzs4MjgsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKIAlpZiAoYW5ub3RhdGVfY2hlY2tfYXJncygpICZsdDsgMCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCWlmIChzeW1ib2xfY29uZi5zaG93X25yX3NhbXBsZXMgJmFtcDsmYW1wOyBhbm5vdGF0ZS51c2VfZ3RrKSB7CiAJCXByX2VycigmIzM0Oy0tc2hvdy1uci1zYW1wbGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gLS1ndGsgbW9kZSBhdCB0aGlzIHRpbWVcbiYjMzQ7KTsKIAkJcmV0dXJuIHJldDsKQEAgLTg5OCw3ICYjNDM7ODk4LDcgQEAgaW50IGNtZF9hbm5vdGF0ZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCiAJZWxzZSBpZiAoYW5ub3RhdGUudXNlX3R1aSkKIAkJdXNlX2Jyb3dzZXIgPSAxOwogI2VuZGlmCi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlQKJiM0MzsjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlQKIAllbHNlIGlmIChhbm5vdGF0ZS51c2VfZ3RrKQogCQl1c2VfYnJvd3NlciA9IDI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYwppbmRleCA2MGQxZjE2NjYyOWUwLi5kMTQzODRjNTg0NjYxIDEwMDY0NAotLS0gYS90b29scy9wZXJmL2J1aWx0aW4tcmVwb3J0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jCkBAIC04Miw3ICYjNDM7ODIsNyBAQCBzdHJ1Y3QgcmVwb3J0IHsKICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlQKIAlib29sCQkJdXNlX3R1aTsKICNlbmRpZgotI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUCiYjNDM7I2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUCiAJYm9vbAkJCXVzZV9ndGs7CiAjZW5kaWYKIAlib29sCQkJdXNlX3N0ZGlvOwpAQCAtMTM1OSw4ICYjNDM7MTM1OSw4IEBAIGludCBjbWRfcmVwb3J0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlQKIAlPUFRfQk9PTEVBTigwLCAmIzM0O3R1aSYjMzQ7LCAmYW1wO3JlcG9ydC51c2VfdHVpLCAmIzM0O1VzZSB0aGUgVFVJIGludGVyZmFjZSYjMzQ7KSwKICNlbmRpZgotI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUCi0JT1BUX0JPT0xFQU4oMCwgJiMzNDtndGsmIzM0OywgJmFtcDtyZXBvcnQudXNlX2d0aywgJiMzNDtVc2UgdGhlIEdUSzIgaW50ZXJmYWNlJiMzNDspLAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAomIzQzOwlPUFRfQk9PTEVBTigwLCAmIzM0O2d0ayYjMzQ7LCAmYW1wO3JlcG9ydC51c2VfZ3RrLCAmIzM0O1VzZSB0aGUgR1RLNCBpbnRlcmZhY2UmIzM0OyksCiAjZW5kaWYKIAlPUFRfQk9PTEVBTigwLCAmIzM0O3N0ZGlvJiMzNDssICZhbXA7cmVwb3J0LnVzZV9zdGRpbywKIAkJICAgICYjMzQ7VXNlIHRoZSBzdGRpbyBpbnRlcmZhY2UmIzM0OyksCkBAIC0xNzEwLDcgJiM0MzsxNzEwLDcgQEAgaW50IGNtZF9yZXBvcnQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQogCWVsc2UgaWYgKHJlcG9ydC51c2VfdHVpKQogCQl1c2VfYnJvd3NlciA9IDE7CiAjZW5kaWYKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCWVsc2UgaWYgKHJlcG9ydC51c2VfZ3RrKQogCQl1c2VfYnJvd3NlciA9IDI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2ggYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoCmluZGV4IGQwMDNlN2ZhYjJiZTguLmE2MDFhNTI2MGMxN2UgMTAwNzU1Ci0tLSBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2gKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaApAQCAtMTk5LDggJiM0MzsxOTksOCBAQCBmZWRvcmFfcGtnX2ZvcigpIHsKIAkjIG9wdC1pbiBmZWF0dXJlcywgd2hpY2ggYSBkZWZhdWx0IGJ1aWxkIGRvZXMgbm90IGVuYWJsZTogdGhlIGxpYmJmZAogCSMgZGlzYXNzZW1ibGVyIGZhbWlseSAobGliYmZkLCBsaWJiZmQtdGhyZWFkc2FmZSwgbGliYmZkLWxpYmVydHksCiAJIyBkaXNhc3NlbWJsZXItKiwgY3BsdXMtZGVtYW5nbGUpLCBvbmx5IGxpbmtlZCBvbiBCVUlMRF9OT05ESVNUUk8KLQkjIGJ1aWxkcyBhbmQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjYXBzdG9uZSwgR1RLMiwgTElCUEVSTCBhbmQKLQkjIExJQlVOV0lORCBzdXBwb3J0IChpZmRlZiBHVEsyIC8gaWZkZWYgTElCUEVSTCAvIExJQlVOV0lORD0xKSwKJiM0MzsJIyBidWlsZHMgYW5kIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgY2Fwc3RvbmUsIEdUSzQsIExJQlBFUkwgYW5kCiYjNDM7CSMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzQgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLAogCSMgYW5kIENvcmVTaWdodCAoaWZkZWYgQ09SRVNJR0hUKSwgYXJlIGRlbGliZXJhdGVseSBub3QgbWFwcGVkLgogCSMgbGliYWlvIGlzIG5vdCBtYXBwZWQgZWl0aGVyOiBpdHMKIAkjIHRlc3QgdXNlcyB0aGUgUE9TSVggQUlPIEFQSSAoYWlvLmgsIGFpb18qLCAtbHJ0KSwgcHJvdmlkZWQgYnkKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZSBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZQppbmRleCBkMmMyZjUyNmUxZGIwLi4yMDJhYjU1MDE5MTYxIDEwMDY0NAotLS0gYS90b29scy9wZXJmL3Rlc3RzL21ha2UKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi90ZXN0cy9tYWtlCkBAIC05NSw3ICYjNDM7OTUsNyBAQCBtYWtlX25vX2JhYmVsdHJhY2UyIDo9IE5PX0JBQkVMVFJBQ0UyPTEKIG1ha2Vfd2l0aF9jb3Jlc2lnaHQgOj0gQ09SRVNJR0hUPTEKIG1ha2Vfbm9fc2R0CSAgICA6PSBOT19TRFQ9MQogbWFrZV9ub19saWJwZm00ICAgICA6PSBOT19MSUJQRk00PTEKLW1ha2Vfd2l0aF9ndGsyICAgICAgOj0gR1RLMj0xCiYjNDM7bWFrZV93aXRoX2d0azQgICAgICA6PSBHVEs0PTEKIG1ha2VfcmVmY250X2NoZWNrICAgOj0gRVhUUkFfQ0ZMQUdTPSYjMzQ7LURSRUZDTlRfQ0hFQ0tJTkc9MSYjMzQ7CiBtYWtlX3RhZ3MgICAgICAgICAgIDo9IHRhZ3MKIG1ha2VfY3Njb3BlICAgICAgICAgOj0gY3Njb3BlCkBAIC0zMTgsNyAmIzQzOzMxOCw3IEBAICQocnVuKToKIAkkKGNhbGwgdGVzdCwkQCkgJmFtcDsmYW1wOyBcCiAJcm0gLXJmICRAICQkVE1QX0RFU1QgfHwgKGNhdCAkQCA7IGZhbHNlKQogCi1tYWtlX3dpdGhfZ3RrMjoKJiM0MzttYWtlX3dpdGhfZ3RrNDoKIAkkKGNhbGwgY2xlYW4pCiAJQFRNUF9ERVNUPSQkKG1rdGVtcCAtZCk7IFwKIAljbWQ9JiMzNDtjZCAkKFBFUkYpICZhbXA7JmFtcDsgJChNQUtFX0YpICQoJEApICQoUEFSQUxMRUxfT1BUKSAkKE9fT1BUKSBERVNURElSPSQkVE1QX0RFU1QmIzM0OzsgXApkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmMKaW5kZXggODkyMGUyOTg0MjBhOC4uZmM0NmFjMTUwNDA4OCAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jCkBAIC0xNjEsNyAmIzQzOzE2MSw3IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Fubm90YXRlX3N5bWJvbChHdGtXaWRnZXQgKndpbmRvdywgc3RydWN0IG1hcF9zeW1ib2wgKm1zLAogCQkJZ3RrX2xpc3Rfc3RvcmVfc2V0KHN0b3JlLCAmYW1wO2l0ZXIsIEFOTl9DT0xfX0xJTkUsIHMsIC0xKTsKIAl9CiAKLQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpOwomIzQzOwlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBvcywgbiwgJmFtcDtub3Rlcy0mZ3Q7c3JjLSZndDtzb3VyY2UsIGFsLm5vZGUpIHsKIAkJbGlzdF9kZWxfaW5pdCgmYW1wO3Bvcy0mZ3Q7YWwubm9kZSk7CkBAIC0yMTEsMzQgJiM0MzsyMTEsMzEgQEAgc3RhdGljIGludCBzeW1ib2xfX2d0a19hbm5vdGF0ZShzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsIHN0cnVjdCBldnNlbCAqZXZzZWwsCiAJCXNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTsKIAkJc2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpOwogCi0JCXdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOwomIzQzOwkJd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTsKIAkJZ3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyh3aW5kb3cpLCAmIzM0O3BlcmYgYW5ub3RhdGUmIzM0Oyk7CiAKLQkJZ19zaWduYWxfY29ubmVjdCh3aW5kb3csICYjMzQ7ZGVsZXRlX2V2ZW50JiMzNDssIGd0a19tYWluX3F1aXQsIE5VTEwpOwotCiAJCXBnY3R4ID0gcGVyZl9ndGtfX2FjdGl2YXRlX2NvbnRleHQod2luZG93KTsKIAkJaWYgKCFwZ2N0eCkKIAkJCXJldHVybiAtMTsKIAotCQl2Ym94ID0gZ3RrX3Zib3hfbmV3KEZBTFNFLCAwKTsKJiM0MzsJCXZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApOwogCQlub3RlYm9vayA9IGd0a19ub3RlYm9va19uZXcoKTsKIAkJcGdjdHgtJmd0O25vdGVib29rID0gbm90ZWJvb2s7CiAKLQkJZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG5vdGVib29rLCBUUlVFLCBUUlVFLCAwKTsKJiM0MzsJCWd0a193aWRnZXRfc2V0X3ZleHBhbmQobm90ZWJvb2ssIFRSVUUpOwomIzQzOwkJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2spOwogCiAJCWluZm9iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTsKLQkJaWYgKGluZm9iYXIpIHsKLQkJCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBpbmZvYmFyLAotCQkJCQkgICBGQUxTRSwgRkFMU0UsIDApOwotCQl9CiYjNDM7CQlpZiAoaW5mb2JhcikKJiM0MzsJCQlndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBpbmZvYmFyKTsKIAogCQlzdGF0YmFyID0gcGVyZl9ndGtfX3NldHVwX3N0YXR1c2JhcigpOwotCQlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTsKJiM0MzsJCWd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpOwogCi0JCWd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7CiYjNDM7CQlndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIHZib3gpOwogCX0KIAotCXNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpOwomIzQzOwlzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldygpOwogCXRhYl9sYWJlbCA9IGd0a19sYWJlbF9uZXcoc3ltLSZndDtuYW1lKTsKIAogCWd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksCkBAIC0yNjcsMTIgJiM0MzsyNjQsMTEgQEAgdm9pZCBwZXJmX2d0a19fc2hvd19hbm5vdGF0aW9ucyh2b2lkKQogCQlyZXR1cm47CiAKIAl3aW5kb3cgPSBwZ2N0eC0mZ3Q7bWFpbl93aW5kb3c7Ci0JZ3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpOwogCiAJcGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3cod2luZG93KTsKLQlndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7CiYjNDM7CWd0a193aWRnZXRfc2V0X3Zpc2libGUod2luZG93LCBUUlVFKTsKIAotCWd0a19tYWluKCk7CiYjNDM7CXBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKHdpbmRvdyk7CiAKIAlwZXJmX2d0a19fZGVhY3RpdmF0ZV9jb250ZXh0KCZhbXA7cGdjdHgpOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvYnJvd3Nlci5jIGIvdG9vbHMvcGVyZi91aS9ndGsvYnJvd3Nlci5jCmluZGV4IGQyZGFkZjM4NzNmYmQuLjk5YmIwZWE3NmQ3NzUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmMKQEAgLTE2LDIxICYjNDM7MTYsNTMgQEAgdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpCiB2b2lkIHBlcmZfZ3RrX19yZXNpemVfd2luZG93KEd0a1dpZGdldCAqd2luZG93KQogewogCUdka1JlY3RhbmdsZSByZWN0OwotCUdka1NjcmVlbiAqc2NyZWVuOwotCWludCBtb25pdG9yOwomIzQzOwlHZGtNb25pdG9yICptb25pdG9yOwomIzQzOwlHZGtEaXNwbGF5ICpkaXNwbGF5OwomIzQzOwlHTGlzdE1vZGVsICptb25pdG9yczsKIAlpbnQgaGVpZ2h0OwogCWludCB3aWR0aDsKIAotCXNjcmVlbiA9IGd0a193aWRnZXRfZ2V0X3NjcmVlbih3aW5kb3cpOwomIzQzOwlkaXNwbGF5ID0gZ3RrX3dpZGdldF9nZXRfZGlzcGxheSh3aW5kb3cpOwomIzQzOwltb25pdG9ycyA9IGdka19kaXNwbGF5X2dldF9tb25pdG9ycyhkaXNwbGF5KTsKJiM0MzsJbW9uaXRvciA9IGdfbGlzdF9tb2RlbF9nZXRfaXRlbShtb25pdG9ycywgMCk7CiYjNDM7CWlmICghbW9uaXRvcikgewomIzQzOwkJZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgODAwLCA2MDApOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiAKLQltb25pdG9yID0gZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5kb3coc2NyZWVuLCB3aW5kb3ctJmd0O3dpbmRvdyk7Ci0KLQlnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5KHNjcmVlbiwgbW9uaXRvciwgJmFtcDtyZWN0KTsKJiM0MzsJZ2RrX21vbml0b3JfZ2V0X2dlb21ldHJ5KG1vbml0b3IsICZhbXA7cmVjdCk7CiYjNDM7CWdfb2JqZWN0X3VucmVmKG1vbml0b3IpOwogCiAJd2lkdGgJPSByZWN0LndpZHRoICogMyAvIDQ7CiAJaGVpZ2h0CT0gcmVjdC5oZWlnaHQgKiAzIC8gNDsKIAotCWd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1cod2luZG93KSwgd2lkdGgsIGhlaWdodCk7CiYjNDM7CWd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksIHdpZHRoLCBoZWlnaHQpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgR01haW5Mb29wICpwZXJmX2d0a19fbWFpbl9sb29wOwomIzQzOwomIzQzO3ZvaWQgcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKHZvaWQpCiYjNDM7ewomIzQzOwlpZiAocGVyZl9ndGtfX21haW5fbG9vcCkKJiM0MzsJCWdfbWFpbl9sb29wX3F1aXQocGVyZl9ndGtfX21haW5fbG9vcCk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBnYm9vbGVhbiBwZXJmX2d0a19fY2xvc2VfcmVxdWVzdChHdGtXaWRnZXQgKndpZGdldCBfX21heWJlX3VudXNlZCwKJiM0MzsJCQkJCWdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpCiYjNDM7ewomIzQzOwlwZXJmX2d0a19fcXVpdF9tYWluX2xvb3AoKTsKJiM0MzsKJiM0MzsJcmV0dXJuIEZBTFNFOwomIzQzO30KJiM0MzsKJiM0Mzt2b2lkIHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKEd0a1dpZGdldCAqd2luZG93KQomIzQzO3sKJiM0MzsJZ19zaWduYWxfY29ubmVjdCh3aW5kb3csICYjMzQ7Y2xvc2UtcmVxdWVzdCYjMzQ7LAomIzQzOwkJCSBHX0NBTExCQUNLKHBlcmZfZ3RrX19jbG9zZV9yZXF1ZXN0KSwgTlVMTCk7CiYjNDM7CiYjNDM7CXBlcmZfZ3RrX19tYWluX2xvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgRkFMU0UpOwomIzQzOwlnX21haW5fbG9vcF9ydW4ocGVyZl9ndGtfX21haW5fbG9vcCk7CiYjNDM7CWdfY2xlYXJfcG9pbnRlcigmYW1wO3BlcmZfZ3RrX19tYWluX2xvb3AsIGdfbWFpbl9sb29wX3VucmVmKTsKIH0KIAogY29uc3QgY2hhciAqcGVyZl9ndGtfX2dldF9wZXJjZW50X2NvbG9yKGRvdWJsZSBwZXJjZW50KQpAQCAtNDcsMTggJiM0Mzs3OSwxNiBAQCBHdGtXaWRnZXQgKnBlcmZfZ3RrX19zZXR1cF9pbmZvX2Jhcih2b2lkKQogewogCUd0a1dpZGdldCAqaW5mb19iYXI7CiAJR3RrV2lkZ2V0ICpsYWJlbDsKLQlHdGtXaWRnZXQgKmNvbnRlbnRfYXJlYTsKIAogCWluZm9fYmFyID0gZ3RrX2luZm9fYmFyX25ldygpOwotCWd0a193aWRnZXRfc2V0X25vX3Nob3dfYWxsKGluZm9fYmFyLCBUUlVFKTsKJiM0MzsJZ3RrX3dpZGdldF9zZXRfdmlzaWJsZShpbmZvX2JhciwgRkFMU0UpOwogCiAJbGFiZWwgPSBndGtfbGFiZWxfbmV3KCYjMzQ7JiMzNDspOwogCWd0a193aWRnZXRfc2hvdyhsYWJlbCk7CiAKLQljb250ZW50X2FyZWEgPSBndGtfaW5mb19iYXJfZ2V0X2NvbnRlbnRfYXJlYShHVEtfSU5GT19CQVIoaW5mb19iYXIpKTsKLQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGNvbnRlbnRfYXJlYSksIGxhYmVsKTsKJiM0MzsJZ3RrX2luZm9fYmFyX2FkZF9jaGlsZChHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBsYWJlbCk7CiAKLQlndGtfaW5mb19iYXJfYWRkX2J1dHRvbihHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBHVEtfU1RPQ0tfT0ssCiYjNDM7CWd0a19pbmZvX2Jhcl9hZGRfYnV0dG9uKEdUS19JTkZPX0JBUihpbmZvX2JhciksICYjMzQ7X09LJiMzNDssCiAJCQkJR1RLX1JFU1BPTlNFX09LKTsKIAlnX3NpZ25hbF9jb25uZWN0KGluZm9fYmFyLCAmIzM0O3Jlc3BvbnNlJiMzNDssCiAJCQkgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2hpZGUpLCBOVUxMKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oIGIvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmgKaW5kZXggYTJiNDk3ZjAzZmQ2ZS4uYmVlYTc1ZDAxOTU1NiAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmgKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmgKQEAgLTQwLDYgJiM0Mzs0MCw5IEBAIHZvaWQgcGVyZl9ndGtfX2luaXRfaHBwKHZvaWQpOwogCiB2b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZyk7CiB2b2lkIHBlcmZfZ3RrX19yZXNpemVfd2luZG93KEd0a1dpZGdldCAqd2luZG93KTsKJiM0Mzt2b2lkIHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKEd0a1dpZGdldCAqd2luZG93KTsKJiM0Mzt2b2lkIHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCh2b2lkKTsKJiM0Mzt2b2lkIHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZyh2b2lkKTsKIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudCk7CiBHdGtXaWRnZXQgKnBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmMgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jCmluZGV4IGJhZTIxZjMzNmFlNmQuLmYwMDUzZTNhZjA3NzYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuYwpAQCAtMzk1LDExICYjNDM7Mzk1LDkgQEAgc3RhdGljIHZvaWQgcGVyZl9ndGtfX3Nob3dfaGlzdHMoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsCiAJCX0KIAl9CiAKLQlndGtfdHJlZV92aWV3X3NldF9ydWxlc19oaW50KEdUS19UUkVFX1ZJRVcodmlldyksIFRSVUUpOwotCiAJZ19zaWduYWxfY29ubmVjdCh2aWV3LCAmIzM0O3Jvdy1hY3RpdmF0ZWQmIzM0OywKIAkJCSBHX0NBTExCQUNLKG9uX3Jvd19hY3RpdmF0ZWQpLCBOVUxMKTsKLQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpOwomIzQzOwlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpOwogfQogCiBzdGF0aWMgdm9pZCBwZXJmX2d0a19fYWRkX2hpZXJhcmNoeV9lbnRyaWVzKHN0cnVjdCBoaXN0cyAqaGlzdHMsCkBAIC01ODMsMTEgJiM0Mzs1ODEsOSBAQCBzdGF0aWMgdm9pZCBwZXJmX2d0a19fc2hvd19oaWVyYXJjaHkoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsCiAJcGVyZl9ndGtfX2FkZF9oaWVyYXJjaHlfZW50cmllcyhoaXN0cywgJmFtcDtoaXN0cy0mZ3Q7ZW50cmllcywgc3RvcmUsCiAJCQkJCU5VTEwsICZhbXA7aHBwLCBtaW5fcGNudCk7CiAKLQlndGtfdHJlZV92aWV3X3NldF9ydWxlc19oaW50KEdUS19UUkVFX1ZJRVcodmlldyksIFRSVUUpOwotCiAJZ19zaWduYWxfY29ubmVjdCh2aWV3LCAmIzM0O3Jvdy1hY3RpdmF0ZWQmIzM0OywKIAkJCSBHX0NBTExCQUNLKG9uX3Jvd19hY3RpdmF0ZWQpLCBOVUxMKTsKLQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpOwomIzQzOwlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpOwogfQogCiBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCwKQEAgLTYwNiwzMCAmIzQzOzYwMiwyOSBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCwKIAlzaWduYWwoU0lHUVVJVCwgcGVyZl9ndGtfX3NpZ25hbCk7CiAJc2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpOwogCi0Jd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiYjNDM7CXdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7CiAKIAlndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksICYjMzQ7cGVyZiByZXBvcnQmIzM0Oyk7CiAKLQlnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgJiMzNDtkZWxldGVfZXZlbnQmIzM0OywgZ3RrX21haW5fcXVpdCwgTlVMTCk7Ci0KIAlwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7CiAJaWYgKCFwZ2N0eCkKIAkJcmV0dXJuIC0xOwogCi0JdmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7CiYjNDM7CXZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApOwogCiAJbm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7CiAKLQlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApOwomIzQzOwlndGtfd2lkZ2V0X3NldF92ZXhwYW5kKG5vdGVib29rLCBUUlVFKTsKJiM0MzsJZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2spOwogCiAJaW5mb19iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTsKIAlpZiAoaW5mb19iYXIpCi0JCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBpbmZvX2JhciwgRkFMU0UsIEZBTFNFLCAwKTsKJiM0MzsJCWd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9fYmFyKTsKIAogCXN0YXRiYXIgPSBwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKCk7Ci0JZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHN0YXRiYXIsIEZBTFNFLCBGQUxTRSwgMCk7CiYjNDM7CWd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpOwogCi0JZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTsKJiM0MzsJZ3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyh3aW5kb3cpLCB2Ym94KTsKIAogCWV2bGlzdF9fZm9yX2VhY2hfZW50cnkoZXZsaXN0LCBwb3MpIHsKIAkJc3RydWN0IGhpc3RzICpoaXN0cyA9IGV2c2VsX19oaXN0cyhwb3MpOwpAQCAtNjQ5LDcgJiM0Mzs2NDQsNyBAQCBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCwKIAkJCX0KIAkJfQogCi0JCXNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpOwomIzQzOwkJc2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoKTsKIAogCQlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZF93aW5kb3cpLAogCQkJCQkJCUdUS19QT0xJQ1lfQVVUT01BVElDLApAQCAtNjY1LDE1ICYjNDM7NjYwLDEyIEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLAogCQlndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2UoR1RLX05PVEVCT09LKG5vdGVib29rKSwgc2Nyb2xsZWRfd2luZG93LCB0YWJfbGFiZWwpOwogCX0KIAotCWd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTsKLQogCXBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7Ci0KLQlndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7CiYjNDM7CWd0a193aWRnZXRfc2V0X3Zpc2libGUod2luZG93LCBUUlVFKTsKIAogCXVpX2hlbHBsaW5lX19wdXNoKGhlbHApOwogCi0JZ3RrX21haW4oKTsKJiM0MzsJcGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTsKIAogCXBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoJmFtcDtwZ2N0eCk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMgYi90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jCmluZGV4IGVlYTZmY2RlNTE4YTguLjI4YTRiNDg2MzYwZGUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuYwpAQCAtMyw0NyAmIzQzOzMsNjIgQEAKIAogI2luY2x1ZGUgJiMzNDtndGsuaCYjMzQ7CiAjaW5jbHVkZSAmIzM0Oy4uL3Byb2dyZXNzLmgmIzM0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jb21waWxlci5oJmd0OwogCiBzdGF0aWMgR3RrV2lkZ2V0ICpkaWFsb2c7CiBzdGF0aWMgR3RrV2lkZ2V0ICpwcm9ncmVzczsKIAomIzQzO3N0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fZGVzdHJveWVkKEd0a1dpZGdldCAqd2lkZ2V0IF9fbWF5YmVfdW51c2VkLAomIzQzOwkJCQkJZ3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZCkKJiM0Mzt7CiYjNDM7CWRpYWxvZyA9IE5VTEw7CiYjNDM7CXByb2dyZXNzID0gTlVMTDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX3VwZGF0ZShzdHJ1Y3QgdWlfcHJvZ3Jlc3MgKnApCiB7CiAJZG91YmxlIGZyYWN0aW9uID0gcC0mZ3Q7dG90YWwgPyAxLjAgKiBwLSZndDtjdXJyIC8gcC0mZ3Q7dG90YWwgOiAwLjA7CiAJY2hhciBidWZbMTAyNF07CiAKIAlpZiAoZGlhbG9nID09IE5VTEwpIHsKLQkJR3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX3Zib3hfbmV3KFRSVUUsIDUpOwomIzQzOwkJR3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCA1KTsKIAkJR3RrV2lkZ2V0ICpsYWJlbCA9IGd0a19sYWJlbF9uZXcocC0mZ3Q7dGl0bGUpOwogCi0JCWRpYWxvZyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOwomIzQzOwkJZGlhbG9nID0gZ3RrX3dpbmRvd19uZXcoKTsKIAkJcHJvZ3Jlc3MgPSBndGtfcHJvZ3Jlc3NfYmFyX25ldygpOwogCi0JCWd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBsYWJlbCwgVFJVRSwgRkFMU0UsIDMpOwotCQlndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgcHJvZ3Jlc3MsIFRSVUUsIFRSVUUsIDMpOwomIzQzOwkJZ3RrX3dpZGdldF9zZXRfdmV4cGFuZChsYWJlbCwgVFJVRSk7CiYjNDM7CQlndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBsYWJlbCk7CiYjNDM7CQlndGtfd2lkZ2V0X3NldF92ZXhwYW5kKHByb2dyZXNzLCBUUlVFKTsKJiM0MzsJCWd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHByb2dyZXNzKTsKJiM0MzsKJiM0MzsJCWd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1coZGlhbG9nKSwgdmJveCk7CiAKLQkJZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihkaWFsb2cpLCB2Ym94KTsKJiM0MzsJCWdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAmIzM0O2Rlc3Ryb3kmIzM0OywKJiM0MzsJCQkJIEdfQ0FMTEJBQ0soZ3RrX3VpX3Byb2dyZXNzX19kZXN0cm95ZWQpLCBOVUxMKTsKIAogCQlndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyksICYjMzQ7cGVyZiYjMzQ7KTsKLQkJZ3RrX3dpbmRvd19yZXNpemUoR1RLX1dJTkRPVyhkaWFsb2cpLCAzMDAsIDgwKTsKLQkJZ3RrX3dpbmRvd19zZXRfcG9zaXRpb24oR1RLX1dJTkRPVyhkaWFsb2cpLCBHVEtfV0lOX1BPU19DRU5URVIpOwomIzQzOwkJZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1coZGlhbG9nKSwgMzAwLCA4MCk7CiAKLQkJZ3RrX3dpZGdldF9zaG93X2FsbChkaWFsb2cpOwomIzQzOwkJZ3RrX3dpZGdldF9zZXRfdmlzaWJsZShkaWFsb2csIFRSVUUpOwogCX0KIAogCWd0a19wcm9ncmVzc19iYXJfc2V0X2ZyYWN0aW9uKEdUS19QUk9HUkVTU19CQVIocHJvZ3Jlc3MpLCBmcmFjdGlvbik7CiAJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgJiMzNDslJiMzNDtQUkl1NjQmIzM0OyAvICUmIzM0O1BSSXU2NCwgcC0mZ3Q7Y3VyciwgcC0mZ3Q7dG90YWwpOwogCWd0a19wcm9ncmVzc19iYXJfc2V0X3RleHQoR1RLX1BST0dSRVNTX0JBUihwcm9ncmVzcyksIGJ1Zik7CiAKLQkvKiB3ZSBkaWRuJiMzOTt0IGNhbGwgZ3RrX21haW4geWV0LCBzbyBkbyBpdCBtYW51YWxseSAqLwotCXdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSkKLQkJZ3RrX21haW5faXRlcmF0aW9uKCk7CiYjNDM7CS8qIHdlIGRpZG4mIzM5O3Qgc3RhcnQgYSBtYWluIGxvb3AgeWV0LCBzbyBwdW1wIGV2ZW50cyBtYW51YWxseSAqLwomIzQzOwl3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZyhOVUxMKSkKJiM0MzsJCWdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihOVUxMLCBGQUxTRSk7CiB9CiAKIHN0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fZmluaXNoKHZvaWQpCiB7CiYjNDM7CWlmIChkaWFsb2cgPT0gTlVMTCkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAkvKiB0aGlzIHdpbGwgYWxzbyBkZXN0cm95IGFsbCBvZiBpdHMgY2hpbGRyZW4gKi8KLQlndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsKJiM0MzsJZ3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7CiAKIAlkaWFsb2cgPSBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmMKaW5kZXggZjVlZWU0ZDY2ODczOC4uOWI0NGYzNzE5NzQ3NyAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jCkBAIC0xMiw3ICYjNDM7MTIsNyBAQCBpbnQgcGVyZl9ndGtfX2luaXQodm9pZCkKIAlndGtfdWlfcHJvZ3Jlc3NfX2luaXQoKTsKIAlwZXJmX2d0a19faW5pdF9ocHAoKTsKIAotCXJldHVybiBndGtfaW5pdF9jaGVjayhOVUxMLCBOVUxMKSA/IDAgOiAtMTsKJiM0MzsJcmV0dXJuIGd0a19pbml0X2NoZWNrKCkgPyAwIDogLTE7CiB9CiAKIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZCkKQEAgLTIwLDUgJiM0MzsyMCw2IEBAIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZCkKIAlpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkpCiAJCXJldHVybjsKIAlwZXJmX2Vycm9yX191bnJlZ2lzdGVyKCZhbXA7cGVyZl9ndGtfZW9wcyk7Ci0JZ3RrX21haW5fcXVpdCgpOwomIzQzOwlwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2coKTsKJiM0MzsJcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7CiB9CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmMgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmMKaW5kZXggYzQ3ZjVjMzg3ODM4Yy4uNTA5Njg4OGI3YzE2MCAxMDA2NDQKLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuYwpAQCAtNCw2ICYjNDM7NCw3IEBACiAKICNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDsKICNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvY29tcGlsZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC96YWxsb2MuaCZndDsKIAogc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKnBnY3R4OwpAQCAtMjgsMjcgJiM0MzsyOSw2MCBAQCBpbnQgcGVyZl9ndGtfX2RlYWN0aXZhdGVfY29udGV4dChzdHJ1Y3QgcGVyZl9ndGtfY29udGV4dCAqKmN0eCkKIAlyZXR1cm4gMDsKIH0KIAomIzQzO3N0YXRpYyBHTWFpbkxvb3AgKnBlcmZfZ3RrX19lcnJvcl9sb29wOwomIzQzOwomIzQzO3ZvaWQgcGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKHZvaWQpCiYjNDM7ewomIzQzOwlpZiAocGVyZl9ndGtfX2Vycm9yX2xvb3ApCiYjNDM7CQlnX21haW5fbG9vcF9xdWl0KHBlcmZfZ3RrX19lcnJvcl9sb29wKTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgcGVyZl9ndGtfX2RpYWxvZ19yZXNwb25zZShHdGtEaWFsb2cgKmRpYWxvZywKJiM0MzsJCQkJICAgICAgZ2ludCByZXNwb25zZV9pZCBfX21heWJlX3VudXNlZCwKJiM0MzsJCQkJICAgICAgZ3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZCkKJiM0Mzt7CiYjNDM7CWd0a193aW5kb3dfZGVzdHJveShHVEtfV0lORE9XKGRpYWxvZykpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogewogCWNoYXIgKm1zZzsKIAlHdGtXaWRnZXQgKmRpYWxvZzsKJiM0MzsJdmFfbGlzdCBhcmdzX2NvcHk7CiAKJiM0MzsJdmFfY29weShhcmdzX2NvcHksIGFyZ3MpOwogCWlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fAotCSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJncykgJmx0OyAwKSB7CiYjNDM7CSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJnc19jb3B5KSAmbHQ7IDApIHsKJiM0MzsJCXZhX2VuZChhcmdzX2NvcHkpOwogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtFcnJvcjpcbiYjMzQ7KTsKIAkJdmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpOwogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKIAkJcmV0dXJuIC0xOwogCX0KJiM0MzsJdmFfZW5kKGFyZ3NfY29weSk7CiAKIAlkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3X3dpdGhfbWFya3VwKEdUS19XSU5ET1cocGdjdHgtJmd0O21haW5fd2luZG93KSwKIAkJCQkJR1RLX0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULAogCQkJCQlHVEtfTUVTU0FHRV9FUlJPUiwKIAkJCQkJR1RLX0JVVFRPTlNfQ0xPU0UsCiAJCQkJCSYjMzQ7Jmx0O2ImZ3Q7RXJyb3ImbHQ7L2ImZ3Q7XG5cbiVzJiMzNDssIG1zZyk7Ci0JZ3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTsKIAotCWd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOwomIzQzOwkvKgomIzQzOwkgKiAmIzM0O3Jlc3BvbnNlJiMzNDsgb25seSBmaXJlcyB3aGVuIGEgYnV0dG9uIGlzIGNsaWNrZWQ7IERFU1RST1lfV0lUSF9QQVJFTlQKJiM0MzsJICogZGVzdHJveXMgdGhlIGRpYWxvZyBkaXJlY3RseSB3aXRob3V0IGl0LiBRdWl0IGZyb20gJiMzNDtkZXN0cm95JiMzNDsKJiM0MzsJICogaW5zdGVhZCwgd2hpY2ggZmlyZXMgZWl0aGVyIHdheSwgc28gdGhlIG5lc3RlZCBsb29wIGJlbG93IGNhbiYjMzk7dAomIzQzOwkgKiBvdXRsaXZlIHRoZSBkaWFsb2cgYW5kIGhhbmcuCiYjNDM7CSAqLwomIzQzOwlwZXJmX2d0a19fZXJyb3JfbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBGQUxTRSk7CiYjNDM7CWdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAmIzM0O3Jlc3BvbnNlJiMzNDssCiYjNDM7CQkJIEdfQ0FMTEJBQ0socGVyZl9ndGtfX2RpYWxvZ19yZXNwb25zZSksIE5VTEwpOwomIzQzOwlnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCAmIzM0O2Rlc3Ryb3kmIzM0OywKJiM0MzsJCQkJIEdfQ0FMTEJBQ0soZ19tYWluX2xvb3BfcXVpdCksIHBlcmZfZ3RrX19lcnJvcl9sb29wKTsKJiM0MzsKJiM0MzsJZ3RrX3dpZGdldF9zZXRfdmlzaWJsZShkaWFsb2csIFRSVUUpOwomIzQzOwlnX21haW5fbG9vcF9ydW4ocGVyZl9ndGtfX2Vycm9yX2xvb3ApOwomIzQzOwlnX2NsZWFyX3BvaW50ZXIoJmFtcDtwZXJmX2d0a19fZXJyb3JfbG9vcCwgZ19tYWluX2xvb3BfdW5yZWYpOwomIzQzOwogCWZyZWUobXNnKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTU3LDE0ICYjNDM7OTEsMTggQEAgc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCiBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX2luZm9fYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogewogCWNoYXIgKm1zZzsKJiM0MzsJdmFfbGlzdCBhcmdzX2NvcHk7CiAKJiM0MzsJdmFfY29weShhcmdzX2NvcHksIGFyZ3MpOwogCWlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fAotCSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJncykgJmx0OyAwKSB7CiYjNDM7CSAgICB2YXNwcmludGYoJmFtcDttc2csIGZvcm1hdCwgYXJnc19jb3B5KSAmbHQ7IDApIHsKJiM0MzsJCXZhX2VuZChhcmdzX2NvcHkpOwogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtXYXJuaW5nOlxuJiMzNDspOwogCQl2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7CiAJCWZwcmludGYoc3RkZXJyLCAmIzM0O1xuJiMzNDspOwogCQlyZXR1cm4gLTE7CiAJfQomIzQzOwl2YV9lbmQoYXJnc19jb3B5KTsKIAogCWd0a19sYWJlbF9zZXRfdGV4dChHVEtfTEFCRUwocGdjdHgtJmd0O21lc3NhZ2VfbGFiZWwpLCBtc2cpOwogCWd0a19pbmZvX2Jhcl9zZXRfbWVzc2FnZV90eXBlKEdUS19JTkZPX0JBUihwZ2N0eC0mZ3Q7aW5mb19iYXIpLApAQCAtNzgsMTQgJiM0MzsxMTYsMTggQEAgc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19pbmZvX2Jhcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfc3RhdHVzYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQogewogCWNoYXIgKm1zZywgKnA7CiYjNDM7CXZhX2xpc3QgYXJnc19jb3B5OwogCiYjNDM7CXZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTsKIAlpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkgfHwKLQkgICAgdmFzcHJpbnRmKCZhbXA7bXNnLCBmb3JtYXQsIGFyZ3MpICZsdDsgMCkgewomIzQzOwkgICAgdmFzcHJpbnRmKCZhbXA7bXNnLCBmb3JtYXQsIGFyZ3NfY29weSkgJmx0OyAwKSB7CiYjNDM7CQl2YV9lbmQoYXJnc19jb3B5KTsKIAkJZnByaW50ZihzdGRlcnIsICYjMzQ7V2FybmluZzpcbiYjMzQ7KTsKIAkJdmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpOwogCQlmcHJpbnRmKHN0ZGVyciwgJiMzNDtcbiYjMzQ7KTsKIAkJcmV0dXJuIC0xOwogCX0KJiM0MzsJdmFfZW5kKGFyZ3NfY29weSk7CiAKIAlndGtfc3RhdHVzYmFyX3BvcChHVEtfU1RBVFVTQkFSKHBnY3R4LSZndDtzdGF0YmFyKSwKIAkJCSAgcGdjdHgtJmd0O3N0YXRiYXJfY3R4X2lkKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYwppbmRleCBmZjgwMDA0N2U2OTdmLi5kODg3MzQ2YzdhNjMyIDEwMDY0NAotLS0gYS90b29scy9wZXJmL3VpL3NldHVwLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvcGVyZi91aS9zZXR1cC5jCkBAIC0xNCw3ICYjNDM7MTQsNyBAQCBpbnQgdXNlX2Jyb3dzZXIgPSAtMTsKIAogI2RlZmluZSBQRVJGX0dUS19EU08gJiMzNDtsaWJwZXJmLWd0ay5zbyYjMzQ7CiAKLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVAomIzQzOyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVAogCiBzdGF0aWMgaW50IHNldHVwX2d0a19icm93c2VyKHZvaWQpCiB7CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuYyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jCmluZGV4IGRmNzBlOTVhODQ3MDQuLjEyM2I2ZDVmY2VhNzggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jCkBAIC0xNDUsNiAmIzQzOzE0NSwxNyBAQCBzdGF0aWMgaW50IGFubm90YXRlZF9zb3VyY2VfX2FsbG9jX2hpc3RvZ3JhbXMoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywKIAlyZXR1cm4gc3JjLSZndDtoaXN0b2dyYW1zID8gMCA6IC0xOwogfQogCiYjNDM7c3RydWN0IHN5bV9oaXN0X2VudHJ5ICoKJiM0Mzthbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKmVudHJ5OwomIzQzOwlsb25nIGtleSA9IG9mZnNldCAmbHQ7Jmx0OyAxNiB8IGV2c2VsLSZndDtjb3JlLmlkeDsKJiM0MzsKJiM0MzsJaWYgKCFoYXNobWFwX19maW5kKHNyYy0mZ3Q7c2FtcGxlcywga2V5LCAmYW1wO2VudHJ5KSkKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwlyZXR1cm4gZW50cnk7CiYjNDM7fQomIzQzOwogdm9pZCBzeW1ib2xfX2Fubm90YXRlX3plcm9faGlzdG9ncmFtcyhzdHJ1Y3Qgc3ltYm9sICpzeW0pCiB7CiAJc3RydWN0IGFubm90YXRpb24gKm5vdGVzID0gc3ltYm9sX19hbm5vdGF0aW9uKHN5bSk7CmRpZmYgLS1naXQgYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaCBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oCmluZGV4IGZhMDhkMDliODBmNzYuLjQwMDM4YTM3NzlkNDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oCkBAIC00MDYsMTYgJiM0Mzs0MDYsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBzeW1faGlzdCAqYW5ub3RhdGlvbl9faGlzdG9ncmFtKHN0cnVjdCBhbm5vdGF0aW9uICpub3RlcywKIAlyZXR1cm4gYW5ub3RhdGVkX3NvdXJjZV9faGlzdG9ncmFtKG5vdGVzLSZndDtzcmMsIGV2c2VsKTsKIH0KIAotc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKgotYW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KQotewotCXN0cnVjdCBzeW1faGlzdF9lbnRyeSAqZW50cnk7Ci0JbG9uZyBrZXkgPSBvZmZzZXQgJmx0OyZsdDsgMTYgfCBldnNlbC0mZ3Q7Y29yZS5pZHg7Ci0KLQlpZiAoIWhhc2htYXBfX2ZpbmQoc3JjLSZndDtzYW1wbGVzLCBrZXksICZhbXA7ZW50cnkpKQotCQlyZXR1cm4gTlVMTDsKLQlyZXR1cm4gZW50cnk7Ci19CiYjNDM7c3RydWN0IHN5bV9oaXN0X2VudHJ5ICoKJiM0Mzthbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpOwogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBhbm5vdGF0aW9uICpzeW1ib2xfX2Fubm90YXRpb24oc3RydWN0IHN5bWJvbCAqc3ltKQogewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDEzNwoJCQkJCQkJb3V0cHV0OiA4MgoJCQkJCQkJdGhvdWdodHM6IDkyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgRXZhbHVhdGlvbjogTmVnYXRpdmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHVzZXIgd2FudHMgbWUgdG8gZXZhbHVhdGUgdGhpcyBwYXRjaCBzZXJpZXMgYXBwbGllZCB0byB0aGUga2VybmVsIEhFQUQuIEZpcnN0LCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgZmlsZXMgdGhhdCB3ZXJlIG1vZGlmaWVkLiBGcm9tIHRoZSBkaWZmLCBJJiMzOTttIHNlZWluZyBldmVyeXRoaW5nIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGB0b29scy9gIGRpcmVjdG9yeSDigJMgc3BlY2lmaWNhbGx5LCBgdG9vbHMvcGVyZmAgYW5kIGB0b29scy9idWlsZGAuCgpOb3csIGFjY29yZGluZyB0byB0aGUgdHJpYWdlIGd1aWRlbGluZXMsIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBmYWxscyBpbnRvIHRoZSAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGNhdGVnb3J5LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gY2hlY2tpbmcgaWYgYWxsIHRoZSBtb2RpZmllZCBjb2RlIHN0cmljdGx5IGZhbGxzIGludG8gdGhlIGNyaXRlcmlhIG9mOiAmIzM0O05vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMsIGxpa2UgbW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgc3BlbGxpbmcgZml4ZXMsIG9yIHVzZXItc3BhY2UgZGlyZWN0b3JpZXMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKSB0aGF0IGRvbiYjMzk7dCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBgdm1saW51eGAgb3Iga2VybmVsIG1vZHVsZXMuJiMzNDsKCkxvb2tpbmcgYXQgdGhlIGxpc3Qgb2YgZmlsZXMgYWdhaW46IGB0b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlYCwgYHRvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGVgLCBhbmQgdGhlIGB0ZXN0LWd0azQtaW5mb2Jhci5jYCBhbmQgYHRlc3QtZ3RrNC5jYCBmaWxlcyB3aXRoaW4gYHRvb2xzL2J1aWxkL2ZlYXR1cmVgIGxvb2sgbGlrZSBidWlsZCBzeXN0ZW0gY2hhbmdlcywgYW5kIHRlc3RpbmcsIHNwZWNpZmljYWxseSBmb3IgdGhlIEdUSyBidWlsZCwgd2hpY2ggaXMgdXNlci1zcGFjZSBhbmQgZG9lc24mIzM5O3QgZGlyZWN0bHkgaW1wYWN0IHRoZSBrZXJuZWwuIFRoZSBgdG9vbHMvcGVyZmAgZGlyZWN0b3J5IGhvdXNlcyB0aGUgbWFqb3JpdHkgb2YgdGhlIGNoYW5nZXMsIGFuZCBzZWVtcyB0byBiZSB1cGRhdGluZyBgcGVyZmAgdG9vbGluZy4gVGhlcmUgYXJlIE1ha2VmaWxlIGNoYW5nZXMsIGRvY3VtZW50YXRpb24gdXBkYXRlcyAoYHBlcmYtcmVwb3J0LnR4dGApLCBidWlsZCBjb25maWd1cmF0aW9ucywgc2NyaXB0cywgYW5kIHVwZGF0ZXMgdG8gdGhlIEdUSy1iYXNlZCBVSSAoYHVpL2d0ay8qYCkgYW5kIHJlbGF0ZWQgdXRpbGl0aWVzIChgdXRpbC8qYCwgYGJ1aWx0aW4tKmApLiBUaGUgZm9jdXMgaGVyZSBhcHBlYXJzIHRvIGJlIHBvcnRpbmcgYHBlcmZgJiMzOTtzIEdUSyBVSSBzdXBwb3J0IGZyb20gR1RLMiB0byBHVEs0LgoKR2l2ZW4gdGhhdCAqYWxsKiB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvYCAoYW5kIHRoZSBgYnVpbGRgIHN1YmRpcmVjdG9yeSksIGRlYWxpbmcgd2l0aCB1c2VyLXNwYWNlIHRvb2xpbmcgYW5kIGJ1aWxkIGluZnJhc3RydWN0dXJlLCBhbmQgY3J1Y2lhbGx5LCAqbm9uZSogb2YgdGhlc2UgY2hhbmdlcyBhcmUgdG91Y2hpbmcgdGhlIGNvcmUga2VybmVsIGltYWdlIChgdm1saW51eGApIG9yIGFueSBrZXJuZWwgbW9kdWxlcywgSSBjYW4gY29uZmlkZW50bHkgY29uY2x1ZGUgdGhhdCB0aGUgY3JpdGVyaWEgZm9yIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlzIG1ldC4KClRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bGwgcmUtc2NhbiB0aGUgZW50aXJlIGRpZmYgdG8gbWFrZSBzdXJlIG5vIGZpbGVzIHdlcmUgaW5hZHZlcnRlbnRseSBtaXNzZWQuIE5vcGUsIGl0JiMzOTtzIGFsbCBjb250YWluZWQgd2l0aGluIGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYC4KClRoZXJlZm9yZSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgc2V0IHRvIGZhbHNlLiBObyBzcGVjaWZpYyBlbmFibGUgY29uZmlndXJhdGlvbnMgb3IgZm9jdXMgc3ltYm9scyBhcmUgbmVlZGVkIGZvciB0aGlzIHBhdGNoLiBNeSByZWFzb25pbmcgaXMgY2xlYXI6IFRoZSBwYXRjaCBzZXJpZXMgZm9jdXNlcyAqZXhjbHVzaXZlbHkqIG9uIHVzZXItc3BhY2UgdG9vbGluZywgc3BlY2lmaWNhbGx5IGNoYW5nZXMgd2l0aGluIGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCByZWxhdGVkIHRvIHBvcnRpbmcgcGVyZiYjMzk7cyBHVEsgVUkgdG8gR1RLNCwgd2hpY2ggZG9lcyBub3QgaW1wYWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2Ugb3IgYW55IGtlcm5lbCBtb2R1bGVzLiBJJiMzOTttIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBleGNsdXNpdmVseSBtb2RpZmllcyB1c2Vyc3BhY2UgdG9vbHMgKHRvb2xzL3BlcmYgYW5kIHRvb2xzL2J1aWxkKSwgcG9ydGluZyBwZXJmJiMzOTtzIEdUSyBpbnRlcmZhY2Ugc3VwcG9ydCBmcm9tIEdUSzIgdG8gR1RLNC4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBrZXJuZWwgY29kZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRvb2xzICh0b29scy9wZXJmIGFuZCB0b29scy9idWlsZCksIHBvcnRpbmcgcGVyZiYjMzk7cyBHVEsgaW50ZXJmYWNlIHN1cHBvcnQgZnJvbSBHVEsyIHRvIEdUSzQuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIGNvZGUgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNyAwMDo1MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDdUMDA6NTI6MDMuNjE4NjIyOTk4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA0MzQ0ODA3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBleGNsdXNpdmVseSBtb2RpZmllcyB1c2Vyc3BhY2UgdG9vbHMgKHRvb2xzL3BlcmYgYW5kIHRvb2xzL2J1aWxkKSwgcG9ydGluZyBwZXJmJ3MgR1RLIGludGVyZmFjZSBzdXBwb3J0IGZyb20gR1RLMiB0byBHVEs0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAwOjUyOjAzLjYxODYzMjMwOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQyNTAxMDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDMwOWM4MjM1ZGVmNmRmNzEzZmE0MDk5OTQxZWU5MjA2YWZjZjFjZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCA3IDAwOjUyOjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmUgYi90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlXFxuaW5kZXggOTllYjBlYTA5NTM3NS4uN2ZmZWI3NWEwMWM3OSAxMDA2NDRcXG4tLS0gYS90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlXFxuKysrIGIvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZVxcbkBAIC0xMTMsOCArMTEzLDggQEAgRkVBVFVSRV9URVNUU19FWFRSQSA6PSAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgY29tcGlsZS14MzIgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgY3BsdXMtZGVtYW5nbGUgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgY3hhLWRlbWFuZ2xlICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tICAgICAgICAgZ3RrMiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tICAgICAgICAgZ3RrMi1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXFxcXG4rICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4rICAgICAgICAgZ3RrNC1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgaGVsbG8gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgYmFiZWx0cmFjZTItY3RmLXdyaXRlciAgICAgICAgIFxcXFxcXG4gICAgICAgICAgbGliY2Fwc3RvbmUgICAgICAgICAgICAgICAgICAgIFxcXFxcXG5AQCAtMTQzLDYgKzE0Myw3IEBAIGVuZGlmXFxuIEZFQVRVUkVfRElTUExBWSA/PSAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBsaWJkdyAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgZ2xpYmMgICAgICAgICAgICAgICAgICBcXFxcXFxuKyAgICAgICAgIGd0azQgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICBsaWJlbGYgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgbGlibnVtYSAgICAgICAgICAgICAgICBcXFxcXFxuICAgICAgICAgIG51bWFfbnVtX3Bvc3NpYmxlX2NwdXMgXFxcXFxcbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxcbmluZGV4IDdkMTY1MDE4MTE2YTUuLjJjYTk5MmZiYjlhZDUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxcbisrKyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGVcXG5AQCAtMTEsOCArMTEsOCBAQCBGSUxFUz0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuICAgICAgICAgIHRlc3QtZXZlbnRmZC5iaW4gICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgdGVzdC1mb3J0aWZ5LXNvdXJjZS5iaW4gICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICB0ZXN0LWdsaWJjLmJpbiAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuLSAgICAgICAgIHRlc3QtZ3RrMi5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tICAgICAgICAgdGVzdC1ndGsyLWluZm9iYXIuYmluICAgICAgICAgICAgICAgICAgXFxcXFxcbisgICAgICAgICB0ZXN0LWd0azQuYmluICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuKyAgICAgICAgIHRlc3QtZ3RrNC1pbmZvYmFyLmJpbiAgICAgICAgICAgICAgICAgIFxcXFxcXG4gICAgICAgICAgdGVzdC1oZWxsby5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbiAgICAgICAgICB0ZXN0LWxpYmJmZC5iaW4gICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuIFxcdCB0ZXN0LWxpYmJmZC10aHJlYWRzYWZlLmJpbiAgICAgIFxcdFxcXFxcXG5AQCAtMjQwLDExICsyNDAsMTEgQEAgJChPVVRQVVQpdGVzdC1saWJjcHVwb3dlci5iaW46XFxuICQoT1VUUFVUKXRlc3QtbGlidHJhY2Vmcy5iaW46XFxuIFxcdCAkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgbGlidHJhY2VmcyAyXFx1MDAzZS9kZXYvbnVsbCkgLWx0cmFjZWZzXFxuIFxcbi0kKE9VVFBVVCl0ZXN0LWd0azIuYmluOlxcbi1cXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0aystMi4wIDJcXHUwMDNlL2Rldi9udWxsKSAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXFxuKyQoT1VUUFVUKXRlc3QtZ3RrNC5iaW46XFxuK1xcdCQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXFx1MDAzZS9kZXYvbnVsbClcXG4gXFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi1pbmZvYmFyLmJpbjpcXG4tXFx0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsrLTIuMCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rJChPVVRQVVQpdGVzdC1ndGs0LWluZm9iYXIuYmluOlxcbitcXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0azQgMlxcdTAwM2UvZGV2L251bGwpXFxuIFxcbiBncmVwLWxpYnMgID0gJChmaWx0ZXIgLWwlLCQoMSkpXFxuIHN0cmlwLWxpYnMgPSAkKGZpbHRlci1vdXQgLWwlLCQoMSkpXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuY1xcbnNpbWlsYXJpdHkgaW5kZXggNzclXFxucmVuYW1lIGZyb20gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azItaW5mb2Jhci5jXFxucmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuY1xcbmluZGV4IGIxYjcxNmRkNTczMzAuLjZjMWJjZWU1OTVhOWMgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azItaW5mb2Jhci5jXFxuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQtaW5mb2Jhci5jXFxuQEAgLTMsOSArMyw5IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NndGsvZ3RrLmhcXHUwMDNlXFxuICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgZXJyb3IgXFxcIi1Xc3RyaWN0LXByb3RvdHlwZXNcXFwiXFxuIFxcbi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbitpbnQgbWFpbih2b2lkKVxcbiB7XFxuLVxcdGd0a19pbml0KFxcdTAwMjZhcmdjLCBcXHUwMDI2YXJndik7XFxuK1xcdGd0a19pbml0KCk7XFxuIFxcdGd0a19pbmZvX2Jhcl9uZXcoKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuY1xcbnNpbWlsYXJpdHkgaW5kZXggNzYlXFxucmVuYW1lIGZyb20gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azIuY1xcbnJlbmFtZSB0byB0b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXFxuaW5kZXggMmFhZjRiZmMyMDU1Ni4uYjk1MjBlNzQwOGI5OSAxMDA2NDRcXG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jXFxuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQuY1xcbkBAIC0zLDkgKzMsOSBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjZ3RrL2d0ay5oXFx1MDAzZVxcbiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFxcXCItV3N0cmljdC1wcm90b3R5cGVzXFxcIlxcbiBcXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4raW50IG1haW4odm9pZClcXG4ge1xcbi1cXHRndGtfaW5pdChcXHUwMDI2YXJnYywgXFx1MDAyNmFyZ3YpO1xcbitcXHRndGtfaW5pdCgpO1xcbiBcXG4gICAgICAgICByZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0IGIvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxcbmluZGV4IDIyZjg3ZWFhMzI3OTYuLjdhZjliM2Y4MWMwNjUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxcbisrKyBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcXG5AQCAtMzUxLDcgKzM1MSw3IEBAIE9QVElPTlNcXG4gXFx0cmVxdWlyZXMgYSB0dHksIGlmIG9uZSBpcyBub3QgcHJlc2VudCwgYXMgd2hlbiBwaXBpbmcgdG8gb3RoZXJcXG4gXFx0Y29tbWFuZHMsIHRoZSBzdGRpbyBpbnRlcmZhY2UgaXMgdXNlZC5cXG4gXFxuLS0tZ3RrOjogVXNlIHRoZSBHVEsyIGludGVyZmFjZS5cXG4rLS1ndGs6OiBVc2UgdGhlIEdUSzQgaW50ZXJmYWNlLlxcbiBcXG4gLWs6OlxcbiAtLXZtbGludXg9XFx1MDAzY2ZpbGVcXHUwMDNlOjpcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9NYWtlZmlsZSBiL3Rvb2xzL3BlcmYvTWFrZWZpbGVcXG5pbmRleCA1YjcxMzgzN2VlZGU3Li41NjAxNDEwNjQ3OWEzIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGVcXG4rKysgYi90b29scy9wZXJmL01ha2VmaWxlXFxuQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGVhbjpcXG4gIyBtYWtlIC1DIHRvb2xzL3BlcmYgLWYgdGVzdHMvbWFrZVxcbiAjXFxuIGJ1aWxkLXRlc3Q6XFxuLVxcdEAkKE1BS0UpIFNIVUY9MSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSB0YXJwa2cgbWFrZV9zdGF0aWMgbWFrZV93aXRoX2d0azIgb3V0XFxuK1xcdEAkKE1BS0UpIFNIVUY9MSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSB0YXJwa2cgbWFrZV9zdGF0aWMgbWFrZV93aXRoX2d0azQgb3V0XFxuIFxcbiBidWlsZC10ZXN0LXRhcmJhbGw6XFxuIFxcdEAkKE1BS0UpIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IG91dFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXFxuaW5kZXggNGQ1OTkzZGE5Zjk0NS4uZWY3NDE5YTViMDEzNyAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZ1xcbisrKyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXFxuQEAgLTc3NCwyMSArNzc0LDI2IEBAIGlmbmRlZiBOT19TTEFOR1xcbiAgIGVuZGlmXFxuIGVuZGlmXFxuIFxcbi1pZmRlZiBHVEsyXFxuLSAgRkxBR1NfR1RLMj0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrKy0yLjAgMlxcdTAwM2UvZGV2L251bGwpXFxuLSAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMilcXG4tICBpZm5lcSAoJChmZWF0dXJlLWd0azIpLCAxKVxcbi0gICAgJCh3YXJuaW5nIEdUSzIgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEsyIHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azItZGV2ZWwgb3IgbGliZ3RrMi4wLWRldilcXG4tICAgIE5PX0dUSzIgOj0gMVxcbitpZmRlZiBHVEs0XFxuKyAgRkxBR1NfR1RLND0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0KVxcbisgIGlmbmVxICgkKGZlYXR1cmUtZ3RrNCksIDEpXFxuKyAgICAkKHdhcm5pbmcgR1RLNCBub3QgZm91bmQsIGRpc2FibGVzIEdUSzQgc3VwcG9ydC4gUGxlYXNlIGluc3RhbGwgZ3RrNC1kZXZlbCBvciBsaWJndGstNC1kZXYpXFxuKyAgICBOT19HVEs0IDo9IDFcXG4gICBlbHNlXFxuLSAgICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGsyLWluZm9iYXIpXFxuLSAgICBpZmVxICgkKGZlYXR1cmUtZ3RrMi1pbmZvYmFyKSwgMSlcXG4rICAgICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azQtaW5mb2JhcilcXG4rICAgIGlmZXEgKCQoZmVhdHVyZS1ndGs0LWluZm9iYXIpLCAxKVxcbiAgICAgICBHVEtfQ0ZMQUdTIDo9IC1ESEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxcbiAgICAgZW5kaWZcXG4tICAgIENGTEFHUyArPSAtREhBVkVfR1RLMl9TVVBQT1JUXFxuLSAgICBHVEtfQ0ZMQUdTICs9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBndGsrLTIuMCAyXFx1MDAzZS9kZXYvbnVsbClcXG4tICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrKy0yLjAgMlxcdTAwM2UvZGV2L251bGwpXFxuKyAgICBDRkxBR1MgKz0gLURIQVZFX0dUSzRfU1VQUE9SVFxcbisgICAgR1RLX0NGTEFHUyArPSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1jZmxhZ3MgZ3RrNCAyXFx1MDAzZS9kZXYvbnVsbClcXG4rICAgIEdUS19MSUJTIDo9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgZ3RrNCAyXFx1MDAzZS9kZXYvbnVsbClcXG4gICAgIEVYVExJQlMgKz0gLWxkbFxcbisgICAgIyBsaWJwZXJmLWd0ay5zbyBpcyBkbG9wZW4oKWVkIGF0IHJ1bnRpbWUgYW5kIGNhbGxzIGJhY2sgaW50b1xcbisgICAgIyBzeW1ib2xzIGRlZmluZWQgaW4gdGhlIHBlcmYgYmluYXJ5IGl0c2VsZiAoY2FsbGNoYWluX3BhcmFtLFxcbisgICAgIyBzeW1ib2xfY29uZiwgZXZzZWxfX25hbWUsIC4uLik6IHBlcmYgbmVlZHMgdG8gZXhwb3J0IHRob3NlXFxuKyAgICAjIGR5bmFtaWNhbGx5IGZvciB0aGUgcGx1Z2luIHRvIHJlc29sdmUgdGhlbS5cXG4rICAgIExERkxBR1MgKz0gLXJkeW5hbWljXFxuICAgZW5kaWZcXG4gZW5kaWZcXG4gXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZiBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxcbmluZGV4IDI5Y2ZkNDRjNDI3ZjMuLjI0MzhiNDBlYWFlYzEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmXFxuKysrIGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmXFxuQEAgLTQ5LDcgKzQ5LDcgQEAgaW5jbHVkZSAuLi9zY3JpcHRzL3V0aWxpdGllcy5tYWtcXG4gI1xcbiAjIERlZmluZSBOT19TTEFORyBpZiB5b3UgZG8gbm90IHdhbnQgVFVJIHN1cHBvcnQuXFxuICNcXG4tIyBEZWZpbmUgR1RLMiBpZiB5b3Ugd2FudCBHVEsrIEdVSSBzdXBwb3J0LlxcbisjIERlZmluZSBHVEs0IGlmIHlvdSB3YW50IEdUSysgR1VJIHN1cHBvcnQuXFxuICNcXG4gIyBEZWZpbmUgTk9fREVNQU5HTEUgaWYgeW91IGRvIG5vdCB3YW50IEMrKyBzeW1ib2wgZGVtYW5nbGluZy5cXG4gI1xcbkBAIC00NzMsNyArNDczLDcgQEAgaWZuZXEgKCQoT1VUUFVUKSwpXFxuICAgQ0ZMQUdTICs9IC1JJChPVVRQVVQpXFxuIGVuZGlmXFxuIFxcbi1pZmRlZiBHVEsyXFxuK2lmZGVmIEdUSzRcXG4gICBBTExfUFJPR1JBTVMgKz0gJChPVVRQVVQpbGlicGVyZi1ndGsuc29cXG4gICBHVEtfSU4gOj0gJChPVVRQVVQpZ3RrLWluLm9cXG4gZW5kaWZcXG5AQCAtODExLDcgKzgxMSw3IEBAIGNoZWNrOiBwcmVwYXJlXFxuIFxcbiAjIyMgSW5zdGFsbGF0aW9uIHJ1bGVzXFxuIFxcbi1pZmRlZiBHVEsyXFxuK2lmZGVmIEdUSzRcXG4gaW5zdGFsbC1ndGs6ICQoT1VUUFVUKWxpYnBlcmYtZ3RrLnNvXFxuIFxcdCQoY2FsbCBRVUlFVF9JTlNUQUxMLCAnR1RLIFVJJykgXFxcXFxcbiBcXHRcXHQkKElOU1RBTEwpIC1kIC1tIDc1NSAnJChERVNURElSX1NRKSQobGliZGlyX1NRKSc7IFxcXFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmMgYi90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuY1xcbmluZGV4IDY5Y2I3MmIyMDgyYTYuLjE1MTYzZTA4MWE4Y2UgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcXG4rKysgYi90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuY1xcbkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBwZXJmX2Fubm90YXRlIHtcXG4gXFx0Ym9vbFxcdCAgIHVzZV90dWk7XFxuICNlbmRpZlxcbiBcXHRib29sXFx0ICAgdXNlX3N0ZGlvLCB1c2Vfc3RkaW8yO1xcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuIFxcdGJvb2xcXHQgICB1c2VfZ3RrO1xcbiAjZW5kaWZcXG4gXFx0Ym9vbFxcdCAgIHNraXBfbWlzc2luZztcXG5AQCAtNzEyLDcgKzcxMiw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxcbiBcXHRPUFRfQk9PTEVBTigncScsIFxcXCJxdWlldFxcXCIsIFxcdTAwMjZxdWlldCwgXFxcImRvIG5vdyBzaG93IGFueSB3YXJuaW5ncyBvciBtZXNzYWdlc1xcXCIpLFxcbiBcXHRPUFRfQk9PTEVBTignRCcsIFxcXCJkdW1wLXJhdy10cmFjZVxcXCIsIFxcdTAwMjZkdW1wX3RyYWNlLFxcbiBcXHRcXHQgICAgXFxcImR1bXAgcmF3IHRyYWNlIGluIEFTQ0lJXFxcIiksXFxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcXG4gXFx0T1BUX0JPT0xFQU4oMCwgXFxcImd0a1xcXCIsIFxcdTAwMjZhbm5vdGF0ZS51c2VfZ3RrLCBcXFwiVXNlIHRoZSBHVEsgaW50ZXJmYWNlXFxcIiksXFxuICNlbmRpZlxcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXFxuQEAgLTgyOCw3ICs4MjgsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcXG4gXFx0aWYgKGFubm90YXRlX2NoZWNrX2FyZ3MoKSBcXHUwMDNjIDApXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxcbiBcXHRpZiAoc3ltYm9sX2NvbmYuc2hvd19ucl9zYW1wbGVzIFxcdTAwMjZcXHUwMDI2IGFubm90YXRlLnVzZV9ndGspIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCItLXNob3ctbnItc2FtcGxlcyBpcyBub3QgYXZhaWxhYmxlIGluIC0tZ3RrIG1vZGUgYXQgdGhpcyB0aW1lXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5AQCAtODk4LDcgKzg5OCw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxcbiBcXHRlbHNlIGlmIChhbm5vdGF0ZS51c2VfdHVpKVxcbiBcXHRcXHR1c2VfYnJvd3NlciA9IDE7XFxuICNlbmRpZlxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuIFxcdGVsc2UgaWYgKGFubm90YXRlLnVzZV9ndGspXFxuIFxcdFxcdHVzZV9icm93c2VyID0gMjtcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xcbmluZGV4IDYwZDFmMTY2NjI5ZTAuLmQxNDM4NGM1ODQ2NjEgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jXFxuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jXFxuQEAgLTgyLDcgKzgyLDcgQEAgc3RydWN0IHJlcG9ydCB7XFxuICNpZmRlZiBIQVZFX1NMQU5HX1NVUFBPUlRcXG4gXFx0Ym9vbFxcdFxcdFxcdHVzZV90dWk7XFxuICNlbmRpZlxcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXFxuIFxcdGJvb2xcXHRcXHRcXHR1c2VfZ3RrO1xcbiAjZW5kaWZcXG4gXFx0Ym9vbFxcdFxcdFxcdHVzZV9zdGRpbztcXG5AQCAtMTM1OSw4ICsxMzU5LDggQEAgaW50IGNtZF9yZXBvcnQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXFxuIFxcdE9QVF9CT09MRUFOKDAsIFxcXCJ0dWlcXFwiLCBcXHUwMDI2cmVwb3J0LnVzZV90dWksIFxcXCJVc2UgdGhlIFRVSSBpbnRlcmZhY2VcXFwiKSxcXG4gI2VuZGlmXFxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxcbi1cXHRPUFRfQk9PTEVBTigwLCBcXFwiZ3RrXFxcIiwgXFx1MDAyNnJlcG9ydC51c2VfZ3RrLCBcXFwiVXNlIHRoZSBHVEsyIGludGVyZmFjZVxcXCIpLFxcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcXG4rXFx0T1BUX0JPT0xFQU4oMCwgXFxcImd0a1xcXCIsIFxcdTAwMjZyZXBvcnQudXNlX2d0aywgXFxcIlVzZSB0aGUgR1RLNCBpbnRlcmZhY2VcXFwiKSxcXG4gI2VuZGlmXFxuIFxcdE9QVF9CT09MRUFOKDAsIFxcXCJzdGRpb1xcXCIsIFxcdTAwMjZyZXBvcnQudXNlX3N0ZGlvLFxcbiBcXHRcXHQgICAgXFxcIlVzZSB0aGUgc3RkaW8gaW50ZXJmYWNlXFxcIiksXFxuQEAgLTE3MTAsNyArMTcxMCw3IEBAIGludCBjbWRfcmVwb3J0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcXG4gXFx0ZWxzZSBpZiAocmVwb3J0LnVzZV90dWkpXFxuIFxcdFxcdHVzZV9icm93c2VyID0gMTtcXG4gI2VuZGlmXFxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcXG4gXFx0ZWxzZSBpZiAocmVwb3J0LnVzZV9ndGspXFxuIFxcdFxcdHVzZV9icm93c2VyID0gMjtcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2ggYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXFxuaW5kZXggZDAwM2U3ZmFiMmJlOC4uYTYwMWE1MjYwYzE3ZSAxMDA3NTVcXG4tLS0gYS90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXFxuKysrIGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxcbkBAIC0xOTksOCArMTk5LDggQEAgZmVkb3JhX3BrZ19mb3IoKSB7XFxuIFxcdCMgb3B0LWluIGZlYXR1cmVzLCB3aGljaCBhIGRlZmF1bHQgYnVpbGQgZG9lcyBub3QgZW5hYmxlOiB0aGUgbGliYmZkXFxuIFxcdCMgZGlzYXNzZW1ibGVyIGZhbWlseSAobGliYmZkLCBsaWJiZmQtdGhyZWFkc2FmZSwgbGliYmZkLWxpYmVydHksXFxuIFxcdCMgZGlzYXNzZW1ibGVyLSosIGNwbHVzLWRlbWFuZ2xlKSwgb25seSBsaW5rZWQgb24gQlVJTERfTk9ORElTVFJPXFxuLVxcdCMgYnVpbGRzIGFuZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNhcHN0b25lLCBHVEsyLCBMSUJQRVJMIGFuZFxcbi1cXHQjIExJQlVOV0lORCBzdXBwb3J0IChpZmRlZiBHVEsyIC8gaWZkZWYgTElCUEVSTCAvIExJQlVOV0lORD0xKSxcXG4rXFx0IyBidWlsZHMgYW5kIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgY2Fwc3RvbmUsIEdUSzQsIExJQlBFUkwgYW5kXFxuK1xcdCMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzQgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLFxcbiBcXHQjIGFuZCBDb3JlU2lnaHQgKGlmZGVmIENPUkVTSUdIVCksIGFyZSBkZWxpYmVyYXRlbHkgbm90IG1hcHBlZC5cXG4gXFx0IyBsaWJhaW8gaXMgbm90IG1hcHBlZCBlaXRoZXI6IGl0c1xcbiBcXHQjIHRlc3QgdXNlcyB0aGUgUE9TSVggQUlPIEFQSSAoYWlvLmgsIGFpb18qLCAtbHJ0KSwgcHJvdmlkZWQgYnlcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi90ZXN0cy9tYWtlIGIvdG9vbHMvcGVyZi90ZXN0cy9tYWtlXFxuaW5kZXggZDJjMmY1MjZlMWRiMC4uMjAyYWI1NTAxOTE2MSAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3Rlc3RzL21ha2VcXG4rKysgYi90b29scy9wZXJmL3Rlc3RzL21ha2VcXG5AQCAtOTUsNyArOTUsNyBAQCBtYWtlX25vX2JhYmVsdHJhY2UyIDo9IE5PX0JBQkVMVFJBQ0UyPTFcXG4gbWFrZV93aXRoX2NvcmVzaWdodCA6PSBDT1JFU0lHSFQ9MVxcbiBtYWtlX25vX3NkdFxcdCAgICA6PSBOT19TRFQ9MVxcbiBtYWtlX25vX2xpYnBmbTQgICAgIDo9IE5PX0xJQlBGTTQ9MVxcbi1tYWtlX3dpdGhfZ3RrMiAgICAgIDo9IEdUSzI9MVxcbittYWtlX3dpdGhfZ3RrNCAgICAgIDo9IEdUSzQ9MVxcbiBtYWtlX3JlZmNudF9jaGVjayAgIDo9IEVYVFJBX0NGTEFHUz1cXFwiLURSRUZDTlRfQ0hFQ0tJTkc9MVxcXCJcXG4gbWFrZV90YWdzICAgICAgICAgICA6PSB0YWdzXFxuIG1ha2VfY3Njb3BlICAgICAgICAgOj0gY3Njb3BlXFxuQEAgLTMxOCw3ICszMTgsNyBAQCAkKHJ1bik6XFxuIFxcdCQoY2FsbCB0ZXN0LCRAKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuIFxcdHJtIC1yZiAkQCAkJFRNUF9ERVNUIHx8IChjYXQgJEAgOyBmYWxzZSlcXG4gXFxuLW1ha2Vfd2l0aF9ndGsyOlxcbittYWtlX3dpdGhfZ3RrNDpcXG4gXFx0JChjYWxsIGNsZWFuKVxcbiBcXHRAVE1QX0RFU1Q9JCQobWt0ZW1wIC1kKTsgXFxcXFxcbiBcXHRjbWQ9XFxcImNkICQoUEVSRikgXFx1MDAyNlxcdTAwMjYgJChNQUtFX0YpICQoJEApICQoUEFSQUxMRUxfT1BUKSAkKE9fT1BUKSBERVNURElSPSQkVE1QX0RFU1RcXFwiOyBcXFxcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmMgYi90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jXFxuaW5kZXggODkyMGUyOTg0MjBhOC4uZmM0NmFjMTUwNDA4OCAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jXFxuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xcbkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fYW5ub3RhdGVfc3ltYm9sKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsXFxuIFxcdFxcdFxcdGd0a19saXN0X3N0b3JlX3NldChzdG9yZSwgXFx1MDAyNml0ZXIsIEFOTl9DT0xfX0xJTkUsIHMsIC0xKTtcXG4gXFx0fVxcbiBcXG4tXFx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2aWV3KTtcXG4rXFx0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTtcXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIG4sIFxcdTAwMjZub3Rlcy1cXHUwMDNlc3JjLVxcdTAwM2Vzb3VyY2UsIGFsLm5vZGUpIHtcXG4gXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2cG9zLVxcdTAwM2VhbC5ub2RlKTtcXG5AQCAtMjExLDM0ICsyMTEsMzEgQEAgc3RhdGljIGludCBzeW1ib2xfX2d0a19hbm5vdGF0ZShzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsIHN0cnVjdCBldnNlbCAqZXZzZWwsXFxuIFxcdFxcdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcXG4gXFx0XFx0c2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpO1xcbiBcXG4tXFx0XFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7XFxuK1xcdFxcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7XFxuIFxcdFxcdGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1cod2luZG93KSwgXFxcInBlcmYgYW5ub3RhdGVcXFwiKTtcXG4gXFxuLVxcdFxcdGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCBcXFwiZGVsZXRlX2V2ZW50XFxcIiwgZ3RrX21haW5fcXVpdCwgTlVMTCk7XFxuLVxcbiBcXHRcXHRwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7XFxuIFxcdFxcdGlmICghcGdjdHgpXFxuIFxcdFxcdFxcdHJldHVybiAtMTtcXG4gXFxuLVxcdFxcdHZib3ggPSBndGtfdmJveF9uZXcoRkFMU0UsIDApO1xcbitcXHRcXHR2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTtcXG4gXFx0XFx0bm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7XFxuIFxcdFxcdHBnY3R4LVxcdTAwM2Vub3RlYm9vayA9IG5vdGVib29rO1xcbiBcXG4tXFx0XFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG5vdGVib29rLCBUUlVFLCBUUlVFLCAwKTtcXG4rXFx0XFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XFxuK1xcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIG5vdGVib29rKTtcXG4gXFxuIFxcdFxcdGluZm9iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTtcXG4tXFx0XFx0aWYgKGluZm9iYXIpIHtcXG4tXFx0XFx0XFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGluZm9iYXIsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIEZBTFNFLCBGQUxTRSwgMCk7XFxuLVxcdFxcdH1cXG4rXFx0XFx0aWYgKGluZm9iYXIpXFxuK1xcdFxcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9iYXIpO1xcbiBcXG4gXFx0XFx0c3RhdGJhciA9IHBlcmZfZ3RrX19zZXR1cF9zdGF0dXNiYXIoKTtcXG4tXFx0XFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIHN0YXRiYXIsIEZBTFNFLCBGQUxTRSwgMCk7XFxuK1xcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpO1xcbiBcXG4tXFx0XFx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTtcXG4rXFx0XFx0Z3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyh3aW5kb3cpLCB2Ym94KTtcXG4gXFx0fVxcbiBcXG4tXFx0c2Nyb2xsZWRfd2luZG93ID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7XFxuK1xcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KCk7XFxuIFxcdHRhYl9sYWJlbCA9IGd0a19sYWJlbF9uZXcoc3ltLVxcdTAwM2VuYW1lKTtcXG4gXFxuIFxcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksXFxuQEAgLTI2NywxMiArMjY0LDExIEBAIHZvaWQgcGVyZl9ndGtfX3Nob3dfYW5ub3RhdGlvbnModm9pZClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0d2luZG93ID0gcGdjdHgtXFx1MDAzZW1haW5fd2luZG93O1xcbi1cXHRndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7XFxuIFxcbiBcXHRwZXJmX2d0a19fcmVzaXplX3dpbmRvdyh3aW5kb3cpO1xcbi1cXHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7XFxuK1xcdGd0a193aWRnZXRfc2V0X3Zpc2libGUod2luZG93LCBUUlVFKTtcXG4gXFxuLVxcdGd0a19tYWluKCk7XFxuK1xcdHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKHdpbmRvdyk7XFxuIFxcbiBcXHRwZXJmX2d0a19fZGVhY3RpdmF0ZV9jb250ZXh0KFxcdTAwMjZwZ2N0eCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvYnJvd3Nlci5jIGIvdG9vbHMvcGVyZi91aS9ndGsvYnJvd3Nlci5jXFxuaW5kZXggZDJkYWRmMzg3M2ZiZC4uOTliYjBlYTc2ZDc3NSAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcXG5AQCAtMTYsMjEgKzE2LDUzIEBAIHZvaWQgcGVyZl9ndGtfX3NpZ25hbChpbnQgc2lnKVxcbiB2b2lkIHBlcmZfZ3RrX19yZXNpemVfd2luZG93KEd0a1dpZGdldCAqd2luZG93KVxcbiB7XFxuIFxcdEdka1JlY3RhbmdsZSByZWN0O1xcbi1cXHRHZGtTY3JlZW4gKnNjcmVlbjtcXG4tXFx0aW50IG1vbml0b3I7XFxuK1xcdEdka01vbml0b3IgKm1vbml0b3I7XFxuK1xcdEdka0Rpc3BsYXkgKmRpc3BsYXk7XFxuK1xcdEdMaXN0TW9kZWwgKm1vbml0b3JzO1xcbiBcXHRpbnQgaGVpZ2h0O1xcbiBcXHRpbnQgd2lkdGg7XFxuIFxcbi1cXHRzY3JlZW4gPSBndGtfd2lkZ2V0X2dldF9zY3JlZW4od2luZG93KTtcXG4rXFx0ZGlzcGxheSA9IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkod2luZG93KTtcXG4rXFx0bW9uaXRvcnMgPSBnZGtfZGlzcGxheV9nZXRfbW9uaXRvcnMoZGlzcGxheSk7XFxuK1xcdG1vbml0b3IgPSBnX2xpc3RfbW9kZWxfZ2V0X2l0ZW0obW9uaXRvcnMsIDApO1xcbitcXHRpZiAoIW1vbml0b3IpIHtcXG4rXFx0XFx0Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgODAwLCA2MDApO1xcbitcXHRcXHRyZXR1cm47XFxuK1xcdH1cXG4gXFxuLVxcdG1vbml0b3IgPSBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2F0X3dpbmRvdyhzY3JlZW4sIHdpbmRvdy1cXHUwMDNld2luZG93KTtcXG4tXFxuLVxcdGdka19zY3JlZW5fZ2V0X21vbml0b3JfZ2VvbWV0cnkoc2NyZWVuLCBtb25pdG9yLCBcXHUwMDI2cmVjdCk7XFxuK1xcdGdka19tb25pdG9yX2dldF9nZW9tZXRyeShtb25pdG9yLCBcXHUwMDI2cmVjdCk7XFxuK1xcdGdfb2JqZWN0X3VucmVmKG1vbml0b3IpO1xcbiBcXG4gXFx0d2lkdGhcXHQ9IHJlY3Qud2lkdGggKiAzIC8gNDtcXG4gXFx0aGVpZ2h0XFx0PSByZWN0LmhlaWdodCAqIDMgLyA0O1xcbiBcXG4tXFx0Z3RrX3dpbmRvd19yZXNpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTtcXG4rXFx0Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgd2lkdGgsIGhlaWdodCk7XFxuK31cXG4rXFxuK3N0YXRpYyBHTWFpbkxvb3AgKnBlcmZfZ3RrX19tYWluX2xvb3A7XFxuK1xcbit2b2lkIHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCh2b2lkKVxcbit7XFxuK1xcdGlmIChwZXJmX2d0a19fbWFpbl9sb29wKVxcbitcXHRcXHRnX21haW5fbG9vcF9xdWl0KHBlcmZfZ3RrX19tYWluX2xvb3ApO1xcbit9XFxuK1xcbitzdGF0aWMgZ2Jvb2xlYW4gcGVyZl9ndGtfX2Nsb3NlX3JlcXVlc3QoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsXFxuK1xcdFxcdFxcdFxcdFxcdGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXFxuK3tcXG4rXFx0cGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7XFxuK1xcbitcXHRyZXR1cm4gRkFMU0U7XFxuK31cXG4rXFxuK3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpXFxuK3tcXG4rXFx0Z19zaWduYWxfY29ubmVjdCh3aW5kb3csIFxcXCJjbG9zZS1yZXF1ZXN0XFxcIixcXG4rXFx0XFx0XFx0IEdfQ0FMTEJBQ0socGVyZl9ndGtfX2Nsb3NlX3JlcXVlc3QpLCBOVUxMKTtcXG4rXFxuK1xcdHBlcmZfZ3RrX19tYWluX2xvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgRkFMU0UpO1xcbitcXHRnX21haW5fbG9vcF9ydW4ocGVyZl9ndGtfX21haW5fbG9vcCk7XFxuK1xcdGdfY2xlYXJfcG9pbnRlcihcXHUwMDI2cGVyZl9ndGtfX21haW5fbG9vcCwgZ19tYWluX2xvb3BfdW5yZWYpO1xcbiB9XFxuIFxcbiBjb25zdCBjaGFyICpwZXJmX2d0a19fZ2V0X3BlcmNlbnRfY29sb3IoZG91YmxlIHBlcmNlbnQpXFxuQEAgLTQ3LDE4ICs3OSwxNiBAQCBHdGtXaWRnZXQgKnBlcmZfZ3RrX19zZXR1cF9pbmZvX2Jhcih2b2lkKVxcbiB7XFxuIFxcdEd0a1dpZGdldCAqaW5mb19iYXI7XFxuIFxcdEd0a1dpZGdldCAqbGFiZWw7XFxuLVxcdEd0a1dpZGdldCAqY29udGVudF9hcmVhO1xcbiBcXG4gXFx0aW5mb19iYXIgPSBndGtfaW5mb19iYXJfbmV3KCk7XFxuLVxcdGd0a193aWRnZXRfc2V0X25vX3Nob3dfYWxsKGluZm9fYmFyLCBUUlVFKTtcXG4rXFx0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZShpbmZvX2JhciwgRkFMU0UpO1xcbiBcXG4gXFx0bGFiZWwgPSBndGtfbGFiZWxfbmV3KFxcXCJcXFwiKTtcXG4gXFx0Z3RrX3dpZGdldF9zaG93KGxhYmVsKTtcXG4gXFxuLVxcdGNvbnRlbnRfYXJlYSA9IGd0a19pbmZvX2Jhcl9nZXRfY29udGVudF9hcmVhKEdUS19JTkZPX0JBUihpbmZvX2JhcikpO1xcbi1cXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGNvbnRlbnRfYXJlYSksIGxhYmVsKTtcXG4rXFx0Z3RrX2luZm9fYmFyX2FkZF9jaGlsZChHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBsYWJlbCk7XFxuIFxcbi1cXHRndGtfaW5mb19iYXJfYWRkX2J1dHRvbihHVEtfSU5GT19CQVIoaW5mb19iYXIpLCBHVEtfU1RPQ0tfT0ssXFxuK1xcdGd0a19pbmZvX2Jhcl9hZGRfYnV0dG9uKEdUS19JTkZPX0JBUihpbmZvX2JhciksIFxcXCJfT0tcXFwiLFxcbiBcXHRcXHRcXHRcXHRHVEtfUkVTUE9OU0VfT0spO1xcbiBcXHRnX3NpZ25hbF9jb25uZWN0KGluZm9fYmFyLCBcXFwicmVzcG9uc2VcXFwiLFxcbiBcXHRcXHRcXHQgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2hpZGUpLCBOVUxMKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmggYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxcbmluZGV4IGEyYjQ5N2YwM2ZkNmUuLmJlZWE3NWQwMTk1NTYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmhcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxcbkBAIC00MCw2ICs0MCw5IEBAIHZvaWQgcGVyZl9ndGtfX2luaXRfaHBwKHZvaWQpO1xcbiBcXG4gdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpO1xcbiB2b2lkIHBlcmZfZ3RrX19yZXNpemVfd2luZG93KEd0a1dpZGdldCAqd2luZG93KTtcXG4rdm9pZCBwZXJmX2d0a19fcnVuX21haW5fbG9vcChHdGtXaWRnZXQgKndpbmRvdyk7XFxuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKHZvaWQpO1xcbit2b2lkIHBlcmZfZ3RrX19xdWl0X2Vycm9yX2RpYWxvZyh2b2lkKTtcXG4gY29uc3QgY2hhciAqcGVyZl9ndGtfX2dldF9wZXJjZW50X2NvbG9yKGRvdWJsZSBwZXJjZW50KTtcXG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmNcXG5pbmRleCBiYWUyMWYzMzZhZTZkLi5mMDA1M2UzYWYwNzc2IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmNcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXFxuQEAgLTM5NSwxMSArMzk1LDkgQEAgc3RhdGljIHZvaWQgcGVyZl9ndGtfX3Nob3dfaGlzdHMoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsXFxuIFxcdFxcdH1cXG4gXFx0fVxcbiBcXG4tXFx0Z3RrX3RyZWVfdmlld19zZXRfcnVsZXNfaGludChHVEtfVFJFRV9WSUVXKHZpZXcpLCBUUlVFKTtcXG4tXFxuIFxcdGdfc2lnbmFsX2Nvbm5lY3QodmlldywgXFxcInJvdy1hY3RpdmF0ZWRcXFwiLFxcbiBcXHRcXHRcXHQgR19DQUxMQkFDSyhvbl9yb3dfYWN0aXZhdGVkKSwgTlVMTCk7XFxuLVxcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmlldyk7XFxuK1xcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X2NoaWxkKEdUS19TQ1JPTExFRF9XSU5ET1cod2luZG93KSwgdmlldyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIHBlcmZfZ3RrX19hZGRfaGllcmFyY2h5X2VudHJpZXMoc3RydWN0IGhpc3RzICpoaXN0cyxcXG5AQCAtNTgzLDExICs1ODEsOSBAQCBzdGF0aWMgdm9pZCBwZXJmX2d0a19fc2hvd19oaWVyYXJjaHkoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsXFxuIFxcdHBlcmZfZ3RrX19hZGRfaGllcmFyY2h5X2VudHJpZXMoaGlzdHMsIFxcdTAwMjZoaXN0cy1cXHUwMDNlZW50cmllcywgc3RvcmUsXFxuIFxcdFxcdFxcdFxcdFxcdE5VTEwsIFxcdTAwMjZocHAsIG1pbl9wY250KTtcXG4gXFxuLVxcdGd0a190cmVlX3ZpZXdfc2V0X3J1bGVzX2hpbnQoR1RLX1RSRUVfVklFVyh2aWV3KSwgVFJVRSk7XFxuLVxcbiBcXHRnX3NpZ25hbF9jb25uZWN0KHZpZXcsIFxcXCJyb3ctYWN0aXZhdGVkXFxcIixcXG4gXFx0XFx0XFx0IEdfQ0FMTEJBQ0sob25fcm93X2FjdGl2YXRlZCksIE5VTEwpO1xcbi1cXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xcbitcXHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpO1xcbiB9XFxuIFxcbiBpbnQgZXZsaXN0X19ndGtfYnJvd3NlX2hpc3RzKHN0cnVjdCBldmxpc3QgKmV2bGlzdCwgY29uc3QgY2hhciAqaGVscCxcXG5AQCAtNjA2LDMwICs2MDIsMjkgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXFxuIFxcdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcXG4gXFx0c2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpO1xcbiBcXG4tXFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7XFxuK1xcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7XFxuIFxcbiBcXHRndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksIFxcXCJwZXJmIHJlcG9ydFxcXCIpO1xcbiBcXG4tXFx0Z19zaWduYWxfY29ubmVjdCh3aW5kb3csIFxcXCJkZWxldGVfZXZlbnRcXFwiLCBndGtfbWFpbl9xdWl0LCBOVUxMKTtcXG4tXFxuIFxcdHBnY3R4ID0gcGVyZl9ndGtfX2FjdGl2YXRlX2NvbnRleHQod2luZG93KTtcXG4gXFx0aWYgKCFwZ2N0eClcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbiBcXG4tXFx0dmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7XFxuK1xcdHZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApO1xcbiBcXG4gXFx0bm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7XFxuIFxcbi1cXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApO1xcbitcXHRndGtfd2lkZ2V0X3NldF92ZXhwYW5kKG5vdGVib29rLCBUUlVFKTtcXG4rXFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2spO1xcbiBcXG4gXFx0aW5mb19iYXIgPSBwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIoKTtcXG4gXFx0aWYgKGluZm9fYmFyKVxcbi1cXHRcXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIsIEZBTFNFLCBGQUxTRSwgMCk7XFxuK1xcdFxcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9fYmFyKTtcXG4gXFxuIFxcdHN0YXRiYXIgPSBwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKCk7XFxuLVxcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBzdGF0YmFyLCBGQUxTRSwgRkFMU0UsIDApO1xcbitcXHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBzdGF0YmFyKTtcXG4gXFxuLVxcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7XFxuK1xcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cod2luZG93KSwgdmJveCk7XFxuIFxcbiBcXHRldmxpc3RfX2Zvcl9lYWNoX2VudHJ5KGV2bGlzdCwgcG9zKSB7XFxuIFxcdFxcdHN0cnVjdCBoaXN0cyAqaGlzdHMgPSBldnNlbF9faGlzdHMocG9zKTtcXG5AQCAtNjQ5LDcgKzY0NCw3IEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxcbiBcXHRcXHRcXHR9XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpO1xcbitcXHRcXHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldygpO1xcbiBcXG4gXFx0XFx0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5KEdUS19TQ1JPTExFRF9XSU5ET1coc2Nyb2xsZWRfd2luZG93KSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0R1RLX1BPTElDWV9BVVRPTUFUSUMsXFxuQEAgLTY2NSwxNSArNjYwLDEyIEBAIGludCBldmxpc3RfX2d0a19icm93c2VfaGlzdHMoc3RydWN0IGV2bGlzdCAqZXZsaXN0LCBjb25zdCBjaGFyICpoZWxwLFxcbiBcXHRcXHRndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2UoR1RLX05PVEVCT09LKG5vdGVib29rKSwgc2Nyb2xsZWRfd2luZG93LCB0YWJfbGFiZWwpO1xcbiBcXHR9XFxuIFxcbi1cXHRndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7XFxuLVxcbiBcXHRwZXJmX2d0a19fcmVzaXplX3dpbmRvdyh3aW5kb3cpO1xcbi1cXG4tXFx0Z3RrX3dpbmRvd19zZXRfcG9zaXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpLCBHVEtfV0lOX1BPU19DRU5URVIpO1xcbitcXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpbmRvdywgVFJVRSk7XFxuIFxcbiBcXHR1aV9oZWxwbGluZV9fcHVzaChoZWxwKTtcXG4gXFxuLVxcdGd0a19tYWluKCk7XFxuK1xcdHBlcmZfZ3RrX19ydW5fbWFpbl9sb29wKHdpbmRvdyk7XFxuIFxcbiBcXHRwZXJmX2d0a19fZGVhY3RpdmF0ZV9jb250ZXh0KFxcdTAwMjZwZ2N0eCk7XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jIGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xcbmluZGV4IGVlYTZmY2RlNTE4YTguLjI4YTRiNDg2MzYwZGUgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmNcXG5AQCAtMyw0NyArMyw2MiBAQFxcbiBcXG4gI2luY2x1ZGUgXFxcImd0ay5oXFxcIlxcbiAjaW5jbHVkZSBcXFwiLi4vcHJvZ3Jlc3MuaFxcXCJcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcXHUwMDNlXFxuIFxcbiBzdGF0aWMgR3RrV2lkZ2V0ICpkaWFsb2c7XFxuIHN0YXRpYyBHdGtXaWRnZXQgKnByb2dyZXNzO1xcbiBcXG4rc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19kZXN0cm95ZWQoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsXFxuK1xcdFxcdFxcdFxcdFxcdGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXFxuK3tcXG4rXFx0ZGlhbG9nID0gTlVMTDtcXG4rXFx0cHJvZ3Jlc3MgPSBOVUxMO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX3VwZGF0ZShzdHJ1Y3QgdWlfcHJvZ3Jlc3MgKnApXFxuIHtcXG4gXFx0ZG91YmxlIGZyYWN0aW9uID0gcC1cXHUwMDNldG90YWwgPyAxLjAgKiBwLVxcdTAwM2VjdXJyIC8gcC1cXHUwMDNldG90YWwgOiAwLjA7XFxuIFxcdGNoYXIgYnVmWzEwMjRdO1xcbiBcXG4gXFx0aWYgKGRpYWxvZyA9PSBOVUxMKSB7XFxuLVxcdFxcdEd0a1dpZGdldCAqdmJveCA9IGd0a192Ym94X25ldyhUUlVFLCA1KTtcXG4rXFx0XFx0R3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCA1KTtcXG4gXFx0XFx0R3RrV2lkZ2V0ICpsYWJlbCA9IGd0a19sYWJlbF9uZXcocC1cXHUwMDNldGl0bGUpO1xcbiBcXG4tXFx0XFx0ZGlhbG9nID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7XFxuK1xcdFxcdGRpYWxvZyA9IGd0a193aW5kb3dfbmV3KCk7XFxuIFxcdFxcdHByb2dyZXNzID0gZ3RrX3Byb2dyZXNzX2Jhcl9uZXcoKTtcXG4gXFxuLVxcdFxcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBsYWJlbCwgVFJVRSwgRkFMU0UsIDMpO1xcbi1cXHRcXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgcHJvZ3Jlc3MsIFRSVUUsIFRSVUUsIDMpO1xcbitcXHRcXHRndGtfd2lkZ2V0X3NldF92ZXhwYW5kKGxhYmVsLCBUUlVFKTtcXG4rXFx0XFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgbGFiZWwpO1xcbitcXHRcXHRndGtfd2lkZ2V0X3NldF92ZXhwYW5kKHByb2dyZXNzLCBUUlVFKTtcXG4rXFx0XFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgcHJvZ3Jlc3MpO1xcbitcXG4rXFx0XFx0Z3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyhkaWFsb2cpLCB2Ym94KTtcXG4gXFxuLVxcdFxcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZGlhbG9nKSwgdmJveCk7XFxuK1xcdFxcdGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCBcXFwiZGVzdHJveVxcXCIsXFxuK1xcdFxcdFxcdFxcdCBHX0NBTExCQUNLKGd0a191aV9wcm9ncmVzc19fZGVzdHJveWVkKSwgTlVMTCk7XFxuIFxcbiBcXHRcXHRndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyksIFxcXCJwZXJmXFxcIik7XFxuLVxcdFxcdGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1coZGlhbG9nKSwgMzAwLCA4MCk7XFxuLVxcdFxcdGd0a193aW5kb3dfc2V0X3Bvc2l0aW9uKEdUS19XSU5ET1coZGlhbG9nKSwgR1RLX1dJTl9QT1NfQ0VOVEVSKTtcXG4rXFx0XFx0Z3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1coZGlhbG9nKSwgMzAwLCA4MCk7XFxuIFxcbi1cXHRcXHRndGtfd2lkZ2V0X3Nob3dfYWxsKGRpYWxvZyk7XFxuK1xcdFxcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoZGlhbG9nLCBUUlVFKTtcXG4gXFx0fVxcbiBcXG4gXFx0Z3RrX3Byb2dyZXNzX2Jhcl9zZXRfZnJhY3Rpb24oR1RLX1BST0dSRVNTX0JBUihwcm9ncmVzcyksIGZyYWN0aW9uKTtcXG4gXFx0c25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgXFxcIiVcXFwiUFJJdTY0XFxcIiAvICVcXFwiUFJJdTY0LCBwLVxcdTAwM2VjdXJyLCBwLVxcdTAwM2V0b3RhbCk7XFxuIFxcdGd0a19wcm9ncmVzc19iYXJfc2V0X3RleHQoR1RLX1BST0dSRVNTX0JBUihwcm9ncmVzcyksIGJ1Zik7XFxuIFxcbi1cXHQvKiB3ZSBkaWRuJ3QgY2FsbCBndGtfbWFpbiB5ZXQsIHNvIGRvIGl0IG1hbnVhbGx5ICovXFxuLVxcdHdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSlcXG4tXFx0XFx0Z3RrX21haW5faXRlcmF0aW9uKCk7XFxuK1xcdC8qIHdlIGRpZG4ndCBzdGFydCBhIG1haW4gbG9vcCB5ZXQsIHNvIHB1bXAgZXZlbnRzIG1hbnVhbGx5ICovXFxuK1xcdHdoaWxlIChnX21haW5fY29udGV4dF9wZW5kaW5nKE5VTEwpKVxcbitcXHRcXHRnX21haW5fY29udGV4dF9pdGVyYXRpb24oTlVMTCwgRkFMU0UpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBndGtfdWlfcHJvZ3Jlc3NfX2ZpbmlzaCh2b2lkKVxcbiB7XFxuK1xcdGlmIChkaWFsb2cgPT0gTlVMTClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0LyogdGhpcyB3aWxsIGFsc28gZGVzdHJveSBhbGwgb2YgaXRzIGNoaWxkcmVuICovXFxuLVxcdGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpO1xcbitcXHRndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTtcXG4gXFxuIFxcdGRpYWxvZyA9IE5VTEw7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmNcXG5pbmRleCBmNWVlZTRkNjY4NzM4Li45YjQ0ZjM3MTk3NDc3IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmNcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jXFxuQEAgLTEyLDcgKzEyLDcgQEAgaW50IHBlcmZfZ3RrX19pbml0KHZvaWQpXFxuIFxcdGd0a191aV9wcm9ncmVzc19faW5pdCgpO1xcbiBcXHRwZXJmX2d0a19faW5pdF9ocHAoKTtcXG4gXFxuLVxcdHJldHVybiBndGtfaW5pdF9jaGVjayhOVUxMLCBOVUxMKSA/IDAgOiAtMTtcXG4rXFx0cmV0dXJuIGd0a19pbml0X2NoZWNrKCkgPyAwIDogLTE7XFxuIH1cXG4gXFxuIHZvaWQgcGVyZl9ndGtfX2V4aXQoYm9vbCB3YWl0X2Zvcl9vayBfX21heWJlX3VudXNlZClcXG5AQCAtMjAsNSArMjAsNiBAQCB2b2lkIHBlcmZfZ3RrX19leGl0KGJvb2wgd2FpdF9mb3Jfb2sgX19tYXliZV91bnVzZWQpXFxuIFxcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXHRwZXJmX2Vycm9yX191bnJlZ2lzdGVyKFxcdTAwMjZwZXJmX2d0a19lb3BzKTtcXG4tXFx0Z3RrX21haW5fcXVpdCgpO1xcbitcXHRwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2coKTtcXG4rXFx0cGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jIGIvdG9vbHMvcGVyZi91aS9ndGsvdXRpbC5jXFxuaW5kZXggYzQ3ZjVjMzg3ODM4Yy4uNTA5Njg4OGI3YzE2MCAxMDA2NDRcXG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcXG5AQCAtNCw2ICs0LDcgQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NzdGRsaWIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY3N0cmluZy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGlsZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3phbGxvYy5oXFx1MDAzZVxcbiBcXG4gc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKnBnY3R4O1xcbkBAIC0yOCwyNyArMjksNjAgQEAgaW50IHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKipjdHgpXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbitzdGF0aWMgR01haW5Mb29wICpwZXJmX2d0a19fZXJyb3JfbG9vcDtcXG4rXFxuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKHZvaWQpXFxuK3tcXG4rXFx0aWYgKHBlcmZfZ3RrX19lcnJvcl9sb29wKVxcbitcXHRcXHRnX21haW5fbG9vcF9xdWl0KHBlcmZfZ3RrX19lcnJvcl9sb29wKTtcXG4rfVxcbitcXG4rc3RhdGljIHZvaWQgcGVyZl9ndGtfX2RpYWxvZ19yZXNwb25zZShHdGtEaWFsb2cgKmRpYWxvZyxcXG4rXFx0XFx0XFx0XFx0ICAgICAgZ2ludCByZXNwb25zZV9pZCBfX21heWJlX3VudXNlZCxcXG4rXFx0XFx0XFx0XFx0ICAgICAgZ3BvaW50ZXIgZGF0YSBfX21heWJlX3VudXNlZClcXG4re1xcbitcXHRndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTtcXG4rfVxcbitcXG4gc3RhdGljIGludCBwZXJmX2d0a19fZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIHtcXG4gXFx0Y2hhciAqbXNnO1xcbiBcXHRHdGtXaWRnZXQgKmRpYWxvZztcXG4rXFx0dmFfbGlzdCBhcmdzX2NvcHk7XFxuIFxcbitcXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XFxuIFxcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxcbi1cXHQgICAgdmFzcHJpbnRmKFxcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXFx1MDAzYyAwKSB7XFxuK1xcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFxcdTAwM2MgMCkge1xcbitcXHRcXHR2YV9lbmQoYXJnc19jb3B5KTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJFcnJvcjpcXFxcblxcXCIpO1xcbiBcXHRcXHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XFxuIFxcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbiBcXHR9XFxuK1xcdHZhX2VuZChhcmdzX2NvcHkpO1xcbiBcXG4gXFx0ZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ld193aXRoX21hcmt1cChHVEtfV0lORE9XKHBnY3R4LVxcdTAwM2VtYWluX3dpbmRvdyksXFxuIFxcdFxcdFxcdFxcdFxcdEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCxcXG4gXFx0XFx0XFx0XFx0XFx0R1RLX01FU1NBR0VfRVJST1IsXFxuIFxcdFxcdFxcdFxcdFxcdEdUS19CVVRUT05TX0NMT1NFLFxcbiBcXHRcXHRcXHRcXHRcXHRcXFwiXFx1MDAzY2JcXHUwMDNlRXJyb3JcXHUwMDNjL2JcXHUwMDNlXFxcXG5cXFxcbiVzXFxcIiwgbXNnKTtcXG4tXFx0Z3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTtcXG4gXFxuLVxcdGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpO1xcbitcXHQvKlxcbitcXHQgKiBcXFwicmVzcG9uc2VcXFwiIG9ubHkgZmlyZXMgd2hlbiBhIGJ1dHRvbiBpcyBjbGlja2VkOyBERVNUUk9ZX1dJVEhfUEFSRU5UXFxuK1xcdCAqIGRlc3Ryb3lzIHRoZSBkaWFsb2cgZGlyZWN0bHkgd2l0aG91dCBpdC4gUXVpdCBmcm9tIFxcXCJkZXN0cm95XFxcIlxcbitcXHQgKiBpbnN0ZWFkLCB3aGljaCBmaXJlcyBlaXRoZXIgd2F5LCBzbyB0aGUgbmVzdGVkIGxvb3AgYmVsb3cgY2FuJ3RcXG4rXFx0ICogb3V0bGl2ZSB0aGUgZGlhbG9nIGFuZCBoYW5nLlxcbitcXHQgKi9cXG4rXFx0cGVyZl9ndGtfX2Vycm9yX2xvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgRkFMU0UpO1xcbitcXHRnX3NpZ25hbF9jb25uZWN0KGRpYWxvZywgXFxcInJlc3BvbnNlXFxcIixcXG4rXFx0XFx0XFx0IEdfQ0FMTEJBQ0socGVyZl9ndGtfX2RpYWxvZ19yZXNwb25zZSksIE5VTEwpO1xcbitcXHRnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCBcXFwiZGVzdHJveVxcXCIsXFxuK1xcdFxcdFxcdFxcdCBHX0NBTExCQUNLKGdfbWFpbl9sb29wX3F1aXQpLCBwZXJmX2d0a19fZXJyb3JfbG9vcCk7XFxuK1xcbitcXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGRpYWxvZywgVFJVRSk7XFxuK1xcdGdfbWFpbl9sb29wX3J1bihwZXJmX2d0a19fZXJyb3JfbG9vcCk7XFxuK1xcdGdfY2xlYXJfcG9pbnRlcihcXHUwMDI2cGVyZl9ndGtfX2Vycm9yX2xvb3AsIGdfbWFpbl9sb29wX3VucmVmKTtcXG4rXFxuIFxcdGZyZWUobXNnKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtNTcsMTQgKzkxLDE4IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxcbiBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX2luZm9fYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxcbiB7XFxuIFxcdGNoYXIgKm1zZztcXG4rXFx0dmFfbGlzdCBhcmdzX2NvcHk7XFxuIFxcbitcXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XFxuIFxcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxcbi1cXHQgICAgdmFzcHJpbnRmKFxcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXFx1MDAzYyAwKSB7XFxuK1xcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFxcdTAwM2MgMCkge1xcbitcXHRcXHR2YV9lbmQoYXJnc19jb3B5KTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJXYXJuaW5nOlxcXFxuXFxcIik7XFxuIFxcdFxcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdH1cXG4rXFx0dmFfZW5kKGFyZ3NfY29weSk7XFxuIFxcbiBcXHRndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKHBnY3R4LVxcdTAwM2VtZXNzYWdlX2xhYmVsKSwgbXNnKTtcXG4gXFx0Z3RrX2luZm9fYmFyX3NldF9tZXNzYWdlX3R5cGUoR1RLX0lORk9fQkFSKHBnY3R4LVxcdTAwM2VpbmZvX2JhciksXFxuQEAgLTc4LDE0ICsxMTYsMTggQEAgc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19pbmZvX2Jhcihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncylcXG4gc3RhdGljIGludCBwZXJmX2d0a19fd2FybmluZ19zdGF0dXNiYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXFxuIHtcXG4gXFx0Y2hhciAqbXNnLCAqcDtcXG4rXFx0dmFfbGlzdCBhcmdzX2NvcHk7XFxuIFxcbitcXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XFxuIFxcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxcbi1cXHQgICAgdmFzcHJpbnRmKFxcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXFx1MDAzYyAwKSB7XFxuK1xcdCAgICB2YXNwcmludGYoXFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFxcdTAwM2MgMCkge1xcbitcXHRcXHR2YV9lbmQoYXJnc19jb3B5KTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJXYXJuaW5nOlxcXFxuXFxcIik7XFxuIFxcdFxcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcXG4gXFx0XFx0ZnByaW50ZihzdGRlcnIsIFxcXCJcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdH1cXG4rXFx0dmFfZW5kKGFyZ3NfY29weSk7XFxuIFxcbiBcXHRndGtfc3RhdHVzYmFyX3BvcChHVEtfU1RBVFVTQkFSKHBnY3R4LVxcdTAwM2VzdGF0YmFyKSxcXG4gXFx0XFx0XFx0ICBwZ2N0eC1cXHUwMDNlc3RhdGJhcl9jdHhfaWQpO1xcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL3NldHVwLmMgYi90b29scy9wZXJmL3VpL3NldHVwLmNcXG5pbmRleCBmZjgwMDA0N2U2OTdmLi5kODg3MzQ2YzdhNjMyIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xcbisrKyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xcbkBAIC0xNCw3ICsxNCw3IEBAIGludCB1c2VfYnJvd3NlciA9IC0xO1xcbiBcXG4gI2RlZmluZSBQRVJGX0dUS19EU08gXFxcImxpYnBlcmYtZ3RrLnNvXFxcIlxcbiBcXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxcbiBcXG4gc3RhdGljIGludCBzZXR1cF9ndGtfYnJvd3Nlcih2b2lkKVxcbiB7XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcXG5pbmRleCBkZjcwZTk1YTg0NzA0Li4xMjNiNmQ1ZmNlYTc4IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jXFxuKysrIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcXG5AQCAtMTQ1LDYgKzE0NSwxNyBAQCBzdGF0aWMgaW50IGFubm90YXRlZF9zb3VyY2VfX2FsbG9jX2hpc3RvZ3JhbXMoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYyxcXG4gXFx0cmV0dXJuIHNyYy1cXHUwMDNlaGlzdG9ncmFtcyA/IDAgOiAtMTtcXG4gfVxcbiBcXG4rc3RydWN0IHN5bV9oaXN0X2VudHJ5ICpcXG4rYW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KVxcbit7XFxuK1xcdHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqZW50cnk7XFxuK1xcdGxvbmcga2V5ID0gb2Zmc2V0IFxcdTAwM2NcXHUwMDNjIDE2IHwgZXZzZWwtXFx1MDAzZWNvcmUuaWR4O1xcbitcXG4rXFx0aWYgKCFoYXNobWFwX19maW5kKHNyYy1cXHUwMDNlc2FtcGxlcywga2V5LCBcXHUwMDI2ZW50cnkpKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0cmV0dXJuIGVudHJ5O1xcbit9XFxuK1xcbiB2b2lkIHN5bWJvbF9fYW5ub3RhdGVfemVyb19oaXN0b2dyYW1zKHN0cnVjdCBzeW1ib2wgKnN5bSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMgPSBzeW1ib2xfX2Fubm90YXRpb24oc3ltKTtcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmggYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxcbmluZGV4IGZhMDhkMDliODBmNzYuLjQwMDM4YTM3NzlkNDYgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmhcXG4rKysgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxcbkBAIC00MDYsMTYgKzQwNiw4IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IHN5bV9oaXN0ICphbm5vdGF0aW9uX19oaXN0b2dyYW0oc3RydWN0IGFubm90YXRpb24gKm5vdGVzLFxcbiBcXHRyZXR1cm4gYW5ub3RhdGVkX3NvdXJjZV9faGlzdG9ncmFtKG5vdGVzLVxcdTAwM2VzcmMsIGV2c2VsKTtcXG4gfVxcbiBcXG4tc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxcbi1hbm5vdGF0ZWRfc291cmNlX19oaXN0X2VudHJ5KHN0cnVjdCBhbm5vdGF0ZWRfc291cmNlICpzcmMsIGNvbnN0IHN0cnVjdCBldnNlbCAqZXZzZWwsIHU2NCBvZmZzZXQpXFxuLXtcXG4tXFx0c3RydWN0IHN5bV9oaXN0X2VudHJ5ICplbnRyeTtcXG4tXFx0bG9uZyBrZXkgPSBvZmZzZXQgXFx1MDAzY1xcdTAwM2MgMTYgfCBldnNlbC1cXHUwMDNlY29yZS5pZHg7XFxuLVxcbi1cXHRpZiAoIWhhc2htYXBfX2ZpbmQoc3JjLVxcdTAwM2VzYW1wbGVzLCBrZXksIFxcdTAwMjZlbnRyeSkpXFxuLVxcdFxcdHJldHVybiBOVUxMO1xcbi1cXHRyZXR1cm4gZW50cnk7XFxuLX1cXG4rc3RydWN0IHN5bV9oaXN0X2VudHJ5ICpcXG4rYW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KTtcXG4gXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGFubm90YXRpb24gKnN5bWJvbF9fYW5ub3RhdGlvbihzdHJ1Y3Qgc3ltYm9sICpzeW0pXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDA6NTI6MDQuMzYyMDMyNTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjYyOTk5OTUxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBleGNsdXNpdmVseSBtb2RpZmllcyB1c2Vyc3BhY2UgdG9vbHMgKHRvb2xzL3BlcmYgYW5kIHRvb2xzL2J1aWxkKSwgcG9ydGluZyBwZXJmJ3MgR1RLIGludGVyZmFjZSBzdXBwb3J0IGZyb20gR1RLMiB0byBHVEs0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBjb2RlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDMwOWM4MjM1ZGVmNmRmNzEzZmE0MDk5OTQxZWU5MjA2YWZjZjFjZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMDA6NTI6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9idWlsZC9NYWtlZmlsZS5mZWF0dXJlIGIvdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZVxuaW5kZXggOTllYjBlYTA5NTM3NS4uN2ZmZWI3NWEwMWM3OSAxMDA2NDRcbi0tLSBhL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcbisrKyBiL3Rvb2xzL2J1aWxkL01ha2VmaWxlLmZlYXR1cmVcbkBAIC0xMTMsOCArMTEzLDggQEAgRkVBVFVSRV9URVNUU19FWFRSQSA6PSAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY29tcGlsZS14MzIgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY3BsdXMtZGVtYW5nbGUgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgY3hhLWRlbWFuZ2xlICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgZ3RrMiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4tICAgICAgICAgZ3RrMi1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgZ3RrNC1pbmZvYmFyICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgaGVsbG8gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgYmFiZWx0cmFjZTItY3RmLXdyaXRlciAgICAgICAgIFxcXG4gICAgICAgICAgbGliY2Fwc3RvbmUgICAgICAgICAgICAgICAgICAgIFxcXG5AQCAtMTQzLDYgKzE0Myw3IEBAIGVuZGlmXG4gRkVBVFVSRV9ESVNQTEFZID89ICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGxpYmR3ICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBnbGliYyAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgZ3RrNCAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIGxpYmVsZiAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICBsaWJudW1hICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgbnVtYV9udW1fcG9zc2libGVfY3B1cyBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvTWFrZWZpbGUgYi90b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlXG5pbmRleCA3ZDE2NTAxODExNmE1Li4yY2E5OTJmYmI5YWQ1IDEwMDY0NFxuLS0tIGEvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS9NYWtlZmlsZVxuQEAgLTExLDggKzExLDggQEAgRklMRVM9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICB0ZXN0LWV2ZW50ZmQuYmluICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtZm9ydGlmeS1zb3VyY2UuYmluICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1nbGliYy5iaW4gICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi0gICAgICAgICB0ZXN0LWd0azIuYmluICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLSAgICAgICAgIHRlc3QtZ3RrMi1pbmZvYmFyLmJpbiAgICAgICAgICAgICAgICAgIFxcXG4rICAgICAgICAgdGVzdC1ndGs0LmJpbiAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbisgICAgICAgICB0ZXN0LWd0azQtaW5mb2Jhci5iaW4gICAgICAgICAgICAgICAgICBcXFxuICAgICAgICAgIHRlc3QtaGVsbG8uYmluICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgdGVzdC1saWJiZmQuYmluICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiBcdCB0ZXN0LWxpYmJmZC10aHJlYWRzYWZlLmJpbiAgICAgIFx0XFxcbkBAIC0yNDAsMTEgKzI0MCwxMSBAQCAkKE9VVFBVVCl0ZXN0LWxpYmNwdXBvd2VyLmJpbjpcbiAkKE9VVFBVVCl0ZXN0LWxpYnRyYWNlZnMuYmluOlxuIFx0ICQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBsaWJ0cmFjZWZzIDJcdTAwM2UvZGV2L251bGwpIC1sdHJhY2Vmc1xuIFxuLSQoT1VUUFVUKXRlc3QtZ3RrMi5iaW46XG4tXHQkKEJVSUxEKSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIC0tY2ZsYWdzIGd0aystMi4wIDJcdTAwM2UvZGV2L251bGwpIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcbiskKE9VVFBVVCl0ZXN0LWd0azQuYmluOlxuK1x0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4gXG4tJChPVVRQVVQpdGVzdC1ndGsyLWluZm9iYXIuYmluOlxuLVx0JChCVUlMRCkgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGsrLTIuMCAyXHUwMDNlL2Rldi9udWxsKVxuKyQoT1VUUFVUKXRlc3QtZ3RrNC1pbmZvYmFyLmJpbjpcbitcdCQoQlVJTEQpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrNCAyXHUwMDNlL2Rldi9udWxsKVxuIFxuIGdyZXAtbGlicyAgPSAkKGZpbHRlciAtbCUsJCgxKSlcbiBzdHJpcC1saWJzID0gJChmaWx0ZXItb3V0IC1sJSwkKDEpKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuYyBiL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuY1xuc2ltaWxhcml0eSBpbmRleCA3NyVcbnJlbmFtZSBmcm9tIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuY1xucmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LWluZm9iYXIuY1xuaW5kZXggYjFiNzE2ZGQ1NzMzMC4uNmMxYmNlZTU5NWE5YyAxMDA2NDRcbi0tLSBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLWluZm9iYXIuY1xuKysrIGIvdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azQtaW5mb2Jhci5jXG5AQCAtMyw5ICszLDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NndGsvZ3RrLmhcdTAwM2VcbiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiXG4gXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbitpbnQgbWFpbih2b2lkKVxuIHtcbi1cdGd0a19pbml0KFx1MDAyNmFyZ2MsIFx1MDAyNmFyZ3YpO1xuK1x0Z3RrX2luaXQoKTtcbiBcdGd0a19pbmZvX2Jhcl9uZXcoKTtcbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGsyLmMgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXG5zaW1pbGFyaXR5IGluZGV4IDc2JVxucmVuYW1lIGZyb20gdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWd0azIuY1xucmVuYW1lIHRvIHRvb2xzL2J1aWxkL2ZlYXR1cmUvdGVzdC1ndGs0LmNcbmluZGV4IDJhYWY0YmZjMjA1NTYuLmI5NTIwZTc0MDhiOTkgMTAwNjQ0XG4tLS0gYS90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrMi5jXG4rKysgYi90b29scy9idWlsZC9mZWF0dXJlL3Rlc3QtZ3RrNC5jXG5AQCAtMyw5ICszLDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NndGsvZ3RrLmhcdTAwM2VcbiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGVycm9yIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiXG4gXG4taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbitpbnQgbWFpbih2b2lkKVxuIHtcbi1cdGd0a19pbml0KFx1MDAyNmFyZ2MsIFx1MDAyNmFyZ3YpO1xuK1x0Z3RrX2luaXQoKTtcbiBcbiAgICAgICAgIHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL0RvY3VtZW50YXRpb24vcGVyZi1yZXBvcnQudHh0IGIvdG9vbHMvcGVyZi9Eb2N1bWVudGF0aW9uL3BlcmYtcmVwb3J0LnR4dFxuaW5kZXggMjJmODdlYWEzMjc5Ni4uN2FmOWIzZjgxYzA2NSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcbisrKyBiL3Rvb2xzL3BlcmYvRG9jdW1lbnRhdGlvbi9wZXJmLXJlcG9ydC50eHRcbkBAIC0zNTEsNyArMzUxLDcgQEAgT1BUSU9OU1xuIFx0cmVxdWlyZXMgYSB0dHksIGlmIG9uZSBpcyBub3QgcHJlc2VudCwgYXMgd2hlbiBwaXBpbmcgdG8gb3RoZXJcbiBcdGNvbW1hbmRzLCB0aGUgc3RkaW8gaW50ZXJmYWNlIGlzIHVzZWQuXG4gXG4tLS1ndGs6OiBVc2UgdGhlIEdUSzIgaW50ZXJmYWNlLlxuKy0tZ3RrOjogVXNlIHRoZSBHVEs0IGludGVyZmFjZS5cbiBcbiAtazo6XG4gLS12bWxpbnV4PVx1MDAzY2ZpbGVcdTAwM2U6OlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUgYi90b29scy9wZXJmL01ha2VmaWxlXG5pbmRleCA1YjcxMzgzN2VlZGU3Li41NjAxNDEwNjQ3OWEzIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZVxuKysrIGIvdG9vbHMvcGVyZi9NYWtlZmlsZVxuQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGVhbjpcbiAjIG1ha2UgLUMgdG9vbHMvcGVyZiAtZiB0ZXN0cy9tYWtlXG4gI1xuIGJ1aWxkLXRlc3Q6XG4tXHRAJChNQUtFKSBTSFVGPTEgLWYgdGVzdHMvbWFrZSBSRVVTRV9GRUFUVVJFU19EVU1QPTEgTUs9TWFrZWZpbGUgU0VUX1BBUkFMTEVMPTEgLS1uby1wcmludC1kaXJlY3RvcnkgdGFycGtnIG1ha2Vfc3RhdGljIG1ha2Vfd2l0aF9ndGsyIG91dFxuK1x0QCQoTUFLRSkgU0hVRj0xIC1mIHRlc3RzL21ha2UgUkVVU0VfRkVBVFVSRVNfRFVNUD0xIE1LPU1ha2VmaWxlIFNFVF9QQVJBTExFTD0xIC0tbm8tcHJpbnQtZGlyZWN0b3J5IHRhcnBrZyBtYWtlX3N0YXRpYyBtYWtlX3dpdGhfZ3RrNCBvdXRcbiBcbiBidWlsZC10ZXN0LXRhcmJhbGw6XG4gXHRAJChNQUtFKSAtZiB0ZXN0cy9tYWtlIFJFVVNFX0ZFQVRVUkVTX0RVTVA9MSBNSz1NYWtlZmlsZSBTRVRfUEFSQUxMRUw9MSAtLW5vLXByaW50LWRpcmVjdG9yeSBvdXRcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL01ha2VmaWxlLmNvbmZpZyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXG5pbmRleCA0ZDU5OTNkYTlmOTQ1Li5lZjc0MTlhNWIwMTM3IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi9NYWtlZmlsZS5jb25maWdcbisrKyBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUuY29uZmlnXG5AQCAtNzc0LDIxICs3NzQsMjYgQEAgaWZuZGVmIE5PX1NMQU5HXG4gICBlbmRpZlxuIGVuZGlmXG4gXG4taWZkZWYgR1RLMlxuLSAgRkxBR1NfR1RLMj0kKENGTEFHUykgJChMREZMQUdTKSAkKEVYVExJQlMpICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWxpYnMgLS1jZmxhZ3MgZ3RrKy0yLjAgMlx1MDAzZS9kZXYvbnVsbClcbi0gICQoY2FsbCBmZWF0dXJlX2NoZWNrLGd0azIpXG4tICBpZm5lcSAoJChmZWF0dXJlLWd0azIpLCAxKVxuLSAgICAkKHdhcm5pbmcgR1RLMiBub3QgZm91bmQsIGRpc2FibGVzIEdUSzIgc3VwcG9ydC4gUGxlYXNlIGluc3RhbGwgZ3RrMi1kZXZlbCBvciBsaWJndGsyLjAtZGV2KVxuLSAgICBOT19HVEsyIDo9IDFcbitpZmRlZiBHVEs0XG4rICBGTEFHU19HVEs0PSQoQ0ZMQUdTKSAkKExERkxBR1MpICQoRVhUTElCUykgJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyAtLWNmbGFncyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4rICAkKGNhbGwgZmVhdHVyZV9jaGVjayxndGs0KVxuKyAgaWZuZXEgKCQoZmVhdHVyZS1ndGs0KSwgMSlcbisgICAgJCh3YXJuaW5nIEdUSzQgbm90IGZvdW5kLCBkaXNhYmxlcyBHVEs0IHN1cHBvcnQuIFBsZWFzZSBpbnN0YWxsIGd0azQtZGV2ZWwgb3IgbGliZ3RrLTQtZGV2KVxuKyAgICBOT19HVEs0IDo9IDFcbiAgIGVsc2Vcbi0gICAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrMi1pbmZvYmFyKVxuLSAgICBpZmVxICgkKGZlYXR1cmUtZ3RrMi1pbmZvYmFyKSwgMSlcbisgICAgJChjYWxsIGZlYXR1cmVfY2hlY2ssZ3RrNC1pbmZvYmFyKVxuKyAgICBpZmVxICgkKGZlYXR1cmUtZ3RrNC1pbmZvYmFyKSwgMSlcbiAgICAgICBHVEtfQ0ZMQUdTIDo9IC1ESEFWRV9HVEtfSU5GT19CQVJfU1VQUE9SVFxuICAgICBlbmRpZlxuLSAgICBDRkxBR1MgKz0gLURIQVZFX0dUSzJfU1VQUE9SVFxuLSAgICBHVEtfQ0ZMQUdTICs9ICQoc2hlbGwgJChQS0dfQ09ORklHKSAtLWNmbGFncyBndGsrLTIuMCAyXHUwMDNlL2Rldi9udWxsKVxuLSAgICBHVEtfTElCUyA6PSAkKHNoZWxsICQoUEtHX0NPTkZJRykgLS1saWJzIGd0aystMi4wIDJcdTAwM2UvZGV2L251bGwpXG4rICAgIENGTEFHUyArPSAtREhBVkVfR1RLNF9TVVBQT1JUXG4rICAgIEdUS19DRkxBR1MgKz0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tY2ZsYWdzIGd0azQgMlx1MDAzZS9kZXYvbnVsbClcbisgICAgR1RLX0xJQlMgOj0gJChzaGVsbCAkKFBLR19DT05GSUcpIC0tbGlicyBndGs0IDJcdTAwM2UvZGV2L251bGwpXG4gICAgIEVYVExJQlMgKz0gLWxkbFxuKyAgICAjIGxpYnBlcmYtZ3RrLnNvIGlzIGRsb3BlbigpZWQgYXQgcnVudGltZSBhbmQgY2FsbHMgYmFjayBpbnRvXG4rICAgICMgc3ltYm9scyBkZWZpbmVkIGluIHRoZSBwZXJmIGJpbmFyeSBpdHNlbGYgKGNhbGxjaGFpbl9wYXJhbSxcbisgICAgIyBzeW1ib2xfY29uZiwgZXZzZWxfX25hbWUsIC4uLik6IHBlcmYgbmVlZHMgdG8gZXhwb3J0IHRob3NlXG4rICAgICMgZHluYW1pY2FsbHkgZm9yIHRoZSBwbHVnaW4gdG8gcmVzb2x2ZSB0aGVtLlxuKyAgICBMREZMQUdTICs9IC1yZHluYW1pY1xuICAgZW5kaWZcbiBlbmRpZlxuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZiBiL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuaW5kZXggMjljZmQ0NGM0MjdmMy4uMjQzOGI0MGVhYWVjMSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvTWFrZWZpbGUucGVyZlxuKysrIGIvdG9vbHMvcGVyZi9NYWtlZmlsZS5wZXJmXG5AQCAtNDksNyArNDksNyBAQCBpbmNsdWRlIC4uL3NjcmlwdHMvdXRpbGl0aWVzLm1ha1xuICNcbiAjIERlZmluZSBOT19TTEFORyBpZiB5b3UgZG8gbm90IHdhbnQgVFVJIHN1cHBvcnQuXG4gI1xuLSMgRGVmaW5lIEdUSzIgaWYgeW91IHdhbnQgR1RLKyBHVUkgc3VwcG9ydC5cbisjIERlZmluZSBHVEs0IGlmIHlvdSB3YW50IEdUSysgR1VJIHN1cHBvcnQuXG4gI1xuICMgRGVmaW5lIE5PX0RFTUFOR0xFIGlmIHlvdSBkbyBub3Qgd2FudCBDKysgc3ltYm9sIGRlbWFuZ2xpbmcuXG4gI1xuQEAgLTQ3Myw3ICs0NzMsNyBAQCBpZm5lcSAoJChPVVRQVVQpLClcbiAgIENGTEFHUyArPSAtSSQoT1VUUFVUKVxuIGVuZGlmXG4gXG4taWZkZWYgR1RLMlxuK2lmZGVmIEdUSzRcbiAgIEFMTF9QUk9HUkFNUyArPSAkKE9VVFBVVClsaWJwZXJmLWd0ay5zb1xuICAgR1RLX0lOIDo9ICQoT1VUUFVUKWd0ay1pbi5vXG4gZW5kaWZcbkBAIC04MTEsNyArODExLDcgQEAgY2hlY2s6IHByZXBhcmVcbiBcbiAjIyMgSW5zdGFsbGF0aW9uIHJ1bGVzXG4gXG4taWZkZWYgR1RLMlxuK2lmZGVmIEdUSzRcbiBpbnN0YWxsLWd0azogJChPVVRQVVQpbGlicGVyZi1ndGsuc29cbiBcdCQoY2FsbCBRVUlFVF9JTlNUQUxMLCAnR1RLIFVJJykgXFxcbiBcdFx0JChJTlNUQUxMKSAtZCAtbSA3NTUgJyQoREVTVERJUl9TUSkkKGxpYmRpcl9TUSknOyBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcbmluZGV4IDY5Y2I3MmIyMDgyYTYuLjE1MTYzZTA4MWE4Y2UgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL2J1aWx0aW4tYW5ub3RhdGUuY1xuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLWFubm90YXRlLmNcbkBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBwZXJmX2Fubm90YXRlIHtcbiBcdGJvb2xcdCAgIHVzZV90dWk7XG4gI2VuZGlmXG4gXHRib29sXHQgICB1c2Vfc3RkaW8sIHVzZV9zdGRpbzI7XG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRib29sXHQgICB1c2VfZ3RrO1xuICNlbmRpZlxuIFx0Ym9vbFx0ICAgc2tpcF9taXNzaW5nO1xuQEAgLTcxMiw3ICs3MTIsNyBAQCBpbnQgY21kX2Fubm90YXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcbiBcdE9QVF9CT09MRUFOKCdxJywgXCJxdWlldFwiLCBcdTAwMjZxdWlldCwgXCJkbyBub3cgc2hvdyBhbnkgd2FybmluZ3Mgb3IgbWVzc2FnZXNcIiksXG4gXHRPUFRfQk9PTEVBTignRCcsIFwiZHVtcC1yYXctdHJhY2VcIiwgXHUwMDI2ZHVtcF90cmFjZSxcbiBcdFx0ICAgIFwiZHVtcCByYXcgdHJhY2UgaW4gQVNDSUlcIiksXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRPUFRfQk9PTEVBTigwLCBcImd0a1wiLCBcdTAwMjZhbm5vdGF0ZS51c2VfZ3RrLCBcIlVzZSB0aGUgR1RLIGludGVyZmFjZVwiKSxcbiAjZW5kaWZcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXG5AQCAtODI4LDcgKzgyOCw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0aWYgKGFubm90YXRlX2NoZWNrX2FyZ3MoKSBcdTAwM2MgMClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRpZiAoc3ltYm9sX2NvbmYuc2hvd19ucl9zYW1wbGVzIFx1MDAyNlx1MDAyNiBhbm5vdGF0ZS51c2VfZ3RrKSB7XG4gXHRcdHByX2VycihcIi0tc2hvdy1uci1zYW1wbGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gLS1ndGsgbW9kZSBhdCB0aGlzIHRpbWVcXG5cIik7XG4gXHRcdHJldHVybiByZXQ7XG5AQCAtODk4LDcgKzg5OCw3IEBAIGludCBjbWRfYW5ub3RhdGUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KVxuIFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX3R1aSlcbiBcdFx0dXNlX2Jyb3dzZXIgPSAxO1xuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuKyNpZmRlZiBIQVZFX0dUSzRfU1VQUE9SVFxuIFx0ZWxzZSBpZiAoYW5ub3RhdGUudXNlX2d0aylcbiBcdFx0dXNlX2Jyb3dzZXIgPSAyO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuYyBiL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuaW5kZXggNjBkMWYxNjY2MjllMC4uZDE0Mzg0YzU4NDY2MSAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvYnVpbHRpbi1yZXBvcnQuY1xuKysrIGIvdG9vbHMvcGVyZi9idWlsdGluLXJlcG9ydC5jXG5AQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgcmVwb3J0IHtcbiAjaWZkZWYgSEFWRV9TTEFOR19TVVBQT1JUXG4gXHRib29sXHRcdFx0dXNlX3R1aTtcbiAjZW5kaWZcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcdGJvb2xcdFx0XHR1c2VfZ3RrO1xuICNlbmRpZlxuIFx0Ym9vbFx0XHRcdHVzZV9zdGRpbztcbkBAIC0xMzU5LDggKzEzNTksOCBAQCBpbnQgY21kX3JlcG9ydChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpXG4gI2lmZGVmIEhBVkVfU0xBTkdfU1VQUE9SVFxuIFx0T1BUX0JPT0xFQU4oMCwgXCJ0dWlcIiwgXHUwMDI2cmVwb3J0LnVzZV90dWksIFwiVXNlIHRoZSBUVUkgaW50ZXJmYWNlXCIpLFxuICNlbmRpZlxuLSNpZmRlZiBIQVZFX0dUSzJfU1VQUE9SVFxuLVx0T1BUX0JPT0xFQU4oMCwgXCJndGtcIiwgXHUwMDI2cmVwb3J0LnVzZV9ndGssIFwiVXNlIHRoZSBHVEsyIGludGVyZmFjZVwiKSxcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbitcdE9QVF9CT09MRUFOKDAsIFwiZ3RrXCIsIFx1MDAyNnJlcG9ydC51c2VfZ3RrLCBcIlVzZSB0aGUgR1RLNCBpbnRlcmZhY2VcIiksXG4gI2VuZGlmXG4gXHRPUFRfQk9PTEVBTigwLCBcInN0ZGlvXCIsIFx1MDAyNnJlcG9ydC51c2Vfc3RkaW8sXG4gXHRcdCAgICBcIlVzZSB0aGUgc3RkaW8gaW50ZXJmYWNlXCIpLFxuQEAgLTE3MTAsNyArMTcxMCw3IEBAIGludCBjbWRfcmVwb3J0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndilcbiBcdGVsc2UgaWYgKHJlcG9ydC51c2VfdHVpKVxuIFx0XHR1c2VfYnJvd3NlciA9IDE7XG4gI2VuZGlmXG4tI2lmZGVmIEhBVkVfR1RLMl9TVVBQT1JUXG4rI2lmZGVmIEhBVkVfR1RLNF9TVVBQT1JUXG4gXHRlbHNlIGlmIChyZXBvcnQudXNlX2d0aylcbiBcdFx0dXNlX2Jyb3dzZXIgPSAyO1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvc2NyaXB0cy9pbnN0YWxsLWJ1aWxkLWRlcHMuc2ggYi90b29scy9wZXJmL3NjcmlwdHMvaW5zdGFsbC1idWlsZC1kZXBzLnNoXG5pbmRleCBkMDAzZTdmYWIyYmU4Li5hNjAxYTUyNjBjMTdlIDEwMDc1NVxuLS0tIGEvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxuKysrIGIvdG9vbHMvcGVyZi9zY3JpcHRzL2luc3RhbGwtYnVpbGQtZGVwcy5zaFxuQEAgLTE5OSw4ICsxOTksOCBAQCBmZWRvcmFfcGtnX2ZvcigpIHtcbiBcdCMgb3B0LWluIGZlYXR1cmVzLCB3aGljaCBhIGRlZmF1bHQgYnVpbGQgZG9lcyBub3QgZW5hYmxlOiB0aGUgbGliYmZkXG4gXHQjIGRpc2Fzc2VtYmxlciBmYW1pbHkgKGxpYmJmZCwgbGliYmZkLXRocmVhZHNhZmUsIGxpYmJmZC1saWJlcnR5LFxuIFx0IyBkaXNhc3NlbWJsZXItKiwgY3BsdXMtZGVtYW5nbGUpLCBvbmx5IGxpbmtlZCBvbiBCVUlMRF9OT05ESVNUUk9cbi1cdCMgYnVpbGRzIGFuZCBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGNhcHN0b25lLCBHVEsyLCBMSUJQRVJMIGFuZFxuLVx0IyBMSUJVTldJTkQgc3VwcG9ydCAoaWZkZWYgR1RLMiAvIGlmZGVmIExJQlBFUkwgLyBMSUJVTldJTkQ9MSksXG4rXHQjIGJ1aWxkcyBhbmQgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBjYXBzdG9uZSwgR1RLNCwgTElCUEVSTCBhbmRcbitcdCMgTElCVU5XSU5EIHN1cHBvcnQgKGlmZGVmIEdUSzQgLyBpZmRlZiBMSUJQRVJMIC8gTElCVU5XSU5EPTEpLFxuIFx0IyBhbmQgQ29yZVNpZ2h0IChpZmRlZiBDT1JFU0lHSFQpLCBhcmUgZGVsaWJlcmF0ZWx5IG5vdCBtYXBwZWQuXG4gXHQjIGxpYmFpbyBpcyBub3QgbWFwcGVkIGVpdGhlcjogaXRzXG4gXHQjIHRlc3QgdXNlcyB0aGUgUE9TSVggQUlPIEFQSSAoYWlvLmgsIGFpb18qLCAtbHJ0KSwgcHJvdmlkZWQgYnlcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3Rlc3RzL21ha2UgYi90b29scy9wZXJmL3Rlc3RzL21ha2VcbmluZGV4IGQyYzJmNTI2ZTFkYjAuLjIwMmFiNTUwMTkxNjEgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3Rlc3RzL21ha2VcbisrKyBiL3Rvb2xzL3BlcmYvdGVzdHMvbWFrZVxuQEAgLTk1LDcgKzk1LDcgQEAgbWFrZV9ub19iYWJlbHRyYWNlMiA6PSBOT19CQUJFTFRSQUNFMj0xXG4gbWFrZV93aXRoX2NvcmVzaWdodCA6PSBDT1JFU0lHSFQ9MVxuIG1ha2Vfbm9fc2R0XHQgICAgOj0gTk9fU0RUPTFcbiBtYWtlX25vX2xpYnBmbTQgICAgIDo9IE5PX0xJQlBGTTQ9MVxuLW1ha2Vfd2l0aF9ndGsyICAgICAgOj0gR1RLMj0xXG4rbWFrZV93aXRoX2d0azQgICAgICA6PSBHVEs0PTFcbiBtYWtlX3JlZmNudF9jaGVjayAgIDo9IEVYVFJBX0NGTEFHUz1cIi1EUkVGQ05UX0NIRUNLSU5HPTFcIlxuIG1ha2VfdGFncyAgICAgICAgICAgOj0gdGFnc1xuIG1ha2VfY3Njb3BlICAgICAgICAgOj0gY3Njb3BlXG5AQCAtMzE4LDcgKzMxOCw3IEBAICQocnVuKTpcbiBcdCQoY2FsbCB0ZXN0LCRAKSBcdTAwMjZcdTAwMjYgXFxcbiBcdHJtIC1yZiAkQCAkJFRNUF9ERVNUIHx8IChjYXQgJEAgOyBmYWxzZSlcbiBcbi1tYWtlX3dpdGhfZ3RrMjpcbittYWtlX3dpdGhfZ3RrNDpcbiBcdCQoY2FsbCBjbGVhbilcbiBcdEBUTVBfREVTVD0kJChta3RlbXAgLWQpOyBcXFxuIFx0Y21kPVwiY2QgJChQRVJGKSBcdTAwMjZcdTAwMjYgJChNQUtFX0YpICQoJEApICQoUEFSQUxMRUxfT1BUKSAkKE9fT1BUKSBERVNURElSPSQkVE1QX0RFU1RcIjsgXFxcbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi91aS9ndGsvYW5ub3RhdGUuY1xuaW5kZXggODkyMGUyOTg0MjBhOC4uZmM0NmFjMTUwNDA4OCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Fubm90YXRlLmNcbkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIGludCBwZXJmX2d0a19fYW5ub3RhdGVfc3ltYm9sKEd0a1dpZGdldCAqd2luZG93LCBzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsXG4gXHRcdFx0Z3RrX2xpc3Rfc3RvcmVfc2V0KHN0b3JlLCBcdTAwMjZpdGVyLCBBTk5fQ09MX19MSU5FLCBzLCAtMSk7XG4gXHR9XG4gXG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xuK1x0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTtcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3MsIG4sIFx1MDAyNm5vdGVzLVx1MDAzZXNyYy1cdTAwM2Vzb3VyY2UsIGFsLm5vZGUpIHtcbiBcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZwb3MtXHUwMDNlYWwubm9kZSk7XG5AQCAtMjExLDM0ICsyMTEsMzEgQEAgc3RhdGljIGludCBzeW1ib2xfX2d0a19hbm5vdGF0ZShzdHJ1Y3QgbWFwX3N5bWJvbCAqbXMsIHN0cnVjdCBldnNlbCAqZXZzZWwsXG4gXHRcdHNpZ25hbChTSUdRVUlULCBwZXJmX2d0a19fc2lnbmFsKTtcbiBcdFx0c2lnbmFsKFNJR1RFUk0sIHBlcmZfZ3RrX19zaWduYWwpO1xuIFxuLVx0XHR3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcbitcdFx0d2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTtcbiBcdFx0Z3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyh3aW5kb3cpLCBcInBlcmYgYW5ub3RhdGVcIik7XG4gXG4tXHRcdGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCBcImRlbGV0ZV9ldmVudFwiLCBndGtfbWFpbl9xdWl0LCBOVUxMKTtcbi1cbiBcdFx0cGdjdHggPSBwZXJmX2d0a19fYWN0aXZhdGVfY29udGV4dCh3aW5kb3cpO1xuIFx0XHRpZiAoIXBnY3R4KVxuIFx0XHRcdHJldHVybiAtMTtcbiBcbi1cdFx0dmJveCA9IGd0a192Ym94X25ldyhGQUxTRSwgMCk7XG4rXHRcdHZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApO1xuIFx0XHRub3RlYm9vayA9IGd0a19ub3RlYm9va19uZXcoKTtcbiBcdFx0cGdjdHgtXHUwMDNlbm90ZWJvb2sgPSBub3RlYm9vaztcbiBcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIG5vdGVib29rLCBUUlVFLCBUUlVFLCAwKTtcbitcdFx0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4rXHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIG5vdGVib29rKTtcbiBcbiBcdFx0aW5mb2JhciA9IHBlcmZfZ3RrX19zZXR1cF9pbmZvX2JhcigpO1xuLVx0XHRpZiAoaW5mb2Jhcikge1xuLVx0XHRcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBpbmZvYmFyLFxuLVx0XHRcdFx0XHQgICBGQUxTRSwgRkFMU0UsIDApO1xuLVx0XHR9XG4rXHRcdGlmIChpbmZvYmFyKVxuK1x0XHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9iYXIpO1xuIFxuIFx0XHRzdGF0YmFyID0gcGVyZl9ndGtfX3NldHVwX3N0YXR1c2JhcigpO1xuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTtcbitcdFx0Z3RrX2JveF9hcHBlbmQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhcik7XG4gXG4tXHRcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7XG4rXHRcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cod2luZG93KSwgdmJveCk7XG4gXHR9XG4gXG4tXHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldyhOVUxMLCBOVUxMKTtcbitcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KCk7XG4gXHR0YWJfbGFiZWwgPSBndGtfbGFiZWxfbmV3KHN5bS1cdTAwM2VuYW1lKTtcbiBcbiBcdGd0a19zY3JvbGxlZF93aW5kb3dfc2V0X3BvbGljeShHVEtfU0NST0xMRURfV0lORE9XKHNjcm9sbGVkX3dpbmRvdyksXG5AQCAtMjY3LDEyICsyNjQsMTEgQEAgdm9pZCBwZXJmX2d0a19fc2hvd19hbm5vdGF0aW9ucyh2b2lkKVxuIFx0XHRyZXR1cm47XG4gXG4gXHR3aW5kb3cgPSBwZ2N0eC1cdTAwM2VtYWluX3dpbmRvdztcbi1cdGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19yZXNpemVfd2luZG93KHdpbmRvdyk7XG4tXHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSU5fUE9TX0NFTlRFUik7XG4rXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKHdpbmRvdywgVFJVRSk7XG4gXG4tXHRndGtfbWFpbigpO1xuK1x0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXHUwMDI2cGdjdHgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmMgYi90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcbmluZGV4IGQyZGFkZjM4NzNmYmQuLjk5YmIwZWE3NmQ3NzUgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay9icm93c2VyLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL2Jyb3dzZXIuY1xuQEAgLTE2LDIxICsxNiw1MyBAQCB2b2lkIHBlcmZfZ3RrX19zaWduYWwoaW50IHNpZylcbiB2b2lkIHBlcmZfZ3RrX19yZXNpemVfd2luZG93KEd0a1dpZGdldCAqd2luZG93KVxuIHtcbiBcdEdka1JlY3RhbmdsZSByZWN0O1xuLVx0R2RrU2NyZWVuICpzY3JlZW47XG4tXHRpbnQgbW9uaXRvcjtcbitcdEdka01vbml0b3IgKm1vbml0b3I7XG4rXHRHZGtEaXNwbGF5ICpkaXNwbGF5O1xuK1x0R0xpc3RNb2RlbCAqbW9uaXRvcnM7XG4gXHRpbnQgaGVpZ2h0O1xuIFx0aW50IHdpZHRoO1xuIFxuLVx0c2NyZWVuID0gZ3RrX3dpZGdldF9nZXRfc2NyZWVuKHdpbmRvdyk7XG4rXHRkaXNwbGF5ID0gZ3RrX3dpZGdldF9nZXRfZGlzcGxheSh3aW5kb3cpO1xuK1x0bW9uaXRvcnMgPSBnZGtfZGlzcGxheV9nZXRfbW9uaXRvcnMoZGlzcGxheSk7XG4rXHRtb25pdG9yID0gZ19saXN0X21vZGVsX2dldF9pdGVtKG1vbml0b3JzLCAwKTtcbitcdGlmICghbW9uaXRvcikge1xuK1x0XHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCA4MDAsIDYwMCk7XG4rXHRcdHJldHVybjtcbitcdH1cbiBcbi1cdG1vbml0b3IgPSBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2F0X3dpbmRvdyhzY3JlZW4sIHdpbmRvdy1cdTAwM2V3aW5kb3cpO1xuLVxuLVx0Z2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRyeShzY3JlZW4sIG1vbml0b3IsIFx1MDAyNnJlY3QpO1xuK1x0Z2RrX21vbml0b3JfZ2V0X2dlb21ldHJ5KG1vbml0b3IsIFx1MDAyNnJlY3QpO1xuK1x0Z19vYmplY3RfdW5yZWYobW9uaXRvcik7XG4gXG4gXHR3aWR0aFx0PSByZWN0LndpZHRoICogMyAvIDQ7XG4gXHRoZWlnaHRcdD0gcmVjdC5oZWlnaHQgKiAzIC8gNDtcbiBcbi1cdGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1cod2luZG93KSwgd2lkdGgsIGhlaWdodCk7XG4rXHRndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTtcbit9XG4rXG4rc3RhdGljIEdNYWluTG9vcCAqcGVyZl9ndGtfX21haW5fbG9vcDtcbitcbit2b2lkIHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCh2b2lkKVxuK3tcbitcdGlmIChwZXJmX2d0a19fbWFpbl9sb29wKVxuK1x0XHRnX21haW5fbG9vcF9xdWl0KHBlcmZfZ3RrX19tYWluX2xvb3ApO1xuK31cbitcbitzdGF0aWMgZ2Jvb2xlYW4gcGVyZl9ndGtfX2Nsb3NlX3JlcXVlc3QoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsXG4rXHRcdFx0XHRcdGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXG4re1xuK1x0cGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKCk7XG4rXG4rXHRyZXR1cm4gRkFMU0U7XG4rfVxuK1xuK3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpXG4re1xuK1x0Z19zaWduYWxfY29ubmVjdCh3aW5kb3csIFwiY2xvc2UtcmVxdWVzdFwiLFxuK1x0XHRcdCBHX0NBTExCQUNLKHBlcmZfZ3RrX19jbG9zZV9yZXF1ZXN0KSwgTlVMTCk7XG4rXG4rXHRwZXJmX2d0a19fbWFpbl9sb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIEZBTFNFKTtcbitcdGdfbWFpbl9sb29wX3J1bihwZXJmX2d0a19fbWFpbl9sb29wKTtcbitcdGdfY2xlYXJfcG9pbnRlcihcdTAwMjZwZXJmX2d0a19fbWFpbl9sb29wLCBnX21haW5fbG9vcF91bnJlZik7XG4gfVxuIFxuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudClcbkBAIC00NywxOCArNzksMTYgQEAgR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfaW5mb19iYXIodm9pZClcbiB7XG4gXHRHdGtXaWRnZXQgKmluZm9fYmFyO1xuIFx0R3RrV2lkZ2V0ICpsYWJlbDtcbi1cdEd0a1dpZGdldCAqY29udGVudF9hcmVhO1xuIFxuIFx0aW5mb19iYXIgPSBndGtfaW5mb19iYXJfbmV3KCk7XG4tXHRndGtfd2lkZ2V0X3NldF9ub19zaG93X2FsbChpbmZvX2JhciwgVFJVRSk7XG4rXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGluZm9fYmFyLCBGQUxTRSk7XG4gXG4gXHRsYWJlbCA9IGd0a19sYWJlbF9uZXcoXCJcIik7XG4gXHRndGtfd2lkZ2V0X3Nob3cobGFiZWwpO1xuIFxuLVx0Y29udGVudF9hcmVhID0gZ3RrX2luZm9fYmFyX2dldF9jb250ZW50X2FyZWEoR1RLX0lORk9fQkFSKGluZm9fYmFyKSk7XG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGNvbnRlbnRfYXJlYSksIGxhYmVsKTtcbitcdGd0a19pbmZvX2Jhcl9hZGRfY2hpbGQoR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgbGFiZWwpO1xuIFxuLVx0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgR1RLX1NUT0NLX09LLFxuK1x0Z3RrX2luZm9fYmFyX2FkZF9idXR0b24oR1RLX0lORk9fQkFSKGluZm9fYmFyKSwgXCJfT0tcIixcbiBcdFx0XHRcdEdUS19SRVNQT05TRV9PSyk7XG4gXHRnX3NpZ25hbF9jb25uZWN0KGluZm9fYmFyLCBcInJlc3BvbnNlXCIsXG4gXHRcdFx0IEdfQ0FMTEJBQ0soZ3RrX3dpZGdldF9oaWRlKSwgTlVMTCk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91aS9ndGsvZ3RrLmggYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxuaW5kZXggYTJiNDk3ZjAzZmQ2ZS4uYmVlYTc1ZDAxOTU1NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2d0ay5oXG4rKysgYi90b29scy9wZXJmL3VpL2d0ay9ndGsuaFxuQEAgLTQwLDYgKzQwLDkgQEAgdm9pZCBwZXJmX2d0a19faW5pdF9ocHAodm9pZCk7XG4gXG4gdm9pZCBwZXJmX2d0a19fc2lnbmFsKGludCBzaWcpO1xuIHZvaWQgcGVyZl9ndGtfX3Jlc2l6ZV93aW5kb3coR3RrV2lkZ2V0ICp3aW5kb3cpO1xuK3ZvaWQgcGVyZl9ndGtfX3J1bl9tYWluX2xvb3AoR3RrV2lkZ2V0ICp3aW5kb3cpO1xuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfbWFpbl9sb29wKHZvaWQpO1xuK3ZvaWQgcGVyZl9ndGtfX3F1aXRfZXJyb3JfZGlhbG9nKHZvaWQpO1xuIGNvbnN0IGNoYXIgKnBlcmZfZ3RrX19nZXRfcGVyY2VudF9jb2xvcihkb3VibGUgcGVyY2VudCk7XG4gR3RrV2lkZ2V0ICpwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKHZvaWQpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL2hpc3RzLmMgYi90b29scy9wZXJmL3VpL2d0ay9oaXN0cy5jXG5pbmRleCBiYWUyMWYzMzZhZTZkLi5mMDA1M2UzYWYwNzc2IDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvaGlzdHMuY1xuQEAgLTM5NSwxMSArMzk1LDkgQEAgc3RhdGljIHZvaWQgcGVyZl9ndGtfX3Nob3dfaGlzdHMoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGd0a190cmVlX3ZpZXdfc2V0X3J1bGVzX2hpbnQoR1RLX1RSRUVfVklFVyh2aWV3KSwgVFJVRSk7XG4tXG4gXHRnX3NpZ25hbF9jb25uZWN0KHZpZXcsIFwicm93LWFjdGl2YXRlZFwiLFxuIFx0XHRcdCBHX0NBTExCQUNLKG9uX3Jvd19hY3RpdmF0ZWQpLCBOVUxMKTtcbi1cdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmlldyk7XG4rXHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9jaGlsZChHVEtfU0NST0xMRURfV0lORE9XKHdpbmRvdyksIHZpZXcpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBwZXJmX2d0a19fYWRkX2hpZXJhcmNoeV9lbnRyaWVzKHN0cnVjdCBoaXN0cyAqaGlzdHMsXG5AQCAtNTgzLDExICs1ODEsOSBAQCBzdGF0aWMgdm9pZCBwZXJmX2d0a19fc2hvd19oaWVyYXJjaHkoR3RrV2lkZ2V0ICp3aW5kb3csIHN0cnVjdCBoaXN0cyAqaGlzdHMsXG4gXHRwZXJmX2d0a19fYWRkX2hpZXJhcmNoeV9lbnRyaWVzKGhpc3RzLCBcdTAwMjZoaXN0cy1cdTAwM2VlbnRyaWVzLCBzdG9yZSxcbiBcdFx0XHRcdFx0TlVMTCwgXHUwMDI2aHBwLCBtaW5fcGNudCk7XG4gXG4tXHRndGtfdHJlZV92aWV3X3NldF9ydWxlc19oaW50KEdUS19UUkVFX1ZJRVcodmlldyksIFRSVUUpO1xuLVxuIFx0Z19zaWduYWxfY29ubmVjdCh2aWV3LCBcInJvdy1hY3RpdmF0ZWRcIixcbiBcdFx0XHQgR19DQUxMQkFDSyhvbl9yb3dfYWN0aXZhdGVkKSwgTlVMTCk7XG4tXHRndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHZpZXcpO1xuK1x0Z3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyh3aW5kb3cpLCB2aWV3KTtcbiB9XG4gXG4gaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXG5AQCAtNjA2LDMwICs2MDIsMjkgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXG4gXHRzaWduYWwoU0lHUVVJVCwgcGVyZl9ndGtfX3NpZ25hbCk7XG4gXHRzaWduYWwoU0lHVEVSTSwgcGVyZl9ndGtfX3NpZ25hbCk7XG4gXG4tXHR3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTtcbitcdHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KCk7XG4gXG4gXHRndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksIFwicGVyZiByZXBvcnRcIik7XG4gXG4tXHRnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgXCJkZWxldGVfZXZlbnRcIiwgZ3RrX21haW5fcXVpdCwgTlVMTCk7XG4tXG4gXHRwZ2N0eCA9IHBlcmZfZ3RrX19hY3RpdmF0ZV9jb250ZXh0KHdpbmRvdyk7XG4gXHRpZiAoIXBnY3R4KVxuIFx0XHRyZXR1cm4gLTE7XG4gXG4tXHR2Ym94ID0gZ3RrX3Zib3hfbmV3KEZBTFNFLCAwKTtcbitcdHZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApO1xuIFxuIFx0bm90ZWJvb2sgPSBndGtfbm90ZWJvb2tfbmV3KCk7XG4gXG4tXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbm90ZWJvb2ssIFRSVUUsIFRSVUUsIDApO1xuK1x0Z3RrX3dpZGdldF9zZXRfdmV4cGFuZChub3RlYm9vaywgVFJVRSk7XG4rXHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBub3RlYm9vayk7XG4gXG4gXHRpbmZvX2JhciA9IHBlcmZfZ3RrX19zZXR1cF9pbmZvX2JhcigpO1xuIFx0aWYgKGluZm9fYmFyKVxuLVx0XHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgaW5mb19iYXIsIEZBTFNFLCBGQUxTRSwgMCk7XG4rXHRcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIGluZm9fYmFyKTtcbiBcbiBcdHN0YXRiYXIgPSBwZXJmX2d0a19fc2V0dXBfc3RhdHVzYmFyKCk7XG4tXHRndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgc3RhdGJhciwgRkFMU0UsIEZBTFNFLCAwKTtcbitcdGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHN0YXRiYXIpO1xuIFxuLVx0Z3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCB2Ym94KTtcbitcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cod2luZG93KSwgdmJveCk7XG4gXG4gXHRldmxpc3RfX2Zvcl9lYWNoX2VudHJ5KGV2bGlzdCwgcG9zKSB7XG4gXHRcdHN0cnVjdCBoaXN0cyAqaGlzdHMgPSBldnNlbF9faGlzdHMocG9zKTtcbkBAIC02NDksNyArNjQ0LDcgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXG4gXHRcdFx0fVxuIFx0XHR9XG4gXG4tXHRcdHNjcm9sbGVkX3dpbmRvdyA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3KE5VTEwsIE5VTEwpO1xuK1x0XHRzY3JvbGxlZF93aW5kb3cgPSBndGtfc2Nyb2xsZWRfd2luZG93X25ldygpO1xuIFxuIFx0XHRndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZF93aW5kb3cpLFxuIFx0XHRcdFx0XHRcdFx0R1RLX1BPTElDWV9BVVRPTUFUSUMsXG5AQCAtNjY1LDE1ICs2NjAsMTIgQEAgaW50IGV2bGlzdF9fZ3RrX2Jyb3dzZV9oaXN0cyhzdHJ1Y3QgZXZsaXN0ICpldmxpc3QsIGNvbnN0IGNoYXIgKmhlbHAsXG4gXHRcdGd0a19ub3RlYm9va19hcHBlbmRfcGFnZShHVEtfTk9URUJPT0sobm90ZWJvb2spLCBzY3JvbGxlZF93aW5kb3csIHRhYl9sYWJlbCk7XG4gXHR9XG4gXG4tXHRndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7XG4tXG4gXHRwZXJmX2d0a19fcmVzaXplX3dpbmRvdyh3aW5kb3cpO1xuLVxuLVx0Z3RrX3dpbmRvd19zZXRfcG9zaXRpb24oR1RLX1dJTkRPVyh3aW5kb3cpLCBHVEtfV0lOX1BPU19DRU5URVIpO1xuK1x0Z3RrX3dpZGdldF9zZXRfdmlzaWJsZSh3aW5kb3csIFRSVUUpO1xuIFxuIFx0dWlfaGVscGxpbmVfX3B1c2goaGVscCk7XG4gXG4tXHRndGtfbWFpbigpO1xuK1x0cGVyZl9ndGtfX3J1bl9tYWluX2xvb3Aod2luZG93KTtcbiBcbiBcdHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoXHUwMDI2cGdjdHgpO1xuIFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3Byb2dyZXNzLmMgYi90b29scy9wZXJmL3VpL2d0ay9wcm9ncmVzcy5jXG5pbmRleCBlZWE2ZmNkZTUxOGE4Li4yOGE0YjQ4NjM2MGRlIDEwMDY0NFxuLS0tIGEvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9ndGsvcHJvZ3Jlc3MuY1xuQEAgLTMsNDcgKzMsNjIgQEBcbiBcbiAjaW5jbHVkZSBcImd0ay5oXCJcbiAjaW5jbHVkZSBcIi4uL3Byb2dyZXNzLmhcIlxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcdTAwM2VcbiBcbiBzdGF0aWMgR3RrV2lkZ2V0ICpkaWFsb2c7XG4gc3RhdGljIEd0a1dpZGdldCAqcHJvZ3Jlc3M7XG4gXG4rc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX19kZXN0cm95ZWQoR3RrV2lkZ2V0ICp3aWRnZXQgX19tYXliZV91bnVzZWQsXG4rXHRcdFx0XHRcdGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXG4re1xuK1x0ZGlhbG9nID0gTlVMTDtcbitcdHByb2dyZXNzID0gTlVMTDtcbit9XG4rXG4gc3RhdGljIHZvaWQgZ3RrX3VpX3Byb2dyZXNzX191cGRhdGUoc3RydWN0IHVpX3Byb2dyZXNzICpwKVxuIHtcbiBcdGRvdWJsZSBmcmFjdGlvbiA9IHAtXHUwMDNldG90YWwgPyAxLjAgKiBwLVx1MDAzZWN1cnIgLyBwLVx1MDAzZXRvdGFsIDogMC4wO1xuIFx0Y2hhciBidWZbMTAyNF07XG4gXG4gXHRpZiAoZGlhbG9nID09IE5VTEwpIHtcbi1cdFx0R3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX3Zib3hfbmV3KFRSVUUsIDUpO1xuK1x0XHRHdGtXaWRnZXQgKnZib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDUpO1xuIFx0XHRHdGtXaWRnZXQgKmxhYmVsID0gZ3RrX2xhYmVsX25ldyhwLVx1MDAzZXRpdGxlKTtcbiBcbi1cdFx0ZGlhbG9nID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7XG4rXHRcdGRpYWxvZyA9IGd0a193aW5kb3dfbmV3KCk7XG4gXHRcdHByb2dyZXNzID0gZ3RrX3Byb2dyZXNzX2Jhcl9uZXcoKTtcbiBcbi1cdFx0Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godmJveCksIGxhYmVsLCBUUlVFLCBGQUxTRSwgMyk7XG4tXHRcdGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHZib3gpLCBwcm9ncmVzcywgVFJVRSwgVFJVRSwgMyk7XG4rXHRcdGd0a193aWRnZXRfc2V0X3ZleHBhbmQobGFiZWwsIFRSVUUpO1xuK1x0XHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBsYWJlbCk7XG4rXHRcdGd0a193aWRnZXRfc2V0X3ZleHBhbmQocHJvZ3Jlc3MsIFRSVUUpO1xuK1x0XHRndGtfYm94X2FwcGVuZChHVEtfQk9YKHZib3gpLCBwcm9ncmVzcyk7XG4rXG4rXHRcdGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1coZGlhbG9nKSwgdmJveCk7XG4gXG4tXHRcdGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoZGlhbG9nKSwgdmJveCk7XG4rXHRcdGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCBcImRlc3Ryb3lcIixcbitcdFx0XHRcdCBHX0NBTExCQUNLKGd0a191aV9wcm9ncmVzc19fZGVzdHJveWVkKSwgTlVMTCk7XG4gXG4gXHRcdGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1coZGlhbG9nKSwgXCJwZXJmXCIpO1xuLVx0XHRndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApO1xuLVx0XHRndGtfd2luZG93X3NldF9wb3NpdGlvbihHVEtfV0lORE9XKGRpYWxvZyksIEdUS19XSU5fUE9TX0NFTlRFUik7XG4rXHRcdGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKGRpYWxvZyksIDMwMCwgODApO1xuIFxuLVx0XHRndGtfd2lkZ2V0X3Nob3dfYWxsKGRpYWxvZyk7XG4rXHRcdGd0a193aWRnZXRfc2V0X3Zpc2libGUoZGlhbG9nLCBUUlVFKTtcbiBcdH1cbiBcbiBcdGd0a19wcm9ncmVzc19iYXJfc2V0X2ZyYWN0aW9uKEdUS19QUk9HUkVTU19CQVIocHJvZ3Jlc3MpLCBmcmFjdGlvbik7XG4gXHRzbnByaW50ZihidWYsIHNpemVvZihidWYpLCBcIiVcIlBSSXU2NFwiIC8gJVwiUFJJdTY0LCBwLVx1MDAzZWN1cnIsIHAtXHUwMDNldG90YWwpO1xuIFx0Z3RrX3Byb2dyZXNzX2Jhcl9zZXRfdGV4dChHVEtfUFJPR1JFU1NfQkFSKHByb2dyZXNzKSwgYnVmKTtcbiBcbi1cdC8qIHdlIGRpZG4ndCBjYWxsIGd0a19tYWluIHlldCwgc28gZG8gaXQgbWFudWFsbHkgKi9cbi1cdHdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSlcbi1cdFx0Z3RrX21haW5faXRlcmF0aW9uKCk7XG4rXHQvKiB3ZSBkaWRuJ3Qgc3RhcnQgYSBtYWluIGxvb3AgeWV0LCBzbyBwdW1wIGV2ZW50cyBtYW51YWxseSAqL1xuK1x0d2hpbGUgKGdfbWFpbl9jb250ZXh0X3BlbmRpbmcoTlVMTCkpXG4rXHRcdGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihOVUxMLCBGQUxTRSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGd0a191aV9wcm9ncmVzc19fZmluaXNoKHZvaWQpXG4ge1xuK1x0aWYgKGRpYWxvZyA9PSBOVUxMKVxuK1x0XHRyZXR1cm47XG4rXG4gXHQvKiB0aGlzIHdpbGwgYWxzbyBkZXN0cm95IGFsbCBvZiBpdHMgY2hpbGRyZW4gKi9cbi1cdGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpO1xuK1x0Z3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7XG4gXG4gXHRkaWFsb2cgPSBOVUxMO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay9zZXR1cC5jIGIvdG9vbHMvcGVyZi91aS9ndGsvc2V0dXAuY1xuaW5kZXggZjVlZWU0ZDY2ODczOC4uOWI0NGYzNzE5NzQ3NyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3NldHVwLmNcbkBAIC0xMiw3ICsxMiw3IEBAIGludCBwZXJmX2d0a19faW5pdCh2b2lkKVxuIFx0Z3RrX3VpX3Byb2dyZXNzX19pbml0KCk7XG4gXHRwZXJmX2d0a19faW5pdF9ocHAoKTtcbiBcbi1cdHJldHVybiBndGtfaW5pdF9jaGVjayhOVUxMLCBOVUxMKSA/IDAgOiAtMTtcbitcdHJldHVybiBndGtfaW5pdF9jaGVjaygpID8gMCA6IC0xO1xuIH1cbiBcbiB2b2lkIHBlcmZfZ3RrX19leGl0KGJvb2wgd2FpdF9mb3Jfb2sgX19tYXliZV91bnVzZWQpXG5AQCAtMjAsNSArMjAsNiBAQCB2b2lkIHBlcmZfZ3RrX19leGl0KGJvb2wgd2FpdF9mb3Jfb2sgX19tYXliZV91bnVzZWQpXG4gXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkpXG4gXHRcdHJldHVybjtcbiBcdHBlcmZfZXJyb3JfX3VucmVnaXN0ZXIoXHUwMDI2cGVyZl9ndGtfZW9wcyk7XG4tXHRndGtfbWFpbl9xdWl0KCk7XG4rXHRwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2coKTtcbitcdHBlcmZfZ3RrX19xdWl0X21haW5fbG9vcCgpO1xuIH1cbmRpZmYgLS1naXQgYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmMgYi90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcbmluZGV4IGM0N2Y1YzM4NzgzOGMuLjUwOTY4ODhiN2MxNjAgMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3VpL2d0ay91dGlsLmNcbisrKyBiL3Rvb2xzL3BlcmYvdWkvZ3RrL3V0aWwuY1xuQEAgLTQsNiArNCw3IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzdHJpbmcuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NvbXBpbGVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC96YWxsb2MuaFx1MDAzZVxuIFxuIHN0cnVjdCBwZXJmX2d0a19jb250ZXh0ICpwZ2N0eDtcbkBAIC0yOCwyNyArMjksNjAgQEAgaW50IHBlcmZfZ3RrX19kZWFjdGl2YXRlX2NvbnRleHQoc3RydWN0IHBlcmZfZ3RrX2NvbnRleHQgKipjdHgpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIEdNYWluTG9vcCAqcGVyZl9ndGtfX2Vycm9yX2xvb3A7XG4rXG4rdm9pZCBwZXJmX2d0a19fcXVpdF9lcnJvcl9kaWFsb2codm9pZClcbit7XG4rXHRpZiAocGVyZl9ndGtfX2Vycm9yX2xvb3ApXG4rXHRcdGdfbWFpbl9sb29wX3F1aXQocGVyZl9ndGtfX2Vycm9yX2xvb3ApO1xuK31cbitcbitzdGF0aWMgdm9pZCBwZXJmX2d0a19fZGlhbG9nX3Jlc3BvbnNlKEd0a0RpYWxvZyAqZGlhbG9nLFxuK1x0XHRcdFx0ICAgICAgZ2ludCByZXNwb25zZV9pZCBfX21heWJlX3VudXNlZCxcbitcdFx0XHRcdCAgICAgIGdwb2ludGVyIGRhdGEgX19tYXliZV91bnVzZWQpXG4re1xuK1x0Z3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9nKSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHtcbiBcdGNoYXIgKm1zZztcbiBcdEd0a1dpZGdldCAqZGlhbG9nO1xuK1x0dmFfbGlzdCBhcmdzX2NvcHk7XG4gXG4rXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XG4gXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkgfHxcbi1cdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3MpIFx1MDAzYyAwKSB7XG4rXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4rXHRcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJFcnJvcjpcXG5cIik7XG4gXHRcdHZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcmdzKTtcbiBcdFx0ZnByaW50ZihzdGRlcnIsIFwiXFxuXCIpO1xuIFx0XHRyZXR1cm4gLTE7XG4gXHR9XG4rXHR2YV9lbmQoYXJnc19jb3B5KTtcbiBcbiBcdGRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXdfd2l0aF9tYXJrdXAoR1RLX1dJTkRPVyhwZ2N0eC1cdTAwM2VtYWluX3dpbmRvdyksXG4gXHRcdFx0XHRcdEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCxcbiBcdFx0XHRcdFx0R1RLX01FU1NBR0VfRVJST1IsXG4gXHRcdFx0XHRcdEdUS19CVVRUT05TX0NMT1NFLFxuIFx0XHRcdFx0XHRcIlx1MDAzY2JcdTAwM2VFcnJvclx1MDAzYy9iXHUwMDNlXFxuXFxuJXNcIiwgbXNnKTtcbi1cdGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSk7XG4gXG4tXHRndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTtcbitcdC8qXG4rXHQgKiBcInJlc3BvbnNlXCIgb25seSBmaXJlcyB3aGVuIGEgYnV0dG9uIGlzIGNsaWNrZWQ7IERFU1RST1lfV0lUSF9QQVJFTlRcbitcdCAqIGRlc3Ryb3lzIHRoZSBkaWFsb2cgZGlyZWN0bHkgd2l0aG91dCBpdC4gUXVpdCBmcm9tIFwiZGVzdHJveVwiXG4rXHQgKiBpbnN0ZWFkLCB3aGljaCBmaXJlcyBlaXRoZXIgd2F5LCBzbyB0aGUgbmVzdGVkIGxvb3AgYmVsb3cgY2FuJ3RcbitcdCAqIG91dGxpdmUgdGhlIGRpYWxvZyBhbmQgaGFuZy5cbitcdCAqL1xuK1x0cGVyZl9ndGtfX2Vycm9yX2xvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgRkFMU0UpO1xuK1x0Z19zaWduYWxfY29ubmVjdChkaWFsb2csIFwicmVzcG9uc2VcIixcbitcdFx0XHQgR19DQUxMQkFDSyhwZXJmX2d0a19fZGlhbG9nX3Jlc3BvbnNlKSwgTlVMTCk7XG4rXHRnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoZGlhbG9nLCBcImRlc3Ryb3lcIixcbitcdFx0XHRcdCBHX0NBTExCQUNLKGdfbWFpbl9sb29wX3F1aXQpLCBwZXJmX2d0a19fZXJyb3JfbG9vcCk7XG4rXG4rXHRndGtfd2lkZ2V0X3NldF92aXNpYmxlKGRpYWxvZywgVFJVRSk7XG4rXHRnX21haW5fbG9vcF9ydW4ocGVyZl9ndGtfX2Vycm9yX2xvb3ApO1xuK1x0Z19jbGVhcl9wb2ludGVyKFx1MDAyNnBlcmZfZ3RrX19lcnJvcl9sb29wLCBnX21haW5fbG9vcF91bnJlZik7XG4rXG4gXHRmcmVlKG1zZyk7XG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtNTcsMTQgKzkxLDE4IEBAIHN0YXRpYyBpbnQgcGVyZl9ndGtfX2Vycm9yKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfaW5mb19iYXIoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpXG4ge1xuIFx0Y2hhciAqbXNnO1xuK1x0dmFfbGlzdCBhcmdzX2NvcHk7XG4gXG4rXHR2YV9jb3B5KGFyZ3NfY29weSwgYXJncyk7XG4gXHRpZiAoIXBlcmZfZ3RrX19pc19hY3RpdmVfY29udGV4dChwZ2N0eCkgfHxcbi1cdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3MpIFx1MDAzYyAwKSB7XG4rXHQgICAgdmFzcHJpbnRmKFx1MDAyNm1zZywgZm9ybWF0LCBhcmdzX2NvcHkpIFx1MDAzYyAwKSB7XG4rXHRcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJXYXJuaW5nOlxcblwiKTtcbiBcdFx0dmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpO1xuIFx0XHRmcHJpbnRmKHN0ZGVyciwgXCJcXG5cIik7XG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbitcdHZhX2VuZChhcmdzX2NvcHkpO1xuIFxuIFx0Z3RrX2xhYmVsX3NldF90ZXh0KEdUS19MQUJFTChwZ2N0eC1cdTAwM2VtZXNzYWdlX2xhYmVsKSwgbXNnKTtcbiBcdGd0a19pbmZvX2Jhcl9zZXRfbWVzc2FnZV90eXBlKEdUS19JTkZPX0JBUihwZ2N0eC1cdTAwM2VpbmZvX2JhciksXG5AQCAtNzgsMTQgKzExNiwxOCBAQCBzdGF0aWMgaW50IHBlcmZfZ3RrX193YXJuaW5nX2luZm9fYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHN0YXRpYyBpbnQgcGVyZl9ndGtfX3dhcm5pbmdfc3RhdHVzYmFyKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKVxuIHtcbiBcdGNoYXIgKm1zZywgKnA7XG4rXHR2YV9saXN0IGFyZ3NfY29weTtcbiBcbitcdHZhX2NvcHkoYXJnc19jb3B5LCBhcmdzKTtcbiBcdGlmICghcGVyZl9ndGtfX2lzX2FjdGl2ZV9jb250ZXh0KHBnY3R4KSB8fFxuLVx0ICAgIHZhc3ByaW50ZihcdTAwMjZtc2csIGZvcm1hdCwgYXJncykgXHUwMDNjIDApIHtcbitcdCAgICB2YXNwcmludGYoXHUwMDI2bXNnLCBmb3JtYXQsIGFyZ3NfY29weSkgXHUwMDNjIDApIHtcbitcdFx0dmFfZW5kKGFyZ3NfY29weSk7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIldhcm5pbmc6XFxuXCIpO1xuIFx0XHR2ZnByaW50ZihzdGRlcnIsIGZvcm1hdCwgYXJncyk7XG4gXHRcdGZwcmludGYoc3RkZXJyLCBcIlxcblwiKTtcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuK1x0dmFfZW5kKGFyZ3NfY29weSk7XG4gXG4gXHRndGtfc3RhdHVzYmFyX3BvcChHVEtfU1RBVFVTQkFSKHBnY3R4LVx1MDAzZXN0YXRiYXIpLFxuIFx0XHRcdCAgcGdjdHgtXHUwMDNlc3RhdGJhcl9jdHhfaWQpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuYyBiL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuaW5kZXggZmY4MDAwNDdlNjk3Zi4uZDg4NzM0NmM3YTYzMiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdWkvc2V0dXAuY1xuKysrIGIvdG9vbHMvcGVyZi91aS9zZXR1cC5jXG5AQCAtMTQsNyArMTQsNyBAQCBpbnQgdXNlX2Jyb3dzZXIgPSAtMTtcbiBcbiAjZGVmaW5lIFBFUkZfR1RLX0RTTyBcImxpYnBlcmYtZ3RrLnNvXCJcbiBcbi0jaWZkZWYgSEFWRV9HVEsyX1NVUFBPUlRcbisjaWZkZWYgSEFWRV9HVEs0X1NVUFBPUlRcbiBcbiBzdGF0aWMgaW50IHNldHVwX2d0a19icm93c2VyKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5jIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcbmluZGV4IGRmNzBlOTVhODQ3MDQuLjEyM2I2ZDVmY2VhNzggMTAwNjQ0XG4tLS0gYS90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuY1xuKysrIGIvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmNcbkBAIC0xNDUsNiArMTQ1LDE3IEBAIHN0YXRpYyBpbnQgYW5ub3RhdGVkX3NvdXJjZV9fYWxsb2NfaGlzdG9ncmFtcyhzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLFxuIFx0cmV0dXJuIHNyYy1cdTAwM2VoaXN0b2dyYW1zID8gMCA6IC0xO1xuIH1cbiBcbitzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxuK2Fubm90YXRlZF9zb3VyY2VfX2hpc3RfZW50cnkoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywgY29uc3Qgc3RydWN0IGV2c2VsICpldnNlbCwgdTY0IG9mZnNldClcbit7XG4rXHRzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKmVudHJ5O1xuK1x0bG9uZyBrZXkgPSBvZmZzZXQgXHUwMDNjXHUwMDNjIDE2IHwgZXZzZWwtXHUwMDNlY29yZS5pZHg7XG4rXG4rXHRpZiAoIWhhc2htYXBfX2ZpbmQoc3JjLVx1MDAzZXNhbXBsZXMsIGtleSwgXHUwMDI2ZW50cnkpKVxuK1x0XHRyZXR1cm4gTlVMTDtcbitcdHJldHVybiBlbnRyeTtcbit9XG4rXG4gdm9pZCBzeW1ib2xfX2Fubm90YXRlX3plcm9faGlzdG9ncmFtcyhzdHJ1Y3Qgc3ltYm9sICpzeW0pXG4ge1xuIFx0c3RydWN0IGFubm90YXRpb24gKm5vdGVzID0gc3ltYm9sX19hbm5vdGF0aW9uKHN5bSk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvcGVyZi91dGlsL2Fubm90YXRlLmggYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxuaW5kZXggZmEwOGQwOWI4MGY3Ni4uNDAwMzhhMzc3OWQ0NiAxMDA2NDRcbi0tLSBhL3Rvb2xzL3BlcmYvdXRpbC9hbm5vdGF0ZS5oXG4rKysgYi90b29scy9wZXJmL3V0aWwvYW5ub3RhdGUuaFxuQEAgLTQwNiwxNiArNDA2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3ltX2hpc3QgKmFubm90YXRpb25fX2hpc3RvZ3JhbShzdHJ1Y3QgYW5ub3RhdGlvbiAqbm90ZXMsXG4gXHRyZXR1cm4gYW5ub3RhdGVkX3NvdXJjZV9faGlzdG9ncmFtKG5vdGVzLVx1MDAzZXNyYywgZXZzZWwpO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqXG4tYW5ub3RhdGVkX3NvdXJjZV9faGlzdF9lbnRyeShzdHJ1Y3QgYW5ub3RhdGVkX3NvdXJjZSAqc3JjLCBjb25zdCBzdHJ1Y3QgZXZzZWwgKmV2c2VsLCB1NjQgb2Zmc2V0KVxuLXtcbi1cdHN0cnVjdCBzeW1faGlzdF9lbnRyeSAqZW50cnk7XG4tXHRsb25nIGtleSA9IG9mZnNldCBcdTAwM2NcdTAwM2MgMTYgfCBldnNlbC1cdTAwM2Vjb3JlLmlkeDtcbi1cbi1cdGlmICghaGFzaG1hcF9fZmluZChzcmMtXHUwMDNlc2FtcGxlcywga2V5LCBcdTAwMjZlbnRyeSkpXG4tXHRcdHJldHVybiBOVUxMO1xuLVx0cmV0dXJuIGVudHJ5O1xuLX1cbitzdHJ1Y3Qgc3ltX2hpc3RfZW50cnkgKlxuK2Fubm90YXRlZF9zb3VyY2VfX2hpc3RfZW50cnkoc3RydWN0IGFubm90YXRlZF9zb3VyY2UgKnNyYywgY29uc3Qgc3RydWN0IGV2c2VsICpldnNlbCwgdTY0IG9mZnNldCk7XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgYW5ub3RhdGlvbiAqc3ltYm9sX19hbm5vdGF0aW9uKHN0cnVjdCBzeW1ib2wgKnN5bSlcbiB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMDo1MjowNC4zNjIwMzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2Mjk5OTUwNDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBFdmFsdWF0aW9uOiBOZWdhdGl2ZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHVzZXIgd2FudHMgbWUgdG8gZXZhbHVhdGUgdGhpcyBwYXRjaCBzZXJpZXMgYXBwbGllZCB0byB0aGUga2VybmVsIEhFQUQuIEZpcnN0LCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgZmlsZXMgdGhhdCB3ZXJlIG1vZGlmaWVkLiBGcm9tIHRoZSBkaWZmLCBJJ20gc2VlaW5nIGV2ZXJ5dGhpbmcgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgYHRvb2xzL2AgZGlyZWN0b3J5IOKAkyBzcGVjaWZpY2FsbHksIGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYC5cblxuTm93LCBhY2NvcmRpbmcgdG8gdGhlIHRyaWFnZSBndWlkZWxpbmVzLCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2ggZmFsbHMgaW50byB0aGUgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiBjYXRlZ29yeS4gU3BlY2lmaWNhbGx5LCBJJ20gY2hlY2tpbmcgaWYgYWxsIHRoZSBtb2RpZmllZCBjb2RlIHN0cmljdGx5IGZhbGxzIGludG8gdGhlIGNyaXRlcmlhIG9mOiBcIk5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMsIGxpa2UgbW9kaWZpY2F0aW9ucyB0byBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgc3BlbGxpbmcgZml4ZXMsIG9yIHVzZXItc3BhY2UgZGlyZWN0b3JpZXMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKSB0aGF0IGRvbid0IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIGB2bWxpbnV4YCBvciBrZXJuZWwgbW9kdWxlcy5cIlxuXG5Mb29raW5nIGF0IHRoZSBsaXN0IG9mIGZpbGVzIGFnYWluOiBgdG9vbHMvYnVpbGQvTWFrZWZpbGUuZmVhdHVyZWAsIGB0b29scy9idWlsZC9mZWF0dXJlL01ha2VmaWxlYCwgYW5kIHRoZSBgdGVzdC1ndGs0LWluZm9iYXIuY2AgYW5kIGB0ZXN0LWd0azQuY2AgZmlsZXMgd2l0aGluIGB0b29scy9idWlsZC9mZWF0dXJlYCBsb29rIGxpa2UgYnVpbGQgc3lzdGVtIGNoYW5nZXMsIGFuZCB0ZXN0aW5nLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBHVEsgYnVpbGQsIHdoaWNoIGlzIHVzZXItc3BhY2UgYW5kIGRvZXNuJ3QgZGlyZWN0bHkgaW1wYWN0IHRoZSBrZXJuZWwuIFRoZSBgdG9vbHMvcGVyZmAgZGlyZWN0b3J5IGhvdXNlcyB0aGUgbWFqb3JpdHkgb2YgdGhlIGNoYW5nZXMsIGFuZCBzZWVtcyB0byBiZSB1cGRhdGluZyBgcGVyZmAgdG9vbGluZy4gVGhlcmUgYXJlIE1ha2VmaWxlIGNoYW5nZXMsIGRvY3VtZW50YXRpb24gdXBkYXRlcyAoYHBlcmYtcmVwb3J0LnR4dGApLCBidWlsZCBjb25maWd1cmF0aW9ucywgc2NyaXB0cywgYW5kIHVwZGF0ZXMgdG8gdGhlIEdUSy1iYXNlZCBVSSAoYHVpL2d0ay8qYCkgYW5kIHJlbGF0ZWQgdXRpbGl0aWVzIChgdXRpbC8qYCwgYGJ1aWx0aW4tKmApLiBUaGUgZm9jdXMgaGVyZSBhcHBlYXJzIHRvIGJlIHBvcnRpbmcgYHBlcmZgJ3MgR1RLIFVJIHN1cHBvcnQgZnJvbSBHVEsyIHRvIEdUSzQuXG5cbkdpdmVuIHRoYXQgKmFsbCogdGhlIG1vZGlmaWNhdGlvbnMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gYHRvb2xzL2AgKGFuZCB0aGUgYGJ1aWxkYCBzdWJkaXJlY3RvcnkpLCBkZWFsaW5nIHdpdGggdXNlci1zcGFjZSB0b29saW5nIGFuZCBidWlsZCBpbmZyYXN0cnVjdHVyZSwgYW5kIGNydWNpYWxseSwgKm5vbmUqIG9mIHRoZXNlIGNoYW5nZXMgYXJlIHRvdWNoaW5nIHRoZSBjb3JlIGtlcm5lbCBpbWFnZSAoYHZtbGludXhgKSBvciBhbnkga2VybmVsIG1vZHVsZXMsIEkgY2FuIGNvbmZpZGVudGx5IGNvbmNsdWRlIHRoYXQgdGhlIGNyaXRlcmlhIGZvciBgV29ydGhGdXp6aW5nPWZhbHNlYCBpcyBtZXQuXG5cblRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdsbCByZS1zY2FuIHRoZSBlbnRpcmUgZGlmZiB0byBtYWtlIHN1cmUgbm8gZmlsZXMgd2VyZSBpbmFkdmVydGVudGx5IG1pc3NlZC4gTm9wZSwgaXQncyBhbGwgY29udGFpbmVkIHdpdGhpbiBgdG9vbHMvcGVyZmAgYW5kIGB0b29scy9idWlsZGAuXG5cblRoZXJlZm9yZSwgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgc2V0IHRvIGZhbHNlLiBObyBzcGVjaWZpYyBlbmFibGUgY29uZmlndXJhdGlvbnMgb3IgZm9jdXMgc3ltYm9scyBhcmUgbmVlZGVkIGZvciB0aGlzIHBhdGNoLiBNeSByZWFzb25pbmcgaXMgY2xlYXI6IFRoZSBwYXRjaCBzZXJpZXMgZm9jdXNlcyAqZXhjbHVzaXZlbHkqIG9uIHVzZXItc3BhY2UgdG9vbGluZywgc3BlY2lmaWNhbGx5IGNoYW5nZXMgd2l0aGluIGB0b29scy9wZXJmYCBhbmQgYHRvb2xzL2J1aWxkYCByZWxhdGVkIHRvIHBvcnRpbmcgcGVyZidzIEdUSyBVSSB0byBHVEs0LCB3aGljaCBkb2VzIG5vdCBpbXBhY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBhbnkga2VybmVsIG1vZHVsZXMuIEknbSBnb2luZyB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MTM3LCJPdXRwdXRUb2tlbnMiOjgyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTI3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDA6NTI6MTAuNjYxOTg4ODk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRvb2xzICh0b29scy9wZXJmIGFuZCB0b29scy9idWlsZCksIHBvcnRpbmcgcGVyZidzIEdUSyBpbnRlcmZhY2Ugc3VwcG9ydCBmcm9tIEdUSzIgdG8gR1RLNC4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBrZXJuZWwgY29kZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgZXhjbHVzaXZlbHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRvb2xzICh0b29scy9wZXJmIGFuZCB0b29scy9idWlsZCksIHBvcnRpbmcgcGVyZidzIEdUSyBpbnRlcmZhY2Ugc3VwcG9ydCBmcm9tIEdUSzIgdG8gR1RLNC4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBrZXJuZWwgY29kZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wN1QwMDo1MjoxMC42NjIwMzA2MDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowngx8c[1] Phase: Running StartedAt: 2026-09-07 00:52:21 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowngx8c[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-07 00:52:21 +0000 UTC FinishedAt: 2026-09-07 00:52:29 +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,}